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:
authordependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>2022-06-21 19:57:32 +0300
committernextcloud-command <nextcloud-command@users.noreply.github.com>2022-06-22 20:58:07 +0300
commitb9883d8ed84c8484e0ed04e90a1d6dbf106a7a5d (patch)
tree175cd41c1a12554800961ae80f3d52ee67ae964a
parente850afb74fdc51bd4265d8b9026a702af9e5c501 (diff)
Bump webpack from 5.72.0 to 5.72.1dependabot/npm_and_yarn/stable24/webpack-5.72.1
Bumps [webpack](https://github.com/webpack/webpack) from 5.72.0 to 5.72.1. - [Release notes](https://github.com/webpack/webpack/releases) - [Commits](https://github.com/webpack/webpack/compare/v5.72.0...v5.72.1) --- updated-dependencies: - dependency-name: webpack dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
-rw-r--r--dist/accessibility-accessibility.js4
-rw-r--r--dist/accessibility-accessibility.js.map2
-rw-r--r--dist/accessibility-accessibilityoca.js4
-rw-r--r--dist/accessibility-accessibilityoca.js.map2
-rw-r--r--dist/comments-comments-app.js4
-rw-r--r--dist/comments-comments-app.js.map2
-rw-r--r--dist/core-files_client.js4
-rw-r--r--dist/core-files_client.js.map2
-rw-r--r--dist/core-install.js4
-rw-r--r--dist/core-install.js.map2
-rw-r--r--dist/core-login.js4
-rw-r--r--dist/core-login.js.map2
-rw-r--r--dist/core-main.js4
-rw-r--r--dist/core-main.js.map2
-rw-r--r--dist/core-maintenance.js4
-rw-r--r--dist/core-maintenance.js.map2
-rw-r--r--dist/core-profile.js4
-rw-r--r--dist/core-profile.js.map2
-rw-r--r--dist/core-recommendedapps.js4
-rw-r--r--dist/core-recommendedapps.js.map2
-rw-r--r--dist/core-systemtags.js4
-rw-r--r--dist/core-systemtags.js.map2
-rw-r--r--dist/core-unified-search.js4
-rw-r--r--dist/core-unified-search.js.map2
-rw-r--r--dist/dashboard-main.js4
-rw-r--r--dist/dashboard-main.js.map2
-rw-r--r--dist/dav-settings-admin-caldav.js4
-rw-r--r--dist/dav-settings-admin-caldav.js.map2
-rw-r--r--dist/dav-settings-personal-availability.js4
-rw-r--r--dist/dav-settings-personal-availability.js.map2
-rw-r--r--dist/files-main.js4
-rw-r--r--dist/files-main.js.map2
-rw-r--r--dist/files-personal-settings.js4
-rw-r--r--dist/files-personal-settings.js.map2
-rw-r--r--dist/files-sidebar.js4
-rw-r--r--dist/files-sidebar.js.map2
-rw-r--r--dist/files_sharing-additionalScripts.js4
-rw-r--r--dist/files_sharing-additionalScripts.js.map2
-rw-r--r--dist/files_sharing-files_sharing_tab.js4
-rw-r--r--dist/files_sharing-files_sharing_tab.js.map2
-rw-r--r--dist/files_sharing-personal-settings.js4
-rw-r--r--dist/files_sharing-personal-settings.js.map2
-rw-r--r--dist/files_trashbin-files_trashbin.js4
-rw-r--r--dist/files_trashbin-files_trashbin.js.map2
-rw-r--r--dist/files_versions-files_versions.js4
-rw-r--r--dist/files_versions-files_versions.js.map2
-rw-r--r--dist/oauth2-oauth2.js4
-rw-r--r--dist/oauth2-oauth2.js.map2
-rw-r--r--dist/settings-apps.js4
-rw-r--r--dist/settings-apps.js.map2
-rw-r--r--dist/settings-vue-settings-admin-basic-settings.js4
-rw-r--r--dist/settings-vue-settings-admin-basic-settings.js.map2
-rw-r--r--dist/settings-vue-settings-admin-delegation.js4
-rw-r--r--dist/settings-vue-settings-admin-delegation.js.map2
-rw-r--r--dist/settings-vue-settings-admin-security.js4
-rw-r--r--dist/settings-vue-settings-admin-security.js.map2
-rw-r--r--dist/settings-vue-settings-apps-users-management.js4
-rw-r--r--dist/settings-vue-settings-apps-users-management.js.map2
-rw-r--r--dist/settings-vue-settings-nextcloud-pdf.js4
-rw-r--r--dist/settings-vue-settings-nextcloud-pdf.js.map2
-rw-r--r--dist/settings-vue-settings-personal-info.js4
-rw-r--r--dist/settings-vue-settings-personal-info.js.map2
-rw-r--r--dist/settings-vue-settings-personal-security.js4
-rw-r--r--dist/settings-vue-settings-personal-security.js.map2
-rw-r--r--dist/settings-vue-settings-personal-webauthn.js4
-rw-r--r--dist/settings-vue-settings-personal-webauthn.js.map2
-rw-r--r--dist/systemtags-systemtags.js4
-rw-r--r--dist/systemtags-systemtags.js.map2
-rw-r--r--dist/twofactor_backupcodes-settings.js4
-rw-r--r--dist/twofactor_backupcodes-settings.js.map2
-rw-r--r--dist/updatenotification-updatenotification.js4
-rw-r--r--dist/updatenotification-updatenotification.js.map2
-rw-r--r--dist/user_status-dashboard.js4
-rw-r--r--dist/user_status-dashboard.js.map2
-rw-r--r--dist/user_status-menu.js4
-rw-r--r--dist/user_status-menu.js.map2
-rw-r--r--dist/weather_status-weather-status.js4
-rw-r--r--dist/weather_status-weather-status.js.map2
-rw-r--r--dist/workflowengine-workflowengine.js4
-rw-r--r--dist/workflowengine-workflowengine.js.map2
-rw-r--r--package-lock.json50
-rw-r--r--package.json2
82 files changed, 140 insertions, 152 deletions
diff --git a/dist/accessibility-accessibility.js b/dist/accessibility-accessibility.js
index 160061bde67..1e6d87ff9e6 100644
--- a/dist/accessibility-accessibility.js
+++ b/dist/accessibility-accessibility.js
@@ -1,3 +1,3 @@
/*! For license information please see accessibility-accessibility.js.LICENSE.txt */
-!function(){"use strict";var e,n={26795:function(e,n,i){var r=i(20144),s=i(79753),c=i(16453),o=i(4820),a={name:"ItemPreview",props:{preview:{type:Object,required:!0},selected:{type:String,default:null}},computed:{checked:{get:function(){return this.selected===this.preview.id},set:function(e){this.$emit("select",e?this.preview.id:"")}}}},l=i(51900),u=(0,l.Z)(a,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{class:{preview:!0}},[n("div",{staticClass:"preview-image",style:{backgroundImage:"url("+e.preview.img+")"}}),e._v(" "),n("div",{staticClass:"preview-description"},[n("h3",[e._v(e._s(e.preview.title))]),e._v(" "),n("p",[e._v(e._s(e.preview.text))]),e._v(" "),n("input",{directives:[{name:"model",rawName:"v-model",value:e.checked,expression:"checked"}],staticClass:"checkbox",attrs:{id:"accessibility-"+e.preview.id,type:"checkbox"},domProps:{checked:Array.isArray(e.checked)?e._i(e.checked,null)>-1:e.checked},on:{change:function(t){var n=e.checked,i=t.target,r=!!i.checked;if(Array.isArray(n)){var s=e._i(n,null);i.checked?s<0&&(e.checked=n.concat([null])):s>-1&&(e.checked=n.slice(0,s).concat(n.slice(s+1)))}else e.checked=r}}}),e._v(" "),n("label",{attrs:{for:"accessibility-"+e.preview.id}},[e._v(e._s(e.preview.enableLabel))])])])}),[],!1,null,null,null).exports;function d(e,t,n,i,r,s,c){try{var o=e[s](c),a=o.value}catch(e){return void n(e)}o.done?t(a):Promise.resolve(a).then(i,r)}var h=(0,c.loadState)("accessibility","available-config"),f=(0,c.loadState)("accessibility","user-config"),v={name:"Accessibility",components:{ItemPreview:u},data:function(){return{availableConfig:h,userConfig:f}},computed:{themes:function(){return this.availableConfig.themes},highcontrast:function(){return this.availableConfig.highcontrast},fonts:function(){return this.availableConfig.fonts},selected:function(){return{theme:this.userConfig.theme,highcontrast:this.userConfig.highcontrast,font:this.userConfig.font}},description:function(){return t("accessibility","Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level.").replace("{guidelines}",this.guidelinesLink).replace("{linkend}","</a>")},guidelinesLink:function(){return'<a target="_blank" href="https://www.w3.org/WAI/standards-guidelines/wcag/" rel="noreferrer nofollow">'},descriptionDetail:function(){return t("accessibility","If you find any issues, don’t hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!").replace("{issuetracker}",this.issuetrackerLink).replace("{designteam}",this.designteamLink).replace(/\{linkend\}/g,"</a>")},issuetrackerLink:function(){return'<a target="_blank" href="https://github.com/nextcloud/server/issues/" rel="noreferrer nofollow">'},designteamLink:function(){return'<a target="_blank" href="https://nextcloud.com/design" rel="noreferrer nofollow">'}},methods:{selectHighContrast:function(e){this.selectItem("highcontrast",e),document.body.classList.toggle("theme--highcontrast")},selectTheme:function(e){var t=this.selected.theme;t&&document.body.classList.remove("theme--".concat(t)),e?(document.body.classList.remove("theme--light"),document.body.classList.add("theme--".concat(e))):document.body.classList.add("theme--light"),this.selectItem("theme",e)},selectFont:function(e){this.selectItem("font",e)},selectItem:function(e,n){var i,r=this;return(i=regeneratorRuntime.mark((function i(){var c,a,l;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.prev=0,c=""===n,i.next=4,(0,o.default)({url:(0,s.generateOcsUrl)("apps/accessibility/api/v1/config/{type}",{type:e}),method:c?"DELETE":"PUT",data:{value:n}});case 4:r.userConfig[e]=n,(a=document.querySelector("link[rel=stylesheet][href*=accessibility][href*=user-]"))?JSON.stringify(Object.values(r.selected))===JSON.stringify([!1,!1])?a.remove():a.href=a.href.split("?")[0]+"?v="+(new Date).getTime():((l=document.createElement("link")).rel="stylesheet",l.href=(0,s.generateUrl)("/apps/accessibility/css/user-style.css")+"?v="+(new Date).getTime(),document.head.appendChild(l)),i.next=13;break;case 9:i.prev=9,i.t0=i.catch(0),console.error(i.t0,i.t0.response),OC.Notification.showTemporary(t("accessibility",i.t0.response.data.ocs.meta.message+". Unable to apply the setting."));case 13:case"end":return i.stop()}}),i,null,[[0,9]])})),function(){var e=this,t=arguments;return new Promise((function(n,r){var s=i.apply(e,t);function c(e){d(s,n,r,c,o,"next",e)}function o(e){d(s,n,r,c,o,"throw",e)}c(void 0)}))})()}}},p=v,m=(0,l.Z)(p,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"section",attrs:{id:"accessibility"}},[n("h2",[e._v(e._s(e.t("accessibility","Accessibility")))]),e._v(" "),n("p",{domProps:{innerHTML:e._s(e.description)}}),e._v(" "),n("p",{domProps:{innerHTML:e._s(e.descriptionDetail)}}),e._v(" "),n("div",{staticClass:"preview-list"},[n("ItemPreview",{key:e.highcontrast.id,attrs:{preview:e.highcontrast,selected:e.selected.highcontrast},on:{select:e.selectHighContrast}}),e._v(" "),e._l(e.themes,(function(t){return n("ItemPreview",{key:t.id,attrs:{preview:t,selected:e.selected.theme},on:{select:e.selectTheme}})})),e._v(" "),e._l(e.fonts,(function(t){return n("ItemPreview",{key:t.id,attrs:{preview:t,selected:e.selected.font},on:{select:e.selectFont}})}))],2)])}),[],!1,null,null,null).exports;r.default.prototype.OC=OC,r.default.prototype.t=t,(new(r.default.extend(m))).$mount("#accessibility")}},i={};function r(e){var t=i[e];if(void 0!==t)return t.exports;var s=i[e]={id:e,loaded:!1,exports:{}};return n[e].call(s.exports,s,s.exports,r),s.loaded=!0,s.exports}r.m=n,r.amdD=function(){throw new Error("define cannot be used indirect")},r.amdO={},e=[],r.O=function(t,n,i,s){if(!n){var c=1/0;for(u=0;u<e.length;u++){n=e[u][0],i=e[u][1],s=e[u][2];for(var o=!0,a=0;a<n.length;a++)(!1&s||c>=s)&&Object.keys(r.O).every((function(e){return r.O[e](n[a])}))?n.splice(a--,1):(o=!1,s<c&&(c=s));if(o){e.splice(u--,1);var l=i();void 0!==l&&(t=l)}}return t}s=s||0;for(var u=e.length;u>0&&e[u-1][2]>s;u--)e[u]=e[u-1];e[u]=[n,i,s]},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},r.d=function(e,t){for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},r.j=5189,function(){r.b=document.baseURI||self.location.href;var e={5189:0};r.O.j=function(t){return 0===e[t]};var t=function(t,n){var i,s,c=n[0],o=n[1],a=n[2],l=0;if(c.some((function(t){return 0!==e[t]}))){for(i in o)r.o(o,i)&&(r.m[i]=o[i]);if(a)var u=a(r)}for(t&&t(n);l<c.length;l++)s=c[l],r.o(e,s)&&e[s]&&e[s][0](),e[s]=0;return r.O(u)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))}();var s=r.O(void 0,[7874],(function(){return r(26795)}));s=r.O(s)}();
-//# sourceMappingURL=accessibility-accessibility.js.map?v=b1b824ff441986503967 \ No newline at end of file
+!function(){"use strict";var e,n={26795:function(e,n,i){var r=i(20144),s=i(79753),c=i(16453),o=i(4820),a={name:"ItemPreview",props:{preview:{type:Object,required:!0},selected:{type:String,default:null}},computed:{checked:{get:function(){return this.selected===this.preview.id},set:function(e){this.$emit("select",e?this.preview.id:"")}}}},l=i(51900),u=(0,l.Z)(a,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{class:{preview:!0}},[n("div",{staticClass:"preview-image",style:{backgroundImage:"url("+e.preview.img+")"}}),e._v(" "),n("div",{staticClass:"preview-description"},[n("h3",[e._v(e._s(e.preview.title))]),e._v(" "),n("p",[e._v(e._s(e.preview.text))]),e._v(" "),n("input",{directives:[{name:"model",rawName:"v-model",value:e.checked,expression:"checked"}],staticClass:"checkbox",attrs:{id:"accessibility-"+e.preview.id,type:"checkbox"},domProps:{checked:Array.isArray(e.checked)?e._i(e.checked,null)>-1:e.checked},on:{change:function(t){var n=e.checked,i=t.target,r=!!i.checked;if(Array.isArray(n)){var s=e._i(n,null);i.checked?s<0&&(e.checked=n.concat([null])):s>-1&&(e.checked=n.slice(0,s).concat(n.slice(s+1)))}else e.checked=r}}}),e._v(" "),n("label",{attrs:{for:"accessibility-"+e.preview.id}},[e._v(e._s(e.preview.enableLabel))])])])}),[],!1,null,null,null).exports;function d(e,t,n,i,r,s,c){try{var o=e[s](c),a=o.value}catch(e){return void n(e)}o.done?t(a):Promise.resolve(a).then(i,r)}var h=(0,c.loadState)("accessibility","available-config"),f=(0,c.loadState)("accessibility","user-config"),v={name:"Accessibility",components:{ItemPreview:u},data:function(){return{availableConfig:h,userConfig:f}},computed:{themes:function(){return this.availableConfig.themes},highcontrast:function(){return this.availableConfig.highcontrast},fonts:function(){return this.availableConfig.fonts},selected:function(){return{theme:this.userConfig.theme,highcontrast:this.userConfig.highcontrast,font:this.userConfig.font}},description:function(){return t("accessibility","Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level.").replace("{guidelines}",this.guidelinesLink).replace("{linkend}","</a>")},guidelinesLink:function(){return'<a target="_blank" href="https://www.w3.org/WAI/standards-guidelines/wcag/" rel="noreferrer nofollow">'},descriptionDetail:function(){return t("accessibility","If you find any issues, don’t hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!").replace("{issuetracker}",this.issuetrackerLink).replace("{designteam}",this.designteamLink).replace(/\{linkend\}/g,"</a>")},issuetrackerLink:function(){return'<a target="_blank" href="https://github.com/nextcloud/server/issues/" rel="noreferrer nofollow">'},designteamLink:function(){return'<a target="_blank" href="https://nextcloud.com/design" rel="noreferrer nofollow">'}},methods:{selectHighContrast:function(e){this.selectItem("highcontrast",e),document.body.classList.toggle("theme--highcontrast")},selectTheme:function(e){var t=this.selected.theme;t&&document.body.classList.remove("theme--".concat(t)),e?(document.body.classList.remove("theme--light"),document.body.classList.add("theme--".concat(e))):document.body.classList.add("theme--light"),this.selectItem("theme",e)},selectFont:function(e){this.selectItem("font",e)},selectItem:function(e,n){var i,r=this;return(i=regeneratorRuntime.mark((function i(){var c,a,l;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.prev=0,c=""===n,i.next=4,(0,o.default)({url:(0,s.generateOcsUrl)("apps/accessibility/api/v1/config/{type}",{type:e}),method:c?"DELETE":"PUT",data:{value:n}});case 4:r.userConfig[e]=n,(a=document.querySelector("link[rel=stylesheet][href*=accessibility][href*=user-]"))?JSON.stringify(Object.values(r.selected))===JSON.stringify([!1,!1])?a.remove():a.href=a.href.split("?")[0]+"?v="+(new Date).getTime():((l=document.createElement("link")).rel="stylesheet",l.href=(0,s.generateUrl)("/apps/accessibility/css/user-style.css")+"?v="+(new Date).getTime(),document.head.appendChild(l)),i.next=13;break;case 9:i.prev=9,i.t0=i.catch(0),console.error(i.t0,i.t0.response),OC.Notification.showTemporary(t("accessibility",i.t0.response.data.ocs.meta.message+". Unable to apply the setting."));case 13:case"end":return i.stop()}}),i,null,[[0,9]])})),function(){var e=this,t=arguments;return new Promise((function(n,r){var s=i.apply(e,t);function c(e){d(s,n,r,c,o,"next",e)}function o(e){d(s,n,r,c,o,"throw",e)}c(void 0)}))})()}}},p=v,m=(0,l.Z)(p,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"section",attrs:{id:"accessibility"}},[n("h2",[e._v(e._s(e.t("accessibility","Accessibility")))]),e._v(" "),n("p",{domProps:{innerHTML:e._s(e.description)}}),e._v(" "),n("p",{domProps:{innerHTML:e._s(e.descriptionDetail)}}),e._v(" "),n("div",{staticClass:"preview-list"},[n("ItemPreview",{key:e.highcontrast.id,attrs:{preview:e.highcontrast,selected:e.selected.highcontrast},on:{select:e.selectHighContrast}}),e._v(" "),e._l(e.themes,(function(t){return n("ItemPreview",{key:t.id,attrs:{preview:t,selected:e.selected.theme},on:{select:e.selectTheme}})})),e._v(" "),e._l(e.fonts,(function(t){return n("ItemPreview",{key:t.id,attrs:{preview:t,selected:e.selected.font},on:{select:e.selectFont}})}))],2)])}),[],!1,null,null,null).exports;r.default.prototype.OC=OC,r.default.prototype.t=t,(new(r.default.extend(m))).$mount("#accessibility")}},i={};function r(e){var t=i[e];if(void 0!==t)return t.exports;var s=i[e]={id:e,loaded:!1,exports:{}};return n[e].call(s.exports,s,s.exports,r),s.loaded=!0,s.exports}r.m=n,r.amdD=function(){throw new Error("define cannot be used indirect")},r.amdO={},e=[],r.O=function(t,n,i,s){if(!n){var c=1/0;for(u=0;u<e.length;u++){n=e[u][0],i=e[u][1],s=e[u][2];for(var o=!0,a=0;a<n.length;a++)(!1&s||c>=s)&&Object.keys(r.O).every((function(e){return r.O[e](n[a])}))?n.splice(a--,1):(o=!1,s<c&&(c=s));if(o){e.splice(u--,1);var l=i();void 0!==l&&(t=l)}}return t}s=s||0;for(var u=e.length;u>0&&e[u-1][2]>s;u--)e[u]=e[u-1];e[u]=[n,i,s]},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},r.d=function(e,t){for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},r.j=5189,function(){r.b=document.baseURI||self.location.href;var e={5189:0};r.O.j=function(t){return 0===e[t]};var t=function(t,n){var i,s,c=n[0],o=n[1],a=n[2],l=0;if(c.some((function(t){return 0!==e[t]}))){for(i in o)r.o(o,i)&&(r.m[i]=o[i]);if(a)var u=a(r)}for(t&&t(n);l<c.length;l++)s=c[l],r.o(e,s)&&e[s]&&e[s][0](),e[s]=0;return r.O(u)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))}(),r.nc=void 0;var s=r.O(void 0,[7874],(function(){return r(26795)}));s=r.O(s)}();
+//# sourceMappingURL=accessibility-accessibility.js.map?v=85e375f0a046f951f641 \ No newline at end of file
diff --git a/dist/accessibility-accessibility.js.map b/dist/accessibility-accessibility.js.map
index 27a5c2c9a3c..a1160bc488c 100644
--- a/dist/accessibility-accessibility.js.map
+++ b/dist/accessibility-accessibility.js.map
@@ -1 +1 @@
-{"version":3,"file":"accessibility-accessibility.js?v=b1b824ff441986503967","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/accessibility/src/components/ItemPreview.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/accessibility/src/components/ItemPreview.vue","webpack://nextcloud/./apps/accessibility/src/components/ItemPreview.vue?fcde","webpack:///nextcloud/apps/accessibility/src/components/ItemPreview.vue?vue&type=template&id=216c63db&","webpack:///nextcloud/apps/accessibility/src/Accessibility.vue","webpack:///nextcloud/apps/accessibility/src/Accessibility.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/accessibility/src/Accessibility.vue?cead","webpack:///nextcloud/apps/accessibility/src/Accessibility.vue?vue&type=template&id=290dfbfb&","webpack:///nextcloud/apps/accessibility/src/main.js","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};","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.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!./ItemPreview.vue?vue&type=script&lang=js&\"","<template>\n\t<div :class=\"{preview: true}\">\n\t\t<div class=\"preview-image\" :style=\"{backgroundImage: 'url(' + preview.img + ')'}\" />\n\t\t<div class=\"preview-description\">\n\t\t\t<h3>{{ preview.title }}</h3>\n\t\t\t<p>{{ preview.text }}</p>\n\t\t\t<input :id=\"'accessibility-' + preview.id\"\n\t\t\t\tv-model=\"checked\"\n\t\t\t\ttype=\"checkbox\"\n\t\t\t\tclass=\"checkbox\">\n\t\t\t<label :for=\"'accessibility-' + preview.id\">{{ preview.enableLabel }}</label>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tname: 'ItemPreview',\n\tprops: {\n\t\tpreview: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tselected: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\tcomputed: {\n\t\tchecked: {\n\t\t\tget() {\n\t\t\t\treturn this.selected === this.preview.id\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.$emit('select', checked ? this.preview.id : '')\n\t\t\t},\n\t\t},\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./ItemPreview.vue?vue&type=template&id=216c63db&\"\nimport script from \"./ItemPreview.vue?vue&type=script&lang=js&\"\nexport * from \"./ItemPreview.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:{preview: true}},[_c('div',{staticClass:\"preview-image\",style:({backgroundImage: 'url(' + _vm.preview.img + ')'})}),_vm._v(\" \"),_c('div',{staticClass:\"preview-description\"},[_c('h3',[_vm._v(_vm._s(_vm.preview.title))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.preview.text))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.checked),expression:\"checked\"}],staticClass:\"checkbox\",attrs:{\"id\":'accessibility-' + _vm.preview.id,\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.checked)?_vm._i(_vm.checked,null)>-1:(_vm.checked)},on:{\"change\":function($event){var $$a=_vm.checked,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.checked=$$a.concat([$$v]))}else{$$i>-1&&(_vm.checked=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.checked=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":'accessibility-' + _vm.preview.id}},[_vm._v(_vm._s(_vm.preview.enableLabel))])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<div id=\"accessibility\" class=\"section\">\n\t\t<h2>{{ t('accessibility', 'Accessibility') }}</h2>\n\t\t<p v-html=\"description\" />\n\t\t<p v-html=\"descriptionDetail\" />\n\n\t\t<div class=\"preview-list\">\n\t\t\t<ItemPreview :key=\"highcontrast.id\"\n\t\t\t\t:preview=\"highcontrast\"\n\t\t\t\t:selected=\"selected.highcontrast\"\n\t\t\t\t@select=\"selectHighContrast\" />\n\t\t\t<ItemPreview v-for=\"preview in themes\"\n\t\t\t\t:key=\"preview.id\"\n\t\t\t\t:preview=\"preview\"\n\t\t\t\t:selected=\"selected.theme\"\n\t\t\t\t@select=\"selectTheme\" />\n\t\t\t<ItemPreview v-for=\"preview in fonts\"\n\t\t\t\t:key=\"preview.id\"\n\t\t\t\t:preview=\"preview\"\n\t\t\t\t:selected=\"selected.font\"\n\t\t\t\t@select=\"selectFont\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { generateUrl, generateOcsUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport axios from '@nextcloud/axios'\nimport ItemPreview from './components/ItemPreview'\n\nconst availableConfig = loadState('accessibility', 'available-config')\nconst userConfig = loadState('accessibility', 'user-config')\n\nexport default {\n\tname: 'Accessibility',\n\tcomponents: {\n\t\tItemPreview,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tavailableConfig,\n\t\t\tuserConfig,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tthemes() {\n\t\t\treturn this.availableConfig.themes\n\t\t},\n\t\thighcontrast() {\n\t\t\treturn this.availableConfig.highcontrast\n\t\t},\n\t\tfonts() {\n\t\t\treturn this.availableConfig.fonts\n\t\t},\n\t\tselected() {\n\t\t\treturn {\n\t\t\t\ttheme: this.userConfig.theme,\n\t\t\t\thighcontrast: this.userConfig.highcontrast,\n\t\t\t\tfont: this.userConfig.font,\n\t\t\t}\n\t\t},\n\t\tdescription() {\n\t\t\t// using the `t` replace method escape html, we have to do it manually :/\n\t\t\treturn t(\n\t\t\t\t'accessibility',\n\t\t\t\t'Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level.'\n\t\t\t)\n\t\t\t\t.replace('{guidelines}', this.guidelinesLink)\n\t\t\t\t.replace('{linkend}', '</a>')\n\t\t},\n\t\tguidelinesLink() {\n\t\t\treturn '<a target=\"_blank\" href=\"https://www.w3.org/WAI/standards-guidelines/wcag/\" rel=\"noreferrer nofollow\">'\n\t\t},\n\t\tdescriptionDetail() {\n\t\t\treturn t(\n\t\t\t\t'accessibility',\n\t\t\t\t'If you find any issues, don’t hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!'\n\t\t\t)\n\t\t\t\t.replace('{issuetracker}', this.issuetrackerLink)\n\t\t\t\t.replace('{designteam}', this.designteamLink)\n\t\t\t\t.replace(/\\{linkend\\}/g, '</a>')\n\t\t},\n\t\tissuetrackerLink() {\n\t\t\treturn '<a target=\"_blank\" href=\"https://github.com/nextcloud/server/issues/\" rel=\"noreferrer nofollow\">'\n\t\t},\n\t\tdesignteamLink() {\n\t\t\treturn '<a target=\"_blank\" href=\"https://nextcloud.com/design\" rel=\"noreferrer nofollow\">'\n\t\t},\n\t},\n\tmethods: {\n\t\t// SELECT handlers\n\t\tselectHighContrast(id) {\n\t\t\tthis.selectItem('highcontrast', id)\n\t\t\tdocument.body.classList.toggle('theme--highcontrast')\n\t\t},\n\t\tselectTheme(id) {\n\t\t\tconst previous = this.selected.theme\n\t\t\tif (previous) {\n\t\t\t\tdocument.body.classList.remove(`theme--${previous}`)\n\t\t\t}\n\t\t\tif (id) {\n\t\t\t\tdocument.body.classList.remove('theme--light')\n\t\t\t\tdocument.body.classList.add(`theme--${id}`)\n\t\t\t} else {\n\t\t\t\tdocument.body.classList.add('theme--light')\n\t\t\t}\n\n\t\t\tthis.selectItem('theme', id)\n\t\t},\n\t\tselectFont(id) {\n\t\t\tthis.selectItem('font', id)\n\t\t},\n\n\t\t/**\n\t\t * Commit a change and force reload css\n\t\t * Fetching the file again will trigger the server update\n\t\t *\n\t\t * @param {string} type type of the change (font, highcontrast or theme)\n\t\t * @param {string} id the data of the change\n\t\t */\n\t\tasync selectItem(type, id) {\n\t\t\ttry {\n\t\t\t\tconst isDelete = id === ''\n\t\t\t\tawait axios({\n\t\t\t\t\turl: generateOcsUrl('apps/accessibility/api/v1/config/{type}', { type }),\n\t\t\t\t\tmethod: isDelete ? 'DELETE' : 'PUT',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tvalue: id,\n\t\t\t\t\t},\n\t\t\t\t})\n\n\t\t\t\tthis.userConfig[type] = id\n\n\t\t\t\t// Remove old link\n\t\t\t\tconst link = document.querySelector('link[rel=stylesheet][href*=accessibility][href*=user-]')\n\t\t\t\tif (!link) {\n\t\t\t\t\t// insert new css\n\t\t\t\t\tconst link = document.createElement('link')\n\t\t\t\t\tlink.rel = 'stylesheet'\n\t\t\t\t\tlink.href = generateUrl('/apps/accessibility/css/user-style.css') + '?v=' + new Date().getTime()\n\t\t\t\t\tdocument.head.appendChild(link)\n\t\t\t\t} else {\n\t\t\t\t\t// compare arrays\n\t\t\t\t\tif (\n\t\t\t\t\t\tJSON.stringify(Object.values(this.selected))\n\t\t\t\t\t\t=== JSON.stringify([false, false])\n\t\t\t\t\t) {\n\t\t\t\t\t\t// if nothing is selected, blindly remove the css\n\t\t\t\t\t\tlink.remove()\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// force update\n\t\t\t\t\t\tlink.href\n\t\t\t\t\t\t\t= link.href.split('?')[0]\n\t\t\t\t\t\t\t+ '?v='\n\t\t\t\t\t\t\t+ new Date().getTime()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\tconsole.error(err, err.response)\n\t\t\t\tOC.Notification.showTemporary(t('accessibility', err.response.data.ocs.meta.message + '. Unable to apply the setting.'))\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Accessibility.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!./Accessibility.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Accessibility.vue?vue&type=template&id=290dfbfb&\"\nimport script from \"./Accessibility.vue?vue&type=script&lang=js&\"\nexport * from \"./Accessibility.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"section\",attrs:{\"id\":\"accessibility\"}},[_c('h2',[_vm._v(_vm._s(_vm.t('accessibility', 'Accessibility')))]),_vm._v(\" \"),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.description)}}),_vm._v(\" \"),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.descriptionDetail)}}),_vm._v(\" \"),_c('div',{staticClass:\"preview-list\"},[_c('ItemPreview',{key:_vm.highcontrast.id,attrs:{\"preview\":_vm.highcontrast,\"selected\":_vm.selected.highcontrast},on:{\"select\":_vm.selectHighContrast}}),_vm._v(\" \"),_vm._l((_vm.themes),function(preview){return _c('ItemPreview',{key:preview.id,attrs:{\"preview\":preview,\"selected\":_vm.selected.theme},on:{\"select\":_vm.selectTheme}})}),_vm._v(\" \"),_vm._l((_vm.fonts),function(preview){return _c('ItemPreview',{key:preview.id,attrs:{\"preview\":preview,\"selected\":_vm.selected.font},on:{\"select\":_vm.selectFont}})})],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport Vue from 'vue'\nimport App from './Accessibility.vue'\n\n// bind to window\nVue.prototype.OC = OC\nVue.prototype.t = t\n\nconst View = Vue.extend(App)\nconst accessibility = new View()\naccessibility.$mount('#accessibility')\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 = 5189;","__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\t5189: 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__(26795); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","_vm","this","_h","$createElement","_c","_self","class","preview","staticClass","style","backgroundImage","img","_v","_s","title","text","directives","name","rawName","value","expression","attrs","id","domProps","Array","isArray","checked","_i","on","$event","$$a","$$el","target","$$c","$$i","concat","slice","enableLabel","t","description","descriptionDetail","key","highcontrast","selected","selectHighContrast","_l","theme","selectTheme","font","selectFont","Vue","OC","App","$mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","push","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"accessibility-accessibility.js?v=85e375f0a046f951f641","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/accessibility/src/components/ItemPreview.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/accessibility/src/components/ItemPreview.vue","webpack://nextcloud/./apps/accessibility/src/components/ItemPreview.vue?fcde","webpack:///nextcloud/apps/accessibility/src/components/ItemPreview.vue?vue&type=template&id=216c63db&","webpack:///nextcloud/apps/accessibility/src/Accessibility.vue","webpack:///nextcloud/apps/accessibility/src/Accessibility.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/accessibility/src/Accessibility.vue?cead","webpack:///nextcloud/apps/accessibility/src/Accessibility.vue?vue&type=template&id=290dfbfb&","webpack:///nextcloud/apps/accessibility/src/main.js","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/runtime/nonce","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};","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.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!./ItemPreview.vue?vue&type=script&lang=js&\"","<template>\n\t<div :class=\"{preview: true}\">\n\t\t<div class=\"preview-image\" :style=\"{backgroundImage: 'url(' + preview.img + ')'}\" />\n\t\t<div class=\"preview-description\">\n\t\t\t<h3>{{ preview.title }}</h3>\n\t\t\t<p>{{ preview.text }}</p>\n\t\t\t<input :id=\"'accessibility-' + preview.id\"\n\t\t\t\tv-model=\"checked\"\n\t\t\t\ttype=\"checkbox\"\n\t\t\t\tclass=\"checkbox\">\n\t\t\t<label :for=\"'accessibility-' + preview.id\">{{ preview.enableLabel }}</label>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tname: 'ItemPreview',\n\tprops: {\n\t\tpreview: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tselected: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\tcomputed: {\n\t\tchecked: {\n\t\t\tget() {\n\t\t\t\treturn this.selected === this.preview.id\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.$emit('select', checked ? this.preview.id : '')\n\t\t\t},\n\t\t},\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./ItemPreview.vue?vue&type=template&id=216c63db&\"\nimport script from \"./ItemPreview.vue?vue&type=script&lang=js&\"\nexport * from \"./ItemPreview.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:{preview: true}},[_c('div',{staticClass:\"preview-image\",style:({backgroundImage: 'url(' + _vm.preview.img + ')'})}),_vm._v(\" \"),_c('div',{staticClass:\"preview-description\"},[_c('h3',[_vm._v(_vm._s(_vm.preview.title))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.preview.text))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.checked),expression:\"checked\"}],staticClass:\"checkbox\",attrs:{\"id\":'accessibility-' + _vm.preview.id,\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.checked)?_vm._i(_vm.checked,null)>-1:(_vm.checked)},on:{\"change\":function($event){var $$a=_vm.checked,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.checked=$$a.concat([$$v]))}else{$$i>-1&&(_vm.checked=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.checked=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":'accessibility-' + _vm.preview.id}},[_vm._v(_vm._s(_vm.preview.enableLabel))])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<div id=\"accessibility\" class=\"section\">\n\t\t<h2>{{ t('accessibility', 'Accessibility') }}</h2>\n\t\t<p v-html=\"description\" />\n\t\t<p v-html=\"descriptionDetail\" />\n\n\t\t<div class=\"preview-list\">\n\t\t\t<ItemPreview :key=\"highcontrast.id\"\n\t\t\t\t:preview=\"highcontrast\"\n\t\t\t\t:selected=\"selected.highcontrast\"\n\t\t\t\t@select=\"selectHighContrast\" />\n\t\t\t<ItemPreview v-for=\"preview in themes\"\n\t\t\t\t:key=\"preview.id\"\n\t\t\t\t:preview=\"preview\"\n\t\t\t\t:selected=\"selected.theme\"\n\t\t\t\t@select=\"selectTheme\" />\n\t\t\t<ItemPreview v-for=\"preview in fonts\"\n\t\t\t\t:key=\"preview.id\"\n\t\t\t\t:preview=\"preview\"\n\t\t\t\t:selected=\"selected.font\"\n\t\t\t\t@select=\"selectFont\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { generateUrl, generateOcsUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport axios from '@nextcloud/axios'\nimport ItemPreview from './components/ItemPreview'\n\nconst availableConfig = loadState('accessibility', 'available-config')\nconst userConfig = loadState('accessibility', 'user-config')\n\nexport default {\n\tname: 'Accessibility',\n\tcomponents: {\n\t\tItemPreview,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tavailableConfig,\n\t\t\tuserConfig,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tthemes() {\n\t\t\treturn this.availableConfig.themes\n\t\t},\n\t\thighcontrast() {\n\t\t\treturn this.availableConfig.highcontrast\n\t\t},\n\t\tfonts() {\n\t\t\treturn this.availableConfig.fonts\n\t\t},\n\t\tselected() {\n\t\t\treturn {\n\t\t\t\ttheme: this.userConfig.theme,\n\t\t\t\thighcontrast: this.userConfig.highcontrast,\n\t\t\t\tfont: this.userConfig.font,\n\t\t\t}\n\t\t},\n\t\tdescription() {\n\t\t\t// using the `t` replace method escape html, we have to do it manually :/\n\t\t\treturn t(\n\t\t\t\t'accessibility',\n\t\t\t\t'Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level.'\n\t\t\t)\n\t\t\t\t.replace('{guidelines}', this.guidelinesLink)\n\t\t\t\t.replace('{linkend}', '</a>')\n\t\t},\n\t\tguidelinesLink() {\n\t\t\treturn '<a target=\"_blank\" href=\"https://www.w3.org/WAI/standards-guidelines/wcag/\" rel=\"noreferrer nofollow\">'\n\t\t},\n\t\tdescriptionDetail() {\n\t\t\treturn t(\n\t\t\t\t'accessibility',\n\t\t\t\t'If you find any issues, don’t hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!'\n\t\t\t)\n\t\t\t\t.replace('{issuetracker}', this.issuetrackerLink)\n\t\t\t\t.replace('{designteam}', this.designteamLink)\n\t\t\t\t.replace(/\\{linkend\\}/g, '</a>')\n\t\t},\n\t\tissuetrackerLink() {\n\t\t\treturn '<a target=\"_blank\" href=\"https://github.com/nextcloud/server/issues/\" rel=\"noreferrer nofollow\">'\n\t\t},\n\t\tdesignteamLink() {\n\t\t\treturn '<a target=\"_blank\" href=\"https://nextcloud.com/design\" rel=\"noreferrer nofollow\">'\n\t\t},\n\t},\n\tmethods: {\n\t\t// SELECT handlers\n\t\tselectHighContrast(id) {\n\t\t\tthis.selectItem('highcontrast', id)\n\t\t\tdocument.body.classList.toggle('theme--highcontrast')\n\t\t},\n\t\tselectTheme(id) {\n\t\t\tconst previous = this.selected.theme\n\t\t\tif (previous) {\n\t\t\t\tdocument.body.classList.remove(`theme--${previous}`)\n\t\t\t}\n\t\t\tif (id) {\n\t\t\t\tdocument.body.classList.remove('theme--light')\n\t\t\t\tdocument.body.classList.add(`theme--${id}`)\n\t\t\t} else {\n\t\t\t\tdocument.body.classList.add('theme--light')\n\t\t\t}\n\n\t\t\tthis.selectItem('theme', id)\n\t\t},\n\t\tselectFont(id) {\n\t\t\tthis.selectItem('font', id)\n\t\t},\n\n\t\t/**\n\t\t * Commit a change and force reload css\n\t\t * Fetching the file again will trigger the server update\n\t\t *\n\t\t * @param {string} type type of the change (font, highcontrast or theme)\n\t\t * @param {string} id the data of the change\n\t\t */\n\t\tasync selectItem(type, id) {\n\t\t\ttry {\n\t\t\t\tconst isDelete = id === ''\n\t\t\t\tawait axios({\n\t\t\t\t\turl: generateOcsUrl('apps/accessibility/api/v1/config/{type}', { type }),\n\t\t\t\t\tmethod: isDelete ? 'DELETE' : 'PUT',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tvalue: id,\n\t\t\t\t\t},\n\t\t\t\t})\n\n\t\t\t\tthis.userConfig[type] = id\n\n\t\t\t\t// Remove old link\n\t\t\t\tconst link = document.querySelector('link[rel=stylesheet][href*=accessibility][href*=user-]')\n\t\t\t\tif (!link) {\n\t\t\t\t\t// insert new css\n\t\t\t\t\tconst link = document.createElement('link')\n\t\t\t\t\tlink.rel = 'stylesheet'\n\t\t\t\t\tlink.href = generateUrl('/apps/accessibility/css/user-style.css') + '?v=' + new Date().getTime()\n\t\t\t\t\tdocument.head.appendChild(link)\n\t\t\t\t} else {\n\t\t\t\t\t// compare arrays\n\t\t\t\t\tif (\n\t\t\t\t\t\tJSON.stringify(Object.values(this.selected))\n\t\t\t\t\t\t=== JSON.stringify([false, false])\n\t\t\t\t\t) {\n\t\t\t\t\t\t// if nothing is selected, blindly remove the css\n\t\t\t\t\t\tlink.remove()\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// force update\n\t\t\t\t\t\tlink.href\n\t\t\t\t\t\t\t= link.href.split('?')[0]\n\t\t\t\t\t\t\t+ '?v='\n\t\t\t\t\t\t\t+ new Date().getTime()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\tconsole.error(err, err.response)\n\t\t\t\tOC.Notification.showTemporary(t('accessibility', err.response.data.ocs.meta.message + '. Unable to apply the setting.'))\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Accessibility.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!./Accessibility.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Accessibility.vue?vue&type=template&id=290dfbfb&\"\nimport script from \"./Accessibility.vue?vue&type=script&lang=js&\"\nexport * from \"./Accessibility.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"section\",attrs:{\"id\":\"accessibility\"}},[_c('h2',[_vm._v(_vm._s(_vm.t('accessibility', 'Accessibility')))]),_vm._v(\" \"),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.description)}}),_vm._v(\" \"),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.descriptionDetail)}}),_vm._v(\" \"),_c('div',{staticClass:\"preview-list\"},[_c('ItemPreview',{key:_vm.highcontrast.id,attrs:{\"preview\":_vm.highcontrast,\"selected\":_vm.selected.highcontrast},on:{\"select\":_vm.selectHighContrast}}),_vm._v(\" \"),_vm._l((_vm.themes),function(preview){return _c('ItemPreview',{key:preview.id,attrs:{\"preview\":preview,\"selected\":_vm.selected.theme},on:{\"select\":_vm.selectTheme}})}),_vm._v(\" \"),_vm._l((_vm.fonts),function(preview){return _c('ItemPreview',{key:preview.id,attrs:{\"preview\":preview,\"selected\":_vm.selected.font},on:{\"select\":_vm.selectFont}})})],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport Vue from 'vue'\nimport App from './Accessibility.vue'\n\n// bind to window\nVue.prototype.OC = OC\nVue.prototype.t = t\n\nconst View = Vue.extend(App)\nconst accessibility = new View()\naccessibility.$mount('#accessibility')\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 = 5189;","__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\t5189: 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));","__webpack_require__.nc = undefined;","// 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__(26795); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","_vm","this","_h","$createElement","_c","_self","class","preview","staticClass","style","backgroundImage","img","_v","_s","title","text","directives","name","rawName","value","expression","attrs","id","domProps","Array","isArray","checked","_i","on","$event","$$a","$$el","target","$$c","$$i","concat","slice","enableLabel","t","description","descriptionDetail","key","highcontrast","selected","selectHighContrast","_l","theme","selectTheme","font","selectFont","Vue","OC","App","$mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","push","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/accessibility-accessibilityoca.js b/dist/accessibility-accessibilityoca.js
index ad2be15acb8..5a6cfe2352e 100644
--- a/dist/accessibility-accessibilityoca.js
+++ b/dist/accessibility-accessibilityoca.js
@@ -1,3 +1,3 @@
/*! For license information please see accessibility-accessibilityoca.js.LICENSE.txt */
-!function(){"use strict";var e,t={27214:function(e,t,n){var r=n(16453);OCA.Accessibility=(0,r.loadState)("accessibility","data"),OCA.Accessibility.checkMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches&&(OCA.Accessibility.theme="dark"),!1!==OCA.Accessibility.theme?document.body.classList.add("theme--".concat(OCA.Accessibility.theme)):document.body.classList.add("theme--light"),!1!==OCA.Accessibility.highcontrast&&document.body.classList.add("theme--highcontrast")}},n={};function r(e){var i=n[e];if(void 0!==i)return i.exports;var o=n[e]={id:e,loaded:!1,exports:{}};return t[e].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={},e=[],r.O=function(t,n,i,o){if(!n){var c=1/0;for(s=0;s<e.length;s++){n=e[s][0],i=e[s][1],o=e[s][2];for(var a=!0,u=0;u<n.length;u++)(!1&o||c>=o)&&Object.keys(r.O).every((function(e){return r.O[e](n[u])}))?n.splice(u--,1):(a=!1,o<c&&(c=o));if(a){e.splice(s--,1);var d=i();void 0!==d&&(t=d)}}return t}o=o||0;for(var s=e.length;s>0&&e[s-1][2]>o;s--)e[s]=e[s-1];e[s]=[n,i,o]},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},r.d=function(e,t){for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},r.j=2883,function(){r.b=document.baseURI||self.location.href;var e={2883:0};r.O.j=function(t){return 0===e[t]};var t=function(t,n){var i,o,c=n[0],a=n[1],u=n[2],d=0;if(c.some((function(t){return 0!==e[t]}))){for(i in a)r.o(a,i)&&(r.m[i]=a[i]);if(u)var s=u(r)}for(t&&t(n);d<c.length;d++)o=c[d],r.o(e,o)&&e[o]&&e[o][0](),e[o]=0;return r.O(s)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))}();var i=r.O(void 0,[7874],(function(){return r(27214)}));i=r.O(i)}();
-//# sourceMappingURL=accessibility-accessibilityoca.js.map?v=d152d172f19100cde55e \ No newline at end of file
+!function(){"use strict";var e,t={27214:function(e,t,n){var r=n(16453);OCA.Accessibility=(0,r.loadState)("accessibility","data"),OCA.Accessibility.checkMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches&&(OCA.Accessibility.theme="dark"),!1!==OCA.Accessibility.theme?document.body.classList.add("theme--".concat(OCA.Accessibility.theme)):document.body.classList.add("theme--light"),!1!==OCA.Accessibility.highcontrast&&document.body.classList.add("theme--highcontrast")}},n={};function r(e){var i=n[e];if(void 0!==i)return i.exports;var o=n[e]={id:e,loaded:!1,exports:{}};return t[e].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={},e=[],r.O=function(t,n,i,o){if(!n){var c=1/0;for(s=0;s<e.length;s++){n=e[s][0],i=e[s][1],o=e[s][2];for(var a=!0,u=0;u<n.length;u++)(!1&o||c>=o)&&Object.keys(r.O).every((function(e){return r.O[e](n[u])}))?n.splice(u--,1):(a=!1,o<c&&(c=o));if(a){e.splice(s--,1);var d=i();void 0!==d&&(t=d)}}return t}o=o||0;for(var s=e.length;s>0&&e[s-1][2]>o;s--)e[s]=e[s-1];e[s]=[n,i,o]},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},r.d=function(e,t){for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},r.j=2883,function(){r.b=document.baseURI||self.location.href;var e={2883:0};r.O.j=function(t){return 0===e[t]};var t=function(t,n){var i,o,c=n[0],a=n[1],u=n[2],d=0;if(c.some((function(t){return 0!==e[t]}))){for(i in a)r.o(a,i)&&(r.m[i]=a[i]);if(u)var s=u(r)}for(t&&t(n);d<c.length;d++)o=c[d],r.o(e,o)&&e[o]&&e[o][0](),e[o]=0;return r.O(s)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))}(),r.nc=void 0;var i=r.O(void 0,[7874],(function(){return r(27214)}));i=r.O(i)}();
+//# sourceMappingURL=accessibility-accessibilityoca.js.map?v=f7bba126a9f5a3873a25 \ No newline at end of file
diff --git a/dist/accessibility-accessibilityoca.js.map b/dist/accessibility-accessibilityoca.js.map
index 587822cc6cf..78f3f477a2b 100644
--- a/dist/accessibility-accessibilityoca.js.map
+++ b/dist/accessibility-accessibilityoca.js.map
@@ -1 +1 @@
-{"version":3,"file":"accessibility-accessibilityoca.js?v=d152d172f19100cde55e","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/accessibility/src/accessibilityoca.js","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 Copyright (c) 2020 Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @author Jan C. Borchardt <hey@jancborchardt.net>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport { loadState } from '@nextcloud/initial-state'\n\nOCA.Accessibility = loadState('accessibility', 'data')\nif (OCA.Accessibility.checkMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {\n\t// Overwrite the theme for Guests based on the prefers-color-scheme\n\tOCA.Accessibility.theme = 'dark'\n}\n\nif (OCA.Accessibility.theme !== false) {\n\tdocument.body.classList.add(`theme--${OCA.Accessibility.theme}`)\n} else {\n\tdocument.body.classList.add('theme--light')\n}\n\nif (OCA.Accessibility.highcontrast !== false) {\n\tdocument.body.classList.add('theme--highcontrast')\n}\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 = 2883;","__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\t2883: 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__(27214); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","OCA","Accessibility","loadState","checkMedia","window","matchMedia","matches","theme","document","body","classList","add","highcontrast","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","id","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","this","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","children","b","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","push","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"accessibility-accessibilityoca.js?v=f7bba126a9f5a3873a25","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/accessibility/src/accessibilityoca.js","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/runtime/nonce","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 Copyright (c) 2020 Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @author Jan C. Borchardt <hey@jancborchardt.net>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport { loadState } from '@nextcloud/initial-state'\n\nOCA.Accessibility = loadState('accessibility', 'data')\nif (OCA.Accessibility.checkMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {\n\t// Overwrite the theme for Guests based on the prefers-color-scheme\n\tOCA.Accessibility.theme = 'dark'\n}\n\nif (OCA.Accessibility.theme !== false) {\n\tdocument.body.classList.add(`theme--${OCA.Accessibility.theme}`)\n} else {\n\tdocument.body.classList.add('theme--light')\n}\n\nif (OCA.Accessibility.highcontrast !== false) {\n\tdocument.body.classList.add('theme--highcontrast')\n}\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 = 2883;","__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\t2883: 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));","__webpack_require__.nc = undefined;","// 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__(27214); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","OCA","Accessibility","loadState","checkMedia","window","matchMedia","matches","theme","document","body","classList","add","highcontrast","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","id","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","this","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","children","b","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","push","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/comments-comments-app.js b/dist/comments-comments-app.js
index bcdad4d7222..650859e54b1 100644
--- a/dist/comments-comments-app.js
+++ b/dist/comments-comments-app.js
@@ -1,3 +1,3 @@
/*! For license information please see comments-comments-app.js.LICENSE.txt */
-!function(){var n,e={93365:function(n,t,e){var r={"./af":36026,"./af.js":36026,"./ar":28093,"./ar-dz":41943,"./ar-dz.js":41943,"./ar-kw":23969,"./ar-kw.js":23969,"./ar-ly":40594,"./ar-ly.js":40594,"./ar-ma":18369,"./ar-ma.js":18369,"./ar-sa":32579,"./ar-sa.js":32579,"./ar-tn":76442,"./ar-tn.js":76442,"./ar.js":28093,"./az":86425,"./az.js":86425,"./be":22004,"./be.js":22004,"./bg":42982,"./bg.js":42982,"./bm":21067,"./bm.js":21067,"./bn":8366,"./bn-bd":63837,"./bn-bd.js":63837,"./bn.js":8366,"./bo":95040,"./bo.js":95040,"./br":521,"./br.js":521,"./bs":83242,"./bs.js":83242,"./ca":73046,"./ca.js":73046,"./cs":25794,"./cs.js":25794,"./cv":28231,"./cv.js":28231,"./cy":10927,"./cy.js":10927,"./da":42832,"./da.js":42832,"./de":29415,"./de-at":3331,"./de-at.js":3331,"./de-ch":45524,"./de-ch.js":45524,"./de.js":29415,"./dv":44700,"./dv.js":44700,"./el":88752,"./el.js":88752,"./en-au":90444,"./en-au.js":90444,"./en-ca":65959,"./en-ca.js":65959,"./en-gb":62762,"./en-gb.js":62762,"./en-ie":40909,"./en-ie.js":40909,"./en-il":79909,"./en-il.js":79909,"./en-in":87942,"./en-in.js":87942,"./en-nz":75200,"./en-nz.js":75200,"./en-sg":21415,"./en-sg.js":21415,"./eo":27447,"./eo.js":27447,"./es":86756,"./es-do":47049,"./es-do.js":47049,"./es-mx":15915,"./es-mx.js":15915,"./es-us":57133,"./es-us.js":57133,"./es.js":86756,"./et":72182,"./et.js":72182,"./eu":14419,"./eu.js":14419,"./fa":2916,"./fa.js":2916,"./fi":49964,"./fi.js":49964,"./fil":16448,"./fil.js":16448,"./fo":26094,"./fo.js":26094,"./fr":35833,"./fr-ca":56994,"./fr-ca.js":56994,"./fr-ch":2740,"./fr-ch.js":2740,"./fr.js":35833,"./fy":69542,"./fy.js":69542,"./ga":93264,"./ga.js":93264,"./gd":77457,"./gd.js":77457,"./gl":83043,"./gl.js":83043,"./gom-deva":24034,"./gom-deva.js":24034,"./gom-latn":28379,"./gom-latn.js":28379,"./gu":406,"./gu.js":406,"./he":73219,"./he.js":73219,"./hi":99834,"./hi.js":99834,"./hr":28754,"./hr.js":28754,"./hu":93945,"./hu.js":93945,"./hy-am":81319,"./hy-am.js":81319,"./id":24875,"./id.js":24875,"./is":23724,"./is.js":23724,"./it":79906,"./it-ch":34303,"./it-ch.js":34303,"./it.js":79906,"./ja":77105,"./ja.js":77105,"./jv":15026,"./jv.js":15026,"./ka":67416,"./ka.js":67416,"./kk":79734,"./kk.js":79734,"./km":60757,"./km.js":60757,"./kn":58369,"./kn.js":58369,"./ko":77687,"./ko.js":77687,"./ku":95544,"./ku.js":95544,"./ky":85431,"./ky.js":85431,"./lb":13613,"./lb.js":13613,"./lo":34252,"./lo.js":34252,"./lt":84619,"./lt.js":84619,"./lv":93760,"./lv.js":93760,"./me":93393,"./me.js":93393,"./mi":12369,"./mi.js":12369,"./mk":48664,"./mk.js":48664,"./ml":23099,"./ml.js":23099,"./mn":98539,"./mn.js":98539,"./mr":778,"./mr.js":778,"./ms":39970,"./ms-my":82625,"./ms-my.js":82625,"./ms.js":39970,"./mt":15714,"./mt.js":15714,"./my":53055,"./my.js":53055,"./nb":73945,"./nb.js":73945,"./ne":63645,"./ne.js":63645,"./nl":4829,"./nl-be":12823,"./nl-be.js":12823,"./nl.js":4829,"./nn":23756,"./nn.js":23756,"./oc-lnc":41228,"./oc-lnc.js":41228,"./pa-in":97877,"./pa-in.js":97877,"./pl":53066,"./pl.js":53066,"./pt":28677,"./pt-br":81592,"./pt-br.js":81592,"./pt.js":28677,"./ro":32722,"./ro.js":32722,"./ru":59138,"./ru.js":59138,"./sd":32568,"./sd.js":32568,"./se":49753,"./se.js":49753,"./si":58024,"./si.js":58024,"./sk":31058,"./sk.js":31058,"./sl":43452,"./sl.js":43452,"./sq":2795,"./sq.js":2795,"./sr":26976,"./sr-cyrl":38819,"./sr-cyrl.js":38819,"./sr.js":26976,"./ss":7467,"./ss.js":7467,"./sv":42787,"./sv.js":42787,"./sw":80298,"./sw.js":80298,"./ta":57532,"./ta.js":57532,"./te":76076,"./te.js":76076,"./tet":40452,"./tet.js":40452,"./tg":64794,"./tg.js":64794,"./th":48245,"./th.js":48245,"./tk":8870,"./tk.js":8870,"./tl-ph":36056,"./tl-ph.js":36056,"./tlh":15249,"./tlh.js":15249,"./tr":22053,"./tr.js":22053,"./tzl":39871,"./tzl.js":39871,"./tzm":39574,"./tzm-latn":19210,"./tzm-latn.js":19210,"./tzm.js":39574,"./ug-cn":91532,"./ug-cn.js":91532,"./uk":11432,"./uk.js":11432,"./ur":88523,"./ur.js":88523,"./uz":54958,"./uz-latn":68735,"./uz-latn.js":68735,"./uz.js":54958,"./vi":83398,"./vi.js":83398,"./x-pseudo":56665,"./x-pseudo.js":56665,"./yo":11642,"./yo.js":11642,"./zh-cn":5462,"./zh-cn.js":5462,"./zh-hk":92530,"./zh-hk.js":92530,"./zh-mo":41650,"./zh-mo.js":41650,"./zh-tw":97333,"./zh-tw.js":97333};function o(n){var t=s(n);return e(t)}function s(n){if(!e.o(r,n)){var t=new Error("Cannot find module '"+n+"'");throw t.code="MODULE_NOT_FOUND",t}return r[n]}o.keys=function(){return Object.keys(r)},o.resolve=s,n.exports=o,o.id=93365},7346:function(n,e,r){"use strict";var o=r(17499),s=r(9944),a=r(79753),i=r(22200),c=r(16453),u=r(4820),m=r(34741),l=r(20144),d=r(97e3),p=r.n(d),f=r(80351),h=r.n(f),g=r(56286),v=r.n(g),A=r(79440),C=r.n(A),b=r(33521),j=r.n(b),y=r(28017),_=r.n(y),w=r(11243),x=r.n(w),k=r(13408),O=r.n(k),P={name:"Moment",props:{timestamp:{type:Number,required:!0},format:{type:String,default:"LLL"}},computed:{title:function(){return h().unix(this.timestamp).format(this.format)},formatted:function(){return h().unix(this.timestamp).fromNow()}}},E=r(51900),R=(0,E.Z)(P,(function(){var n=this,t=n.$createElement;return(n._self._c||t)("span",{staticClass:"live-relative-timestamp",attrs:{"data-timestamp":1e3*n.timestamp,title:n.title}},[n._v(n._s(n.formatted))])}),[],!1,null,null,null).exports,D=function(){return(0,a.generateRemoteUrl)("dav/comments")},T=r(81063);u.default.defaults.headers["X-Requested-With"]="XMLHttpRequest",(0,T.getPatcher)().patch("request",u.default);var I=(0,T.createClient)(D());function S(n,t,e,r,o,s,a){try{var i=n[s](a),c=i.value}catch(n){return void e(n)}i.done?t(c):Promise.resolve(c).then(r,o)}function M(n){return function(){var t=this,e=arguments;return new Promise((function(r,o){var s=n.apply(t,e);function a(n){S(s,r,o,a,i,"next",n)}function i(n){S(s,r,o,a,i,"throw",n)}a(void 0)}))}}function z(n,t,e){return N.apply(this,arguments)}function N(){return(N=M(regeneratorRuntime.mark((function n(t,e,r){var o,s,a,c,m;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return o=["",t,e].join("/"),n.next=3,u.default.post(D()+o,{actorDisplayName:(0,i.getCurrentUser)().displayName,actorId:(0,i.getCurrentUser)().uid,actorType:"users",creationDateTime:(new Date).toUTCString(),message:r,objectType:"files",verb:"comment"});case 3:return s=n.sent,a=parseInt(s.headers["content-location"].split("/").pop()),c=o+"/"+a,n.next=8,I.stat(c,{details:!0});case 8:return m=n.sent,n.abrupt("return",m.data);case 10:case"end":return n.stop()}}),n)})))).apply(this,arguments)}function B(n,t,e,r,o,s,a){try{var i=n[s](a),c=i.value}catch(n){return void e(n)}i.done?t(c):Promise.resolve(c).then(r,o)}function U(n){return function(){var t=this,e=arguments;return new Promise((function(r,o){var s=n.apply(t,e);function a(n){B(s,r,o,a,i,"next",n)}function i(n){B(s,r,o,a,i,"throw",n)}a(void 0)}))}}function q(n,t,e){return $.apply(this,arguments)}function $(){return($=U(regeneratorRuntime.mark((function n(t,e,r){var o;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return o=["",t,e,r].join("/"),n.next=3,I.deleteFile(o);case 3:case"end":return n.stop()}}),n)})))).apply(this,arguments)}function L(n,t,e,r,o,s,a){try{var i=n[s](a),c=i.value}catch(n){return void e(n)}i.done?t(c):Promise.resolve(c).then(r,o)}function F(n){return function(){var t=this,e=arguments;return new Promise((function(r,o){var s=n.apply(t,e);function a(n){L(s,r,o,a,i,"next",n)}function i(n){L(s,r,o,a,i,"throw",n)}a(void 0)}))}}function Z(n,t,e,r){return G.apply(this,arguments)}function G(){return(G=F(regeneratorRuntime.mark((function n(t,e,r,o){var s;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return s=["",t,e,r].join("/"),n.next=3,I.customRequest(s,Object.assign({method:"PROPPATCH",data:'<?xml version="1.0"?>\n\t\t\t<d:propertyupdate\n\t\t\t\txmlns:d="DAV:"\n\t\t\t\txmlns:oc="http://owncloud.org/ns">\n\t\t\t<d:set>\n\t\t\t\t<d:prop>\n\t\t\t\t\t<oc:message>'.concat(o,"</oc:message>\n\t\t\t\t</d:prop>\n\t\t\t</d:set>\n\t\t\t</d:propertyupdate>")}));case 3:return n.abrupt("return",n.sent);case 4:case"end":return n.stop()}}),n)})))).apply(this,arguments)}var W=r(26932);function H(n,t,e,r,o,s,a){try{var i=n[s](a),c=i.value}catch(n){return void e(n)}i.done?t(c):Promise.resolve(c).then(r,o)}function V(n){return function(){var t=this,e=arguments;return new Promise((function(r,o){var s=n.apply(t,e);function a(n){H(s,r,o,a,i,"next",n)}function i(n){H(s,r,o,a,i,"throw",n)}a(void 0)}))}}var Y={props:{id:{type:Number,default:null},message:{type:String,default:""},ressourceId:{type:[String,Number],required:!0}},data:function(){return{deleted:!1,editing:!1,loading:!1}},methods:{onEdit:function(){this.editing=!0},onEditCancel:function(){this.editing=!1,this.updateLocalMessage(this.message)},onEditComment:function(n){var e=this;return V(regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return e.loading=!0,r.prev=1,r.next=4,Z(e.commentsType,e.ressourceId,e.id,n);case 4:e.logger.debug("Comment edited",{commentsType:e.commentsType,ressourceId:e.ressourceId,id:e.id,message:n}),e.$emit("update:message",n),e.editing=!1,r.next=13;break;case 9:r.prev=9,r.t0=r.catch(1),(0,W.x2)(t("comments","An error occurred while trying to edit the comment")),console.error(r.t0);case 13:return r.prev=13,e.loading=!1,r.finish(13);case 16:case"end":return r.stop()}}),r,null,[[1,9,13,16]])})))()},onDeleteWithUndo:function(){var n=this;this.deleted=!0;var e=setTimeout(this.onDelete,W.et);(0,W.yl)(t("comments","Comment deleted"),(function(){clearTimeout(e),n.deleted=!1}))},onDelete:function(){var n=this;return V(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,q(n.commentsType,n.ressourceId,n.id);case 3:n.logger.debug("Comment deleted",{commentsType:n.commentsType,ressourceId:n.ressourceId,id:n.id}),n.$emit("delete",n.id),e.next=12;break;case 7:e.prev=7,e.t0=e.catch(0),(0,W.x2)(t("comments","An error occurred while trying to delete the comment")),console.error(e.t0),n.deleted=!1;case 12:case"end":return e.stop()}}),e,null,[[0,7]])})))()},onNewComment:function(n){var e=this;return V(regeneratorRuntime.mark((function r(){var o;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return e.loading=!0,r.prev=1,r.next=4,z(e.commentsType,e.ressourceId,n);case 4:o=r.sent,e.logger.debug("New comment posted",{commentsType:e.commentsType,ressourceId:e.ressourceId,newComment:o}),e.$emit("new",o),e.$emit("update:message",""),e.localMessage="",r.next=15;break;case 11:r.prev=11,r.t0=r.catch(1),(0,W.x2)(t("comments","An error occurred while trying to create the comment")),console.error(r.t0);case 15:return r.prev=15,e.loading=!1,r.finish(15);case 18:case"end":return r.stop()}}),r,null,[[1,11,15,18]])})))()}}},X={name:"Comment",components:{ActionButton:v(),Actions:C(),ActionSeparator:j(),Avatar:_(),Moment:R,RichContenteditable:x()},mixins:[O(),Y],inheritAttrs:!1,props:{actorDisplayName:{type:String,required:!0},actorId:{type:String,required:!0},creationDateTime:{type:String,default:null},editor:{type:Boolean,default:!1},autoComplete:{type:Function,required:!0}},data:function(){return{expanded:!1,localMessage:""}},computed:{isOwnComment:function(){return(0,i.getCurrentUser)().uid===this.actorId},renderedContent:function(){return this.isEmptyMessage?"":this.renderContent(this.localMessage)},isEmptyMessage:function(){return!this.localMessage||""===this.localMessage.trim()},timestamp:function(){return parseInt(h()(this.creationDateTime).format("x"),10)/1e3}},watch:{message:function(n){this.updateLocalMessage(n)}},beforeMount:function(){this.updateLocalMessage(this.message)},methods:{updateLocalMessage:function(n){this.localMessage=n.toString()},onSubmit:function(){var n=this;if(""!==this.localMessage.trim())return this.editor?(this.onNewComment(this.localMessage.trim()),void this.$nextTick((function(){n.$refs.editor.$el.focus()}))):void this.onEditComment(this.localMessage.trim())},onExpand:function(){this.expanded=!0}}},Q=r(93379),K=r.n(Q),J=r(7795),nn=r.n(J),tn=r(90569),en=r.n(tn),rn=r(3565),on=r.n(rn),sn=r(19216),an=r.n(sn),cn=r(44589),un=r.n(cn),mn=r(84820),ln={};ln.styleTagTransform=un(),ln.setAttributes=on(),ln.insert=en().bind(null,"head"),ln.domAPI=nn(),ln.insertStyleElement=an(),K()(mn.Z,ln),mn.Z&&mn.Z.locals&&mn.Z.locals;var dn=(0,E.Z)(X,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{directives:[{name:"show",rawName:"v-show",value:!n.deleted,expression:"!deleted"}],staticClass:"comment",class:{"comment--loading":n.loading}},[e("div",{staticClass:"comment__header"},[e("Avatar",{staticClass:"comment__avatar",attrs:{"display-name":n.actorDisplayName,user:n.actorId,size:32}}),n._v(" "),e("span",{staticClass:"comment__author"},[n._v(n._s(n.actorDisplayName))]),n._v(" "),n.isOwnComment&&n.id&&!n.loading?e("Actions",{staticClass:"comment__actions"},[n.editing?e("ActionButton",{attrs:{icon:"icon-close"},on:{click:n.onEditCancel}},[n._v("\n\t\t\t\t"+n._s(n.t("comments","Cancel edit"))+"\n\t\t\t")]):[e("ActionButton",{attrs:{"close-after-click":!0,icon:"icon-rename"},on:{click:n.onEdit}},[n._v("\n\t\t\t\t\t"+n._s(n.t("comments","Edit comment"))+"\n\t\t\t\t")]),n._v(" "),e("ActionSeparator"),n._v(" "),e("ActionButton",{attrs:{"close-after-click":!0,icon:"icon-delete"},on:{click:n.onDeleteWithUndo}},[n._v("\n\t\t\t\t\t"+n._s(n.t("comments","Delete comment"))+"\n\t\t\t\t")])]],2):n._e(),n._v(" "),n.id&&n.loading?e("div",{staticClass:"comment_loading icon-loading-small"}):n.creationDateTime?e("Moment",{staticClass:"comment__timestamp",attrs:{timestamp:n.timestamp}}):n._e()],1),n._v(" "),n.editor||n.editing?e("div",{staticClass:"comment__editor "},[e("RichContenteditable",{ref:"editor",attrs:{"auto-complete":n.autoComplete,contenteditable:!n.loading,value:n.localMessage},on:{"update:value":n.updateLocalMessage,submit:n.onSubmit}}),n._v(" "),e("input",{directives:[{name:"tooltip",rawName:"v-tooltip",value:n.t("comments","Post comment"),expression:"t('comments', 'Post comment')"}],staticClass:"comment__submit",class:n.loading?"icon-loading-small":"icon-confirm",attrs:{type:"submit",disabled:n.isEmptyMessage,value:""},on:{click:n.onSubmit}})],1):e("div",{staticClass:"comment__message",class:{"comment__message--expanded":n.expanded},domProps:{innerHTML:n._s(n.renderedContent)},on:{click:n.onExpand}})])}),[],!1,null,"4bced5e9",null).exports,pn=r(7582),fn=r(18635);function hn(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 gn(n){for(var t=1;t<arguments.length;t++){var e=null!=arguments[t]?arguments[t]:{};t%2?hn(Object(e),!0).forEach((function(t){vn(n,t,e[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(e)):hn(Object(e)).forEach((function(t){Object.defineProperty(n,t,Object.getOwnPropertyDescriptor(e,t))}))}return n}function vn(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}function An(n,t,e,r,o,s,a){try{var i=n[s](a),c=i.value}catch(n){return void e(n)}i.done?t(c):Promise.resolve(c).then(r,o)}function Cn(n){return function(){var t=this,e=arguments;return new Promise((function(r,o){var s=n.apply(t,e);function a(n){An(s,r,o,a,i,"next",n)}function i(n){An(s,r,o,a,i,"throw",n)}a(void 0)}))}}var bn=20;function jn(n){return yn.apply(this,arguments)}function yn(){return yn=Cn(regeneratorRuntime.mark((function n(t){var e,r,o,s,a,i=arguments;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e=t.commentsType,r=t.ressourceId,o=i.length>1&&void 0!==i[1]?i[1]:{},s=null,a=["",e,r].join("/"),n.next=6,I.customRequest(a,Object.assign({method:"REPORT",data:'<?xml version="1.0"?>\n\t\t\t<oc:filter-comments\n\t\t\t\txmlns:d="DAV:"\n\t\t\t\txmlns:oc="http://owncloud.org/ns"\n\t\t\t\txmlns:nc="http://nextcloud.org/ns"\n\t\t\t\txmlns:ocs="http://open-collaboration-services.org/ns">\n\t\t\t\t<oc:limit>'.concat(bn,"</oc:limit>\n\t\t\t\t<oc:offset>").concat(o.offset||0,"</oc:offset>\n\t\t\t</oc:filter-comments>")},o)).then((function(n){return s=n,n.data})).then(pn.parseXML).then((function(n){return _n(n,!0)})).then((function(n){return(0,fn.processResponsePayload)(s,n,!0)})).then((function(n){return n.data}));case 6:return n.abrupt("return",n.sent);case 7:case"end":return n.stop()}}),n)}))),yn.apply(this,arguments)}function _n(n){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],e=n.multistatus.response;return e.map((function(n){var e=n.propstat.prop,r=gn(gn({},e),{},{actorDisplayName:wn(e.actorDisplayName,2),message:wn(e.message,2)});return(0,pn.prepareFileFromProps)(r,r.id.toString(),t)}))}function wn(n){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,e=new DOMParser,r=n,o=0;o<t;o++)r=e.parseFromString(r,"text/html").documentElement.textContent;return r}function xn(n,t,e,r,o,s,a){try{var i=n[s](a),c=i.value}catch(n){return void e(n)}i.done?t(c):Promise.resolve(c).then(r,o)}var kn=function(n){var t=u.default.CancelToken.source(),e=function(){var e,r=(e=regeneratorRuntime.mark((function e(r,o){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",n(r,Object.assign({cancelToken:t.token},o)));case 1:case"end":return e.stop()}}),e)})),function(){var n=this,t=arguments;return new Promise((function(r,o){var s=e.apply(n,t);function a(n){xn(s,r,o,a,i,"next",n)}function i(n){xn(s,r,o,a,i,"throw",n)}a(void 0)}))});return function(n,t){return r.apply(this,arguments)}}();return{request:e,cancel:t.cancel}};function On(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 Pn(n,t,e,r,o,s,a){try{var i=n[s](a),c=i.value}catch(n){return void e(n)}i.done?t(c):Promise.resolve(c).then(r,o)}function En(n){return function(){var t=this,e=arguments;return new Promise((function(r,o){var s=n.apply(t,e);function a(n){Pn(s,r,o,a,i,"next",n)}function i(n){Pn(s,r,o,a,i,"throw",n)}a(void 0)}))}}l.default.use(m.default);var Rn={name:"Comments",components:{Comment:dn,EmptyContent:p()},data:function(){return{error:"",loading:!1,done:!1,ressourceId:null,offset:0,comments:[],cancelRequest:function(){},editorData:{actorDisplayName:(0,i.getCurrentUser)().displayName,actorId:(0,i.getCurrentUser)().uid,key:"editor"},Comment:dn}},computed:{hasComments:function(){return this.comments.length>0},isFirstLoading:function(){return this.loading&&0===this.offset}},methods:{update:function(n){var t=this;return En(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t.ressourceId=n,t.resetState(),t.getComments();case 3:case"end":return e.stop()}}),e)})))()},onScrollBottomReached:function(){this.error||this.done||this.loading||this.getComments()},genMentionsData:function(n){return Object.values(n).flat().reduce((function(n,t){return n[t.mentionId]={icon:"icon-user",id:t.mentionId,label:t.mentionDisplayName,source:"users",primary:(0,i.getCurrentUser)().uid===t.mentionId},n}),{})},getComments:function(){var n=this;return En(regeneratorRuntime.mark((function e(){var r,o,s,a,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.cancelRequest("cancel"),e.prev=1,n.loading=!0,n.error="",o=kn(jn),s=o.request,a=o.cancel,n.cancelRequest=a,e.next=8,s({commentsType:n.commentsType,ressourceId:n.ressourceId},{offset:n.offset});case 8:i=e.sent,n.logger.debug("Processed ".concat(i.length," comments"),{comments:i}),i.length<bn&&(n.done=!0),(r=n.comments).push.apply(r,function(n){if(Array.isArray(n))return On(n)}(c=i)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(c)||function(n,t){if(n){if("string"==typeof n)return On(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)?On(n,t):void 0}}(c)||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.")}()),n.offset+=bn,e.next=21;break;case 15:if(e.prev=15,e.t0=e.catch(1),"cancel"!==e.t0.message){e.next=19;break}return e.abrupt("return");case 19:n.error=t("comments","Unable to load the comments list"),console.error("Error loading the comments list",e.t0);case 21:return e.prev=21,n.loading=!1,e.finish(21);case 24:case"end":return e.stop()}var c}),e,null,[[1,15,21,24]])})))()},autoComplete:function(n,t){var e=this;return En(regeneratorRuntime.mark((function r(){var o;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,u.default.get((0,a.generateOcsUrl)("core/autocomplete/get"),{params:{search:n,itemType:"files",itemId:e.ressourceId,sorter:"commenters|share-recipients",limit:(0,c.loadState)("comments","maxAutoCompleteResults")}});case 2:return o=r.sent,r.abrupt("return",t(o.data.ocs.data));case 4:case"end":return r.stop()}}),r)})))()},onNewComment:function(n){this.comments.unshift(n)},onDelete:function(n){var t=this.comments.findIndex((function(t){return t.props.id===n}));t>-1?this.comments.splice(t,1):console.error("Could not find the deleted comment in the list",n)},resetState:function(){this.error="",this.loading=!1,this.done=!1,this.offset=0,this.comments=[]}}},Dn=r(56282),Tn={};Tn.styleTagTransform=un(),Tn.setAttributes=on(),Tn.insert=en().bind(null,"head"),Tn.domAPI=nn(),Tn.insertStyleElement=an(),K()(Dn.Z,Tn),Dn.Z&&Dn.Z.locals&&Dn.Z.locals;var In=(0,E.Z)(Rn,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"comments",class:{"icon-loading":n.isFirstLoading}},[e("Comment",n._b({staticClass:"comments__writer",attrs:{"auto-complete":n.autoComplete,editor:!0,"ressource-id":n.ressourceId},on:{new:n.onNewComment}},"Comment",n.editorData,!1)),n._v(" "),n.isFirstLoading?n._e():[!n.hasComments&&n.done?e("EmptyContent",{attrs:{icon:"icon-comment"}},[n._v("\n\t\t\t"+n._s(n.t("comments","No comments yet, start the conversation!"))+"\n\t\t")]):n._l(n.comments,(function(t){return e("Comment",n._b({key:t.props.id,staticClass:"comments__list",attrs:{"auto-complete":n.autoComplete,message:t.props.message,"ressource-id":n.ressourceId,"user-data":n.genMentionsData(t.props.mentions)},on:{"update:message":function(e){return n.$set(t.props,"message",e)},delete:n.onDelete}},"Comment",t.props,!1))})),n._v(" "),n.loading&&!n.isFirstLoading?e("div",{staticClass:"comments__info icon-loading"}):n.hasComments&&n.done?e("div",{staticClass:"comments__info"},[n._v("\n\t\t\t"+n._s(n.t("comments","No more messages"))+"\n\t\t")]):n.error?e("EmptyContent",{staticClass:"comments__error",attrs:{icon:"icon-error"},scopedSlots:n._u([{key:"desc",fn:function(){return[e("button",{attrs:{icon:"icon-history"},on:{click:n.getComments}},[n._v("\n\t\t\t\t\t"+n._s(n.t("comments","Retry"))+"\n\t\t\t\t")])]},proxy:!0}],null,!1,1182580137)},[n._v("\n\t\t\t"+n._s(n.error)+"\n\t\t\t")]):n._e()]],2)}),[],!1,null,"3808dce0",null).exports;function Sn(n,t){for(var e=0;e<t.length;e++){var r=t[e];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}function Mn(n,t,e){return t&&Sn(n.prototype,t),e&&Sn(n,e),Object.defineProperty(n,"prototype",{writable:!1}),n}function zn(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function")}var Nn=(0,o.IY)().setApp("comments").detectUser().build();l.default.mixin({data:function(){return{logger:Nn}},methods:{t:s.translate,n:s.translatePlural}});var Bn=Mn((function n(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"files",e=arguments.length>1?arguments[1]:void 0;zn(this,n),l.default.mixin({data:function(){return{commentsType:t}}});var r=l.default.extend(In);return new r(e)}));window.OCA&&!window.OCA.Comments&&Object.assign(window.OCA,{Comments:{}}),Object.assign(window.OCA.Comments,{View:Bn}),console.debug("OCA.Comments.View initialized")},84820:function(n,t,e){"use strict";var r=e(87537),o=e.n(r),s=e(23645),a=e.n(s)()(o());a.push([n.id,".comment[data-v-4bced5e9]{position:relative;padding:10px 0 15px}.comment__header[data-v-4bced5e9]{display:flex;align-items:center;min-height:44px;padding:5px 0}.comment__author[data-v-4bced5e9],.comment__actions[data-v-4bced5e9]{margin-left:10px !important}.comment__author[data-v-4bced5e9]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--color-text-maxcontrast)}.comment_loading[data-v-4bced5e9],.comment__timestamp[data-v-4bced5e9]{margin-left:auto;color:var(--color-text-maxcontrast)}.comment__editor[data-v-4bced5e9],.comment__message[data-v-4bced5e9]{position:relative;padding-left:42px}.comment__submit[data-v-4bced5e9]{position:absolute;right:0;bottom:0;width:44px;height:44px;margin:1px;cursor:pointer;opacity:.7;border:none;background-color:rgba(0,0,0,0) !important}.comment__submit[data-v-4bced5e9]:disabled{cursor:not-allowed;opacity:.5}.comment__submit[data-v-4bced5e9]:focus,.comment__submit[data-v-4bced5e9]:hover{opacity:1}.comment__message[data-v-4bced5e9]{white-space:pre-wrap;word-break:break-word;max-height:70px;overflow:hidden}.comment__message--expanded[data-v-4bced5e9]{max-height:none;overflow:visible}.rich-contenteditable__input[data-v-4bced5e9]{min-height:44px;margin:0;padding:10px}","",{version:3,sources:["webpack://./apps/comments/src/components/Comment.vue"],names:[],mappings:"AA0PA,0BACC,iBAAA,CACA,mBAAA,CAEA,kCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,aAAA,CAGD,qEAEC,2BAAA,CAGD,kCACC,eAAA,CACA,kBAAA,CACA,sBAAA,CACA,mCAAA,CAGD,uEAEC,gBAAA,CACA,mCAAA,CAGD,qEAEC,iBAAA,CAEA,iBAAA,CAGD,kCACC,iBAAA,CACA,OAAA,CACA,QAAA,CACA,UAAA,CACA,WAAA,CAEA,UAAA,CACA,cAAA,CACA,UAAA,CACA,WAAA,CACA,yCAAA,CAEA,2CACC,kBAAA,CACA,UAAA,CAGD,gFAEC,SAAA,CAIF,mCACC,oBAAA,CACA,qBAAA,CACA,eAAA,CACA,eAAA,CACA,6CACC,eAAA,CACA,gBAAA,CAKH,8CACC,eAAA,CACA,QAAA,CACA,YA7EiB",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n@use "sass:math";\n\n$comment-padding: 10px;\n\n.comment {\n\tposition: relative;\n\tpadding: $comment-padding 0 $comment-padding * 1.5;\n\n\t&__header {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tmin-height: 44px;\n\t\tpadding: math.div($comment-padding, 2) 0;\n\t}\n\n\t&__author,\n\t&__actions {\n\t\tmargin-left: $comment-padding !important;\n\t}\n\n\t&__author {\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&_loading,\n\t&__timestamp {\n\t\tmargin-left: auto;\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&__editor,\n\t&__message {\n\t\tposition: relative;\n\t\t// Avatar size, align with author name\n\t\tpadding-left: 32px + $comment-padding;\n\t}\n\n\t&__submit {\n\t\tposition: absolute;\n\t\tright: 0;\n\t\tbottom: 0;\n\t\twidth: 44px;\n\t\theight: 44px;\n\t\t// Align with input border\n\t\tmargin: 1px;\n\t\tcursor: pointer;\n\t\topacity: .7;\n\t\tborder: none;\n\t\tbackground-color: transparent !important;\n\n\t\t&:disabled {\n\t\t\tcursor: not-allowed;\n\t\t\topacity: .5;\n\t\t}\n\n\t\t&:focus,\n\t\t&:hover {\n\t\t\topacity: 1;\n\t\t}\n\t}\n\n\t&__message {\n\t\twhite-space: pre-wrap;\n\t\tword-break: break-word;\n\t\tmax-height: 70px;\n\t\toverflow: hidden;\n\t\t&--expanded {\n\t\t\tmax-height: none;\n\t\t\toverflow: visible;\n\t\t}\n\t}\n}\n\n.rich-contenteditable__input {\n\tmin-height: 44px;\n\tmargin: 0;\n\tpadding: $comment-padding;\n}\n\n'],sourceRoot:""}]),t.Z=a},56282:function(n,t,e){"use strict";var r=e(87537),o=e.n(r),s=e(23645),a=e.n(s)()(o());a.push([n.id,".comments__error[data-v-3808dce0]{margin-top:0}.comments__info[data-v-3808dce0]{height:60px;color:var(--color-text-maxcontrast);text-align:center;line-height:60px}","",{version:3,sources:["webpack://./apps/comments/src/views/Comments.vue"],names:[],mappings:"AAsRC,kCACC,YAAA,CAGD,iCACC,WAAA,CACA,mCAAA,CACA,iBAAA,CACA,gBAAA",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.comments {\n\t// Do not add emptycontent top margin\n\t&__error{\n\t\tmargin-top: 0;\n\t}\n\n\t&__info {\n\t\theight: 60px;\n\t\tcolor: var(--color-text-maxcontrast);\n\t\ttext-align: center;\n\t\tline-height: 60px;\n\t}\n}\n"],sourceRoot:""}]),t.Z=a},69862:function(){},40964:function(){}},r={};function o(n){var t=r[n];if(void 0!==t)return t.exports;var s=r[n]={id:n,loaded:!1,exports:{}};return e[n].call(s.exports,s,s.exports,o),s.loaded=!0,s.exports}o.m=e,o.amdD=function(){throw new Error("define cannot be used indirect")},o.amdO={},n=[],o.O=function(t,e,r,s){if(!e){var a=1/0;for(m=0;m<n.length;m++){e=n[m][0],r=n[m][1],s=n[m][2];for(var i=!0,c=0;c<e.length;c++)(!1&s||a>=s)&&Object.keys(o.O).every((function(n){return o.O[n](e[c])}))?e.splice(c--,1):(i=!1,s<a&&(a=s));if(i){n.splice(m--,1);var u=r();void 0!==u&&(t=u)}}return t}s=s||0;for(var m=n.length;m>0&&n[m-1][2]>s;m--)n[m]=n[m-1];n[m]=[e,r,s]},o.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return o.d(t,{a:t}),t},o.d=function(n,t){for(var e in t)o.o(t,e)&&!o.o(n,e)&&Object.defineProperty(n,e,{enumerable:!0,get:t[e]})},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),o.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},o.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},o.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n},o.j=6335,function(){o.b=document.baseURI||self.location.href;var n={6335:0};o.O.j=function(t){return 0===n[t]};var t=function(t,e){var r,s,a=e[0],i=e[1],c=e[2],u=0;if(a.some((function(t){return 0!==n[t]}))){for(r in i)o.o(i,r)&&(o.m[r]=i[r]);if(c)var m=c(o)}for(t&&t(e);u<a.length;u++)s=a[u],o.o(n,s)&&n[s]&&n[s][0](),n[s]=0;return o.O(m)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(t.bind(null,0)),e.push=t.bind(null,e.push.bind(e))}();var s=o.O(void 0,[7874],(function(){return o(7346)}));s=o.O(s)}();
-//# sourceMappingURL=comments-comments-app.js.map?v=44c3a80f690b1bc821e6 \ No newline at end of file
+!function(){var n,e={93365:function(n,t,e){var r={"./af":36026,"./af.js":36026,"./ar":28093,"./ar-dz":41943,"./ar-dz.js":41943,"./ar-kw":23969,"./ar-kw.js":23969,"./ar-ly":40594,"./ar-ly.js":40594,"./ar-ma":18369,"./ar-ma.js":18369,"./ar-sa":32579,"./ar-sa.js":32579,"./ar-tn":76442,"./ar-tn.js":76442,"./ar.js":28093,"./az":86425,"./az.js":86425,"./be":22004,"./be.js":22004,"./bg":42982,"./bg.js":42982,"./bm":21067,"./bm.js":21067,"./bn":8366,"./bn-bd":63837,"./bn-bd.js":63837,"./bn.js":8366,"./bo":95040,"./bo.js":95040,"./br":521,"./br.js":521,"./bs":83242,"./bs.js":83242,"./ca":73046,"./ca.js":73046,"./cs":25794,"./cs.js":25794,"./cv":28231,"./cv.js":28231,"./cy":10927,"./cy.js":10927,"./da":42832,"./da.js":42832,"./de":29415,"./de-at":3331,"./de-at.js":3331,"./de-ch":45524,"./de-ch.js":45524,"./de.js":29415,"./dv":44700,"./dv.js":44700,"./el":88752,"./el.js":88752,"./en-au":90444,"./en-au.js":90444,"./en-ca":65959,"./en-ca.js":65959,"./en-gb":62762,"./en-gb.js":62762,"./en-ie":40909,"./en-ie.js":40909,"./en-il":79909,"./en-il.js":79909,"./en-in":87942,"./en-in.js":87942,"./en-nz":75200,"./en-nz.js":75200,"./en-sg":21415,"./en-sg.js":21415,"./eo":27447,"./eo.js":27447,"./es":86756,"./es-do":47049,"./es-do.js":47049,"./es-mx":15915,"./es-mx.js":15915,"./es-us":57133,"./es-us.js":57133,"./es.js":86756,"./et":72182,"./et.js":72182,"./eu":14419,"./eu.js":14419,"./fa":2916,"./fa.js":2916,"./fi":49964,"./fi.js":49964,"./fil":16448,"./fil.js":16448,"./fo":26094,"./fo.js":26094,"./fr":35833,"./fr-ca":56994,"./fr-ca.js":56994,"./fr-ch":2740,"./fr-ch.js":2740,"./fr.js":35833,"./fy":69542,"./fy.js":69542,"./ga":93264,"./ga.js":93264,"./gd":77457,"./gd.js":77457,"./gl":83043,"./gl.js":83043,"./gom-deva":24034,"./gom-deva.js":24034,"./gom-latn":28379,"./gom-latn.js":28379,"./gu":406,"./gu.js":406,"./he":73219,"./he.js":73219,"./hi":99834,"./hi.js":99834,"./hr":28754,"./hr.js":28754,"./hu":93945,"./hu.js":93945,"./hy-am":81319,"./hy-am.js":81319,"./id":24875,"./id.js":24875,"./is":23724,"./is.js":23724,"./it":79906,"./it-ch":34303,"./it-ch.js":34303,"./it.js":79906,"./ja":77105,"./ja.js":77105,"./jv":15026,"./jv.js":15026,"./ka":67416,"./ka.js":67416,"./kk":79734,"./kk.js":79734,"./km":60757,"./km.js":60757,"./kn":58369,"./kn.js":58369,"./ko":77687,"./ko.js":77687,"./ku":95544,"./ku.js":95544,"./ky":85431,"./ky.js":85431,"./lb":13613,"./lb.js":13613,"./lo":34252,"./lo.js":34252,"./lt":84619,"./lt.js":84619,"./lv":93760,"./lv.js":93760,"./me":93393,"./me.js":93393,"./mi":12369,"./mi.js":12369,"./mk":48664,"./mk.js":48664,"./ml":23099,"./ml.js":23099,"./mn":98539,"./mn.js":98539,"./mr":778,"./mr.js":778,"./ms":39970,"./ms-my":82625,"./ms-my.js":82625,"./ms.js":39970,"./mt":15714,"./mt.js":15714,"./my":53055,"./my.js":53055,"./nb":73945,"./nb.js":73945,"./ne":63645,"./ne.js":63645,"./nl":4829,"./nl-be":12823,"./nl-be.js":12823,"./nl.js":4829,"./nn":23756,"./nn.js":23756,"./oc-lnc":41228,"./oc-lnc.js":41228,"./pa-in":97877,"./pa-in.js":97877,"./pl":53066,"./pl.js":53066,"./pt":28677,"./pt-br":81592,"./pt-br.js":81592,"./pt.js":28677,"./ro":32722,"./ro.js":32722,"./ru":59138,"./ru.js":59138,"./sd":32568,"./sd.js":32568,"./se":49753,"./se.js":49753,"./si":58024,"./si.js":58024,"./sk":31058,"./sk.js":31058,"./sl":43452,"./sl.js":43452,"./sq":2795,"./sq.js":2795,"./sr":26976,"./sr-cyrl":38819,"./sr-cyrl.js":38819,"./sr.js":26976,"./ss":7467,"./ss.js":7467,"./sv":42787,"./sv.js":42787,"./sw":80298,"./sw.js":80298,"./ta":57532,"./ta.js":57532,"./te":76076,"./te.js":76076,"./tet":40452,"./tet.js":40452,"./tg":64794,"./tg.js":64794,"./th":48245,"./th.js":48245,"./tk":8870,"./tk.js":8870,"./tl-ph":36056,"./tl-ph.js":36056,"./tlh":15249,"./tlh.js":15249,"./tr":22053,"./tr.js":22053,"./tzl":39871,"./tzl.js":39871,"./tzm":39574,"./tzm-latn":19210,"./tzm-latn.js":19210,"./tzm.js":39574,"./ug-cn":91532,"./ug-cn.js":91532,"./uk":11432,"./uk.js":11432,"./ur":88523,"./ur.js":88523,"./uz":54958,"./uz-latn":68735,"./uz-latn.js":68735,"./uz.js":54958,"./vi":83398,"./vi.js":83398,"./x-pseudo":56665,"./x-pseudo.js":56665,"./yo":11642,"./yo.js":11642,"./zh-cn":5462,"./zh-cn.js":5462,"./zh-hk":92530,"./zh-hk.js":92530,"./zh-mo":41650,"./zh-mo.js":41650,"./zh-tw":97333,"./zh-tw.js":97333};function o(n){var t=s(n);return e(t)}function s(n){if(!e.o(r,n)){var t=new Error("Cannot find module '"+n+"'");throw t.code="MODULE_NOT_FOUND",t}return r[n]}o.keys=function(){return Object.keys(r)},o.resolve=s,n.exports=o,o.id=93365},7346:function(n,e,r){"use strict";var o=r(17499),s=r(9944),a=r(79753),i=r(22200),c=r(16453),u=r(4820),m=r(34741),l=r(20144),d=r(97e3),p=r.n(d),f=r(80351),h=r.n(f),g=r(56286),v=r.n(g),A=r(79440),C=r.n(A),b=r(33521),j=r.n(b),y=r(28017),_=r.n(y),w=r(11243),x=r.n(w),k=r(13408),O=r.n(k),P={name:"Moment",props:{timestamp:{type:Number,required:!0},format:{type:String,default:"LLL"}},computed:{title:function(){return h().unix(this.timestamp).format(this.format)},formatted:function(){return h().unix(this.timestamp).fromNow()}}},E=r(51900),R=(0,E.Z)(P,(function(){var n=this,t=n.$createElement;return(n._self._c||t)("span",{staticClass:"live-relative-timestamp",attrs:{"data-timestamp":1e3*n.timestamp,title:n.title}},[n._v(n._s(n.formatted))])}),[],!1,null,null,null).exports,D=function(){return(0,a.generateRemoteUrl)("dav/comments")},T=r(81063);u.default.defaults.headers["X-Requested-With"]="XMLHttpRequest",(0,T.getPatcher)().patch("request",u.default);var I=(0,T.createClient)(D());function S(n,t,e,r,o,s,a){try{var i=n[s](a),c=i.value}catch(n){return void e(n)}i.done?t(c):Promise.resolve(c).then(r,o)}function M(n){return function(){var t=this,e=arguments;return new Promise((function(r,o){var s=n.apply(t,e);function a(n){S(s,r,o,a,i,"next",n)}function i(n){S(s,r,o,a,i,"throw",n)}a(void 0)}))}}function z(n,t,e){return N.apply(this,arguments)}function N(){return(N=M(regeneratorRuntime.mark((function n(t,e,r){var o,s,a,c,m;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return o=["",t,e].join("/"),n.next=3,u.default.post(D()+o,{actorDisplayName:(0,i.getCurrentUser)().displayName,actorId:(0,i.getCurrentUser)().uid,actorType:"users",creationDateTime:(new Date).toUTCString(),message:r,objectType:"files",verb:"comment"});case 3:return s=n.sent,a=parseInt(s.headers["content-location"].split("/").pop()),c=o+"/"+a,n.next=8,I.stat(c,{details:!0});case 8:return m=n.sent,n.abrupt("return",m.data);case 10:case"end":return n.stop()}}),n)})))).apply(this,arguments)}function B(n,t,e,r,o,s,a){try{var i=n[s](a),c=i.value}catch(n){return void e(n)}i.done?t(c):Promise.resolve(c).then(r,o)}function U(n){return function(){var t=this,e=arguments;return new Promise((function(r,o){var s=n.apply(t,e);function a(n){B(s,r,o,a,i,"next",n)}function i(n){B(s,r,o,a,i,"throw",n)}a(void 0)}))}}function q(n,t,e){return $.apply(this,arguments)}function $(){return($=U(regeneratorRuntime.mark((function n(t,e,r){var o;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return o=["",t,e,r].join("/"),n.next=3,I.deleteFile(o);case 3:case"end":return n.stop()}}),n)})))).apply(this,arguments)}function L(n,t,e,r,o,s,a){try{var i=n[s](a),c=i.value}catch(n){return void e(n)}i.done?t(c):Promise.resolve(c).then(r,o)}function F(n){return function(){var t=this,e=arguments;return new Promise((function(r,o){var s=n.apply(t,e);function a(n){L(s,r,o,a,i,"next",n)}function i(n){L(s,r,o,a,i,"throw",n)}a(void 0)}))}}function Z(n,t,e,r){return G.apply(this,arguments)}function G(){return(G=F(regeneratorRuntime.mark((function n(t,e,r,o){var s;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return s=["",t,e,r].join("/"),n.next=3,I.customRequest(s,Object.assign({method:"PROPPATCH",data:'<?xml version="1.0"?>\n\t\t\t<d:propertyupdate\n\t\t\t\txmlns:d="DAV:"\n\t\t\t\txmlns:oc="http://owncloud.org/ns">\n\t\t\t<d:set>\n\t\t\t\t<d:prop>\n\t\t\t\t\t<oc:message>'.concat(o,"</oc:message>\n\t\t\t\t</d:prop>\n\t\t\t</d:set>\n\t\t\t</d:propertyupdate>")}));case 3:return n.abrupt("return",n.sent);case 4:case"end":return n.stop()}}),n)})))).apply(this,arguments)}var W=r(26932);function H(n,t,e,r,o,s,a){try{var i=n[s](a),c=i.value}catch(n){return void e(n)}i.done?t(c):Promise.resolve(c).then(r,o)}function V(n){return function(){var t=this,e=arguments;return new Promise((function(r,o){var s=n.apply(t,e);function a(n){H(s,r,o,a,i,"next",n)}function i(n){H(s,r,o,a,i,"throw",n)}a(void 0)}))}}var Y={props:{id:{type:Number,default:null},message:{type:String,default:""},ressourceId:{type:[String,Number],required:!0}},data:function(){return{deleted:!1,editing:!1,loading:!1}},methods:{onEdit:function(){this.editing=!0},onEditCancel:function(){this.editing=!1,this.updateLocalMessage(this.message)},onEditComment:function(n){var e=this;return V(regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return e.loading=!0,r.prev=1,r.next=4,Z(e.commentsType,e.ressourceId,e.id,n);case 4:e.logger.debug("Comment edited",{commentsType:e.commentsType,ressourceId:e.ressourceId,id:e.id,message:n}),e.$emit("update:message",n),e.editing=!1,r.next=13;break;case 9:r.prev=9,r.t0=r.catch(1),(0,W.x2)(t("comments","An error occurred while trying to edit the comment")),console.error(r.t0);case 13:return r.prev=13,e.loading=!1,r.finish(13);case 16:case"end":return r.stop()}}),r,null,[[1,9,13,16]])})))()},onDeleteWithUndo:function(){var n=this;this.deleted=!0;var e=setTimeout(this.onDelete,W.et);(0,W.yl)(t("comments","Comment deleted"),(function(){clearTimeout(e),n.deleted=!1}))},onDelete:function(){var n=this;return V(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,q(n.commentsType,n.ressourceId,n.id);case 3:n.logger.debug("Comment deleted",{commentsType:n.commentsType,ressourceId:n.ressourceId,id:n.id}),n.$emit("delete",n.id),e.next=12;break;case 7:e.prev=7,e.t0=e.catch(0),(0,W.x2)(t("comments","An error occurred while trying to delete the comment")),console.error(e.t0),n.deleted=!1;case 12:case"end":return e.stop()}}),e,null,[[0,7]])})))()},onNewComment:function(n){var e=this;return V(regeneratorRuntime.mark((function r(){var o;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return e.loading=!0,r.prev=1,r.next=4,z(e.commentsType,e.ressourceId,n);case 4:o=r.sent,e.logger.debug("New comment posted",{commentsType:e.commentsType,ressourceId:e.ressourceId,newComment:o}),e.$emit("new",o),e.$emit("update:message",""),e.localMessage="",r.next=15;break;case 11:r.prev=11,r.t0=r.catch(1),(0,W.x2)(t("comments","An error occurred while trying to create the comment")),console.error(r.t0);case 15:return r.prev=15,e.loading=!1,r.finish(15);case 18:case"end":return r.stop()}}),r,null,[[1,11,15,18]])})))()}}},X={name:"Comment",components:{ActionButton:v(),Actions:C(),ActionSeparator:j(),Avatar:_(),Moment:R,RichContenteditable:x()},mixins:[O(),Y],inheritAttrs:!1,props:{actorDisplayName:{type:String,required:!0},actorId:{type:String,required:!0},creationDateTime:{type:String,default:null},editor:{type:Boolean,default:!1},autoComplete:{type:Function,required:!0}},data:function(){return{expanded:!1,localMessage:""}},computed:{isOwnComment:function(){return(0,i.getCurrentUser)().uid===this.actorId},renderedContent:function(){return this.isEmptyMessage?"":this.renderContent(this.localMessage)},isEmptyMessage:function(){return!this.localMessage||""===this.localMessage.trim()},timestamp:function(){return parseInt(h()(this.creationDateTime).format("x"),10)/1e3}},watch:{message:function(n){this.updateLocalMessage(n)}},beforeMount:function(){this.updateLocalMessage(this.message)},methods:{updateLocalMessage:function(n){this.localMessage=n.toString()},onSubmit:function(){var n=this;if(""!==this.localMessage.trim())return this.editor?(this.onNewComment(this.localMessage.trim()),void this.$nextTick((function(){n.$refs.editor.$el.focus()}))):void this.onEditComment(this.localMessage.trim())},onExpand:function(){this.expanded=!0}}},Q=r(93379),K=r.n(Q),J=r(7795),nn=r.n(J),tn=r(90569),en=r.n(tn),rn=r(3565),on=r.n(rn),sn=r(19216),an=r.n(sn),cn=r(44589),un=r.n(cn),mn=r(84820),ln={};ln.styleTagTransform=un(),ln.setAttributes=on(),ln.insert=en().bind(null,"head"),ln.domAPI=nn(),ln.insertStyleElement=an(),K()(mn.Z,ln),mn.Z&&mn.Z.locals&&mn.Z.locals;var dn=(0,E.Z)(X,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{directives:[{name:"show",rawName:"v-show",value:!n.deleted,expression:"!deleted"}],staticClass:"comment",class:{"comment--loading":n.loading}},[e("div",{staticClass:"comment__header"},[e("Avatar",{staticClass:"comment__avatar",attrs:{"display-name":n.actorDisplayName,user:n.actorId,size:32}}),n._v(" "),e("span",{staticClass:"comment__author"},[n._v(n._s(n.actorDisplayName))]),n._v(" "),n.isOwnComment&&n.id&&!n.loading?e("Actions",{staticClass:"comment__actions"},[n.editing?e("ActionButton",{attrs:{icon:"icon-close"},on:{click:n.onEditCancel}},[n._v("\n\t\t\t\t"+n._s(n.t("comments","Cancel edit"))+"\n\t\t\t")]):[e("ActionButton",{attrs:{"close-after-click":!0,icon:"icon-rename"},on:{click:n.onEdit}},[n._v("\n\t\t\t\t\t"+n._s(n.t("comments","Edit comment"))+"\n\t\t\t\t")]),n._v(" "),e("ActionSeparator"),n._v(" "),e("ActionButton",{attrs:{"close-after-click":!0,icon:"icon-delete"},on:{click:n.onDeleteWithUndo}},[n._v("\n\t\t\t\t\t"+n._s(n.t("comments","Delete comment"))+"\n\t\t\t\t")])]],2):n._e(),n._v(" "),n.id&&n.loading?e("div",{staticClass:"comment_loading icon-loading-small"}):n.creationDateTime?e("Moment",{staticClass:"comment__timestamp",attrs:{timestamp:n.timestamp}}):n._e()],1),n._v(" "),n.editor||n.editing?e("div",{staticClass:"comment__editor "},[e("RichContenteditable",{ref:"editor",attrs:{"auto-complete":n.autoComplete,contenteditable:!n.loading,value:n.localMessage},on:{"update:value":n.updateLocalMessage,submit:n.onSubmit}}),n._v(" "),e("input",{directives:[{name:"tooltip",rawName:"v-tooltip",value:n.t("comments","Post comment"),expression:"t('comments', 'Post comment')"}],staticClass:"comment__submit",class:n.loading?"icon-loading-small":"icon-confirm",attrs:{type:"submit",disabled:n.isEmptyMessage,value:""},on:{click:n.onSubmit}})],1):e("div",{staticClass:"comment__message",class:{"comment__message--expanded":n.expanded},domProps:{innerHTML:n._s(n.renderedContent)},on:{click:n.onExpand}})])}),[],!1,null,"4bced5e9",null).exports,pn=r(7582),fn=r(18635);function hn(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 gn(n){for(var t=1;t<arguments.length;t++){var e=null!=arguments[t]?arguments[t]:{};t%2?hn(Object(e),!0).forEach((function(t){vn(n,t,e[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(e)):hn(Object(e)).forEach((function(t){Object.defineProperty(n,t,Object.getOwnPropertyDescriptor(e,t))}))}return n}function vn(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}function An(n,t,e,r,o,s,a){try{var i=n[s](a),c=i.value}catch(n){return void e(n)}i.done?t(c):Promise.resolve(c).then(r,o)}function Cn(n){return function(){var t=this,e=arguments;return new Promise((function(r,o){var s=n.apply(t,e);function a(n){An(s,r,o,a,i,"next",n)}function i(n){An(s,r,o,a,i,"throw",n)}a(void 0)}))}}var bn=20;function jn(n){return yn.apply(this,arguments)}function yn(){return yn=Cn(regeneratorRuntime.mark((function n(t){var e,r,o,s,a,i=arguments;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e=t.commentsType,r=t.ressourceId,o=i.length>1&&void 0!==i[1]?i[1]:{},s=null,a=["",e,r].join("/"),n.next=6,I.customRequest(a,Object.assign({method:"REPORT",data:'<?xml version="1.0"?>\n\t\t\t<oc:filter-comments\n\t\t\t\txmlns:d="DAV:"\n\t\t\t\txmlns:oc="http://owncloud.org/ns"\n\t\t\t\txmlns:nc="http://nextcloud.org/ns"\n\t\t\t\txmlns:ocs="http://open-collaboration-services.org/ns">\n\t\t\t\t<oc:limit>'.concat(bn,"</oc:limit>\n\t\t\t\t<oc:offset>").concat(o.offset||0,"</oc:offset>\n\t\t\t</oc:filter-comments>")},o)).then((function(n){return s=n,n.data})).then(pn.parseXML).then((function(n){return _n(n,!0)})).then((function(n){return(0,fn.processResponsePayload)(s,n,!0)})).then((function(n){return n.data}));case 6:return n.abrupt("return",n.sent);case 7:case"end":return n.stop()}}),n)}))),yn.apply(this,arguments)}function _n(n){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],e=n.multistatus.response;return e.map((function(n){var e=n.propstat.prop,r=gn(gn({},e),{},{actorDisplayName:wn(e.actorDisplayName,2),message:wn(e.message,2)});return(0,pn.prepareFileFromProps)(r,r.id.toString(),t)}))}function wn(n){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,e=new DOMParser,r=n,o=0;o<t;o++)r=e.parseFromString(r,"text/html").documentElement.textContent;return r}function xn(n,t,e,r,o,s,a){try{var i=n[s](a),c=i.value}catch(n){return void e(n)}i.done?t(c):Promise.resolve(c).then(r,o)}var kn=function(n){var t=u.default.CancelToken.source(),e=function(){var e,r=(e=regeneratorRuntime.mark((function e(r,o){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",n(r,Object.assign({cancelToken:t.token},o)));case 1:case"end":return e.stop()}}),e)})),function(){var n=this,t=arguments;return new Promise((function(r,o){var s=e.apply(n,t);function a(n){xn(s,r,o,a,i,"next",n)}function i(n){xn(s,r,o,a,i,"throw",n)}a(void 0)}))});return function(n,t){return r.apply(this,arguments)}}();return{request:e,cancel:t.cancel}};function On(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 Pn(n,t,e,r,o,s,a){try{var i=n[s](a),c=i.value}catch(n){return void e(n)}i.done?t(c):Promise.resolve(c).then(r,o)}function En(n){return function(){var t=this,e=arguments;return new Promise((function(r,o){var s=n.apply(t,e);function a(n){Pn(s,r,o,a,i,"next",n)}function i(n){Pn(s,r,o,a,i,"throw",n)}a(void 0)}))}}l.default.use(m.default);var Rn={name:"Comments",components:{Comment:dn,EmptyContent:p()},data:function(){return{error:"",loading:!1,done:!1,ressourceId:null,offset:0,comments:[],cancelRequest:function(){},editorData:{actorDisplayName:(0,i.getCurrentUser)().displayName,actorId:(0,i.getCurrentUser)().uid,key:"editor"},Comment:dn}},computed:{hasComments:function(){return this.comments.length>0},isFirstLoading:function(){return this.loading&&0===this.offset}},methods:{update:function(n){var t=this;return En(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t.ressourceId=n,t.resetState(),t.getComments();case 3:case"end":return e.stop()}}),e)})))()},onScrollBottomReached:function(){this.error||this.done||this.loading||this.getComments()},genMentionsData:function(n){return Object.values(n).flat().reduce((function(n,t){return n[t.mentionId]={icon:"icon-user",id:t.mentionId,label:t.mentionDisplayName,source:"users",primary:(0,i.getCurrentUser)().uid===t.mentionId},n}),{})},getComments:function(){var n=this;return En(regeneratorRuntime.mark((function e(){var r,o,s,a,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.cancelRequest("cancel"),e.prev=1,n.loading=!0,n.error="",o=kn(jn),s=o.request,a=o.cancel,n.cancelRequest=a,e.next=8,s({commentsType:n.commentsType,ressourceId:n.ressourceId},{offset:n.offset});case 8:i=e.sent,n.logger.debug("Processed ".concat(i.length," comments"),{comments:i}),i.length<bn&&(n.done=!0),(r=n.comments).push.apply(r,function(n){if(Array.isArray(n))return On(n)}(c=i)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(c)||function(n,t){if(n){if("string"==typeof n)return On(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)?On(n,t):void 0}}(c)||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.")}()),n.offset+=bn,e.next=21;break;case 15:if(e.prev=15,e.t0=e.catch(1),"cancel"!==e.t0.message){e.next=19;break}return e.abrupt("return");case 19:n.error=t("comments","Unable to load the comments list"),console.error("Error loading the comments list",e.t0);case 21:return e.prev=21,n.loading=!1,e.finish(21);case 24:case"end":return e.stop()}var c}),e,null,[[1,15,21,24]])})))()},autoComplete:function(n,t){var e=this;return En(regeneratorRuntime.mark((function r(){var o;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,u.default.get((0,a.generateOcsUrl)("core/autocomplete/get"),{params:{search:n,itemType:"files",itemId:e.ressourceId,sorter:"commenters|share-recipients",limit:(0,c.loadState)("comments","maxAutoCompleteResults")}});case 2:return o=r.sent,r.abrupt("return",t(o.data.ocs.data));case 4:case"end":return r.stop()}}),r)})))()},onNewComment:function(n){this.comments.unshift(n)},onDelete:function(n){var t=this.comments.findIndex((function(t){return t.props.id===n}));t>-1?this.comments.splice(t,1):console.error("Could not find the deleted comment in the list",n)},resetState:function(){this.error="",this.loading=!1,this.done=!1,this.offset=0,this.comments=[]}}},Dn=r(56282),Tn={};Tn.styleTagTransform=un(),Tn.setAttributes=on(),Tn.insert=en().bind(null,"head"),Tn.domAPI=nn(),Tn.insertStyleElement=an(),K()(Dn.Z,Tn),Dn.Z&&Dn.Z.locals&&Dn.Z.locals;var In=(0,E.Z)(Rn,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"comments",class:{"icon-loading":n.isFirstLoading}},[e("Comment",n._b({staticClass:"comments__writer",attrs:{"auto-complete":n.autoComplete,editor:!0,"ressource-id":n.ressourceId},on:{new:n.onNewComment}},"Comment",n.editorData,!1)),n._v(" "),n.isFirstLoading?n._e():[!n.hasComments&&n.done?e("EmptyContent",{attrs:{icon:"icon-comment"}},[n._v("\n\t\t\t"+n._s(n.t("comments","No comments yet, start the conversation!"))+"\n\t\t")]):n._l(n.comments,(function(t){return e("Comment",n._b({key:t.props.id,staticClass:"comments__list",attrs:{"auto-complete":n.autoComplete,message:t.props.message,"ressource-id":n.ressourceId,"user-data":n.genMentionsData(t.props.mentions)},on:{"update:message":function(e){return n.$set(t.props,"message",e)},delete:n.onDelete}},"Comment",t.props,!1))})),n._v(" "),n.loading&&!n.isFirstLoading?e("div",{staticClass:"comments__info icon-loading"}):n.hasComments&&n.done?e("div",{staticClass:"comments__info"},[n._v("\n\t\t\t"+n._s(n.t("comments","No more messages"))+"\n\t\t")]):n.error?e("EmptyContent",{staticClass:"comments__error",attrs:{icon:"icon-error"},scopedSlots:n._u([{key:"desc",fn:function(){return[e("button",{attrs:{icon:"icon-history"},on:{click:n.getComments}},[n._v("\n\t\t\t\t\t"+n._s(n.t("comments","Retry"))+"\n\t\t\t\t")])]},proxy:!0}],null,!1,1182580137)},[n._v("\n\t\t\t"+n._s(n.error)+"\n\t\t\t")]):n._e()]],2)}),[],!1,null,"3808dce0",null).exports;function Sn(n,t){for(var e=0;e<t.length;e++){var r=t[e];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}function Mn(n,t,e){return t&&Sn(n.prototype,t),e&&Sn(n,e),Object.defineProperty(n,"prototype",{writable:!1}),n}function zn(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function")}var Nn=(0,o.IY)().setApp("comments").detectUser().build();l.default.mixin({data:function(){return{logger:Nn}},methods:{t:s.translate,n:s.translatePlural}});var Bn=Mn((function n(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"files",e=arguments.length>1?arguments[1]:void 0;zn(this,n),l.default.mixin({data:function(){return{commentsType:t}}});var r=l.default.extend(In);return new r(e)}));window.OCA&&!window.OCA.Comments&&Object.assign(window.OCA,{Comments:{}}),Object.assign(window.OCA.Comments,{View:Bn}),console.debug("OCA.Comments.View initialized")},84820:function(n,t,e){"use strict";var r=e(87537),o=e.n(r),s=e(23645),a=e.n(s)()(o());a.push([n.id,".comment[data-v-4bced5e9]{position:relative;padding:10px 0 15px}.comment__header[data-v-4bced5e9]{display:flex;align-items:center;min-height:44px;padding:5px 0}.comment__author[data-v-4bced5e9],.comment__actions[data-v-4bced5e9]{margin-left:10px !important}.comment__author[data-v-4bced5e9]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--color-text-maxcontrast)}.comment_loading[data-v-4bced5e9],.comment__timestamp[data-v-4bced5e9]{margin-left:auto;color:var(--color-text-maxcontrast)}.comment__editor[data-v-4bced5e9],.comment__message[data-v-4bced5e9]{position:relative;padding-left:42px}.comment__submit[data-v-4bced5e9]{position:absolute;right:0;bottom:0;width:44px;height:44px;margin:1px;cursor:pointer;opacity:.7;border:none;background-color:rgba(0,0,0,0) !important}.comment__submit[data-v-4bced5e9]:disabled{cursor:not-allowed;opacity:.5}.comment__submit[data-v-4bced5e9]:focus,.comment__submit[data-v-4bced5e9]:hover{opacity:1}.comment__message[data-v-4bced5e9]{white-space:pre-wrap;word-break:break-word;max-height:70px;overflow:hidden}.comment__message--expanded[data-v-4bced5e9]{max-height:none;overflow:visible}.rich-contenteditable__input[data-v-4bced5e9]{min-height:44px;margin:0;padding:10px}","",{version:3,sources:["webpack://./apps/comments/src/components/Comment.vue"],names:[],mappings:"AA0PA,0BACC,iBAAA,CACA,mBAAA,CAEA,kCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,aAAA,CAGD,qEAEC,2BAAA,CAGD,kCACC,eAAA,CACA,kBAAA,CACA,sBAAA,CACA,mCAAA,CAGD,uEAEC,gBAAA,CACA,mCAAA,CAGD,qEAEC,iBAAA,CAEA,iBAAA,CAGD,kCACC,iBAAA,CACA,OAAA,CACA,QAAA,CACA,UAAA,CACA,WAAA,CAEA,UAAA,CACA,cAAA,CACA,UAAA,CACA,WAAA,CACA,yCAAA,CAEA,2CACC,kBAAA,CACA,UAAA,CAGD,gFAEC,SAAA,CAIF,mCACC,oBAAA,CACA,qBAAA,CACA,eAAA,CACA,eAAA,CACA,6CACC,eAAA,CACA,gBAAA,CAKH,8CACC,eAAA,CACA,QAAA,CACA,YA7EiB",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n@use "sass:math";\n\n$comment-padding: 10px;\n\n.comment {\n\tposition: relative;\n\tpadding: $comment-padding 0 $comment-padding * 1.5;\n\n\t&__header {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tmin-height: 44px;\n\t\tpadding: math.div($comment-padding, 2) 0;\n\t}\n\n\t&__author,\n\t&__actions {\n\t\tmargin-left: $comment-padding !important;\n\t}\n\n\t&__author {\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&_loading,\n\t&__timestamp {\n\t\tmargin-left: auto;\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&__editor,\n\t&__message {\n\t\tposition: relative;\n\t\t// Avatar size, align with author name\n\t\tpadding-left: 32px + $comment-padding;\n\t}\n\n\t&__submit {\n\t\tposition: absolute;\n\t\tright: 0;\n\t\tbottom: 0;\n\t\twidth: 44px;\n\t\theight: 44px;\n\t\t// Align with input border\n\t\tmargin: 1px;\n\t\tcursor: pointer;\n\t\topacity: .7;\n\t\tborder: none;\n\t\tbackground-color: transparent !important;\n\n\t\t&:disabled {\n\t\t\tcursor: not-allowed;\n\t\t\topacity: .5;\n\t\t}\n\n\t\t&:focus,\n\t\t&:hover {\n\t\t\topacity: 1;\n\t\t}\n\t}\n\n\t&__message {\n\t\twhite-space: pre-wrap;\n\t\tword-break: break-word;\n\t\tmax-height: 70px;\n\t\toverflow: hidden;\n\t\t&--expanded {\n\t\t\tmax-height: none;\n\t\t\toverflow: visible;\n\t\t}\n\t}\n}\n\n.rich-contenteditable__input {\n\tmin-height: 44px;\n\tmargin: 0;\n\tpadding: $comment-padding;\n}\n\n'],sourceRoot:""}]),t.Z=a},56282:function(n,t,e){"use strict";var r=e(87537),o=e.n(r),s=e(23645),a=e.n(s)()(o());a.push([n.id,".comments__error[data-v-3808dce0]{margin-top:0}.comments__info[data-v-3808dce0]{height:60px;color:var(--color-text-maxcontrast);text-align:center;line-height:60px}","",{version:3,sources:["webpack://./apps/comments/src/views/Comments.vue"],names:[],mappings:"AAsRC,kCACC,YAAA,CAGD,iCACC,WAAA,CACA,mCAAA,CACA,iBAAA,CACA,gBAAA",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.comments {\n\t// Do not add emptycontent top margin\n\t&__error{\n\t\tmargin-top: 0;\n\t}\n\n\t&__info {\n\t\theight: 60px;\n\t\tcolor: var(--color-text-maxcontrast);\n\t\ttext-align: center;\n\t\tline-height: 60px;\n\t}\n}\n"],sourceRoot:""}]),t.Z=a},69862:function(){},40964:function(){}},r={};function o(n){var t=r[n];if(void 0!==t)return t.exports;var s=r[n]={id:n,loaded:!1,exports:{}};return e[n].call(s.exports,s,s.exports,o),s.loaded=!0,s.exports}o.m=e,o.amdD=function(){throw new Error("define cannot be used indirect")},o.amdO={},n=[],o.O=function(t,e,r,s){if(!e){var a=1/0;for(m=0;m<n.length;m++){e=n[m][0],r=n[m][1],s=n[m][2];for(var i=!0,c=0;c<e.length;c++)(!1&s||a>=s)&&Object.keys(o.O).every((function(n){return o.O[n](e[c])}))?e.splice(c--,1):(i=!1,s<a&&(a=s));if(i){n.splice(m--,1);var u=r();void 0!==u&&(t=u)}}return t}s=s||0;for(var m=n.length;m>0&&n[m-1][2]>s;m--)n[m]=n[m-1];n[m]=[e,r,s]},o.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return o.d(t,{a:t}),t},o.d=function(n,t){for(var e in t)o.o(t,e)&&!o.o(n,e)&&Object.defineProperty(n,e,{enumerable:!0,get:t[e]})},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),o.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},o.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},o.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n},o.j=6335,function(){o.b=document.baseURI||self.location.href;var n={6335:0};o.O.j=function(t){return 0===n[t]};var t=function(t,e){var r,s,a=e[0],i=e[1],c=e[2],u=0;if(a.some((function(t){return 0!==n[t]}))){for(r in i)o.o(i,r)&&(o.m[r]=i[r]);if(c)var m=c(o)}for(t&&t(e);u<a.length;u++)s=a[u],o.o(n,s)&&n[s]&&n[s][0](),n[s]=0;return o.O(m)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(t.bind(null,0)),e.push=t.bind(null,e.push.bind(e))}(),o.nc=void 0;var s=o.O(void 0,[7874],(function(){return o(7346)}));s=o.O(s)}();
+//# sourceMappingURL=comments-comments-app.js.map?v=3285e87b6453b8f08a7c \ No newline at end of file
diff --git a/dist/comments-comments-app.js.map b/dist/comments-comments-app.js.map
index c6fa281b1e7..fd029e7898e 100644
--- a/dist/comments-comments-app.js.map
+++ b/dist/comments-comments-app.js.map
@@ -1 +1 @@
-{"version":3,"file":"comments-comments-app.js?v=44c3a80f690b1bc821e6","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/node_modules/@nextcloud/moment/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/apps/comments/src/components/Moment.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/comments/src/components/Moment.vue","webpack://nextcloud/./apps/comments/src/components/Moment.vue?9b20","webpack:///nextcloud/apps/comments/src/components/Moment.vue?vue&type=template&id=57999be6&","webpack:///nextcloud/apps/comments/src/utils/davUtils.js","webpack:///nextcloud/apps/comments/src/services/DavClient.js","webpack:///nextcloud/apps/comments/src/services/NewComment.js","webpack:///nextcloud/apps/comments/src/services/DeleteComment.js","webpack:///nextcloud/apps/comments/src/services/EditComment.js","webpack:///nextcloud/apps/comments/src/mixins/CommentMixin.js","webpack:///nextcloud/apps/comments/src/components/Comment.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/comments/src/components/Comment.vue","webpack://nextcloud/./apps/comments/src/components/Comment.vue?1ef0","webpack://nextcloud/./apps/comments/src/components/Comment.vue?7f26","webpack:///nextcloud/apps/comments/src/components/Comment.vue?vue&type=template&id=4bced5e9&scoped=true&","webpack:///nextcloud/apps/comments/src/services/GetComments.js","webpack:///nextcloud/apps/comments/src/utils/cancelableRequest.js","webpack:///nextcloud/apps/comments/src/views/Comments.vue","webpack:///nextcloud/apps/comments/src/views/Comments.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/comments/src/views/Comments.vue?c8a6","webpack://nextcloud/./apps/comments/src/views/Comments.vue?f45b","webpack:///nextcloud/apps/comments/src/views/Comments.vue?vue&type=template&id=3808dce0&scoped=true&","webpack:///nextcloud/apps/comments/src/services/CommentsInstance.js","webpack:///nextcloud/apps/comments/src/comments-app.js","webpack:///nextcloud/apps/comments/src/components/Comment.vue?vue&type=style&index=0&id=4bced5e9&lang=scss&scoped=true&","webpack:///nextcloud/apps/comments/src/views/Comments.vue?vue&type=style&index=0&id=3808dce0&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};","var map = {\n\t\"./af\": 36026,\n\t\"./af.js\": 36026,\n\t\"./ar\": 28093,\n\t\"./ar-dz\": 41943,\n\t\"./ar-dz.js\": 41943,\n\t\"./ar-kw\": 23969,\n\t\"./ar-kw.js\": 23969,\n\t\"./ar-ly\": 40594,\n\t\"./ar-ly.js\": 40594,\n\t\"./ar-ma\": 18369,\n\t\"./ar-ma.js\": 18369,\n\t\"./ar-sa\": 32579,\n\t\"./ar-sa.js\": 32579,\n\t\"./ar-tn\": 76442,\n\t\"./ar-tn.js\": 76442,\n\t\"./ar.js\": 28093,\n\t\"./az\": 86425,\n\t\"./az.js\": 86425,\n\t\"./be\": 22004,\n\t\"./be.js\": 22004,\n\t\"./bg\": 42982,\n\t\"./bg.js\": 42982,\n\t\"./bm\": 21067,\n\t\"./bm.js\": 21067,\n\t\"./bn\": 8366,\n\t\"./bn-bd\": 63837,\n\t\"./bn-bd.js\": 63837,\n\t\"./bn.js\": 8366,\n\t\"./bo\": 95040,\n\t\"./bo.js\": 95040,\n\t\"./br\": 521,\n\t\"./br.js\": 521,\n\t\"./bs\": 83242,\n\t\"./bs.js\": 83242,\n\t\"./ca\": 73046,\n\t\"./ca.js\": 73046,\n\t\"./cs\": 25794,\n\t\"./cs.js\": 25794,\n\t\"./cv\": 28231,\n\t\"./cv.js\": 28231,\n\t\"./cy\": 10927,\n\t\"./cy.js\": 10927,\n\t\"./da\": 42832,\n\t\"./da.js\": 42832,\n\t\"./de\": 29415,\n\t\"./de-at\": 3331,\n\t\"./de-at.js\": 3331,\n\t\"./de-ch\": 45524,\n\t\"./de-ch.js\": 45524,\n\t\"./de.js\": 29415,\n\t\"./dv\": 44700,\n\t\"./dv.js\": 44700,\n\t\"./el\": 88752,\n\t\"./el.js\": 88752,\n\t\"./en-au\": 90444,\n\t\"./en-au.js\": 90444,\n\t\"./en-ca\": 65959,\n\t\"./en-ca.js\": 65959,\n\t\"./en-gb\": 62762,\n\t\"./en-gb.js\": 62762,\n\t\"./en-ie\": 40909,\n\t\"./en-ie.js\": 40909,\n\t\"./en-il\": 79909,\n\t\"./en-il.js\": 79909,\n\t\"./en-in\": 87942,\n\t\"./en-in.js\": 87942,\n\t\"./en-nz\": 75200,\n\t\"./en-nz.js\": 75200,\n\t\"./en-sg\": 21415,\n\t\"./en-sg.js\": 21415,\n\t\"./eo\": 27447,\n\t\"./eo.js\": 27447,\n\t\"./es\": 86756,\n\t\"./es-do\": 47049,\n\t\"./es-do.js\": 47049,\n\t\"./es-mx\": 15915,\n\t\"./es-mx.js\": 15915,\n\t\"./es-us\": 57133,\n\t\"./es-us.js\": 57133,\n\t\"./es.js\": 86756,\n\t\"./et\": 72182,\n\t\"./et.js\": 72182,\n\t\"./eu\": 14419,\n\t\"./eu.js\": 14419,\n\t\"./fa\": 2916,\n\t\"./fa.js\": 2916,\n\t\"./fi\": 49964,\n\t\"./fi.js\": 49964,\n\t\"./fil\": 16448,\n\t\"./fil.js\": 16448,\n\t\"./fo\": 26094,\n\t\"./fo.js\": 26094,\n\t\"./fr\": 35833,\n\t\"./fr-ca\": 56994,\n\t\"./fr-ca.js\": 56994,\n\t\"./fr-ch\": 2740,\n\t\"./fr-ch.js\": 2740,\n\t\"./fr.js\": 35833,\n\t\"./fy\": 69542,\n\t\"./fy.js\": 69542,\n\t\"./ga\": 93264,\n\t\"./ga.js\": 93264,\n\t\"./gd\": 77457,\n\t\"./gd.js\": 77457,\n\t\"./gl\": 83043,\n\t\"./gl.js\": 83043,\n\t\"./gom-deva\": 24034,\n\t\"./gom-deva.js\": 24034,\n\t\"./gom-latn\": 28379,\n\t\"./gom-latn.js\": 28379,\n\t\"./gu\": 406,\n\t\"./gu.js\": 406,\n\t\"./he\": 73219,\n\t\"./he.js\": 73219,\n\t\"./hi\": 99834,\n\t\"./hi.js\": 99834,\n\t\"./hr\": 28754,\n\t\"./hr.js\": 28754,\n\t\"./hu\": 93945,\n\t\"./hu.js\": 93945,\n\t\"./hy-am\": 81319,\n\t\"./hy-am.js\": 81319,\n\t\"./id\": 24875,\n\t\"./id.js\": 24875,\n\t\"./is\": 23724,\n\t\"./is.js\": 23724,\n\t\"./it\": 79906,\n\t\"./it-ch\": 34303,\n\t\"./it-ch.js\": 34303,\n\t\"./it.js\": 79906,\n\t\"./ja\": 77105,\n\t\"./ja.js\": 77105,\n\t\"./jv\": 15026,\n\t\"./jv.js\": 15026,\n\t\"./ka\": 67416,\n\t\"./ka.js\": 67416,\n\t\"./kk\": 79734,\n\t\"./kk.js\": 79734,\n\t\"./km\": 60757,\n\t\"./km.js\": 60757,\n\t\"./kn\": 58369,\n\t\"./kn.js\": 58369,\n\t\"./ko\": 77687,\n\t\"./ko.js\": 77687,\n\t\"./ku\": 95544,\n\t\"./ku.js\": 95544,\n\t\"./ky\": 85431,\n\t\"./ky.js\": 85431,\n\t\"./lb\": 13613,\n\t\"./lb.js\": 13613,\n\t\"./lo\": 34252,\n\t\"./lo.js\": 34252,\n\t\"./lt\": 84619,\n\t\"./lt.js\": 84619,\n\t\"./lv\": 93760,\n\t\"./lv.js\": 93760,\n\t\"./me\": 93393,\n\t\"./me.js\": 93393,\n\t\"./mi\": 12369,\n\t\"./mi.js\": 12369,\n\t\"./mk\": 48664,\n\t\"./mk.js\": 48664,\n\t\"./ml\": 23099,\n\t\"./ml.js\": 23099,\n\t\"./mn\": 98539,\n\t\"./mn.js\": 98539,\n\t\"./mr\": 778,\n\t\"./mr.js\": 778,\n\t\"./ms\": 39970,\n\t\"./ms-my\": 82625,\n\t\"./ms-my.js\": 82625,\n\t\"./ms.js\": 39970,\n\t\"./mt\": 15714,\n\t\"./mt.js\": 15714,\n\t\"./my\": 53055,\n\t\"./my.js\": 53055,\n\t\"./nb\": 73945,\n\t\"./nb.js\": 73945,\n\t\"./ne\": 63645,\n\t\"./ne.js\": 63645,\n\t\"./nl\": 4829,\n\t\"./nl-be\": 12823,\n\t\"./nl-be.js\": 12823,\n\t\"./nl.js\": 4829,\n\t\"./nn\": 23756,\n\t\"./nn.js\": 23756,\n\t\"./oc-lnc\": 41228,\n\t\"./oc-lnc.js\": 41228,\n\t\"./pa-in\": 97877,\n\t\"./pa-in.js\": 97877,\n\t\"./pl\": 53066,\n\t\"./pl.js\": 53066,\n\t\"./pt\": 28677,\n\t\"./pt-br\": 81592,\n\t\"./pt-br.js\": 81592,\n\t\"./pt.js\": 28677,\n\t\"./ro\": 32722,\n\t\"./ro.js\": 32722,\n\t\"./ru\": 59138,\n\t\"./ru.js\": 59138,\n\t\"./sd\": 32568,\n\t\"./sd.js\": 32568,\n\t\"./se\": 49753,\n\t\"./se.js\": 49753,\n\t\"./si\": 58024,\n\t\"./si.js\": 58024,\n\t\"./sk\": 31058,\n\t\"./sk.js\": 31058,\n\t\"./sl\": 43452,\n\t\"./sl.js\": 43452,\n\t\"./sq\": 2795,\n\t\"./sq.js\": 2795,\n\t\"./sr\": 26976,\n\t\"./sr-cyrl\": 38819,\n\t\"./sr-cyrl.js\": 38819,\n\t\"./sr.js\": 26976,\n\t\"./ss\": 7467,\n\t\"./ss.js\": 7467,\n\t\"./sv\": 42787,\n\t\"./sv.js\": 42787,\n\t\"./sw\": 80298,\n\t\"./sw.js\": 80298,\n\t\"./ta\": 57532,\n\t\"./ta.js\": 57532,\n\t\"./te\": 76076,\n\t\"./te.js\": 76076,\n\t\"./tet\": 40452,\n\t\"./tet.js\": 40452,\n\t\"./tg\": 64794,\n\t\"./tg.js\": 64794,\n\t\"./th\": 48245,\n\t\"./th.js\": 48245,\n\t\"./tk\": 8870,\n\t\"./tk.js\": 8870,\n\t\"./tl-ph\": 36056,\n\t\"./tl-ph.js\": 36056,\n\t\"./tlh\": 15249,\n\t\"./tlh.js\": 15249,\n\t\"./tr\": 22053,\n\t\"./tr.js\": 22053,\n\t\"./tzl\": 39871,\n\t\"./tzl.js\": 39871,\n\t\"./tzm\": 39574,\n\t\"./tzm-latn\": 19210,\n\t\"./tzm-latn.js\": 19210,\n\t\"./tzm.js\": 39574,\n\t\"./ug-cn\": 91532,\n\t\"./ug-cn.js\": 91532,\n\t\"./uk\": 11432,\n\t\"./uk.js\": 11432,\n\t\"./ur\": 88523,\n\t\"./ur.js\": 88523,\n\t\"./uz\": 54958,\n\t\"./uz-latn\": 68735,\n\t\"./uz-latn.js\": 68735,\n\t\"./uz.js\": 54958,\n\t\"./vi\": 83398,\n\t\"./vi.js\": 83398,\n\t\"./x-pseudo\": 56665,\n\t\"./x-pseudo.js\": 56665,\n\t\"./yo\": 11642,\n\t\"./yo.js\": 11642,\n\t\"./zh-cn\": 5462,\n\t\"./zh-cn.js\": 5462,\n\t\"./zh-hk\": 92530,\n\t\"./zh-hk.js\": 92530,\n\t\"./zh-mo\": 41650,\n\t\"./zh-mo.js\": 41650,\n\t\"./zh-tw\": 97333,\n\t\"./zh-tw.js\": 97333\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 93365;","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Moment.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!./Moment.vue?vue&type=script&lang=js&\"","<!-- TODO: Move to vue components -->\n\n<template>\n\t<span class=\"live-relative-timestamp\" :data-timestamp=\"timestamp * 1000\" :title=\"title\">{{ formatted }}</span>\n</template>\n\n<script>\nimport moment from '@nextcloud/moment'\n\nexport default {\n\tname: 'Moment',\n\tprops: {\n\t\ttimestamp: {\n\t\t\ttype: Number,\n\t\t\trequired: true,\n\t\t},\n\t\tformat: {\n\t\t\ttype: String,\n\t\t\tdefault: 'LLL',\n\t\t},\n\t},\n\tcomputed: {\n\t\ttitle() {\n\t\t\treturn moment.unix(this.timestamp).format(this.format)\n\t\t},\n\t\tformatted() {\n\t\t\treturn moment.unix(this.timestamp).fromNow()\n\t\t},\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./Moment.vue?vue&type=template&id=57999be6&\"\nimport script from \"./Moment.vue?vue&type=script&lang=js&\"\nexport * from \"./Moment.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"live-relative-timestamp\",attrs:{\"data-timestamp\":_vm.timestamp * 1000,\"title\":_vm.title}},[_vm._v(_vm._s(_vm.formatted))])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport { generateRemoteUrl } from '@nextcloud/router'\n\nconst getRootPath = function() {\n\treturn generateRemoteUrl('dav/comments')\n}\n\nexport { getRootPath }\n","/**\n * @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport { createClient, getPatcher } from 'webdav'\nimport axios from '@nextcloud/axios'\n\nimport { getRootPath } from '../utils/davUtils'\n\n// Add this so the server knows it is an request from the browser\naxios.defaults.headers['X-Requested-With'] = 'XMLHttpRequest'\n\n// force our axios\nconst patcher = getPatcher()\npatcher.patch('request', axios)\n\n// init webdav client\nconst client = createClient(getRootPath())\n\nexport default client\n","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getRootPath } from '../utils/davUtils'\nimport axios from '@nextcloud/axios'\nimport client from './DavClient'\n\n/**\n * Retrieve the comments list\n *\n * @param {string} commentsType the ressource type\n * @param {number} ressourceId the ressource ID\n * @param {string} message the message\n * @return {object} the new comment\n */\nexport default async function(commentsType, ressourceId, message) {\n\tconst ressourcePath = ['', commentsType, ressourceId].join('/')\n\n\tconst response = await axios.post(getRootPath() + ressourcePath, {\n\t\tactorDisplayName: getCurrentUser().displayName,\n\t\tactorId: getCurrentUser().uid,\n\t\tactorType: 'users',\n\t\tcreationDateTime: (new Date()).toUTCString(),\n\t\tmessage,\n\t\tobjectType: 'files',\n\t\tverb: 'comment',\n\t})\n\n\t// Retrieve comment id from ressource location\n\tconst commentId = parseInt(response.headers['content-location'].split('/').pop())\n\tconst commentPath = ressourcePath + '/' + commentId\n\n\t// Fetch newly created comment data\n\tconst comment = await client.stat(commentPath, {\n\t\tdetails: true,\n\t})\n\n\treturn comment.data\n}\n","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport client from './DavClient'\n\n/**\n * Delete a comment\n *\n * @param {string} commentsType the ressource type\n * @param {number} ressourceId the ressource ID\n * @param {number} commentId the comment iD\n */\nexport default async function(commentsType, ressourceId, commentId) {\n\tconst commentPath = ['', commentsType, ressourceId, commentId].join('/')\n\n\t// Fetch newly created comment data\n\tawait client.deleteFile(commentPath)\n}\n","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport client from './DavClient'\n\n/**\n * Edit an existing comment\n *\n * @param {string} commentsType the ressource type\n * @param {number} ressourceId the ressource ID\n * @param {number} commentId the comment iD\n * @param {string} message the message content\n */\nexport default async function(commentsType, ressourceId, commentId, message) {\n\tconst commentPath = ['', commentsType, ressourceId, commentId].join('/')\n\n\treturn await client.customRequest(commentPath, Object.assign({\n\t\tmethod: 'PROPPATCH',\n\t\tdata: `<?xml version=\"1.0\"?>\n\t\t\t<d:propertyupdate\n\t\t\t\txmlns:d=\"DAV:\"\n\t\t\t\txmlns:oc=\"http://owncloud.org/ns\">\n\t\t\t<d:set>\n\t\t\t\t<d:prop>\n\t\t\t\t\t<oc:message>${message}</oc:message>\n\t\t\t\t</d:prop>\n\t\t\t</d:set>\n\t\t\t</d:propertyupdate>`,\n\t}))\n}\n","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport NewComment from '../services/NewComment'\nimport DeleteComment from '../services/DeleteComment'\nimport EditComment from '../services/EditComment'\nimport { showError, showUndo, TOAST_UNDO_TIMEOUT } from '@nextcloud/dialogs'\n\nexport default {\n\tprops: {\n\t\tid: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t\tmessage: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tressourceId: {\n\t\t\ttype: [String, Number],\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tdeleted: false,\n\t\t\tediting: false,\n\t\t\tloading: false,\n\t\t}\n\t},\n\n\tmethods: {\n\t\t// EDITION\n\t\tonEdit() {\n\t\t\tthis.editing = true\n\t\t},\n\t\tonEditCancel() {\n\t\t\tthis.editing = false\n\t\t\t// Restore original value\n\t\t\tthis.updateLocalMessage(this.message)\n\t\t},\n\t\tasync onEditComment(message) {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tawait EditComment(this.commentsType, this.ressourceId, this.id, message)\n\t\t\t\tthis.logger.debug('Comment edited', { commentsType: this.commentsType, ressourceId: this.ressourceId, id: this.id, message })\n\t\t\t\tthis.$emit('update:message', message)\n\t\t\t\tthis.editing = false\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to edit the comment'))\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t// DELETION\n\t\tonDeleteWithUndo() {\n\t\t\tthis.deleted = true\n\t\t\tconst timeOutDelete = setTimeout(this.onDelete, TOAST_UNDO_TIMEOUT)\n\t\t\tshowUndo(t('comments', 'Comment deleted'), () => {\n\t\t\t\tclearTimeout(timeOutDelete)\n\t\t\t\tthis.deleted = false\n\t\t\t})\n\t\t},\n\t\tasync onDelete() {\n\t\t\ttry {\n\t\t\t\tawait DeleteComment(this.commentsType, this.ressourceId, this.id)\n\t\t\t\tthis.logger.debug('Comment deleted', { commentsType: this.commentsType, ressourceId: this.ressourceId, id: this.id })\n\t\t\t\tthis.$emit('delete', this.id)\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to delete the comment'))\n\t\t\t\tconsole.error(error)\n\t\t\t\tthis.deleted = false\n\t\t\t}\n\t\t},\n\n\t\t// CREATION\n\t\tasync onNewComment(message) {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tconst newComment = await NewComment(this.commentsType, this.ressourceId, message)\n\t\t\t\tthis.logger.debug('New comment posted', { commentsType: this.commentsType, ressourceId: this.ressourceId, newComment })\n\t\t\t\tthis.$emit('new', newComment)\n\n\t\t\t\t// Clear old content\n\t\t\t\tthis.$emit('update:message', '')\n\t\t\t\tthis.localMessage = ''\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to create the comment'))\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comment.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!./Comment.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n<template>\n\t<div v-show=\"!deleted\"\n\t\t:class=\"{'comment--loading': loading}\"\n\t\tclass=\"comment\">\n\t\t<!-- Comment header toolbar -->\n\t\t<div class=\"comment__header\">\n\t\t\t<!-- Author -->\n\t\t\t<Avatar class=\"comment__avatar\"\n\t\t\t\t:display-name=\"actorDisplayName\"\n\t\t\t\t:user=\"actorId\"\n\t\t\t\t:size=\"32\" />\n\t\t\t<span class=\"comment__author\">{{ actorDisplayName }}</span>\n\n\t\t\t<!-- Comment actions,\n\t\t\t\tshow if we have a message id and current user is author -->\n\t\t\t<Actions v-if=\"isOwnComment && id && !loading\" class=\"comment__actions\">\n\t\t\t\t<template v-if=\"!editing\">\n\t\t\t\t\t<ActionButton :close-after-click=\"true\"\n\t\t\t\t\t\ticon=\"icon-rename\"\n\t\t\t\t\t\t@click=\"onEdit\">\n\t\t\t\t\t\t{{ t('comments', 'Edit comment') }}\n\t\t\t\t\t</ActionButton>\n\t\t\t\t\t<ActionSeparator />\n\t\t\t\t\t<ActionButton :close-after-click=\"true\"\n\t\t\t\t\t\ticon=\"icon-delete\"\n\t\t\t\t\t\t@click=\"onDeleteWithUndo\">\n\t\t\t\t\t\t{{ t('comments', 'Delete comment') }}\n\t\t\t\t\t</ActionButton>\n\t\t\t\t</template>\n\n\t\t\t\t<ActionButton v-else\n\t\t\t\t\ticon=\"icon-close\"\n\t\t\t\t\t@click=\"onEditCancel\">\n\t\t\t\t\t{{ t('comments', 'Cancel edit') }}\n\t\t\t\t</ActionButton>\n\t\t\t</Actions>\n\n\t\t\t<!-- Show loading if we're editing or deleting, not on new ones -->\n\t\t\t<div v-if=\"id && loading\" class=\"comment_loading icon-loading-small\" />\n\n\t\t\t<!-- Relative time to the comment creation -->\n\t\t\t<Moment v-else-if=\"creationDateTime\" class=\"comment__timestamp\" :timestamp=\"timestamp\" />\n\t\t</div>\n\n\t\t<!-- Message editor -->\n\t\t<div v-if=\"editor || editing\" class=\"comment__editor \">\n\t\t\t<RichContenteditable ref=\"editor\"\n\t\t\t\t:auto-complete=\"autoComplete\"\n\t\t\t\t:contenteditable=\"!loading\"\n\t\t\t\t:value=\"localMessage\"\n\t\t\t\t@update:value=\"updateLocalMessage\"\n\t\t\t\t@submit=\"onSubmit\" />\n\t\t\t<input v-tooltip=\"t('comments', 'Post comment')\"\n\t\t\t\t:class=\"loading ? 'icon-loading-small' :'icon-confirm'\"\n\t\t\t\tclass=\"comment__submit\"\n\t\t\t\ttype=\"submit\"\n\t\t\t\t:disabled=\"isEmptyMessage\"\n\t\t\t\tvalue=\"\"\n\t\t\t\t@click=\"onSubmit\">\n\t\t</div>\n\n\t\t<!-- Message content -->\n\t\t<!-- The html is escaped and sanitized before rendering -->\n\t\t<!-- eslint-disable-next-line vue/no-v-html-->\n\t\t<div v-else\n\t\t\t:class=\"{'comment__message--expanded': expanded}\"\n\t\t\tclass=\"comment__message\"\n\t\t\t@click=\"onExpand\"\n\t\t\tv-html=\"renderedContent\" />\n\t</div>\n</template>\n\n<script>\nimport { getCurrentUser } from '@nextcloud/auth'\nimport moment from '@nextcloud/moment'\n\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport ActionSeparator from '@nextcloud/vue/dist/Components/ActionSeparator'\nimport Avatar from '@nextcloud/vue/dist/Components/Avatar'\nimport RichContenteditable from '@nextcloud/vue/dist/Components/RichContenteditable'\nimport RichEditorMixin from '@nextcloud/vue/dist/Mixins/richEditor'\n\nimport Moment from './Moment'\nimport CommentMixin from '../mixins/CommentMixin'\n\nexport default {\n\tname: 'Comment',\n\n\tcomponents: {\n\t\tActionButton,\n\t\tActions,\n\t\tActionSeparator,\n\t\tAvatar,\n\t\tMoment,\n\t\tRichContenteditable,\n\t},\n\tmixins: [RichEditorMixin, CommentMixin],\n\n\tinheritAttrs: false,\n\n\tprops: {\n\t\tactorDisplayName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tactorId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tcreationDateTime: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Force the editor display\n\t\t */\n\t\teditor: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Provide the autocompletion data\n\t\t */\n\t\tautoComplete: {\n\t\t\ttype: Function,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\texpanded: false,\n\t\t\t// Only change data locally and update the original\n\t\t\t// parent data when the request is sent and resolved\n\t\t\tlocalMessage: '',\n\t\t}\n\t},\n\n\tcomputed: {\n\n\t\t/**\n\t\t * Is the current user the author of this comment\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisOwnComment() {\n\t\t\treturn getCurrentUser().uid === this.actorId\n\t\t},\n\n\t\t/**\n\t\t * Rendered content as html string\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\trenderedContent() {\n\t\t\tif (this.isEmptyMessage) {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\treturn this.renderContent(this.localMessage)\n\t\t},\n\n\t\tisEmptyMessage() {\n\t\t\treturn !this.localMessage || this.localMessage.trim() === ''\n\t\t},\n\n\t\ttimestamp() {\n\t\t\t// seconds, not milliseconds\n\t\t\treturn parseInt(moment(this.creationDateTime).format('x'), 10) / 1000\n\t\t},\n\t},\n\n\twatch: {\n\t\t// If the data change, update the local value\n\t\tmessage(message) {\n\t\t\tthis.updateLocalMessage(message)\n\t\t},\n\t},\n\n\tbeforeMount() {\n\t\t// Init localMessage\n\t\tthis.updateLocalMessage(this.message)\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Update local Message on outer change\n\t\t *\n\t\t * @param {string} message the message to set\n\t\t */\n\t\tupdateLocalMessage(message) {\n\t\t\tthis.localMessage = message.toString()\n\t\t},\n\n\t\t/**\n\t\t * Dispatch message between edit and create\n\t\t */\n\t\tonSubmit() {\n\t\t\t// Do not submit if message is empty\n\t\t\tif (this.localMessage.trim() === '') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this.editor) {\n\t\t\t\tthis.onNewComment(this.localMessage.trim())\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t// Focus the editor again\n\t\t\t\t\tthis.$refs.editor.$el.focus()\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.onEditComment(this.localMessage.trim())\n\t\t},\n\n\t\tonExpand() {\n\t\t\tthis.expanded = true\n\t\t},\n\t},\n\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@use \"sass:math\";\n\n$comment-padding: 10px;\n\n.comment {\n\tposition: relative;\n\tpadding: $comment-padding 0 $comment-padding * 1.5;\n\n\t&__header {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tmin-height: 44px;\n\t\tpadding: math.div($comment-padding, 2) 0;\n\t}\n\n\t&__author,\n\t&__actions {\n\t\tmargin-left: $comment-padding !important;\n\t}\n\n\t&__author {\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&_loading,\n\t&__timestamp {\n\t\tmargin-left: auto;\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&__editor,\n\t&__message {\n\t\tposition: relative;\n\t\t// Avatar size, align with author name\n\t\tpadding-left: 32px + $comment-padding;\n\t}\n\n\t&__submit {\n\t\tposition: absolute;\n\t\tright: 0;\n\t\tbottom: 0;\n\t\twidth: 44px;\n\t\theight: 44px;\n\t\t// Align with input border\n\t\tmargin: 1px;\n\t\tcursor: pointer;\n\t\topacity: .7;\n\t\tborder: none;\n\t\tbackground-color: transparent !important;\n\n\t\t&:disabled {\n\t\t\tcursor: not-allowed;\n\t\t\topacity: .5;\n\t\t}\n\n\t\t&:focus,\n\t\t&:hover {\n\t\t\topacity: 1;\n\t\t}\n\t}\n\n\t&__message {\n\t\twhite-space: pre-wrap;\n\t\tword-break: break-word;\n\t\tmax-height: 70px;\n\t\toverflow: hidden;\n\t\t&--expanded {\n\t\t\tmax-height: none;\n\t\t\toverflow: visible;\n\t\t}\n\t}\n}\n\n.rich-contenteditable__input {\n\tmin-height: 44px;\n\tmargin: 0;\n\tpadding: $comment-padding;\n}\n\n</style>\n","\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!./Comment.vue?vue&type=style&index=0&id=4bced5e9&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!./Comment.vue?vue&type=style&index=0&id=4bced5e9&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Comment.vue?vue&type=template&id=4bced5e9&scoped=true&\"\nimport script from \"./Comment.vue?vue&type=script&lang=js&\"\nexport * from \"./Comment.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Comment.vue?vue&type=style&index=0&id=4bced5e9&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 \"4bced5e9\",\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',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.deleted),expression:\"!deleted\"}],staticClass:\"comment\",class:{'comment--loading': _vm.loading}},[_c('div',{staticClass:\"comment__header\"},[_c('Avatar',{staticClass:\"comment__avatar\",attrs:{\"display-name\":_vm.actorDisplayName,\"user\":_vm.actorId,\"size\":32}}),_vm._v(\" \"),_c('span',{staticClass:\"comment__author\"},[_vm._v(_vm._s(_vm.actorDisplayName))]),_vm._v(\" \"),(_vm.isOwnComment && _vm.id && !_vm.loading)?_c('Actions',{staticClass:\"comment__actions\"},[(!_vm.editing)?[_c('ActionButton',{attrs:{\"close-after-click\":true,\"icon\":\"icon-rename\"},on:{\"click\":_vm.onEdit}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', 'Edit comment'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionSeparator'),_vm._v(\" \"),_c('ActionButton',{attrs:{\"close-after-click\":true,\"icon\":\"icon-delete\"},on:{\"click\":_vm.onDeleteWithUndo}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', 'Delete comment'))+\"\\n\\t\\t\\t\\t\")])]:_c('ActionButton',{attrs:{\"icon\":\"icon-close\"},on:{\"click\":_vm.onEditCancel}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', 'Cancel edit'))+\"\\n\\t\\t\\t\")])],2):_vm._e(),_vm._v(\" \"),(_vm.id && _vm.loading)?_c('div',{staticClass:\"comment_loading icon-loading-small\"}):(_vm.creationDateTime)?_c('Moment',{staticClass:\"comment__timestamp\",attrs:{\"timestamp\":_vm.timestamp}}):_vm._e()],1),_vm._v(\" \"),(_vm.editor || _vm.editing)?_c('div',{staticClass:\"comment__editor \"},[_c('RichContenteditable',{ref:\"editor\",attrs:{\"auto-complete\":_vm.autoComplete,\"contenteditable\":!_vm.loading,\"value\":_vm.localMessage},on:{\"update:value\":_vm.updateLocalMessage,\"submit\":_vm.onSubmit}}),_vm._v(\" \"),_c('input',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(_vm.t('comments', 'Post comment')),expression:\"t('comments', 'Post comment')\"}],staticClass:\"comment__submit\",class:_vm.loading ? 'icon-loading-small' :'icon-confirm',attrs:{\"type\":\"submit\",\"disabled\":_vm.isEmptyMessage,\"value\":\"\"},on:{\"click\":_vm.onSubmit}})],1):_c('div',{staticClass:\"comment__message\",class:{'comment__message--expanded': _vm.expanded},domProps:{\"innerHTML\":_vm._s(_vm.renderedContent)},on:{\"click\":_vm.onExpand}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport { parseXML, prepareFileFromProps } from 'webdav/dist/node/tools/dav'\nimport { processResponsePayload } from 'webdav/dist/node/response'\nimport client from './DavClient'\n\nexport const DEFAULT_LIMIT = 20\n/**\n * Retrieve the comments list\n *\n * @param {object} data destructuring object\n * @param {string} data.commentsType the ressource type\n * @param {number} data.ressourceId the ressource ID\n * @param {object} [options] optional options for axios\n * @return {object[]} the comments list\n */\nexport default async function({ commentsType, ressourceId }, options = {}) {\n\tlet response = null\n\tconst ressourcePath = ['', commentsType, ressourceId].join('/')\n\n\treturn await client.customRequest(ressourcePath, Object.assign({\n\t\tmethod: 'REPORT',\n\t\tdata: `<?xml version=\"1.0\"?>\n\t\t\t<oc:filter-comments\n\t\t\t\txmlns:d=\"DAV:\"\n\t\t\t\txmlns:oc=\"http://owncloud.org/ns\"\n\t\t\t\txmlns:nc=\"http://nextcloud.org/ns\"\n\t\t\t\txmlns:ocs=\"http://open-collaboration-services.org/ns\">\n\t\t\t\t<oc:limit>${DEFAULT_LIMIT}</oc:limit>\n\t\t\t\t<oc:offset>${options.offset || 0}</oc:offset>\n\t\t\t</oc:filter-comments>`,\n\t}, options))\n\t\t// See example on how it's done normaly\n\t\t// https://github.com/perry-mitchell/webdav-client/blob/9de2da4a2599e06bd86c2778145b7ade39fe0b3c/source/interface/stat.js#L19\n\t\t// Waiting for proper REPORT integration https://github.com/perry-mitchell/webdav-client/issues/207\n\t\t.then(res => {\n\t\t\tresponse = res\n\t\t\treturn res.data\n\t\t})\n\t\t.then(parseXML)\n\t\t.then(xml => processMultistatus(xml, true))\n\t\t.then(comments => processResponsePayload(response, comments, true))\n\t\t.then(response => response.data)\n}\n\n// https://github.com/perry-mitchell/webdav-client/blob/9de2da4a2599e06bd86c2778145b7ade39fe0b3c/source/interface/directoryContents.js#L32\n/**\n * @param {any} result -\n * @param {any} isDetailed -\n */\nfunction processMultistatus(result, isDetailed = false) {\n\t// Extract the response items (directory contents)\n\tconst {\n\t\tmultistatus: { response: responseItems },\n\t} = result\n\treturn responseItems.map(item => {\n\t\t// Each item should contain a stat object\n\t\tconst {\n\t\t\tpropstat: { prop: props },\n\t\t} = item\n\t\t// Decode HTML entities\n\t\tconst decodedProps = {\n\t\t\t...props,\n\t\t\t// Decode twice to handle potentially double-encoded entities\n\t\t\t// FIXME Remove this once https://github.com/nextcloud/server/issues/29306 is resolved\n\t\t\tactorDisplayName: decodeHtmlEntities(props.actorDisplayName, 2),\n\t\t\tmessage: decodeHtmlEntities(props.message, 2),\n\t\t}\n\t\treturn prepareFileFromProps(decodedProps, decodedProps.id.toString(), isDetailed)\n\t})\n}\n\n/**\n * @param {any} value -\n * @param {any} passes -\n */\nfunction decodeHtmlEntities(value, passes = 1) {\n\tconst parser = new DOMParser()\n\tlet decoded = value\n\tfor (let i = 0; i < passes; i++) {\n\t\tdecoded = parser.parseFromString(decoded, 'text/html').documentElement.textContent\n\t}\n\treturn decoded\n}\n","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport axios from '@nextcloud/axios'\n\n/**\n * Create a cancel token\n *\n * @return {import('axios').CancelTokenSource}\n */\nconst createCancelToken = () => axios.CancelToken.source()\n\n/**\n * Creates a cancelable axios 'request object'.\n *\n * @param {Function} request the axios promise request\n * @return {object}\n */\nconst cancelableRequest = function(request) {\n\t/**\n\t * Generate an axios cancel token\n\t */\n\tconst cancelToken = createCancelToken()\n\n\t/**\n\t * Execute the request\n\t *\n\t * @param {string} url the url to send the request to\n\t * @param {object} [options] optional config for the request\n\t */\n\tconst fetch = async function(url, options) {\n\t\treturn request(\n\t\t\turl,\n\t\t\tObject.assign({ cancelToken: cancelToken.token }, options)\n\t\t)\n\t}\n\n\treturn {\n\t\trequest: fetch,\n\t\tcancel: cancelToken.cancel,\n\t}\n}\n\nexport default cancelableRequest\n","<!--\n - @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<div class=\"comments\" :class=\"{ 'icon-loading': isFirstLoading }\">\n\t\t<!-- Editor -->\n\t\t<Comment v-bind=\"editorData\"\n\t\t\t:auto-complete=\"autoComplete\"\n\t\t\t:editor=\"true\"\n\t\t\t:ressource-id=\"ressourceId\"\n\t\t\tclass=\"comments__writer\"\n\t\t\t@new=\"onNewComment\" />\n\n\t\t<template v-if=\"!isFirstLoading\">\n\t\t\t<EmptyContent v-if=\"!hasComments && done\" icon=\"icon-comment\">\n\t\t\t\t{{ t('comments', 'No comments yet, start the conversation!') }}\n\t\t\t</EmptyContent>\n\n\t\t\t<!-- Comments -->\n\t\t\t<Comment v-for=\"comment in comments\"\n\t\t\t\tv-else\n\t\t\t\t:key=\"comment.props.id\"\n\t\t\t\tv-bind=\"comment.props\"\n\t\t\t\t:auto-complete=\"autoComplete\"\n\t\t\t\t:message.sync=\"comment.props.message\"\n\t\t\t\t:ressource-id=\"ressourceId\"\n\t\t\t\t:user-data=\"genMentionsData(comment.props.mentions)\"\n\t\t\t\tclass=\"comments__list\"\n\t\t\t\t@delete=\"onDelete\" />\n\n\t\t\t<!-- Loading more message -->\n\t\t\t<div v-if=\"loading && !isFirstLoading\" class=\"comments__info icon-loading\" />\n\n\t\t\t<div v-else-if=\"hasComments && done\" class=\"comments__info\">\n\t\t\t\t{{ t('comments', 'No more messages') }}\n\t\t\t</div>\n\n\t\t\t<!-- Error message -->\n\t\t\t<EmptyContent v-else-if=\"error\" class=\"comments__error\" icon=\"icon-error\">\n\t\t\t\t{{ error }}\n\t\t\t\t<template #desc>\n\t\t\t\t\t<button icon=\"icon-history\" @click=\"getComments\">\n\t\t\t\t\t\t{{ t('comments', 'Retry') }}\n\t\t\t\t\t</button>\n\t\t\t\t</template>\n\t\t\t</EmptyContent>\n\t\t</template>\n\t</div>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { loadState } from '@nextcloud/initial-state'\nimport axios from '@nextcloud/axios'\nimport VTooltip from 'v-tooltip'\nimport Vue from 'vue'\n\nimport EmptyContent from '@nextcloud/vue/dist/Components/EmptyContent'\n\nimport Comment from '../components/Comment'\nimport getComments, { DEFAULT_LIMIT } from '../services/GetComments'\nimport cancelableRequest from '../utils/cancelableRequest'\n\nVue.use(VTooltip)\n\nexport default {\n\tname: 'Comments',\n\n\tcomponents: {\n\t\t// Avatar,\n\t\tComment,\n\t\tEmptyContent,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\terror: '',\n\t\t\tloading: false,\n\t\t\tdone: false,\n\n\t\t\tressourceId: null,\n\t\t\toffset: 0,\n\t\t\tcomments: [],\n\n\t\t\tcancelRequest: () => {},\n\n\t\t\teditorData: {\n\t\t\t\tactorDisplayName: getCurrentUser().displayName,\n\t\t\t\tactorId: getCurrentUser().uid,\n\t\t\t\tkey: 'editor',\n\t\t\t},\n\n\t\t\tComment,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\thasComments() {\n\t\t\treturn this.comments.length > 0\n\t\t},\n\t\tisFirstLoading() {\n\t\t\treturn this.loading && this.offset === 0\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Update current ressourceId and fetch new data\n\t\t *\n\t\t * @param {number} ressourceId the current ressourceId (fileId...)\n\t\t */\n\t\tasync update(ressourceId) {\n\t\t\tthis.ressourceId = ressourceId\n\t\t\tthis.resetState()\n\t\t\tthis.getComments()\n\t\t},\n\n\t\t/**\n\t\t * Ran when the bottom of the tab is reached\n\t\t */\n\t\tonScrollBottomReached() {\n\t\t\t/**\n\t\t\t * Do not fetch more if we:\n\t\t\t * - are showing an error\n\t\t\t * - already fetched everything\n\t\t\t * - are currently loading\n\t\t\t */\n\t\t\tif (this.error || this.done || this.loading) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.getComments()\n\t\t},\n\n\t\t/**\n\t\t * Make sure we have all mentions as Array of objects\n\t\t *\n\t\t * @param {Array} mentions the mentions list\n\t\t * @return {object[]}\n\t\t */\n\t\tgenMentionsData(mentions) {\n\t\t\tconst list = Object.values(mentions).flat()\n\t\t\treturn list.reduce((mentions, mention) => {\n\t\t\t\tmentions[mention.mentionId] = {\n\t\t\t\t\t// TODO: support groups\n\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\tid: mention.mentionId,\n\t\t\t\t\tlabel: mention.mentionDisplayName,\n\t\t\t\t\tsource: 'users',\n\t\t\t\t\tprimary: getCurrentUser().uid === mention.mentionId,\n\t\t\t\t}\n\t\t\t\treturn mentions\n\t\t\t}, {})\n\t\t},\n\n\t\t/**\n\t\t * Get the existing shares infos\n\t\t */\n\t\tasync getComments() {\n\t\t\t// Cancel any ongoing request\n\t\t\tthis.cancelRequest('cancel')\n\n\t\t\ttry {\n\t\t\t\tthis.loading = true\n\t\t\t\tthis.error = ''\n\n\t\t\t\t// Init cancellable request\n\t\t\t\tconst { request, cancel } = cancelableRequest(getComments)\n\t\t\t\tthis.cancelRequest = cancel\n\n\t\t\t\t// Fetch comments\n\t\t\t\tconst comments = await request({\n\t\t\t\t\tcommentsType: this.commentsType,\n\t\t\t\t\tressourceId: this.ressourceId,\n\t\t\t\t}, { offset: this.offset })\n\n\t\t\t\tthis.logger.debug(`Processed ${comments.length} comments`, { comments })\n\n\t\t\t\t// We received less than the requested amount,\n\t\t\t\t// we're done fetching comments\n\t\t\t\tif (comments.length < DEFAULT_LIMIT) {\n\t\t\t\t\tthis.done = true\n\t\t\t\t}\n\n\t\t\t\t// Insert results\n\t\t\t\tthis.comments.push(...comments)\n\n\t\t\t\t// Increase offset for next fetch\n\t\t\t\tthis.offset += DEFAULT_LIMIT\n\t\t\t} catch (error) {\n\t\t\t\tif (error.message === 'cancel') {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tthis.error = t('comments', 'Unable to load the comments list')\n\t\t\t\tconsole.error('Error loading the comments list', error)\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Autocomplete @mentions\n\t\t *\n\t\t * @param {string} search the query\n\t\t * @param {Function} callback the callback to process the results with\n\t\t */\n\t\tasync autoComplete(search, callback) {\n\t\t\tconst results = await axios.get(generateOcsUrl('core/autocomplete/get'), {\n\t\t\t\tparams: {\n\t\t\t\t\tsearch,\n\t\t\t\t\titemType: 'files',\n\t\t\t\t\titemId: this.ressourceId,\n\t\t\t\t\tsorter: 'commenters|share-recipients',\n\t\t\t\t\tlimit: loadState('comments', 'maxAutoCompleteResults'),\n\t\t\t\t},\n\t\t\t})\n\t\t\treturn callback(results.data.ocs.data)\n\t\t},\n\n\t\t/**\n\t\t * Add newly created comment to the list\n\t\t *\n\t\t * @param {object} comment the new comment\n\t\t */\n\t\tonNewComment(comment) {\n\t\t\tthis.comments.unshift(comment)\n\t\t},\n\n\t\t/**\n\t\t * Remove deleted comment from the list\n\t\t *\n\t\t * @param {number} id the deleted comment\n\t\t */\n\t\tonDelete(id) {\n\t\t\tconst index = this.comments.findIndex(comment => comment.props.id === id)\n\t\t\tif (index > -1) {\n\t\t\t\tthis.comments.splice(index, 1)\n\t\t\t} else {\n\t\t\t\tconsole.error('Could not find the deleted comment in the list', id)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Reset the current view to its default state\n\t\t */\n\t\tresetState() {\n\t\t\tthis.error = ''\n\t\t\tthis.loading = false\n\t\t\tthis.done = false\n\t\t\tthis.offset = 0\n\t\t\tthis.comments = []\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.comments {\n\t// Do not add emptycontent top margin\n\t&__error{\n\t\tmargin-top: 0;\n\t}\n\n\t&__info {\n\t\theight: 60px;\n\t\tcolor: var(--color-text-maxcontrast);\n\t\ttext-align: center;\n\t\tline-height: 60px;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comments.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!./Comments.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!./Comments.vue?vue&type=style&index=0&id=3808dce0&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!./Comments.vue?vue&type=style&index=0&id=3808dce0&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Comments.vue?vue&type=template&id=3808dce0&scoped=true&\"\nimport script from \"./Comments.vue?vue&type=script&lang=js&\"\nexport * from \"./Comments.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Comments.vue?vue&type=style&index=0&id=3808dce0&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 \"3808dce0\",\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:\"comments\",class:{ 'icon-loading': _vm.isFirstLoading }},[_c('Comment',_vm._b({staticClass:\"comments__writer\",attrs:{\"auto-complete\":_vm.autoComplete,\"editor\":true,\"ressource-id\":_vm.ressourceId},on:{\"new\":_vm.onNewComment}},'Comment',_vm.editorData,false)),_vm._v(\" \"),(!_vm.isFirstLoading)?[(!_vm.hasComments && _vm.done)?_c('EmptyContent',{attrs:{\"icon\":\"icon-comment\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('comments', 'No comments yet, start the conversation!'))+\"\\n\\t\\t\")]):_vm._l((_vm.comments),function(comment){return _c('Comment',_vm._b({key:comment.props.id,staticClass:\"comments__list\",attrs:{\"auto-complete\":_vm.autoComplete,\"message\":comment.props.message,\"ressource-id\":_vm.ressourceId,\"user-data\":_vm.genMentionsData(comment.props.mentions)},on:{\"update:message\":function($event){return _vm.$set(comment.props, \"message\", $event)},\"delete\":_vm.onDelete}},'Comment',comment.props,false))}),_vm._v(\" \"),(_vm.loading && !_vm.isFirstLoading)?_c('div',{staticClass:\"comments__info icon-loading\"}):(_vm.hasComments && _vm.done)?_c('div',{staticClass:\"comments__info\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('comments', 'No more messages'))+\"\\n\\t\\t\")]):(_vm.error)?_c('EmptyContent',{staticClass:\"comments__error\",attrs:{\"icon\":\"icon-error\"},scopedSlots:_vm._u([{key:\"desc\",fn:function(){return [_c('button',{attrs:{\"icon\":\"icon-history\"},on:{\"click\":_vm.getComments}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', 'Retry'))+\"\\n\\t\\t\\t\\t\")])]},proxy:true}],null,false,1182580137)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.error)+\"\\n\\t\\t\\t\")]):_vm._e()]:_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\nimport CommentsApp from '../views/Comments'\nimport Vue from 'vue'\n\nconst logger = getLoggerBuilder()\n\t.setApp('comments')\n\t.detectUser()\n\t.build()\n\n// Add translates functions\nVue.mixin({\n\tdata() {\n\t\treturn {\n\t\t\tlogger,\n\t\t}\n\t},\n\tmethods: {\n\t\tt,\n\t\tn,\n\t},\n})\n\nexport default class CommentInstance {\n\n\t/**\n\t * Initialize a new Comments instance for the desired type\n\t *\n\t * @param {string} commentsType the comments endpoint type\n\t * @param {object} options the vue options (propsData, parent, el...)\n\t */\n\tconstructor(commentsType = 'files', options) {\n\t\t// Add comments type as a global mixin\n\t\tVue.mixin({\n\t\t\tdata() {\n\t\t\t\treturn {\n\t\t\t\t\tcommentsType,\n\t\t\t\t}\n\t\t\t},\n\t\t})\n\n\t\t// Init Comments component\n\t\tconst View = Vue.extend(CommentsApp)\n\t\treturn new View(options)\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport CommentsInstance from './services/CommentsInstance'\n\n// Init Comments\nif (window.OCA && !window.OCA.Comments) {\n\tObject.assign(window.OCA, { Comments: {} })\n}\n\n// Init Comments App view\nObject.assign(window.OCA.Comments, { View: CommentsInstance })\nconsole.debug('OCA.Comments.View initialized')\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, \".comment[data-v-4bced5e9]{position:relative;padding:10px 0 15px}.comment__header[data-v-4bced5e9]{display:flex;align-items:center;min-height:44px;padding:5px 0}.comment__author[data-v-4bced5e9],.comment__actions[data-v-4bced5e9]{margin-left:10px !important}.comment__author[data-v-4bced5e9]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--color-text-maxcontrast)}.comment_loading[data-v-4bced5e9],.comment__timestamp[data-v-4bced5e9]{margin-left:auto;color:var(--color-text-maxcontrast)}.comment__editor[data-v-4bced5e9],.comment__message[data-v-4bced5e9]{position:relative;padding-left:42px}.comment__submit[data-v-4bced5e9]{position:absolute;right:0;bottom:0;width:44px;height:44px;margin:1px;cursor:pointer;opacity:.7;border:none;background-color:rgba(0,0,0,0) !important}.comment__submit[data-v-4bced5e9]:disabled{cursor:not-allowed;opacity:.5}.comment__submit[data-v-4bced5e9]:focus,.comment__submit[data-v-4bced5e9]:hover{opacity:1}.comment__message[data-v-4bced5e9]{white-space:pre-wrap;word-break:break-word;max-height:70px;overflow:hidden}.comment__message--expanded[data-v-4bced5e9]{max-height:none;overflow:visible}.rich-contenteditable__input[data-v-4bced5e9]{min-height:44px;margin:0;padding:10px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/comments/src/components/Comment.vue\"],\"names\":[],\"mappings\":\"AA0PA,0BACC,iBAAA,CACA,mBAAA,CAEA,kCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,aAAA,CAGD,qEAEC,2BAAA,CAGD,kCACC,eAAA,CACA,kBAAA,CACA,sBAAA,CACA,mCAAA,CAGD,uEAEC,gBAAA,CACA,mCAAA,CAGD,qEAEC,iBAAA,CAEA,iBAAA,CAGD,kCACC,iBAAA,CACA,OAAA,CACA,QAAA,CACA,UAAA,CACA,WAAA,CAEA,UAAA,CACA,cAAA,CACA,UAAA,CACA,WAAA,CACA,yCAAA,CAEA,2CACC,kBAAA,CACA,UAAA,CAGD,gFAEC,SAAA,CAIF,mCACC,oBAAA,CACA,qBAAA,CACA,eAAA,CACA,eAAA,CACA,6CACC,eAAA,CACA,gBAAA,CAKH,8CACC,eAAA,CACA,QAAA,CACA,YA7EiB\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n@use \\\"sass:math\\\";\\n\\n$comment-padding: 10px;\\n\\n.comment {\\n\\tposition: relative;\\n\\tpadding: $comment-padding 0 $comment-padding * 1.5;\\n\\n\\t&__header {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tmin-height: 44px;\\n\\t\\tpadding: math.div($comment-padding, 2) 0;\\n\\t}\\n\\n\\t&__author,\\n\\t&__actions {\\n\\t\\tmargin-left: $comment-padding !important;\\n\\t}\\n\\n\\t&__author {\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t&_loading,\\n\\t&__timestamp {\\n\\t\\tmargin-left: auto;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t&__editor,\\n\\t&__message {\\n\\t\\tposition: relative;\\n\\t\\t// Avatar size, align with author name\\n\\t\\tpadding-left: 32px + $comment-padding;\\n\\t}\\n\\n\\t&__submit {\\n\\t\\tposition: absolute;\\n\\t\\tright: 0;\\n\\t\\tbottom: 0;\\n\\t\\twidth: 44px;\\n\\t\\theight: 44px;\\n\\t\\t// Align with input border\\n\\t\\tmargin: 1px;\\n\\t\\tcursor: pointer;\\n\\t\\topacity: .7;\\n\\t\\tborder: none;\\n\\t\\tbackground-color: transparent !important;\\n\\n\\t\\t&:disabled {\\n\\t\\t\\tcursor: not-allowed;\\n\\t\\t\\topacity: .5;\\n\\t\\t}\\n\\n\\t\\t&:focus,\\n\\t\\t&:hover {\\n\\t\\t\\topacity: 1;\\n\\t\\t}\\n\\t}\\n\\n\\t&__message {\\n\\t\\twhite-space: pre-wrap;\\n\\t\\tword-break: break-word;\\n\\t\\tmax-height: 70px;\\n\\t\\toverflow: hidden;\\n\\t\\t&--expanded {\\n\\t\\t\\tmax-height: none;\\n\\t\\t\\toverflow: visible;\\n\\t\\t}\\n\\t}\\n}\\n\\n.rich-contenteditable__input {\\n\\tmin-height: 44px;\\n\\tmargin: 0;\\n\\tpadding: $comment-padding;\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".comments__error[data-v-3808dce0]{margin-top:0}.comments__info[data-v-3808dce0]{height:60px;color:var(--color-text-maxcontrast);text-align:center;line-height:60px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/comments/src/views/Comments.vue\"],\"names\":[],\"mappings\":\"AAsRC,kCACC,YAAA,CAGD,iCACC,WAAA,CACA,mCAAA,CACA,iBAAA,CACA,gBAAA\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.comments {\\n\\t// Do not add emptycontent top margin\\n\\t&__error{\\n\\t\\tmargin-top: 0;\\n\\t}\\n\\n\\t&__info {\\n\\t\\theight: 60px;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\ttext-align: center;\\n\\t\\tline-height: 60px;\\n\\t}\\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 = 6335;","__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\t6335: 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__(7346); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","_vm","this","_h","$createElement","_self","_c","staticClass","attrs","timestamp","title","_v","_s","formatted","getRootPath","generateRemoteUrl","axios","getPatcher","patch","createClient","commentsType","ressourceId","message","ressourcePath","join","actorDisplayName","getCurrentUser","displayName","actorId","uid","actorType","creationDateTime","Date","toUTCString","objectType","verb","response","commentId","parseInt","headers","split","pop","commentPath","client","details","comment","data","assign","method","props","type","Number","default","String","required","deleted","editing","loading","methods","onEdit","onEditCancel","updateLocalMessage","onEditComment","EditComment","logger","debug","$emit","showError","t","console","error","onDeleteWithUndo","timeOutDelete","setTimeout","onDelete","TOAST_UNDO_TIMEOUT","showUndo","clearTimeout","DeleteComment","onNewComment","NewComment","newComment","localMessage","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","directives","name","rawName","value","expression","class","isOwnComment","on","_e","editor","ref","autoComplete","onSubmit","isEmptyMessage","expanded","domProps","renderedContent","onExpand","DEFAULT_LIMIT","offset","then","res","parseXML","xml","processMultistatus","comments","processResponsePayload","result","isDetailed","responseItems","multistatus","item","propstat","prop","decodedProps","decodeHtmlEntities","prepareFileFromProps","toString","passes","parser","DOMParser","decoded","i","parseFromString","documentElement","textContent","request","cancelToken","fetch","url","token","cancel","isFirstLoading","_b","editorData","hasComments","done","_l","key","genMentionsData","mentions","$event","$set","scopedSlots","_u","fn","getComments","proxy","getLoggerBuilder","setApp","detectUser","build","Vue","n","CommentInstance","View","CommentsApp","window","OCA","Comments","CommentsInstance","___CSS_LOADER_EXPORT___","push","__webpack_module_cache__","moduleId","cachedModule","undefined","loaded","__webpack_modules__","call","m","amdD","amdO","O","chunkIds","priority","notFulfilled","Infinity","length","fulfilled","j","every","splice","r","getter","__esModule","d","a","definition","defineProperty","enumerable","get","g","globalThis","Function","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":"comments-comments-app.js?v=3285e87b6453b8f08a7c","mappings":";gBAAIA,2BCAJ,IAAIC,EAAM,CACT,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,MACX,aAAc,MACd,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,IACR,UAAW,IACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,KACX,aAAc,KACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,KACX,aAAc,KACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,gBAAiB,MACjB,aAAc,MACd,gBAAiB,MACjB,OAAQ,IACR,UAAW,IACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,IACR,UAAW,IACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,MACX,aAAc,MACd,UAAW,KACX,OAAQ,MACR,UAAW,MACX,WAAY,MACZ,cAAe,MACf,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,YAAa,MACb,eAAgB,MAChB,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,UAAW,MACX,aAAc,MACd,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,QAAS,MACT,aAAc,MACd,gBAAiB,MACjB,WAAY,MACZ,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,YAAa,MACb,eAAgB,MAChB,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,gBAAiB,MACjB,OAAQ,MACR,UAAW,MACX,UAAW,KACX,aAAc,KACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,OAIf,SAASC,EAAeC,GACvB,IAAIC,EAAKC,EAAsBF,GAC/B,OAAOG,EAAoBF,GAE5B,SAASC,EAAsBF,GAC9B,IAAIG,EAAoBC,EAAEN,EAAKE,GAAM,CACpC,IAAIK,EAAI,IAAIC,MAAM,uBAAyBN,EAAM,KAEjD,MADAK,EAAEE,KAAO,mBACHF,EAEP,OAAOP,EAAIE,GAEZD,EAAeS,KAAO,WACrB,OAAOC,OAAOD,KAAKV,IAEpBC,EAAeW,QAAUR,EACzBS,EAAOC,QAAUb,EACjBA,EAAeE,GAAK,kSCnS+J,ECSnL,CACA,cACA,OACA,WACA,YACA,aAEA,QACA,YACA,gBAGA,UACA,MADA,WAEA,qDAEA,UAJA,WAKA,wDCRA,GAXgB,OACd,GCRW,WAAa,IAAIY,EAAIC,KAASC,EAAGF,EAAIG,eAAuC,OAAjBH,EAAII,MAAMC,IAAIH,GAAa,OAAO,CAACI,YAAY,0BAA0BC,MAAM,CAAC,iBAAiC,IAAhBP,EAAIQ,UAAiB,MAAQR,EAAIS,QAAQ,CAACT,EAAIU,GAAGV,EAAIW,GAAGX,EAAIY,gBAC/M,IDUpB,EACA,KACA,KACA,MAI8B,QEM1BC,EAAc,WACnB,OAAOC,EAAAA,EAAAA,mBAAkB,4BCG1BC,EAAAA,QAAAA,SAAAA,QAAAA,oBAA6C,kBAG7BC,EAAAA,EAAAA,cACRC,MAAM,UAAWF,EAAAA,SAGzB,IAEA,GAFeG,EAAAA,EAAAA,cAAaL,iUCAb,kBAAf,gFAAe,WAAeM,EAAcC,EAAaC,GAA1C,qGACRC,EAAgB,CAAC,GAAIH,EAAcC,GAAaG,KAAK,KAD7C,SAGSR,EAAAA,QAAAA,KAAWF,IAAgBS,EAAe,CAChEE,kBAAkBC,EAAAA,EAAAA,kBAAiBC,YACnCC,SAASF,EAAAA,EAAAA,kBAAiBG,IAC1BC,UAAW,QACXC,kBAAmB,IAAIC,MAAQC,cAC/BX,QAAAA,EACAY,WAAY,QACZC,KAAM,YAVO,cAGRC,EAHQ,OAcRC,EAAYC,SAASF,EAASG,QAAQ,oBAAoBC,MAAM,KAAKC,OACrEC,EAAcnB,EAAgB,IAAMc,EAf5B,SAkBQM,EAAAA,KAAYD,EAAa,CAC9CE,SAAS,IAnBI,cAkBRC,EAlBQ,yBAsBPA,EAAQC,MAtBD,+XCJA,kBAAf,gFAAe,WAAe1B,EAAcC,EAAagB,GAA1C,6FACRK,EAAc,CAAC,GAAItB,EAAcC,EAAagB,GAAWb,KAAK,KADtD,SAIRmB,EAAAA,WAAkBD,GAJV,8XCCA,oBAAf,gFAAe,WAAetB,EAAcC,EAAagB,EAAWf,GAArD,6FACRoB,EAAc,CAAC,GAAItB,EAAcC,EAAagB,GAAWb,KAAK,KADtD,SAGDmB,EAAAA,cAAqBD,EAAa7C,OAAOkD,OAAO,CAC5DC,OAAQ,YACRF,KAAM,8KAAF,OAMaxB,EANb,kFALS,qbCLf,OACC2B,MAAO,CACN5D,GAAI,CACH6D,KAAMC,OACNC,QAAS,MAEV9B,QAAS,CACR4B,KAAMG,OACND,QAAS,IAEV/B,YAAa,CACZ6B,KAAM,CAACG,OAAQF,QACfG,UAAU,IAIZR,KAhBc,WAiBb,MAAO,CACNS,SAAS,EACTC,SAAS,EACTC,SAAS,IAIXC,QAAS,CAERC,OAFQ,WAGPzD,KAAKsD,SAAU,GAEhBI,aALQ,WAMP1D,KAAKsD,SAAU,EAEftD,KAAK2D,mBAAmB3D,KAAKoB,UAExBwC,cAVE,SAUYxC,GAAS,iJAC5B,EAAKmC,SAAU,EADa,kBAGrBM,EAAY,EAAK3C,aAAc,EAAKC,YAAa,EAAKhC,GAAIiC,GAHrC,OAI3B,EAAK0C,OAAOC,MAAM,iBAAkB,CAAE7C,aAAc,EAAKA,aAAcC,YAAa,EAAKA,YAAahC,GAAI,EAAKA,GAAIiC,QAAAA,IACnH,EAAK4C,MAAM,iBAAkB5C,GAC7B,EAAKkC,SAAU,EANY,iDAQ3BW,EAAAA,EAAAA,IAAUC,EAAE,WAAY,uDACxBC,QAAQC,MAAR,MAT2B,yBAW3B,EAAKb,SAAU,EAXY,+EAgB7Bc,iBA1BQ,WA0BW,WAClBrE,KAAKqD,SAAU,EACf,IAAMiB,EAAgBC,WAAWvE,KAAKwE,SAAUC,EAAAA,KAChDC,EAAAA,EAAAA,IAASR,EAAE,WAAY,oBAAoB,WAC1CS,aAAaL,GACb,EAAKjB,SAAU,MAGXmB,SAlCE,WAkCS,mKAETI,EAAc,EAAK1D,aAAc,EAAKC,YAAa,EAAKhC,IAF/C,OAGf,EAAK2E,OAAOC,MAAM,kBAAmB,CAAE7C,aAAc,EAAKA,aAAcC,YAAa,EAAKA,YAAahC,GAAI,EAAKA,KAChH,EAAK6E,MAAM,SAAU,EAAK7E,IAJX,iDAMf8E,EAAAA,EAAAA,IAAUC,EAAE,WAAY,yDACxBC,QAAQC,MAAR,MACA,EAAKf,SAAU,EARA,4DAaXwB,aA/CE,SA+CWzD,GAAS,uJAC3B,EAAKmC,SAAU,EADY,kBAGDuB,EAAW,EAAK5D,aAAc,EAAKC,YAAaC,GAH/C,OAGpB2D,EAHoB,OAI1B,EAAKjB,OAAOC,MAAM,qBAAsB,CAAE7C,aAAc,EAAKA,aAAcC,YAAa,EAAKA,YAAa4D,WAAAA,IAC1G,EAAKf,MAAM,MAAOe,GAGlB,EAAKf,MAAM,iBAAkB,IAC7B,EAAKgB,aAAe,GATM,mDAW1Bf,EAAAA,EAAAA,IAAUC,EAAE,WAAY,yDACxBC,QAAQC,MAAR,MAZ0B,yBAc1B,EAAKb,SAAU,EAdW,kFClGsJ,EC2GpL,CACA,eAEA,YACA,iBACA,YACA,oBACA,WACA,SACA,yBAEA,eAEA,gBAEA,OACA,kBACA,YACA,aAEA,SACA,YACA,aAEA,kBACA,YACA,cAMA,QACA,aACA,YAMA,cACA,cACA,cAIA,KA9CA,WA+CA,OACA,YAGA,kBAIA,UAOA,aAPA,WAQA,iDAQA,gBAhBA,WAiBA,2BACA,GAEA,uCAGA,eAvBA,WAwBA,yDAGA,UA3BA,WA6BA,iEAIA,OAEA,QAFA,SAEA,GACA,6BAIA,YA/FA,WAiGA,uCAGA,SAMA,mBANA,SAMA,GACA,gCAMA,SAbA,WAaA,WAEA,iCAIA,oBACA,iDACA,2BAEA,oCAIA,8CAGA,SA9BA,WA+BA,mKCnOI0B,GAAU,GAEdA,GAAQC,kBAAoB,KAC5BD,GAAQE,cAAgB,KAElBF,GAAQG,OAAS,UAAc,KAAM,QAE3CH,GAAQI,OAAS,KACjBJ,GAAQK,mBAAqB,KAEhB,IAAI,KAASL,IAKJ,MAAW,aAAiB,YALlD,ICFA,IAXgB,OACd,GCTW,WAAa,IAAIlF,EAAIC,KAASC,EAAGF,EAAIG,eAAmBE,EAAGL,EAAII,MAAMC,IAAIH,EAAG,OAAOG,EAAG,MAAM,CAACmF,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,OAAQ3F,EAAIsD,QAASsC,WAAW,aAAatF,YAAY,UAAUuF,MAAM,CAAC,mBAAoB7F,EAAIwD,UAAU,CAACnD,EAAG,MAAM,CAACC,YAAY,mBAAmB,CAACD,EAAG,SAAS,CAACC,YAAY,kBAAkBC,MAAM,CAAC,eAAeP,EAAIwB,iBAAiB,KAAOxB,EAAI2B,QAAQ,KAAO,MAAM3B,EAAIU,GAAG,KAAKL,EAAG,OAAO,CAACC,YAAY,mBAAmB,CAACN,EAAIU,GAAGV,EAAIW,GAAGX,EAAIwB,qBAAqBxB,EAAIU,GAAG,KAAMV,EAAI8F,cAAgB9F,EAAIZ,KAAOY,EAAIwD,QAASnD,EAAG,UAAU,CAACC,YAAY,oBAAoB,CAAGN,EAAIuD,QAA2alD,EAAG,eAAe,CAACE,MAAM,CAAC,KAAO,cAAcwF,GAAG,CAAC,MAAQ/F,EAAI2D,eAAe,CAAC3D,EAAIU,GAAG,aAAaV,EAAIW,GAAGX,EAAImE,EAAE,WAAY,gBAAgB,cAA9iB,CAAC9D,EAAG,eAAe,CAACE,MAAM,CAAC,qBAAoB,EAAK,KAAO,eAAewF,GAAG,CAAC,MAAQ/F,EAAI0D,SAAS,CAAC1D,EAAIU,GAAG,eAAeV,EAAIW,GAAGX,EAAImE,EAAE,WAAY,iBAAiB,gBAAgBnE,EAAIU,GAAG,KAAKL,EAAG,mBAAmBL,EAAIU,GAAG,KAAKL,EAAG,eAAe,CAACE,MAAM,CAAC,qBAAoB,EAAK,KAAO,eAAewF,GAAG,CAAC,MAAQ/F,EAAIsE,mBAAmB,CAACtE,EAAIU,GAAG,eAAeV,EAAIW,GAAGX,EAAImE,EAAE,WAAY,mBAAmB,kBAA4K,GAAGnE,EAAIgG,KAAKhG,EAAIU,GAAG,KAAMV,EAAIZ,IAAMY,EAAIwD,QAASnD,EAAG,MAAM,CAACC,YAAY,uCAAwCN,EAAoB,iBAAEK,EAAG,SAAS,CAACC,YAAY,qBAAqBC,MAAM,CAAC,UAAYP,EAAIQ,aAAaR,EAAIgG,MAAM,GAAGhG,EAAIU,GAAG,KAAMV,EAAIiG,QAAUjG,EAAIuD,QAASlD,EAAG,MAAM,CAACC,YAAY,oBAAoB,CAACD,EAAG,sBAAsB,CAAC6F,IAAI,SAAS3F,MAAM,CAAC,gBAAgBP,EAAImG,aAAa,iBAAmBnG,EAAIwD,QAAQ,MAAQxD,EAAIiF,cAAcc,GAAG,CAAC,eAAe/F,EAAI4D,mBAAmB,OAAS5D,EAAIoG,YAAYpG,EAAIU,GAAG,KAAKL,EAAG,QAAQ,CAACmF,WAAW,CAAC,CAACC,KAAK,UAAUC,QAAQ,YAAYC,MAAO3F,EAAImE,EAAE,WAAY,gBAAiByB,WAAW,kCAAkCtF,YAAY,kBAAkBuF,MAAM7F,EAAIwD,QAAU,qBAAsB,eAAejD,MAAM,CAAC,KAAO,SAAS,SAAWP,EAAIqG,eAAe,MAAQ,IAAIN,GAAG,CAAC,MAAQ/F,EAAIoG,aAAa,GAAG/F,EAAG,MAAM,CAACC,YAAY,mBAAmBuF,MAAM,CAAC,6BAA8B7F,EAAIsG,UAAUC,SAAS,CAAC,UAAYvG,EAAIW,GAAGX,EAAIwG,kBAAkBT,GAAG,CAAC,MAAQ/F,EAAIyG,gBACppE,IDWpB,EACA,KACA,WACA,MAI8B,4hCEOzB,IAAMC,GAAgB,GAUd,eAAf,oFAAe,+HAAiBvF,EAAjB,EAAiBA,aAAcC,EAA/B,EAA+BA,YAAe8D,EAA9C,+BAAwD,GAClE/C,EAAW,KACTb,EAAgB,CAAC,GAAIH,EAAcC,GAAaG,KAAK,KAF7C,SAIDmB,EAAAA,cAAqBpB,EAAe1B,OAAOkD,OAAO,CAC9DC,OAAQ,SACRF,KAAM,sPAAF,OAMU6D,GANV,2CAOWxB,EAAQyB,QAAU,EAP7B,8CASFzB,IAID0B,MAAK,SAAAC,GAEL,OADA1E,EAAW0E,EACJA,EAAIhE,QAEX+D,KAAKE,GAAAA,UACLF,MAAK,SAAAG,GAAG,OAAIC,GAAmBD,GAAK,MACpCH,MAAK,SAAAK,GAAQ,OAAIC,EAAAA,GAAAA,wBAAuB/E,EAAU8E,GAAU,MAC5DL,MAAK,SAAAzE,GAAQ,OAAIA,EAASU,QA1Bd,4GAkCf,SAASmE,GAAmBG,GAA4B,IAApBC,EAAoB,wDAG7BC,EACtBF,EADHG,YAAenF,SAEhB,OAAOkF,EAAcpI,KAAI,SAAAsI,GAExB,IACmBvE,EACfuE,EADHC,SAAYC,KAGPC,EAAe,GAAH,MACd1E,GADc,IAIjBxB,iBAAkBmG,GAAmB3E,EAAMxB,iBAAkB,GAC7DH,QAASsG,GAAmB3E,EAAM3B,QAAS,KAE5C,OAAOuG,EAAAA,GAAAA,sBAAqBF,EAAcA,EAAatI,GAAGyI,WAAYT,MAQxE,SAASO,GAAmBhC,GAG3B,IAH8C,IAAZmC,EAAY,uDAAH,EACrCC,EAAS,IAAIC,UACfC,EAAUtC,EACLuC,EAAI,EAAGA,EAAIJ,EAAQI,IAC3BD,EAAUF,EAAOI,gBAAgBF,EAAS,aAAaG,gBAAgBC,YAExE,OAAOJ,4HCzER,IAiCA,GAzB0B,SAASK,GAIlC,IAAMC,EAZyBxH,EAAAA,QAAAA,YAAAA,SAoBzByH,EAAK,+CAAG,WAAeC,EAAKvD,GAApB,yGACNoD,EACNG,EACA7I,OAAOkD,OAAO,CAAEyF,YAAaA,EAAYG,OAASxD,KAHtC,2NAAH,wDAOX,MAAO,CACNoD,QAASE,EACTG,OAAQJ,EAAYI,obCyBtB,yBAEA,ICrFqL,GDqFrL,CACA,gBAEA,YAEA,WACA,kBAGA,KATA,WAUA,OACA,SACA,WACA,QAEA,iBACA,SACA,YAEA,2BAEA,YACA,oDACA,mCACA,cAGA,aAIA,UACA,YADA,WAEA,+BAEA,eAJA,WAKA,uCAIA,SAMA,OANA,SAMA,8IACA,gBACA,eACA,gBAHA,8CASA,sBAfA,WAsBA,qCAGA,oBASA,gBAlCA,SAkCA,GAEA,OADA,wBACA,sBASA,OARA,gBAEA,iBACA,eACA,2BACA,eACA,kDAEA,IACA,KAMA,YApDA,WAoDA,gKAEA,0BAFA,SAKA,aACA,WANA,EASA,SATA,EASA,UATA,EASA,OACA,kBAVA,SAaA,GACA,4BACA,2BACA,mBAhBA,OAaA,EAbA,OAkBA,uEAIA,cACA,YAIA,kpBAGA,aA9BA,qDAgCA,wBAhCA,mDAmCA,yDACA,sDApCA,yBAsCA,aAtCA,qFAgDA,aApGA,SAoGA,sKACA,6DACA,QACA,SACA,iBACA,qBACA,qCACA,8DAPA,cACA,EADA,yBAUA,oBAVA,8CAkBA,aAtHA,SAsHA,GACA,0BAQA,SA/HA,SA+HA,GACA,oEACA,KACA,0BAEA,mEAOA,WA3IA,WA4IA,cACA,gBACA,aACA,cACA,gCElQI,GAAU,GAEd,GAAQxD,kBAAoB,KAC5B,GAAQC,cAAgB,KAElB,GAAQC,OAAS,UAAc,KAAM,QAE3C,GAAQC,OAAS,KACjB,GAAQC,mBAAqB,KAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICFA,IAXgB,OACd,ICTW,WAAa,IAAIvF,EAAIC,KAASC,EAAGF,EAAIG,eAAmBE,EAAGL,EAAII,MAAMC,IAAIH,EAAG,OAAOG,EAAG,MAAM,CAACC,YAAY,WAAWuF,MAAM,CAAE,eAAgB7F,EAAI4I,iBAAkB,CAACvI,EAAG,UAAUL,EAAI6I,GAAG,CAACvI,YAAY,mBAAmBC,MAAM,CAAC,gBAAgBP,EAAImG,aAAa,QAAS,EAAK,eAAenG,EAAIoB,aAAa2E,GAAG,CAAC,IAAM/F,EAAI8E,eAAe,UAAU9E,EAAI8I,YAAW,IAAQ9I,EAAIU,GAAG,KAAOV,EAAI4I,eAAgvC5I,EAAIgG,KAApuC,EAAGhG,EAAI+I,aAAe/I,EAAIgJ,KAAM3I,EAAG,eAAe,CAACE,MAAM,CAAC,KAAO,iBAAiB,CAACP,EAAIU,GAAG,WAAWV,EAAIW,GAAGX,EAAImE,EAAE,WAAY,6CAA6C,YAAYnE,EAAIiJ,GAAIjJ,EAAY,UAAE,SAAS4C,GAAS,OAAOvC,EAAG,UAAUL,EAAI6I,GAAG,CAACK,IAAItG,EAAQI,MAAM5D,GAAGkB,YAAY,iBAAiBC,MAAM,CAAC,gBAAgBP,EAAImG,aAAa,QAAUvD,EAAQI,MAAM3B,QAAQ,eAAerB,EAAIoB,YAAY,YAAYpB,EAAImJ,gBAAgBvG,EAAQI,MAAMoG,WAAWrD,GAAG,CAAC,iBAAiB,SAASsD,GAAQ,OAAOrJ,EAAIsJ,KAAK1G,EAAQI,MAAO,UAAWqG,IAAS,OAASrJ,EAAIyE,WAAW,UAAU7B,EAAQI,OAAM,OAAUhD,EAAIU,GAAG,KAAMV,EAAIwD,UAAYxD,EAAI4I,eAAgBvI,EAAG,MAAM,CAACC,YAAY,gCAAiCN,EAAI+I,aAAe/I,EAAIgJ,KAAM3I,EAAG,MAAM,CAACC,YAAY,kBAAkB,CAACN,EAAIU,GAAG,WAAWV,EAAIW,GAAGX,EAAImE,EAAE,WAAY,qBAAqB,YAAanE,EAAS,MAAEK,EAAG,eAAe,CAACC,YAAY,kBAAkBC,MAAM,CAAC,KAAO,cAAcgJ,YAAYvJ,EAAIwJ,GAAG,CAAC,CAACN,IAAI,OAAOO,GAAG,WAAW,MAAO,CAACpJ,EAAG,SAAS,CAACE,MAAM,CAAC,KAAO,gBAAgBwF,GAAG,CAAC,MAAQ/F,EAAI0J,cAAc,CAAC1J,EAAIU,GAAG,eAAeV,EAAIW,GAAGX,EAAImE,EAAE,WAAY,UAAU,kBAAkBwF,OAAM,IAAO,MAAK,EAAM,aAAa,CAAC3J,EAAIU,GAAG,WAAWV,EAAIW,GAAGX,EAAIqE,OAAO,cAAcrE,EAAIgG,OAAgB,KAC9mD,IDWpB,EACA,KACA,WACA,MAI8B,6XEQhC,IAAMjC,IAAS6F,EAAAA,EAAAA,MACbC,OAAO,YACPC,aACAC,QAGFC,EAAAA,QAAAA,MAAU,CACTnH,KADS,WAER,MAAO,CACNkB,OAAAA,KAGFN,QAAS,CACRU,EAAAA,EAAAA,UACA8F,EAAAA,EAAAA,uBAImBC,GAAAA,IAQpB,aAA6C,IAAjC/I,EAAiC,uDAAlB,QAAS+D,EAAS,kDAE5C8E,EAAAA,QAAAA,MAAU,CACTnH,KADS,WAER,MAAO,CACN1B,aAAAA,MAMH,IAAMgJ,EAAOH,EAAAA,QAAAA,OAAWI,IACxB,OAAO,IAAID,EAAKjF,MCxCdmF,OAAOC,MAAQD,OAAOC,IAAIC,UAC7B3K,OAAOkD,OAAOuH,OAAOC,IAAK,CAAEC,SAAU,KAIvC3K,OAAOkD,OAAOuH,OAAOC,IAAIC,SAAU,CAAEJ,KAAMK,KAC3CpG,QAAQJ,MAAM,wGC5BVyG,QAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAAC5K,EAAOV,GAAI,mtCAAotC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,wDAAwD,MAAQ,GAAG,SAAW,gdAAgd,eAAiB,CAAC,i7DAAm7D,WAAa,MAExwH,6ECJIqL,QAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAAC5K,EAAOV,GAAI,sKAAuK,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,oDAAoD,MAAQ,GAAG,SAAW,oEAAoE,eAAiB,CAAC,8wBAA8wB,WAAa,MAEtqC,8CCNIuL,EAA2B,GAG/B,SAASrL,EAAoBsL,GAE5B,IAAIC,EAAeF,EAAyBC,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAa9K,QAGrB,IAAID,EAAS6K,EAAyBC,GAAY,CACjDxL,GAAIwL,EACJG,QAAQ,EACRhL,QAAS,IAUV,OANAiL,EAAoBJ,GAAUK,KAAKnL,EAAOC,QAASD,EAAQA,EAAOC,QAAST,GAG3EQ,EAAOiL,QAAS,EAGTjL,EAAOC,QAIfT,EAAoB4L,EAAIF,EC5BxB1L,EAAoB6L,KAAO,WAC1B,MAAM,IAAI1L,MAAM,mCCDjBH,EAAoB8L,KAAO,G9BAvBpM,EAAW,GACfM,EAAoB+L,EAAI,SAASlE,EAAQmE,EAAU7B,EAAI8B,GACtD,IAAGD,EAAH,CAMA,IAAIE,EAAeC,EAAAA,EACnB,IAASvD,EAAI,EAAGA,EAAIlJ,EAAS0M,OAAQxD,IAAK,CACrCoD,EAAWtM,EAASkJ,GAAG,GACvBuB,EAAKzK,EAASkJ,GAAG,GACjBqD,EAAWvM,EAASkJ,GAAG,GAE3B,IAJA,IAGIyD,GAAY,EACPC,EAAI,EAAGA,EAAIN,EAASI,OAAQE,MACpB,EAAXL,GAAsBC,GAAgBD,IAAa3L,OAAOD,KAAKL,EAAoB+L,GAAGQ,OAAM,SAAS3C,GAAO,OAAO5J,EAAoB+L,EAAEnC,GAAKoC,EAASM,OAC3JN,EAASQ,OAAOF,IAAK,IAErBD,GAAY,EACTJ,EAAWC,IAAcA,EAAeD,IAG7C,GAAGI,EAAW,CACb3M,EAAS8M,OAAO5D,IAAK,GACrB,IAAI6D,EAAItC,SACEqB,IAANiB,IAAiB5E,EAAS4E,IAGhC,OAAO5E,EAzBNoE,EAAWA,GAAY,EACvB,IAAI,IAAIrD,EAAIlJ,EAAS0M,OAAQxD,EAAI,GAAKlJ,EAASkJ,EAAI,GAAG,GAAKqD,EAAUrD,IAAKlJ,EAASkJ,GAAKlJ,EAASkJ,EAAI,GACrGlJ,EAASkJ,GAAK,CAACoD,EAAU7B,EAAI8B,I+BJ/BjM,EAAoB2K,EAAI,SAASnK,GAChC,IAAIkM,EAASlM,GAAUA,EAAOmM,WAC7B,WAAa,OAAOnM,EAAgB,SACpC,WAAa,OAAOA,GAErB,OADAR,EAAoB4M,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,GCLR1M,EAAoB4M,EAAI,SAASnM,EAASqM,GACzC,IAAI,IAAIlD,KAAOkD,EACX9M,EAAoBC,EAAE6M,EAAYlD,KAAS5J,EAAoBC,EAAEQ,EAASmJ,IAC5EtJ,OAAOyM,eAAetM,EAASmJ,EAAK,CAAEoD,YAAY,EAAMC,IAAKH,EAAWlD,MCJ3E5J,EAAoBkN,EAAI,WACvB,GAA0B,iBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAOxM,MAAQ,IAAIyM,SAAS,cAAb,GACd,MAAOlN,GACR,GAAsB,iBAAX6K,OAAqB,OAAOA,QALjB,GCAxB/K,EAAoBC,EAAI,SAASoN,EAAKlF,GAAQ,OAAO7H,OAAOgN,UAAUC,eAAe5B,KAAK0B,EAAKlF,ICC/FnI,EAAoByM,EAAI,SAAShM,GACX,oBAAX+M,QAA0BA,OAAOC,aAC1CnN,OAAOyM,eAAetM,EAAS+M,OAAOC,YAAa,CAAEpH,MAAO,WAE7D/F,OAAOyM,eAAetM,EAAS,aAAc,CAAE4F,OAAO,KCLvDrG,EAAoB0N,IAAM,SAASlN,GAGlC,OAFAA,EAAOmN,MAAQ,GACVnN,EAAOoN,WAAUpN,EAAOoN,SAAW,IACjCpN,GCHRR,EAAoBsM,EAAI,gBCAxBtM,EAAoB6N,EAAIC,SAASC,SAAWC,KAAKC,SAASC,KAK1D,IAAIC,EAAkB,CACrB,KAAM,GAaPnO,EAAoB+L,EAAEO,EAAI,SAAS8B,GAAW,OAAoC,IAA7BD,EAAgBC,IAGrE,IAAIC,EAAuB,SAASC,EAA4B/K,GAC/D,IAKI+H,EAAU8C,EALVpC,EAAWzI,EAAK,GAChBgL,EAAchL,EAAK,GACnBiL,EAAUjL,EAAK,GAGIqF,EAAI,EAC3B,GAAGoD,EAASyC,MAAK,SAAS3O,GAAM,OAA+B,IAAxBqO,EAAgBrO,MAAe,CACrE,IAAIwL,KAAYiD,EACZvO,EAAoBC,EAAEsO,EAAajD,KACrCtL,EAAoB4L,EAAEN,GAAYiD,EAAYjD,IAGhD,GAAGkD,EAAS,IAAI3G,EAAS2G,EAAQxO,GAGlC,IADGsO,GAA4BA,EAA2B/K,GACrDqF,EAAIoD,EAASI,OAAQxD,IACzBwF,EAAUpC,EAASpD,GAChB5I,EAAoBC,EAAEkO,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBC,GAAW,EAE5B,OAAOpO,EAAoB+L,EAAElE,IAG1B6G,EAAqBV,KAA4B,sBAAIA,KAA4B,uBAAK,GAC1FU,EAAmBC,QAAQN,EAAqBO,KAAK,KAAM,IAC3DF,EAAmBtD,KAAOiD,EAAqBO,KAAK,KAAMF,EAAmBtD,KAAKwD,KAAKF,OClDvF1O,EAAoB6O,QAAKrD,ECGzB,IAAIsD,EAAsB9O,EAAoB+L,OAAEP,EAAW,CAAC,OAAO,WAAa,OAAOxL,EAAoB,SAC3G8O,EAAsB9O,EAAoB+L,EAAE+C","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/node_modules/@nextcloud/moment/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/apps/comments/src/components/Moment.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/comments/src/components/Moment.vue","webpack://nextcloud/./apps/comments/src/components/Moment.vue?9b20","webpack:///nextcloud/apps/comments/src/components/Moment.vue?vue&type=template&id=57999be6&","webpack:///nextcloud/apps/comments/src/utils/davUtils.js","webpack:///nextcloud/apps/comments/src/services/DavClient.js","webpack:///nextcloud/apps/comments/src/services/NewComment.js","webpack:///nextcloud/apps/comments/src/services/DeleteComment.js","webpack:///nextcloud/apps/comments/src/services/EditComment.js","webpack:///nextcloud/apps/comments/src/mixins/CommentMixin.js","webpack:///nextcloud/apps/comments/src/components/Comment.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/comments/src/components/Comment.vue","webpack://nextcloud/./apps/comments/src/components/Comment.vue?1ef0","webpack://nextcloud/./apps/comments/src/components/Comment.vue?7f26","webpack:///nextcloud/apps/comments/src/components/Comment.vue?vue&type=template&id=4bced5e9&scoped=true&","webpack:///nextcloud/apps/comments/src/services/GetComments.js","webpack:///nextcloud/apps/comments/src/utils/cancelableRequest.js","webpack:///nextcloud/apps/comments/src/views/Comments.vue","webpack:///nextcloud/apps/comments/src/views/Comments.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/comments/src/views/Comments.vue?c8a6","webpack://nextcloud/./apps/comments/src/views/Comments.vue?f45b","webpack:///nextcloud/apps/comments/src/views/Comments.vue?vue&type=template&id=3808dce0&scoped=true&","webpack:///nextcloud/apps/comments/src/services/CommentsInstance.js","webpack:///nextcloud/apps/comments/src/comments-app.js","webpack:///nextcloud/apps/comments/src/components/Comment.vue?vue&type=style&index=0&id=4bced5e9&lang=scss&scoped=true&","webpack:///nextcloud/apps/comments/src/views/Comments.vue?vue&type=style&index=0&id=3808dce0&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/runtime/nonce","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};","var map = {\n\t\"./af\": 36026,\n\t\"./af.js\": 36026,\n\t\"./ar\": 28093,\n\t\"./ar-dz\": 41943,\n\t\"./ar-dz.js\": 41943,\n\t\"./ar-kw\": 23969,\n\t\"./ar-kw.js\": 23969,\n\t\"./ar-ly\": 40594,\n\t\"./ar-ly.js\": 40594,\n\t\"./ar-ma\": 18369,\n\t\"./ar-ma.js\": 18369,\n\t\"./ar-sa\": 32579,\n\t\"./ar-sa.js\": 32579,\n\t\"./ar-tn\": 76442,\n\t\"./ar-tn.js\": 76442,\n\t\"./ar.js\": 28093,\n\t\"./az\": 86425,\n\t\"./az.js\": 86425,\n\t\"./be\": 22004,\n\t\"./be.js\": 22004,\n\t\"./bg\": 42982,\n\t\"./bg.js\": 42982,\n\t\"./bm\": 21067,\n\t\"./bm.js\": 21067,\n\t\"./bn\": 8366,\n\t\"./bn-bd\": 63837,\n\t\"./bn-bd.js\": 63837,\n\t\"./bn.js\": 8366,\n\t\"./bo\": 95040,\n\t\"./bo.js\": 95040,\n\t\"./br\": 521,\n\t\"./br.js\": 521,\n\t\"./bs\": 83242,\n\t\"./bs.js\": 83242,\n\t\"./ca\": 73046,\n\t\"./ca.js\": 73046,\n\t\"./cs\": 25794,\n\t\"./cs.js\": 25794,\n\t\"./cv\": 28231,\n\t\"./cv.js\": 28231,\n\t\"./cy\": 10927,\n\t\"./cy.js\": 10927,\n\t\"./da\": 42832,\n\t\"./da.js\": 42832,\n\t\"./de\": 29415,\n\t\"./de-at\": 3331,\n\t\"./de-at.js\": 3331,\n\t\"./de-ch\": 45524,\n\t\"./de-ch.js\": 45524,\n\t\"./de.js\": 29415,\n\t\"./dv\": 44700,\n\t\"./dv.js\": 44700,\n\t\"./el\": 88752,\n\t\"./el.js\": 88752,\n\t\"./en-au\": 90444,\n\t\"./en-au.js\": 90444,\n\t\"./en-ca\": 65959,\n\t\"./en-ca.js\": 65959,\n\t\"./en-gb\": 62762,\n\t\"./en-gb.js\": 62762,\n\t\"./en-ie\": 40909,\n\t\"./en-ie.js\": 40909,\n\t\"./en-il\": 79909,\n\t\"./en-il.js\": 79909,\n\t\"./en-in\": 87942,\n\t\"./en-in.js\": 87942,\n\t\"./en-nz\": 75200,\n\t\"./en-nz.js\": 75200,\n\t\"./en-sg\": 21415,\n\t\"./en-sg.js\": 21415,\n\t\"./eo\": 27447,\n\t\"./eo.js\": 27447,\n\t\"./es\": 86756,\n\t\"./es-do\": 47049,\n\t\"./es-do.js\": 47049,\n\t\"./es-mx\": 15915,\n\t\"./es-mx.js\": 15915,\n\t\"./es-us\": 57133,\n\t\"./es-us.js\": 57133,\n\t\"./es.js\": 86756,\n\t\"./et\": 72182,\n\t\"./et.js\": 72182,\n\t\"./eu\": 14419,\n\t\"./eu.js\": 14419,\n\t\"./fa\": 2916,\n\t\"./fa.js\": 2916,\n\t\"./fi\": 49964,\n\t\"./fi.js\": 49964,\n\t\"./fil\": 16448,\n\t\"./fil.js\": 16448,\n\t\"./fo\": 26094,\n\t\"./fo.js\": 26094,\n\t\"./fr\": 35833,\n\t\"./fr-ca\": 56994,\n\t\"./fr-ca.js\": 56994,\n\t\"./fr-ch\": 2740,\n\t\"./fr-ch.js\": 2740,\n\t\"./fr.js\": 35833,\n\t\"./fy\": 69542,\n\t\"./fy.js\": 69542,\n\t\"./ga\": 93264,\n\t\"./ga.js\": 93264,\n\t\"./gd\": 77457,\n\t\"./gd.js\": 77457,\n\t\"./gl\": 83043,\n\t\"./gl.js\": 83043,\n\t\"./gom-deva\": 24034,\n\t\"./gom-deva.js\": 24034,\n\t\"./gom-latn\": 28379,\n\t\"./gom-latn.js\": 28379,\n\t\"./gu\": 406,\n\t\"./gu.js\": 406,\n\t\"./he\": 73219,\n\t\"./he.js\": 73219,\n\t\"./hi\": 99834,\n\t\"./hi.js\": 99834,\n\t\"./hr\": 28754,\n\t\"./hr.js\": 28754,\n\t\"./hu\": 93945,\n\t\"./hu.js\": 93945,\n\t\"./hy-am\": 81319,\n\t\"./hy-am.js\": 81319,\n\t\"./id\": 24875,\n\t\"./id.js\": 24875,\n\t\"./is\": 23724,\n\t\"./is.js\": 23724,\n\t\"./it\": 79906,\n\t\"./it-ch\": 34303,\n\t\"./it-ch.js\": 34303,\n\t\"./it.js\": 79906,\n\t\"./ja\": 77105,\n\t\"./ja.js\": 77105,\n\t\"./jv\": 15026,\n\t\"./jv.js\": 15026,\n\t\"./ka\": 67416,\n\t\"./ka.js\": 67416,\n\t\"./kk\": 79734,\n\t\"./kk.js\": 79734,\n\t\"./km\": 60757,\n\t\"./km.js\": 60757,\n\t\"./kn\": 58369,\n\t\"./kn.js\": 58369,\n\t\"./ko\": 77687,\n\t\"./ko.js\": 77687,\n\t\"./ku\": 95544,\n\t\"./ku.js\": 95544,\n\t\"./ky\": 85431,\n\t\"./ky.js\": 85431,\n\t\"./lb\": 13613,\n\t\"./lb.js\": 13613,\n\t\"./lo\": 34252,\n\t\"./lo.js\": 34252,\n\t\"./lt\": 84619,\n\t\"./lt.js\": 84619,\n\t\"./lv\": 93760,\n\t\"./lv.js\": 93760,\n\t\"./me\": 93393,\n\t\"./me.js\": 93393,\n\t\"./mi\": 12369,\n\t\"./mi.js\": 12369,\n\t\"./mk\": 48664,\n\t\"./mk.js\": 48664,\n\t\"./ml\": 23099,\n\t\"./ml.js\": 23099,\n\t\"./mn\": 98539,\n\t\"./mn.js\": 98539,\n\t\"./mr\": 778,\n\t\"./mr.js\": 778,\n\t\"./ms\": 39970,\n\t\"./ms-my\": 82625,\n\t\"./ms-my.js\": 82625,\n\t\"./ms.js\": 39970,\n\t\"./mt\": 15714,\n\t\"./mt.js\": 15714,\n\t\"./my\": 53055,\n\t\"./my.js\": 53055,\n\t\"./nb\": 73945,\n\t\"./nb.js\": 73945,\n\t\"./ne\": 63645,\n\t\"./ne.js\": 63645,\n\t\"./nl\": 4829,\n\t\"./nl-be\": 12823,\n\t\"./nl-be.js\": 12823,\n\t\"./nl.js\": 4829,\n\t\"./nn\": 23756,\n\t\"./nn.js\": 23756,\n\t\"./oc-lnc\": 41228,\n\t\"./oc-lnc.js\": 41228,\n\t\"./pa-in\": 97877,\n\t\"./pa-in.js\": 97877,\n\t\"./pl\": 53066,\n\t\"./pl.js\": 53066,\n\t\"./pt\": 28677,\n\t\"./pt-br\": 81592,\n\t\"./pt-br.js\": 81592,\n\t\"./pt.js\": 28677,\n\t\"./ro\": 32722,\n\t\"./ro.js\": 32722,\n\t\"./ru\": 59138,\n\t\"./ru.js\": 59138,\n\t\"./sd\": 32568,\n\t\"./sd.js\": 32568,\n\t\"./se\": 49753,\n\t\"./se.js\": 49753,\n\t\"./si\": 58024,\n\t\"./si.js\": 58024,\n\t\"./sk\": 31058,\n\t\"./sk.js\": 31058,\n\t\"./sl\": 43452,\n\t\"./sl.js\": 43452,\n\t\"./sq\": 2795,\n\t\"./sq.js\": 2795,\n\t\"./sr\": 26976,\n\t\"./sr-cyrl\": 38819,\n\t\"./sr-cyrl.js\": 38819,\n\t\"./sr.js\": 26976,\n\t\"./ss\": 7467,\n\t\"./ss.js\": 7467,\n\t\"./sv\": 42787,\n\t\"./sv.js\": 42787,\n\t\"./sw\": 80298,\n\t\"./sw.js\": 80298,\n\t\"./ta\": 57532,\n\t\"./ta.js\": 57532,\n\t\"./te\": 76076,\n\t\"./te.js\": 76076,\n\t\"./tet\": 40452,\n\t\"./tet.js\": 40452,\n\t\"./tg\": 64794,\n\t\"./tg.js\": 64794,\n\t\"./th\": 48245,\n\t\"./th.js\": 48245,\n\t\"./tk\": 8870,\n\t\"./tk.js\": 8870,\n\t\"./tl-ph\": 36056,\n\t\"./tl-ph.js\": 36056,\n\t\"./tlh\": 15249,\n\t\"./tlh.js\": 15249,\n\t\"./tr\": 22053,\n\t\"./tr.js\": 22053,\n\t\"./tzl\": 39871,\n\t\"./tzl.js\": 39871,\n\t\"./tzm\": 39574,\n\t\"./tzm-latn\": 19210,\n\t\"./tzm-latn.js\": 19210,\n\t\"./tzm.js\": 39574,\n\t\"./ug-cn\": 91532,\n\t\"./ug-cn.js\": 91532,\n\t\"./uk\": 11432,\n\t\"./uk.js\": 11432,\n\t\"./ur\": 88523,\n\t\"./ur.js\": 88523,\n\t\"./uz\": 54958,\n\t\"./uz-latn\": 68735,\n\t\"./uz-latn.js\": 68735,\n\t\"./uz.js\": 54958,\n\t\"./vi\": 83398,\n\t\"./vi.js\": 83398,\n\t\"./x-pseudo\": 56665,\n\t\"./x-pseudo.js\": 56665,\n\t\"./yo\": 11642,\n\t\"./yo.js\": 11642,\n\t\"./zh-cn\": 5462,\n\t\"./zh-cn.js\": 5462,\n\t\"./zh-hk\": 92530,\n\t\"./zh-hk.js\": 92530,\n\t\"./zh-mo\": 41650,\n\t\"./zh-mo.js\": 41650,\n\t\"./zh-tw\": 97333,\n\t\"./zh-tw.js\": 97333\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 93365;","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Moment.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!./Moment.vue?vue&type=script&lang=js&\"","<!-- TODO: Move to vue components -->\n\n<template>\n\t<span class=\"live-relative-timestamp\" :data-timestamp=\"timestamp * 1000\" :title=\"title\">{{ formatted }}</span>\n</template>\n\n<script>\nimport moment from '@nextcloud/moment'\n\nexport default {\n\tname: 'Moment',\n\tprops: {\n\t\ttimestamp: {\n\t\t\ttype: Number,\n\t\t\trequired: true,\n\t\t},\n\t\tformat: {\n\t\t\ttype: String,\n\t\t\tdefault: 'LLL',\n\t\t},\n\t},\n\tcomputed: {\n\t\ttitle() {\n\t\t\treturn moment.unix(this.timestamp).format(this.format)\n\t\t},\n\t\tformatted() {\n\t\t\treturn moment.unix(this.timestamp).fromNow()\n\t\t},\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./Moment.vue?vue&type=template&id=57999be6&\"\nimport script from \"./Moment.vue?vue&type=script&lang=js&\"\nexport * from \"./Moment.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"live-relative-timestamp\",attrs:{\"data-timestamp\":_vm.timestamp * 1000,\"title\":_vm.title}},[_vm._v(_vm._s(_vm.formatted))])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport { generateRemoteUrl } from '@nextcloud/router'\n\nconst getRootPath = function() {\n\treturn generateRemoteUrl('dav/comments')\n}\n\nexport { getRootPath }\n","/**\n * @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport { createClient, getPatcher } from 'webdav'\nimport axios from '@nextcloud/axios'\n\nimport { getRootPath } from '../utils/davUtils'\n\n// Add this so the server knows it is an request from the browser\naxios.defaults.headers['X-Requested-With'] = 'XMLHttpRequest'\n\n// force our axios\nconst patcher = getPatcher()\npatcher.patch('request', axios)\n\n// init webdav client\nconst client = createClient(getRootPath())\n\nexport default client\n","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getRootPath } from '../utils/davUtils'\nimport axios from '@nextcloud/axios'\nimport client from './DavClient'\n\n/**\n * Retrieve the comments list\n *\n * @param {string} commentsType the ressource type\n * @param {number} ressourceId the ressource ID\n * @param {string} message the message\n * @return {object} the new comment\n */\nexport default async function(commentsType, ressourceId, message) {\n\tconst ressourcePath = ['', commentsType, ressourceId].join('/')\n\n\tconst response = await axios.post(getRootPath() + ressourcePath, {\n\t\tactorDisplayName: getCurrentUser().displayName,\n\t\tactorId: getCurrentUser().uid,\n\t\tactorType: 'users',\n\t\tcreationDateTime: (new Date()).toUTCString(),\n\t\tmessage,\n\t\tobjectType: 'files',\n\t\tverb: 'comment',\n\t})\n\n\t// Retrieve comment id from ressource location\n\tconst commentId = parseInt(response.headers['content-location'].split('/').pop())\n\tconst commentPath = ressourcePath + '/' + commentId\n\n\t// Fetch newly created comment data\n\tconst comment = await client.stat(commentPath, {\n\t\tdetails: true,\n\t})\n\n\treturn comment.data\n}\n","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport client from './DavClient'\n\n/**\n * Delete a comment\n *\n * @param {string} commentsType the ressource type\n * @param {number} ressourceId the ressource ID\n * @param {number} commentId the comment iD\n */\nexport default async function(commentsType, ressourceId, commentId) {\n\tconst commentPath = ['', commentsType, ressourceId, commentId].join('/')\n\n\t// Fetch newly created comment data\n\tawait client.deleteFile(commentPath)\n}\n","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport client from './DavClient'\n\n/**\n * Edit an existing comment\n *\n * @param {string} commentsType the ressource type\n * @param {number} ressourceId the ressource ID\n * @param {number} commentId the comment iD\n * @param {string} message the message content\n */\nexport default async function(commentsType, ressourceId, commentId, message) {\n\tconst commentPath = ['', commentsType, ressourceId, commentId].join('/')\n\n\treturn await client.customRequest(commentPath, Object.assign({\n\t\tmethod: 'PROPPATCH',\n\t\tdata: `<?xml version=\"1.0\"?>\n\t\t\t<d:propertyupdate\n\t\t\t\txmlns:d=\"DAV:\"\n\t\t\t\txmlns:oc=\"http://owncloud.org/ns\">\n\t\t\t<d:set>\n\t\t\t\t<d:prop>\n\t\t\t\t\t<oc:message>${message}</oc:message>\n\t\t\t\t</d:prop>\n\t\t\t</d:set>\n\t\t\t</d:propertyupdate>`,\n\t}))\n}\n","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport NewComment from '../services/NewComment'\nimport DeleteComment from '../services/DeleteComment'\nimport EditComment from '../services/EditComment'\nimport { showError, showUndo, TOAST_UNDO_TIMEOUT } from '@nextcloud/dialogs'\n\nexport default {\n\tprops: {\n\t\tid: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t\tmessage: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tressourceId: {\n\t\t\ttype: [String, Number],\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tdeleted: false,\n\t\t\tediting: false,\n\t\t\tloading: false,\n\t\t}\n\t},\n\n\tmethods: {\n\t\t// EDITION\n\t\tonEdit() {\n\t\t\tthis.editing = true\n\t\t},\n\t\tonEditCancel() {\n\t\t\tthis.editing = false\n\t\t\t// Restore original value\n\t\t\tthis.updateLocalMessage(this.message)\n\t\t},\n\t\tasync onEditComment(message) {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tawait EditComment(this.commentsType, this.ressourceId, this.id, message)\n\t\t\t\tthis.logger.debug('Comment edited', { commentsType: this.commentsType, ressourceId: this.ressourceId, id: this.id, message })\n\t\t\t\tthis.$emit('update:message', message)\n\t\t\t\tthis.editing = false\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to edit the comment'))\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t// DELETION\n\t\tonDeleteWithUndo() {\n\t\t\tthis.deleted = true\n\t\t\tconst timeOutDelete = setTimeout(this.onDelete, TOAST_UNDO_TIMEOUT)\n\t\t\tshowUndo(t('comments', 'Comment deleted'), () => {\n\t\t\t\tclearTimeout(timeOutDelete)\n\t\t\t\tthis.deleted = false\n\t\t\t})\n\t\t},\n\t\tasync onDelete() {\n\t\t\ttry {\n\t\t\t\tawait DeleteComment(this.commentsType, this.ressourceId, this.id)\n\t\t\t\tthis.logger.debug('Comment deleted', { commentsType: this.commentsType, ressourceId: this.ressourceId, id: this.id })\n\t\t\t\tthis.$emit('delete', this.id)\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to delete the comment'))\n\t\t\t\tconsole.error(error)\n\t\t\t\tthis.deleted = false\n\t\t\t}\n\t\t},\n\n\t\t// CREATION\n\t\tasync onNewComment(message) {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tconst newComment = await NewComment(this.commentsType, this.ressourceId, message)\n\t\t\t\tthis.logger.debug('New comment posted', { commentsType: this.commentsType, ressourceId: this.ressourceId, newComment })\n\t\t\t\tthis.$emit('new', newComment)\n\n\t\t\t\t// Clear old content\n\t\t\t\tthis.$emit('update:message', '')\n\t\t\t\tthis.localMessage = ''\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to create the comment'))\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comment.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!./Comment.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n<template>\n\t<div v-show=\"!deleted\"\n\t\t:class=\"{'comment--loading': loading}\"\n\t\tclass=\"comment\">\n\t\t<!-- Comment header toolbar -->\n\t\t<div class=\"comment__header\">\n\t\t\t<!-- Author -->\n\t\t\t<Avatar class=\"comment__avatar\"\n\t\t\t\t:display-name=\"actorDisplayName\"\n\t\t\t\t:user=\"actorId\"\n\t\t\t\t:size=\"32\" />\n\t\t\t<span class=\"comment__author\">{{ actorDisplayName }}</span>\n\n\t\t\t<!-- Comment actions,\n\t\t\t\tshow if we have a message id and current user is author -->\n\t\t\t<Actions v-if=\"isOwnComment && id && !loading\" class=\"comment__actions\">\n\t\t\t\t<template v-if=\"!editing\">\n\t\t\t\t\t<ActionButton :close-after-click=\"true\"\n\t\t\t\t\t\ticon=\"icon-rename\"\n\t\t\t\t\t\t@click=\"onEdit\">\n\t\t\t\t\t\t{{ t('comments', 'Edit comment') }}\n\t\t\t\t\t</ActionButton>\n\t\t\t\t\t<ActionSeparator />\n\t\t\t\t\t<ActionButton :close-after-click=\"true\"\n\t\t\t\t\t\ticon=\"icon-delete\"\n\t\t\t\t\t\t@click=\"onDeleteWithUndo\">\n\t\t\t\t\t\t{{ t('comments', 'Delete comment') }}\n\t\t\t\t\t</ActionButton>\n\t\t\t\t</template>\n\n\t\t\t\t<ActionButton v-else\n\t\t\t\t\ticon=\"icon-close\"\n\t\t\t\t\t@click=\"onEditCancel\">\n\t\t\t\t\t{{ t('comments', 'Cancel edit') }}\n\t\t\t\t</ActionButton>\n\t\t\t</Actions>\n\n\t\t\t<!-- Show loading if we're editing or deleting, not on new ones -->\n\t\t\t<div v-if=\"id && loading\" class=\"comment_loading icon-loading-small\" />\n\n\t\t\t<!-- Relative time to the comment creation -->\n\t\t\t<Moment v-else-if=\"creationDateTime\" class=\"comment__timestamp\" :timestamp=\"timestamp\" />\n\t\t</div>\n\n\t\t<!-- Message editor -->\n\t\t<div v-if=\"editor || editing\" class=\"comment__editor \">\n\t\t\t<RichContenteditable ref=\"editor\"\n\t\t\t\t:auto-complete=\"autoComplete\"\n\t\t\t\t:contenteditable=\"!loading\"\n\t\t\t\t:value=\"localMessage\"\n\t\t\t\t@update:value=\"updateLocalMessage\"\n\t\t\t\t@submit=\"onSubmit\" />\n\t\t\t<input v-tooltip=\"t('comments', 'Post comment')\"\n\t\t\t\t:class=\"loading ? 'icon-loading-small' :'icon-confirm'\"\n\t\t\t\tclass=\"comment__submit\"\n\t\t\t\ttype=\"submit\"\n\t\t\t\t:disabled=\"isEmptyMessage\"\n\t\t\t\tvalue=\"\"\n\t\t\t\t@click=\"onSubmit\">\n\t\t</div>\n\n\t\t<!-- Message content -->\n\t\t<!-- The html is escaped and sanitized before rendering -->\n\t\t<!-- eslint-disable-next-line vue/no-v-html-->\n\t\t<div v-else\n\t\t\t:class=\"{'comment__message--expanded': expanded}\"\n\t\t\tclass=\"comment__message\"\n\t\t\t@click=\"onExpand\"\n\t\t\tv-html=\"renderedContent\" />\n\t</div>\n</template>\n\n<script>\nimport { getCurrentUser } from '@nextcloud/auth'\nimport moment from '@nextcloud/moment'\n\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport ActionSeparator from '@nextcloud/vue/dist/Components/ActionSeparator'\nimport Avatar from '@nextcloud/vue/dist/Components/Avatar'\nimport RichContenteditable from '@nextcloud/vue/dist/Components/RichContenteditable'\nimport RichEditorMixin from '@nextcloud/vue/dist/Mixins/richEditor'\n\nimport Moment from './Moment'\nimport CommentMixin from '../mixins/CommentMixin'\n\nexport default {\n\tname: 'Comment',\n\n\tcomponents: {\n\t\tActionButton,\n\t\tActions,\n\t\tActionSeparator,\n\t\tAvatar,\n\t\tMoment,\n\t\tRichContenteditable,\n\t},\n\tmixins: [RichEditorMixin, CommentMixin],\n\n\tinheritAttrs: false,\n\n\tprops: {\n\t\tactorDisplayName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tactorId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tcreationDateTime: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Force the editor display\n\t\t */\n\t\teditor: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Provide the autocompletion data\n\t\t */\n\t\tautoComplete: {\n\t\t\ttype: Function,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\texpanded: false,\n\t\t\t// Only change data locally and update the original\n\t\t\t// parent data when the request is sent and resolved\n\t\t\tlocalMessage: '',\n\t\t}\n\t},\n\n\tcomputed: {\n\n\t\t/**\n\t\t * Is the current user the author of this comment\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisOwnComment() {\n\t\t\treturn getCurrentUser().uid === this.actorId\n\t\t},\n\n\t\t/**\n\t\t * Rendered content as html string\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\trenderedContent() {\n\t\t\tif (this.isEmptyMessage) {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\treturn this.renderContent(this.localMessage)\n\t\t},\n\n\t\tisEmptyMessage() {\n\t\t\treturn !this.localMessage || this.localMessage.trim() === ''\n\t\t},\n\n\t\ttimestamp() {\n\t\t\t// seconds, not milliseconds\n\t\t\treturn parseInt(moment(this.creationDateTime).format('x'), 10) / 1000\n\t\t},\n\t},\n\n\twatch: {\n\t\t// If the data change, update the local value\n\t\tmessage(message) {\n\t\t\tthis.updateLocalMessage(message)\n\t\t},\n\t},\n\n\tbeforeMount() {\n\t\t// Init localMessage\n\t\tthis.updateLocalMessage(this.message)\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Update local Message on outer change\n\t\t *\n\t\t * @param {string} message the message to set\n\t\t */\n\t\tupdateLocalMessage(message) {\n\t\t\tthis.localMessage = message.toString()\n\t\t},\n\n\t\t/**\n\t\t * Dispatch message between edit and create\n\t\t */\n\t\tonSubmit() {\n\t\t\t// Do not submit if message is empty\n\t\t\tif (this.localMessage.trim() === '') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this.editor) {\n\t\t\t\tthis.onNewComment(this.localMessage.trim())\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t// Focus the editor again\n\t\t\t\t\tthis.$refs.editor.$el.focus()\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.onEditComment(this.localMessage.trim())\n\t\t},\n\n\t\tonExpand() {\n\t\t\tthis.expanded = true\n\t\t},\n\t},\n\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@use \"sass:math\";\n\n$comment-padding: 10px;\n\n.comment {\n\tposition: relative;\n\tpadding: $comment-padding 0 $comment-padding * 1.5;\n\n\t&__header {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tmin-height: 44px;\n\t\tpadding: math.div($comment-padding, 2) 0;\n\t}\n\n\t&__author,\n\t&__actions {\n\t\tmargin-left: $comment-padding !important;\n\t}\n\n\t&__author {\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&_loading,\n\t&__timestamp {\n\t\tmargin-left: auto;\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&__editor,\n\t&__message {\n\t\tposition: relative;\n\t\t// Avatar size, align with author name\n\t\tpadding-left: 32px + $comment-padding;\n\t}\n\n\t&__submit {\n\t\tposition: absolute;\n\t\tright: 0;\n\t\tbottom: 0;\n\t\twidth: 44px;\n\t\theight: 44px;\n\t\t// Align with input border\n\t\tmargin: 1px;\n\t\tcursor: pointer;\n\t\topacity: .7;\n\t\tborder: none;\n\t\tbackground-color: transparent !important;\n\n\t\t&:disabled {\n\t\t\tcursor: not-allowed;\n\t\t\topacity: .5;\n\t\t}\n\n\t\t&:focus,\n\t\t&:hover {\n\t\t\topacity: 1;\n\t\t}\n\t}\n\n\t&__message {\n\t\twhite-space: pre-wrap;\n\t\tword-break: break-word;\n\t\tmax-height: 70px;\n\t\toverflow: hidden;\n\t\t&--expanded {\n\t\t\tmax-height: none;\n\t\t\toverflow: visible;\n\t\t}\n\t}\n}\n\n.rich-contenteditable__input {\n\tmin-height: 44px;\n\tmargin: 0;\n\tpadding: $comment-padding;\n}\n\n</style>\n","\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!./Comment.vue?vue&type=style&index=0&id=4bced5e9&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!./Comment.vue?vue&type=style&index=0&id=4bced5e9&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Comment.vue?vue&type=template&id=4bced5e9&scoped=true&\"\nimport script from \"./Comment.vue?vue&type=script&lang=js&\"\nexport * from \"./Comment.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Comment.vue?vue&type=style&index=0&id=4bced5e9&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 \"4bced5e9\",\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',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.deleted),expression:\"!deleted\"}],staticClass:\"comment\",class:{'comment--loading': _vm.loading}},[_c('div',{staticClass:\"comment__header\"},[_c('Avatar',{staticClass:\"comment__avatar\",attrs:{\"display-name\":_vm.actorDisplayName,\"user\":_vm.actorId,\"size\":32}}),_vm._v(\" \"),_c('span',{staticClass:\"comment__author\"},[_vm._v(_vm._s(_vm.actorDisplayName))]),_vm._v(\" \"),(_vm.isOwnComment && _vm.id && !_vm.loading)?_c('Actions',{staticClass:\"comment__actions\"},[(!_vm.editing)?[_c('ActionButton',{attrs:{\"close-after-click\":true,\"icon\":\"icon-rename\"},on:{\"click\":_vm.onEdit}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', 'Edit comment'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionSeparator'),_vm._v(\" \"),_c('ActionButton',{attrs:{\"close-after-click\":true,\"icon\":\"icon-delete\"},on:{\"click\":_vm.onDeleteWithUndo}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', 'Delete comment'))+\"\\n\\t\\t\\t\\t\")])]:_c('ActionButton',{attrs:{\"icon\":\"icon-close\"},on:{\"click\":_vm.onEditCancel}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', 'Cancel edit'))+\"\\n\\t\\t\\t\")])],2):_vm._e(),_vm._v(\" \"),(_vm.id && _vm.loading)?_c('div',{staticClass:\"comment_loading icon-loading-small\"}):(_vm.creationDateTime)?_c('Moment',{staticClass:\"comment__timestamp\",attrs:{\"timestamp\":_vm.timestamp}}):_vm._e()],1),_vm._v(\" \"),(_vm.editor || _vm.editing)?_c('div',{staticClass:\"comment__editor \"},[_c('RichContenteditable',{ref:\"editor\",attrs:{\"auto-complete\":_vm.autoComplete,\"contenteditable\":!_vm.loading,\"value\":_vm.localMessage},on:{\"update:value\":_vm.updateLocalMessage,\"submit\":_vm.onSubmit}}),_vm._v(\" \"),_c('input',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(_vm.t('comments', 'Post comment')),expression:\"t('comments', 'Post comment')\"}],staticClass:\"comment__submit\",class:_vm.loading ? 'icon-loading-small' :'icon-confirm',attrs:{\"type\":\"submit\",\"disabled\":_vm.isEmptyMessage,\"value\":\"\"},on:{\"click\":_vm.onSubmit}})],1):_c('div',{staticClass:\"comment__message\",class:{'comment__message--expanded': _vm.expanded},domProps:{\"innerHTML\":_vm._s(_vm.renderedContent)},on:{\"click\":_vm.onExpand}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport { parseXML, prepareFileFromProps } from 'webdav/dist/node/tools/dav'\nimport { processResponsePayload } from 'webdav/dist/node/response'\nimport client from './DavClient'\n\nexport const DEFAULT_LIMIT = 20\n/**\n * Retrieve the comments list\n *\n * @param {object} data destructuring object\n * @param {string} data.commentsType the ressource type\n * @param {number} data.ressourceId the ressource ID\n * @param {object} [options] optional options for axios\n * @return {object[]} the comments list\n */\nexport default async function({ commentsType, ressourceId }, options = {}) {\n\tlet response = null\n\tconst ressourcePath = ['', commentsType, ressourceId].join('/')\n\n\treturn await client.customRequest(ressourcePath, Object.assign({\n\t\tmethod: 'REPORT',\n\t\tdata: `<?xml version=\"1.0\"?>\n\t\t\t<oc:filter-comments\n\t\t\t\txmlns:d=\"DAV:\"\n\t\t\t\txmlns:oc=\"http://owncloud.org/ns\"\n\t\t\t\txmlns:nc=\"http://nextcloud.org/ns\"\n\t\t\t\txmlns:ocs=\"http://open-collaboration-services.org/ns\">\n\t\t\t\t<oc:limit>${DEFAULT_LIMIT}</oc:limit>\n\t\t\t\t<oc:offset>${options.offset || 0}</oc:offset>\n\t\t\t</oc:filter-comments>`,\n\t}, options))\n\t\t// See example on how it's done normaly\n\t\t// https://github.com/perry-mitchell/webdav-client/blob/9de2da4a2599e06bd86c2778145b7ade39fe0b3c/source/interface/stat.js#L19\n\t\t// Waiting for proper REPORT integration https://github.com/perry-mitchell/webdav-client/issues/207\n\t\t.then(res => {\n\t\t\tresponse = res\n\t\t\treturn res.data\n\t\t})\n\t\t.then(parseXML)\n\t\t.then(xml => processMultistatus(xml, true))\n\t\t.then(comments => processResponsePayload(response, comments, true))\n\t\t.then(response => response.data)\n}\n\n// https://github.com/perry-mitchell/webdav-client/blob/9de2da4a2599e06bd86c2778145b7ade39fe0b3c/source/interface/directoryContents.js#L32\n/**\n * @param {any} result -\n * @param {any} isDetailed -\n */\nfunction processMultistatus(result, isDetailed = false) {\n\t// Extract the response items (directory contents)\n\tconst {\n\t\tmultistatus: { response: responseItems },\n\t} = result\n\treturn responseItems.map(item => {\n\t\t// Each item should contain a stat object\n\t\tconst {\n\t\t\tpropstat: { prop: props },\n\t\t} = item\n\t\t// Decode HTML entities\n\t\tconst decodedProps = {\n\t\t\t...props,\n\t\t\t// Decode twice to handle potentially double-encoded entities\n\t\t\t// FIXME Remove this once https://github.com/nextcloud/server/issues/29306 is resolved\n\t\t\tactorDisplayName: decodeHtmlEntities(props.actorDisplayName, 2),\n\t\t\tmessage: decodeHtmlEntities(props.message, 2),\n\t\t}\n\t\treturn prepareFileFromProps(decodedProps, decodedProps.id.toString(), isDetailed)\n\t})\n}\n\n/**\n * @param {any} value -\n * @param {any} passes -\n */\nfunction decodeHtmlEntities(value, passes = 1) {\n\tconst parser = new DOMParser()\n\tlet decoded = value\n\tfor (let i = 0; i < passes; i++) {\n\t\tdecoded = parser.parseFromString(decoded, 'text/html').documentElement.textContent\n\t}\n\treturn decoded\n}\n","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport axios from '@nextcloud/axios'\n\n/**\n * Create a cancel token\n *\n * @return {import('axios').CancelTokenSource}\n */\nconst createCancelToken = () => axios.CancelToken.source()\n\n/**\n * Creates a cancelable axios 'request object'.\n *\n * @param {Function} request the axios promise request\n * @return {object}\n */\nconst cancelableRequest = function(request) {\n\t/**\n\t * Generate an axios cancel token\n\t */\n\tconst cancelToken = createCancelToken()\n\n\t/**\n\t * Execute the request\n\t *\n\t * @param {string} url the url to send the request to\n\t * @param {object} [options] optional config for the request\n\t */\n\tconst fetch = async function(url, options) {\n\t\treturn request(\n\t\t\turl,\n\t\t\tObject.assign({ cancelToken: cancelToken.token }, options)\n\t\t)\n\t}\n\n\treturn {\n\t\trequest: fetch,\n\t\tcancel: cancelToken.cancel,\n\t}\n}\n\nexport default cancelableRequest\n","<!--\n - @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<div class=\"comments\" :class=\"{ 'icon-loading': isFirstLoading }\">\n\t\t<!-- Editor -->\n\t\t<Comment v-bind=\"editorData\"\n\t\t\t:auto-complete=\"autoComplete\"\n\t\t\t:editor=\"true\"\n\t\t\t:ressource-id=\"ressourceId\"\n\t\t\tclass=\"comments__writer\"\n\t\t\t@new=\"onNewComment\" />\n\n\t\t<template v-if=\"!isFirstLoading\">\n\t\t\t<EmptyContent v-if=\"!hasComments && done\" icon=\"icon-comment\">\n\t\t\t\t{{ t('comments', 'No comments yet, start the conversation!') }}\n\t\t\t</EmptyContent>\n\n\t\t\t<!-- Comments -->\n\t\t\t<Comment v-for=\"comment in comments\"\n\t\t\t\tv-else\n\t\t\t\t:key=\"comment.props.id\"\n\t\t\t\tv-bind=\"comment.props\"\n\t\t\t\t:auto-complete=\"autoComplete\"\n\t\t\t\t:message.sync=\"comment.props.message\"\n\t\t\t\t:ressource-id=\"ressourceId\"\n\t\t\t\t:user-data=\"genMentionsData(comment.props.mentions)\"\n\t\t\t\tclass=\"comments__list\"\n\t\t\t\t@delete=\"onDelete\" />\n\n\t\t\t<!-- Loading more message -->\n\t\t\t<div v-if=\"loading && !isFirstLoading\" class=\"comments__info icon-loading\" />\n\n\t\t\t<div v-else-if=\"hasComments && done\" class=\"comments__info\">\n\t\t\t\t{{ t('comments', 'No more messages') }}\n\t\t\t</div>\n\n\t\t\t<!-- Error message -->\n\t\t\t<EmptyContent v-else-if=\"error\" class=\"comments__error\" icon=\"icon-error\">\n\t\t\t\t{{ error }}\n\t\t\t\t<template #desc>\n\t\t\t\t\t<button icon=\"icon-history\" @click=\"getComments\">\n\t\t\t\t\t\t{{ t('comments', 'Retry') }}\n\t\t\t\t\t</button>\n\t\t\t\t</template>\n\t\t\t</EmptyContent>\n\t\t</template>\n\t</div>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { loadState } from '@nextcloud/initial-state'\nimport axios from '@nextcloud/axios'\nimport VTooltip from 'v-tooltip'\nimport Vue from 'vue'\n\nimport EmptyContent from '@nextcloud/vue/dist/Components/EmptyContent'\n\nimport Comment from '../components/Comment'\nimport getComments, { DEFAULT_LIMIT } from '../services/GetComments'\nimport cancelableRequest from '../utils/cancelableRequest'\n\nVue.use(VTooltip)\n\nexport default {\n\tname: 'Comments',\n\n\tcomponents: {\n\t\t// Avatar,\n\t\tComment,\n\t\tEmptyContent,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\terror: '',\n\t\t\tloading: false,\n\t\t\tdone: false,\n\n\t\t\tressourceId: null,\n\t\t\toffset: 0,\n\t\t\tcomments: [],\n\n\t\t\tcancelRequest: () => {},\n\n\t\t\teditorData: {\n\t\t\t\tactorDisplayName: getCurrentUser().displayName,\n\t\t\t\tactorId: getCurrentUser().uid,\n\t\t\t\tkey: 'editor',\n\t\t\t},\n\n\t\t\tComment,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\thasComments() {\n\t\t\treturn this.comments.length > 0\n\t\t},\n\t\tisFirstLoading() {\n\t\t\treturn this.loading && this.offset === 0\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Update current ressourceId and fetch new data\n\t\t *\n\t\t * @param {number} ressourceId the current ressourceId (fileId...)\n\t\t */\n\t\tasync update(ressourceId) {\n\t\t\tthis.ressourceId = ressourceId\n\t\t\tthis.resetState()\n\t\t\tthis.getComments()\n\t\t},\n\n\t\t/**\n\t\t * Ran when the bottom of the tab is reached\n\t\t */\n\t\tonScrollBottomReached() {\n\t\t\t/**\n\t\t\t * Do not fetch more if we:\n\t\t\t * - are showing an error\n\t\t\t * - already fetched everything\n\t\t\t * - are currently loading\n\t\t\t */\n\t\t\tif (this.error || this.done || this.loading) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.getComments()\n\t\t},\n\n\t\t/**\n\t\t * Make sure we have all mentions as Array of objects\n\t\t *\n\t\t * @param {Array} mentions the mentions list\n\t\t * @return {object[]}\n\t\t */\n\t\tgenMentionsData(mentions) {\n\t\t\tconst list = Object.values(mentions).flat()\n\t\t\treturn list.reduce((mentions, mention) => {\n\t\t\t\tmentions[mention.mentionId] = {\n\t\t\t\t\t// TODO: support groups\n\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\tid: mention.mentionId,\n\t\t\t\t\tlabel: mention.mentionDisplayName,\n\t\t\t\t\tsource: 'users',\n\t\t\t\t\tprimary: getCurrentUser().uid === mention.mentionId,\n\t\t\t\t}\n\t\t\t\treturn mentions\n\t\t\t}, {})\n\t\t},\n\n\t\t/**\n\t\t * Get the existing shares infos\n\t\t */\n\t\tasync getComments() {\n\t\t\t// Cancel any ongoing request\n\t\t\tthis.cancelRequest('cancel')\n\n\t\t\ttry {\n\t\t\t\tthis.loading = true\n\t\t\t\tthis.error = ''\n\n\t\t\t\t// Init cancellable request\n\t\t\t\tconst { request, cancel } = cancelableRequest(getComments)\n\t\t\t\tthis.cancelRequest = cancel\n\n\t\t\t\t// Fetch comments\n\t\t\t\tconst comments = await request({\n\t\t\t\t\tcommentsType: this.commentsType,\n\t\t\t\t\tressourceId: this.ressourceId,\n\t\t\t\t}, { offset: this.offset })\n\n\t\t\t\tthis.logger.debug(`Processed ${comments.length} comments`, { comments })\n\n\t\t\t\t// We received less than the requested amount,\n\t\t\t\t// we're done fetching comments\n\t\t\t\tif (comments.length < DEFAULT_LIMIT) {\n\t\t\t\t\tthis.done = true\n\t\t\t\t}\n\n\t\t\t\t// Insert results\n\t\t\t\tthis.comments.push(...comments)\n\n\t\t\t\t// Increase offset for next fetch\n\t\t\t\tthis.offset += DEFAULT_LIMIT\n\t\t\t} catch (error) {\n\t\t\t\tif (error.message === 'cancel') {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tthis.error = t('comments', 'Unable to load the comments list')\n\t\t\t\tconsole.error('Error loading the comments list', error)\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Autocomplete @mentions\n\t\t *\n\t\t * @param {string} search the query\n\t\t * @param {Function} callback the callback to process the results with\n\t\t */\n\t\tasync autoComplete(search, callback) {\n\t\t\tconst results = await axios.get(generateOcsUrl('core/autocomplete/get'), {\n\t\t\t\tparams: {\n\t\t\t\t\tsearch,\n\t\t\t\t\titemType: 'files',\n\t\t\t\t\titemId: this.ressourceId,\n\t\t\t\t\tsorter: 'commenters|share-recipients',\n\t\t\t\t\tlimit: loadState('comments', 'maxAutoCompleteResults'),\n\t\t\t\t},\n\t\t\t})\n\t\t\treturn callback(results.data.ocs.data)\n\t\t},\n\n\t\t/**\n\t\t * Add newly created comment to the list\n\t\t *\n\t\t * @param {object} comment the new comment\n\t\t */\n\t\tonNewComment(comment) {\n\t\t\tthis.comments.unshift(comment)\n\t\t},\n\n\t\t/**\n\t\t * Remove deleted comment from the list\n\t\t *\n\t\t * @param {number} id the deleted comment\n\t\t */\n\t\tonDelete(id) {\n\t\t\tconst index = this.comments.findIndex(comment => comment.props.id === id)\n\t\t\tif (index > -1) {\n\t\t\t\tthis.comments.splice(index, 1)\n\t\t\t} else {\n\t\t\t\tconsole.error('Could not find the deleted comment in the list', id)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Reset the current view to its default state\n\t\t */\n\t\tresetState() {\n\t\t\tthis.error = ''\n\t\t\tthis.loading = false\n\t\t\tthis.done = false\n\t\t\tthis.offset = 0\n\t\t\tthis.comments = []\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.comments {\n\t// Do not add emptycontent top margin\n\t&__error{\n\t\tmargin-top: 0;\n\t}\n\n\t&__info {\n\t\theight: 60px;\n\t\tcolor: var(--color-text-maxcontrast);\n\t\ttext-align: center;\n\t\tline-height: 60px;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comments.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!./Comments.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!./Comments.vue?vue&type=style&index=0&id=3808dce0&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!./Comments.vue?vue&type=style&index=0&id=3808dce0&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Comments.vue?vue&type=template&id=3808dce0&scoped=true&\"\nimport script from \"./Comments.vue?vue&type=script&lang=js&\"\nexport * from \"./Comments.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Comments.vue?vue&type=style&index=0&id=3808dce0&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 \"3808dce0\",\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:\"comments\",class:{ 'icon-loading': _vm.isFirstLoading }},[_c('Comment',_vm._b({staticClass:\"comments__writer\",attrs:{\"auto-complete\":_vm.autoComplete,\"editor\":true,\"ressource-id\":_vm.ressourceId},on:{\"new\":_vm.onNewComment}},'Comment',_vm.editorData,false)),_vm._v(\" \"),(!_vm.isFirstLoading)?[(!_vm.hasComments && _vm.done)?_c('EmptyContent',{attrs:{\"icon\":\"icon-comment\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('comments', 'No comments yet, start the conversation!'))+\"\\n\\t\\t\")]):_vm._l((_vm.comments),function(comment){return _c('Comment',_vm._b({key:comment.props.id,staticClass:\"comments__list\",attrs:{\"auto-complete\":_vm.autoComplete,\"message\":comment.props.message,\"ressource-id\":_vm.ressourceId,\"user-data\":_vm.genMentionsData(comment.props.mentions)},on:{\"update:message\":function($event){return _vm.$set(comment.props, \"message\", $event)},\"delete\":_vm.onDelete}},'Comment',comment.props,false))}),_vm._v(\" \"),(_vm.loading && !_vm.isFirstLoading)?_c('div',{staticClass:\"comments__info icon-loading\"}):(_vm.hasComments && _vm.done)?_c('div',{staticClass:\"comments__info\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('comments', 'No more messages'))+\"\\n\\t\\t\")]):(_vm.error)?_c('EmptyContent',{staticClass:\"comments__error\",attrs:{\"icon\":\"icon-error\"},scopedSlots:_vm._u([{key:\"desc\",fn:function(){return [_c('button',{attrs:{\"icon\":\"icon-history\"},on:{\"click\":_vm.getComments}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', 'Retry'))+\"\\n\\t\\t\\t\\t\")])]},proxy:true}],null,false,1182580137)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.error)+\"\\n\\t\\t\\t\")]):_vm._e()]:_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\nimport CommentsApp from '../views/Comments'\nimport Vue from 'vue'\n\nconst logger = getLoggerBuilder()\n\t.setApp('comments')\n\t.detectUser()\n\t.build()\n\n// Add translates functions\nVue.mixin({\n\tdata() {\n\t\treturn {\n\t\t\tlogger,\n\t\t}\n\t},\n\tmethods: {\n\t\tt,\n\t\tn,\n\t},\n})\n\nexport default class CommentInstance {\n\n\t/**\n\t * Initialize a new Comments instance for the desired type\n\t *\n\t * @param {string} commentsType the comments endpoint type\n\t * @param {object} options the vue options (propsData, parent, el...)\n\t */\n\tconstructor(commentsType = 'files', options) {\n\t\t// Add comments type as a global mixin\n\t\tVue.mixin({\n\t\t\tdata() {\n\t\t\t\treturn {\n\t\t\t\t\tcommentsType,\n\t\t\t\t}\n\t\t\t},\n\t\t})\n\n\t\t// Init Comments component\n\t\tconst View = Vue.extend(CommentsApp)\n\t\treturn new View(options)\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport CommentsInstance from './services/CommentsInstance'\n\n// Init Comments\nif (window.OCA && !window.OCA.Comments) {\n\tObject.assign(window.OCA, { Comments: {} })\n}\n\n// Init Comments App view\nObject.assign(window.OCA.Comments, { View: CommentsInstance })\nconsole.debug('OCA.Comments.View initialized')\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, \".comment[data-v-4bced5e9]{position:relative;padding:10px 0 15px}.comment__header[data-v-4bced5e9]{display:flex;align-items:center;min-height:44px;padding:5px 0}.comment__author[data-v-4bced5e9],.comment__actions[data-v-4bced5e9]{margin-left:10px !important}.comment__author[data-v-4bced5e9]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--color-text-maxcontrast)}.comment_loading[data-v-4bced5e9],.comment__timestamp[data-v-4bced5e9]{margin-left:auto;color:var(--color-text-maxcontrast)}.comment__editor[data-v-4bced5e9],.comment__message[data-v-4bced5e9]{position:relative;padding-left:42px}.comment__submit[data-v-4bced5e9]{position:absolute;right:0;bottom:0;width:44px;height:44px;margin:1px;cursor:pointer;opacity:.7;border:none;background-color:rgba(0,0,0,0) !important}.comment__submit[data-v-4bced5e9]:disabled{cursor:not-allowed;opacity:.5}.comment__submit[data-v-4bced5e9]:focus,.comment__submit[data-v-4bced5e9]:hover{opacity:1}.comment__message[data-v-4bced5e9]{white-space:pre-wrap;word-break:break-word;max-height:70px;overflow:hidden}.comment__message--expanded[data-v-4bced5e9]{max-height:none;overflow:visible}.rich-contenteditable__input[data-v-4bced5e9]{min-height:44px;margin:0;padding:10px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/comments/src/components/Comment.vue\"],\"names\":[],\"mappings\":\"AA0PA,0BACC,iBAAA,CACA,mBAAA,CAEA,kCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,aAAA,CAGD,qEAEC,2BAAA,CAGD,kCACC,eAAA,CACA,kBAAA,CACA,sBAAA,CACA,mCAAA,CAGD,uEAEC,gBAAA,CACA,mCAAA,CAGD,qEAEC,iBAAA,CAEA,iBAAA,CAGD,kCACC,iBAAA,CACA,OAAA,CACA,QAAA,CACA,UAAA,CACA,WAAA,CAEA,UAAA,CACA,cAAA,CACA,UAAA,CACA,WAAA,CACA,yCAAA,CAEA,2CACC,kBAAA,CACA,UAAA,CAGD,gFAEC,SAAA,CAIF,mCACC,oBAAA,CACA,qBAAA,CACA,eAAA,CACA,eAAA,CACA,6CACC,eAAA,CACA,gBAAA,CAKH,8CACC,eAAA,CACA,QAAA,CACA,YA7EiB\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n@use \\\"sass:math\\\";\\n\\n$comment-padding: 10px;\\n\\n.comment {\\n\\tposition: relative;\\n\\tpadding: $comment-padding 0 $comment-padding * 1.5;\\n\\n\\t&__header {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tmin-height: 44px;\\n\\t\\tpadding: math.div($comment-padding, 2) 0;\\n\\t}\\n\\n\\t&__author,\\n\\t&__actions {\\n\\t\\tmargin-left: $comment-padding !important;\\n\\t}\\n\\n\\t&__author {\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t&_loading,\\n\\t&__timestamp {\\n\\t\\tmargin-left: auto;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t&__editor,\\n\\t&__message {\\n\\t\\tposition: relative;\\n\\t\\t// Avatar size, align with author name\\n\\t\\tpadding-left: 32px + $comment-padding;\\n\\t}\\n\\n\\t&__submit {\\n\\t\\tposition: absolute;\\n\\t\\tright: 0;\\n\\t\\tbottom: 0;\\n\\t\\twidth: 44px;\\n\\t\\theight: 44px;\\n\\t\\t// Align with input border\\n\\t\\tmargin: 1px;\\n\\t\\tcursor: pointer;\\n\\t\\topacity: .7;\\n\\t\\tborder: none;\\n\\t\\tbackground-color: transparent !important;\\n\\n\\t\\t&:disabled {\\n\\t\\t\\tcursor: not-allowed;\\n\\t\\t\\topacity: .5;\\n\\t\\t}\\n\\n\\t\\t&:focus,\\n\\t\\t&:hover {\\n\\t\\t\\topacity: 1;\\n\\t\\t}\\n\\t}\\n\\n\\t&__message {\\n\\t\\twhite-space: pre-wrap;\\n\\t\\tword-break: break-word;\\n\\t\\tmax-height: 70px;\\n\\t\\toverflow: hidden;\\n\\t\\t&--expanded {\\n\\t\\t\\tmax-height: none;\\n\\t\\t\\toverflow: visible;\\n\\t\\t}\\n\\t}\\n}\\n\\n.rich-contenteditable__input {\\n\\tmin-height: 44px;\\n\\tmargin: 0;\\n\\tpadding: $comment-padding;\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".comments__error[data-v-3808dce0]{margin-top:0}.comments__info[data-v-3808dce0]{height:60px;color:var(--color-text-maxcontrast);text-align:center;line-height:60px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/comments/src/views/Comments.vue\"],\"names\":[],\"mappings\":\"AAsRC,kCACC,YAAA,CAGD,iCACC,WAAA,CACA,mCAAA,CACA,iBAAA,CACA,gBAAA\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.comments {\\n\\t// Do not add emptycontent top margin\\n\\t&__error{\\n\\t\\tmargin-top: 0;\\n\\t}\\n\\n\\t&__info {\\n\\t\\theight: 60px;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\ttext-align: center;\\n\\t\\tline-height: 60px;\\n\\t}\\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 = 6335;","__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\t6335: 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));","__webpack_require__.nc = undefined;","// 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__(7346); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","_vm","this","_h","$createElement","_self","_c","staticClass","attrs","timestamp","title","_v","_s","formatted","getRootPath","generateRemoteUrl","axios","getPatcher","patch","createClient","commentsType","ressourceId","message","ressourcePath","join","actorDisplayName","getCurrentUser","displayName","actorId","uid","actorType","creationDateTime","Date","toUTCString","objectType","verb","response","commentId","parseInt","headers","split","pop","commentPath","client","details","comment","data","assign","method","props","type","Number","default","String","required","deleted","editing","loading","methods","onEdit","onEditCancel","updateLocalMessage","onEditComment","EditComment","logger","debug","$emit","showError","t","console","error","onDeleteWithUndo","timeOutDelete","setTimeout","onDelete","TOAST_UNDO_TIMEOUT","showUndo","clearTimeout","DeleteComment","onNewComment","NewComment","newComment","localMessage","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","directives","name","rawName","value","expression","class","isOwnComment","on","_e","editor","ref","autoComplete","onSubmit","isEmptyMessage","expanded","domProps","renderedContent","onExpand","DEFAULT_LIMIT","offset","then","res","parseXML","xml","processMultistatus","comments","processResponsePayload","result","isDetailed","responseItems","multistatus","item","propstat","prop","decodedProps","decodeHtmlEntities","prepareFileFromProps","toString","passes","parser","DOMParser","decoded","i","parseFromString","documentElement","textContent","request","cancelToken","fetch","url","token","cancel","isFirstLoading","_b","editorData","hasComments","done","_l","key","genMentionsData","mentions","$event","$set","scopedSlots","_u","fn","getComments","proxy","getLoggerBuilder","setApp","detectUser","build","Vue","n","CommentInstance","View","CommentsApp","window","OCA","Comments","CommentsInstance","___CSS_LOADER_EXPORT___","push","__webpack_module_cache__","moduleId","cachedModule","undefined","loaded","__webpack_modules__","call","m","amdD","amdO","O","chunkIds","priority","notFulfilled","Infinity","length","fulfilled","j","every","splice","r","getter","__esModule","d","a","definition","defineProperty","enumerable","get","g","globalThis","Function","obj","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/core-files_client.js b/dist/core-files_client.js
index 11738be2491..b65ab09e9e4 100644
--- a/dist/core-files_client.js
+++ b/dist/core-files_client.js
@@ -1,3 +1,3 @@
/*! For license information please see core-files_client.js.LICENSE.txt */
-!function(){"use strict";var e,t={7913:function(e,t,r){var s=r(95573),n=r.n(s);!function(e,t){var r=function t(r){this._root=r.root,"/"===this._root.charAt(this._root.length-1)&&(this._root=this._root.substr(0,this._root.length-1));var s=t.PROTOCOL_HTTP+"://";r.useHTTPS&&(s=t.PROTOCOL_HTTPS+"://"),s+=r.host+this._root,this._host=r.host,this._defaultHeaders=r.defaultHeaders||{"X-Requested-With":"XMLHttpRequest",requesttoken:e.requestToken},this._baseUrl=s;var n={baseUrl:this._baseUrl,xmlNamespaces:{"DAV:":"d","http://owncloud.org/ns":"oc","http://nextcloud.org/ns":"nc","http://open-collaboration-services.org/ns":"ocs"}};r.userName&&(n.userName=r.userName),r.password&&(n.password=r.password),this._client=new dav.Client(n),this._client.xhrProvider=_.bind(this._xhrProvider,this),this._fileInfoParsers=[]};r.NS_OWNCLOUD="http://owncloud.org/ns",r.NS_NEXTCLOUD="http://nextcloud.org/ns",r.NS_DAV="DAV:",r.NS_OCS="http://open-collaboration-services.org/ns",r.PROPERTY_GETLASTMODIFIED="{"+r.NS_DAV+"}getlastmodified",r.PROPERTY_GETETAG="{"+r.NS_DAV+"}getetag",r.PROPERTY_GETCONTENTTYPE="{"+r.NS_DAV+"}getcontenttype",r.PROPERTY_RESOURCETYPE="{"+r.NS_DAV+"}resourcetype",r.PROPERTY_INTERNAL_FILEID="{"+r.NS_OWNCLOUD+"}fileid",r.PROPERTY_PERMISSIONS="{"+r.NS_OWNCLOUD+"}permissions",r.PROPERTY_SIZE="{"+r.NS_OWNCLOUD+"}size",r.PROPERTY_GETCONTENTLENGTH="{"+r.NS_DAV+"}getcontentlength",r.PROPERTY_ISENCRYPTED="{"+r.NS_DAV+"}is-encrypted",r.PROPERTY_SHARE_PERMISSIONS="{"+r.NS_OCS+"}share-permissions",r.PROPERTY_QUOTA_AVAILABLE_BYTES="{"+r.NS_DAV+"}quota-available-bytes",r.PROTOCOL_HTTP="http",r.PROTOCOL_HTTPS="https",r._PROPFIND_PROPERTIES=[[r.NS_DAV,"getlastmodified"],[r.NS_DAV,"getetag"],[r.NS_DAV,"getcontenttype"],[r.NS_DAV,"resourcetype"],[r.NS_OWNCLOUD,"fileid"],[r.NS_OWNCLOUD,"permissions"],[r.NS_OWNCLOUD,"size"],[r.NS_DAV,"getcontentlength"],[r.NS_DAV,"quota-available-bytes"],[r.NS_NEXTCLOUD,"has-preview"],[r.NS_NEXTCLOUD,"mount-type"],[r.NS_NEXTCLOUD,"is-encrypted"],[r.NS_OCS,"share-permissions"]],r.prototype={_root:null,_client:null,_fileInfoParsers:[],_xhrProvider:function(){var t=this._defaultHeaders,r=new XMLHttpRequest,s=r.open;return r.open=function(){var e=s.apply(this,arguments);return _.each(t,(function(e,t){r.setRequestHeader(t,e)})),e},e.registerXHRForErrorProcessing(r),r},_buildUrl:function(){var e=this._buildPath.apply(this,arguments);return"/"===e.charAt([e.length-1])&&(e=e.substr(0,e.length-1)),"/"===e.charAt(0)&&(e=e.substr(1)),this._baseUrl+"/"+e},_buildPath:function(){var t,r=e.joinPaths.apply(this,arguments),s=r.split("/");for(t=0;t<s.length;t++)s[t]=encodeURIComponent(s[t]);return s.join("/")},_parseHeaders:function(e){for(var t=e.split("\n"),r={},s=0;s<t.length;s++){var n=t[s].indexOf(":");if(!(n<0)){var i=t[s].substr(0,n),o=t[s].substr(n+2);r[i]||(r[i]=[]),r[i].push(o)}}return r},_parseEtag:function(e){return'"'===e.charAt(0)?e.split('"')[1]:e},_parseFileInfo:function(s){var n=decodeURIComponent(s.href);if(n.substr(0,this._root.length)===this._root&&(n=n.substr(this._root.length)),"/"===n.charAt(n.length-1)&&(n=n.substr(0,n.length-1)),0===s.propStat.length||"HTTP/1.1 200 OK"!==s.propStat[0].status)return null;var i=s.propStat[0].properties,o={id:i[r.PROPERTY_INTERNAL_FILEID],path:e.dirname(n)||"/",name:e.basename(n),mtime:new Date(i[r.PROPERTY_GETLASTMODIFIED]).getTime()},a=i[r.PROPERTY_GETETAG];_.isUndefined(a)||(o.etag=this._parseEtag(a));var u=i[r.PROPERTY_GETCONTENTLENGTH];_.isUndefined(u)||(o.size=parseInt(u,10)),u=i[r.PROPERTY_SIZE],_.isUndefined(u)||(o.size=parseInt(u,10));var l=i["{"+r.NS_NEXTCLOUD+"}has-preview"];_.isUndefined(l)?o.hasPreview=!0:o.hasPreview="true"===l;var c=i["{"+r.NS_NEXTCLOUD+"}is-encrypted"];_.isUndefined(c)?o.isEncrypted=!1:o.isEncrypted="1"===c;var p=i["{"+r.NS_OWNCLOUD+"}favorite"];_.isUndefined(p)?o.isFavourited=!1:o.isFavourited="1"===p;var f=i[r.PROPERTY_GETCONTENTTYPE];_.isUndefined(f)||(o.mimetype=f);var h=i[r.PROPERTY_RESOURCETYPE];if(!o.mimetype&&h){var d=h[0];d.namespaceURI===r.NS_DAV&&"collection"===d.nodeName.split(":")[1]&&(o.mimetype="httpd/unix-directory")}o.permissions=e.PERMISSION_NONE;var S=i[r.PROPERTY_PERMISSIONS];if(!_.isUndefined(S)){var P=S||"";o.mountType=null;for(var E=0;E<P.length;E++)switch(P.charAt(E)){case"C":case"K":o.permissions|=e.PERMISSION_CREATE;break;case"G":o.permissions|=e.PERMISSION_READ;break;case"W":case"N":case"V":o.permissions|=e.PERMISSION_UPDATE;break;case"D":o.permissions|=e.PERMISSION_DELETE;break;case"R":o.permissions|=e.PERMISSION_SHARE;break;case"M":o.mountType||(o.mountType="external");break;case"S":o.mountType="shared"}}var O=i[r.PROPERTY_SHARE_PERMISSIONS];_.isUndefined(O)||(o.sharePermissions=parseInt(O));var g=i["{"+r.NS_NEXTCLOUD+"}mount-type"];_.isUndefined(g)||(o.mountType=g);var T=i["{"+r.NS_DAV+"}quota-available-bytes"];return _.isUndefined(T)||(o.quotaAvailableBytes=T),_.each(this._fileInfoParsers,(function(e){_.extend(o,e(s,o)||{})})),new t(o)},_parseResult:function(e){var t=this;return _.map(e,(function(e){return t._parseFileInfo(e)}))},_isSuccessStatus:function(e){return e>=200&&e<=299},_getSabreException:function(e){var t={},r=e.xhr.responseXML;if(null===r)return t;var s=r.getElementsByTagNameNS("http://sabredav.org/ns","message"),n=r.getElementsByTagNameNS("http://sabredav.org/ns","exception");return s.length&&(t.message=s[0].textContent),n.length&&(t.exception=n[0].textContent),t},getPropfindProperties:function(){return this._propfindProperties||(this._propfindProperties=_.map(r._PROPFIND_PROPERTIES,(function(e){return"{"+e[0]+"}"+e[1]}))),this._propfindProperties},getFolderContents:function(e,t){e||(e=""),t=t||{};var r,s=this,n=$.Deferred(),i=n.promise();return r=_.isUndefined(t.properties)?this.getPropfindProperties():t.properties,this._client.propFind(this._buildUrl(e),r,1).then((function(e){if(s._isSuccessStatus(e.status)){var r=s._parseResult(e.body);t&&t.includeParent||r.shift(),n.resolve(e.status,r)}else e=_.extend(e,s._getSabreException(e)),n.reject(e.status,e)})),i},getFilteredFiles:function(e,t){t=t||{};var r,s=this,i=$.Deferred(),o=i.promise();if(r=_.isUndefined(t.properties)?this.getPropfindProperties():t.properties,!e||!e.systemTagIds&&_.isUndefined(e.favorite)&&!e.circlesIds)throw"Missing filter argument";var a,u="<oc:filter-files ";for(a in this._client.xmlNamespaces)u+=" xmlns:"+this._client.xmlNamespaces[a]+'="'+a+'"';return u+=">\n",u+=" <"+this._client.xmlNamespaces["DAV:"]+":prop>\n",_.each(r,(function(e){var t=s._client.parseClarkNotation(e);u+=" <"+s._client.xmlNamespaces[t.namespace]+":"+t.name+" />\n"})),u+=" </"+this._client.xmlNamespaces["DAV:"]+":prop>\n",u+=" <oc:filter-rules>\n",_.each(e.systemTagIds,(function(e){u+=" <oc:systemtag>"+n()(e)+"</oc:systemtag>\n"})),_.each(e.circlesIds,(function(e){u+=" <oc:circle>"+n()(e)+"</oc:circle>\n"})),e.favorite&&(u+=" <oc:favorite>"+(e.favorite?"1":"0")+"</oc:favorite>\n"),u+=" </oc:filter-rules>\n",u+="</oc:filter-files>\n",this._client.request("REPORT",this._buildUrl(),{},u).then((function(e){if(s._isSuccessStatus(e.status)){var t=s._parseResult(e.body);i.resolve(e.status,t)}else e=_.extend(e,s._getSabreException(e)),i.reject(e.status,e)})),o},getFileInfo:function(e,t){e||(e=""),t=t||{};var r,s=this,n=$.Deferred(),i=n.promise();return r=_.isUndefined(t.properties)?this.getPropfindProperties():t.properties,this._client.propFind(this._buildUrl(e),r,0).then((function(e){s._isSuccessStatus(e.status)?n.resolve(e.status,s._parseResult([e.body])[0]):(e=_.extend(e,s._getSabreException(e)),n.reject(e.status,e))})),i},getFileContents:function(e){if(!e)throw'Missing argument "path"';var t=this,r=$.Deferred(),s=r.promise();return this._client.request("GET",this._buildUrl(e)).then((function(e){t._isSuccessStatus(e.status)?r.resolve(e.status,e.body):(e=_.extend(e,t._getSabreException(e)),r.reject(e.status,e))})),s},putFileContents:function(e,t,r){if(!e)throw'Missing argument "path"';var s=this,n=$.Deferred(),i=n.promise(),o={},a="text/plain;charset=utf-8";return(r=r||{}).contentType&&(a=r.contentType),o["Content-Type"]=a,(_.isUndefined(r.overwrite)||r.overwrite)&&(o["If-None-Match"]="*"),this._client.request("PUT",this._buildUrl(e),o,t||"").then((function(e){s._isSuccessStatus(e.status)?n.resolve(e.status):(e=_.extend(e,s._getSabreException(e)),n.reject(e.status,e))})),i},_simpleCall:function(e,t){if(!t)throw'Missing argument "path"';var r=this,s=$.Deferred(),n=s.promise();return this._client.request(e,this._buildUrl(t)).then((function(e){r._isSuccessStatus(e.status)?s.resolve(e.status):(e=_.extend(e,r._getSabreException(e)),s.reject(e.status,e))})),n},createDirectory:function(e){return this._simpleCall("MKCOL",e)},remove:function(e){return this._simpleCall("DELETE",e)},move:function(e,t,r,s){if(!e)throw'Missing argument "path"';if(!t)throw'Missing argument "destinationPath"';var n=this,i=$.Deferred(),o=i.promise();return s=_.extend({},s,{Destination:this._buildUrl(t)}),r||(s.Overwrite="F"),this._client.request("MOVE",this._buildUrl(e),s).then((function(e){n._isSuccessStatus(e.status)?i.resolve(e.status):(e=_.extend(e,n._getSabreException(e)),i.reject(e.status,e))})),o},copy:function(e,t,r){if(!e)throw'Missing argument "path"';if(!t)throw'Missing argument "destinationPath"';var s=this,n=$.Deferred(),i=n.promise(),o={Destination:this._buildUrl(t)};return r||(o.Overwrite="F"),this._client.request("COPY",this._buildUrl(e),o).then((function(e){s._isSuccessStatus(e.status)?n.resolve(e.status):n.reject(e.status)})),i},addFileInfoParser:function(e){this._fileInfoParsers.push(e)},getClient:function(){return this._client},getUserName:function(){return this._client.userName},getPassword:function(){return this._client.password},getBaseUrl:function(){return this._client.baseUrl},getHost:function(){return this._host}},e.Files||(e.Files={}),e.Files.getClient=function(){if(e.Files._defaultClient)return e.Files._defaultClient;var t=new e.Files.Client({host:e.getHost(),port:e.getPort(),root:e.linkToRemoteBase("dav")+"/files/"+e.getCurrentUser().uid,useHTTPS:"https"===e.getProtocol()});return e.Files._defaultClient=t,t},e.Files.Client=r}(OC,OC.Files.FileInfo)}},r={};function s(e){var n=r[e];if(void 0!==n)return n.exports;var i=r[e]={id:e,loaded:!1,exports:{}};return t[e].call(i.exports,i,i.exports,s),i.loaded=!0,i.exports}s.m=t,s.amdD=function(){throw new Error("define cannot be used indirect")},s.amdO={},e=[],s.O=function(t,r,n,i){if(!r){var o=1/0;for(c=0;c<e.length;c++){r=e[c][0],n=e[c][1],i=e[c][2];for(var a=!0,u=0;u<r.length;u++)(!1&i||o>=i)&&Object.keys(s.O).every((function(e){return s.O[e](r[u])}))?r.splice(u--,1):(a=!1,i<o&&(o=i));if(a){e.splice(c--,1);var l=n();void 0!==l&&(t=l)}}return t}i=i||0;for(var c=e.length;c>0&&e[c-1][2]>i;c--)e[c]=e[c-1];e[c]=[r,n,i]},s.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return s.d(t,{a:t}),t},s.d=function(e,t){for(var r in t)s.o(t,r)&&!s.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},s.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},s.j=5578,function(){s.b=document.baseURI||self.location.href;var e={5578:0};s.O.j=function(t){return 0===e[t]};var t=function(t,r){var n,i,o=r[0],a=r[1],u=r[2],l=0;if(o.some((function(t){return 0!==e[t]}))){for(n in a)s.o(a,n)&&(s.m[n]=a[n]);if(u)var c=u(s)}for(t&&t(r);l<o.length;l++)i=o[l],s.o(e,i)&&e[i]&&e[i][0](),e[i]=0;return s.O(c)},r=self.webpackChunknextcloud=self.webpackChunknextcloud||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))}();var n=s.O(void 0,[7874],(function(){return s(7913)}));n=s.O(n)}();
-//# sourceMappingURL=core-files_client.js.map?v=73d426f3c581a757addc \ No newline at end of file
+!function(){"use strict";var e,t={7913:function(e,t,r){var s=r(95573),n=r.n(s);!function(e,t){var r=function t(r){this._root=r.root,"/"===this._root.charAt(this._root.length-1)&&(this._root=this._root.substr(0,this._root.length-1));var s=t.PROTOCOL_HTTP+"://";r.useHTTPS&&(s=t.PROTOCOL_HTTPS+"://"),s+=r.host+this._root,this._host=r.host,this._defaultHeaders=r.defaultHeaders||{"X-Requested-With":"XMLHttpRequest",requesttoken:e.requestToken},this._baseUrl=s;var n={baseUrl:this._baseUrl,xmlNamespaces:{"DAV:":"d","http://owncloud.org/ns":"oc","http://nextcloud.org/ns":"nc","http://open-collaboration-services.org/ns":"ocs"}};r.userName&&(n.userName=r.userName),r.password&&(n.password=r.password),this._client=new dav.Client(n),this._client.xhrProvider=_.bind(this._xhrProvider,this),this._fileInfoParsers=[]};r.NS_OWNCLOUD="http://owncloud.org/ns",r.NS_NEXTCLOUD="http://nextcloud.org/ns",r.NS_DAV="DAV:",r.NS_OCS="http://open-collaboration-services.org/ns",r.PROPERTY_GETLASTMODIFIED="{"+r.NS_DAV+"}getlastmodified",r.PROPERTY_GETETAG="{"+r.NS_DAV+"}getetag",r.PROPERTY_GETCONTENTTYPE="{"+r.NS_DAV+"}getcontenttype",r.PROPERTY_RESOURCETYPE="{"+r.NS_DAV+"}resourcetype",r.PROPERTY_INTERNAL_FILEID="{"+r.NS_OWNCLOUD+"}fileid",r.PROPERTY_PERMISSIONS="{"+r.NS_OWNCLOUD+"}permissions",r.PROPERTY_SIZE="{"+r.NS_OWNCLOUD+"}size",r.PROPERTY_GETCONTENTLENGTH="{"+r.NS_DAV+"}getcontentlength",r.PROPERTY_ISENCRYPTED="{"+r.NS_DAV+"}is-encrypted",r.PROPERTY_SHARE_PERMISSIONS="{"+r.NS_OCS+"}share-permissions",r.PROPERTY_QUOTA_AVAILABLE_BYTES="{"+r.NS_DAV+"}quota-available-bytes",r.PROTOCOL_HTTP="http",r.PROTOCOL_HTTPS="https",r._PROPFIND_PROPERTIES=[[r.NS_DAV,"getlastmodified"],[r.NS_DAV,"getetag"],[r.NS_DAV,"getcontenttype"],[r.NS_DAV,"resourcetype"],[r.NS_OWNCLOUD,"fileid"],[r.NS_OWNCLOUD,"permissions"],[r.NS_OWNCLOUD,"size"],[r.NS_DAV,"getcontentlength"],[r.NS_DAV,"quota-available-bytes"],[r.NS_NEXTCLOUD,"has-preview"],[r.NS_NEXTCLOUD,"mount-type"],[r.NS_NEXTCLOUD,"is-encrypted"],[r.NS_OCS,"share-permissions"]],r.prototype={_root:null,_client:null,_fileInfoParsers:[],_xhrProvider:function(){var t=this._defaultHeaders,r=new XMLHttpRequest,s=r.open;return r.open=function(){var e=s.apply(this,arguments);return _.each(t,(function(e,t){r.setRequestHeader(t,e)})),e},e.registerXHRForErrorProcessing(r),r},_buildUrl:function(){var e=this._buildPath.apply(this,arguments);return"/"===e.charAt([e.length-1])&&(e=e.substr(0,e.length-1)),"/"===e.charAt(0)&&(e=e.substr(1)),this._baseUrl+"/"+e},_buildPath:function(){var t,r=e.joinPaths.apply(this,arguments),s=r.split("/");for(t=0;t<s.length;t++)s[t]=encodeURIComponent(s[t]);return s.join("/")},_parseHeaders:function(e){for(var t=e.split("\n"),r={},s=0;s<t.length;s++){var n=t[s].indexOf(":");if(!(n<0)){var i=t[s].substr(0,n),o=t[s].substr(n+2);r[i]||(r[i]=[]),r[i].push(o)}}return r},_parseEtag:function(e){return'"'===e.charAt(0)?e.split('"')[1]:e},_parseFileInfo:function(s){var n=decodeURIComponent(s.href);if(n.substr(0,this._root.length)===this._root&&(n=n.substr(this._root.length)),"/"===n.charAt(n.length-1)&&(n=n.substr(0,n.length-1)),0===s.propStat.length||"HTTP/1.1 200 OK"!==s.propStat[0].status)return null;var i=s.propStat[0].properties,o={id:i[r.PROPERTY_INTERNAL_FILEID],path:e.dirname(n)||"/",name:e.basename(n),mtime:new Date(i[r.PROPERTY_GETLASTMODIFIED]).getTime()},a=i[r.PROPERTY_GETETAG];_.isUndefined(a)||(o.etag=this._parseEtag(a));var u=i[r.PROPERTY_GETCONTENTLENGTH];_.isUndefined(u)||(o.size=parseInt(u,10)),u=i[r.PROPERTY_SIZE],_.isUndefined(u)||(o.size=parseInt(u,10));var c=i["{"+r.NS_NEXTCLOUD+"}has-preview"];_.isUndefined(c)?o.hasPreview=!0:o.hasPreview="true"===c;var l=i["{"+r.NS_NEXTCLOUD+"}is-encrypted"];_.isUndefined(l)?o.isEncrypted=!1:o.isEncrypted="1"===l;var p=i["{"+r.NS_OWNCLOUD+"}favorite"];_.isUndefined(p)?o.isFavourited=!1:o.isFavourited="1"===p;var f=i[r.PROPERTY_GETCONTENTTYPE];_.isUndefined(f)||(o.mimetype=f);var h=i[r.PROPERTY_RESOURCETYPE];if(!o.mimetype&&h){var d=h[0];d.namespaceURI===r.NS_DAV&&"collection"===d.nodeName.split(":")[1]&&(o.mimetype="httpd/unix-directory")}o.permissions=e.PERMISSION_NONE;var S=i[r.PROPERTY_PERMISSIONS];if(!_.isUndefined(S)){var P=S||"";o.mountType=null;for(var E=0;E<P.length;E++)switch(P.charAt(E)){case"C":case"K":o.permissions|=e.PERMISSION_CREATE;break;case"G":o.permissions|=e.PERMISSION_READ;break;case"W":case"N":case"V":o.permissions|=e.PERMISSION_UPDATE;break;case"D":o.permissions|=e.PERMISSION_DELETE;break;case"R":o.permissions|=e.PERMISSION_SHARE;break;case"M":o.mountType||(o.mountType="external");break;case"S":o.mountType="shared"}}var O=i[r.PROPERTY_SHARE_PERMISSIONS];_.isUndefined(O)||(o.sharePermissions=parseInt(O));var g=i["{"+r.NS_NEXTCLOUD+"}mount-type"];_.isUndefined(g)||(o.mountType=g);var T=i["{"+r.NS_DAV+"}quota-available-bytes"];return _.isUndefined(T)||(o.quotaAvailableBytes=T),_.each(this._fileInfoParsers,(function(e){_.extend(o,e(s,o)||{})})),new t(o)},_parseResult:function(e){var t=this;return _.map(e,(function(e){return t._parseFileInfo(e)}))},_isSuccessStatus:function(e){return e>=200&&e<=299},_getSabreException:function(e){var t={},r=e.xhr.responseXML;if(null===r)return t;var s=r.getElementsByTagNameNS("http://sabredav.org/ns","message"),n=r.getElementsByTagNameNS("http://sabredav.org/ns","exception");return s.length&&(t.message=s[0].textContent),n.length&&(t.exception=n[0].textContent),t},getPropfindProperties:function(){return this._propfindProperties||(this._propfindProperties=_.map(r._PROPFIND_PROPERTIES,(function(e){return"{"+e[0]+"}"+e[1]}))),this._propfindProperties},getFolderContents:function(e,t){e||(e=""),t=t||{};var r,s=this,n=$.Deferred(),i=n.promise();return r=_.isUndefined(t.properties)?this.getPropfindProperties():t.properties,this._client.propFind(this._buildUrl(e),r,1).then((function(e){if(s._isSuccessStatus(e.status)){var r=s._parseResult(e.body);t&&t.includeParent||r.shift(),n.resolve(e.status,r)}else e=_.extend(e,s._getSabreException(e)),n.reject(e.status,e)})),i},getFilteredFiles:function(e,t){t=t||{};var r,s=this,i=$.Deferred(),o=i.promise();if(r=_.isUndefined(t.properties)?this.getPropfindProperties():t.properties,!e||!e.systemTagIds&&_.isUndefined(e.favorite)&&!e.circlesIds)throw"Missing filter argument";var a,u="<oc:filter-files ";for(a in this._client.xmlNamespaces)u+=" xmlns:"+this._client.xmlNamespaces[a]+'="'+a+'"';return u+=">\n",u+=" <"+this._client.xmlNamespaces["DAV:"]+":prop>\n",_.each(r,(function(e){var t=s._client.parseClarkNotation(e);u+=" <"+s._client.xmlNamespaces[t.namespace]+":"+t.name+" />\n"})),u+=" </"+this._client.xmlNamespaces["DAV:"]+":prop>\n",u+=" <oc:filter-rules>\n",_.each(e.systemTagIds,(function(e){u+=" <oc:systemtag>"+n()(e)+"</oc:systemtag>\n"})),_.each(e.circlesIds,(function(e){u+=" <oc:circle>"+n()(e)+"</oc:circle>\n"})),e.favorite&&(u+=" <oc:favorite>"+(e.favorite?"1":"0")+"</oc:favorite>\n"),u+=" </oc:filter-rules>\n",u+="</oc:filter-files>\n",this._client.request("REPORT",this._buildUrl(),{},u).then((function(e){if(s._isSuccessStatus(e.status)){var t=s._parseResult(e.body);i.resolve(e.status,t)}else e=_.extend(e,s._getSabreException(e)),i.reject(e.status,e)})),o},getFileInfo:function(e,t){e||(e=""),t=t||{};var r,s=this,n=$.Deferred(),i=n.promise();return r=_.isUndefined(t.properties)?this.getPropfindProperties():t.properties,this._client.propFind(this._buildUrl(e),r,0).then((function(e){s._isSuccessStatus(e.status)?n.resolve(e.status,s._parseResult([e.body])[0]):(e=_.extend(e,s._getSabreException(e)),n.reject(e.status,e))})),i},getFileContents:function(e){if(!e)throw'Missing argument "path"';var t=this,r=$.Deferred(),s=r.promise();return this._client.request("GET",this._buildUrl(e)).then((function(e){t._isSuccessStatus(e.status)?r.resolve(e.status,e.body):(e=_.extend(e,t._getSabreException(e)),r.reject(e.status,e))})),s},putFileContents:function(e,t,r){if(!e)throw'Missing argument "path"';var s=this,n=$.Deferred(),i=n.promise(),o={},a="text/plain;charset=utf-8";return(r=r||{}).contentType&&(a=r.contentType),o["Content-Type"]=a,(_.isUndefined(r.overwrite)||r.overwrite)&&(o["If-None-Match"]="*"),this._client.request("PUT",this._buildUrl(e),o,t||"").then((function(e){s._isSuccessStatus(e.status)?n.resolve(e.status):(e=_.extend(e,s._getSabreException(e)),n.reject(e.status,e))})),i},_simpleCall:function(e,t){if(!t)throw'Missing argument "path"';var r=this,s=$.Deferred(),n=s.promise();return this._client.request(e,this._buildUrl(t)).then((function(e){r._isSuccessStatus(e.status)?s.resolve(e.status):(e=_.extend(e,r._getSabreException(e)),s.reject(e.status,e))})),n},createDirectory:function(e){return this._simpleCall("MKCOL",e)},remove:function(e){return this._simpleCall("DELETE",e)},move:function(e,t,r,s){if(!e)throw'Missing argument "path"';if(!t)throw'Missing argument "destinationPath"';var n=this,i=$.Deferred(),o=i.promise();return s=_.extend({},s,{Destination:this._buildUrl(t)}),r||(s.Overwrite="F"),this._client.request("MOVE",this._buildUrl(e),s).then((function(e){n._isSuccessStatus(e.status)?i.resolve(e.status):(e=_.extend(e,n._getSabreException(e)),i.reject(e.status,e))})),o},copy:function(e,t,r){if(!e)throw'Missing argument "path"';if(!t)throw'Missing argument "destinationPath"';var s=this,n=$.Deferred(),i=n.promise(),o={Destination:this._buildUrl(t)};return r||(o.Overwrite="F"),this._client.request("COPY",this._buildUrl(e),o).then((function(e){s._isSuccessStatus(e.status)?n.resolve(e.status):n.reject(e.status)})),i},addFileInfoParser:function(e){this._fileInfoParsers.push(e)},getClient:function(){return this._client},getUserName:function(){return this._client.userName},getPassword:function(){return this._client.password},getBaseUrl:function(){return this._client.baseUrl},getHost:function(){return this._host}},e.Files||(e.Files={}),e.Files.getClient=function(){if(e.Files._defaultClient)return e.Files._defaultClient;var t=new e.Files.Client({host:e.getHost(),port:e.getPort(),root:e.linkToRemoteBase("dav")+"/files/"+e.getCurrentUser().uid,useHTTPS:"https"===e.getProtocol()});return e.Files._defaultClient=t,t},e.Files.Client=r}(OC,OC.Files.FileInfo)}},r={};function s(e){var n=r[e];if(void 0!==n)return n.exports;var i=r[e]={id:e,loaded:!1,exports:{}};return t[e].call(i.exports,i,i.exports,s),i.loaded=!0,i.exports}s.m=t,s.amdD=function(){throw new Error("define cannot be used indirect")},s.amdO={},e=[],s.O=function(t,r,n,i){if(!r){var o=1/0;for(l=0;l<e.length;l++){r=e[l][0],n=e[l][1],i=e[l][2];for(var a=!0,u=0;u<r.length;u++)(!1&i||o>=i)&&Object.keys(s.O).every((function(e){return s.O[e](r[u])}))?r.splice(u--,1):(a=!1,i<o&&(o=i));if(a){e.splice(l--,1);var c=n();void 0!==c&&(t=c)}}return t}i=i||0;for(var l=e.length;l>0&&e[l-1][2]>i;l--)e[l]=e[l-1];e[l]=[r,n,i]},s.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return s.d(t,{a:t}),t},s.d=function(e,t){for(var r in t)s.o(t,r)&&!s.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},s.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},s.j=5578,function(){s.b=document.baseURI||self.location.href;var e={5578:0};s.O.j=function(t){return 0===e[t]};var t=function(t,r){var n,i,o=r[0],a=r[1],u=r[2],c=0;if(o.some((function(t){return 0!==e[t]}))){for(n in a)s.o(a,n)&&(s.m[n]=a[n]);if(u)var l=u(s)}for(t&&t(r);c<o.length;c++)i=o[c],s.o(e,i)&&e[i]&&e[i][0](),e[i]=0;return s.O(l)},r=self.webpackChunknextcloud=self.webpackChunknextcloud||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))}(),s.nc=void 0;var n=s.O(void 0,[7874],(function(){return s(7913)}));n=s.O(n)}();
+//# sourceMappingURL=core-files_client.js.map?v=7c6efbc8a9fe59968af1 \ No newline at end of file
diff --git a/dist/core-files_client.js.map b/dist/core-files_client.js.map
index 58f3dcf8e59..d6e8df620d5 100644
--- a/dist/core-files_client.js.map
+++ b/dist/core-files_client.js.map
@@ -1 +1 @@
-{"version":3,"file":"core-files_client.js?v=73d426f3c581a757addc","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/files/client.js","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 (c) 2015\n *\n * @author Bjoern Schiessle <bjoern@schiessle.org>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Lukas Reschke <lukas@statuscode.ch>\n * @author Michael Jobst <mjobst+github@tecratech.de>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Thomas Citharel <nextcloud@tcit.fr>\n * @author Tomasz Grobelny <tomasz@grobelny.net>\n * @author Vincent Petry <vincent@nextcloud.com>\n * @author Vinicius Cubas Brand <vinicius@eita.org.br>\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 */\n\n/* eslint-disable */\nimport escapeHTML from 'escape-html'\n\n/* global dav */\n\n(function(OC, FileInfo) {\n\t/**\n\t * @class OC.Files.Client\n\t * @classdesc Client to access files on the server\n\t *\n\t * @param {Object} options\n\t * @param {String} options.host host name\n\t * @param {number} [options.port] port\n\t * @param {boolean} [options.useHTTPS] whether to use https\n\t * @param {String} [options.root] root path\n\t * @param {String} [options.userName] user name\n\t * @param {String} [options.password] password\n\t *\n\t * @since 8.2\n\t */\n\tvar Client = function(options) {\n\t\tthis._root = options.root\n\t\tif (this._root.charAt(this._root.length - 1) === '/') {\n\t\t\tthis._root = this._root.substr(0, this._root.length - 1)\n\t\t}\n\n\t\tlet url = Client.PROTOCOL_HTTP + '://'\n\t\tif (options.useHTTPS) {\n\t\t\turl = Client.PROTOCOL_HTTPS + '://'\n\t\t}\n\n\t\turl += options.host + this._root\n\t\tthis._host = options.host\n\t\tthis._defaultHeaders = options.defaultHeaders || {\n\t\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t\t'requesttoken': OC.requestToken,\n\t\t}\n\t\tthis._baseUrl = url\n\n\t\tconst clientOptions = {\n\t\t\tbaseUrl: this._baseUrl,\n\t\t\txmlNamespaces: {\n\t\t\t\t'DAV:': 'd',\n\t\t\t\t'http://owncloud.org/ns': 'oc',\n\t\t\t\t'http://nextcloud.org/ns': 'nc',\n\t\t\t\t'http://open-collaboration-services.org/ns': 'ocs',\n\t\t\t},\n\t\t}\n\t\tif (options.userName) {\n\t\t\tclientOptions.userName = options.userName\n\t\t}\n\t\tif (options.password) {\n\t\t\tclientOptions.password = options.password\n\t\t}\n\t\tthis._client = new dav.Client(clientOptions)\n\t\tthis._client.xhrProvider = _.bind(this._xhrProvider, this)\n\t\tthis._fileInfoParsers = []\n\t}\n\n\tClient.NS_OWNCLOUD = 'http://owncloud.org/ns'\n\tClient.NS_NEXTCLOUD = 'http://nextcloud.org/ns'\n\tClient.NS_DAV = 'DAV:'\n\tClient.NS_OCS = 'http://open-collaboration-services.org/ns'\n\n\tClient.PROPERTY_GETLASTMODIFIED\t= '{' + Client.NS_DAV + '}getlastmodified'\n\tClient.PROPERTY_GETETAG\t= '{' + Client.NS_DAV + '}getetag'\n\tClient.PROPERTY_GETCONTENTTYPE\t= '{' + Client.NS_DAV + '}getcontenttype'\n\tClient.PROPERTY_RESOURCETYPE\t= '{' + Client.NS_DAV + '}resourcetype'\n\tClient.PROPERTY_INTERNAL_FILEID\t= '{' + Client.NS_OWNCLOUD + '}fileid'\n\tClient.PROPERTY_PERMISSIONS\t= '{' + Client.NS_OWNCLOUD + '}permissions'\n\tClient.PROPERTY_SIZE\t= '{' + Client.NS_OWNCLOUD + '}size'\n\tClient.PROPERTY_GETCONTENTLENGTH\t= '{' + Client.NS_DAV + '}getcontentlength'\n\tClient.PROPERTY_ISENCRYPTED\t= '{' + Client.NS_DAV + '}is-encrypted'\n\tClient.PROPERTY_SHARE_PERMISSIONS\t= '{' + Client.NS_OCS + '}share-permissions'\n\tClient.PROPERTY_QUOTA_AVAILABLE_BYTES\t= '{' + Client.NS_DAV + '}quota-available-bytes'\n\n\tClient.PROTOCOL_HTTP\t= 'http'\n\tClient.PROTOCOL_HTTPS\t= 'https'\n\n\tClient._PROPFIND_PROPERTIES = [\n\t\t/**\n\t\t * Modified time\n\t\t */\n\t\t[Client.NS_DAV, 'getlastmodified'],\n\t\t/**\n\t\t * Etag\n\t\t */\n\t\t[Client.NS_DAV, 'getetag'],\n\t\t/**\n\t\t * Mime type\n\t\t */\n\t\t[Client.NS_DAV, 'getcontenttype'],\n\t\t/**\n\t\t * Resource type \"collection\" for folders, empty otherwise\n\t\t */\n\t\t[Client.NS_DAV, 'resourcetype'],\n\t\t/**\n\t\t * File id\n\t\t */\n\t\t[Client.NS_OWNCLOUD, 'fileid'],\n\t\t/**\n\t\t * Letter-coded permissions\n\t\t */\n\t\t[Client.NS_OWNCLOUD, 'permissions'],\n\t\t// [Client.NS_OWNCLOUD, 'downloadURL'],\n\t\t/**\n\t\t * Folder sizes\n\t\t */\n\t\t[Client.NS_OWNCLOUD, 'size'],\n\t\t/**\n\t\t * File sizes\n\t\t */\n\t\t[Client.NS_DAV, 'getcontentlength'],\n\t\t[Client.NS_DAV, 'quota-available-bytes'],\n\t\t/**\n\t\t * Preview availability\n\t\t */\n\t\t[Client.NS_NEXTCLOUD, 'has-preview'],\n\t\t/**\n\t\t * Mount type\n\t\t */\n\t\t[Client.NS_NEXTCLOUD, 'mount-type'],\n\t\t/**\n\t\t * Encryption state\n\t\t */\n\t\t[Client.NS_NEXTCLOUD, 'is-encrypted'],\n\t\t/**\n\t\t * Share permissions\n\t\t */\n\t\t[Client.NS_OCS, 'share-permissions'],\n\t]\n\n\t/**\n\t * @memberof OC.Files\n\t */\n\tClient.prototype = {\n\n\t\t/**\n\t\t * Root path of the Webdav endpoint\n\t\t *\n\t\t * @type string\n\t\t */\n\t\t_root: null,\n\n\t\t/**\n\t\t * Client from the library\n\t\t *\n\t\t * @type dav.Client\n\t\t */\n\t\t_client: null,\n\n\t\t/**\n\t\t * Array of file info parsing functions.\n\t\t *\n\t\t * @type Array<OC.Files.Client~parseFileInfo>\n\t\t */\n\t\t_fileInfoParsers: [],\n\n\t\t/**\n\t\t * Returns the configured XHR provider for davclient\n\t\t * @returns {XMLHttpRequest}\n\t\t */\n\t\t_xhrProvider: function() {\n\t\t\tconst headers = this._defaultHeaders\n\t\t\tconst xhr = new XMLHttpRequest()\n\t\t\tconst oldOpen = xhr.open\n\t\t\t// override open() method to add headers\n\t\t\txhr.open = function() {\n\t\t\t\tconst result = oldOpen.apply(this, arguments)\n\t\t\t\t_.each(headers, function(value, key) {\n\t\t\t\t\txhr.setRequestHeader(key, value)\n\t\t\t\t})\n\t\t\t\treturn result\n\t\t\t}\n\n\t\t\tOC.registerXHRForErrorProcessing(xhr)\n\t\t\treturn xhr\n\t\t},\n\n\t\t/**\n\t\t * Prepends the base url to the given path sections\n\t\t *\n\t\t * @param {...String} path sections\n\t\t *\n\t\t * @returns {String} base url + joined path, any leading or trailing slash\n\t\t * will be kept\n\t\t */\n\t\t_buildUrl: function() {\n\t\t\tlet path = this._buildPath.apply(this, arguments)\n\t\t\tif (path.charAt([path.length - 1]) === '/') {\n\t\t\t\tpath = path.substr(0, path.length - 1)\n\t\t\t}\n\t\t\tif (path.charAt(0) === '/') {\n\t\t\t\tpath = path.substr(1)\n\t\t\t}\n\t\t\treturn this._baseUrl + '/' + path\n\t\t},\n\n\t\t/**\n\t\t * Append the path to the root and also encode path\n\t\t * sections\n\t\t *\n\t\t * @param {...String} path sections\n\t\t *\n\t\t * @returns {String} joined path, any leading or trailing slash\n\t\t * will be kept\n\t\t */\n\t\t_buildPath: function() {\n\t\t\tlet path = OC.joinPaths.apply(this, arguments)\n\t\t\tconst sections = path.split('/')\n\t\t\tlet i\n\t\t\tfor (i = 0; i < sections.length; i++) {\n\t\t\t\tsections[i] = encodeURIComponent(sections[i])\n\t\t\t}\n\t\t\tpath = sections.join('/')\n\t\t\treturn path\n\t\t},\n\n\t\t/**\n\t\t * Parse headers string into a map\n\t\t *\n\t\t * @param {string} headersString headers list as string\n\t\t *\n\t\t * @returns {Object.<String,Array>} map of header name to header contents\n\t\t */\n\t\t_parseHeaders: function(headersString) {\n\t\t\tconst headerRows = headersString.split('\\n')\n\t\t\tconst headers = {}\n\t\t\tfor (let i = 0; i < headerRows.length; i++) {\n\t\t\t\tconst sepPos = headerRows[i].indexOf(':')\n\t\t\t\tif (sepPos < 0) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tconst headerName = headerRows[i].substr(0, sepPos)\n\t\t\t\tconst headerValue = headerRows[i].substr(sepPos + 2)\n\n\t\t\t\tif (!headers[headerName]) {\n\t\t\t\t\t// make it an array\n\t\t\t\t\theaders[headerName] = []\n\t\t\t\t}\n\n\t\t\t\theaders[headerName].push(headerValue)\n\t\t\t}\n\t\t\treturn headers\n\t\t},\n\n\t\t/**\n\t\t * Parses the etag response which is in double quotes.\n\t\t *\n\t\t * @param {string} etag etag value in double quotes\n\t\t *\n\t\t * @returns {string} etag without double quotes\n\t\t */\n\t\t_parseEtag: function(etag) {\n\t\t\tif (etag.charAt(0) === '\"') {\n\t\t\t\treturn etag.split('\"')[1]\n\t\t\t}\n\t\t\treturn etag\n\t\t},\n\n\t\t/**\n\t\t * Parse Webdav result\n\t\t *\n\t\t * @param {Object} response XML object\n\t\t *\n\t\t * @returns {Array.<FileInfo>} array of file info\n\t\t */\n\t\t_parseFileInfo: function(response) {\n\t\t\tlet path = decodeURIComponent(response.href)\n\t\t\tif (path.substr(0, this._root.length) === this._root) {\n\t\t\t\tpath = path.substr(this._root.length)\n\t\t\t}\n\n\t\t\tif (path.charAt(path.length - 1) === '/') {\n\t\t\t\tpath = path.substr(0, path.length - 1)\n\t\t\t}\n\n\t\t\tif (response.propStat.length === 0 || response.propStat[0].status !== 'HTTP/1.1 200 OK') {\n\t\t\t\treturn null\n\t\t\t}\n\n\t\t\tconst props = response.propStat[0].properties\n\n\t\t\tconst data = {\n\t\t\t\tid: props[Client.PROPERTY_INTERNAL_FILEID],\n\t\t\t\tpath: OC.dirname(path) || '/',\n\t\t\t\tname: OC.basename(path),\n\t\t\t\tmtime: (new Date(props[Client.PROPERTY_GETLASTMODIFIED])).getTime(),\n\t\t\t}\n\n\t\t\tconst etagProp = props[Client.PROPERTY_GETETAG]\n\t\t\tif (!_.isUndefined(etagProp)) {\n\t\t\t\tdata.etag = this._parseEtag(etagProp)\n\t\t\t}\n\n\t\t\tlet sizeProp = props[Client.PROPERTY_GETCONTENTLENGTH]\n\t\t\tif (!_.isUndefined(sizeProp)) {\n\t\t\t\tdata.size = parseInt(sizeProp, 10)\n\t\t\t}\n\n\t\t\tsizeProp = props[Client.PROPERTY_SIZE]\n\t\t\tif (!_.isUndefined(sizeProp)) {\n\t\t\t\tdata.size = parseInt(sizeProp, 10)\n\t\t\t}\n\n\t\t\tconst hasPreviewProp = props['{' + Client.NS_NEXTCLOUD + '}has-preview']\n\t\t\tif (!_.isUndefined(hasPreviewProp)) {\n\t\t\t\tdata.hasPreview = hasPreviewProp === 'true'\n\t\t\t} else {\n\t\t\t\tdata.hasPreview = true\n\t\t\t}\n\n\t\t\tconst isEncryptedProp = props['{' + Client.NS_NEXTCLOUD + '}is-encrypted']\n\t\t\tif (!_.isUndefined(isEncryptedProp)) {\n\t\t\t\tdata.isEncrypted = isEncryptedProp === '1'\n\t\t\t} else {\n\t\t\t\tdata.isEncrypted = false\n\t\t\t}\n\n\t\t\tconst isFavouritedProp = props['{' + Client.NS_OWNCLOUD + '}favorite']\n\t\t\tif (!_.isUndefined(isFavouritedProp)) {\n\t\t\t\tdata.isFavourited = isFavouritedProp === '1'\n\t\t\t} else {\n\t\t\t\tdata.isFavourited = false\n\t\t\t}\n\n\t\t\tconst contentType = props[Client.PROPERTY_GETCONTENTTYPE]\n\t\t\tif (!_.isUndefined(contentType)) {\n\t\t\t\tdata.mimetype = contentType\n\t\t\t}\n\n\t\t\tconst resType = props[Client.PROPERTY_RESOURCETYPE]\n\t\t\tif (!data.mimetype && resType) {\n\t\t\t\tconst xmlvalue = resType[0]\n\t\t\t\tif (xmlvalue.namespaceURI === Client.NS_DAV && xmlvalue.nodeName.split(':')[1] === 'collection') {\n\t\t\t\t\tdata.mimetype = 'httpd/unix-directory'\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tdata.permissions = OC.PERMISSION_NONE\n\t\t\tconst permissionProp = props[Client.PROPERTY_PERMISSIONS]\n\t\t\tif (!_.isUndefined(permissionProp)) {\n\t\t\t\tconst permString = permissionProp || ''\n\t\t\t\tdata.mountType = null\n\t\t\t\tfor (let i = 0; i < permString.length; i++) {\n\t\t\t\t\tconst c = permString.charAt(i)\n\t\t\t\t\tswitch (c) {\n\t\t\t\t\t// FIXME: twisted permissions\n\t\t\t\t\tcase 'C':\n\t\t\t\t\tcase 'K':\n\t\t\t\t\t\tdata.permissions |= OC.PERMISSION_CREATE\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'G':\n\t\t\t\t\t\tdata.permissions |= OC.PERMISSION_READ\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'W':\n\t\t\t\t\tcase 'N':\n\t\t\t\t\tcase 'V':\n\t\t\t\t\t\tdata.permissions |= OC.PERMISSION_UPDATE\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'D':\n\t\t\t\t\t\tdata.permissions |= OC.PERMISSION_DELETE\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'R':\n\t\t\t\t\t\tdata.permissions |= OC.PERMISSION_SHARE\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'M':\n\t\t\t\t\t\tif (!data.mountType) {\n\t\t\t\t\t\t\t// TODO: how to identify external-root ?\n\t\t\t\t\t\t\tdata.mountType = 'external'\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'S':\n\t\t\t\t\t\t// TODO: how to identify shared-root ?\n\t\t\t\t\t\tdata.mountType = 'shared'\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst sharePermissionsProp = props[Client.PROPERTY_SHARE_PERMISSIONS]\n\t\t\tif (!_.isUndefined(sharePermissionsProp)) {\n\t\t\t\tdata.sharePermissions = parseInt(sharePermissionsProp)\n\t\t\t}\n\n\t\t\tconst mounTypeProp = props['{' + Client.NS_NEXTCLOUD + '}mount-type']\n\t\t\tif (!_.isUndefined(mounTypeProp)) {\n\t\t\t\tdata.mountType = mounTypeProp\n\t\t\t}\n\n\t\t\tconst quotaAvailableBytes = props['{' + Client.NS_DAV + '}quota-available-bytes']\n\t\t\tif (!_.isUndefined(quotaAvailableBytes)) {\n\t\t\t\tdata.quotaAvailableBytes = quotaAvailableBytes\n\t\t\t}\n\n\t\t\t// extend the parsed data using the custom parsers\n\t\t\t_.each(this._fileInfoParsers, function(parserFunction) {\n\t\t\t\t_.extend(data, parserFunction(response, data) || {})\n\t\t\t})\n\n\t\t\treturn new FileInfo(data)\n\t\t},\n\n\t\t/**\n\t\t * Parse Webdav multistatus\n\t\t *\n\t\t * @param {Array} responses\n\t\t */\n\t\t_parseResult: function(responses) {\n\t\t\tconst self = this\n\t\t\treturn _.map(responses, function(response) {\n\t\t\t\treturn self._parseFileInfo(response)\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Returns whether the given status code means success\n\t\t *\n\t\t * @param {number} status status code\n\t\t *\n\t\t * @returns true if status code is between 200 and 299 included\n\t\t */\n\t\t_isSuccessStatus: function(status) {\n\t\t\treturn status >= 200 && status <= 299\n\t\t},\n\n\t\t/**\n\t\t * Parse the Sabre exception out of the given response, if any\n\t\t *\n\t\t * @param {Object} response object\n\t\t * @returns {Object} array of parsed message and exception (only the first one)\n\t\t */\n\t\t_getSabreException: function(response) {\n\t\t\tconst result = {}\n\t\t\tconst xml = response.xhr.responseXML\n\t\t\tif (xml === null) {\n\t\t\t\treturn result\n\t\t\t}\n\t\t\tconst messages = xml.getElementsByTagNameNS('http://sabredav.org/ns', 'message')\n\t\t\tconst exceptions = xml.getElementsByTagNameNS('http://sabredav.org/ns', 'exception')\n\t\t\tif (messages.length) {\n\t\t\t\tresult.message = messages[0].textContent\n\t\t\t}\n\t\t\tif (exceptions.length) {\n\t\t\t\tresult.exception = exceptions[0].textContent\n\t\t\t}\n\t\t\treturn result\n\t\t},\n\n\t\t/**\n\t\t * Returns the default PROPFIND properties to use during a call.\n\t\t *\n\t\t * @returns {Array.<Object>} array of properties\n\t\t */\n\t\tgetPropfindProperties: function() {\n\t\t\tif (!this._propfindProperties) {\n\t\t\t\tthis._propfindProperties = _.map(Client._PROPFIND_PROPERTIES, function(propDef) {\n\t\t\t\t\treturn '{' + propDef[0] + '}' + propDef[1]\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn this._propfindProperties\n\t\t},\n\n\t\t/**\n\t\t * Lists the contents of a directory\n\t\t *\n\t\t * @param {String} path path to retrieve\n\t\t * @param {Object} [options] options\n\t\t * @param {boolean} [options.includeParent=false] set to true to keep\n\t\t * the parent folder in the result list\n\t\t * @param {Array} [options.properties] list of Webdav properties to retrieve\n\t\t *\n\t\t * @returns {Promise} promise\n\t\t */\n\t\tgetFolderContents: function(path, options) {\n\t\t\tif (!path) {\n\t\t\t\tpath = ''\n\t\t\t}\n\t\t\toptions = options || {}\n\t\t\tconst self = this\n\t\t\tconst deferred = $.Deferred()\n\t\t\tconst promise = deferred.promise()\n\t\t\tlet properties\n\t\t\tif (_.isUndefined(options.properties)) {\n\t\t\t\tproperties = this.getPropfindProperties()\n\t\t\t} else {\n\t\t\t\tproperties = options.properties\n\t\t\t}\n\n\t\t\tthis._client.propFind(\n\t\t\t\tthis._buildUrl(path),\n\t\t\t\tproperties,\n\t\t\t\t1\n\t\t\t).then(function(result) {\n\t\t\t\tif (self._isSuccessStatus(result.status)) {\n\t\t\t\t\tconst results = self._parseResult(result.body)\n\t\t\t\t\tif (!options || !options.includeParent) {\n\t\t\t\t\t\t// remove root dir, the first entry\n\t\t\t\t\t\tresults.shift()\n\t\t\t\t\t}\n\t\t\t\t\tdeferred.resolve(result.status, results)\n\t\t\t\t} else {\n\t\t\t\t\tresult = _.extend(result, self._getSabreException(result))\n\t\t\t\t\tdeferred.reject(result.status, result)\n\t\t\t\t}\n\t\t\t})\n\t\t\treturn promise\n\t\t},\n\n\t\t/**\n\t\t * Fetches a flat list of files filtered by a given filter criteria.\n\t\t * (currently system tags and circles are supported)\n\t\t *\n\t\t * @param {Object} filter filter criteria\n\t\t * @param {Object} [filter.systemTagIds] list of system tag ids to filter by\n\t\t * @param {boolean} [filter.favorite] set it to filter by favorites\n\t\t * @param {Object} [options] options\n\t\t * @param {Array} [options.properties] list of Webdav properties to retrieve\n\t\t *\n\t\t * @returns {Promise} promise\n\t\t */\n\t\tgetFilteredFiles: function(filter, options) {\n\t\t\toptions = options || {}\n\t\t\tconst self = this\n\t\t\tconst deferred = $.Deferred()\n\t\t\tconst promise = deferred.promise()\n\t\t\tlet properties\n\t\t\tif (_.isUndefined(options.properties)) {\n\t\t\t\tproperties = this.getPropfindProperties()\n\t\t\t} else {\n\t\t\t\tproperties = options.properties\n\t\t\t}\n\n\t\t\tif (!filter\n\t\t\t\t|| (!filter.systemTagIds && _.isUndefined(filter.favorite) && !filter.circlesIds)) {\n\t\t\t\tthrow 'Missing filter argument'\n\t\t\t}\n\n\t\t\t// root element with namespaces\n\t\t\tlet body = '<oc:filter-files '\n\t\t\tlet namespace\n\t\t\tfor (namespace in this._client.xmlNamespaces) {\n\t\t\t\tbody += ' xmlns:' + this._client.xmlNamespaces[namespace] + '=\"' + namespace + '\"'\n\t\t\t}\n\t\t\tbody += '>\\n'\n\n\t\t\t// properties query\n\t\t\tbody += ' <' + this._client.xmlNamespaces['DAV:'] + ':prop>\\n'\n\t\t\t_.each(properties, function(prop) {\n\t\t\t\tconst property = self._client.parseClarkNotation(prop)\n\t\t\t\tbody += ' <' + self._client.xmlNamespaces[property.namespace] + ':' + property.name + ' />\\n'\n\t\t\t})\n\n\t\t\tbody += ' </' + this._client.xmlNamespaces['DAV:'] + ':prop>\\n'\n\n\t\t\t// rules block\n\t\t\tbody +=\t' <oc:filter-rules>\\n'\n\t\t\t_.each(filter.systemTagIds, function(systemTagIds) {\n\t\t\t\tbody += ' <oc:systemtag>' + escapeHTML(systemTagIds) + '</oc:systemtag>\\n'\n\t\t\t})\n\t\t\t_.each(filter.circlesIds, function(circlesIds) {\n\t\t\t\tbody += ' <oc:circle>' + escapeHTML(circlesIds) + '</oc:circle>\\n'\n\t\t\t})\n\t\t\tif (filter.favorite) {\n\t\t\t\tbody += ' <oc:favorite>' + (filter.favorite ? '1' : '0') + '</oc:favorite>\\n'\n\t\t\t}\n\t\t\tbody += ' </oc:filter-rules>\\n'\n\n\t\t\t// end of root\n\t\t\tbody += '</oc:filter-files>\\n'\n\n\t\t\tthis._client.request(\n\t\t\t\t'REPORT',\n\t\t\t\tthis._buildUrl(),\n\t\t\t\t{},\n\t\t\t\tbody\n\t\t\t).then(function(result) {\n\t\t\t\tif (self._isSuccessStatus(result.status)) {\n\t\t\t\t\tconst results = self._parseResult(result.body)\n\t\t\t\t\tdeferred.resolve(result.status, results)\n\t\t\t\t} else {\n\t\t\t\t\tresult = _.extend(result, self._getSabreException(result))\n\t\t\t\t\tdeferred.reject(result.status, result)\n\t\t\t\t}\n\t\t\t})\n\t\t\treturn promise\n\t\t},\n\n\t\t/**\n\t\t * Returns the file info of a given path.\n\t\t *\n\t\t * @param {String} path path\n\t\t * @param {Array} [options.properties] list of Webdav properties to retrieve\n\t\t *\n\t\t * @returns {Promise} promise\n\t\t */\n\t\tgetFileInfo: function(path, options) {\n\t\t\tif (!path) {\n\t\t\t\tpath = ''\n\t\t\t}\n\t\t\toptions = options || {}\n\t\t\tconst self = this\n\t\t\tconst deferred = $.Deferred()\n\t\t\tconst promise = deferred.promise()\n\t\t\tlet properties\n\t\t\tif (_.isUndefined(options.properties)) {\n\t\t\t\tproperties = this.getPropfindProperties()\n\t\t\t} else {\n\t\t\t\tproperties = options.properties\n\t\t\t}\n\n\t\t\t// TODO: headers\n\t\t\tthis._client.propFind(\n\t\t\t\tthis._buildUrl(path),\n\t\t\t\tproperties,\n\t\t\t\t0\n\t\t\t).then(\n\t\t\t\tfunction(result) {\n\t\t\t\t\tif (self._isSuccessStatus(result.status)) {\n\t\t\t\t\t\tdeferred.resolve(result.status, self._parseResult([result.body])[0])\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = _.extend(result, self._getSabreException(result))\n\t\t\t\t\t\tdeferred.reject(result.status, result)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn promise\n\t\t},\n\n\t\t/**\n\t\t * Returns the contents of the given file.\n\t\t *\n\t\t * @param {String} path path to file\n\t\t *\n\t\t * @returns {Promise}\n\t\t */\n\t\tgetFileContents: function(path) {\n\t\t\tif (!path) {\n\t\t\t\tthrow 'Missing argument \"path\"'\n\t\t\t}\n\t\t\tconst self = this\n\t\t\tconst deferred = $.Deferred()\n\t\t\tconst promise = deferred.promise()\n\n\t\t\tthis._client.request(\n\t\t\t\t'GET',\n\t\t\t\tthis._buildUrl(path)\n\t\t\t).then(\n\t\t\t\tfunction(result) {\n\t\t\t\t\tif (self._isSuccessStatus(result.status)) {\n\t\t\t\t\t\tdeferred.resolve(result.status, result.body)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = _.extend(result, self._getSabreException(result))\n\t\t\t\t\t\tdeferred.reject(result.status, result)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn promise\n\t\t},\n\n\t\t/**\n\t\t * Puts the given data into the given file.\n\t\t *\n\t\t * @param {String} path path to file\n\t\t * @param {String} body file body\n\t\t * @param {Object} [options]\n\t\t * @param {String} [options.contentType='text/plain'] content type\n\t\t * @param {boolean} [options.overwrite=true] whether to overwrite an existing file\n\t\t *\n\t\t * @returns {Promise}\n\t\t */\n\t\tputFileContents: function(path, body, options) {\n\t\t\tif (!path) {\n\t\t\t\tthrow 'Missing argument \"path\"'\n\t\t\t}\n\t\t\tconst self = this\n\t\t\tconst deferred = $.Deferred()\n\t\t\tconst promise = deferred.promise()\n\t\t\toptions = options || {}\n\t\t\tconst headers = {}\n\t\t\tlet contentType = 'text/plain;charset=utf-8'\n\t\t\tif (options.contentType) {\n\t\t\t\tcontentType = options.contentType\n\t\t\t}\n\n\t\t\theaders['Content-Type'] = contentType\n\n\t\t\tif (_.isUndefined(options.overwrite) || options.overwrite) {\n\t\t\t\t// will trigger 412 precondition failed if a file already exists\n\t\t\t\theaders['If-None-Match'] = '*'\n\t\t\t}\n\n\t\t\tthis._client.request(\n\t\t\t\t'PUT',\n\t\t\t\tthis._buildUrl(path),\n\t\t\t\theaders,\n\t\t\t\tbody || ''\n\t\t\t).then(\n\t\t\t\tfunction(result) {\n\t\t\t\t\tif (self._isSuccessStatus(result.status)) {\n\t\t\t\t\t\tdeferred.resolve(result.status)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = _.extend(result, self._getSabreException(result))\n\t\t\t\t\t\tdeferred.reject(result.status, result)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn promise\n\t\t},\n\n\t\t_simpleCall: function(method, path) {\n\t\t\tif (!path) {\n\t\t\t\tthrow 'Missing argument \"path\"'\n\t\t\t}\n\n\t\t\tconst self = this\n\t\t\tconst deferred = $.Deferred()\n\t\t\tconst promise = deferred.promise()\n\n\t\t\tthis._client.request(\n\t\t\t\tmethod,\n\t\t\t\tthis._buildUrl(path)\n\t\t\t).then(\n\t\t\t\tfunction(result) {\n\t\t\t\t\tif (self._isSuccessStatus(result.status)) {\n\t\t\t\t\t\tdeferred.resolve(result.status)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = _.extend(result, self._getSabreException(result))\n\t\t\t\t\t\tdeferred.reject(result.status, result)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn promise\n\t\t},\n\n\t\t/**\n\t\t * Creates a directory\n\t\t *\n\t\t * @param {String} path path to create\n\t\t *\n\t\t * @returns {Promise}\n\t\t */\n\t\tcreateDirectory: function(path) {\n\t\t\treturn this._simpleCall('MKCOL', path)\n\t\t},\n\n\t\t/**\n\t\t * Deletes a file or directory\n\t\t *\n\t\t * @param {String} path path to delete\n\t\t *\n\t\t * @returns {Promise}\n\t\t */\n\t\tremove: function(path) {\n\t\t\treturn this._simpleCall('DELETE', path)\n\t\t},\n\n\t\t/**\n\t\t * Moves path to another path\n\t\t *\n\t\t * @param {String} path path to move\n\t\t * @param {String} destinationPath destination path\n\t\t * @param {boolean} [allowOverwrite=false] true to allow overwriting,\n\t\t * false otherwise\n\t\t * @param {Object} [headers=null] additional headers\n\t\t *\n\t\t * @returns {Promise} promise\n\t\t */\n\t\tmove: function(path, destinationPath, allowOverwrite, headers) {\n\t\t\tif (!path) {\n\t\t\t\tthrow 'Missing argument \"path\"'\n\t\t\t}\n\t\t\tif (!destinationPath) {\n\t\t\t\tthrow 'Missing argument \"destinationPath\"'\n\t\t\t}\n\n\t\t\tconst self = this\n\t\t\tconst deferred = $.Deferred()\n\t\t\tconst promise = deferred.promise()\n\t\t\theaders = _.extend({}, headers, {\n\t\t\t\t'Destination': this._buildUrl(destinationPath),\n\t\t\t})\n\n\t\t\tif (!allowOverwrite) {\n\t\t\t\theaders.Overwrite = 'F'\n\t\t\t}\n\n\t\t\tthis._client.request(\n\t\t\t\t'MOVE',\n\t\t\t\tthis._buildUrl(path),\n\t\t\t\theaders\n\t\t\t).then(\n\t\t\t\tfunction(result) {\n\t\t\t\t\tif (self._isSuccessStatus(result.status)) {\n\t\t\t\t\t\tdeferred.resolve(result.status)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = _.extend(result, self._getSabreException(result))\n\t\t\t\t\t\tdeferred.reject(result.status, result)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn promise\n\t\t},\n\n\t\t/**\n\t\t * Copies path to another path\n\t\t *\n\t\t * @param {String} path path to copy\n\t\t * @param {String} destinationPath destination path\n\t\t * @param {boolean} [allowOverwrite=false] true to allow overwriting,\n\t\t * false otherwise\n\t\t *\n\t\t * @returns {Promise} promise\n\t\t */\n\t\tcopy: function(path, destinationPath, allowOverwrite) {\n\t\t\tif (!path) {\n\t\t\t\tthrow 'Missing argument \"path\"'\n\t\t\t}\n\t\t\tif (!destinationPath) {\n\t\t\t\tthrow 'Missing argument \"destinationPath\"'\n\t\t\t}\n\n\t\t\tconst self = this\n\t\t\tconst deferred = $.Deferred()\n\t\t\tconst promise = deferred.promise()\n\t\t\tconst headers = {\n\t\t\t\t'Destination': this._buildUrl(destinationPath),\n\t\t\t}\n\n\t\t\tif (!allowOverwrite) {\n\t\t\t\theaders.Overwrite = 'F'\n\t\t\t}\n\n\t\t\tthis._client.request(\n\t\t\t\t'COPY',\n\t\t\t\tthis._buildUrl(path),\n\t\t\t\theaders\n\t\t\t).then(\n\t\t\t\tfunction(response) {\n\t\t\t\t\tif (self._isSuccessStatus(response.status)) {\n\t\t\t\t\t\tdeferred.resolve(response.status)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdeferred.reject(response.status)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn promise\n\t\t},\n\n\t\t/**\n\t\t * Add a file info parser function\n\t\t *\n\t\t * @param {OC.Files.Client~parseFileInfo} parserFunction\n\t\t */\n\t\taddFileInfoParser: function(parserFunction) {\n\t\t\tthis._fileInfoParsers.push(parserFunction)\n\t\t},\n\n\t\t/**\n\t\t * Returns the dav.Client instance used internally\n\t\t *\n\t\t * @since 11.0.0\n\t\t * @returns {dav.Client}\n\t\t */\n\t\tgetClient: function() {\n\t\t\treturn this._client\n\t\t},\n\n\t\t/**\n\t\t * Returns the user name\n\t\t *\n\t\t * @since 11.0.0\n\t\t * @returns {String} userName\n\t\t */\n\t\tgetUserName: function() {\n\t\t\treturn this._client.userName\n\t\t},\n\n\t\t/**\n\t\t * Returns the password\n\t\t *\n\t\t * @since 11.0.0\n\t\t * @returns {String} password\n\t\t */\n\t\tgetPassword: function() {\n\t\t\treturn this._client.password\n\t\t},\n\n\t\t/**\n\t\t * Returns the base URL\n\t\t *\n\t\t * @since 11.0.0\n\t\t * @returns {String} base URL\n\t\t */\n\t\tgetBaseUrl: function() {\n\t\t\treturn this._client.baseUrl\n\t\t},\n\n\t\t/**\n\t\t * Returns the host\n\t\t *\n\t\t * @since 13.0.0\n\t\t * @returns {String} base URL\n\t\t */\n\t\tgetHost: function() {\n\t\t\treturn this._host\n\t\t},\n\t}\n\n\t/**\n\t * File info parser function\n\t *\n\t * This function receives a list of Webdav properties as input and\n\t * should return a hash array of parsed properties, if applicable.\n\t *\n\t * @callback OC.Files.Client~parseFileInfo\n\t * @param {Object} XML Webdav properties\n * @return {Array} array of parsed property values\n\t */\n\n\tif (!OC.Files) {\n\t\t/**\n\t\t * @namespace OC.Files\n\t\t *\n\t\t * @since 8.2\n\t\t */\n\t\tOC.Files = {}\n\t}\n\n\t/**\n\t * Returns the default instance of the files client\n\t *\n\t * @returns {OC.Files.Client} default client\n\t *\n\t * @since 8.2\n\t */\n\tOC.Files.getClient = function() {\n\t\tif (OC.Files._defaultClient) {\n\t\t\treturn OC.Files._defaultClient\n\t\t}\n\n\t\tconst client = new OC.Files.Client({\n\t\t\thost: OC.getHost(),\n\t\t\tport: OC.getPort(),\n\t\t\troot: OC.linkToRemoteBase('dav') + '/files/' + OC.getCurrentUser().uid,\n\t\t\tuseHTTPS: OC.getProtocol() === 'https',\n\t\t})\n\t\tOC.Files._defaultClient = client\n\t\treturn client\n\t}\n\n\tOC.Files.Client = Client\n})(OC, OC.Files.FileInfo)\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 = 5578;","__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\t5578: 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__(7913); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","OC","FileInfo","Client","options","this","_root","root","charAt","length","substr","url","PROTOCOL_HTTP","useHTTPS","PROTOCOL_HTTPS","host","_host","_defaultHeaders","defaultHeaders","requestToken","_baseUrl","clientOptions","baseUrl","xmlNamespaces","userName","password","_client","dav","xhrProvider","_","bind","_xhrProvider","_fileInfoParsers","NS_OWNCLOUD","NS_NEXTCLOUD","NS_DAV","NS_OCS","PROPERTY_GETLASTMODIFIED","PROPERTY_GETETAG","PROPERTY_GETCONTENTTYPE","PROPERTY_RESOURCETYPE","PROPERTY_INTERNAL_FILEID","PROPERTY_PERMISSIONS","PROPERTY_SIZE","PROPERTY_GETCONTENTLENGTH","PROPERTY_ISENCRYPTED","PROPERTY_SHARE_PERMISSIONS","PROPERTY_QUOTA_AVAILABLE_BYTES","_PROPFIND_PROPERTIES","prototype","headers","xhr","XMLHttpRequest","oldOpen","open","result","apply","arguments","each","value","key","setRequestHeader","registerXHRForErrorProcessing","_buildUrl","path","_buildPath","i","joinPaths","sections","split","encodeURIComponent","join","_parseHeaders","headersString","headerRows","sepPos","indexOf","headerName","headerValue","push","_parseEtag","etag","_parseFileInfo","response","decodeURIComponent","href","propStat","status","props","properties","data","id","dirname","name","basename","mtime","Date","getTime","etagProp","isUndefined","sizeProp","size","parseInt","hasPreviewProp","hasPreview","isEncryptedProp","isEncrypted","isFavouritedProp","isFavourited","contentType","mimetype","resType","xmlvalue","namespaceURI","nodeName","permissions","PERMISSION_NONE","permissionProp","permString","mountType","PERMISSION_CREATE","PERMISSION_READ","PERMISSION_UPDATE","PERMISSION_DELETE","PERMISSION_SHARE","sharePermissionsProp","sharePermissions","mounTypeProp","quotaAvailableBytes","parserFunction","extend","_parseResult","responses","self","map","_isSuccessStatus","_getSabreException","xml","responseXML","messages","getElementsByTagNameNS","exceptions","message","textContent","exception","getPropfindProperties","_propfindProperties","propDef","getFolderContents","$","Deferred","promise","propFind","then","results","body","includeParent","shift","resolve","reject","getFilteredFiles","filter","systemTagIds","favorite","circlesIds","namespace","prop","property","parseClarkNotation","escapeHTML","request","getFileInfo","getFileContents","putFileContents","overwrite","_simpleCall","method","createDirectory","remove","move","destinationPath","allowOverwrite","Overwrite","copy","addFileInfoParser","getClient","getUserName","getPassword","getBaseUrl","getHost","Files","_defaultClient","client","port","getPort","linkToRemoteBase","getCurrentUser","uid","getProtocol","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","Object","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","window","obj","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","location","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"core-files_client.js?v=7c6efbc8a9fe59968af1","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/files/client.js","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/runtime/nonce","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 (c) 2015\n *\n * @author Bjoern Schiessle <bjoern@schiessle.org>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Lukas Reschke <lukas@statuscode.ch>\n * @author Michael Jobst <mjobst+github@tecratech.de>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Thomas Citharel <nextcloud@tcit.fr>\n * @author Tomasz Grobelny <tomasz@grobelny.net>\n * @author Vincent Petry <vincent@nextcloud.com>\n * @author Vinicius Cubas Brand <vinicius@eita.org.br>\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 */\n\n/* eslint-disable */\nimport escapeHTML from 'escape-html'\n\n/* global dav */\n\n(function(OC, FileInfo) {\n\t/**\n\t * @class OC.Files.Client\n\t * @classdesc Client to access files on the server\n\t *\n\t * @param {Object} options\n\t * @param {String} options.host host name\n\t * @param {number} [options.port] port\n\t * @param {boolean} [options.useHTTPS] whether to use https\n\t * @param {String} [options.root] root path\n\t * @param {String} [options.userName] user name\n\t * @param {String} [options.password] password\n\t *\n\t * @since 8.2\n\t */\n\tvar Client = function(options) {\n\t\tthis._root = options.root\n\t\tif (this._root.charAt(this._root.length - 1) === '/') {\n\t\t\tthis._root = this._root.substr(0, this._root.length - 1)\n\t\t}\n\n\t\tlet url = Client.PROTOCOL_HTTP + '://'\n\t\tif (options.useHTTPS) {\n\t\t\turl = Client.PROTOCOL_HTTPS + '://'\n\t\t}\n\n\t\turl += options.host + this._root\n\t\tthis._host = options.host\n\t\tthis._defaultHeaders = options.defaultHeaders || {\n\t\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t\t'requesttoken': OC.requestToken,\n\t\t}\n\t\tthis._baseUrl = url\n\n\t\tconst clientOptions = {\n\t\t\tbaseUrl: this._baseUrl,\n\t\t\txmlNamespaces: {\n\t\t\t\t'DAV:': 'd',\n\t\t\t\t'http://owncloud.org/ns': 'oc',\n\t\t\t\t'http://nextcloud.org/ns': 'nc',\n\t\t\t\t'http://open-collaboration-services.org/ns': 'ocs',\n\t\t\t},\n\t\t}\n\t\tif (options.userName) {\n\t\t\tclientOptions.userName = options.userName\n\t\t}\n\t\tif (options.password) {\n\t\t\tclientOptions.password = options.password\n\t\t}\n\t\tthis._client = new dav.Client(clientOptions)\n\t\tthis._client.xhrProvider = _.bind(this._xhrProvider, this)\n\t\tthis._fileInfoParsers = []\n\t}\n\n\tClient.NS_OWNCLOUD = 'http://owncloud.org/ns'\n\tClient.NS_NEXTCLOUD = 'http://nextcloud.org/ns'\n\tClient.NS_DAV = 'DAV:'\n\tClient.NS_OCS = 'http://open-collaboration-services.org/ns'\n\n\tClient.PROPERTY_GETLASTMODIFIED\t= '{' + Client.NS_DAV + '}getlastmodified'\n\tClient.PROPERTY_GETETAG\t= '{' + Client.NS_DAV + '}getetag'\n\tClient.PROPERTY_GETCONTENTTYPE\t= '{' + Client.NS_DAV + '}getcontenttype'\n\tClient.PROPERTY_RESOURCETYPE\t= '{' + Client.NS_DAV + '}resourcetype'\n\tClient.PROPERTY_INTERNAL_FILEID\t= '{' + Client.NS_OWNCLOUD + '}fileid'\n\tClient.PROPERTY_PERMISSIONS\t= '{' + Client.NS_OWNCLOUD + '}permissions'\n\tClient.PROPERTY_SIZE\t= '{' + Client.NS_OWNCLOUD + '}size'\n\tClient.PROPERTY_GETCONTENTLENGTH\t= '{' + Client.NS_DAV + '}getcontentlength'\n\tClient.PROPERTY_ISENCRYPTED\t= '{' + Client.NS_DAV + '}is-encrypted'\n\tClient.PROPERTY_SHARE_PERMISSIONS\t= '{' + Client.NS_OCS + '}share-permissions'\n\tClient.PROPERTY_QUOTA_AVAILABLE_BYTES\t= '{' + Client.NS_DAV + '}quota-available-bytes'\n\n\tClient.PROTOCOL_HTTP\t= 'http'\n\tClient.PROTOCOL_HTTPS\t= 'https'\n\n\tClient._PROPFIND_PROPERTIES = [\n\t\t/**\n\t\t * Modified time\n\t\t */\n\t\t[Client.NS_DAV, 'getlastmodified'],\n\t\t/**\n\t\t * Etag\n\t\t */\n\t\t[Client.NS_DAV, 'getetag'],\n\t\t/**\n\t\t * Mime type\n\t\t */\n\t\t[Client.NS_DAV, 'getcontenttype'],\n\t\t/**\n\t\t * Resource type \"collection\" for folders, empty otherwise\n\t\t */\n\t\t[Client.NS_DAV, 'resourcetype'],\n\t\t/**\n\t\t * File id\n\t\t */\n\t\t[Client.NS_OWNCLOUD, 'fileid'],\n\t\t/**\n\t\t * Letter-coded permissions\n\t\t */\n\t\t[Client.NS_OWNCLOUD, 'permissions'],\n\t\t// [Client.NS_OWNCLOUD, 'downloadURL'],\n\t\t/**\n\t\t * Folder sizes\n\t\t */\n\t\t[Client.NS_OWNCLOUD, 'size'],\n\t\t/**\n\t\t * File sizes\n\t\t */\n\t\t[Client.NS_DAV, 'getcontentlength'],\n\t\t[Client.NS_DAV, 'quota-available-bytes'],\n\t\t/**\n\t\t * Preview availability\n\t\t */\n\t\t[Client.NS_NEXTCLOUD, 'has-preview'],\n\t\t/**\n\t\t * Mount type\n\t\t */\n\t\t[Client.NS_NEXTCLOUD, 'mount-type'],\n\t\t/**\n\t\t * Encryption state\n\t\t */\n\t\t[Client.NS_NEXTCLOUD, 'is-encrypted'],\n\t\t/**\n\t\t * Share permissions\n\t\t */\n\t\t[Client.NS_OCS, 'share-permissions'],\n\t]\n\n\t/**\n\t * @memberof OC.Files\n\t */\n\tClient.prototype = {\n\n\t\t/**\n\t\t * Root path of the Webdav endpoint\n\t\t *\n\t\t * @type string\n\t\t */\n\t\t_root: null,\n\n\t\t/**\n\t\t * Client from the library\n\t\t *\n\t\t * @type dav.Client\n\t\t */\n\t\t_client: null,\n\n\t\t/**\n\t\t * Array of file info parsing functions.\n\t\t *\n\t\t * @type Array<OC.Files.Client~parseFileInfo>\n\t\t */\n\t\t_fileInfoParsers: [],\n\n\t\t/**\n\t\t * Returns the configured XHR provider for davclient\n\t\t * @returns {XMLHttpRequest}\n\t\t */\n\t\t_xhrProvider: function() {\n\t\t\tconst headers = this._defaultHeaders\n\t\t\tconst xhr = new XMLHttpRequest()\n\t\t\tconst oldOpen = xhr.open\n\t\t\t// override open() method to add headers\n\t\t\txhr.open = function() {\n\t\t\t\tconst result = oldOpen.apply(this, arguments)\n\t\t\t\t_.each(headers, function(value, key) {\n\t\t\t\t\txhr.setRequestHeader(key, value)\n\t\t\t\t})\n\t\t\t\treturn result\n\t\t\t}\n\n\t\t\tOC.registerXHRForErrorProcessing(xhr)\n\t\t\treturn xhr\n\t\t},\n\n\t\t/**\n\t\t * Prepends the base url to the given path sections\n\t\t *\n\t\t * @param {...String} path sections\n\t\t *\n\t\t * @returns {String} base url + joined path, any leading or trailing slash\n\t\t * will be kept\n\t\t */\n\t\t_buildUrl: function() {\n\t\t\tlet path = this._buildPath.apply(this, arguments)\n\t\t\tif (path.charAt([path.length - 1]) === '/') {\n\t\t\t\tpath = path.substr(0, path.length - 1)\n\t\t\t}\n\t\t\tif (path.charAt(0) === '/') {\n\t\t\t\tpath = path.substr(1)\n\t\t\t}\n\t\t\treturn this._baseUrl + '/' + path\n\t\t},\n\n\t\t/**\n\t\t * Append the path to the root and also encode path\n\t\t * sections\n\t\t *\n\t\t * @param {...String} path sections\n\t\t *\n\t\t * @returns {String} joined path, any leading or trailing slash\n\t\t * will be kept\n\t\t */\n\t\t_buildPath: function() {\n\t\t\tlet path = OC.joinPaths.apply(this, arguments)\n\t\t\tconst sections = path.split('/')\n\t\t\tlet i\n\t\t\tfor (i = 0; i < sections.length; i++) {\n\t\t\t\tsections[i] = encodeURIComponent(sections[i])\n\t\t\t}\n\t\t\tpath = sections.join('/')\n\t\t\treturn path\n\t\t},\n\n\t\t/**\n\t\t * Parse headers string into a map\n\t\t *\n\t\t * @param {string} headersString headers list as string\n\t\t *\n\t\t * @returns {Object.<String,Array>} map of header name to header contents\n\t\t */\n\t\t_parseHeaders: function(headersString) {\n\t\t\tconst headerRows = headersString.split('\\n')\n\t\t\tconst headers = {}\n\t\t\tfor (let i = 0; i < headerRows.length; i++) {\n\t\t\t\tconst sepPos = headerRows[i].indexOf(':')\n\t\t\t\tif (sepPos < 0) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tconst headerName = headerRows[i].substr(0, sepPos)\n\t\t\t\tconst headerValue = headerRows[i].substr(sepPos + 2)\n\n\t\t\t\tif (!headers[headerName]) {\n\t\t\t\t\t// make it an array\n\t\t\t\t\theaders[headerName] = []\n\t\t\t\t}\n\n\t\t\t\theaders[headerName].push(headerValue)\n\t\t\t}\n\t\t\treturn headers\n\t\t},\n\n\t\t/**\n\t\t * Parses the etag response which is in double quotes.\n\t\t *\n\t\t * @param {string} etag etag value in double quotes\n\t\t *\n\t\t * @returns {string} etag without double quotes\n\t\t */\n\t\t_parseEtag: function(etag) {\n\t\t\tif (etag.charAt(0) === '\"') {\n\t\t\t\treturn etag.split('\"')[1]\n\t\t\t}\n\t\t\treturn etag\n\t\t},\n\n\t\t/**\n\t\t * Parse Webdav result\n\t\t *\n\t\t * @param {Object} response XML object\n\t\t *\n\t\t * @returns {Array.<FileInfo>} array of file info\n\t\t */\n\t\t_parseFileInfo: function(response) {\n\t\t\tlet path = decodeURIComponent(response.href)\n\t\t\tif (path.substr(0, this._root.length) === this._root) {\n\t\t\t\tpath = path.substr(this._root.length)\n\t\t\t}\n\n\t\t\tif (path.charAt(path.length - 1) === '/') {\n\t\t\t\tpath = path.substr(0, path.length - 1)\n\t\t\t}\n\n\t\t\tif (response.propStat.length === 0 || response.propStat[0].status !== 'HTTP/1.1 200 OK') {\n\t\t\t\treturn null\n\t\t\t}\n\n\t\t\tconst props = response.propStat[0].properties\n\n\t\t\tconst data = {\n\t\t\t\tid: props[Client.PROPERTY_INTERNAL_FILEID],\n\t\t\t\tpath: OC.dirname(path) || '/',\n\t\t\t\tname: OC.basename(path),\n\t\t\t\tmtime: (new Date(props[Client.PROPERTY_GETLASTMODIFIED])).getTime(),\n\t\t\t}\n\n\t\t\tconst etagProp = props[Client.PROPERTY_GETETAG]\n\t\t\tif (!_.isUndefined(etagProp)) {\n\t\t\t\tdata.etag = this._parseEtag(etagProp)\n\t\t\t}\n\n\t\t\tlet sizeProp = props[Client.PROPERTY_GETCONTENTLENGTH]\n\t\t\tif (!_.isUndefined(sizeProp)) {\n\t\t\t\tdata.size = parseInt(sizeProp, 10)\n\t\t\t}\n\n\t\t\tsizeProp = props[Client.PROPERTY_SIZE]\n\t\t\tif (!_.isUndefined(sizeProp)) {\n\t\t\t\tdata.size = parseInt(sizeProp, 10)\n\t\t\t}\n\n\t\t\tconst hasPreviewProp = props['{' + Client.NS_NEXTCLOUD + '}has-preview']\n\t\t\tif (!_.isUndefined(hasPreviewProp)) {\n\t\t\t\tdata.hasPreview = hasPreviewProp === 'true'\n\t\t\t} else {\n\t\t\t\tdata.hasPreview = true\n\t\t\t}\n\n\t\t\tconst isEncryptedProp = props['{' + Client.NS_NEXTCLOUD + '}is-encrypted']\n\t\t\tif (!_.isUndefined(isEncryptedProp)) {\n\t\t\t\tdata.isEncrypted = isEncryptedProp === '1'\n\t\t\t} else {\n\t\t\t\tdata.isEncrypted = false\n\t\t\t}\n\n\t\t\tconst isFavouritedProp = props['{' + Client.NS_OWNCLOUD + '}favorite']\n\t\t\tif (!_.isUndefined(isFavouritedProp)) {\n\t\t\t\tdata.isFavourited = isFavouritedProp === '1'\n\t\t\t} else {\n\t\t\t\tdata.isFavourited = false\n\t\t\t}\n\n\t\t\tconst contentType = props[Client.PROPERTY_GETCONTENTTYPE]\n\t\t\tif (!_.isUndefined(contentType)) {\n\t\t\t\tdata.mimetype = contentType\n\t\t\t}\n\n\t\t\tconst resType = props[Client.PROPERTY_RESOURCETYPE]\n\t\t\tif (!data.mimetype && resType) {\n\t\t\t\tconst xmlvalue = resType[0]\n\t\t\t\tif (xmlvalue.namespaceURI === Client.NS_DAV && xmlvalue.nodeName.split(':')[1] === 'collection') {\n\t\t\t\t\tdata.mimetype = 'httpd/unix-directory'\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tdata.permissions = OC.PERMISSION_NONE\n\t\t\tconst permissionProp = props[Client.PROPERTY_PERMISSIONS]\n\t\t\tif (!_.isUndefined(permissionProp)) {\n\t\t\t\tconst permString = permissionProp || ''\n\t\t\t\tdata.mountType = null\n\t\t\t\tfor (let i = 0; i < permString.length; i++) {\n\t\t\t\t\tconst c = permString.charAt(i)\n\t\t\t\t\tswitch (c) {\n\t\t\t\t\t// FIXME: twisted permissions\n\t\t\t\t\tcase 'C':\n\t\t\t\t\tcase 'K':\n\t\t\t\t\t\tdata.permissions |= OC.PERMISSION_CREATE\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'G':\n\t\t\t\t\t\tdata.permissions |= OC.PERMISSION_READ\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'W':\n\t\t\t\t\tcase 'N':\n\t\t\t\t\tcase 'V':\n\t\t\t\t\t\tdata.permissions |= OC.PERMISSION_UPDATE\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'D':\n\t\t\t\t\t\tdata.permissions |= OC.PERMISSION_DELETE\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'R':\n\t\t\t\t\t\tdata.permissions |= OC.PERMISSION_SHARE\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'M':\n\t\t\t\t\t\tif (!data.mountType) {\n\t\t\t\t\t\t\t// TODO: how to identify external-root ?\n\t\t\t\t\t\t\tdata.mountType = 'external'\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'S':\n\t\t\t\t\t\t// TODO: how to identify shared-root ?\n\t\t\t\t\t\tdata.mountType = 'shared'\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst sharePermissionsProp = props[Client.PROPERTY_SHARE_PERMISSIONS]\n\t\t\tif (!_.isUndefined(sharePermissionsProp)) {\n\t\t\t\tdata.sharePermissions = parseInt(sharePermissionsProp)\n\t\t\t}\n\n\t\t\tconst mounTypeProp = props['{' + Client.NS_NEXTCLOUD + '}mount-type']\n\t\t\tif (!_.isUndefined(mounTypeProp)) {\n\t\t\t\tdata.mountType = mounTypeProp\n\t\t\t}\n\n\t\t\tconst quotaAvailableBytes = props['{' + Client.NS_DAV + '}quota-available-bytes']\n\t\t\tif (!_.isUndefined(quotaAvailableBytes)) {\n\t\t\t\tdata.quotaAvailableBytes = quotaAvailableBytes\n\t\t\t}\n\n\t\t\t// extend the parsed data using the custom parsers\n\t\t\t_.each(this._fileInfoParsers, function(parserFunction) {\n\t\t\t\t_.extend(data, parserFunction(response, data) || {})\n\t\t\t})\n\n\t\t\treturn new FileInfo(data)\n\t\t},\n\n\t\t/**\n\t\t * Parse Webdav multistatus\n\t\t *\n\t\t * @param {Array} responses\n\t\t */\n\t\t_parseResult: function(responses) {\n\t\t\tconst self = this\n\t\t\treturn _.map(responses, function(response) {\n\t\t\t\treturn self._parseFileInfo(response)\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Returns whether the given status code means success\n\t\t *\n\t\t * @param {number} status status code\n\t\t *\n\t\t * @returns true if status code is between 200 and 299 included\n\t\t */\n\t\t_isSuccessStatus: function(status) {\n\t\t\treturn status >= 200 && status <= 299\n\t\t},\n\n\t\t/**\n\t\t * Parse the Sabre exception out of the given response, if any\n\t\t *\n\t\t * @param {Object} response object\n\t\t * @returns {Object} array of parsed message and exception (only the first one)\n\t\t */\n\t\t_getSabreException: function(response) {\n\t\t\tconst result = {}\n\t\t\tconst xml = response.xhr.responseXML\n\t\t\tif (xml === null) {\n\t\t\t\treturn result\n\t\t\t}\n\t\t\tconst messages = xml.getElementsByTagNameNS('http://sabredav.org/ns', 'message')\n\t\t\tconst exceptions = xml.getElementsByTagNameNS('http://sabredav.org/ns', 'exception')\n\t\t\tif (messages.length) {\n\t\t\t\tresult.message = messages[0].textContent\n\t\t\t}\n\t\t\tif (exceptions.length) {\n\t\t\t\tresult.exception = exceptions[0].textContent\n\t\t\t}\n\t\t\treturn result\n\t\t},\n\n\t\t/**\n\t\t * Returns the default PROPFIND properties to use during a call.\n\t\t *\n\t\t * @returns {Array.<Object>} array of properties\n\t\t */\n\t\tgetPropfindProperties: function() {\n\t\t\tif (!this._propfindProperties) {\n\t\t\t\tthis._propfindProperties = _.map(Client._PROPFIND_PROPERTIES, function(propDef) {\n\t\t\t\t\treturn '{' + propDef[0] + '}' + propDef[1]\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn this._propfindProperties\n\t\t},\n\n\t\t/**\n\t\t * Lists the contents of a directory\n\t\t *\n\t\t * @param {String} path path to retrieve\n\t\t * @param {Object} [options] options\n\t\t * @param {boolean} [options.includeParent=false] set to true to keep\n\t\t * the parent folder in the result list\n\t\t * @param {Array} [options.properties] list of Webdav properties to retrieve\n\t\t *\n\t\t * @returns {Promise} promise\n\t\t */\n\t\tgetFolderContents: function(path, options) {\n\t\t\tif (!path) {\n\t\t\t\tpath = ''\n\t\t\t}\n\t\t\toptions = options || {}\n\t\t\tconst self = this\n\t\t\tconst deferred = $.Deferred()\n\t\t\tconst promise = deferred.promise()\n\t\t\tlet properties\n\t\t\tif (_.isUndefined(options.properties)) {\n\t\t\t\tproperties = this.getPropfindProperties()\n\t\t\t} else {\n\t\t\t\tproperties = options.properties\n\t\t\t}\n\n\t\t\tthis._client.propFind(\n\t\t\t\tthis._buildUrl(path),\n\t\t\t\tproperties,\n\t\t\t\t1\n\t\t\t).then(function(result) {\n\t\t\t\tif (self._isSuccessStatus(result.status)) {\n\t\t\t\t\tconst results = self._parseResult(result.body)\n\t\t\t\t\tif (!options || !options.includeParent) {\n\t\t\t\t\t\t// remove root dir, the first entry\n\t\t\t\t\t\tresults.shift()\n\t\t\t\t\t}\n\t\t\t\t\tdeferred.resolve(result.status, results)\n\t\t\t\t} else {\n\t\t\t\t\tresult = _.extend(result, self._getSabreException(result))\n\t\t\t\t\tdeferred.reject(result.status, result)\n\t\t\t\t}\n\t\t\t})\n\t\t\treturn promise\n\t\t},\n\n\t\t/**\n\t\t * Fetches a flat list of files filtered by a given filter criteria.\n\t\t * (currently system tags and circles are supported)\n\t\t *\n\t\t * @param {Object} filter filter criteria\n\t\t * @param {Object} [filter.systemTagIds] list of system tag ids to filter by\n\t\t * @param {boolean} [filter.favorite] set it to filter by favorites\n\t\t * @param {Object} [options] options\n\t\t * @param {Array} [options.properties] list of Webdav properties to retrieve\n\t\t *\n\t\t * @returns {Promise} promise\n\t\t */\n\t\tgetFilteredFiles: function(filter, options) {\n\t\t\toptions = options || {}\n\t\t\tconst self = this\n\t\t\tconst deferred = $.Deferred()\n\t\t\tconst promise = deferred.promise()\n\t\t\tlet properties\n\t\t\tif (_.isUndefined(options.properties)) {\n\t\t\t\tproperties = this.getPropfindProperties()\n\t\t\t} else {\n\t\t\t\tproperties = options.properties\n\t\t\t}\n\n\t\t\tif (!filter\n\t\t\t\t|| (!filter.systemTagIds && _.isUndefined(filter.favorite) && !filter.circlesIds)) {\n\t\t\t\tthrow 'Missing filter argument'\n\t\t\t}\n\n\t\t\t// root element with namespaces\n\t\t\tlet body = '<oc:filter-files '\n\t\t\tlet namespace\n\t\t\tfor (namespace in this._client.xmlNamespaces) {\n\t\t\t\tbody += ' xmlns:' + this._client.xmlNamespaces[namespace] + '=\"' + namespace + '\"'\n\t\t\t}\n\t\t\tbody += '>\\n'\n\n\t\t\t// properties query\n\t\t\tbody += ' <' + this._client.xmlNamespaces['DAV:'] + ':prop>\\n'\n\t\t\t_.each(properties, function(prop) {\n\t\t\t\tconst property = self._client.parseClarkNotation(prop)\n\t\t\t\tbody += ' <' + self._client.xmlNamespaces[property.namespace] + ':' + property.name + ' />\\n'\n\t\t\t})\n\n\t\t\tbody += ' </' + this._client.xmlNamespaces['DAV:'] + ':prop>\\n'\n\n\t\t\t// rules block\n\t\t\tbody +=\t' <oc:filter-rules>\\n'\n\t\t\t_.each(filter.systemTagIds, function(systemTagIds) {\n\t\t\t\tbody += ' <oc:systemtag>' + escapeHTML(systemTagIds) + '</oc:systemtag>\\n'\n\t\t\t})\n\t\t\t_.each(filter.circlesIds, function(circlesIds) {\n\t\t\t\tbody += ' <oc:circle>' + escapeHTML(circlesIds) + '</oc:circle>\\n'\n\t\t\t})\n\t\t\tif (filter.favorite) {\n\t\t\t\tbody += ' <oc:favorite>' + (filter.favorite ? '1' : '0') + '</oc:favorite>\\n'\n\t\t\t}\n\t\t\tbody += ' </oc:filter-rules>\\n'\n\n\t\t\t// end of root\n\t\t\tbody += '</oc:filter-files>\\n'\n\n\t\t\tthis._client.request(\n\t\t\t\t'REPORT',\n\t\t\t\tthis._buildUrl(),\n\t\t\t\t{},\n\t\t\t\tbody\n\t\t\t).then(function(result) {\n\t\t\t\tif (self._isSuccessStatus(result.status)) {\n\t\t\t\t\tconst results = self._parseResult(result.body)\n\t\t\t\t\tdeferred.resolve(result.status, results)\n\t\t\t\t} else {\n\t\t\t\t\tresult = _.extend(result, self._getSabreException(result))\n\t\t\t\t\tdeferred.reject(result.status, result)\n\t\t\t\t}\n\t\t\t})\n\t\t\treturn promise\n\t\t},\n\n\t\t/**\n\t\t * Returns the file info of a given path.\n\t\t *\n\t\t * @param {String} path path\n\t\t * @param {Array} [options.properties] list of Webdav properties to retrieve\n\t\t *\n\t\t * @returns {Promise} promise\n\t\t */\n\t\tgetFileInfo: function(path, options) {\n\t\t\tif (!path) {\n\t\t\t\tpath = ''\n\t\t\t}\n\t\t\toptions = options || {}\n\t\t\tconst self = this\n\t\t\tconst deferred = $.Deferred()\n\t\t\tconst promise = deferred.promise()\n\t\t\tlet properties\n\t\t\tif (_.isUndefined(options.properties)) {\n\t\t\t\tproperties = this.getPropfindProperties()\n\t\t\t} else {\n\t\t\t\tproperties = options.properties\n\t\t\t}\n\n\t\t\t// TODO: headers\n\t\t\tthis._client.propFind(\n\t\t\t\tthis._buildUrl(path),\n\t\t\t\tproperties,\n\t\t\t\t0\n\t\t\t).then(\n\t\t\t\tfunction(result) {\n\t\t\t\t\tif (self._isSuccessStatus(result.status)) {\n\t\t\t\t\t\tdeferred.resolve(result.status, self._parseResult([result.body])[0])\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = _.extend(result, self._getSabreException(result))\n\t\t\t\t\t\tdeferred.reject(result.status, result)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn promise\n\t\t},\n\n\t\t/**\n\t\t * Returns the contents of the given file.\n\t\t *\n\t\t * @param {String} path path to file\n\t\t *\n\t\t * @returns {Promise}\n\t\t */\n\t\tgetFileContents: function(path) {\n\t\t\tif (!path) {\n\t\t\t\tthrow 'Missing argument \"path\"'\n\t\t\t}\n\t\t\tconst self = this\n\t\t\tconst deferred = $.Deferred()\n\t\t\tconst promise = deferred.promise()\n\n\t\t\tthis._client.request(\n\t\t\t\t'GET',\n\t\t\t\tthis._buildUrl(path)\n\t\t\t).then(\n\t\t\t\tfunction(result) {\n\t\t\t\t\tif (self._isSuccessStatus(result.status)) {\n\t\t\t\t\t\tdeferred.resolve(result.status, result.body)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = _.extend(result, self._getSabreException(result))\n\t\t\t\t\t\tdeferred.reject(result.status, result)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn promise\n\t\t},\n\n\t\t/**\n\t\t * Puts the given data into the given file.\n\t\t *\n\t\t * @param {String} path path to file\n\t\t * @param {String} body file body\n\t\t * @param {Object} [options]\n\t\t * @param {String} [options.contentType='text/plain'] content type\n\t\t * @param {boolean} [options.overwrite=true] whether to overwrite an existing file\n\t\t *\n\t\t * @returns {Promise}\n\t\t */\n\t\tputFileContents: function(path, body, options) {\n\t\t\tif (!path) {\n\t\t\t\tthrow 'Missing argument \"path\"'\n\t\t\t}\n\t\t\tconst self = this\n\t\t\tconst deferred = $.Deferred()\n\t\t\tconst promise = deferred.promise()\n\t\t\toptions = options || {}\n\t\t\tconst headers = {}\n\t\t\tlet contentType = 'text/plain;charset=utf-8'\n\t\t\tif (options.contentType) {\n\t\t\t\tcontentType = options.contentType\n\t\t\t}\n\n\t\t\theaders['Content-Type'] = contentType\n\n\t\t\tif (_.isUndefined(options.overwrite) || options.overwrite) {\n\t\t\t\t// will trigger 412 precondition failed if a file already exists\n\t\t\t\theaders['If-None-Match'] = '*'\n\t\t\t}\n\n\t\t\tthis._client.request(\n\t\t\t\t'PUT',\n\t\t\t\tthis._buildUrl(path),\n\t\t\t\theaders,\n\t\t\t\tbody || ''\n\t\t\t).then(\n\t\t\t\tfunction(result) {\n\t\t\t\t\tif (self._isSuccessStatus(result.status)) {\n\t\t\t\t\t\tdeferred.resolve(result.status)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = _.extend(result, self._getSabreException(result))\n\t\t\t\t\t\tdeferred.reject(result.status, result)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn promise\n\t\t},\n\n\t\t_simpleCall: function(method, path) {\n\t\t\tif (!path) {\n\t\t\t\tthrow 'Missing argument \"path\"'\n\t\t\t}\n\n\t\t\tconst self = this\n\t\t\tconst deferred = $.Deferred()\n\t\t\tconst promise = deferred.promise()\n\n\t\t\tthis._client.request(\n\t\t\t\tmethod,\n\t\t\t\tthis._buildUrl(path)\n\t\t\t).then(\n\t\t\t\tfunction(result) {\n\t\t\t\t\tif (self._isSuccessStatus(result.status)) {\n\t\t\t\t\t\tdeferred.resolve(result.status)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = _.extend(result, self._getSabreException(result))\n\t\t\t\t\t\tdeferred.reject(result.status, result)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn promise\n\t\t},\n\n\t\t/**\n\t\t * Creates a directory\n\t\t *\n\t\t * @param {String} path path to create\n\t\t *\n\t\t * @returns {Promise}\n\t\t */\n\t\tcreateDirectory: function(path) {\n\t\t\treturn this._simpleCall('MKCOL', path)\n\t\t},\n\n\t\t/**\n\t\t * Deletes a file or directory\n\t\t *\n\t\t * @param {String} path path to delete\n\t\t *\n\t\t * @returns {Promise}\n\t\t */\n\t\tremove: function(path) {\n\t\t\treturn this._simpleCall('DELETE', path)\n\t\t},\n\n\t\t/**\n\t\t * Moves path to another path\n\t\t *\n\t\t * @param {String} path path to move\n\t\t * @param {String} destinationPath destination path\n\t\t * @param {boolean} [allowOverwrite=false] true to allow overwriting,\n\t\t * false otherwise\n\t\t * @param {Object} [headers=null] additional headers\n\t\t *\n\t\t * @returns {Promise} promise\n\t\t */\n\t\tmove: function(path, destinationPath, allowOverwrite, headers) {\n\t\t\tif (!path) {\n\t\t\t\tthrow 'Missing argument \"path\"'\n\t\t\t}\n\t\t\tif (!destinationPath) {\n\t\t\t\tthrow 'Missing argument \"destinationPath\"'\n\t\t\t}\n\n\t\t\tconst self = this\n\t\t\tconst deferred = $.Deferred()\n\t\t\tconst promise = deferred.promise()\n\t\t\theaders = _.extend({}, headers, {\n\t\t\t\t'Destination': this._buildUrl(destinationPath),\n\t\t\t})\n\n\t\t\tif (!allowOverwrite) {\n\t\t\t\theaders.Overwrite = 'F'\n\t\t\t}\n\n\t\t\tthis._client.request(\n\t\t\t\t'MOVE',\n\t\t\t\tthis._buildUrl(path),\n\t\t\t\theaders\n\t\t\t).then(\n\t\t\t\tfunction(result) {\n\t\t\t\t\tif (self._isSuccessStatus(result.status)) {\n\t\t\t\t\t\tdeferred.resolve(result.status)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = _.extend(result, self._getSabreException(result))\n\t\t\t\t\t\tdeferred.reject(result.status, result)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn promise\n\t\t},\n\n\t\t/**\n\t\t * Copies path to another path\n\t\t *\n\t\t * @param {String} path path to copy\n\t\t * @param {String} destinationPath destination path\n\t\t * @param {boolean} [allowOverwrite=false] true to allow overwriting,\n\t\t * false otherwise\n\t\t *\n\t\t * @returns {Promise} promise\n\t\t */\n\t\tcopy: function(path, destinationPath, allowOverwrite) {\n\t\t\tif (!path) {\n\t\t\t\tthrow 'Missing argument \"path\"'\n\t\t\t}\n\t\t\tif (!destinationPath) {\n\t\t\t\tthrow 'Missing argument \"destinationPath\"'\n\t\t\t}\n\n\t\t\tconst self = this\n\t\t\tconst deferred = $.Deferred()\n\t\t\tconst promise = deferred.promise()\n\t\t\tconst headers = {\n\t\t\t\t'Destination': this._buildUrl(destinationPath),\n\t\t\t}\n\n\t\t\tif (!allowOverwrite) {\n\t\t\t\theaders.Overwrite = 'F'\n\t\t\t}\n\n\t\t\tthis._client.request(\n\t\t\t\t'COPY',\n\t\t\t\tthis._buildUrl(path),\n\t\t\t\theaders\n\t\t\t).then(\n\t\t\t\tfunction(response) {\n\t\t\t\t\tif (self._isSuccessStatus(response.status)) {\n\t\t\t\t\t\tdeferred.resolve(response.status)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdeferred.reject(response.status)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t)\n\t\t\treturn promise\n\t\t},\n\n\t\t/**\n\t\t * Add a file info parser function\n\t\t *\n\t\t * @param {OC.Files.Client~parseFileInfo} parserFunction\n\t\t */\n\t\taddFileInfoParser: function(parserFunction) {\n\t\t\tthis._fileInfoParsers.push(parserFunction)\n\t\t},\n\n\t\t/**\n\t\t * Returns the dav.Client instance used internally\n\t\t *\n\t\t * @since 11.0.0\n\t\t * @returns {dav.Client}\n\t\t */\n\t\tgetClient: function() {\n\t\t\treturn this._client\n\t\t},\n\n\t\t/**\n\t\t * Returns the user name\n\t\t *\n\t\t * @since 11.0.0\n\t\t * @returns {String} userName\n\t\t */\n\t\tgetUserName: function() {\n\t\t\treturn this._client.userName\n\t\t},\n\n\t\t/**\n\t\t * Returns the password\n\t\t *\n\t\t * @since 11.0.0\n\t\t * @returns {String} password\n\t\t */\n\t\tgetPassword: function() {\n\t\t\treturn this._client.password\n\t\t},\n\n\t\t/**\n\t\t * Returns the base URL\n\t\t *\n\t\t * @since 11.0.0\n\t\t * @returns {String} base URL\n\t\t */\n\t\tgetBaseUrl: function() {\n\t\t\treturn this._client.baseUrl\n\t\t},\n\n\t\t/**\n\t\t * Returns the host\n\t\t *\n\t\t * @since 13.0.0\n\t\t * @returns {String} base URL\n\t\t */\n\t\tgetHost: function() {\n\t\t\treturn this._host\n\t\t},\n\t}\n\n\t/**\n\t * File info parser function\n\t *\n\t * This function receives a list of Webdav properties as input and\n\t * should return a hash array of parsed properties, if applicable.\n\t *\n\t * @callback OC.Files.Client~parseFileInfo\n\t * @param {Object} XML Webdav properties\n * @return {Array} array of parsed property values\n\t */\n\n\tif (!OC.Files) {\n\t\t/**\n\t\t * @namespace OC.Files\n\t\t *\n\t\t * @since 8.2\n\t\t */\n\t\tOC.Files = {}\n\t}\n\n\t/**\n\t * Returns the default instance of the files client\n\t *\n\t * @returns {OC.Files.Client} default client\n\t *\n\t * @since 8.2\n\t */\n\tOC.Files.getClient = function() {\n\t\tif (OC.Files._defaultClient) {\n\t\t\treturn OC.Files._defaultClient\n\t\t}\n\n\t\tconst client = new OC.Files.Client({\n\t\t\thost: OC.getHost(),\n\t\t\tport: OC.getPort(),\n\t\t\troot: OC.linkToRemoteBase('dav') + '/files/' + OC.getCurrentUser().uid,\n\t\t\tuseHTTPS: OC.getProtocol() === 'https',\n\t\t})\n\t\tOC.Files._defaultClient = client\n\t\treturn client\n\t}\n\n\tOC.Files.Client = Client\n})(OC, OC.Files.FileInfo)\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 = 5578;","__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\t5578: 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));","__webpack_require__.nc = undefined;","// 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__(7913); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","OC","FileInfo","Client","options","this","_root","root","charAt","length","substr","url","PROTOCOL_HTTP","useHTTPS","PROTOCOL_HTTPS","host","_host","_defaultHeaders","defaultHeaders","requestToken","_baseUrl","clientOptions","baseUrl","xmlNamespaces","userName","password","_client","dav","xhrProvider","_","bind","_xhrProvider","_fileInfoParsers","NS_OWNCLOUD","NS_NEXTCLOUD","NS_DAV","NS_OCS","PROPERTY_GETLASTMODIFIED","PROPERTY_GETETAG","PROPERTY_GETCONTENTTYPE","PROPERTY_RESOURCETYPE","PROPERTY_INTERNAL_FILEID","PROPERTY_PERMISSIONS","PROPERTY_SIZE","PROPERTY_GETCONTENTLENGTH","PROPERTY_ISENCRYPTED","PROPERTY_SHARE_PERMISSIONS","PROPERTY_QUOTA_AVAILABLE_BYTES","_PROPFIND_PROPERTIES","prototype","headers","xhr","XMLHttpRequest","oldOpen","open","result","apply","arguments","each","value","key","setRequestHeader","registerXHRForErrorProcessing","_buildUrl","path","_buildPath","i","joinPaths","sections","split","encodeURIComponent","join","_parseHeaders","headersString","headerRows","sepPos","indexOf","headerName","headerValue","push","_parseEtag","etag","_parseFileInfo","response","decodeURIComponent","href","propStat","status","props","properties","data","id","dirname","name","basename","mtime","Date","getTime","etagProp","isUndefined","sizeProp","size","parseInt","hasPreviewProp","hasPreview","isEncryptedProp","isEncrypted","isFavouritedProp","isFavourited","contentType","mimetype","resType","xmlvalue","namespaceURI","nodeName","permissions","PERMISSION_NONE","permissionProp","permString","mountType","PERMISSION_CREATE","PERMISSION_READ","PERMISSION_UPDATE","PERMISSION_DELETE","PERMISSION_SHARE","sharePermissionsProp","sharePermissions","mounTypeProp","quotaAvailableBytes","parserFunction","extend","_parseResult","responses","self","map","_isSuccessStatus","_getSabreException","xml","responseXML","messages","getElementsByTagNameNS","exceptions","message","textContent","exception","getPropfindProperties","_propfindProperties","propDef","getFolderContents","$","Deferred","promise","propFind","then","results","body","includeParent","shift","resolve","reject","getFilteredFiles","filter","systemTagIds","favorite","circlesIds","namespace","prop","property","parseClarkNotation","escapeHTML","request","getFileInfo","getFileContents","putFileContents","overwrite","_simpleCall","method","createDirectory","remove","move","destinationPath","allowOverwrite","Overwrite","copy","addFileInfoParser","getClient","getUserName","getPassword","getBaseUrl","getHost","Files","_defaultClient","client","port","getPort","linkToRemoteBase","getCurrentUser","uid","getProtocol","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","Object","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","window","obj","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","location","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/core-install.js b/dist/core-install.js
index 3a53ec1aae3..3a369410b82 100644
--- a/dist/core-install.js
+++ b/dist/core-install.js
@@ -1,3 +1,3 @@
/*! For license information please see core-install.js.LICENSE.txt */
-!function(){"use strict";var e,t={84891:function(e,t,n){var r,o,a,i,s=n(19755),d=n.n(s),l=n(9944),c=n(74854),u=(r=document,o=c.emit,a=r.getElementsByTagName("head")[0].getAttribute("data-requesttoken"),{getToken:function(){return a},setToken:function(e){o("csrf-token-update",{token:a=e})}}).getToken;d().fn.extend({showPassword:function(e){var t={fn:null,args:{}};t.fn=e;var n=function(e,t){t.val(e.val())},r=function(e,t,r){e.is(":checked")?(n(t,r),r.show(),t.hide()):(n(r,t),r.hide(),t.show())};return this.each((function(){var e=d()(this),o=d()(e.data("typetoggle")),a=function(e){var t=d()(e),n=d()("<input />");return n.attr({type:"text",class:t.attr("class"),style:t.attr("style"),size:t.attr("size"),name:t.attr("name")+"-clone",tabindex:t.attr("tabindex"),autocomplete:"off"}),void 0!==t.attr("placeholder")&&n.attr("placeholder",t.attr("placeholder")),n}(e);a.insertAfter(e),t.fn&&(t.args.input=e,t.args.checkbox=o,t.args.clone=a),o.bind("click",(function(){r(o,e,a)})),e.bind("keyup",(function(){n(e,a)})),a.bind("keyup",(function(){n(a,e),e.trigger("keyup")})),a.bind("blur",(function(){e.trigger("focusout")})),r(o,e,a),a.closest("form").submit((function(e){a.prop("type","password")})),t.fn&&t.fn(t.args)}))}}),n(79366),n(75289),n(56396),n(33824),d().prototype.tooltip=(i=d().prototype.tooltip,function(e){try{return i.call(this,e)}catch(t){if(t instanceof TypeError&&"destroy"===e)return void 0===window.TESTING&&console.error("Deprecated call $.tooltip('destroy') has been deprecated and should be removed"),i.call(this,"dispose");if(t instanceof TypeError&&"fixTitle"===e)return void 0===window.TESTING&&console.error("Deprecated call $.tooltip('fixTitle') has been deprecated and should be removed"),i.call(this,"_fixTitle")}}),n(99205),n(38554),window.addEventListener("DOMContentLoaded",(function(){var e=!!d()("#hasSQLite").val();d()("#hasMySQL").val(),d()("#hasPostgreSQL").val(),d()("#hasOracle").val(),d()("#selectDbType").buttonset(),d()("#selectDbType p.info a").button("destroy"),d()("#hasSQLite").val()?(d()("#use_other_db").hide(),d()("#use_oracle_db").hide()):d()("#sqliteInformation").hide(),d()("#adminlogin").change((function(){d()("#adminlogin").val(d().trim(d()("#adminlogin").val()))})),d()("#sqlite").click((function(){d()("#use_other_db").slideUp(250),d()("#use_oracle_db").slideUp(250),d()("#sqliteInformation").show(),d()("#dbname").attr("pattern","[0-9a-zA-Z$_-]+")})),d()("#mysql,#pgsql").click((function(){d()("#use_other_db").slideDown(250),d()("#use_oracle_db").slideUp(250),d()("#sqliteInformation").hide(),d()("#dbname").attr("pattern","[0-9a-zA-Z$_-]+")})),d()("#oci").click((function(){d()("#use_other_db").slideDown(250),d()("#use_oracle_db").show(250),d()("#sqliteInformation").hide(),d()("#dbname").attr("pattern","[0-9a-zA-Z$_-.]+")})),d()("#showAdvanced").click((function(e){e.preventDefault(),d()("#datadirContent").slideToggle(250),d()("#databaseBackend").slideToggle(250),d()("#databaseField").slideToggle(250)})),d()("form").submit((function(){var e=d()(this).serializeArray();d()(".float-spinner").show(250),d()(":submit",this).attr("disabled","disabled").val(d()(":submit",this).data("finishing")),d()("input",this).addClass("ui-state-disabled").attr("disabled","disabled"),d()("#selectDbType").find(".ui-button").length>0&&d()("#selectDbType").buttonset("disable"),d()(".strengthify-wrapper, .tipsy").css("-ms-filter",'"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"').css("filter","alpha(opacity=30)").css("opacity",.3);var t=d()("<form>");t.attr("action",d()(this).attr("action")),t.attr("method","POST");for(var n=0;n<e.length;n++){var r=d()('<input type="hidden">');r.attr(e[n]),t.append(r)}var o=decodeURIComponent((new RegExp("[?|&]redirect_url=([^&;]+?)(&|#|;|$)").exec(location.search)||[,""])[1].replace(/\+/g,"%20"))||"";if(o){var a=d()('<input type="hidden">');a.attr({name:"redirect_url",value:o}),t.append(a)}return t.appendTo(document.body),t.submit(),!1}));var t=d()('input[type="radio"]:checked').val();void 0===t&&d()('input[type="radio"]').first().click(),("sqlite"===t||e&&void 0===t)&&(d()("#datadirContent").hide(250),d()("#databaseBackend").hide(250),d()("#databaseField").hide(250),d()(".float-spinner").hide(250)),d()("#adminpass").strengthify({zxcvbn:OC.linkTo("core","vendor/zxcvbn/dist/zxcvbn.js"),titles:[(0,l.translate)("core","Very weak password"),(0,l.translate)("core","Weak password"),(0,l.translate)("core","So-so password"),(0,l.translate)("core","Good password"),(0,l.translate)("core","Strong password")],drawTitles:!0,nonce:btoa(u())}),d()("#dbpass").showPassword().keyup(),d()("#adminpass").showPassword().keyup()}))}},n={};function r(e){var o=n[e];if(void 0!==o)return o.exports;var a=n[e]={id:e,loaded:!1,exports:{}};return t[e].call(a.exports,a,a.exports,r),a.loaded=!0,a.exports}r.m=t,r.amdD=function(){throw new Error("define cannot be used indirect")},r.amdO={},e=[],r.O=function(t,n,o,a){if(!n){var i=1/0;for(c=0;c<e.length;c++){n=e[c][0],o=e[c][1],a=e[c][2];for(var s=!0,d=0;d<n.length;d++)(!1&a||i>=a)&&Object.keys(r.O).every((function(e){return r.O[e](n[d])}))?n.splice(d--,1):(s=!1,a<i&&(i=a));if(s){e.splice(c--,1);var l=o();void 0!==l&&(t=l)}}return t}a=a||0;for(var c=e.length;c>0&&e[c-1][2]>a;c--)e[c]=e[c-1];e[c]=[n,o,a]},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},r.d=function(e,t){for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},r.j=8998,function(){r.b=document.baseURI||self.location.href;var e={8998:0};r.O.j=function(t){return 0===e[t]};var t=function(t,n){var o,a,i=n[0],s=n[1],d=n[2],l=0;if(i.some((function(t){return 0!==e[t]}))){for(o in s)r.o(s,o)&&(r.m[o]=s[o]);if(d)var c=d(r)}for(t&&t(n);l<i.length;l++)a=i[l],r.o(e,a)&&e[a]&&e[a][0](),e[a]=0;return r.O(c)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))}();var o=r.O(void 0,[7874],(function(){return r(84891)}));o=r.O(o)}();
-//# sourceMappingURL=core-install.js.map?v=c7d01209ae4d6debcb73 \ No newline at end of file
+!function(){"use strict";var e,t={84891:function(e,t,n){var r,o,a,i,s=n(19755),d=n.n(s),l=n(9944),c=n(74854),u=(r=document,o=c.emit,a=r.getElementsByTagName("head")[0].getAttribute("data-requesttoken"),{getToken:function(){return a},setToken:function(e){o("csrf-token-update",{token:a=e})}}).getToken;d().fn.extend({showPassword:function(e){var t={fn:null,args:{}};t.fn=e;var n=function(e,t){t.val(e.val())},r=function(e,t,r){e.is(":checked")?(n(t,r),r.show(),t.hide()):(n(r,t),r.hide(),t.show())};return this.each((function(){var e=d()(this),o=d()(e.data("typetoggle")),a=function(e){var t=d()(e),n=d()("<input />");return n.attr({type:"text",class:t.attr("class"),style:t.attr("style"),size:t.attr("size"),name:t.attr("name")+"-clone",tabindex:t.attr("tabindex"),autocomplete:"off"}),void 0!==t.attr("placeholder")&&n.attr("placeholder",t.attr("placeholder")),n}(e);a.insertAfter(e),t.fn&&(t.args.input=e,t.args.checkbox=o,t.args.clone=a),o.bind("click",(function(){r(o,e,a)})),e.bind("keyup",(function(){n(e,a)})),a.bind("keyup",(function(){n(a,e),e.trigger("keyup")})),a.bind("blur",(function(){e.trigger("focusout")})),r(o,e,a),a.closest("form").submit((function(e){a.prop("type","password")})),t.fn&&t.fn(t.args)}))}}),n(79366),n(75289),n(56396),n(33824),d().prototype.tooltip=(i=d().prototype.tooltip,function(e){try{return i.call(this,e)}catch(t){if(t instanceof TypeError&&"destroy"===e)return void 0===window.TESTING&&console.error("Deprecated call $.tooltip('destroy') has been deprecated and should be removed"),i.call(this,"dispose");if(t instanceof TypeError&&"fixTitle"===e)return void 0===window.TESTING&&console.error("Deprecated call $.tooltip('fixTitle') has been deprecated and should be removed"),i.call(this,"_fixTitle")}}),n(99205),n(38554),window.addEventListener("DOMContentLoaded",(function(){var e=!!d()("#hasSQLite").val();d()("#hasMySQL").val(),d()("#hasPostgreSQL").val(),d()("#hasOracle").val(),d()("#selectDbType").buttonset(),d()("#selectDbType p.info a").button("destroy"),d()("#hasSQLite").val()?(d()("#use_other_db").hide(),d()("#use_oracle_db").hide()):d()("#sqliteInformation").hide(),d()("#adminlogin").change((function(){d()("#adminlogin").val(d().trim(d()("#adminlogin").val()))})),d()("#sqlite").click((function(){d()("#use_other_db").slideUp(250),d()("#use_oracle_db").slideUp(250),d()("#sqliteInformation").show(),d()("#dbname").attr("pattern","[0-9a-zA-Z$_-]+")})),d()("#mysql,#pgsql").click((function(){d()("#use_other_db").slideDown(250),d()("#use_oracle_db").slideUp(250),d()("#sqliteInformation").hide(),d()("#dbname").attr("pattern","[0-9a-zA-Z$_-]+")})),d()("#oci").click((function(){d()("#use_other_db").slideDown(250),d()("#use_oracle_db").show(250),d()("#sqliteInformation").hide(),d()("#dbname").attr("pattern","[0-9a-zA-Z$_-.]+")})),d()("#showAdvanced").click((function(e){e.preventDefault(),d()("#datadirContent").slideToggle(250),d()("#databaseBackend").slideToggle(250),d()("#databaseField").slideToggle(250)})),d()("form").submit((function(){var e=d()(this).serializeArray();d()(".float-spinner").show(250),d()(":submit",this).attr("disabled","disabled").val(d()(":submit",this).data("finishing")),d()("input",this).addClass("ui-state-disabled").attr("disabled","disabled"),d()("#selectDbType").find(".ui-button").length>0&&d()("#selectDbType").buttonset("disable"),d()(".strengthify-wrapper, .tipsy").css("-ms-filter",'"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"').css("filter","alpha(opacity=30)").css("opacity",.3);var t=d()("<form>");t.attr("action",d()(this).attr("action")),t.attr("method","POST");for(var n=0;n<e.length;n++){var r=d()('<input type="hidden">');r.attr(e[n]),t.append(r)}var o=decodeURIComponent((new RegExp("[?|&]redirect_url=([^&;]+?)(&|#|;|$)").exec(location.search)||[,""])[1].replace(/\+/g,"%20"))||"";if(o){var a=d()('<input type="hidden">');a.attr({name:"redirect_url",value:o}),t.append(a)}return t.appendTo(document.body),t.submit(),!1}));var t=d()('input[type="radio"]:checked').val();void 0===t&&d()('input[type="radio"]').first().click(),("sqlite"===t||e&&void 0===t)&&(d()("#datadirContent").hide(250),d()("#databaseBackend").hide(250),d()("#databaseField").hide(250),d()(".float-spinner").hide(250)),d()("#adminpass").strengthify({zxcvbn:OC.linkTo("core","vendor/zxcvbn/dist/zxcvbn.js"),titles:[(0,l.translate)("core","Very weak password"),(0,l.translate)("core","Weak password"),(0,l.translate)("core","So-so password"),(0,l.translate)("core","Good password"),(0,l.translate)("core","Strong password")],drawTitles:!0,nonce:btoa(u())}),d()("#dbpass").showPassword().keyup(),d()("#adminpass").showPassword().keyup()}))}},n={};function r(e){var o=n[e];if(void 0!==o)return o.exports;var a=n[e]={id:e,loaded:!1,exports:{}};return t[e].call(a.exports,a,a.exports,r),a.loaded=!0,a.exports}r.m=t,r.amdD=function(){throw new Error("define cannot be used indirect")},r.amdO={},e=[],r.O=function(t,n,o,a){if(!n){var i=1/0;for(c=0;c<e.length;c++){n=e[c][0],o=e[c][1],a=e[c][2];for(var s=!0,d=0;d<n.length;d++)(!1&a||i>=a)&&Object.keys(r.O).every((function(e){return r.O[e](n[d])}))?n.splice(d--,1):(s=!1,a<i&&(i=a));if(s){e.splice(c--,1);var l=o();void 0!==l&&(t=l)}}return t}a=a||0;for(var c=e.length;c>0&&e[c-1][2]>a;c--)e[c]=e[c-1];e[c]=[n,o,a]},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},r.d=function(e,t){for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},r.j=8998,function(){r.b=document.baseURI||self.location.href;var e={8998:0};r.O.j=function(t){return 0===e[t]};var t=function(t,n){var o,a,i=n[0],s=n[1],d=n[2],l=0;if(i.some((function(t){return 0!==e[t]}))){for(o in s)r.o(s,o)&&(r.m[o]=s[o]);if(d)var c=d(r)}for(t&&t(n);l<i.length;l++)a=i[l],r.o(e,a)&&e[a]&&e[a][0](),e[a]=0;return r.O(c)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))}(),r.nc=void 0;var o=r.O(void 0,[7874],(function(){return r(84891)}));o=r.O(o)}();
+//# sourceMappingURL=core-install.js.map?v=ee580b4e58a4177adf85 \ No newline at end of file
diff --git a/dist/core-install.js.map b/dist/core-install.js.map
index 1afc5f9e465..3a26c2702e1 100644
--- a/dist/core-install.js.map
+++ b/dist/core-install.js.map
@@ -1 +1 @@
-{"version":3,"file":"core-install.js?v=c7d01209ae4d6debcb73","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/OC/requesttoken.js","webpack:///nextcloud/core/src/Polyfill/tooltip.js","webpack:///nextcloud/core/src/jquery/showpassword.js","webpack:///nextcloud/core/src/install.js","webpack:///nextcloud/core/src/Util/get-url-parameter.js","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 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport { emit } from '@nextcloud/event-bus'\n\n/**\n * @private\n * @param {Document} global the document to read the initial value from\n * @param {Function} emit the function to invoke for every new token\n * @return {object}\n */\nexport const manageToken = (global, emit) => {\n\tlet token = global.getElementsByTagName('head')[0].getAttribute('data-requesttoken')\n\n\treturn {\n\t\tgetToken: () => token,\n\t\tsetToken: newToken => {\n\t\t\ttoken = newToken\n\n\t\t\temit('csrf-token-update', {\n\t\t\t\ttoken,\n\t\t\t})\n\t\t},\n\t}\n}\n\nconst manageFromDocument = manageToken(document, emit)\n\n/**\n * @return {string}\n */\nexport const getToken = manageFromDocument.getToken\n\n/**\n * @param {string} newToken new token\n */\nexport const setToken = manageFromDocument.setToken\n","/**\n * @copyright 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nimport $ from 'jquery'\n\n$.prototype.tooltip = (function(tooltip) {\n\treturn function(config) {\n\t\ttry {\n\t\t\treturn tooltip.call(this, config)\n\t\t} catch (ex) {\n\t\t\tif (ex instanceof TypeError && config === 'destroy') {\n\t\t\t\tif (window.TESTING === undefined) {\n\t\t\t\t\tconsole.error('Deprecated call $.tooltip(\\'destroy\\') has been deprecated and should be removed')\n\t\t\t\t}\n\t\t\t\treturn tooltip.call(this, 'dispose')\n\t\t\t}\n\t\t\tif (ex instanceof TypeError && config === 'fixTitle') {\n\t\t\t\tif (window.TESTING === undefined) {\n\t\t\t\t\tconsole.error('Deprecated call $.tooltip(\\'fixTitle\\') has been deprecated and should be removed')\n\t\t\t\t}\n\t\t\t\treturn tooltip.call(this, '_fixTitle')\n\t\t\t}\n\t\t}\n\t}\n})($.prototype.tooltip)\n","/**\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport $ from 'jquery'\n\n/**\n * @name Show Password\n * @description\n * @version 1.3.0\n * @requires Jquery 1.5\n *\n * @author Jan Jarfalk <jan.jarfalk@unwrongest.com>\n * author-website http://www.unwrongest.com\n *\n * special-thanks Michel Gratton\n *\n * @license MIT\n */\n$.fn.extend({\n\tshowPassword(c) {\n\n\t\t// Setup callback object\n\t\tconst callback = { fn: null, args: {} }\n\t\tcallback.fn = c\n\n\t\t// Clones passwords and turn the clones into text inputs\n\t\tconst cloneElement = function(element) {\n\n\t\t\tconst $element = $(element)\n\n\t\t\tconst $clone = $('<input />')\n\n\t\t\t// Name added for JQuery Validation compatibility\n\t\t\t// Element name is required to avoid script warning.\n\t\t\t$clone.attr({\n\t\t\t\ttype: 'text',\n\t\t\t\tclass: $element.attr('class'),\n\t\t\t\tstyle: $element.attr('style'),\n\t\t\t\tsize: $element.attr('size'),\n\t\t\t\tname: $element.attr('name') + '-clone',\n\t\t\t\ttabindex: $element.attr('tabindex'),\n\t\t\t\tautocomplete: 'off',\n\t\t\t})\n\n\t\t\tif ($element.attr('placeholder') !== undefined) {\n\t\t\t\t$clone.attr('placeholder', $element.attr('placeholder'))\n\t\t\t}\n\n\t\t\treturn $clone\n\n\t\t}\n\n\t\t// Transfers values between two elements\n\t\tconst update = function(a, b) {\n\t\t\tb.val(a.val())\n\t\t}\n\n\t\t// Shows a or b depending on checkbox\n\t\tconst setState = function(checkbox, a, b) {\n\n\t\t\tif (checkbox.is(':checked')) {\n\t\t\t\tupdate(a, b)\n\t\t\t\tb.show()\n\t\t\t\ta.hide()\n\t\t\t} else {\n\t\t\t\tupdate(b, a)\n\t\t\t\tb.hide()\n\t\t\t\ta.show()\n\t\t\t}\n\n\t\t}\n\n\t\treturn this.each(function() {\n\n\t\t\tconst $input = $(this)\n\t\t\tconst $checkbox = $($input.data('typetoggle'))\n\n\t\t\t// Create clone\n\t\t\tconst $clone = cloneElement($input)\n\t\t\t$clone.insertAfter($input)\n\n\t\t\t// Set callback arguments\n\t\t\tif (callback.fn) {\n\t\t\t\tcallback.args.input = $input\n\t\t\t\tcallback.args.checkbox = $checkbox\n\t\t\t\tcallback.args.clone = $clone\n\t\t\t}\n\n\t\t\t$checkbox.bind('click', function() {\n\t\t\t\tsetState($checkbox, $input, $clone)\n\t\t\t})\n\n\t\t\t$input.bind('keyup', function() {\n\t\t\t\tupdate($input, $clone)\n\t\t\t})\n\n\t\t\t$clone.bind('keyup', function() {\n\t\t\t\tupdate($clone, $input)\n\n\t\t\t\t// Added for JQuery Validation compatibility\n\t\t\t\t// This will trigger validation if it's ON for keyup event\n\t\t\t\t$input.trigger('keyup')\n\n\t\t\t})\n\n\t\t\t// Added for JQuery Validation compatibility\n\t\t\t// This will trigger validation if it's ON for blur event\n\t\t\t$clone.bind('blur', function() {\n\t\t\t\t$input.trigger('focusout')\n\t\t\t})\n\n\t\t\tsetState($checkbox, $input, $clone)\n\n\t\t\t// set type of password field clone (type=text) to password right on submit\n\t\t\t// to prevent browser save the value of this field\n\t\t\t$clone.closest('form').submit(function(e) {\n\t\t\t\t// .prop has to be used, because .attr throws\n\t\t\t\t// an error while changing a type of an input\n\t\t\t\t// element\n\t\t\t\t$clone.prop('type', 'password')\n\t\t\t})\n\n\t\t\tif (callback.fn) {\n\t\t\t\tcallback.fn(callback.args)\n\t\t\t}\n\n\t\t})\n\t},\n})\n","/**\n * @copyright Copyright (c) 2016 Julius Härtl <jus@bitgrid.net>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Richard Steinmetz <richard@steinmetz.cloud>\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 */\n\nimport $ from 'jquery'\nimport { translate as t } from '@nextcloud/l10n'\nimport { getToken } from './OC/requesttoken'\nimport getURLParameter from './Util/get-url-parameter'\n\nimport './jquery/showpassword'\n\nimport 'jquery-ui/ui/widgets/button'\nimport 'jquery-ui/themes/base/theme.css'\nimport 'jquery-ui/themes/base/button.css'\n\nimport 'bootstrap/js/dist/tooltip'\nimport './Polyfill/tooltip'\n\nimport 'strengthify'\nimport 'strengthify/strengthify.css'\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\tconst dbtypes = {\n\t\tsqlite: !!$('#hasSQLite').val(),\n\t\tmysql: !!$('#hasMySQL').val(),\n\t\tpostgresql: !!$('#hasPostgreSQL').val(),\n\t\toracle: !!$('#hasOracle').val(),\n\t}\n\n\t$('#selectDbType').buttonset()\n\t// change links inside an info box back to their default appearance\n\t$('#selectDbType p.info a').button('destroy')\n\n\tif ($('#hasSQLite').val()) {\n\t\t$('#use_other_db').hide()\n\t\t$('#use_oracle_db').hide()\n\t} else {\n\t\t$('#sqliteInformation').hide()\n\t}\n\t$('#adminlogin').change(function() {\n\t\t$('#adminlogin').val($.trim($('#adminlogin').val()))\n\t})\n\t$('#sqlite').click(function() {\n\t\t$('#use_other_db').slideUp(250)\n\t\t$('#use_oracle_db').slideUp(250)\n\t\t$('#sqliteInformation').show()\n\t\t$('#dbname').attr('pattern', '[0-9a-zA-Z$_-]+')\n\t})\n\n\t$('#mysql,#pgsql').click(function() {\n\t\t$('#use_other_db').slideDown(250)\n\t\t$('#use_oracle_db').slideUp(250)\n\t\t$('#sqliteInformation').hide()\n\t\t$('#dbname').attr('pattern', '[0-9a-zA-Z$_-]+')\n\t})\n\n\t$('#oci').click(function() {\n\t\t$('#use_other_db').slideDown(250)\n\t\t$('#use_oracle_db').show(250)\n\t\t$('#sqliteInformation').hide()\n\t\t$('#dbname').attr('pattern', '[0-9a-zA-Z$_-.]+')\n\t})\n\n\t$('#showAdvanced').click(function(e) {\n\t\te.preventDefault()\n\t\t$('#datadirContent').slideToggle(250)\n\t\t$('#databaseBackend').slideToggle(250)\n\t\t$('#databaseField').slideToggle(250)\n\t})\n\t$('form').submit(function() {\n\t\t// Save form parameters\n\t\tconst post = $(this).serializeArray()\n\n\t\t// Show spinner while finishing setup\n\t\t$('.float-spinner').show(250)\n\n\t\t// Disable inputs\n\t\t$(':submit', this).attr('disabled', 'disabled').val($(':submit', this).data('finishing'))\n\t\t$('input', this).addClass('ui-state-disabled').attr('disabled', 'disabled')\n\t\t// only disable buttons if they are present\n\t\tif ($('#selectDbType').find('.ui-button').length > 0) {\n\t\t\t$('#selectDbType').buttonset('disable')\n\t\t}\n\t\t$('.strengthify-wrapper, .tipsy')\n\t\t\t.css('-ms-filter', '\"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)\"')\n\t\t\t.css('filter', 'alpha(opacity=30)')\n\t\t\t.css('opacity', 0.3)\n\n\t\t// Create the form\n\t\tconst form = $('<form>')\n\t\tform.attr('action', $(this).attr('action'))\n\t\tform.attr('method', 'POST')\n\n\t\tfor (let i = 0; i < post.length; i++) {\n\t\t\tconst input = $('<input type=\"hidden\">')\n\t\t\tinput.attr(post[i])\n\t\t\tform.append(input)\n\t\t}\n\n\t\t// Add redirect_url\n\t\tconst redirectURL = getURLParameter('redirect_url')\n\t\tif (redirectURL) {\n\t\t\tconst redirectURLInput = $('<input type=\"hidden\">')\n\t\t\tredirectURLInput.attr({\n\t\t\t\tname: 'redirect_url',\n\t\t\t\tvalue: redirectURL,\n\t\t\t})\n\t\t\tform.append(redirectURLInput)\n\t\t}\n\n\t\t// Submit the form\n\t\tform.appendTo(document.body)\n\t\tform.submit()\n\t\treturn false\n\t})\n\n\t// Expand latest db settings if page was reloaded on error\n\tconst currentDbType = $('input[type=\"radio\"]:checked').val()\n\n\tif (currentDbType === undefined) {\n\t\t$('input[type=\"radio\"]').first().click()\n\t}\n\n\tif (\n\t\tcurrentDbType === 'sqlite'\n\t\t|| (dbtypes.sqlite && currentDbType === undefined)\n\t) {\n\t\t$('#datadirContent').hide(250)\n\t\t$('#databaseBackend').hide(250)\n\t\t$('#databaseField').hide(250)\n\t\t$('.float-spinner').hide(250)\n\t}\n\n\t$('#adminpass').strengthify({\n\t\tzxcvbn: OC.linkTo('core', 'vendor/zxcvbn/dist/zxcvbn.js'),\n\t\ttitles: [\n\t\t\tt('core', 'Very weak password'),\n\t\t\tt('core', 'Weak password'),\n\t\t\tt('core', 'So-so password'),\n\t\t\tt('core', 'Good password'),\n\t\t\tt('core', 'Strong password'),\n\t\t],\n\t\tdrawTitles: true,\n\t\tnonce: btoa(getToken()),\n\t})\n\n\t$('#dbpass').showPassword().keyup()\n\t$('#adminpass').showPassword().keyup()\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\n/**\n * @param {any} name -\n */\nexport default function getURLParameter(name) {\n\treturn decodeURIComponent(\n\t\t// eslint-disable-next-line no-sparse-arrays\n\t\t(new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search) || [, ''])[1].replace(/\\+/g, '%20')\n\t) || ''\n}\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 = 8998;","__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\t8998: 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__(84891); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","global","emit","token","tooltip","getToken","document","getElementsByTagName","getAttribute","setToken","newToken","$","showPassword","c","callback","fn","args","update","a","b","val","setState","checkbox","is","show","hide","this","each","$input","$checkbox","data","$clone","element","$element","attr","type","class","style","size","name","tabindex","autocomplete","undefined","cloneElement","insertAfter","input","clone","bind","trigger","closest","submit","e","prop","config","call","ex","TypeError","window","TESTING","console","error","addEventListener","dbtypes","buttonset","button","change","click","slideUp","slideDown","preventDefault","slideToggle","post","serializeArray","addClass","find","length","css","form","i","append","redirectURL","decodeURIComponent","RegExp","exec","location","search","replace","redirectURLInput","value","appendTo","body","currentDbType","first","strengthify","zxcvbn","OC","linkTo","titles","t","drawTitles","nonce","btoa","keyup","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","id","loaded","__webpack_modules__","m","amdD","Error","amdO","O","result","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","definition","o","defineProperty","enumerable","get","g","globalThis","Function","obj","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","baseURI","self","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","push","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"core-install.js?v=ee580b4e58a4177adf85","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/OC/requesttoken.js","webpack:///nextcloud/core/src/Polyfill/tooltip.js","webpack:///nextcloud/core/src/jquery/showpassword.js","webpack:///nextcloud/core/src/install.js","webpack:///nextcloud/core/src/Util/get-url-parameter.js","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/runtime/nonce","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 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport { emit } from '@nextcloud/event-bus'\n\n/**\n * @private\n * @param {Document} global the document to read the initial value from\n * @param {Function} emit the function to invoke for every new token\n * @return {object}\n */\nexport const manageToken = (global, emit) => {\n\tlet token = global.getElementsByTagName('head')[0].getAttribute('data-requesttoken')\n\n\treturn {\n\t\tgetToken: () => token,\n\t\tsetToken: newToken => {\n\t\t\ttoken = newToken\n\n\t\t\temit('csrf-token-update', {\n\t\t\t\ttoken,\n\t\t\t})\n\t\t},\n\t}\n}\n\nconst manageFromDocument = manageToken(document, emit)\n\n/**\n * @return {string}\n */\nexport const getToken = manageFromDocument.getToken\n\n/**\n * @param {string} newToken new token\n */\nexport const setToken = manageFromDocument.setToken\n","/**\n * @copyright 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nimport $ from 'jquery'\n\n$.prototype.tooltip = (function(tooltip) {\n\treturn function(config) {\n\t\ttry {\n\t\t\treturn tooltip.call(this, config)\n\t\t} catch (ex) {\n\t\t\tif (ex instanceof TypeError && config === 'destroy') {\n\t\t\t\tif (window.TESTING === undefined) {\n\t\t\t\t\tconsole.error('Deprecated call $.tooltip(\\'destroy\\') has been deprecated and should be removed')\n\t\t\t\t}\n\t\t\t\treturn tooltip.call(this, 'dispose')\n\t\t\t}\n\t\t\tif (ex instanceof TypeError && config === 'fixTitle') {\n\t\t\t\tif (window.TESTING === undefined) {\n\t\t\t\t\tconsole.error('Deprecated call $.tooltip(\\'fixTitle\\') has been deprecated and should be removed')\n\t\t\t\t}\n\t\t\t\treturn tooltip.call(this, '_fixTitle')\n\t\t\t}\n\t\t}\n\t}\n})($.prototype.tooltip)\n","/**\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport $ from 'jquery'\n\n/**\n * @name Show Password\n * @description\n * @version 1.3.0\n * @requires Jquery 1.5\n *\n * @author Jan Jarfalk <jan.jarfalk@unwrongest.com>\n * author-website http://www.unwrongest.com\n *\n * special-thanks Michel Gratton\n *\n * @license MIT\n */\n$.fn.extend({\n\tshowPassword(c) {\n\n\t\t// Setup callback object\n\t\tconst callback = { fn: null, args: {} }\n\t\tcallback.fn = c\n\n\t\t// Clones passwords and turn the clones into text inputs\n\t\tconst cloneElement = function(element) {\n\n\t\t\tconst $element = $(element)\n\n\t\t\tconst $clone = $('<input />')\n\n\t\t\t// Name added for JQuery Validation compatibility\n\t\t\t// Element name is required to avoid script warning.\n\t\t\t$clone.attr({\n\t\t\t\ttype: 'text',\n\t\t\t\tclass: $element.attr('class'),\n\t\t\t\tstyle: $element.attr('style'),\n\t\t\t\tsize: $element.attr('size'),\n\t\t\t\tname: $element.attr('name') + '-clone',\n\t\t\t\ttabindex: $element.attr('tabindex'),\n\t\t\t\tautocomplete: 'off',\n\t\t\t})\n\n\t\t\tif ($element.attr('placeholder') !== undefined) {\n\t\t\t\t$clone.attr('placeholder', $element.attr('placeholder'))\n\t\t\t}\n\n\t\t\treturn $clone\n\n\t\t}\n\n\t\t// Transfers values between two elements\n\t\tconst update = function(a, b) {\n\t\t\tb.val(a.val())\n\t\t}\n\n\t\t// Shows a or b depending on checkbox\n\t\tconst setState = function(checkbox, a, b) {\n\n\t\t\tif (checkbox.is(':checked')) {\n\t\t\t\tupdate(a, b)\n\t\t\t\tb.show()\n\t\t\t\ta.hide()\n\t\t\t} else {\n\t\t\t\tupdate(b, a)\n\t\t\t\tb.hide()\n\t\t\t\ta.show()\n\t\t\t}\n\n\t\t}\n\n\t\treturn this.each(function() {\n\n\t\t\tconst $input = $(this)\n\t\t\tconst $checkbox = $($input.data('typetoggle'))\n\n\t\t\t// Create clone\n\t\t\tconst $clone = cloneElement($input)\n\t\t\t$clone.insertAfter($input)\n\n\t\t\t// Set callback arguments\n\t\t\tif (callback.fn) {\n\t\t\t\tcallback.args.input = $input\n\t\t\t\tcallback.args.checkbox = $checkbox\n\t\t\t\tcallback.args.clone = $clone\n\t\t\t}\n\n\t\t\t$checkbox.bind('click', function() {\n\t\t\t\tsetState($checkbox, $input, $clone)\n\t\t\t})\n\n\t\t\t$input.bind('keyup', function() {\n\t\t\t\tupdate($input, $clone)\n\t\t\t})\n\n\t\t\t$clone.bind('keyup', function() {\n\t\t\t\tupdate($clone, $input)\n\n\t\t\t\t// Added for JQuery Validation compatibility\n\t\t\t\t// This will trigger validation if it's ON for keyup event\n\t\t\t\t$input.trigger('keyup')\n\n\t\t\t})\n\n\t\t\t// Added for JQuery Validation compatibility\n\t\t\t// This will trigger validation if it's ON for blur event\n\t\t\t$clone.bind('blur', function() {\n\t\t\t\t$input.trigger('focusout')\n\t\t\t})\n\n\t\t\tsetState($checkbox, $input, $clone)\n\n\t\t\t// set type of password field clone (type=text) to password right on submit\n\t\t\t// to prevent browser save the value of this field\n\t\t\t$clone.closest('form').submit(function(e) {\n\t\t\t\t// .prop has to be used, because .attr throws\n\t\t\t\t// an error while changing a type of an input\n\t\t\t\t// element\n\t\t\t\t$clone.prop('type', 'password')\n\t\t\t})\n\n\t\t\tif (callback.fn) {\n\t\t\t\tcallback.fn(callback.args)\n\t\t\t}\n\n\t\t})\n\t},\n})\n","/**\n * @copyright Copyright (c) 2016 Julius Härtl <jus@bitgrid.net>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Richard Steinmetz <richard@steinmetz.cloud>\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 */\n\nimport $ from 'jquery'\nimport { translate as t } from '@nextcloud/l10n'\nimport { getToken } from './OC/requesttoken'\nimport getURLParameter from './Util/get-url-parameter'\n\nimport './jquery/showpassword'\n\nimport 'jquery-ui/ui/widgets/button'\nimport 'jquery-ui/themes/base/theme.css'\nimport 'jquery-ui/themes/base/button.css'\n\nimport 'bootstrap/js/dist/tooltip'\nimport './Polyfill/tooltip'\n\nimport 'strengthify'\nimport 'strengthify/strengthify.css'\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\tconst dbtypes = {\n\t\tsqlite: !!$('#hasSQLite').val(),\n\t\tmysql: !!$('#hasMySQL').val(),\n\t\tpostgresql: !!$('#hasPostgreSQL').val(),\n\t\toracle: !!$('#hasOracle').val(),\n\t}\n\n\t$('#selectDbType').buttonset()\n\t// change links inside an info box back to their default appearance\n\t$('#selectDbType p.info a').button('destroy')\n\n\tif ($('#hasSQLite').val()) {\n\t\t$('#use_other_db').hide()\n\t\t$('#use_oracle_db').hide()\n\t} else {\n\t\t$('#sqliteInformation').hide()\n\t}\n\t$('#adminlogin').change(function() {\n\t\t$('#adminlogin').val($.trim($('#adminlogin').val()))\n\t})\n\t$('#sqlite').click(function() {\n\t\t$('#use_other_db').slideUp(250)\n\t\t$('#use_oracle_db').slideUp(250)\n\t\t$('#sqliteInformation').show()\n\t\t$('#dbname').attr('pattern', '[0-9a-zA-Z$_-]+')\n\t})\n\n\t$('#mysql,#pgsql').click(function() {\n\t\t$('#use_other_db').slideDown(250)\n\t\t$('#use_oracle_db').slideUp(250)\n\t\t$('#sqliteInformation').hide()\n\t\t$('#dbname').attr('pattern', '[0-9a-zA-Z$_-]+')\n\t})\n\n\t$('#oci').click(function() {\n\t\t$('#use_other_db').slideDown(250)\n\t\t$('#use_oracle_db').show(250)\n\t\t$('#sqliteInformation').hide()\n\t\t$('#dbname').attr('pattern', '[0-9a-zA-Z$_-.]+')\n\t})\n\n\t$('#showAdvanced').click(function(e) {\n\t\te.preventDefault()\n\t\t$('#datadirContent').slideToggle(250)\n\t\t$('#databaseBackend').slideToggle(250)\n\t\t$('#databaseField').slideToggle(250)\n\t})\n\t$('form').submit(function() {\n\t\t// Save form parameters\n\t\tconst post = $(this).serializeArray()\n\n\t\t// Show spinner while finishing setup\n\t\t$('.float-spinner').show(250)\n\n\t\t// Disable inputs\n\t\t$(':submit', this).attr('disabled', 'disabled').val($(':submit', this).data('finishing'))\n\t\t$('input', this).addClass('ui-state-disabled').attr('disabled', 'disabled')\n\t\t// only disable buttons if they are present\n\t\tif ($('#selectDbType').find('.ui-button').length > 0) {\n\t\t\t$('#selectDbType').buttonset('disable')\n\t\t}\n\t\t$('.strengthify-wrapper, .tipsy')\n\t\t\t.css('-ms-filter', '\"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)\"')\n\t\t\t.css('filter', 'alpha(opacity=30)')\n\t\t\t.css('opacity', 0.3)\n\n\t\t// Create the form\n\t\tconst form = $('<form>')\n\t\tform.attr('action', $(this).attr('action'))\n\t\tform.attr('method', 'POST')\n\n\t\tfor (let i = 0; i < post.length; i++) {\n\t\t\tconst input = $('<input type=\"hidden\">')\n\t\t\tinput.attr(post[i])\n\t\t\tform.append(input)\n\t\t}\n\n\t\t// Add redirect_url\n\t\tconst redirectURL = getURLParameter('redirect_url')\n\t\tif (redirectURL) {\n\t\t\tconst redirectURLInput = $('<input type=\"hidden\">')\n\t\t\tredirectURLInput.attr({\n\t\t\t\tname: 'redirect_url',\n\t\t\t\tvalue: redirectURL,\n\t\t\t})\n\t\t\tform.append(redirectURLInput)\n\t\t}\n\n\t\t// Submit the form\n\t\tform.appendTo(document.body)\n\t\tform.submit()\n\t\treturn false\n\t})\n\n\t// Expand latest db settings if page was reloaded on error\n\tconst currentDbType = $('input[type=\"radio\"]:checked').val()\n\n\tif (currentDbType === undefined) {\n\t\t$('input[type=\"radio\"]').first().click()\n\t}\n\n\tif (\n\t\tcurrentDbType === 'sqlite'\n\t\t|| (dbtypes.sqlite && currentDbType === undefined)\n\t) {\n\t\t$('#datadirContent').hide(250)\n\t\t$('#databaseBackend').hide(250)\n\t\t$('#databaseField').hide(250)\n\t\t$('.float-spinner').hide(250)\n\t}\n\n\t$('#adminpass').strengthify({\n\t\tzxcvbn: OC.linkTo('core', 'vendor/zxcvbn/dist/zxcvbn.js'),\n\t\ttitles: [\n\t\t\tt('core', 'Very weak password'),\n\t\t\tt('core', 'Weak password'),\n\t\t\tt('core', 'So-so password'),\n\t\t\tt('core', 'Good password'),\n\t\t\tt('core', 'Strong password'),\n\t\t],\n\t\tdrawTitles: true,\n\t\tnonce: btoa(getToken()),\n\t})\n\n\t$('#dbpass').showPassword().keyup()\n\t$('#adminpass').showPassword().keyup()\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\n/**\n * @param {any} name -\n */\nexport default function getURLParameter(name) {\n\treturn decodeURIComponent(\n\t\t// eslint-disable-next-line no-sparse-arrays\n\t\t(new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search) || [, ''])[1].replace(/\\+/g, '%20')\n\t) || ''\n}\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 = 8998;","__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\t8998: 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));","__webpack_require__.nc = undefined;","// 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__(84891); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","global","emit","token","tooltip","getToken","document","getElementsByTagName","getAttribute","setToken","newToken","$","showPassword","c","callback","fn","args","update","a","b","val","setState","checkbox","is","show","hide","this","each","$input","$checkbox","data","$clone","element","$element","attr","type","class","style","size","name","tabindex","autocomplete","undefined","cloneElement","insertAfter","input","clone","bind","trigger","closest","submit","e","prop","config","call","ex","TypeError","window","TESTING","console","error","addEventListener","dbtypes","buttonset","button","change","click","slideUp","slideDown","preventDefault","slideToggle","post","serializeArray","addClass","find","length","css","form","i","append","redirectURL","decodeURIComponent","RegExp","exec","location","search","replace","redirectURLInput","value","appendTo","body","currentDbType","first","strengthify","zxcvbn","OC","linkTo","titles","t","drawTitles","nonce","btoa","keyup","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","id","loaded","__webpack_modules__","m","amdD","Error","amdO","O","result","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","definition","o","defineProperty","enumerable","get","g","globalThis","Function","obj","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","baseURI","self","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","push","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/core-login.js b/dist/core-login.js
index 9ae7ead23f7..0fe20780499 100644
--- a/dist/core-login.js
+++ b/dist/core-login.js
@@ -1,3 +1,3 @@
/*! For license information please see core-login.js.LICENSE.txt */
-!function(){var e,o={10473:function(e,o,r){"use strict";var i=r(20144),a=r(74854),s=r(19755),l=r.n(s),c=r(79753),u={},d=[],p=r(64492),f=r(26932),h={updatableNotification:null,getDefaultNotificationFunction:null,setDefault:function(t){this.getDefaultNotificationFunction=t},hide:function(t,e){p.default.isFunction(t)&&(e=t,t=void 0),t?(t.each((function(){l()(this)[0].toastify?l()(this)[0].toastify.hideToast():console.error("cannot hide toast because object is not set"),this===this.updatableNotification&&(this.updatableNotification=null)})),e&&e.call(),this.getDefaultNotificationFunction&&this.getDefaultNotificationFunction()):console.error("Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification")},showHtml:function(t,e){(e=e||{}).isHTML=!0,e.timeout=e.timeout?e.timeout:f.Rl;var n=(0,f.PV)(t,e);return n.toastElement.toastify=n,l()(n.toastElement)},show:function(t,e){(e=e||{}).timeout=e.timeout?e.timeout:f.Rl;var n=(0,f.PV)(function(t){return t.toString().split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;").split('"').join("&quot;").split("'").join("&#039;")}(t),e);return n.toastElement.toastify=n,l()(n.toastElement)},showUpdate:function(t){return this.updatableNotification&&this.updatableNotification.hideToast(),this.updatableNotification=(0,f.PV)(t,{timeout:f.Rl}),this.updatableNotification.toastElement.toastify=this.updatableNotification,l()(this.updatableNotification.toastElement)},showTemporary:function(t,e){(e=e||{}).timeout=e.timeout||f.TN;var n=(0,f.PV)(t,e);return n.toastElement.toastify=n,l()(n.toastElement)},isHidden:function(){return!l()("#content").find(".toastify").length}},m=p.default.throttle((function(){h.showTemporary(t("core","Connection to server lost"))}),7e3,{trailing:!1}),g={enableDynamicSlideToggle:function(){},showAppSidebar:function(t){(t||l()("#app-sidebar")).removeClass("disappear").show(),l()("#app-content").trigger(new(l().Event)("appresized"))},hideAppSidebar:function(t){(t||l()("#app-sidebar")).hide().addClass("disappear"),l()("#app-content").trigger(new(l().Event)("appresized"))}};function v(t,e,n){"post"!==t&&"delete"!==t||!Ut.PasswordConfirmation.requiresPasswordConfirmation()?(n=n||{},l().ajax({type:t.toUpperCase(),url:(0,c.generateOcsUrl)("apps/provisioning_api/api/v1/config/apps")+e,data:n.data||{},success:n.success,error:n.error})):Ut.PasswordConfirmation.requirePasswordConfirmation(_.bind(v,this,t,e,n))}var w=window.oc_appconfig||{},y={getValue:function(t,e,n,o){!function(t,e,n,o){(o=o||{}).data={defaultValue:n},v("get","/"+t+"/"+e,o)}(t,e,n,{success:o})},setValue:function(t,e,n){!function(t,e,n,o){(o=o||{}).data={value:n},v("post","/"+t+"/"+e,o)}(t,e,n)},getApps:function(t){!function(t){v("get","",t)}({success:t})},getKeys:function(t,e){!function(t,e){v("get","/"+t,e)}(t,{success:e})},deleteKey:function(t,e){!function(t,e,n){v("delete","/"+t+"/"+e,void 0)}(t,e)}},b=void 0!==window._oc_appswebroots&&window._oc_appswebroots,P=r(72316),C=r.n(P),k=r(87240),x={create:"POST",update:"PROPPATCH",patch:"PROPPATCH",delete:"DELETE",read:"PROPFIND"};function T(t,e){if(p.default.isArray(t))return p.default.map(t,(function(t){return T(t,e)}));var n={href:t.href};return p.default.each(t.propStat,(function(t){if("HTTP/1.1 200 OK"===t.status)for(var o in t.properties){var r=o;o in e&&(r=e[o]),n[r]=t.properties[o]}})),n.id||(n.id=O(n.href)),n}function O(t){var e=t.indexOf("?");e>0&&(t=t.substr(0,e));var n,o=t.split("/");do{n=o[o.length-1],o.pop()}while(!n&&o.length>0);return n}function A(t){return t>=200&&t<=299}function S(t,e,n,o){return t.propPatch(e.url,function(t,e){var n,o={};for(n in t){var r=e[n],i=t[n];r||(console.warn('No matching DAV property for property "'+n),r=n),(p.default.isBoolean(i)||p.default.isNumber(i))&&(i=""+i),o[r]=i}return o}(n.changed,e.davProperties),o).then((function(t){A(t.status)?p.default.isFunction(e.success)&&e.success(n.toJSON()):p.default.isFunction(e.error)&&e.error(t)}))}var E=C().noConflict();Object.assign(E,{davCall:function(t,e){var n=new k.dav.Client({baseUrl:t.url,xmlNamespaces:p.default.extend({"DAV:":"d","http://owncloud.org/ns":"oc"},t.xmlNamespaces||{})});n.resolveUrl=function(){return t.url};var o=p.default.extend({"X-Requested-With":"XMLHttpRequest",requesttoken:OC.requestToken},t.headers);return"PROPFIND"===t.type?function(t,e,n,o){return t.propFind(e.url,p.default.values(e.davProperties)||[],e.depth,o).then((function(t){if(A(t.status)){if(p.default.isFunction(e.success)){var n=p.default.invert(e.davProperties),o=T(t.body,n);e.depth>0&&o.shift(),e.success(o)}}else p.default.isFunction(e.error)&&e.error(t)}))}(n,t,0,o):"PROPPATCH"===t.type?S(n,t,e,o):"MKCOL"===t.type?function(t,e,n,o){return t.request(e.type,e.url,o,null).then((function(r){A(r.status)?S(t,e,n,o):p.default.isFunction(e.error)&&e.error(r)}))}(n,t,e,o):function(t,e,n,o){return o["Content-Type"]="application/json",t.request(e.type,e.url,o,e.data).then((function(t){if(A(t.status)){if(p.default.isFunction(e.success)){if("PUT"===e.type||"POST"===e.type||"MKCOL"===e.type){var o=t.body||n.toJSON(),r=t.xhr.getResponseHeader("Content-Location");return"POST"===e.type&&r&&(o.id=O(r)),void e.success(o)}if(207===t.status){var i=p.default.invert(e.davProperties);e.success(T(t.body,i))}else e.success(t.body)}}else p.default.isFunction(e.error)&&e.error(t)}))}(n,t,e,o)},davSync:function(t){return function(e,n,o){var r={type:x[e]||e},i=n instanceof t.Collection;if("update"===e&&(n.hasInnerCollection?r.type="MKCOL":(n.usePUT||n.collection&&n.collection.usePUT)&&(r.type="PUT")),o.url||(r.url=p.default.result(n,"url")||function(){throw new Error('A "url" property or function must be specified')}()),null!=o.data||!n||"create"!==e&&"update"!==e&&"patch"!==e||(r.data=JSON.stringify(o.attrs||n.toJSON(o))),"PROPFIND"!==r.type&&(r.processData=!1),"PROPFIND"===r.type||"PROPPATCH"===r.type){var a=n.davProperties;!a&&n.model&&(a=n.model.prototype.davProperties),a&&(p.default.isFunction(a)?r.davProperties=a.call(n):r.davProperties=a),r.davProperties=p.default.extend(r.davProperties||{},o.davProperties),p.default.isUndefined(o.depth)&&(o.depth=i?1:0)}var s=o.error;o.error=function(t,e,n){o.textStatus=e,o.errorThrown=n,s&&s.call(o.context,t,e,n)};var l=o.xhr=t.davCall(p.default.extend(r,o),n);return n.trigger("request",n,l,o),l}}(E)});var j=E,L=r(76632),U=window._oc_config||{},I=P.Model.extend({defaults:{fullName:"",lastMessage:"",actions:[],hasOneAction:!1,hasTwoActions:!1,hasManyActions:!1},initialize:function(){0===this.get("actions").length?this.set("hasOneAction",!0):1===this.get("actions").length?(this.set("hasTwoActions",!0),this.set("secondAction",this.get("actions")[0])):this.set("hasManyActions",!0)}}),R=P.Collection.extend({model:I}),F=P.View.extend({_collection:void 0,_subViews:[],initialize:function(t){this._collection=t.collection},render:function(){var t=this;return t.$el.html(""),t._subViews=[],t._collection.forEach((function(e){var n=new $({model:e});n.render(),t.$el.append(n.$el),n.on("toggle:actionmenu",t._onChildActionMenuToggle,t),t._subViews.push(n)})),t},_onChildActionMenuToggle:function(t){this._subViews.forEach((function(e){e.trigger("parent:toggle:actionmenu",t)}))}}),$=P.View.extend({className:"contact",_template:void 0,_model:void 0,_actionMenuShown:!1,events:{"click .icon-more":"_onToggleActionsMenu"},contactTemplate:r(10944),template:function(t){return this.contactTemplate(t)},initialize:function(t){this._model=t.model,this.on("parent:toggle:actionmenu",this._onOtherActionMenuOpened,this)},render:function(){return this.$el.html(this.template({contact:this._model.toJSON()})),this.delegateEvents(),this.$("div.avatar").imageplaceholder(this._model.get("fullName")),this.$(".top-action").tooltip({placement:"left"}),this.$(".second-action").tooltip({placement:"left"}),this},_onToggleActionsMenu:function(){this._actionMenuShown=!this._actionMenuShown,this._actionMenuShown?this.$(".menu").show():this.$(".menu").hide(),this.trigger("toggle:actionmenu",this.$el)},_onOtherActionMenuOpened:function(t){this.$el.is(t)||(this._actionMenuShown=!1,this.$(".menu").hide())}}),N=P.View.extend({_loadingTemplate:void 0,_errorTemplate:void 0,_contentTemplate:void 0,_contactsTemplate:void 0,_contacts:void 0,_searchTerm:"",events:{"input #contactsmenu-search":"_onSearch"},templates:{loading:r(95386),error:r(20421),menu:r(66115),list:r(34083)},_onSearch:p.default.debounce((function(t){var e=this.$("#contactsmenu-search").val();e!==this._searchTerm&&(this.trigger("search",this.$("#contactsmenu-search").val()),this._searchTerm=e)}),700),loadingTemplate:function(t){return this.templates.loading(t)},errorTemplate:function(e){return this.templates.error(p.default.extend({couldNotLoadText:t("core","Could not load your contacts")},e))},contentTemplate:function(e){return this.templates.menu(p.default.extend({searchContactsText:t("core","Search contacts …")},e))},contactsTemplate:function(e){return this.templates.list(p.default.extend({noContactsFoundText:t("core","No contacts found"),showAllContactsText:t("core","Show all contacts …"),contactsAppMgmtText:t("core","Install the Contacts app")},e))},initialize:function(t){this.options=t},showLoading:function(t){this.render(),this._contacts=void 0,this.$(".content").html(this.loadingTemplate({loadingText:t}))},showError:function(){this.render(),this._contacts=void 0,this.$(".content").html(this.errorTemplate())},showContacts:function(t,e){this._contacts=t.contacts,this.render({contacts:t.contacts});var n=new F({collection:t.contacts});n.render(),this.$(".content").html(this.contactsTemplate({contacts:t.contacts,searchTerm:e,contactsAppEnabled:t.contactsAppEnabled,contactsAppURL:Ut.generateUrl("/apps/contacts"),canInstallApp:Ut.isUserAdmin(),contactsAppMgmtURL:Ut.generateUrl("/settings/apps/social/contacts")})),this.$("#contactsmenu-contacts").html(n.$el)},render:function(t){var e=this.$("#contactsmenu-search").val();return this.$el.html(this.contentTemplate(t)),this.$("#contactsmenu-search").val(e),this.$("#contactsmenu-search").focus(),this}}),M=function(t){this.initialize(t)};M.prototype={$el:void 0,_$trigger:void 0,_view:void 0,_contactsPromise:void 0,initialize:function(t){this.$el=t.el,this._$trigger=t.trigger,this._view=new N({el:this.$el}),this._view.on("search",(function(t){this._loadContacts(t)}),this),Ut.registerMenu(this._$trigger,this.$el,function(){this._toggleVisibility(!0)}.bind(this),!0),this.$el.on("beforeHide",function(){this._toggleVisibility(!1)}.bind(this))},_toggleVisibility:function(t){return t?this._loadContacts():(this.$el.html(""),Promise.resolve())},_getContacts:function(t){var e=Ut.generateUrl("/contactsmenu/contacts");return Promise.resolve(l().ajax(e,{method:"POST",data:{filter:t}}))},_loadContacts:function(e){var n=this;return n._contactsPromise||(n._contactsPromise=n._getContacts(e)),p.default.isUndefined(e)||""===e?n._view.showLoading(t("core","Loading your contacts …")):n._view.showLoading(t("core","Looking for {term} …",{term:e})),n._contactsPromise.then((function(t){t.contacts=new R(t.contacts),n._view.showContacts(t,e)}),(function(t){n._view.showError(),console.error("There was an error loading your contacts",t)})).then((function(){delete n._contactsPromise})).catch(console.error.bind(this))}};var z=M,D=document.getElementsByTagName("head")[0].getAttribute("data-user"),B=document.getElementsByTagName("head")[0].getAttribute("data-user-displayname"),q=void 0!==D&&D;function H(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function Y(t,e,n){return e&&H(t.prototype,e),n&&H(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}var K={Search:Y((function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),console.warn("OCA.Search is deprecated. Please use the unified search API instead")}))};function G(t){return G="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},G(t)}var V,Z,W,J={YES_NO_BUTTONS:70,OK_BUTTONS:71,FILEPICKER_TYPE_CHOOSE:1,FILEPICKER_TYPE_MOVE:2,FILEPICKER_TYPE_COPY:3,FILEPICKER_TYPE_COPY_MOVE:4,FILEPICKER_TYPE_CUSTOM:5,dialogsCounter:0,alert:function(t,e,n,o){this.message(t,e,"alert",J.OK_BUTTON,n,o)},info:function(t,e,n,o){this.message(t,e,"info",J.OK_BUTTON,n,o)},confirm:function(t,e,n,o){return this.message(t,e,"notice",J.YES_NO_BUTTONS,n,o)},confirmDestructive:function(t,e,n,o,r){return this.message(t,e,"none",n,o,void 0===r||r)},confirmHtml:function(t,e,n,o){return this.message(t,e,"notice",J.YES_NO_BUTTONS,n,o,!0)},prompt:function(e,n,o,r,i,a){return l().when(this._getMessageTemplate()).then((function(s){var c="oc-dialog-"+J.dialogsCounter+"-content",u="#"+c,d=s.octemplate({dialog_name:c,title:n,message:e,type:"notice"}),f=l()("<input/>");f.attr("type",a?"password":"text").attr("id",c+"-input").attr("placeholder",i);var h=l()("<label/>").attr("for",c+"-input").text(i+": ");d.append(h),d.append(f),void 0===r&&(r=!1),l()("body").append(d),void 0!==o&&(o=p.default.once(o));var m=[{text:t("core","No"),click:function(){void 0!==o&&o(!1,f.val()),l()(u).ocdialog("close")}},{text:t("core","Yes"),click:function(){void 0!==o&&o(!0,f.val()),l()(u).ocdialog("close")},defaultButton:!0}];l()(u).ocdialog({closeOnEscape:!0,modal:r,buttons:m,close:function(){void 0!==o&&o(!1,f.val())}}),f.focus(),J.dialogsCounter++}))},filepicker:function(e,n,o,r,i,a,s,c){var u=this;if(this.filepicker.sortField="name",this.filepicker.sortOrder="asc",!this.filepicker.loading){void 0===a&&(a=this.FILEPICKER_TYPE_CHOOSE);var d=t("core","No files in here"),f=t("files","New folder");a!==this.FILEPICKER_TYPE_COPY&&a!==this.FILEPICKER_TYPE_MOVE&&a!==this.FILEPICKER_TYPE_COPY_MOVE||(d=t("core","No more subfolders in here")),this.filepicker.loading=!0,this.filepicker.filesClient=K.Sharing&&K.Sharing.PublicApp&&K.Sharing.PublicApp.fileList?K.Sharing.PublicApp.fileList.filesClient:Ut.Files.getClient(),this.filelist=null,s=s||"",c=Object.assign({allowDirectoryChooser:!1},c),l().when(this._getFilePickerTemplate()).then((function(h){u.filepicker.loading=!1,u.$filePicker&&u.$filePicker.ocdialog("close"),null==r&&(r=[]),"string"==typeof r&&(r=[r]),u.$filePicker=h.octemplate({dialog_name:"oc-dialog-filepicker-content",title:e,emptytext:d,newtext:f,nameCol:t("core","Name"),sizeCol:t("core","Size"),modifiedCol:t("core","Modified")}).data("path",s).data("multiselect",o).data("mimetype",r).data("allowDirectoryChooser",c.allowDirectoryChooser),"function"==typeof c.filter&&u.$filePicker.data("filter",c.filter),void 0===i&&(i=!1),void 0===o&&(o=!1),u.$filePicker.find("#picker-view-toggle").remove(),u.$filePicker.find("#picker-filestable").removeClass("view-grid"),l()("body").append(u.$filePicker),u.$showGridView=l()("input#picker-showgridview"),u.$showGridView.on("change",p.default.bind(u._onGridviewChange,u)),u._getGridSettings();var m=u.$filePicker.find(".actions.creatable .button-add");a!==u.FILEPICKER_TYPE_CHOOSE||c.allowDirectoryChooser||m.hide(),m.on("focus",(function(){u.$filePicker.ocdialog("setEnterCallback",(function(){event.stopImmediatePropagation(),event.preventDefault(),m.click()}))})),m.on("blur",(function(){u.$filePicker.ocdialog("unsetEnterCallback")})),Ut.registerMenu(m,u.$filePicker.find(".menu"),(function(){v.tooltip("hide"),v.focus(),u.$filePicker.ocdialog("setEnterCallback",(function(){event.stopImmediatePropagation(),event.preventDefault(),u.$filePicker.submit()}));var t=v.val(),e=t.lastIndexOf(".");-1===e&&(e=t.length),v.selectRange(0,e)}));var g=u.$filePicker.find(".filenameform"),v=g.find("input[type='text']");g.find("input[type='submit']").on("click",(function(t){t.stopImmediatePropagation(),t.preventDefault(),g.submit()}));g.on("submit",(function(e){if(e.stopPropagation(),e.preventDefault(),function(){var e=v.val();try{if(function(e){var n=e.trim();if("."===n||".."===n)throw t("files",'"{name}" is an invalid file name.',{name:e});if(0===n.length)throw t("files","File name cannot be empty.");if(-1!==n.indexOf("/"))throw t("files",'"/" is not allowed inside a file name.');if(n.match(Ut.config.blacklist_files_regex))throw t("files",'"{name}" is not an allowed filetype',{name:e});return!0}(e)){if(u.filelist.find((function(t){return t.name===this}),e))throw t("files","{newName} already exists",{newName:e},void 0,{escape:!1});return!0}}catch(t){v.attr("title",t),v.tooltip({placement:"right",trigger:"manual",container:".newFolderMenu"}),v.tooltip("_fixTitle"),v.tooltip("show"),v.addClass("error")}return!1}()){var n=v.val();u.filepicker.filesClient.createDirectory(u.$filePicker.data("path")+"/"+n).always((function(t){u._fillFilePicker(u.$filePicker.data("path")+"/"+n)})),Ut.hideMenus(),u.$filePicker.ocdialog("unsetEnterCallback"),u.$filePicker.click(),v.val(f)}})),v.keypress((function(t){13!==t.keyCode&&13!==t.which||(t.stopImmediatePropagation(),t.preventDefault(),g.submit())})),v.on("input",(function(t){v.tooltip("hide")})),u.$filePicker.ready((function(){u.$fileListHeader=u.$filePicker.find(".filelist thead tr"),u.$filelist=u.$filePicker.find(".filelist tbody"),u.$filelistContainer=u.$filePicker.find(".filelist-container"),u.$dirTree=u.$filePicker.find(".dirtree"),u.$dirTree.on("click","div:not(:last-child)",u,(function(t){u._handleTreeListSelect(t,a)})),u.$filelist.on("click","tr",(function(t){u._handlePickerClick(t,l()(this),a)})),u.$fileListHeader.on("click","a",(function(t){var e=u.$filePicker.data("path");u.filepicker.sortField=l()(t.currentTarget).data("sort"),u.filepicker.sortOrder="asc"===u.filepicker.sortOrder?"desc":"asc",u._fillFilePicker(e)})),u._fillFilePicker(s)}));var w=function(t){if(void 0!==n){var e;if(!0===o)e=[],u.$filelist.find("tr.filepicker_element_selected").each((function(t,n){e.push(u.$filePicker.data("path")+"/"+l()(n).data("entryname"))}));else{e=u.$filePicker.data("path");var r=u.$filelist.find("tr.filepicker_element_selected").data("entryname");r&&(e+="/"+r)}n(e,t),u.$filePicker.ocdialog("close")}},y=[];a===J.FILEPICKER_TYPE_CHOOSE?y.push({text:t("core","Choose"),click:function(){w(J.FILEPICKER_TYPE_CHOOSE)},defaultButton:!0}):a===J.FILEPICKER_TYPE_CUSTOM?c.buttons.forEach((function(t){y.push({text:t.text,click:function(){w(t.type)},defaultButton:t.defaultButton})})):(a!==J.FILEPICKER_TYPE_COPY&&a!==J.FILEPICKER_TYPE_COPY_MOVE||y.push({text:t("core","Copy"),click:function(){w(J.FILEPICKER_TYPE_COPY)},defaultButton:!1}),a!==J.FILEPICKER_TYPE_MOVE&&a!==J.FILEPICKER_TYPE_COPY_MOVE||y.push({text:t("core","Move"),click:function(){w(J.FILEPICKER_TYPE_MOVE)},defaultButton:!0})),u.$filePicker.ocdialog({closeOnEscape:!0,width:600,height:500,modal:i,buttons:y,style:{buttons:"aside"},close:function(){try{l()(this).ocdialog("destroy").remove()}catch(t){}u.$filePicker=null}});var b=u.$filePicker.closest(".oc-dialog").find(".primary");-1!==u.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||u.$filePicker.data("allowDirectoryChooser")?b.prop("disabled",!1):b.prop("disabled",!0)})).fail((function(e,n){u.filepicker.loading=!1,0!==e&&alert(t("core","Error loading file picker template: {error}",{error:n}))}))}},message:function(e,n,o,r,i,a,s){return l().when(this._getMessageTemplate()).then((function(c){var u="oc-dialog-"+J.dialogsCounter+"-content",d="#"+u,p=c.octemplate({dialog_name:u,title:n,message:e,type:o},s?{escapeFunction:""}:{});void 0===a&&(a=!1),l()("body").append(p);var f=[];switch(r){case J.YES_NO_BUTTONS:f=[{text:t("core","No"),click:function(){void 0!==i&&i(!1),l()(d).ocdialog("close")}},{text:t("core","Yes"),click:function(){void 0!==i&&i(!0),l()(d).ocdialog("close")},defaultButton:!0}];break;case J.OK_BUTTON:f[0]={text:t("core","OK"),click:function(){l()(d).ocdialog("close"),void 0!==i&&i()},defaultButton:!0};break;default:"object"===G(r)&&r.type===J.YES_NO_BUTTONS&&(f=[{text:r.cancel||t("core","No"),click:function(){void 0!==i&&i(!1),l()(d).ocdialog("close")}},{text:r.confirm||t("core","Yes"),click:function(){void 0!==i&&i(!0),l()(d).ocdialog("close")},defaultButton:!0,classes:r.confirmClasses}])}l()(d).ocdialog({closeOnEscape:!0,closeCallback:function(){i&&i(!1)},modal:a,buttons:f}),J.dialogsCounter++})).fail((function(o,r){0===o?alert(n+": "+e):alert(t("core","Error loading message template: {error}",{error:r}))}))},_fileexistsshown:!1,fileexists:function(e,o,r,i){var a=this,s=new(l().Deferred),c=function(t,e,n,o,r){o=Math.round(o),r=Math.round(r);for(var i=t.getContext("2d").getImageData(0,0,e,n),a=t.getContext("2d").getImageData(0,0,o,r),s=i.data,l=a.data,c=e/o,u=n/r,d=Math.ceil(c/2),p=Math.ceil(u/2),f=0;f<r;f++)for(var h=0;h<o;h++){for(var m=4*(h+f*o),g=0,v=0,w=0,y=0,b=0,_=0,P=0,C=(f+.5)*u,k=Math.floor(f*u);k<(f+1)*u;k++)for(var x=Math.abs(C-(k+.5))/p,T=(h+.5)*c,O=x*x,A=Math.floor(h*c);A<(h+1)*c;A++){var S=Math.abs(T-(A+.5))/d,E=Math.sqrt(O+S*S);E>=-1&&E<=1&&(g=2*E*E*E-3*E*E+1)>0&&(P+=g*s[3+(S=4*(A+k*e))],w+=g,s[S+3]<255&&(g=g*s[S+3]/250),y+=g*s[S],b+=g*s[S+1],_+=g*s[S+2],v+=g)}l[m]=y/v,l[m+1]=b/v,l[m+2]=_/v,l[m+3]=P/w}t.getContext("2d").clearRect(0,0,Math.max(e,o),Math.max(n,r)),t.width=o,t.height=r,t.getContext("2d").putImageData(a,0,0)},u=function(n,o,r){var i=n.find(".template").clone().removeClass("template").addClass("conflict"),a=i.find(".original"),s=i.find(".replacement");i.data("data",e),i.find(".filename").text(o.name),a.find(".size").text(Ut.Util.humanFileSize(o.size)),a.find(".mtime").text(Ut.Util.formatDate(o.mtime)),r.size&&r.lastModified&&(s.find(".size").text(Ut.Util.humanFileSize(r.size)),s.find(".mtime").text(Ut.Util.formatDate(r.lastModified)));var u=o.directory+"/"+o.name,d={file:u,x:96,y:96,c:o.etag,forceIcon:0},p=Files.generatePreviewUrl(d);p=p.replace(/'/g,"%27"),a.find(".icon").css({"background-image":"url('"+p+"')"}),function(t){var e=new(l().Deferred),n=t.type&&t.type.split("/").shift();if(window.FileReader&&"image"===n){var o=new FileReader;o.onload=function(t){var n=new Blob([t.target.result]);window.URL=window.URL||window.webkitURL;var o=window.URL.createObjectURL(n),r=new Image;r.src=o,r.onload=function(){var t,n,o,i,a,s,l,u=(t=r,a=document.createElement("canvas"),s=t.width,l=t.height,s>l?(o=0,n=(s-l)/2):(o=(l-s)/2,n=0),i=Math.min(s,l),a.width=i,a.height=i,a.getContext("2d").drawImage(t,n,o,i,i,0,0,i,i),c(a,i,i,96,96),a.toDataURL("image/png",.7));e.resolve(u)}},o.readAsArrayBuffer(t)}else e.reject();return e}(r).then((function(t){s.find(".icon").css("background-image","url("+t+")")}),(function(){u=Ut.MimeType.getIconUrl(r.type),s.find(".icon").css("background-image","url("+u+")")}));var f=n.find(".conflict").length;a.find("input:checkbox").attr("id","checkbox_original_"+f),s.find("input:checkbox").attr("id","checkbox_replacement_"+f),n.append(i),r.lastModified>o.mtime?s.find(".mtime").css("font-weight","bold"):r.lastModified<o.mtime&&a.find(".mtime").css("font-weight","bold"),r.size&&r.size>o.size?s.find(".size").css("font-weight","bold"):r.size&&r.size<o.size&&a.find(".size").css("font-weight","bold"),"readonly"===o.status&&(a.addClass("readonly").find('input[type="checkbox"]').prop("checked",!0).prop("disabled",!0),a.find(".message").text(t("core","read-only")))},d="oc-dialog-fileexists-content",p="#"+d;if(this._fileexistsshown){var f=l()(p+" .conflicts");u(f,o,r);var h=l()(p+" .conflict").length,m=n("core","{count} file conflict","{count} file conflicts",h,{count:h});l()(p).parent().children(".oc-dialog-title").text(m),l()(window).trigger("resize"),s.resolve()}else this._fileexistsshown=!0,l().when(this._getFileExistsTemplate()).then((function(n){var c=t("core","One file conflict"),f=n.octemplate({dialog_name:d,title:c,type:"fileexists",allnewfiles:t("core","New Files"),allexistingfiles:t("core","Already existing files"),why:t("core","Which files do you want to keep?"),what:t("core","If you select both versions, the copied file will have a number added to its name.")});if(l()("body").append(f),o&&r){var h=f.find(".conflicts");u(h,o,r)}var m=[{text:t("core","Cancel"),classes:"cancel",click:function(){void 0!==i.onCancel&&i.onCancel(e),l()(p).ocdialog("close")}},{text:t("core","Continue"),classes:"continue",click:function(){void 0!==i.onContinue&&i.onContinue(l()(p+" .conflict")),l()(p).ocdialog("close")}}];l()(p).ocdialog({width:500,closeOnEscape:!0,modal:!0,buttons:m,closeButton:null,close:function(){a._fileexistsshown=!1;try{l()(this).ocdialog("destroy").remove()}catch(t){}}}),l()(p).css("height","auto");var g=f.closest(".oc-dialog").find("button.continue");function v(){var t=f.find(".conflicts .checkbox:checked").length;g.prop("disabled",0===t)}g.prop("disabled",!0),l()(p).find(".allnewfiles").on("click",(function(){l()(p).find('.conflict .replacement input[type="checkbox"]').prop("checked",l()(this).prop("checked"))})),l()(p).find(".allexistingfiles").on("click",(function(){l()(p).find('.conflict .original:not(.readonly) input[type="checkbox"]').prop("checked",l()(this).prop("checked"))})),l()(p).find(".conflicts").on("click",".replacement,.original:not(.readonly)",(function(){var t=l()(this).find('input[type="checkbox"]');t.prop("checked",!t.prop("checked"))})),l()(p).find(".conflicts").on("click",'.replacement input[type="checkbox"],.original:not(.readonly) input[type="checkbox"]',(function(){var t=l()(this);t.prop("checked",!t.prop("checked"))})),l()(p).on("click",".replacement,.allnewfiles",(function(){var e=l()(p).find('.conflict .replacement input[type="checkbox"]:checked').length;e===l()(p+" .conflict").length?(l()(p).find(".allnewfiles").prop("checked",!0),l()(p).find(".allnewfiles + .count").text(t("core","(all selected)"))):e>0?(l()(p).find(".allnewfiles").prop("checked",!1),l()(p).find(".allnewfiles + .count").text(t("core","({count} selected)",{count:e}))):(l()(p).find(".allnewfiles").prop("checked",!1),l()(p).find(".allnewfiles + .count").text("")),v()})),l()(p).on("click",".original,.allexistingfiles",(function(){var e=l()(p).find('.conflict .original input[type="checkbox"]:checked').length;e===l()(p+" .conflict").length?(l()(p).find(".allexistingfiles").prop("checked",!0),l()(p).find(".allexistingfiles + .count").text(t("core","(all selected)"))):e>0?(l()(p).find(".allexistingfiles").prop("checked",!1),l()(p).find(".allexistingfiles + .count").text(t("core","({count} selected)",{count:e}))):(l()(p).find(".allexistingfiles").prop("checked",!1),l()(p).find(".allexistingfiles + .count").text("")),v()})),s.resolve()})).fail((function(){s.reject(),alert(t("core","Error loading file exists template"))}));return s.promise()},_getGridSettings:function(){var t=this;l().get(Ut.generateUrl("/apps/files/api/v1/showgridview"),(function(e){t.$showGridView.get(0).checked=e.gridview,t.$showGridView.next("#picker-view-toggle").removeClass("icon-toggle-filelist icon-toggle-pictures").addClass(e.gridview?"icon-toggle-filelist":"icon-toggle-pictures"),l()(".list-container").toggleClass("view-grid",e.gridview)}))},_onGridviewChange:function(){var t=this.$showGridView.is(":checked");Ut.currentUser&&l().post(Ut.generateUrl("/apps/files/api/v1/showgridview"),{show:t}),this.$showGridView.next("#picker-view-toggle").removeClass("icon-toggle-filelist icon-toggle-pictures").addClass(t?"icon-toggle-filelist":"icon-toggle-pictures"),l()(".list-container").toggleClass("view-grid",t)},_getFilePickerTemplate:function(){var t=l().Deferred();if(this.$filePickerTemplate)t.resolve(this.$filePickerTemplate);else{var e=this;l().get(Ut.filePath("core","templates","filepicker.html"),(function(n){e.$filePickerTemplate=l()(n),e.$listTmpl=e.$filePickerTemplate.find(".filelist tbody tr:first-child").detach(),t.resolve(e.$filePickerTemplate)})).fail((function(e,n,o){t.reject(e.status,o)}))}return t.promise()},_getMessageTemplate:function(){var t=l().Deferred();if(this.$messageTemplate)t.resolve(this.$messageTemplate);else{var e=this;l().get(Ut.filePath("core","templates","message.html"),(function(n){e.$messageTemplate=l()(n),t.resolve(e.$messageTemplate)})).fail((function(e,n,o){t.reject(e.status,o)}))}return t.promise()},_getFileExistsTemplate:function(){var t=l().Deferred();if(this.$fileexistsTemplate)t.resolve(this.$fileexistsTemplate);else{var e=this;l().get(Ut.filePath("files","templates","fileexists.html"),(function(n){e.$fileexistsTemplate=l()(n),t.resolve(e.$fileexistsTemplate)})).fail((function(){t.reject()}))}return t.promise()},_getFileList:function(t,e){return"string"==typeof e&&(e=[e]),l().getJSON(Ut.filePath("files","ajax","list.php"),{dir:t,mimetypes:JSON.stringify(e)})},_fillFilePicker:function(e){var n=this;this.$filelist.empty(),this.$filePicker.find(".emptycontent").hide(),this.$filelistContainer.addClass("icon-loading"),this.$filePicker.data("path",e);var o=this.$filePicker.data("mimetype"),r=this.$filePicker.data("filter");"string"==typeof o&&(o=[o]),n.$fileListHeader.find(".sort-indicator").addClass("hidden").removeClass("icon-triangle-n").removeClass("icon-triangle-s"),n.$fileListHeader.find("[data-sort="+n.filepicker.sortField+"] .sort-indicator").removeClass("hidden"),"asc"===n.filepicker.sortOrder?n.$fileListHeader.find("[data-sort="+n.filepicker.sortField+"] .sort-indicator").addClass("icon-triangle-n"):n.$fileListHeader.find("[data-sort="+n.filepicker.sortField+"] .sort-indicator").addClass("icon-triangle-s"),n.filepicker.filesClient.getFolderContents(e).then((function(i,a){n.filelist=a,o&&o.length>0&&-1===o.indexOf("*")&&(a=a.filter((function(t){return"dir"===t.type||-1!==o.indexOf(t.mimetype)}))),r&&(a=a.filter(r));var s=document.getElementById("showHiddenFiles");null===s||"1"===s.value||(a=a.filter((function(t){return!t.name.startsWith(".")})));var c={name:function(t,e){return"dir"===t.type&&"dir"!==e.type?-1:"dir"!==t.type&&"dir"===e.type?1:Ut.Util.naturalSortCompare(t.name,e.name)},size:function(t,e){return t.size-e.size},mtime:function(t,e){return t.mtime-e.mtime}},u=c[n.filepicker.sortField]||c.name;a=a.sort((function(t,e){var o=function(t){return t.tags&&t.tags.indexOf(Ut.TAG_FAVORITE)>=0};return o(t)&&!o(e)?-1:!o(t)&&o(e)?1:"asc"===n.filepicker.sortOrder?u(t,e):-u(t,e)})),n._fillSlug(),0===a.length?(n.$filePicker.find(".emptycontent").show(),n.$fileListHeader.hide()):(n.$filePicker.find(".emptycontent").hide(),n.$fileListHeader.show()),n.$filelist.empty(),l().each(a,(function(o,r){var i,a;if(r.icon=Ut.MimeType.getIconUrl(r.mimetype),void 0!==r.size&&r.size>=0?(i=Ut.Util.humanFileSize(parseInt(r.size,10),!0),a=Math.round(160-Math.pow(r.size/1048576,2))):(i=t("files","Pending"),a=80),r.name.length>=10)var s=Math.min(Math.floor(r.name.length/2),10),c=r.name.substr(0,r.name.length-s),u=r.name.substr(r.name.length-s);else c=r.name,u="";var d=n.$listTmpl.octemplate({type:r.type,dir:e,filename:r.name,filename1:c,filename2:u,date:Ut.Util.relativeModifiedDate(r.mtime),size:i,sizeColor:a,icon:r.icon});if("file"===r.type){var p={file:e+"/"+r.name,x:100,y:100},f=new Image,h=Ut.generateUrl("/core/preview.png?")+l().param(p);f.onload=function(){f.width>5&&d.find("td.filename").attr("style","background-image:url("+h+")")},f.src=h}n.$filelist.append(d)})),n.$filelistContainer.removeClass("icon-loading")}))},_fillSlug:function(){var t=this.$dirTree.find(".actions.creatable").detach();this.$dirTree.empty();var e=this;e.$dirTree.append(t);var n=this.$filePicker.data("path"),o=l()('<div data-dir="{dir}"><a>{name}</a></div>').addClass("crumb");if(n){var r=n.split("/");l().each(r,(function(t,n){if(""===(n=r.pop()))return!1;e.$dirTree.prepend(o.octemplate({dir:r.join("/")+"/"+n,name:n}))}))}o.octemplate({dir:"",name:""},{escapeFunction:null}).prependTo(this.$dirTree)},_handleTreeListSelect:function(t,e){var n=t.data,o=l()(t.target).closest(".crumb").data("dir");n._fillFilePicker(o);var r=t.target.closest(".oc-dialog"),i=l()(".primary",r);this._changeButtonsText(e,o.split(/[/]+/).pop()),-1!==this.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||this.$filePicker.data("allowDirectoryChooser")?i.prop("disabled",!1):i.prop("disabled",!0)},_handlePickerClick:function(t,e,n){var o=this.$filePicker.closest(".oc-dialog").find(".primary");"file"===e.data("type")?(!0===this.$filePicker.data("multiselect")&&t.ctrlKey||this.$filelist.find(".filepicker_element_selected").removeClass("filepicker_element_selected"),e.toggleClass("filepicker_element_selected"),o.prop("disabled",!1)):"dir"===e.data("type")&&(this._fillFilePicker(this.$filePicker.data("path")+"/"+e.data("entryname")),this._changeButtonsText(n,e.data("entryname")),-1!==this.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||this.$filePicker.data("allowDirectoryChooser")?o.prop("disabled",!1):o.prop("disabled",!0))},_changeButtonsText:function(e,n){var o=""===n?t("core","Copy"):t("core","Copy to {folder}",{folder:n}),r=""===n?t("core","Move"):t("core","Move to {folder}",{folder:n}),i=l()(".oc-dialog-buttonrow button");switch(e){case this.FILEPICKER_TYPE_CHOOSE:case this.FILEPICKER_TYPE_CUSTOM:break;case this.FILEPICKER_TYPE_COPY:i.text(o);break;case this.FILEPICKER_TYPE_MOVE:i.text(r);break;case this.FILEPICKER_TYPE_COPY_MOVE:i.eq(0).text(o),i.eq(1).text(r)}}},Q=J,X=(V=document,Z=a.emit,W=V.getElementsByTagName("head")[0].getAttribute("data-requesttoken"),{getToken:function(){return W},setToken:function(t){Z("csrf-token-update",{token:W=t})}}).getToken,tt=function t(e,n){var o,r,i="";if(this.typelessListeners=[],this.closed=!1,this.listeners={},n)for(o in n)i+=o+"="+encodeURIComponent(n[o])+"&";if(i+="requesttoken="+encodeURIComponent(X()),this.useFallBack||"undefined"==typeof EventSource){var a="oc_eventsource_iframe_"+t.iframeCount;t.fallBackSources[t.iframeCount]=this,this.iframe=l()("<iframe></iframe>"),this.iframe.attr("id",a),this.iframe.hide(),r="&",-1===e.indexOf("?")&&(r="?"),this.iframe.attr("src",e+r+"fallback=true&fallback_id="+t.iframeCount+"&"+i),l()("body").append(this.iframe),this.useFallBack=!0,t.iframeCount++}else r="&",-1===e.indexOf("?")&&(r="?"),this.source=new EventSource(e+r+i),this.source.onmessage=function(t){for(var e=0;e<this.typelessListeners.length;e++)this.typelessListeners[e](JSON.parse(t.data))}.bind(this);this.listen("__internal__",function(t){"close"===t&&this.close()}.bind(this))};tt.fallBackSources=[],tt.iframeCount=0,tt.fallBackCallBack=function(t,e,n){tt.fallBackSources[t].fallBackCallBack(e,n)},tt.prototype={typelessListeners:[],iframe:null,listeners:{},useFallBack:!1,fallBackCallBack:function(t,e){var n;if(!this.closed)if(t){if(void 0!==this.listeners.done)for(n=0;n<this.listeners[t].length;n++)this.listeners[t][n](e)}else for(n=0;n<this.typelessListeners.length;n++)this.typelessListeners[n](e)},lastLength:0,listen:function(t,e){e&&e.call&&(t?this.useFallBack?(this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push(e)):this.source.addEventListener(t,(function(t){void 0!==t.data?e(JSON.parse(t.data)):e("")}),!1):this.typelessListeners.push(e))},close:function(){this.closed=!0,void 0!==this.source&&this.source.close()}};var et=tt,nt=r(42515),ot=null,rt=function(t){if(ot){var e=ot;ot.trigger(new(l().Event)("beforeHide")),ot.slideUp(50,(function(){e.trigger(new(l().Event)("afterHide")),t&&t.apply(this,arguments)}))}l()(".menutoggle").attr("aria-expanded",!1),l()(".openedMenu").removeClass("openedMenu"),ot=null},it=!!window._oc_isadmin,at=r(27856),st=r.n(at),lt=r(86834),ct=r.n(lt),ut=r(46488),dt=r.n(ut),pt=r(95573),ft=r.n(pt);window._oc_l10n_registry_translations=window._oc_l10n_registry_translations||{},window._oc_l10n_registry_plural_functions=window._oc_l10n_registry_plural_functions||{};var ht=function(t){return void 0!==window._oc_l10n_registry_translations[t]&&void 0!==window._oc_l10n_registry_plural_functions[t]},mt=function(t){return{translations:window._oc_l10n_registry_translations[t]||{},pluralFunction:window._oc_l10n_registry_plural_functions[t]}};function gt(t){return gt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},gt(t)}var vt={load:function(t,e){if(ht(t)||"en"===Ut.getLocale()){var n=l().Deferred(),o=n.promise();return o.then(e),n.resolve(),o}var r=this,i=(0,c.generateFilePath)(t,"l10n",Ut.getLocale()+".json");return l().get(i).then((function(e){e.translations&&r.register(t,e.translations,e.pluralForm)})).then(e)},register:function(t,e){var n,o,r;n=t,o=e,r=this._getPlural,ht(n)?function(t,e,n){window._oc_l10n_registry_translations[t]=Object.assign(window._oc_l10n_registry_translations[t],e),window._oc_l10n_registry_plural_functions[t]=n}(n,o,r):function(t,e,n){window._oc_l10n_registry_translations[t]=e,window._oc_l10n_registry_plural_functions[t]=n}(n,o,r)},_unregister:function(t){delete window._oc_l10n_registry_translations[t],delete window._oc_l10n_registry_plural_functions[t]},translate:function(t,e,n,o,r){var i=r||{};p.default.defaults(i,{escape:!0,sanitize:!0});var a=i.sanitize?st().sanitize:dt(),s=i.escape?ft():dt(),l=e,c=mt(t).translations[e];return void 0!==c&&(l=c),"object"===gt(n)||void 0!==o?a(function(t,e,n){return t.replace(/%n/g,n).replace(/{([^{}]*)}/g,(function(t,n){var o=e[n];return a("string"==typeof o||"number"==typeof o?s(o):t)}))}(l,n,o)):a(l)},translatePlural:function(t,e,n,o,r,i){var a="_"+e+"_::_"+n+"_",s=mt(t),c=s.translations[a];if(void 0!==c){var u=c;if(l().isArray(u)){var d=s.pluralFunction(o);return this.translate(t,u[d],r,o,i)}}return 1===o?this.translate(t,e,r,o,i):this.translate(t,n,r,o,i)},_getPlural:function(t){var e=Ut.getLanguage();if("pt-BR"===e&&(e="xbr"),void 0===e||""===e)return 1===t?0:1;switch(e.length>3&&(e=e.substring(0,e.lastIndexOf("-"))),e){case"az":case"bo":case"dz":case"id":case"ja":case"jv":case"ka":case"km":case"kn":case"ko":case"ms":case"th":case"tr":case"vi":case"zh":default:return 0;case"af":case"bn":case"bg":case"ca":case"da":case"de":case"el":case"en":case"eo":case"es":case"et":case"eu":case"fa":case"fi":case"fo":case"fur":case"fy":case"gl":case"gu":case"ha":case"he":case"hu":case"is":case"it":case"ku":case"lb":case"ml":case"mn":case"mr":case"nah":case"nb":case"ne":case"nl":case"nn":case"no":case"oc":case"om":case"or":case"pa":case"pap":case"ps":case"pt":case"so":case"sq":case"sv":case"sw":case"ta":case"te":case"tk":case"ur":case"zu":return 1===t?0:1;case"am":case"bh":case"fil":case"fr":case"gun":case"hi":case"hy":case"ln":case"mg":case"nso":case"xbr":case"ti":case"wa":return 0===t||1===t?0:1;case"be":case"bs":case"hr":case"ru":case"sh":case"sr":case"uk":return t%10==1&&t%100!=11?0:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?1:2;case"cs":case"sk":return 1===t?0:t>=2&&t<=4?1:2;case"ga":return 1===t?0:2===t?1:2;case"lt":return t%10==1&&t%100!=11?0:t%10>=2&&(t%100<10||t%100>=20)?1:2;case"sl":return t%100==1?0:t%100==2?1:t%100==3||t%100==4?2:3;case"mk":return t%10==1?0:1;case"mt":return 1===t?0:0===t||t%100>1&&t%100<11?1:t%100>10&&t%100<20?2:3;case"lv":return 0===t?0:t%10==1&&t%100!=11?1:2;case"pl":return 1===t?0:t%10>=2&&t%10<=4&&(t%100<12||t%100>14)?1:2;case"cy":return 1===t?0:2===t?1:8===t||11===t?2:3;case"ro":return 1===t?0:0===t||t%100>0&&t%100<20?1:2;case"ar":return 0===t?0:1===t?1:2===t?2:t%100>=3&&t%100<=10?3:t%100>=11&&t%100<=99?4:5}}},wt=vt;ct().registerHelper("t",(function(t,e){return vt.translate(t,e)}));var yt=r(9944),bt={startSaving:function(e){this.startAction(e,t("core","Saving …"))},startAction:function(t,e){l()(t).text(e).removeClass("success").removeClass("error").stop(!0,!0).show()},finishedSaving:function(t,e){this.finishedAction(t,e)},finishedAction:function(t,e){"success"===e.status?this.finishedSuccess(t,e.data.message):this.finishedError(t,e.data.message)},finishedSuccess:function(t,e){l()(t).text(e).addClass("success").removeClass("error").stop(!0,!0).delay(3e3).fadeOut(900).show()},finishedError:function(t,e){l()(t).text(e).addClass("error").removeClass("success").show()}},_t=r(30381),Pt=r.n(_t),Ct={callback:null,pageLoadTime:null,init:function(){l()(".password-confirm-required").on("click",p.default.bind(this.requirePasswordConfirmation,this)),this.pageLoadTime=Pt().now()},requiresPasswordConfirmation:function(){var t=this.pageLoadTime-1e3*window.nc_pageLoad,e=Pt().now()-(t+1e3*window.nc_lastLogin);return window.backendAllowsPasswordConfirmation&&e>18e5},requirePasswordConfirmation:function(e,n,o){n=void 0!==n?n:{};var r={title:t("core","Authentication required"),text:t("core","This action requires you to confirm your password"),confirm:t("core","Confirm"),label:t("core","Password"),error:""},i=p.default.extend(r,n),a=this;this.requiresPasswordConfirmation()&&Ut.dialogs.prompt(i.text,i.title,(function(t,e){t&&""!==e?a._confirmPassword(e,i):p.default.isFunction(o)&&o()}),!0,i.label,!0).then((function(){var t=l()(".oc-dialog:visible");if(t.find(".ui-icon").remove(),t.addClass("password-confirmation"),""!==i.error){var e=l()("<p></p>").addClass("msg warning").text(i.error);t.find(".oc-dialog-content").append(e)}t.find(".oc-dialog-buttonrow").addClass("aside");var n=t.find("button");n.eq(0).hide(),n.eq(1).text(i.confirm)})),this.callback=e},_confirmPassword:function(e,n){var o=this;l().ajax({url:(0,c.generateUrl)("/login/confirm"),data:{password:e},type:"POST",success:function(t){window.nc_lastLogin=t.lastLogin,p.default.isFunction(o.callback)&&o.callback()},error:function(){n.error=t("core","Failed to authenticate, try again"),Ut.PasswordConfirmation.requirePasswordConfirmation(o.callback,n)}})}},kt=window._theme||{},xt={_handlers:[],_pushState:function(t,e,n){var o;if(o="string"==typeof t?t:Ut.buildQueryString(t),window.history.pushState){if(e=e||location.pathname+"?"+o,navigator.userAgent.toLowerCase().indexOf("firefox")>-1&&parseInt(navigator.userAgent.split("/").pop())<51)for(var r,i=document.querySelectorAll('[fill^="url(#"], [stroke^="url(#"], [filter^="url(#invert"]'),a=0,s=i.length;a<s;a++)(r=i[a]).style.fill=r.style.fill,r.style.stroke=r.style.stroke,r.removeAttribute("filter"),r.setAttribute("filter","url(#invert)");n?window.history.replaceState(t,"",e):window.history.pushState(t,"",e)}else window.location.hash="?"+o,this._cancelPop=!0},pushState:function(t,e){this._pushState(t,e,!1)},replaceState:function(t,e){this._pushState(t,e,!0)},addOnPopStateHandler:function(t){this._handlers.push(t)},_parseHashQuery:function(){var t=window.location.hash,e=t.indexOf("?");return e>=0?t.substr(e+1):t.length?t.substr(1):""},_decodeQuery:function(t){return t.replace(/\+/g," ")},parseUrlQuery:function(){var t,e=this._parseHashQuery();return e&&(t=Ut.parseQueryString(this._decodeQuery(e))),(t=p.default.extend(t||{},Ut.parseQueryString(this._decodeQuery(location.search))))||{}},_onPopState:function(t){var e;if(this._cancelPop)this._cancelPop=!1;else if(this._handlers.length){e=t&&t.state,p.default.isString(e)?e=Ut.parseQueryString(e):e||(e=this.parseUrlQuery()||{});for(var n=0;n<this._handlers.length;n++)this._handlers[n](e)}}};function Tt(t){for(var e,n=[],o=0,r=-1,i=0;o<t.length;){e=t.charAt(o);var a=!i&&"."===e||e>="0"&&e<="9";a!==i&&(n[++r]="",i=a),n[r]+=e,o++}return n}var Ot={History:xt,humanFileSize:r(3378).s,computerFileSize:function(t){if("string"!=typeof t)return null;var e=t.toLowerCase().trim(),n=null,o=e.match(/^[\s+]?([0-9]*)(\.([0-9]+))?( +)?([kmgtp]?b?)$/i);return null===o?null:(n=parseFloat(e),isFinite(n)?(o[5]&&(n*={b:1,k:1024,kb:1024,mb:1048576,m:1048576,gb:1073741824,g:1073741824,tb:1099511627776,t:1099511627776,pb:0x4000000000000,p:0x4000000000000}[o[5]]),n=Math.round(n)):null)},formatDate:function(t,e){return void 0===window.TESTING&&console.warn("OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment"),e=e||"LLL",Pt()(t).format(e)},relativeModifiedDate:function(e){void 0===window.TESTING&&console.warn("OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment");var n=Pt()().diff(Pt()(e));return n>=0&&n<45e3?t("core","seconds ago"):Pt()(e).fromNow()},getScrollBarWidth:function(){if(this._scrollBarWidth)return this._scrollBarWidth;var t=document.createElement("p");t.style.width="100%",t.style.height="200px";var e=document.createElement("div");e.style.position="absolute",e.style.top="0px",e.style.left="0px",e.style.visibility="hidden",e.style.width="200px",e.style.height="150px",e.style.overflow="hidden",e.appendChild(t),document.body.appendChild(e);var n=t.offsetWidth;e.style.overflow="scroll";var o=t.offsetWidth;return n===o&&(o=e.clientWidth),document.body.removeChild(e),this._scrollBarWidth=n-o,this._scrollBarWidth},stripTime:function(t){return new Date(t.getFullYear(),t.getMonth(),t.getDate())},naturalSortCompare:function(t,e){var n,o=Tt(t),r=Tt(e);for(n=0;o[n]&&r[n];n++)if(o[n]!==r[n]){var i=Number(o[n]),a=Number(r[n]);return i==o[n]&&a==r[n]?i-a:o[n].localeCompare(r[n],Ut.getLanguage())}return o.length-r.length},waitFor:function(t,e){!function n(){!0!==t()&&setTimeout(n,e)}()},isCookieSetToValue:function(t,e){for(var n=document.cookie.split(";"),o=0;o<n.length;o++){var r=n[o].split("=");if(r[0].trim()===t&&r[1].trim()===e)return!0}return!1}},At=window._oc_debug,St=window._oc_webroot;if(void 0===St){var Et=(St=location.pathname).indexOf("/index.php/");St=-1!==Et?St.substr(0,Et):St.substr(0,St.lastIndexOf("/"))}var jt,Lt=St,Ut={coreApps:["","admin","log","core/search","core","3rdparty"],menuSpeed:50,PERMISSION_ALL:31,PERMISSION_CREATE:4,PERMISSION_DELETE:8,PERMISSION_NONE:0,PERMISSION_READ:1,PERMISSION_SHARE:16,PERMISSION_UPDATE:2,TAG_FAVORITE:"_$!<Favorite>!$_",fileIsBlacklisted:function(t){return!!t.match(U.blacklist_files_regex)},addScript:function(t,e,n){var o;console.warn("OC.addScript is deprecated, use OCP.Loader.loadScript instead");var r=(0,c.generateFilePath)(t,"js",e+".js");return u[r]?n&&n():(o=l().Deferred(),l().getScript(r,(function(){return o.resolve()})),u[r]=o),u[r]},addStyle:function(t,e){console.warn("OC.addStyle is deprecated, use OCP.Loader.loadStylesheet instead");var n=(0,c.generateFilePath)(t,"css",e+".css");-1===d.indexOf(n)&&(d.push(n),document.createStyleSheet?document.createStyleSheet(n):(e=l()('<link rel="stylesheet" type="text/css" href="'+n+'"/>'),l()("head").append(e)))},Apps:g,AppConfig:y,appConfig:w,appSettings:function(e){if(console.warn("OC.appSettings is deprecated and will be removed with Nextcloud 18"),void 0===e||void 0===e.appid)throw{name:"MissingParameter",message:"The parameter appid is missing"};var n={scriptName:"settings.php",cache:!0};l().extend(n,e);var o=l()("#appsettings");if(0===o.length)throw{name:"MissingDOMElement",message:'There has be be an element with id "appsettings" for the popup to show.'};var r=l()("#appsettings_popup");if(0===r.length&&(l()("body").prepend('<div class="popup hidden" id="appsettings_popup"></div>'),(r=l()("#appsettings_popup")).addClass(o.hasClass("topright")?"topright":"bottomleft")),r.is(":visible"))r.hide().remove();else{var i=o.hasClass("topright")?"up":"left";l().get((0,c.generateFilePath)(n.appid,"",n.scriptName),(function(e){r.html(e).ready((function(){if(r.prepend('<span class="arrow '+i+'"></span><h2>'+t("core","Settings")+'</h2><a class="close"></a>').show(),r.find(".close").bind("click",(function(){r.remove()})),void 0!==n.loadJS){var e;if(!0===n.loadJS)e="settings.js";else{if("string"!=typeof n.loadJS)throw{name:"InvalidParameter",message:'The "loadJS" parameter must be either boolean or a string.'};e=n.loadJS}n.cache&&l().ajaxSetup({cache:!0}),l().getScript((0,c.generateFilePath)(n.appid,"js",e)).fail((function(t,e,n){throw n}))}})).show()}),"html")}},appswebroots:b,Backbone:j,ContactsMenu:z,config:U,currentUser:q,dialogs:Q,EventSource:et,getCurrentUser:function(){return{uid:q,displayName:B}},isUserAdmin:function(){return it},L10N:wt,_ajaxConnectionLostHandler:m,_processAjaxError:function(t){(0!==t.status||"abort"!==t.statusText&&"timeout"!==t.statusText&&!Ut._reloadCalled)&&(p.default.contains([302,303,307,401],t.status)&&Ut.currentUser?setTimeout((function(){if(!Ut._userIsNavigatingAway&&!Ut._reloadCalled){var t=0,e=setInterval((function(){h.showUpdate(n("core","Problem loading page, reloading in %n second","Problem loading page, reloading in %n seconds",5-t)),t>=5&&(clearInterval(e),Ut.reload()),t++}),1e3);Ut._reloadCalled=!0}}),100):0===t.status&&setTimeout((function(){Ut._userIsNavigatingAway||Ut._reloadCalled||Ut._ajaxConnectionLostHandler()}),100))},registerXHRForErrorProcessing:function(t){t.addEventListener&&(t.addEventListener("load",(function(){4===t.readyState&&(t.status>=200&&t.status<300||304===t.status||l()(document).trigger(new(l().Event)("ajaxError"),t))})),t.addEventListener("error",(function(){l()(document).trigger(new(l().Event)("ajaxError"),t)})))},getCapabilities:function(){return console.warn("OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities"),(0,nt.getCapabilities)()},hideMenus:rt,registerMenu:function(t,e,n,o){e.addClass("menu");var r="A"===t.prop("tagName")||"BUTTON"===t.prop("tagName");t.on(r?"click.menu":"click.menu keyup.menu",(function(r){r.preventDefault(),r.key&&"Enter"!==r.key||(e.is(ot)?rt():(ot&&rt(),!0===o&&e.parent().addClass("openedMenu"),t.attr("aria-expanded",!0),e.slideToggle(50,n),ot=e))}))},showMenu:function(t,e,n){e.is(ot)||(rt(),ot=e,e.trigger(new(l().Event)("beforeShow")),e.show(),e.trigger(new(l().Event)("afterShow")),p.default.isFunction(n)&&n())},unregisterMenu:function(t,e){e.is(ot)&&rt(),t.off("click.menu").removeClass("menutoggle"),e.removeClass("menu")},basename:L.EZ,encodePath:L.Ec,dirname:L.XX,isSamePath:L.Mg,joinPaths:L.RQ,getHost:function(){return window.location.host},getHostName:function(){return window.location.hostname},getPort:function(){return window.location.port},getProtocol:function(){return window.location.protocol.split(":")[0]},getCanonicalLocale:yt.getCanonicalLocale,getLocale:function(){var t;return null!==(t=l()("html").data("locale"))&&void 0!==t?t:"en"},getLanguage:function(){return l()("html").prop("lang")},addTranslations:wt.load,buildQueryString:function(t){return t?l().map(t,(function(t,e){var n=encodeURIComponent(e);return null!=t&&(n+="="+encodeURIComponent(t)),n})).join("&"):""},parseQueryString:function(t){var e,n,o,r={};if(!t)return null;(e=t.indexOf("?"))>=0&&(t=t.substr(e+1));for(var i=t.replace(/\+/g,"%20").split("&"),a=0;a<i.length;a++){var s=i[a];(n=(e=s.indexOf("="))>=0?[s.substr(0,e),s.substr(e+1)]:[s]).length&&(o=decodeURIComponent(n[0]))&&(r[o]=n.length>1?decodeURIComponent(n[1]):null)}return r},msg:bt,Notification:h,PasswordConfirmation:Ct,Plugins:{_plugins:{},register:function(t,e){var n=this._plugins[t];n||(n=this._plugins[t]=[]),n.push(e)},getPlugins:function(t){return this._plugins[t]||[]},attach:function(t,e,n){for(var o=this.getPlugins(t),r=0;r<o.length;r++)o[r].attach&&o[r].attach(e,n)},detach:function(t,e,n){for(var o=this.getPlugins(t),r=0;r<o.length;r++)o[r].detach&&o[r].detach(e,n)}},theme:kt,Util:Ot,debug:At,filePath:c.generateFilePath,generateUrl:c.generateUrl,get:(jt=window,function(t){for(var e=t.split("."),n=e.pop(),o=0;o<e.length;o++)if(!(jt=jt[e[o]]))return!1;return jt[n]}),set:function(t){return function(e,n){for(var o=e.split("."),r=o.pop(),i=0;i<o.length;i++)t[o[i]]||(t[o[i]]={}),t=t[o[i]];return t[r]=n,n}}(window),getRootPath:c.getRootUrl,imagePath:c.imagePath,redirect:function(t){window.location=t},reload:function(){window.location.reload()},requestToken:X(),linkTo:c.linkTo,linkToOCS:function(t,e){return(0,c.generateOcsUrl)(t,{},{ocsVersion:e||1})+"/"},linkToRemote:c.generateRemoteUrl,linkToRemoteBase:function(t){return(0,c.getRootUrl)()+"/remote.php/"+t},webroot:Lt};(0,a.subscribe)("csrf-token-update",(function(t){OC.requestToken=t.token,console.info("OC.requestToken changed",t.token)}));var It=r(16453),Rt=r(17563),Ft=r(55586),$t=r.n(Ft),Nt={name:"LoginButton",props:{loading:{type:Boolean,required:!0},invertedColors:{type:Boolean,default:!1}}},Mt=r(51900),zt=(0,Mt.Z)(Nt,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{attrs:{id:"submit-wrapper"},on:{click:function(e){return t.$emit("click")}}},[n("input",{staticClass:"login primary",attrs:{id:"submit-form",type:"submit",title:""},domProps:{value:t.loading?t.t("core","Logging in …"):t.t("core","Log in")}}),t._v(" "),n("div",{staticClass:"submit-icon",class:{"icon-confirm-white":!t.loading,"icon-loading-small":t.loading&&t.invertedColors,"icon-loading-small-dark":t.loading&&!t.invertedColors}})])}),[],!1,null,"125b100b",null).exports,Dt={name:"LoginForm",components:{LoginButton:zt},props:{username:{type:String,default:""},redirectUrl:{type:[String,Boolean],default:!1},errors:{type:Array,default:function(){return[]}},messages:{type:Array,default:function(){return[]}},throttleDelay:{type:Number,default:0},invertedColors:{type:Boolean,default:!1},autoCompleteAllowed:{type:Boolean,default:!0},directLogin:{type:Boolean,default:!1}},data:function(){return{loading:!1,timezone:$t().determine().name(),timezoneOffset:-(new Date).getTimezoneOffset()/60,user:this.username,password:"",passwordInputType:"password"}},computed:{apacheAuthFailed:function(){return-1!==this.errors.indexOf("apacheAuthFailed")},internalException:function(){return-1!==this.errors.indexOf("internalexception")},invalidPassword:function(){return-1!==this.errors.indexOf("invalidpassword")},userDisabled:function(){return-1!==this.errors.indexOf("userdisabled")},toggleIcon:function(){return(0,c.imagePath)("core","actions/toggle.svg")},loadingIcon:function(){return(0,c.imagePath)("core","loading-dark.gif")},loginActionUrl:function(){return(0,c.generateUrl)("login")}},mounted:function(){""===this.username?this.$refs.user.focus():this.$refs.password.focus()},methods:{togglePassword:function(){"password"===this.passwordInputType?this.passwordInputType="text":this.passwordInputType="password"},updateUsername:function(){this.$emit("update:username",this.user)},submit:function(){this.loading=!0,this.$emit("submit")}}},Bt=(0,Mt.Z)(Dt,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("form",{ref:"loginForm",attrs:{method:"post",name:"login",action:t.loginActionUrl},on:{submit:t.submit}},[n("fieldset",[t.apacheAuthFailed?n("div",{staticClass:"warning"},[t._v("\n\t\t\t"+t._s(t.t("core","Server side authentication failed!"))),n("br"),t._v(" "),n("small",[t._v(t._s(t.t("core","Please contact your administrator."))+"\n\t\t\t")])]):t._e(),t._v(" "),t._l(t.messages,(function(e,o){return n("div",{key:o,staticClass:"warning"},[t._v("\n\t\t\t"+t._s(e)),n("br")])})),t._v(" "),t.internalException?n("div",{staticClass:"warning"},[t._v("\n\t\t\t"+t._s(t.t("core","An internal error occurred."))),n("br"),t._v(" "),n("small",[t._v(t._s(t.t("core","Please try again or contact your administrator."))+"\n\t\t\t")])]):t._e(),t._v(" "),n("div",{staticClass:"hidden",attrs:{id:"message"}},[n("img",{staticClass:"float-spinner",attrs:{alt:"",src:t.loadingIcon}}),t._v(" "),n("span",{attrs:{id:"messageText"}}),t._v(" "),n("div",{staticStyle:{clear:"both"}})]),t._v(" "),n("p",{staticClass:"grouptop",class:{shake:t.invalidPassword}},[n("input",{directives:[{name:"model",rawName:"v-model",value:t.user,expression:"user"}],ref:"user",attrs:{id:"user",type:"text",name:"user",autocapitalize:"none",autocorrect:"off",autocomplete:t.autoCompleteAllowed?"on":"off",placeholder:t.t("core","Username or email"),"aria-label":t.t("core","Username or email"),required:""},domProps:{value:t.user},on:{change:t.updateUsername,input:function(e){e.target.composing||(t.user=e.target.value)}}}),t._v(" "),n("label",{staticClass:"infield",attrs:{for:"user"}},[t._v(t._s(t.t("core","Username or email")))])]),t._v(" "),n("p",{staticClass:"groupbottom",class:{shake:t.invalidPassword}},[n("input",{ref:"password",staticClass:"password-with-toggle",attrs:{id:"password",type:t.passwordInputType,name:"password",autocorrect:"off",autocapitalize:"none",autocomplete:t.autoCompleteAllowed?"current-password":"off",placeholder:t.t("core","Password"),"aria-label":t.t("core","Password"),required:""}}),t._v(" "),n("label",{staticClass:"infield",attrs:{for:"password"}},[t._v(t._s(t.t("Password")))]),t._v(" "),n("a",{staticClass:"toggle-password",attrs:{href:"#"},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.togglePassword.apply(null,arguments)}}},[n("img",{attrs:{src:t.toggleIcon,alt:t.t("core","Toggle password visibility")}})])]),t._v(" "),n("LoginButton",{attrs:{loading:t.loading,"inverted-colors":t.invertedColors}}),t._v(" "),t.invalidPassword?n("p",{staticClass:"warning wrongPasswordMsg"},[t._v("\n\t\t\t"+t._s(t.t("core","Wrong username or password."))+"\n\t\t")]):t.userDisabled?n("p",{staticClass:"warning userDisabledMsg"},[t._v("\n\t\t\t"+t._s(t.t("core","User disabled"))+"\n\t\t")]):t._e(),t._v(" "),t.throttleDelay&&t.throttleDelay>5e3?n("p",{staticClass:"warning throttledMsg"},[t._v("\n\t\t\t"+t._s(t.t("core","We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds."))+"\n\t\t")]):t._e(),t._v(" "),t.redirectUrl?n("input",{attrs:{type:"hidden",name:"redirect_url"},domProps:{value:t.redirectUrl}}):t._e(),t._v(" "),n("input",{attrs:{type:"hidden",name:"timezone"},domProps:{value:t.timezone}}),t._v(" "),n("input",{attrs:{type:"hidden",name:"timezone_offset"},domProps:{value:t.timezoneOffset}}),t._v(" "),n("input",{attrs:{type:"hidden",name:"requesttoken"},domProps:{value:t.OC.requestToken}}),t._v(" "),t.directLogin?n("input",{attrs:{type:"hidden",name:"direct",value:"1"}}):t._e()],2)])}),[],!1,null,"0b3a0522",null),qt=Bt.exports,Ht=r(4820),Yt=r(85963),Kt=r(64150);function Gt(t){return Gt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Gt(t)}function Vt(t){return function(t){if(Array.isArray(t))return Zt(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return Zt(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Zt(t,e):void 0}}(t)||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 Zt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,o=new Array(e);n<e;n++)o[n]=t[n];return o}function Wt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,o)}return n}function Jt(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?Wt(Object(n),!0).forEach((function(e){Qt(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Wt(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function Qt(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function Xt(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function te(t,e){if(e&&("object"===Gt(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}function ee(t){var e="function"==typeof Map?new Map:void 0;return ee=function(t){if(null===t||(n=t,-1===Function.toString.call(n).indexOf("[native code]")))return t;var n;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,o)}function o(){return ne(t,arguments,ie(this).constructor)}return o.prototype=Object.create(t.prototype,{constructor:{value:o,enumerable:!1,writable:!0,configurable:!0}}),re(o,t)},ee(t)}function ne(t,e,n){return ne=oe()?Reflect.construct:function(t,e,n){var o=[null];o.push.apply(o,e);var r=new(Function.bind.apply(t,o));return n&&re(r,n.prototype),r},ne.apply(null,arguments)}function oe(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function re(t,e){return re=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},re(t,e)}function ie(t){return ie=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},ie(t)}var ae=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&re(t,e)}(i,t);var e,n,o,r=(e=i,n=oe(),function(){var t,o=ie(e);if(n){var r=ie(this).constructor;t=Reflect.construct(o,arguments,r)}else t=o.apply(this,arguments);return te(this,t)});function i(){return Xt(this,i),r.apply(this,arguments)}return o=i,Object.defineProperty(o,"prototype",{writable:!1}),o}(ee(Error)),se={name:"PasswordLessLoginForm",components:{LoginButton:zt,InformationIcon:Yt.Z,LockOpenIcon:Kt.Z},props:{username:{type:String,default:""},redirectUrl:{type:[String,Boolean],default:!1},invertedColors:{type:Boolean,default:!1},autoCompleteAllowed:{type:Boolean,default:!0},isHttps:{type:Boolean,default:!1},isLocalhost:{type:Boolean,default:!1},hasPublicKeyCredential:{type:Boolean,default:!1}},data:function(){return{user:this.username,loading:!1,validCredentials:!0}},methods:{authenticate:function(){var t=this;console.debug("passwordless login initiated"),this.getAuthenticationData(this.user).then((function(t){return console.debug(t),t})).then(this.sign).then(this.completeAuthentication).catch((function(e){e instanceof ae?t.validCredentials=!1:console.debug(e)}))},getAuthenticationData:function(t){var e,n,o=function(t){var e=(t=t.replace(/-/g,"+").replace(/_/g,"/")).length%4;if(e){if(1===e)throw new Error("InvalidLengthError: Input base64url string is the wrong length to determine padding");t+=new Array(5-e).join("=")}return window.atob(t)};return(e=t,n=(0,c.generateUrl)("/login/webauthn/start"),Ht.default.post(n,{loginName:e}).then((function(t){return t.data}))).then((function(t){if(console.debug("Obtained PublicKeyCredentialRequestOptions"),console.debug(t),!Object.prototype.hasOwnProperty.call(t,"allowCredentials"))throw console.debug("No credentials found."),new ae;return t.challenge=Uint8Array.from(o(t.challenge),(function(t){return t.charCodeAt(0)})),t.allowCredentials=t.allowCredentials.map((function(t){return Jt(Jt({},t),{},{id:Uint8Array.from(o(t.id),(function(t){return t.charCodeAt(0)}))})})),console.debug("Converted PublicKeyCredentialRequestOptions"),console.debug(t),t})).catch((function(t){throw console.debug("Error while obtaining data"),t}))},sign:function(t){var e=function(t){return window.btoa(String.fromCharCode.apply(String,Vt(t)))};return navigator.credentials.get({publicKey:t}).then((function(t){return console.debug(t),console.debug(new Uint8Array(t.rawId)),console.debug(e(new Uint8Array(t.rawId))),{id:t.id,type:t.type,rawId:e(new Uint8Array(t.rawId)),response:{authenticatorData:e(new Uint8Array(t.response.authenticatorData)),clientDataJSON:e(new Uint8Array(t.response.clientDataJSON)),signature:e(new Uint8Array(t.response.signature)),userHandle:t.response.userHandle?(n=new Uint8Array(t.response.userHandle),String.fromCharCode.apply(String,Vt(n))):null}};var n})).then((function(t){return console.debug(t),t})).catch((function(t){console.debug("GOT AN ERROR!"),console.debug(t)}))},completeAuthentication:function(t){console.debug("TIME TO COMPLETE");var e,n,o=this.redirectUrl;return(e=JSON.stringify(t),n=(0,c.generateUrl)("/login/webauthn/finish"),Ht.default.post(n,{data:e}).then((function(t){return t.data}))).then((function(t){console.debug("Logged in redirecting"),window.location.href=o})).catch((function(t){console.debug("GOT AN ERROR WHILE SUBMITTING CHALLENGE!"),console.debug(t)}))},submit:function(){}}},le=r(93379),ce=r.n(le),ue=r(7795),de=r.n(ue),pe=r(90569),fe=r.n(pe),he=r(3565),me=r.n(he),ge=r(19216),ve=r.n(ge),we=r(44589),ye=r.n(we),be=r(27429),_e={};_e.styleTagTransform=ye(),_e.setAttributes=me(),_e.insert=fe().bind(null,"head"),_e.domAPI=de(),_e.insertStyleElement=ve(),ce()(be.Z,_e),be.Z&&be.Z.locals&&be.Z.locals;var Pe=(0,Mt.Z)(se,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return(t.isHttps||t.isLocalhost)&&t.hasPublicKeyCredential?n("form",{ref:"loginForm",attrs:{method:"post",name:"login"},on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[n("fieldset",[n("p",{staticClass:"grouptop groupbottom"},[n("label",{staticClass:"infield",attrs:{for:"user"}},[t._v(t._s(t.t("core","Username or\temail")))]),t._v(" "),n("input",{directives:[{name:"model",rawName:"v-model",value:t.user,expression:"user"}],ref:"user",attrs:{id:"user",type:"text",name:"user",autocomplete:t.autoCompleteAllowed?"on":"off",placeholder:t.t("core","Username or email"),"aria-label":t.t("core","Username or email"),required:""},domProps:{value:t.user},on:{change:function(e){return t.$emit("update:username",t.user)},input:function(e){e.target.composing||(t.user=e.target.value)}}})]),t._v(" "),t.validCredentials?t._e():n("div",{staticClass:"body-login-container update form__message-box"},[t._v("\n\t\t\t"+t._s(t.t("core","Your account is not setup for passwordless login."))+"\n\t\t")]),t._v(" "),t.validCredentials?n("LoginButton",{attrs:{loading:t.loading,"inverted-colors":t.invertedColors},on:{click:t.authenticate}}):t._e()],1)]):t.hasPublicKeyCredential?t.isHttps||t.isLocalhost?t._e():n("div",{staticClass:"body-login-container update"},[n("LockOpenIcon",{attrs:{size:"70"}}),t._v(" "),n("h2",[t._v(t._s(t.t("core","Your connection is not secure")))]),t._v(" "),n("p",{staticClass:"infogroup"},[t._v("\n\t\t"+t._s(t.t("core","Passwordless authentication is only available over a secure connection."))+"\n\t")])],1):n("div",{staticClass:"body-login-container update"},[n("InformationIcon",{attrs:{size:"70"}}),t._v(" "),n("h2",[t._v(t._s(t.t("core","Browser not supported")))]),t._v(" "),n("p",{staticClass:"infogroup"},[t._v("\n\t\t"+t._s(t.t("core","Passwordless authentication is not supported in your browser."))+"\n\t")])],1)}),[],!1,null,"4f29a6e2",null),Ce=Pe.exports,ke={name:"ResetPassword",props:{username:{type:String,required:!0},resetPasswordLink:{type:String,required:!0},invertedColors:{type:Boolean,default:!1}},data:function(){return{error:!1,loading:!1,message:void 0,user:this.username}},watch:{username:function(t){this.user=t}},methods:{updateUsername:function(){this.$emit("update:username",this.user)},submit:function(){var t=this;this.loading=!0,this.error=!1,this.message="";var e=(0,c.generateUrl)("/lostpassword/email"),n={user:this.user};return Ht.default.post(e,n).then((function(t){return t.data})).then((function(e){if("success"!==e.status)throw new Error("got status ".concat(e.status));t.message="send-success"})).catch((function(e){console.error("could not send reset email request",e),t.error=!0,t.message="send-error"})).then((function(){t.loading=!1}))}}},xe=r(44685),Te={};Te.styleTagTransform=ye(),Te.setAttributes=me(),Te.insert=fe().bind(null,"head"),Te.domAPI=de(),Te.insertStyleElement=ve(),ce()(xe.Z,Te),xe.Z&&xe.Z.locals&&xe.Z.locals;var Oe=(0,Mt.Z)(ke,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("form",{on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[n("fieldset",[n("p",[n("input",{directives:[{name:"model",rawName:"v-model",value:t.user,expression:"user"}],attrs:{id:"user",type:"text",name:"user",autocapitalize:"off",placeholder:t.t("core","Username or email"),"aria-label":t.t("core","Username or email"),required:""},domProps:{value:t.user},on:{change:t.updateUsername,input:function(e){e.target.composing||(t.user=e.target.value)}}}),t._v(" "),n("label",{staticClass:"infield",attrs:{for:"user"}},[t._v(t._s(t.t("core","Username or email")))])]),t._v(" "),n("div",{attrs:{id:"reset-password-wrapper"}},[n("input",{staticClass:"login primary",attrs:{id:"reset-password-submit",type:"submit",title:""},domProps:{value:t.t("core","Reset password")}}),t._v(" "),n("div",{staticClass:"submit-icon",class:{"icon-confirm-white":!t.loading,"icon-loading-small":t.loading&&t.invertedColors,"icon-loading-small-dark":t.loading&&!t.invertedColors}})]),t._v(" "),"send-success"===t.message?n("p",{staticClass:"update"},[t._v("\n\t\t\t"+t._s(t.t("core","A password reset message has been sent to the email address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help."))+"\n\t\t\t"),n("br"),t._v("\n\t\t\t"+t._s(t.t("core","If it is not there ask your local administrator."))+"\n\t\t")]):"send-error"===t.message?n("p",{staticClass:"update warning"},[t._v("\n\t\t\t"+t._s(t.t("core","Couldn't send reset email. Please contact your administrator."))+"\n\t\t")]):"reset-error"===t.message?n("p",{staticClass:"update warning"},[t._v("\n\t\t\t"+t._s(t.t("core","Password cannot be changed. Please contact your administrator."))+"\n\t\t")]):t.message?n("p",{staticClass:"update",class:{warning:t.error}}):t._e(),t._v(" "),n("a",{attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.$emit("abort")}}},[t._v("\n\t\t\t"+t._s(t.t("core","Back to login"))+"\n\t\t")])])])}),[],!1,null,"d9d670b8",null),Ae=Oe.exports;function Se(t,e,n,o,r,i,a){try{var s=t[i](a),l=s.value}catch(t){return void n(t)}s.done?e(l):Promise.resolve(l).then(o,r)}var Ee={name:"UpdatePassword",props:{username:{type:String,required:!0},resetPasswordTarget:{type:String,required:!0},invertedColors:{type:Boolean,default:!1}},data:function(){return{error:!1,loading:!1,message:void 0,user:this.username,password:"",encrypted:!1,proceed:!1}},watch:{username:function(t){this.user=t}},methods:{submit:function(){var e,n=this;return(e=regeneratorRuntime.mark((function e(){var o,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.loading=!0,n.error=!1,n.message="",e.prev=3,e.next=6,Ht.default.post(n.resetPasswordTarget,{password:n.password,proceed:n.proceed});case 6:if(o=e.sent,!(r=o.data)||"success"!==r.status){e.next=14;break}n.message="send-success",n.$emit("update:username",n.user),n.$emit("done"),e.next=23;break;case 14:if(!r||!r.encryption){e.next=18;break}n.encrypted=!0,e.next=23;break;case 18:if(!r||!r.msg){e.next=22;break}throw new Error(r.msg);case 22:throw new Error;case 23:e.next=29;break;case 25:e.prev=25,e.t0=e.catch(3),n.error=!0,n.message=e.t0.message?e.t0.message:t("core","Password cannot be changed. Please contact your administrator.");case 29:return e.prev=29,n.loading=!1,e.finish(29);case 32:case"end":return e.stop()}}),e,null,[[3,25,29,32]])})),function(){var t=this,n=arguments;return new Promise((function(o,r){var i=e.apply(t,n);function a(t){Se(i,o,r,a,s,"next",t)}function s(t){Se(i,o,r,a,s,"throw",t)}a(void 0)}))})()}}},je=Ee,Le=r(91123),Ue={};Ue.styleTagTransform=ye(),Ue.setAttributes=me(),Ue.insert=fe().bind(null,"head"),Ue.domAPI=de(),Ue.insertStyleElement=ve(),ce()(Le.Z,Ue),Le.Z&&Le.Z.locals&&Le.Z.locals;var Ie=(0,Mt.Z)(je,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("form",{on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[n("fieldset",[n("p",[n("label",{staticClass:"infield",attrs:{for:"password"}},[t._v(t._s(t.t("core","New password")))]),t._v(" "),n("input",{directives:[{name:"model",rawName:"v-model",value:t.password,expression:"password"}],attrs:{id:"password",type:"password",name:"password",autocomplete:"new-password",autocapitalize:"none",autocorrect:"off",required:"",placeholder:t.t("core","New password")},domProps:{value:t.password},on:{input:function(e){e.target.composing||(t.password=e.target.value)}}})]),t._v(" "),t.encrypted?n("div",{staticClass:"update"},[n("p",[t._v("\n\t\t\t\t"+t._s(t.t("core","Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?"))+"\n\t\t\t")]),t._v(" "),n("input",{directives:[{name:"model",rawName:"v-model",value:t.proceed,expression:"proceed"}],staticClass:"checkbox",attrs:{id:"encrypted-continue",type:"checkbox"},domProps:{checked:Array.isArray(t.proceed)?t._i(t.proceed,null)>-1:t.proceed},on:{change:function(e){var n=t.proceed,o=e.target,r=!!o.checked;if(Array.isArray(n)){var i=t._i(n,null);o.checked?i<0&&(t.proceed=n.concat([null])):i>-1&&(t.proceed=n.slice(0,i).concat(n.slice(i+1)))}else t.proceed=r}}}),t._v(" "),n("label",{attrs:{for:"encrypted-continue"}},[t._v("\n\t\t\t\t"+t._s(t.t("core","I know what I'm doing"))+"\n\t\t\t")])]):t._e(),t._v(" "),n("div",{attrs:{id:"submit-wrapper"}},[n("input",{staticClass:"login primary",attrs:{id:"submit",type:"submit",title:""},domProps:{value:t.loading?t.t("core","Resetting password"):t.t("core","Reset password")}}),t._v(" "),n("div",{staticClass:"submit-icon",class:{"icon-loading-small":t.loading&&t.invertedColors,"icon-loading-small-dark":t.loading&&!t.invertedColors}})]),t._v(" "),t.error&&t.message?n("p",{class:{warning:t.error}},[t._v("\n\t\t\t"+t._s(t.message)+"\n\t\t")]):t._e()])])}),[],!1,null,"9ae5fdb4",null),Re=Ie.exports,Fe=Rt.parse(location.search);if("1"===Fe.clear)try{window.localStorage.clear(),window.sessionStorage.clear(),console.debug("Browser storage cleared")}catch(t){console.error("Could not clear browser storage",t)}var $e={name:"Login",components:{LoginForm:qt,PasswordLessLoginForm:Ce,ResetPassword:Ae,UpdatePassword:Re},data:function(){return{loading:!1,user:(0,It.loadState)("core","loginUsername",""),passwordlessLogin:!1,resetPassword:!1,errors:(0,It.loadState)("core","loginErrors",[]),messages:(0,It.loadState)("core","loginMessages",[]),redirectUrl:(0,It.loadState)("core","loginRedirectUrl",!1),throttleDelay:(0,It.loadState)("core","loginThrottleDelay",0),invertedColors:OCA.Theming&&OCA.Theming.inverted,canResetPassword:(0,It.loadState)("core","loginCanResetPassword",!1),resetPasswordLink:(0,It.loadState)("core","loginResetPasswordLink",""),autoCompleteAllowed:(0,It.loadState)("core","loginAutocomplete",!0),resetPasswordTarget:(0,It.loadState)("core","resetPasswordTarget",""),resetPasswordUser:(0,It.loadState)("core","resetPasswordUser",""),directLogin:"1"===Fe.direct,hasPasswordless:(0,It.loadState)("core","webauthn-available",!1),countAlternativeLogins:(0,It.loadState)("core","countAlternativeLogins",!1),isHttps:"https:"===window.location.protocol,isLocalhost:"localhost"===window.location.hostname,hasPublicKeyCredential:void 0!==window.PublicKeyCredential,hideLoginForm:(0,It.loadState)("core","hideLoginForm",!1)}},methods:{passwordResetFinished:function(){this.resetPasswordTarget="",this.directLogin=!0}}},Ne=r(35162),Me={};Me.styleTagTransform=ye(),Me.setAttributes=me(),Me.insert=fe().bind(null,"head"),Me.domAPI=de(),Me.insertStyleElement=ve(),ce()(Ne.Z,Me),Ne.Z&&Ne.Z.locals&&Ne.Z.locals;var ze=(0,Mt.Z)($e,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return!t.hideLoginForm||t.directLogin?n("div",[n("transition",{attrs:{name:"fade",mode:"out-in"}},[t.passwordlessLogin||t.resetPassword||""!==t.resetPasswordTarget?!t.loading&&t.passwordlessLogin?n("div",{key:"reset",staticClass:"login-additional"},[n("PasswordLessLoginForm",{attrs:{username:t.user,"redirect-url":t.redirectUrl,"inverted-colors":t.invertedColors,"auto-complete-allowed":t.autoCompleteAllowed,"is-https":t.isHttps,"is-localhost":t.isLocalhost,"has-public-key-credential":t.hasPublicKeyCredential},on:{"update:username":function(e){t.user=e},submit:function(e){t.loading=!0}}}),t._v(" "),n("a",{attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.passwordlessLogin=!1}}},[t._v("\n\t\t\t\t"+t._s(t.t("core","Back"))+"\n\t\t\t")])],1):!t.loading&&t.canResetPassword?n("div",{key:"reset",staticClass:"login-additional"},[n("div",{staticClass:"lost-password-container"},[t.resetPassword?n("ResetPassword",{attrs:{username:t.user,"reset-password-link":t.resetPasswordLink,"inverted-colors":t.invertedColors},on:{"update:username":function(e){t.user=e},abort:function(e){t.resetPassword=!1}}}):t._e()],1)]):""!==t.resetPasswordTarget?n("div",[n("UpdatePassword",{attrs:{username:t.user,"reset-password-target":t.resetPasswordTarget,"inverted-colors":t.invertedColors},on:{"update:username":function(e){t.user=e},done:t.passwordResetFinished}})],1):t._e():n("div",{key:"login"},[n("LoginForm",{attrs:{username:t.user,"redirect-url":t.redirectUrl,"direct-login":t.directLogin,messages:t.messages,errors:t.errors,"throttle-delay":t.throttleDelay,"inverted-colors":t.invertedColors,"auto-complete-allowed":t.autoCompleteAllowed},on:{"update:username":function(e){t.user=e},submit:function(e){t.loading=!0}}}),t._v(" "),t.canResetPassword&&""!==t.resetPasswordLink?n("a",{attrs:{id:"lost-password",href:t.resetPasswordLink}},[t._v("\n\t\t\t\t"+t._s(t.t("core","Forgot password?"))+"\n\t\t\t")]):t.canResetPassword&&!t.resetPassword?n("a",{attrs:{id:"lost-password",href:t.resetPasswordLink},on:{click:function(e){e.preventDefault(),t.resetPassword=!0}}},[t._v("\n\t\t\t\t"+t._s(t.t("core","Forgot password?"))+"\n\t\t\t")]):t._e(),t._v(" "),n("br"),t._v(" "),t.hasPasswordless?[t.countAlternativeLogins?n("div",{staticClass:"alternative-logins"},[t.hasPasswordless?n("a",{staticClass:"button",class:{"single-alt-login-option":t.countAlternativeLogins},attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.passwordlessLogin=!0}}},[t._v("\n\t\t\t\t\t\t"+t._s(t.t("core","Log in with a device"))+"\n\t\t\t\t\t")]):t._e()]):n("a",{attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.passwordlessLogin=!0}}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Log in with a device"))+"\n\t\t\t\t")])]:t._e()],2)])],1):n("div",[n("transition",{attrs:{name:"fade",mode:"out-in"}},[n("div",{staticClass:"warning"},[t._v("\n\t\t\t"+t._s(t.t("core","Login form is disabled."))),n("br"),t._v(" "),n("small",[t._v(t._s(t.t("core","Please contact your administrator."))+"\n\t\t\t")])])])],1)}),[],!1,null,null,null).exports,De={data:function(){return{OC:Ut}},methods:{t:wt.translate.bind(wt),n:wt.translatePlural.bind(wt)}};i.default.mixin(De),(new(i.default.extend(ze))).$mount("#login")},27429:function(t,e,n){"use strict";var o=n(87537),r=n.n(o),i=n(23645),a=n.n(i)()(r());a.push([t.id,".body-login-container.update[data-v-4f29a6e2]{margin:15px 0}.body-login-container.update.form__message-box[data-v-4f29a6e2]{width:240px;margin:5px}","",{version:3,sources:["webpack://./core/src/components/login/PasswordLessLoginForm.vue"],names:[],mappings:"AAmOA,8CACC,aAAA,CAEA,gEACC,WAAA,CACA,UAAA",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.body-login-container.update {\n\tmargin: 15px 0;\n\n\t&.form__message-box {\n\t\twidth: 240px;\n\t\tmargin: 5px;\n\t}\n}\n"],sourceRoot:""}]),e.Z=a},44685:function(t,e,n){"use strict";var o=n(87537),r=n.n(o),i=n(23645),a=n.n(i)()(r());a.push([t.id,"\n.update[data-v-d9d670b8] {\n\twidth: auto;\n}\n","",{version:3,sources:["webpack://./core/src/components/login/ResetPassword.vue"],names:[],mappings:";AAmJA;CACA,WAAA;AACA",sourcesContent:["\x3c!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\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 --\x3e\n\n<template>\n\t<form @submit.prevent=\"submit\">\n\t\t<fieldset>\n\t\t\t<p>\n\t\t\t\t<input id=\"user\"\n\t\t\t\t\tv-model=\"user\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tname=\"user\"\n\t\t\t\t\tautocapitalize=\"off\"\n\t\t\t\t\t:placeholder=\"t('core', 'Username or email')\"\n\t\t\t\t\t:aria-label=\"t('core', 'Username or email')\"\n\t\t\t\t\trequired\n\t\t\t\t\t@change=\"updateUsername\">\n\t\t\t\t\x3c!--<?php p($_['user_autofocus'] ? 'autofocus' : ''); ?>\n\t\t\t\tautocomplete=\"<?php p($_['login_form_autocomplete']); ?>\" autocapitalize=\"none\" autocorrect=\"off\"--\x3e\n\t\t\t\t<label for=\"user\" class=\"infield\">{{ t('core', 'Username or email') }}</label>\n\t\t\t</p>\n\t\t\t<div id=\"reset-password-wrapper\">\n\t\t\t\t<input id=\"reset-password-submit\"\n\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\tclass=\"login primary\"\n\t\t\t\t\ttitle=\"\"\n\t\t\t\t\t:value=\"t('core', 'Reset password')\">\n\t\t\t\t<div class=\"submit-icon\"\n\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t'icon-confirm-white': !loading,\n\t\t\t\t\t\t'icon-loading-small': loading && invertedColors,\n\t\t\t\t\t\t'icon-loading-small-dark': loading && !invertedColors,\n\t\t\t\t\t}\" />\n\t\t\t</div>\n\t\t\t<p v-if=\"message === 'send-success'\"\n\t\t\t\tclass=\"update\">\n\t\t\t\t{{ t('core', 'A password reset message has been sent to the email address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help.') }}\n\t\t\t\t<br>\n\t\t\t\t{{ t('core', 'If it is not there ask your local administrator.') }}\n\t\t\t</p>\n\t\t\t<p v-else-if=\"message === 'send-error'\"\n\t\t\t\tclass=\"update warning\">\n\t\t\t\t{{ t('core', 'Couldn\\'t send reset email. Please contact your administrator.') }}\n\t\t\t</p>\n\t\t\t<p v-else-if=\"message === 'reset-error'\"\n\t\t\t\tclass=\"update warning\">\n\t\t\t\t{{ t('core', 'Password cannot be changed. Please contact your administrator.') }}\n\t\t\t</p>\n\t\t\t<p v-else-if=\"message\"\n\t\t\t\tclass=\"update\"\n\t\t\t\t:class=\"{warning: error}\" />\n\n\t\t\t<a href=\"#\"\n\t\t\t\t@click.prevent=\"$emit('abort')\">\n\t\t\t\t{{ t('core', 'Back to login') }}\n\t\t\t</a>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\n\nimport { generateUrl } from '@nextcloud/router'\n\nexport default {\n\tname: 'ResetPassword',\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordLink: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tinvertedColors: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tupdateUsername() {\n\t\t\tthis.$emit('update:username', this.user)\n\t\t},\n\t\tsubmit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = ''\n\t\t\tconst url = generateUrl('/lostpassword/email')\n\n\t\t\tconst data = {\n\t\t\t\tuser: this.user,\n\t\t\t}\n\n\t\t\treturn axios.post(url, data)\n\t\t\t\t.then(resp => resp.data)\n\t\t\t\t.then(data => {\n\t\t\t\t\tif (data.status !== 'success') {\n\t\t\t\t\t\tthrow new Error(`got status ${data.status}`)\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.message = 'send-success'\n\t\t\t\t})\n\t\t\t\t.catch(e => {\n\t\t\t\t\tconsole.error('could not send reset email request', e)\n\n\t\t\t\t\tthis.error = true\n\t\t\t\t\tthis.message = 'send-error'\n\t\t\t\t})\n\t\t\t\t.then(() => { this.loading = false })\n\t\t},\n\t},\n}\n<\/script>\n\n<style scoped>\n\t.update {\n\t\twidth: auto;\n\t}\n</style>\n"],sourceRoot:""}]),e.Z=a},91123:function(t,e,n){"use strict";var o=n(87537),r=n.n(o),i=n(23645),a=n.n(i)()(r());a.push([t.id,"\nfieldset[data-v-9ae5fdb4] {\n\ttext-align: center;\n}\ninput[type=submit][data-v-9ae5fdb4] {\n\tmargin-top: 20px;\n}\n","",{version:3,sources:["webpack://./core/src/components/login/UpdatePassword.vue"],names:[],mappings:";AA4IA;CACA,kBAAA;AACA;AAEA;CACA,gBAAA;AACA",sourcesContent:['\x3c!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\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 --\x3e\n\n<template>\n\t<form @submit.prevent="submit">\n\t\t<fieldset>\n\t\t\t<p>\n\t\t\t\t<label for="password" class="infield">{{ t(\'core\', \'New password\') }}</label>\n\t\t\t\t<input id="password"\n\t\t\t\t\tv-model="password"\n\t\t\t\t\ttype="password"\n\t\t\t\t\tname="password"\n\t\t\t\t\tautocomplete="new-password"\n\t\t\t\t\tautocapitalize="none"\n\t\t\t\t\tautocorrect="off"\n\t\t\t\t\trequired\n\t\t\t\t\t:placeholder="t(\'core\', \'New password\')">\n\t\t\t</p>\n\n\t\t\t<div v-if="encrypted" class="update">\n\t\t\t\t<p>\n\t\t\t\t\t{{ t(\'core\', \'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?\') }}\n\t\t\t\t</p>\n\t\t\t\t<input id="encrypted-continue"\n\t\t\t\t\tv-model="proceed"\n\t\t\t\t\ttype="checkbox"\n\t\t\t\t\tclass="checkbox">\n\t\t\t\t<label for="encrypted-continue">\n\t\t\t\t\t{{ t(\'core\', \'I know what I\\\'m doing\') }}\n\t\t\t\t</label>\n\t\t\t</div>\n\n\t\t\t<div id="submit-wrapper">\n\t\t\t\t<input id="submit"\n\t\t\t\t\ttype="submit"\n\t\t\t\t\tclass="login primary"\n\t\t\t\t\ttitle=""\n\t\t\t\t\t:value="!loading ? t(\'core\', \'Reset password\') : t(\'core\', \'Resetting password\')">\n\t\t\t\t<div class="submit-icon"\n\t\t\t\t\t:class="{\n\t\t\t\t\t\t\'icon-loading-small\': loading && invertedColors,\n\t\t\t\t\t\t\'icon-loading-small-dark\': loading && !invertedColors\n\t\t\t\t\t}" />\n\t\t\t</div>\n\n\t\t\t<p v-if="error && message" :class="{warning: error}">\n\t\t\t\t{{ message }}\n\t\t\t</p>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport Axios from \'@nextcloud/axios\'\n\nexport default {\n\tname: \'UpdatePassword\',\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordTarget: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tinvertedColors: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t\tpassword: \'\',\n\t\t\tencrypted: false,\n\t\t\tproceed: false,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tasync submit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = \'\'\n\n\t\t\ttry {\n\t\t\t\tconst { data } = await Axios.post(this.resetPasswordTarget, {\n\t\t\t\t\tpassword: this.password,\n\t\t\t\t\tproceed: this.proceed,\n\t\t\t\t})\n\t\t\t\tif (data && data.status === \'success\') {\n\t\t\t\t\tthis.message = \'send-success\'\n\t\t\t\t\tthis.$emit(\'update:username\', this.user)\n\t\t\t\t\tthis.$emit(\'done\')\n\t\t\t\t} else if (data && data.encryption) {\n\t\t\t\t\tthis.encrypted = true\n\t\t\t\t} else if (data && data.msg) {\n\t\t\t\t\tthrow new Error(data.msg)\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error()\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tthis.error = true\n\t\t\t\tthis.message = e.message ? e.message : t(\'core\', \'Password cannot be changed. Please contact your administrator.\')\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n<\/script>\n\n<style scoped>\n\tfieldset {\n\t\ttext-align: center;\n\t}\n\n\tinput[type=submit] {\n\t\tmargin-top: 20px;\n\t}\n</style>\n'],sourceRoot:""}]),e.Z=a},35162:function(t,e,n){"use strict";var o=n(87537),r=n.n(o),i=n(23645),a=n.n(i)()(r());a.push([t.id,"\n.fade-enter-active, .fade-leave-active {\n\ttransition: opacity .3s;\n}\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\n\topacity: 0;\n}\n","",{version:3,sources:["webpack://./core/src/views/Login.vue"],names:[],mappings:";AAiLA;CACA,uBAAA;AACA;AACA;CACA,UAAA;AACA",sourcesContent:["\x3c!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\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 --\x3e\n\n<template>\n\t<div v-if=\"!hideLoginForm || directLogin\">\n\t\t<transition name=\"fade\" mode=\"out-in\">\n\t\t\t<div v-if=\"!passwordlessLogin && !resetPassword && resetPasswordTarget === ''\"\n\t\t\t\tkey=\"login\">\n\t\t\t\t<LoginForm :username.sync=\"user\"\n\t\t\t\t\t:redirect-url=\"redirectUrl\"\n\t\t\t\t\t:direct-login=\"directLogin\"\n\t\t\t\t\t:messages=\"messages\"\n\t\t\t\t\t:errors=\"errors\"\n\t\t\t\t\t:throttle-delay=\"throttleDelay\"\n\t\t\t\t\t:inverted-colors=\"invertedColors\"\n\t\t\t\t\t:auto-complete-allowed=\"autoCompleteAllowed\"\n\t\t\t\t\t@submit=\"loading = true\" />\n\t\t\t\t<a v-if=\"canResetPassword && resetPasswordLink !== ''\"\n\t\t\t\t\tid=\"lost-password\"\n\t\t\t\t\t:href=\"resetPasswordLink\">\n\t\t\t\t\t{{ t('core', 'Forgot password?') }}\n\t\t\t\t</a>\n\t\t\t\t<a v-else-if=\"canResetPassword && !resetPassword\"\n\t\t\t\t\tid=\"lost-password\"\n\t\t\t\t\t:href=\"resetPasswordLink\"\n\t\t\t\t\t@click.prevent=\"resetPassword = true\">\n\t\t\t\t\t{{ t('core', 'Forgot password?') }}\n\t\t\t\t</a>\n\t\t\t\t<br>\n\t\t\t\t<template v-if=\"hasPasswordless\">\n\t\t\t\t\t<div v-if=\"countAlternativeLogins\"\n\t\t\t\t\t\tclass=\"alternative-logins\">\n\t\t\t\t\t\t<a v-if=\"hasPasswordless\"\n\t\t\t\t\t\t\tclass=\"button\"\n\t\t\t\t\t\t\t:class=\"{ 'single-alt-login-option': countAlternativeLogins }\"\n\t\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\t\t@click.prevent=\"passwordlessLogin = true\">\n\t\t\t\t\t\t\t{{ t('core', 'Log in with a device') }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t\t<a v-else\n\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\t@click.prevent=\"passwordlessLogin = true\">\n\t\t\t\t\t\t{{ t('core', 'Log in with a device') }}\n\t\t\t\t\t</a>\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t\t<div v-else-if=\"!loading && passwordlessLogin\"\n\t\t\t\tkey=\"reset\"\n\t\t\t\tclass=\"login-additional\">\n\t\t\t\t<PasswordLessLoginForm :username.sync=\"user\"\n\t\t\t\t\t:redirect-url=\"redirectUrl\"\n\t\t\t\t\t:inverted-colors=\"invertedColors\"\n\t\t\t\t\t:auto-complete-allowed=\"autoCompleteAllowed\"\n\t\t\t\t\t:is-https=\"isHttps\"\n\t\t\t\t\t:is-localhost=\"isLocalhost\"\n\t\t\t\t\t:has-public-key-credential=\"hasPublicKeyCredential\"\n\t\t\t\t\t@submit=\"loading = true\" />\n\t\t\t\t<a href=\"#\" @click.prevent=\"passwordlessLogin = false\">\n\t\t\t\t\t{{ t('core', 'Back') }}\n\t\t\t\t</a>\n\t\t\t</div>\n\t\t\t<div v-else-if=\"!loading && canResetPassword\"\n\t\t\t\tkey=\"reset\"\n\t\t\t\tclass=\"login-additional\">\n\t\t\t\t<div class=\"lost-password-container\">\n\t\t\t\t\t<ResetPassword v-if=\"resetPassword\"\n\t\t\t\t\t\t:username.sync=\"user\"\n\t\t\t\t\t\t:reset-password-link=\"resetPasswordLink\"\n\t\t\t\t\t\t:inverted-colors=\"invertedColors\"\n\t\t\t\t\t\t@abort=\"resetPassword = false\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div v-else-if=\"resetPasswordTarget !== ''\">\n\t\t\t\t<UpdatePassword :username.sync=\"user\"\n\t\t\t\t\t:reset-password-target=\"resetPasswordTarget\"\n\t\t\t\t\t:inverted-colors=\"invertedColors\"\n\t\t\t\t\t@done=\"passwordResetFinished\" />\n\t\t\t</div>\n\t\t</transition>\n\t</div>\n\t<div v-else>\n\t\t<transition name=\"fade\" mode=\"out-in\">\n\t\t\t<div class=\"warning\">\n\t\t\t\t{{ t('core', 'Login form is disabled.') }}<br>\n\t\t\t\t<small>{{ t('core', 'Please contact your administrator.') }}\n\t\t\t\t</small>\n\t\t\t</div>\n\t\t</transition>\n\t</div>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport queryString from 'query-string'\n\nimport LoginForm from '../components/login/LoginForm.vue'\nimport PasswordLessLoginForm from '../components/login/PasswordLessLoginForm.vue'\nimport ResetPassword from '../components/login/ResetPassword.vue'\nimport UpdatePassword from '../components/login/UpdatePassword.vue'\n\nconst query = queryString.parse(location.search)\nif (query.clear === '1') {\n\ttry {\n\t\twindow.localStorage.clear()\n\t\twindow.sessionStorage.clear()\n\t\tconsole.debug('Browser storage cleared')\n\t} catch (e) {\n\t\tconsole.error('Could not clear browser storage', e)\n\t}\n}\n\nexport default {\n\tname: 'Login',\n\n\tcomponents: {\n\t\tLoginForm,\n\t\tPasswordLessLoginForm,\n\t\tResetPassword,\n\t\tUpdatePassword,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\tuser: loadState('core', 'loginUsername', ''),\n\t\t\tpasswordlessLogin: false,\n\t\t\tresetPassword: false,\n\n\t\t\t// Initial data\n\t\t\terrors: loadState('core', 'loginErrors', []),\n\t\t\tmessages: loadState('core', 'loginMessages', []),\n\t\t\tredirectUrl: loadState('core', 'loginRedirectUrl', false),\n\t\t\tthrottleDelay: loadState('core', 'loginThrottleDelay', 0),\n\t\t\tinvertedColors: OCA.Theming && OCA.Theming.inverted,\n\t\t\tcanResetPassword: loadState('core', 'loginCanResetPassword', false),\n\t\t\tresetPasswordLink: loadState('core', 'loginResetPasswordLink', ''),\n\t\t\tautoCompleteAllowed: loadState('core', 'loginAutocomplete', true),\n\t\t\tresetPasswordTarget: loadState('core', 'resetPasswordTarget', ''),\n\t\t\tresetPasswordUser: loadState('core', 'resetPasswordUser', ''),\n\t\t\tdirectLogin: query.direct === '1',\n\t\t\thasPasswordless: loadState('core', 'webauthn-available', false),\n\t\t\tcountAlternativeLogins: loadState('core', 'countAlternativeLogins', false),\n\t\t\tisHttps: window.location.protocol === 'https:',\n\t\t\tisLocalhost: window.location.hostname === 'localhost',\n\t\t\thasPublicKeyCredential: typeof (window.PublicKeyCredential) !== 'undefined',\n\t\t\thideLoginForm: loadState('core', 'hideLoginForm', false),\n\t\t}\n\t},\n\tmethods: {\n\t\tpasswordResetFinished() {\n\t\t\tthis.resetPasswordTarget = ''\n\t\t\tthis.directLogin = true\n\t\t},\n\t},\n}\n<\/script>\n\n<style>\n\t.fade-enter-active, .fade-leave-active {\n\t\ttransition: opacity .3s;\n\t}\n\t.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\n\t\topacity: 0;\n\t}\n</style>\n"],sourceRoot:""}]),e.Z=a},10944:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({1:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(i=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(i=null!=e?a(e,"contact"):e)?a(i,"profileUrl"):i,{name:"if",hash:{},fn:t.program(2,r,0),inverse:t.program(5,r,0),data:r,loc:{start:{line:2,column:1},end:{line:10,column:8}}}))?i:""},2:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(i=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(i=null!=e?a(e,"contact"):e)?a(i,"profileTitle"):i,{name:"if",hash:{},fn:t.program(3,r,0),inverse:t.noop,data:r,loc:{start:{line:3,column:2},end:{line:7,column:9}}}))?i:""},3:function(t,e,n,o,r){var i,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<a class="profile-link--avatar" href="'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"profileUrl"):i,e))+'">\n\t\t\t\t<img src="'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+'&size=32" class="avatar" srcset="'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+"&size=32 1x, "+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+"&size=64 2x, "+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+'&size=128 4x" alt="">\n\t\t\t</a>\n'},5:function(t,e,n,o,r){var i,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t<img src="'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+'&size=32" class="avatar" srcset="'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+"&size=32 1x, "+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+"&size=64 2x, "+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+'&size=128 4x" alt="">\n'},7:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(i=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(i=null!=e?a(e,"contact"):e)?a(i,"profileUrl"):i,{name:"if",hash:{},fn:t.program(8,r,0),inverse:t.program(11,r,0),data:r,loc:{start:{line:12,column:1},end:{line:20,column:8}}}))?i:""},8:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(i=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(i=null!=e?a(e,"contact"):e)?a(i,"profileTitle"):i,{name:"if",hash:{},fn:t.program(9,r,0),inverse:t.noop,data:r,loc:{start:{line:13,column:2},end:{line:17,column:9}}}))?i:""},9:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<a class="profile-link--avatar" href="'+t.escapeExpression(t.lambda(null!=(i=null!=e?a(e,"contact"):e)?a(i,"profileUrl"):i,e))+'">\n\t\t\t\t<div class="avatar"></div>\n\t\t\t</a>\n'},11:function(t,e,n,o,r){return'\t\t<div class="avatar"></div>\n'},13:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(i=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(i=null!=e?a(e,"contact"):e)?a(i,"profileTitle"):i,{name:"if",hash:{},fn:t.program(14,r,0),inverse:t.noop,data:r,loc:{start:{line:23,column:1},end:{line:29,column:8}}}))?i:""},14:function(t,e,n,o,r){var i,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t<a class="body profile-link--full-name" href="'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"profileUrl"):i,e))+'">\n\t\t\t<div class="full-name">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"fullName"):i,e))+'</div>\n\t\t\t<div class="last-message">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"lastMessage"):i,e))+'</div>\n\t\t\t<div class="email-address">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"emailAddresses"):i,e))+"</div>\n\t\t</a>\n"},16:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(i=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(i=null!=e?a(e,"contact"):e)?a(i,"topAction"):i,{name:"if",hash:{},fn:t.program(17,r,0),inverse:t.program(19,r,0),data:r,loc:{start:{line:30,column:0},end:{line:45,column:0}}}))?i:""},17:function(t,e,n,o,r){var i,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<a class="body" href="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"hyperlink"):i,e))+'"> \n\t\t<div class="full-name">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"fullName"):i,e))+'</div>\n\t\t<div class="last-message">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"lastMessage"):i,e))+'</div>\n\t\t<div class="email-address">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"emailAddresses"):i,e))+'</div>\n\t</a>\n \t<a class="top-action" href="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"hyperlink"):i,e))+'" title="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"title"):i,e))+'">\n \t\t<img src="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"icon"):i,e))+'" alt="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"title"):i,e))+'">\n\t</a>\n'},19:function(t,e,n,o,r){var i,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<div class="body">\n\t\t<div class="full-name">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"fullName"):i,e))+'</div>\n\t\t<div class="last-message">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"lastMessage"):i,e))+'</div>\n\t\t<div class="email-address">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"emailAddresses"):i,e))+"</div>\n\t</div>\n"},21:function(t,e,n,o,r){var i,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<a class="second-action" href="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"secondAction"):i)?l(i,"hyperlink"):i,e))+'" title="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"secondAction"):i)?l(i,"title"):i,e))+'">\n\t<img src="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"secondAction"):i)?l(i,"icon"):i,e))+'" alt="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"secondAction"):i)?l(i,"title"):i,e))+'">\n</a>\n'},23:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<span class="other-actions icon-more"></span>\n\t<div class="menu popovermenu">\n\t\t<ul>\n'+(null!=(i=a(n,"each").call(null!=e?e:t.nullContext||{},null!=(i=null!=e?a(e,"contact"):e)?a(i,"actions"):i,{name:"each",hash:{},fn:t.program(24,r,0),inverse:t.noop,data:r,loc:{start:{line:55,column:3},end:{line:62,column:12}}}))?i:"")+"\t\t</ul>\n\t</div>\n"},24:function(t,e,n,o,r){var i,a=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<li>\n\t\t\t\t<a href="'+c(typeof(i=null!=(i=u(n,"hyperlink")||(null!=e?u(e,"hyperlink"):e))?i:s)===l?i.call(a,{name:"hyperlink",hash:{},data:r,loc:{start:{line:57,column:13},end:{line:57,column:26}}}):i)+'">\n\t\t\t\t\t<img src="'+c(typeof(i=null!=(i=u(n,"icon")||(null!=e?u(e,"icon"):e))?i:s)===l?i.call(a,{name:"icon",hash:{},data:r,loc:{start:{line:58,column:15},end:{line:58,column:23}}}):i)+'" alt="">\n\t\t\t\t\t<span>'+c(typeof(i=null!=(i=u(n,"title")||(null!=e?u(e,"title"):e))?i:s)===l?i.call(a,{name:"title",hash:{},data:r,loc:{start:{line:59,column:11},end:{line:59,column:20}}}):i)+"</span>\n\t\t\t\t</a>\n\t\t\t</li>\n"},compiler:[8,">= 4.3.0"],main:function(t,e,n,o,r){var i,a=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(i=s(n,"if").call(a,null!=(i=null!=e?s(e,"contact"):e)?s(i,"avatar"):i,{name:"if",hash:{},fn:t.program(1,r,0),inverse:t.program(7,r,0),data:r,loc:{start:{line:1,column:0},end:{line:21,column:7}}}))?i:"")+(null!=(i=s(n,"if").call(a,null!=(i=null!=e?s(e,"contact"):e)?s(i,"profileUrl"):i,{name:"if",hash:{},fn:t.program(13,r,0),inverse:t.program(16,r,0),data:r,loc:{start:{line:22,column:0},end:{line:45,column:7}}}))?i:"")+(null!=(i=s(n,"if").call(a,null!=(i=null!=e?s(e,"contact"):e)?s(i,"hasTwoActions"):i,{name:"if",hash:{},fn:t.program(21,r,0),inverse:t.noop,data:r,loc:{start:{line:46,column:0},end:{line:50,column:7}}}))?i:"")+(null!=(i=s(n,"if").call(a,null!=(i=null!=e?s(e,"contact"):e)?s(i,"hasManyActions"):i,{name:"if",hash:{},fn:t.program(23,r,0),inverse:t.noop,data:r,loc:{start:{line:51,column:0},end:{line:65,column:7}}}))?i:"")},useData:!0})},20421:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-search"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(i=null!=(i=a(n,"couldNotLoadText")||(null!=e?a(e,"couldNotLoadText"):e))?i:t.hooks.helperMissing)?i.call(null!=e?e:t.nullContext||{},{name:"couldNotLoadText",hash:{},data:r,loc:{start:{line:3,column:5},end:{line:3,column:25}}}):i)+"</h2>\n</div>\n"},useData:!0})},34083:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({1:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-search"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(i=null!=(i=a(n,"noContactsFoundText")||(null!=e?a(e,"noContactsFoundText"):e))?i:t.hooks.helperMissing)?i.call(null!=e?e:t.nullContext||{},{name:"noContactsFoundText",hash:{},data:r,loc:{start:{line:4,column:5},end:{line:4,column:28}}}):i)+"</h2>\n</div>\n"},3:function(t,e,n,o,r){var i,a=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="footer"><a href="'+c(typeof(i=null!=(i=u(n,"contactsAppURL")||(null!=e?u(e,"contactsAppURL"):e))?i:s)===l?i.call(a,{name:"contactsAppURL",hash:{},data:r,loc:{start:{line:9,column:29},end:{line:9,column:47}}}):i)+'">'+c(typeof(i=null!=(i=u(n,"showAllContactsText")||(null!=e?u(e,"showAllContactsText"):e))?i:s)===l?i.call(a,{name:"showAllContactsText",hash:{},data:r,loc:{start:{line:9,column:49},end:{line:9,column:72}}}):i)+"</a></div>\n"},5:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(i=a(n,"if").call(null!=e?e:t.nullContext||{},null!=e?a(e,"canInstallApp"):e,{name:"if",hash:{},fn:t.program(6,r,0),inverse:t.noop,data:r,loc:{start:{line:10,column:0},end:{line:12,column:0}}}))?i:""},6:function(t,e,n,o,r){var i,a=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="footer"><a href="'+c(typeof(i=null!=(i=u(n,"contactsAppMgmtURL")||(null!=e?u(e,"contactsAppMgmtURL"):e))?i:s)===l?i.call(a,{name:"contactsAppMgmtURL",hash:{},data:r,loc:{start:{line:11,column:29},end:{line:11,column:51}}}):i)+'">'+c(typeof(i=null!=(i=u(n,"contactsAppMgmtText")||(null!=e?u(e,"contactsAppMgmtText"):e))?i:s)===l?i.call(a,{name:"contactsAppMgmtText",hash:{},data:r,loc:{start:{line:11,column:53},end:{line:11,column:76}}}):i)+"</a></div>\n"},compiler:[8,">= 4.3.0"],main:function(t,e,n,o,r){var i,a=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(i=s(n,"unless").call(a,null!=(i=null!=e?s(e,"contacts"):e)?s(i,"length"):i,{name:"unless",hash:{},fn:t.program(1,r,0),inverse:t.noop,data:r,loc:{start:{line:1,column:0},end:{line:6,column:11}}}))?i:"")+'<div id="contactsmenu-contacts"></div>\n'+(null!=(i=s(n,"if").call(a,null!=e?s(e,"contactsAppEnabled"):e,{name:"if",hash:{},fn:t.program(3,r,0),inverse:t.program(5,r,0),data:r,loc:{start:{line:8,column:0},end:{line:12,column:7}}}))?i:"")},useData:!0})},95386:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-loading"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(i=null!=(i=a(n,"loadingText")||(null!=e?a(e,"loadingText"):e))?i:t.hooks.helperMissing)?i.call(null!=e?e:t.nullContext||{},{name:"loadingText",hash:{},data:r,loc:{start:{line:3,column:5},end:{line:3,column:20}}}):i)+"</h2>\n</div>\n"},useData:!0})},66115:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,o,r){var i,a=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<label class="hidden-visually" for="contactsmenu-search">'+c(typeof(i=null!=(i=u(n,"searchContactsText")||(null!=e?u(e,"searchContactsText"):e))?i:s)===l?i.call(a,{name:"searchContactsText",hash:{},data:r,loc:{start:{line:1,column:57},end:{line:1,column:79}}}):i)+'</label>\n<input id="contactsmenu-search" type="search" placeholder="'+c(typeof(i=null!=(i=u(n,"searchContactsText")||(null!=e?u(e,"searchContactsText"):e))?i:s)===l?i.call(a,{name:"searchContactsText",hash:{},data:r,loc:{start:{line:2,column:59},end:{line:2,column:81}}}):i)+'" value="'+c(typeof(i=null!=(i=u(n,"searchTerm")||(null!=e?u(e,"searchTerm"):e))?i:s)===l?i.call(a,{name:"searchTerm",hash:{},data:r,loc:{start:{line:2,column:90},end:{line:2,column:104}}}):i)+'">\n<div class="content">\n</div>\n'},useData:!0})},46700:function(t,e,n){var o={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":2819,"./hi.js":2819,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function r(t){var e=i(t);return n(e)}function i(t){if(!n.o(o,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return o[t]}r.keys=function(){return Object.keys(o)},r.resolve=i,t.exports=r,r.id=46700}},r={};function i(t){var e=r[t];if(void 0!==e)return e.exports;var n=r[t]={id:t,loaded:!1,exports:{}};return o[t].call(n.exports,n,n.exports,i),n.loaded=!0,n.exports}i.m=o,i.amdD=function(){throw new Error("define cannot be used indirect")},i.amdO={},e=[],i.O=function(t,n,o,r){if(!n){var a=1/0;for(u=0;u<e.length;u++){n=e[u][0],o=e[u][1],r=e[u][2];for(var s=!0,l=0;l<n.length;l++)(!1&r||a>=r)&&Object.keys(i.O).every((function(t){return i.O[t](n[l])}))?n.splice(l--,1):(s=!1,r<a&&(a=r));if(s){e.splice(u--,1);var c=o();void 0!==c&&(t=c)}}return t}r=r||0;for(var u=e.length;u>0&&e[u-1][2]>r;u--)e[u]=e[u-1];e[u]=[n,o,r]},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,{a:e}),e},i.d=function(t,e){for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},i.j=4577,function(){i.b=document.baseURI||self.location.href;var t={4577:0};i.O.j=function(e){return 0===t[e]};var e=function(e,n){var o,r,a=n[0],s=n[1],l=n[2],c=0;if(a.some((function(e){return 0!==t[e]}))){for(o in s)i.o(s,o)&&(i.m[o]=s[o]);if(l)var u=l(i)}for(e&&e(n);c<a.length;c++)r=a[c],i.o(t,r)&&t[r]&&t[r][0](),t[r]=0;return i.O(u)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))}();var a=i.O(void 0,[7874],(function(){return i(10473)}));a=i.O(a)}();
-//# sourceMappingURL=core-login.js.map?v=fc1f8c11072cd138cc6f \ No newline at end of file
+!function(){var e,o={10473:function(e,o,r){"use strict";var i=r(20144),a=r(74854),s=r(19755),l=r.n(s),c=r(79753),u={},d=[],p=r(64492),f=r(26932),h={updatableNotification:null,getDefaultNotificationFunction:null,setDefault:function(t){this.getDefaultNotificationFunction=t},hide:function(t,e){p.default.isFunction(t)&&(e=t,t=void 0),t?(t.each((function(){l()(this)[0].toastify?l()(this)[0].toastify.hideToast():console.error("cannot hide toast because object is not set"),this===this.updatableNotification&&(this.updatableNotification=null)})),e&&e.call(),this.getDefaultNotificationFunction&&this.getDefaultNotificationFunction()):console.error("Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification")},showHtml:function(t,e){(e=e||{}).isHTML=!0,e.timeout=e.timeout?e.timeout:f.Rl;var n=(0,f.PV)(t,e);return n.toastElement.toastify=n,l()(n.toastElement)},show:function(t,e){(e=e||{}).timeout=e.timeout?e.timeout:f.Rl;var n=(0,f.PV)(function(t){return t.toString().split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;").split('"').join("&quot;").split("'").join("&#039;")}(t),e);return n.toastElement.toastify=n,l()(n.toastElement)},showUpdate:function(t){return this.updatableNotification&&this.updatableNotification.hideToast(),this.updatableNotification=(0,f.PV)(t,{timeout:f.Rl}),this.updatableNotification.toastElement.toastify=this.updatableNotification,l()(this.updatableNotification.toastElement)},showTemporary:function(t,e){(e=e||{}).timeout=e.timeout||f.TN;var n=(0,f.PV)(t,e);return n.toastElement.toastify=n,l()(n.toastElement)},isHidden:function(){return!l()("#content").find(".toastify").length}},m=p.default.throttle((function(){h.showTemporary(t("core","Connection to server lost"))}),7e3,{trailing:!1}),g={enableDynamicSlideToggle:function(){},showAppSidebar:function(t){(t||l()("#app-sidebar")).removeClass("disappear").show(),l()("#app-content").trigger(new(l().Event)("appresized"))},hideAppSidebar:function(t){(t||l()("#app-sidebar")).hide().addClass("disappear"),l()("#app-content").trigger(new(l().Event)("appresized"))}};function v(t,e,n){"post"!==t&&"delete"!==t||!Ut.PasswordConfirmation.requiresPasswordConfirmation()?(n=n||{},l().ajax({type:t.toUpperCase(),url:(0,c.generateOcsUrl)("apps/provisioning_api/api/v1/config/apps")+e,data:n.data||{},success:n.success,error:n.error})):Ut.PasswordConfirmation.requirePasswordConfirmation(_.bind(v,this,t,e,n))}var w=window.oc_appconfig||{},y={getValue:function(t,e,n,o){!function(t,e,n,o){(o=o||{}).data={defaultValue:n},v("get","/"+t+"/"+e,o)}(t,e,n,{success:o})},setValue:function(t,e,n){!function(t,e,n,o){(o=o||{}).data={value:n},v("post","/"+t+"/"+e,o)}(t,e,n)},getApps:function(t){!function(t){v("get","",t)}({success:t})},getKeys:function(t,e){!function(t,e){v("get","/"+t,e)}(t,{success:e})},deleteKey:function(t,e){!function(t,e,n){v("delete","/"+t+"/"+e,void 0)}(t,e)}},b=void 0!==window._oc_appswebroots&&window._oc_appswebroots,P=r(72316),C=r.n(P),k=r(87240),x={create:"POST",update:"PROPPATCH",patch:"PROPPATCH",delete:"DELETE",read:"PROPFIND"};function T(t,e){if(p.default.isArray(t))return p.default.map(t,(function(t){return T(t,e)}));var n={href:t.href};return p.default.each(t.propStat,(function(t){if("HTTP/1.1 200 OK"===t.status)for(var o in t.properties){var r=o;o in e&&(r=e[o]),n[r]=t.properties[o]}})),n.id||(n.id=O(n.href)),n}function O(t){var e=t.indexOf("?");e>0&&(t=t.substr(0,e));var n,o=t.split("/");do{n=o[o.length-1],o.pop()}while(!n&&o.length>0);return n}function A(t){return t>=200&&t<=299}function S(t,e,n,o){return t.propPatch(e.url,function(t,e){var n,o={};for(n in t){var r=e[n],i=t[n];r||(console.warn('No matching DAV property for property "'+n),r=n),(p.default.isBoolean(i)||p.default.isNumber(i))&&(i=""+i),o[r]=i}return o}(n.changed,e.davProperties),o).then((function(t){A(t.status)?p.default.isFunction(e.success)&&e.success(n.toJSON()):p.default.isFunction(e.error)&&e.error(t)}))}var E=C().noConflict();Object.assign(E,{davCall:function(t,e){var n=new k.dav.Client({baseUrl:t.url,xmlNamespaces:p.default.extend({"DAV:":"d","http://owncloud.org/ns":"oc"},t.xmlNamespaces||{})});n.resolveUrl=function(){return t.url};var o=p.default.extend({"X-Requested-With":"XMLHttpRequest",requesttoken:OC.requestToken},t.headers);return"PROPFIND"===t.type?function(t,e,n,o){return t.propFind(e.url,p.default.values(e.davProperties)||[],e.depth,o).then((function(t){if(A(t.status)){if(p.default.isFunction(e.success)){var n=p.default.invert(e.davProperties),o=T(t.body,n);e.depth>0&&o.shift(),e.success(o)}}else p.default.isFunction(e.error)&&e.error(t)}))}(n,t,0,o):"PROPPATCH"===t.type?S(n,t,e,o):"MKCOL"===t.type?function(t,e,n,o){return t.request(e.type,e.url,o,null).then((function(r){A(r.status)?S(t,e,n,o):p.default.isFunction(e.error)&&e.error(r)}))}(n,t,e,o):function(t,e,n,o){return o["Content-Type"]="application/json",t.request(e.type,e.url,o,e.data).then((function(t){if(A(t.status)){if(p.default.isFunction(e.success)){if("PUT"===e.type||"POST"===e.type||"MKCOL"===e.type){var o=t.body||n.toJSON(),r=t.xhr.getResponseHeader("Content-Location");return"POST"===e.type&&r&&(o.id=O(r)),void e.success(o)}if(207===t.status){var i=p.default.invert(e.davProperties);e.success(T(t.body,i))}else e.success(t.body)}}else p.default.isFunction(e.error)&&e.error(t)}))}(n,t,e,o)},davSync:function(t){return function(e,n,o){var r={type:x[e]||e},i=n instanceof t.Collection;if("update"===e&&(n.hasInnerCollection?r.type="MKCOL":(n.usePUT||n.collection&&n.collection.usePUT)&&(r.type="PUT")),o.url||(r.url=p.default.result(n,"url")||function(){throw new Error('A "url" property or function must be specified')}()),null!=o.data||!n||"create"!==e&&"update"!==e&&"patch"!==e||(r.data=JSON.stringify(o.attrs||n.toJSON(o))),"PROPFIND"!==r.type&&(r.processData=!1),"PROPFIND"===r.type||"PROPPATCH"===r.type){var a=n.davProperties;!a&&n.model&&(a=n.model.prototype.davProperties),a&&(p.default.isFunction(a)?r.davProperties=a.call(n):r.davProperties=a),r.davProperties=p.default.extend(r.davProperties||{},o.davProperties),p.default.isUndefined(o.depth)&&(o.depth=i?1:0)}var s=o.error;o.error=function(t,e,n){o.textStatus=e,o.errorThrown=n,s&&s.call(o.context,t,e,n)};var l=o.xhr=t.davCall(p.default.extend(r,o),n);return n.trigger("request",n,l,o),l}}(E)});var j=E,L=r(76632),U=window._oc_config||{},I=P.Model.extend({defaults:{fullName:"",lastMessage:"",actions:[],hasOneAction:!1,hasTwoActions:!1,hasManyActions:!1},initialize:function(){0===this.get("actions").length?this.set("hasOneAction",!0):1===this.get("actions").length?(this.set("hasTwoActions",!0),this.set("secondAction",this.get("actions")[0])):this.set("hasManyActions",!0)}}),R=P.Collection.extend({model:I}),F=P.View.extend({_collection:void 0,_subViews:[],initialize:function(t){this._collection=t.collection},render:function(){var t=this;return t.$el.html(""),t._subViews=[],t._collection.forEach((function(e){var n=new $({model:e});n.render(),t.$el.append(n.$el),n.on("toggle:actionmenu",t._onChildActionMenuToggle,t),t._subViews.push(n)})),t},_onChildActionMenuToggle:function(t){this._subViews.forEach((function(e){e.trigger("parent:toggle:actionmenu",t)}))}}),$=P.View.extend({className:"contact",_template:void 0,_model:void 0,_actionMenuShown:!1,events:{"click .icon-more":"_onToggleActionsMenu"},contactTemplate:r(10944),template:function(t){return this.contactTemplate(t)},initialize:function(t){this._model=t.model,this.on("parent:toggle:actionmenu",this._onOtherActionMenuOpened,this)},render:function(){return this.$el.html(this.template({contact:this._model.toJSON()})),this.delegateEvents(),this.$("div.avatar").imageplaceholder(this._model.get("fullName")),this.$(".top-action").tooltip({placement:"left"}),this.$(".second-action").tooltip({placement:"left"}),this},_onToggleActionsMenu:function(){this._actionMenuShown=!this._actionMenuShown,this._actionMenuShown?this.$(".menu").show():this.$(".menu").hide(),this.trigger("toggle:actionmenu",this.$el)},_onOtherActionMenuOpened:function(t){this.$el.is(t)||(this._actionMenuShown=!1,this.$(".menu").hide())}}),N=P.View.extend({_loadingTemplate:void 0,_errorTemplate:void 0,_contentTemplate:void 0,_contactsTemplate:void 0,_contacts:void 0,_searchTerm:"",events:{"input #contactsmenu-search":"_onSearch"},templates:{loading:r(95386),error:r(20421),menu:r(66115),list:r(34083)},_onSearch:p.default.debounce((function(t){var e=this.$("#contactsmenu-search").val();e!==this._searchTerm&&(this.trigger("search",this.$("#contactsmenu-search").val()),this._searchTerm=e)}),700),loadingTemplate:function(t){return this.templates.loading(t)},errorTemplate:function(e){return this.templates.error(p.default.extend({couldNotLoadText:t("core","Could not load your contacts")},e))},contentTemplate:function(e){return this.templates.menu(p.default.extend({searchContactsText:t("core","Search contacts …")},e))},contactsTemplate:function(e){return this.templates.list(p.default.extend({noContactsFoundText:t("core","No contacts found"),showAllContactsText:t("core","Show all contacts …"),contactsAppMgmtText:t("core","Install the Contacts app")},e))},initialize:function(t){this.options=t},showLoading:function(t){this.render(),this._contacts=void 0,this.$(".content").html(this.loadingTemplate({loadingText:t}))},showError:function(){this.render(),this._contacts=void 0,this.$(".content").html(this.errorTemplate())},showContacts:function(t,e){this._contacts=t.contacts,this.render({contacts:t.contacts});var n=new F({collection:t.contacts});n.render(),this.$(".content").html(this.contactsTemplate({contacts:t.contacts,searchTerm:e,contactsAppEnabled:t.contactsAppEnabled,contactsAppURL:Ut.generateUrl("/apps/contacts"),canInstallApp:Ut.isUserAdmin(),contactsAppMgmtURL:Ut.generateUrl("/settings/apps/social/contacts")})),this.$("#contactsmenu-contacts").html(n.$el)},render:function(t){var e=this.$("#contactsmenu-search").val();return this.$el.html(this.contentTemplate(t)),this.$("#contactsmenu-search").val(e),this.$("#contactsmenu-search").focus(),this}}),M=function(t){this.initialize(t)};M.prototype={$el:void 0,_$trigger:void 0,_view:void 0,_contactsPromise:void 0,initialize:function(t){this.$el=t.el,this._$trigger=t.trigger,this._view=new N({el:this.$el}),this._view.on("search",(function(t){this._loadContacts(t)}),this),Ut.registerMenu(this._$trigger,this.$el,function(){this._toggleVisibility(!0)}.bind(this),!0),this.$el.on("beforeHide",function(){this._toggleVisibility(!1)}.bind(this))},_toggleVisibility:function(t){return t?this._loadContacts():(this.$el.html(""),Promise.resolve())},_getContacts:function(t){var e=Ut.generateUrl("/contactsmenu/contacts");return Promise.resolve(l().ajax(e,{method:"POST",data:{filter:t}}))},_loadContacts:function(e){var n=this;return n._contactsPromise||(n._contactsPromise=n._getContacts(e)),p.default.isUndefined(e)||""===e?n._view.showLoading(t("core","Loading your contacts …")):n._view.showLoading(t("core","Looking for {term} …",{term:e})),n._contactsPromise.then((function(t){t.contacts=new R(t.contacts),n._view.showContacts(t,e)}),(function(t){n._view.showError(),console.error("There was an error loading your contacts",t)})).then((function(){delete n._contactsPromise})).catch(console.error.bind(this))}};var z=M,D=document.getElementsByTagName("head")[0].getAttribute("data-user"),B=document.getElementsByTagName("head")[0].getAttribute("data-user-displayname"),q=void 0!==D&&D;function H(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function Y(t,e,n){return e&&H(t.prototype,e),n&&H(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}var K={Search:Y((function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),console.warn("OCA.Search is deprecated. Please use the unified search API instead")}))};function G(t){return G="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},G(t)}var V,Z,W,J={YES_NO_BUTTONS:70,OK_BUTTONS:71,FILEPICKER_TYPE_CHOOSE:1,FILEPICKER_TYPE_MOVE:2,FILEPICKER_TYPE_COPY:3,FILEPICKER_TYPE_COPY_MOVE:4,FILEPICKER_TYPE_CUSTOM:5,dialogsCounter:0,alert:function(t,e,n,o){this.message(t,e,"alert",J.OK_BUTTON,n,o)},info:function(t,e,n,o){this.message(t,e,"info",J.OK_BUTTON,n,o)},confirm:function(t,e,n,o){return this.message(t,e,"notice",J.YES_NO_BUTTONS,n,o)},confirmDestructive:function(t,e,n,o,r){return this.message(t,e,"none",n,o,void 0===r||r)},confirmHtml:function(t,e,n,o){return this.message(t,e,"notice",J.YES_NO_BUTTONS,n,o,!0)},prompt:function(e,n,o,r,i,a){return l().when(this._getMessageTemplate()).then((function(s){var c="oc-dialog-"+J.dialogsCounter+"-content",u="#"+c,d=s.octemplate({dialog_name:c,title:n,message:e,type:"notice"}),f=l()("<input/>");f.attr("type",a?"password":"text").attr("id",c+"-input").attr("placeholder",i);var h=l()("<label/>").attr("for",c+"-input").text(i+": ");d.append(h),d.append(f),void 0===r&&(r=!1),l()("body").append(d),void 0!==o&&(o=p.default.once(o));var m=[{text:t("core","No"),click:function(){void 0!==o&&o(!1,f.val()),l()(u).ocdialog("close")}},{text:t("core","Yes"),click:function(){void 0!==o&&o(!0,f.val()),l()(u).ocdialog("close")},defaultButton:!0}];l()(u).ocdialog({closeOnEscape:!0,modal:r,buttons:m,close:function(){void 0!==o&&o(!1,f.val())}}),f.focus(),J.dialogsCounter++}))},filepicker:function(e,n,o,r,i,a,s,c){var u=this;if(this.filepicker.sortField="name",this.filepicker.sortOrder="asc",!this.filepicker.loading){void 0===a&&(a=this.FILEPICKER_TYPE_CHOOSE);var d=t("core","No files in here"),f=t("files","New folder");a!==this.FILEPICKER_TYPE_COPY&&a!==this.FILEPICKER_TYPE_MOVE&&a!==this.FILEPICKER_TYPE_COPY_MOVE||(d=t("core","No more subfolders in here")),this.filepicker.loading=!0,this.filepicker.filesClient=K.Sharing&&K.Sharing.PublicApp&&K.Sharing.PublicApp.fileList?K.Sharing.PublicApp.fileList.filesClient:Ut.Files.getClient(),this.filelist=null,s=s||"",c=Object.assign({allowDirectoryChooser:!1},c),l().when(this._getFilePickerTemplate()).then((function(h){u.filepicker.loading=!1,u.$filePicker&&u.$filePicker.ocdialog("close"),null==r&&(r=[]),"string"==typeof r&&(r=[r]),u.$filePicker=h.octemplate({dialog_name:"oc-dialog-filepicker-content",title:e,emptytext:d,newtext:f,nameCol:t("core","Name"),sizeCol:t("core","Size"),modifiedCol:t("core","Modified")}).data("path",s).data("multiselect",o).data("mimetype",r).data("allowDirectoryChooser",c.allowDirectoryChooser),"function"==typeof c.filter&&u.$filePicker.data("filter",c.filter),void 0===i&&(i=!1),void 0===o&&(o=!1),u.$filePicker.find("#picker-view-toggle").remove(),u.$filePicker.find("#picker-filestable").removeClass("view-grid"),l()("body").append(u.$filePicker),u.$showGridView=l()("input#picker-showgridview"),u.$showGridView.on("change",p.default.bind(u._onGridviewChange,u)),u._getGridSettings();var m=u.$filePicker.find(".actions.creatable .button-add");a!==u.FILEPICKER_TYPE_CHOOSE||c.allowDirectoryChooser||m.hide(),m.on("focus",(function(){u.$filePicker.ocdialog("setEnterCallback",(function(){event.stopImmediatePropagation(),event.preventDefault(),m.click()}))})),m.on("blur",(function(){u.$filePicker.ocdialog("unsetEnterCallback")})),Ut.registerMenu(m,u.$filePicker.find(".menu"),(function(){v.tooltip("hide"),v.focus(),u.$filePicker.ocdialog("setEnterCallback",(function(){event.stopImmediatePropagation(),event.preventDefault(),u.$filePicker.submit()}));var t=v.val(),e=t.lastIndexOf(".");-1===e&&(e=t.length),v.selectRange(0,e)}));var g=u.$filePicker.find(".filenameform"),v=g.find("input[type='text']");g.find("input[type='submit']").on("click",(function(t){t.stopImmediatePropagation(),t.preventDefault(),g.submit()}));g.on("submit",(function(e){if(e.stopPropagation(),e.preventDefault(),function(){var e=v.val();try{if(function(e){var n=e.trim();if("."===n||".."===n)throw t("files",'"{name}" is an invalid file name.',{name:e});if(0===n.length)throw t("files","File name cannot be empty.");if(-1!==n.indexOf("/"))throw t("files",'"/" is not allowed inside a file name.');if(n.match(Ut.config.blacklist_files_regex))throw t("files",'"{name}" is not an allowed filetype',{name:e});return!0}(e)){if(u.filelist.find((function(t){return t.name===this}),e))throw t("files","{newName} already exists",{newName:e},void 0,{escape:!1});return!0}}catch(t){v.attr("title",t),v.tooltip({placement:"right",trigger:"manual",container:".newFolderMenu"}),v.tooltip("_fixTitle"),v.tooltip("show"),v.addClass("error")}return!1}()){var n=v.val();u.filepicker.filesClient.createDirectory(u.$filePicker.data("path")+"/"+n).always((function(t){u._fillFilePicker(u.$filePicker.data("path")+"/"+n)})),Ut.hideMenus(),u.$filePicker.ocdialog("unsetEnterCallback"),u.$filePicker.click(),v.val(f)}})),v.keypress((function(t){13!==t.keyCode&&13!==t.which||(t.stopImmediatePropagation(),t.preventDefault(),g.submit())})),v.on("input",(function(t){v.tooltip("hide")})),u.$filePicker.ready((function(){u.$fileListHeader=u.$filePicker.find(".filelist thead tr"),u.$filelist=u.$filePicker.find(".filelist tbody"),u.$filelistContainer=u.$filePicker.find(".filelist-container"),u.$dirTree=u.$filePicker.find(".dirtree"),u.$dirTree.on("click","div:not(:last-child)",u,(function(t){u._handleTreeListSelect(t,a)})),u.$filelist.on("click","tr",(function(t){u._handlePickerClick(t,l()(this),a)})),u.$fileListHeader.on("click","a",(function(t){var e=u.$filePicker.data("path");u.filepicker.sortField=l()(t.currentTarget).data("sort"),u.filepicker.sortOrder="asc"===u.filepicker.sortOrder?"desc":"asc",u._fillFilePicker(e)})),u._fillFilePicker(s)}));var w=function(t){if(void 0!==n){var e;if(!0===o)e=[],u.$filelist.find("tr.filepicker_element_selected").each((function(t,n){e.push(u.$filePicker.data("path")+"/"+l()(n).data("entryname"))}));else{e=u.$filePicker.data("path");var r=u.$filelist.find("tr.filepicker_element_selected").data("entryname");r&&(e+="/"+r)}n(e,t),u.$filePicker.ocdialog("close")}},y=[];a===J.FILEPICKER_TYPE_CHOOSE?y.push({text:t("core","Choose"),click:function(){w(J.FILEPICKER_TYPE_CHOOSE)},defaultButton:!0}):a===J.FILEPICKER_TYPE_CUSTOM?c.buttons.forEach((function(t){y.push({text:t.text,click:function(){w(t.type)},defaultButton:t.defaultButton})})):(a!==J.FILEPICKER_TYPE_COPY&&a!==J.FILEPICKER_TYPE_COPY_MOVE||y.push({text:t("core","Copy"),click:function(){w(J.FILEPICKER_TYPE_COPY)},defaultButton:!1}),a!==J.FILEPICKER_TYPE_MOVE&&a!==J.FILEPICKER_TYPE_COPY_MOVE||y.push({text:t("core","Move"),click:function(){w(J.FILEPICKER_TYPE_MOVE)},defaultButton:!0})),u.$filePicker.ocdialog({closeOnEscape:!0,width:600,height:500,modal:i,buttons:y,style:{buttons:"aside"},close:function(){try{l()(this).ocdialog("destroy").remove()}catch(t){}u.$filePicker=null}});var b=u.$filePicker.closest(".oc-dialog").find(".primary");-1!==u.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||u.$filePicker.data("allowDirectoryChooser")?b.prop("disabled",!1):b.prop("disabled",!0)})).fail((function(e,n){u.filepicker.loading=!1,0!==e&&alert(t("core","Error loading file picker template: {error}",{error:n}))}))}},message:function(e,n,o,r,i,a,s){return l().when(this._getMessageTemplate()).then((function(c){var u="oc-dialog-"+J.dialogsCounter+"-content",d="#"+u,p=c.octemplate({dialog_name:u,title:n,message:e,type:o},s?{escapeFunction:""}:{});void 0===a&&(a=!1),l()("body").append(p);var f=[];switch(r){case J.YES_NO_BUTTONS:f=[{text:t("core","No"),click:function(){void 0!==i&&i(!1),l()(d).ocdialog("close")}},{text:t("core","Yes"),click:function(){void 0!==i&&i(!0),l()(d).ocdialog("close")},defaultButton:!0}];break;case J.OK_BUTTON:f[0]={text:t("core","OK"),click:function(){l()(d).ocdialog("close"),void 0!==i&&i()},defaultButton:!0};break;default:"object"===G(r)&&r.type===J.YES_NO_BUTTONS&&(f=[{text:r.cancel||t("core","No"),click:function(){void 0!==i&&i(!1),l()(d).ocdialog("close")}},{text:r.confirm||t("core","Yes"),click:function(){void 0!==i&&i(!0),l()(d).ocdialog("close")},defaultButton:!0,classes:r.confirmClasses}])}l()(d).ocdialog({closeOnEscape:!0,closeCallback:function(){i&&i(!1)},modal:a,buttons:f}),J.dialogsCounter++})).fail((function(o,r){0===o?alert(n+": "+e):alert(t("core","Error loading message template: {error}",{error:r}))}))},_fileexistsshown:!1,fileexists:function(e,o,r,i){var a=this,s=new(l().Deferred),c=function(t,e,n,o,r){o=Math.round(o),r=Math.round(r);for(var i=t.getContext("2d").getImageData(0,0,e,n),a=t.getContext("2d").getImageData(0,0,o,r),s=i.data,l=a.data,c=e/o,u=n/r,d=Math.ceil(c/2),p=Math.ceil(u/2),f=0;f<r;f++)for(var h=0;h<o;h++){for(var m=4*(h+f*o),g=0,v=0,w=0,y=0,b=0,_=0,P=0,C=(f+.5)*u,k=Math.floor(f*u);k<(f+1)*u;k++)for(var x=Math.abs(C-(k+.5))/p,T=(h+.5)*c,O=x*x,A=Math.floor(h*c);A<(h+1)*c;A++){var S=Math.abs(T-(A+.5))/d,E=Math.sqrt(O+S*S);E>=-1&&E<=1&&(g=2*E*E*E-3*E*E+1)>0&&(P+=g*s[3+(S=4*(A+k*e))],w+=g,s[S+3]<255&&(g=g*s[S+3]/250),y+=g*s[S],b+=g*s[S+1],_+=g*s[S+2],v+=g)}l[m]=y/v,l[m+1]=b/v,l[m+2]=_/v,l[m+3]=P/w}t.getContext("2d").clearRect(0,0,Math.max(e,o),Math.max(n,r)),t.width=o,t.height=r,t.getContext("2d").putImageData(a,0,0)},u=function(n,o,r){var i=n.find(".template").clone().removeClass("template").addClass("conflict"),a=i.find(".original"),s=i.find(".replacement");i.data("data",e),i.find(".filename").text(o.name),a.find(".size").text(Ut.Util.humanFileSize(o.size)),a.find(".mtime").text(Ut.Util.formatDate(o.mtime)),r.size&&r.lastModified&&(s.find(".size").text(Ut.Util.humanFileSize(r.size)),s.find(".mtime").text(Ut.Util.formatDate(r.lastModified)));var u=o.directory+"/"+o.name,d={file:u,x:96,y:96,c:o.etag,forceIcon:0},p=Files.generatePreviewUrl(d);p=p.replace(/'/g,"%27"),a.find(".icon").css({"background-image":"url('"+p+"')"}),function(t){var e=new(l().Deferred),n=t.type&&t.type.split("/").shift();if(window.FileReader&&"image"===n){var o=new FileReader;o.onload=function(t){var n=new Blob([t.target.result]);window.URL=window.URL||window.webkitURL;var o=window.URL.createObjectURL(n),r=new Image;r.src=o,r.onload=function(){var t,n,o,i,a,s,l,u=(t=r,a=document.createElement("canvas"),s=t.width,l=t.height,s>l?(o=0,n=(s-l)/2):(o=(l-s)/2,n=0),i=Math.min(s,l),a.width=i,a.height=i,a.getContext("2d").drawImage(t,n,o,i,i,0,0,i,i),c(a,i,i,96,96),a.toDataURL("image/png",.7));e.resolve(u)}},o.readAsArrayBuffer(t)}else e.reject();return e}(r).then((function(t){s.find(".icon").css("background-image","url("+t+")")}),(function(){u=Ut.MimeType.getIconUrl(r.type),s.find(".icon").css("background-image","url("+u+")")}));var f=n.find(".conflict").length;a.find("input:checkbox").attr("id","checkbox_original_"+f),s.find("input:checkbox").attr("id","checkbox_replacement_"+f),n.append(i),r.lastModified>o.mtime?s.find(".mtime").css("font-weight","bold"):r.lastModified<o.mtime&&a.find(".mtime").css("font-weight","bold"),r.size&&r.size>o.size?s.find(".size").css("font-weight","bold"):r.size&&r.size<o.size&&a.find(".size").css("font-weight","bold"),"readonly"===o.status&&(a.addClass("readonly").find('input[type="checkbox"]').prop("checked",!0).prop("disabled",!0),a.find(".message").text(t("core","read-only")))},d="oc-dialog-fileexists-content",p="#"+d;if(this._fileexistsshown){var f=l()(p+" .conflicts");u(f,o,r);var h=l()(p+" .conflict").length,m=n("core","{count} file conflict","{count} file conflicts",h,{count:h});l()(p).parent().children(".oc-dialog-title").text(m),l()(window).trigger("resize"),s.resolve()}else this._fileexistsshown=!0,l().when(this._getFileExistsTemplate()).then((function(n){var c=t("core","One file conflict"),f=n.octemplate({dialog_name:d,title:c,type:"fileexists",allnewfiles:t("core","New Files"),allexistingfiles:t("core","Already existing files"),why:t("core","Which files do you want to keep?"),what:t("core","If you select both versions, the copied file will have a number added to its name.")});if(l()("body").append(f),o&&r){var h=f.find(".conflicts");u(h,o,r)}var m=[{text:t("core","Cancel"),classes:"cancel",click:function(){void 0!==i.onCancel&&i.onCancel(e),l()(p).ocdialog("close")}},{text:t("core","Continue"),classes:"continue",click:function(){void 0!==i.onContinue&&i.onContinue(l()(p+" .conflict")),l()(p).ocdialog("close")}}];l()(p).ocdialog({width:500,closeOnEscape:!0,modal:!0,buttons:m,closeButton:null,close:function(){a._fileexistsshown=!1;try{l()(this).ocdialog("destroy").remove()}catch(t){}}}),l()(p).css("height","auto");var g=f.closest(".oc-dialog").find("button.continue");function v(){var t=f.find(".conflicts .checkbox:checked").length;g.prop("disabled",0===t)}g.prop("disabled",!0),l()(p).find(".allnewfiles").on("click",(function(){l()(p).find('.conflict .replacement input[type="checkbox"]').prop("checked",l()(this).prop("checked"))})),l()(p).find(".allexistingfiles").on("click",(function(){l()(p).find('.conflict .original:not(.readonly) input[type="checkbox"]').prop("checked",l()(this).prop("checked"))})),l()(p).find(".conflicts").on("click",".replacement,.original:not(.readonly)",(function(){var t=l()(this).find('input[type="checkbox"]');t.prop("checked",!t.prop("checked"))})),l()(p).find(".conflicts").on("click",'.replacement input[type="checkbox"],.original:not(.readonly) input[type="checkbox"]',(function(){var t=l()(this);t.prop("checked",!t.prop("checked"))})),l()(p).on("click",".replacement,.allnewfiles",(function(){var e=l()(p).find('.conflict .replacement input[type="checkbox"]:checked').length;e===l()(p+" .conflict").length?(l()(p).find(".allnewfiles").prop("checked",!0),l()(p).find(".allnewfiles + .count").text(t("core","(all selected)"))):e>0?(l()(p).find(".allnewfiles").prop("checked",!1),l()(p).find(".allnewfiles + .count").text(t("core","({count} selected)",{count:e}))):(l()(p).find(".allnewfiles").prop("checked",!1),l()(p).find(".allnewfiles + .count").text("")),v()})),l()(p).on("click",".original,.allexistingfiles",(function(){var e=l()(p).find('.conflict .original input[type="checkbox"]:checked').length;e===l()(p+" .conflict").length?(l()(p).find(".allexistingfiles").prop("checked",!0),l()(p).find(".allexistingfiles + .count").text(t("core","(all selected)"))):e>0?(l()(p).find(".allexistingfiles").prop("checked",!1),l()(p).find(".allexistingfiles + .count").text(t("core","({count} selected)",{count:e}))):(l()(p).find(".allexistingfiles").prop("checked",!1),l()(p).find(".allexistingfiles + .count").text("")),v()})),s.resolve()})).fail((function(){s.reject(),alert(t("core","Error loading file exists template"))}));return s.promise()},_getGridSettings:function(){var t=this;l().get(Ut.generateUrl("/apps/files/api/v1/showgridview"),(function(e){t.$showGridView.get(0).checked=e.gridview,t.$showGridView.next("#picker-view-toggle").removeClass("icon-toggle-filelist icon-toggle-pictures").addClass(e.gridview?"icon-toggle-filelist":"icon-toggle-pictures"),l()(".list-container").toggleClass("view-grid",e.gridview)}))},_onGridviewChange:function(){var t=this.$showGridView.is(":checked");Ut.currentUser&&l().post(Ut.generateUrl("/apps/files/api/v1/showgridview"),{show:t}),this.$showGridView.next("#picker-view-toggle").removeClass("icon-toggle-filelist icon-toggle-pictures").addClass(t?"icon-toggle-filelist":"icon-toggle-pictures"),l()(".list-container").toggleClass("view-grid",t)},_getFilePickerTemplate:function(){var t=l().Deferred();if(this.$filePickerTemplate)t.resolve(this.$filePickerTemplate);else{var e=this;l().get(Ut.filePath("core","templates","filepicker.html"),(function(n){e.$filePickerTemplate=l()(n),e.$listTmpl=e.$filePickerTemplate.find(".filelist tbody tr:first-child").detach(),t.resolve(e.$filePickerTemplate)})).fail((function(e,n,o){t.reject(e.status,o)}))}return t.promise()},_getMessageTemplate:function(){var t=l().Deferred();if(this.$messageTemplate)t.resolve(this.$messageTemplate);else{var e=this;l().get(Ut.filePath("core","templates","message.html"),(function(n){e.$messageTemplate=l()(n),t.resolve(e.$messageTemplate)})).fail((function(e,n,o){t.reject(e.status,o)}))}return t.promise()},_getFileExistsTemplate:function(){var t=l().Deferred();if(this.$fileexistsTemplate)t.resolve(this.$fileexistsTemplate);else{var e=this;l().get(Ut.filePath("files","templates","fileexists.html"),(function(n){e.$fileexistsTemplate=l()(n),t.resolve(e.$fileexistsTemplate)})).fail((function(){t.reject()}))}return t.promise()},_getFileList:function(t,e){return"string"==typeof e&&(e=[e]),l().getJSON(Ut.filePath("files","ajax","list.php"),{dir:t,mimetypes:JSON.stringify(e)})},_fillFilePicker:function(e){var n=this;this.$filelist.empty(),this.$filePicker.find(".emptycontent").hide(),this.$filelistContainer.addClass("icon-loading"),this.$filePicker.data("path",e);var o=this.$filePicker.data("mimetype"),r=this.$filePicker.data("filter");"string"==typeof o&&(o=[o]),n.$fileListHeader.find(".sort-indicator").addClass("hidden").removeClass("icon-triangle-n").removeClass("icon-triangle-s"),n.$fileListHeader.find("[data-sort="+n.filepicker.sortField+"] .sort-indicator").removeClass("hidden"),"asc"===n.filepicker.sortOrder?n.$fileListHeader.find("[data-sort="+n.filepicker.sortField+"] .sort-indicator").addClass("icon-triangle-n"):n.$fileListHeader.find("[data-sort="+n.filepicker.sortField+"] .sort-indicator").addClass("icon-triangle-s"),n.filepicker.filesClient.getFolderContents(e).then((function(i,a){n.filelist=a,o&&o.length>0&&-1===o.indexOf("*")&&(a=a.filter((function(t){return"dir"===t.type||-1!==o.indexOf(t.mimetype)}))),r&&(a=a.filter(r));var s=document.getElementById("showHiddenFiles");null===s||"1"===s.value||(a=a.filter((function(t){return!t.name.startsWith(".")})));var c={name:function(t,e){return"dir"===t.type&&"dir"!==e.type?-1:"dir"!==t.type&&"dir"===e.type?1:Ut.Util.naturalSortCompare(t.name,e.name)},size:function(t,e){return t.size-e.size},mtime:function(t,e){return t.mtime-e.mtime}},u=c[n.filepicker.sortField]||c.name;a=a.sort((function(t,e){var o=function(t){return t.tags&&t.tags.indexOf(Ut.TAG_FAVORITE)>=0};return o(t)&&!o(e)?-1:!o(t)&&o(e)?1:"asc"===n.filepicker.sortOrder?u(t,e):-u(t,e)})),n._fillSlug(),0===a.length?(n.$filePicker.find(".emptycontent").show(),n.$fileListHeader.hide()):(n.$filePicker.find(".emptycontent").hide(),n.$fileListHeader.show()),n.$filelist.empty(),l().each(a,(function(o,r){var i,a;if(r.icon=Ut.MimeType.getIconUrl(r.mimetype),void 0!==r.size&&r.size>=0?(i=Ut.Util.humanFileSize(parseInt(r.size,10),!0),a=Math.round(160-Math.pow(r.size/1048576,2))):(i=t("files","Pending"),a=80),r.name.length>=10)var s=Math.min(Math.floor(r.name.length/2),10),c=r.name.substr(0,r.name.length-s),u=r.name.substr(r.name.length-s);else c=r.name,u="";var d=n.$listTmpl.octemplate({type:r.type,dir:e,filename:r.name,filename1:c,filename2:u,date:Ut.Util.relativeModifiedDate(r.mtime),size:i,sizeColor:a,icon:r.icon});if("file"===r.type){var p={file:e+"/"+r.name,x:100,y:100},f=new Image,h=Ut.generateUrl("/core/preview.png?")+l().param(p);f.onload=function(){f.width>5&&d.find("td.filename").attr("style","background-image:url("+h+")")},f.src=h}n.$filelist.append(d)})),n.$filelistContainer.removeClass("icon-loading")}))},_fillSlug:function(){var t=this.$dirTree.find(".actions.creatable").detach();this.$dirTree.empty();var e=this;e.$dirTree.append(t);var n=this.$filePicker.data("path"),o=l()('<div data-dir="{dir}"><a>{name}</a></div>').addClass("crumb");if(n){var r=n.split("/");l().each(r,(function(t,n){if(""===(n=r.pop()))return!1;e.$dirTree.prepend(o.octemplate({dir:r.join("/")+"/"+n,name:n}))}))}o.octemplate({dir:"",name:""},{escapeFunction:null}).prependTo(this.$dirTree)},_handleTreeListSelect:function(t,e){var n=t.data,o=l()(t.target).closest(".crumb").data("dir");n._fillFilePicker(o);var r=t.target.closest(".oc-dialog"),i=l()(".primary",r);this._changeButtonsText(e,o.split(/[/]+/).pop()),-1!==this.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||this.$filePicker.data("allowDirectoryChooser")?i.prop("disabled",!1):i.prop("disabled",!0)},_handlePickerClick:function(t,e,n){var o=this.$filePicker.closest(".oc-dialog").find(".primary");"file"===e.data("type")?(!0===this.$filePicker.data("multiselect")&&t.ctrlKey||this.$filelist.find(".filepicker_element_selected").removeClass("filepicker_element_selected"),e.toggleClass("filepicker_element_selected"),o.prop("disabled",!1)):"dir"===e.data("type")&&(this._fillFilePicker(this.$filePicker.data("path")+"/"+e.data("entryname")),this._changeButtonsText(n,e.data("entryname")),-1!==this.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||this.$filePicker.data("allowDirectoryChooser")?o.prop("disabled",!1):o.prop("disabled",!0))},_changeButtonsText:function(e,n){var o=""===n?t("core","Copy"):t("core","Copy to {folder}",{folder:n}),r=""===n?t("core","Move"):t("core","Move to {folder}",{folder:n}),i=l()(".oc-dialog-buttonrow button");switch(e){case this.FILEPICKER_TYPE_CHOOSE:case this.FILEPICKER_TYPE_CUSTOM:break;case this.FILEPICKER_TYPE_COPY:i.text(o);break;case this.FILEPICKER_TYPE_MOVE:i.text(r);break;case this.FILEPICKER_TYPE_COPY_MOVE:i.eq(0).text(o),i.eq(1).text(r)}}},Q=J,X=(V=document,Z=a.emit,W=V.getElementsByTagName("head")[0].getAttribute("data-requesttoken"),{getToken:function(){return W},setToken:function(t){Z("csrf-token-update",{token:W=t})}}).getToken,tt=function t(e,n){var o,r,i="";if(this.typelessListeners=[],this.closed=!1,this.listeners={},n)for(o in n)i+=o+"="+encodeURIComponent(n[o])+"&";if(i+="requesttoken="+encodeURIComponent(X()),this.useFallBack||"undefined"==typeof EventSource){var a="oc_eventsource_iframe_"+t.iframeCount;t.fallBackSources[t.iframeCount]=this,this.iframe=l()("<iframe></iframe>"),this.iframe.attr("id",a),this.iframe.hide(),r="&",-1===e.indexOf("?")&&(r="?"),this.iframe.attr("src",e+r+"fallback=true&fallback_id="+t.iframeCount+"&"+i),l()("body").append(this.iframe),this.useFallBack=!0,t.iframeCount++}else r="&",-1===e.indexOf("?")&&(r="?"),this.source=new EventSource(e+r+i),this.source.onmessage=function(t){for(var e=0;e<this.typelessListeners.length;e++)this.typelessListeners[e](JSON.parse(t.data))}.bind(this);this.listen("__internal__",function(t){"close"===t&&this.close()}.bind(this))};tt.fallBackSources=[],tt.iframeCount=0,tt.fallBackCallBack=function(t,e,n){tt.fallBackSources[t].fallBackCallBack(e,n)},tt.prototype={typelessListeners:[],iframe:null,listeners:{},useFallBack:!1,fallBackCallBack:function(t,e){var n;if(!this.closed)if(t){if(void 0!==this.listeners.done)for(n=0;n<this.listeners[t].length;n++)this.listeners[t][n](e)}else for(n=0;n<this.typelessListeners.length;n++)this.typelessListeners[n](e)},lastLength:0,listen:function(t,e){e&&e.call&&(t?this.useFallBack?(this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push(e)):this.source.addEventListener(t,(function(t){void 0!==t.data?e(JSON.parse(t.data)):e("")}),!1):this.typelessListeners.push(e))},close:function(){this.closed=!0,void 0!==this.source&&this.source.close()}};var et=tt,nt=r(42515),ot=null,rt=function(t){if(ot){var e=ot;ot.trigger(new(l().Event)("beforeHide")),ot.slideUp(50,(function(){e.trigger(new(l().Event)("afterHide")),t&&t.apply(this,arguments)}))}l()(".menutoggle").attr("aria-expanded",!1),l()(".openedMenu").removeClass("openedMenu"),ot=null},it=!!window._oc_isadmin,at=r(27856),st=r.n(at),lt=r(86834),ct=r.n(lt),ut=r(46488),dt=r.n(ut),pt=r(95573),ft=r.n(pt);window._oc_l10n_registry_translations=window._oc_l10n_registry_translations||{},window._oc_l10n_registry_plural_functions=window._oc_l10n_registry_plural_functions||{};var ht=function(t){return void 0!==window._oc_l10n_registry_translations[t]&&void 0!==window._oc_l10n_registry_plural_functions[t]},mt=function(t){return{translations:window._oc_l10n_registry_translations[t]||{},pluralFunction:window._oc_l10n_registry_plural_functions[t]}};function gt(t){return gt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},gt(t)}var vt={load:function(t,e){if(ht(t)||"en"===Ut.getLocale()){var n=l().Deferred(),o=n.promise();return o.then(e),n.resolve(),o}var r=this,i=(0,c.generateFilePath)(t,"l10n",Ut.getLocale()+".json");return l().get(i).then((function(e){e.translations&&r.register(t,e.translations,e.pluralForm)})).then(e)},register:function(t,e){var n,o,r;n=t,o=e,r=this._getPlural,ht(n)?function(t,e,n){window._oc_l10n_registry_translations[t]=Object.assign(window._oc_l10n_registry_translations[t],e),window._oc_l10n_registry_plural_functions[t]=n}(n,o,r):function(t,e,n){window._oc_l10n_registry_translations[t]=e,window._oc_l10n_registry_plural_functions[t]=n}(n,o,r)},_unregister:function(t){delete window._oc_l10n_registry_translations[t],delete window._oc_l10n_registry_plural_functions[t]},translate:function(t,e,n,o,r){var i=r||{};p.default.defaults(i,{escape:!0,sanitize:!0});var a=i.sanitize?st().sanitize:dt(),s=i.escape?ft():dt(),l=e,c=mt(t).translations[e];return void 0!==c&&(l=c),"object"===gt(n)||void 0!==o?a(function(t,e,n){return t.replace(/%n/g,n).replace(/{([^{}]*)}/g,(function(t,n){var o=e[n];return a("string"==typeof o||"number"==typeof o?s(o):t)}))}(l,n,o)):a(l)},translatePlural:function(t,e,n,o,r,i){var a="_"+e+"_::_"+n+"_",s=mt(t),c=s.translations[a];if(void 0!==c){var u=c;if(l().isArray(u)){var d=s.pluralFunction(o);return this.translate(t,u[d],r,o,i)}}return 1===o?this.translate(t,e,r,o,i):this.translate(t,n,r,o,i)},_getPlural:function(t){var e=Ut.getLanguage();if("pt-BR"===e&&(e="xbr"),void 0===e||""===e)return 1===t?0:1;switch(e.length>3&&(e=e.substring(0,e.lastIndexOf("-"))),e){case"az":case"bo":case"dz":case"id":case"ja":case"jv":case"ka":case"km":case"kn":case"ko":case"ms":case"th":case"tr":case"vi":case"zh":default:return 0;case"af":case"bn":case"bg":case"ca":case"da":case"de":case"el":case"en":case"eo":case"es":case"et":case"eu":case"fa":case"fi":case"fo":case"fur":case"fy":case"gl":case"gu":case"ha":case"he":case"hu":case"is":case"it":case"ku":case"lb":case"ml":case"mn":case"mr":case"nah":case"nb":case"ne":case"nl":case"nn":case"no":case"oc":case"om":case"or":case"pa":case"pap":case"ps":case"pt":case"so":case"sq":case"sv":case"sw":case"ta":case"te":case"tk":case"ur":case"zu":return 1===t?0:1;case"am":case"bh":case"fil":case"fr":case"gun":case"hi":case"hy":case"ln":case"mg":case"nso":case"xbr":case"ti":case"wa":return 0===t||1===t?0:1;case"be":case"bs":case"hr":case"ru":case"sh":case"sr":case"uk":return t%10==1&&t%100!=11?0:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?1:2;case"cs":case"sk":return 1===t?0:t>=2&&t<=4?1:2;case"ga":return 1===t?0:2===t?1:2;case"lt":return t%10==1&&t%100!=11?0:t%10>=2&&(t%100<10||t%100>=20)?1:2;case"sl":return t%100==1?0:t%100==2?1:t%100==3||t%100==4?2:3;case"mk":return t%10==1?0:1;case"mt":return 1===t?0:0===t||t%100>1&&t%100<11?1:t%100>10&&t%100<20?2:3;case"lv":return 0===t?0:t%10==1&&t%100!=11?1:2;case"pl":return 1===t?0:t%10>=2&&t%10<=4&&(t%100<12||t%100>14)?1:2;case"cy":return 1===t?0:2===t?1:8===t||11===t?2:3;case"ro":return 1===t?0:0===t||t%100>0&&t%100<20?1:2;case"ar":return 0===t?0:1===t?1:2===t?2:t%100>=3&&t%100<=10?3:t%100>=11&&t%100<=99?4:5}}},wt=vt;ct().registerHelper("t",(function(t,e){return vt.translate(t,e)}));var yt=r(9944),bt={startSaving:function(e){this.startAction(e,t("core","Saving …"))},startAction:function(t,e){l()(t).text(e).removeClass("success").removeClass("error").stop(!0,!0).show()},finishedSaving:function(t,e){this.finishedAction(t,e)},finishedAction:function(t,e){"success"===e.status?this.finishedSuccess(t,e.data.message):this.finishedError(t,e.data.message)},finishedSuccess:function(t,e){l()(t).text(e).addClass("success").removeClass("error").stop(!0,!0).delay(3e3).fadeOut(900).show()},finishedError:function(t,e){l()(t).text(e).addClass("error").removeClass("success").show()}},_t=r(30381),Pt=r.n(_t),Ct={callback:null,pageLoadTime:null,init:function(){l()(".password-confirm-required").on("click",p.default.bind(this.requirePasswordConfirmation,this)),this.pageLoadTime=Pt().now()},requiresPasswordConfirmation:function(){var t=this.pageLoadTime-1e3*window.nc_pageLoad,e=Pt().now()-(t+1e3*window.nc_lastLogin);return window.backendAllowsPasswordConfirmation&&e>18e5},requirePasswordConfirmation:function(e,n,o){n=void 0!==n?n:{};var r={title:t("core","Authentication required"),text:t("core","This action requires you to confirm your password"),confirm:t("core","Confirm"),label:t("core","Password"),error:""},i=p.default.extend(r,n),a=this;this.requiresPasswordConfirmation()&&Ut.dialogs.prompt(i.text,i.title,(function(t,e){t&&""!==e?a._confirmPassword(e,i):p.default.isFunction(o)&&o()}),!0,i.label,!0).then((function(){var t=l()(".oc-dialog:visible");if(t.find(".ui-icon").remove(),t.addClass("password-confirmation"),""!==i.error){var e=l()("<p></p>").addClass("msg warning").text(i.error);t.find(".oc-dialog-content").append(e)}t.find(".oc-dialog-buttonrow").addClass("aside");var n=t.find("button");n.eq(0).hide(),n.eq(1).text(i.confirm)})),this.callback=e},_confirmPassword:function(e,n){var o=this;l().ajax({url:(0,c.generateUrl)("/login/confirm"),data:{password:e},type:"POST",success:function(t){window.nc_lastLogin=t.lastLogin,p.default.isFunction(o.callback)&&o.callback()},error:function(){n.error=t("core","Failed to authenticate, try again"),Ut.PasswordConfirmation.requirePasswordConfirmation(o.callback,n)}})}},kt=window._theme||{},xt={_handlers:[],_pushState:function(t,e,n){var o;if(o="string"==typeof t?t:Ut.buildQueryString(t),window.history.pushState){if(e=e||location.pathname+"?"+o,navigator.userAgent.toLowerCase().indexOf("firefox")>-1&&parseInt(navigator.userAgent.split("/").pop())<51)for(var r,i=document.querySelectorAll('[fill^="url(#"], [stroke^="url(#"], [filter^="url(#invert"]'),a=0,s=i.length;a<s;a++)(r=i[a]).style.fill=r.style.fill,r.style.stroke=r.style.stroke,r.removeAttribute("filter"),r.setAttribute("filter","url(#invert)");n?window.history.replaceState(t,"",e):window.history.pushState(t,"",e)}else window.location.hash="?"+o,this._cancelPop=!0},pushState:function(t,e){this._pushState(t,e,!1)},replaceState:function(t,e){this._pushState(t,e,!0)},addOnPopStateHandler:function(t){this._handlers.push(t)},_parseHashQuery:function(){var t=window.location.hash,e=t.indexOf("?");return e>=0?t.substr(e+1):t.length?t.substr(1):""},_decodeQuery:function(t){return t.replace(/\+/g," ")},parseUrlQuery:function(){var t,e=this._parseHashQuery();return e&&(t=Ut.parseQueryString(this._decodeQuery(e))),(t=p.default.extend(t||{},Ut.parseQueryString(this._decodeQuery(location.search))))||{}},_onPopState:function(t){var e;if(this._cancelPop)this._cancelPop=!1;else if(this._handlers.length){e=t&&t.state,p.default.isString(e)?e=Ut.parseQueryString(e):e||(e=this.parseUrlQuery()||{});for(var n=0;n<this._handlers.length;n++)this._handlers[n](e)}}};function Tt(t){for(var e,n=[],o=0,r=-1,i=0;o<t.length;){e=t.charAt(o);var a=!i&&"."===e||e>="0"&&e<="9";a!==i&&(n[++r]="",i=a),n[r]+=e,o++}return n}var Ot={History:xt,humanFileSize:r(3378).s,computerFileSize:function(t){if("string"!=typeof t)return null;var e=t.toLowerCase().trim(),n=null,o=e.match(/^[\s+]?([0-9]*)(\.([0-9]+))?( +)?([kmgtp]?b?)$/i);return null===o?null:(n=parseFloat(e),isFinite(n)?(o[5]&&(n*={b:1,k:1024,kb:1024,mb:1048576,m:1048576,gb:1073741824,g:1073741824,tb:1099511627776,t:1099511627776,pb:0x4000000000000,p:0x4000000000000}[o[5]]),n=Math.round(n)):null)},formatDate:function(t,e){return void 0===window.TESTING&&console.warn("OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment"),e=e||"LLL",Pt()(t).format(e)},relativeModifiedDate:function(e){void 0===window.TESTING&&console.warn("OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment");var n=Pt()().diff(Pt()(e));return n>=0&&n<45e3?t("core","seconds ago"):Pt()(e).fromNow()},getScrollBarWidth:function(){if(this._scrollBarWidth)return this._scrollBarWidth;var t=document.createElement("p");t.style.width="100%",t.style.height="200px";var e=document.createElement("div");e.style.position="absolute",e.style.top="0px",e.style.left="0px",e.style.visibility="hidden",e.style.width="200px",e.style.height="150px",e.style.overflow="hidden",e.appendChild(t),document.body.appendChild(e);var n=t.offsetWidth;e.style.overflow="scroll";var o=t.offsetWidth;return n===o&&(o=e.clientWidth),document.body.removeChild(e),this._scrollBarWidth=n-o,this._scrollBarWidth},stripTime:function(t){return new Date(t.getFullYear(),t.getMonth(),t.getDate())},naturalSortCompare:function(t,e){var n,o=Tt(t),r=Tt(e);for(n=0;o[n]&&r[n];n++)if(o[n]!==r[n]){var i=Number(o[n]),a=Number(r[n]);return i==o[n]&&a==r[n]?i-a:o[n].localeCompare(r[n],Ut.getLanguage())}return o.length-r.length},waitFor:function(t,e){!function n(){!0!==t()&&setTimeout(n,e)}()},isCookieSetToValue:function(t,e){for(var n=document.cookie.split(";"),o=0;o<n.length;o++){var r=n[o].split("=");if(r[0].trim()===t&&r[1].trim()===e)return!0}return!1}},At=window._oc_debug,St=window._oc_webroot;if(void 0===St){var Et=(St=location.pathname).indexOf("/index.php/");St=-1!==Et?St.substr(0,Et):St.substr(0,St.lastIndexOf("/"))}var jt,Lt=St,Ut={coreApps:["","admin","log","core/search","core","3rdparty"],menuSpeed:50,PERMISSION_ALL:31,PERMISSION_CREATE:4,PERMISSION_DELETE:8,PERMISSION_NONE:0,PERMISSION_READ:1,PERMISSION_SHARE:16,PERMISSION_UPDATE:2,TAG_FAVORITE:"_$!<Favorite>!$_",fileIsBlacklisted:function(t){return!!t.match(U.blacklist_files_regex)},addScript:function(t,e,n){var o;console.warn("OC.addScript is deprecated, use OCP.Loader.loadScript instead");var r=(0,c.generateFilePath)(t,"js",e+".js");return u[r]?n&&n():(o=l().Deferred(),l().getScript(r,(function(){return o.resolve()})),u[r]=o),u[r]},addStyle:function(t,e){console.warn("OC.addStyle is deprecated, use OCP.Loader.loadStylesheet instead");var n=(0,c.generateFilePath)(t,"css",e+".css");-1===d.indexOf(n)&&(d.push(n),document.createStyleSheet?document.createStyleSheet(n):(e=l()('<link rel="stylesheet" type="text/css" href="'+n+'"/>'),l()("head").append(e)))},Apps:g,AppConfig:y,appConfig:w,appSettings:function(e){if(console.warn("OC.appSettings is deprecated and will be removed with Nextcloud 18"),void 0===e||void 0===e.appid)throw{name:"MissingParameter",message:"The parameter appid is missing"};var n={scriptName:"settings.php",cache:!0};l().extend(n,e);var o=l()("#appsettings");if(0===o.length)throw{name:"MissingDOMElement",message:'There has be be an element with id "appsettings" for the popup to show.'};var r=l()("#appsettings_popup");if(0===r.length&&(l()("body").prepend('<div class="popup hidden" id="appsettings_popup"></div>'),(r=l()("#appsettings_popup")).addClass(o.hasClass("topright")?"topright":"bottomleft")),r.is(":visible"))r.hide().remove();else{var i=o.hasClass("topright")?"up":"left";l().get((0,c.generateFilePath)(n.appid,"",n.scriptName),(function(e){r.html(e).ready((function(){if(r.prepend('<span class="arrow '+i+'"></span><h2>'+t("core","Settings")+'</h2><a class="close"></a>').show(),r.find(".close").bind("click",(function(){r.remove()})),void 0!==n.loadJS){var e;if(!0===n.loadJS)e="settings.js";else{if("string"!=typeof n.loadJS)throw{name:"InvalidParameter",message:'The "loadJS" parameter must be either boolean or a string.'};e=n.loadJS}n.cache&&l().ajaxSetup({cache:!0}),l().getScript((0,c.generateFilePath)(n.appid,"js",e)).fail((function(t,e,n){throw n}))}})).show()}),"html")}},appswebroots:b,Backbone:j,ContactsMenu:z,config:U,currentUser:q,dialogs:Q,EventSource:et,getCurrentUser:function(){return{uid:q,displayName:B}},isUserAdmin:function(){return it},L10N:wt,_ajaxConnectionLostHandler:m,_processAjaxError:function(t){(0!==t.status||"abort"!==t.statusText&&"timeout"!==t.statusText&&!Ut._reloadCalled)&&(p.default.contains([302,303,307,401],t.status)&&Ut.currentUser?setTimeout((function(){if(!Ut._userIsNavigatingAway&&!Ut._reloadCalled){var t=0,e=setInterval((function(){h.showUpdate(n("core","Problem loading page, reloading in %n second","Problem loading page, reloading in %n seconds",5-t)),t>=5&&(clearInterval(e),Ut.reload()),t++}),1e3);Ut._reloadCalled=!0}}),100):0===t.status&&setTimeout((function(){Ut._userIsNavigatingAway||Ut._reloadCalled||Ut._ajaxConnectionLostHandler()}),100))},registerXHRForErrorProcessing:function(t){t.addEventListener&&(t.addEventListener("load",(function(){4===t.readyState&&(t.status>=200&&t.status<300||304===t.status||l()(document).trigger(new(l().Event)("ajaxError"),t))})),t.addEventListener("error",(function(){l()(document).trigger(new(l().Event)("ajaxError"),t)})))},getCapabilities:function(){return console.warn("OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities"),(0,nt.getCapabilities)()},hideMenus:rt,registerMenu:function(t,e,n,o){e.addClass("menu");var r="A"===t.prop("tagName")||"BUTTON"===t.prop("tagName");t.on(r?"click.menu":"click.menu keyup.menu",(function(r){r.preventDefault(),r.key&&"Enter"!==r.key||(e.is(ot)?rt():(ot&&rt(),!0===o&&e.parent().addClass("openedMenu"),t.attr("aria-expanded",!0),e.slideToggle(50,n),ot=e))}))},showMenu:function(t,e,n){e.is(ot)||(rt(),ot=e,e.trigger(new(l().Event)("beforeShow")),e.show(),e.trigger(new(l().Event)("afterShow")),p.default.isFunction(n)&&n())},unregisterMenu:function(t,e){e.is(ot)&&rt(),t.off("click.menu").removeClass("menutoggle"),e.removeClass("menu")},basename:L.EZ,encodePath:L.Ec,dirname:L.XX,isSamePath:L.Mg,joinPaths:L.RQ,getHost:function(){return window.location.host},getHostName:function(){return window.location.hostname},getPort:function(){return window.location.port},getProtocol:function(){return window.location.protocol.split(":")[0]},getCanonicalLocale:yt.getCanonicalLocale,getLocale:function(){var t;return null!==(t=l()("html").data("locale"))&&void 0!==t?t:"en"},getLanguage:function(){return l()("html").prop("lang")},addTranslations:wt.load,buildQueryString:function(t){return t?l().map(t,(function(t,e){var n=encodeURIComponent(e);return null!=t&&(n+="="+encodeURIComponent(t)),n})).join("&"):""},parseQueryString:function(t){var e,n,o,r={};if(!t)return null;(e=t.indexOf("?"))>=0&&(t=t.substr(e+1));for(var i=t.replace(/\+/g,"%20").split("&"),a=0;a<i.length;a++){var s=i[a];(n=(e=s.indexOf("="))>=0?[s.substr(0,e),s.substr(e+1)]:[s]).length&&(o=decodeURIComponent(n[0]))&&(r[o]=n.length>1?decodeURIComponent(n[1]):null)}return r},msg:bt,Notification:h,PasswordConfirmation:Ct,Plugins:{_plugins:{},register:function(t,e){var n=this._plugins[t];n||(n=this._plugins[t]=[]),n.push(e)},getPlugins:function(t){return this._plugins[t]||[]},attach:function(t,e,n){for(var o=this.getPlugins(t),r=0;r<o.length;r++)o[r].attach&&o[r].attach(e,n)},detach:function(t,e,n){for(var o=this.getPlugins(t),r=0;r<o.length;r++)o[r].detach&&o[r].detach(e,n)}},theme:kt,Util:Ot,debug:At,filePath:c.generateFilePath,generateUrl:c.generateUrl,get:(jt=window,function(t){for(var e=t.split("."),n=e.pop(),o=0;o<e.length;o++)if(!(jt=jt[e[o]]))return!1;return jt[n]}),set:function(t){return function(e,n){for(var o=e.split("."),r=o.pop(),i=0;i<o.length;i++)t[o[i]]||(t[o[i]]={}),t=t[o[i]];return t[r]=n,n}}(window),getRootPath:c.getRootUrl,imagePath:c.imagePath,redirect:function(t){window.location=t},reload:function(){window.location.reload()},requestToken:X(),linkTo:c.linkTo,linkToOCS:function(t,e){return(0,c.generateOcsUrl)(t,{},{ocsVersion:e||1})+"/"},linkToRemote:c.generateRemoteUrl,linkToRemoteBase:function(t){return(0,c.getRootUrl)()+"/remote.php/"+t},webroot:Lt};(0,a.subscribe)("csrf-token-update",(function(t){OC.requestToken=t.token,console.info("OC.requestToken changed",t.token)}));var It=r(16453),Rt=r(17563),Ft=r(55586),$t=r.n(Ft),Nt={name:"LoginButton",props:{loading:{type:Boolean,required:!0},invertedColors:{type:Boolean,default:!1}}},Mt=r(51900),zt=(0,Mt.Z)(Nt,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{attrs:{id:"submit-wrapper"},on:{click:function(e){return t.$emit("click")}}},[n("input",{staticClass:"login primary",attrs:{id:"submit-form",type:"submit",title:""},domProps:{value:t.loading?t.t("core","Logging in …"):t.t("core","Log in")}}),t._v(" "),n("div",{staticClass:"submit-icon",class:{"icon-confirm-white":!t.loading,"icon-loading-small":t.loading&&t.invertedColors,"icon-loading-small-dark":t.loading&&!t.invertedColors}})])}),[],!1,null,"125b100b",null).exports,Dt={name:"LoginForm",components:{LoginButton:zt},props:{username:{type:String,default:""},redirectUrl:{type:[String,Boolean],default:!1},errors:{type:Array,default:function(){return[]}},messages:{type:Array,default:function(){return[]}},throttleDelay:{type:Number,default:0},invertedColors:{type:Boolean,default:!1},autoCompleteAllowed:{type:Boolean,default:!0},directLogin:{type:Boolean,default:!1}},data:function(){return{loading:!1,timezone:$t().determine().name(),timezoneOffset:-(new Date).getTimezoneOffset()/60,user:this.username,password:"",passwordInputType:"password"}},computed:{apacheAuthFailed:function(){return-1!==this.errors.indexOf("apacheAuthFailed")},internalException:function(){return-1!==this.errors.indexOf("internalexception")},invalidPassword:function(){return-1!==this.errors.indexOf("invalidpassword")},userDisabled:function(){return-1!==this.errors.indexOf("userdisabled")},toggleIcon:function(){return(0,c.imagePath)("core","actions/toggle.svg")},loadingIcon:function(){return(0,c.imagePath)("core","loading-dark.gif")},loginActionUrl:function(){return(0,c.generateUrl)("login")}},mounted:function(){""===this.username?this.$refs.user.focus():this.$refs.password.focus()},methods:{togglePassword:function(){"password"===this.passwordInputType?this.passwordInputType="text":this.passwordInputType="password"},updateUsername:function(){this.$emit("update:username",this.user)},submit:function(){this.loading=!0,this.$emit("submit")}}},Bt=(0,Mt.Z)(Dt,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("form",{ref:"loginForm",attrs:{method:"post",name:"login",action:t.loginActionUrl},on:{submit:t.submit}},[n("fieldset",[t.apacheAuthFailed?n("div",{staticClass:"warning"},[t._v("\n\t\t\t"+t._s(t.t("core","Server side authentication failed!"))),n("br"),t._v(" "),n("small",[t._v(t._s(t.t("core","Please contact your administrator."))+"\n\t\t\t")])]):t._e(),t._v(" "),t._l(t.messages,(function(e,o){return n("div",{key:o,staticClass:"warning"},[t._v("\n\t\t\t"+t._s(e)),n("br")])})),t._v(" "),t.internalException?n("div",{staticClass:"warning"},[t._v("\n\t\t\t"+t._s(t.t("core","An internal error occurred."))),n("br"),t._v(" "),n("small",[t._v(t._s(t.t("core","Please try again or contact your administrator."))+"\n\t\t\t")])]):t._e(),t._v(" "),n("div",{staticClass:"hidden",attrs:{id:"message"}},[n("img",{staticClass:"float-spinner",attrs:{alt:"",src:t.loadingIcon}}),t._v(" "),n("span",{attrs:{id:"messageText"}}),t._v(" "),n("div",{staticStyle:{clear:"both"}})]),t._v(" "),n("p",{staticClass:"grouptop",class:{shake:t.invalidPassword}},[n("input",{directives:[{name:"model",rawName:"v-model",value:t.user,expression:"user"}],ref:"user",attrs:{id:"user",type:"text",name:"user",autocapitalize:"none",autocorrect:"off",autocomplete:t.autoCompleteAllowed?"on":"off",placeholder:t.t("core","Username or email"),"aria-label":t.t("core","Username or email"),required:""},domProps:{value:t.user},on:{change:t.updateUsername,input:function(e){e.target.composing||(t.user=e.target.value)}}}),t._v(" "),n("label",{staticClass:"infield",attrs:{for:"user"}},[t._v(t._s(t.t("core","Username or email")))])]),t._v(" "),n("p",{staticClass:"groupbottom",class:{shake:t.invalidPassword}},[n("input",{ref:"password",staticClass:"password-with-toggle",attrs:{id:"password",type:t.passwordInputType,name:"password",autocorrect:"off",autocapitalize:"none",autocomplete:t.autoCompleteAllowed?"current-password":"off",placeholder:t.t("core","Password"),"aria-label":t.t("core","Password"),required:""}}),t._v(" "),n("label",{staticClass:"infield",attrs:{for:"password"}},[t._v(t._s(t.t("Password")))]),t._v(" "),n("a",{staticClass:"toggle-password",attrs:{href:"#"},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.togglePassword.apply(null,arguments)}}},[n("img",{attrs:{src:t.toggleIcon,alt:t.t("core","Toggle password visibility")}})])]),t._v(" "),n("LoginButton",{attrs:{loading:t.loading,"inverted-colors":t.invertedColors}}),t._v(" "),t.invalidPassword?n("p",{staticClass:"warning wrongPasswordMsg"},[t._v("\n\t\t\t"+t._s(t.t("core","Wrong username or password."))+"\n\t\t")]):t.userDisabled?n("p",{staticClass:"warning userDisabledMsg"},[t._v("\n\t\t\t"+t._s(t.t("core","User disabled"))+"\n\t\t")]):t._e(),t._v(" "),t.throttleDelay&&t.throttleDelay>5e3?n("p",{staticClass:"warning throttledMsg"},[t._v("\n\t\t\t"+t._s(t.t("core","We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds."))+"\n\t\t")]):t._e(),t._v(" "),t.redirectUrl?n("input",{attrs:{type:"hidden",name:"redirect_url"},domProps:{value:t.redirectUrl}}):t._e(),t._v(" "),n("input",{attrs:{type:"hidden",name:"timezone"},domProps:{value:t.timezone}}),t._v(" "),n("input",{attrs:{type:"hidden",name:"timezone_offset"},domProps:{value:t.timezoneOffset}}),t._v(" "),n("input",{attrs:{type:"hidden",name:"requesttoken"},domProps:{value:t.OC.requestToken}}),t._v(" "),t.directLogin?n("input",{attrs:{type:"hidden",name:"direct",value:"1"}}):t._e()],2)])}),[],!1,null,"0b3a0522",null),qt=Bt.exports,Ht=r(4820),Yt=r(85963),Kt=r(64150);function Gt(t){return Gt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Gt(t)}function Vt(t){return function(t){if(Array.isArray(t))return Zt(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return Zt(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Zt(t,e):void 0}}(t)||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 Zt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,o=new Array(e);n<e;n++)o[n]=t[n];return o}function Wt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,o)}return n}function Jt(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?Wt(Object(n),!0).forEach((function(e){Qt(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Wt(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function Qt(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function Xt(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function te(t,e){if(e&&("object"===Gt(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}function ee(t){var e="function"==typeof Map?new Map:void 0;return ee=function(t){if(null===t||(n=t,-1===Function.toString.call(n).indexOf("[native code]")))return t;var n;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,o)}function o(){return ne(t,arguments,ie(this).constructor)}return o.prototype=Object.create(t.prototype,{constructor:{value:o,enumerable:!1,writable:!0,configurable:!0}}),re(o,t)},ee(t)}function ne(t,e,n){return ne=oe()?Reflect.construct:function(t,e,n){var o=[null];o.push.apply(o,e);var r=new(Function.bind.apply(t,o));return n&&re(r,n.prototype),r},ne.apply(null,arguments)}function oe(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function re(t,e){return re=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},re(t,e)}function ie(t){return ie=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},ie(t)}var ae=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&re(t,e)}(i,t);var e,n,o,r=(e=i,n=oe(),function(){var t,o=ie(e);if(n){var r=ie(this).constructor;t=Reflect.construct(o,arguments,r)}else t=o.apply(this,arguments);return te(this,t)});function i(){return Xt(this,i),r.apply(this,arguments)}return o=i,Object.defineProperty(o,"prototype",{writable:!1}),o}(ee(Error)),se={name:"PasswordLessLoginForm",components:{LoginButton:zt,InformationIcon:Yt.Z,LockOpenIcon:Kt.Z},props:{username:{type:String,default:""},redirectUrl:{type:[String,Boolean],default:!1},invertedColors:{type:Boolean,default:!1},autoCompleteAllowed:{type:Boolean,default:!0},isHttps:{type:Boolean,default:!1},isLocalhost:{type:Boolean,default:!1},hasPublicKeyCredential:{type:Boolean,default:!1}},data:function(){return{user:this.username,loading:!1,validCredentials:!0}},methods:{authenticate:function(){var t=this;console.debug("passwordless login initiated"),this.getAuthenticationData(this.user).then((function(t){return console.debug(t),t})).then(this.sign).then(this.completeAuthentication).catch((function(e){e instanceof ae?t.validCredentials=!1:console.debug(e)}))},getAuthenticationData:function(t){var e,n,o=function(t){var e=(t=t.replace(/-/g,"+").replace(/_/g,"/")).length%4;if(e){if(1===e)throw new Error("InvalidLengthError: Input base64url string is the wrong length to determine padding");t+=new Array(5-e).join("=")}return window.atob(t)};return(e=t,n=(0,c.generateUrl)("/login/webauthn/start"),Ht.default.post(n,{loginName:e}).then((function(t){return t.data}))).then((function(t){if(console.debug("Obtained PublicKeyCredentialRequestOptions"),console.debug(t),!Object.prototype.hasOwnProperty.call(t,"allowCredentials"))throw console.debug("No credentials found."),new ae;return t.challenge=Uint8Array.from(o(t.challenge),(function(t){return t.charCodeAt(0)})),t.allowCredentials=t.allowCredentials.map((function(t){return Jt(Jt({},t),{},{id:Uint8Array.from(o(t.id),(function(t){return t.charCodeAt(0)}))})})),console.debug("Converted PublicKeyCredentialRequestOptions"),console.debug(t),t})).catch((function(t){throw console.debug("Error while obtaining data"),t}))},sign:function(t){var e=function(t){return window.btoa(String.fromCharCode.apply(String,Vt(t)))};return navigator.credentials.get({publicKey:t}).then((function(t){return console.debug(t),console.debug(new Uint8Array(t.rawId)),console.debug(e(new Uint8Array(t.rawId))),{id:t.id,type:t.type,rawId:e(new Uint8Array(t.rawId)),response:{authenticatorData:e(new Uint8Array(t.response.authenticatorData)),clientDataJSON:e(new Uint8Array(t.response.clientDataJSON)),signature:e(new Uint8Array(t.response.signature)),userHandle:t.response.userHandle?(n=new Uint8Array(t.response.userHandle),String.fromCharCode.apply(String,Vt(n))):null}};var n})).then((function(t){return console.debug(t),t})).catch((function(t){console.debug("GOT AN ERROR!"),console.debug(t)}))},completeAuthentication:function(t){console.debug("TIME TO COMPLETE");var e,n,o=this.redirectUrl;return(e=JSON.stringify(t),n=(0,c.generateUrl)("/login/webauthn/finish"),Ht.default.post(n,{data:e}).then((function(t){return t.data}))).then((function(t){console.debug("Logged in redirecting"),window.location.href=o})).catch((function(t){console.debug("GOT AN ERROR WHILE SUBMITTING CHALLENGE!"),console.debug(t)}))},submit:function(){}}},le=r(93379),ce=r.n(le),ue=r(7795),de=r.n(ue),pe=r(90569),fe=r.n(pe),he=r(3565),me=r.n(he),ge=r(19216),ve=r.n(ge),we=r(44589),ye=r.n(we),be=r(27429),_e={};_e.styleTagTransform=ye(),_e.setAttributes=me(),_e.insert=fe().bind(null,"head"),_e.domAPI=de(),_e.insertStyleElement=ve(),ce()(be.Z,_e),be.Z&&be.Z.locals&&be.Z.locals;var Pe=(0,Mt.Z)(se,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return(t.isHttps||t.isLocalhost)&&t.hasPublicKeyCredential?n("form",{ref:"loginForm",attrs:{method:"post",name:"login"},on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[n("fieldset",[n("p",{staticClass:"grouptop groupbottom"},[n("label",{staticClass:"infield",attrs:{for:"user"}},[t._v(t._s(t.t("core","Username or\temail")))]),t._v(" "),n("input",{directives:[{name:"model",rawName:"v-model",value:t.user,expression:"user"}],ref:"user",attrs:{id:"user",type:"text",name:"user",autocomplete:t.autoCompleteAllowed?"on":"off",placeholder:t.t("core","Username or email"),"aria-label":t.t("core","Username or email"),required:""},domProps:{value:t.user},on:{change:function(e){return t.$emit("update:username",t.user)},input:function(e){e.target.composing||(t.user=e.target.value)}}})]),t._v(" "),t.validCredentials?t._e():n("div",{staticClass:"body-login-container update form__message-box"},[t._v("\n\t\t\t"+t._s(t.t("core","Your account is not setup for passwordless login."))+"\n\t\t")]),t._v(" "),t.validCredentials?n("LoginButton",{attrs:{loading:t.loading,"inverted-colors":t.invertedColors},on:{click:t.authenticate}}):t._e()],1)]):t.hasPublicKeyCredential?t.isHttps||t.isLocalhost?t._e():n("div",{staticClass:"body-login-container update"},[n("LockOpenIcon",{attrs:{size:"70"}}),t._v(" "),n("h2",[t._v(t._s(t.t("core","Your connection is not secure")))]),t._v(" "),n("p",{staticClass:"infogroup"},[t._v("\n\t\t"+t._s(t.t("core","Passwordless authentication is only available over a secure connection."))+"\n\t")])],1):n("div",{staticClass:"body-login-container update"},[n("InformationIcon",{attrs:{size:"70"}}),t._v(" "),n("h2",[t._v(t._s(t.t("core","Browser not supported")))]),t._v(" "),n("p",{staticClass:"infogroup"},[t._v("\n\t\t"+t._s(t.t("core","Passwordless authentication is not supported in your browser."))+"\n\t")])],1)}),[],!1,null,"4f29a6e2",null),Ce=Pe.exports,ke={name:"ResetPassword",props:{username:{type:String,required:!0},resetPasswordLink:{type:String,required:!0},invertedColors:{type:Boolean,default:!1}},data:function(){return{error:!1,loading:!1,message:void 0,user:this.username}},watch:{username:function(t){this.user=t}},methods:{updateUsername:function(){this.$emit("update:username",this.user)},submit:function(){var t=this;this.loading=!0,this.error=!1,this.message="";var e=(0,c.generateUrl)("/lostpassword/email"),n={user:this.user};return Ht.default.post(e,n).then((function(t){return t.data})).then((function(e){if("success"!==e.status)throw new Error("got status ".concat(e.status));t.message="send-success"})).catch((function(e){console.error("could not send reset email request",e),t.error=!0,t.message="send-error"})).then((function(){t.loading=!1}))}}},xe=r(44685),Te={};Te.styleTagTransform=ye(),Te.setAttributes=me(),Te.insert=fe().bind(null,"head"),Te.domAPI=de(),Te.insertStyleElement=ve(),ce()(xe.Z,Te),xe.Z&&xe.Z.locals&&xe.Z.locals;var Oe=(0,Mt.Z)(ke,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("form",{on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[n("fieldset",[n("p",[n("input",{directives:[{name:"model",rawName:"v-model",value:t.user,expression:"user"}],attrs:{id:"user",type:"text",name:"user",autocapitalize:"off",placeholder:t.t("core","Username or email"),"aria-label":t.t("core","Username or email"),required:""},domProps:{value:t.user},on:{change:t.updateUsername,input:function(e){e.target.composing||(t.user=e.target.value)}}}),t._v(" "),n("label",{staticClass:"infield",attrs:{for:"user"}},[t._v(t._s(t.t("core","Username or email")))])]),t._v(" "),n("div",{attrs:{id:"reset-password-wrapper"}},[n("input",{staticClass:"login primary",attrs:{id:"reset-password-submit",type:"submit",title:""},domProps:{value:t.t("core","Reset password")}}),t._v(" "),n("div",{staticClass:"submit-icon",class:{"icon-confirm-white":!t.loading,"icon-loading-small":t.loading&&t.invertedColors,"icon-loading-small-dark":t.loading&&!t.invertedColors}})]),t._v(" "),"send-success"===t.message?n("p",{staticClass:"update"},[t._v("\n\t\t\t"+t._s(t.t("core","A password reset message has been sent to the email address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help."))+"\n\t\t\t"),n("br"),t._v("\n\t\t\t"+t._s(t.t("core","If it is not there ask your local administrator."))+"\n\t\t")]):"send-error"===t.message?n("p",{staticClass:"update warning"},[t._v("\n\t\t\t"+t._s(t.t("core","Couldn't send reset email. Please contact your administrator."))+"\n\t\t")]):"reset-error"===t.message?n("p",{staticClass:"update warning"},[t._v("\n\t\t\t"+t._s(t.t("core","Password cannot be changed. Please contact your administrator."))+"\n\t\t")]):t.message?n("p",{staticClass:"update",class:{warning:t.error}}):t._e(),t._v(" "),n("a",{attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.$emit("abort")}}},[t._v("\n\t\t\t"+t._s(t.t("core","Back to login"))+"\n\t\t")])])])}),[],!1,null,"d9d670b8",null),Ae=Oe.exports;function Se(t,e,n,o,r,i,a){try{var s=t[i](a),l=s.value}catch(t){return void n(t)}s.done?e(l):Promise.resolve(l).then(o,r)}var Ee={name:"UpdatePassword",props:{username:{type:String,required:!0},resetPasswordTarget:{type:String,required:!0},invertedColors:{type:Boolean,default:!1}},data:function(){return{error:!1,loading:!1,message:void 0,user:this.username,password:"",encrypted:!1,proceed:!1}},watch:{username:function(t){this.user=t}},methods:{submit:function(){var e,n=this;return(e=regeneratorRuntime.mark((function e(){var o,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.loading=!0,n.error=!1,n.message="",e.prev=3,e.next=6,Ht.default.post(n.resetPasswordTarget,{password:n.password,proceed:n.proceed});case 6:if(o=e.sent,!(r=o.data)||"success"!==r.status){e.next=14;break}n.message="send-success",n.$emit("update:username",n.user),n.$emit("done"),e.next=23;break;case 14:if(!r||!r.encryption){e.next=18;break}n.encrypted=!0,e.next=23;break;case 18:if(!r||!r.msg){e.next=22;break}throw new Error(r.msg);case 22:throw new Error;case 23:e.next=29;break;case 25:e.prev=25,e.t0=e.catch(3),n.error=!0,n.message=e.t0.message?e.t0.message:t("core","Password cannot be changed. Please contact your administrator.");case 29:return e.prev=29,n.loading=!1,e.finish(29);case 32:case"end":return e.stop()}}),e,null,[[3,25,29,32]])})),function(){var t=this,n=arguments;return new Promise((function(o,r){var i=e.apply(t,n);function a(t){Se(i,o,r,a,s,"next",t)}function s(t){Se(i,o,r,a,s,"throw",t)}a(void 0)}))})()}}},je=Ee,Le=r(91123),Ue={};Ue.styleTagTransform=ye(),Ue.setAttributes=me(),Ue.insert=fe().bind(null,"head"),Ue.domAPI=de(),Ue.insertStyleElement=ve(),ce()(Le.Z,Ue),Le.Z&&Le.Z.locals&&Le.Z.locals;var Ie=(0,Mt.Z)(je,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("form",{on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[n("fieldset",[n("p",[n("label",{staticClass:"infield",attrs:{for:"password"}},[t._v(t._s(t.t("core","New password")))]),t._v(" "),n("input",{directives:[{name:"model",rawName:"v-model",value:t.password,expression:"password"}],attrs:{id:"password",type:"password",name:"password",autocomplete:"new-password",autocapitalize:"none",autocorrect:"off",required:"",placeholder:t.t("core","New password")},domProps:{value:t.password},on:{input:function(e){e.target.composing||(t.password=e.target.value)}}})]),t._v(" "),t.encrypted?n("div",{staticClass:"update"},[n("p",[t._v("\n\t\t\t\t"+t._s(t.t("core","Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?"))+"\n\t\t\t")]),t._v(" "),n("input",{directives:[{name:"model",rawName:"v-model",value:t.proceed,expression:"proceed"}],staticClass:"checkbox",attrs:{id:"encrypted-continue",type:"checkbox"},domProps:{checked:Array.isArray(t.proceed)?t._i(t.proceed,null)>-1:t.proceed},on:{change:function(e){var n=t.proceed,o=e.target,r=!!o.checked;if(Array.isArray(n)){var i=t._i(n,null);o.checked?i<0&&(t.proceed=n.concat([null])):i>-1&&(t.proceed=n.slice(0,i).concat(n.slice(i+1)))}else t.proceed=r}}}),t._v(" "),n("label",{attrs:{for:"encrypted-continue"}},[t._v("\n\t\t\t\t"+t._s(t.t("core","I know what I'm doing"))+"\n\t\t\t")])]):t._e(),t._v(" "),n("div",{attrs:{id:"submit-wrapper"}},[n("input",{staticClass:"login primary",attrs:{id:"submit",type:"submit",title:""},domProps:{value:t.loading?t.t("core","Resetting password"):t.t("core","Reset password")}}),t._v(" "),n("div",{staticClass:"submit-icon",class:{"icon-loading-small":t.loading&&t.invertedColors,"icon-loading-small-dark":t.loading&&!t.invertedColors}})]),t._v(" "),t.error&&t.message?n("p",{class:{warning:t.error}},[t._v("\n\t\t\t"+t._s(t.message)+"\n\t\t")]):t._e()])])}),[],!1,null,"9ae5fdb4",null),Re=Ie.exports,Fe=Rt.parse(location.search);if("1"===Fe.clear)try{window.localStorage.clear(),window.sessionStorage.clear(),console.debug("Browser storage cleared")}catch(t){console.error("Could not clear browser storage",t)}var $e={name:"Login",components:{LoginForm:qt,PasswordLessLoginForm:Ce,ResetPassword:Ae,UpdatePassword:Re},data:function(){return{loading:!1,user:(0,It.loadState)("core","loginUsername",""),passwordlessLogin:!1,resetPassword:!1,errors:(0,It.loadState)("core","loginErrors",[]),messages:(0,It.loadState)("core","loginMessages",[]),redirectUrl:(0,It.loadState)("core","loginRedirectUrl",!1),throttleDelay:(0,It.loadState)("core","loginThrottleDelay",0),invertedColors:OCA.Theming&&OCA.Theming.inverted,canResetPassword:(0,It.loadState)("core","loginCanResetPassword",!1),resetPasswordLink:(0,It.loadState)("core","loginResetPasswordLink",""),autoCompleteAllowed:(0,It.loadState)("core","loginAutocomplete",!0),resetPasswordTarget:(0,It.loadState)("core","resetPasswordTarget",""),resetPasswordUser:(0,It.loadState)("core","resetPasswordUser",""),directLogin:"1"===Fe.direct,hasPasswordless:(0,It.loadState)("core","webauthn-available",!1),countAlternativeLogins:(0,It.loadState)("core","countAlternativeLogins",!1),isHttps:"https:"===window.location.protocol,isLocalhost:"localhost"===window.location.hostname,hasPublicKeyCredential:void 0!==window.PublicKeyCredential,hideLoginForm:(0,It.loadState)("core","hideLoginForm",!1)}},methods:{passwordResetFinished:function(){this.resetPasswordTarget="",this.directLogin=!0}}},Ne=r(35162),Me={};Me.styleTagTransform=ye(),Me.setAttributes=me(),Me.insert=fe().bind(null,"head"),Me.domAPI=de(),Me.insertStyleElement=ve(),ce()(Ne.Z,Me),Ne.Z&&Ne.Z.locals&&Ne.Z.locals;var ze=(0,Mt.Z)($e,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return!t.hideLoginForm||t.directLogin?n("div",[n("transition",{attrs:{name:"fade",mode:"out-in"}},[t.passwordlessLogin||t.resetPassword||""!==t.resetPasswordTarget?!t.loading&&t.passwordlessLogin?n("div",{key:"reset",staticClass:"login-additional"},[n("PasswordLessLoginForm",{attrs:{username:t.user,"redirect-url":t.redirectUrl,"inverted-colors":t.invertedColors,"auto-complete-allowed":t.autoCompleteAllowed,"is-https":t.isHttps,"is-localhost":t.isLocalhost,"has-public-key-credential":t.hasPublicKeyCredential},on:{"update:username":function(e){t.user=e},submit:function(e){t.loading=!0}}}),t._v(" "),n("a",{attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.passwordlessLogin=!1}}},[t._v("\n\t\t\t\t"+t._s(t.t("core","Back"))+"\n\t\t\t")])],1):!t.loading&&t.canResetPassword?n("div",{key:"reset",staticClass:"login-additional"},[n("div",{staticClass:"lost-password-container"},[t.resetPassword?n("ResetPassword",{attrs:{username:t.user,"reset-password-link":t.resetPasswordLink,"inverted-colors":t.invertedColors},on:{"update:username":function(e){t.user=e},abort:function(e){t.resetPassword=!1}}}):t._e()],1)]):""!==t.resetPasswordTarget?n("div",[n("UpdatePassword",{attrs:{username:t.user,"reset-password-target":t.resetPasswordTarget,"inverted-colors":t.invertedColors},on:{"update:username":function(e){t.user=e},done:t.passwordResetFinished}})],1):t._e():n("div",{key:"login"},[n("LoginForm",{attrs:{username:t.user,"redirect-url":t.redirectUrl,"direct-login":t.directLogin,messages:t.messages,errors:t.errors,"throttle-delay":t.throttleDelay,"inverted-colors":t.invertedColors,"auto-complete-allowed":t.autoCompleteAllowed},on:{"update:username":function(e){t.user=e},submit:function(e){t.loading=!0}}}),t._v(" "),t.canResetPassword&&""!==t.resetPasswordLink?n("a",{attrs:{id:"lost-password",href:t.resetPasswordLink}},[t._v("\n\t\t\t\t"+t._s(t.t("core","Forgot password?"))+"\n\t\t\t")]):t.canResetPassword&&!t.resetPassword?n("a",{attrs:{id:"lost-password",href:t.resetPasswordLink},on:{click:function(e){e.preventDefault(),t.resetPassword=!0}}},[t._v("\n\t\t\t\t"+t._s(t.t("core","Forgot password?"))+"\n\t\t\t")]):t._e(),t._v(" "),n("br"),t._v(" "),t.hasPasswordless?[t.countAlternativeLogins?n("div",{staticClass:"alternative-logins"},[t.hasPasswordless?n("a",{staticClass:"button",class:{"single-alt-login-option":t.countAlternativeLogins},attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.passwordlessLogin=!0}}},[t._v("\n\t\t\t\t\t\t"+t._s(t.t("core","Log in with a device"))+"\n\t\t\t\t\t")]):t._e()]):n("a",{attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.passwordlessLogin=!0}}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Log in with a device"))+"\n\t\t\t\t")])]:t._e()],2)])],1):n("div",[n("transition",{attrs:{name:"fade",mode:"out-in"}},[n("div",{staticClass:"warning"},[t._v("\n\t\t\t"+t._s(t.t("core","Login form is disabled."))),n("br"),t._v(" "),n("small",[t._v(t._s(t.t("core","Please contact your administrator."))+"\n\t\t\t")])])])],1)}),[],!1,null,null,null).exports,De={data:function(){return{OC:Ut}},methods:{t:wt.translate.bind(wt),n:wt.translatePlural.bind(wt)}};i.default.mixin(De),(new(i.default.extend(ze))).$mount("#login")},27429:function(t,e,n){"use strict";var o=n(87537),r=n.n(o),i=n(23645),a=n.n(i)()(r());a.push([t.id,".body-login-container.update[data-v-4f29a6e2]{margin:15px 0}.body-login-container.update.form__message-box[data-v-4f29a6e2]{width:240px;margin:5px}","",{version:3,sources:["webpack://./core/src/components/login/PasswordLessLoginForm.vue"],names:[],mappings:"AAmOA,8CACC,aAAA,CAEA,gEACC,WAAA,CACA,UAAA",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.body-login-container.update {\n\tmargin: 15px 0;\n\n\t&.form__message-box {\n\t\twidth: 240px;\n\t\tmargin: 5px;\n\t}\n}\n"],sourceRoot:""}]),e.Z=a},44685:function(t,e,n){"use strict";var o=n(87537),r=n.n(o),i=n(23645),a=n.n(i)()(r());a.push([t.id,"\n.update[data-v-d9d670b8] {\n\twidth: auto;\n}\n","",{version:3,sources:["webpack://./core/src/components/login/ResetPassword.vue"],names:[],mappings:";AAmJA;CACA,WAAA;AACA",sourcesContent:["\x3c!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\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 --\x3e\n\n<template>\n\t<form @submit.prevent=\"submit\">\n\t\t<fieldset>\n\t\t\t<p>\n\t\t\t\t<input id=\"user\"\n\t\t\t\t\tv-model=\"user\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tname=\"user\"\n\t\t\t\t\tautocapitalize=\"off\"\n\t\t\t\t\t:placeholder=\"t('core', 'Username or email')\"\n\t\t\t\t\t:aria-label=\"t('core', 'Username or email')\"\n\t\t\t\t\trequired\n\t\t\t\t\t@change=\"updateUsername\">\n\t\t\t\t\x3c!--<?php p($_['user_autofocus'] ? 'autofocus' : ''); ?>\n\t\t\t\tautocomplete=\"<?php p($_['login_form_autocomplete']); ?>\" autocapitalize=\"none\" autocorrect=\"off\"--\x3e\n\t\t\t\t<label for=\"user\" class=\"infield\">{{ t('core', 'Username or email') }}</label>\n\t\t\t</p>\n\t\t\t<div id=\"reset-password-wrapper\">\n\t\t\t\t<input id=\"reset-password-submit\"\n\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\tclass=\"login primary\"\n\t\t\t\t\ttitle=\"\"\n\t\t\t\t\t:value=\"t('core', 'Reset password')\">\n\t\t\t\t<div class=\"submit-icon\"\n\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t'icon-confirm-white': !loading,\n\t\t\t\t\t\t'icon-loading-small': loading && invertedColors,\n\t\t\t\t\t\t'icon-loading-small-dark': loading && !invertedColors,\n\t\t\t\t\t}\" />\n\t\t\t</div>\n\t\t\t<p v-if=\"message === 'send-success'\"\n\t\t\t\tclass=\"update\">\n\t\t\t\t{{ t('core', 'A password reset message has been sent to the email address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help.') }}\n\t\t\t\t<br>\n\t\t\t\t{{ t('core', 'If it is not there ask your local administrator.') }}\n\t\t\t</p>\n\t\t\t<p v-else-if=\"message === 'send-error'\"\n\t\t\t\tclass=\"update warning\">\n\t\t\t\t{{ t('core', 'Couldn\\'t send reset email. Please contact your administrator.') }}\n\t\t\t</p>\n\t\t\t<p v-else-if=\"message === 'reset-error'\"\n\t\t\t\tclass=\"update warning\">\n\t\t\t\t{{ t('core', 'Password cannot be changed. Please contact your administrator.') }}\n\t\t\t</p>\n\t\t\t<p v-else-if=\"message\"\n\t\t\t\tclass=\"update\"\n\t\t\t\t:class=\"{warning: error}\" />\n\n\t\t\t<a href=\"#\"\n\t\t\t\t@click.prevent=\"$emit('abort')\">\n\t\t\t\t{{ t('core', 'Back to login') }}\n\t\t\t</a>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\n\nimport { generateUrl } from '@nextcloud/router'\n\nexport default {\n\tname: 'ResetPassword',\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordLink: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tinvertedColors: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tupdateUsername() {\n\t\t\tthis.$emit('update:username', this.user)\n\t\t},\n\t\tsubmit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = ''\n\t\t\tconst url = generateUrl('/lostpassword/email')\n\n\t\t\tconst data = {\n\t\t\t\tuser: this.user,\n\t\t\t}\n\n\t\t\treturn axios.post(url, data)\n\t\t\t\t.then(resp => resp.data)\n\t\t\t\t.then(data => {\n\t\t\t\t\tif (data.status !== 'success') {\n\t\t\t\t\t\tthrow new Error(`got status ${data.status}`)\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.message = 'send-success'\n\t\t\t\t})\n\t\t\t\t.catch(e => {\n\t\t\t\t\tconsole.error('could not send reset email request', e)\n\n\t\t\t\t\tthis.error = true\n\t\t\t\t\tthis.message = 'send-error'\n\t\t\t\t})\n\t\t\t\t.then(() => { this.loading = false })\n\t\t},\n\t},\n}\n<\/script>\n\n<style scoped>\n\t.update {\n\t\twidth: auto;\n\t}\n</style>\n"],sourceRoot:""}]),e.Z=a},91123:function(t,e,n){"use strict";var o=n(87537),r=n.n(o),i=n(23645),a=n.n(i)()(r());a.push([t.id,"\nfieldset[data-v-9ae5fdb4] {\n\ttext-align: center;\n}\ninput[type=submit][data-v-9ae5fdb4] {\n\tmargin-top: 20px;\n}\n","",{version:3,sources:["webpack://./core/src/components/login/UpdatePassword.vue"],names:[],mappings:";AA4IA;CACA,kBAAA;AACA;AAEA;CACA,gBAAA;AACA",sourcesContent:['\x3c!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\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 --\x3e\n\n<template>\n\t<form @submit.prevent="submit">\n\t\t<fieldset>\n\t\t\t<p>\n\t\t\t\t<label for="password" class="infield">{{ t(\'core\', \'New password\') }}</label>\n\t\t\t\t<input id="password"\n\t\t\t\t\tv-model="password"\n\t\t\t\t\ttype="password"\n\t\t\t\t\tname="password"\n\t\t\t\t\tautocomplete="new-password"\n\t\t\t\t\tautocapitalize="none"\n\t\t\t\t\tautocorrect="off"\n\t\t\t\t\trequired\n\t\t\t\t\t:placeholder="t(\'core\', \'New password\')">\n\t\t\t</p>\n\n\t\t\t<div v-if="encrypted" class="update">\n\t\t\t\t<p>\n\t\t\t\t\t{{ t(\'core\', \'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?\') }}\n\t\t\t\t</p>\n\t\t\t\t<input id="encrypted-continue"\n\t\t\t\t\tv-model="proceed"\n\t\t\t\t\ttype="checkbox"\n\t\t\t\t\tclass="checkbox">\n\t\t\t\t<label for="encrypted-continue">\n\t\t\t\t\t{{ t(\'core\', \'I know what I\\\'m doing\') }}\n\t\t\t\t</label>\n\t\t\t</div>\n\n\t\t\t<div id="submit-wrapper">\n\t\t\t\t<input id="submit"\n\t\t\t\t\ttype="submit"\n\t\t\t\t\tclass="login primary"\n\t\t\t\t\ttitle=""\n\t\t\t\t\t:value="!loading ? t(\'core\', \'Reset password\') : t(\'core\', \'Resetting password\')">\n\t\t\t\t<div class="submit-icon"\n\t\t\t\t\t:class="{\n\t\t\t\t\t\t\'icon-loading-small\': loading && invertedColors,\n\t\t\t\t\t\t\'icon-loading-small-dark\': loading && !invertedColors\n\t\t\t\t\t}" />\n\t\t\t</div>\n\n\t\t\t<p v-if="error && message" :class="{warning: error}">\n\t\t\t\t{{ message }}\n\t\t\t</p>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport Axios from \'@nextcloud/axios\'\n\nexport default {\n\tname: \'UpdatePassword\',\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordTarget: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tinvertedColors: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t\tpassword: \'\',\n\t\t\tencrypted: false,\n\t\t\tproceed: false,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tasync submit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = \'\'\n\n\t\t\ttry {\n\t\t\t\tconst { data } = await Axios.post(this.resetPasswordTarget, {\n\t\t\t\t\tpassword: this.password,\n\t\t\t\t\tproceed: this.proceed,\n\t\t\t\t})\n\t\t\t\tif (data && data.status === \'success\') {\n\t\t\t\t\tthis.message = \'send-success\'\n\t\t\t\t\tthis.$emit(\'update:username\', this.user)\n\t\t\t\t\tthis.$emit(\'done\')\n\t\t\t\t} else if (data && data.encryption) {\n\t\t\t\t\tthis.encrypted = true\n\t\t\t\t} else if (data && data.msg) {\n\t\t\t\t\tthrow new Error(data.msg)\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error()\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tthis.error = true\n\t\t\t\tthis.message = e.message ? e.message : t(\'core\', \'Password cannot be changed. Please contact your administrator.\')\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n<\/script>\n\n<style scoped>\n\tfieldset {\n\t\ttext-align: center;\n\t}\n\n\tinput[type=submit] {\n\t\tmargin-top: 20px;\n\t}\n</style>\n'],sourceRoot:""}]),e.Z=a},35162:function(t,e,n){"use strict";var o=n(87537),r=n.n(o),i=n(23645),a=n.n(i)()(r());a.push([t.id,"\n.fade-enter-active, .fade-leave-active {\n\ttransition: opacity .3s;\n}\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\n\topacity: 0;\n}\n","",{version:3,sources:["webpack://./core/src/views/Login.vue"],names:[],mappings:";AAiLA;CACA,uBAAA;AACA;AACA;CACA,UAAA;AACA",sourcesContent:["\x3c!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\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 --\x3e\n\n<template>\n\t<div v-if=\"!hideLoginForm || directLogin\">\n\t\t<transition name=\"fade\" mode=\"out-in\">\n\t\t\t<div v-if=\"!passwordlessLogin && !resetPassword && resetPasswordTarget === ''\"\n\t\t\t\tkey=\"login\">\n\t\t\t\t<LoginForm :username.sync=\"user\"\n\t\t\t\t\t:redirect-url=\"redirectUrl\"\n\t\t\t\t\t:direct-login=\"directLogin\"\n\t\t\t\t\t:messages=\"messages\"\n\t\t\t\t\t:errors=\"errors\"\n\t\t\t\t\t:throttle-delay=\"throttleDelay\"\n\t\t\t\t\t:inverted-colors=\"invertedColors\"\n\t\t\t\t\t:auto-complete-allowed=\"autoCompleteAllowed\"\n\t\t\t\t\t@submit=\"loading = true\" />\n\t\t\t\t<a v-if=\"canResetPassword && resetPasswordLink !== ''\"\n\t\t\t\t\tid=\"lost-password\"\n\t\t\t\t\t:href=\"resetPasswordLink\">\n\t\t\t\t\t{{ t('core', 'Forgot password?') }}\n\t\t\t\t</a>\n\t\t\t\t<a v-else-if=\"canResetPassword && !resetPassword\"\n\t\t\t\t\tid=\"lost-password\"\n\t\t\t\t\t:href=\"resetPasswordLink\"\n\t\t\t\t\t@click.prevent=\"resetPassword = true\">\n\t\t\t\t\t{{ t('core', 'Forgot password?') }}\n\t\t\t\t</a>\n\t\t\t\t<br>\n\t\t\t\t<template v-if=\"hasPasswordless\">\n\t\t\t\t\t<div v-if=\"countAlternativeLogins\"\n\t\t\t\t\t\tclass=\"alternative-logins\">\n\t\t\t\t\t\t<a v-if=\"hasPasswordless\"\n\t\t\t\t\t\t\tclass=\"button\"\n\t\t\t\t\t\t\t:class=\"{ 'single-alt-login-option': countAlternativeLogins }\"\n\t\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\t\t@click.prevent=\"passwordlessLogin = true\">\n\t\t\t\t\t\t\t{{ t('core', 'Log in with a device') }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t\t<a v-else\n\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\t@click.prevent=\"passwordlessLogin = true\">\n\t\t\t\t\t\t{{ t('core', 'Log in with a device') }}\n\t\t\t\t\t</a>\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t\t<div v-else-if=\"!loading && passwordlessLogin\"\n\t\t\t\tkey=\"reset\"\n\t\t\t\tclass=\"login-additional\">\n\t\t\t\t<PasswordLessLoginForm :username.sync=\"user\"\n\t\t\t\t\t:redirect-url=\"redirectUrl\"\n\t\t\t\t\t:inverted-colors=\"invertedColors\"\n\t\t\t\t\t:auto-complete-allowed=\"autoCompleteAllowed\"\n\t\t\t\t\t:is-https=\"isHttps\"\n\t\t\t\t\t:is-localhost=\"isLocalhost\"\n\t\t\t\t\t:has-public-key-credential=\"hasPublicKeyCredential\"\n\t\t\t\t\t@submit=\"loading = true\" />\n\t\t\t\t<a href=\"#\" @click.prevent=\"passwordlessLogin = false\">\n\t\t\t\t\t{{ t('core', 'Back') }}\n\t\t\t\t</a>\n\t\t\t</div>\n\t\t\t<div v-else-if=\"!loading && canResetPassword\"\n\t\t\t\tkey=\"reset\"\n\t\t\t\tclass=\"login-additional\">\n\t\t\t\t<div class=\"lost-password-container\">\n\t\t\t\t\t<ResetPassword v-if=\"resetPassword\"\n\t\t\t\t\t\t:username.sync=\"user\"\n\t\t\t\t\t\t:reset-password-link=\"resetPasswordLink\"\n\t\t\t\t\t\t:inverted-colors=\"invertedColors\"\n\t\t\t\t\t\t@abort=\"resetPassword = false\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div v-else-if=\"resetPasswordTarget !== ''\">\n\t\t\t\t<UpdatePassword :username.sync=\"user\"\n\t\t\t\t\t:reset-password-target=\"resetPasswordTarget\"\n\t\t\t\t\t:inverted-colors=\"invertedColors\"\n\t\t\t\t\t@done=\"passwordResetFinished\" />\n\t\t\t</div>\n\t\t</transition>\n\t</div>\n\t<div v-else>\n\t\t<transition name=\"fade\" mode=\"out-in\">\n\t\t\t<div class=\"warning\">\n\t\t\t\t{{ t('core', 'Login form is disabled.') }}<br>\n\t\t\t\t<small>{{ t('core', 'Please contact your administrator.') }}\n\t\t\t\t</small>\n\t\t\t</div>\n\t\t</transition>\n\t</div>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport queryString from 'query-string'\n\nimport LoginForm from '../components/login/LoginForm.vue'\nimport PasswordLessLoginForm from '../components/login/PasswordLessLoginForm.vue'\nimport ResetPassword from '../components/login/ResetPassword.vue'\nimport UpdatePassword from '../components/login/UpdatePassword.vue'\n\nconst query = queryString.parse(location.search)\nif (query.clear === '1') {\n\ttry {\n\t\twindow.localStorage.clear()\n\t\twindow.sessionStorage.clear()\n\t\tconsole.debug('Browser storage cleared')\n\t} catch (e) {\n\t\tconsole.error('Could not clear browser storage', e)\n\t}\n}\n\nexport default {\n\tname: 'Login',\n\n\tcomponents: {\n\t\tLoginForm,\n\t\tPasswordLessLoginForm,\n\t\tResetPassword,\n\t\tUpdatePassword,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\tuser: loadState('core', 'loginUsername', ''),\n\t\t\tpasswordlessLogin: false,\n\t\t\tresetPassword: false,\n\n\t\t\t// Initial data\n\t\t\terrors: loadState('core', 'loginErrors', []),\n\t\t\tmessages: loadState('core', 'loginMessages', []),\n\t\t\tredirectUrl: loadState('core', 'loginRedirectUrl', false),\n\t\t\tthrottleDelay: loadState('core', 'loginThrottleDelay', 0),\n\t\t\tinvertedColors: OCA.Theming && OCA.Theming.inverted,\n\t\t\tcanResetPassword: loadState('core', 'loginCanResetPassword', false),\n\t\t\tresetPasswordLink: loadState('core', 'loginResetPasswordLink', ''),\n\t\t\tautoCompleteAllowed: loadState('core', 'loginAutocomplete', true),\n\t\t\tresetPasswordTarget: loadState('core', 'resetPasswordTarget', ''),\n\t\t\tresetPasswordUser: loadState('core', 'resetPasswordUser', ''),\n\t\t\tdirectLogin: query.direct === '1',\n\t\t\thasPasswordless: loadState('core', 'webauthn-available', false),\n\t\t\tcountAlternativeLogins: loadState('core', 'countAlternativeLogins', false),\n\t\t\tisHttps: window.location.protocol === 'https:',\n\t\t\tisLocalhost: window.location.hostname === 'localhost',\n\t\t\thasPublicKeyCredential: typeof (window.PublicKeyCredential) !== 'undefined',\n\t\t\thideLoginForm: loadState('core', 'hideLoginForm', false),\n\t\t}\n\t},\n\tmethods: {\n\t\tpasswordResetFinished() {\n\t\t\tthis.resetPasswordTarget = ''\n\t\t\tthis.directLogin = true\n\t\t},\n\t},\n}\n<\/script>\n\n<style>\n\t.fade-enter-active, .fade-leave-active {\n\t\ttransition: opacity .3s;\n\t}\n\t.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\n\t\topacity: 0;\n\t}\n</style>\n"],sourceRoot:""}]),e.Z=a},10944:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({1:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(i=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(i=null!=e?a(e,"contact"):e)?a(i,"profileUrl"):i,{name:"if",hash:{},fn:t.program(2,r,0),inverse:t.program(5,r,0),data:r,loc:{start:{line:2,column:1},end:{line:10,column:8}}}))?i:""},2:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(i=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(i=null!=e?a(e,"contact"):e)?a(i,"profileTitle"):i,{name:"if",hash:{},fn:t.program(3,r,0),inverse:t.noop,data:r,loc:{start:{line:3,column:2},end:{line:7,column:9}}}))?i:""},3:function(t,e,n,o,r){var i,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<a class="profile-link--avatar" href="'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"profileUrl"):i,e))+'">\n\t\t\t\t<img src="'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+'&size=32" class="avatar" srcset="'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+"&size=32 1x, "+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+"&size=64 2x, "+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+'&size=128 4x" alt="">\n\t\t\t</a>\n'},5:function(t,e,n,o,r){var i,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t<img src="'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+'&size=32" class="avatar" srcset="'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+"&size=32 1x, "+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+"&size=64 2x, "+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"avatar"):i,e))+'&size=128 4x" alt="">\n'},7:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(i=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(i=null!=e?a(e,"contact"):e)?a(i,"profileUrl"):i,{name:"if",hash:{},fn:t.program(8,r,0),inverse:t.program(11,r,0),data:r,loc:{start:{line:12,column:1},end:{line:20,column:8}}}))?i:""},8:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(i=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(i=null!=e?a(e,"contact"):e)?a(i,"profileTitle"):i,{name:"if",hash:{},fn:t.program(9,r,0),inverse:t.noop,data:r,loc:{start:{line:13,column:2},end:{line:17,column:9}}}))?i:""},9:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<a class="profile-link--avatar" href="'+t.escapeExpression(t.lambda(null!=(i=null!=e?a(e,"contact"):e)?a(i,"profileUrl"):i,e))+'">\n\t\t\t\t<div class="avatar"></div>\n\t\t\t</a>\n'},11:function(t,e,n,o,r){return'\t\t<div class="avatar"></div>\n'},13:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(i=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(i=null!=e?a(e,"contact"):e)?a(i,"profileTitle"):i,{name:"if",hash:{},fn:t.program(14,r,0),inverse:t.noop,data:r,loc:{start:{line:23,column:1},end:{line:29,column:8}}}))?i:""},14:function(t,e,n,o,r){var i,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t<a class="body profile-link--full-name" href="'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"profileUrl"):i,e))+'">\n\t\t\t<div class="full-name">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"fullName"):i,e))+'</div>\n\t\t\t<div class="last-message">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"lastMessage"):i,e))+'</div>\n\t\t\t<div class="email-address">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"emailAddresses"):i,e))+"</div>\n\t\t</a>\n"},16:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(i=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(i=null!=e?a(e,"contact"):e)?a(i,"topAction"):i,{name:"if",hash:{},fn:t.program(17,r,0),inverse:t.program(19,r,0),data:r,loc:{start:{line:30,column:0},end:{line:45,column:0}}}))?i:""},17:function(t,e,n,o,r){var i,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<a class="body" href="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"hyperlink"):i,e))+'"> \n\t\t<div class="full-name">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"fullName"):i,e))+'</div>\n\t\t<div class="last-message">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"lastMessage"):i,e))+'</div>\n\t\t<div class="email-address">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"emailAddresses"):i,e))+'</div>\n\t</a>\n \t<a class="top-action" href="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"hyperlink"):i,e))+'" title="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"title"):i,e))+'">\n \t\t<img src="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"icon"):i,e))+'" alt="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"topAction"):i)?l(i,"title"):i,e))+'">\n\t</a>\n'},19:function(t,e,n,o,r){var i,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<div class="body">\n\t\t<div class="full-name">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"fullName"):i,e))+'</div>\n\t\t<div class="last-message">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"lastMessage"):i,e))+'</div>\n\t\t<div class="email-address">'+s(a(null!=(i=null!=e?l(e,"contact"):e)?l(i,"emailAddresses"):i,e))+"</div>\n\t</div>\n"},21:function(t,e,n,o,r){var i,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<a class="second-action" href="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"secondAction"):i)?l(i,"hyperlink"):i,e))+'" title="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"secondAction"):i)?l(i,"title"):i,e))+'">\n\t<img src="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"secondAction"):i)?l(i,"icon"):i,e))+'" alt="'+s(a(null!=(i=null!=(i=null!=e?l(e,"contact"):e)?l(i,"secondAction"):i)?l(i,"title"):i,e))+'">\n</a>\n'},23:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<span class="other-actions icon-more"></span>\n\t<div class="menu popovermenu">\n\t\t<ul>\n'+(null!=(i=a(n,"each").call(null!=e?e:t.nullContext||{},null!=(i=null!=e?a(e,"contact"):e)?a(i,"actions"):i,{name:"each",hash:{},fn:t.program(24,r,0),inverse:t.noop,data:r,loc:{start:{line:55,column:3},end:{line:62,column:12}}}))?i:"")+"\t\t</ul>\n\t</div>\n"},24:function(t,e,n,o,r){var i,a=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<li>\n\t\t\t\t<a href="'+c(typeof(i=null!=(i=u(n,"hyperlink")||(null!=e?u(e,"hyperlink"):e))?i:s)===l?i.call(a,{name:"hyperlink",hash:{},data:r,loc:{start:{line:57,column:13},end:{line:57,column:26}}}):i)+'">\n\t\t\t\t\t<img src="'+c(typeof(i=null!=(i=u(n,"icon")||(null!=e?u(e,"icon"):e))?i:s)===l?i.call(a,{name:"icon",hash:{},data:r,loc:{start:{line:58,column:15},end:{line:58,column:23}}}):i)+'" alt="">\n\t\t\t\t\t<span>'+c(typeof(i=null!=(i=u(n,"title")||(null!=e?u(e,"title"):e))?i:s)===l?i.call(a,{name:"title",hash:{},data:r,loc:{start:{line:59,column:11},end:{line:59,column:20}}}):i)+"</span>\n\t\t\t\t</a>\n\t\t\t</li>\n"},compiler:[8,">= 4.3.0"],main:function(t,e,n,o,r){var i,a=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(i=s(n,"if").call(a,null!=(i=null!=e?s(e,"contact"):e)?s(i,"avatar"):i,{name:"if",hash:{},fn:t.program(1,r,0),inverse:t.program(7,r,0),data:r,loc:{start:{line:1,column:0},end:{line:21,column:7}}}))?i:"")+(null!=(i=s(n,"if").call(a,null!=(i=null!=e?s(e,"contact"):e)?s(i,"profileUrl"):i,{name:"if",hash:{},fn:t.program(13,r,0),inverse:t.program(16,r,0),data:r,loc:{start:{line:22,column:0},end:{line:45,column:7}}}))?i:"")+(null!=(i=s(n,"if").call(a,null!=(i=null!=e?s(e,"contact"):e)?s(i,"hasTwoActions"):i,{name:"if",hash:{},fn:t.program(21,r,0),inverse:t.noop,data:r,loc:{start:{line:46,column:0},end:{line:50,column:7}}}))?i:"")+(null!=(i=s(n,"if").call(a,null!=(i=null!=e?s(e,"contact"):e)?s(i,"hasManyActions"):i,{name:"if",hash:{},fn:t.program(23,r,0),inverse:t.noop,data:r,loc:{start:{line:51,column:0},end:{line:65,column:7}}}))?i:"")},useData:!0})},20421:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-search"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(i=null!=(i=a(n,"couldNotLoadText")||(null!=e?a(e,"couldNotLoadText"):e))?i:t.hooks.helperMissing)?i.call(null!=e?e:t.nullContext||{},{name:"couldNotLoadText",hash:{},data:r,loc:{start:{line:3,column:5},end:{line:3,column:25}}}):i)+"</h2>\n</div>\n"},useData:!0})},34083:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({1:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-search"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(i=null!=(i=a(n,"noContactsFoundText")||(null!=e?a(e,"noContactsFoundText"):e))?i:t.hooks.helperMissing)?i.call(null!=e?e:t.nullContext||{},{name:"noContactsFoundText",hash:{},data:r,loc:{start:{line:4,column:5},end:{line:4,column:28}}}):i)+"</h2>\n</div>\n"},3:function(t,e,n,o,r){var i,a=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="footer"><a href="'+c(typeof(i=null!=(i=u(n,"contactsAppURL")||(null!=e?u(e,"contactsAppURL"):e))?i:s)===l?i.call(a,{name:"contactsAppURL",hash:{},data:r,loc:{start:{line:9,column:29},end:{line:9,column:47}}}):i)+'">'+c(typeof(i=null!=(i=u(n,"showAllContactsText")||(null!=e?u(e,"showAllContactsText"):e))?i:s)===l?i.call(a,{name:"showAllContactsText",hash:{},data:r,loc:{start:{line:9,column:49},end:{line:9,column:72}}}):i)+"</a></div>\n"},5:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(i=a(n,"if").call(null!=e?e:t.nullContext||{},null!=e?a(e,"canInstallApp"):e,{name:"if",hash:{},fn:t.program(6,r,0),inverse:t.noop,data:r,loc:{start:{line:10,column:0},end:{line:12,column:0}}}))?i:""},6:function(t,e,n,o,r){var i,a=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="footer"><a href="'+c(typeof(i=null!=(i=u(n,"contactsAppMgmtURL")||(null!=e?u(e,"contactsAppMgmtURL"):e))?i:s)===l?i.call(a,{name:"contactsAppMgmtURL",hash:{},data:r,loc:{start:{line:11,column:29},end:{line:11,column:51}}}):i)+'">'+c(typeof(i=null!=(i=u(n,"contactsAppMgmtText")||(null!=e?u(e,"contactsAppMgmtText"):e))?i:s)===l?i.call(a,{name:"contactsAppMgmtText",hash:{},data:r,loc:{start:{line:11,column:53},end:{line:11,column:76}}}):i)+"</a></div>\n"},compiler:[8,">= 4.3.0"],main:function(t,e,n,o,r){var i,a=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(i=s(n,"unless").call(a,null!=(i=null!=e?s(e,"contacts"):e)?s(i,"length"):i,{name:"unless",hash:{},fn:t.program(1,r,0),inverse:t.noop,data:r,loc:{start:{line:1,column:0},end:{line:6,column:11}}}))?i:"")+'<div id="contactsmenu-contacts"></div>\n'+(null!=(i=s(n,"if").call(a,null!=e?s(e,"contactsAppEnabled"):e,{name:"if",hash:{},fn:t.program(3,r,0),inverse:t.program(5,r,0),data:r,loc:{start:{line:8,column:0},end:{line:12,column:7}}}))?i:"")},useData:!0})},95386:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,o,r){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-loading"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(i=null!=(i=a(n,"loadingText")||(null!=e?a(e,"loadingText"):e))?i:t.hooks.helperMissing)?i.call(null!=e?e:t.nullContext||{},{name:"loadingText",hash:{},data:r,loc:{start:{line:3,column:5},end:{line:3,column:20}}}):i)+"</h2>\n</div>\n"},useData:!0})},66115:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,o,r){var i,a=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<label class="hidden-visually" for="contactsmenu-search">'+c(typeof(i=null!=(i=u(n,"searchContactsText")||(null!=e?u(e,"searchContactsText"):e))?i:s)===l?i.call(a,{name:"searchContactsText",hash:{},data:r,loc:{start:{line:1,column:57},end:{line:1,column:79}}}):i)+'</label>\n<input id="contactsmenu-search" type="search" placeholder="'+c(typeof(i=null!=(i=u(n,"searchContactsText")||(null!=e?u(e,"searchContactsText"):e))?i:s)===l?i.call(a,{name:"searchContactsText",hash:{},data:r,loc:{start:{line:2,column:59},end:{line:2,column:81}}}):i)+'" value="'+c(typeof(i=null!=(i=u(n,"searchTerm")||(null!=e?u(e,"searchTerm"):e))?i:s)===l?i.call(a,{name:"searchTerm",hash:{},data:r,loc:{start:{line:2,column:90},end:{line:2,column:104}}}):i)+'">\n<div class="content">\n</div>\n'},useData:!0})},46700:function(t,e,n){var o={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":2819,"./hi.js":2819,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function r(t){var e=i(t);return n(e)}function i(t){if(!n.o(o,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return o[t]}r.keys=function(){return Object.keys(o)},r.resolve=i,t.exports=r,r.id=46700}},r={};function i(t){var e=r[t];if(void 0!==e)return e.exports;var n=r[t]={id:t,loaded:!1,exports:{}};return o[t].call(n.exports,n,n.exports,i),n.loaded=!0,n.exports}i.m=o,i.amdD=function(){throw new Error("define cannot be used indirect")},i.amdO={},e=[],i.O=function(t,n,o,r){if(!n){var a=1/0;for(u=0;u<e.length;u++){n=e[u][0],o=e[u][1],r=e[u][2];for(var s=!0,l=0;l<n.length;l++)(!1&r||a>=r)&&Object.keys(i.O).every((function(t){return i.O[t](n[l])}))?n.splice(l--,1):(s=!1,r<a&&(a=r));if(s){e.splice(u--,1);var c=o();void 0!==c&&(t=c)}}return t}r=r||0;for(var u=e.length;u>0&&e[u-1][2]>r;u--)e[u]=e[u-1];e[u]=[n,o,r]},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,{a:e}),e},i.d=function(t,e){for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},i.j=4577,function(){i.b=document.baseURI||self.location.href;var t={4577:0};i.O.j=function(e){return 0===t[e]};var e=function(e,n){var o,r,a=n[0],s=n[1],l=n[2],c=0;if(a.some((function(e){return 0!==t[e]}))){for(o in s)i.o(s,o)&&(i.m[o]=s[o]);if(l)var u=l(i)}for(e&&e(n);c<a.length;c++)r=a[c],i.o(t,r)&&t[r]&&t[r][0](),t[r]=0;return i.O(u)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))}(),i.nc=void 0;var a=i.O(void 0,[7874],(function(){return i(10473)}));a=i.O(a)}();
+//# sourceMappingURL=core-login.js.map?v=de0029463553908f3b67 \ No newline at end of file
diff --git a/dist/core-login.js.map b/dist/core-login.js.map
index c0f14ab72c1..ecde8a2900e 100644
--- a/dist/core-login.js.map
+++ b/dist/core-login.js.map
@@ -1 +1 @@
-{"version":3,"file":"core-login.js?v=fc1f8c11072cd138cc6f","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/OC/legacy-loader.js","webpack:///nextcloud/core/src/OC/notification.js","webpack:///nextcloud/core/src/OC/xhr-error.js","webpack:///nextcloud/core/src/OC/apps.js","webpack:///nextcloud/core/src/OCP/appconfig.js","webpack:///nextcloud/core/src/OC/appconfig.js","webpack:///nextcloud/core/src/OC/appswebroots.js","webpack:///nextcloud/core/src/OC/backbone-webdav.js","webpack:///nextcloud/core/src/OC/backbone.js","webpack:///nextcloud/core/src/OC/config.js","webpack:///nextcloud/core/src/OC/contactsmenu.js","webpack:///nextcloud/core/src/OC/currentuser.js","webpack:///nextcloud/core/src/OCA/index.js","webpack:///nextcloud/core/src/OCA/search.js","webpack:///nextcloud/core/src/OC/dialogs.js","webpack:///nextcloud/core/src/OC/requesttoken.js","webpack:///nextcloud/core/src/OC/eventsource.js","webpack:///nextcloud/core/src/OC/menu.js","webpack:///nextcloud/core/src/OC/constants.js","webpack:///nextcloud/core/src/OC/admin.js","webpack:///nextcloud/core/src/OC/l10n-registry.js","webpack:///nextcloud/core/src/OC/l10n.js","webpack:///nextcloud/core/src/OC/msg.js","webpack:///nextcloud/core/src/OC/password-confirmation.js","webpack:///nextcloud/core/src/OC/theme.js","webpack:///nextcloud/core/src/OC/util-history.js","webpack:///nextcloud/core/src/OC/util.js","webpack:///nextcloud/core/src/OC/debug.js","webpack:///nextcloud/core/src/OC/webroot.js","webpack:///nextcloud/core/src/OC/get_set.js","webpack:///nextcloud/core/src/OC/index.js","webpack:///nextcloud/core/src/OC/appsettings.js","webpack:///nextcloud/core/src/OC/capabilities.js","webpack:///nextcloud/core/src/OC/host.js","webpack:///nextcloud/core/src/OC/query-string.js","webpack:///nextcloud/core/src/OC/plugins.js","webpack:///nextcloud/core/src/OC/navigation.js","webpack:///nextcloud/core/src/OC/routing.js","webpack:///nextcloud/core/src/views/Login.vue?vue&type=template&id=cdd35698&","webpack:///nextcloud/core/src/components/login/LoginButton.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/login/LoginButton.vue","webpack://nextcloud/./core/src/components/login/LoginButton.vue?14f0","webpack:///nextcloud/core/src/components/login/LoginButton.vue?vue&type=template&id=125b100b&scoped=true&","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/login/LoginForm.vue","webpack://nextcloud/./core/src/components/login/LoginForm.vue?a678","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=template&id=0b3a0522&scoped=true&","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/services/WebAuthnAuthenticationService.js","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?d427","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?09eb","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=template&id=4f29a6e2&scoped=true&","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/login/ResetPassword.vue","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?0bfe","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?9d75","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=template&id=d9d670b8&scoped=true&","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?9464","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?30ca","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=template&id=9ae5fdb4&scoped=true&","webpack:///nextcloud/core/src/views/Login.vue","webpack:///nextcloud/core/src/views/Login.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/views/Login.vue?8b77","webpack://nextcloud/./core/src/views/Login.vue?3468","webpack:///nextcloud/core/src/mixins/Nextcloud.js","webpack:///nextcloud/core/src/login.js","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=style&index=0&id=4f29a6e2&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=style&index=0&id=d9d670b8&scoped=true&lang=css&","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=style&index=0&id=9ae5fdb4&scoped=true&lang=css&","webpack:///nextcloud/core/src/views/Login.vue?vue&type=style&index=0&lang=css&","webpack:///nextcloud/core/src/OC/contactsmenu/contact.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/error.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/list.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/loading.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/menu.handlebars","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","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 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\nimport { generateFilePath } from '@nextcloud/router'\n\nconst loadedScripts = {}\nconst loadedStyles = []\n\n/**\n * Load a script for the server and load it. If the script is already loaded,\n * the event handler will be called directly\n *\n * @param {string} app the app id to which the script belongs\n * @param {string} script the filename of the script\n * @param {Function} ready event handler to be called when the script is loaded\n * @return {jQuery.Deferred}\n * @deprecated 16.0.0 Use OCP.Loader.loadScript\n */\nexport const addScript = (app, script, ready) => {\n\tconsole.warn('OC.addScript is deprecated, use OCP.Loader.loadScript instead')\n\n\tlet deferred\n\tconst path = generateFilePath(app, 'js', script + '.js')\n\tif (!loadedScripts[path]) {\n\t\tdeferred = $.Deferred()\n\t\t$.getScript(path, () => deferred.resolve())\n\t\tloadedScripts[path] = deferred\n\t} else {\n\t\tif (ready) {\n\t\t\tready()\n\t\t}\n\t}\n\treturn loadedScripts[path]\n}\n\n/**\n * Loads a CSS file\n *\n * @param {string} app the app id to which the css style belongs\n * @param {string} style the filename of the css file\n * @deprecated 16.0.0 Use OCP.Loader.loadStylesheet\n */\nexport const addStyle = (app, style) => {\n\tconsole.warn('OC.addStyle is deprecated, use OCP.Loader.loadStylesheet instead')\n\n\tconst path = generateFilePath(app, 'css', style + '.css')\n\tif (loadedStyles.indexOf(path) === -1) {\n\t\tloadedStyles.push(path)\n\t\tif (document.createStyleSheet) {\n\t\t\tdocument.createStyleSheet(path)\n\t\t} else {\n\t\t\tstyle = $('<link rel=\"stylesheet\" type=\"text/css\" href=\"' + path + '\"/>')\n\t\t\t$('head').append(style)\n\t\t}\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author npmbuildbot[bot] \"npmbuildbot[bot]@users.noreply.github.com\"\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 */\n\nimport _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\nimport { showMessage, TOAST_DEFAULT_TIMEOUT, TOAST_PERMANENT_TIMEOUT } from '@nextcloud/dialogs'\n\n/**\n * @todo Write documentation\n * @deprecated 17.0.0 use the `@nextcloud/dialogs` package instead\n * @namespace OC.Notification\n */\nexport default {\n\n\tupdatableNotification: null,\n\n\tgetDefaultNotificationFunction: null,\n\n\t/**\n\t * @param {Function} callback callback function\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tsetDefault(callback) {\n\t\tthis.getDefaultNotificationFunction = callback\n\t},\n\n\t/**\n\t * Hides a notification.\n\t *\n\t * If a row is given, only hide that one.\n\t * If no row is given, hide all notifications.\n\t *\n\t * @param {jQuery} [$row] notification row\n\t * @param {Function} [callback] callback\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\thide($row, callback) {\n\t\tif (_.isFunction($row)) {\n\t\t\t// first arg is the callback\n\t\t\tcallback = $row\n\t\t\t$row = undefined\n\t\t}\n\n\t\tif (!$row) {\n\t\t\tconsole.error('Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification')\n\t\t\treturn\n\t\t}\n\n\t\t// remove the row directly\n\t\t$row.each(function() {\n\t\t\tif ($(this)[0].toastify) {\n\t\t\t\t$(this)[0].toastify.hideToast()\n\t\t\t} else {\n\t\t\t\tconsole.error('cannot hide toast because object is not set')\n\t\t\t}\n\t\t\tif (this === this.updatableNotification) {\n\t\t\t\tthis.updatableNotification = null\n\t\t\t}\n\t\t})\n\t\tif (callback) {\n\t\t\tcallback.call()\n\t\t}\n\t\tif (this.getDefaultNotificationFunction) {\n\t\t\tthis.getDefaultNotificationFunction()\n\t\t}\n\t},\n\n\t/**\n\t * Shows a notification as HTML without being sanitized before.\n\t * If you pass unsanitized user input this may lead to a XSS vulnerability.\n\t * Consider using show() instead of showHTML()\n\t *\n\t * @param {string} html Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout=0] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowHtml(html, options) {\n\t\toptions = options || {}\n\t\toptions.isHTML = true\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(html, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Shows a sanitized notification\n\t *\n\t * @param {string} text Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout=0] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshow(text, options) {\n\t\tconst escapeHTML = function(text) {\n\t\t\treturn text.toString()\n\t\t\t\t.split('&').join('&amp;')\n\t\t\t\t.split('<').join('&lt;')\n\t\t\t\t.split('>').join('&gt;')\n\t\t\t\t.split('\"').join('&quot;')\n\t\t\t\t.split('\\'').join('&#039;')\n\t\t}\n\n\t\toptions = options || {}\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(escapeHTML(text), options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Updates (replaces) a sanitized notification.\n\t *\n\t * @param {string} text Message to display\n\t * @return {jQuery} JQuery element for notificaiton row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowUpdate(text) {\n\t\tif (this.updatableNotification) {\n\t\t\tthis.updatableNotification.hideToast()\n\t\t}\n\t\tthis.updatableNotification = showMessage(text, { timeout: TOAST_PERMANENT_TIMEOUT })\n\t\tthis.updatableNotification.toastElement.toastify = this.updatableNotification\n\t\treturn $(this.updatableNotification.toastElement)\n\t},\n\n\t/**\n\t * Shows a notification that disappears after x seconds, default is\n\t * 7 seconds\n\t *\n\t * @param {string} text Message to show\n\t * @param {Array} [options] options array\n\t * @param {number} [options.timeout=7] timeout in seconds, if this is 0 it will show the message permanently\n\t * @param {boolean} [options.isHTML=false] an indicator for HTML notifications (true) or text (false)\n\t * @param {string} [options.type] notification type\n\t * @return {JQuery} the toast element\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowTemporary(text, options) {\n\t\toptions = options || {}\n\t\toptions.timeout = options.timeout || TOAST_DEFAULT_TIMEOUT\n\t\tconst toast = showMessage(text, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Returns whether a notification is hidden.\n\t *\n\t * @return {boolean}\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tisHidden() {\n\t\treturn !$('#content').find('.toastify').length\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\n\nimport OC from './index'\nimport Notification from './notification'\n\n/**\n * Warn users that the connection to the server was lost temporarily\n *\n * This function is throttled to prevent stacked notfications.\n * After 7sec the first notification is gone, then we can show another one\n * if necessary.\n */\nexport const ajaxConnectionLostHandler = _.throttle(() => {\n\tNotification.showTemporary(t('core', 'Connection to server lost'))\n}, 7 * 1000, { trailing: false })\n\n/**\n * Process ajax error, redirects to main page\n * if an error/auth error status was returned.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const processAjaxError = xhr => {\n\t// purposefully aborted request ?\n\t// OC._userIsNavigatingAway needed to distinguish ajax calls cancelled by navigating away\n\t// from calls cancelled by failed cross-domain ajax due to SSO redirect\n\tif (xhr.status === 0 && (xhr.statusText === 'abort' || xhr.statusText === 'timeout' || OC._reloadCalled)) {\n\t\treturn\n\t}\n\n\tif (_.contains([302, 303, 307, 401], xhr.status) && OC.currentUser) {\n\t\t// sometimes \"beforeunload\" happens later, so need to defer the reload a bit\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\tlet timer = 0\n\t\t\t\tconst seconds = 5\n\t\t\t\tconst interval = setInterval(function() {\n\t\t\t\t\tNotification.showUpdate(n('core', 'Problem loading page, reloading in %n second', 'Problem loading page, reloading in %n seconds', seconds - timer))\n\t\t\t\t\tif (timer >= seconds) {\n\t\t\t\t\t\tclearInterval(interval)\n\t\t\t\t\t\tOC.reload()\n\t\t\t\t\t}\n\t\t\t\t\ttimer++\n\t\t\t\t}, 1000 // 1 second interval\n\t\t\t\t)\n\n\t\t\t\t// only call reload once\n\t\t\t\tOC._reloadCalled = true\n\t\t\t}\n\t\t}, 100)\n\t} else if (xhr.status === 0) {\n\t\t// Connection lost (e.g. WiFi disconnected or server is down)\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\t// TODO: call method above directly\n\t\t\t\tOC._ajaxConnectionLostHandler()\n\t\t\t}\n\t\t}, 100)\n\t}\n}\n\n/**\n * Registers XmlHttpRequest object for global error processing.\n *\n * This means that if this XHR object returns 401 or session timeout errors,\n * the current page will automatically be reloaded.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const registerXHRForErrorProcessing = xhr => {\n\tconst loadCallback = () => {\n\t\tif (xhr.readyState !== 4) {\n\t\t\treturn\n\t\t}\n\n\t\tif ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) {\n\t\t\treturn\n\t\t}\n\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tconst errorCallback = () => {\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tif (xhr.addEventListener) {\n\t\txhr.addEventListener('load', loadCallback)\n\t\txhr.addEventListener('error', errorCallback)\n\t}\n\n}\n","/**\n * @copyright Bernhard Posselt 2014\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport $ from 'jquery'\n\nlet dynamicSlideToggleEnabled = false\n\nconst Apps = {\n\tenableDynamicSlideToggle() {\n\t\tdynamicSlideToggleEnabled = true\n\t},\n}\n\n/**\n * Shows the #app-sidebar and add .with-app-sidebar to subsequent siblings\n *\n * @param {object} [$el] sidebar element to show, defaults to $('#app-sidebar')\n */\nApps.showAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.removeClass('disappear').show()\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Shows the #app-sidebar and removes .with-app-sidebar from subsequent\n * siblings\n *\n * @param {object} [$el] sidebar element to hide, defaults to $('#app-sidebar')\n */\nApps.hideAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.hide().addClass('disappear')\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Provides a way to slide down a target area through a button and slide it\n * up if the user clicks somewhere else. Used for the news app settings and\n * add new field.\n *\n * Usage:\n * <button data-apps-slide-toggle=\".slide-area\">slide</button>\n * <div class=\".slide-area\" class=\"hidden\">I'm sliding up</div>\n */\nexport const registerAppsSlideToggle = () => {\n\tlet buttons = $('[data-apps-slide-toggle]')\n\n\tif (buttons.length === 0) {\n\t\t$('#app-navigation').addClass('without-app-settings')\n\t}\n\n\t$(document).click(function(event) {\n\n\t\tif (dynamicSlideToggleEnabled) {\n\t\t\tbuttons = $('[data-apps-slide-toggle]')\n\t\t}\n\n\t\tbuttons.each(function(index, button) {\n\n\t\t\tconst areaSelector = $(button).data('apps-slide-toggle')\n\t\t\tconst area = $(areaSelector)\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction hideArea() {\n\t\t\t\tarea.slideUp(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('hide'))\n\t\t\t\t})\n\t\t\t\tarea.removeClass('opened')\n\t\t\t\t$(button).removeClass('opened')\n\t\t\t}\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction showArea() {\n\t\t\t\tarea.slideDown(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('show'))\n\t\t\t\t})\n\t\t\t\tarea.addClass('opened')\n\t\t\t\t$(button).addClass('opened')\n\t\t\t\tconst input = $(areaSelector + ' [autofocus]')\n\t\t\t\tif (input.length === 1) {\n\t\t\t\t\tinput.focus()\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// do nothing if the area is animated\n\t\t\tif (!area.is(':animated')) {\n\n\t\t\t\t// button toggles the area\n\t\t\t\tif ($(button).is($(event.target).closest('[data-apps-slide-toggle]'))) {\n\t\t\t\t\tif (area.is(':visible')) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tshowArea()\n\t\t\t\t\t}\n\n\t\t\t\t\t// all other areas that have not been clicked but are open\n\t\t\t\t\t// should be slid up\n\t\t\t\t} else {\n\t\t\t\t\tconst closest = $(event.target).closest(areaSelector)\n\t\t\t\t\tif (area.is(':visible') && closest[0] !== area[0]) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t})\n}\n\nexport default Apps\n","/**\n * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport $ from 'jquery'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nimport OC from '../OC/index'\n\n/**\n * @param {string} method 'post' or 'delete'\n * @param {string} endpoint endpoint\n * @param {object} [options] destructuring object\n * @param {object} [options.data] option data\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n */\nfunction call(method, endpoint, options) {\n\tif ((method === 'post' || method === 'delete') && OC.PasswordConfirmation.requiresPasswordConfirmation()) {\n\t\tOC.PasswordConfirmation.requirePasswordConfirmation(_.bind(call, this, method, endpoint, options))\n\t\treturn\n\t}\n\n\toptions = options || {}\n\t$.ajax({\n\t\ttype: method.toUpperCase(),\n\t\turl: generateOcsUrl('apps/provisioning_api/api/v1/config/apps') + endpoint,\n\t\tdata: options.data || {},\n\t\tsuccess: options.success,\n\t\terror: options.error,\n\t})\n}\n\n/**\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @since 11.0.0\n */\nexport function getApps(options) {\n\tcall('get', '', options)\n}\n\n/**\n * @param {string} app app id\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getKeys(app, options) {\n\tcall('get', '/' + app, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string | Function} defaultValue default value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getValue(app, key, defaultValue, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tdefaultValue,\n\t}\n\n\tcall('get', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string} value value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function setValue(app, key, value, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tvalue,\n\t}\n\n\tcall('post', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function deleteKey(app, key, options) {\n\tcall('delete', '/' + app + '/' + key, options)\n}\n","/**\n * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Jörn Friedrich Dreyer <jfd@butonic.de>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n/* eslint-disable */\n import { getValue, setValue, getApps, getKeys, deleteKey } from '../OCP/appconfig'\n\nexport const appConfig = window.oc_appconfig || {}\n\n/**\n * @namespace\n * @deprecated 16.0.0 Use OCP.AppConfig instead\n */\nexport const AppConfig = {\n\t/**\n\t * @deprecated Use OCP.AppConfig.getValue() instead\n\t */\n\tgetValue: function(app, key, defaultValue, callback) {\n\t\tgetValue(app, key, defaultValue, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.setValue() instead\n\t */\n\tsetValue: function(app, key, value) {\n\t\tsetValue(app, key, value)\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getApps() instead\n\t */\n\tgetApps: function(callback) {\n\t\tgetApps({\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getKeys() instead\n\t */\n\tgetKeys: function(app, callback) {\n\t\tgetKeys(app, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.deleteKey() instead\n\t */\n\tdeleteKey: function(app, key) {\n\t\tdeleteKey(app, key)\n\t}\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 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 */\n\nconst appswebroots = (window._oc_appswebroots !== undefined) ? window._oc_appswebroots : false\n\nexport default appswebroots\n","/**\n * Copyright (c) 2015\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport { dav } from 'davclient.js'\n\nconst methodMap = {\n\tcreate: 'POST',\n\tupdate: 'PROPPATCH',\n\tpatch: 'PROPPATCH',\n\tdelete: 'DELETE',\n\tread: 'PROPFIND'\n}\n\n// Throw an error when a URL is needed, and none is supplied.\nfunction urlError() {\n\tthrow new Error('A \"url\" property or function must be specified')\n}\n\n/**\n * Convert a single propfind result to JSON\n *\n * @param {Object} result\n * @param {Object} davProperties properties mapping\n */\nfunction parsePropFindResult(result, davProperties) {\n\tif (_.isArray(result)) {\n\t\treturn _.map(result, function(subResult) {\n\t\t\treturn parsePropFindResult(subResult, davProperties)\n\t\t})\n\t}\n\tvar props = {\n\t\thref: result.href\n\t}\n\n\t_.each(result.propStat, function(propStat) {\n\t\tif (propStat.status !== 'HTTP/1.1 200 OK') {\n\t\t\treturn\n\t\t}\n\n\t\tfor (var key in propStat.properties) {\n\t\t\tvar propKey = key\n\t\t\tif (key in davProperties) {\n\t\t\t\tpropKey = davProperties[key]\n\t\t\t}\n\t\t\tprops[propKey] = propStat.properties[key]\n\t\t}\n\t})\n\n\tif (!props.id) {\n\t\t// parse id from href\n\t\tprops.id = parseIdFromLocation(props.href)\n\t}\n\n\treturn props\n}\n\n/**\n * Parse ID from location\n *\n * @param {string} url url\n * @returns {string} id\n */\nfunction parseIdFromLocation(url) {\n\tvar queryPos = url.indexOf('?')\n\tif (queryPos > 0) {\n\t\turl = url.substr(0, queryPos)\n\t}\n\n\tvar parts = url.split('/')\n\tvar result\n\tdo {\n\t\tresult = parts[parts.length - 1]\n\t\tparts.pop()\n\t\t// note: first result can be empty when there is a trailing slash,\n\t\t// so we take the part before that\n\t} while (!result && parts.length > 0)\n\n\treturn result\n}\n\nfunction isSuccessStatus(status) {\n\treturn status >= 200 && status <= 299\n}\n\nfunction convertModelAttributesToDavProperties(attrs, davProperties) {\n\tvar props = {}\n\tvar key\n\tfor (key in attrs) {\n\t\tvar changedProp = davProperties[key]\n\t\tvar value = attrs[key]\n\t\tif (!changedProp) {\n\t\t\tconsole.warn('No matching DAV property for property \"' + key)\n\t\t\tchangedProp = key\n\t\t}\n\t\tif (_.isBoolean(value) || _.isNumber(value)) {\n\t\t\t// convert to string\n\t\t\tvalue = '' + value\n\t\t}\n\t\tprops[changedProp] = value\n\t}\n\treturn props\n}\n\nfunction callPropFind(client, options, model, headers) {\n\treturn client.propFind(\n\t\toptions.url,\n\t\t_.values(options.davProperties) || [],\n\t\toptions.depth,\n\t\theaders\n\t).then(function(response) {\n\t\tif (isSuccessStatus(response.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\tvar results = parsePropFindResult(response.body, propsMapping)\n\t\t\t\tif (options.depth > 0) {\n\t\t\t\t\t// discard root entry\n\t\t\t\t\tresults.shift()\n\t\t\t\t}\n\n\t\t\t\toptions.success(results)\n\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(response)\n\t\t}\n\t})\n}\n\nfunction callPropPatch(client, options, model, headers) {\n\treturn client.propPatch(\n\t\toptions.url,\n\t\tconvertModelAttributesToDavProperties(model.changed, options.davProperties),\n\t\theaders\n\t).then(function(result) {\n\t\tif (isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return the updated model\n\t\t\t\toptions.success(model.toJSON())\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(result)\n\t\t}\n\t})\n\n}\n\nfunction callMkCol(client, options, model, headers) {\n\t// call MKCOL without data, followed by PROPPATCH\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\tnull\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tcallPropPatch(client, options, model, headers)\n\t})\n}\n\nfunction callMethod(client, options, model, headers) {\n\theaders['Content-Type'] = 'application/json'\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\toptions.data\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tif (_.isFunction(options.success)) {\n\t\t\tif (options.type === 'PUT' || options.type === 'POST' || options.type === 'MKCOL') {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return anything\n\t\t\t\tvar responseJson = result.body || model.toJSON()\n\t\t\t\tvar locationHeader = result.xhr.getResponseHeader('Content-Location')\n\t\t\t\tif (options.type === 'POST' && locationHeader) {\n\t\t\t\t\tresponseJson.id = parseIdFromLocation(locationHeader)\n\t\t\t\t}\n\t\t\t\toptions.success(responseJson)\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// if multi-status, parse\n\t\t\tif (result.status === 207) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\toptions.success(parsePropFindResult(result.body, propsMapping))\n\t\t\t} else {\n\t\t\t\toptions.success(result.body)\n\t\t\t}\n\t\t}\n\t})\n}\n\nexport const davCall = (options, model) => {\n\tvar client = new dav.Client({\n\t\tbaseUrl: options.url,\n\t\txmlNamespaces: _.extend({\n\t\t\t'DAV:': 'd',\n\t\t\t'http://owncloud.org/ns': 'oc'\n\t\t}, options.xmlNamespaces || {})\n\t})\n\tclient.resolveUrl = function() {\n\t\treturn options.url\n\t}\n\tvar headers = _.extend({\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t'requesttoken': OC.requestToken\n\t}, options.headers)\n\tif (options.type === 'PROPFIND') {\n\t\treturn callPropFind(client, options, model, headers)\n\t} else if (options.type === 'PROPPATCH') {\n\t\treturn callPropPatch(client, options, model, headers)\n\t} else if (options.type === 'MKCOL') {\n\t\treturn callMkCol(client, options, model, headers)\n\t} else {\n\t\treturn callMethod(client, options, model, headers)\n\t}\n}\n\n/**\n * DAV transport\n */\nexport const davSync = Backbone => (method, model, options) => {\n\tvar params = { type: methodMap[method] || method }\n\tvar isCollection = (model instanceof Backbone.Collection)\n\n\tif (method === 'update') {\n\t\t// if a model has an inner collection, it must define an\n\t\t// attribute \"hasInnerCollection\" that evaluates to true\n\t\tif (model.hasInnerCollection) {\n\t\t\t// if the model itself is a Webdav collection, use MKCOL\n\t\t\tparams.type = 'MKCOL'\n\t\t} else if (model.usePUT || (model.collection && model.collection.usePUT)) {\n\t\t\t// use PUT instead of PROPPATCH\n\t\t\tparams.type = 'PUT'\n\t\t}\n\t}\n\n\t// Ensure that we have a URL.\n\tif (!options.url) {\n\t\tparams.url = _.result(model, 'url') || urlError()\n\t}\n\n\t// Ensure that we have the appropriate request data.\n\tif (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n\t\tparams.data = JSON.stringify(options.attrs || model.toJSON(options))\n\t}\n\n\t// Don't process data on a non-GET request.\n\tif (params.type !== 'PROPFIND') {\n\t\tparams.processData = false\n\t}\n\n\tif (params.type === 'PROPFIND' || params.type === 'PROPPATCH') {\n\t\tvar davProperties = model.davProperties\n\t\tif (!davProperties && model.model) {\n\t\t\t// use dav properties from model in case of collection\n\t\t\tdavProperties = model.model.prototype.davProperties\n\t\t}\n\t\tif (davProperties) {\n\t\t\tif (_.isFunction(davProperties)) {\n\t\t\t\tparams.davProperties = davProperties.call(model)\n\t\t\t} else {\n\t\t\t\tparams.davProperties = davProperties\n\t\t\t}\n\t\t}\n\n\t\tparams.davProperties = _.extend(params.davProperties || {}, options.davProperties)\n\n\t\tif (_.isUndefined(options.depth)) {\n\t\t\tif (isCollection) {\n\t\t\t\toptions.depth = 1\n\t\t\t} else {\n\t\t\t\toptions.depth = 0\n\t\t\t}\n\t\t}\n\t}\n\n\t// Pass along `textStatus` and `errorThrown` from jQuery.\n\tvar error = options.error\n\toptions.error = function(xhr, textStatus, errorThrown) {\n\t\toptions.textStatus = textStatus\n\t\toptions.errorThrown = errorThrown\n\t\tif (error) {\n\t\t\terror.call(options.context, xhr, textStatus, errorThrown)\n\t\t}\n\t}\n\n\t// Make the request, allowing the user to override any Ajax options.\n\tvar xhr = options.xhr = Backbone.davCall(_.extend(params, options), model)\n\tmodel.trigger('request', model, xhr, options)\n\treturn xhr\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport VendorBackbone from 'backbone'\nimport { davCall, davSync } from './backbone-webdav'\n\nconst Backbone = VendorBackbone.noConflict()\n\n// Patch Backbone for DAV\nObject.assign(Backbone, {\n\tdavCall,\n\tdavSync: davSync(Backbone),\n})\n\nexport default Backbone\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 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 */\n\nconst config = window._oc_config || {}\n\nexport default config\n","/**\n * @copyright 2017 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport { Collection, Model, View } from 'backbone'\n\nimport OC from './index'\n\n/**\n * @class Contact\n */\nconst Contact = Model.extend({\n\tdefaults: {\n\t\tfullName: '',\n\t\tlastMessage: '',\n\t\tactions: [],\n\t\thasOneAction: false,\n\t\thasTwoActions: false,\n\t\thasManyActions: false\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\tinitialize: function() {\n\t\t// Add needed property for easier template rendering\n\t\tif (this.get('actions').length === 0) {\n\t\t\tthis.set('hasOneAction', true)\n\t\t} else if (this.get('actions').length === 1) {\n\t\t\tthis.set('hasTwoActions', true)\n\t\t\tthis.set('secondAction', this.get('actions')[0])\n\t\t} else {\n\t\t\tthis.set('hasManyActions', true)\n\t\t}\n\t}\n})\n\n/**\n * @class ContactCollection\n * @private\n */\nconst ContactCollection = Collection.extend({\n\tmodel: Contact\n})\n\n/**\n * @class ContactsListView\n * @private\n */\nconst ContactsListView = View.extend({\n\n\t/** @type {ContactCollection} */\n\t_collection: undefined,\n\n\t/** @type {array} */\n\t_subViews: [],\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis._collection = options.collection\n\t},\n\n\t/**\n\t * @returns {self}\n\t */\n\trender: function() {\n\t\tvar self = this\n\t\tself.$el.html('')\n\t\tself._subViews = []\n\n\t\tself._collection.forEach(function(contact) {\n\t\t\tvar item = new ContactsListItemView({\n\t\t\t\tmodel: contact\n\t\t\t})\n\t\t\titem.render()\n\t\t\tself.$el.append(item.$el)\n\t\t\titem.on('toggle:actionmenu', self._onChildActionMenuToggle, self)\n\t\t\tself._subViews.push(item)\n\t\t})\n\n\t\treturn self\n\t},\n\n\t/**\n\t * Event callback to propagate opening (another) entry's action menu\n\t *\n\t * @param {type} $src\n\t * @returns {undefined}\n\t */\n\t_onChildActionMenuToggle: function($src) {\n\t\tthis._subViews.forEach(function(view) {\n\t\t\tview.trigger('parent:toggle:actionmenu', $src)\n\t\t})\n\t}\n})\n\n/**\n * @class ContactsListItemView\n * @private\n */\nconst ContactsListItemView = View.extend({\n\n\t/** @type {string} */\n\tclassName: 'contact',\n\n\t/** @type {undefined|function} */\n\t_template: undefined,\n\n\t/** @type {Contact} */\n\t_model: undefined,\n\n\t/** @type {boolean} */\n\t_actionMenuShown: false,\n\n\tevents: {\n\t\t'click .icon-more': '_onToggleActionsMenu'\n\t},\n\n\tcontactTemplate: require('./contactsmenu/contact.handlebars'),\n\n\t/**\n\t * @param {object} data\n\t * @returns {undefined}\n\t */\n\ttemplate: function(data) {\n\t\treturn this.contactTemplate(data)\n\t},\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis._model = options.model\n\t\tthis.on('parent:toggle:actionmenu', this._onOtherActionMenuOpened, this)\n\t},\n\n\t/**\n\t * @returns {self}\n\t */\n\trender: function() {\n\t\tthis.$el.html(this.template({\n\t\t\tcontact: this._model.toJSON()\n\t\t}))\n\t\tthis.delegateEvents()\n\n\t\t// Show placeholder if no avatar is available (avatar is rendered as img, not div)\n\t\tthis.$('div.avatar').imageplaceholder(this._model.get('fullName'))\n\n\t\t// Show tooltip for top action\n\t\tthis.$('.top-action').tooltip({ placement: 'left' })\n\t\t// Show tooltip for second action\n\t\tthis.$('.second-action').tooltip({ placement: 'left' })\n\n\t\treturn this\n\t},\n\n\t/**\n\t * Toggle the visibility of the action popover menu\n\t *\n\t * @private\n\t * @returns {undefined}\n\t */\n\t_onToggleActionsMenu: function() {\n\t\tthis._actionMenuShown = !this._actionMenuShown\n\t\tif (this._actionMenuShown) {\n\t\t\tthis.$('.menu').show()\n\t\t} else {\n\t\t\tthis.$('.menu').hide()\n\t\t}\n\t\tthis.trigger('toggle:actionmenu', this.$el)\n\t},\n\n\t/**\n\t * @private\n\t * @argument {jQuery} $src\n\t * @returns {undefined}\n\t */\n\t_onOtherActionMenuOpened: function($src) {\n\t\tif (this.$el.is($src)) {\n\t\t\t// Ignore\n\t\t\treturn\n\t\t}\n\t\tthis._actionMenuShown = false\n\t\tthis.$('.menu').hide()\n\t}\n})\n\n/**\n * @class ContactsMenuView\n * @private\n */\nconst ContactsMenuView = View.extend({\n\n\t/** @type {undefined|function} */\n\t_loadingTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_errorTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_contentTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_contactsTemplate: undefined,\n\n\t/** @type {undefined|ContactCollection} */\n\t_contacts: undefined,\n\n\t/** @type {string} */\n\t_searchTerm: '',\n\n\tevents: {\n\t\t'input #contactsmenu-search': '_onSearch'\n\t},\n\n\ttemplates: {\n\t\tloading: require('./contactsmenu/loading.handlebars'),\n\t\terror: require('./contactsmenu/error.handlebars'),\n\t\tmenu: require('./contactsmenu/menu.handlebars'),\n\t\tlist: require('./contactsmenu/list.handlebars')\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\t_onSearch: _.debounce(function(e) {\n\t\tvar searchTerm = this.$('#contactsmenu-search').val()\n\t\t// IE11 triggers an 'input' event after the view has been rendered\n\t\t// resulting in an endless loading loop. To prevent this, we remember\n\t\t// the last search term to savely ignore some events\n\t\t// See https://github.com/nextcloud/server/issues/5281\n\t\tif (searchTerm !== this._searchTerm) {\n\t\t\tthis.trigger('search', this.$('#contactsmenu-search').val())\n\t\t\tthis._searchTerm = searchTerm\n\t\t}\n\t}, 700),\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tloadingTemplate: function(data) {\n\t\treturn this.templates.loading(data)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\terrorTemplate: function(data) {\n\t\treturn this.templates.error(\n\t\t\t_.extend({\n\t\t\t\tcouldNotLoadText: t('core', 'Could not load your contacts')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tcontentTemplate: function(data) {\n\t\treturn this.templates.menu(\n\t\t\t_.extend({\n\t\t\t\tsearchContactsText: t('core', 'Search contacts …')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tcontactsTemplate: function(data) {\n\t\treturn this.templates.list(\n\t\t\t_.extend({\n\t\t\t\tnoContactsFoundText: t('core', 'No contacts found'),\n\t\t\t\tshowAllContactsText: t('core', 'Show all contacts …'),\n\t\t\t\tcontactsAppMgmtText: t('core', 'Install the Contacts app')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis.options = options\n\t},\n\n\t/**\n\t * @param {string} text\n\t * @returns {undefined}\n\t */\n\tshowLoading: function(text) {\n\t\tthis.render()\n\t\tthis._contacts = undefined\n\t\tthis.$('.content').html(this.loadingTemplate({\n\t\t\tloadingText: text\n\t\t}))\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\tshowError: function() {\n\t\tthis.render()\n\t\tthis._contacts = undefined\n\t\tthis.$('.content').html(this.errorTemplate())\n\t},\n\n\t/**\n\t * @param {object} viewData\n\t * @param {string} searchTerm\n\t * @returns {undefined}\n\t */\n\tshowContacts: function(viewData, searchTerm) {\n\t\tthis._contacts = viewData.contacts\n\t\tthis.render({\n\t\t\tcontacts: viewData.contacts\n\t\t})\n\n\t\tvar list = new ContactsListView({\n\t\t\tcollection: viewData.contacts\n\t\t})\n\t\tlist.render()\n\t\tthis.$('.content').html(this.contactsTemplate({\n\t\t\tcontacts: viewData.contacts,\n\t\t\tsearchTerm: searchTerm,\n\t\t\tcontactsAppEnabled: viewData.contactsAppEnabled,\n\t\t\tcontactsAppURL: OC.generateUrl('/apps/contacts'),\n\t\t\tcanInstallApp: OC.isUserAdmin(),\n\t\t\tcontactsAppMgmtURL: OC.generateUrl('/settings/apps/social/contacts')\n\t\t}))\n\t\tthis.$('#contactsmenu-contacts').html(list.$el)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {self}\n\t */\n\trender: function(data) {\n\t\tvar searchVal = this.$('#contactsmenu-search').val()\n\t\tthis.$el.html(this.contentTemplate(data))\n\n\t\t// Focus search\n\t\tthis.$('#contactsmenu-search').val(searchVal)\n\t\tthis.$('#contactsmenu-search').focus()\n\t\treturn this\n\t}\n\n})\n\n/**\n * @param {Object} options\n * @param {jQuery} options.el\n * @param {jQuery} options.trigger\n * @class ContactsMenu\n * @memberOf OC\n */\nconst ContactsMenu = function(options) {\n\tthis.initialize(options)\n}\n\nContactsMenu.prototype = {\n\t/** @type {jQuery} */\n\t$el: undefined,\n\n\t/** @type {jQuery} */\n\t_$trigger: undefined,\n\n\t/** @type {ContactsMenuView} */\n\t_view: undefined,\n\n\t/** @type {Promise} */\n\t_contactsPromise: undefined,\n\n\t/**\n\t * @param {Object} options\n\t * @param {jQuery} options.el - the element to render the menu in\n\t * @param {jQuery} options.trigger - the element to click on to open the menu\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis.$el = options.el\n\t\tthis._$trigger = options.trigger\n\n\t\tthis._view = new ContactsMenuView({\n\t\t\tel: this.$el\n\t\t})\n\t\tthis._view.on('search', function(searchTerm) {\n\t\t\tthis._loadContacts(searchTerm)\n\t\t}, this)\n\n\t\tOC.registerMenu(this._$trigger, this.$el, function() {\n\t\t\tthis._toggleVisibility(true)\n\t\t}.bind(this), true)\n\t\tthis.$el.on('beforeHide', function() {\n\t\t\tthis._toggleVisibility(false)\n\t\t}.bind(this))\n\t},\n\n\t/**\n\t * @private\n\t * @param {boolean} show\n\t * @returns {Promise}\n\t */\n\t_toggleVisibility: function(show) {\n\t\tif (show) {\n\t\t\treturn this._loadContacts()\n\t\t} else {\n\t\t\tthis.$el.html('')\n\t\t\treturn Promise.resolve()\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t * @param {string|undefined} searchTerm\n\t * @returns {Promise}\n\t */\n\t_getContacts: function(searchTerm) {\n\t\tvar url = OC.generateUrl('/contactsmenu/contacts')\n\t\treturn Promise.resolve($.ajax(url, {\n\t\t\tmethod: 'POST',\n\t\t\tdata: {\n\t\t\t\tfilter: searchTerm\n\t\t\t}\n\t\t}))\n\t},\n\n\t/**\n\t * @param {string|undefined} searchTerm\n\t * @returns {undefined}\n\t */\n\t_loadContacts: function(searchTerm) {\n\t\tvar self = this\n\n\t\tif (!self._contactsPromise) {\n\t\t\tself._contactsPromise = self._getContacts(searchTerm)\n\t\t}\n\n\t\tif (_.isUndefined(searchTerm) || searchTerm === '') {\n\t\t\tself._view.showLoading(t('core', 'Loading your contacts …'))\n\t\t} else {\n\t\t\tself._view.showLoading(t('core', 'Looking for {term} …', {\n\t\t\t\tterm: searchTerm\n\t\t\t}))\n\t\t}\n\t\treturn self._contactsPromise.then(function(data) {\n\t\t\t// Convert contact entries to Backbone collection\n\t\t\tdata.contacts = new ContactCollection(data.contacts)\n\n\t\t\tself._view.showContacts(data, searchTerm)\n\t\t}, function(e) {\n\t\t\tself._view.showError()\n\t\t\tconsole.error('There was an error loading your contacts', e)\n\t\t}).then(function() {\n\t\t\t// Delete promise, so that contacts are fetched again when the\n\t\t\t// menu is opened the next time.\n\t\t\tdelete self._contactsPromise\n\t\t}).catch(console.error.bind(this))\n\t}\n}\n\nexport default ContactsMenu\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\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 */\n\nconst rawUid = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user')\nconst displayName = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user-displayname')\n\nexport const currentUser = rawUid !== undefined ? rawUid : false\n\nexport const getCurrentUser = () => {\n\treturn {\n\t\tuid: currentUser,\n\t\tdisplayName,\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 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 */\n\nimport Search from './search'\n\n/**\n * Namespace for apps\n *\n * @namespace OCA\n */\nexport default {\n\t/**\n\t * @deprecated 20.0.0, will be removed in Nextcloud 22\n\t */\n\tSearch,\n}\n","/**\n * @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 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 */\n\nexport default class Search {\n\n\t/**\n\t * @deprecated 20.0.0, will be removed in Nextcloud 22\n\t */\n\tconstructor() {\n\t\tconsole.warn('OCA.Search is deprecated. Please use the unified search API instead')\n\t}\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n * @copyright Copyright (c) 2019 Gary Kim <gary@garykim.dev>\n *\n * @author Bartek Przybylski <bart.p.pl@gmail.com>\n * @author Christopher Schäpers <kondou@ts.unde.re>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Daniel Kesselberg <mail@danielkesselberg.de>\n * @author Florian Schunk <florian.schunk@rwth-aachen.de>\n * @author Gary Kim <gary@garykim.dev>\n * @author Hendrik Leppelsack <hendrik@leppelsack.de>\n * @author Jan-Christoph Borchardt <hey@jancborchardt.net>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Jörn Friedrich Dreyer <jfd@butonic.de>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Loïc Hermann <loic.hermann@sciam.fr>\n * @author Morris Jobke <hey@morrisjobke.de>\n * @author Olivier Paroz <github@oparoz.com>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Sujith Haridasan <Sujith_Haridasan@mentor.com>\n * @author Thomas Citharel <nextcloud@tcit.fr>\n * @author Thomas Müller <thomas.mueller@tmit.eu>\n * @author Thomas Tanghus <thomas@tanghus.net>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport $ from 'jquery'\n\nimport OC from './index'\nimport OCA from '../OCA/index'\n\n/**\n * this class to ease the usage of jquery dialogs\n */\nconst Dialogs = {\n\t// dialog button types\n\tYES_NO_BUTTONS: 70,\n\tOK_BUTTONS: 71,\n\n\tFILEPICKER_TYPE_CHOOSE: 1,\n\tFILEPICKER_TYPE_MOVE: 2,\n\tFILEPICKER_TYPE_COPY: 3,\n\tFILEPICKER_TYPE_COPY_MOVE: 4,\n\tFILEPICKER_TYPE_CUSTOM: 5,\n\n\t// used to name each dialog\n\tdialogsCounter: 0,\n\n\t/**\n\t * displays alert dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t */\n\talert: function(text, title, callback, modal) {\n\t\tthis.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'alert',\n\t\t\tDialogs.OK_BUTTON,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\t/**\n\t * displays info dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t */\n\tinfo: function(text, title, callback, modal) {\n\t\tthis.message(text, title, 'info', Dialogs.OK_BUTTON, callback, modal)\n\t},\n\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirm: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {{type: Int, confirm: String, cancel: String, confirmClasses: String}} buttons text content of buttons\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirmDestructive: function(text, title, buttons, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'none',\n\t\t\tbuttons,\n\t\t\tcallback,\n\t\t\tmodal === undefined ? true : modal\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirmHtml: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal,\n\t\t\ttrue\n\t\t)\n\t},\n\t/**\n\t * displays prompt dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} name name of the input field\n\t * @param {boolean} password whether the input should be a password input\n\t * @returns {Promise}\n\t */\n\tprompt: function(text, title, callback, modal, name, password) {\n\t\treturn $.when(this._getMessageTemplate()).then(function($tmpl) {\n\t\t\tvar dialogName = 'oc-dialog-' + Dialogs.dialogsCounter + '-content'\n\t\t\tvar dialogId = '#' + dialogName\n\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\tmessage: text,\n\t\t\t\ttype: 'notice'\n\t\t\t})\n\t\t\tvar input = $('<input/>')\n\t\t\tinput.attr('type', password ? 'password' : 'text').attr('id', dialogName + '-input').attr('placeholder', name)\n\t\t\tvar label = $('<label/>').attr('for', dialogName + '-input').text(name + ': ')\n\t\t\t$dlg.append(label)\n\t\t\t$dlg.append(input)\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\t$('body').append($dlg)\n\n\t\t\t// wrap callback in _.once():\n\t\t\t// only call callback once and not twice (button handler and close\n\t\t\t// event) but call it for the close event, if ESC or the x is hit\n\t\t\tif (callback !== undefined) {\n\t\t\t\tcallback = _.once(callback)\n\t\t\t}\n\n\t\t\tvar buttonlist = [{\n\t\t\t\ttext: t('core', 'No'),\n\t\t\t\tclick: function() {\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(false, input.val())\n\t\t\t\t\t}\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\ttext: t('core', 'Yes'),\n\t\t\t\tclick: function() {\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(true, input.val())\n\t\t\t\t\t}\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t},\n\t\t\t\tdefaultButton: true\n\t\t\t}]\n\n\t\t\t$(dialogId).ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist,\n\t\t\t\tclose: function() {\n\t\t\t\t\t// callback is already fired if Yes/No is clicked directly\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(false, input.val())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\tinput.focus()\n\t\t\tDialogs.dialogsCounter++\n\t\t})\n\t},\n\t/**\n\t * show a file picker to pick a file from\n\t *\n\t * In order to pick several types of mime types they need to be passed as an\n\t * array of strings.\n\t *\n\t * When no mime type filter is given only files can be selected. In order to\n\t * be able to select both files and folders \"['*', 'httpd/unix-directory']\"\n\t * should be used instead.\n\t *\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses Choose\n\t * @param {boolean} [multiselect] whether it should be possible to select multiple files\n\t * @param {string[]} [mimetypeFilter] mimetype to filter by - directories will always be included\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} [type] Type of file picker : Choose, copy, move, copy and move\n\t * @param {string} [path] path to the folder that the the file can be picket from\n\t * @param {Object} [options] additonal options that need to be set\n\t * @param {Function} [options.filter] filter function for advanced filtering\n\t */\n\tfilepicker: function(title, callback, multiselect, mimetypeFilter, modal, type, path, options) {\n\t\tvar self = this\n\n\t\tthis.filepicker.sortField = 'name'\n\t\tthis.filepicker.sortOrder = 'asc'\n\t\t// avoid opening the picker twice\n\t\tif (this.filepicker.loading) {\n\t\t\treturn\n\t\t}\n\n\t\tif (type === undefined) {\n\t\t\ttype = this.FILEPICKER_TYPE_CHOOSE\n\t\t}\n\n\t\tvar emptyText = t('core', 'No files in here')\n\t\tvar newText = t('files', 'New folder')\n\t\tif (type === this.FILEPICKER_TYPE_COPY || type === this.FILEPICKER_TYPE_MOVE || type === this.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\temptyText = t('core', 'No more subfolders in here')\n\t\t}\n\n\t\tthis.filepicker.loading = true\n\t\tthis.filepicker.filesClient = (OCA.Sharing && OCA.Sharing.PublicApp && OCA.Sharing.PublicApp.fileList) ? OCA.Sharing.PublicApp.fileList.filesClient : OC.Files.getClient()\n\n\t\tthis.filelist = null\n\t\tpath = path || ''\n\t\toptions = Object.assign({\n\t\t\tallowDirectoryChooser: false\n\t\t}, options)\n\n\t\t$.when(this._getFilePickerTemplate()).then(function($tmpl) {\n\t\t\tself.filepicker.loading = false\n\t\t\tvar dialogName = 'oc-dialog-filepicker-content'\n\t\t\tif (self.$filePicker) {\n\t\t\t\tself.$filePicker.ocdialog('close')\n\t\t\t}\n\n\t\t\tif (mimetypeFilter === undefined || mimetypeFilter === null) {\n\t\t\t\tmimetypeFilter = []\n\t\t\t}\n\t\t\tif (typeof (mimetypeFilter) === 'string') {\n\t\t\t\tmimetypeFilter = [mimetypeFilter]\n\t\t\t}\n\n\t\t\tself.$filePicker = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\temptytext: emptyText,\n\t\t\t\tnewtext: newText,\n\t\t\t\tnameCol: t('core', 'Name'),\n\t\t\t\tsizeCol: t('core', 'Size'),\n\t\t\t\tmodifiedCol: t('core', 'Modified')\n\t\t\t}).data('path', path).data('multiselect', multiselect).data('mimetype', mimetypeFilter).data('allowDirectoryChooser', options.allowDirectoryChooser)\n\t\t\tif (typeof(options.filter) === 'function') {\n\t\t\t\tself.$filePicker.data('filter', options.filter)\n\t\t\t}\n\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\tif (multiselect === undefined) {\n\t\t\t\tmultiselect = false\n\t\t\t}\n\n\t\t\tself.$filePicker.find('#picker-view-toggle').remove()\n\t\t\tself.$filePicker.find('#picker-filestable').removeClass('view-grid')\n\n\t\t\t$('body').append(self.$filePicker)\n\n\t\t\tself.$showGridView = $('input#picker-showgridview')\n\t\t\tself.$showGridView.on('change', _.bind(self._onGridviewChange, self))\n\n\t\t\tself._getGridSettings()\n\n\t\t\tvar newButton = self.$filePicker.find('.actions.creatable .button-add')\n\t\t\tif (type === self.FILEPICKER_TYPE_CHOOSE && !options.allowDirectoryChooser) {\n\t\t\t\tnewButton.hide()\n\t\t\t}\n\t\t\tnewButton.on('focus', function() {\n\t\t\t\tself.$filePicker.ocdialog('setEnterCallback', function() {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tnewButton.click()\n\t\t\t\t})\n\t\t\t})\n\t\t\tnewButton.on('blur', function() {\n\t\t\t\tself.$filePicker.ocdialog('unsetEnterCallback')\n\t\t\t})\n\n\t\t\tOC.registerMenu(newButton, self.$filePicker.find('.menu'), function() {\n\t\t\t\t$input.tooltip('hide')\n\t\t\t\t$input.focus()\n\t\t\t\tself.$filePicker.ocdialog('setEnterCallback', function() {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tself.$filePicker.submit()\n\t\t\t\t})\n\t\t\t\tvar newName = $input.val()\n\t\t\t\tvar lastPos = newName.lastIndexOf('.')\n\t\t\t\tif (lastPos === -1) {\n\t\t\t\t\tlastPos = newName.length\n\t\t\t\t}\n\t\t\t\t$input.selectRange(0, lastPos)\n\t\t\t})\n\t\t\tvar $form = self.$filePicker.find('.filenameform')\n\t\t\tvar $input = $form.find('input[type=\\'text\\']')\n\t\t\tvar $submit = $form.find('input[type=\\'submit\\']')\n\t\t\t$submit.on('click', function(event) {\n\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\tevent.preventDefault()\n\t\t\t\t$form.submit()\n\t\t\t})\n\n\t\t\t/**\n\t\t\t * Checks whether the given file name is valid.\n\t\t\t *\n\t\t\t * @param name file name to check\n\t\t\t * @return true if the file name is valid.\n\t\t\t * @throws a string exception with an error message if\n\t\t\t * the file name is not valid\n\t\t\t *\n\t\t\t * NOTE: This function is duplicated in the files app:\n\t\t\t * https://github.com/nextcloud/server/blob/b9bc2417e7a8dc81feb0abe20359bedaf864f790/apps/files/js/files.js#L127-L148\n\t\t\t */\n\t\t\tvar isFileNameValid = function (name) {\n\t\t\t\tvar trimmedName = name.trim();\n\t\t\t\tif (trimmedName === '.' || trimmedName === '..')\n\t\t\t\t{\n\t\t\t\t\tthrow t('files', '\"{name}\" is an invalid file name.', {name: name})\n\t\t\t\t} else if (trimmedName.length === 0) {\n\t\t\t\t\tthrow t('files', 'File name cannot be empty.')\n\t\t\t\t} else if (trimmedName.indexOf('/') !== -1) {\n\t\t\t\t\tthrow t('files', '\"/\" is not allowed inside a file name.')\n\t\t\t\t} else if (!!(trimmedName.match(OC.config.blacklist_files_regex))) {\n\t\t\t\t\tthrow t('files', '\"{name}\" is not an allowed filetype', {name: name})\n\t\t\t\t}\n\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\tvar checkInput = function() {\n\t\t\t\tvar filename = $input.val()\n\t\t\t\ttry {\n\t\t\t\t\tif (!isFileNameValid(filename)) {\n\t\t\t\t\t\t// isFileNameValid(filename) throws an exception itself\n\t\t\t\t\t} else if (self.filelist.find(function(file) {\n\t\t\t\t\t\treturn file.name === this\n\t\t\t\t\t}, filename)) {\n\t\t\t\t\t\tthrow t('files', '{newName} already exists', { newName: filename }, undefined, {\n\t\t\t\t\t\t\tescape: false\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn true\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\t$input.attr('title', error)\n\t\t\t\t\t$input.tooltip({\n\t\t\t\t\t\tplacement: 'right',\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t'container': '.newFolderMenu'\n\t\t\t\t\t})\n\t\t\t\t\t$input.tooltip('_fixTitle')\n\t\t\t\t\t$input.tooltip('show')\n\t\t\t\t\t$input.addClass('error')\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t$form.on('submit', function(event) {\n\t\t\t\tevent.stopPropagation()\n\t\t\t\tevent.preventDefault()\n\n\t\t\t\tif (checkInput()) {\n\t\t\t\t\tvar newname = $input.val()\n\t\t\t\t\tself.filepicker.filesClient.createDirectory(self.$filePicker.data('path') + \"/\" + newname).always(function (status) {\n\t\t\t\t\t\tself._fillFilePicker(self.$filePicker.data('path') + \"/\" + newname)\n\t\t\t\t\t})\n\t\t\t\t\tOC.hideMenus()\n\t\t\t\t\tself.$filePicker.ocdialog('unsetEnterCallback')\n\t\t\t\t\tself.$filePicker.click()\n\t\t\t\t\t$input.val(newText)\n\t\t\t\t}\n\t\t\t})\n\t\t\t$input.keypress(function(event) {\n\t\t\t\tif (event.keyCode === 13 || event.which === 13) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t$form.submit()\n\t\t\t\t}\n\t\t\t})\n\t\t\t$input.on('input', function(event) {\n\t\t\t\t$input.tooltip('hide')\n\t\t\t})\n\n\t\t\tself.$filePicker.ready(function() {\n\t\t\t\tself.$fileListHeader = self.$filePicker.find('.filelist thead tr')\n\t\t\t\tself.$filelist = self.$filePicker.find('.filelist tbody')\n\t\t\t\tself.$filelistContainer = self.$filePicker.find('.filelist-container')\n\t\t\t\tself.$dirTree = self.$filePicker.find('.dirtree')\n\t\t\t\tself.$dirTree.on('click', 'div:not(:last-child)', self, function(event) {\n\t\t\t\t\tself._handleTreeListSelect(event, type)\n\t\t\t\t})\n\t\t\t\tself.$filelist.on('click', 'tr', function(event) {\n\t\t\t\t\tself._handlePickerClick(event, $(this), type)\n\t\t\t\t})\n\t\t\t\tself.$fileListHeader.on('click', 'a', function(event) {\n\t\t\t\t\tvar dir = self.$filePicker.data('path')\n\t\t\t\t\tself.filepicker.sortField = $(event.currentTarget).data('sort')\n\t\t\t\t\tself.filepicker.sortOrder = self.filepicker.sortOrder === 'asc' ? 'desc' : 'asc'\n\t\t\t\t\tself._fillFilePicker(dir)\n\t\t\t\t})\n\t\t\t\tself._fillFilePicker(path)\n\t\t\t})\n\n\t\t\t// build buttons\n\t\t\tvar functionToCall = function(returnType) {\n\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\tvar datapath\n\t\t\t\t\tif (multiselect === true) {\n\t\t\t\t\t\tdatapath = []\n\t\t\t\t\t\tself.$filelist.find('tr.filepicker_element_selected').each(function(index, element) {\n\t\t\t\t\t\t\tdatapath.push(self.$filePicker.data('path') + '/' + $(element).data('entryname'))\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdatapath = self.$filePicker.data('path')\n\t\t\t\t\t\tvar selectedName = self.$filelist.find('tr.filepicker_element_selected').data('entryname')\n\t\t\t\t\t\tif (selectedName) {\n\t\t\t\t\t\t\tdatapath += '/' + selectedName\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcallback(datapath, returnType)\n\t\t\t\t\tself.$filePicker.ocdialog('close')\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar chooseCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_CHOOSE)\n\t\t\t}\n\n\t\t\tvar copyCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_COPY)\n\t\t\t}\n\n\t\t\tvar moveCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_MOVE)\n\t\t\t}\n\n\t\t\tvar buttonlist = []\n\t\t\tif (type === Dialogs.FILEPICKER_TYPE_CHOOSE) {\n\t\t\t\tbuttonlist.push({\n\t\t\t\t\ttext: t('core', 'Choose'),\n\t\t\t\t\tclick: chooseCallback,\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t})\n\t\t\t} else if (type === Dialogs.FILEPICKER_TYPE_CUSTOM) {\n\t\t\t\toptions.buttons.forEach(function(button) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: button.text,\n\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\tfunctionToCall(button.type)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefaultButton: button.defaultButton\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tif (type === Dialogs.FILEPICKER_TYPE_COPY || type === Dialogs.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: t('core', 'Copy'),\n\t\t\t\t\t\tclick: copyCallback,\n\t\t\t\t\t\tdefaultButton: false\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (type === Dialogs.FILEPICKER_TYPE_MOVE || type === Dialogs.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: t('core', 'Move'),\n\t\t\t\t\t\tclick: moveCallback,\n\t\t\t\t\t\tdefaultButton: true\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tself.$filePicker.ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\t// max-width of 600\n\t\t\t\twidth: 600,\n\t\t\t\theight: 500,\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist,\n\t\t\t\tstyle: {\n\t\t\t\t\tbuttons: 'aside'\n\t\t\t\t},\n\t\t\t\tclose: function() {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t}\n\t\t\t\t\tself.$filePicker = null\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t// We can access primary class only from oc-dialog.\n\t\t\t// Hence this is one of the approach to get the choose button.\n\t\t\tvar getOcDialog = self.$filePicker.closest('.oc-dialog')\n\t\t\tvar buttonEnableDisable = getOcDialog.find('.primary')\n\t\t\tif (self.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || self.$filePicker.data('allowDirectoryChooser')) {\n\t\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t\t} else {\n\t\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t\t}\n\t\t})\n\t\t\t.fail(function(status, error) {\n\t\t\t\t// If the method is called while navigating away\n\t\t\t\t// from the page, it is probably not needed ;)\n\t\t\t\tself.filepicker.loading = false\n\t\t\t\tif (status !== 0) {\n\t\t\t\t\talert(t('core', 'Error loading file picker template: {error}', { error: error }))\n\t\t\t\t}\n\t\t\t})\n\t},\n\t/**\n\t * Displays raw dialog\n\t * You better use a wrapper instead ...\n\t */\n\tmessage: function(content, title, dialogType, buttons, callback, modal, allowHtml) {\n\t\treturn $.when(this._getMessageTemplate()).then(function($tmpl) {\n\t\t\tvar dialogName = 'oc-dialog-' + Dialogs.dialogsCounter + '-content'\n\t\t\tvar dialogId = '#' + dialogName\n\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\tmessage: content,\n\t\t\t\ttype: dialogType\n\t\t\t}, allowHtml ? { escapeFunction: '' } : {})\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\t$('body').append($dlg)\n\t\t\tvar buttonlist = []\n\t\t\tswitch (buttons) {\n\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\tbuttonlist = [{\n\t\t\t\t\ttext: t('core', 'No'),\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: t('core', 'Yes'),\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t},\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t}]\n\t\t\t\tbreak\n\t\t\tcase Dialogs.OK_BUTTON:\n\t\t\t\tvar functionToCall = function() {\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\tcallback()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbuttonlist[0] = {\n\t\t\t\t\ttext: t('core', 'OK'),\n\t\t\t\t\tclick: functionToCall,\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tif (typeof(buttons) === 'object') {\n\t\t\t\t\tswitch (buttons.type) {\n\t\t\t\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\t\t\t\tbuttonlist = [{\n\t\t\t\t\t\t\t\ttext: buttons.cancel || t('core', 'No'),\n\t\t\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttext: buttons.confirm || t('core', 'Yes'),\n\t\t\t\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tdefaultButton: true,\n\t\t\t\t\t\t\t\t\tclasses: buttons.confirmClasses\n\t\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t$(dialogId).ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\tcloseCallback: () => { callback && callback(false) },\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist\n\t\t\t})\n\t\t\tDialogs.dialogsCounter++\n\t\t})\n\t\t\t.fail(function(status, error) {\n\t\t\t\t// If the method is called while navigating away from\n\t\t\t\t// the page, we still want to deliver the message.\n\t\t\t\tif (status === 0) {\n\t\t\t\t\talert(title + ': ' + content)\n\t\t\t\t} else {\n\t\t\t\t\talert(t('core', 'Error loading message template: {error}', { error: error }))\n\t\t\t\t}\n\t\t\t})\n\t},\n\t_fileexistsshown: false,\n\t/**\n\t * Displays file exists dialog\n\t * @param {object} data upload object\n\t * @param {object} original file with name, size and mtime\n\t * @param {object} replacement file with name, size and mtime\n\t * @param {object} controller with onCancel, onSkip, onReplace and onRename methods\n\t * @returns {Promise} jquery promise that resolves after the dialog template was loaded\n\t */\n\tfileexists: function(data, original, replacement, controller) {\n\t\tvar self = this\n\t\tvar dialogDeferred = new $.Deferred()\n\n\t\tvar getCroppedPreview = function(file) {\n\t\t\tvar deferred = new $.Deferred()\n\t\t\t// Only process image files.\n\t\t\tvar type = file.type && file.type.split('/').shift()\n\t\t\tif (window.FileReader && type === 'image') {\n\t\t\t\tvar reader = new FileReader()\n\t\t\t\treader.onload = function(e) {\n\t\t\t\t\tvar blob = new Blob([e.target.result])\n\t\t\t\t\twindow.URL = window.URL || window.webkitURL\n\t\t\t\t\tvar originalUrl = window.URL.createObjectURL(blob)\n\t\t\t\t\tvar image = new Image()\n\t\t\t\t\timage.src = originalUrl\n\t\t\t\t\timage.onload = function() {\n\t\t\t\t\t\tvar url = crop(image)\n\t\t\t\t\t\tdeferred.resolve(url)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treader.readAsArrayBuffer(file)\n\t\t\t} else {\n\t\t\t\tdeferred.reject()\n\t\t\t}\n\t\t\treturn deferred\n\t\t}\n\n\t\tvar crop = function(img) {\n\t\t\tvar canvas = document.createElement('canvas')\n\t\t\tvar targetSize = 96\n\t\t\tvar width = img.width\n\t\t\tvar height = img.height\n\t\t\tvar x; var y; var size\n\n\t\t\t// Calculate the width and height, constraining the proportions\n\t\t\tif (width > height) {\n\t\t\t\ty = 0\n\t\t\t\tx = (width - height) / 2\n\t\t\t} else {\n\t\t\t\ty = (height - width) / 2\n\t\t\t\tx = 0\n\t\t\t}\n\t\t\tsize = Math.min(width, height)\n\n\t\t\t// Set canvas size to the cropped area\n\t\t\tcanvas.width = size\n\t\t\tcanvas.height = size\n\t\t\tvar ctx = canvas.getContext('2d')\n\t\t\tctx.drawImage(img, x, y, size, size, 0, 0, size, size)\n\n\t\t\t// Resize the canvas to match the destination (right size uses 96px)\n\t\t\tresampleHermite(canvas, size, size, targetSize, targetSize)\n\n\t\t\treturn canvas.toDataURL('image/png', 0.7)\n\t\t}\n\n\t\t/**\n\t\t * Fast image resize/resample using Hermite filter with JavaScript.\n\t\t *\n\t\t * @author: ViliusL\n\t\t *\n\t\t * @param {*} canvas\n\t\t * @param {number} W\n\t\t * @param {number} H\n\t\t * @param {number} W2\n\t\t * @param {number} H2\n\t\t */\n\t\tvar resampleHermite = function(canvas, W, H, W2, H2) {\n\t\t\tW2 = Math.round(W2)\n\t\t\tH2 = Math.round(H2)\n\t\t\tvar img = canvas.getContext('2d').getImageData(0, 0, W, H)\n\t\t\tvar img2 = canvas.getContext('2d').getImageData(0, 0, W2, H2)\n\t\t\tvar data = img.data\n\t\t\tvar data2 = img2.data\n\t\t\tvar ratio_w = W / W2\n\t\t\tvar ratio_h = H / H2\n\t\t\tvar ratio_w_half = Math.ceil(ratio_w / 2)\n\t\t\tvar ratio_h_half = Math.ceil(ratio_h / 2)\n\n\t\t\tfor (var j = 0; j < H2; j++) {\n\t\t\t\tfor (var i = 0; i < W2; i++) {\n\t\t\t\t\tvar x2 = (i + j * W2) * 4\n\t\t\t\t\tvar weight = 0\n\t\t\t\t\tvar weights = 0\n\t\t\t\t\tvar weights_alpha = 0\n\t\t\t\t\tvar gx_r = 0\n\t\t\t\t\tvar gx_g = 0\n\t\t\t\t\tvar gx_b = 0\n\t\t\t\t\tvar gx_a = 0\n\t\t\t\t\tvar center_y = (j + 0.5) * ratio_h\n\t\t\t\t\tfor (var yy = Math.floor(j * ratio_h); yy < (j + 1) * ratio_h; yy++) {\n\t\t\t\t\t\tvar dy = Math.abs(center_y - (yy + 0.5)) / ratio_h_half\n\t\t\t\t\t\tvar center_x = (i + 0.5) * ratio_w\n\t\t\t\t\t\tvar w0 = dy * dy // pre-calc part of w\n\t\t\t\t\t\tfor (var xx = Math.floor(i * ratio_w); xx < (i + 1) * ratio_w; xx++) {\n\t\t\t\t\t\t\tvar dx = Math.abs(center_x - (xx + 0.5)) / ratio_w_half\n\t\t\t\t\t\t\tvar w = Math.sqrt(w0 + dx * dx)\n\t\t\t\t\t\t\tif (w >= -1 && w <= 1) {\n\t\t\t\t\t\t\t\t// hermite filter\n\t\t\t\t\t\t\t\tweight = 2 * w * w * w - 3 * w * w + 1\n\t\t\t\t\t\t\t\tif (weight > 0) {\n\t\t\t\t\t\t\t\t\tdx = 4 * (xx + yy * W)\n\t\t\t\t\t\t\t\t\t// alpha\n\t\t\t\t\t\t\t\t\tgx_a += weight * data[dx + 3]\n\t\t\t\t\t\t\t\t\tweights_alpha += weight\n\t\t\t\t\t\t\t\t\t// colors\n\t\t\t\t\t\t\t\t\tif (data[dx + 3] < 255) { weight = weight * data[dx + 3] / 250 }\n\t\t\t\t\t\t\t\t\tgx_r += weight * data[dx]\n\t\t\t\t\t\t\t\t\tgx_g += weight * data[dx + 1]\n\t\t\t\t\t\t\t\t\tgx_b += weight * data[dx + 2]\n\t\t\t\t\t\t\t\t\tweights += weight\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdata2[x2] = gx_r / weights\n\t\t\t\t\tdata2[x2 + 1] = gx_g / weights\n\t\t\t\t\tdata2[x2 + 2] = gx_b / weights\n\t\t\t\t\tdata2[x2 + 3] = gx_a / weights_alpha\n\t\t\t\t}\n\t\t\t}\n\t\t\tcanvas.getContext('2d').clearRect(0, 0, Math.max(W, W2), Math.max(H, H2))\n\t\t\tcanvas.width = W2\n\t\t\tcanvas.height = H2\n\t\t\tcanvas.getContext('2d').putImageData(img2, 0, 0)\n\t\t}\n\n\t\tvar addConflict = function($conflicts, original, replacement) {\n\n\t\t\tvar $conflict = $conflicts.find('.template').clone().removeClass('template').addClass('conflict')\n\t\t\tvar $originalDiv = $conflict.find('.original')\n\t\t\tvar $replacementDiv = $conflict.find('.replacement')\n\n\t\t\t$conflict.data('data', data)\n\n\t\t\t$conflict.find('.filename').text(original.name)\n\t\t\t$originalDiv.find('.size').text(OC.Util.humanFileSize(original.size))\n\t\t\t$originalDiv.find('.mtime').text(OC.Util.formatDate(original.mtime))\n\t\t\t// ie sucks\n\t\t\tif (replacement.size && replacement.lastModified) {\n\t\t\t\t$replacementDiv.find('.size').text(OC.Util.humanFileSize(replacement.size))\n\t\t\t\t$replacementDiv.find('.mtime').text(OC.Util.formatDate(replacement.lastModified))\n\t\t\t}\n\t\t\tvar path = original.directory + '/' + original.name\n\t\t\tvar urlSpec = {\n\t\t\t\tfile: path,\n\t\t\t\tx: 96,\n\t\t\t\ty: 96,\n\t\t\t\tc: original.etag,\n\t\t\t\tforceIcon: 0\n\t\t\t}\n\t\t\tvar previewpath = Files.generatePreviewUrl(urlSpec)\n\t\t\t// Escaping single quotes\n\t\t\tpreviewpath = previewpath.replace(/'/g, '%27')\n\t\t\t$originalDiv.find('.icon').css({ 'background-image': \"url('\" + previewpath + \"')\" })\n\t\t\tgetCroppedPreview(replacement).then(\n\t\t\t\tfunction(path) {\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}, function() {\n\t\t\t\t\tpath = OC.MimeType.getIconUrl(replacement.type)\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}\n\t\t\t)\n\t\t\t// connect checkboxes with labels\n\t\t\tvar checkboxId = $conflicts.find('.conflict').length\n\t\t\t$originalDiv.find('input:checkbox').attr('id', 'checkbox_original_' + checkboxId)\n\t\t\t$replacementDiv.find('input:checkbox').attr('id', 'checkbox_replacement_' + checkboxId)\n\n\t\t\t$conflicts.append($conflict)\n\n\t\t\t// set more recent mtime bold\n\t\t\t// ie sucks\n\t\t\tif (replacement.lastModified > original.mtime) {\n\t\t\t\t$replacementDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else if (replacement.lastModified < original.mtime) {\n\t\t\t\t$originalDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same mtime collection?\n\t\t\t}\n\n\t\t\t// set bigger size bold\n\t\t\tif (replacement.size && replacement.size > original.size) {\n\t\t\t\t$replacementDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else if (replacement.size && replacement.size < original.size) {\n\t\t\t\t$originalDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same size collection?\n\t\t\t}\n\n\t\t\t// TODO show skip action for files with same size and mtime in bottom row\n\n\t\t\t// always keep readonly files\n\n\t\t\tif (original.status === 'readonly') {\n\t\t\t\t$originalDiv\n\t\t\t\t\t.addClass('readonly')\n\t\t\t\t\t.find('input[type=\"checkbox\"]')\n\t\t\t\t\t.prop('checked', true)\n\t\t\t\t\t.prop('disabled', true)\n\t\t\t\t$originalDiv.find('.message')\n\t\t\t\t\t.text(t('core', 'read-only'))\n\t\t\t}\n\t\t}\n\t\t// var selection = controller.getSelection(data.originalFiles);\n\t\t// if (selection.defaultAction) {\n\t\t//\tcontroller[selection.defaultAction](data);\n\t\t// } else {\n\t\tvar dialogName = 'oc-dialog-fileexists-content'\n\t\tvar dialogId = '#' + dialogName\n\t\tif (this._fileexistsshown) {\n\t\t\t// add conflict\n\n\t\t\tvar $conflicts = $(dialogId + ' .conflicts')\n\t\t\taddConflict($conflicts, original, replacement)\n\n\t\t\tvar count = $(dialogId + ' .conflict').length\n\t\t\tvar title = n('core',\n\t\t\t\t'{count} file conflict',\n\t\t\t\t'{count} file conflicts',\n\t\t\t\tcount,\n\t\t\t\t{ count: count }\n\t\t\t)\n\t\t\t$(dialogId).parent().children('.oc-dialog-title').text(title)\n\n\t\t\t// recalculate dimensions\n\t\t\t$(window).trigger('resize')\n\t\t\tdialogDeferred.resolve()\n\t\t} else {\n\t\t\t// create dialog\n\t\t\tthis._fileexistsshown = true\n\t\t\t$.when(this._getFileExistsTemplate()).then(function($tmpl) {\n\t\t\t\tvar title = t('core', 'One file conflict')\n\t\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\t\tdialog_name: dialogName,\n\t\t\t\t\ttitle: title,\n\t\t\t\t\ttype: 'fileexists',\n\n\t\t\t\t\tallnewfiles: t('core', 'New Files'),\n\t\t\t\t\tallexistingfiles: t('core', 'Already existing files'),\n\n\t\t\t\t\twhy: t('core', 'Which files do you want to keep?'),\n\t\t\t\t\twhat: t('core', 'If you select both versions, the copied file will have a number added to its name.')\n\t\t\t\t})\n\t\t\t\t$('body').append($dlg)\n\n\t\t\t\tif (original && replacement) {\n\t\t\t\t\tvar $conflicts = $dlg.find('.conflicts')\n\t\t\t\t\taddConflict($conflicts, original, replacement)\n\t\t\t\t}\n\n\t\t\t\tvar buttonlist = [{\n\t\t\t\t\ttext: t('core', 'Cancel'),\n\t\t\t\t\tclasses: 'cancel',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onCancel !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onCancel(data)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: t('core', 'Continue'),\n\t\t\t\t\tclasses: 'continue',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onContinue !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onContinue($(dialogId + ' .conflict'))\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t}]\n\n\t\t\t\t$(dialogId).ocdialog({\n\t\t\t\t\twidth: 500,\n\t\t\t\t\tcloseOnEscape: true,\n\t\t\t\t\tmodal: true,\n\t\t\t\t\tbuttons: buttonlist,\n\t\t\t\t\tcloseButton: null,\n\t\t\t\t\tclose: function() {\n\t\t\t\t\t\tself._fileexistsshown = false\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t// ignore\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\t$(dialogId).css('height', 'auto')\n\n\t\t\t\tvar $primaryButton = $dlg.closest('.oc-dialog').find('button.continue')\n\t\t\t\t$primaryButton.prop('disabled', true)\n\n\t\t\t\tfunction updatePrimaryButton() {\n\t\t\t\t\tvar checkedCount = $dlg.find('.conflicts .checkbox:checked').length\n\t\t\t\t\t$primaryButton.prop('disabled', checkedCount === 0)\n\t\t\t\t}\n\n\t\t\t\t// add checkbox toggling actions\n\t\t\t\t$(dialogId).find('.allnewfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.allexistingfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .original:not(.readonly) input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement,.original:not(.readonly)', function() {\n\t\t\t\t\tvar $checkbox = $(this).find('input[type=\"checkbox\"]')\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement input[type=\"checkbox\"],.original:not(.readonly) input[type=\"checkbox\"]', function() {\n\t\t\t\t\tvar $checkbox = $(this)\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\n\t\t\t\t// update counters\n\t\t\t\t$(dialogId).on('click', '.replacement,.allnewfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\t\t\t\t$(dialogId).on('click', '.original,.allexistingfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .original input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count')\n\t\t\t\t\t\t\t.text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\n\t\t\t\tdialogDeferred.resolve()\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdialogDeferred.reject()\n\t\t\t\t\talert(t('core', 'Error loading file exists template'))\n\t\t\t\t})\n\t\t}\n\t\t// }\n\t\treturn dialogDeferred.promise()\n\t},\n\t// get the gridview setting and set the input accordingly\n\t_getGridSettings: function() {\n\t\tvar self = this\n\t\t$.get(OC.generateUrl('/apps/files/api/v1/showgridview'), function(response) {\n\t\t\tself.$showGridView.get(0).checked = response.gridview\n\t\t\tself.$showGridView.next('#picker-view-toggle')\n\t\t\t\t.removeClass('icon-toggle-filelist icon-toggle-pictures')\n\t\t\t\t.addClass(response.gridview ? 'icon-toggle-filelist' : 'icon-toggle-pictures')\n\t\t\t$('.list-container').toggleClass('view-grid', response.gridview)\n\t\t})\n\t},\n\t_onGridviewChange: function() {\n\t\tvar show = this.$showGridView.is(':checked')\n\t\t// only save state if user is logged in\n\t\tif (OC.currentUser) {\n\t\t\t$.post(OC.generateUrl('/apps/files/api/v1/showgridview'), {\n\t\t\t\tshow: show\n\t\t\t})\n\t\t}\n\t\tthis.$showGridView.next('#picker-view-toggle')\n\t\t\t.removeClass('icon-toggle-filelist icon-toggle-pictures')\n\t\t\t.addClass(show ? 'icon-toggle-filelist' : 'icon-toggle-pictures')\n\t\t$('.list-container').toggleClass('view-grid', show)\n\t},\n\t_getFilePickerTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$filePickerTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('core', 'templates', 'filepicker.html'), function(tmpl) {\n\t\t\t\tself.$filePickerTemplate = $(tmpl)\n\t\t\t\tself.$listTmpl = self.$filePickerTemplate.find('.filelist tbody tr:first-child').detach()\n\t\t\t\tdefer.resolve(self.$filePickerTemplate)\n\t\t\t})\n\t\t\t\t.fail(function(jqXHR, textStatus, errorThrown) {\n\t\t\t\t\tdefer.reject(jqXHR.status, errorThrown)\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$filePickerTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getMessageTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$messageTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('core', 'templates', 'message.html'), function(tmpl) {\n\t\t\t\tself.$messageTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$messageTemplate)\n\t\t\t})\n\t\t\t\t.fail(function(jqXHR, textStatus, errorThrown) {\n\t\t\t\t\tdefer.reject(jqXHR.status, errorThrown)\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$messageTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getFileExistsTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$fileexistsTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('files', 'templates', 'fileexists.html'), function(tmpl) {\n\t\t\t\tself.$fileexistsTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$fileexistsTemplate)\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdefer.reject()\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$fileexistsTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getFileList: function(dir, mimeType) { // this is only used by the spreedme app atm\n\t\tif (typeof (mimeType) === 'string') {\n\t\t\tmimeType = [mimeType]\n\t\t}\n\n\t\treturn $.getJSON(\n\t\t\tOC.filePath('files', 'ajax', 'list.php'),\n\t\t\t{\n\t\t\t\tdir: dir,\n\t\t\t\tmimetypes: JSON.stringify(mimeType)\n\t\t\t}\n\t\t)\n\t},\n\n\t/**\n\t * fills the filepicker with files\n\t */\n\t_fillFilePicker: function(dir) {\n\t\tvar self = this\n\t\tthis.$filelist.empty()\n\t\tthis.$filePicker.find('.emptycontent').hide()\n\t\tthis.$filelistContainer.addClass('icon-loading')\n\t\tthis.$filePicker.data('path', dir)\n\t\tvar filter = this.$filePicker.data('mimetype')\n\t\tvar advancedFilter = this.$filePicker.data('filter')\n\t\tif (typeof (filter) === 'string') {\n\t\t\tfilter = [filter]\n\t\t}\n\t\tself.$fileListHeader.find('.sort-indicator').addClass('hidden').removeClass('icon-triangle-n').removeClass('icon-triangle-s')\n\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').removeClass('hidden')\n\t\tif (self.filepicker.sortOrder === 'asc') {\n\t\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').addClass('icon-triangle-n')\n\t\t} else {\n\t\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').addClass('icon-triangle-s')\n\t\t}\n\t\tself.filepicker.filesClient.getFolderContents(dir).then(function(status, files) {\n\t\t\tself.filelist = files\n\t\t\tif (filter && filter.length > 0 && filter.indexOf('*') === -1) {\n\t\t\t\tfiles = files.filter(function(file) {\n\t\t\t\t\treturn file.type === 'dir' || filter.indexOf(file.mimetype) !== -1\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (advancedFilter) {\n\t\t\t\tfiles = files.filter(advancedFilter)\n\t\t\t}\n\n\t\t\t// Check if the showHidden input field exist and if it exist follow it\n\t\t\t// Otherwise just show the hidden files\n\t\t\tconst showHiddenInput = document.getElementById('showHiddenFiles')\n\t\t\tconst showHidden = showHiddenInput === null || showHiddenInput.value === \"1\"\n\t\t\tif (!showHidden) {\n\t\t\t\tfiles = files.filter(function(file) {\n\t\t\t\t\treturn !file.name.startsWith('.')\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tvar Comparators = {\n\t\t\t\tname: function(fileInfo1, fileInfo2) {\n\t\t\t\t\tif (fileInfo1.type === 'dir' && fileInfo2.type !== 'dir') {\n\t\t\t\t\t\treturn -1\n\t\t\t\t\t}\n\t\t\t\t\tif (fileInfo1.type !== 'dir' && fileInfo2.type === 'dir') {\n\t\t\t\t\t\treturn 1\n\t\t\t\t\t}\n\t\t\t\t\treturn OC.Util.naturalSortCompare(fileInfo1.name, fileInfo2.name)\n\t\t\t\t},\n\t\t\t\tsize: function(fileInfo1, fileInfo2) {\n\t\t\t\t\treturn fileInfo1.size - fileInfo2.size\n\t\t\t\t},\n\t\t\t\tmtime: function(fileInfo1, fileInfo2) {\n\t\t\t\t\treturn fileInfo1.mtime - fileInfo2.mtime\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar comparator = Comparators[self.filepicker.sortField] || Comparators.name\n\t\t\tfiles = files.sort(function(file1, file2) {\n\t\t\t\tvar isFavorite = function(fileInfo) {\n\t\t\t\t\treturn fileInfo.tags && fileInfo.tags.indexOf(OC.TAG_FAVORITE) >= 0\n\t\t\t\t}\n\n\t\t\t\tif (isFavorite(file1) && !isFavorite(file2)) {\n\t\t\t\t\treturn -1\n\t\t\t\t} else if (!isFavorite(file1) && isFavorite(file2)) {\n\t\t\t\t\treturn 1\n\t\t\t\t}\n\n\t\t\t\treturn self.filepicker.sortOrder === 'asc' ? comparator(file1, file2) : -comparator(file1, file2)\n\t\t\t})\n\n\t\t\tself._fillSlug()\n\n\t\t\tif (files.length === 0) {\n\t\t\t\tself.$filePicker.find('.emptycontent').show()\n\t\t\t\tself.$fileListHeader.hide()\n\t\t\t} else {\n\t\t\t\tself.$filePicker.find('.emptycontent').hide()\n\t\t\t\tself.$fileListHeader.show()\n\t\t\t}\n\n\t\t\tself.$filelist.empty();\n\n\t\t\t$.each(files, function(idx, entry) {\n\t\t\t\tentry.icon = OC.MimeType.getIconUrl(entry.mimetype)\n\t\t\t\tvar simpleSize, sizeColor\n\t\t\t\tif (typeof (entry.size) !== 'undefined' && entry.size >= 0) {\n\t\t\t\t\tsimpleSize = OC.Util.humanFileSize(parseInt(entry.size, 10), true)\n\t\t\t\t\tsizeColor = Math.round(160 - Math.pow((entry.size / (1024 * 1024)), 2))\n\t\t\t\t} else {\n\t\t\t\t\tsimpleSize = t('files', 'Pending')\n\t\t\t\t\tsizeColor = 80\n\t\t\t\t}\n\n\t\t\t\t// split the filename in half if the size is bigger than 20 char\n\t\t\t\t// for ellipsis\n\t\t\t\tif (entry.name.length >= 10) {\n\t\t\t\t\t// leave maximum 10 letters\n\t\t\t\t\tvar split = Math.min(Math.floor(entry.name.length / 2), 10)\n\t\t\t\t\tvar filename1 = entry.name.substr(0, entry.name.length - split)\n\t\t\t\t\tvar filename2 = entry.name.substr(entry.name.length - split)\n\t\t\t\t} else {\n\t\t\t\t\tvar filename1 = entry.name\n\t\t\t\t\tvar filename2 = ''\n\t\t\t\t}\n\n\t\t\t\tvar $row = self.$listTmpl.octemplate({\n\t\t\t\t\ttype: entry.type,\n\t\t\t\t\tdir: dir,\n\t\t\t\t\tfilename: entry.name,\n\t\t\t\t\tfilename1: filename1,\n\t\t\t\t\tfilename2: filename2,\n\t\t\t\t\tdate: OC.Util.relativeModifiedDate(entry.mtime),\n\t\t\t\t\tsize: simpleSize,\n\t\t\t\t\tsizeColor: sizeColor,\n\t\t\t\t\ticon: entry.icon\n\t\t\t\t})\n\t\t\t\tif (entry.type === 'file') {\n\t\t\t\t\tvar urlSpec = {\n\t\t\t\t\t\tfile: dir + '/' + entry.name,\n\t\t\t\t\t\tx: 100,\n\t\t\t\t\t\ty: 100\n\t\t\t\t\t}\n\t\t\t\t\tvar img = new Image()\n\t\t\t\t\tvar previewUrl = OC.generateUrl('/core/preview.png?') + $.param(urlSpec)\n\t\t\t\t\timg.onload = function() {\n\t\t\t\t\t\tif (img.width > 5) {\n\t\t\t\t\t\t\t$row.find('td.filename').attr('style', 'background-image:url(' + previewUrl + ')')\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\timg.src = previewUrl\n\t\t\t\t}\n\t\t\t\tself.$filelist.append($row)\n\t\t\t})\n\n\t\t\tself.$filelistContainer.removeClass('icon-loading')\n\t\t})\n\t},\n\t/**\n\t * fills the tree list with directories\n\t */\n\t_fillSlug: function() {\n\t\tvar addButton = this.$dirTree.find('.actions.creatable').detach()\n\t\tthis.$dirTree.empty()\n\t\tvar self = this\n\n\t\tself.$dirTree.append(addButton)\n\n\t\tvar dir\n\t\tvar path = this.$filePicker.data('path')\n\t\tvar $template = $('<div data-dir=\"{dir}\"><a>{name}</a></div>').addClass('crumb')\n\t\tif (path) {\n\t\t\tvar paths = path.split('/')\n\t\t\t$.each(paths, function(index, dir) {\n\t\t\t\tdir = paths.pop()\n\t\t\t\tif (dir === '') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tself.$dirTree.prepend($template.octemplate({\n\t\t\t\t\tdir: paths.join('/') + '/' + dir,\n\t\t\t\t\tname: dir\n\t\t\t\t}))\n\t\t\t})\n\t\t}\n\n\t\t$template.octemplate({\n\t\t\tdir: '',\n\t\t\tname: '' // Ugly but works ;)\n\t\t}, { escapeFunction: null }).prependTo(this.$dirTree)\n\n\t},\n\t/**\n\t * handle selection made in the tree list\n\t */\n\t_handleTreeListSelect: function(event, type) {\n\t\tvar self = event.data\n\t\tvar dir = $(event.target).closest('.crumb').data('dir')\n\t\tself._fillFilePicker(dir)\n\t\tvar getOcDialog = (event.target).closest('.oc-dialog')\n\t\tvar buttonEnableDisable = $('.primary', getOcDialog)\n\t\tthis._changeButtonsText(type, dir.split(/[/]+/).pop())\n\t\tif (this.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || this.$filePicker.data('allowDirectoryChooser')) {\n\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t} else {\n\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t}\n\t},\n\t/**\n\t * handle clicks made in the filepicker\n\t */\n\t_handlePickerClick: function(event, $element, type) {\n\t\tvar getOcDialog = this.$filePicker.closest('.oc-dialog')\n\t\tvar buttonEnableDisable = getOcDialog.find('.primary')\n\t\tif ($element.data('type') === 'file') {\n\t\t\tif (this.$filePicker.data('multiselect') !== true || !event.ctrlKey) {\n\t\t\t\tthis.$filelist.find('.filepicker_element_selected').removeClass('filepicker_element_selected')\n\t\t\t}\n\t\t\t$element.toggleClass('filepicker_element_selected')\n\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t} else if ($element.data('type') === 'dir') {\n\t\t\tthis._fillFilePicker(this.$filePicker.data('path') + '/' + $element.data('entryname'))\n\t\t\tthis._changeButtonsText(type, $element.data('entryname'))\n\t\t\tif (this.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || this.$filePicker.data('allowDirectoryChooser')) {\n\t\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t\t} else {\n\t\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Handle\n\t * @param type of action\n\t * @param dir on which to change buttons text\n\t * @private\n\t */\n\t_changeButtonsText: function(type, dir) {\n\t\tvar copyText = dir === '' ? t('core', 'Copy') : t('core', 'Copy to {folder}', { folder: dir })\n\t\tvar moveText = dir === '' ? t('core', 'Move') : t('core', 'Move to {folder}', { folder: dir })\n\t\tvar buttons = $('.oc-dialog-buttonrow button')\n\t\tswitch (type) {\n\t\t\tcase this.FILEPICKER_TYPE_CHOOSE:\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_CUSTOM:\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_COPY:\n\t\t\t\tbuttons.text(copyText)\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_MOVE:\n\t\t\t\tbuttons.text(moveText)\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_COPY_MOVE:\n\t\t\t\tbuttons.eq(0).text(copyText)\n\t\t\t\tbuttons.eq(1).text(moveText)\n\t\t\t\tbreak\n\t\t}\n\t}\n}\n\nexport default Dialogs\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport { emit } from '@nextcloud/event-bus'\n\n/**\n * @private\n * @param {Document} global the document to read the initial value from\n * @param {Function} emit the function to invoke for every new token\n * @return {object}\n */\nexport const manageToken = (global, emit) => {\n\tlet token = global.getElementsByTagName('head')[0].getAttribute('data-requesttoken')\n\n\treturn {\n\t\tgetToken: () => token,\n\t\tsetToken: newToken => {\n\t\t\ttoken = newToken\n\n\t\t\temit('csrf-token-update', {\n\t\t\t\ttoken,\n\t\t\t})\n\t\t},\n\t}\n}\n\nconst manageFromDocument = manageToken(document, emit)\n\n/**\n * @return {string}\n */\nexport const getToken = manageFromDocument.getToken\n\n/**\n * @param {string} newToken new token\n */\nexport const setToken = manageFromDocument.setToken\n","/**\n * @copyright 2012 Robin Appelman icewind1991@gmail.com\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Lukas Reschke <lukas@statuscode.ch>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Thomas Müller <thomas.mueller@tmit.eu>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n/* eslint-disable */\nimport $ from 'jquery'\n\nimport { getToken } from './requesttoken'\n\n/**\n * Create a new event source\n * @param {string} src\n * @param {object} [data] to be send as GET\n *\n * @constructs OCEventSource\n */\nconst OCEventSource = function(src, data) {\n\tvar dataStr = ''\n\tvar name\n\tvar joinChar\n\tthis.typelessListeners = []\n\tthis.closed = false\n\tthis.listeners = {}\n\tif (data) {\n\t\tfor (name in data) {\n\t\t\tdataStr += name + '=' + encodeURIComponent(data[name]) + '&'\n\t\t}\n\t}\n\tdataStr += 'requesttoken=' + encodeURIComponent(getToken())\n\tif (!this.useFallBack && typeof EventSource !== 'undefined') {\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.source = new EventSource(src + joinChar + dataStr)\n\t\tthis.source.onmessage = function(e) {\n\t\t\tfor (var i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](JSON.parse(e.data))\n\t\t\t}\n\t\t}.bind(this)\n\t} else {\n\t\tvar iframeId = 'oc_eventsource_iframe_' + OCEventSource.iframeCount\n\t\tOCEventSource.fallBackSources[OCEventSource.iframeCount] = this\n\t\tthis.iframe = $('<iframe></iframe>')\n\t\tthis.iframe.attr('id', iframeId)\n\t\tthis.iframe.hide()\n\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.iframe.attr('src', src + joinChar + 'fallback=true&fallback_id=' + OCEventSource.iframeCount + '&' + dataStr)\n\t\t$('body').append(this.iframe)\n\t\tthis.useFallBack = true\n\t\tOCEventSource.iframeCount++\n\t}\n\t// add close listener\n\tthis.listen('__internal__', function(data) {\n\t\tif (data === 'close') {\n\t\t\tthis.close()\n\t\t}\n\t}.bind(this))\n}\nOCEventSource.fallBackSources = []\nOCEventSource.iframeCount = 0// number of fallback iframes\nOCEventSource.fallBackCallBack = function(id, type, data) {\n\tOCEventSource.fallBackSources[id].fallBackCallBack(type, data)\n}\nOCEventSource.prototype = {\n\ttypelessListeners: [],\n\tiframe: null,\n\tlisteners: {}, // only for fallback\n\tuseFallBack: false,\n\t/**\n\t * Fallback callback for browsers that don't have the\n\t * native EventSource object.\n\t *\n\t * Calls the registered listeners.\n\t *\n\t * @private\n\t * @param {String} type event type\n\t * @param {Object} data received data\n\t */\n\tfallBackCallBack: function(type, data) {\n\t\tvar i\n\t\t// ignore messages that might appear after closing\n\t\tif (this.closed) {\n\t\t\treturn\n\t\t}\n\t\tif (type) {\n\t\t\tif (typeof this.listeners.done !== 'undefined') {\n\t\t\t\tfor (i = 0; i < this.listeners[type].length; i++) {\n\t\t\t\t\tthis.listeners[type][i](data)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](data)\n\t\t\t}\n\t\t}\n\t},\n\tlastLength: 0, // for fallback\n\t/**\n\t * Listen to a given type of events.\n\t *\n\t * @param {String} type event type\n\t * @param {Function} callback event callback\n\t */\n\tlisten: function(type, callback) {\n\t\tif (callback && callback.call) {\n\n\t\t\tif (type) {\n\t\t\t\tif (this.useFallBack) {\n\t\t\t\t\tif (!this.listeners[type]) {\n\t\t\t\t\t\tthis.listeners[type] = []\n\t\t\t\t\t}\n\t\t\t\t\tthis.listeners[type].push(callback)\n\t\t\t\t} else {\n\t\t\t\t\tthis.source.addEventListener(type, function(e) {\n\t\t\t\t\t\tif (typeof e.data !== 'undefined') {\n\t\t\t\t\t\t\tcallback(JSON.parse(e.data))\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcallback('')\n\t\t\t\t\t\t}\n\t\t\t\t\t}, false)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.typelessListeners.push(callback)\n\t\t\t}\n\t\t}\n\t},\n\t/**\n\t * Closes this event source.\n\t */\n\tclose: function() {\n\t\tthis.closed = true\n\t\tif (typeof this.source !== 'undefined') {\n\t\t\tthis.source.close()\n\t\t}\n\t}\n}\n\nexport default OCEventSource\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\n\nimport { menuSpeed } from './constants'\n\nexport let currentMenu = null\nexport let currentMenuToggle = null\n\n/**\n * For menu toggling\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n * @param {Function | undefined} toggle callback invoked everytime the menu is opened\n * @param {boolean} headerMenu is this a top right header menu?\n * @return {void}\n */\nexport const registerMenu = function($toggle, $menuEl, toggle, headerMenu) {\n\t$menuEl.addClass('menu')\n\tconst isClickableElement = $toggle.prop('tagName') === 'A' || $toggle.prop('tagName') === 'BUTTON'\n\n\t// On link and button, the enter key trigger a click event\n\t// Only use the click to avoid two fired events\n\t$toggle.on(isClickableElement ? 'click.menu' : 'click.menu keyup.menu', function(event) {\n\t\t// prevent the link event (append anchor to URL)\n\t\tevent.preventDefault()\n\n\t\t// allow enter key as a trigger\n\t\tif (event.key && event.key !== 'Enter') {\n\t\t\treturn\n\t\t}\n\n\t\tif ($menuEl.is(currentMenu)) {\n\t\t\thideMenus()\n\t\t\treturn\n\t\t} else if (currentMenu) {\n\t\t\t// another menu was open?\n\t\t\t// close it\n\t\t\thideMenus()\n\t\t}\n\n\t\tif (headerMenu === true) {\n\t\t\t$menuEl.parent().addClass('openedMenu')\n\t\t}\n\n\t\t// Set menu to expanded\n\t\t$toggle.attr('aria-expanded', true)\n\n\t\t$menuEl.slideToggle(menuSpeed, toggle)\n\t\tcurrentMenu = $menuEl\n\t\tcurrentMenuToggle = $toggle\n\t})\n}\n\n/**\n * Unregister a previously registered menu\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n */\nexport const unregisterMenu = ($toggle, $menuEl) => {\n\t// close menu if opened\n\tif ($menuEl.is(currentMenu)) {\n\t\thideMenus()\n\t}\n\t$toggle.off('click.menu').removeClass('menutoggle')\n\t$menuEl.removeClass('menu')\n}\n\n/**\n * Hides any open menus\n *\n * @param {Function} complete callback when the hiding animation is done\n */\nexport const hideMenus = function(complete) {\n\tif (currentMenu) {\n\t\tconst lastMenu = currentMenu\n\t\tcurrentMenu.trigger(new $.Event('beforeHide'))\n\t\tcurrentMenu.slideUp(menuSpeed, function() {\n\t\t\tlastMenu.trigger(new $.Event('afterHide'))\n\t\t\tif (complete) {\n\t\t\t\tcomplete.apply(this, arguments)\n\t\t\t}\n\t\t})\n\t}\n\n\t// Set menu to closed\n\t$('.menutoggle').attr('aria-expanded', false)\n\n\t$('.openedMenu').removeClass('openedMenu')\n\tcurrentMenu = null\n\tcurrentMenuToggle = null\n}\n\n/**\n * Shows a given element as menu\n *\n * @param {object} [$toggle=null] menu toggle\n * @param {object} $menuEl menu element\n * @param {Function} complete callback when the showing animation is done\n */\nexport const showMenu = ($toggle, $menuEl, complete) => {\n\tif ($menuEl.is(currentMenu)) {\n\t\treturn\n\t}\n\thideMenus()\n\tcurrentMenu = $menuEl\n\tcurrentMenuToggle = $toggle\n\t$menuEl.trigger(new $.Event('beforeShow'))\n\t$menuEl.show()\n\t$menuEl.trigger(new $.Event('afterShow'))\n\t// no animation\n\tif (_.isFunction(complete)) {\n\t\tcomplete()\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nexport const coreApps = ['', 'admin', 'log', 'core/search', 'core', '3rdparty']\nexport const menuSpeed = 50\nexport const PERMISSION_NONE = 0\nexport const PERMISSION_CREATE = 4\nexport const PERMISSION_READ = 1\nexport const PERMISSION_UPDATE = 2\nexport const PERMISSION_DELETE = 8\nexport const PERMISSION_SHARE = 16\nexport const PERMISSION_ALL = 31\nexport const TAG_FAVORITE = '_$!<Favorite>!$_'\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nconst isAdmin = !!window._oc_isadmin\n\n/**\n * Returns whether the current user is an administrator\n *\n * @return {boolean} true if the user is an admin, false otherwise\n * @since 9.0.0\n */\nexport const isUserAdmin = () => isAdmin\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\n// This var is global because it's shared across webpack bundles\nwindow._oc_l10n_registry_translations = window._oc_l10n_registry_translations || {}\nwindow._oc_l10n_registry_plural_functions = window._oc_l10n_registry_plural_functions || {}\n\n/**\n * @param {string} appId the app id\n * @param {object} translations the translations list\n * @param {Function} pluralFunction the translations list\n */\nconst register = (appId, translations, pluralFunction) => {\n\twindow._oc_l10n_registry_translations[appId] = translations\n\twindow._oc_l10n_registry_plural_functions[appId] = pluralFunction\n}\n\n/**\n * @param {string} appId the app id\n * @param {object} translations the translations list\n * @param {Function} pluralFunction the translations list\n */\nconst extend = (appId, translations, pluralFunction) => {\n\twindow._oc_l10n_registry_translations[appId] = Object.assign(\n\t\twindow._oc_l10n_registry_translations[appId],\n\t\ttranslations\n\t)\n\twindow._oc_l10n_registry_plural_functions[appId] = pluralFunction\n}\n\n/**\n * @param {string} appId the app id\n * @param {object} translations the translations list\n * @param {Function} pluralFunction the translations list\n */\nexport const registerAppTranslations = (appId, translations, pluralFunction) => {\n\tif (!hasAppTranslations(appId)) {\n\t\tregister(appId, translations, pluralFunction)\n\t} else {\n\t\textend(appId, translations, pluralFunction)\n\t}\n}\n\n/**\n * @param {string} appId the app id\n */\nexport const unregisterAppTranslations = appId => {\n\tdelete window._oc_l10n_registry_translations[appId]\n\tdelete window._oc_l10n_registry_plural_functions[appId]\n}\n\n/**\n * @param {string} appId the app id\n * @return {boolean}\n */\nexport const hasAppTranslations = appId => {\n\treturn window._oc_l10n_registry_translations[appId] !== undefined\n\t\t&& window._oc_l10n_registry_plural_functions[appId] !== undefined\n}\n\n/**\n * @param {string} appId the app id\n * @return {object}\n */\nexport const getAppTranslations = appId => {\n\treturn {\n\t\ttranslations: window._oc_l10n_registry_translations[appId] || {},\n\t\tpluralFunction: window._oc_l10n_registry_plural_functions[appId],\n\t}\n}\n","/**\n * Copyright (c) 2014 Vincent Petry <pvince81@owncloud.com>\n * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Kesselberg <mail@danielkesselberg.de>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Morris Jobke <hey@morrisjobke.de>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport DOMPurify from 'dompurify'\nimport Handlebars from 'handlebars'\nimport identity from 'lodash/fp/identity'\nimport escapeHTML from 'escape-html'\nimport { generateFilePath } from '@nextcloud/router'\n\nimport OC from './index'\nimport {\n\tgetAppTranslations,\n\thasAppTranslations,\n\tregisterAppTranslations,\n\tunregisterAppTranslations,\n} from './l10n-registry'\n\n/**\n * L10N namespace with localization functions.\n *\n * @namespace OC.L10n\n */\nconst L10n = {\n\n\t/**\n\t * Load an app's translation bundle if not loaded already.\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Function} callback callback to be called when\n\t * the translations are loaded\n\t * @return {Promise} promise\n\t */\n\tload(appName, callback) {\n\t\t// already available ?\n\t\tif (hasAppTranslations(appName) || OC.getLocale() === 'en') {\n\t\t\tconst deferred = $.Deferred()\n\t\t\tconst promise = deferred.promise()\n\t\t\tpromise.then(callback)\n\t\t\tdeferred.resolve()\n\t\t\treturn promise\n\t\t}\n\n\t\tconst self = this\n\t\tconst url = generateFilePath(appName, 'l10n', OC.getLocale() + '.json')\n\n\t\t// load JSON translation bundle per AJAX\n\t\treturn $.get(url)\n\t\t\t.then(\n\t\t\t\tfunction(result) {\n\t\t\t\t\tif (result.translations) {\n\t\t\t\t\t\tself.register(appName, result.translations, result.pluralForm)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t.then(callback)\n\t},\n\n\t/**\n\t * Register an app's translation bundle.\n\t *\n\t * @param {string} appName name of the app\n\t * @param {object<string, string>} bundle bundle\n\t */\n\tregister(appName, bundle) {\n\t\tregisterAppTranslations(appName, bundle, this._getPlural)\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_unregister: unregisterAppTranslations,\n\n\t/**\n\t * Translate a string\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} text the string to translate\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {number} [count] number to replace %n with\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @param {boolean} [options.sanitize=true] enable/disable sanitization (by default enabled)\n\t * @return {string}\n\t */\n\ttranslate(app, text, vars, count, options) {\n\t\tconst defaultOptions = {\n\t\t\tescape: true,\n\t\t\tsanitize: true,\n\t\t}\n\t\tconst allOptions = options || {}\n\t\t_.defaults(allOptions, defaultOptions)\n\n\t\tconst optSanitize = allOptions.sanitize ? DOMPurify.sanitize : identity\n\t\tconst optEscape = allOptions.escape ? escapeHTML : identity\n\n\t\t// TODO: cache this function to avoid inline recreation\n\t\t// of the same function over and over again in case\n\t\t// translate() is used in a loop\n\t\tconst _build = function(text, vars, count) {\n\t\t\treturn text.replace(/%n/g, count).replace(/{([^{}]*)}/g,\n\t\t\t\tfunction(a, b) {\n\t\t\t\t\tconst r = vars[b]\n\t\t\t\t\tif (typeof r === 'string' || typeof r === 'number') {\n\t\t\t\t\t\treturn optSanitize(optEscape(r))\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn optSanitize(a)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\t\tlet translation = text\n\t\tconst bundle = getAppTranslations(app)\n\t\tconst value = bundle.translations[text]\n\t\tif (typeof (value) !== 'undefined') {\n\t\t\ttranslation = value\n\t\t}\n\n\t\tif (typeof vars === 'object' || count !== undefined) {\n\t\t\treturn optSanitize(_build(translation, vars, count))\n\t\t} else {\n\t\t\treturn optSanitize(translation)\n\t\t}\n\t},\n\n\t/**\n\t * Translate a plural string\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} textSingular the string to translate for exactly one object\n\t * @param {string} textPlural the string to translate for n objects\n\t * @param {number} count number to determine whether to use singular or plural\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @return {string} Translated string\n\t */\n\ttranslatePlural(app, textSingular, textPlural, count, vars, options) {\n\t\tconst identifier = '_' + textSingular + '_::_' + textPlural + '_'\n\t\tconst bundle = getAppTranslations(app)\n\t\tconst value = bundle.translations[identifier]\n\t\tif (typeof (value) !== 'undefined') {\n\t\t\tconst translation = value\n\t\t\tif ($.isArray(translation)) {\n\t\t\t\tconst plural = bundle.pluralFunction(count)\n\t\t\t\treturn this.translate(app, translation[plural], vars, count, options)\n\t\t\t}\n\t\t}\n\n\t\tif (count === 1) {\n\t\t\treturn this.translate(app, textSingular, vars, count, options)\n\t\t} else {\n\t\t\treturn this.translate(app, textPlural, vars, count, options)\n\t\t}\n\t},\n\n\t/**\n\t * The plural function taken from symfony\n\t *\n\t * @param {number} number the number of elements\n\t * @return {number}\n\t * @private\n\t */\n\t_getPlural(number) {\n\t\tlet language = OC.getLanguage()\n\t\tif (language === 'pt-BR') {\n\t\t\t// temporary set a locale for brazilian\n\t\t\tlanguage = 'xbr'\n\t\t}\n\n\t\tif (typeof language === 'undefined' || language === '') {\n\t\t\treturn (number === 1) ? 0 : 1\n\t\t}\n\n\t\tif (language.length > 3) {\n\t\t\tlanguage = language.substring(0, language.lastIndexOf('-'))\n\t\t}\n\n\t\t/*\n\t\t * The plural rules are derived from code of the Zend Framework (2010-09-25),\n\t\t * which is subject to the new BSD license (http://framework.zend.com/license/new-bsd).\n\t\t * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n\t\t */\n\t\tswitch (language) {\n\t\tcase 'az':\n\t\tcase 'bo':\n\t\tcase 'dz':\n\t\tcase 'id':\n\t\tcase 'ja':\n\t\tcase 'jv':\n\t\tcase 'ka':\n\t\tcase 'km':\n\t\tcase 'kn':\n\t\tcase 'ko':\n\t\tcase 'ms':\n\t\tcase 'th':\n\t\tcase 'tr':\n\t\tcase 'vi':\n\t\tcase 'zh':\n\t\t\treturn 0\n\n\t\tcase 'af':\n\t\tcase 'bn':\n\t\tcase 'bg':\n\t\tcase 'ca':\n\t\tcase 'da':\n\t\tcase 'de':\n\t\tcase 'el':\n\t\tcase 'en':\n\t\tcase 'eo':\n\t\tcase 'es':\n\t\tcase 'et':\n\t\tcase 'eu':\n\t\tcase 'fa':\n\t\tcase 'fi':\n\t\tcase 'fo':\n\t\tcase 'fur':\n\t\tcase 'fy':\n\t\tcase 'gl':\n\t\tcase 'gu':\n\t\tcase 'ha':\n\t\tcase 'he':\n\t\tcase 'hu':\n\t\tcase 'is':\n\t\tcase 'it':\n\t\tcase 'ku':\n\t\tcase 'lb':\n\t\tcase 'ml':\n\t\tcase 'mn':\n\t\tcase 'mr':\n\t\tcase 'nah':\n\t\tcase 'nb':\n\t\tcase 'ne':\n\t\tcase 'nl':\n\t\tcase 'nn':\n\t\tcase 'no':\n\t\tcase 'oc':\n\t\tcase 'om':\n\t\tcase 'or':\n\t\tcase 'pa':\n\t\tcase 'pap':\n\t\tcase 'ps':\n\t\tcase 'pt':\n\t\tcase 'so':\n\t\tcase 'sq':\n\t\tcase 'sv':\n\t\tcase 'sw':\n\t\tcase 'ta':\n\t\tcase 'te':\n\t\tcase 'tk':\n\t\tcase 'ur':\n\t\tcase 'zu':\n\t\t\treturn (number === 1) ? 0 : 1\n\n\t\tcase 'am':\n\t\tcase 'bh':\n\t\tcase 'fil':\n\t\tcase 'fr':\n\t\tcase 'gun':\n\t\tcase 'hi':\n\t\tcase 'hy':\n\t\tcase 'ln':\n\t\tcase 'mg':\n\t\tcase 'nso':\n\t\tcase 'xbr':\n\t\tcase 'ti':\n\t\tcase 'wa':\n\t\t\treturn ((number === 0) || (number === 1)) ? 0 : 1\n\n\t\tcase 'be':\n\t\tcase 'bs':\n\t\tcase 'hr':\n\t\tcase 'ru':\n\t\tcase 'sh':\n\t\tcase 'sr':\n\t\tcase 'uk':\n\t\t\treturn ((number % 10 === 1) && (number % 100 !== 11)) ? 0 : (((number % 10 >= 2) && (number % 10 <= 4) && ((number % 100 < 10) || (number % 100 >= 20))) ? 1 : 2)\n\n\t\tcase 'cs':\n\t\tcase 'sk':\n\t\t\treturn (number === 1) ? 0 : (((number >= 2) && (number <= 4)) ? 1 : 2)\n\n\t\tcase 'ga':\n\t\t\treturn (number === 1) ? 0 : ((number === 2) ? 1 : 2)\n\n\t\tcase 'lt':\n\t\t\treturn ((number % 10 === 1) && (number % 100 !== 11)) ? 0 : (((number % 10 >= 2) && ((number % 100 < 10) || (number % 100 >= 20))) ? 1 : 2)\n\n\t\tcase 'sl':\n\t\t\treturn (number % 100 === 1) ? 0 : ((number % 100 === 2) ? 1 : (((number % 100 === 3) || (number % 100 === 4)) ? 2 : 3))\n\n\t\tcase 'mk':\n\t\t\treturn (number % 10 === 1) ? 0 : 1\n\n\t\tcase 'mt':\n\t\t\treturn (number === 1) ? 0 : (((number === 0) || ((number % 100 > 1) && (number % 100 < 11))) ? 1 : (((number % 100 > 10) && (number % 100 < 20)) ? 2 : 3))\n\n\t\tcase 'lv':\n\t\t\treturn (number === 0) ? 0 : (((number % 10 === 1) && (number % 100 !== 11)) ? 1 : 2)\n\n\t\tcase 'pl':\n\t\t\treturn (number === 1) ? 0 : (((number % 10 >= 2) && (number % 10 <= 4) && ((number % 100 < 12) || (number % 100 > 14))) ? 1 : 2)\n\n\t\tcase 'cy':\n\t\t\treturn (number === 1) ? 0 : ((number === 2) ? 1 : (((number === 8) || (number === 11)) ? 2 : 3))\n\n\t\tcase 'ro':\n\t\t\treturn (number === 1) ? 0 : (((number === 0) || ((number % 100 > 0) && (number % 100 < 20))) ? 1 : 2)\n\n\t\tcase 'ar':\n\t\t\treturn (number === 0) ? 0 : ((number === 1) ? 1 : ((number === 2) ? 2 : (((number % 100 >= 3) && (number % 100 <= 10)) ? 3 : (((number % 100 >= 11) && (number % 100 <= 99)) ? 4 : 5))))\n\n\t\tdefault:\n\t\t\treturn 0\n\t\t}\n\t},\n}\n\nexport default L10n\n\n/**\n * Returns the user's locale\n *\n * @return {string} locale string\n */\nexport const getLocale = () => $('html').data('locale') ?? 'en'\n\n/**\n * Returns the user's language\n *\n * @return {string} language string\n */\nexport const getLanguage = () => $('html').prop('lang')\n\nHandlebars.registerHelper('t', function(app, text) {\n\treturn L10n.translate(app, text)\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author rakekniven <mark.ziegler@rakekniven.de>\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 */\n\nimport $ from 'jquery'\n\n/**\n * A little class to manage a status field for a \"saving\" process.\n * It can be used to display a starting message (e.g. \"Saving...\") and then\n * replace it with a green success message or a red error message.\n *\n * @namespace OC.msg\n */\nexport default {\n\t/**\n\t * Displayes a \"Saving...\" message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t */\n\tstartSaving(selector) {\n\t\tthis.startAction(selector, t('core', 'Saving …'))\n\t},\n\n\t/**\n\t * Displayes a custom message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text message to display (no HTML allowed)\n\t */\n\tstartAction(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.removeClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedSaving(selector, response) {\n\t\tthis.finishedAction(selector, response)\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedAction(selector, response) {\n\t\tif (response.status === 'success') {\n\t\t\tthis.finishedSuccess(selector, response.data.message)\n\t\t} else {\n\t\t\tthis.finishedError(selector, response.data.message)\n\t\t}\n\t},\n\n\t/**\n\t * Displayes an success message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text success message to display (no HTML allowed)\n\t */\n\tfinishedSuccess(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.delay(3000)\n\t\t\t.fadeOut(900)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text error message to display (no HTML allowed)\n\t */\n\tfinishedError(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('error')\n\t\t\t.removeClass('success')\n\t\t\t.show()\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport moment from 'moment'\nimport { generateUrl } from '@nextcloud/router'\n\nimport OC from './index'\n\n/**\n * @namespace OC.PasswordConfirmation\n */\nexport default {\n\tcallback: null,\n\n\tpageLoadTime: null,\n\n\tinit() {\n\t\t$('.password-confirm-required').on('click', _.bind(this.requirePasswordConfirmation, this))\n\t\tthis.pageLoadTime = moment.now()\n\t},\n\n\trequiresPasswordConfirmation() {\n\t\tconst serverTimeDiff = this.pageLoadTime - (window.nc_pageLoad * 1000)\n\t\tconst timeSinceLogin = moment.now() - (serverTimeDiff + (window.nc_lastLogin * 1000))\n\n\t\t// if timeSinceLogin > 30 minutes and user backend allows password confirmation\n\t\treturn (window.backendAllowsPasswordConfirmation && timeSinceLogin > 30 * 60 * 1000)\n\t},\n\n\t/**\n\t * @param {Function} callback success callback function\n\t * @param {object} options options\n\t * @param {Function} rejectCallback error callback function\n\t */\n\trequirePasswordConfirmation(callback, options, rejectCallback) {\n\t\toptions = typeof options !== 'undefined' ? options : {}\n\t\tconst defaults = {\n\t\t\ttitle: t('core', 'Authentication required'),\n\t\t\ttext: t(\n\t\t\t\t'core',\n\t\t\t\t'This action requires you to confirm your password'\n\t\t\t),\n\t\t\tconfirm: t('core', 'Confirm'),\n\t\t\tlabel: t('core', 'Password'),\n\t\t\terror: '',\n\t\t}\n\n\t\tconst config = _.extend(defaults, options)\n\n\t\tconst self = this\n\n\t\tif (this.requiresPasswordConfirmation()) {\n\t\t\tOC.dialogs.prompt(\n\t\t\t\tconfig.text,\n\t\t\t\tconfig.title,\n\t\t\t\tfunction(result, password) {\n\t\t\t\t\tif (result && password !== '') {\n\t\t\t\t\t\tself._confirmPassword(password, config)\n\t\t\t\t\t} else if (_.isFunction(rejectCallback)) {\n\t\t\t\t\t\trejectCallback()\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\ttrue,\n\t\t\t\tconfig.label,\n\t\t\t\ttrue\n\t\t\t).then(function() {\n\t\t\t\tconst $dialog = $('.oc-dialog:visible')\n\t\t\t\t$dialog.find('.ui-icon').remove()\n\t\t\t\t$dialog.addClass('password-confirmation')\n\t\t\t\tif (config.error !== '') {\n\t\t\t\t\tconst $error = $('<p></p>').addClass('msg warning').text(config.error)\n\t\t\t\t\t$dialog.find('.oc-dialog-content').append($error)\n\t\t\t\t}\n\t\t\t\t$dialog.find('.oc-dialog-buttonrow').addClass('aside')\n\n\t\t\t\tconst $buttons = $dialog.find('button')\n\t\t\t\t$buttons.eq(0).hide()\n\t\t\t\t$buttons.eq(1).text(config.confirm)\n\t\t\t})\n\t\t}\n\n\t\tthis.callback = callback\n\t},\n\n\t_confirmPassword(password, config) {\n\t\tconst self = this\n\n\t\t$.ajax({\n\t\t\turl: generateUrl('/login/confirm'),\n\t\t\tdata: {\n\t\t\t\tpassword,\n\t\t\t},\n\t\t\ttype: 'POST',\n\t\t\tsuccess(response) {\n\t\t\t\twindow.nc_lastLogin = response.lastLogin\n\n\t\t\t\tif (_.isFunction(self.callback)) {\n\t\t\t\t\tself.callback()\n\t\t\t\t}\n\t\t\t},\n\t\t\terror() {\n\t\t\t\tconfig.error = t('core', 'Failed to authenticate, try again')\n\t\t\t\tOC.PasswordConfirmation.requirePasswordConfirmation(self.callback, config)\n\t\t\t},\n\t\t})\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 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 */\n\nexport const theme = window._theme || {}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport _ from 'underscore'\nimport OC from './index'\n\n/**\n * Utility class for the history API,\n * includes fallback to using the URL hash when\n * the browser doesn't support the history API.\n *\n * @namespace OC.Util.History\n */\nexport default {\n\n\t_handlers: [],\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t * @param {boolean} [replace=false] whether to replace instead of pushing\n\t */\n\t_pushState(params, url, replace) {\n\t\tlet strParams\n\t\tif (typeof (params) === 'string') {\n\t\t\tstrParams = params\n\t\t} else {\n\t\t\tstrParams = OC.buildQueryString(params)\n\t\t}\n\n\t\tif (window.history.pushState) {\n\t\t\turl = url || location.pathname + '?' + strParams\n\t\t\t// Workaround for bug with SVG and window.history.pushState on Firefox < 51\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=652991\n\t\t\tconst isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1\n\t\t\tif (isFirefox && parseInt(navigator.userAgent.split('/').pop()) < 51) {\n\t\t\t\tconst patterns = document.querySelectorAll('[fill^=\"url(#\"], [stroke^=\"url(#\"], [filter^=\"url(#invert\"]')\n\t\t\t\tfor (let i = 0, ii = patterns.length, pattern; i < ii; i++) {\n\t\t\t\t\tpattern = patterns[i]\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.fill = pattern.style.fill\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.stroke = pattern.style.stroke\n\t\t\t\t\tpattern.removeAttribute('filter')\n\t\t\t\t\tpattern.setAttribute('filter', 'url(#invert)')\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (replace) {\n\t\t\t\twindow.history.replaceState(params, '', url)\n\t\t\t} else {\n\t\t\t\twindow.history.pushState(params, '', url)\n\t\t\t}\n\t\t} else {\n\t\t\t// use URL hash for IE8\n\t\t\twindow.location.hash = '?' + strParams\n\t\t\t// inhibit next onhashchange that just added itself\n\t\t\t// to the event queue\n\t\t\tthis._cancelPop = true\n\t\t}\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used, using the params as query string\n\t */\n\tpushState(params, url) {\n\t\tthis._pushState(params, url, false)\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t */\n\treplaceState(params, url) {\n\t\tthis._pushState(params, url, true)\n\t},\n\n\t/**\n\t * Add a popstate handler\n\t *\n\t * @param {Function} handler handler\n\t */\n\taddOnPopStateHandler(handler) {\n\t\tthis._handlers.push(handler)\n\t},\n\n\t/**\n\t * Parse a query string from the hash part of the URL.\n\t * (workaround for IE8 / IE9)\n\t *\n\t * @return {string}\n\t */\n\t_parseHashQuery() {\n\t\tconst hash = window.location.hash\n\t\tconst pos = hash.indexOf('?')\n\t\tif (pos >= 0) {\n\t\t\treturn hash.substr(pos + 1)\n\t\t}\n\t\tif (hash.length) {\n\t\t\t// remove hash sign\n\t\t\treturn hash.substr(1)\n\t\t}\n\t\treturn ''\n\t},\n\n\t_decodeQuery(query) {\n\t\treturn query.replace(/\\+/g, ' ')\n\t},\n\n\t/**\n\t * Parse the query/search part of the URL.\n\t * Also try and parse it from the URL hash (for IE8)\n\t *\n\t * @return {object} map of parameters\n\t */\n\tparseUrlQuery() {\n\t\tconst query = this._parseHashQuery()\n\t\tlet params\n\t\t// try and parse from URL hash first\n\t\tif (query) {\n\t\t\tparams = OC.parseQueryString(this._decodeQuery(query))\n\t\t}\n\t\t// else read from query attributes\n\t\tparams = _.extend(params || {}, OC.parseQueryString(this._decodeQuery(location.search)))\n\t\treturn params || {}\n\t},\n\n\t_onPopState(e) {\n\t\tif (this._cancelPop) {\n\t\t\tthis._cancelPop = false\n\t\t\treturn\n\t\t}\n\t\tlet params\n\t\tif (!this._handlers.length) {\n\t\t\treturn\n\t\t}\n\t\tparams = (e && e.state)\n\t\tif (_.isString(params)) {\n\t\t\tparams = OC.parseQueryString(params)\n\t\t} else if (!params) {\n\t\t\tparams = this.parseUrlQuery() || {}\n\t\t}\n\t\tfor (let i = 0; i < this._handlers.length; i++) {\n\t\t\tthis._handlers[i](params)\n\t\t}\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport moment from 'moment'\n\nimport History from './util-history'\nimport OC from './index'\nimport { formatFileSize as humanFileSize } from '@nextcloud/files'\n\n/**\n * @param {any} t -\n */\nfunction chunkify(t) {\n\t// Adapted from http://my.opera.com/GreyWyvern/blog/show.dml/1671288\n\tconst tz = []\n\tlet x = 0\n\tlet y = -1\n\tlet n = 0\n\tlet c\n\n\twhile (x < t.length) {\n\t\tc = t.charAt(x)\n\t\t// only include the dot in strings\n\t\tconst m = ((!n && c === '.') || (c >= '0' && c <= '9'))\n\t\tif (m !== n) {\n\t\t\t// next chunk\n\t\t\ty++\n\t\t\ttz[y] = ''\n\t\t\tn = m\n\t\t}\n\t\ttz[y] += c\n\t\tx++\n\t}\n\treturn tz\n}\n\n/**\n * Utility functions\n *\n * @namespace OC.Util\n */\nexport default {\n\n\tHistory,\n\n\t/**\n\t * @deprecated use https://nextcloud.github.io/nextcloud-files/modules/_humanfilesize_.html#formatfilesize\n\t */\n\thumanFileSize,\n\n\t/**\n\t * Returns a file size in bytes from a humanly readable string\n\t * Makes 2kB to 2048.\n\t * Inspired by computerFileSize in helper.php\n\t *\n\t * @param {string} string file size in human readable format\n\t * @return {number} or null if string could not be parsed\n\t *\n\t *\n\t */\n\tcomputerFileSize(string) {\n\t\tif (typeof string !== 'string') {\n\t\t\treturn null\n\t\t}\n\n\t\tconst s = string.toLowerCase().trim()\n\t\tlet bytes = null\n\n\t\tconst bytesArray = {\n\t\t\tb: 1,\n\t\t\tk: 1024,\n\t\t\tkb: 1024,\n\t\t\tmb: 1024 * 1024,\n\t\t\tm: 1024 * 1024,\n\t\t\tgb: 1024 * 1024 * 1024,\n\t\t\tg: 1024 * 1024 * 1024,\n\t\t\ttb: 1024 * 1024 * 1024 * 1024,\n\t\t\tt: 1024 * 1024 * 1024 * 1024,\n\t\t\tpb: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t\tp: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t}\n\n\t\tconst matches = s.match(/^[\\s+]?([0-9]*)(\\.([0-9]+))?( +)?([kmgtp]?b?)$/i)\n\t\tif (matches !== null) {\n\t\t\tbytes = parseFloat(s)\n\t\t\tif (!isFinite(bytes)) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t\tif (matches[5]) {\n\t\t\tbytes = bytes * bytesArray[matches[5]]\n\t\t}\n\n\t\tbytes = Math.round(bytes)\n\t\treturn bytes\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @param {string} format date format, see momentjs docs\n\t * @return {string} timestamp formatted as requested\n\t */\n\tformatDate(timestamp, format) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tconsole.warn('OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tformat = format || 'LLL'\n\t\treturn moment(timestamp).format(format)\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @return {string} human readable difference from now\n\t */\n\trelativeModifiedDate(timestamp) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tconsole.warn('OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tconst diff = moment().diff(moment(timestamp))\n\t\tif (diff >= 0 && diff < 45000) {\n\t\t\treturn t('core', 'seconds ago')\n\t\t}\n\t\treturn moment(timestamp).fromNow()\n\t},\n\n\t/**\n\t * Returns the width of a generic browser scrollbar\n\t *\n\t * @return {number} width of scrollbar\n\t */\n\tgetScrollBarWidth() {\n\t\tif (this._scrollBarWidth) {\n\t\t\treturn this._scrollBarWidth\n\t\t}\n\n\t\tconst inner = document.createElement('p')\n\t\tinner.style.width = '100%'\n\t\tinner.style.height = '200px'\n\n\t\tconst outer = document.createElement('div')\n\t\touter.style.position = 'absolute'\n\t\touter.style.top = '0px'\n\t\touter.style.left = '0px'\n\t\touter.style.visibility = 'hidden'\n\t\touter.style.width = '200px'\n\t\touter.style.height = '150px'\n\t\touter.style.overflow = 'hidden'\n\t\touter.appendChild(inner)\n\n\t\tdocument.body.appendChild(outer)\n\t\tconst w1 = inner.offsetWidth\n\t\touter.style.overflow = 'scroll'\n\t\tlet w2 = inner.offsetWidth\n\t\tif (w1 === w2) {\n\t\t\tw2 = outer.clientWidth\n\t\t}\n\n\t\tdocument.body.removeChild(outer)\n\n\t\tthis._scrollBarWidth = (w1 - w2)\n\n\t\treturn this._scrollBarWidth\n\t},\n\n\t/**\n\t * Remove the time component from a given date\n\t *\n\t * @param {Date} date date\n\t * @return {Date} date with stripped time\n\t */\n\tstripTime(date) {\n\t\t// FIXME: likely to break when crossing DST\n\t\t// would be better to use a library like momentJS\n\t\treturn new Date(date.getFullYear(), date.getMonth(), date.getDate())\n\t},\n\n\t/**\n\t * Compare two strings to provide a natural sort\n\t *\n\t * @param {string} a first string to compare\n\t * @param {string} b second string to compare\n\t * @return {number} -1 if b comes before a, 1 if a comes before b\n\t * or 0 if the strings are identical\n\t */\n\tnaturalSortCompare(a, b) {\n\t\tlet x\n\t\tconst aa = chunkify(a)\n\t\tconst bb = chunkify(b)\n\n\t\tfor (x = 0; aa[x] && bb[x]; x++) {\n\t\t\tif (aa[x] !== bb[x]) {\n\t\t\t\tconst aNum = Number(aa[x]); const bNum = Number(bb[x])\n\t\t\t\t// note: == is correct here\n\t\t\t\t/* eslint-disable-next-line */\n\t\t\t\tif (aNum == aa[x] && bNum == bb[x]) {\n\t\t\t\t\treturn aNum - bNum\n\t\t\t\t} else {\n\t\t\t\t\t// Note: This locale setting isn't supported by all browsers but for the ones\n\t\t\t\t\t// that do there will be more consistency between client-server sorting\n\t\t\t\t\treturn aa[x].localeCompare(bb[x], OC.getLanguage())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn aa.length - bb.length\n\t},\n\n\t/**\n\t * Calls the callback in a given interval until it returns true\n\t *\n\t * @param {Function} callback function to call on success\n\t * @param {number} interval in milliseconds\n\t */\n\twaitFor(callback, interval) {\n\t\tconst internalCallback = function() {\n\t\t\tif (callback() !== true) {\n\t\t\t\tsetTimeout(internalCallback, interval)\n\t\t\t}\n\t\t}\n\n\t\tinternalCallback()\n\t},\n\n\t/**\n\t * Checks if a cookie with the given name is present and is set to the provided value.\n\t *\n\t * @param {string} name name of the cookie\n\t * @param {string} value value of the cookie\n\t * @return {boolean} true if the cookie with the given name has the given value\n\t */\n\tisCookieSetToValue(name, value) {\n\t\tconst cookies = document.cookie.split(';')\n\t\tfor (let i = 0; i < cookies.length; i++) {\n\t\t\tconst cookie = cookies[i].split('=')\n\t\t\tif (cookie[0].trim() === name && cookie[1].trim() === value) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 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 */\n\nconst base = window._oc_debug\n\nexport const debug = base\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 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 */\n\nlet webroot = window._oc_webroot\n\nif (typeof webroot === 'undefined') {\n\twebroot = location.pathname\n\tconst pos = webroot.indexOf('/index.php/')\n\tif (pos !== -1) {\n\t\twebroot = webroot.substr(0, pos)\n\t} else {\n\t\twebroot = webroot.substr(0, webroot.lastIndexOf('/'))\n\t}\n}\n\nexport default webroot\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nexport const get = context => name => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tcontext = context[namespaces[i]]\n\t\tif (!context) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn context[tail]\n}\n\n/**\n * Set a variable by name\n *\n * @param {string} context context\n * @return {Function} setter\n * @deprecated 19.0.0 use https://lodash.com/docs#set\n */\nexport const set = context => (name, value) => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tif (!context[namespaces[i]]) {\n\t\t\tcontext[namespaces[i]] = {}\n\t\t}\n\t\tcontext = context[namespaces[i]]\n\t}\n\tcontext[tail] = value\n\treturn value\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport { subscribe } from '@nextcloud/event-bus'\n\nimport { addScript, addStyle } from './legacy-loader'\nimport {\n\tajaxConnectionLostHandler,\n\tprocessAjaxError,\n\tregisterXHRForErrorProcessing,\n} from './xhr-error'\nimport Apps from './apps'\nimport { AppConfig, appConfig } from './appconfig'\nimport { appSettings } from './appsettings'\nimport appswebroots from './appswebroots'\nimport Backbone from './backbone'\nimport {\n\tbasename,\n\tdirname,\n\tencodePath,\n\tisSamePath,\n\tjoinPaths,\n} from '@nextcloud/paths'\nimport {\n\tbuild as buildQueryString,\n\tparse as parseQueryString,\n} from './query-string'\nimport Config from './config'\nimport {\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n} from './constants'\nimport ContactsMenu from './contactsmenu'\nimport { currentUser, getCurrentUser } from './currentuser'\nimport Dialogs from './dialogs'\nimport EventSource from './eventsource'\nimport { get, set } from './get_set'\nimport { getCapabilities } from './capabilities'\nimport {\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n} from './host'\nimport {\n\tgetToken as getRequestToken,\n} from './requesttoken'\nimport {\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n} from './menu'\nimport { isUserAdmin } from './admin'\nimport L10N, {\n\tgetLanguage,\n\tgetLocale,\n} from './l10n'\nimport {\n\tgetCanonicalLocale,\n} from '@nextcloud/l10n'\n\nimport {\n\tgenerateUrl,\n\tgenerateFilePath,\n\tgenerateOcsUrl,\n\tgenerateRemoteUrl,\n\tgetRootUrl,\n\timagePath,\n\tlinkTo,\n} from '@nextcloud/router'\n\nimport {\n\tlinkToRemoteBase,\n} from './routing'\nimport msg from './msg'\nimport Notification from './notification'\nimport PasswordConfirmation from './password-confirmation'\nimport Plugins from './plugins'\nimport { theme } from './theme'\nimport Util from './util'\nimport { debug } from './debug'\nimport { redirect, reload } from './navigation'\nimport webroot from './webroot'\n\n/** @namespace OC */\nexport default {\n\t/*\n\t * Constants\n\t */\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n\n\t/*\n\t * Deprecated helpers to be removed\n\t */\n\t/**\n\t * Check if a user file is allowed to be handled.\n\t *\n\t * @param {string} file to check\n\t * @return {boolean}\n\t * @deprecated 17.0.0\n\t */\n\tfileIsBlacklisted: file => !!(file.match(Config.blacklist_files_regex)),\n\n\taddScript,\n\taddStyle,\n\tApps,\n\tAppConfig,\n\tappConfig,\n\tappSettings,\n\tappswebroots,\n\tBackbone,\n\tContactsMenu,\n\tconfig: Config,\n\t/**\n\t * Currently logged in user or null if none\n\t *\n\t * @type {string}\n\t * @deprecated use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tcurrentUser,\n\tdialogs: Dialogs,\n\tEventSource,\n\t/**\n\t * Returns the currently logged in user or null if there is no logged in\n\t * user (public page mode)\n\t *\n\t * @since 9.0.0\n\t * @deprecated 19.0.0 use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tgetCurrentUser,\n\tisUserAdmin,\n\tL10N,\n\n\t/**\n\t * Ajax error handlers\n\t *\n\t * @todo remove from here and keep internally -> requires new tests\n\t */\n\t_ajaxConnectionLostHandler: ajaxConnectionLostHandler,\n\t_processAjaxError: processAjaxError,\n\tregisterXHRForErrorProcessing,\n\n\t/**\n\t * Capabilities\n\t *\n\t * @type {Array}\n\t * @deprecated 20.0.0 use @nextcloud/capabilities instead\n\t */\n\tgetCapabilities,\n\n\t/*\n\t * Legacy menu helpers\n\t */\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n\n\t/*\n\t * Path helpers\n\t */\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tbasename,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tencodePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tdirname,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tisSamePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tjoinPaths,\n\n\t/**\n\t * Host (url) helpers\n\t */\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n\n\t/**\n\t * @deprecated 20.0.0 use `getCanonicalLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetCanonicalLocale,\n\tgetLocale,\n\tgetLanguage,\n\t/**\n\t * Loads translations for the given app asynchronously.\n\t *\n\t * @param {string} app app name\n\t * @param {Function} callback callback to call after loading\n\t * @return {Promise}\n\t * @deprecated 17.0.0 use OC.L10N.load instead\n\t */\n\taddTranslations: L10N.load,\n\n\t/**\n\t * Query string helpers\n\t */\n\tbuildQueryString,\n\tparseQueryString,\n\n\tmsg,\n\tNotification,\n\tPasswordConfirmation,\n\tPlugins,\n\ttheme,\n\tUtil,\n\tdebug,\n\t/**\n\t * @deprecated 19.0.0 use `generateFilePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tfilePath: generateFilePath,\n\t/**\n\t * @deprecated 19.0.0 use `generateUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgenerateUrl,\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#get\n\t */\n\tget: get(window),\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#set\n\t */\n\tset: set(window),\n\t/**\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgetRootPath: getRootUrl,\n\t/**\n\t * @deprecated 19.0.0 use `imagePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\timagePath,\n\tredirect,\n\treload,\n\trequestToken: getRequestToken(),\n\t/**\n\t * @deprecated 19.0.0 use `linkTo` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkTo,\n\t/**\n\t * @param {string} service service name\n\t * @param {number} version OCS API version\n\t * @return {string} OCS API base path\n\t * @deprecated 19.0.0 use `generateOcsUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToOCS: (service, version) => {\n\t\treturn generateOcsUrl(service, {}, {\n\t\t\tocsVersion: version || 1,\n\t\t}) + '/'\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `generateRemoteUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToRemote: generateRemoteUrl,\n\tlinkToRemoteBase,\n\t/**\n\t * Relative path to Nextcloud root.\n\t * For example: \"/nextcloud\"\n\t *\n\t * @type {string}\n\t *\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t * @see OC#getRootPath\n\t */\n\twebroot,\n}\n\n// Keep the request token prop in sync\nsubscribe('csrf-token-update', e => {\n\tOC.requestToken = e.token\n\n\t// Logging might help debug (Sentry) issues\n\tconsole.info('OC.requestToken changed', e.token)\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\n/* eslint-disable */\nimport $ from 'jquery'\nimport { filePath } from './routing'\nimport { generateFilePath } from \"@nextcloud/router\"\n\n/**\n * Opens a popup with the setting for an app.\n * @param {string} appid The ID of the app e.g. 'calendar', 'contacts' or 'files'.\n * @param {boolean|string} loadJS If true 'js/settings.js' is loaded. If it's a string\n * it will attempt to load a script by that name in the 'js' directory.\n * @param {boolean} [cache] If true the javascript file won't be forced refreshed. Defaults to true.\n * @param {string} [scriptName] The name of the PHP file to load. Defaults to 'settings.php' in\n * the root of the app directory hierarchy.\n *\n * @deprecated 17.0.0 this method is unused and will be removed with Nextcloud 18\n */\nexport const appSettings = args => {\n\tconsole.warn('OC.appSettings is deprecated and will be removed with Nextcloud 18')\n\n\tif (typeof args === 'undefined' || typeof args.appid === 'undefined') {\n\t\tthrow {\n\t\t\tname: 'MissingParameter',\n\t\t\tmessage: 'The parameter appid is missing'\n\t\t}\n\t}\n\tvar props = { scriptName: 'settings.php', cache: true }\n\t$.extend(props, args)\n\tvar settings = $('#appsettings')\n\tif (settings.length === 0) {\n\t\tthrow {\n\t\t\tname: 'MissingDOMElement',\n\t\t\tmessage: 'There has be be an element with id \"appsettings\" for the popup to show.'\n\t\t}\n\t}\n\tvar popup = $('#appsettings_popup')\n\tif (popup.length === 0) {\n\t\t$('body').prepend('<div class=\"popup hidden\" id=\"appsettings_popup\"></div>')\n\t\tpopup = $('#appsettings_popup')\n\t\tpopup.addClass(settings.hasClass('topright') ? 'topright' : 'bottomleft')\n\t}\n\tif (popup.is(':visible')) {\n\t\tpopup.hide().remove()\n\t} else {\n\t\tconst arrowclass = settings.hasClass('topright') ? 'up' : 'left'\n\t\t$.get(generateFilePath(props.appid, '', props.scriptName), function(data) {\n\t\t\tpopup.html(data).ready(function() {\n\t\t\t\tpopup.prepend('<span class=\"arrow ' + arrowclass + '\"></span><h2>' + t('core', 'Settings') + '</h2><a class=\"close\"></a>').show()\n\t\t\t\tpopup.find('.close').bind('click', function() {\n\t\t\t\t\tpopup.remove()\n\t\t\t\t})\n\t\t\t\tif (typeof props.loadJS !== 'undefined') {\n\t\t\t\t\tvar scriptname\n\t\t\t\t\tif (props.loadJS === true) {\n\t\t\t\t\t\tscriptname = 'settings.js'\n\t\t\t\t\t} else if (typeof props.loadJS === 'string') {\n\t\t\t\t\t\tscriptname = props.loadJS\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow {\n\t\t\t\t\t\t\tname: 'InvalidParameter',\n\t\t\t\t\t\t\tmessage: 'The \"loadJS\" parameter must be either boolean or a string.'\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (props.cache) {\n\t\t\t\t\t\t$.ajaxSetup({ cache: true })\n\t\t\t\t\t}\n\t\t\t\t\t$.getScript(generateFilePath(props.appid, 'js', scriptname))\n\t\t\t\t\t\t.fail(function(jqxhr, settings, e) {\n\t\t\t\t\t\t\tthrow e\n\t\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}).show()\n\t\t}, 'html')\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport { getCapabilities as realGetCapabilities } from '@nextcloud/capabilities'\n\n/**\n * Returns the capabilities\n *\n * @return {Array} capabilities\n *\n * @since 14.0.0\n */\nexport const getCapabilities = () => {\n\tconsole.warn('OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities')\n\treturn realGetCapabilities()\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nexport const getProtocol = () => window.location.protocol.split(':')[0]\n\n/**\n * Returns the host used to access this Nextcloud instance\n * Host is sometimes the same as the hostname but now always.\n *\n * Examples:\n * http://example.com => example.com\n * https://example.com => example.com\n * http://example.com:8080 => example.com:8080\n *\n * @return {string} host\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.host directly\n */\nexport const getHost = () => window.location.host\n\n/**\n * Returns the hostname used to access this Nextcloud instance\n * The hostname is always stripped of the port\n *\n * @return {string} hostname\n * @since 9.0.0\n * @deprecated 17.0.0 use window.location.hostname directly\n */\nexport const getHostName = () => window.location.hostname\n\n/**\n * Returns the port number used to access this Nextcloud instance\n *\n * @return {number} port number\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.port directly\n */\nexport const getPort = () => window.location.port\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport $ from 'jquery'\n\n/**\n * Parses a URL query string into a JS map\n *\n * @param {string} queryString query string in the format param1=1234&param2=abcde&param3=xyz\n * @return {object.<string, string>} map containing key/values matching the URL parameters\n */\nexport const parse = queryString => {\n\tlet pos\n\tlet components\n\tconst result = {}\n\tlet key\n\tif (!queryString) {\n\t\treturn null\n\t}\n\tpos = queryString.indexOf('?')\n\tif (pos >= 0) {\n\t\tqueryString = queryString.substr(pos + 1)\n\t}\n\tconst parts = queryString.replace(/\\+/g, '%20').split('&')\n\tfor (let i = 0; i < parts.length; i++) {\n\t\t// split on first equal sign\n\t\tconst part = parts[i]\n\t\tpos = part.indexOf('=')\n\t\tif (pos >= 0) {\n\t\t\tcomponents = [\n\t\t\t\tpart.substr(0, pos),\n\t\t\t\tpart.substr(pos + 1),\n\t\t\t]\n\t\t} else {\n\t\t\t// key only\n\t\t\tcomponents = [part]\n\t\t}\n\t\tif (!components.length) {\n\t\t\tcontinue\n\t\t}\n\t\tkey = decodeURIComponent(components[0])\n\t\tif (!key) {\n\t\t\tcontinue\n\t\t}\n\t\t// if equal sign was there, return string\n\t\tif (components.length > 1) {\n\t\t\tresult[key] = decodeURIComponent(components[1])\n\t\t} else {\n\t\t\t// no equal sign => null value\n\t\t\tresult[key] = null\n\t\t}\n\t}\n\treturn result\n}\n\n/**\n * Builds a URL query from a JS map.\n *\n * @param {object.<string, string>} params map containing key/values matching the URL parameters\n * @return {string} String containing a URL query (without question) mark\n */\nexport const build = params => {\n\tif (!params) {\n\t\treturn ''\n\t}\n\treturn $.map(params, function(value, key) {\n\t\tlet s = encodeURIComponent(key)\n\t\tif (value !== null && typeof (value) !== 'undefined') {\n\t\t\ts += '=' + encodeURIComponent(value)\n\t\t}\n\t\treturn s\n\t}).join('&')\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nexport default {\n\n\t/**\n\t * @type {Array.<OC.Plugin>}\n\t */\n\t_plugins: {},\n\n\t/**\n\t * Register plugin\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @param {OC.Plugin} plugin plugin\n\t */\n\tregister(targetName, plugin) {\n\t\tlet plugins = this._plugins[targetName]\n\t\tif (!plugins) {\n\t\t\tplugins = this._plugins[targetName] = []\n\t\t}\n\t\tplugins.push(plugin)\n\t},\n\n\t/**\n\t * Returns all plugin registered to the given target\n\t * name / app name / class name.\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @return {Array.<OC.Plugin>} array of plugins\n\t */\n\tgetPlugins(targetName) {\n\t\treturn this._plugins[targetName] || []\n\t},\n\n\t/**\n\t * Call attach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tattach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].attach) {\n\t\t\t\tplugins[i].attach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Call detach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tdetach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].detach) {\n\t\t\t\tplugins[i].detach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nexport const redirect = targetURL => { window.location = targetURL }\n\n/**\n * Reloads the current page\n *\n * @deprecated 17.0.0 use window.location.reload directly\n */\nexport const reload = () => { window.location.reload() }\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport {\n\tgetRootUrl as realGetRootUrl,\n} from '@nextcloud/router'\n\n/**\n * Creates a relative url for remote use\n *\n * @param {string} service id\n * @return {string} the url\n */\nexport const linkToRemoteBase = service => {\n\treturn realGetRootUrl() + '/remote.php/' + service\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.hideLoginForm || _vm.directLogin)?_c('div',[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[(!_vm.passwordlessLogin && !_vm.resetPassword && _vm.resetPasswordTarget === '')?_c('div',{key:\"login\"},[_c('LoginForm',{attrs:{\"username\":_vm.user,\"redirect-url\":_vm.redirectUrl,\"direct-login\":_vm.directLogin,\"messages\":_vm.messages,\"errors\":_vm.errors,\"throttle-delay\":_vm.throttleDelay,\"inverted-colors\":_vm.invertedColors,\"auto-complete-allowed\":_vm.autoCompleteAllowed},on:{\"update:username\":function($event){_vm.user=$event},\"submit\":function($event){_vm.loading = true}}}),_vm._v(\" \"),(_vm.canResetPassword && _vm.resetPasswordLink !== '')?_c('a',{attrs:{\"id\":\"lost-password\",\"href\":_vm.resetPasswordLink}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Forgot password?'))+\"\\n\\t\\t\\t\")]):(_vm.canResetPassword && !_vm.resetPassword)?_c('a',{attrs:{\"id\":\"lost-password\",\"href\":_vm.resetPasswordLink},on:{\"click\":function($event){$event.preventDefault();_vm.resetPassword = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Forgot password?'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('br'),_vm._v(\" \"),(_vm.hasPasswordless)?[(_vm.countAlternativeLogins)?_c('div',{staticClass:\"alternative-logins\"},[(_vm.hasPasswordless)?_c('a',{staticClass:\"button\",class:{ 'single-alt-login-option': _vm.countAlternativeLogins },attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Log in with a device'))+\"\\n\\t\\t\\t\\t\\t\")]):_vm._e()]):_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Log in with a device'))+\"\\n\\t\\t\\t\\t\")])]:_vm._e()],2):(!_vm.loading && _vm.passwordlessLogin)?_c('div',{key:\"reset\",staticClass:\"login-additional\"},[_c('PasswordLessLoginForm',{attrs:{\"username\":_vm.user,\"redirect-url\":_vm.redirectUrl,\"inverted-colors\":_vm.invertedColors,\"auto-complete-allowed\":_vm.autoCompleteAllowed,\"is-https\":_vm.isHttps,\"is-localhost\":_vm.isLocalhost,\"has-public-key-credential\":_vm.hasPublicKeyCredential},on:{\"update:username\":function($event){_vm.user=$event},\"submit\":function($event){_vm.loading = true}}}),_vm._v(\" \"),_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = false}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Back'))+\"\\n\\t\\t\\t\")])],1):(!_vm.loading && _vm.canResetPassword)?_c('div',{key:\"reset\",staticClass:\"login-additional\"},[_c('div',{staticClass:\"lost-password-container\"},[(_vm.resetPassword)?_c('ResetPassword',{attrs:{\"username\":_vm.user,\"reset-password-link\":_vm.resetPasswordLink,\"inverted-colors\":_vm.invertedColors},on:{\"update:username\":function($event){_vm.user=$event},\"abort\":function($event){_vm.resetPassword = false}}}):_vm._e()],1)]):(_vm.resetPasswordTarget !== '')?_c('div',[_c('UpdatePassword',{attrs:{\"username\":_vm.user,\"reset-password-target\":_vm.resetPasswordTarget,\"inverted-colors\":_vm.invertedColors},on:{\"update:username\":function($event){_vm.user=$event},\"done\":_vm.passwordResetFinished}})],1):_vm._e()])],1):_c('div',[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('div',{staticClass:\"warning\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Login form is disabled.'))),_c('br'),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.t('core', 'Please contact your administrator.'))+\"\\n\\t\\t\\t\")])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.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!./LoginButton.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\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\n<template>\n\t<div id=\"submit-wrapper\" @click=\"$emit('click')\">\n\t\t<input id=\"submit-form\"\n\t\t\ttype=\"submit\"\n\t\t\tclass=\"login primary\"\n\t\t\ttitle=\"\"\n\t\t\t:value=\"!loading ? t('core', 'Log in') : t('core', 'Logging in …')\">\n\t\t<div class=\"submit-icon\"\n\t\t\t:class=\"{\n\t\t\t\t'icon-confirm-white': !loading,\n\t\t\t\t'icon-loading-small': loading && invertedColors,\n\t\t\t\t'icon-loading-small-dark': loading && !invertedColors,\n\t\t\t}\" />\n\t</div>\n</template>\n\n<script>\nexport default {\n\tname: 'LoginButton',\n\tprops: {\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tinvertedColors: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\n</style>\n","import { render, staticRenderFns } from \"./LoginButton.vue?vue&type=template&id=125b100b&scoped=true&\"\nimport script from \"./LoginButton.vue?vue&type=script&lang=js&\"\nexport * from \"./LoginButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"125b100b\",\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',{attrs:{\"id\":\"submit-wrapper\"},on:{\"click\":function($event){return _vm.$emit('click')}}},[_c('input',{staticClass:\"login primary\",attrs:{\"id\":\"submit-form\",\"type\":\"submit\",\"title\":\"\"},domProps:{\"value\":!_vm.loading ? _vm.t('core', 'Log in') : _vm.t('core', 'Logging in …')}}),_vm._v(\" \"),_c('div',{staticClass:\"submit-icon\",class:{\n\t\t\t'icon-confirm-white': !_vm.loading,\n\t\t\t'icon-loading-small': _vm.loading && _vm.invertedColors,\n\t\t\t'icon-loading-small-dark': _vm.loading && !_vm.invertedColors,\n\t\t}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.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!./LoginForm.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\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\n<template>\n\t<form ref=\"loginForm\"\n\t\tmethod=\"post\"\n\t\tname=\"login\"\n\t\t:action=\"loginActionUrl\"\n\t\t@submit=\"submit\">\n\t\t<fieldset>\n\t\t\t<div v-if=\"apacheAuthFailed\"\n\t\t\t\tclass=\"warning\">\n\t\t\t\t{{ t('core', 'Server side authentication failed!') }}<br>\n\t\t\t\t<small>{{ t('core', 'Please contact your administrator.') }}\n\t\t\t\t</small>\n\t\t\t</div>\n\t\t\t<div v-for=\"(message, index) in messages\"\n\t\t\t\t:key=\"index\"\n\t\t\t\tclass=\"warning\">\n\t\t\t\t{{ message }}<br>\n\t\t\t</div>\n\t\t\t<div v-if=\"internalException\"\n\t\t\t\tclass=\"warning\">\n\t\t\t\t{{ t('core', 'An internal error occurred.') }}<br>\n\t\t\t\t<small>{{ t('core', 'Please try again or contact your administrator.') }}\n\t\t\t\t</small>\n\t\t\t</div>\n\t\t\t<div id=\"message\"\n\t\t\t\tclass=\"hidden\">\n\t\t\t\t<img class=\"float-spinner\"\n\t\t\t\t\talt=\"\"\n\t\t\t\t\t:src=\"loadingIcon\">\n\t\t\t\t<span id=\"messageText\" />\n\t\t\t\t<!-- the following div ensures that the spinner is always inside the #message div -->\n\t\t\t\t<div style=\"clear: both;\" />\n\t\t\t</div>\n\t\t\t<p class=\"grouptop\"\n\t\t\t\t:class=\"{shake: invalidPassword}\">\n\t\t\t\t<input id=\"user\"\n\t\t\t\t\tref=\"user\"\n\t\t\t\t\tv-model=\"user\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tname=\"user\"\n\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\tautocorrect=\"off\"\n\t\t\t\t\t:autocomplete=\"autoCompleteAllowed ? 'on' : 'off'\"\n\t\t\t\t\t:placeholder=\"t('core', 'Username or email')\"\n\t\t\t\t\t:aria-label=\"t('core', 'Username or email')\"\n\t\t\t\t\trequired\n\t\t\t\t\t@change=\"updateUsername\">\n\t\t\t\t<label for=\"user\" class=\"infield\">{{ t('core', 'Username or email') }}</label>\n\t\t\t</p>\n\n\t\t\t<p class=\"groupbottom\"\n\t\t\t\t:class=\"{shake: invalidPassword}\">\n\t\t\t\t<input id=\"password\"\n\t\t\t\t\tref=\"password\"\n\t\t\t\t\t:type=\"passwordInputType\"\n\t\t\t\t\tclass=\"password-with-toggle\"\n\t\t\t\t\tname=\"password\"\n\t\t\t\t\tautocorrect=\"off\"\n\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\t:autocomplete=\"autoCompleteAllowed ? 'current-password' : 'off'\"\n\t\t\t\t\t:placeholder=\"t('core', 'Password')\"\n\t\t\t\t\t:aria-label=\"t('core', 'Password')\"\n\t\t\t\t\trequired>\n\t\t\t\t<label for=\"password\"\n\t\t\t\t\tclass=\"infield\">{{ t('Password') }}</label>\n\t\t\t\t<a href=\"#\" class=\"toggle-password\" @click.stop.prevent=\"togglePassword\">\n\t\t\t\t\t<img :src=\"toggleIcon\" :alt=\"t('core', 'Toggle password visibility')\">\n\t\t\t\t</a>\n\t\t\t</p>\n\n\t\t\t<LoginButton :loading=\"loading\" :inverted-colors=\"invertedColors\" />\n\n\t\t\t<p v-if=\"invalidPassword\"\n\t\t\t\tclass=\"warning wrongPasswordMsg\">\n\t\t\t\t{{ t('core', 'Wrong username or password.') }}\n\t\t\t</p>\n\t\t\t<p v-else-if=\"userDisabled\"\n\t\t\t\tclass=\"warning userDisabledMsg\">\n\t\t\t\t{{ t('core', 'User disabled') }}\n\t\t\t</p>\n\n\t\t\t<p v-if=\"throttleDelay && throttleDelay > 5000\"\n\t\t\t\tclass=\"warning throttledMsg\">\n\t\t\t\t{{ t('core', 'We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds.') }}\n\t\t\t</p>\n\n\t\t\t<input v-if=\"redirectUrl\"\n\t\t\t\ttype=\"hidden\"\n\t\t\t\tname=\"redirect_url\"\n\t\t\t\t:value=\"redirectUrl\">\n\t\t\t<input type=\"hidden\"\n\t\t\t\tname=\"timezone\"\n\t\t\t\t:value=\"timezone\">\n\t\t\t<input type=\"hidden\"\n\t\t\t\tname=\"timezone_offset\"\n\t\t\t\t:value=\"timezoneOffset\">\n\t\t\t<input type=\"hidden\"\n\t\t\t\tname=\"requesttoken\"\n\t\t\t\t:value=\"OC.requestToken\">\n\t\t\t<input v-if=\"directLogin\"\n\t\t\t\ttype=\"hidden\"\n\t\t\t\tname=\"direct\"\n\t\t\t\tvalue=\"1\">\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport jstz from 'jstimezonedetect'\nimport LoginButton from './LoginButton'\nimport {\n\tgenerateUrl,\n\timagePath,\n} from '@nextcloud/router'\n\nexport default {\n\tname: 'LoginForm',\n\tcomponents: { LoginButton },\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tredirectUrl: {\n\t\t\ttype: [String, Boolean],\n\t\t\tdefault: false,\n\t\t},\n\t\terrors: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tmessages: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tthrottleDelay: {\n\t\t\ttype: Number,\n\t\t\tdefault: 0,\n\t\t},\n\t\tinvertedColors: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tautoCompleteAllowed: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tdirectLogin: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\ttimezone: jstz.determine().name(),\n\t\t\ttimezoneOffset: (-new Date().getTimezoneOffset() / 60),\n\t\t\tuser: this.username,\n\t\t\tpassword: '',\n\t\t\tpasswordInputType: 'password',\n\t\t}\n\t},\n\tcomputed: {\n\t\tapacheAuthFailed() {\n\t\t\treturn this.errors.indexOf('apacheAuthFailed') !== -1\n\t\t},\n\t\tinternalException() {\n\t\t\treturn this.errors.indexOf('internalexception') !== -1\n\t\t},\n\t\tinvalidPassword() {\n\t\t\treturn this.errors.indexOf('invalidpassword') !== -1\n\t\t},\n\t\tuserDisabled() {\n\t\t\treturn this.errors.indexOf('userdisabled') !== -1\n\t\t},\n\t\ttoggleIcon() {\n\t\t\treturn imagePath('core', 'actions/toggle.svg')\n\t\t},\n\t\tloadingIcon() {\n\t\t\treturn imagePath('core', 'loading-dark.gif')\n\t\t},\n\t\tloginActionUrl() {\n\t\t\treturn generateUrl('login')\n\t\t},\n\t},\n\tmounted() {\n\t\tif (this.username === '') {\n\t\t\tthis.$refs.user.focus()\n\t\t} else {\n\t\t\tthis.$refs.password.focus()\n\t\t}\n\t},\n\tmethods: {\n\t\ttogglePassword() {\n\t\t\tif (this.passwordInputType === 'password') {\n\t\t\t\tthis.passwordInputType = 'text'\n\t\t\t} else {\n\t\t\t\tthis.passwordInputType = 'password'\n\t\t\t}\n\t\t},\n\t\tupdateUsername() {\n\t\t\tthis.$emit('update:username', this.user)\n\t\t},\n\t\tsubmit() {\n\t\t\tthis.loading = true\n\t\t\tthis.$emit('submit')\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\n</style>\n","import { render, staticRenderFns } from \"./LoginForm.vue?vue&type=template&id=0b3a0522&scoped=true&\"\nimport script from \"./LoginForm.vue?vue&type=script&lang=js&\"\nexport * from \"./LoginForm.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0b3a0522\",\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('form',{ref:\"loginForm\",attrs:{\"method\":\"post\",\"name\":\"login\",\"action\":_vm.loginActionUrl},on:{\"submit\":_vm.submit}},[_c('fieldset',[(_vm.apacheAuthFailed)?_c('div',{staticClass:\"warning\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Server side authentication failed!'))),_c('br'),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.t('core', 'Please contact your administrator.'))+\"\\n\\t\\t\\t\")])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.messages),function(message,index){return _c('div',{key:index,staticClass:\"warning\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(message)),_c('br')])}),_vm._v(\" \"),(_vm.internalException)?_c('div',{staticClass:\"warning\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'An internal error occurred.'))),_c('br'),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.t('core', 'Please try again or contact your administrator.'))+\"\\n\\t\\t\\t\")])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"hidden\",attrs:{\"id\":\"message\"}},[_c('img',{staticClass:\"float-spinner\",attrs:{\"alt\":\"\",\"src\":_vm.loadingIcon}}),_vm._v(\" \"),_c('span',{attrs:{\"id\":\"messageText\"}}),_vm._v(\" \"),_c('div',{staticStyle:{\"clear\":\"both\"}})]),_vm._v(\" \"),_c('p',{staticClass:\"grouptop\",class:{shake: _vm.invalidPassword}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user),expression:\"user\"}],ref:\"user\",attrs:{\"id\":\"user\",\"type\":\"text\",\"name\":\"user\",\"autocapitalize\":\"none\",\"autocorrect\":\"off\",\"autocomplete\":_vm.autoCompleteAllowed ? 'on' : 'off',\"placeholder\":_vm.t('core', 'Username or email'),\"aria-label\":_vm.t('core', 'Username or email'),\"required\":\"\"},domProps:{\"value\":(_vm.user)},on:{\"change\":_vm.updateUsername,\"input\":function($event){if($event.target.composing){ return; }_vm.user=$event.target.value}}}),_vm._v(\" \"),_c('label',{staticClass:\"infield\",attrs:{\"for\":\"user\"}},[_vm._v(_vm._s(_vm.t('core', 'Username or email')))])]),_vm._v(\" \"),_c('p',{staticClass:\"groupbottom\",class:{shake: _vm.invalidPassword}},[_c('input',{ref:\"password\",staticClass:\"password-with-toggle\",attrs:{\"id\":\"password\",\"type\":_vm.passwordInputType,\"name\":\"password\",\"autocorrect\":\"off\",\"autocapitalize\":\"none\",\"autocomplete\":_vm.autoCompleteAllowed ? 'current-password' : 'off',\"placeholder\":_vm.t('core', 'Password'),\"aria-label\":_vm.t('core', 'Password'),\"required\":\"\"}}),_vm._v(\" \"),_c('label',{staticClass:\"infield\",attrs:{\"for\":\"password\"}},[_vm._v(_vm._s(_vm.t('Password')))]),_vm._v(\" \"),_c('a',{staticClass:\"toggle-password\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.togglePassword.apply(null, arguments)}}},[_c('img',{attrs:{\"src\":_vm.toggleIcon,\"alt\":_vm.t('core', 'Toggle password visibility')}})])]),_vm._v(\" \"),_c('LoginButton',{attrs:{\"loading\":_vm.loading,\"inverted-colors\":_vm.invertedColors}}),_vm._v(\" \"),(_vm.invalidPassword)?_c('p',{staticClass:\"warning wrongPasswordMsg\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Wrong username or password.'))+\"\\n\\t\\t\")]):(_vm.userDisabled)?_c('p',{staticClass:\"warning userDisabledMsg\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'User disabled'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.throttleDelay && _vm.throttleDelay > 5000)?_c('p',{staticClass:\"warning throttledMsg\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.redirectUrl)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"redirect_url\"},domProps:{\"value\":_vm.redirectUrl}}):_vm._e(),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"timezone\"},domProps:{\"value\":_vm.timezone}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"timezone_offset\"},domProps:{\"value\":_vm.timezoneOffset}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"requesttoken\"},domProps:{\"value\":_vm.OC.requestToken}}),_vm._v(\" \"),(_vm.directLogin)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"direct\",\"value\":\"1\"}}):_vm._e()],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<form v-if=\"(isHttps || isLocalhost) && hasPublicKeyCredential\"\n\t\tref=\"loginForm\"\n\t\tmethod=\"post\"\n\t\tname=\"login\"\n\t\t@submit.prevent=\"submit\">\n\t\t<fieldset>\n\t\t\t<p class=\"grouptop groupbottom\">\n\t\t\t\t<label for=\"user\" class=\"infield\">{{ t('core', 'Username or\temail') }}</label>\n\t\t\t\t<input id=\"user\"\n\t\t\t\t\tref=\"user\"\n\t\t\t\t\tv-model=\"user\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tname=\"user\"\n\t\t\t\t\t:autocomplete=\"autoCompleteAllowed ? 'on' : 'off'\"\n\t\t\t\t\t:placeholder=\"t('core', 'Username or email')\"\n\t\t\t\t\t:aria-label=\"t('core', 'Username or email')\"\n\t\t\t\t\trequired\n\t\t\t\t\t@change=\"$emit('update:username', user)\">\n\t\t\t</p>\n\n\t\t\t<div v-if=\"!validCredentials\" class=\"body-login-container update form__message-box\">\n\t\t\t\t{{ t('core', 'Your account is not setup for passwordless login.') }}\n\t\t\t</div>\n\n\t\t\t<LoginButton v-if=\"validCredentials\"\n\t\t\t\t:loading=\"loading\"\n\t\t\t\t:inverted-colors=\"invertedColors\"\n\t\t\t\t@click=\"authenticate\" />\n\t\t</fieldset>\n\t</form>\n\t<div v-else-if=\"!hasPublicKeyCredential\" class=\"body-login-container update\">\n\t\t<InformationIcon size=\"70\" />\n\t\t<h2>{{ t('core', 'Browser not supported') }}</h2>\n\t\t<p class=\"infogroup\">\n\t\t\t{{ t('core', 'Passwordless authentication is not supported in your browser.') }}\n\t\t</p>\n\t</div>\n\t<div v-else-if=\"!isHttps && !isLocalhost\" class=\"body-login-container update\">\n\t\t<LockOpenIcon size=\"70\" />\n\t\t<h2>{{ t('core', 'Your connection is not secure') }}</h2>\n\t\t<p class=\"infogroup\">\n\t\t\t{{ t('core', 'Passwordless authentication is only available over a secure connection.') }}\n\t\t</p>\n\t</div>\n</template>\n\n<script>\nimport {\n\tstartAuthentication,\n\tfinishAuthentication,\n} from '../../services/WebAuthnAuthenticationService'\nimport LoginButton from './LoginButton'\nimport InformationIcon from 'vue-material-design-icons/Information'\nimport LockOpenIcon from 'vue-material-design-icons/LockOpen'\n\nclass NoValidCredentials extends Error {\n\n}\n\nexport default {\n\tname: 'PasswordLessLoginForm',\n\tcomponents: {\n\t\tLoginButton,\n\t\tInformationIcon,\n\t\tLockOpenIcon,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tredirectUrl: {\n\t\t\ttype: [String, Boolean],\n\t\t\tdefault: false,\n\t\t},\n\t\tinvertedColors: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tautoCompleteAllowed: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tisHttps: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisLocalhost: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\thasPublicKeyCredential: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tuser: this.username,\n\t\t\tloading: false,\n\t\t\tvalidCredentials: true,\n\t\t}\n\t},\n\tmethods: {\n\t\tauthenticate() {\n\t\t\tconsole.debug('passwordless login initiated')\n\n\t\t\tthis.getAuthenticationData(this.user)\n\t\t\t\t.then(publicKey => {\n\t\t\t\t\tconsole.debug(publicKey)\n\t\t\t\t\treturn publicKey\n\t\t\t\t})\n\t\t\t\t.then(this.sign)\n\t\t\t\t.then(this.completeAuthentication)\n\t\t\t\t.catch(error => {\n\t\t\t\t\tif (error instanceof NoValidCredentials) {\n\t\t\t\t\t\tthis.validCredentials = false\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tconsole.debug(error)\n\t\t\t\t})\n\t\t},\n\t\tgetAuthenticationData(uid) {\n\t\t\tconst base64urlDecode = function(input) {\n\t\t\t\t// Replace non-url compatible chars with base64 standard chars\n\t\t\t\tinput = input\n\t\t\t\t\t.replace(/-/g, '+')\n\t\t\t\t\t.replace(/_/g, '/')\n\n\t\t\t\t// Pad out with standard base64 required padding characters\n\t\t\t\tconst pad = input.length % 4\n\t\t\t\tif (pad) {\n\t\t\t\t\tif (pad === 1) {\n\t\t\t\t\t\tthrow new Error('InvalidLengthError: Input base64url string is the wrong length to determine padding')\n\t\t\t\t\t}\n\t\t\t\t\tinput += new Array(5 - pad).join('=')\n\t\t\t\t}\n\n\t\t\t\treturn window.atob(input)\n\t\t\t}\n\n\t\t\treturn startAuthentication(uid)\n\t\t\t\t.then(publicKey => {\n\t\t\t\t\tconsole.debug('Obtained PublicKeyCredentialRequestOptions')\n\t\t\t\t\tconsole.debug(publicKey)\n\n\t\t\t\t\tif (!Object.prototype.hasOwnProperty.call(publicKey, 'allowCredentials')) {\n\t\t\t\t\t\tconsole.debug('No credentials found.')\n\t\t\t\t\t\tthrow new NoValidCredentials()\n\t\t\t\t\t}\n\n\t\t\t\t\tpublicKey.challenge = Uint8Array.from(base64urlDecode(publicKey.challenge), c => c.charCodeAt(0))\n\t\t\t\t\tpublicKey.allowCredentials = publicKey.allowCredentials.map(function(data) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...data,\n\t\t\t\t\t\t\tid: Uint8Array.from(base64urlDecode(data.id), c => c.charCodeAt(0)),\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\n\t\t\t\t\tconsole.debug('Converted PublicKeyCredentialRequestOptions')\n\t\t\t\t\tconsole.debug(publicKey)\n\t\t\t\t\treturn publicKey\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.debug('Error while obtaining data')\n\t\t\t\t\tthrow error\n\t\t\t\t})\n\t\t},\n\t\tsign(publicKey) {\n\t\t\tconst arrayToBase64String = function(a) {\n\t\t\t\treturn window.btoa(String.fromCharCode(...a))\n\t\t\t}\n\n\t\t\tconst arrayToString = function(a) {\n\t\t\t\treturn String.fromCharCode(...a)\n\t\t\t}\n\n\t\t\treturn navigator.credentials.get({ publicKey })\n\t\t\t\t.then(data => {\n\t\t\t\t\tconsole.debug(data)\n\t\t\t\t\tconsole.debug(new Uint8Array(data.rawId))\n\t\t\t\t\tconsole.debug(arrayToBase64String(new Uint8Array(data.rawId)))\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: data.id,\n\t\t\t\t\t\ttype: data.type,\n\t\t\t\t\t\trawId: arrayToBase64String(new Uint8Array(data.rawId)),\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tauthenticatorData: arrayToBase64String(new Uint8Array(data.response.authenticatorData)),\n\t\t\t\t\t\t\tclientDataJSON: arrayToBase64String(new Uint8Array(data.response.clientDataJSON)),\n\t\t\t\t\t\t\tsignature: arrayToBase64String(new Uint8Array(data.response.signature)),\n\t\t\t\t\t\t\tuserHandle: data.response.userHandle ? arrayToString(new Uint8Array(data.response.userHandle)) : null,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.then(challenge => {\n\t\t\t\t\tconsole.debug(challenge)\n\t\t\t\t\treturn challenge\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.debug('GOT AN ERROR!')\n\t\t\t\t\tconsole.debug(error) // Example: timeout, interaction refused...\n\t\t\t\t})\n\t\t},\n\t\tcompleteAuthentication(challenge) {\n\t\t\tconsole.debug('TIME TO COMPLETE')\n\n\t\t\tconst location = this.redirectUrl\n\n\t\t\treturn finishAuthentication(JSON.stringify(challenge))\n\t\t\t\t.then(data => {\n\t\t\t\t\tconsole.debug('Logged in redirecting')\n\t\t\t\t\twindow.location.href = location\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.debug('GOT AN ERROR WHILE SUBMITTING CHALLENGE!')\n\t\t\t\t\tconsole.debug(error) // Example: timeout, interaction refused...\n\t\t\t\t})\n\t\t},\n\t\tsubmit() {\n\t\t\t// noop\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.body-login-container.update {\n\t\tmargin: 15px 0;\n\n\t\t&.form__message-box {\n\t\t\twidth: 240px;\n\t\t\tmargin: 5px;\n\t\t}\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.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!./PasswordLessLoginForm.vue?vue&type=script&lang=js&\"","/**\n * @copyright 2020, Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport Axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\n\n/**\n * @param {any} loginName -\n */\nexport function startAuthentication(loginName) {\n\tconst url = generateUrl('/login/webauthn/start')\n\n\treturn Axios.post(url, { loginName })\n\t\t.then(resp => resp.data)\n}\n\n/**\n * @param {any} data -\n */\nexport function finishAuthentication(data) {\n\tconst url = generateUrl('/login/webauthn/finish')\n\n\treturn Axios.post(url, { data })\n\t\t.then(resp => resp.data)\n}\n","\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!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=4f29a6e2&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!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=4f29a6e2&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PasswordLessLoginForm.vue?vue&type=template&id=4f29a6e2&scoped=true&\"\nimport script from \"./PasswordLessLoginForm.vue?vue&type=script&lang=js&\"\nexport * from \"./PasswordLessLoginForm.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PasswordLessLoginForm.vue?vue&type=style&index=0&id=4f29a6e2&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 \"4f29a6e2\",\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 ((_vm.isHttps || _vm.isLocalhost) && _vm.hasPublicKeyCredential)?_c('form',{ref:\"loginForm\",attrs:{\"method\":\"post\",\"name\":\"login\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',[_c('p',{staticClass:\"grouptop groupbottom\"},[_c('label',{staticClass:\"infield\",attrs:{\"for\":\"user\"}},[_vm._v(_vm._s(_vm.t('core', 'Username or\temail')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user),expression:\"user\"}],ref:\"user\",attrs:{\"id\":\"user\",\"type\":\"text\",\"name\":\"user\",\"autocomplete\":_vm.autoCompleteAllowed ? 'on' : 'off',\"placeholder\":_vm.t('core', 'Username or email'),\"aria-label\":_vm.t('core', 'Username or email'),\"required\":\"\"},domProps:{\"value\":(_vm.user)},on:{\"change\":function($event){return _vm.$emit('update:username', _vm.user)},\"input\":function($event){if($event.target.composing){ return; }_vm.user=$event.target.value}}})]),_vm._v(\" \"),(!_vm.validCredentials)?_c('div',{staticClass:\"body-login-container update form__message-box\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Your account is not setup for passwordless login.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.validCredentials)?_c('LoginButton',{attrs:{\"loading\":_vm.loading,\"inverted-colors\":_vm.invertedColors},on:{\"click\":_vm.authenticate}}):_vm._e()],1)]):(!_vm.hasPublicKeyCredential)?_c('div',{staticClass:\"body-login-container update\"},[_c('InformationIcon',{attrs:{\"size\":\"70\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Browser not supported')))]),_vm._v(\" \"),_c('p',{staticClass:\"infogroup\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Passwordless authentication is not supported in your browser.'))+\"\\n\\t\")])],1):(!_vm.isHttps && !_vm.isLocalhost)?_c('div',{staticClass:\"body-login-container update\"},[_c('LockOpenIcon',{attrs:{\"size\":\"70\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Your connection is not secure')))]),_vm._v(\" \"),_c('p',{staticClass:\"infogroup\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Passwordless authentication is only available over a secure connection.'))+\"\\n\\t\")])],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.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!./ResetPassword.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\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\n<template>\n\t<form @submit.prevent=\"submit\">\n\t\t<fieldset>\n\t\t\t<p>\n\t\t\t\t<input id=\"user\"\n\t\t\t\t\tv-model=\"user\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tname=\"user\"\n\t\t\t\t\tautocapitalize=\"off\"\n\t\t\t\t\t:placeholder=\"t('core', 'Username or email')\"\n\t\t\t\t\t:aria-label=\"t('core', 'Username or email')\"\n\t\t\t\t\trequired\n\t\t\t\t\t@change=\"updateUsername\">\n\t\t\t\t<!--<?php p($_['user_autofocus'] ? 'autofocus' : ''); ?>\n\t\t\t\tautocomplete=\"<?php p($_['login_form_autocomplete']); ?>\" autocapitalize=\"none\" autocorrect=\"off\"-->\n\t\t\t\t<label for=\"user\" class=\"infield\">{{ t('core', 'Username or email') }}</label>\n\t\t\t</p>\n\t\t\t<div id=\"reset-password-wrapper\">\n\t\t\t\t<input id=\"reset-password-submit\"\n\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\tclass=\"login primary\"\n\t\t\t\t\ttitle=\"\"\n\t\t\t\t\t:value=\"t('core', 'Reset password')\">\n\t\t\t\t<div class=\"submit-icon\"\n\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t'icon-confirm-white': !loading,\n\t\t\t\t\t\t'icon-loading-small': loading && invertedColors,\n\t\t\t\t\t\t'icon-loading-small-dark': loading && !invertedColors,\n\t\t\t\t\t}\" />\n\t\t\t</div>\n\t\t\t<p v-if=\"message === 'send-success'\"\n\t\t\t\tclass=\"update\">\n\t\t\t\t{{ t('core', 'A password reset message has been sent to the email address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help.') }}\n\t\t\t\t<br>\n\t\t\t\t{{ t('core', 'If it is not there ask your local administrator.') }}\n\t\t\t</p>\n\t\t\t<p v-else-if=\"message === 'send-error'\"\n\t\t\t\tclass=\"update warning\">\n\t\t\t\t{{ t('core', 'Couldn\\'t send reset email. Please contact your administrator.') }}\n\t\t\t</p>\n\t\t\t<p v-else-if=\"message === 'reset-error'\"\n\t\t\t\tclass=\"update warning\">\n\t\t\t\t{{ t('core', 'Password cannot be changed. Please contact your administrator.') }}\n\t\t\t</p>\n\t\t\t<p v-else-if=\"message\"\n\t\t\t\tclass=\"update\"\n\t\t\t\t:class=\"{warning: error}\" />\n\n\t\t\t<a href=\"#\"\n\t\t\t\t@click.prevent=\"$emit('abort')\">\n\t\t\t\t{{ t('core', 'Back to login') }}\n\t\t\t</a>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\n\nimport { generateUrl } from '@nextcloud/router'\n\nexport default {\n\tname: 'ResetPassword',\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordLink: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tinvertedColors: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tupdateUsername() {\n\t\t\tthis.$emit('update:username', this.user)\n\t\t},\n\t\tsubmit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = ''\n\t\t\tconst url = generateUrl('/lostpassword/email')\n\n\t\t\tconst data = {\n\t\t\t\tuser: this.user,\n\t\t\t}\n\n\t\t\treturn axios.post(url, data)\n\t\t\t\t.then(resp => resp.data)\n\t\t\t\t.then(data => {\n\t\t\t\t\tif (data.status !== 'success') {\n\t\t\t\t\t\tthrow new Error(`got status ${data.status}`)\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.message = 'send-success'\n\t\t\t\t})\n\t\t\t\t.catch(e => {\n\t\t\t\t\tconsole.error('could not send reset email request', e)\n\n\t\t\t\t\tthis.error = true\n\t\t\t\t\tthis.message = 'send-error'\n\t\t\t\t})\n\t\t\t\t.then(() => { this.loading = false })\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\t.update {\n\t\twidth: auto;\n\t}\n</style>\n","\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/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=style&index=0&id=d9d670b8&scoped=true&lang=css&\";\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/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=style&index=0&id=d9d670b8&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ResetPassword.vue?vue&type=template&id=d9d670b8&scoped=true&\"\nimport script from \"./ResetPassword.vue?vue&type=script&lang=js&\"\nexport * from \"./ResetPassword.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ResetPassword.vue?vue&type=style&index=0&id=d9d670b8&scoped=true&lang=css&\"\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 \"d9d670b8\",\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('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',[_c('p',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user),expression:\"user\"}],attrs:{\"id\":\"user\",\"type\":\"text\",\"name\":\"user\",\"autocapitalize\":\"off\",\"placeholder\":_vm.t('core', 'Username or email'),\"aria-label\":_vm.t('core', 'Username or email'),\"required\":\"\"},domProps:{\"value\":(_vm.user)},on:{\"change\":_vm.updateUsername,\"input\":function($event){if($event.target.composing){ return; }_vm.user=$event.target.value}}}),_vm._v(\" \"),_c('label',{staticClass:\"infield\",attrs:{\"for\":\"user\"}},[_vm._v(_vm._s(_vm.t('core', 'Username or email')))])]),_vm._v(\" \"),_c('div',{attrs:{\"id\":\"reset-password-wrapper\"}},[_c('input',{staticClass:\"login primary\",attrs:{\"id\":\"reset-password-submit\",\"type\":\"submit\",\"title\":\"\"},domProps:{\"value\":_vm.t('core', 'Reset password')}}),_vm._v(\" \"),_c('div',{staticClass:\"submit-icon\",class:{\n\t\t\t\t\t'icon-confirm-white': !_vm.loading,\n\t\t\t\t\t'icon-loading-small': _vm.loading && _vm.invertedColors,\n\t\t\t\t\t'icon-loading-small-dark': _vm.loading && !_vm.invertedColors,\n\t\t\t\t}})]),_vm._v(\" \"),(_vm.message === 'send-success')?_c('p',{staticClass:\"update\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'A password reset message has been sent to the email address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help.'))+\"\\n\\t\\t\\t\"),_c('br'),_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'If it is not there ask your local administrator.'))+\"\\n\\t\\t\")]):(_vm.message === 'send-error')?_c('p',{staticClass:\"update warning\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Couldn\\'t send reset email. Please contact your administrator.'))+\"\\n\\t\\t\")]):(_vm.message === 'reset-error')?_c('p',{staticClass:\"update warning\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Password cannot be changed. Please contact your administrator.'))+\"\\n\\t\\t\")]):(_vm.message)?_c('p',{staticClass:\"update\",class:{warning: _vm.error}}):_vm._e(),_vm._v(\" \"),_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.$emit('abort')}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Back to login'))+\"\\n\\t\\t\")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<form @submit.prevent=\"submit\">\n\t\t<fieldset>\n\t\t\t<p>\n\t\t\t\t<label for=\"password\" class=\"infield\">{{ t('core', 'New password') }}</label>\n\t\t\t\t<input id=\"password\"\n\t\t\t\t\tv-model=\"password\"\n\t\t\t\t\ttype=\"password\"\n\t\t\t\t\tname=\"password\"\n\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\tautocorrect=\"off\"\n\t\t\t\t\trequired\n\t\t\t\t\t:placeholder=\"t('core', 'New password')\">\n\t\t\t</p>\n\n\t\t\t<div v-if=\"encrypted\" class=\"update\">\n\t\t\t\t<p>\n\t\t\t\t\t{{ t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?') }}\n\t\t\t\t</p>\n\t\t\t\t<input id=\"encrypted-continue\"\n\t\t\t\t\tv-model=\"proceed\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\tclass=\"checkbox\">\n\t\t\t\t<label for=\"encrypted-continue\">\n\t\t\t\t\t{{ t('core', 'I know what I\\'m doing') }}\n\t\t\t\t</label>\n\t\t\t</div>\n\n\t\t\t<div id=\"submit-wrapper\">\n\t\t\t\t<input id=\"submit\"\n\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\tclass=\"login primary\"\n\t\t\t\t\ttitle=\"\"\n\t\t\t\t\t:value=\"!loading ? t('core', 'Reset password') : t('core', 'Resetting password')\">\n\t\t\t\t<div class=\"submit-icon\"\n\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t'icon-loading-small': loading && invertedColors,\n\t\t\t\t\t\t'icon-loading-small-dark': loading && !invertedColors\n\t\t\t\t\t}\" />\n\t\t\t</div>\n\n\t\t\t<p v-if=\"error && message\" :class=\"{warning: error}\">\n\t\t\t\t{{ message }}\n\t\t\t</p>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport Axios from '@nextcloud/axios'\n\nexport default {\n\tname: 'UpdatePassword',\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordTarget: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tinvertedColors: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t\tpassword: '',\n\t\t\tencrypted: false,\n\t\t\tproceed: false,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tasync submit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = ''\n\n\t\t\ttry {\n\t\t\t\tconst { data } = await Axios.post(this.resetPasswordTarget, {\n\t\t\t\t\tpassword: this.password,\n\t\t\t\t\tproceed: this.proceed,\n\t\t\t\t})\n\t\t\t\tif (data && data.status === 'success') {\n\t\t\t\t\tthis.message = 'send-success'\n\t\t\t\t\tthis.$emit('update:username', this.user)\n\t\t\t\t\tthis.$emit('done')\n\t\t\t\t} else if (data && data.encryption) {\n\t\t\t\t\tthis.encrypted = true\n\t\t\t\t} else if (data && data.msg) {\n\t\t\t\t\tthrow new Error(data.msg)\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error()\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tthis.error = true\n\t\t\t\tthis.message = e.message ? e.message : t('core', 'Password cannot be changed. Please contact your administrator.')\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\tfieldset {\n\t\ttext-align: center;\n\t}\n\n\tinput[type=submit] {\n\t\tmargin-top: 20px;\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.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!./UpdatePassword.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/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=style&index=0&id=9ae5fdb4&scoped=true&lang=css&\";\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/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=style&index=0&id=9ae5fdb4&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UpdatePassword.vue?vue&type=template&id=9ae5fdb4&scoped=true&\"\nimport script from \"./UpdatePassword.vue?vue&type=script&lang=js&\"\nexport * from \"./UpdatePassword.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UpdatePassword.vue?vue&type=style&index=0&id=9ae5fdb4&scoped=true&lang=css&\"\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 \"9ae5fdb4\",\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('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',[_c('p',[_c('label',{staticClass:\"infield\",attrs:{\"for\":\"password\"}},[_vm._v(_vm._s(_vm.t('core', 'New password')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"}],attrs:{\"id\":\"password\",\"type\":\"password\",\"name\":\"password\",\"autocomplete\":\"new-password\",\"autocapitalize\":\"none\",\"autocorrect\":\"off\",\"required\":\"\",\"placeholder\":_vm.t('core', 'New password')},domProps:{\"value\":(_vm.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.password=$event.target.value}}})]),_vm._v(\" \"),(_vm.encrypted)?_c('div',{staticClass:\"update\"},[_c('p',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.proceed),expression:\"proceed\"}],staticClass:\"checkbox\",attrs:{\"id\":\"encrypted-continue\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.proceed)?_vm._i(_vm.proceed,null)>-1:(_vm.proceed)},on:{\"change\":function($event){var $$a=_vm.proceed,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.proceed=$$a.concat([$$v]))}else{$$i>-1&&(_vm.proceed=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.proceed=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"encrypted-continue\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'I know what I\\'m doing'))+\"\\n\\t\\t\\t\")])]):_vm._e(),_vm._v(\" \"),_c('div',{attrs:{\"id\":\"submit-wrapper\"}},[_c('input',{staticClass:\"login primary\",attrs:{\"id\":\"submit\",\"type\":\"submit\",\"title\":\"\"},domProps:{\"value\":!_vm.loading ? _vm.t('core', 'Reset password') : _vm.t('core', 'Resetting password')}}),_vm._v(\" \"),_c('div',{staticClass:\"submit-icon\",class:{\n\t\t\t\t\t'icon-loading-small': _vm.loading && _vm.invertedColors,\n\t\t\t\t\t'icon-loading-small-dark': _vm.loading && !_vm.invertedColors\n\t\t\t\t}})]),_vm._v(\" \"),(_vm.error && _vm.message)?_c('p',{class:{warning: _vm.error}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.message)+\"\\n\\t\\t\")]):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\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\n<template>\n\t<div v-if=\"!hideLoginForm || directLogin\">\n\t\t<transition name=\"fade\" mode=\"out-in\">\n\t\t\t<div v-if=\"!passwordlessLogin && !resetPassword && resetPasswordTarget === ''\"\n\t\t\t\tkey=\"login\">\n\t\t\t\t<LoginForm :username.sync=\"user\"\n\t\t\t\t\t:redirect-url=\"redirectUrl\"\n\t\t\t\t\t:direct-login=\"directLogin\"\n\t\t\t\t\t:messages=\"messages\"\n\t\t\t\t\t:errors=\"errors\"\n\t\t\t\t\t:throttle-delay=\"throttleDelay\"\n\t\t\t\t\t:inverted-colors=\"invertedColors\"\n\t\t\t\t\t:auto-complete-allowed=\"autoCompleteAllowed\"\n\t\t\t\t\t@submit=\"loading = true\" />\n\t\t\t\t<a v-if=\"canResetPassword && resetPasswordLink !== ''\"\n\t\t\t\t\tid=\"lost-password\"\n\t\t\t\t\t:href=\"resetPasswordLink\">\n\t\t\t\t\t{{ t('core', 'Forgot password?') }}\n\t\t\t\t</a>\n\t\t\t\t<a v-else-if=\"canResetPassword && !resetPassword\"\n\t\t\t\t\tid=\"lost-password\"\n\t\t\t\t\t:href=\"resetPasswordLink\"\n\t\t\t\t\t@click.prevent=\"resetPassword = true\">\n\t\t\t\t\t{{ t('core', 'Forgot password?') }}\n\t\t\t\t</a>\n\t\t\t\t<br>\n\t\t\t\t<template v-if=\"hasPasswordless\">\n\t\t\t\t\t<div v-if=\"countAlternativeLogins\"\n\t\t\t\t\t\tclass=\"alternative-logins\">\n\t\t\t\t\t\t<a v-if=\"hasPasswordless\"\n\t\t\t\t\t\t\tclass=\"button\"\n\t\t\t\t\t\t\t:class=\"{ 'single-alt-login-option': countAlternativeLogins }\"\n\t\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\t\t@click.prevent=\"passwordlessLogin = true\">\n\t\t\t\t\t\t\t{{ t('core', 'Log in with a device') }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t\t<a v-else\n\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\t@click.prevent=\"passwordlessLogin = true\">\n\t\t\t\t\t\t{{ t('core', 'Log in with a device') }}\n\t\t\t\t\t</a>\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t\t<div v-else-if=\"!loading && passwordlessLogin\"\n\t\t\t\tkey=\"reset\"\n\t\t\t\tclass=\"login-additional\">\n\t\t\t\t<PasswordLessLoginForm :username.sync=\"user\"\n\t\t\t\t\t:redirect-url=\"redirectUrl\"\n\t\t\t\t\t:inverted-colors=\"invertedColors\"\n\t\t\t\t\t:auto-complete-allowed=\"autoCompleteAllowed\"\n\t\t\t\t\t:is-https=\"isHttps\"\n\t\t\t\t\t:is-localhost=\"isLocalhost\"\n\t\t\t\t\t:has-public-key-credential=\"hasPublicKeyCredential\"\n\t\t\t\t\t@submit=\"loading = true\" />\n\t\t\t\t<a href=\"#\" @click.prevent=\"passwordlessLogin = false\">\n\t\t\t\t\t{{ t('core', 'Back') }}\n\t\t\t\t</a>\n\t\t\t</div>\n\t\t\t<div v-else-if=\"!loading && canResetPassword\"\n\t\t\t\tkey=\"reset\"\n\t\t\t\tclass=\"login-additional\">\n\t\t\t\t<div class=\"lost-password-container\">\n\t\t\t\t\t<ResetPassword v-if=\"resetPassword\"\n\t\t\t\t\t\t:username.sync=\"user\"\n\t\t\t\t\t\t:reset-password-link=\"resetPasswordLink\"\n\t\t\t\t\t\t:inverted-colors=\"invertedColors\"\n\t\t\t\t\t\t@abort=\"resetPassword = false\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div v-else-if=\"resetPasswordTarget !== ''\">\n\t\t\t\t<UpdatePassword :username.sync=\"user\"\n\t\t\t\t\t:reset-password-target=\"resetPasswordTarget\"\n\t\t\t\t\t:inverted-colors=\"invertedColors\"\n\t\t\t\t\t@done=\"passwordResetFinished\" />\n\t\t\t</div>\n\t\t</transition>\n\t</div>\n\t<div v-else>\n\t\t<transition name=\"fade\" mode=\"out-in\">\n\t\t\t<div class=\"warning\">\n\t\t\t\t{{ t('core', 'Login form is disabled.') }}<br>\n\t\t\t\t<small>{{ t('core', 'Please contact your administrator.') }}\n\t\t\t\t</small>\n\t\t\t</div>\n\t\t</transition>\n\t</div>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport queryString from 'query-string'\n\nimport LoginForm from '../components/login/LoginForm.vue'\nimport PasswordLessLoginForm from '../components/login/PasswordLessLoginForm.vue'\nimport ResetPassword from '../components/login/ResetPassword.vue'\nimport UpdatePassword from '../components/login/UpdatePassword.vue'\n\nconst query = queryString.parse(location.search)\nif (query.clear === '1') {\n\ttry {\n\t\twindow.localStorage.clear()\n\t\twindow.sessionStorage.clear()\n\t\tconsole.debug('Browser storage cleared')\n\t} catch (e) {\n\t\tconsole.error('Could not clear browser storage', e)\n\t}\n}\n\nexport default {\n\tname: 'Login',\n\n\tcomponents: {\n\t\tLoginForm,\n\t\tPasswordLessLoginForm,\n\t\tResetPassword,\n\t\tUpdatePassword,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\tuser: loadState('core', 'loginUsername', ''),\n\t\t\tpasswordlessLogin: false,\n\t\t\tresetPassword: false,\n\n\t\t\t// Initial data\n\t\t\terrors: loadState('core', 'loginErrors', []),\n\t\t\tmessages: loadState('core', 'loginMessages', []),\n\t\t\tredirectUrl: loadState('core', 'loginRedirectUrl', false),\n\t\t\tthrottleDelay: loadState('core', 'loginThrottleDelay', 0),\n\t\t\tinvertedColors: OCA.Theming && OCA.Theming.inverted,\n\t\t\tcanResetPassword: loadState('core', 'loginCanResetPassword', false),\n\t\t\tresetPasswordLink: loadState('core', 'loginResetPasswordLink', ''),\n\t\t\tautoCompleteAllowed: loadState('core', 'loginAutocomplete', true),\n\t\t\tresetPasswordTarget: loadState('core', 'resetPasswordTarget', ''),\n\t\t\tresetPasswordUser: loadState('core', 'resetPasswordUser', ''),\n\t\t\tdirectLogin: query.direct === '1',\n\t\t\thasPasswordless: loadState('core', 'webauthn-available', false),\n\t\t\tcountAlternativeLogins: loadState('core', 'countAlternativeLogins', false),\n\t\t\tisHttps: window.location.protocol === 'https:',\n\t\t\tisLocalhost: window.location.hostname === 'localhost',\n\t\t\thasPublicKeyCredential: typeof (window.PublicKeyCredential) !== 'undefined',\n\t\t\thideLoginForm: loadState('core', 'hideLoginForm', false),\n\t\t}\n\t},\n\tmethods: {\n\t\tpasswordResetFinished() {\n\t\t\tthis.resetPasswordTarget = ''\n\t\t\tthis.directLogin = true\n\t\t},\n\t},\n}\n</script>\n\n<style>\n\t.fade-enter-active, .fade-leave-active {\n\t\ttransition: opacity .3s;\n\t}\n\t.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\n\t\topacity: 0;\n\t}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.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!./Login.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/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&lang=css&\";\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/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Login.vue?vue&type=template&id=cdd35698&\"\nimport script from \"./Login.vue?vue&type=script&lang=js&\"\nexport * from \"./Login.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Login.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 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 */\n\nimport L10n from '../OC/l10n'\nimport OC from '../OC/index'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tOC,\n\t\t}\n\t},\n\tmethods: {\n\t\tt: L10n.translate.bind(L10n),\n\t\tn: L10n.translatePlural.bind(L10n),\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport Vue from 'vue'\n\n// eslint-disable-next-line no-unused-vars\nimport OC from './OC/index' // TODO: Not needed but L10n breaks if removed\nimport LoginView from './views/Login.vue'\nimport Nextcloud from './mixins/Nextcloud'\n\nVue.mixin(Nextcloud)\n\nconst View = Vue.extend(LoginView)\nnew View().$mount('#login')\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, \".body-login-container.update[data-v-4f29a6e2]{margin:15px 0}.body-login-container.update.form__message-box[data-v-4f29a6e2]{width:240px;margin:5px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/PasswordLessLoginForm.vue\"],\"names\":[],\"mappings\":\"AAmOA,8CACC,aAAA,CAEA,gEACC,WAAA,CACA,UAAA\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.body-login-container.update {\\n\\tmargin: 15px 0;\\n\\n\\t&.form__message-box {\\n\\t\\twidth: 240px;\\n\\t\\tmargin: 5px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"\\n.update[data-v-d9d670b8] {\\n\\twidth: auto;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/ResetPassword.vue\"],\"names\":[],\"mappings\":\";AAmJA;CACA,WAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\\n -\\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\\n -\\n - @license GNU AGPL version 3 or any later version\\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\\n<template>\\n\\t<form @submit.prevent=\\\"submit\\\">\\n\\t\\t<fieldset>\\n\\t\\t\\t<p>\\n\\t\\t\\t\\t<input id=\\\"user\\\"\\n\\t\\t\\t\\t\\tv-model=\\\"user\\\"\\n\\t\\t\\t\\t\\ttype=\\\"text\\\"\\n\\t\\t\\t\\t\\tname=\\\"user\\\"\\n\\t\\t\\t\\t\\tautocapitalize=\\\"off\\\"\\n\\t\\t\\t\\t\\t:placeholder=\\\"t('core', 'Username or email')\\\"\\n\\t\\t\\t\\t\\t:aria-label=\\\"t('core', 'Username or email')\\\"\\n\\t\\t\\t\\t\\trequired\\n\\t\\t\\t\\t\\t@change=\\\"updateUsername\\\">\\n\\t\\t\\t\\t<!--<?php p($_['user_autofocus'] ? 'autofocus' : ''); ?>\\n\\t\\t\\t\\tautocomplete=\\\"<?php p($_['login_form_autocomplete']); ?>\\\" autocapitalize=\\\"none\\\" autocorrect=\\\"off\\\"-->\\n\\t\\t\\t\\t<label for=\\\"user\\\" class=\\\"infield\\\">{{ t('core', 'Username or email') }}</label>\\n\\t\\t\\t</p>\\n\\t\\t\\t<div id=\\\"reset-password-wrapper\\\">\\n\\t\\t\\t\\t<input id=\\\"reset-password-submit\\\"\\n\\t\\t\\t\\t\\ttype=\\\"submit\\\"\\n\\t\\t\\t\\t\\tclass=\\\"login primary\\\"\\n\\t\\t\\t\\t\\ttitle=\\\"\\\"\\n\\t\\t\\t\\t\\t:value=\\\"t('core', 'Reset password')\\\">\\n\\t\\t\\t\\t<div class=\\\"submit-icon\\\"\\n\\t\\t\\t\\t\\t:class=\\\"{\\n\\t\\t\\t\\t\\t\\t'icon-confirm-white': !loading,\\n\\t\\t\\t\\t\\t\\t'icon-loading-small': loading && invertedColors,\\n\\t\\t\\t\\t\\t\\t'icon-loading-small-dark': loading && !invertedColors,\\n\\t\\t\\t\\t\\t}\\\" />\\n\\t\\t\\t</div>\\n\\t\\t\\t<p v-if=\\\"message === 'send-success'\\\"\\n\\t\\t\\t\\tclass=\\\"update\\\">\\n\\t\\t\\t\\t{{ t('core', 'A password reset message has been sent to the email address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help.') }}\\n\\t\\t\\t\\t<br>\\n\\t\\t\\t\\t{{ t('core', 'If it is not there ask your local administrator.') }}\\n\\t\\t\\t</p>\\n\\t\\t\\t<p v-else-if=\\\"message === 'send-error'\\\"\\n\\t\\t\\t\\tclass=\\\"update warning\\\">\\n\\t\\t\\t\\t{{ t('core', 'Couldn\\\\'t send reset email. Please contact your administrator.') }}\\n\\t\\t\\t</p>\\n\\t\\t\\t<p v-else-if=\\\"message === 'reset-error'\\\"\\n\\t\\t\\t\\tclass=\\\"update warning\\\">\\n\\t\\t\\t\\t{{ t('core', 'Password cannot be changed. Please contact your administrator.') }}\\n\\t\\t\\t</p>\\n\\t\\t\\t<p v-else-if=\\\"message\\\"\\n\\t\\t\\t\\tclass=\\\"update\\\"\\n\\t\\t\\t\\t:class=\\\"{warning: error}\\\" />\\n\\n\\t\\t\\t<a href=\\\"#\\\"\\n\\t\\t\\t\\t@click.prevent=\\\"$emit('abort')\\\">\\n\\t\\t\\t\\t{{ t('core', 'Back to login') }}\\n\\t\\t\\t</a>\\n\\t\\t</fieldset>\\n\\t</form>\\n</template>\\n\\n<script>\\nimport axios from '@nextcloud/axios'\\n\\nimport { generateUrl } from '@nextcloud/router'\\n\\nexport default {\\n\\tname: 'ResetPassword',\\n\\tprops: {\\n\\t\\tusername: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t\\tresetPasswordLink: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t\\tinvertedColors: {\\n\\t\\t\\ttype: Boolean,\\n\\t\\t\\tdefault: false,\\n\\t\\t},\\n\\t},\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\terror: false,\\n\\t\\t\\tloading: false,\\n\\t\\t\\tmessage: undefined,\\n\\t\\t\\tuser: this.username,\\n\\t\\t}\\n\\t},\\n\\twatch: {\\n\\t\\tusername(value) {\\n\\t\\t\\tthis.user = value\\n\\t\\t},\\n\\t},\\n\\tmethods: {\\n\\t\\tupdateUsername() {\\n\\t\\t\\tthis.$emit('update:username', this.user)\\n\\t\\t},\\n\\t\\tsubmit() {\\n\\t\\t\\tthis.loading = true\\n\\t\\t\\tthis.error = false\\n\\t\\t\\tthis.message = ''\\n\\t\\t\\tconst url = generateUrl('/lostpassword/email')\\n\\n\\t\\t\\tconst data = {\\n\\t\\t\\t\\tuser: this.user,\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn axios.post(url, data)\\n\\t\\t\\t\\t.then(resp => resp.data)\\n\\t\\t\\t\\t.then(data => {\\n\\t\\t\\t\\t\\tif (data.status !== 'success') {\\n\\t\\t\\t\\t\\t\\tthrow new Error(`got status ${data.status}`)\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tthis.message = 'send-success'\\n\\t\\t\\t\\t})\\n\\t\\t\\t\\t.catch(e => {\\n\\t\\t\\t\\t\\tconsole.error('could not send reset email request', e)\\n\\n\\t\\t\\t\\t\\tthis.error = true\\n\\t\\t\\t\\t\\tthis.message = 'send-error'\\n\\t\\t\\t\\t})\\n\\t\\t\\t\\t.then(() => { this.loading = false })\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style scoped>\\n\\t.update {\\n\\t\\twidth: auto;\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"\\nfieldset[data-v-9ae5fdb4] {\\n\\ttext-align: center;\\n}\\ninput[type=submit][data-v-9ae5fdb4] {\\n\\tmargin-top: 20px;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/UpdatePassword.vue\"],\"names\":[],\"mappings\":\";AA4IA;CACA,kBAAA;AACA;AAEA;CACA,gBAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\\n -\\n - @author Julius Härtl <jus@bitgrid.net>\\n -\\n - @license GNU AGPL version 3 or any later version\\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 -->\\n\\n<template>\\n\\t<form @submit.prevent=\\\"submit\\\">\\n\\t\\t<fieldset>\\n\\t\\t\\t<p>\\n\\t\\t\\t\\t<label for=\\\"password\\\" class=\\\"infield\\\">{{ t('core', 'New password') }}</label>\\n\\t\\t\\t\\t<input id=\\\"password\\\"\\n\\t\\t\\t\\t\\tv-model=\\\"password\\\"\\n\\t\\t\\t\\t\\ttype=\\\"password\\\"\\n\\t\\t\\t\\t\\tname=\\\"password\\\"\\n\\t\\t\\t\\t\\tautocomplete=\\\"new-password\\\"\\n\\t\\t\\t\\t\\tautocapitalize=\\\"none\\\"\\n\\t\\t\\t\\t\\tautocorrect=\\\"off\\\"\\n\\t\\t\\t\\t\\trequired\\n\\t\\t\\t\\t\\t:placeholder=\\\"t('core', 'New password')\\\">\\n\\t\\t\\t</p>\\n\\n\\t\\t\\t<div v-if=\\\"encrypted\\\" class=\\\"update\\\">\\n\\t\\t\\t\\t<p>\\n\\t\\t\\t\\t\\t{{ t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?') }}\\n\\t\\t\\t\\t</p>\\n\\t\\t\\t\\t<input id=\\\"encrypted-continue\\\"\\n\\t\\t\\t\\t\\tv-model=\\\"proceed\\\"\\n\\t\\t\\t\\t\\ttype=\\\"checkbox\\\"\\n\\t\\t\\t\\t\\tclass=\\\"checkbox\\\">\\n\\t\\t\\t\\t<label for=\\\"encrypted-continue\\\">\\n\\t\\t\\t\\t\\t{{ t('core', 'I know what I\\\\'m doing') }}\\n\\t\\t\\t\\t</label>\\n\\t\\t\\t</div>\\n\\n\\t\\t\\t<div id=\\\"submit-wrapper\\\">\\n\\t\\t\\t\\t<input id=\\\"submit\\\"\\n\\t\\t\\t\\t\\ttype=\\\"submit\\\"\\n\\t\\t\\t\\t\\tclass=\\\"login primary\\\"\\n\\t\\t\\t\\t\\ttitle=\\\"\\\"\\n\\t\\t\\t\\t\\t:value=\\\"!loading ? t('core', 'Reset password') : t('core', 'Resetting password')\\\">\\n\\t\\t\\t\\t<div class=\\\"submit-icon\\\"\\n\\t\\t\\t\\t\\t:class=\\\"{\\n\\t\\t\\t\\t\\t\\t'icon-loading-small': loading && invertedColors,\\n\\t\\t\\t\\t\\t\\t'icon-loading-small-dark': loading && !invertedColors\\n\\t\\t\\t\\t\\t}\\\" />\\n\\t\\t\\t</div>\\n\\n\\t\\t\\t<p v-if=\\\"error && message\\\" :class=\\\"{warning: error}\\\">\\n\\t\\t\\t\\t{{ message }}\\n\\t\\t\\t</p>\\n\\t\\t</fieldset>\\n\\t</form>\\n</template>\\n\\n<script>\\nimport Axios from '@nextcloud/axios'\\n\\nexport default {\\n\\tname: 'UpdatePassword',\\n\\tprops: {\\n\\t\\tusername: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t\\tresetPasswordTarget: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t\\tinvertedColors: {\\n\\t\\t\\ttype: Boolean,\\n\\t\\t\\tdefault: false,\\n\\t\\t},\\n\\t},\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\terror: false,\\n\\t\\t\\tloading: false,\\n\\t\\t\\tmessage: undefined,\\n\\t\\t\\tuser: this.username,\\n\\t\\t\\tpassword: '',\\n\\t\\t\\tencrypted: false,\\n\\t\\t\\tproceed: false,\\n\\t\\t}\\n\\t},\\n\\twatch: {\\n\\t\\tusername(value) {\\n\\t\\t\\tthis.user = value\\n\\t\\t},\\n\\t},\\n\\tmethods: {\\n\\t\\tasync submit() {\\n\\t\\t\\tthis.loading = true\\n\\t\\t\\tthis.error = false\\n\\t\\t\\tthis.message = ''\\n\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tconst { data } = await Axios.post(this.resetPasswordTarget, {\\n\\t\\t\\t\\t\\tpassword: this.password,\\n\\t\\t\\t\\t\\tproceed: this.proceed,\\n\\t\\t\\t\\t})\\n\\t\\t\\t\\tif (data && data.status === 'success') {\\n\\t\\t\\t\\t\\tthis.message = 'send-success'\\n\\t\\t\\t\\t\\tthis.$emit('update:username', this.user)\\n\\t\\t\\t\\t\\tthis.$emit('done')\\n\\t\\t\\t\\t} else if (data && data.encryption) {\\n\\t\\t\\t\\t\\tthis.encrypted = true\\n\\t\\t\\t\\t} else if (data && data.msg) {\\n\\t\\t\\t\\t\\tthrow new Error(data.msg)\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tthrow new Error()\\n\\t\\t\\t\\t}\\n\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\tthis.error = true\\n\\t\\t\\t\\tthis.message = e.message ? e.message : t('core', 'Password cannot be changed. Please contact your administrator.')\\n\\t\\t\\t} finally {\\n\\t\\t\\t\\tthis.loading = false\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style scoped>\\n\\tfieldset {\\n\\t\\ttext-align: center;\\n\\t}\\n\\n\\tinput[type=submit] {\\n\\t\\tmargin-top: 20px;\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"\\n.fade-enter-active, .fade-leave-active {\\n\\ttransition: opacity .3s;\\n}\\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\\n\\topacity: 0;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/Login.vue\"],\"names\":[],\"mappings\":\";AAiLA;CACA,uBAAA;AACA;AACA;CACA,UAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\\n -\\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\\n -\\n - @license GNU AGPL version 3 or any later version\\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\\n<template>\\n\\t<div v-if=\\\"!hideLoginForm || directLogin\\\">\\n\\t\\t<transition name=\\\"fade\\\" mode=\\\"out-in\\\">\\n\\t\\t\\t<div v-if=\\\"!passwordlessLogin && !resetPassword && resetPasswordTarget === ''\\\"\\n\\t\\t\\t\\tkey=\\\"login\\\">\\n\\t\\t\\t\\t<LoginForm :username.sync=\\\"user\\\"\\n\\t\\t\\t\\t\\t:redirect-url=\\\"redirectUrl\\\"\\n\\t\\t\\t\\t\\t:direct-login=\\\"directLogin\\\"\\n\\t\\t\\t\\t\\t:messages=\\\"messages\\\"\\n\\t\\t\\t\\t\\t:errors=\\\"errors\\\"\\n\\t\\t\\t\\t\\t:throttle-delay=\\\"throttleDelay\\\"\\n\\t\\t\\t\\t\\t:inverted-colors=\\\"invertedColors\\\"\\n\\t\\t\\t\\t\\t:auto-complete-allowed=\\\"autoCompleteAllowed\\\"\\n\\t\\t\\t\\t\\t@submit=\\\"loading = true\\\" />\\n\\t\\t\\t\\t<a v-if=\\\"canResetPassword && resetPasswordLink !== ''\\\"\\n\\t\\t\\t\\t\\tid=\\\"lost-password\\\"\\n\\t\\t\\t\\t\\t:href=\\\"resetPasswordLink\\\">\\n\\t\\t\\t\\t\\t{{ t('core', 'Forgot password?') }}\\n\\t\\t\\t\\t</a>\\n\\t\\t\\t\\t<a v-else-if=\\\"canResetPassword && !resetPassword\\\"\\n\\t\\t\\t\\t\\tid=\\\"lost-password\\\"\\n\\t\\t\\t\\t\\t:href=\\\"resetPasswordLink\\\"\\n\\t\\t\\t\\t\\t@click.prevent=\\\"resetPassword = true\\\">\\n\\t\\t\\t\\t\\t{{ t('core', 'Forgot password?') }}\\n\\t\\t\\t\\t</a>\\n\\t\\t\\t\\t<br>\\n\\t\\t\\t\\t<template v-if=\\\"hasPasswordless\\\">\\n\\t\\t\\t\\t\\t<div v-if=\\\"countAlternativeLogins\\\"\\n\\t\\t\\t\\t\\t\\tclass=\\\"alternative-logins\\\">\\n\\t\\t\\t\\t\\t\\t<a v-if=\\\"hasPasswordless\\\"\\n\\t\\t\\t\\t\\t\\t\\tclass=\\\"button\\\"\\n\\t\\t\\t\\t\\t\\t\\t:class=\\\"{ 'single-alt-login-option': countAlternativeLogins }\\\"\\n\\t\\t\\t\\t\\t\\t\\thref=\\\"#\\\"\\n\\t\\t\\t\\t\\t\\t\\t@click.prevent=\\\"passwordlessLogin = true\\\">\\n\\t\\t\\t\\t\\t\\t\\t{{ t('core', 'Log in with a device') }}\\n\\t\\t\\t\\t\\t\\t</a>\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t\\t<a v-else\\n\\t\\t\\t\\t\\t\\thref=\\\"#\\\"\\n\\t\\t\\t\\t\\t\\t@click.prevent=\\\"passwordlessLogin = true\\\">\\n\\t\\t\\t\\t\\t\\t{{ t('core', 'Log in with a device') }}\\n\\t\\t\\t\\t\\t</a>\\n\\t\\t\\t\\t</template>\\n\\t\\t\\t</div>\\n\\t\\t\\t<div v-else-if=\\\"!loading && passwordlessLogin\\\"\\n\\t\\t\\t\\tkey=\\\"reset\\\"\\n\\t\\t\\t\\tclass=\\\"login-additional\\\">\\n\\t\\t\\t\\t<PasswordLessLoginForm :username.sync=\\\"user\\\"\\n\\t\\t\\t\\t\\t:redirect-url=\\\"redirectUrl\\\"\\n\\t\\t\\t\\t\\t:inverted-colors=\\\"invertedColors\\\"\\n\\t\\t\\t\\t\\t:auto-complete-allowed=\\\"autoCompleteAllowed\\\"\\n\\t\\t\\t\\t\\t:is-https=\\\"isHttps\\\"\\n\\t\\t\\t\\t\\t:is-localhost=\\\"isLocalhost\\\"\\n\\t\\t\\t\\t\\t:has-public-key-credential=\\\"hasPublicKeyCredential\\\"\\n\\t\\t\\t\\t\\t@submit=\\\"loading = true\\\" />\\n\\t\\t\\t\\t<a href=\\\"#\\\" @click.prevent=\\\"passwordlessLogin = false\\\">\\n\\t\\t\\t\\t\\t{{ t('core', 'Back') }}\\n\\t\\t\\t\\t</a>\\n\\t\\t\\t</div>\\n\\t\\t\\t<div v-else-if=\\\"!loading && canResetPassword\\\"\\n\\t\\t\\t\\tkey=\\\"reset\\\"\\n\\t\\t\\t\\tclass=\\\"login-additional\\\">\\n\\t\\t\\t\\t<div class=\\\"lost-password-container\\\">\\n\\t\\t\\t\\t\\t<ResetPassword v-if=\\\"resetPassword\\\"\\n\\t\\t\\t\\t\\t\\t:username.sync=\\\"user\\\"\\n\\t\\t\\t\\t\\t\\t:reset-password-link=\\\"resetPasswordLink\\\"\\n\\t\\t\\t\\t\\t\\t:inverted-colors=\\\"invertedColors\\\"\\n\\t\\t\\t\\t\\t\\t@abort=\\\"resetPassword = false\\\" />\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t</div>\\n\\t\\t\\t<div v-else-if=\\\"resetPasswordTarget !== ''\\\">\\n\\t\\t\\t\\t<UpdatePassword :username.sync=\\\"user\\\"\\n\\t\\t\\t\\t\\t:reset-password-target=\\\"resetPasswordTarget\\\"\\n\\t\\t\\t\\t\\t:inverted-colors=\\\"invertedColors\\\"\\n\\t\\t\\t\\t\\t@done=\\\"passwordResetFinished\\\" />\\n\\t\\t\\t</div>\\n\\t\\t</transition>\\n\\t</div>\\n\\t<div v-else>\\n\\t\\t<transition name=\\\"fade\\\" mode=\\\"out-in\\\">\\n\\t\\t\\t<div class=\\\"warning\\\">\\n\\t\\t\\t\\t{{ t('core', 'Login form is disabled.') }}<br>\\n\\t\\t\\t\\t<small>{{ t('core', 'Please contact your administrator.') }}\\n\\t\\t\\t\\t</small>\\n\\t\\t\\t</div>\\n\\t\\t</transition>\\n\\t</div>\\n</template>\\n\\n<script>\\nimport { loadState } from '@nextcloud/initial-state'\\nimport queryString from 'query-string'\\n\\nimport LoginForm from '../components/login/LoginForm.vue'\\nimport PasswordLessLoginForm from '../components/login/PasswordLessLoginForm.vue'\\nimport ResetPassword from '../components/login/ResetPassword.vue'\\nimport UpdatePassword from '../components/login/UpdatePassword.vue'\\n\\nconst query = queryString.parse(location.search)\\nif (query.clear === '1') {\\n\\ttry {\\n\\t\\twindow.localStorage.clear()\\n\\t\\twindow.sessionStorage.clear()\\n\\t\\tconsole.debug('Browser storage cleared')\\n\\t} catch (e) {\\n\\t\\tconsole.error('Could not clear browser storage', e)\\n\\t}\\n}\\n\\nexport default {\\n\\tname: 'Login',\\n\\n\\tcomponents: {\\n\\t\\tLoginForm,\\n\\t\\tPasswordLessLoginForm,\\n\\t\\tResetPassword,\\n\\t\\tUpdatePassword,\\n\\t},\\n\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tloading: false,\\n\\t\\t\\tuser: loadState('core', 'loginUsername', ''),\\n\\t\\t\\tpasswordlessLogin: false,\\n\\t\\t\\tresetPassword: false,\\n\\n\\t\\t\\t// Initial data\\n\\t\\t\\terrors: loadState('core', 'loginErrors', []),\\n\\t\\t\\tmessages: loadState('core', 'loginMessages', []),\\n\\t\\t\\tredirectUrl: loadState('core', 'loginRedirectUrl', false),\\n\\t\\t\\tthrottleDelay: loadState('core', 'loginThrottleDelay', 0),\\n\\t\\t\\tinvertedColors: OCA.Theming && OCA.Theming.inverted,\\n\\t\\t\\tcanResetPassword: loadState('core', 'loginCanResetPassword', false),\\n\\t\\t\\tresetPasswordLink: loadState('core', 'loginResetPasswordLink', ''),\\n\\t\\t\\tautoCompleteAllowed: loadState('core', 'loginAutocomplete', true),\\n\\t\\t\\tresetPasswordTarget: loadState('core', 'resetPasswordTarget', ''),\\n\\t\\t\\tresetPasswordUser: loadState('core', 'resetPasswordUser', ''),\\n\\t\\t\\tdirectLogin: query.direct === '1',\\n\\t\\t\\thasPasswordless: loadState('core', 'webauthn-available', false),\\n\\t\\t\\tcountAlternativeLogins: loadState('core', 'countAlternativeLogins', false),\\n\\t\\t\\tisHttps: window.location.protocol === 'https:',\\n\\t\\t\\tisLocalhost: window.location.hostname === 'localhost',\\n\\t\\t\\thasPublicKeyCredential: typeof (window.PublicKeyCredential) !== 'undefined',\\n\\t\\t\\thideLoginForm: loadState('core', 'hideLoginForm', false),\\n\\t\\t}\\n\\t},\\n\\tmethods: {\\n\\t\\tpasswordResetFinished() {\\n\\t\\t\\tthis.resetPasswordTarget = ''\\n\\t\\t\\tthis.directLogin = true\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style>\\n\\t.fade-enter-active, .fade-leave-active {\\n\\t\\ttransition: opacity .3s;\\n\\t}\\n\\t.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\\n\\t\\topacity: 0;\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.program(5, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":1},\"end\":{\"line\":10,\"column\":8}}})) != null ? stack1 : \"\");\n},\"2\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":2},\"end\":{\"line\":7,\"column\":9}}})) != null ? stack1 : \"\");\n},\"3\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<a class=\\\"profile-link--avatar\\\" href=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32\\\" class=\\\"avatar\\\" srcset=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32 1x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=64 2x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=128 4x\\\" alt=\\\"\\\">\\n\t\t\t</a>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32\\\" class=\\\"avatar\\\" srcset=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32 1x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=64 2x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=128 4x\\\" alt=\\\"\\\">\\n\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(8, data, 0),\"inverse\":container.program(11, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":1},\"end\":{\"line\":20,\"column\":8}}})) != null ? stack1 : \"\");\n},\"8\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(9, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":2},\"end\":{\"line\":17,\"column\":9}}})) != null ? stack1 : \"\");\n},\"9\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<a class=\\\"profile-link--avatar\\\" href=\\\"\"\n + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t\t<div class=\\\"avatar\\\"></div>\\n\t\t\t</a>\\n\";\n},\"11\":function(container,depth0,helpers,partials,data) {\n return \"\t\t<div class=\\\"avatar\\\"></div>\\n\";\n},\"13\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(14, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":1},\"end\":{\"line\":29,\"column\":8}}})) != null ? stack1 : \"\");\n},\"14\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<a class=\\\"body profile-link--full-name\\\" href=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t\t</a>\\n\";\n},\"16\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(17, data, 0),\"inverse\":container.program(19, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":0},\"end\":{\"line\":45,\"column\":0}}})) != null ? stack1 : \"\");\n},\"17\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<a class=\\\"body\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\"> \\n\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t</a>\\n \t<a class=\\\"top-action\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n \t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n + \"\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t</a>\\n\";\n},\"19\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<div class=\\\"body\\\">\\n\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t</div>\\n\";\n},\"21\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<a class=\\\"second-action\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t<img src=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n + \"\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n</a>\\n\";\n},\"23\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<span class=\\\"other-actions icon-more\\\"></span>\\n\t<div class=\\\"menu popovermenu\\\">\\n\t\t<ul>\\n\"\n + ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"actions\") : stack1),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(24, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":55,\"column\":3},\"end\":{\"line\":62,\"column\":12}}})) != null ? stack1 : \"\")\n + \"\t\t</ul>\\n\t</div>\\n\";\n},\"24\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<li>\\n\t\t\t\t<a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"hyperlink\") || (depth0 != null ? lookupProperty(depth0,\"hyperlink\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"hyperlink\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":57,\"column\":13},\"end\":{\"line\":57,\"column\":26}}}) : helper)))\n + \"\\\">\\n\t\t\t\t\t<img src=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"icon\") || (depth0 != null ? lookupProperty(depth0,\"icon\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"icon\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":58,\"column\":15},\"end\":{\"line\":58,\"column\":23}}}) : helper)))\n + \"\\\" alt=\\\"\\\">\\n\t\t\t\t\t<span>\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"title\") || (depth0 != null ? lookupProperty(depth0,\"title\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"title\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":59,\"column\":11},\"end\":{\"line\":59,\"column\":20}}}) : helper)))\n + \"</span>\\n\t\t\t\t</a>\\n\t\t\t</li>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.program(7, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":21,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(13, data, 0),\"inverse\":container.program(16, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":22,\"column\":0},\"end\":{\"line\":45,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"hasTwoActions\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(21, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":46,\"column\":0},\"end\":{\"line\":50,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"hasManyActions\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(23, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":51,\"column\":0},\"end\":{\"line\":65,\"column\":7}}})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-search\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"couldNotLoadText\") || (depth0 != null ? lookupProperty(depth0,\"couldNotLoadText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"couldNotLoadText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":5},\"end\":{\"line\":3,\"column\":25}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-search\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"noContactsFoundText\") || (depth0 != null ? lookupProperty(depth0,\"noContactsFoundText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"noContactsFoundText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":5},\"end\":{\"line\":4,\"column\":28}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"footer\\\"><a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppURL\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppURL\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppURL\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":29},\"end\":{\"line\":9,\"column\":47}}}) : helper)))\n + \"\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"showAllContactsText\") || (depth0 != null ? lookupProperty(depth0,\"showAllContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"showAllContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":49},\"end\":{\"line\":9,\"column\":72}}}) : helper)))\n + \"</a></div>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"canInstallApp\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(6, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":0},\"end\":{\"line\":12,\"column\":0}}})) != null ? stack1 : \"\");\n},\"6\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"footer\\\"><a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppMgmtURL\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppMgmtURL\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppMgmtURL\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":29},\"end\":{\"line\":11,\"column\":51}}}) : helper)))\n + \"\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppMgmtText\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppMgmtText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppMgmtText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":53},\"end\":{\"line\":11,\"column\":76}}}) : helper)))\n + \"</a></div>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contacts\") : depth0)) != null ? lookupProperty(stack1,\"length\") : stack1),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":6,\"column\":11}}})) != null ? stack1 : \"\")\n + \"<div id=\\\"contactsmenu-contacts\\\"></div>\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"contactsAppEnabled\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.program(5, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":0},\"end\":{\"line\":12,\"column\":7}}})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-loading\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"loadingText\") || (depth0 != null ? lookupProperty(depth0,\"loadingText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"loadingText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":5},\"end\":{\"line\":3,\"column\":20}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<label class=\\\"hidden-visually\\\" for=\\\"contactsmenu-search\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchContactsText\") || (depth0 != null ? lookupProperty(depth0,\"searchContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":57},\"end\":{\"line\":1,\"column\":79}}}) : helper)))\n + \"</label>\\n<input id=\\\"contactsmenu-search\\\" type=\\\"search\\\" placeholder=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchContactsText\") || (depth0 != null ? lookupProperty(depth0,\"searchContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":59},\"end\":{\"line\":2,\"column\":81}}}) : helper)))\n + \"\\\" value=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchTerm\") || (depth0 != null ? lookupProperty(depth0,\"searchTerm\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchTerm\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":90},\"end\":{\"line\":2,\"column\":104}}}) : helper)))\n + \"\\\">\\n<div class=\\\"content\\\">\\n</div>\\n\";\n},\"useData\":true});","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 2819,\n\t\"./hi.js\": 2819,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","// 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 = 4577;","__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\t4577: 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__(10473); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","loadedScripts","loadedStyles","updatableNotification","getDefaultNotificationFunction","setDefault","callback","this","hide","$row","_","undefined","each","$","toastify","hideToast","console","error","call","showHtml","html","options","isHTML","timeout","TOAST_PERMANENT_TIMEOUT","toast","showMessage","toastElement","show","text","toString","split","join","escapeHTML","showUpdate","showTemporary","TOAST_DEFAULT_TIMEOUT","isHidden","find","length","ajaxConnectionLostHandler","Notification","t","trailing","enableDynamicSlideToggle","Apps","$el","removeClass","trigger","addClass","method","endpoint","OC","type","toUpperCase","url","generateOcsUrl","data","success","bind","appConfig","window","oc_appconfig","AppConfig","getValue","app","key","defaultValue","setValue","value","getApps","getKeys","deleteKey","_oc_appswebroots","methodMap","create","update","patch","delete","read","parsePropFindResult","result","davProperties","subResult","props","href","propStat","status","properties","propKey","id","parseIdFromLocation","queryPos","indexOf","substr","parts","pop","isSuccessStatus","callPropPatch","client","model","headers","propPatch","attrs","changedProp","warn","convertModelAttributesToDavProperties","changed","then","toJSON","Backbone","VendorBackbone","Object","assign","davCall","dav","baseUrl","xmlNamespaces","resolveUrl","requestToken","propFind","depth","response","propsMapping","results","body","shift","callPropFind","request","callMkCol","responseJson","locationHeader","xhr","getResponseHeader","callMethod","davSync","params","isCollection","Collection","hasInnerCollection","usePUT","collection","Error","urlError","JSON","stringify","processData","prototype","textStatus","errorThrown","context","_oc_config","Contact","Model","defaults","fullName","lastMessage","actions","hasOneAction","hasTwoActions","hasManyActions","initialize","get","set","ContactCollection","ContactsListView","View","_collection","_subViews","render","self","forEach","contact","item","ContactsListItemView","append","on","_onChildActionMenuToggle","push","$src","view","className","_template","_model","_actionMenuShown","events","contactTemplate","require","template","_onOtherActionMenuOpened","delegateEvents","imageplaceholder","tooltip","placement","_onToggleActionsMenu","is","ContactsMenuView","_loadingTemplate","_errorTemplate","_contentTemplate","_contactsTemplate","_contacts","_searchTerm","templates","loading","menu","list","_onSearch","e","searchTerm","val","loadingTemplate","errorTemplate","couldNotLoadText","contentTemplate","searchContactsText","contactsTemplate","noContactsFoundText","showAllContactsText","contactsAppMgmtText","showLoading","loadingText","showError","showContacts","viewData","contacts","contactsAppEnabled","contactsAppURL","canInstallApp","contactsAppMgmtURL","searchVal","focus","ContactsMenu","_$trigger","_view","_contactsPromise","el","_loadContacts","_toggleVisibility","Promise","resolve","_getContacts","filter","term","catch","rawUid","document","getElementsByTagName","getAttribute","displayName","currentUser","Search","global","emit","token","Dialogs","YES_NO_BUTTONS","OK_BUTTONS","FILEPICKER_TYPE_CHOOSE","FILEPICKER_TYPE_MOVE","FILEPICKER_TYPE_COPY","FILEPICKER_TYPE_COPY_MOVE","FILEPICKER_TYPE_CUSTOM","dialogsCounter","alert","title","modal","message","OK_BUTTON","info","confirm","confirmDestructive","buttons","confirmHtml","prompt","name","password","_getMessageTemplate","$tmpl","dialogName","dialogId","$dlg","octemplate","dialog_name","input","attr","label","buttonlist","click","ocdialog","defaultButton","closeOnEscape","close","filepicker","multiselect","mimetypeFilter","path","sortField","sortOrder","emptyText","newText","filesClient","OCA","filelist","allowDirectoryChooser","_getFilePickerTemplate","$filePicker","emptytext","newtext","nameCol","sizeCol","modifiedCol","remove","$showGridView","_onGridviewChange","_getGridSettings","newButton","event","stopImmediatePropagation","preventDefault","$input","submit","newName","lastPos","lastIndexOf","selectRange","$form","stopPropagation","filename","trimmedName","trim","match","isFileNameValid","file","escape","checkInput","newname","createDirectory","always","_fillFilePicker","keypress","keyCode","which","ready","$fileListHeader","$filelist","$filelistContainer","$dirTree","_handleTreeListSelect","_handlePickerClick","dir","currentTarget","functionToCall","returnType","datapath","index","element","selectedName","button","width","height","style","buttonEnableDisable","closest","prop","fail","content","dialogType","allowHtml","escapeFunction","cancel","classes","confirmClasses","closeCallback","_fileexistsshown","fileexists","original","replacement","controller","dialogDeferred","resampleHermite","canvas","W","H","W2","H2","Math","round","img","getContext","getImageData","img2","data2","ratio_w","ratio_h","ratio_w_half","ceil","ratio_h_half","j","i","x2","weight","weights","weights_alpha","gx_r","gx_g","gx_b","gx_a","center_y","yy","floor","dy","abs","center_x","w0","xx","dx","w","sqrt","clearRect","max","putImageData","addConflict","$conflicts","$conflict","clone","$originalDiv","$replacementDiv","size","mtime","lastModified","directory","urlSpec","x","y","c","etag","forceIcon","previewpath","Files","generatePreviewUrl","replace","css","FileReader","reader","onload","blob","Blob","target","URL","webkitURL","originalUrl","createObjectURL","image","Image","src","createElement","min","drawImage","toDataURL","readAsArrayBuffer","reject","getCroppedPreview","checkboxId","count","n","parent","children","_getFileExistsTemplate","allnewfiles","allexistingfiles","why","what","onCancel","onContinue","closeButton","$primaryButton","updatePrimaryButton","checkedCount","$checkbox","promise","checked","gridview","next","toggleClass","defer","$filePickerTemplate","tmpl","$listTmpl","detach","jqXHR","$messageTemplate","$fileexistsTemplate","_getFileList","mimeType","mimetypes","empty","advancedFilter","getFolderContents","files","mimetype","showHiddenInput","getElementById","startsWith","Comparators","fileInfo1","fileInfo2","comparator","sort","file1","file2","isFavorite","fileInfo","tags","_fillSlug","idx","entry","simpleSize","sizeColor","icon","parseInt","pow","filename1","filename2","date","previewUrl","addButton","$template","paths","prepend","prependTo","getOcDialog","_changeButtonsText","$element","ctrlKey","copyText","folder","moveText","eq","getToken","setToken","newToken","OCEventSource","joinChar","dataStr","typelessListeners","closed","listeners","encodeURIComponent","useFallBack","EventSource","iframeId","iframeCount","fallBackSources","iframe","source","onmessage","parse","listen","fallBackCallBack","done","lastLength","addEventListener","currentMenu","hideMenus","complete","lastMenu","slideUp","apply","arguments","isAdmin","_oc_isadmin","_oc_l10n_registry_translations","_oc_l10n_registry_plural_functions","hasAppTranslations","appId","getAppTranslations","translations","pluralFunction","L10n","load","appName","generateFilePath","register","pluralForm","bundle","_getPlural","extend","_unregister","translate","vars","allOptions","sanitize","optSanitize","DOMPurify","identity","optEscape","translation","a","b","r","_build","translatePlural","textSingular","textPlural","identifier","plural","number","language","substring","Handlebars","startSaving","selector","startAction","stop","finishedSaving","finishedAction","finishedSuccess","finishedError","delay","fadeOut","pageLoadTime","init","requirePasswordConfirmation","moment","requiresPasswordConfirmation","serverTimeDiff","nc_pageLoad","timeSinceLogin","nc_lastLogin","backendAllowsPasswordConfirmation","rejectCallback","config","_confirmPassword","$dialog","$error","$buttons","generateUrl","lastLogin","theme","_theme","_handlers","_pushState","strParams","history","pushState","location","pathname","navigator","userAgent","toLowerCase","pattern","patterns","querySelectorAll","ii","fill","stroke","removeAttribute","setAttribute","replaceState","hash","_cancelPop","addOnPopStateHandler","handler","_parseHashQuery","pos","_decodeQuery","query","parseUrlQuery","search","_onPopState","state","chunkify","tz","charAt","m","History","humanFileSize","computerFileSize","string","s","bytes","matches","parseFloat","isFinite","k","kb","mb","gb","g","tb","pb","p","formatDate","timestamp","format","TESTING","relativeModifiedDate","diff","fromNow","getScrollBarWidth","_scrollBarWidth","inner","outer","position","top","left","visibility","overflow","appendChild","w1","offsetWidth","w2","clientWidth","removeChild","stripTime","Date","getFullYear","getMonth","getDate","naturalSortCompare","aa","bb","aNum","Number","bNum","localeCompare","waitFor","interval","internalCallback","setTimeout","isCookieSetToValue","cookies","cookie","debug","_oc_debug","webroot","_oc_webroot","coreApps","menuSpeed","PERMISSION_ALL","PERMISSION_CREATE","PERMISSION_DELETE","PERMISSION_NONE","PERMISSION_READ","PERMISSION_SHARE","PERMISSION_UPDATE","TAG_FAVORITE","fileIsBlacklisted","Config","addScript","script","addStyle","createStyleSheet","appSettings","args","appid","scriptName","cache","settings","popup","hasClass","arrowclass","loadJS","scriptname","jqxhr","appswebroots","dialogs","getCurrentUser","uid","isUserAdmin","L10N","_ajaxConnectionLostHandler","_processAjaxError","statusText","timer","setInterval","clearInterval","registerXHRForErrorProcessing","readyState","getCapabilities","realGetCapabilities","registerMenu","$toggle","$menuEl","toggle","headerMenu","isClickableElement","slideToggle","showMenu","unregisterMenu","off","basename","encodePath","dirname","isSamePath","joinPaths","getHost","host","getHostName","hostname","getPort","port","getProtocol","protocol","getCanonicalLocale","getLocale","getLanguage","addTranslations","buildQueryString","parseQueryString","queryString","components","part","decodeURIComponent","msg","PasswordConfirmation","Plugins","_plugins","targetName","plugin","plugins","getPlugins","attach","targetObject","Util","filePath","namespaces","tail","getRootPath","getRootUrl","imagePath","redirect","targetURL","reload","getRequestToken","linkTo","linkToOCS","service","version","ocsVersion","linkToRemote","generateRemoteUrl","linkToRemoteBase","realGetRootUrl","subscribe","_vm","_h","$createElement","_c","_self","$event","$emit","staticClass","domProps","_v","class","invertedColors","ref","loginActionUrl","_s","_e","_l","loadingIcon","staticStyle","shake","invalidPassword","directives","rawName","expression","autoCompleteAllowed","updateUsername","composing","user","passwordInputType","togglePassword","toggleIcon","throttleDelay","redirectUrl","timezone","timezoneOffset","loginName","Axios","resp","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","isHttps","isLocalhost","hasPublicKeyCredential","validCredentials","authenticate","warning","Array","isArray","proceed","_i","$$a","$$el","$$c","$$i","concat","slice","clear","hideLoginForm","directLogin","passwordlessLogin","resetPassword","resetPasswordTarget","canResetPassword","resetPasswordLink","passwordResetFinished","messages","errors","countAlternativeLogins","methods","Vue","Nextcloud","LoginView","$mount","___CSS_LOADER_EXPORT___","module","exports","container","depth0","helpers","partials","stack1","lookupProperty","propertyName","hasOwnProperty","nullContext","program","noop","alias1","lambda","alias2","escapeExpression","helper","hooks","helperMissing","alias3","alias4","map","webpackContext","req","webpackContextResolve","__webpack_require__","o","code","keys","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","amdD","amdO","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","every","splice","getter","__esModule","d","definition","defineProperty","enumerable","globalThis","Function","obj","Symbol","toStringTag","nmd","baseURI","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"core-login.js?v=de0029463553908f3b67","mappings":";gBAAIA,iGC4BEC,EAAgB,GAChBC,EAAe,yBCQrB,GAECC,sBAAuB,KAEvBC,+BAAgC,KAMhCC,WAVc,SAUHC,GACVC,KAAKH,+BAAiCE,GAavCE,KAxBc,SAwBTC,EAAMH,GACNI,EAAAA,QAAAA,WAAaD,KAEhBH,EAAWG,EACXA,OAAOE,GAGHF,GAMLA,EAAKG,MAAK,WACLC,GAAAA,CAAEN,MAAM,GAAGO,SACdD,GAAAA,CAAEN,MAAM,GAAGO,SAASC,YAEpBC,QAAQC,MAAM,+CAEXV,OAASA,KAAKJ,wBACjBI,KAAKJ,sBAAwB,SAG3BG,GACHA,EAASY,OAENX,KAAKH,gCACRG,KAAKH,kCAnBLY,QAAQC,MAAM,2HAmChBE,SAnEc,SAmELC,EAAMC,IACdA,EAAUA,GAAW,IACbC,QAAS,EACjBD,EAAQE,QAAYF,EAAQE,QAAqCF,EAAQE,QAAlCC,EAAAA,GACvC,IAAMC,GAAQC,EAAAA,EAAAA,IAAYN,EAAMC,GAEhC,OADAI,EAAME,aAAab,SAAWW,EACvBZ,GAAAA,CAAEY,EAAME,eAahBC,KAtFc,SAsFTC,EAAMR,IAUVA,EAAUA,GAAW,IACbE,QAAYF,EAAQE,QAAqCF,EAAQE,QAAlCC,EAAAA,GACvC,IAAMC,GAAQC,EAAAA,EAAAA,IAXK,SAASG,GAC3B,OAAOA,EAAKC,WACVC,MAAM,KAAKC,KAAK,SAChBD,MAAM,KAAKC,KAAK,QAChBD,MAAM,KAAKC,KAAK,QAChBD,MAAM,KAAKC,KAAK,UAChBD,MAAM,KAAMC,KAAK,UAKMC,CAAWJ,GAAOR,GAE5C,OADAI,EAAME,aAAab,SAAWW,EACvBZ,GAAAA,CAAEY,EAAME,eAUhBO,WA9Gc,SA8GHL,GAMV,OALItB,KAAKJ,uBACRI,KAAKJ,sBAAsBY,YAE5BR,KAAKJ,uBAAwBuB,EAAAA,EAAAA,IAAYG,EAAM,CAAEN,QAASC,EAAAA,KAC1DjB,KAAKJ,sBAAsBwB,aAAab,SAAWP,KAAKJ,sBACjDU,GAAAA,CAAEN,KAAKJ,sBAAsBwB,eAerCQ,cAnIc,SAmIAN,EAAMR,IACnBA,EAAUA,GAAW,IACbE,QAAUF,EAAQE,SAAWa,EAAAA,GACrC,IAAMX,GAAQC,EAAAA,EAAAA,IAAYG,EAAMR,GAEhC,OADAI,EAAME,aAAab,SAAWW,EACvBZ,GAAAA,CAAEY,EAAME,eAShBU,SAjJc,WAkJb,OAAQxB,GAAAA,CAAE,YAAYyB,KAAK,aAAaC,SCnJ7BC,EAA4B9B,EAAAA,QAAAA,UAAW,WACnD+B,EAAAA,cAA2BC,EAAE,OAAQ,gCACnC,IAAU,CAAEC,UAAU,ICgGzB,EA3Ga,CACZC,yBADY,aAWbC,eAAsB,SAASC,IACVA,GAAOjC,GAAAA,CAAE,iBACjBkC,YAAY,aAAanB,OACrCf,GAAAA,CAAE,gBAAgBmC,QAAQ,IAAInC,IAAAA,OAAQ,gBASvCgC,eAAsB,SAASC,IACVA,GAAOjC,GAAAA,CAAE,iBACjBL,OAAOyC,SAAS,aAC5BpC,GAAAA,CAAE,gBAAgBmC,QAAQ,IAAInC,IAAAA,OAAQ,iBCjBvC,SAASK,EAAKgC,EAAQC,EAAU9B,GACf,SAAX6B,GAAgC,WAAXA,IAAwBE,GAAAA,qBAAAA,gCAKlD/B,EAAUA,GAAW,GACrBR,IAAAA,KAAO,CACNwC,KAAMH,EAAOI,cACbC,KAAKC,EAAAA,EAAAA,gBAAe,4CAA8CL,EAClEM,KAAMpC,EAAQoC,MAAQ,GACtBC,QAASrC,EAAQqC,QACjBzC,MAAOI,EAAQJ,SAVfmC,GAAAA,qBAAAA,4BAAoD1C,EAAEiD,KAAKzC,EAAMX,KAAM2C,EAAQC,EAAU9B,ICRpF,IAAMuC,EAAYC,OAAOC,cAAgB,GAMnCC,EAAY,CAIxBC,SAAU,SAASC,EAAKC,EAAKC,EAAc7D,IDyCrC,SAAkB2D,EAAKC,EAAKC,EAAc9C,IAChDA,EAAUA,GAAW,IACboC,KAAO,CACdU,aAAAA,GAGDjD,EAAK,MAAO,IAAM+C,EAAM,IAAMC,EAAK7C,GC9ClC2C,CAASC,EAAKC,EAAKC,EAAc,CAChCT,QAASpD,KAOX8D,SAAU,SAASH,EAAKC,EAAKG,IDkDvB,SAAkBJ,EAAKC,EAAKG,EAAOhD,IACzCA,EAAUA,GAAW,IACboC,KAAO,CACdY,MAAAA,GAGDnD,EAAK,OAAQ,IAAM+C,EAAM,IAAMC,EAAK7C,GCvDnC+C,CAASH,EAAKC,EAAKG,IAMpBC,QAAS,SAAShE,IDCZ,SAAiBe,GACvBH,EAAK,MAAO,GAAIG,GCDfiD,CAAQ,CACPZ,QAASpD,KAOXiE,QAAS,SAASN,EAAK3D,IDGjB,SAAiB2D,EAAK5C,GAC5BH,EAAK,MAAO,IAAM+C,EAAK5C,GCHtBkD,CAAQN,EAAK,CACZP,QAASpD,KAOXkE,UAAW,SAASP,EAAKC,ID0CnB,SAAmBD,EAAKC,EAAK7C,GACnCH,EAAK,SAAU,IAAM+C,EAAM,IAAMC,OC1ChCM,GAAAA,CAAUP,EAAKC,KCnDjB,OAFkDvD,IAA5BkD,OAAOY,kBAAkCZ,OAAOY,gDCMhEC,EAAY,CACjBC,OAAQ,OACRC,OAAQ,YACRC,MAAO,YACPC,OAAQ,SACRC,KAAM,YAcP,SAASC,EAAoBC,EAAQC,GACpC,GAAIxE,EAAAA,QAAAA,QAAUuE,GACb,OAAOvE,EAAAA,QAAAA,IAAMuE,GAAQ,SAASE,GAC7B,OAAOH,EAAoBG,EAAWD,MAGxC,IAAIE,EAAQ,CACXC,KAAMJ,EAAOI,MAsBd,OAnBA3E,EAAAA,QAAAA,KAAOuE,EAAOK,UAAU,SAASA,GAChC,GAAwB,oBAApBA,EAASC,OAIb,IAAK,IAAIrB,KAAOoB,EAASE,WAAY,CACpC,IAAIC,EAAUvB,EACVA,KAAOgB,IACVO,EAAUP,EAAchB,IAEzBkB,EAAMK,GAAWH,EAASE,WAAWtB,OAIlCkB,EAAMM,KAEVN,EAAMM,GAAKC,EAAoBP,EAAMC,OAG/BD,EASR,SAASO,EAAoBpC,GAC5B,IAAIqC,EAAWrC,EAAIsC,QAAQ,KACvBD,EAAW,IACdrC,EAAMA,EAAIuC,OAAO,EAAGF,IAGrB,IACIX,EADAc,EAAQxC,EAAIxB,MAAM,KAEtB,GACCkD,EAASc,EAAMA,EAAMxD,OAAS,GAC9BwD,EAAMC,aAGGf,GAAUc,EAAMxD,OAAS,GAEnC,OAAO0C,EAGR,SAASgB,EAAgBV,GACxB,OAAOA,GAAU,KAAOA,GAAU,IA+CnC,SAASW,EAAcC,EAAQ9E,EAAS+E,EAAOC,GAC9C,OAAOF,EAAOG,UACbjF,EAAQkC,IA9CV,SAA+CgD,EAAOrB,GACrD,IACIhB,EADAkB,EAAQ,GAEZ,IAAKlB,KAAOqC,EAAO,CAClB,IAAIC,EAActB,EAAchB,GAC5BG,EAAQkC,EAAMrC,GACbsC,IACJxF,QAAQyF,KAAK,0CAA4CvC,GACzDsC,EAActC,IAEXxD,EAAAA,QAAAA,UAAY2D,IAAU3D,EAAAA,QAAAA,SAAW2D,MAEpCA,EAAQ,GAAKA,GAEde,EAAMoB,GAAenC,EAEtB,OAAOe,EA+BNsB,CAAsCN,EAAMO,QAAStF,EAAQ6D,eAC7DmB,GACCO,MAAK,SAAS3B,GACXgB,EAAgBhB,EAAOM,QACtB7E,EAAAA,QAAAA,WAAaW,EAAQqC,UAGxBrC,EAAQqC,QAAQ0C,EAAMS,UAEbnG,EAAAA,QAAAA,WAAaW,EAAQJ,QAC/BI,EAAQJ,MAAMgE,MA+DV,ICzMD6B,EAAWC,IAAAA,aAGjBC,OAAOC,OAAOH,EAAU,CACvBI,QDqMsB,SAAC7F,EAAS+E,GAChC,IAAID,EAAS,IAAIgB,EAAAA,IAAAA,OAAW,CAC3BC,QAAS/F,EAAQkC,IACjB8D,cAAe3G,EAAAA,QAAAA,OAAS,CACvB,OAAQ,IACR,yBAA0B,MACxBW,EAAQgG,eAAiB,MAE7BlB,EAAOmB,WAAa,WACnB,OAAOjG,EAAQkC,KAEhB,IAAI8C,EAAU3F,EAAAA,QAAAA,OAAS,CACtB,mBAAoB,iBACpB,aAAgB0C,GAAGmE,cACjBlG,EAAQgF,SACX,MAAqB,aAAjBhF,EAAQgC,KApHb,SAAsB8C,EAAQ9E,EAAS+E,EAAOC,GAC7C,OAAOF,EAAOqB,SACbnG,EAAQkC,IACR7C,EAAAA,QAAAA,OAASW,EAAQ6D,gBAAkB,GACnC7D,EAAQoG,MACRpB,GACCO,MAAK,SAASc,GACf,GAAIzB,EAAgByB,EAASnC,SAC5B,GAAI7E,EAAAA,QAAAA,WAAaW,EAAQqC,SAAU,CAClC,IAAIiE,EAAejH,EAAAA,QAAAA,OAASW,EAAQ6D,eAChC0C,EAAU5C,EAAoB0C,EAASG,KAAMF,GAC7CtG,EAAQoG,MAAQ,GAEnBG,EAAQE,QAGTzG,EAAQqC,QAAQkE,SAGPlH,EAAAA,QAAAA,WAAaW,EAAQJ,QAC/BI,EAAQJ,MAAMyG,MAiGRK,CAAa5B,EAAQ9E,EAAS+E,EAAOC,GACjB,cAAjBhF,EAAQgC,KACX6C,EAAcC,EAAQ9E,EAAS+E,EAAOC,GAClB,UAAjBhF,EAAQgC,KA5EpB,SAAmB8C,EAAQ9E,EAAS+E,EAAOC,GAE1C,OAAOF,EAAO6B,QACb3G,EAAQgC,KACRhC,EAAQkC,IACR8C,EACA,MACCO,MAAK,SAAS3B,GACVgB,EAAgBhB,EAAOM,QAO5BW,EAAcC,EAAQ9E,EAAS+E,EAAOC,GANjC3F,EAAAA,QAAAA,WAAaW,EAAQJ,QACxBI,EAAQJ,MAAMgE,MAmETgD,CAAU9B,EAAQ9E,EAAS+E,EAAOC,GA1D3C,SAAoBF,EAAQ9E,EAAS+E,EAAOC,GAE3C,OADAA,EAAQ,gBAAkB,mBACnBF,EAAO6B,QACb3G,EAAQgC,KACRhC,EAAQkC,IACR8C,EACAhF,EAAQoC,MACPmD,MAAK,SAAS3B,GACf,GAAKgB,EAAgBhB,EAAOM,SAO5B,GAAI7E,EAAAA,QAAAA,WAAaW,EAAQqC,SAAU,CAClC,GAAqB,QAAjBrC,EAAQgC,MAAmC,SAAjBhC,EAAQgC,MAAoC,UAAjBhC,EAAQgC,KAAkB,CAGlF,IAAI6E,EAAejD,EAAO4C,MAAQzB,EAAMS,SACpCsB,EAAiBlD,EAAOmD,IAAIC,kBAAkB,oBAKlD,MAJqB,SAAjBhH,EAAQgC,MAAmB8E,IAC9BD,EAAaxC,GAAKC,EAAoBwC,SAEvC9G,EAAQqC,QAAQwE,GAIjB,GAAsB,MAAlBjD,EAAOM,OAAgB,CAC1B,IAAIoC,EAAejH,EAAAA,QAAAA,OAASW,EAAQ6D,eACpC7D,EAAQqC,QAAQsB,EAAoBC,EAAO4C,KAAMF,SAEjDtG,EAAQqC,QAAQuB,EAAO4C,YAvBpBnH,EAAAA,QAAAA,WAAaW,EAAQJ,QACxBI,EAAQJ,MAAMgE,MAkDTqD,CAAWnC,EAAQ9E,EAAS+E,EAAOC,IC1N3CkC,QDiOsB,SAAAzB,GAAQ,OAAI,SAAC5D,EAAQkD,EAAO/E,GAClD,IAAImH,EAAS,CAAEnF,KAAMqB,EAAUxB,IAAWA,GACtCuF,EAAgBrC,aAAiBU,EAAS4B,WA6B9C,GA3Be,WAAXxF,IAGCkD,EAAMuC,mBAETH,EAAOnF,KAAO,SACJ+C,EAAMwC,QAAWxC,EAAMyC,YAAczC,EAAMyC,WAAWD,UAEhEJ,EAAOnF,KAAO,QAKXhC,EAAQkC,MACZiF,EAAOjF,IAAM7C,EAAAA,QAAAA,OAAS0F,EAAO,QA7O/B,WACC,MAAM,IAAI0C,MAAM,kDA4OwBC,IAIpB,MAAhB1H,EAAQoC,OAAgB2C,GAAqB,WAAXlD,GAAkC,WAAXA,GAAkC,UAAXA,IACnFsF,EAAO/E,KAAOuF,KAAKC,UAAU5H,EAAQkF,OAASH,EAAMS,OAAOxF,KAIxC,aAAhBmH,EAAOnF,OACVmF,EAAOU,aAAc,GAGF,aAAhBV,EAAOnF,MAAuC,cAAhBmF,EAAOnF,KAAsB,CAC9D,IAAI6B,EAAgBkB,EAAMlB,eACrBA,GAAiBkB,EAAMA,QAE3BlB,EAAgBkB,EAAMA,MAAM+C,UAAUjE,eAEnCA,IACCxE,EAAAA,QAAAA,WAAawE,GAChBsD,EAAOtD,cAAgBA,EAAchE,KAAKkF,GAE1CoC,EAAOtD,cAAgBA,GAIzBsD,EAAOtD,cAAgBxE,EAAAA,QAAAA,OAAS8H,EAAOtD,eAAiB,GAAI7D,EAAQ6D,eAEhExE,EAAAA,QAAAA,YAAcW,EAAQoG,SAExBpG,EAAQoG,MADLgB,EACa,EAEA,GAMnB,IAAIxH,EAAQI,EAAQJ,MACpBI,EAAQJ,MAAQ,SAASmH,EAAKgB,EAAYC,GACzChI,EAAQ+H,WAAaA,EACrB/H,EAAQgI,YAAcA,EAClBpI,GACHA,EAAMC,KAAKG,EAAQiI,QAASlB,EAAKgB,EAAYC,IAK/C,IAAIjB,EAAM/G,EAAQ+G,IAAMtB,EAASI,QAAQxG,EAAAA,QAAAA,OAAS8H,EAAQnH,GAAU+E,GAEpE,OADAA,EAAMpD,QAAQ,UAAWoD,EAAOgC,EAAK/G,GAC9B+G,GCtSEG,CAAQzB,KAGlB,mBCVA,EAFejD,OAAO0F,YAAc,GCY9BC,EAAUC,EAAAA,MAAAA,OAAa,CAC5BC,SAAU,CACTC,SAAU,GACVC,YAAa,GACbC,QAAS,GACTC,cAAc,EACdC,eAAe,EACfC,gBAAgB,GAMjBC,WAAY,WAEwB,IAA/B1J,KAAK2J,IAAI,WAAW3H,OACvBhC,KAAK4J,IAAI,gBAAgB,GACgB,IAA/B5J,KAAK2J,IAAI,WAAW3H,QAC9BhC,KAAK4J,IAAI,iBAAiB,GAC1B5J,KAAK4J,IAAI,eAAgB5J,KAAK2J,IAAI,WAAW,KAE7C3J,KAAK4J,IAAI,kBAAkB,MASxBC,EAAoB1B,EAAAA,WAAAA,OAAkB,CAC3CtC,MAAOoD,IAOFa,EAAmBC,EAAAA,KAAAA,OAAY,CAGpCC,iBAAa5J,EAGb6J,UAAW,GAMXP,WAAY,SAAS5I,GACpBd,KAAKgK,YAAclJ,EAAQwH,YAM5B4B,OAAQ,WACP,IAAIC,EAAOnK,KAcX,OAbAmK,EAAK5H,IAAI1B,KAAK,IACdsJ,EAAKF,UAAY,GAEjBE,EAAKH,YAAYI,SAAQ,SAASC,GACjC,IAAIC,EAAO,IAAIC,EAAqB,CACnC1E,MAAOwE,IAERC,EAAKJ,SACLC,EAAK5H,IAAIiI,OAAOF,EAAK/H,KACrB+H,EAAKG,GAAG,oBAAqBN,EAAKO,yBAA0BP,GAC5DA,EAAKF,UAAUU,KAAKL,MAGdH,GASRO,yBAA0B,SAASE,GAClC5K,KAAKiK,UAAUG,SAAQ,SAASS,GAC/BA,EAAKpI,QAAQ,2BAA4BmI,SAStCL,EAAuBR,EAAAA,KAAAA,OAAY,CAGxCe,UAAW,UAGXC,eAAW3K,EAGX4K,YAAQ5K,EAGR6K,kBAAkB,EAElBC,OAAQ,CACP,mBAAoB,wBAGrBC,gBAAiBC,EAAQ,OAMzBC,SAAU,SAASnI,GAClB,OAAOlD,KAAKmL,gBAAgBjI,IAO7BwG,WAAY,SAAS5I,GACpBd,KAAKgL,OAASlK,EAAQ+E,MACtB7F,KAAKyK,GAAG,2BAA4BzK,KAAKsL,yBAA0BtL,OAMpEkK,OAAQ,WAcP,OAbAlK,KAAKuC,IAAI1B,KAAKb,KAAKqL,SAAS,CAC3BhB,QAASrK,KAAKgL,OAAO1E,YAEtBtG,KAAKuL,iBAGLvL,KAAKM,EAAE,cAAckL,iBAAiBxL,KAAKgL,OAAOrB,IAAI,aAGtD3J,KAAKM,EAAE,eAAemL,QAAQ,CAAEC,UAAW,SAE3C1L,KAAKM,EAAE,kBAAkBmL,QAAQ,CAAEC,UAAW,SAEvC1L,MASR2L,qBAAsB,WACrB3L,KAAKiL,kBAAoBjL,KAAKiL,iBAC1BjL,KAAKiL,iBACRjL,KAAKM,EAAE,SAASe,OAEhBrB,KAAKM,EAAE,SAASL,OAEjBD,KAAKyC,QAAQ,oBAAqBzC,KAAKuC,MAQxC+I,yBAA0B,SAASV,GAC9B5K,KAAKuC,IAAIqJ,GAAGhB,KAIhB5K,KAAKiL,kBAAmB,EACxBjL,KAAKM,EAAE,SAASL,WAQZ4L,EAAmB9B,EAAAA,KAAAA,OAAY,CAGpC+B,sBAAkB1L,EAGlB2L,oBAAgB3L,EAGhB4L,sBAAkB5L,EAGlB6L,uBAAmB7L,EAGnB8L,eAAW9L,EAGX+L,YAAa,GAEbjB,OAAQ,CACP,6BAA8B,aAG/BkB,UAAW,CACVC,QAASjB,EAAQ,OACjB1K,MAAO0K,EAAQ,OACfkB,KAAMlB,EAAQ,OACdmB,KAAMnB,EAAQ,QAMfoB,UAAWrM,EAAAA,QAAAA,UAAW,SAASsM,GAC9B,IAAIC,EAAa1M,KAAKM,EAAE,wBAAwBqM,MAK5CD,IAAe1M,KAAKmM,cACvBnM,KAAKyC,QAAQ,SAAUzC,KAAKM,EAAE,wBAAwBqM,OACtD3M,KAAKmM,YAAcO,KAElB,KAMHE,gBAAiB,SAAS1J,GACzB,OAAOlD,KAAKoM,UAAUC,QAAQnJ,IAO/B2J,cAAe,SAAS3J,GACvB,OAAOlD,KAAKoM,UAAU1L,MACrBP,EAAAA,QAAAA,OAAS,CACR2M,iBAAkB3K,EAAE,OAAQ,iCAC1Be,KAQL6J,gBAAiB,SAAS7J,GACzB,OAAOlD,KAAKoM,UAAUE,KACrBnM,EAAAA,QAAAA,OAAS,CACR6M,mBAAoB7K,EAAE,OAAQ,sBAC5Be,KAQL+J,iBAAkB,SAAS/J,GAC1B,OAAOlD,KAAKoM,UAAUG,KACrBpM,EAAAA,QAAAA,OAAS,CACR+M,oBAAqB/K,EAAE,OAAQ,qBAC/BgL,oBAAqBhL,EAAE,OAAQ,uBAC/BiL,oBAAqBjL,EAAE,OAAQ,6BAC7Be,KAQLwG,WAAY,SAAS5I,GACpBd,KAAKc,QAAUA,GAOhBuM,YAAa,SAAS/L,GACrBtB,KAAKkK,SACLlK,KAAKkM,eAAY9L,EACjBJ,KAAKM,EAAE,YAAYO,KAAKb,KAAK4M,gBAAgB,CAC5CU,YAAahM,MAOfiM,UAAW,WACVvN,KAAKkK,SACLlK,KAAKkM,eAAY9L,EACjBJ,KAAKM,EAAE,YAAYO,KAAKb,KAAK6M,kBAQ9BW,aAAc,SAASC,EAAUf,GAChC1M,KAAKkM,UAAYuB,EAASC,SAC1B1N,KAAKkK,OAAO,CACXwD,SAAUD,EAASC,WAGpB,IAAInB,EAAO,IAAIzC,EAAiB,CAC/BxB,WAAYmF,EAASC,WAEtBnB,EAAKrC,SACLlK,KAAKM,EAAE,YAAYO,KAAKb,KAAKiN,iBAAiB,CAC7CS,SAAUD,EAASC,SACnBhB,WAAYA,EACZiB,mBAAoBF,EAASE,mBAC7BC,eAAgB/K,GAAAA,YAAe,kBAC/BgL,cAAehL,GAAAA,cACfiL,mBAAoBjL,GAAAA,YAAe,qCAEpC7C,KAAKM,EAAE,0BAA0BO,KAAK0L,EAAKhK,MAO5C2H,OAAQ,SAAShH,GAChB,IAAI6K,EAAY/N,KAAKM,EAAE,wBAAwBqM,MAM/C,OALA3M,KAAKuC,IAAI1B,KAAKb,KAAK+M,gBAAgB7J,IAGnClD,KAAKM,EAAE,wBAAwBqM,IAAIoB,GACnC/N,KAAKM,EAAE,wBAAwB0N,QACxBhO,QAYHiO,EAAe,SAASnN,GAC7Bd,KAAK0J,WAAW5I,IAGjBmN,EAAarF,UAAY,CAExBrG,SAAKnC,EAGL8N,eAAW9N,EAGX+N,WAAO/N,EAGPgO,sBAAkBhO,EAQlBsJ,WAAY,SAAS5I,GACpBd,KAAKuC,IAAMzB,EAAQuN,GACnBrO,KAAKkO,UAAYpN,EAAQ2B,QAEzBzC,KAAKmO,MAAQ,IAAItC,EAAiB,CACjCwC,GAAIrO,KAAKuC,MAEVvC,KAAKmO,MAAM1D,GAAG,UAAU,SAASiC,GAChC1M,KAAKsO,cAAc5B,KACjB1M,MAEH6C,GAAAA,aAAgB7C,KAAKkO,UAAWlO,KAAKuC,IAAK,WACzCvC,KAAKuO,mBAAkB,IACtBnL,KAAKpD,OAAO,GACdA,KAAKuC,IAAIkI,GAAG,aAAc,WACzBzK,KAAKuO,mBAAkB,IACtBnL,KAAKpD,QAQRuO,kBAAmB,SAASlN,GAC3B,OAAIA,EACIrB,KAAKsO,iBAEZtO,KAAKuC,IAAI1B,KAAK,IACP2N,QAAQC,YASjBC,aAAc,SAAShC,GACtB,IAAI1J,EAAMH,GAAAA,YAAe,0BACzB,OAAO2L,QAAQC,QAAQnO,IAAAA,KAAO0C,EAAK,CAClCL,OAAQ,OACRO,KAAM,CACLyL,OAAQjC,OASX4B,cAAe,SAAS5B,GACvB,IAAIvC,EAAOnK,KAaX,OAXKmK,EAAKiE,mBACTjE,EAAKiE,iBAAmBjE,EAAKuE,aAAahC,IAGvCvM,EAAAA,QAAAA,YAAcuM,IAA8B,KAAfA,EAChCvC,EAAKgE,MAAMd,YAAYlL,EAAE,OAAQ,4BAEjCgI,EAAKgE,MAAMd,YAAYlL,EAAE,OAAQ,uBAAwB,CACxDyM,KAAMlC,KAGDvC,EAAKiE,iBAAiB/H,MAAK,SAASnD,GAE1CA,EAAKwK,SAAW,IAAI7D,EAAkB3G,EAAKwK,UAE3CvD,EAAKgE,MAAMX,aAAatK,EAAMwJ,MAC5B,SAASD,GACXtC,EAAKgE,MAAMZ,YACX9M,QAAQC,MAAM,2CAA4C+L,MACxDpG,MAAK,kBAGA8D,EAAKiE,oBACVS,MAAMpO,QAAQC,MAAM0C,KAAKpD,SAI9B,QCtdM8O,EAASC,SACbC,qBAAqB,QAAQ,GAC7BC,aAAa,aACTC,EAAcH,SAClBC,qBAAqB,QAAQ,GAC7BC,aAAa,yBAEFE,OAAyB/O,IAAX0O,GAAuBA,wRCDlD,GAICM,OCXoBA,GAKpB,0GAAc,SACb3O,QAAQyF,KAAK,iTC2Bf,ICxB4BmJ,EAAQC,EAC/BC,EDuBCC,EAAU,CAEfC,eAAgB,GAChBC,WAAY,GAEZC,uBAAwB,EACxBC,qBAAsB,EACtBC,qBAAsB,EACtBC,0BAA2B,EAC3BC,uBAAwB,EAGxBC,eAAgB,EAShBC,MAAO,SAAS3O,EAAM4O,EAAOnQ,EAAUoQ,GACtCnQ,KAAKoQ,QACJ9O,EACA4O,EACA,QACAV,EAAQa,UACRtQ,EACAoQ,IAUFG,KAAM,SAAShP,EAAM4O,EAAOnQ,EAAUoQ,GACrCnQ,KAAKoQ,QAAQ9O,EAAM4O,EAAO,OAAQV,EAAQa,UAAWtQ,EAAUoQ,IAWhEI,QAAS,SAASjP,EAAM4O,EAAOnQ,EAAUoQ,GACxC,OAAOnQ,KAAKoQ,QACX9O,EACA4O,EACA,SACAV,EAAQC,eACR1P,EACAoQ,IAYFK,mBAAoB,SAASlP,EAAM4O,EAAOO,EAAS1Q,EAAUoQ,GAC5D,OAAOnQ,KAAKoQ,QACX9O,EACA4O,EACA,OACAO,EACA1Q,OACUK,IAAV+P,GAA6BA,IAW/BO,YAAa,SAASpP,EAAM4O,EAAOnQ,EAAUoQ,GAC5C,OAAOnQ,KAAKoQ,QACX9O,EACA4O,EACA,SACAV,EAAQC,eACR1P,EACAoQ,GACA,IAaFQ,OAAQ,SAASrP,EAAM4O,EAAOnQ,EAAUoQ,EAAOS,EAAMC,GACpD,OAAOvQ,IAAAA,KAAON,KAAK8Q,uBAAuBzK,MAAK,SAAS0K,GACvD,IAAIC,EAAa,aAAexB,EAAQQ,eAAiB,WACrDiB,EAAW,IAAMD,EACjBE,EAAOH,EAAMI,WAAW,CAC3BC,YAAaJ,EACbd,MAAOA,EACPE,QAAS9O,EACTwB,KAAM,WAEHuO,EAAQ/Q,GAAAA,CAAE,YACd+Q,EAAMC,KAAK,OAAQT,EAAW,WAAa,QAAQS,KAAK,KAAMN,EAAa,UAAUM,KAAK,cAAeV,GACzG,IAAIW,EAAQjR,GAAAA,CAAE,YAAYgR,KAAK,MAAON,EAAa,UAAU1P,KAAKsP,EAAO,MACzEM,EAAK1G,OAAO+G,GACZL,EAAK1G,OAAO6G,QACEjR,IAAV+P,IACHA,GAAQ,GAET7P,GAAAA,CAAE,QAAQkK,OAAO0G,QAKA9Q,IAAbL,IACHA,EAAWI,EAAAA,QAAAA,KAAOJ,IAGnB,IAAIyR,EAAa,CAAC,CACjBlQ,KAAMa,EAAE,OAAQ,MAChBsP,MAAO,gBACWrR,IAAbL,GAEHA,GAAS,EAAOsR,EAAM1E,OAEvBrM,GAAAA,CAAE2Q,GAAUS,SAAS,WAEpB,CACFpQ,KAAMa,EAAE,OAAQ,OAChBsP,MAAO,gBACWrR,IAAbL,GAEHA,GAAS,EAAMsR,EAAM1E,OAEtBrM,GAAAA,CAAE2Q,GAAUS,SAAS,UAEtBC,eAAe,IAGhBrR,GAAAA,CAAE2Q,GAAUS,SAAS,CACpBE,eAAe,EACfzB,MAAOA,EACPM,QAASe,EACTK,MAAO,gBAEWzR,IAAbL,GAEHA,GAAS,EAAOsR,EAAM1E,UAIzB0E,EAAMrD,QACNwB,EAAQQ,qBAuBV8B,WAAY,SAAS5B,EAAOnQ,EAAUgS,EAAaC,EAAgB7B,EAAOrN,EAAMmP,EAAMnR,GACrF,IAAIqJ,EAAOnK,KAKX,GAHAA,KAAK8R,WAAWI,UAAY,OAC5BlS,KAAK8R,WAAWK,UAAY,OAExBnS,KAAK8R,WAAWzF,QAApB,MAIajM,IAAT0C,IACHA,EAAO9C,KAAK2P,wBAGb,IAAIyC,EAAYjQ,EAAE,OAAQ,oBACtBkQ,EAAUlQ,EAAE,QAAS,cACrBW,IAAS9C,KAAK6P,sBAAwB/M,IAAS9C,KAAK4P,sBAAwB9M,IAAS9C,KAAK8P,4BAC7FsC,EAAYjQ,EAAE,OAAQ,+BAGvBnC,KAAK8R,WAAWzF,SAAU,EAC1BrM,KAAK8R,WAAWQ,YAAeC,EAAAA,SAAeA,EAAAA,QAAAA,WAAyBA,EAAAA,QAAAA,UAAAA,SAAkCA,EAAAA,QAAAA,UAAAA,SAAAA,YAA6C1P,GAAAA,MAAAA,YAEtJ7C,KAAKwS,SAAW,KAChBP,EAAOA,GAAQ,GACfnR,EAAU2F,OAAOC,OAAO,CACvB+L,uBAAuB,GACrB3R,GAEHR,IAAAA,KAAON,KAAK0S,0BAA0BrM,MAAK,SAAS0K,GACnD5G,EAAK2H,WAAWzF,SAAU,EAEtBlC,EAAKwI,aACRxI,EAAKwI,YAAYjB,SAAS,SAGvBM,MAAAA,IACHA,EAAiB,IAEc,iBAApBA,IACXA,EAAiB,CAACA,IAGnB7H,EAAKwI,YAAc5B,EAAMI,WAAW,CACnCC,YAbgB,+BAchBlB,MAAOA,EACP0C,UAAWR,EACXS,QAASR,EACTS,QAAS3Q,EAAE,OAAQ,QACnB4Q,QAAS5Q,EAAE,OAAQ,QACnB6Q,YAAa7Q,EAAE,OAAQ,cACrBe,KAAK,OAAQ+O,GAAM/O,KAAK,cAAe6O,GAAa7O,KAAK,WAAY8O,GAAgB9O,KAAK,wBAAyBpC,EAAQ2R,uBAC/F,mBAApB3R,EAAQ6N,QAClBxE,EAAKwI,YAAYzP,KAAK,SAAUpC,EAAQ6N,aAG3BvO,IAAV+P,IACHA,GAAQ,QAEW/P,IAAhB2R,IACHA,GAAc,GAGf5H,EAAKwI,YAAY5Q,KAAK,uBAAuBkR,SAC7C9I,EAAKwI,YAAY5Q,KAAK,sBAAsBS,YAAY,aAExDlC,GAAAA,CAAE,QAAQkK,OAAOL,EAAKwI,aAEtBxI,EAAK+I,cAAgB5S,GAAAA,CAAE,6BACvB6J,EAAK+I,cAAczI,GAAG,SAAUtK,EAAAA,QAAAA,KAAOgK,EAAKgJ,kBAAmBhJ,IAE/DA,EAAKiJ,mBAEL,IAAIC,EAAYlJ,EAAKwI,YAAY5Q,KAAK,kCAClCe,IAASqH,EAAKwF,wBAA2B7O,EAAQ2R,uBACpDY,EAAUpT,OAEXoT,EAAU5I,GAAG,SAAS,WACrBN,EAAKwI,YAAYjB,SAAS,oBAAoB,WAC7C4B,MAAMC,2BACND,MAAME,iBACNH,EAAU5B,cAGZ4B,EAAU5I,GAAG,QAAQ,WACpBN,EAAKwI,YAAYjB,SAAS,yBAG3B7O,GAAAA,aAAgBwQ,EAAWlJ,EAAKwI,YAAY5Q,KAAK,UAAU,WAC1D0R,EAAOhI,QAAQ,QACfgI,EAAOzF,QACP7D,EAAKwI,YAAYjB,SAAS,oBAAoB,WAC7C4B,MAAMC,2BACND,MAAME,iBACNrJ,EAAKwI,YAAYe,YAElB,IAAIC,EAAUF,EAAO9G,MACjBiH,EAAUD,EAAQE,YAAY,MACjB,IAAbD,IACHA,EAAUD,EAAQ3R,QAEnByR,EAAOK,YAAY,EAAGF,MAEvB,IAAIG,EAAQ5J,EAAKwI,YAAY5Q,KAAK,iBAC9B0R,EAASM,EAAMhS,KAAK,sBACVgS,EAAMhS,KAAK,wBACjB0I,GAAG,SAAS,SAAS6I,GAC5BA,EAAMC,2BACND,EAAME,iBACNO,EAAML,YA0DPK,EAAMtJ,GAAG,UAAU,SAAS6I,GAI3B,GAHAA,EAAMU,kBACNV,EAAME,iBA9BU,WAChB,IAAIS,EAAWR,EAAO9G,MACtB,IACC,GAnBoB,SAAUiE,GAC/B,IAAIsD,EAActD,EAAKuD,OACvB,GAAoB,MAAhBD,GAAuC,OAAhBA,EAE1B,MAAM/R,EAAE,QAAS,oCAAqC,CAACyO,KAAMA,IACvD,GAA2B,IAAvBsD,EAAYlS,OACtB,MAAMG,EAAE,QAAS,8BACX,IAAkC,IAA9B+R,EAAY5O,QAAQ,KAC9B,MAAMnD,EAAE,QAAS,0CACX,GAAO+R,EAAYE,MAAMvR,GAAAA,OAAAA,uBAC/B,MAAMV,EAAE,QAAS,sCAAuC,CAACyO,KAAMA,IAGhE,OAAO,EAMDyD,CAAgBJ,GAEd,IAAI9J,EAAKqI,SAASzQ,MAAK,SAASuS,GACtC,OAAOA,EAAK1D,OAAS5Q,OACnBiU,GACF,MAAM9R,EAAE,QAAS,2BAA4B,CAAEwR,QAASM,QAAY7T,EAAW,CAC9EmU,QAAQ,IAGT,OAAO,GAEP,MAAO7T,GACR+S,EAAOnC,KAAK,QAAS5Q,GACrB+S,EAAOhI,QAAQ,CACdC,UAAW,QACXjJ,QAAS,SACT,UAAa,mBAEdgR,EAAOhI,QAAQ,aACfgI,EAAOhI,QAAQ,QACfgI,EAAO/Q,SAAS,SAEjB,OAAO,EAOH8R,GAAc,CACjB,IAAIC,EAAUhB,EAAO9G,MACrBxC,EAAK2H,WAAWQ,YAAYoC,gBAAgBvK,EAAKwI,YAAYzP,KAAK,QAAU,IAAMuR,GAASE,QAAO,SAAU3P,GAC3GmF,EAAKyK,gBAAgBzK,EAAKwI,YAAYzP,KAAK,QAAU,IAAMuR,MAE5D5R,GAAAA,YACAsH,EAAKwI,YAAYjB,SAAS,sBAC1BvH,EAAKwI,YAAYlB,QACjBgC,EAAO9G,IAAI0F,OAGboB,EAAOoB,UAAS,SAASvB,GACF,KAAlBA,EAAMwB,SAAkC,KAAhBxB,EAAMyB,QACjCzB,EAAMC,2BACND,EAAME,iBACNO,EAAML,aAGRD,EAAOhJ,GAAG,SAAS,SAAS6I,GAC3BG,EAAOhI,QAAQ,WAGhBtB,EAAKwI,YAAYqC,OAAM,WACtB7K,EAAK8K,gBAAkB9K,EAAKwI,YAAY5Q,KAAK,sBAC7CoI,EAAK+K,UAAY/K,EAAKwI,YAAY5Q,KAAK,mBACvCoI,EAAKgL,mBAAqBhL,EAAKwI,YAAY5Q,KAAK,uBAChDoI,EAAKiL,SAAWjL,EAAKwI,YAAY5Q,KAAK,YACtCoI,EAAKiL,SAAS3K,GAAG,QAAS,uBAAwBN,GAAM,SAASmJ,GAChEnJ,EAAKkL,sBAAsB/B,EAAOxQ,MAEnCqH,EAAK+K,UAAUzK,GAAG,QAAS,MAAM,SAAS6I,GACzCnJ,EAAKmL,mBAAmBhC,EAAOhT,GAAAA,CAAEN,MAAO8C,MAEzCqH,EAAK8K,gBAAgBxK,GAAG,QAAS,KAAK,SAAS6I,GAC9C,IAAIiC,EAAMpL,EAAKwI,YAAYzP,KAAK,QAChCiH,EAAK2H,WAAWI,UAAY5R,GAAAA,CAAEgT,EAAMkC,eAAetS,KAAK,QACxDiH,EAAK2H,WAAWK,UAA0C,QAA9BhI,EAAK2H,WAAWK,UAAsB,OAAS,MAC3EhI,EAAKyK,gBAAgBW,MAEtBpL,EAAKyK,gBAAgB3C,MAItB,IAAIwD,EAAiB,SAASC,GAC7B,QAAiBtV,IAAbL,EAAwB,CAC3B,IAAI4V,EACJ,IAAoB,IAAhB5D,EACH4D,EAAW,GACXxL,EAAK+K,UAAUnT,KAAK,kCAAkC1B,MAAK,SAASuV,EAAOC,GAC1EF,EAAShL,KAAKR,EAAKwI,YAAYzP,KAAK,QAAU,IAAM5C,GAAAA,CAAEuV,GAAS3S,KAAK,qBAE/D,CACNyS,EAAWxL,EAAKwI,YAAYzP,KAAK,QACjC,IAAI4S,EAAe3L,EAAK+K,UAAUnT,KAAK,kCAAkCmB,KAAK,aAC1E4S,IACHH,GAAY,IAAMG,GAGpB/V,EAAS4V,EAAUD,GACnBvL,EAAKwI,YAAYjB,SAAS,WAgBxBF,EAAa,GACb1O,IAAS0M,EAAQG,uBACpB6B,EAAW7G,KAAK,CACfrJ,KAAMa,EAAE,OAAQ,UAChBsP,MAhBmB,WACpBgE,EAAejG,EAAQG,yBAgBtBgC,eAAe,IAEN7O,IAAS0M,EAAQO,uBAC3BjP,EAAQ2P,QAAQrG,SAAQ,SAAS2L,GAChCvE,EAAW7G,KAAK,CACfrJ,KAAMyU,EAAOzU,KACbmQ,MAAO,WACNgE,EAAeM,EAAOjT,OAEvB6O,cAAeoE,EAAOpE,oBAIpB7O,IAAS0M,EAAQK,sBAAwB/M,IAAS0M,EAAQM,2BAC7D0B,EAAW7G,KAAK,CACfrJ,KAAMa,EAAE,OAAQ,QAChBsP,MA7BgB,WAClBgE,EAAejG,EAAQK,uBA6BrB8B,eAAe,IAGb7O,IAAS0M,EAAQI,sBAAwB9M,IAAS0M,EAAQM,2BAC7D0B,EAAW7G,KAAK,CACfrJ,KAAMa,EAAE,OAAQ,QAChBsP,MAhCgB,WAClBgE,EAAejG,EAAQI,uBAgCrB+B,eAAe,KAKlBxH,EAAKwI,YAAYjB,SAAS,CACzBE,eAAe,EAEfoE,MAAO,IACPC,OAAQ,IACR9F,MAAOA,EACPM,QAASe,EACT0E,MAAO,CACNzF,QAAS,SAEVoB,MAAO,WACN,IACCvR,GAAAA,CAAEN,MAAM0R,SAAS,WAAWuB,SAC3B,MAAOxG,IAETtC,EAAKwI,YAAc,QAMrB,IACIwD,EADchM,EAAKwI,YAAYyD,QAAQ,cACLrU,KAAK,aACgC,IAAvEoI,EAAKwI,YAAYzP,KAAK,YAAYoC,QAAQ,yBAAkC6E,EAAKwI,YAAYzP,KAAK,yBACrGiT,EAAoBE,KAAK,YAAY,GAErCF,EAAoBE,KAAK,YAAY,MAGrCC,MAAK,SAAStR,EAAQtE,GAGtByJ,EAAK2H,WAAWzF,SAAU,EACX,IAAXrH,GACHiL,MAAM9N,EAAE,OAAQ,8CAA+C,CAAEzB,MAAOA,UAQ5E0P,QAAS,SAASmG,EAASrG,EAAOsG,EAAY/F,EAAS1Q,EAAUoQ,EAAOsG,GACvE,OAAOnW,IAAAA,KAAON,KAAK8Q,uBAAuBzK,MAAK,SAAS0K,GACvD,IAAIC,EAAa,aAAexB,EAAQQ,eAAiB,WACrDiB,EAAW,IAAMD,EACjBE,EAAOH,EAAMI,WAAW,CAC3BC,YAAaJ,EACbd,MAAOA,EACPE,QAASmG,EACTzT,KAAM0T,GACJC,EAAY,CAAEC,eAAgB,IAAO,SAC1BtW,IAAV+P,IACHA,GAAQ,GAET7P,GAAAA,CAAE,QAAQkK,OAAO0G,GACjB,IAAIM,EAAa,GACjB,OAAQf,GACR,KAAKjB,EAAQC,eACZ+B,EAAa,CAAC,CACblQ,KAAMa,EAAE,OAAQ,MAChBsP,MAAO,gBACWrR,IAAbL,GACHA,GAAS,GAEVO,GAAAA,CAAE2Q,GAAUS,SAAS,WAGvB,CACCpQ,KAAMa,EAAE,OAAQ,OAChBsP,MAAO,gBACWrR,IAAbL,GACHA,GAAS,GAEVO,GAAAA,CAAE2Q,GAAUS,SAAS,UAEtBC,eAAe,IAEhB,MACD,KAAKnC,EAAQa,UAOZmB,EAAW,GAAK,CACflQ,KAAMa,EAAE,OAAQ,MAChBsP,MARoB,WACpBnR,GAAAA,CAAE2Q,GAAUS,SAAS,cACJtR,IAAbL,GACHA,KAMD4R,eAAe,GAEhB,MACD,QACyB,WAApB,EAAOlB,IACFA,EAAQ3N,OACV0M,EAAQC,iBACZ+B,EAAa,CAAC,CACblQ,KAAMmP,EAAQkG,QAAUxU,EAAE,OAAQ,MAClCsP,MAAO,gBACWrR,IAAbL,GACHA,GAAS,GAEVO,GAAAA,CAAE2Q,GAAUS,SAAS,WAGtB,CACCpQ,KAAMmP,EAAQF,SAAWpO,EAAE,OAAQ,OACnCsP,MAAO,gBACWrR,IAAbL,GACHA,GAAS,GAEVO,GAAAA,CAAE2Q,GAAUS,SAAS,UAEtBC,eAAe,EACfiF,QAASnG,EAAQoG,kBAQvBvW,GAAAA,CAAE2Q,GAAUS,SAAS,CACpBE,eAAe,EACfkF,cAAe,WAAQ/W,GAAYA,GAAS,IAC5CoQ,MAAOA,EACPM,QAASe,IAEVhC,EAAQQ,oBAEPsG,MAAK,SAAStR,EAAQtE,GAGP,IAAXsE,EACHiL,MAAMC,EAAQ,KAAOqG,GAErBtG,MAAM9N,EAAE,OAAQ,0CAA2C,CAAEzB,MAAOA,SAIxEqW,kBAAkB,EASlBC,WAAY,SAAS9T,EAAM+T,EAAUC,EAAaC,GACjD,IAAIhN,EAAOnK,KACPoX,EAAiB,IAAI9W,IAAAA,UAkErB+W,EAAkB,SAASC,EAAQC,EAAGC,EAAGC,EAAIC,GAChDD,EAAKE,KAAKC,MAAMH,GAChBC,EAAKC,KAAKC,MAAMF,GAUhB,IATA,IAAIG,EAAMP,EAAOQ,WAAW,MAAMC,aAAa,EAAG,EAAGR,EAAGC,GACpDQ,EAAOV,EAAOQ,WAAW,MAAMC,aAAa,EAAG,EAAGN,EAAIC,GACtDxU,EAAO2U,EAAI3U,KACX+U,EAAQD,EAAK9U,KACbgV,EAAUX,EAAIE,EACdU,EAAUX,EAAIE,EACdU,EAAeT,KAAKU,KAAKH,EAAU,GACnCI,EAAeX,KAAKU,KAAKF,EAAU,GAE9BI,EAAI,EAAGA,EAAIb,EAAIa,IACvB,IAAK,IAAIC,EAAI,EAAGA,EAAIf,EAAIe,IAAK,CAU5B,IATA,IAAIC,EAAoB,GAAdD,EAAID,EAAId,GACdiB,EAAS,EACTC,EAAU,EACVC,EAAgB,EAChBC,EAAO,EACPC,EAAO,EACPC,EAAO,EACPC,EAAO,EACPC,GAAYV,EAAI,IAAOJ,EAClBe,EAAKvB,KAAKwB,MAAMZ,EAAIJ,GAAUe,GAAMX,EAAI,GAAKJ,EAASe,IAI9D,IAHA,IAAIE,EAAKzB,KAAK0B,IAAIJ,GAAYC,EAAK,KAAQZ,EACvCgB,GAAYd,EAAI,IAAON,EACvBqB,EAAKH,EAAKA,EACLI,EAAK7B,KAAKwB,MAAMX,EAAIN,GAAUsB,GAAMhB,EAAI,GAAKN,EAASsB,IAAM,CACpE,IAAIC,EAAK9B,KAAK0B,IAAIC,GAAYE,EAAK,KAAQpB,EACvCsB,EAAI/B,KAAKgC,KAAKJ,EAAKE,EAAKA,GACxBC,IAAM,GAAKA,GAAK,IAEnBhB,EAAS,EAAIgB,EAAIA,EAAIA,EAAI,EAAIA,EAAIA,EAAI,GACxB,IAGZV,GAAQN,EAASxV,EAAU,GAF3BuW,EAAK,GAAKD,EAAKN,EAAK3B,KAGpBqB,GAAiBF,EAEbxV,EAAKuW,EAAK,GAAK,MAAOf,EAASA,EAASxV,EAAKuW,EAAK,GAAK,KAC3DZ,GAAQH,EAASxV,EAAKuW,GACtBX,GAAQJ,EAASxV,EAAKuW,EAAK,GAC3BV,GAAQL,EAASxV,EAAKuW,EAAK,GAC3Bd,GAAWD,GAKfT,EAAMQ,GAAMI,EAAOF,EACnBV,EAAMQ,EAAK,GAAKK,EAAOH,EACvBV,EAAMQ,EAAK,GAAKM,EAAOJ,EACvBV,EAAMQ,EAAK,GAAKO,EAAOJ,EAGzBtB,EAAOQ,WAAW,MAAM8B,UAAU,EAAG,EAAGjC,KAAKkC,IAAItC,EAAGE,GAAKE,KAAKkC,IAAIrC,EAAGE,IACrEJ,EAAOtB,MAAQyB,EACfH,EAAOrB,OAASyB,EAChBJ,EAAOQ,WAAW,MAAMgC,aAAa9B,EAAM,EAAG,IAG3C+B,EAAc,SAASC,EAAY/C,EAAUC,GAEhD,IAAI+C,EAAYD,EAAWjY,KAAK,aAAamY,QAAQ1X,YAAY,YAAYE,SAAS,YAClFyX,EAAeF,EAAUlY,KAAK,aAC9BqY,EAAkBH,EAAUlY,KAAK,gBAErCkY,EAAU/W,KAAK,OAAQA,GAEvB+W,EAAUlY,KAAK,aAAaT,KAAK2V,EAASrG,MAC1CuJ,EAAapY,KAAK,SAAST,KAAKuB,GAAAA,KAAAA,cAAsBoU,EAASoD,OAC/DF,EAAapY,KAAK,UAAUT,KAAKuB,GAAAA,KAAAA,WAAmBoU,EAASqD,QAEzDpD,EAAYmD,MAAQnD,EAAYqD,eACnCH,EAAgBrY,KAAK,SAAST,KAAKuB,GAAAA,KAAAA,cAAsBqU,EAAYmD,OACrED,EAAgBrY,KAAK,UAAUT,KAAKuB,GAAAA,KAAAA,WAAmBqU,EAAYqD,gBAEpE,IAAItI,EAAOgF,EAASuD,UAAY,IAAMvD,EAASrG,KAC3C6J,EAAU,CACbnG,KAAMrC,EACNyI,EAAG,GACHC,EAAG,GACHC,EAAG3D,EAAS4D,KACZC,UAAW,GAERC,EAAcC,MAAMC,mBAAmBR,GAE3CM,EAAcA,EAAYG,QAAQ,KAAM,OACxCf,EAAapY,KAAK,SAASoZ,IAAI,CAAE,mBAAoB,QAAUJ,EAAc,OAvJtD,SAASzG,GAChC,IAAI7U,EAAW,IAAIa,IAAAA,UAEfwC,EAAOwR,EAAKxR,MAAQwR,EAAKxR,KAAKtB,MAAM,KAAK+F,QAC7C,GAAIjE,OAAO8X,YAAuB,UAATtY,EAAkB,CAC1C,IAAIuY,EAAS,IAAID,WACjBC,EAAOC,OAAS,SAAS7O,GACxB,IAAI8O,EAAO,IAAIC,KAAK,CAAC/O,EAAEgP,OAAO/W,SAC9BpB,OAAOoY,IAAMpY,OAAOoY,KAAOpY,OAAOqY,UAClC,IAAIC,EAActY,OAAOoY,IAAIG,gBAAgBN,GACzCO,EAAQ,IAAIC,MAChBD,EAAME,IAAMJ,EACZE,EAAMR,OAAS,WACd,IAWgBzD,EAKf6C,EAAOC,EAAON,EAJd/C,EAEAtB,EACAC,EAfGjT,GAWY6U,EAXDiE,EAYdxE,EAASvI,SAASkN,cAAc,UAEhCjG,EAAQ6B,EAAI7B,MACZC,EAAS4B,EAAI5B,OAIbD,EAAQC,GACX0E,EAAI,EACJD,GAAK1E,EAAQC,GAAU,IAEvB0E,GAAK1E,EAASD,GAAS,EACvB0E,EAAI,GAELL,EAAO1C,KAAKuE,IAAIlG,EAAOC,GAGvBqB,EAAOtB,MAAQqE,EACf/C,EAAOrB,OAASoE,EACN/C,EAAOQ,WAAW,MACxBqE,UAAUtE,EAAK6C,EAAGC,EAAGN,EAAMA,EAAM,EAAG,EAAGA,EAAMA,GAGjDhD,EAAgBC,EAAQ+C,EAAMA,EAtBb,OAwBV/C,EAAO8E,UAAU,YAAa,KApClC3c,EAASgP,QAAQzL,KAGnBqY,EAAOgB,kBAAkB/H,QAEzB7U,EAAS6c,SAEV,OAAO7c,EAmIP8c,CAAkBrF,GAAa7Q,MAC9B,SAAS4L,GACRmI,EAAgBrY,KAAK,SAASoZ,IAAI,mBAAoB,OAASlJ,EAAO,QACpE,WACFA,EAAOpP,GAAAA,SAAAA,WAAuBqU,EAAYpU,MAC1CsX,EAAgBrY,KAAK,SAASoZ,IAAI,mBAAoB,OAASlJ,EAAO,QAIxE,IAAIuK,EAAaxC,EAAWjY,KAAK,aAAaC,OAC9CmY,EAAapY,KAAK,kBAAkBuP,KAAK,KAAM,qBAAuBkL,GACtEpC,EAAgBrY,KAAK,kBAAkBuP,KAAK,KAAM,wBAA0BkL,GAE5ExC,EAAWxP,OAAOyP,GAId/C,EAAYqD,aAAetD,EAASqD,MACvCF,EAAgBrY,KAAK,UAAUoZ,IAAI,cAAe,QACxCjE,EAAYqD,aAAetD,EAASqD,OAC9CH,EAAapY,KAAK,UAAUoZ,IAAI,cAAe,QAM5CjE,EAAYmD,MAAQnD,EAAYmD,KAAOpD,EAASoD,KACnDD,EAAgBrY,KAAK,SAASoZ,IAAI,cAAe,QACvCjE,EAAYmD,MAAQnD,EAAYmD,KAAOpD,EAASoD,MAC1DF,EAAapY,KAAK,SAASoZ,IAAI,cAAe,QASvB,aAApBlE,EAASjS,SACZmV,EACEzX,SAAS,YACTX,KAAK,0BACLsU,KAAK,WAAW,GAChBA,KAAK,YAAY,GACnB8D,EAAapY,KAAK,YAChBT,KAAKa,EAAE,OAAQ,gBAOf6O,EAAa,+BACbC,EAAW,IAAMD,EACrB,GAAIhR,KAAK+W,iBAAkB,CAG1B,IAAIiD,EAAa1Z,GAAAA,CAAE2Q,EAAW,eAC9B8I,EAAYC,EAAY/C,EAAUC,GAElC,IAAIuF,EAAQnc,GAAAA,CAAE2Q,EAAW,cAAcjP,OACnCkO,EAAQwM,EAAE,OACb,wBACA,yBACAD,EACA,CAAEA,MAAOA,IAEVnc,GAAAA,CAAE2Q,GAAU0L,SAASC,SAAS,oBAAoBtb,KAAK4O,GAGvD5P,GAAAA,CAAEgD,QAAQb,QAAQ,UAClB2U,EAAe3I,eAGfzO,KAAK+W,kBAAmB,EACxBzW,IAAAA,KAAON,KAAK6c,0BAA0BxW,MAAK,SAAS0K,GACnD,IAAIb,EAAQ/N,EAAE,OAAQ,qBAClB+O,EAAOH,EAAMI,WAAW,CAC3BC,YAAaJ,EACbd,MAAOA,EACPpN,KAAM,aAENga,YAAa3a,EAAE,OAAQ,aACvB4a,iBAAkB5a,EAAE,OAAQ,0BAE5B6a,IAAK7a,EAAE,OAAQ,oCACf8a,KAAM9a,EAAE,OAAQ,wFAIjB,GAFA7B,GAAAA,CAAE,QAAQkK,OAAO0G,GAEb+F,GAAYC,EAAa,CAC5B,IAAI8C,EAAa9I,EAAKnP,KAAK,cAC3BgY,EAAYC,EAAY/C,EAAUC,GAGnC,IAAI1F,EAAa,CAAC,CACjBlQ,KAAMa,EAAE,OAAQ,UAChByU,QAAS,SACTnF,MAAO,gBAC6B,IAAxB0F,EAAW+F,UACrB/F,EAAW+F,SAASha,GAErB5C,GAAAA,CAAE2Q,GAAUS,SAAS,WAGvB,CACCpQ,KAAMa,EAAE,OAAQ,YAChByU,QAAS,WACTnF,MAAO,gBAC+B,IAA1B0F,EAAWgG,YACrBhG,EAAWgG,WAAW7c,GAAAA,CAAE2Q,EAAW,eAEpC3Q,GAAAA,CAAE2Q,GAAUS,SAAS,YAIvBpR,GAAAA,CAAE2Q,GAAUS,SAAS,CACpBsE,MAAO,IACPpE,eAAe,EACfzB,OAAO,EACPM,QAASe,EACT4L,YAAa,KACbvL,MAAO,WACN1H,EAAK4M,kBAAmB,EACxB,IACCzW,GAAAA,CAAEN,MAAM0R,SAAS,WAAWuB,SAC3B,MAAOxG,QAMXnM,GAAAA,CAAE2Q,GAAUkK,IAAI,SAAU,QAE1B,IAAIkC,EAAiBnM,EAAKkF,QAAQ,cAAcrU,KAAK,mBAGrD,SAASub,IACR,IAAIC,EAAerM,EAAKnP,KAAK,gCAAgCC,OAC7Dqb,EAAehH,KAAK,WAA6B,IAAjBkH,GAJjCF,EAAehH,KAAK,YAAY,GAQhC/V,GAAAA,CAAE2Q,GAAUlP,KAAK,gBAAgB0I,GAAG,SAAS,WAC1BnK,GAAAA,CAAE2Q,GAAUlP,KAAK,iDACvBsU,KAAK,UAAW/V,GAAAA,CAAEN,MAAMqW,KAAK,eAE1C/V,GAAAA,CAAE2Q,GAAUlP,KAAK,qBAAqB0I,GAAG,SAAS,WAC/BnK,GAAAA,CAAE2Q,GAAUlP,KAAK,6DACvBsU,KAAK,UAAW/V,GAAAA,CAAEN,MAAMqW,KAAK,eAE1C/V,GAAAA,CAAE2Q,GAAUlP,KAAK,cAAc0I,GAAG,QAAS,yCAAyC,WACnF,IAAI+S,EAAYld,GAAAA,CAAEN,MAAM+B,KAAK,0BAC7Byb,EAAUnH,KAAK,WAAYmH,EAAUnH,KAAK,eAE3C/V,GAAAA,CAAE2Q,GAAUlP,KAAK,cAAc0I,GAAG,QAAS,uFAAuF,WACjI,IAAI+S,EAAYld,GAAAA,CAAEN,MAClBwd,EAAUnH,KAAK,WAAYmH,EAAUnH,KAAK,eAI3C/V,GAAAA,CAAE2Q,GAAUxG,GAAG,QAAS,6BAA6B,WACpD,IAAIgS,EAAQnc,GAAAA,CAAE2Q,GAAUlP,KAAK,yDAAyDC,OAClFya,IAAUnc,GAAAA,CAAE2Q,EAAW,cAAcjP,QACxC1B,GAAAA,CAAE2Q,GAAUlP,KAAK,gBAAgBsU,KAAK,WAAW,GACjD/V,GAAAA,CAAE2Q,GAAUlP,KAAK,yBAAyBT,KAAKa,EAAE,OAAQ,oBAC/Csa,EAAQ,GAClBnc,GAAAA,CAAE2Q,GAAUlP,KAAK,gBAAgBsU,KAAK,WAAW,GACjD/V,GAAAA,CAAE2Q,GAAUlP,KAAK,yBAAyBT,KAAKa,EAAE,OAAQ,qBAAsB,CAAEsa,MAAOA,OAExFnc,GAAAA,CAAE2Q,GAAUlP,KAAK,gBAAgBsU,KAAK,WAAW,GACjD/V,GAAAA,CAAE2Q,GAAUlP,KAAK,yBAAyBT,KAAK,KAEhDgc,OAEDhd,GAAAA,CAAE2Q,GAAUxG,GAAG,QAAS,+BAA+B,WACtD,IAAIgS,EAAQnc,GAAAA,CAAE2Q,GAAUlP,KAAK,sDAAsDC,OAC/Eya,IAAUnc,GAAAA,CAAE2Q,EAAW,cAAcjP,QACxC1B,GAAAA,CAAE2Q,GAAUlP,KAAK,qBAAqBsU,KAAK,WAAW,GACtD/V,GAAAA,CAAE2Q,GAAUlP,KAAK,8BAA8BT,KAAKa,EAAE,OAAQ,oBACpDsa,EAAQ,GAClBnc,GAAAA,CAAE2Q,GAAUlP,KAAK,qBAAqBsU,KAAK,WAAW,GACtD/V,GAAAA,CAAE2Q,GAAUlP,KAAK,8BACfT,KAAKa,EAAE,OAAQ,qBAAsB,CAAEsa,MAAOA,OAEhDnc,GAAAA,CAAE2Q,GAAUlP,KAAK,qBAAqBsU,KAAK,WAAW,GACtD/V,GAAAA,CAAE2Q,GAAUlP,KAAK,8BAA8BT,KAAK,KAErDgc,OAGDlG,EAAe3I,aAEd6H,MAAK,WACLc,EAAekF,SACfrM,MAAM9N,EAAE,OAAQ,0CAInB,OAAOiV,EAAeqG,WAGvBrK,iBAAkB,WACjB,IAAIjJ,EAAOnK,KACXM,IAAAA,IAAMuC,GAAAA,YAAe,oCAAoC,SAASsE,GACjEgD,EAAK+I,cAAcvJ,IAAI,GAAG+T,QAAUvW,EAASwW,SAC7CxT,EAAK+I,cAAc0K,KAAK,uBACtBpb,YAAY,6CACZE,SAASyE,EAASwW,SAAW,uBAAyB,wBACxDrd,GAAAA,CAAE,mBAAmBud,YAAY,YAAa1W,EAASwW,cAGzDxK,kBAAmB,WAClB,IAAI9R,EAAOrB,KAAKkT,cAActH,GAAG,YAE7B/I,GAAAA,aACHvC,IAAAA,KAAOuC,GAAAA,YAAe,mCAAoC,CACzDxB,KAAMA,IAGRrB,KAAKkT,cAAc0K,KAAK,uBACtBpb,YAAY,6CACZE,SAASrB,EAAO,uBAAyB,wBAC3Cf,GAAAA,CAAE,mBAAmBud,YAAY,YAAaxc,IAE/CqR,uBAAwB,WACvB,IAAIoL,EAAQxd,IAAAA,WACZ,GAAKN,KAAK+d,oBAWTD,EAAMrP,QAAQzO,KAAK+d,yBAXW,CAC9B,IAAI5T,EAAOnK,KACXM,IAAAA,IAAMuC,GAAAA,SAAY,OAAQ,YAAa,oBAAoB,SAASmb,GACnE7T,EAAK4T,oBAAsBzd,GAAAA,CAAE0d,GAC7B7T,EAAK8T,UAAY9T,EAAK4T,oBAAoBhc,KAAK,kCAAkCmc,SACjFJ,EAAMrP,QAAQtE,EAAK4T,wBAElBzH,MAAK,SAAS6H,EAAOtV,EAAYC,GACjCgV,EAAMxB,OAAO6B,EAAMnZ,OAAQ8D,MAK9B,OAAOgV,EAAML,WAEd3M,oBAAqB,WACpB,IAAIgN,EAAQxd,IAAAA,WACZ,GAAKN,KAAKoe,iBAUTN,EAAMrP,QAAQzO,KAAKoe,sBAVQ,CAC3B,IAAIjU,EAAOnK,KACXM,IAAAA,IAAMuC,GAAAA,SAAY,OAAQ,YAAa,iBAAiB,SAASmb,GAChE7T,EAAKiU,iBAAmB9d,GAAAA,CAAE0d,GAC1BF,EAAMrP,QAAQtE,EAAKiU,qBAElB9H,MAAK,SAAS6H,EAAOtV,EAAYC,GACjCgV,EAAMxB,OAAO6B,EAAMnZ,OAAQ8D,MAK9B,OAAOgV,EAAML,WAEdZ,uBAAwB,WACvB,IAAIiB,EAAQxd,IAAAA,WACZ,GAAKN,KAAKqe,oBAUTP,EAAMrP,QAAQzO,KAAKqe,yBAVW,CAC9B,IAAIlU,EAAOnK,KACXM,IAAAA,IAAMuC,GAAAA,SAAY,QAAS,YAAa,oBAAoB,SAASmb,GACpE7T,EAAKkU,oBAAsB/d,GAAAA,CAAE0d,GAC7BF,EAAMrP,QAAQtE,EAAKkU,wBAElB/H,MAAK,WACLwH,EAAMxB,YAKT,OAAOwB,EAAML,WAEda,aAAc,SAAS/I,EAAKgJ,GAK3B,MAJ0B,iBAAdA,IACXA,EAAW,CAACA,IAGNje,IAAAA,QACNuC,GAAAA,SAAY,QAAS,OAAQ,YAC7B,CACC0S,IAAKA,EACLiJ,UAAW/V,KAAKC,UAAU6V,MAQ7B3J,gBAAiB,SAASW,GACzB,IAAIpL,EAAOnK,KACXA,KAAKkV,UAAUuJ,QACfze,KAAK2S,YAAY5Q,KAAK,iBAAiB9B,OACvCD,KAAKmV,mBAAmBzS,SAAS,gBACjC1C,KAAK2S,YAAYzP,KAAK,OAAQqS,GAC9B,IAAI5G,EAAS3O,KAAK2S,YAAYzP,KAAK,YAC/Bwb,EAAiB1e,KAAK2S,YAAYzP,KAAK,UACnB,iBAAZyL,IACXA,EAAS,CAACA,IAEXxE,EAAK8K,gBAAgBlT,KAAK,mBAAmBW,SAAS,UAAUF,YAAY,mBAAmBA,YAAY,mBAC3G2H,EAAK8K,gBAAgBlT,KAAK,cAAgBoI,EAAK2H,WAAWI,UAAY,qBAAqB1P,YAAY,UACrE,QAA9B2H,EAAK2H,WAAWK,UACnBhI,EAAK8K,gBAAgBlT,KAAK,cAAgBoI,EAAK2H,WAAWI,UAAY,qBAAqBxP,SAAS,mBAEpGyH,EAAK8K,gBAAgBlT,KAAK,cAAgBoI,EAAK2H,WAAWI,UAAY,qBAAqBxP,SAAS,mBAErGyH,EAAK2H,WAAWQ,YAAYqM,kBAAkBpJ,GAAKlP,MAAK,SAASrB,EAAQ4Z,GACxEzU,EAAKqI,SAAWoM,EACZjQ,GAAUA,EAAO3M,OAAS,IAA8B,IAAzB2M,EAAOrJ,QAAQ,OACjDsZ,EAAQA,EAAMjQ,QAAO,SAAS2F,GAC7B,MAAqB,QAAdA,EAAKxR,OAAqD,IAAnC6L,EAAOrJ,QAAQgP,EAAKuK,cAIhDH,IACHE,EAAQA,EAAMjQ,OAAO+P,IAKtB,IAAMI,EAAkB/P,SAASgQ,eAAe,mBACT,OAApBD,GAAsD,MAA1BA,EAAgBhb,QAE9D8a,EAAQA,EAAMjQ,QAAO,SAAS2F,GAC7B,OAAQA,EAAK1D,KAAKoO,WAAW,SAI/B,IAAIC,EAAc,CACjBrO,KAAM,SAASsO,EAAWC,GACzB,MAAuB,QAAnBD,EAAUpc,MAAqC,QAAnBqc,EAAUrc,MACjC,EAEc,QAAnBoc,EAAUpc,MAAqC,QAAnBqc,EAAUrc,KAClC,EAEDD,GAAAA,KAAAA,mBAA2Bqc,EAAUtO,KAAMuO,EAAUvO,OAE7DyJ,KAAM,SAAS6E,EAAWC,GACzB,OAAOD,EAAU7E,KAAO8E,EAAU9E,MAEnCC,MAAO,SAAS4E,EAAWC,GAC1B,OAAOD,EAAU5E,MAAQ6E,EAAU7E,QAGjC8E,EAAaH,EAAY9U,EAAK2H,WAAWI,YAAc+M,EAAYrO,KACvEgO,EAAQA,EAAMS,MAAK,SAASC,EAAOC,GAClC,IAAIC,EAAa,SAASC,GACzB,OAAOA,EAASC,MAAQD,EAASC,KAAKpa,QAAQzC,GAAAA,eAAoB,GAGnE,OAAI2c,EAAWF,KAAWE,EAAWD,IAC5B,GACGC,EAAWF,IAAUE,EAAWD,GACpC,EAG6B,QAA9BpV,EAAK2H,WAAWK,UAAsBiN,EAAWE,EAAOC,IAAUH,EAAWE,EAAOC,MAG5FpV,EAAKwV,YAEgB,IAAjBf,EAAM5c,QACTmI,EAAKwI,YAAY5Q,KAAK,iBAAiBV,OACvC8I,EAAK8K,gBAAgBhV,SAErBkK,EAAKwI,YAAY5Q,KAAK,iBAAiB9B,OACvCkK,EAAK8K,gBAAgB5T,QAGtB8I,EAAK+K,UAAUuJ,QAEfne,IAAAA,KAAOse,GAAO,SAASgB,EAAKC,GAE3B,IAAIC,EAAYC,EAWhB,GAZAF,EAAMG,KAAOnd,GAAAA,SAAAA,WAAuBgd,EAAMhB,eAEd,IAAhBgB,EAAMxF,MAAyBwF,EAAMxF,MAAQ,GACxDyF,EAAajd,GAAAA,KAAAA,cAAsBod,SAASJ,EAAMxF,KAAM,KAAK,GAC7D0F,EAAYpI,KAAKC,MAAM,IAAMD,KAAKuI,IAAKL,EAAMxF,KAAN,QAA6B,MAEpEyF,EAAa3d,EAAE,QAAS,WACxB4d,EAAY,IAKTF,EAAMjP,KAAK5O,QAAU,GAExB,IAAIR,EAAQmW,KAAKuE,IAAIvE,KAAKwB,MAAM0G,EAAMjP,KAAK5O,OAAS,GAAI,IACpDme,EAAYN,EAAMjP,KAAKrL,OAAO,EAAGsa,EAAMjP,KAAK5O,OAASR,GACrD4e,EAAYP,EAAMjP,KAAKrL,OAAOsa,EAAMjP,KAAK5O,OAASR,QAElD2e,EAAYN,EAAMjP,KAClBwP,EAAY,GAGjB,IAAIlgB,EAAOiK,EAAK8T,UAAU9M,WAAW,CACpCrO,KAAM+c,EAAM/c,KACZyS,IAAKA,EACLtB,SAAU4L,EAAMjP,KAChBuP,UAAWA,EACXC,UAAWA,EACXC,KAAMxd,GAAAA,KAAAA,qBAA6Bgd,EAAMvF,OACzCD,KAAMyF,EACNC,UAAWA,EACXC,KAAMH,EAAMG,OAEb,GAAmB,SAAfH,EAAM/c,KAAiB,CAC1B,IAAI2X,EAAU,CACbnG,KAAMiB,EAAM,IAAMsK,EAAMjP,KACxB8J,EAAG,IACHC,EAAG,KAEA9C,EAAM,IAAIkE,MACVuE,EAAazd,GAAAA,YAAe,sBAAwBvC,IAAAA,MAAQma,GAChE5C,EAAIyD,OAAS,WACRzD,EAAI7B,MAAQ,GACf9V,EAAK6B,KAAK,eAAeuP,KAAK,QAAS,wBAA0BgP,EAAa,MAGhFzI,EAAImE,IAAMsE,EAEXnW,EAAK+K,UAAU1K,OAAOtK,MAGvBiK,EAAKgL,mBAAmB3S,YAAY,oBAMtCmd,UAAW,WACV,IAAIY,EAAYvgB,KAAKoV,SAASrT,KAAK,sBAAsBmc,SACzDle,KAAKoV,SAASqJ,QACd,IAAItU,EAAOnK,KAEXmK,EAAKiL,SAAS5K,OAAO+V,GAGrB,IAAItO,EAAOjS,KAAK2S,YAAYzP,KAAK,QAC7Bsd,EAAYlgB,GAAAA,CAAE,6CAA6CoC,SAAS,SACxE,GAAIuP,EAAM,CACT,IAAIwO,EAAQxO,EAAKzQ,MAAM,KACvBlB,IAAAA,KAAOmgB,GAAO,SAAS7K,EAAOL,GAE7B,GAAY,MADZA,EAAMkL,EAAMhb,OAEX,OAAO,EAER0E,EAAKiL,SAASsL,QAAQF,EAAUrP,WAAW,CAC1CoE,IAAKkL,EAAMhf,KAAK,KAAO,IAAM8T,EAC7B3E,KAAM2E,QAKTiL,EAAUrP,WAAW,CACpBoE,IAAK,GACL3E,KAAM,IACJ,CAAE8F,eAAgB,OAAQiK,UAAU3gB,KAAKoV,WAM7CC,sBAAuB,SAAS/B,EAAOxQ,GACtC,IAAIqH,EAAOmJ,EAAMpQ,KACbqS,EAAMjV,GAAAA,CAAEgT,EAAMmI,QAAQrF,QAAQ,UAAUlT,KAAK,OACjDiH,EAAKyK,gBAAgBW,GACrB,IAAIqL,EAAetN,EAAMmI,OAAQrF,QAAQ,cACrCD,EAAsB7V,GAAAA,CAAE,WAAYsgB,GACxC5gB,KAAK6gB,mBAAmB/d,EAAMyS,EAAI/T,MAAM,QAAQiE,QAC2B,IAAvEzF,KAAK2S,YAAYzP,KAAK,YAAYoC,QAAQ,yBAAkCtF,KAAK2S,YAAYzP,KAAK,yBACrGiT,EAAoBE,KAAK,YAAY,GAErCF,EAAoBE,KAAK,YAAY,IAMvCf,mBAAoB,SAAShC,EAAOwN,EAAUhe,GAC7C,IACIqT,EADcnW,KAAK2S,YAAYyD,QAAQ,cACLrU,KAAK,YACb,SAA1B+e,EAAS5d,KAAK,UAC4B,IAAzClD,KAAK2S,YAAYzP,KAAK,gBAA4BoQ,EAAMyN,SAC3D/gB,KAAKkV,UAAUnT,KAAK,gCAAgCS,YAAY,+BAEjEse,EAASjD,YAAY,+BACrB1H,EAAoBE,KAAK,YAAY,IACD,QAA1ByK,EAAS5d,KAAK,UACxBlD,KAAK4U,gBAAgB5U,KAAK2S,YAAYzP,KAAK,QAAU,IAAM4d,EAAS5d,KAAK,cACzElD,KAAK6gB,mBAAmB/d,EAAMge,EAAS5d,KAAK,eAC+B,IAAvElD,KAAK2S,YAAYzP,KAAK,YAAYoC,QAAQ,yBAAkCtF,KAAK2S,YAAYzP,KAAK,yBACrGiT,EAAoBE,KAAK,YAAY,GAErCF,EAAoBE,KAAK,YAAY,KAWxCwK,mBAAoB,SAAS/d,EAAMyS,GAClC,IAAIyL,EAAmB,KAARzL,EAAapT,EAAE,OAAQ,QAAUA,EAAE,OAAQ,mBAAoB,CAAE8e,OAAQ1L,IACpF2L,EAAmB,KAAR3L,EAAapT,EAAE,OAAQ,QAAUA,EAAE,OAAQ,mBAAoB,CAAE8e,OAAQ1L,IACpF9E,EAAUnQ,GAAAA,CAAE,+BAChB,OAAQwC,GACP,KAAK9C,KAAK2P,uBAEV,KAAK3P,KAAK+P,uBACT,MACD,KAAK/P,KAAK6P,qBACTY,EAAQnP,KAAK0f,GACb,MACD,KAAKhhB,KAAK4P,qBACTa,EAAQnP,KAAK4f,GACb,MACD,KAAKlhB,KAAK8P,0BACTW,EAAQ0Q,GAAG,GAAG7f,KAAK0f,GACnBvQ,EAAQ0Q,GAAG,GAAG7f,KAAK4f,MAMvB,IChyCaE,GApBe/R,EAeWN,SAfHO,EAeaA,EAAAA,KAd5CC,EAAQF,EAAOL,qBAAqB,QAAQ,GAAGC,aAAa,qBAEzD,CACNmS,SAAU,kBAAM7R,GAChB8R,SAAU,SAAAC,GAGThS,EAAK,oBAAqB,CACzBC,MAHDA,EAAQ+R,OAcgCF,SCXrCG,GAAgB,SAAhBA,EAAyBvF,EAAK9Y,GACnC,IACI0N,EACA4Q,EAFAC,EAAU,GAMd,GAHAzhB,KAAK0hB,kBAAoB,GACzB1hB,KAAK2hB,QAAS,EACd3hB,KAAK4hB,UAAY,GACb1e,EACH,IAAK0N,KAAQ1N,EACZue,GAAW7Q,EAAO,IAAMiR,mBAAmB3e,EAAK0N,IAAS,IAI3D,GADA6Q,GAAW,gBAAkBI,mBAAmBT,KAC3CphB,KAAK8hB,aAAsC,oBAAhBC,YAWzB,CACN,IAAIC,EAAW,yBAA2BT,EAAcU,YACxDV,EAAcW,gBAAgBX,EAAcU,aAAejiB,KAC3DA,KAAKmiB,OAAS7hB,GAAAA,CAAE,qBAChBN,KAAKmiB,OAAO7Q,KAAK,KAAM0Q,GACvBhiB,KAAKmiB,OAAOliB,OAEZuhB,EAAW,KACe,IAAtBxF,EAAI1W,QAAQ,OACfkc,EAAW,KAEZxhB,KAAKmiB,OAAO7Q,KAAK,MAAO0K,EAAMwF,EAAW,6BAA+BD,EAAcU,YAAc,IAAMR,GAC1GnhB,GAAAA,CAAE,QAAQkK,OAAOxK,KAAKmiB,QACtBniB,KAAK8hB,aAAc,EACnBP,EAAcU,mBAxBdT,EAAW,KACe,IAAtBxF,EAAI1W,QAAQ,OACfkc,EAAW,KAEZxhB,KAAKoiB,OAAS,IAAIL,YAAY/F,EAAMwF,EAAWC,GAC/CzhB,KAAKoiB,OAAOC,UAAY,SAAS5V,GAChC,IAAK,IAAI+L,EAAI,EAAGA,EAAIxY,KAAK0hB,kBAAkB1f,OAAQwW,IAClDxY,KAAK0hB,kBAAkBlJ,GAAG/P,KAAK6Z,MAAM7V,EAAEvJ,QAEvCE,KAAKpD,MAkBRA,KAAKuiB,OAAO,eAAgB,SAASrf,GACvB,UAATA,GACHlD,KAAK6R,SAELzO,KAAKpD,QAERuhB,GAAcW,gBAAkB,GAChCX,GAAcU,YAAc,EAC5BV,GAAciB,iBAAmB,SAASrd,EAAIrC,EAAMI,GACnDqe,GAAcW,gBAAgB/c,GAAIqd,iBAAiB1f,EAAMI,IAE1Dqe,GAAc3Y,UAAY,CACzB8Y,kBAAmB,GACnBS,OAAQ,KACRP,UAAW,GACXE,aAAa,EAWbU,iBAAkB,SAAS1f,EAAMI,GAChC,IAAIsV,EAEJ,IAAIxY,KAAK2hB,OAGT,GAAI7e,GACH,QAAmC,IAAxB9C,KAAK4hB,UAAUa,KACzB,IAAKjK,EAAI,EAAGA,EAAIxY,KAAK4hB,UAAU9e,GAAMd,OAAQwW,IAC5CxY,KAAK4hB,UAAU9e,GAAM0V,GAAGtV,QAI1B,IAAKsV,EAAI,EAAGA,EAAIxY,KAAK0hB,kBAAkB1f,OAAQwW,IAC9CxY,KAAK0hB,kBAAkBlJ,GAAGtV,IAI7Bwf,WAAY,EAOZH,OAAQ,SAASzf,EAAM/C,GAClBA,GAAYA,EAASY,OAEpBmC,EACC9C,KAAK8hB,aACH9hB,KAAK4hB,UAAU9e,KACnB9C,KAAK4hB,UAAU9e,GAAQ,IAExB9C,KAAK4hB,UAAU9e,GAAM6H,KAAK5K,IAE1BC,KAAKoiB,OAAOO,iBAAiB7f,GAAM,SAAS2J,QACrB,IAAXA,EAAEvJ,KACZnD,EAAS0I,KAAK6Z,MAAM7V,EAAEvJ,OAEtBnD,EAAS,OAER,GAGJC,KAAK0hB,kBAAkB/W,KAAK5K,KAO/B8R,MAAO,WACN7R,KAAK2hB,QAAS,OACa,IAAhB3hB,KAAKoiB,QACfpiB,KAAKoiB,OAAOvQ,UAKf,sBCxIW+Q,GAAc,KAqEZC,GAAY,SAASC,GACjC,GAAIF,GAAa,CAChB,IAAMG,EAAWH,GACjBA,GAAYngB,QAAQ,IAAInC,IAAAA,OAAQ,eAChCsiB,GAAYI,QC/EW,ID+EQ,WAC9BD,EAAStgB,QAAQ,IAAInC,IAAAA,OAAQ,cACzBwiB,GACHA,EAASG,MAAMjjB,KAAMkjB,cAMxB5iB,GAAAA,CAAE,eAAegR,KAAK,iBAAiB,GAEvChR,GAAAA,CAAE,eAAekC,YAAY,cAC7BogB,GAAc,ME5FTO,KAAY7f,OAAO8f,wGCCzB9f,OAAO+f,+BAAiC/f,OAAO+f,gCAAkC,GACjF/f,OAAOggB,mCAAqChgB,OAAOggB,oCAAsC,GAOzF,IA2CaC,GAAqB,SAAAC,GACjC,YAAwDpjB,IAAjDkD,OAAO+f,+BAA+BG,SACYpjB,IAArDkD,OAAOggB,mCAAmCE,IAOlCC,GAAqB,SAAAD,GACjC,MAAO,CACNE,aAAcpgB,OAAO+f,+BAA+BG,IAAU,GAC9DG,eAAgBrgB,OAAOggB,mCAAmCE,8OCpC5D,IAAMI,GAAO,CAUZC,KAVY,SAUPC,EAAS/jB,GAEb,GAAIwjB,GAAmBO,IAA+B,OAAnBjhB,GAAAA,YAAyB,CAC3D,IAAMpD,EAAWa,IAAAA,WACXmd,EAAUhe,EAASge,UAGzB,OAFAA,EAAQpX,KAAKtG,GACbN,EAASgP,UACFgP,EAGR,IAAMtT,EAAOnK,KACPgD,GAAM+gB,EAAAA,EAAAA,kBAAiBD,EAAS,OAAQjhB,GAAAA,YAAiB,SAG/D,OAAOvC,IAAAA,IAAM0C,GACXqD,MACA,SAAS3B,GACJA,EAAOgf,cACVvZ,EAAK6Z,SAASF,EAASpf,EAAOgf,aAAchf,EAAOuf,eAGrD5d,KAAKtG,IASRikB,SAxCY,SAwCHF,EAASI,GDpCoB,IAACV,EAAOE,EAAcC,EAArBH,ECqCdM,EDrCqBJ,ECqCZQ,EDrC0BP,ECqClB3jB,KAAKmkB,WDpC1CZ,GAAmBC,GAdV,SAACA,EAAOE,EAAcC,GACpCrgB,OAAO+f,+BAA+BG,GAAS/c,OAAOC,OACrDpD,OAAO+f,+BAA+BG,GACtCE,GAEDpgB,OAAOggB,mCAAmCE,GAASG,EAYlDS,CAAOZ,EAAOE,EAAcC,GA3Bb,SAACH,EAAOE,EAAcC,GACtCrgB,OAAO+f,+BAA+BG,GAASE,EAC/CpgB,OAAOggB,mCAAmCE,GAASG,EAuBlDK,CAASR,EAAOE,EAAcC,ICyC/BU,YDhCwC,SAAAb,UACjClgB,OAAO+f,+BAA+BG,UACtClgB,OAAOggB,mCAAmCE,IC4CjDc,UA7DY,SA6DF5gB,EAAKpC,EAAMijB,EAAM9H,EAAO3b,GACjC,IAIM0jB,EAAa1jB,GAAW,GAC9BX,EAAAA,QAAAA,SAAWqkB,EALY,CACtBjQ,QAAQ,EACRkQ,UAAU,IAKX,IAAMC,EAAcF,EAAWC,SAAWE,KAAAA,SAAqBC,KACzDC,EAAYL,EAAWjQ,OAAS7S,KAAakjB,KAiB/CE,EAAcxjB,EAEZwC,EADS2f,GAAmB/f,GACbggB,aAAapiB,GAKlC,YAJuB,IAAXwC,IACXghB,EAAchhB,GAGK,WAAhB,GAAOygB,SAA+BnkB,IAAVqc,EACxBiI,EApBO,SAASpjB,EAAMijB,EAAM9H,GACnC,OAAOnb,EAAK4Z,QAAQ,MAAOuB,GAAOvB,QAAQ,eACzC,SAAS6J,EAAGC,GACX,IAAMC,EAAIV,EAAKS,GACf,OACQN,EADS,iBAANO,GAA+B,iBAANA,EAChBJ,EAAUI,GAEVF,MAaHG,CAAOJ,EAAaP,EAAM9H,IAEtCiI,EAAYI,IAgBrBK,gBAjHY,SAiHIzhB,EAAK0hB,EAAcC,EAAY5I,EAAO8H,EAAMzjB,GAC3D,IAAMwkB,EAAa,IAAMF,EAAe,OAASC,EAAa,IACxDnB,EAAST,GAAmB/f,GAC5BI,EAAQogB,EAAOR,aAAa4B,GAClC,QAAuB,IAAXxhB,EAAwB,CACnC,IAAMghB,EAAchhB,EACpB,GAAIxD,IAAAA,QAAUwkB,GAAc,CAC3B,IAAMS,EAASrB,EAAOP,eAAelH,GACrC,OAAOzc,KAAKskB,UAAU5gB,EAAKohB,EAAYS,GAAShB,EAAM9H,EAAO3b,IAI/D,OAAc,IAAV2b,EACIzc,KAAKskB,UAAU5gB,EAAK0hB,EAAcb,EAAM9H,EAAO3b,GAE/Cd,KAAKskB,UAAU5gB,EAAK2hB,EAAYd,EAAM9H,EAAO3b,IAWtDqjB,WA3IY,SA2IDqB,GACV,IAAIC,EAAW5iB,GAAAA,cAMf,GALiB,UAAb4iB,IAEHA,EAAW,YAGY,IAAbA,GAAyC,KAAbA,EACtC,OAAmB,IAAXD,EAAgB,EAAI,EAY7B,OATIC,EAASzjB,OAAS,IACrByjB,EAAWA,EAASC,UAAU,EAAGD,EAAS5R,YAAY,OAQ/C4R,GACR,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KAkHL,QACC,OAAO,EAhHR,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,MACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,MACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,MACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACJ,OAAmB,IAAXD,EAAgB,EAAI,EAE7B,IAAK,KACL,IAAK,KACL,IAAK,MACL,IAAK,KACL,IAAK,MACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,MACL,IAAK,MACL,IAAK,KACL,IAAK,KACJ,OAAoB,IAAXA,GAA6B,IAAXA,EAAiB,EAAI,EAEjD,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACJ,OAASA,EAAS,IAAO,GAAOA,EAAS,KAAQ,GAAO,EAAOA,EAAS,IAAM,GAAOA,EAAS,IAAM,IAAQA,EAAS,IAAM,IAAQA,EAAS,KAAO,IAAQ,EAAI,EAEhK,IAAK,KACL,IAAK,KACJ,OAAmB,IAAXA,EAAgB,EAAOA,GAAU,GAAOA,GAAU,EAAM,EAAI,EAErE,IAAK,KACJ,OAAmB,IAAXA,EAAgB,EAAiB,IAAXA,EAAgB,EAAI,EAEnD,IAAK,KACJ,OAASA,EAAS,IAAO,GAAOA,EAAS,KAAQ,GAAO,EAAOA,EAAS,IAAM,IAAQA,EAAS,IAAM,IAAQA,EAAS,KAAO,IAAQ,EAAI,EAE1I,IAAK,KACJ,OAAQA,EAAS,KAAQ,EAAK,EAAMA,EAAS,KAAQ,EAAK,EAAOA,EAAS,KAAQ,GAAOA,EAAS,KAAQ,EAAM,EAAI,EAErH,IAAK,KACJ,OAAQA,EAAS,IAAO,EAAK,EAAI,EAElC,IAAK,KACJ,OAAmB,IAAXA,EAAgB,EAAkB,IAAXA,GAAmBA,EAAS,IAAM,GAAOA,EAAS,IAAM,GAAQ,EAAOA,EAAS,IAAM,IAAQA,EAAS,IAAM,GAAO,EAAI,EAExJ,IAAK,KACJ,OAAmB,IAAXA,EAAgB,EAAOA,EAAS,IAAO,GAAOA,EAAS,KAAQ,GAAO,EAAI,EAEnF,IAAK,KACJ,OAAmB,IAAXA,EAAgB,EAAOA,EAAS,IAAM,GAAOA,EAAS,IAAM,IAAQA,EAAS,IAAM,IAAQA,EAAS,IAAM,IAAQ,EAAI,EAE/H,IAAK,KACJ,OAAmB,IAAXA,EAAgB,EAAiB,IAAXA,EAAgB,EAAkB,IAAXA,GAA6B,KAAXA,EAAkB,EAAI,EAE9F,IAAK,KACJ,OAAmB,IAAXA,EAAgB,EAAkB,IAAXA,GAAmBA,EAAS,IAAM,GAAOA,EAAS,IAAM,GAAQ,EAAI,EAEpG,IAAK,KACJ,OAAmB,IAAXA,EAAgB,EAAiB,IAAXA,EAAgB,EAAiB,IAAXA,EAAgB,EAAOA,EAAS,KAAO,GAAOA,EAAS,KAAO,GAAO,EAAOA,EAAS,KAAO,IAAQA,EAAS,KAAO,GAAO,EAAI,KAQtL,MAgBAG,KAAAA,eAA0B,KAAK,SAASjiB,EAAKpC,GAC5C,OAAOsiB,GAAKU,UAAU5gB,EAAKpC,qBCzU5B,IAMCskB,YANc,SAMFC,GACX7lB,KAAK8lB,YAAYD,EAAU1jB,EAAE,OAAQ,cAStC2jB,YAhBc,SAgBFD,EAAUzV,GACrB9P,GAAAA,CAAEulB,GAAUvkB,KAAK8O,GACf5N,YAAY,WACZA,YAAY,SACZujB,MAAK,GAAM,GACX1kB,QAaH2kB,eAlCc,SAkCCH,EAAU1e,GACxBnH,KAAKimB,eAAeJ,EAAU1e,IAa/B8e,eAhDc,SAgDCJ,EAAU1e,GACA,YAApBA,EAASnC,OACZhF,KAAKkmB,gBAAgBL,EAAU1e,EAASjE,KAAKkN,SAE7CpQ,KAAKmmB,cAAcN,EAAU1e,EAASjE,KAAKkN,UAU7C8V,gBA9Dc,SA8DEL,EAAUzV,GACzB9P,GAAAA,CAAEulB,GAAUvkB,KAAK8O,GACf1N,SAAS,WACTF,YAAY,SACZujB,MAAK,GAAM,GACXK,MAAM,KACNC,QAAQ,KACRhlB,QASH8kB,cA9Ec,SA8EAN,EAAUzV,GACvB9P,GAAAA,CAAEulB,GAAUvkB,KAAK8O,GACf1N,SAAS,SACTF,YAAY,WACZnB,gCCjFJ,IACCtB,SAAU,KAEVumB,aAAc,KAEdC,KALc,WAMbjmB,GAAAA,CAAE,8BAA8BmK,GAAG,QAAStK,EAAAA,QAAAA,KAAOH,KAAKwmB,4BAA6BxmB,OACrFA,KAAKsmB,aAAeG,KAAAA,OAGrBC,6BAVc,WAWb,IAAMC,EAAiB3mB,KAAKsmB,aAAqC,IAArBhjB,OAAOsjB,YAC7CC,EAAiBJ,KAAAA,OAAgBE,EAAwC,IAAtBrjB,OAAOwjB,cAGhE,OAAQxjB,OAAOyjB,mCAAqCF,EAAiB,MAQtEL,4BAvBc,SAuBczmB,EAAUe,EAASkmB,GAC9ClmB,OAA6B,IAAZA,EAA0BA,EAAU,GACrD,IAAMqI,EAAW,CAChB+G,MAAO/N,EAAE,OAAQ,2BACjBb,KAAMa,EACL,OACA,qDAEDoO,QAASpO,EAAE,OAAQ,WACnBoP,MAAOpP,EAAE,OAAQ,YACjBzB,MAAO,IAGFumB,EAAS9mB,EAAAA,QAAAA,OAASgJ,EAAUrI,GAE5BqJ,EAAOnK,KAETA,KAAK0mB,gCACR7jB,GAAAA,QAAAA,OACCokB,EAAO3lB,KACP2lB,EAAO/W,OACP,SAASxL,EAAQmM,GACZnM,GAAuB,KAAbmM,EACb1G,EAAK+c,iBAAiBrW,EAAUoW,GACtB9mB,EAAAA,QAAAA,WAAa6mB,IACvBA,OAGF,EACAC,EAAO1V,OACP,GACClL,MAAK,WACN,IAAM8gB,EAAU7mB,GAAAA,CAAE,sBAGlB,GAFA6mB,EAAQplB,KAAK,YAAYkR,SACzBkU,EAAQzkB,SAAS,yBACI,KAAjBukB,EAAOvmB,MAAc,CACxB,IAAM0mB,EAAS9mB,GAAAA,CAAE,WAAWoC,SAAS,eAAepB,KAAK2lB,EAAOvmB,OAChEymB,EAAQplB,KAAK,sBAAsByI,OAAO4c,GAE3CD,EAAQplB,KAAK,wBAAwBW,SAAS,SAE9C,IAAM2kB,EAAWF,EAAQplB,KAAK,UAC9BslB,EAASlG,GAAG,GAAGlhB,OACfonB,EAASlG,GAAG,GAAG7f,KAAK2lB,EAAO1W,YAI7BvQ,KAAKD,SAAWA,GAGjBmnB,iBAzEc,SAyEGrW,EAAUoW,GAC1B,IAAM9c,EAAOnK,KAEbM,IAAAA,KAAO,CACN0C,KAAKskB,EAAAA,EAAAA,aAAY,kBACjBpkB,KAAM,CACL2N,SAAAA,GAED/N,KAAM,OACNK,QANM,SAMEgE,GACP7D,OAAOwjB,aAAe3f,EAASogB,UAE3BpnB,EAAAA,QAAAA,WAAagK,EAAKpK,WACrBoK,EAAKpK,YAGPW,MAbM,WAcLumB,EAAOvmB,MAAQyB,EAAE,OAAQ,qCACzBU,GAAAA,qBAAAA,4BAAoDsH,EAAKpK,SAAUknB,QCvG1DO,GAAQlkB,OAAOmkB,QAAU,GCWtC,IAECC,UAAW,GAcXC,WAhBc,SAgBH1f,EAAQjF,EAAKkY,GACvB,IAAI0M,EAOJ,GALCA,EADuB,iBAAZ3f,EACCA,EAEApF,GAAAA,iBAAoBoF,GAG7B3E,OAAOukB,QAAQC,UAAW,CAK7B,GAJA9kB,EAAMA,GAAO+kB,SAASC,SAAW,IAAMJ,EAGrBK,UAAUC,UAAUC,cAAc7iB,QAAQ,YAAc,GACzD2a,SAASgI,UAAUC,UAAU1mB,MAAM,KAAKiE,OAAS,GAEjE,IADA,IACsC2iB,EADhCC,EAAWtZ,SAASuZ,iBAAiB,+DAClC9P,EAAI,EAAG+P,EAAKF,EAASrmB,OAAiBwW,EAAI+P,EAAI/P,KACtD4P,EAAUC,EAAS7P,IAEXtC,MAAMsS,KAAOJ,EAAQlS,MAAMsS,KAEnCJ,EAAQlS,MAAMuS,OAASL,EAAQlS,MAAMuS,OACrCL,EAAQM,gBAAgB,UACxBN,EAAQO,aAAa,SAAU,gBAG7BzN,EACH5X,OAAOukB,QAAQe,aAAa3gB,EAAQ,GAAIjF,GAExCM,OAAOukB,QAAQC,UAAU7f,EAAQ,GAAIjF,QAItCM,OAAOykB,SAASc,KAAO,IAAMjB,EAG7B5nB,KAAK8oB,YAAa,GAapBhB,UAhEc,SAgEJ7f,EAAQjF,GACjBhD,KAAK2nB,WAAW1f,EAAQjF,GAAK,IAc9B4lB,aA/Ec,SA+ED3gB,EAAQjF,GACpBhD,KAAK2nB,WAAW1f,EAAQjF,GAAK,IAQ9B+lB,qBAxFc,SAwFOC,GACpBhpB,KAAK0nB,UAAU/c,KAAKqe,IASrBC,gBAlGc,WAmGb,IAAMJ,EAAOvlB,OAAOykB,SAASc,KACvBK,EAAML,EAAKvjB,QAAQ,KACzB,OAAI4jB,GAAO,EACHL,EAAKtjB,OAAO2jB,EAAM,GAEtBL,EAAK7mB,OAED6mB,EAAKtjB,OAAO,GAEb,IAGR4jB,aA/Gc,SA+GDC,GACZ,OAAOA,EAAMlO,QAAQ,MAAO,MAS7BmO,cAzHc,WA0Hb,IACIphB,EADEmhB,EAAQppB,KAAKipB,kBAQnB,OALIG,IACHnhB,EAASpF,GAAAA,iBAAoB7C,KAAKmpB,aAAaC,MAGhDnhB,EAAS9H,EAAAA,QAAAA,OAAS8H,GAAU,GAAIpF,GAAAA,iBAAoB7C,KAAKmpB,aAAapB,SAASuB,YAC9D,IAGlBC,YArIc,SAqIF9c,GAKX,IAAIxE,EAJJ,GAAIjI,KAAK8oB,WACR9oB,KAAK8oB,YAAa,OAInB,GAAK9oB,KAAK0nB,UAAU1lB,OAApB,CAGAiG,EAAUwE,GAAKA,EAAE+c,MACbrpB,EAAAA,QAAAA,SAAW8H,GACdA,EAASpF,GAAAA,iBAAoBoF,GAClBA,IACXA,EAASjI,KAAKqpB,iBAAmB,IAElC,IAAK,IAAI7Q,EAAI,EAAGA,EAAIxY,KAAK0nB,UAAU1lB,OAAQwW,IAC1CxY,KAAK0nB,UAAUlP,GAAGvQ,MCtJrB,SAASwhB,GAAStnB,GAQjB,IANA,IAIIyY,EAJE8O,EAAK,GACPhP,EAAI,EACJC,GAAK,EACL+B,EAAI,EAGDhC,EAAIvY,EAAEH,QAAQ,CACpB4Y,EAAIzY,EAAEwnB,OAAOjP,GAEb,IAAMkP,GAAOlN,GAAW,MAAN9B,GAAeA,GAAK,KAAOA,GAAK,IAC9CgP,IAAMlN,IAGTgN,IADA/O,GACQ,GACR+B,EAAIkN,GAELF,EAAG/O,IAAMC,EACTF,IAED,OAAOgP,EAQR,QAECG,QAAAA,GAKAC,sBAAAA,EAYAC,iBAnBc,SAmBGC,GAChB,GAAsB,iBAAXA,EACV,OAAO,KAGR,IAAMC,EAAID,EAAO7B,cAAchU,OAC3B+V,EAAQ,KAgBNC,EAAUF,EAAE7V,MAAM,mDACxB,OAAgB,OAAZ+V,EAMI,MALPD,EAAQE,WAAWH,GACdI,SAASH,IAMXC,EAAQ,KACXD,GAxBkB,CAClBlF,EAAG,EACHsF,EAAG,KACHC,GAAI,KACJC,GAAI,QACJZ,EAAG,QACHa,GAAI,WACJC,EAAG,WACHC,GAAI,cACJxoB,EAAG,cACHyoB,GAAI,gBACJC,EAAG,iBAawBV,EAAQ,KAGpCD,EAAQvS,KAAKC,MAAMsS,IATV,OAkBVY,WA/Dc,SA+DHC,EAAWC,GAKrB,YAJuB5qB,IAAnBkD,OAAO2nB,SACVxqB,QAAQyF,KAAK,+FAEd8kB,EAASA,GAAU,MACZvE,IAAAA,CAAOsE,GAAWC,OAAOA,IAOjCE,qBA3Ec,SA2EOH,QACG3qB,IAAnBkD,OAAO2nB,SACVxqB,QAAQyF,KAAK,yGAEd,IAAMilB,EAAO1E,IAAAA,GAAS0E,KAAK1E,IAAAA,CAAOsE,IAClC,OAAII,GAAQ,GAAKA,EAAO,KAChBhpB,EAAE,OAAQ,eAEXskB,IAAAA,CAAOsE,GAAWK,WAQ1BC,kBA3Fc,WA4Fb,GAAIrrB,KAAKsrB,gBACR,OAAOtrB,KAAKsrB,gBAGb,IAAMC,EAAQxc,SAASkN,cAAc,KACrCsP,EAAMrV,MAAMF,MAAQ,OACpBuV,EAAMrV,MAAMD,OAAS,QAErB,IAAMuV,EAAQzc,SAASkN,cAAc,OACrCuP,EAAMtV,MAAMuV,SAAW,WACvBD,EAAMtV,MAAMwV,IAAM,MAClBF,EAAMtV,MAAMyV,KAAO,MACnBH,EAAMtV,MAAM0V,WAAa,SACzBJ,EAAMtV,MAAMF,MAAQ,QACpBwV,EAAMtV,MAAMD,OAAS,QACrBuV,EAAMtV,MAAM2V,SAAW,SACvBL,EAAMM,YAAYP,GAElBxc,SAASzH,KAAKwkB,YAAYN,GAC1B,IAAMO,EAAKR,EAAMS,YACjBR,EAAMtV,MAAM2V,SAAW,SACvB,IAAII,EAAKV,EAAMS,YASf,OARID,IAAOE,IACVA,EAAKT,EAAMU,aAGZnd,SAASzH,KAAK6kB,YAAYX,GAE1BxrB,KAAKsrB,gBAAmBS,EAAKE,EAEtBjsB,KAAKsrB,iBASbc,UAnIc,SAmIJ/L,GAGT,OAAO,IAAIgM,KAAKhM,EAAKiM,cAAejM,EAAKkM,WAAYlM,EAAKmM,YAW3DC,mBAjJc,SAiJK1H,EAAGC,GACrB,IAAItK,EACEgS,EAAKjD,GAAS1E,GACd4H,EAAKlD,GAASzE,GAEpB,IAAKtK,EAAI,EAAGgS,EAAGhS,IAAMiS,EAAGjS,GAAIA,IAC3B,GAAIgS,EAAGhS,KAAOiS,EAAGjS,GAAI,CACpB,IAAMkS,EAAOC,OAAOH,EAAGhS,IAAWoS,EAAOD,OAAOF,EAAGjS,IAGnD,OAAIkS,GAAQF,EAAGhS,IAAMoS,GAAQH,EAAGjS,GACxBkS,EAAOE,EAIPJ,EAAGhS,GAAGqS,cAAcJ,EAAGjS,GAAI7X,GAAAA,eAIrC,OAAO6pB,EAAG1qB,OAAS2qB,EAAG3qB,QASvBgrB,QA7Kc,SA6KNjtB,EAAUktB,IACQ,SAAnBC,KACc,IAAfntB,KACHotB,WAAWD,EAAkBD,GAI/BC,IAUDE,mBA9Lc,SA8LKxc,EAAM9M,GAExB,IADA,IAAMupB,EAAUte,SAASue,OAAO9rB,MAAM,KAC7BgX,EAAI,EAAGA,EAAI6U,EAAQrrB,OAAQwW,IAAK,CACxC,IAAM8U,EAASD,EAAQ7U,GAAGhX,MAAM,KAChC,GAAI8rB,EAAO,GAAGnZ,SAAWvD,GAAQ0c,EAAO,GAAGnZ,SAAWrQ,EACrD,OAAO,EAGT,OAAO,IC3OIypB,GAFAjqB,OAAOkqB,UCAhBC,GAAUnqB,OAAOoqB,YAErB,QAAuB,IAAZD,GAAyB,CAEnC,IAAMvE,IADNuE,GAAU1F,SAASC,UACC1iB,QAAQ,eAE3BmoB,IADY,IAATvE,GACOuE,GAAQloB,OAAO,EAAG2jB,IAElBuE,GAAQloB,OAAO,EAAGkoB,GAAQ5Z,YAAY,MAIlD,ICXmB9K,GDWnB,MEiFA,IAIC4kB,SZhGuB,CAAC,GAAI,QAAS,MAAO,cAAe,OAAQ,YYiGnEC,UZhGwB,GYiGxBC,eZ1F6B,GY2F7BC,kBZhGgC,EYiGhCC,kBZ9FgC,EY+FhCC,gBZnG8B,EYoG9BC,gBZlG8B,EYmG9BC,iBZhG+B,GYiG/BC,kBZnGgC,EYoGhCC,aZhG2B,mBY4G3BC,kBAAmB,SAAA/Z,GAAI,QAAOA,EAAKF,MAAMka,EAAAA,wBAEzCC,U9BrGwB,SAAC7qB,EAAK8qB,EAAQxZ,GAGtC,IAAIvV,EAFJgB,QAAQyF,KAAK,iEAGb,IAAM+L,GAAO8R,EAAAA,EAAAA,kBAAiBrgB,EAAK,KAAM8qB,EAAS,OAUlD,OATK9uB,EAAcuS,GAKd+C,GACHA,KALDvV,EAAWa,IAAAA,WACXA,IAAAA,UAAY2R,GAAM,kBAAMxS,EAASgP,aACjC/O,EAAcuS,GAAQxS,GAMhBC,EAAcuS,I8BwFrBwc,S9B9EuB,SAAC/qB,EAAKwS,GAC7BzV,QAAQyF,KAAK,oEAEb,IAAM+L,GAAO8R,EAAAA,EAAAA,kBAAiBrgB,EAAK,MAAOwS,EAAQ,SACd,IAAhCvW,EAAa2F,QAAQ2M,KACxBtS,EAAagL,KAAKsH,GACdlD,SAAS2f,iBACZ3f,SAAS2f,iBAAiBzc,IAE1BiE,EAAQ5V,GAAAA,CAAE,gDAAkD2R,EAAO,OACnE3R,GAAAA,CAAE,QAAQkK,OAAO0L,M8BqEnB5T,KAAAA,EACAkB,UAAAA,EACAH,UAAAA,EACAsrB,YC5G0B,SAAAC,GAG1B,GAFAnuB,QAAQyF,KAAK,2EAEO,IAAT0oB,QAA8C,IAAfA,EAAKC,MAC9C,KAAM,CACLje,KAAM,mBACNR,QAAS,kCAGX,IAAIvL,EAAQ,CAAEiqB,WAAY,eAAgBC,OAAO,GACjDzuB,IAAAA,OAASuE,EAAO+pB,GAChB,IAAII,EAAW1uB,GAAAA,CAAE,gBACjB,GAAwB,IAApB0uB,EAAShtB,OACZ,KAAM,CACL4O,KAAM,oBACNR,QAAS,2EAGX,IAAI6e,EAAQ3uB,GAAAA,CAAE,sBAMd,GALqB,IAAjB2uB,EAAMjtB,SACT1B,GAAAA,CAAE,QAAQogB,QAAQ,4DAClBuO,EAAQ3uB,GAAAA,CAAE,uBACJoC,SAASssB,EAASE,SAAS,YAAc,WAAa,eAEzDD,EAAMrjB,GAAG,YACZqjB,EAAMhvB,OAAOgT,aACP,CACN,IAAMkc,EAAaH,EAASE,SAAS,YAAc,KAAO,OAC1D5uB,IAAAA,KAAMyjB,EAAAA,EAAAA,kBAAiBlf,EAAMgqB,MAAO,GAAIhqB,EAAMiqB,aAAa,SAAS5rB,GACnE+rB,EAAMpuB,KAAKqC,GAAM8R,OAAM,WAKtB,GAJAia,EAAMvO,QAAQ,sBAAwByO,EAAa,gBAAkBhtB,EAAE,OAAQ,YAAc,8BAA8Bd,OAC3H4tB,EAAMltB,KAAK,UAAUqB,KAAK,SAAS,WAClC6rB,EAAMhc,iBAEqB,IAAjBpO,EAAMuqB,OAAwB,CACxC,IAAIC,EACJ,IAAqB,IAAjBxqB,EAAMuqB,OACTC,EAAa,kBACP,IAA4B,iBAAjBxqB,EAAMuqB,OAGvB,KAAM,CACLxe,KAAM,mBACNR,QAAS,8DAJVif,EAAaxqB,EAAMuqB,OAOhBvqB,EAAMkqB,OACTzuB,IAAAA,UAAY,CAAEyuB,OAAO,IAEtBzuB,IAAAA,WAAYyjB,EAAAA,EAAAA,kBAAiBlf,EAAMgqB,MAAO,KAAMQ,IAC9C/Y,MAAK,SAASgZ,EAAON,EAAUviB,GAC/B,MAAMA,SAGPpL,SACD,UDsDJkuB,aAAAA,EACAhpB,SAAAA,EACA0H,aAAAA,EACAgZ,OAAQqH,EAORnf,YAAAA,EACAqgB,QAAShgB,EACTuS,YAAAA,GAQA0N,enBxI6B,WAC7B,MAAO,CACNC,IAAKvgB,EACLD,YAAAA,ImBsIDygB,YX1I0B,kBAAMxM,IW2IhCyM,KAAAA,GAOAC,2BAA4B5tB,EAC5B6tB,kB5BpI+B,SAAAjoB,IAIZ,IAAfA,EAAI7C,QAAoC,UAAnB6C,EAAIkoB,YAA6C,YAAnBloB,EAAIkoB,aAA4BltB,GAAAA,iBAInF1C,EAAAA,QAAAA,SAAW,CAAC,IAAK,IAAK,IAAK,KAAM0H,EAAI7C,SAAWnC,GAAAA,YAEnDsqB,YAAW,WACV,IAAKtqB,GAAAA,wBAA6BA,GAAAA,cAAkB,CACnD,IAAImtB,EAAQ,EAEN/C,EAAWgD,aAAY,WAC5B/tB,EAAAA,WAAwBwa,EAAE,OAAQ,+CAAgD,gDAFnE,EAE8HsT,IACzIA,GAHW,IAIdE,cAAcjD,GACdpqB,GAAAA,UAEDmtB,MACE,KAIHntB,GAAAA,eAAmB,KAElB,KACsB,IAAfgF,EAAI7C,QAEdmoB,YAAW,WACLtqB,GAAAA,uBAA6BA,GAAAA,eAEjCA,GAAAA,+BAEC,O4BkGJstB,8B5BtF4C,SAAAtoB,GAmBxCA,EAAI8a,mBACP9a,EAAI8a,iBAAiB,QAnBD,WACG,IAAnB9a,EAAIuoB,aAIHvoB,EAAI7C,QAAU,KAAO6C,EAAI7C,OAAS,KAAuB,MAAf6C,EAAI7C,QAKnD1E,GAAAA,CAAEyO,UAAUtM,QAAQ,IAAInC,IAAAA,OAAQ,aAAcuH,OAU9CA,EAAI8a,iBAAiB,SAPA,WAErBriB,GAAAA,CAAEyO,UAAUtM,QAAQ,IAAInC,IAAAA,OAAQ,aAAcuH,Q4B8E/CwoB,gBE1J8B,WAE9B,OADA5vB,QAAQyF,KAAK,sGACNoqB,EAAAA,GAAAA,oBF6JPzN,UAAAA,GACA0N,abvJ2B,SAASC,EAASC,EAASC,EAAQC,GAC9DF,EAAQ/tB,SAAS,QACjB,IAAMkuB,EAAiD,MAA5BJ,EAAQna,KAAK,YAAkD,WAA5Bma,EAAQna,KAAK,WAI3Ema,EAAQ/lB,GAAGmmB,EAAqB,aAAe,yBAAyB,SAAStd,GAEhFA,EAAME,iBAGFF,EAAM3P,KAAqB,UAAd2P,EAAM3P,MAInB8sB,EAAQ7kB,GAAGgX,IACdC,MAEUD,IAGVC,MAGkB,IAAf8N,GACHF,EAAQ9T,SAASja,SAAS,cAI3B8tB,EAAQlf,KAAK,iBAAiB,GAE9Bmf,EAAQI,YCjDe,GDiDQH,GAC/B9N,GAAc6N,QawHfK,SbpEuB,SAACN,EAASC,EAAS3N,GACtC2N,EAAQ7kB,GAAGgX,MAGfC,KACAD,GAAc6N,EAEdA,EAAQhuB,QAAQ,IAAInC,IAAAA,OAAQ,eAC5BmwB,EAAQpvB,OACRovB,EAAQhuB,QAAQ,IAAInC,IAAAA,OAAQ,cAExBH,EAAAA,QAAAA,WAAa2iB,IAChBA,MayDDiO,eb9G6B,SAACP,EAASC,GAEnCA,EAAQ7kB,GAAGgX,KACdC,KAED2N,EAAQQ,IAAI,cAAcxuB,YAAY,cACtCiuB,EAAQjuB,YAAY,SagHpByuB,SAAAA,EAAAA,GAIAC,WAAAA,EAAAA,GAIAC,QAAAA,EAAAA,GAIAC,WAAAA,EAAAA,GAIAC,UAAAA,EAAAA,GAKAC,QGzLsB,kBAAMhuB,OAAOykB,SAASwJ,MH0L5CC,YGhL0B,kBAAMluB,OAAOykB,SAAS0J,UHiLhDC,QGvKsB,kBAAMpuB,OAAOykB,SAAS4J,MHwK5CC,YG5M0B,kBAAMtuB,OAAOykB,SAAS8J,SAASrwB,MAAM,KAAK,IHiNpEswB,mBAAAA,GAAAA,mBACAC,UTuHwB,kCAAMzxB,GAAAA,CAAE,QAAQ4C,KAAK,iBAArB,QAAkC,MStH1D8uB,YT6H0B,kBAAM1xB,GAAAA,CAAE,QAAQ+V,KAAK,SSpH/C4b,gBAAiBrC,GAAAA,KAKjBsC,iBItKoB,SAAAjqB,GACpB,OAAKA,EAGE3H,IAAAA,IAAM2H,GAAQ,SAASnE,EAAOH,GACpC,IAAIsmB,EAAIpI,mBAAmBle,GAI3B,OAHIG,MAAAA,IACHmmB,GAAK,IAAMpI,mBAAmB/d,IAExBmmB,KACLxoB,KAAK,KARA,IJqKR0wB,iBIzNoB,SAAAC,GACpB,IAAIlJ,EACAmJ,EAEA1uB,EADEe,EAAS,GAEf,IAAK0tB,EACJ,OAAO,MAERlJ,EAAMkJ,EAAY9sB,QAAQ,OACf,IACV8sB,EAAcA,EAAY7sB,OAAO2jB,EAAM,IAGxC,IADA,IAAM1jB,EAAQ4sB,EAAYlX,QAAQ,MAAO,OAAO1Z,MAAM,KAC7CgX,EAAI,EAAGA,EAAIhT,EAAMxD,OAAQwW,IAAK,CAEtC,IAAM8Z,EAAO9sB,EAAMgT,IAGlB6Z,GAFDnJ,EAAMoJ,EAAKhtB,QAAQ,OACR,EACG,CACZgtB,EAAK/sB,OAAO,EAAG2jB,GACfoJ,EAAK/sB,OAAO2jB,EAAM,IAIN,CAACoJ,IAECtwB,SAGhB2B,EAAM4uB,mBAAmBF,EAAW,OAMnC3tB,EAAOf,GADJ0uB,EAAWrwB,OAAS,EACTuwB,mBAAmBF,EAAW,IAG9B,MAGhB,OAAO3tB,GJkLP8tB,IAAAA,GACAtwB,aAAAA,EACAuwB,qBAAAA,GACAC,QKvOD,CAKCC,SAAU,GAQV3O,SAbc,SAaL4O,EAAYC,GACpB,IAAIC,EAAU9yB,KAAK2yB,SAASC,GACvBE,IACJA,EAAU9yB,KAAK2yB,SAASC,GAAc,IAEvCE,EAAQnoB,KAAKkoB,IAUdE,WA5Bc,SA4BHH,GACV,OAAO5yB,KAAK2yB,SAASC,IAAe,IAUrCI,OAvCc,SAuCPJ,EAAYK,EAAcnyB,GAEhC,IADA,IAAMgyB,EAAU9yB,KAAK+yB,WAAWH,GACvBpa,EAAI,EAAGA,EAAIsa,EAAQ9wB,OAAQwW,IAC/Bsa,EAAQta,GAAGwa,QACdF,EAAQta,GAAGwa,OAAOC,EAAcnyB,IAYnCod,OAvDc,SAuDP0U,EAAYK,EAAcnyB,GAEhC,IADA,IAAMgyB,EAAU9yB,KAAK+yB,WAAWH,GACvBpa,EAAI,EAAGA,EAAIsa,EAAQ9wB,OAAQwW,IAC/Bsa,EAAQta,GAAG0F,QACd4U,EAAQta,GAAG0F,OAAO+U,EAAcnyB,KL6KnC0mB,MAAAA,GACA0L,KAAAA,GACA3F,MAAAA,GAIA4F,SAAUpP,EAAAA,iBAIVuD,YAAAA,EAAAA,YAIA3d,KDtPkBZ,GCsPTzF,ODtPoB,SAAAsN,GAI7B,IAHA,IAAMwiB,EAAaxiB,EAAKpP,MAAM,KACxB6xB,EAAOD,EAAW3tB,MAEf+S,EAAI,EAAGA,EAAI4a,EAAWpxB,OAAQwW,IAEtC,KADAzP,GAAUA,GAAQqqB,EAAW5a,KAE5B,OAAO,EAGT,OAAOzP,GAAQsqB,KCgPfzpB,IDtOkB,SAAAb,GAAO,OAAI,SAAC6H,EAAM9M,GAIpC,IAHA,IAAMsvB,EAAaxiB,EAAKpP,MAAM,KACxB6xB,EAAOD,EAAW3tB,MAEf+S,EAAI,EAAGA,EAAI4a,EAAWpxB,OAAQwW,IACjCzP,EAAQqqB,EAAW5a,MACvBzP,EAAQqqB,EAAW5a,IAAM,IAE1BzP,EAAUA,EAAQqqB,EAAW5a,IAG9B,OADAzP,EAAQsqB,GAAQvvB,EACTA,GC2NF8F,CAAItG,QAITgwB,YAAaC,EAAAA,WAIbC,UAAAA,EAAAA,UACAC,SMnQuB,SAAAC,GAAepwB,OAAOykB,SAAW2L,GNoQxDC,OM7PqB,WAAQrwB,OAAOykB,SAAS4L,UN8P7C3sB,aAAc4sB,IAIdC,OAAAA,EAAAA,OAOAC,UAAW,SAACC,EAASC,GACpB,OAAO/wB,EAAAA,EAAAA,gBAAe8wB,EAAS,GAAI,CAClCE,WAAYD,GAAW,IACnB,KAKNE,aAAcC,EAAAA,kBACdC,iBO9Q+B,SAAAL,GAC/B,OAAOM,EAAAA,EAAAA,cAAmB,eAAiBN,GPuR3CtG,QAAAA,KAID6G,EAAAA,EAAAA,WAAU,qBAAqB,SAAA7nB,GAC9B5J,GAAGmE,aAAeyF,EAAE8C,MAGpB9O,QAAQ6P,KAAK,0BAA2B7D,EAAE8C,UQlU3C,mDCAwL,GCsCxL,CACA,mBACA,OACA,SACA,aACA,aAEA,gBACA,aACA,0BC7BA,IAXgB,QACd,ICRW,WAAa,IAAIglB,EAAIv0B,KAASw0B,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAAC1uB,MAAM,CAAC,GAAK,kBAAkByE,GAAG,CAAC,MAAQ,SAASmqB,GAAQ,OAAOL,EAAIM,MAAM,YAAY,CAACH,EAAG,QAAQ,CAACI,YAAY,gBAAgB9uB,MAAM,CAAC,GAAK,cAAc,KAAO,SAAS,MAAQ,IAAI+uB,SAAS,CAAC,MAASR,EAAIloB,QAAoCkoB,EAAIpyB,EAAE,OAAQ,gBAAxCoyB,EAAIpyB,EAAE,OAAQ,aAA6CoyB,EAAIS,GAAG,KAAKN,EAAG,MAAM,CAACI,YAAY,cAAcG,MAAM,CAChb,sBAAuBV,EAAIloB,QAC3B,qBAAsBkoB,EAAIloB,SAAWkoB,EAAIW,eACzC,0BAA2BX,EAAIloB,UAAYkoB,EAAIW,sBAE5B,IDMpB,EACA,KACA,WACA,MAI8B,QElBsJ,GCwItL,CACA,iBACA,4BACA,OACA,UACA,YACA,YAEA,aACA,sBACA,YAEA,QACA,WACA,8BAEA,UACA,WACA,8BAEA,eACA,YACA,WAEA,gBACA,aACA,YAEA,qBACA,aACA,YAEA,aACA,aACA,aAGA,KArCA,WAsCA,OACA,WACA,iCACA,kDACA,mBACA,YACA,+BAGA,UACA,iBADA,WAEA,oDAEA,kBAJA,WAKA,qDAEA,gBAPA,WAQA,mDAEA,aAVA,WAWA,gDAEA,WAbA,WAcA,oDAEA,YAhBA,WAiBA,kDAEA,eAnBA,WAoBA,mCAGA,QAtEA,WAuEA,mBACA,wBAEA,6BAGA,SACA,eADA,WAEA,oCACA,8BAEA,mCAGA,eARA,WASA,yCAEA,OAXA,WAYA,gBACA,wBC3NI,IAAY,QACd,ICRW,WAAa,IAAIX,EAAIv0B,KAASw0B,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,OAAO,CAACS,IAAI,YAAYnvB,MAAM,CAAC,OAAS,OAAO,KAAO,QAAQ,OAASuuB,EAAIa,gBAAgB3qB,GAAG,CAAC,OAAS8pB,EAAI7gB,SAAS,CAACghB,EAAG,WAAW,CAAEH,EAAoB,iBAAEG,EAAG,MAAM,CAACI,YAAY,WAAW,CAACP,EAAIS,GAAG,WAAWT,EAAIc,GAAGd,EAAIpyB,EAAE,OAAQ,wCAAwCuyB,EAAG,MAAMH,EAAIS,GAAG,KAAKN,EAAG,QAAQ,CAACH,EAAIS,GAAGT,EAAIc,GAAGd,EAAIpyB,EAAE,OAAQ,uCAAuC,gBAAgBoyB,EAAIe,KAAKf,EAAIS,GAAG,KAAKT,EAAIgB,GAAIhB,EAAY,UAAE,SAASnkB,EAAQwF,GAAO,OAAO8e,EAAG,MAAM,CAAC/wB,IAAIiS,EAAMkf,YAAY,WAAW,CAACP,EAAIS,GAAG,WAAWT,EAAIc,GAAGjlB,IAAUskB,EAAG,WAAUH,EAAIS,GAAG,KAAMT,EAAqB,kBAAEG,EAAG,MAAM,CAACI,YAAY,WAAW,CAACP,EAAIS,GAAG,WAAWT,EAAIc,GAAGd,EAAIpyB,EAAE,OAAQ,iCAAiCuyB,EAAG,MAAMH,EAAIS,GAAG,KAAKN,EAAG,QAAQ,CAACH,EAAIS,GAAGT,EAAIc,GAAGd,EAAIpyB,EAAE,OAAQ,oDAAoD,gBAAgBoyB,EAAIe,KAAKf,EAAIS,GAAG,KAAKN,EAAG,MAAM,CAACI,YAAY,SAAS9uB,MAAM,CAAC,GAAK,YAAY,CAAC0uB,EAAG,MAAM,CAACI,YAAY,gBAAgB9uB,MAAM,CAAC,IAAM,GAAG,IAAMuuB,EAAIiB,eAAejB,EAAIS,GAAG,KAAKN,EAAG,OAAO,CAAC1uB,MAAM,CAAC,GAAK,iBAAiBuuB,EAAIS,GAAG,KAAKN,EAAG,MAAM,CAACe,YAAY,CAAC,MAAQ,YAAYlB,EAAIS,GAAG,KAAKN,EAAG,IAAI,CAACI,YAAY,WAAWG,MAAM,CAACS,MAAOnB,EAAIoB,kBAAkB,CAACjB,EAAG,QAAQ,CAACkB,WAAW,CAAC,CAAChlB,KAAK,QAAQilB,QAAQ,UAAU/xB,MAAOywB,EAAQ,KAAEuB,WAAW,SAASX,IAAI,OAAOnvB,MAAM,CAAC,GAAK,OAAO,KAAO,OAAO,KAAO,OAAO,eAAiB,OAAO,YAAc,MAAM,aAAeuuB,EAAIwB,oBAAsB,KAAO,MAAM,YAAcxB,EAAIpyB,EAAE,OAAQ,qBAAqB,aAAaoyB,EAAIpyB,EAAE,OAAQ,qBAAqB,SAAW,IAAI4yB,SAAS,CAAC,MAASR,EAAQ,MAAG9pB,GAAG,CAAC,OAAS8pB,EAAIyB,eAAe,MAAQ,SAASpB,GAAWA,EAAOnZ,OAAOwa,YAAqB1B,EAAI2B,KAAKtB,EAAOnZ,OAAO3X,WAAUywB,EAAIS,GAAG,KAAKN,EAAG,QAAQ,CAACI,YAAY,UAAU9uB,MAAM,CAAC,IAAM,SAAS,CAACuuB,EAAIS,GAAGT,EAAIc,GAAGd,EAAIpyB,EAAE,OAAQ,2BAA2BoyB,EAAIS,GAAG,KAAKN,EAAG,IAAI,CAACI,YAAY,cAAcG,MAAM,CAACS,MAAOnB,EAAIoB,kBAAkB,CAACjB,EAAG,QAAQ,CAACS,IAAI,WAAWL,YAAY,uBAAuB9uB,MAAM,CAAC,GAAK,WAAW,KAAOuuB,EAAI4B,kBAAkB,KAAO,WAAW,YAAc,MAAM,eAAiB,OAAO,aAAe5B,EAAIwB,oBAAsB,mBAAqB,MAAM,YAAcxB,EAAIpyB,EAAE,OAAQ,YAAY,aAAaoyB,EAAIpyB,EAAE,OAAQ,YAAY,SAAW,MAAMoyB,EAAIS,GAAG,KAAKN,EAAG,QAAQ,CAACI,YAAY,UAAU9uB,MAAM,CAAC,IAAM,aAAa,CAACuuB,EAAIS,GAAGT,EAAIc,GAAGd,EAAIpyB,EAAE,gBAAgBoyB,EAAIS,GAAG,KAAKN,EAAG,IAAI,CAACI,YAAY,kBAAkB9uB,MAAM,CAAC,KAAO,KAAKyE,GAAG,CAAC,MAAQ,SAASmqB,GAAyD,OAAjDA,EAAO5gB,kBAAkB4gB,EAAOphB,iBAAwB+gB,EAAI6B,eAAenT,MAAM,KAAMC,cAAc,CAACwR,EAAG,MAAM,CAAC1uB,MAAM,CAAC,IAAMuuB,EAAI8B,WAAW,IAAM9B,EAAIpyB,EAAE,OAAQ,qCAAqCoyB,EAAIS,GAAG,KAAKN,EAAG,cAAc,CAAC1uB,MAAM,CAAC,QAAUuuB,EAAIloB,QAAQ,kBAAkBkoB,EAAIW,kBAAkBX,EAAIS,GAAG,KAAMT,EAAmB,gBAAEG,EAAG,IAAI,CAACI,YAAY,4BAA4B,CAACP,EAAIS,GAAG,WAAWT,EAAIc,GAAGd,EAAIpyB,EAAE,OAAQ,gCAAgC,YAAaoyB,EAAgB,aAAEG,EAAG,IAAI,CAACI,YAAY,2BAA2B,CAACP,EAAIS,GAAG,WAAWT,EAAIc,GAAGd,EAAIpyB,EAAE,OAAQ,kBAAkB,YAAYoyB,EAAIe,KAAKf,EAAIS,GAAG,KAAMT,EAAI+B,eAAiB/B,EAAI+B,cAAgB,IAAM5B,EAAG,IAAI,CAACI,YAAY,wBAAwB,CAACP,EAAIS,GAAG,WAAWT,EAAIc,GAAGd,EAAIpyB,EAAE,OAAQ,4HAA4H,YAAYoyB,EAAIe,KAAKf,EAAIS,GAAG,KAAMT,EAAe,YAAEG,EAAG,QAAQ,CAAC1uB,MAAM,CAAC,KAAO,SAAS,KAAO,gBAAgB+uB,SAAS,CAAC,MAAQR,EAAIgC,eAAehC,EAAIe,KAAKf,EAAIS,GAAG,KAAKN,EAAG,QAAQ,CAAC1uB,MAAM,CAAC,KAAO,SAAS,KAAO,YAAY+uB,SAAS,CAAC,MAAQR,EAAIiC,YAAYjC,EAAIS,GAAG,KAAKN,EAAG,QAAQ,CAAC1uB,MAAM,CAAC,KAAO,SAAS,KAAO,mBAAmB+uB,SAAS,CAAC,MAAQR,EAAIkC,kBAAkBlC,EAAIS,GAAG,KAAKN,EAAG,QAAQ,CAAC1uB,MAAM,CAAC,KAAO,SAAS,KAAO,gBAAgB+uB,SAAS,CAAC,MAAQR,EAAI1xB,GAAGmE,gBAAgButB,EAAIS,GAAG,KAAMT,EAAe,YAAEG,EAAG,QAAQ,CAAC1uB,MAAM,CAAC,KAAO,SAAS,KAAO,SAAS,MAAQ,OAAOuuB,EAAIe,MAAM,OACv4H,IDUpB,EACA,KACA,WACA,MAIF,GAAe,GAAiB,mvGEsChC,ulBCxDkM,GD4DlM,CACA,6BACA,YACA,eACA,qBACA,mBAEA,OACA,UACA,YACA,YAEA,aACA,sBACA,YAEA,gBACA,aACA,YAEA,qBACA,aACA,YAEA,SACA,aACA,YAEA,aACA,aACA,YAEA,wBACA,aACA,aAGA,KArCA,WAsCA,OACA,mBACA,WACA,sBAGA,SACA,aADA,WACA,WACA,8CAEA,sCACA,kBAEA,OADA,iBACA,KAEA,gBACA,kCACA,mBACA,gBACA,sBAGA,qBAGA,sBAnBA,SAmBA,GACA,IEhGoCoB,EAC7B1zB,EF+FP,cAOA,OALA,IACA,kBACA,mBAGA,SACA,MACA,SACA,uGAEA,4BAGA,uBAGA,OElHoC0zB,EFkHpC,EEjHO1zB,GAAMskB,EAAAA,EAAAA,aAAY,yBAEjBqP,GAAAA,QAAAA,KAAW3zB,EAAK,CAAE0zB,UAAAA,IACvBrwB,MAAK,SAAAuwB,GAAI,OAAIA,EAAK1zB,SF+GrB,kBAIA,GAHA,4DACA,kBAEA,2DAEA,MADA,uCACA,OAaA,OAVA,kFACA,uDACA,gBACA,GADA,IAEA,uEAIA,6DACA,iBACA,KAEA,mBAEA,MADA,4CACA,MAGA,KAjEA,SAiEA,GACA,kBACA,6DAOA,gDACA,kBAIA,OAHA,iBACA,uCACA,0CACA,CACA,QACA,YACA,iCACA,UACA,kEACA,4DACA,kDACA,kCAjBA,EAiBA,sCAhBA,yCAgBA,OAjBA,SAqBA,kBAEA,OADA,iBACA,KAEA,mBACA,+BACA,qBAGA,uBApGA,SAoGA,GACA,kCAEA,IEzKqCA,EAC9BF,EFwKP,mBAEA,OE3KqCE,EF2KrC,kBE1KOF,GAAMskB,EAAAA,EAAAA,aAAY,0BAEjBqP,GAAAA,QAAAA,KAAW3zB,EAAK,CAAEE,KAAAA,IACvBmD,MAAK,SAAAuwB,GAAI,OAAIA,EAAK1zB,SFwKrB,kBACA,uCACA,0BAEA,mBACA,0DACA,qBAGA,OAnHA,mKG7FIpC,GAAU,GAEdA,GAAQ+1B,kBAAoB,KAC5B/1B,GAAQg2B,cAAgB,KAElBh2B,GAAQi2B,OAAS,UAAc,KAAM,QAE3Cj2B,GAAQk2B,OAAS,KACjBl2B,GAAQm2B,mBAAqB,KAEhB,KAAI,KAASn2B,IAKJ,MAAW,aAAiB,YALlD,ICbI,IAAY,QACd,ICTW,WAAa,IAAIyzB,EAAIv0B,KAASw0B,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAASD,EAAI2C,SAAW3C,EAAI4C,cAAgB5C,EAAI6C,uBAAwB1C,EAAG,OAAO,CAACS,IAAI,YAAYnvB,MAAM,CAAC,OAAS,OAAO,KAAO,SAASyE,GAAG,CAAC,OAAS,SAASmqB,GAAgC,OAAxBA,EAAOphB,iBAAwB+gB,EAAI7gB,OAAOuP,MAAM,KAAMC,cAAc,CAACwR,EAAG,WAAW,CAACA,EAAG,IAAI,CAACI,YAAY,wBAAwB,CAACJ,EAAG,QAAQ,CAACI,YAAY,UAAU9uB,MAAM,CAAC,IAAM,SAAS,CAACuuB,EAAIS,GAAGT,EAAIc,GAAGd,EAAIpyB,EAAE,OAAQ,0BAAyBoyB,EAAIS,GAAG,KAAKN,EAAG,QAAQ,CAACkB,WAAW,CAAC,CAAChlB,KAAK,QAAQilB,QAAQ,UAAU/xB,MAAOywB,EAAQ,KAAEuB,WAAW,SAASX,IAAI,OAAOnvB,MAAM,CAAC,GAAK,OAAO,KAAO,OAAO,KAAO,OAAO,aAAeuuB,EAAIwB,oBAAsB,KAAO,MAAM,YAAcxB,EAAIpyB,EAAE,OAAQ,qBAAqB,aAAaoyB,EAAIpyB,EAAE,OAAQ,qBAAqB,SAAW,IAAI4yB,SAAS,CAAC,MAASR,EAAQ,MAAG9pB,GAAG,CAAC,OAAS,SAASmqB,GAAQ,OAAOL,EAAIM,MAAM,kBAAmBN,EAAI2B,OAAO,MAAQ,SAAStB,GAAWA,EAAOnZ,OAAOwa,YAAqB1B,EAAI2B,KAAKtB,EAAOnZ,OAAO3X,aAAYywB,EAAIS,GAAG,KAAOT,EAAI8C,iBAAmM9C,EAAIe,KAArLZ,EAAG,MAAM,CAACI,YAAY,iDAAiD,CAACP,EAAIS,GAAG,WAAWT,EAAIc,GAAGd,EAAIpyB,EAAE,OAAQ,sDAAsD,YAAqBoyB,EAAIS,GAAG,KAAMT,EAAoB,iBAAEG,EAAG,cAAc,CAAC1uB,MAAM,CAAC,QAAUuuB,EAAIloB,QAAQ,kBAAkBkoB,EAAIW,gBAAgBzqB,GAAG,CAAC,MAAQ8pB,EAAI+C,gBAAgB/C,EAAIe,MAAM,KAAOf,EAAI6C,uBAA6W7C,EAAI2C,SAAY3C,EAAI4C,YAA+W5C,EAAIe,KAAtWZ,EAAG,MAAM,CAACI,YAAY,+BAA+B,CAACJ,EAAG,eAAe,CAAC1uB,MAAM,CAAC,KAAO,QAAQuuB,EAAIS,GAAG,KAAKN,EAAG,KAAK,CAACH,EAAIS,GAAGT,EAAIc,GAAGd,EAAIpyB,EAAE,OAAQ,qCAAqCoyB,EAAIS,GAAG,KAAKN,EAAG,IAAI,CAACI,YAAY,aAAa,CAACP,EAAIS,GAAG,SAAST,EAAIc,GAAGd,EAAIpyB,EAAE,OAAQ,4EAA4E,WAAW,GAArtBuyB,EAAG,MAAM,CAACI,YAAY,+BAA+B,CAACJ,EAAG,kBAAkB,CAAC1uB,MAAM,CAAC,KAAO,QAAQuuB,EAAIS,GAAG,KAAKN,EAAG,KAAK,CAACH,EAAIS,GAAGT,EAAIc,GAAGd,EAAIpyB,EAAE,OAAQ,6BAA6BoyB,EAAIS,GAAG,KAAKN,EAAG,IAAI,CAACI,YAAY,aAAa,CAACP,EAAIS,GAAG,SAAST,EAAIc,GAAGd,EAAIpyB,EAAE,OAAQ,kEAAkE,WAAW,KACnuD,IDWpB,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QEnB0J,GCkF1L,CACA,qBACA,OACA,UACA,YACA,aAEA,mBACA,YACA,aAEA,gBACA,aACA,aAGA,KAhBA,WAiBA,OACA,SACA,WACA,eACA,qBAGA,OACA,SADA,SACA,GACA,cAGA,SACA,eADA,WAEA,yCAEA,OAJA,WAIA,WACA,gBACA,cACA,gBACA,+CAEA,GACA,gBAGA,4BACA,mCACA,kBACA,wBACA,gDAGA,4BAEA,mBACA,sDAEA,WACA,0BAEA,gDCjII,GAAU,GAEd,GAAQ00B,kBAAoB,KAC5B,GAAQC,cAAgB,KAElB,GAAQC,OAAS,UAAc,KAAM,QAE3C,GAAQC,OAAS,KACjB,GAAQC,mBAAqB,KAEhB,KAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICbI,IAAY,QACd,ICTW,WAAa,IAAI1C,EAAIv0B,KAASw0B,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,OAAO,CAACjqB,GAAG,CAAC,OAAS,SAASmqB,GAAgC,OAAxBA,EAAOphB,iBAAwB+gB,EAAI7gB,OAAOuP,MAAM,KAAMC,cAAc,CAACwR,EAAG,WAAW,CAACA,EAAG,IAAI,CAACA,EAAG,QAAQ,CAACkB,WAAW,CAAC,CAAChlB,KAAK,QAAQilB,QAAQ,UAAU/xB,MAAOywB,EAAQ,KAAEuB,WAAW,SAAS9vB,MAAM,CAAC,GAAK,OAAO,KAAO,OAAO,KAAO,OAAO,eAAiB,MAAM,YAAcuuB,EAAIpyB,EAAE,OAAQ,qBAAqB,aAAaoyB,EAAIpyB,EAAE,OAAQ,qBAAqB,SAAW,IAAI4yB,SAAS,CAAC,MAASR,EAAQ,MAAG9pB,GAAG,CAAC,OAAS8pB,EAAIyB,eAAe,MAAQ,SAASpB,GAAWA,EAAOnZ,OAAOwa,YAAqB1B,EAAI2B,KAAKtB,EAAOnZ,OAAO3X,WAAUywB,EAAIS,GAAG,KAAKN,EAAG,QAAQ,CAACI,YAAY,UAAU9uB,MAAM,CAAC,IAAM,SAAS,CAACuuB,EAAIS,GAAGT,EAAIc,GAAGd,EAAIpyB,EAAE,OAAQ,2BAA2BoyB,EAAIS,GAAG,KAAKN,EAAG,MAAM,CAAC1uB,MAAM,CAAC,GAAK,2BAA2B,CAAC0uB,EAAG,QAAQ,CAACI,YAAY,gBAAgB9uB,MAAM,CAAC,GAAK,wBAAwB,KAAO,SAAS,MAAQ,IAAI+uB,SAAS,CAAC,MAAQR,EAAIpyB,EAAE,OAAQ,qBAAqBoyB,EAAIS,GAAG,KAAKN,EAAG,MAAM,CAACI,YAAY,cAAcG,MAAM,CAC9hC,sBAAuBV,EAAIloB,QAC3B,qBAAsBkoB,EAAIloB,SAAWkoB,EAAIW,eACzC,0BAA2BX,EAAIloB,UAAYkoB,EAAIW,oBAC1CX,EAAIS,GAAG,KAAsB,iBAAhBT,EAAInkB,QAA4BskB,EAAG,IAAI,CAACI,YAAY,UAAU,CAACP,EAAIS,GAAG,WAAWT,EAAIc,GAAGd,EAAIpyB,EAAE,OAAQ,kLAAkL,YAAYuyB,EAAG,MAAMH,EAAIS,GAAG,WAAWT,EAAIc,GAAGd,EAAIpyB,EAAE,OAAQ,qDAAqD,YAA6B,eAAhBoyB,EAAInkB,QAA0BskB,EAAG,IAAI,CAACI,YAAY,kBAAkB,CAACP,EAAIS,GAAG,WAAWT,EAAIc,GAAGd,EAAIpyB,EAAE,OAAQ,kEAAmE,YAA6B,gBAAhBoyB,EAAInkB,QAA2BskB,EAAG,IAAI,CAACI,YAAY,kBAAkB,CAACP,EAAIS,GAAG,WAAWT,EAAIc,GAAGd,EAAIpyB,EAAE,OAAQ,mEAAmE,YAAaoyB,EAAW,QAAEG,EAAG,IAAI,CAACI,YAAY,SAASG,MAAM,CAACsC,QAAShD,EAAI7zB,SAAS6zB,EAAIe,KAAKf,EAAIS,GAAG,KAAKN,EAAG,IAAI,CAAC1uB,MAAM,CAAC,KAAO,KAAKyE,GAAG,CAAC,MAAQ,SAASmqB,GAAgC,OAAxBA,EAAOphB,iBAAwB+gB,EAAIM,MAAM,YAAY,CAACN,EAAIS,GAAG,WAAWT,EAAIc,GAAGd,EAAIpyB,EAAE,OAAQ,kBAAkB,kBACnhC,IDOpB,EACA,KACA,WACA,MAIF,GAAe,GAAiB,kIEuDhC,QACA,sBACA,OACA,UACA,YACA,aAEA,qBACA,YACA,aAEA,gBACA,aACA,aAGA,KAhBA,WAiBA,OACA,SACA,WACA,eACA,mBACA,YACA,aACA,aAGA,OACA,SADA,SACA,GACA,cAGA,SACA,OADA,WACA,2JACA,aACA,WACA,aAHA,kBAMA,uCACA,oBACA,oBARA,qBAMA,EANA,EAMA,OAIA,qBAVA,iBAWA,yBACA,kCACA,gBAbA,4BAcA,iBAdA,iBAeA,eAfA,4BAgBA,UAhBA,uBAiBA,iBAjBA,cAmBA,UAnBA,0DAsBA,WACA,+GAvBA,yBAyBA,aAzBA,kQC3G2L,kBCWvL,GAAU,GAEd,GAAQ00B,kBAAoB,KAC5B,GAAQC,cAAgB,KAElB,GAAQC,OAAS,UAAc,KAAM,QAE3C,GAAQC,OAAS,KACjB,GAAQC,mBAAqB,KAEhB,KAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICbI,IAAY,QACd,ICTW,WAAa,IAAI1C,EAAIv0B,KAASw0B,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,OAAO,CAACjqB,GAAG,CAAC,OAAS,SAASmqB,GAAgC,OAAxBA,EAAOphB,iBAAwB+gB,EAAI7gB,OAAOuP,MAAM,KAAMC,cAAc,CAACwR,EAAG,WAAW,CAACA,EAAG,IAAI,CAACA,EAAG,QAAQ,CAACI,YAAY,UAAU9uB,MAAM,CAAC,IAAM,aAAa,CAACuuB,EAAIS,GAAGT,EAAIc,GAAGd,EAAIpyB,EAAE,OAAQ,oBAAoBoyB,EAAIS,GAAG,KAAKN,EAAG,QAAQ,CAACkB,WAAW,CAAC,CAAChlB,KAAK,QAAQilB,QAAQ,UAAU/xB,MAAOywB,EAAY,SAAEuB,WAAW,aAAa9vB,MAAM,CAAC,GAAK,WAAW,KAAO,WAAW,KAAO,WAAW,aAAe,eAAe,eAAiB,OAAO,YAAc,MAAM,SAAW,GAAG,YAAcuuB,EAAIpyB,EAAE,OAAQ,iBAAiB4yB,SAAS,CAAC,MAASR,EAAY,UAAG9pB,GAAG,CAAC,MAAQ,SAASmqB,GAAWA,EAAOnZ,OAAOwa,YAAqB1B,EAAI1jB,SAAS+jB,EAAOnZ,OAAO3X,aAAYywB,EAAIS,GAAG,KAAMT,EAAa,UAAEG,EAAG,MAAM,CAACI,YAAY,UAAU,CAACJ,EAAG,IAAI,CAACH,EAAIS,GAAG,aAAaT,EAAIc,GAAGd,EAAIpyB,EAAE,OAAQ,8NAA8N,cAAcoyB,EAAIS,GAAG,KAAKN,EAAG,QAAQ,CAACkB,WAAW,CAAC,CAAChlB,KAAK,QAAQilB,QAAQ,UAAU/xB,MAAOywB,EAAW,QAAEuB,WAAW,YAAYhB,YAAY,WAAW9uB,MAAM,CAAC,GAAK,qBAAqB,KAAO,YAAY+uB,SAAS,CAAC,QAAUyC,MAAMC,QAAQlD,EAAImD,SAASnD,EAAIoD,GAAGpD,EAAImD,QAAQ,OAAO,EAAGnD,EAAW,SAAG9pB,GAAG,CAAC,OAAS,SAASmqB,GAAQ,IAAIgD,EAAIrD,EAAImD,QAAQG,EAAKjD,EAAOnZ,OAAOqc,IAAID,EAAKna,QAAuB,GAAG8Z,MAAMC,QAAQG,GAAK,CAAC,IAAaG,EAAIxD,EAAIoD,GAAGC,EAAhB,MAA4BC,EAAKna,QAASqa,EAAI,IAAIxD,EAAImD,QAAQE,EAAII,OAAO,CAAzE,QAAsFD,GAAK,IAAIxD,EAAImD,QAAQE,EAAIK,MAAM,EAAEF,GAAKC,OAAOJ,EAAIK,MAAMF,EAAI,UAAWxD,EAAImD,QAAQI,MAASvD,EAAIS,GAAG,KAAKN,EAAG,QAAQ,CAAC1uB,MAAM,CAAC,IAAM,uBAAuB,CAACuuB,EAAIS,GAAG,aAAaT,EAAIc,GAAGd,EAAIpyB,EAAE,OAAQ,0BAA2B,gBAAgBoyB,EAAIe,KAAKf,EAAIS,GAAG,KAAKN,EAAG,MAAM,CAAC1uB,MAAM,CAAC,GAAK,mBAAmB,CAAC0uB,EAAG,QAAQ,CAACI,YAAY,gBAAgB9uB,MAAM,CAAC,GAAK,SAAS,KAAO,SAAS,MAAQ,IAAI+uB,SAAS,CAAC,MAASR,EAAIloB,QAA4CkoB,EAAIpyB,EAAE,OAAQ,sBAAhDoyB,EAAIpyB,EAAE,OAAQ,qBAA2DoyB,EAAIS,GAAG,KAAKN,EAAG,MAAM,CAACI,YAAY,cAAcG,MAAM,CACtnE,qBAAsBV,EAAIloB,SAAWkoB,EAAIW,eACzC,0BAA2BX,EAAIloB,UAAYkoB,EAAIW,oBAC1CX,EAAIS,GAAG,KAAMT,EAAI7zB,OAAS6zB,EAAInkB,QAASskB,EAAG,IAAI,CAACO,MAAM,CAACsC,QAAShD,EAAI7zB,QAAQ,CAAC6zB,EAAIS,GAAG,WAAWT,EAAIc,GAAGd,EAAInkB,SAAS,YAAYmkB,EAAIe,WACtH,IDQpB,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QEoGhC,6BACA,GAAoB,MAAhBlM,GAAM8O,MACV,IACA,4BACA,8BACA,yCACA,SACA,mDAIA,IClI4K,GDkI5K,CACA,aAEA,YACA,aACA,yBACA,iBACA,mBAGA,KAVA,WAWA,OACA,WACA,iDACA,qBACA,iBAGA,iDACA,qDACA,2DACA,8DACA,iDACA,qEACA,uEACA,oEACA,sEACA,kEACA,4BACA,iEACA,4EACA,4CACA,mDACA,2DACA,4DAGA,SACA,sBADA,WAEA,4BACA,mCE/JI,GAAU,GAEd,GAAQrB,kBAAoB,KAC5B,GAAQC,cAAgB,KAElB,GAAQC,OAAS,UAAc,KAAM,QAE3C,GAAQC,OAAS,KACjB,GAAQC,mBAAqB,KAEhB,KAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICFA,IAXgB,QACd,I5BTW,WAAa,IAAI1C,EAAIv0B,KAASw0B,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAASD,EAAI4D,eAAiB5D,EAAI6D,YAAa1D,EAAG,MAAM,CAACA,EAAG,aAAa,CAAC1uB,MAAM,CAAC,KAAO,OAAO,KAAO,WAAW,CAAGuuB,EAAI8D,mBAAsB9D,EAAI+D,eAA6C,KAA5B/D,EAAIgE,qBAA0iDhE,EAAIloB,SAAWkoB,EAAI8D,kBAAmB3D,EAAG,MAAM,CAAC/wB,IAAI,QAAQmxB,YAAY,oBAAoB,CAACJ,EAAG,wBAAwB,CAAC1uB,MAAM,CAAC,SAAWuuB,EAAI2B,KAAK,eAAe3B,EAAIgC,YAAY,kBAAkBhC,EAAIW,eAAe,wBAAwBX,EAAIwB,oBAAoB,WAAWxB,EAAI2C,QAAQ,eAAe3C,EAAI4C,YAAY,4BAA4B5C,EAAI6C,wBAAwB3sB,GAAG,CAAC,kBAAkB,SAASmqB,GAAQL,EAAI2B,KAAKtB,GAAQ,OAAS,SAASA,GAAQL,EAAIloB,SAAU,MAASkoB,EAAIS,GAAG,KAAKN,EAAG,IAAI,CAAC1uB,MAAM,CAAC,KAAO,KAAKyE,GAAG,CAAC,MAAQ,SAASmqB,GAAQA,EAAOphB,iBAAiB+gB,EAAI8D,mBAAoB,KAAS,CAAC9D,EAAIS,GAAG,aAAaT,EAAIc,GAAGd,EAAIpyB,EAAE,OAAQ,SAAS,eAAe,IAAKoyB,EAAIloB,SAAWkoB,EAAIiE,iBAAkB9D,EAAG,MAAM,CAAC/wB,IAAI,QAAQmxB,YAAY,oBAAoB,CAACJ,EAAG,MAAM,CAACI,YAAY,2BAA2B,CAAEP,EAAiB,cAAEG,EAAG,gBAAgB,CAAC1uB,MAAM,CAAC,SAAWuuB,EAAI2B,KAAK,sBAAsB3B,EAAIkE,kBAAkB,kBAAkBlE,EAAIW,gBAAgBzqB,GAAG,CAAC,kBAAkB,SAASmqB,GAAQL,EAAI2B,KAAKtB,GAAQ,MAAQ,SAASA,GAAQL,EAAI+D,eAAgB,MAAU/D,EAAIe,MAAM,KAAkC,KAA5Bf,EAAIgE,oBAA4B7D,EAAG,MAAM,CAACA,EAAG,iBAAiB,CAAC1uB,MAAM,CAAC,SAAWuuB,EAAI2B,KAAK,wBAAwB3B,EAAIgE,oBAAoB,kBAAkBhE,EAAIW,gBAAgBzqB,GAAG,CAAC,kBAAkB,SAASmqB,GAAQL,EAAI2B,KAAKtB,GAAQ,KAAOL,EAAImE,0BAA0B,GAAGnE,EAAIe,KAAv2FZ,EAAG,MAAM,CAAC/wB,IAAI,SAAS,CAAC+wB,EAAG,YAAY,CAAC1uB,MAAM,CAAC,SAAWuuB,EAAI2B,KAAK,eAAe3B,EAAIgC,YAAY,eAAehC,EAAI6D,YAAY,SAAW7D,EAAIoE,SAAS,OAASpE,EAAIqE,OAAO,iBAAiBrE,EAAI+B,cAAc,kBAAkB/B,EAAIW,eAAe,wBAAwBX,EAAIwB,qBAAqBtrB,GAAG,CAAC,kBAAkB,SAASmqB,GAAQL,EAAI2B,KAAKtB,GAAQ,OAAS,SAASA,GAAQL,EAAIloB,SAAU,MAASkoB,EAAIS,GAAG,KAAMT,EAAIiE,kBAA8C,KAA1BjE,EAAIkE,kBAA0B/D,EAAG,IAAI,CAAC1uB,MAAM,CAAC,GAAK,gBAAgB,KAAOuuB,EAAIkE,oBAAoB,CAAClE,EAAIS,GAAG,aAAaT,EAAIc,GAAGd,EAAIpyB,EAAE,OAAQ,qBAAqB,cAAeoyB,EAAIiE,mBAAqBjE,EAAI+D,cAAe5D,EAAG,IAAI,CAAC1uB,MAAM,CAAC,GAAK,gBAAgB,KAAOuuB,EAAIkE,mBAAmBhuB,GAAG,CAAC,MAAQ,SAASmqB,GAAQA,EAAOphB,iBAAiB+gB,EAAI+D,eAAgB,KAAQ,CAAC/D,EAAIS,GAAG,aAAaT,EAAIc,GAAGd,EAAIpyB,EAAE,OAAQ,qBAAqB,cAAcoyB,EAAIe,KAAKf,EAAIS,GAAG,KAAKN,EAAG,MAAMH,EAAIS,GAAG,KAAMT,EAAmB,gBAAE,CAAEA,EAA0B,uBAAEG,EAAG,MAAM,CAACI,YAAY,sBAAsB,CAAEP,EAAmB,gBAAEG,EAAG,IAAI,CAACI,YAAY,SAASG,MAAM,CAAE,0BAA2BV,EAAIsE,wBAAyB7yB,MAAM,CAAC,KAAO,KAAKyE,GAAG,CAAC,MAAQ,SAASmqB,GAAQA,EAAOphB,iBAAiB+gB,EAAI8D,mBAAoB,KAAQ,CAAC9D,EAAIS,GAAG,iBAAiBT,EAAIc,GAAGd,EAAIpyB,EAAE,OAAQ,yBAAyB,kBAAkBoyB,EAAIe,OAAOZ,EAAG,IAAI,CAAC1uB,MAAM,CAAC,KAAO,KAAKyE,GAAG,CAAC,MAAQ,SAASmqB,GAAQA,EAAOphB,iBAAiB+gB,EAAI8D,mBAAoB,KAAQ,CAAC9D,EAAIS,GAAG,eAAeT,EAAIc,GAAGd,EAAIpyB,EAAE,OAAQ,yBAAyB,iBAAiBoyB,EAAIe,MAAM,MAAs2C,GAAGZ,EAAG,MAAM,CAACA,EAAG,aAAa,CAAC1uB,MAAM,CAAC,KAAO,OAAO,KAAO,WAAW,CAAC0uB,EAAG,MAAM,CAACI,YAAY,WAAW,CAACP,EAAIS,GAAG,WAAWT,EAAIc,GAAGd,EAAIpyB,EAAE,OAAQ,6BAA6BuyB,EAAG,MAAMH,EAAIS,GAAG,KAAKN,EAAG,QAAQ,CAACH,EAAIS,GAAGT,EAAIc,GAAGd,EAAIpyB,EAAE,OAAQ,uCAAuC,mBAAmB,KACx5G,I4BWpB,EACA,KACA,KACA,MAI8B,QCMhC,IACCe,KADc,WAEb,MAAO,CACNL,GAAAA,KAGFi2B,QAAS,CACR32B,EAAGyhB,GAAAA,UAAAA,KAAoBA,IACvBlH,EAAGkH,GAAAA,gBAAAA,KAA0BA,MCD/BmV,EAAAA,QAAAA,MAAUC,KAGV,IADaD,EAAAA,QAAAA,OAAWE,MACbC,OAAO,iFChCdC,QAA0B,GAA4B,KAE1DA,EAAwBxuB,KAAK,CAACyuB,EAAOj0B,GAAI,sJAAuJ,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,mEAAmE,MAAQ,GAAG,SAAW,6CAA6C,eAAiB,CAAC,qkBAAqkB,WAAa,MAEr8B,6ECJIg0B,QAA0B,GAA4B,KAE1DA,EAAwBxuB,KAAK,CAACyuB,EAAOj0B,GAAI,oDAAqD,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,2DAA2D,MAAQ,GAAG,SAAW,wBAAwB,eAAiB,CAAC,u+IAA09I,WAAa,MAE3tJ,6ECJIg0B,QAA0B,GAA4B,KAE1DA,EAAwBxuB,KAAK,CAACyuB,EAAOj0B,GAAI,2HAA4H,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,4DAA4D,MAAQ,GAAG,SAAW,8CAA8C,eAAiB,CAAC,wpIAAwpI,WAAa,MAEv/I,6ECJIg0B,QAA0B,GAA4B,KAE1DA,EAAwBxuB,KAAK,CAACyuB,EAAOj0B,GAAI,4KAA6K,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,wCAAwC,MAAQ,GAAG,SAAW,6CAA6C,eAAiB,CAAC,qpNAA8oN,WAAa,MAEzgO,6BCPA,IAAIwgB,EAAa,EAAQ,OAEzByT,EAAOC,SAAW1T,EAAoB,SAAKA,GAAYta,SAAS,CAAC,EAAI,SAASiuB,EAAUC,EAAOC,EAAQC,EAASv2B,GAC5G,IAAIw2B,EAAQC,EAAiBL,EAAUK,gBAAkB,SAAShd,EAAQid,GACtE,GAAInzB,OAAOmC,UAAUixB,eAAel5B,KAAKgc,EAAQid,GAC/C,OAAOjd,EAAOid,IAKtB,OAAoa,OAA3ZF,EAASC,EAAeH,EAAQ,MAAM74B,KAAe,MAAV44B,EAAiBA,EAAUD,EAAUQ,aAAe,GAAgF,OAA1EJ,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,cAAgBA,EAAQ,CAAC,KAAO,KAAK,KAAO,GAAG,GAAKJ,EAAUS,QAAQ,EAAG72B,EAAM,GAAG,QAAUo2B,EAAUS,QAAQ,EAAG72B,EAAM,GAAG,KAAOA,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,GAAG,IAAM,CAAC,KAAO,GAAG,OAAS,OAAiBw2B,EAAS,IACpb,EAAI,SAASJ,EAAUC,EAAOC,EAAQC,EAASv2B,GAC7C,IAAIw2B,EAAQC,EAAiBL,EAAUK,gBAAkB,SAAShd,EAAQid,GACtE,GAAInzB,OAAOmC,UAAUixB,eAAel5B,KAAKgc,EAAQid,GAC/C,OAAOjd,EAAOid,IAKtB,OAAsZ,OAA7YF,EAASC,EAAeH,EAAQ,MAAM74B,KAAe,MAAV44B,EAAiBA,EAAUD,EAAUQ,aAAe,GAAgF,OAA1EJ,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,gBAAkBA,EAAQ,CAAC,KAAO,KAAK,KAAO,GAAG,GAAKJ,EAAUS,QAAQ,EAAG72B,EAAM,GAAG,QAAUo2B,EAAUU,KAAK,KAAO92B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,GAAG,IAAM,CAAC,KAAO,EAAE,OAAS,OAAiBw2B,EAAS,IACta,EAAI,SAASJ,EAAUC,EAAOC,EAAQC,EAASv2B,GAC7C,IAAIw2B,EAAQO,EAAOX,EAAUY,OAAQC,EAAOb,EAAUc,iBAAkBT,EAAiBL,EAAUK,gBAAkB,SAAShd,EAAQid,GAClI,GAAInzB,OAAOmC,UAAUixB,eAAel5B,KAAKgc,EAAQid,GAC/C,OAAOjd,EAAOid,IAKtB,MAAO,+CACHO,EAAOF,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,cAAgBA,EAASH,IAChJ,yBACAY,EAAOF,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,UAAYA,EAASH,IAC5I,oCACAY,EAAOF,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,UAAYA,EAASH,IAC5I,gBACAY,EAAOF,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,UAAYA,EAASH,IAC5I,gBACAY,EAAOF,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,UAAYA,EAASH,IAC5I,uCACJ,EAAI,SAASD,EAAUC,EAAOC,EAAQC,EAASv2B,GAC7C,IAAIw2B,EAAQO,EAAOX,EAAUY,OAAQC,EAAOb,EAAUc,iBAAkBT,EAAiBL,EAAUK,gBAAkB,SAAShd,EAAQid,GAClI,GAAInzB,OAAOmC,UAAUixB,eAAel5B,KAAKgc,EAAQid,GAC/C,OAAOjd,EAAOid,IAKtB,MAAO,iBACHO,EAAOF,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,UAAYA,EAASH,IAC5I,oCACAY,EAAOF,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,UAAYA,EAASH,IAC5I,gBACAY,EAAOF,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,UAAYA,EAASH,IAC5I,gBACAY,EAAOF,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,UAAYA,EAASH,IAC5I,2BACJ,EAAI,SAASD,EAAUC,EAAOC,EAAQC,EAASv2B,GAC7C,IAAIw2B,EAAQC,EAAiBL,EAAUK,gBAAkB,SAAShd,EAAQid,GACtE,GAAInzB,OAAOmC,UAAUixB,eAAel5B,KAAKgc,EAAQid,GAC/C,OAAOjd,EAAOid,IAKtB,OAAsa,OAA7ZF,EAASC,EAAeH,EAAQ,MAAM74B,KAAe,MAAV44B,EAAiBA,EAAUD,EAAUQ,aAAe,GAAgF,OAA1EJ,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,cAAgBA,EAAQ,CAAC,KAAO,KAAK,KAAO,GAAG,GAAKJ,EAAUS,QAAQ,EAAG72B,EAAM,GAAG,QAAUo2B,EAAUS,QAAQ,GAAI72B,EAAM,GAAG,KAAOA,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,GAAG,IAAM,CAAC,KAAO,GAAG,OAAS,OAAiBw2B,EAAS,IACtb,EAAI,SAASJ,EAAUC,EAAOC,EAAQC,EAASv2B,GAC7C,IAAIw2B,EAAQC,EAAiBL,EAAUK,gBAAkB,SAAShd,EAAQid,GACtE,GAAInzB,OAAOmC,UAAUixB,eAAel5B,KAAKgc,EAAQid,GAC/C,OAAOjd,EAAOid,IAKtB,OAAwZ,OAA/YF,EAASC,EAAeH,EAAQ,MAAM74B,KAAe,MAAV44B,EAAiBA,EAAUD,EAAUQ,aAAe,GAAgF,OAA1EJ,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,gBAAkBA,EAAQ,CAAC,KAAO,KAAK,KAAO,GAAG,GAAKJ,EAAUS,QAAQ,EAAG72B,EAAM,GAAG,QAAUo2B,EAAUU,KAAK,KAAO92B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,GAAG,IAAM,CAAC,KAAO,GAAG,OAAS,OAAiBw2B,EAAS,IACxa,EAAI,SAASJ,EAAUC,EAAOC,EAAQC,EAASv2B,GAC7C,IAAIw2B,EAAQC,EAAiBL,EAAUK,gBAAkB,SAAShd,EAAQid,GACtE,GAAInzB,OAAOmC,UAAUixB,eAAel5B,KAAKgc,EAAQid,GAC/C,OAAOjd,EAAOid,IAKtB,MAAO,+CACHN,EAAUc,iBAAiBd,EAAUY,OAAmF,OAA1ER,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,cAAgBA,EAASH,IAC9K,wDACJ,GAAK,SAASD,EAAUC,EAAOC,EAAQC,EAASv2B,GAC9C,MAAO,oCACT,GAAK,SAASo2B,EAAUC,EAAOC,EAAQC,EAASv2B,GAC9C,IAAIw2B,EAAQC,EAAiBL,EAAUK,gBAAkB,SAAShd,EAAQid,GACtE,GAAInzB,OAAOmC,UAAUixB,eAAel5B,KAAKgc,EAAQid,GAC/C,OAAOjd,EAAOid,IAKtB,OAAyZ,OAAhZF,EAASC,EAAeH,EAAQ,MAAM74B,KAAe,MAAV44B,EAAiBA,EAAUD,EAAUQ,aAAe,GAAgF,OAA1EJ,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,gBAAkBA,EAAQ,CAAC,KAAO,KAAK,KAAO,GAAG,GAAKJ,EAAUS,QAAQ,GAAI72B,EAAM,GAAG,QAAUo2B,EAAUU,KAAK,KAAO92B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,GAAG,IAAM,CAAC,KAAO,GAAG,OAAS,OAAiBw2B,EAAS,IACza,GAAK,SAASJ,EAAUC,EAAOC,EAAQC,EAASv2B,GAC9C,IAAIw2B,EAAQO,EAAOX,EAAUY,OAAQC,EAAOb,EAAUc,iBAAkBT,EAAiBL,EAAUK,gBAAkB,SAAShd,EAAQid,GAClI,GAAInzB,OAAOmC,UAAUixB,eAAel5B,KAAKgc,EAAQid,GAC/C,OAAOjd,EAAOid,IAKtB,MAAO,qDACHO,EAAOF,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,cAAgBA,EAASH,IAChJ,oCACAY,EAAOF,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,YAAcA,EAASH,IAC9I,2CACAY,EAAOF,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,eAAiBA,EAASH,IACjJ,4CACAY,EAAOF,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,kBAAoBA,EAASH,IACpJ,sBACJ,GAAK,SAASD,EAAUC,EAAOC,EAAQC,EAASv2B,GAC9C,IAAIw2B,EAAQC,EAAiBL,EAAUK,gBAAkB,SAAShd,EAAQid,GACtE,GAAInzB,OAAOmC,UAAUixB,eAAel5B,KAAKgc,EAAQid,GAC/C,OAAOjd,EAAOid,IAKtB,OAAsa,OAA7ZF,EAASC,EAAeH,EAAQ,MAAM74B,KAAe,MAAV44B,EAAiBA,EAAUD,EAAUQ,aAAe,GAAgF,OAA1EJ,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,aAAeA,EAAQ,CAAC,KAAO,KAAK,KAAO,GAAG,GAAKJ,EAAUS,QAAQ,GAAI72B,EAAM,GAAG,QAAUo2B,EAAUS,QAAQ,GAAI72B,EAAM,GAAG,KAAOA,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,GAAG,IAAM,CAAC,KAAO,GAAG,OAAS,OAAiBw2B,EAAS,IACtb,GAAK,SAASJ,EAAUC,EAAOC,EAAQC,EAASv2B,GAC9C,IAAIw2B,EAAQO,EAAOX,EAAUY,OAAQC,EAAOb,EAAUc,iBAAkBT,EAAiBL,EAAUK,gBAAkB,SAAShd,EAAQid,GAClI,GAAInzB,OAAOmC,UAAUixB,eAAel5B,KAAKgc,EAAQid,GAC/C,OAAOjd,EAAOid,IAKtB,MAAO,2BACHO,EAAOF,EAAsJ,OAA7IP,EAAqF,OAA1EA,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,aAAeA,GAAmBC,EAAeD,EAAO,aAAeA,EAASH,IAClN,mCACAY,EAAOF,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,YAAcA,EAASH,IAC9I,yCACAY,EAAOF,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,eAAiBA,EAASH,IACjJ,0CACAY,EAAOF,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,kBAAoBA,EAASH,IACpJ,mDACAY,EAAOF,EAAsJ,OAA7IP,EAAqF,OAA1EA,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,aAAeA,GAAmBC,EAAeD,EAAO,aAAeA,EAASH,IAClN,YACAY,EAAOF,EAAsJ,OAA7IP,EAAqF,OAA1EA,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,aAAeA,GAAmBC,EAAeD,EAAO,SAAWA,EAASH,IAC9M,uBACAY,EAAOF,EAAsJ,OAA7IP,EAAqF,OAA1EA,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,aAAeA,GAAmBC,EAAeD,EAAO,QAAUA,EAASH,IAC7M,UACAY,EAAOF,EAAsJ,OAA7IP,EAAqF,OAA1EA,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,aAAeA,GAAmBC,EAAeD,EAAO,SAAWA,EAASH,IAC9M,gBACJ,GAAK,SAASD,EAAUC,EAAOC,EAAQC,EAASv2B,GAC9C,IAAIw2B,EAAQO,EAAOX,EAAUY,OAAQC,EAAOb,EAAUc,iBAAkBT,EAAiBL,EAAUK,gBAAkB,SAAShd,EAAQid,GAClI,GAAInzB,OAAOmC,UAAUixB,eAAel5B,KAAKgc,EAAQid,GAC/C,OAAOjd,EAAOid,IAKtB,MAAO,oDACHO,EAAOF,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,YAAcA,EAASH,IAC9I,yCACAY,EAAOF,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,eAAiBA,EAASH,IACjJ,0CACAY,EAAOF,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,kBAAoBA,EAASH,IACpJ,sBACJ,GAAK,SAASD,EAAUC,EAAOC,EAAQC,EAASv2B,GAC9C,IAAIw2B,EAAQO,EAAOX,EAAUY,OAAQC,EAAOb,EAAUc,iBAAkBT,EAAiBL,EAAUK,gBAAkB,SAAShd,EAAQid,GAClI,GAAInzB,OAAOmC,UAAUixB,eAAel5B,KAAKgc,EAAQid,GAC/C,OAAOjd,EAAOid,IAKtB,MAAO,kCACHO,EAAOF,EAAyJ,OAAhJP,EAAqF,OAA1EA,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,gBAAkBA,GAAmBC,EAAeD,EAAO,aAAeA,EAASH,IACrN,YACAY,EAAOF,EAAyJ,OAAhJP,EAAqF,OAA1EA,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,gBAAkBA,GAAmBC,EAAeD,EAAO,SAAWA,EAASH,IACjN,mBACAY,EAAOF,EAAyJ,OAAhJP,EAAqF,OAA1EA,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,gBAAkBA,GAAmBC,EAAeD,EAAO,QAAUA,EAASH,IAChN,UACAY,EAAOF,EAAyJ,OAAhJP,EAAqF,OAA1EA,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,gBAAkBA,GAAmBC,EAAeD,EAAO,SAAWA,EAASH,IACjN,cACJ,GAAK,SAASD,EAAUC,EAAOC,EAAQC,EAASv2B,GAC9C,IAAIw2B,EAAQC,EAAiBL,EAAUK,gBAAkB,SAAShd,EAAQid,GACtE,GAAInzB,OAAOmC,UAAUixB,eAAel5B,KAAKgc,EAAQid,GAC/C,OAAOjd,EAAOid,IAKtB,MAAO,iGAC+Y,OAAhZF,EAASC,EAAeH,EAAQ,QAAQ74B,KAAe,MAAV44B,EAAiBA,EAAUD,EAAUQ,aAAe,GAAgF,OAA1EJ,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,WAAaA,EAAQ,CAAC,KAAO,OAAO,KAAO,GAAG,GAAKJ,EAAUS,QAAQ,GAAI72B,EAAM,GAAG,QAAUo2B,EAAUU,KAAK,KAAO92B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,GAAG,IAAM,CAAC,KAAO,GAAG,OAAS,QAAkBw2B,EAAS,IACla,yBACJ,GAAK,SAASJ,EAAUC,EAAOC,EAAQC,EAASv2B,GAC9C,IAAIm3B,EAAQJ,EAAiB,MAAVV,EAAiBA,EAAUD,EAAUQ,aAAe,GAAKK,EAAOb,EAAUgB,MAAMC,cAAeC,EAAO,WAAYC,EAAOnB,EAAUc,iBAAkBT,EAAiBL,EAAUK,gBAAkB,SAAShd,EAAQid,GAClO,GAAInzB,OAAOmC,UAAUixB,eAAel5B,KAAKgc,EAAQid,GAC/C,OAAOjd,EAAOid,IAKtB,MAAO,gCACHa,SAASJ,EAA6H,OAAnHA,EAASV,EAAeH,EAAQ,eAA2B,MAAVD,EAAiBI,EAAeJ,EAAO,aAAeA,IAAmBc,EAASF,KAA2BK,EAASH,EAAO15B,KAAKs5B,EAAO,CAAC,KAAO,YAAY,KAAO,GAAG,KAAO/2B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,IAAI,IAAM,CAAC,KAAO,GAAG,OAAS,OAASm3B,GACjU,2BACAI,SAASJ,EAAmH,OAAzGA,EAASV,EAAeH,EAAQ,UAAsB,MAAVD,EAAiBI,EAAeJ,EAAO,QAAUA,IAAmBc,EAASF,KAA2BK,EAASH,EAAO15B,KAAKs5B,EAAO,CAAC,KAAO,OAAO,KAAO,GAAG,KAAO/2B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,IAAI,IAAM,CAAC,KAAO,GAAG,OAAS,OAASm3B,GAClT,8BACAI,SAASJ,EAAqH,OAA3GA,EAASV,EAAeH,EAAQ,WAAuB,MAAVD,EAAiBI,EAAeJ,EAAO,SAAWA,IAAmBc,EAASF,KAA2BK,EAASH,EAAO15B,KAAKs5B,EAAO,CAAC,KAAO,QAAQ,KAAO,GAAG,KAAO/2B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,IAAI,IAAM,CAAC,KAAO,GAAG,OAAS,OAASm3B,GACrT,wCACJ,SAAW,CAAC,EAAE,YAAY,KAAO,SAASf,EAAUC,EAAOC,EAAQC,EAASv2B,GAC1E,IAAIw2B,EAAQO,EAAiB,MAAVV,EAAiBA,EAAUD,EAAUQ,aAAe,GAAKH,EAAiBL,EAAUK,gBAAkB,SAAShd,EAAQid,GACtI,GAAInzB,OAAOmC,UAAUixB,eAAel5B,KAAKgc,EAAQid,GAC/C,OAAOjd,EAAOid,IAKtB,OAA+W,OAAtWF,EAASC,EAAeH,EAAQ,MAAM74B,KAAKs5B,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,UAAYA,EAAQ,CAAC,KAAO,KAAK,KAAO,GAAG,GAAKJ,EAAUS,QAAQ,EAAG72B,EAAM,GAAG,QAAUo2B,EAAUS,QAAQ,EAAG72B,EAAM,GAAG,KAAOA,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,GAAG,IAAM,CAAC,KAAO,GAAG,OAAS,OAAiBw2B,EAAS,KACZ,OAA7WA,EAASC,EAAeH,EAAQ,MAAM74B,KAAKs5B,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,cAAgBA,EAAQ,CAAC,KAAO,KAAK,KAAO,GAAG,GAAKJ,EAAUS,QAAQ,GAAI72B,EAAM,GAAG,QAAUo2B,EAAUS,QAAQ,GAAI72B,EAAM,GAAG,KAAOA,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,GAAG,IAAM,CAAC,KAAO,GAAG,OAAS,OAAiBw2B,EAAS,KAC7B,OAAhWA,EAASC,EAAeH,EAAQ,MAAM74B,KAAKs5B,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,iBAAmBA,EAAQ,CAAC,KAAO,KAAK,KAAO,GAAG,GAAKJ,EAAUS,QAAQ,GAAI72B,EAAM,GAAG,QAAUo2B,EAAUU,KAAK,KAAO92B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,GAAG,IAAM,CAAC,KAAO,GAAG,OAAS,OAAiBw2B,EAAS,KACf,OAAjWA,EAASC,EAAeH,EAAQ,MAAM74B,KAAKs5B,EAAmF,OAA1EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,WAAaA,GAAmBI,EAAeD,EAAO,kBAAoBA,EAAQ,CAAC,KAAO,KAAK,KAAO,GAAG,GAAKJ,EAAUS,QAAQ,GAAI72B,EAAM,GAAG,QAAUo2B,EAAUU,KAAK,KAAO92B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,GAAG,IAAM,CAAC,KAAO,GAAG,OAAS,OAAiBw2B,EAAS,KACvX,SAAU,2BCzNZ,IAAI/T,EAAa,EAAQ,OAEzByT,EAAOC,SAAW1T,EAAoB,SAAKA,GAAYta,SAAS,CAAC,SAAW,CAAC,EAAE,YAAY,KAAO,SAASiuB,EAAUC,EAAOC,EAAQC,EAASv2B,GACzI,IAAIm3B,EAAQV,EAAiBL,EAAUK,gBAAkB,SAAShd,EAAQid,GACtE,GAAInzB,OAAOmC,UAAUixB,eAAel5B,KAAKgc,EAAQid,GAC/C,OAAOjd,EAAOid,IAKtB,MAAO,wEACHN,EAAUc,iBAAgO,mBAA7MC,EAA2I,OAAjIA,EAASV,EAAeH,EAAQ,sBAAkC,MAAVD,EAAiBI,EAAeJ,EAAO,oBAAsBA,IAAmBc,EAASf,EAAUgB,MAAMC,eAA+CF,EAAO15B,KAAe,MAAV44B,EAAiBA,EAAUD,EAAUQ,aAAe,GAAI,CAAC,KAAO,mBAAmB,KAAO,GAAG,KAAO52B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,GAAG,IAAM,CAAC,KAAO,EAAE,OAAS,OAASm3B,GACnb,mBACJ,SAAU,2BCbZ,IAAI1U,EAAa,EAAQ,OAEzByT,EAAOC,SAAW1T,EAAoB,SAAKA,GAAYta,SAAS,CAAC,EAAI,SAASiuB,EAAUC,EAAOC,EAAQC,EAASv2B,GAC5G,IAAIm3B,EAAQV,EAAiBL,EAAUK,gBAAkB,SAAShd,EAAQid,GACtE,GAAInzB,OAAOmC,UAAUixB,eAAel5B,KAAKgc,EAAQid,GAC/C,OAAOjd,EAAOid,IAKtB,MAAO,wEACHN,EAAUc,iBAAsO,mBAAnNC,EAAiJ,OAAvIA,EAASV,EAAeH,EAAQ,yBAAqC,MAAVD,EAAiBI,EAAeJ,EAAO,uBAAyBA,IAAmBc,EAASf,EAAUgB,MAAMC,eAA+CF,EAAO15B,KAAe,MAAV44B,EAAiBA,EAAUD,EAAUQ,aAAe,GAAI,CAAC,KAAO,sBAAsB,KAAO,GAAG,KAAO52B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,GAAG,IAAM,CAAC,KAAO,EAAE,OAAS,OAASm3B,GAC5b,mBACJ,EAAI,SAASf,EAAUC,EAAOC,EAAQC,EAASv2B,GAC7C,IAAIm3B,EAAQJ,EAAiB,MAAVV,EAAiBA,EAAUD,EAAUQ,aAAe,GAAKK,EAAOb,EAAUgB,MAAMC,cAAeC,EAAO,WAAYC,EAAOnB,EAAUc,iBAAkBT,EAAiBL,EAAUK,gBAAkB,SAAShd,EAAQid,GAClO,GAAInzB,OAAOmC,UAAUixB,eAAel5B,KAAKgc,EAAQid,GAC/C,OAAOjd,EAAOid,IAKtB,MAAO,gCACHa,SAASJ,EAAuI,OAA7HA,EAASV,EAAeH,EAAQ,oBAAgC,MAAVD,EAAiBI,EAAeJ,EAAO,kBAAoBA,IAAmBc,EAASF,KAA2BK,EAASH,EAAO15B,KAAKs5B,EAAO,CAAC,KAAO,iBAAiB,KAAO,GAAG,KAAO/2B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,IAAI,IAAM,CAAC,KAAO,EAAE,OAAS,OAASm3B,GAC9U,KACAI,SAASJ,EAAiJ,OAAvIA,EAASV,EAAeH,EAAQ,yBAAqC,MAAVD,EAAiBI,EAAeJ,EAAO,uBAAyBA,IAAmBc,EAASF,KAA2BK,EAASH,EAAO15B,KAAKs5B,EAAO,CAAC,KAAO,sBAAsB,KAAO,GAAG,KAAO/2B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,IAAI,IAAM,CAAC,KAAO,EAAE,OAAS,OAASm3B,GAC7V,gBACJ,EAAI,SAASf,EAAUC,EAAOC,EAAQC,EAASv2B,GAC7C,IAAIw2B,EAAQC,EAAiBL,EAAUK,gBAAkB,SAAShd,EAAQid,GACtE,GAAInzB,OAAOmC,UAAUixB,eAAel5B,KAAKgc,EAAQid,GAC/C,OAAOjd,EAAOid,IAKtB,OAAwV,OAA/UF,EAASC,EAAeH,EAAQ,MAAM74B,KAAe,MAAV44B,EAAiBA,EAAUD,EAAUQ,aAAe,GAAe,MAAVP,EAAiBI,EAAeJ,EAAO,iBAAmBA,EAAQ,CAAC,KAAO,KAAK,KAAO,GAAG,GAAKD,EAAUS,QAAQ,EAAG72B,EAAM,GAAG,QAAUo2B,EAAUU,KAAK,KAAO92B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,GAAG,IAAM,CAAC,KAAO,GAAG,OAAS,OAAiBw2B,EAAS,IACxW,EAAI,SAASJ,EAAUC,EAAOC,EAAQC,EAASv2B,GAC7C,IAAIm3B,EAAQJ,EAAiB,MAAVV,EAAiBA,EAAUD,EAAUQ,aAAe,GAAKK,EAAOb,EAAUgB,MAAMC,cAAeC,EAAO,WAAYC,EAAOnB,EAAUc,iBAAkBT,EAAiBL,EAAUK,gBAAkB,SAAShd,EAAQid,GAClO,GAAInzB,OAAOmC,UAAUixB,eAAel5B,KAAKgc,EAAQid,GAC/C,OAAOjd,EAAOid,IAKtB,MAAO,gCACHa,SAASJ,EAA+I,OAArIA,EAASV,EAAeH,EAAQ,wBAAoC,MAAVD,EAAiBI,EAAeJ,EAAO,sBAAwBA,IAAmBc,EAASF,KAA2BK,EAASH,EAAO15B,KAAKs5B,EAAO,CAAC,KAAO,qBAAqB,KAAO,GAAG,KAAO/2B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,IAAI,IAAM,CAAC,KAAO,GAAG,OAAS,OAASm3B,GAC5V,KACAI,SAASJ,EAAiJ,OAAvIA,EAASV,EAAeH,EAAQ,yBAAqC,MAAVD,EAAiBI,EAAeJ,EAAO,uBAAyBA,IAAmBc,EAASF,KAA2BK,EAASH,EAAO15B,KAAKs5B,EAAO,CAAC,KAAO,sBAAsB,KAAO,GAAG,KAAO/2B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,IAAI,IAAM,CAAC,KAAO,GAAG,OAAS,OAASm3B,GAC/V,gBACJ,SAAW,CAAC,EAAE,YAAY,KAAO,SAASf,EAAUC,EAAOC,EAAQC,EAASv2B,GAC1E,IAAIw2B,EAAQO,EAAiB,MAAVV,EAAiBA,EAAUD,EAAUQ,aAAe,GAAKH,EAAiBL,EAAUK,gBAAkB,SAAShd,EAAQid,GACtI,GAAInzB,OAAOmC,UAAUixB,eAAel5B,KAAKgc,EAAQid,GAC/C,OAAOjd,EAAOid,IAKtB,OAAyW,OAAhWF,EAASC,EAAeH,EAAQ,UAAU74B,KAAKs5B,EAAoF,OAA3EP,EAAoB,MAAVH,EAAiBI,EAAeJ,EAAO,YAAcA,GAAmBI,EAAeD,EAAO,UAAYA,EAAQ,CAAC,KAAO,SAAS,KAAO,GAAG,GAAKJ,EAAUS,QAAQ,EAAG72B,EAAM,GAAG,QAAUo2B,EAAUU,KAAK,KAAO92B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,GAAG,IAAM,CAAC,KAAO,EAAE,OAAS,QAAkBw2B,EAAS,IACrX,4CACmT,OAAjTA,EAASC,EAAeH,EAAQ,MAAM74B,KAAKs5B,EAAkB,MAAVV,EAAiBI,EAAeJ,EAAO,sBAAwBA,EAAQ,CAAC,KAAO,KAAK,KAAO,GAAG,GAAKD,EAAUS,QAAQ,EAAG72B,EAAM,GAAG,QAAUo2B,EAAUS,QAAQ,EAAG72B,EAAM,GAAG,KAAOA,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,GAAG,IAAM,CAAC,KAAO,GAAG,OAAS,OAAiBw2B,EAAS,KACvU,SAAU,2BC3DZ,IAAI/T,EAAa,EAAQ,OAEzByT,EAAOC,SAAW1T,EAAoB,SAAKA,GAAYta,SAAS,CAAC,SAAW,CAAC,EAAE,YAAY,KAAO,SAASiuB,EAAUC,EAAOC,EAAQC,EAASv2B,GACzI,IAAIm3B,EAAQV,EAAiBL,EAAUK,gBAAkB,SAAShd,EAAQid,GACtE,GAAInzB,OAAOmC,UAAUixB,eAAel5B,KAAKgc,EAAQid,GAC/C,OAAOjd,EAAOid,IAKtB,MAAO,yEACHN,EAAUc,iBAAsN,mBAAnMC,EAAiI,OAAvHA,EAASV,EAAeH,EAAQ,iBAA6B,MAAVD,EAAiBI,EAAeJ,EAAO,eAAiBA,IAAmBc,EAASf,EAAUgB,MAAMC,eAA+CF,EAAO15B,KAAe,MAAV44B,EAAiBA,EAAUD,EAAUQ,aAAe,GAAI,CAAC,KAAO,cAAc,KAAO,GAAG,KAAO52B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,GAAG,IAAM,CAAC,KAAO,EAAE,OAAS,OAASm3B,GACpa,mBACJ,SAAU,2BCbZ,IAAI1U,EAAa,EAAQ,OAEzByT,EAAOC,SAAW1T,EAAoB,SAAKA,GAAYta,SAAS,CAAC,SAAW,CAAC,EAAE,YAAY,KAAO,SAASiuB,EAAUC,EAAOC,EAAQC,EAASv2B,GACzI,IAAIm3B,EAAQJ,EAAiB,MAAVV,EAAiBA,EAAUD,EAAUQ,aAAe,GAAKK,EAAOb,EAAUgB,MAAMC,cAAeC,EAAO,WAAYC,EAAOnB,EAAUc,iBAAkBT,EAAiBL,EAAUK,gBAAkB,SAAShd,EAAQid,GAClO,GAAInzB,OAAOmC,UAAUixB,eAAel5B,KAAKgc,EAAQid,GAC/C,OAAOjd,EAAOid,IAKtB,MAAO,4DACHa,SAASJ,EAA+I,OAArIA,EAASV,EAAeH,EAAQ,wBAAoC,MAAVD,EAAiBI,EAAeJ,EAAO,sBAAwBA,IAAmBc,EAASF,KAA2BK,EAASH,EAAO15B,KAAKs5B,EAAO,CAAC,KAAO,qBAAqB,KAAO,GAAG,KAAO/2B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,IAAI,IAAM,CAAC,KAAO,EAAE,OAAS,OAASm3B,GAC1V,wEACAI,SAASJ,EAA+I,OAArIA,EAASV,EAAeH,EAAQ,wBAAoC,MAAVD,EAAiBI,EAAeJ,EAAO,sBAAwBA,IAAmBc,EAASF,KAA2BK,EAASH,EAAO15B,KAAKs5B,EAAO,CAAC,KAAO,qBAAqB,KAAO,GAAG,KAAO/2B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,IAAI,IAAM,CAAC,KAAO,EAAE,OAAS,OAASm3B,GAC1V,YACAI,SAASJ,EAA+H,OAArHA,EAASV,EAAeH,EAAQ,gBAA4B,MAAVD,EAAiBI,EAAeJ,EAAO,cAAgBA,IAAmBc,EAASF,KAA2BK,EAASH,EAAO15B,KAAKs5B,EAAO,CAAC,KAAO,aAAa,KAAO,GAAG,KAAO/2B,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,IAAI,IAAM,CAAC,KAAO,EAAE,OAAS,QAAUm3B,GACnU,uCACJ,SAAU,2BCjBZ,IAAIK,EAAM,CACT,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,MACX,aAAc,MACd,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,gBAAiB,MACjB,aAAc,MACd,gBAAiB,MACjB,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,MACX,aAAc,MACd,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,WAAY,MACZ,cAAe,MACf,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,YAAa,MACb,eAAgB,MAChB,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,QAAS,MACT,aAAc,MACd,gBAAiB,MACjB,WAAY,MACZ,UAAW,KACX,aAAc,KACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,YAAa,MACb,eAAgB,MAChB,UAAW,KACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,gBAAiB,MACjB,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,OAIf,SAASC,EAAeC,GACvB,IAAIz1B,EAAK01B,EAAsBD,GAC/B,OAAOE,EAAoB31B,GAE5B,SAAS01B,EAAsBD,GAC9B,IAAIE,EAAoBC,EAAEL,EAAKE,GAAM,CACpC,IAAInuB,EAAI,IAAIlE,MAAM,uBAAyBqyB,EAAM,KAEjD,MADAnuB,EAAEuuB,KAAO,mBACHvuB,EAEP,OAAOiuB,EAAIE,GAEZD,EAAeM,KAAO,WACrB,OAAOx0B,OAAOw0B,KAAKP,IAEpBC,EAAelsB,QAAUosB,EACzBzB,EAAOC,QAAUsB,EACjBA,EAAex1B,GAAK,QClShB+1B,EAA2B,GAG/B,SAASJ,EAAoBK,GAE5B,IAAIC,EAAeF,EAAyBC,GAC5C,QAAqB/6B,IAAjBg7B,EACH,OAAOA,EAAa/B,QAGrB,IAAID,EAAS8B,EAAyBC,GAAY,CACjDh2B,GAAIg2B,EACJE,QAAQ,EACRhC,QAAS,IAUV,OANAiC,EAAoBH,GAAUx6B,KAAKy4B,EAAOC,QAASD,EAAQA,EAAOC,QAASyB,GAG3E1B,EAAOiC,QAAS,EAGTjC,EAAOC,QAIfyB,EAAoBlR,EAAI0R,EC5BxBR,EAAoBS,KAAO,WAC1B,MAAM,IAAIhzB,MAAM,mCCDjBuyB,EAAoBU,KAAO,GlFAvB/7B,EAAW,GACfq7B,EAAoBW,EAAI,SAAS/2B,EAAQg3B,EAAUC,EAAIC,GACtD,IAAGF,EAAH,CAMA,IAAIG,EAAeC,EAAAA,EACnB,IAAStjB,EAAI,EAAGA,EAAI/Y,EAASuC,OAAQwW,IAAK,CACrCkjB,EAAWj8B,EAAS+Y,GAAG,GACvBmjB,EAAKl8B,EAAS+Y,GAAG,GACjBojB,EAAWn8B,EAAS+Y,GAAG,GAE3B,IAJA,IAGIujB,GAAY,EACPxjB,EAAI,EAAGA,EAAImjB,EAAS15B,OAAQuW,MACpB,EAAXqjB,GAAsBC,GAAgBD,IAAan1B,OAAOw0B,KAAKH,EAAoBW,GAAGO,OAAM,SAASr4B,GAAO,OAAOm3B,EAAoBW,EAAE93B,GAAK+3B,EAASnjB,OAC3JmjB,EAASO,OAAO1jB,IAAK,IAErBwjB,GAAY,EACTH,EAAWC,IAAcA,EAAeD,IAG7C,GAAGG,EAAW,CACbt8B,EAASw8B,OAAOzjB,IAAK,GACrB,IAAIyM,EAAI0W,SACEv7B,IAAN6kB,IAAiBvgB,EAASugB,IAGhC,OAAOvgB,EAzBNk3B,EAAWA,GAAY,EACvB,IAAI,IAAIpjB,EAAI/Y,EAASuC,OAAQwW,EAAI,GAAK/Y,EAAS+Y,EAAI,GAAG,GAAKojB,EAAUpjB,IAAK/Y,EAAS+Y,GAAK/Y,EAAS+Y,EAAI,GACrG/Y,EAAS+Y,GAAK,CAACkjB,EAAUC,EAAIC,ImFJ/Bd,EAAoBpe,EAAI,SAAS0c,GAChC,IAAI8C,EAAS9C,GAAUA,EAAO+C,WAC7B,WAAa,OAAO/C,EAAgB,SACpC,WAAa,OAAOA,GAErB,OADA0B,EAAoBsB,EAAEF,EAAQ,CAAEnX,EAAGmX,IAC5BA,GCLRpB,EAAoBsB,EAAI,SAAS/C,EAASgD,GACzC,IAAI,IAAI14B,KAAO04B,EACXvB,EAAoBC,EAAEsB,EAAY14B,KAASm3B,EAAoBC,EAAE1B,EAAS11B,IAC5E8C,OAAO61B,eAAejD,EAAS11B,EAAK,CAAE44B,YAAY,EAAM5yB,IAAK0yB,EAAW14B,MCJ3Em3B,EAAoBpQ,EAAI,WACvB,GAA0B,iBAAf8R,WAAyB,OAAOA,WAC3C,IACC,OAAOx8B,MAAQ,IAAIy8B,SAAS,cAAb,GACd,MAAOhwB,GACR,GAAsB,iBAAXnJ,OAAqB,OAAOA,QALjB,GCAxBw3B,EAAoBC,EAAI,SAAS2B,EAAKrmB,GAAQ,OAAO5P,OAAOmC,UAAUixB,eAAel5B,KAAK+7B,EAAKrmB,ICC/FykB,EAAoB7V,EAAI,SAASoU,GACX,oBAAXsD,QAA0BA,OAAOC,aAC1Cn2B,OAAO61B,eAAejD,EAASsD,OAAOC,YAAa,CAAE94B,MAAO,WAE7D2C,OAAO61B,eAAejD,EAAS,aAAc,CAAEv1B,OAAO,KCLvDg3B,EAAoB+B,IAAM,SAASzD,GAGlC,OAFAA,EAAO3Y,MAAQ,GACV2Y,EAAOxc,WAAUwc,EAAOxc,SAAW,IACjCwc,GCHR0B,EAAoBviB,EAAI,gBCAxBuiB,EAAoB9V,EAAIjW,SAAS+tB,SAAW3yB,KAAK4d,SAASjjB,KAK1D,IAAIi4B,EAAkB,CACrB,KAAM,GAaPjC,EAAoBW,EAAEljB,EAAI,SAASykB,GAAW,OAAoC,IAA7BD,EAAgBC,IAGrE,IAAIC,EAAuB,SAASC,EAA4Bh6B,GAC/D,IAKIi4B,EAAU6B,EALVtB,EAAWx4B,EAAK,GAChBi6B,EAAcj6B,EAAK,GACnBk6B,EAAUl6B,EAAK,GAGIsV,EAAI,EAC3B,GAAGkjB,EAAS2B,MAAK,SAASl4B,GAAM,OAA+B,IAAxB43B,EAAgB53B,MAAe,CACrE,IAAIg2B,KAAYgC,EACZrC,EAAoBC,EAAEoC,EAAahC,KACrCL,EAAoBlR,EAAEuR,GAAYgC,EAAYhC,IAGhD,GAAGiC,EAAS,IAAI14B,EAAS04B,EAAQtC,GAGlC,IADGoC,GAA4BA,EAA2Bh6B,GACrDsV,EAAIkjB,EAAS15B,OAAQwW,IACzBwkB,EAAUtB,EAASljB,GAChBsiB,EAAoBC,EAAEgC,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBC,GAAW,EAE5B,OAAOlC,EAAoBW,EAAE/2B,IAG1B44B,EAAqBnzB,KAA4B,sBAAIA,KAA4B,uBAAK,GAC1FmzB,EAAmBlzB,QAAQ6yB,EAAqB75B,KAAK,KAAM,IAC3Dk6B,EAAmB3yB,KAAOsyB,EAAqB75B,KAAK,KAAMk6B,EAAmB3yB,KAAKvH,KAAKk6B,OClDvFxC,EAAoByC,QAAKn9B,ECGzB,IAAIo9B,EAAsB1C,EAAoBW,OAAEr7B,EAAW,CAAC,OAAO,WAAa,OAAO06B,EAAoB,UAC3G0C,EAAsB1C,EAAoBW,EAAE+B","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/OC/legacy-loader.js","webpack:///nextcloud/core/src/OC/notification.js","webpack:///nextcloud/core/src/OC/xhr-error.js","webpack:///nextcloud/core/src/OC/apps.js","webpack:///nextcloud/core/src/OCP/appconfig.js","webpack:///nextcloud/core/src/OC/appconfig.js","webpack:///nextcloud/core/src/OC/appswebroots.js","webpack:///nextcloud/core/src/OC/backbone-webdav.js","webpack:///nextcloud/core/src/OC/backbone.js","webpack:///nextcloud/core/src/OC/config.js","webpack:///nextcloud/core/src/OC/contactsmenu.js","webpack:///nextcloud/core/src/OC/currentuser.js","webpack:///nextcloud/core/src/OCA/index.js","webpack:///nextcloud/core/src/OCA/search.js","webpack:///nextcloud/core/src/OC/dialogs.js","webpack:///nextcloud/core/src/OC/requesttoken.js","webpack:///nextcloud/core/src/OC/eventsource.js","webpack:///nextcloud/core/src/OC/menu.js","webpack:///nextcloud/core/src/OC/constants.js","webpack:///nextcloud/core/src/OC/admin.js","webpack:///nextcloud/core/src/OC/l10n-registry.js","webpack:///nextcloud/core/src/OC/l10n.js","webpack:///nextcloud/core/src/OC/msg.js","webpack:///nextcloud/core/src/OC/password-confirmation.js","webpack:///nextcloud/core/src/OC/theme.js","webpack:///nextcloud/core/src/OC/util-history.js","webpack:///nextcloud/core/src/OC/util.js","webpack:///nextcloud/core/src/OC/debug.js","webpack:///nextcloud/core/src/OC/webroot.js","webpack:///nextcloud/core/src/OC/get_set.js","webpack:///nextcloud/core/src/OC/index.js","webpack:///nextcloud/core/src/OC/appsettings.js","webpack:///nextcloud/core/src/OC/capabilities.js","webpack:///nextcloud/core/src/OC/host.js","webpack:///nextcloud/core/src/OC/query-string.js","webpack:///nextcloud/core/src/OC/plugins.js","webpack:///nextcloud/core/src/OC/navigation.js","webpack:///nextcloud/core/src/OC/routing.js","webpack:///nextcloud/core/src/views/Login.vue?vue&type=template&id=cdd35698&","webpack:///nextcloud/core/src/components/login/LoginButton.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/login/LoginButton.vue","webpack://nextcloud/./core/src/components/login/LoginButton.vue?14f0","webpack:///nextcloud/core/src/components/login/LoginButton.vue?vue&type=template&id=125b100b&scoped=true&","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/login/LoginForm.vue","webpack://nextcloud/./core/src/components/login/LoginForm.vue?a678","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=template&id=0b3a0522&scoped=true&","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/services/WebAuthnAuthenticationService.js","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?d427","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?09eb","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=template&id=4f29a6e2&scoped=true&","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/login/ResetPassword.vue","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?0bfe","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?9d75","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=template&id=d9d670b8&scoped=true&","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?9464","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?30ca","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=template&id=9ae5fdb4&scoped=true&","webpack:///nextcloud/core/src/views/Login.vue","webpack:///nextcloud/core/src/views/Login.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/views/Login.vue?8b77","webpack://nextcloud/./core/src/views/Login.vue?3468","webpack:///nextcloud/core/src/mixins/Nextcloud.js","webpack:///nextcloud/core/src/login.js","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=style&index=0&id=4f29a6e2&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=style&index=0&id=d9d670b8&scoped=true&lang=css&","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=style&index=0&id=9ae5fdb4&scoped=true&lang=css&","webpack:///nextcloud/core/src/views/Login.vue?vue&type=style&index=0&lang=css&","webpack:///nextcloud/core/src/OC/contactsmenu/contact.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/error.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/list.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/loading.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/menu.handlebars","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","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/runtime/nonce","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 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\nimport { generateFilePath } from '@nextcloud/router'\n\nconst loadedScripts = {}\nconst loadedStyles = []\n\n/**\n * Load a script for the server and load it. If the script is already loaded,\n * the event handler will be called directly\n *\n * @param {string} app the app id to which the script belongs\n * @param {string} script the filename of the script\n * @param {Function} ready event handler to be called when the script is loaded\n * @return {jQuery.Deferred}\n * @deprecated 16.0.0 Use OCP.Loader.loadScript\n */\nexport const addScript = (app, script, ready) => {\n\tconsole.warn('OC.addScript is deprecated, use OCP.Loader.loadScript instead')\n\n\tlet deferred\n\tconst path = generateFilePath(app, 'js', script + '.js')\n\tif (!loadedScripts[path]) {\n\t\tdeferred = $.Deferred()\n\t\t$.getScript(path, () => deferred.resolve())\n\t\tloadedScripts[path] = deferred\n\t} else {\n\t\tif (ready) {\n\t\t\tready()\n\t\t}\n\t}\n\treturn loadedScripts[path]\n}\n\n/**\n * Loads a CSS file\n *\n * @param {string} app the app id to which the css style belongs\n * @param {string} style the filename of the css file\n * @deprecated 16.0.0 Use OCP.Loader.loadStylesheet\n */\nexport const addStyle = (app, style) => {\n\tconsole.warn('OC.addStyle is deprecated, use OCP.Loader.loadStylesheet instead')\n\n\tconst path = generateFilePath(app, 'css', style + '.css')\n\tif (loadedStyles.indexOf(path) === -1) {\n\t\tloadedStyles.push(path)\n\t\tif (document.createStyleSheet) {\n\t\t\tdocument.createStyleSheet(path)\n\t\t} else {\n\t\t\tstyle = $('<link rel=\"stylesheet\" type=\"text/css\" href=\"' + path + '\"/>')\n\t\t\t$('head').append(style)\n\t\t}\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author npmbuildbot[bot] \"npmbuildbot[bot]@users.noreply.github.com\"\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 */\n\nimport _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\nimport { showMessage, TOAST_DEFAULT_TIMEOUT, TOAST_PERMANENT_TIMEOUT } from '@nextcloud/dialogs'\n\n/**\n * @todo Write documentation\n * @deprecated 17.0.0 use the `@nextcloud/dialogs` package instead\n * @namespace OC.Notification\n */\nexport default {\n\n\tupdatableNotification: null,\n\n\tgetDefaultNotificationFunction: null,\n\n\t/**\n\t * @param {Function} callback callback function\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tsetDefault(callback) {\n\t\tthis.getDefaultNotificationFunction = callback\n\t},\n\n\t/**\n\t * Hides a notification.\n\t *\n\t * If a row is given, only hide that one.\n\t * If no row is given, hide all notifications.\n\t *\n\t * @param {jQuery} [$row] notification row\n\t * @param {Function} [callback] callback\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\thide($row, callback) {\n\t\tif (_.isFunction($row)) {\n\t\t\t// first arg is the callback\n\t\t\tcallback = $row\n\t\t\t$row = undefined\n\t\t}\n\n\t\tif (!$row) {\n\t\t\tconsole.error('Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification')\n\t\t\treturn\n\t\t}\n\n\t\t// remove the row directly\n\t\t$row.each(function() {\n\t\t\tif ($(this)[0].toastify) {\n\t\t\t\t$(this)[0].toastify.hideToast()\n\t\t\t} else {\n\t\t\t\tconsole.error('cannot hide toast because object is not set')\n\t\t\t}\n\t\t\tif (this === this.updatableNotification) {\n\t\t\t\tthis.updatableNotification = null\n\t\t\t}\n\t\t})\n\t\tif (callback) {\n\t\t\tcallback.call()\n\t\t}\n\t\tif (this.getDefaultNotificationFunction) {\n\t\t\tthis.getDefaultNotificationFunction()\n\t\t}\n\t},\n\n\t/**\n\t * Shows a notification as HTML without being sanitized before.\n\t * If you pass unsanitized user input this may lead to a XSS vulnerability.\n\t * Consider using show() instead of showHTML()\n\t *\n\t * @param {string} html Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout=0] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowHtml(html, options) {\n\t\toptions = options || {}\n\t\toptions.isHTML = true\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(html, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Shows a sanitized notification\n\t *\n\t * @param {string} text Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout=0] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshow(text, options) {\n\t\tconst escapeHTML = function(text) {\n\t\t\treturn text.toString()\n\t\t\t\t.split('&').join('&amp;')\n\t\t\t\t.split('<').join('&lt;')\n\t\t\t\t.split('>').join('&gt;')\n\t\t\t\t.split('\"').join('&quot;')\n\t\t\t\t.split('\\'').join('&#039;')\n\t\t}\n\n\t\toptions = options || {}\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(escapeHTML(text), options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Updates (replaces) a sanitized notification.\n\t *\n\t * @param {string} text Message to display\n\t * @return {jQuery} JQuery element for notificaiton row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowUpdate(text) {\n\t\tif (this.updatableNotification) {\n\t\t\tthis.updatableNotification.hideToast()\n\t\t}\n\t\tthis.updatableNotification = showMessage(text, { timeout: TOAST_PERMANENT_TIMEOUT })\n\t\tthis.updatableNotification.toastElement.toastify = this.updatableNotification\n\t\treturn $(this.updatableNotification.toastElement)\n\t},\n\n\t/**\n\t * Shows a notification that disappears after x seconds, default is\n\t * 7 seconds\n\t *\n\t * @param {string} text Message to show\n\t * @param {Array} [options] options array\n\t * @param {number} [options.timeout=7] timeout in seconds, if this is 0 it will show the message permanently\n\t * @param {boolean} [options.isHTML=false] an indicator for HTML notifications (true) or text (false)\n\t * @param {string} [options.type] notification type\n\t * @return {JQuery} the toast element\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowTemporary(text, options) {\n\t\toptions = options || {}\n\t\toptions.timeout = options.timeout || TOAST_DEFAULT_TIMEOUT\n\t\tconst toast = showMessage(text, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Returns whether a notification is hidden.\n\t *\n\t * @return {boolean}\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tisHidden() {\n\t\treturn !$('#content').find('.toastify').length\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\n\nimport OC from './index'\nimport Notification from './notification'\n\n/**\n * Warn users that the connection to the server was lost temporarily\n *\n * This function is throttled to prevent stacked notfications.\n * After 7sec the first notification is gone, then we can show another one\n * if necessary.\n */\nexport const ajaxConnectionLostHandler = _.throttle(() => {\n\tNotification.showTemporary(t('core', 'Connection to server lost'))\n}, 7 * 1000, { trailing: false })\n\n/**\n * Process ajax error, redirects to main page\n * if an error/auth error status was returned.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const processAjaxError = xhr => {\n\t// purposefully aborted request ?\n\t// OC._userIsNavigatingAway needed to distinguish ajax calls cancelled by navigating away\n\t// from calls cancelled by failed cross-domain ajax due to SSO redirect\n\tif (xhr.status === 0 && (xhr.statusText === 'abort' || xhr.statusText === 'timeout' || OC._reloadCalled)) {\n\t\treturn\n\t}\n\n\tif (_.contains([302, 303, 307, 401], xhr.status) && OC.currentUser) {\n\t\t// sometimes \"beforeunload\" happens later, so need to defer the reload a bit\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\tlet timer = 0\n\t\t\t\tconst seconds = 5\n\t\t\t\tconst interval = setInterval(function() {\n\t\t\t\t\tNotification.showUpdate(n('core', 'Problem loading page, reloading in %n second', 'Problem loading page, reloading in %n seconds', seconds - timer))\n\t\t\t\t\tif (timer >= seconds) {\n\t\t\t\t\t\tclearInterval(interval)\n\t\t\t\t\t\tOC.reload()\n\t\t\t\t\t}\n\t\t\t\t\ttimer++\n\t\t\t\t}, 1000 // 1 second interval\n\t\t\t\t)\n\n\t\t\t\t// only call reload once\n\t\t\t\tOC._reloadCalled = true\n\t\t\t}\n\t\t}, 100)\n\t} else if (xhr.status === 0) {\n\t\t// Connection lost (e.g. WiFi disconnected or server is down)\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\t// TODO: call method above directly\n\t\t\t\tOC._ajaxConnectionLostHandler()\n\t\t\t}\n\t\t}, 100)\n\t}\n}\n\n/**\n * Registers XmlHttpRequest object for global error processing.\n *\n * This means that if this XHR object returns 401 or session timeout errors,\n * the current page will automatically be reloaded.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const registerXHRForErrorProcessing = xhr => {\n\tconst loadCallback = () => {\n\t\tif (xhr.readyState !== 4) {\n\t\t\treturn\n\t\t}\n\n\t\tif ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) {\n\t\t\treturn\n\t\t}\n\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tconst errorCallback = () => {\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tif (xhr.addEventListener) {\n\t\txhr.addEventListener('load', loadCallback)\n\t\txhr.addEventListener('error', errorCallback)\n\t}\n\n}\n","/**\n * @copyright Bernhard Posselt 2014\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport $ from 'jquery'\n\nlet dynamicSlideToggleEnabled = false\n\nconst Apps = {\n\tenableDynamicSlideToggle() {\n\t\tdynamicSlideToggleEnabled = true\n\t},\n}\n\n/**\n * Shows the #app-sidebar and add .with-app-sidebar to subsequent siblings\n *\n * @param {object} [$el] sidebar element to show, defaults to $('#app-sidebar')\n */\nApps.showAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.removeClass('disappear').show()\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Shows the #app-sidebar and removes .with-app-sidebar from subsequent\n * siblings\n *\n * @param {object} [$el] sidebar element to hide, defaults to $('#app-sidebar')\n */\nApps.hideAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.hide().addClass('disappear')\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Provides a way to slide down a target area through a button and slide it\n * up if the user clicks somewhere else. Used for the news app settings and\n * add new field.\n *\n * Usage:\n * <button data-apps-slide-toggle=\".slide-area\">slide</button>\n * <div class=\".slide-area\" class=\"hidden\">I'm sliding up</div>\n */\nexport const registerAppsSlideToggle = () => {\n\tlet buttons = $('[data-apps-slide-toggle]')\n\n\tif (buttons.length === 0) {\n\t\t$('#app-navigation').addClass('without-app-settings')\n\t}\n\n\t$(document).click(function(event) {\n\n\t\tif (dynamicSlideToggleEnabled) {\n\t\t\tbuttons = $('[data-apps-slide-toggle]')\n\t\t}\n\n\t\tbuttons.each(function(index, button) {\n\n\t\t\tconst areaSelector = $(button).data('apps-slide-toggle')\n\t\t\tconst area = $(areaSelector)\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction hideArea() {\n\t\t\t\tarea.slideUp(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('hide'))\n\t\t\t\t})\n\t\t\t\tarea.removeClass('opened')\n\t\t\t\t$(button).removeClass('opened')\n\t\t\t}\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction showArea() {\n\t\t\t\tarea.slideDown(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('show'))\n\t\t\t\t})\n\t\t\t\tarea.addClass('opened')\n\t\t\t\t$(button).addClass('opened')\n\t\t\t\tconst input = $(areaSelector + ' [autofocus]')\n\t\t\t\tif (input.length === 1) {\n\t\t\t\t\tinput.focus()\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// do nothing if the area is animated\n\t\t\tif (!area.is(':animated')) {\n\n\t\t\t\t// button toggles the area\n\t\t\t\tif ($(button).is($(event.target).closest('[data-apps-slide-toggle]'))) {\n\t\t\t\t\tif (area.is(':visible')) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tshowArea()\n\t\t\t\t\t}\n\n\t\t\t\t\t// all other areas that have not been clicked but are open\n\t\t\t\t\t// should be slid up\n\t\t\t\t} else {\n\t\t\t\t\tconst closest = $(event.target).closest(areaSelector)\n\t\t\t\t\tif (area.is(':visible') && closest[0] !== area[0]) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t})\n}\n\nexport default Apps\n","/**\n * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport $ from 'jquery'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nimport OC from '../OC/index'\n\n/**\n * @param {string} method 'post' or 'delete'\n * @param {string} endpoint endpoint\n * @param {object} [options] destructuring object\n * @param {object} [options.data] option data\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n */\nfunction call(method, endpoint, options) {\n\tif ((method === 'post' || method === 'delete') && OC.PasswordConfirmation.requiresPasswordConfirmation()) {\n\t\tOC.PasswordConfirmation.requirePasswordConfirmation(_.bind(call, this, method, endpoint, options))\n\t\treturn\n\t}\n\n\toptions = options || {}\n\t$.ajax({\n\t\ttype: method.toUpperCase(),\n\t\turl: generateOcsUrl('apps/provisioning_api/api/v1/config/apps') + endpoint,\n\t\tdata: options.data || {},\n\t\tsuccess: options.success,\n\t\terror: options.error,\n\t})\n}\n\n/**\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @since 11.0.0\n */\nexport function getApps(options) {\n\tcall('get', '', options)\n}\n\n/**\n * @param {string} app app id\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getKeys(app, options) {\n\tcall('get', '/' + app, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string | Function} defaultValue default value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getValue(app, key, defaultValue, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tdefaultValue,\n\t}\n\n\tcall('get', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string} value value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function setValue(app, key, value, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tvalue,\n\t}\n\n\tcall('post', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function deleteKey(app, key, options) {\n\tcall('delete', '/' + app + '/' + key, options)\n}\n","/**\n * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Jörn Friedrich Dreyer <jfd@butonic.de>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n/* eslint-disable */\n import { getValue, setValue, getApps, getKeys, deleteKey } from '../OCP/appconfig'\n\nexport const appConfig = window.oc_appconfig || {}\n\n/**\n * @namespace\n * @deprecated 16.0.0 Use OCP.AppConfig instead\n */\nexport const AppConfig = {\n\t/**\n\t * @deprecated Use OCP.AppConfig.getValue() instead\n\t */\n\tgetValue: function(app, key, defaultValue, callback) {\n\t\tgetValue(app, key, defaultValue, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.setValue() instead\n\t */\n\tsetValue: function(app, key, value) {\n\t\tsetValue(app, key, value)\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getApps() instead\n\t */\n\tgetApps: function(callback) {\n\t\tgetApps({\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getKeys() instead\n\t */\n\tgetKeys: function(app, callback) {\n\t\tgetKeys(app, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.deleteKey() instead\n\t */\n\tdeleteKey: function(app, key) {\n\t\tdeleteKey(app, key)\n\t}\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 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 */\n\nconst appswebroots = (window._oc_appswebroots !== undefined) ? window._oc_appswebroots : false\n\nexport default appswebroots\n","/**\n * Copyright (c) 2015\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport { dav } from 'davclient.js'\n\nconst methodMap = {\n\tcreate: 'POST',\n\tupdate: 'PROPPATCH',\n\tpatch: 'PROPPATCH',\n\tdelete: 'DELETE',\n\tread: 'PROPFIND'\n}\n\n// Throw an error when a URL is needed, and none is supplied.\nfunction urlError() {\n\tthrow new Error('A \"url\" property or function must be specified')\n}\n\n/**\n * Convert a single propfind result to JSON\n *\n * @param {Object} result\n * @param {Object} davProperties properties mapping\n */\nfunction parsePropFindResult(result, davProperties) {\n\tif (_.isArray(result)) {\n\t\treturn _.map(result, function(subResult) {\n\t\t\treturn parsePropFindResult(subResult, davProperties)\n\t\t})\n\t}\n\tvar props = {\n\t\thref: result.href\n\t}\n\n\t_.each(result.propStat, function(propStat) {\n\t\tif (propStat.status !== 'HTTP/1.1 200 OK') {\n\t\t\treturn\n\t\t}\n\n\t\tfor (var key in propStat.properties) {\n\t\t\tvar propKey = key\n\t\t\tif (key in davProperties) {\n\t\t\t\tpropKey = davProperties[key]\n\t\t\t}\n\t\t\tprops[propKey] = propStat.properties[key]\n\t\t}\n\t})\n\n\tif (!props.id) {\n\t\t// parse id from href\n\t\tprops.id = parseIdFromLocation(props.href)\n\t}\n\n\treturn props\n}\n\n/**\n * Parse ID from location\n *\n * @param {string} url url\n * @returns {string} id\n */\nfunction parseIdFromLocation(url) {\n\tvar queryPos = url.indexOf('?')\n\tif (queryPos > 0) {\n\t\turl = url.substr(0, queryPos)\n\t}\n\n\tvar parts = url.split('/')\n\tvar result\n\tdo {\n\t\tresult = parts[parts.length - 1]\n\t\tparts.pop()\n\t\t// note: first result can be empty when there is a trailing slash,\n\t\t// so we take the part before that\n\t} while (!result && parts.length > 0)\n\n\treturn result\n}\n\nfunction isSuccessStatus(status) {\n\treturn status >= 200 && status <= 299\n}\n\nfunction convertModelAttributesToDavProperties(attrs, davProperties) {\n\tvar props = {}\n\tvar key\n\tfor (key in attrs) {\n\t\tvar changedProp = davProperties[key]\n\t\tvar value = attrs[key]\n\t\tif (!changedProp) {\n\t\t\tconsole.warn('No matching DAV property for property \"' + key)\n\t\t\tchangedProp = key\n\t\t}\n\t\tif (_.isBoolean(value) || _.isNumber(value)) {\n\t\t\t// convert to string\n\t\t\tvalue = '' + value\n\t\t}\n\t\tprops[changedProp] = value\n\t}\n\treturn props\n}\n\nfunction callPropFind(client, options, model, headers) {\n\treturn client.propFind(\n\t\toptions.url,\n\t\t_.values(options.davProperties) || [],\n\t\toptions.depth,\n\t\theaders\n\t).then(function(response) {\n\t\tif (isSuccessStatus(response.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\tvar results = parsePropFindResult(response.body, propsMapping)\n\t\t\t\tif (options.depth > 0) {\n\t\t\t\t\t// discard root entry\n\t\t\t\t\tresults.shift()\n\t\t\t\t}\n\n\t\t\t\toptions.success(results)\n\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(response)\n\t\t}\n\t})\n}\n\nfunction callPropPatch(client, options, model, headers) {\n\treturn client.propPatch(\n\t\toptions.url,\n\t\tconvertModelAttributesToDavProperties(model.changed, options.davProperties),\n\t\theaders\n\t).then(function(result) {\n\t\tif (isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return the updated model\n\t\t\t\toptions.success(model.toJSON())\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(result)\n\t\t}\n\t})\n\n}\n\nfunction callMkCol(client, options, model, headers) {\n\t// call MKCOL without data, followed by PROPPATCH\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\tnull\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tcallPropPatch(client, options, model, headers)\n\t})\n}\n\nfunction callMethod(client, options, model, headers) {\n\theaders['Content-Type'] = 'application/json'\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\toptions.data\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tif (_.isFunction(options.success)) {\n\t\t\tif (options.type === 'PUT' || options.type === 'POST' || options.type === 'MKCOL') {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return anything\n\t\t\t\tvar responseJson = result.body || model.toJSON()\n\t\t\t\tvar locationHeader = result.xhr.getResponseHeader('Content-Location')\n\t\t\t\tif (options.type === 'POST' && locationHeader) {\n\t\t\t\t\tresponseJson.id = parseIdFromLocation(locationHeader)\n\t\t\t\t}\n\t\t\t\toptions.success(responseJson)\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// if multi-status, parse\n\t\t\tif (result.status === 207) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\toptions.success(parsePropFindResult(result.body, propsMapping))\n\t\t\t} else {\n\t\t\t\toptions.success(result.body)\n\t\t\t}\n\t\t}\n\t})\n}\n\nexport const davCall = (options, model) => {\n\tvar client = new dav.Client({\n\t\tbaseUrl: options.url,\n\t\txmlNamespaces: _.extend({\n\t\t\t'DAV:': 'd',\n\t\t\t'http://owncloud.org/ns': 'oc'\n\t\t}, options.xmlNamespaces || {})\n\t})\n\tclient.resolveUrl = function() {\n\t\treturn options.url\n\t}\n\tvar headers = _.extend({\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t'requesttoken': OC.requestToken\n\t}, options.headers)\n\tif (options.type === 'PROPFIND') {\n\t\treturn callPropFind(client, options, model, headers)\n\t} else if (options.type === 'PROPPATCH') {\n\t\treturn callPropPatch(client, options, model, headers)\n\t} else if (options.type === 'MKCOL') {\n\t\treturn callMkCol(client, options, model, headers)\n\t} else {\n\t\treturn callMethod(client, options, model, headers)\n\t}\n}\n\n/**\n * DAV transport\n */\nexport const davSync = Backbone => (method, model, options) => {\n\tvar params = { type: methodMap[method] || method }\n\tvar isCollection = (model instanceof Backbone.Collection)\n\n\tif (method === 'update') {\n\t\t// if a model has an inner collection, it must define an\n\t\t// attribute \"hasInnerCollection\" that evaluates to true\n\t\tif (model.hasInnerCollection) {\n\t\t\t// if the model itself is a Webdav collection, use MKCOL\n\t\t\tparams.type = 'MKCOL'\n\t\t} else if (model.usePUT || (model.collection && model.collection.usePUT)) {\n\t\t\t// use PUT instead of PROPPATCH\n\t\t\tparams.type = 'PUT'\n\t\t}\n\t}\n\n\t// Ensure that we have a URL.\n\tif (!options.url) {\n\t\tparams.url = _.result(model, 'url') || urlError()\n\t}\n\n\t// Ensure that we have the appropriate request data.\n\tif (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n\t\tparams.data = JSON.stringify(options.attrs || model.toJSON(options))\n\t}\n\n\t// Don't process data on a non-GET request.\n\tif (params.type !== 'PROPFIND') {\n\t\tparams.processData = false\n\t}\n\n\tif (params.type === 'PROPFIND' || params.type === 'PROPPATCH') {\n\t\tvar davProperties = model.davProperties\n\t\tif (!davProperties && model.model) {\n\t\t\t// use dav properties from model in case of collection\n\t\t\tdavProperties = model.model.prototype.davProperties\n\t\t}\n\t\tif (davProperties) {\n\t\t\tif (_.isFunction(davProperties)) {\n\t\t\t\tparams.davProperties = davProperties.call(model)\n\t\t\t} else {\n\t\t\t\tparams.davProperties = davProperties\n\t\t\t}\n\t\t}\n\n\t\tparams.davProperties = _.extend(params.davProperties || {}, options.davProperties)\n\n\t\tif (_.isUndefined(options.depth)) {\n\t\t\tif (isCollection) {\n\t\t\t\toptions.depth = 1\n\t\t\t} else {\n\t\t\t\toptions.depth = 0\n\t\t\t}\n\t\t}\n\t}\n\n\t// Pass along `textStatus` and `errorThrown` from jQuery.\n\tvar error = options.error\n\toptions.error = function(xhr, textStatus, errorThrown) {\n\t\toptions.textStatus = textStatus\n\t\toptions.errorThrown = errorThrown\n\t\tif (error) {\n\t\t\terror.call(options.context, xhr, textStatus, errorThrown)\n\t\t}\n\t}\n\n\t// Make the request, allowing the user to override any Ajax options.\n\tvar xhr = options.xhr = Backbone.davCall(_.extend(params, options), model)\n\tmodel.trigger('request', model, xhr, options)\n\treturn xhr\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport VendorBackbone from 'backbone'\nimport { davCall, davSync } from './backbone-webdav'\n\nconst Backbone = VendorBackbone.noConflict()\n\n// Patch Backbone for DAV\nObject.assign(Backbone, {\n\tdavCall,\n\tdavSync: davSync(Backbone),\n})\n\nexport default Backbone\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 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 */\n\nconst config = window._oc_config || {}\n\nexport default config\n","/**\n * @copyright 2017 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport { Collection, Model, View } from 'backbone'\n\nimport OC from './index'\n\n/**\n * @class Contact\n */\nconst Contact = Model.extend({\n\tdefaults: {\n\t\tfullName: '',\n\t\tlastMessage: '',\n\t\tactions: [],\n\t\thasOneAction: false,\n\t\thasTwoActions: false,\n\t\thasManyActions: false\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\tinitialize: function() {\n\t\t// Add needed property for easier template rendering\n\t\tif (this.get('actions').length === 0) {\n\t\t\tthis.set('hasOneAction', true)\n\t\t} else if (this.get('actions').length === 1) {\n\t\t\tthis.set('hasTwoActions', true)\n\t\t\tthis.set('secondAction', this.get('actions')[0])\n\t\t} else {\n\t\t\tthis.set('hasManyActions', true)\n\t\t}\n\t}\n})\n\n/**\n * @class ContactCollection\n * @private\n */\nconst ContactCollection = Collection.extend({\n\tmodel: Contact\n})\n\n/**\n * @class ContactsListView\n * @private\n */\nconst ContactsListView = View.extend({\n\n\t/** @type {ContactCollection} */\n\t_collection: undefined,\n\n\t/** @type {array} */\n\t_subViews: [],\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis._collection = options.collection\n\t},\n\n\t/**\n\t * @returns {self}\n\t */\n\trender: function() {\n\t\tvar self = this\n\t\tself.$el.html('')\n\t\tself._subViews = []\n\n\t\tself._collection.forEach(function(contact) {\n\t\t\tvar item = new ContactsListItemView({\n\t\t\t\tmodel: contact\n\t\t\t})\n\t\t\titem.render()\n\t\t\tself.$el.append(item.$el)\n\t\t\titem.on('toggle:actionmenu', self._onChildActionMenuToggle, self)\n\t\t\tself._subViews.push(item)\n\t\t})\n\n\t\treturn self\n\t},\n\n\t/**\n\t * Event callback to propagate opening (another) entry's action menu\n\t *\n\t * @param {type} $src\n\t * @returns {undefined}\n\t */\n\t_onChildActionMenuToggle: function($src) {\n\t\tthis._subViews.forEach(function(view) {\n\t\t\tview.trigger('parent:toggle:actionmenu', $src)\n\t\t})\n\t}\n})\n\n/**\n * @class ContactsListItemView\n * @private\n */\nconst ContactsListItemView = View.extend({\n\n\t/** @type {string} */\n\tclassName: 'contact',\n\n\t/** @type {undefined|function} */\n\t_template: undefined,\n\n\t/** @type {Contact} */\n\t_model: undefined,\n\n\t/** @type {boolean} */\n\t_actionMenuShown: false,\n\n\tevents: {\n\t\t'click .icon-more': '_onToggleActionsMenu'\n\t},\n\n\tcontactTemplate: require('./contactsmenu/contact.handlebars'),\n\n\t/**\n\t * @param {object} data\n\t * @returns {undefined}\n\t */\n\ttemplate: function(data) {\n\t\treturn this.contactTemplate(data)\n\t},\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis._model = options.model\n\t\tthis.on('parent:toggle:actionmenu', this._onOtherActionMenuOpened, this)\n\t},\n\n\t/**\n\t * @returns {self}\n\t */\n\trender: function() {\n\t\tthis.$el.html(this.template({\n\t\t\tcontact: this._model.toJSON()\n\t\t}))\n\t\tthis.delegateEvents()\n\n\t\t// Show placeholder if no avatar is available (avatar is rendered as img, not div)\n\t\tthis.$('div.avatar').imageplaceholder(this._model.get('fullName'))\n\n\t\t// Show tooltip for top action\n\t\tthis.$('.top-action').tooltip({ placement: 'left' })\n\t\t// Show tooltip for second action\n\t\tthis.$('.second-action').tooltip({ placement: 'left' })\n\n\t\treturn this\n\t},\n\n\t/**\n\t * Toggle the visibility of the action popover menu\n\t *\n\t * @private\n\t * @returns {undefined}\n\t */\n\t_onToggleActionsMenu: function() {\n\t\tthis._actionMenuShown = !this._actionMenuShown\n\t\tif (this._actionMenuShown) {\n\t\t\tthis.$('.menu').show()\n\t\t} else {\n\t\t\tthis.$('.menu').hide()\n\t\t}\n\t\tthis.trigger('toggle:actionmenu', this.$el)\n\t},\n\n\t/**\n\t * @private\n\t * @argument {jQuery} $src\n\t * @returns {undefined}\n\t */\n\t_onOtherActionMenuOpened: function($src) {\n\t\tif (this.$el.is($src)) {\n\t\t\t// Ignore\n\t\t\treturn\n\t\t}\n\t\tthis._actionMenuShown = false\n\t\tthis.$('.menu').hide()\n\t}\n})\n\n/**\n * @class ContactsMenuView\n * @private\n */\nconst ContactsMenuView = View.extend({\n\n\t/** @type {undefined|function} */\n\t_loadingTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_errorTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_contentTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_contactsTemplate: undefined,\n\n\t/** @type {undefined|ContactCollection} */\n\t_contacts: undefined,\n\n\t/** @type {string} */\n\t_searchTerm: '',\n\n\tevents: {\n\t\t'input #contactsmenu-search': '_onSearch'\n\t},\n\n\ttemplates: {\n\t\tloading: require('./contactsmenu/loading.handlebars'),\n\t\terror: require('./contactsmenu/error.handlebars'),\n\t\tmenu: require('./contactsmenu/menu.handlebars'),\n\t\tlist: require('./contactsmenu/list.handlebars')\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\t_onSearch: _.debounce(function(e) {\n\t\tvar searchTerm = this.$('#contactsmenu-search').val()\n\t\t// IE11 triggers an 'input' event after the view has been rendered\n\t\t// resulting in an endless loading loop. To prevent this, we remember\n\t\t// the last search term to savely ignore some events\n\t\t// See https://github.com/nextcloud/server/issues/5281\n\t\tif (searchTerm !== this._searchTerm) {\n\t\t\tthis.trigger('search', this.$('#contactsmenu-search').val())\n\t\t\tthis._searchTerm = searchTerm\n\t\t}\n\t}, 700),\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tloadingTemplate: function(data) {\n\t\treturn this.templates.loading(data)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\terrorTemplate: function(data) {\n\t\treturn this.templates.error(\n\t\t\t_.extend({\n\t\t\t\tcouldNotLoadText: t('core', 'Could not load your contacts')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tcontentTemplate: function(data) {\n\t\treturn this.templates.menu(\n\t\t\t_.extend({\n\t\t\t\tsearchContactsText: t('core', 'Search contacts …')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tcontactsTemplate: function(data) {\n\t\treturn this.templates.list(\n\t\t\t_.extend({\n\t\t\t\tnoContactsFoundText: t('core', 'No contacts found'),\n\t\t\t\tshowAllContactsText: t('core', 'Show all contacts …'),\n\t\t\t\tcontactsAppMgmtText: t('core', 'Install the Contacts app')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis.options = options\n\t},\n\n\t/**\n\t * @param {string} text\n\t * @returns {undefined}\n\t */\n\tshowLoading: function(text) {\n\t\tthis.render()\n\t\tthis._contacts = undefined\n\t\tthis.$('.content').html(this.loadingTemplate({\n\t\t\tloadingText: text\n\t\t}))\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\tshowError: function() {\n\t\tthis.render()\n\t\tthis._contacts = undefined\n\t\tthis.$('.content').html(this.errorTemplate())\n\t},\n\n\t/**\n\t * @param {object} viewData\n\t * @param {string} searchTerm\n\t * @returns {undefined}\n\t */\n\tshowContacts: function(viewData, searchTerm) {\n\t\tthis._contacts = viewData.contacts\n\t\tthis.render({\n\t\t\tcontacts: viewData.contacts\n\t\t})\n\n\t\tvar list = new ContactsListView({\n\t\t\tcollection: viewData.contacts\n\t\t})\n\t\tlist.render()\n\t\tthis.$('.content').html(this.contactsTemplate({\n\t\t\tcontacts: viewData.contacts,\n\t\t\tsearchTerm: searchTerm,\n\t\t\tcontactsAppEnabled: viewData.contactsAppEnabled,\n\t\t\tcontactsAppURL: OC.generateUrl('/apps/contacts'),\n\t\t\tcanInstallApp: OC.isUserAdmin(),\n\t\t\tcontactsAppMgmtURL: OC.generateUrl('/settings/apps/social/contacts')\n\t\t}))\n\t\tthis.$('#contactsmenu-contacts').html(list.$el)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {self}\n\t */\n\trender: function(data) {\n\t\tvar searchVal = this.$('#contactsmenu-search').val()\n\t\tthis.$el.html(this.contentTemplate(data))\n\n\t\t// Focus search\n\t\tthis.$('#contactsmenu-search').val(searchVal)\n\t\tthis.$('#contactsmenu-search').focus()\n\t\treturn this\n\t}\n\n})\n\n/**\n * @param {Object} options\n * @param {jQuery} options.el\n * @param {jQuery} options.trigger\n * @class ContactsMenu\n * @memberOf OC\n */\nconst ContactsMenu = function(options) {\n\tthis.initialize(options)\n}\n\nContactsMenu.prototype = {\n\t/** @type {jQuery} */\n\t$el: undefined,\n\n\t/** @type {jQuery} */\n\t_$trigger: undefined,\n\n\t/** @type {ContactsMenuView} */\n\t_view: undefined,\n\n\t/** @type {Promise} */\n\t_contactsPromise: undefined,\n\n\t/**\n\t * @param {Object} options\n\t * @param {jQuery} options.el - the element to render the menu in\n\t * @param {jQuery} options.trigger - the element to click on to open the menu\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis.$el = options.el\n\t\tthis._$trigger = options.trigger\n\n\t\tthis._view = new ContactsMenuView({\n\t\t\tel: this.$el\n\t\t})\n\t\tthis._view.on('search', function(searchTerm) {\n\t\t\tthis._loadContacts(searchTerm)\n\t\t}, this)\n\n\t\tOC.registerMenu(this._$trigger, this.$el, function() {\n\t\t\tthis._toggleVisibility(true)\n\t\t}.bind(this), true)\n\t\tthis.$el.on('beforeHide', function() {\n\t\t\tthis._toggleVisibility(false)\n\t\t}.bind(this))\n\t},\n\n\t/**\n\t * @private\n\t * @param {boolean} show\n\t * @returns {Promise}\n\t */\n\t_toggleVisibility: function(show) {\n\t\tif (show) {\n\t\t\treturn this._loadContacts()\n\t\t} else {\n\t\t\tthis.$el.html('')\n\t\t\treturn Promise.resolve()\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t * @param {string|undefined} searchTerm\n\t * @returns {Promise}\n\t */\n\t_getContacts: function(searchTerm) {\n\t\tvar url = OC.generateUrl('/contactsmenu/contacts')\n\t\treturn Promise.resolve($.ajax(url, {\n\t\t\tmethod: 'POST',\n\t\t\tdata: {\n\t\t\t\tfilter: searchTerm\n\t\t\t}\n\t\t}))\n\t},\n\n\t/**\n\t * @param {string|undefined} searchTerm\n\t * @returns {undefined}\n\t */\n\t_loadContacts: function(searchTerm) {\n\t\tvar self = this\n\n\t\tif (!self._contactsPromise) {\n\t\t\tself._contactsPromise = self._getContacts(searchTerm)\n\t\t}\n\n\t\tif (_.isUndefined(searchTerm) || searchTerm === '') {\n\t\t\tself._view.showLoading(t('core', 'Loading your contacts …'))\n\t\t} else {\n\t\t\tself._view.showLoading(t('core', 'Looking for {term} …', {\n\t\t\t\tterm: searchTerm\n\t\t\t}))\n\t\t}\n\t\treturn self._contactsPromise.then(function(data) {\n\t\t\t// Convert contact entries to Backbone collection\n\t\t\tdata.contacts = new ContactCollection(data.contacts)\n\n\t\t\tself._view.showContacts(data, searchTerm)\n\t\t}, function(e) {\n\t\t\tself._view.showError()\n\t\t\tconsole.error('There was an error loading your contacts', e)\n\t\t}).then(function() {\n\t\t\t// Delete promise, so that contacts are fetched again when the\n\t\t\t// menu is opened the next time.\n\t\t\tdelete self._contactsPromise\n\t\t}).catch(console.error.bind(this))\n\t}\n}\n\nexport default ContactsMenu\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\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 */\n\nconst rawUid = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user')\nconst displayName = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user-displayname')\n\nexport const currentUser = rawUid !== undefined ? rawUid : false\n\nexport const getCurrentUser = () => {\n\treturn {\n\t\tuid: currentUser,\n\t\tdisplayName,\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 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 */\n\nimport Search from './search'\n\n/**\n * Namespace for apps\n *\n * @namespace OCA\n */\nexport default {\n\t/**\n\t * @deprecated 20.0.0, will be removed in Nextcloud 22\n\t */\n\tSearch,\n}\n","/**\n * @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 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 */\n\nexport default class Search {\n\n\t/**\n\t * @deprecated 20.0.0, will be removed in Nextcloud 22\n\t */\n\tconstructor() {\n\t\tconsole.warn('OCA.Search is deprecated. Please use the unified search API instead')\n\t}\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n * @copyright Copyright (c) 2019 Gary Kim <gary@garykim.dev>\n *\n * @author Bartek Przybylski <bart.p.pl@gmail.com>\n * @author Christopher Schäpers <kondou@ts.unde.re>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Daniel Kesselberg <mail@danielkesselberg.de>\n * @author Florian Schunk <florian.schunk@rwth-aachen.de>\n * @author Gary Kim <gary@garykim.dev>\n * @author Hendrik Leppelsack <hendrik@leppelsack.de>\n * @author Jan-Christoph Borchardt <hey@jancborchardt.net>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Jörn Friedrich Dreyer <jfd@butonic.de>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Loïc Hermann <loic.hermann@sciam.fr>\n * @author Morris Jobke <hey@morrisjobke.de>\n * @author Olivier Paroz <github@oparoz.com>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Sujith Haridasan <Sujith_Haridasan@mentor.com>\n * @author Thomas Citharel <nextcloud@tcit.fr>\n * @author Thomas Müller <thomas.mueller@tmit.eu>\n * @author Thomas Tanghus <thomas@tanghus.net>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport $ from 'jquery'\n\nimport OC from './index'\nimport OCA from '../OCA/index'\n\n/**\n * this class to ease the usage of jquery dialogs\n */\nconst Dialogs = {\n\t// dialog button types\n\tYES_NO_BUTTONS: 70,\n\tOK_BUTTONS: 71,\n\n\tFILEPICKER_TYPE_CHOOSE: 1,\n\tFILEPICKER_TYPE_MOVE: 2,\n\tFILEPICKER_TYPE_COPY: 3,\n\tFILEPICKER_TYPE_COPY_MOVE: 4,\n\tFILEPICKER_TYPE_CUSTOM: 5,\n\n\t// used to name each dialog\n\tdialogsCounter: 0,\n\n\t/**\n\t * displays alert dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t */\n\talert: function(text, title, callback, modal) {\n\t\tthis.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'alert',\n\t\t\tDialogs.OK_BUTTON,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\t/**\n\t * displays info dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t */\n\tinfo: function(text, title, callback, modal) {\n\t\tthis.message(text, title, 'info', Dialogs.OK_BUTTON, callback, modal)\n\t},\n\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirm: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {{type: Int, confirm: String, cancel: String, confirmClasses: String}} buttons text content of buttons\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirmDestructive: function(text, title, buttons, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'none',\n\t\t\tbuttons,\n\t\t\tcallback,\n\t\t\tmodal === undefined ? true : modal\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirmHtml: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal,\n\t\t\ttrue\n\t\t)\n\t},\n\t/**\n\t * displays prompt dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} name name of the input field\n\t * @param {boolean} password whether the input should be a password input\n\t * @returns {Promise}\n\t */\n\tprompt: function(text, title, callback, modal, name, password) {\n\t\treturn $.when(this._getMessageTemplate()).then(function($tmpl) {\n\t\t\tvar dialogName = 'oc-dialog-' + Dialogs.dialogsCounter + '-content'\n\t\t\tvar dialogId = '#' + dialogName\n\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\tmessage: text,\n\t\t\t\ttype: 'notice'\n\t\t\t})\n\t\t\tvar input = $('<input/>')\n\t\t\tinput.attr('type', password ? 'password' : 'text').attr('id', dialogName + '-input').attr('placeholder', name)\n\t\t\tvar label = $('<label/>').attr('for', dialogName + '-input').text(name + ': ')\n\t\t\t$dlg.append(label)\n\t\t\t$dlg.append(input)\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\t$('body').append($dlg)\n\n\t\t\t// wrap callback in _.once():\n\t\t\t// only call callback once and not twice (button handler and close\n\t\t\t// event) but call it for the close event, if ESC or the x is hit\n\t\t\tif (callback !== undefined) {\n\t\t\t\tcallback = _.once(callback)\n\t\t\t}\n\n\t\t\tvar buttonlist = [{\n\t\t\t\ttext: t('core', 'No'),\n\t\t\t\tclick: function() {\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(false, input.val())\n\t\t\t\t\t}\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\ttext: t('core', 'Yes'),\n\t\t\t\tclick: function() {\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(true, input.val())\n\t\t\t\t\t}\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t},\n\t\t\t\tdefaultButton: true\n\t\t\t}]\n\n\t\t\t$(dialogId).ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist,\n\t\t\t\tclose: function() {\n\t\t\t\t\t// callback is already fired if Yes/No is clicked directly\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(false, input.val())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\tinput.focus()\n\t\t\tDialogs.dialogsCounter++\n\t\t})\n\t},\n\t/**\n\t * show a file picker to pick a file from\n\t *\n\t * In order to pick several types of mime types they need to be passed as an\n\t * array of strings.\n\t *\n\t * When no mime type filter is given only files can be selected. In order to\n\t * be able to select both files and folders \"['*', 'httpd/unix-directory']\"\n\t * should be used instead.\n\t *\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses Choose\n\t * @param {boolean} [multiselect] whether it should be possible to select multiple files\n\t * @param {string[]} [mimetypeFilter] mimetype to filter by - directories will always be included\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} [type] Type of file picker : Choose, copy, move, copy and move\n\t * @param {string} [path] path to the folder that the the file can be picket from\n\t * @param {Object} [options] additonal options that need to be set\n\t * @param {Function} [options.filter] filter function for advanced filtering\n\t */\n\tfilepicker: function(title, callback, multiselect, mimetypeFilter, modal, type, path, options) {\n\t\tvar self = this\n\n\t\tthis.filepicker.sortField = 'name'\n\t\tthis.filepicker.sortOrder = 'asc'\n\t\t// avoid opening the picker twice\n\t\tif (this.filepicker.loading) {\n\t\t\treturn\n\t\t}\n\n\t\tif (type === undefined) {\n\t\t\ttype = this.FILEPICKER_TYPE_CHOOSE\n\t\t}\n\n\t\tvar emptyText = t('core', 'No files in here')\n\t\tvar newText = t('files', 'New folder')\n\t\tif (type === this.FILEPICKER_TYPE_COPY || type === this.FILEPICKER_TYPE_MOVE || type === this.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\temptyText = t('core', 'No more subfolders in here')\n\t\t}\n\n\t\tthis.filepicker.loading = true\n\t\tthis.filepicker.filesClient = (OCA.Sharing && OCA.Sharing.PublicApp && OCA.Sharing.PublicApp.fileList) ? OCA.Sharing.PublicApp.fileList.filesClient : OC.Files.getClient()\n\n\t\tthis.filelist = null\n\t\tpath = path || ''\n\t\toptions = Object.assign({\n\t\t\tallowDirectoryChooser: false\n\t\t}, options)\n\n\t\t$.when(this._getFilePickerTemplate()).then(function($tmpl) {\n\t\t\tself.filepicker.loading = false\n\t\t\tvar dialogName = 'oc-dialog-filepicker-content'\n\t\t\tif (self.$filePicker) {\n\t\t\t\tself.$filePicker.ocdialog('close')\n\t\t\t}\n\n\t\t\tif (mimetypeFilter === undefined || mimetypeFilter === null) {\n\t\t\t\tmimetypeFilter = []\n\t\t\t}\n\t\t\tif (typeof (mimetypeFilter) === 'string') {\n\t\t\t\tmimetypeFilter = [mimetypeFilter]\n\t\t\t}\n\n\t\t\tself.$filePicker = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\temptytext: emptyText,\n\t\t\t\tnewtext: newText,\n\t\t\t\tnameCol: t('core', 'Name'),\n\t\t\t\tsizeCol: t('core', 'Size'),\n\t\t\t\tmodifiedCol: t('core', 'Modified')\n\t\t\t}).data('path', path).data('multiselect', multiselect).data('mimetype', mimetypeFilter).data('allowDirectoryChooser', options.allowDirectoryChooser)\n\t\t\tif (typeof(options.filter) === 'function') {\n\t\t\t\tself.$filePicker.data('filter', options.filter)\n\t\t\t}\n\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\tif (multiselect === undefined) {\n\t\t\t\tmultiselect = false\n\t\t\t}\n\n\t\t\tself.$filePicker.find('#picker-view-toggle').remove()\n\t\t\tself.$filePicker.find('#picker-filestable').removeClass('view-grid')\n\n\t\t\t$('body').append(self.$filePicker)\n\n\t\t\tself.$showGridView = $('input#picker-showgridview')\n\t\t\tself.$showGridView.on('change', _.bind(self._onGridviewChange, self))\n\n\t\t\tself._getGridSettings()\n\n\t\t\tvar newButton = self.$filePicker.find('.actions.creatable .button-add')\n\t\t\tif (type === self.FILEPICKER_TYPE_CHOOSE && !options.allowDirectoryChooser) {\n\t\t\t\tnewButton.hide()\n\t\t\t}\n\t\t\tnewButton.on('focus', function() {\n\t\t\t\tself.$filePicker.ocdialog('setEnterCallback', function() {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tnewButton.click()\n\t\t\t\t})\n\t\t\t})\n\t\t\tnewButton.on('blur', function() {\n\t\t\t\tself.$filePicker.ocdialog('unsetEnterCallback')\n\t\t\t})\n\n\t\t\tOC.registerMenu(newButton, self.$filePicker.find('.menu'), function() {\n\t\t\t\t$input.tooltip('hide')\n\t\t\t\t$input.focus()\n\t\t\t\tself.$filePicker.ocdialog('setEnterCallback', function() {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tself.$filePicker.submit()\n\t\t\t\t})\n\t\t\t\tvar newName = $input.val()\n\t\t\t\tvar lastPos = newName.lastIndexOf('.')\n\t\t\t\tif (lastPos === -1) {\n\t\t\t\t\tlastPos = newName.length\n\t\t\t\t}\n\t\t\t\t$input.selectRange(0, lastPos)\n\t\t\t})\n\t\t\tvar $form = self.$filePicker.find('.filenameform')\n\t\t\tvar $input = $form.find('input[type=\\'text\\']')\n\t\t\tvar $submit = $form.find('input[type=\\'submit\\']')\n\t\t\t$submit.on('click', function(event) {\n\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\tevent.preventDefault()\n\t\t\t\t$form.submit()\n\t\t\t})\n\n\t\t\t/**\n\t\t\t * Checks whether the given file name is valid.\n\t\t\t *\n\t\t\t * @param name file name to check\n\t\t\t * @return true if the file name is valid.\n\t\t\t * @throws a string exception with an error message if\n\t\t\t * the file name is not valid\n\t\t\t *\n\t\t\t * NOTE: This function is duplicated in the files app:\n\t\t\t * https://github.com/nextcloud/server/blob/b9bc2417e7a8dc81feb0abe20359bedaf864f790/apps/files/js/files.js#L127-L148\n\t\t\t */\n\t\t\tvar isFileNameValid = function (name) {\n\t\t\t\tvar trimmedName = name.trim();\n\t\t\t\tif (trimmedName === '.' || trimmedName === '..')\n\t\t\t\t{\n\t\t\t\t\tthrow t('files', '\"{name}\" is an invalid file name.', {name: name})\n\t\t\t\t} else if (trimmedName.length === 0) {\n\t\t\t\t\tthrow t('files', 'File name cannot be empty.')\n\t\t\t\t} else if (trimmedName.indexOf('/') !== -1) {\n\t\t\t\t\tthrow t('files', '\"/\" is not allowed inside a file name.')\n\t\t\t\t} else if (!!(trimmedName.match(OC.config.blacklist_files_regex))) {\n\t\t\t\t\tthrow t('files', '\"{name}\" is not an allowed filetype', {name: name})\n\t\t\t\t}\n\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\tvar checkInput = function() {\n\t\t\t\tvar filename = $input.val()\n\t\t\t\ttry {\n\t\t\t\t\tif (!isFileNameValid(filename)) {\n\t\t\t\t\t\t// isFileNameValid(filename) throws an exception itself\n\t\t\t\t\t} else if (self.filelist.find(function(file) {\n\t\t\t\t\t\treturn file.name === this\n\t\t\t\t\t}, filename)) {\n\t\t\t\t\t\tthrow t('files', '{newName} already exists', { newName: filename }, undefined, {\n\t\t\t\t\t\t\tescape: false\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn true\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\t$input.attr('title', error)\n\t\t\t\t\t$input.tooltip({\n\t\t\t\t\t\tplacement: 'right',\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t'container': '.newFolderMenu'\n\t\t\t\t\t})\n\t\t\t\t\t$input.tooltip('_fixTitle')\n\t\t\t\t\t$input.tooltip('show')\n\t\t\t\t\t$input.addClass('error')\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t$form.on('submit', function(event) {\n\t\t\t\tevent.stopPropagation()\n\t\t\t\tevent.preventDefault()\n\n\t\t\t\tif (checkInput()) {\n\t\t\t\t\tvar newname = $input.val()\n\t\t\t\t\tself.filepicker.filesClient.createDirectory(self.$filePicker.data('path') + \"/\" + newname).always(function (status) {\n\t\t\t\t\t\tself._fillFilePicker(self.$filePicker.data('path') + \"/\" + newname)\n\t\t\t\t\t})\n\t\t\t\t\tOC.hideMenus()\n\t\t\t\t\tself.$filePicker.ocdialog('unsetEnterCallback')\n\t\t\t\t\tself.$filePicker.click()\n\t\t\t\t\t$input.val(newText)\n\t\t\t\t}\n\t\t\t})\n\t\t\t$input.keypress(function(event) {\n\t\t\t\tif (event.keyCode === 13 || event.which === 13) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t$form.submit()\n\t\t\t\t}\n\t\t\t})\n\t\t\t$input.on('input', function(event) {\n\t\t\t\t$input.tooltip('hide')\n\t\t\t})\n\n\t\t\tself.$filePicker.ready(function() {\n\t\t\t\tself.$fileListHeader = self.$filePicker.find('.filelist thead tr')\n\t\t\t\tself.$filelist = self.$filePicker.find('.filelist tbody')\n\t\t\t\tself.$filelistContainer = self.$filePicker.find('.filelist-container')\n\t\t\t\tself.$dirTree = self.$filePicker.find('.dirtree')\n\t\t\t\tself.$dirTree.on('click', 'div:not(:last-child)', self, function(event) {\n\t\t\t\t\tself._handleTreeListSelect(event, type)\n\t\t\t\t})\n\t\t\t\tself.$filelist.on('click', 'tr', function(event) {\n\t\t\t\t\tself._handlePickerClick(event, $(this), type)\n\t\t\t\t})\n\t\t\t\tself.$fileListHeader.on('click', 'a', function(event) {\n\t\t\t\t\tvar dir = self.$filePicker.data('path')\n\t\t\t\t\tself.filepicker.sortField = $(event.currentTarget).data('sort')\n\t\t\t\t\tself.filepicker.sortOrder = self.filepicker.sortOrder === 'asc' ? 'desc' : 'asc'\n\t\t\t\t\tself._fillFilePicker(dir)\n\t\t\t\t})\n\t\t\t\tself._fillFilePicker(path)\n\t\t\t})\n\n\t\t\t// build buttons\n\t\t\tvar functionToCall = function(returnType) {\n\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\tvar datapath\n\t\t\t\t\tif (multiselect === true) {\n\t\t\t\t\t\tdatapath = []\n\t\t\t\t\t\tself.$filelist.find('tr.filepicker_element_selected').each(function(index, element) {\n\t\t\t\t\t\t\tdatapath.push(self.$filePicker.data('path') + '/' + $(element).data('entryname'))\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdatapath = self.$filePicker.data('path')\n\t\t\t\t\t\tvar selectedName = self.$filelist.find('tr.filepicker_element_selected').data('entryname')\n\t\t\t\t\t\tif (selectedName) {\n\t\t\t\t\t\t\tdatapath += '/' + selectedName\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcallback(datapath, returnType)\n\t\t\t\t\tself.$filePicker.ocdialog('close')\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar chooseCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_CHOOSE)\n\t\t\t}\n\n\t\t\tvar copyCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_COPY)\n\t\t\t}\n\n\t\t\tvar moveCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_MOVE)\n\t\t\t}\n\n\t\t\tvar buttonlist = []\n\t\t\tif (type === Dialogs.FILEPICKER_TYPE_CHOOSE) {\n\t\t\t\tbuttonlist.push({\n\t\t\t\t\ttext: t('core', 'Choose'),\n\t\t\t\t\tclick: chooseCallback,\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t})\n\t\t\t} else if (type === Dialogs.FILEPICKER_TYPE_CUSTOM) {\n\t\t\t\toptions.buttons.forEach(function(button) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: button.text,\n\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\tfunctionToCall(button.type)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefaultButton: button.defaultButton\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tif (type === Dialogs.FILEPICKER_TYPE_COPY || type === Dialogs.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: t('core', 'Copy'),\n\t\t\t\t\t\tclick: copyCallback,\n\t\t\t\t\t\tdefaultButton: false\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (type === Dialogs.FILEPICKER_TYPE_MOVE || type === Dialogs.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: t('core', 'Move'),\n\t\t\t\t\t\tclick: moveCallback,\n\t\t\t\t\t\tdefaultButton: true\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tself.$filePicker.ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\t// max-width of 600\n\t\t\t\twidth: 600,\n\t\t\t\theight: 500,\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist,\n\t\t\t\tstyle: {\n\t\t\t\t\tbuttons: 'aside'\n\t\t\t\t},\n\t\t\t\tclose: function() {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t}\n\t\t\t\t\tself.$filePicker = null\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t// We can access primary class only from oc-dialog.\n\t\t\t// Hence this is one of the approach to get the choose button.\n\t\t\tvar getOcDialog = self.$filePicker.closest('.oc-dialog')\n\t\t\tvar buttonEnableDisable = getOcDialog.find('.primary')\n\t\t\tif (self.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || self.$filePicker.data('allowDirectoryChooser')) {\n\t\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t\t} else {\n\t\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t\t}\n\t\t})\n\t\t\t.fail(function(status, error) {\n\t\t\t\t// If the method is called while navigating away\n\t\t\t\t// from the page, it is probably not needed ;)\n\t\t\t\tself.filepicker.loading = false\n\t\t\t\tif (status !== 0) {\n\t\t\t\t\talert(t('core', 'Error loading file picker template: {error}', { error: error }))\n\t\t\t\t}\n\t\t\t})\n\t},\n\t/**\n\t * Displays raw dialog\n\t * You better use a wrapper instead ...\n\t */\n\tmessage: function(content, title, dialogType, buttons, callback, modal, allowHtml) {\n\t\treturn $.when(this._getMessageTemplate()).then(function($tmpl) {\n\t\t\tvar dialogName = 'oc-dialog-' + Dialogs.dialogsCounter + '-content'\n\t\t\tvar dialogId = '#' + dialogName\n\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\tmessage: content,\n\t\t\t\ttype: dialogType\n\t\t\t}, allowHtml ? { escapeFunction: '' } : {})\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\t$('body').append($dlg)\n\t\t\tvar buttonlist = []\n\t\t\tswitch (buttons) {\n\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\tbuttonlist = [{\n\t\t\t\t\ttext: t('core', 'No'),\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: t('core', 'Yes'),\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t},\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t}]\n\t\t\t\tbreak\n\t\t\tcase Dialogs.OK_BUTTON:\n\t\t\t\tvar functionToCall = function() {\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\tcallback()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbuttonlist[0] = {\n\t\t\t\t\ttext: t('core', 'OK'),\n\t\t\t\t\tclick: functionToCall,\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tif (typeof(buttons) === 'object') {\n\t\t\t\t\tswitch (buttons.type) {\n\t\t\t\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\t\t\t\tbuttonlist = [{\n\t\t\t\t\t\t\t\ttext: buttons.cancel || t('core', 'No'),\n\t\t\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttext: buttons.confirm || t('core', 'Yes'),\n\t\t\t\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tdefaultButton: true,\n\t\t\t\t\t\t\t\t\tclasses: buttons.confirmClasses\n\t\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t$(dialogId).ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\tcloseCallback: () => { callback && callback(false) },\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist\n\t\t\t})\n\t\t\tDialogs.dialogsCounter++\n\t\t})\n\t\t\t.fail(function(status, error) {\n\t\t\t\t// If the method is called while navigating away from\n\t\t\t\t// the page, we still want to deliver the message.\n\t\t\t\tif (status === 0) {\n\t\t\t\t\talert(title + ': ' + content)\n\t\t\t\t} else {\n\t\t\t\t\talert(t('core', 'Error loading message template: {error}', { error: error }))\n\t\t\t\t}\n\t\t\t})\n\t},\n\t_fileexistsshown: false,\n\t/**\n\t * Displays file exists dialog\n\t * @param {object} data upload object\n\t * @param {object} original file with name, size and mtime\n\t * @param {object} replacement file with name, size and mtime\n\t * @param {object} controller with onCancel, onSkip, onReplace and onRename methods\n\t * @returns {Promise} jquery promise that resolves after the dialog template was loaded\n\t */\n\tfileexists: function(data, original, replacement, controller) {\n\t\tvar self = this\n\t\tvar dialogDeferred = new $.Deferred()\n\n\t\tvar getCroppedPreview = function(file) {\n\t\t\tvar deferred = new $.Deferred()\n\t\t\t// Only process image files.\n\t\t\tvar type = file.type && file.type.split('/').shift()\n\t\t\tif (window.FileReader && type === 'image') {\n\t\t\t\tvar reader = new FileReader()\n\t\t\t\treader.onload = function(e) {\n\t\t\t\t\tvar blob = new Blob([e.target.result])\n\t\t\t\t\twindow.URL = window.URL || window.webkitURL\n\t\t\t\t\tvar originalUrl = window.URL.createObjectURL(blob)\n\t\t\t\t\tvar image = new Image()\n\t\t\t\t\timage.src = originalUrl\n\t\t\t\t\timage.onload = function() {\n\t\t\t\t\t\tvar url = crop(image)\n\t\t\t\t\t\tdeferred.resolve(url)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treader.readAsArrayBuffer(file)\n\t\t\t} else {\n\t\t\t\tdeferred.reject()\n\t\t\t}\n\t\t\treturn deferred\n\t\t}\n\n\t\tvar crop = function(img) {\n\t\t\tvar canvas = document.createElement('canvas')\n\t\t\tvar targetSize = 96\n\t\t\tvar width = img.width\n\t\t\tvar height = img.height\n\t\t\tvar x; var y; var size\n\n\t\t\t// Calculate the width and height, constraining the proportions\n\t\t\tif (width > height) {\n\t\t\t\ty = 0\n\t\t\t\tx = (width - height) / 2\n\t\t\t} else {\n\t\t\t\ty = (height - width) / 2\n\t\t\t\tx = 0\n\t\t\t}\n\t\t\tsize = Math.min(width, height)\n\n\t\t\t// Set canvas size to the cropped area\n\t\t\tcanvas.width = size\n\t\t\tcanvas.height = size\n\t\t\tvar ctx = canvas.getContext('2d')\n\t\t\tctx.drawImage(img, x, y, size, size, 0, 0, size, size)\n\n\t\t\t// Resize the canvas to match the destination (right size uses 96px)\n\t\t\tresampleHermite(canvas, size, size, targetSize, targetSize)\n\n\t\t\treturn canvas.toDataURL('image/png', 0.7)\n\t\t}\n\n\t\t/**\n\t\t * Fast image resize/resample using Hermite filter with JavaScript.\n\t\t *\n\t\t * @author: ViliusL\n\t\t *\n\t\t * @param {*} canvas\n\t\t * @param {number} W\n\t\t * @param {number} H\n\t\t * @param {number} W2\n\t\t * @param {number} H2\n\t\t */\n\t\tvar resampleHermite = function(canvas, W, H, W2, H2) {\n\t\t\tW2 = Math.round(W2)\n\t\t\tH2 = Math.round(H2)\n\t\t\tvar img = canvas.getContext('2d').getImageData(0, 0, W, H)\n\t\t\tvar img2 = canvas.getContext('2d').getImageData(0, 0, W2, H2)\n\t\t\tvar data = img.data\n\t\t\tvar data2 = img2.data\n\t\t\tvar ratio_w = W / W2\n\t\t\tvar ratio_h = H / H2\n\t\t\tvar ratio_w_half = Math.ceil(ratio_w / 2)\n\t\t\tvar ratio_h_half = Math.ceil(ratio_h / 2)\n\n\t\t\tfor (var j = 0; j < H2; j++) {\n\t\t\t\tfor (var i = 0; i < W2; i++) {\n\t\t\t\t\tvar x2 = (i + j * W2) * 4\n\t\t\t\t\tvar weight = 0\n\t\t\t\t\tvar weights = 0\n\t\t\t\t\tvar weights_alpha = 0\n\t\t\t\t\tvar gx_r = 0\n\t\t\t\t\tvar gx_g = 0\n\t\t\t\t\tvar gx_b = 0\n\t\t\t\t\tvar gx_a = 0\n\t\t\t\t\tvar center_y = (j + 0.5) * ratio_h\n\t\t\t\t\tfor (var yy = Math.floor(j * ratio_h); yy < (j + 1) * ratio_h; yy++) {\n\t\t\t\t\t\tvar dy = Math.abs(center_y - (yy + 0.5)) / ratio_h_half\n\t\t\t\t\t\tvar center_x = (i + 0.5) * ratio_w\n\t\t\t\t\t\tvar w0 = dy * dy // pre-calc part of w\n\t\t\t\t\t\tfor (var xx = Math.floor(i * ratio_w); xx < (i + 1) * ratio_w; xx++) {\n\t\t\t\t\t\t\tvar dx = Math.abs(center_x - (xx + 0.5)) / ratio_w_half\n\t\t\t\t\t\t\tvar w = Math.sqrt(w0 + dx * dx)\n\t\t\t\t\t\t\tif (w >= -1 && w <= 1) {\n\t\t\t\t\t\t\t\t// hermite filter\n\t\t\t\t\t\t\t\tweight = 2 * w * w * w - 3 * w * w + 1\n\t\t\t\t\t\t\t\tif (weight > 0) {\n\t\t\t\t\t\t\t\t\tdx = 4 * (xx + yy * W)\n\t\t\t\t\t\t\t\t\t// alpha\n\t\t\t\t\t\t\t\t\tgx_a += weight * data[dx + 3]\n\t\t\t\t\t\t\t\t\tweights_alpha += weight\n\t\t\t\t\t\t\t\t\t// colors\n\t\t\t\t\t\t\t\t\tif (data[dx + 3] < 255) { weight = weight * data[dx + 3] / 250 }\n\t\t\t\t\t\t\t\t\tgx_r += weight * data[dx]\n\t\t\t\t\t\t\t\t\tgx_g += weight * data[dx + 1]\n\t\t\t\t\t\t\t\t\tgx_b += weight * data[dx + 2]\n\t\t\t\t\t\t\t\t\tweights += weight\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdata2[x2] = gx_r / weights\n\t\t\t\t\tdata2[x2 + 1] = gx_g / weights\n\t\t\t\t\tdata2[x2 + 2] = gx_b / weights\n\t\t\t\t\tdata2[x2 + 3] = gx_a / weights_alpha\n\t\t\t\t}\n\t\t\t}\n\t\t\tcanvas.getContext('2d').clearRect(0, 0, Math.max(W, W2), Math.max(H, H2))\n\t\t\tcanvas.width = W2\n\t\t\tcanvas.height = H2\n\t\t\tcanvas.getContext('2d').putImageData(img2, 0, 0)\n\t\t}\n\n\t\tvar addConflict = function($conflicts, original, replacement) {\n\n\t\t\tvar $conflict = $conflicts.find('.template').clone().removeClass('template').addClass('conflict')\n\t\t\tvar $originalDiv = $conflict.find('.original')\n\t\t\tvar $replacementDiv = $conflict.find('.replacement')\n\n\t\t\t$conflict.data('data', data)\n\n\t\t\t$conflict.find('.filename').text(original.name)\n\t\t\t$originalDiv.find('.size').text(OC.Util.humanFileSize(original.size))\n\t\t\t$originalDiv.find('.mtime').text(OC.Util.formatDate(original.mtime))\n\t\t\t// ie sucks\n\t\t\tif (replacement.size && replacement.lastModified) {\n\t\t\t\t$replacementDiv.find('.size').text(OC.Util.humanFileSize(replacement.size))\n\t\t\t\t$replacementDiv.find('.mtime').text(OC.Util.formatDate(replacement.lastModified))\n\t\t\t}\n\t\t\tvar path = original.directory + '/' + original.name\n\t\t\tvar urlSpec = {\n\t\t\t\tfile: path,\n\t\t\t\tx: 96,\n\t\t\t\ty: 96,\n\t\t\t\tc: original.etag,\n\t\t\t\tforceIcon: 0\n\t\t\t}\n\t\t\tvar previewpath = Files.generatePreviewUrl(urlSpec)\n\t\t\t// Escaping single quotes\n\t\t\tpreviewpath = previewpath.replace(/'/g, '%27')\n\t\t\t$originalDiv.find('.icon').css({ 'background-image': \"url('\" + previewpath + \"')\" })\n\t\t\tgetCroppedPreview(replacement).then(\n\t\t\t\tfunction(path) {\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}, function() {\n\t\t\t\t\tpath = OC.MimeType.getIconUrl(replacement.type)\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}\n\t\t\t)\n\t\t\t// connect checkboxes with labels\n\t\t\tvar checkboxId = $conflicts.find('.conflict').length\n\t\t\t$originalDiv.find('input:checkbox').attr('id', 'checkbox_original_' + checkboxId)\n\t\t\t$replacementDiv.find('input:checkbox').attr('id', 'checkbox_replacement_' + checkboxId)\n\n\t\t\t$conflicts.append($conflict)\n\n\t\t\t// set more recent mtime bold\n\t\t\t// ie sucks\n\t\t\tif (replacement.lastModified > original.mtime) {\n\t\t\t\t$replacementDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else if (replacement.lastModified < original.mtime) {\n\t\t\t\t$originalDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same mtime collection?\n\t\t\t}\n\n\t\t\t// set bigger size bold\n\t\t\tif (replacement.size && replacement.size > original.size) {\n\t\t\t\t$replacementDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else if (replacement.size && replacement.size < original.size) {\n\t\t\t\t$originalDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same size collection?\n\t\t\t}\n\n\t\t\t// TODO show skip action for files with same size and mtime in bottom row\n\n\t\t\t// always keep readonly files\n\n\t\t\tif (original.status === 'readonly') {\n\t\t\t\t$originalDiv\n\t\t\t\t\t.addClass('readonly')\n\t\t\t\t\t.find('input[type=\"checkbox\"]')\n\t\t\t\t\t.prop('checked', true)\n\t\t\t\t\t.prop('disabled', true)\n\t\t\t\t$originalDiv.find('.message')\n\t\t\t\t\t.text(t('core', 'read-only'))\n\t\t\t}\n\t\t}\n\t\t// var selection = controller.getSelection(data.originalFiles);\n\t\t// if (selection.defaultAction) {\n\t\t//\tcontroller[selection.defaultAction](data);\n\t\t// } else {\n\t\tvar dialogName = 'oc-dialog-fileexists-content'\n\t\tvar dialogId = '#' + dialogName\n\t\tif (this._fileexistsshown) {\n\t\t\t// add conflict\n\n\t\t\tvar $conflicts = $(dialogId + ' .conflicts')\n\t\t\taddConflict($conflicts, original, replacement)\n\n\t\t\tvar count = $(dialogId + ' .conflict').length\n\t\t\tvar title = n('core',\n\t\t\t\t'{count} file conflict',\n\t\t\t\t'{count} file conflicts',\n\t\t\t\tcount,\n\t\t\t\t{ count: count }\n\t\t\t)\n\t\t\t$(dialogId).parent().children('.oc-dialog-title').text(title)\n\n\t\t\t// recalculate dimensions\n\t\t\t$(window).trigger('resize')\n\t\t\tdialogDeferred.resolve()\n\t\t} else {\n\t\t\t// create dialog\n\t\t\tthis._fileexistsshown = true\n\t\t\t$.when(this._getFileExistsTemplate()).then(function($tmpl) {\n\t\t\t\tvar title = t('core', 'One file conflict')\n\t\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\t\tdialog_name: dialogName,\n\t\t\t\t\ttitle: title,\n\t\t\t\t\ttype: 'fileexists',\n\n\t\t\t\t\tallnewfiles: t('core', 'New Files'),\n\t\t\t\t\tallexistingfiles: t('core', 'Already existing files'),\n\n\t\t\t\t\twhy: t('core', 'Which files do you want to keep?'),\n\t\t\t\t\twhat: t('core', 'If you select both versions, the copied file will have a number added to its name.')\n\t\t\t\t})\n\t\t\t\t$('body').append($dlg)\n\n\t\t\t\tif (original && replacement) {\n\t\t\t\t\tvar $conflicts = $dlg.find('.conflicts')\n\t\t\t\t\taddConflict($conflicts, original, replacement)\n\t\t\t\t}\n\n\t\t\t\tvar buttonlist = [{\n\t\t\t\t\ttext: t('core', 'Cancel'),\n\t\t\t\t\tclasses: 'cancel',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onCancel !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onCancel(data)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: t('core', 'Continue'),\n\t\t\t\t\tclasses: 'continue',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onContinue !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onContinue($(dialogId + ' .conflict'))\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t}]\n\n\t\t\t\t$(dialogId).ocdialog({\n\t\t\t\t\twidth: 500,\n\t\t\t\t\tcloseOnEscape: true,\n\t\t\t\t\tmodal: true,\n\t\t\t\t\tbuttons: buttonlist,\n\t\t\t\t\tcloseButton: null,\n\t\t\t\t\tclose: function() {\n\t\t\t\t\t\tself._fileexistsshown = false\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t// ignore\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\t$(dialogId).css('height', 'auto')\n\n\t\t\t\tvar $primaryButton = $dlg.closest('.oc-dialog').find('button.continue')\n\t\t\t\t$primaryButton.prop('disabled', true)\n\n\t\t\t\tfunction updatePrimaryButton() {\n\t\t\t\t\tvar checkedCount = $dlg.find('.conflicts .checkbox:checked').length\n\t\t\t\t\t$primaryButton.prop('disabled', checkedCount === 0)\n\t\t\t\t}\n\n\t\t\t\t// add checkbox toggling actions\n\t\t\t\t$(dialogId).find('.allnewfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.allexistingfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .original:not(.readonly) input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement,.original:not(.readonly)', function() {\n\t\t\t\t\tvar $checkbox = $(this).find('input[type=\"checkbox\"]')\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement input[type=\"checkbox\"],.original:not(.readonly) input[type=\"checkbox\"]', function() {\n\t\t\t\t\tvar $checkbox = $(this)\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\n\t\t\t\t// update counters\n\t\t\t\t$(dialogId).on('click', '.replacement,.allnewfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\t\t\t\t$(dialogId).on('click', '.original,.allexistingfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .original input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count')\n\t\t\t\t\t\t\t.text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\n\t\t\t\tdialogDeferred.resolve()\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdialogDeferred.reject()\n\t\t\t\t\talert(t('core', 'Error loading file exists template'))\n\t\t\t\t})\n\t\t}\n\t\t// }\n\t\treturn dialogDeferred.promise()\n\t},\n\t// get the gridview setting and set the input accordingly\n\t_getGridSettings: function() {\n\t\tvar self = this\n\t\t$.get(OC.generateUrl('/apps/files/api/v1/showgridview'), function(response) {\n\t\t\tself.$showGridView.get(0).checked = response.gridview\n\t\t\tself.$showGridView.next('#picker-view-toggle')\n\t\t\t\t.removeClass('icon-toggle-filelist icon-toggle-pictures')\n\t\t\t\t.addClass(response.gridview ? 'icon-toggle-filelist' : 'icon-toggle-pictures')\n\t\t\t$('.list-container').toggleClass('view-grid', response.gridview)\n\t\t})\n\t},\n\t_onGridviewChange: function() {\n\t\tvar show = this.$showGridView.is(':checked')\n\t\t// only save state if user is logged in\n\t\tif (OC.currentUser) {\n\t\t\t$.post(OC.generateUrl('/apps/files/api/v1/showgridview'), {\n\t\t\t\tshow: show\n\t\t\t})\n\t\t}\n\t\tthis.$showGridView.next('#picker-view-toggle')\n\t\t\t.removeClass('icon-toggle-filelist icon-toggle-pictures')\n\t\t\t.addClass(show ? 'icon-toggle-filelist' : 'icon-toggle-pictures')\n\t\t$('.list-container').toggleClass('view-grid', show)\n\t},\n\t_getFilePickerTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$filePickerTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('core', 'templates', 'filepicker.html'), function(tmpl) {\n\t\t\t\tself.$filePickerTemplate = $(tmpl)\n\t\t\t\tself.$listTmpl = self.$filePickerTemplate.find('.filelist tbody tr:first-child').detach()\n\t\t\t\tdefer.resolve(self.$filePickerTemplate)\n\t\t\t})\n\t\t\t\t.fail(function(jqXHR, textStatus, errorThrown) {\n\t\t\t\t\tdefer.reject(jqXHR.status, errorThrown)\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$filePickerTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getMessageTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$messageTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('core', 'templates', 'message.html'), function(tmpl) {\n\t\t\t\tself.$messageTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$messageTemplate)\n\t\t\t})\n\t\t\t\t.fail(function(jqXHR, textStatus, errorThrown) {\n\t\t\t\t\tdefer.reject(jqXHR.status, errorThrown)\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$messageTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getFileExistsTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$fileexistsTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('files', 'templates', 'fileexists.html'), function(tmpl) {\n\t\t\t\tself.$fileexistsTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$fileexistsTemplate)\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdefer.reject()\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$fileexistsTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getFileList: function(dir, mimeType) { // this is only used by the spreedme app atm\n\t\tif (typeof (mimeType) === 'string') {\n\t\t\tmimeType = [mimeType]\n\t\t}\n\n\t\treturn $.getJSON(\n\t\t\tOC.filePath('files', 'ajax', 'list.php'),\n\t\t\t{\n\t\t\t\tdir: dir,\n\t\t\t\tmimetypes: JSON.stringify(mimeType)\n\t\t\t}\n\t\t)\n\t},\n\n\t/**\n\t * fills the filepicker with files\n\t */\n\t_fillFilePicker: function(dir) {\n\t\tvar self = this\n\t\tthis.$filelist.empty()\n\t\tthis.$filePicker.find('.emptycontent').hide()\n\t\tthis.$filelistContainer.addClass('icon-loading')\n\t\tthis.$filePicker.data('path', dir)\n\t\tvar filter = this.$filePicker.data('mimetype')\n\t\tvar advancedFilter = this.$filePicker.data('filter')\n\t\tif (typeof (filter) === 'string') {\n\t\t\tfilter = [filter]\n\t\t}\n\t\tself.$fileListHeader.find('.sort-indicator').addClass('hidden').removeClass('icon-triangle-n').removeClass('icon-triangle-s')\n\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').removeClass('hidden')\n\t\tif (self.filepicker.sortOrder === 'asc') {\n\t\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').addClass('icon-triangle-n')\n\t\t} else {\n\t\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').addClass('icon-triangle-s')\n\t\t}\n\t\tself.filepicker.filesClient.getFolderContents(dir).then(function(status, files) {\n\t\t\tself.filelist = files\n\t\t\tif (filter && filter.length > 0 && filter.indexOf('*') === -1) {\n\t\t\t\tfiles = files.filter(function(file) {\n\t\t\t\t\treturn file.type === 'dir' || filter.indexOf(file.mimetype) !== -1\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (advancedFilter) {\n\t\t\t\tfiles = files.filter(advancedFilter)\n\t\t\t}\n\n\t\t\t// Check if the showHidden input field exist and if it exist follow it\n\t\t\t// Otherwise just show the hidden files\n\t\t\tconst showHiddenInput = document.getElementById('showHiddenFiles')\n\t\t\tconst showHidden = showHiddenInput === null || showHiddenInput.value === \"1\"\n\t\t\tif (!showHidden) {\n\t\t\t\tfiles = files.filter(function(file) {\n\t\t\t\t\treturn !file.name.startsWith('.')\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tvar Comparators = {\n\t\t\t\tname: function(fileInfo1, fileInfo2) {\n\t\t\t\t\tif (fileInfo1.type === 'dir' && fileInfo2.type !== 'dir') {\n\t\t\t\t\t\treturn -1\n\t\t\t\t\t}\n\t\t\t\t\tif (fileInfo1.type !== 'dir' && fileInfo2.type === 'dir') {\n\t\t\t\t\t\treturn 1\n\t\t\t\t\t}\n\t\t\t\t\treturn OC.Util.naturalSortCompare(fileInfo1.name, fileInfo2.name)\n\t\t\t\t},\n\t\t\t\tsize: function(fileInfo1, fileInfo2) {\n\t\t\t\t\treturn fileInfo1.size - fileInfo2.size\n\t\t\t\t},\n\t\t\t\tmtime: function(fileInfo1, fileInfo2) {\n\t\t\t\t\treturn fileInfo1.mtime - fileInfo2.mtime\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar comparator = Comparators[self.filepicker.sortField] || Comparators.name\n\t\t\tfiles = files.sort(function(file1, file2) {\n\t\t\t\tvar isFavorite = function(fileInfo) {\n\t\t\t\t\treturn fileInfo.tags && fileInfo.tags.indexOf(OC.TAG_FAVORITE) >= 0\n\t\t\t\t}\n\n\t\t\t\tif (isFavorite(file1) && !isFavorite(file2)) {\n\t\t\t\t\treturn -1\n\t\t\t\t} else if (!isFavorite(file1) && isFavorite(file2)) {\n\t\t\t\t\treturn 1\n\t\t\t\t}\n\n\t\t\t\treturn self.filepicker.sortOrder === 'asc' ? comparator(file1, file2) : -comparator(file1, file2)\n\t\t\t})\n\n\t\t\tself._fillSlug()\n\n\t\t\tif (files.length === 0) {\n\t\t\t\tself.$filePicker.find('.emptycontent').show()\n\t\t\t\tself.$fileListHeader.hide()\n\t\t\t} else {\n\t\t\t\tself.$filePicker.find('.emptycontent').hide()\n\t\t\t\tself.$fileListHeader.show()\n\t\t\t}\n\n\t\t\tself.$filelist.empty();\n\n\t\t\t$.each(files, function(idx, entry) {\n\t\t\t\tentry.icon = OC.MimeType.getIconUrl(entry.mimetype)\n\t\t\t\tvar simpleSize, sizeColor\n\t\t\t\tif (typeof (entry.size) !== 'undefined' && entry.size >= 0) {\n\t\t\t\t\tsimpleSize = OC.Util.humanFileSize(parseInt(entry.size, 10), true)\n\t\t\t\t\tsizeColor = Math.round(160 - Math.pow((entry.size / (1024 * 1024)), 2))\n\t\t\t\t} else {\n\t\t\t\t\tsimpleSize = t('files', 'Pending')\n\t\t\t\t\tsizeColor = 80\n\t\t\t\t}\n\n\t\t\t\t// split the filename in half if the size is bigger than 20 char\n\t\t\t\t// for ellipsis\n\t\t\t\tif (entry.name.length >= 10) {\n\t\t\t\t\t// leave maximum 10 letters\n\t\t\t\t\tvar split = Math.min(Math.floor(entry.name.length / 2), 10)\n\t\t\t\t\tvar filename1 = entry.name.substr(0, entry.name.length - split)\n\t\t\t\t\tvar filename2 = entry.name.substr(entry.name.length - split)\n\t\t\t\t} else {\n\t\t\t\t\tvar filename1 = entry.name\n\t\t\t\t\tvar filename2 = ''\n\t\t\t\t}\n\n\t\t\t\tvar $row = self.$listTmpl.octemplate({\n\t\t\t\t\ttype: entry.type,\n\t\t\t\t\tdir: dir,\n\t\t\t\t\tfilename: entry.name,\n\t\t\t\t\tfilename1: filename1,\n\t\t\t\t\tfilename2: filename2,\n\t\t\t\t\tdate: OC.Util.relativeModifiedDate(entry.mtime),\n\t\t\t\t\tsize: simpleSize,\n\t\t\t\t\tsizeColor: sizeColor,\n\t\t\t\t\ticon: entry.icon\n\t\t\t\t})\n\t\t\t\tif (entry.type === 'file') {\n\t\t\t\t\tvar urlSpec = {\n\t\t\t\t\t\tfile: dir + '/' + entry.name,\n\t\t\t\t\t\tx: 100,\n\t\t\t\t\t\ty: 100\n\t\t\t\t\t}\n\t\t\t\t\tvar img = new Image()\n\t\t\t\t\tvar previewUrl = OC.generateUrl('/core/preview.png?') + $.param(urlSpec)\n\t\t\t\t\timg.onload = function() {\n\t\t\t\t\t\tif (img.width > 5) {\n\t\t\t\t\t\t\t$row.find('td.filename').attr('style', 'background-image:url(' + previewUrl + ')')\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\timg.src = previewUrl\n\t\t\t\t}\n\t\t\t\tself.$filelist.append($row)\n\t\t\t})\n\n\t\t\tself.$filelistContainer.removeClass('icon-loading')\n\t\t})\n\t},\n\t/**\n\t * fills the tree list with directories\n\t */\n\t_fillSlug: function() {\n\t\tvar addButton = this.$dirTree.find('.actions.creatable').detach()\n\t\tthis.$dirTree.empty()\n\t\tvar self = this\n\n\t\tself.$dirTree.append(addButton)\n\n\t\tvar dir\n\t\tvar path = this.$filePicker.data('path')\n\t\tvar $template = $('<div data-dir=\"{dir}\"><a>{name}</a></div>').addClass('crumb')\n\t\tif (path) {\n\t\t\tvar paths = path.split('/')\n\t\t\t$.each(paths, function(index, dir) {\n\t\t\t\tdir = paths.pop()\n\t\t\t\tif (dir === '') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tself.$dirTree.prepend($template.octemplate({\n\t\t\t\t\tdir: paths.join('/') + '/' + dir,\n\t\t\t\t\tname: dir\n\t\t\t\t}))\n\t\t\t})\n\t\t}\n\n\t\t$template.octemplate({\n\t\t\tdir: '',\n\t\t\tname: '' // Ugly but works ;)\n\t\t}, { escapeFunction: null }).prependTo(this.$dirTree)\n\n\t},\n\t/**\n\t * handle selection made in the tree list\n\t */\n\t_handleTreeListSelect: function(event, type) {\n\t\tvar self = event.data\n\t\tvar dir = $(event.target).closest('.crumb').data('dir')\n\t\tself._fillFilePicker(dir)\n\t\tvar getOcDialog = (event.target).closest('.oc-dialog')\n\t\tvar buttonEnableDisable = $('.primary', getOcDialog)\n\t\tthis._changeButtonsText(type, dir.split(/[/]+/).pop())\n\t\tif (this.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || this.$filePicker.data('allowDirectoryChooser')) {\n\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t} else {\n\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t}\n\t},\n\t/**\n\t * handle clicks made in the filepicker\n\t */\n\t_handlePickerClick: function(event, $element, type) {\n\t\tvar getOcDialog = this.$filePicker.closest('.oc-dialog')\n\t\tvar buttonEnableDisable = getOcDialog.find('.primary')\n\t\tif ($element.data('type') === 'file') {\n\t\t\tif (this.$filePicker.data('multiselect') !== true || !event.ctrlKey) {\n\t\t\t\tthis.$filelist.find('.filepicker_element_selected').removeClass('filepicker_element_selected')\n\t\t\t}\n\t\t\t$element.toggleClass('filepicker_element_selected')\n\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t} else if ($element.data('type') === 'dir') {\n\t\t\tthis._fillFilePicker(this.$filePicker.data('path') + '/' + $element.data('entryname'))\n\t\t\tthis._changeButtonsText(type, $element.data('entryname'))\n\t\t\tif (this.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || this.$filePicker.data('allowDirectoryChooser')) {\n\t\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t\t} else {\n\t\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Handle\n\t * @param type of action\n\t * @param dir on which to change buttons text\n\t * @private\n\t */\n\t_changeButtonsText: function(type, dir) {\n\t\tvar copyText = dir === '' ? t('core', 'Copy') : t('core', 'Copy to {folder}', { folder: dir })\n\t\tvar moveText = dir === '' ? t('core', 'Move') : t('core', 'Move to {folder}', { folder: dir })\n\t\tvar buttons = $('.oc-dialog-buttonrow button')\n\t\tswitch (type) {\n\t\t\tcase this.FILEPICKER_TYPE_CHOOSE:\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_CUSTOM:\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_COPY:\n\t\t\t\tbuttons.text(copyText)\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_MOVE:\n\t\t\t\tbuttons.text(moveText)\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_COPY_MOVE:\n\t\t\t\tbuttons.eq(0).text(copyText)\n\t\t\t\tbuttons.eq(1).text(moveText)\n\t\t\t\tbreak\n\t\t}\n\t}\n}\n\nexport default Dialogs\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport { emit } from '@nextcloud/event-bus'\n\n/**\n * @private\n * @param {Document} global the document to read the initial value from\n * @param {Function} emit the function to invoke for every new token\n * @return {object}\n */\nexport const manageToken = (global, emit) => {\n\tlet token = global.getElementsByTagName('head')[0].getAttribute('data-requesttoken')\n\n\treturn {\n\t\tgetToken: () => token,\n\t\tsetToken: newToken => {\n\t\t\ttoken = newToken\n\n\t\t\temit('csrf-token-update', {\n\t\t\t\ttoken,\n\t\t\t})\n\t\t},\n\t}\n}\n\nconst manageFromDocument = manageToken(document, emit)\n\n/**\n * @return {string}\n */\nexport const getToken = manageFromDocument.getToken\n\n/**\n * @param {string} newToken new token\n */\nexport const setToken = manageFromDocument.setToken\n","/**\n * @copyright 2012 Robin Appelman icewind1991@gmail.com\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Lukas Reschke <lukas@statuscode.ch>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Thomas Müller <thomas.mueller@tmit.eu>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n/* eslint-disable */\nimport $ from 'jquery'\n\nimport { getToken } from './requesttoken'\n\n/**\n * Create a new event source\n * @param {string} src\n * @param {object} [data] to be send as GET\n *\n * @constructs OCEventSource\n */\nconst OCEventSource = function(src, data) {\n\tvar dataStr = ''\n\tvar name\n\tvar joinChar\n\tthis.typelessListeners = []\n\tthis.closed = false\n\tthis.listeners = {}\n\tif (data) {\n\t\tfor (name in data) {\n\t\t\tdataStr += name + '=' + encodeURIComponent(data[name]) + '&'\n\t\t}\n\t}\n\tdataStr += 'requesttoken=' + encodeURIComponent(getToken())\n\tif (!this.useFallBack && typeof EventSource !== 'undefined') {\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.source = new EventSource(src + joinChar + dataStr)\n\t\tthis.source.onmessage = function(e) {\n\t\t\tfor (var i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](JSON.parse(e.data))\n\t\t\t}\n\t\t}.bind(this)\n\t} else {\n\t\tvar iframeId = 'oc_eventsource_iframe_' + OCEventSource.iframeCount\n\t\tOCEventSource.fallBackSources[OCEventSource.iframeCount] = this\n\t\tthis.iframe = $('<iframe></iframe>')\n\t\tthis.iframe.attr('id', iframeId)\n\t\tthis.iframe.hide()\n\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.iframe.attr('src', src + joinChar + 'fallback=true&fallback_id=' + OCEventSource.iframeCount + '&' + dataStr)\n\t\t$('body').append(this.iframe)\n\t\tthis.useFallBack = true\n\t\tOCEventSource.iframeCount++\n\t}\n\t// add close listener\n\tthis.listen('__internal__', function(data) {\n\t\tif (data === 'close') {\n\t\t\tthis.close()\n\t\t}\n\t}.bind(this))\n}\nOCEventSource.fallBackSources = []\nOCEventSource.iframeCount = 0// number of fallback iframes\nOCEventSource.fallBackCallBack = function(id, type, data) {\n\tOCEventSource.fallBackSources[id].fallBackCallBack(type, data)\n}\nOCEventSource.prototype = {\n\ttypelessListeners: [],\n\tiframe: null,\n\tlisteners: {}, // only for fallback\n\tuseFallBack: false,\n\t/**\n\t * Fallback callback for browsers that don't have the\n\t * native EventSource object.\n\t *\n\t * Calls the registered listeners.\n\t *\n\t * @private\n\t * @param {String} type event type\n\t * @param {Object} data received data\n\t */\n\tfallBackCallBack: function(type, data) {\n\t\tvar i\n\t\t// ignore messages that might appear after closing\n\t\tif (this.closed) {\n\t\t\treturn\n\t\t}\n\t\tif (type) {\n\t\t\tif (typeof this.listeners.done !== 'undefined') {\n\t\t\t\tfor (i = 0; i < this.listeners[type].length; i++) {\n\t\t\t\t\tthis.listeners[type][i](data)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](data)\n\t\t\t}\n\t\t}\n\t},\n\tlastLength: 0, // for fallback\n\t/**\n\t * Listen to a given type of events.\n\t *\n\t * @param {String} type event type\n\t * @param {Function} callback event callback\n\t */\n\tlisten: function(type, callback) {\n\t\tif (callback && callback.call) {\n\n\t\t\tif (type) {\n\t\t\t\tif (this.useFallBack) {\n\t\t\t\t\tif (!this.listeners[type]) {\n\t\t\t\t\t\tthis.listeners[type] = []\n\t\t\t\t\t}\n\t\t\t\t\tthis.listeners[type].push(callback)\n\t\t\t\t} else {\n\t\t\t\t\tthis.source.addEventListener(type, function(e) {\n\t\t\t\t\t\tif (typeof e.data !== 'undefined') {\n\t\t\t\t\t\t\tcallback(JSON.parse(e.data))\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcallback('')\n\t\t\t\t\t\t}\n\t\t\t\t\t}, false)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.typelessListeners.push(callback)\n\t\t\t}\n\t\t}\n\t},\n\t/**\n\t * Closes this event source.\n\t */\n\tclose: function() {\n\t\tthis.closed = true\n\t\tif (typeof this.source !== 'undefined') {\n\t\t\tthis.source.close()\n\t\t}\n\t}\n}\n\nexport default OCEventSource\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\n\nimport { menuSpeed } from './constants'\n\nexport let currentMenu = null\nexport let currentMenuToggle = null\n\n/**\n * For menu toggling\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n * @param {Function | undefined} toggle callback invoked everytime the menu is opened\n * @param {boolean} headerMenu is this a top right header menu?\n * @return {void}\n */\nexport const registerMenu = function($toggle, $menuEl, toggle, headerMenu) {\n\t$menuEl.addClass('menu')\n\tconst isClickableElement = $toggle.prop('tagName') === 'A' || $toggle.prop('tagName') === 'BUTTON'\n\n\t// On link and button, the enter key trigger a click event\n\t// Only use the click to avoid two fired events\n\t$toggle.on(isClickableElement ? 'click.menu' : 'click.menu keyup.menu', function(event) {\n\t\t// prevent the link event (append anchor to URL)\n\t\tevent.preventDefault()\n\n\t\t// allow enter key as a trigger\n\t\tif (event.key && event.key !== 'Enter') {\n\t\t\treturn\n\t\t}\n\n\t\tif ($menuEl.is(currentMenu)) {\n\t\t\thideMenus()\n\t\t\treturn\n\t\t} else if (currentMenu) {\n\t\t\t// another menu was open?\n\t\t\t// close it\n\t\t\thideMenus()\n\t\t}\n\n\t\tif (headerMenu === true) {\n\t\t\t$menuEl.parent().addClass('openedMenu')\n\t\t}\n\n\t\t// Set menu to expanded\n\t\t$toggle.attr('aria-expanded', true)\n\n\t\t$menuEl.slideToggle(menuSpeed, toggle)\n\t\tcurrentMenu = $menuEl\n\t\tcurrentMenuToggle = $toggle\n\t})\n}\n\n/**\n * Unregister a previously registered menu\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n */\nexport const unregisterMenu = ($toggle, $menuEl) => {\n\t// close menu if opened\n\tif ($menuEl.is(currentMenu)) {\n\t\thideMenus()\n\t}\n\t$toggle.off('click.menu').removeClass('menutoggle')\n\t$menuEl.removeClass('menu')\n}\n\n/**\n * Hides any open menus\n *\n * @param {Function} complete callback when the hiding animation is done\n */\nexport const hideMenus = function(complete) {\n\tif (currentMenu) {\n\t\tconst lastMenu = currentMenu\n\t\tcurrentMenu.trigger(new $.Event('beforeHide'))\n\t\tcurrentMenu.slideUp(menuSpeed, function() {\n\t\t\tlastMenu.trigger(new $.Event('afterHide'))\n\t\t\tif (complete) {\n\t\t\t\tcomplete.apply(this, arguments)\n\t\t\t}\n\t\t})\n\t}\n\n\t// Set menu to closed\n\t$('.menutoggle').attr('aria-expanded', false)\n\n\t$('.openedMenu').removeClass('openedMenu')\n\tcurrentMenu = null\n\tcurrentMenuToggle = null\n}\n\n/**\n * Shows a given element as menu\n *\n * @param {object} [$toggle=null] menu toggle\n * @param {object} $menuEl menu element\n * @param {Function} complete callback when the showing animation is done\n */\nexport const showMenu = ($toggle, $menuEl, complete) => {\n\tif ($menuEl.is(currentMenu)) {\n\t\treturn\n\t}\n\thideMenus()\n\tcurrentMenu = $menuEl\n\tcurrentMenuToggle = $toggle\n\t$menuEl.trigger(new $.Event('beforeShow'))\n\t$menuEl.show()\n\t$menuEl.trigger(new $.Event('afterShow'))\n\t// no animation\n\tif (_.isFunction(complete)) {\n\t\tcomplete()\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nexport const coreApps = ['', 'admin', 'log', 'core/search', 'core', '3rdparty']\nexport const menuSpeed = 50\nexport const PERMISSION_NONE = 0\nexport const PERMISSION_CREATE = 4\nexport const PERMISSION_READ = 1\nexport const PERMISSION_UPDATE = 2\nexport const PERMISSION_DELETE = 8\nexport const PERMISSION_SHARE = 16\nexport const PERMISSION_ALL = 31\nexport const TAG_FAVORITE = '_$!<Favorite>!$_'\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nconst isAdmin = !!window._oc_isadmin\n\n/**\n * Returns whether the current user is an administrator\n *\n * @return {boolean} true if the user is an admin, false otherwise\n * @since 9.0.0\n */\nexport const isUserAdmin = () => isAdmin\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\n// This var is global because it's shared across webpack bundles\nwindow._oc_l10n_registry_translations = window._oc_l10n_registry_translations || {}\nwindow._oc_l10n_registry_plural_functions = window._oc_l10n_registry_plural_functions || {}\n\n/**\n * @param {string} appId the app id\n * @param {object} translations the translations list\n * @param {Function} pluralFunction the translations list\n */\nconst register = (appId, translations, pluralFunction) => {\n\twindow._oc_l10n_registry_translations[appId] = translations\n\twindow._oc_l10n_registry_plural_functions[appId] = pluralFunction\n}\n\n/**\n * @param {string} appId the app id\n * @param {object} translations the translations list\n * @param {Function} pluralFunction the translations list\n */\nconst extend = (appId, translations, pluralFunction) => {\n\twindow._oc_l10n_registry_translations[appId] = Object.assign(\n\t\twindow._oc_l10n_registry_translations[appId],\n\t\ttranslations\n\t)\n\twindow._oc_l10n_registry_plural_functions[appId] = pluralFunction\n}\n\n/**\n * @param {string} appId the app id\n * @param {object} translations the translations list\n * @param {Function} pluralFunction the translations list\n */\nexport const registerAppTranslations = (appId, translations, pluralFunction) => {\n\tif (!hasAppTranslations(appId)) {\n\t\tregister(appId, translations, pluralFunction)\n\t} else {\n\t\textend(appId, translations, pluralFunction)\n\t}\n}\n\n/**\n * @param {string} appId the app id\n */\nexport const unregisterAppTranslations = appId => {\n\tdelete window._oc_l10n_registry_translations[appId]\n\tdelete window._oc_l10n_registry_plural_functions[appId]\n}\n\n/**\n * @param {string} appId the app id\n * @return {boolean}\n */\nexport const hasAppTranslations = appId => {\n\treturn window._oc_l10n_registry_translations[appId] !== undefined\n\t\t&& window._oc_l10n_registry_plural_functions[appId] !== undefined\n}\n\n/**\n * @param {string} appId the app id\n * @return {object}\n */\nexport const getAppTranslations = appId => {\n\treturn {\n\t\ttranslations: window._oc_l10n_registry_translations[appId] || {},\n\t\tpluralFunction: window._oc_l10n_registry_plural_functions[appId],\n\t}\n}\n","/**\n * Copyright (c) 2014 Vincent Petry <pvince81@owncloud.com>\n * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Kesselberg <mail@danielkesselberg.de>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Morris Jobke <hey@morrisjobke.de>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport DOMPurify from 'dompurify'\nimport Handlebars from 'handlebars'\nimport identity from 'lodash/fp/identity'\nimport escapeHTML from 'escape-html'\nimport { generateFilePath } from '@nextcloud/router'\n\nimport OC from './index'\nimport {\n\tgetAppTranslations,\n\thasAppTranslations,\n\tregisterAppTranslations,\n\tunregisterAppTranslations,\n} from './l10n-registry'\n\n/**\n * L10N namespace with localization functions.\n *\n * @namespace OC.L10n\n */\nconst L10n = {\n\n\t/**\n\t * Load an app's translation bundle if not loaded already.\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Function} callback callback to be called when\n\t * the translations are loaded\n\t * @return {Promise} promise\n\t */\n\tload(appName, callback) {\n\t\t// already available ?\n\t\tif (hasAppTranslations(appName) || OC.getLocale() === 'en') {\n\t\t\tconst deferred = $.Deferred()\n\t\t\tconst promise = deferred.promise()\n\t\t\tpromise.then(callback)\n\t\t\tdeferred.resolve()\n\t\t\treturn promise\n\t\t}\n\n\t\tconst self = this\n\t\tconst url = generateFilePath(appName, 'l10n', OC.getLocale() + '.json')\n\n\t\t// load JSON translation bundle per AJAX\n\t\treturn $.get(url)\n\t\t\t.then(\n\t\t\t\tfunction(result) {\n\t\t\t\t\tif (result.translations) {\n\t\t\t\t\t\tself.register(appName, result.translations, result.pluralForm)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t.then(callback)\n\t},\n\n\t/**\n\t * Register an app's translation bundle.\n\t *\n\t * @param {string} appName name of the app\n\t * @param {object<string, string>} bundle bundle\n\t */\n\tregister(appName, bundle) {\n\t\tregisterAppTranslations(appName, bundle, this._getPlural)\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_unregister: unregisterAppTranslations,\n\n\t/**\n\t * Translate a string\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} text the string to translate\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {number} [count] number to replace %n with\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @param {boolean} [options.sanitize=true] enable/disable sanitization (by default enabled)\n\t * @return {string}\n\t */\n\ttranslate(app, text, vars, count, options) {\n\t\tconst defaultOptions = {\n\t\t\tescape: true,\n\t\t\tsanitize: true,\n\t\t}\n\t\tconst allOptions = options || {}\n\t\t_.defaults(allOptions, defaultOptions)\n\n\t\tconst optSanitize = allOptions.sanitize ? DOMPurify.sanitize : identity\n\t\tconst optEscape = allOptions.escape ? escapeHTML : identity\n\n\t\t// TODO: cache this function to avoid inline recreation\n\t\t// of the same function over and over again in case\n\t\t// translate() is used in a loop\n\t\tconst _build = function(text, vars, count) {\n\t\t\treturn text.replace(/%n/g, count).replace(/{([^{}]*)}/g,\n\t\t\t\tfunction(a, b) {\n\t\t\t\t\tconst r = vars[b]\n\t\t\t\t\tif (typeof r === 'string' || typeof r === 'number') {\n\t\t\t\t\t\treturn optSanitize(optEscape(r))\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn optSanitize(a)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\t\tlet translation = text\n\t\tconst bundle = getAppTranslations(app)\n\t\tconst value = bundle.translations[text]\n\t\tif (typeof (value) !== 'undefined') {\n\t\t\ttranslation = value\n\t\t}\n\n\t\tif (typeof vars === 'object' || count !== undefined) {\n\t\t\treturn optSanitize(_build(translation, vars, count))\n\t\t} else {\n\t\t\treturn optSanitize(translation)\n\t\t}\n\t},\n\n\t/**\n\t * Translate a plural string\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} textSingular the string to translate for exactly one object\n\t * @param {string} textPlural the string to translate for n objects\n\t * @param {number} count number to determine whether to use singular or plural\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @return {string} Translated string\n\t */\n\ttranslatePlural(app, textSingular, textPlural, count, vars, options) {\n\t\tconst identifier = '_' + textSingular + '_::_' + textPlural + '_'\n\t\tconst bundle = getAppTranslations(app)\n\t\tconst value = bundle.translations[identifier]\n\t\tif (typeof (value) !== 'undefined') {\n\t\t\tconst translation = value\n\t\t\tif ($.isArray(translation)) {\n\t\t\t\tconst plural = bundle.pluralFunction(count)\n\t\t\t\treturn this.translate(app, translation[plural], vars, count, options)\n\t\t\t}\n\t\t}\n\n\t\tif (count === 1) {\n\t\t\treturn this.translate(app, textSingular, vars, count, options)\n\t\t} else {\n\t\t\treturn this.translate(app, textPlural, vars, count, options)\n\t\t}\n\t},\n\n\t/**\n\t * The plural function taken from symfony\n\t *\n\t * @param {number} number the number of elements\n\t * @return {number}\n\t * @private\n\t */\n\t_getPlural(number) {\n\t\tlet language = OC.getLanguage()\n\t\tif (language === 'pt-BR') {\n\t\t\t// temporary set a locale for brazilian\n\t\t\tlanguage = 'xbr'\n\t\t}\n\n\t\tif (typeof language === 'undefined' || language === '') {\n\t\t\treturn (number === 1) ? 0 : 1\n\t\t}\n\n\t\tif (language.length > 3) {\n\t\t\tlanguage = language.substring(0, language.lastIndexOf('-'))\n\t\t}\n\n\t\t/*\n\t\t * The plural rules are derived from code of the Zend Framework (2010-09-25),\n\t\t * which is subject to the new BSD license (http://framework.zend.com/license/new-bsd).\n\t\t * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n\t\t */\n\t\tswitch (language) {\n\t\tcase 'az':\n\t\tcase 'bo':\n\t\tcase 'dz':\n\t\tcase 'id':\n\t\tcase 'ja':\n\t\tcase 'jv':\n\t\tcase 'ka':\n\t\tcase 'km':\n\t\tcase 'kn':\n\t\tcase 'ko':\n\t\tcase 'ms':\n\t\tcase 'th':\n\t\tcase 'tr':\n\t\tcase 'vi':\n\t\tcase 'zh':\n\t\t\treturn 0\n\n\t\tcase 'af':\n\t\tcase 'bn':\n\t\tcase 'bg':\n\t\tcase 'ca':\n\t\tcase 'da':\n\t\tcase 'de':\n\t\tcase 'el':\n\t\tcase 'en':\n\t\tcase 'eo':\n\t\tcase 'es':\n\t\tcase 'et':\n\t\tcase 'eu':\n\t\tcase 'fa':\n\t\tcase 'fi':\n\t\tcase 'fo':\n\t\tcase 'fur':\n\t\tcase 'fy':\n\t\tcase 'gl':\n\t\tcase 'gu':\n\t\tcase 'ha':\n\t\tcase 'he':\n\t\tcase 'hu':\n\t\tcase 'is':\n\t\tcase 'it':\n\t\tcase 'ku':\n\t\tcase 'lb':\n\t\tcase 'ml':\n\t\tcase 'mn':\n\t\tcase 'mr':\n\t\tcase 'nah':\n\t\tcase 'nb':\n\t\tcase 'ne':\n\t\tcase 'nl':\n\t\tcase 'nn':\n\t\tcase 'no':\n\t\tcase 'oc':\n\t\tcase 'om':\n\t\tcase 'or':\n\t\tcase 'pa':\n\t\tcase 'pap':\n\t\tcase 'ps':\n\t\tcase 'pt':\n\t\tcase 'so':\n\t\tcase 'sq':\n\t\tcase 'sv':\n\t\tcase 'sw':\n\t\tcase 'ta':\n\t\tcase 'te':\n\t\tcase 'tk':\n\t\tcase 'ur':\n\t\tcase 'zu':\n\t\t\treturn (number === 1) ? 0 : 1\n\n\t\tcase 'am':\n\t\tcase 'bh':\n\t\tcase 'fil':\n\t\tcase 'fr':\n\t\tcase 'gun':\n\t\tcase 'hi':\n\t\tcase 'hy':\n\t\tcase 'ln':\n\t\tcase 'mg':\n\t\tcase 'nso':\n\t\tcase 'xbr':\n\t\tcase 'ti':\n\t\tcase 'wa':\n\t\t\treturn ((number === 0) || (number === 1)) ? 0 : 1\n\n\t\tcase 'be':\n\t\tcase 'bs':\n\t\tcase 'hr':\n\t\tcase 'ru':\n\t\tcase 'sh':\n\t\tcase 'sr':\n\t\tcase 'uk':\n\t\t\treturn ((number % 10 === 1) && (number % 100 !== 11)) ? 0 : (((number % 10 >= 2) && (number % 10 <= 4) && ((number % 100 < 10) || (number % 100 >= 20))) ? 1 : 2)\n\n\t\tcase 'cs':\n\t\tcase 'sk':\n\t\t\treturn (number === 1) ? 0 : (((number >= 2) && (number <= 4)) ? 1 : 2)\n\n\t\tcase 'ga':\n\t\t\treturn (number === 1) ? 0 : ((number === 2) ? 1 : 2)\n\n\t\tcase 'lt':\n\t\t\treturn ((number % 10 === 1) && (number % 100 !== 11)) ? 0 : (((number % 10 >= 2) && ((number % 100 < 10) || (number % 100 >= 20))) ? 1 : 2)\n\n\t\tcase 'sl':\n\t\t\treturn (number % 100 === 1) ? 0 : ((number % 100 === 2) ? 1 : (((number % 100 === 3) || (number % 100 === 4)) ? 2 : 3))\n\n\t\tcase 'mk':\n\t\t\treturn (number % 10 === 1) ? 0 : 1\n\n\t\tcase 'mt':\n\t\t\treturn (number === 1) ? 0 : (((number === 0) || ((number % 100 > 1) && (number % 100 < 11))) ? 1 : (((number % 100 > 10) && (number % 100 < 20)) ? 2 : 3))\n\n\t\tcase 'lv':\n\t\t\treturn (number === 0) ? 0 : (((number % 10 === 1) && (number % 100 !== 11)) ? 1 : 2)\n\n\t\tcase 'pl':\n\t\t\treturn (number === 1) ? 0 : (((number % 10 >= 2) && (number % 10 <= 4) && ((number % 100 < 12) || (number % 100 > 14))) ? 1 : 2)\n\n\t\tcase 'cy':\n\t\t\treturn (number === 1) ? 0 : ((number === 2) ? 1 : (((number === 8) || (number === 11)) ? 2 : 3))\n\n\t\tcase 'ro':\n\t\t\treturn (number === 1) ? 0 : (((number === 0) || ((number % 100 > 0) && (number % 100 < 20))) ? 1 : 2)\n\n\t\tcase 'ar':\n\t\t\treturn (number === 0) ? 0 : ((number === 1) ? 1 : ((number === 2) ? 2 : (((number % 100 >= 3) && (number % 100 <= 10)) ? 3 : (((number % 100 >= 11) && (number % 100 <= 99)) ? 4 : 5))))\n\n\t\tdefault:\n\t\t\treturn 0\n\t\t}\n\t},\n}\n\nexport default L10n\n\n/**\n * Returns the user's locale\n *\n * @return {string} locale string\n */\nexport const getLocale = () => $('html').data('locale') ?? 'en'\n\n/**\n * Returns the user's language\n *\n * @return {string} language string\n */\nexport const getLanguage = () => $('html').prop('lang')\n\nHandlebars.registerHelper('t', function(app, text) {\n\treturn L10n.translate(app, text)\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author rakekniven <mark.ziegler@rakekniven.de>\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 */\n\nimport $ from 'jquery'\n\n/**\n * A little class to manage a status field for a \"saving\" process.\n * It can be used to display a starting message (e.g. \"Saving...\") and then\n * replace it with a green success message or a red error message.\n *\n * @namespace OC.msg\n */\nexport default {\n\t/**\n\t * Displayes a \"Saving...\" message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t */\n\tstartSaving(selector) {\n\t\tthis.startAction(selector, t('core', 'Saving …'))\n\t},\n\n\t/**\n\t * Displayes a custom message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text message to display (no HTML allowed)\n\t */\n\tstartAction(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.removeClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedSaving(selector, response) {\n\t\tthis.finishedAction(selector, response)\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedAction(selector, response) {\n\t\tif (response.status === 'success') {\n\t\t\tthis.finishedSuccess(selector, response.data.message)\n\t\t} else {\n\t\t\tthis.finishedError(selector, response.data.message)\n\t\t}\n\t},\n\n\t/**\n\t * Displayes an success message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text success message to display (no HTML allowed)\n\t */\n\tfinishedSuccess(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.delay(3000)\n\t\t\t.fadeOut(900)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text error message to display (no HTML allowed)\n\t */\n\tfinishedError(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('error')\n\t\t\t.removeClass('success')\n\t\t\t.show()\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport moment from 'moment'\nimport { generateUrl } from '@nextcloud/router'\n\nimport OC from './index'\n\n/**\n * @namespace OC.PasswordConfirmation\n */\nexport default {\n\tcallback: null,\n\n\tpageLoadTime: null,\n\n\tinit() {\n\t\t$('.password-confirm-required').on('click', _.bind(this.requirePasswordConfirmation, this))\n\t\tthis.pageLoadTime = moment.now()\n\t},\n\n\trequiresPasswordConfirmation() {\n\t\tconst serverTimeDiff = this.pageLoadTime - (window.nc_pageLoad * 1000)\n\t\tconst timeSinceLogin = moment.now() - (serverTimeDiff + (window.nc_lastLogin * 1000))\n\n\t\t// if timeSinceLogin > 30 minutes and user backend allows password confirmation\n\t\treturn (window.backendAllowsPasswordConfirmation && timeSinceLogin > 30 * 60 * 1000)\n\t},\n\n\t/**\n\t * @param {Function} callback success callback function\n\t * @param {object} options options\n\t * @param {Function} rejectCallback error callback function\n\t */\n\trequirePasswordConfirmation(callback, options, rejectCallback) {\n\t\toptions = typeof options !== 'undefined' ? options : {}\n\t\tconst defaults = {\n\t\t\ttitle: t('core', 'Authentication required'),\n\t\t\ttext: t(\n\t\t\t\t'core',\n\t\t\t\t'This action requires you to confirm your password'\n\t\t\t),\n\t\t\tconfirm: t('core', 'Confirm'),\n\t\t\tlabel: t('core', 'Password'),\n\t\t\terror: '',\n\t\t}\n\n\t\tconst config = _.extend(defaults, options)\n\n\t\tconst self = this\n\n\t\tif (this.requiresPasswordConfirmation()) {\n\t\t\tOC.dialogs.prompt(\n\t\t\t\tconfig.text,\n\t\t\t\tconfig.title,\n\t\t\t\tfunction(result, password) {\n\t\t\t\t\tif (result && password !== '') {\n\t\t\t\t\t\tself._confirmPassword(password, config)\n\t\t\t\t\t} else if (_.isFunction(rejectCallback)) {\n\t\t\t\t\t\trejectCallback()\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\ttrue,\n\t\t\t\tconfig.label,\n\t\t\t\ttrue\n\t\t\t).then(function() {\n\t\t\t\tconst $dialog = $('.oc-dialog:visible')\n\t\t\t\t$dialog.find('.ui-icon').remove()\n\t\t\t\t$dialog.addClass('password-confirmation')\n\t\t\t\tif (config.error !== '') {\n\t\t\t\t\tconst $error = $('<p></p>').addClass('msg warning').text(config.error)\n\t\t\t\t\t$dialog.find('.oc-dialog-content').append($error)\n\t\t\t\t}\n\t\t\t\t$dialog.find('.oc-dialog-buttonrow').addClass('aside')\n\n\t\t\t\tconst $buttons = $dialog.find('button')\n\t\t\t\t$buttons.eq(0).hide()\n\t\t\t\t$buttons.eq(1).text(config.confirm)\n\t\t\t})\n\t\t}\n\n\t\tthis.callback = callback\n\t},\n\n\t_confirmPassword(password, config) {\n\t\tconst self = this\n\n\t\t$.ajax({\n\t\t\turl: generateUrl('/login/confirm'),\n\t\t\tdata: {\n\t\t\t\tpassword,\n\t\t\t},\n\t\t\ttype: 'POST',\n\t\t\tsuccess(response) {\n\t\t\t\twindow.nc_lastLogin = response.lastLogin\n\n\t\t\t\tif (_.isFunction(self.callback)) {\n\t\t\t\t\tself.callback()\n\t\t\t\t}\n\t\t\t},\n\t\t\terror() {\n\t\t\t\tconfig.error = t('core', 'Failed to authenticate, try again')\n\t\t\t\tOC.PasswordConfirmation.requirePasswordConfirmation(self.callback, config)\n\t\t\t},\n\t\t})\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 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 */\n\nexport const theme = window._theme || {}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport _ from 'underscore'\nimport OC from './index'\n\n/**\n * Utility class for the history API,\n * includes fallback to using the URL hash when\n * the browser doesn't support the history API.\n *\n * @namespace OC.Util.History\n */\nexport default {\n\n\t_handlers: [],\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t * @param {boolean} [replace=false] whether to replace instead of pushing\n\t */\n\t_pushState(params, url, replace) {\n\t\tlet strParams\n\t\tif (typeof (params) === 'string') {\n\t\t\tstrParams = params\n\t\t} else {\n\t\t\tstrParams = OC.buildQueryString(params)\n\t\t}\n\n\t\tif (window.history.pushState) {\n\t\t\turl = url || location.pathname + '?' + strParams\n\t\t\t// Workaround for bug with SVG and window.history.pushState on Firefox < 51\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=652991\n\t\t\tconst isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1\n\t\t\tif (isFirefox && parseInt(navigator.userAgent.split('/').pop()) < 51) {\n\t\t\t\tconst patterns = document.querySelectorAll('[fill^=\"url(#\"], [stroke^=\"url(#\"], [filter^=\"url(#invert\"]')\n\t\t\t\tfor (let i = 0, ii = patterns.length, pattern; i < ii; i++) {\n\t\t\t\t\tpattern = patterns[i]\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.fill = pattern.style.fill\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.stroke = pattern.style.stroke\n\t\t\t\t\tpattern.removeAttribute('filter')\n\t\t\t\t\tpattern.setAttribute('filter', 'url(#invert)')\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (replace) {\n\t\t\t\twindow.history.replaceState(params, '', url)\n\t\t\t} else {\n\t\t\t\twindow.history.pushState(params, '', url)\n\t\t\t}\n\t\t} else {\n\t\t\t// use URL hash for IE8\n\t\t\twindow.location.hash = '?' + strParams\n\t\t\t// inhibit next onhashchange that just added itself\n\t\t\t// to the event queue\n\t\t\tthis._cancelPop = true\n\t\t}\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used, using the params as query string\n\t */\n\tpushState(params, url) {\n\t\tthis._pushState(params, url, false)\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t */\n\treplaceState(params, url) {\n\t\tthis._pushState(params, url, true)\n\t},\n\n\t/**\n\t * Add a popstate handler\n\t *\n\t * @param {Function} handler handler\n\t */\n\taddOnPopStateHandler(handler) {\n\t\tthis._handlers.push(handler)\n\t},\n\n\t/**\n\t * Parse a query string from the hash part of the URL.\n\t * (workaround for IE8 / IE9)\n\t *\n\t * @return {string}\n\t */\n\t_parseHashQuery() {\n\t\tconst hash = window.location.hash\n\t\tconst pos = hash.indexOf('?')\n\t\tif (pos >= 0) {\n\t\t\treturn hash.substr(pos + 1)\n\t\t}\n\t\tif (hash.length) {\n\t\t\t// remove hash sign\n\t\t\treturn hash.substr(1)\n\t\t}\n\t\treturn ''\n\t},\n\n\t_decodeQuery(query) {\n\t\treturn query.replace(/\\+/g, ' ')\n\t},\n\n\t/**\n\t * Parse the query/search part of the URL.\n\t * Also try and parse it from the URL hash (for IE8)\n\t *\n\t * @return {object} map of parameters\n\t */\n\tparseUrlQuery() {\n\t\tconst query = this._parseHashQuery()\n\t\tlet params\n\t\t// try and parse from URL hash first\n\t\tif (query) {\n\t\t\tparams = OC.parseQueryString(this._decodeQuery(query))\n\t\t}\n\t\t// else read from query attributes\n\t\tparams = _.extend(params || {}, OC.parseQueryString(this._decodeQuery(location.search)))\n\t\treturn params || {}\n\t},\n\n\t_onPopState(e) {\n\t\tif (this._cancelPop) {\n\t\t\tthis._cancelPop = false\n\t\t\treturn\n\t\t}\n\t\tlet params\n\t\tif (!this._handlers.length) {\n\t\t\treturn\n\t\t}\n\t\tparams = (e && e.state)\n\t\tif (_.isString(params)) {\n\t\t\tparams = OC.parseQueryString(params)\n\t\t} else if (!params) {\n\t\t\tparams = this.parseUrlQuery() || {}\n\t\t}\n\t\tfor (let i = 0; i < this._handlers.length; i++) {\n\t\t\tthis._handlers[i](params)\n\t\t}\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport moment from 'moment'\n\nimport History from './util-history'\nimport OC from './index'\nimport { formatFileSize as humanFileSize } from '@nextcloud/files'\n\n/**\n * @param {any} t -\n */\nfunction chunkify(t) {\n\t// Adapted from http://my.opera.com/GreyWyvern/blog/show.dml/1671288\n\tconst tz = []\n\tlet x = 0\n\tlet y = -1\n\tlet n = 0\n\tlet c\n\n\twhile (x < t.length) {\n\t\tc = t.charAt(x)\n\t\t// only include the dot in strings\n\t\tconst m = ((!n && c === '.') || (c >= '0' && c <= '9'))\n\t\tif (m !== n) {\n\t\t\t// next chunk\n\t\t\ty++\n\t\t\ttz[y] = ''\n\t\t\tn = m\n\t\t}\n\t\ttz[y] += c\n\t\tx++\n\t}\n\treturn tz\n}\n\n/**\n * Utility functions\n *\n * @namespace OC.Util\n */\nexport default {\n\n\tHistory,\n\n\t/**\n\t * @deprecated use https://nextcloud.github.io/nextcloud-files/modules/_humanfilesize_.html#formatfilesize\n\t */\n\thumanFileSize,\n\n\t/**\n\t * Returns a file size in bytes from a humanly readable string\n\t * Makes 2kB to 2048.\n\t * Inspired by computerFileSize in helper.php\n\t *\n\t * @param {string} string file size in human readable format\n\t * @return {number} or null if string could not be parsed\n\t *\n\t *\n\t */\n\tcomputerFileSize(string) {\n\t\tif (typeof string !== 'string') {\n\t\t\treturn null\n\t\t}\n\n\t\tconst s = string.toLowerCase().trim()\n\t\tlet bytes = null\n\n\t\tconst bytesArray = {\n\t\t\tb: 1,\n\t\t\tk: 1024,\n\t\t\tkb: 1024,\n\t\t\tmb: 1024 * 1024,\n\t\t\tm: 1024 * 1024,\n\t\t\tgb: 1024 * 1024 * 1024,\n\t\t\tg: 1024 * 1024 * 1024,\n\t\t\ttb: 1024 * 1024 * 1024 * 1024,\n\t\t\tt: 1024 * 1024 * 1024 * 1024,\n\t\t\tpb: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t\tp: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t}\n\n\t\tconst matches = s.match(/^[\\s+]?([0-9]*)(\\.([0-9]+))?( +)?([kmgtp]?b?)$/i)\n\t\tif (matches !== null) {\n\t\t\tbytes = parseFloat(s)\n\t\t\tif (!isFinite(bytes)) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t\tif (matches[5]) {\n\t\t\tbytes = bytes * bytesArray[matches[5]]\n\t\t}\n\n\t\tbytes = Math.round(bytes)\n\t\treturn bytes\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @param {string} format date format, see momentjs docs\n\t * @return {string} timestamp formatted as requested\n\t */\n\tformatDate(timestamp, format) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tconsole.warn('OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tformat = format || 'LLL'\n\t\treturn moment(timestamp).format(format)\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @return {string} human readable difference from now\n\t */\n\trelativeModifiedDate(timestamp) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tconsole.warn('OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tconst diff = moment().diff(moment(timestamp))\n\t\tif (diff >= 0 && diff < 45000) {\n\t\t\treturn t('core', 'seconds ago')\n\t\t}\n\t\treturn moment(timestamp).fromNow()\n\t},\n\n\t/**\n\t * Returns the width of a generic browser scrollbar\n\t *\n\t * @return {number} width of scrollbar\n\t */\n\tgetScrollBarWidth() {\n\t\tif (this._scrollBarWidth) {\n\t\t\treturn this._scrollBarWidth\n\t\t}\n\n\t\tconst inner = document.createElement('p')\n\t\tinner.style.width = '100%'\n\t\tinner.style.height = '200px'\n\n\t\tconst outer = document.createElement('div')\n\t\touter.style.position = 'absolute'\n\t\touter.style.top = '0px'\n\t\touter.style.left = '0px'\n\t\touter.style.visibility = 'hidden'\n\t\touter.style.width = '200px'\n\t\touter.style.height = '150px'\n\t\touter.style.overflow = 'hidden'\n\t\touter.appendChild(inner)\n\n\t\tdocument.body.appendChild(outer)\n\t\tconst w1 = inner.offsetWidth\n\t\touter.style.overflow = 'scroll'\n\t\tlet w2 = inner.offsetWidth\n\t\tif (w1 === w2) {\n\t\t\tw2 = outer.clientWidth\n\t\t}\n\n\t\tdocument.body.removeChild(outer)\n\n\t\tthis._scrollBarWidth = (w1 - w2)\n\n\t\treturn this._scrollBarWidth\n\t},\n\n\t/**\n\t * Remove the time component from a given date\n\t *\n\t * @param {Date} date date\n\t * @return {Date} date with stripped time\n\t */\n\tstripTime(date) {\n\t\t// FIXME: likely to break when crossing DST\n\t\t// would be better to use a library like momentJS\n\t\treturn new Date(date.getFullYear(), date.getMonth(), date.getDate())\n\t},\n\n\t/**\n\t * Compare two strings to provide a natural sort\n\t *\n\t * @param {string} a first string to compare\n\t * @param {string} b second string to compare\n\t * @return {number} -1 if b comes before a, 1 if a comes before b\n\t * or 0 if the strings are identical\n\t */\n\tnaturalSortCompare(a, b) {\n\t\tlet x\n\t\tconst aa = chunkify(a)\n\t\tconst bb = chunkify(b)\n\n\t\tfor (x = 0; aa[x] && bb[x]; x++) {\n\t\t\tif (aa[x] !== bb[x]) {\n\t\t\t\tconst aNum = Number(aa[x]); const bNum = Number(bb[x])\n\t\t\t\t// note: == is correct here\n\t\t\t\t/* eslint-disable-next-line */\n\t\t\t\tif (aNum == aa[x] && bNum == bb[x]) {\n\t\t\t\t\treturn aNum - bNum\n\t\t\t\t} else {\n\t\t\t\t\t// Note: This locale setting isn't supported by all browsers but for the ones\n\t\t\t\t\t// that do there will be more consistency between client-server sorting\n\t\t\t\t\treturn aa[x].localeCompare(bb[x], OC.getLanguage())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn aa.length - bb.length\n\t},\n\n\t/**\n\t * Calls the callback in a given interval until it returns true\n\t *\n\t * @param {Function} callback function to call on success\n\t * @param {number} interval in milliseconds\n\t */\n\twaitFor(callback, interval) {\n\t\tconst internalCallback = function() {\n\t\t\tif (callback() !== true) {\n\t\t\t\tsetTimeout(internalCallback, interval)\n\t\t\t}\n\t\t}\n\n\t\tinternalCallback()\n\t},\n\n\t/**\n\t * Checks if a cookie with the given name is present and is set to the provided value.\n\t *\n\t * @param {string} name name of the cookie\n\t * @param {string} value value of the cookie\n\t * @return {boolean} true if the cookie with the given name has the given value\n\t */\n\tisCookieSetToValue(name, value) {\n\t\tconst cookies = document.cookie.split(';')\n\t\tfor (let i = 0; i < cookies.length; i++) {\n\t\t\tconst cookie = cookies[i].split('=')\n\t\t\tif (cookie[0].trim() === name && cookie[1].trim() === value) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 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 */\n\nconst base = window._oc_debug\n\nexport const debug = base\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 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 */\n\nlet webroot = window._oc_webroot\n\nif (typeof webroot === 'undefined') {\n\twebroot = location.pathname\n\tconst pos = webroot.indexOf('/index.php/')\n\tif (pos !== -1) {\n\t\twebroot = webroot.substr(0, pos)\n\t} else {\n\t\twebroot = webroot.substr(0, webroot.lastIndexOf('/'))\n\t}\n}\n\nexport default webroot\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nexport const get = context => name => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tcontext = context[namespaces[i]]\n\t\tif (!context) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn context[tail]\n}\n\n/**\n * Set a variable by name\n *\n * @param {string} context context\n * @return {Function} setter\n * @deprecated 19.0.0 use https://lodash.com/docs#set\n */\nexport const set = context => (name, value) => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tif (!context[namespaces[i]]) {\n\t\t\tcontext[namespaces[i]] = {}\n\t\t}\n\t\tcontext = context[namespaces[i]]\n\t}\n\tcontext[tail] = value\n\treturn value\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport { subscribe } from '@nextcloud/event-bus'\n\nimport { addScript, addStyle } from './legacy-loader'\nimport {\n\tajaxConnectionLostHandler,\n\tprocessAjaxError,\n\tregisterXHRForErrorProcessing,\n} from './xhr-error'\nimport Apps from './apps'\nimport { AppConfig, appConfig } from './appconfig'\nimport { appSettings } from './appsettings'\nimport appswebroots from './appswebroots'\nimport Backbone from './backbone'\nimport {\n\tbasename,\n\tdirname,\n\tencodePath,\n\tisSamePath,\n\tjoinPaths,\n} from '@nextcloud/paths'\nimport {\n\tbuild as buildQueryString,\n\tparse as parseQueryString,\n} from './query-string'\nimport Config from './config'\nimport {\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n} from './constants'\nimport ContactsMenu from './contactsmenu'\nimport { currentUser, getCurrentUser } from './currentuser'\nimport Dialogs from './dialogs'\nimport EventSource from './eventsource'\nimport { get, set } from './get_set'\nimport { getCapabilities } from './capabilities'\nimport {\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n} from './host'\nimport {\n\tgetToken as getRequestToken,\n} from './requesttoken'\nimport {\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n} from './menu'\nimport { isUserAdmin } from './admin'\nimport L10N, {\n\tgetLanguage,\n\tgetLocale,\n} from './l10n'\nimport {\n\tgetCanonicalLocale,\n} from '@nextcloud/l10n'\n\nimport {\n\tgenerateUrl,\n\tgenerateFilePath,\n\tgenerateOcsUrl,\n\tgenerateRemoteUrl,\n\tgetRootUrl,\n\timagePath,\n\tlinkTo,\n} from '@nextcloud/router'\n\nimport {\n\tlinkToRemoteBase,\n} from './routing'\nimport msg from './msg'\nimport Notification from './notification'\nimport PasswordConfirmation from './password-confirmation'\nimport Plugins from './plugins'\nimport { theme } from './theme'\nimport Util from './util'\nimport { debug } from './debug'\nimport { redirect, reload } from './navigation'\nimport webroot from './webroot'\n\n/** @namespace OC */\nexport default {\n\t/*\n\t * Constants\n\t */\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n\n\t/*\n\t * Deprecated helpers to be removed\n\t */\n\t/**\n\t * Check if a user file is allowed to be handled.\n\t *\n\t * @param {string} file to check\n\t * @return {boolean}\n\t * @deprecated 17.0.0\n\t */\n\tfileIsBlacklisted: file => !!(file.match(Config.blacklist_files_regex)),\n\n\taddScript,\n\taddStyle,\n\tApps,\n\tAppConfig,\n\tappConfig,\n\tappSettings,\n\tappswebroots,\n\tBackbone,\n\tContactsMenu,\n\tconfig: Config,\n\t/**\n\t * Currently logged in user or null if none\n\t *\n\t * @type {string}\n\t * @deprecated use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tcurrentUser,\n\tdialogs: Dialogs,\n\tEventSource,\n\t/**\n\t * Returns the currently logged in user or null if there is no logged in\n\t * user (public page mode)\n\t *\n\t * @since 9.0.0\n\t * @deprecated 19.0.0 use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tgetCurrentUser,\n\tisUserAdmin,\n\tL10N,\n\n\t/**\n\t * Ajax error handlers\n\t *\n\t * @todo remove from here and keep internally -> requires new tests\n\t */\n\t_ajaxConnectionLostHandler: ajaxConnectionLostHandler,\n\t_processAjaxError: processAjaxError,\n\tregisterXHRForErrorProcessing,\n\n\t/**\n\t * Capabilities\n\t *\n\t * @type {Array}\n\t * @deprecated 20.0.0 use @nextcloud/capabilities instead\n\t */\n\tgetCapabilities,\n\n\t/*\n\t * Legacy menu helpers\n\t */\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n\n\t/*\n\t * Path helpers\n\t */\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tbasename,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tencodePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tdirname,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tisSamePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tjoinPaths,\n\n\t/**\n\t * Host (url) helpers\n\t */\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n\n\t/**\n\t * @deprecated 20.0.0 use `getCanonicalLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetCanonicalLocale,\n\tgetLocale,\n\tgetLanguage,\n\t/**\n\t * Loads translations for the given app asynchronously.\n\t *\n\t * @param {string} app app name\n\t * @param {Function} callback callback to call after loading\n\t * @return {Promise}\n\t * @deprecated 17.0.0 use OC.L10N.load instead\n\t */\n\taddTranslations: L10N.load,\n\n\t/**\n\t * Query string helpers\n\t */\n\tbuildQueryString,\n\tparseQueryString,\n\n\tmsg,\n\tNotification,\n\tPasswordConfirmation,\n\tPlugins,\n\ttheme,\n\tUtil,\n\tdebug,\n\t/**\n\t * @deprecated 19.0.0 use `generateFilePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tfilePath: generateFilePath,\n\t/**\n\t * @deprecated 19.0.0 use `generateUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgenerateUrl,\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#get\n\t */\n\tget: get(window),\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#set\n\t */\n\tset: set(window),\n\t/**\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgetRootPath: getRootUrl,\n\t/**\n\t * @deprecated 19.0.0 use `imagePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\timagePath,\n\tredirect,\n\treload,\n\trequestToken: getRequestToken(),\n\t/**\n\t * @deprecated 19.0.0 use `linkTo` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkTo,\n\t/**\n\t * @param {string} service service name\n\t * @param {number} version OCS API version\n\t * @return {string} OCS API base path\n\t * @deprecated 19.0.0 use `generateOcsUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToOCS: (service, version) => {\n\t\treturn generateOcsUrl(service, {}, {\n\t\t\tocsVersion: version || 1,\n\t\t}) + '/'\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `generateRemoteUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToRemote: generateRemoteUrl,\n\tlinkToRemoteBase,\n\t/**\n\t * Relative path to Nextcloud root.\n\t * For example: \"/nextcloud\"\n\t *\n\t * @type {string}\n\t *\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t * @see OC#getRootPath\n\t */\n\twebroot,\n}\n\n// Keep the request token prop in sync\nsubscribe('csrf-token-update', e => {\n\tOC.requestToken = e.token\n\n\t// Logging might help debug (Sentry) issues\n\tconsole.info('OC.requestToken changed', e.token)\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\n/* eslint-disable */\nimport $ from 'jquery'\nimport { filePath } from './routing'\nimport { generateFilePath } from \"@nextcloud/router\"\n\n/**\n * Opens a popup with the setting for an app.\n * @param {string} appid The ID of the app e.g. 'calendar', 'contacts' or 'files'.\n * @param {boolean|string} loadJS If true 'js/settings.js' is loaded. If it's a string\n * it will attempt to load a script by that name in the 'js' directory.\n * @param {boolean} [cache] If true the javascript file won't be forced refreshed. Defaults to true.\n * @param {string} [scriptName] The name of the PHP file to load. Defaults to 'settings.php' in\n * the root of the app directory hierarchy.\n *\n * @deprecated 17.0.0 this method is unused and will be removed with Nextcloud 18\n */\nexport const appSettings = args => {\n\tconsole.warn('OC.appSettings is deprecated and will be removed with Nextcloud 18')\n\n\tif (typeof args === 'undefined' || typeof args.appid === 'undefined') {\n\t\tthrow {\n\t\t\tname: 'MissingParameter',\n\t\t\tmessage: 'The parameter appid is missing'\n\t\t}\n\t}\n\tvar props = { scriptName: 'settings.php', cache: true }\n\t$.extend(props, args)\n\tvar settings = $('#appsettings')\n\tif (settings.length === 0) {\n\t\tthrow {\n\t\t\tname: 'MissingDOMElement',\n\t\t\tmessage: 'There has be be an element with id \"appsettings\" for the popup to show.'\n\t\t}\n\t}\n\tvar popup = $('#appsettings_popup')\n\tif (popup.length === 0) {\n\t\t$('body').prepend('<div class=\"popup hidden\" id=\"appsettings_popup\"></div>')\n\t\tpopup = $('#appsettings_popup')\n\t\tpopup.addClass(settings.hasClass('topright') ? 'topright' : 'bottomleft')\n\t}\n\tif (popup.is(':visible')) {\n\t\tpopup.hide().remove()\n\t} else {\n\t\tconst arrowclass = settings.hasClass('topright') ? 'up' : 'left'\n\t\t$.get(generateFilePath(props.appid, '', props.scriptName), function(data) {\n\t\t\tpopup.html(data).ready(function() {\n\t\t\t\tpopup.prepend('<span class=\"arrow ' + arrowclass + '\"></span><h2>' + t('core', 'Settings') + '</h2><a class=\"close\"></a>').show()\n\t\t\t\tpopup.find('.close').bind('click', function() {\n\t\t\t\t\tpopup.remove()\n\t\t\t\t})\n\t\t\t\tif (typeof props.loadJS !== 'undefined') {\n\t\t\t\t\tvar scriptname\n\t\t\t\t\tif (props.loadJS === true) {\n\t\t\t\t\t\tscriptname = 'settings.js'\n\t\t\t\t\t} else if (typeof props.loadJS === 'string') {\n\t\t\t\t\t\tscriptname = props.loadJS\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow {\n\t\t\t\t\t\t\tname: 'InvalidParameter',\n\t\t\t\t\t\t\tmessage: 'The \"loadJS\" parameter must be either boolean or a string.'\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (props.cache) {\n\t\t\t\t\t\t$.ajaxSetup({ cache: true })\n\t\t\t\t\t}\n\t\t\t\t\t$.getScript(generateFilePath(props.appid, 'js', scriptname))\n\t\t\t\t\t\t.fail(function(jqxhr, settings, e) {\n\t\t\t\t\t\t\tthrow e\n\t\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}).show()\n\t\t}, 'html')\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport { getCapabilities as realGetCapabilities } from '@nextcloud/capabilities'\n\n/**\n * Returns the capabilities\n *\n * @return {Array} capabilities\n *\n * @since 14.0.0\n */\nexport const getCapabilities = () => {\n\tconsole.warn('OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities')\n\treturn realGetCapabilities()\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nexport const getProtocol = () => window.location.protocol.split(':')[0]\n\n/**\n * Returns the host used to access this Nextcloud instance\n * Host is sometimes the same as the hostname but now always.\n *\n * Examples:\n * http://example.com => example.com\n * https://example.com => example.com\n * http://example.com:8080 => example.com:8080\n *\n * @return {string} host\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.host directly\n */\nexport const getHost = () => window.location.host\n\n/**\n * Returns the hostname used to access this Nextcloud instance\n * The hostname is always stripped of the port\n *\n * @return {string} hostname\n * @since 9.0.0\n * @deprecated 17.0.0 use window.location.hostname directly\n */\nexport const getHostName = () => window.location.hostname\n\n/**\n * Returns the port number used to access this Nextcloud instance\n *\n * @return {number} port number\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.port directly\n */\nexport const getPort = () => window.location.port\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport $ from 'jquery'\n\n/**\n * Parses a URL query string into a JS map\n *\n * @param {string} queryString query string in the format param1=1234&param2=abcde&param3=xyz\n * @return {object.<string, string>} map containing key/values matching the URL parameters\n */\nexport const parse = queryString => {\n\tlet pos\n\tlet components\n\tconst result = {}\n\tlet key\n\tif (!queryString) {\n\t\treturn null\n\t}\n\tpos = queryString.indexOf('?')\n\tif (pos >= 0) {\n\t\tqueryString = queryString.substr(pos + 1)\n\t}\n\tconst parts = queryString.replace(/\\+/g, '%20').split('&')\n\tfor (let i = 0; i < parts.length; i++) {\n\t\t// split on first equal sign\n\t\tconst part = parts[i]\n\t\tpos = part.indexOf('=')\n\t\tif (pos >= 0) {\n\t\t\tcomponents = [\n\t\t\t\tpart.substr(0, pos),\n\t\t\t\tpart.substr(pos + 1),\n\t\t\t]\n\t\t} else {\n\t\t\t// key only\n\t\t\tcomponents = [part]\n\t\t}\n\t\tif (!components.length) {\n\t\t\tcontinue\n\t\t}\n\t\tkey = decodeURIComponent(components[0])\n\t\tif (!key) {\n\t\t\tcontinue\n\t\t}\n\t\t// if equal sign was there, return string\n\t\tif (components.length > 1) {\n\t\t\tresult[key] = decodeURIComponent(components[1])\n\t\t} else {\n\t\t\t// no equal sign => null value\n\t\t\tresult[key] = null\n\t\t}\n\t}\n\treturn result\n}\n\n/**\n * Builds a URL query from a JS map.\n *\n * @param {object.<string, string>} params map containing key/values matching the URL parameters\n * @return {string} String containing a URL query (without question) mark\n */\nexport const build = params => {\n\tif (!params) {\n\t\treturn ''\n\t}\n\treturn $.map(params, function(value, key) {\n\t\tlet s = encodeURIComponent(key)\n\t\tif (value !== null && typeof (value) !== 'undefined') {\n\t\t\ts += '=' + encodeURIComponent(value)\n\t\t}\n\t\treturn s\n\t}).join('&')\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nexport default {\n\n\t/**\n\t * @type {Array.<OC.Plugin>}\n\t */\n\t_plugins: {},\n\n\t/**\n\t * Register plugin\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @param {OC.Plugin} plugin plugin\n\t */\n\tregister(targetName, plugin) {\n\t\tlet plugins = this._plugins[targetName]\n\t\tif (!plugins) {\n\t\t\tplugins = this._plugins[targetName] = []\n\t\t}\n\t\tplugins.push(plugin)\n\t},\n\n\t/**\n\t * Returns all plugin registered to the given target\n\t * name / app name / class name.\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @return {Array.<OC.Plugin>} array of plugins\n\t */\n\tgetPlugins(targetName) {\n\t\treturn this._plugins[targetName] || []\n\t},\n\n\t/**\n\t * Call attach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tattach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].attach) {\n\t\t\t\tplugins[i].attach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Call detach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tdetach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].detach) {\n\t\t\t\tplugins[i].detach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nexport const redirect = targetURL => { window.location = targetURL }\n\n/**\n * Reloads the current page\n *\n * @deprecated 17.0.0 use window.location.reload directly\n */\nexport const reload = () => { window.location.reload() }\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport {\n\tgetRootUrl as realGetRootUrl,\n} from '@nextcloud/router'\n\n/**\n * Creates a relative url for remote use\n *\n * @param {string} service id\n * @return {string} the url\n */\nexport const linkToRemoteBase = service => {\n\treturn realGetRootUrl() + '/remote.php/' + service\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.hideLoginForm || _vm.directLogin)?_c('div',[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[(!_vm.passwordlessLogin && !_vm.resetPassword && _vm.resetPasswordTarget === '')?_c('div',{key:\"login\"},[_c('LoginForm',{attrs:{\"username\":_vm.user,\"redirect-url\":_vm.redirectUrl,\"direct-login\":_vm.directLogin,\"messages\":_vm.messages,\"errors\":_vm.errors,\"throttle-delay\":_vm.throttleDelay,\"inverted-colors\":_vm.invertedColors,\"auto-complete-allowed\":_vm.autoCompleteAllowed},on:{\"update:username\":function($event){_vm.user=$event},\"submit\":function($event){_vm.loading = true}}}),_vm._v(\" \"),(_vm.canResetPassword && _vm.resetPasswordLink !== '')?_c('a',{attrs:{\"id\":\"lost-password\",\"href\":_vm.resetPasswordLink}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Forgot password?'))+\"\\n\\t\\t\\t\")]):(_vm.canResetPassword && !_vm.resetPassword)?_c('a',{attrs:{\"id\":\"lost-password\",\"href\":_vm.resetPasswordLink},on:{\"click\":function($event){$event.preventDefault();_vm.resetPassword = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Forgot password?'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('br'),_vm._v(\" \"),(_vm.hasPasswordless)?[(_vm.countAlternativeLogins)?_c('div',{staticClass:\"alternative-logins\"},[(_vm.hasPasswordless)?_c('a',{staticClass:\"button\",class:{ 'single-alt-login-option': _vm.countAlternativeLogins },attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Log in with a device'))+\"\\n\\t\\t\\t\\t\\t\")]):_vm._e()]):_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Log in with a device'))+\"\\n\\t\\t\\t\\t\")])]:_vm._e()],2):(!_vm.loading && _vm.passwordlessLogin)?_c('div',{key:\"reset\",staticClass:\"login-additional\"},[_c('PasswordLessLoginForm',{attrs:{\"username\":_vm.user,\"redirect-url\":_vm.redirectUrl,\"inverted-colors\":_vm.invertedColors,\"auto-complete-allowed\":_vm.autoCompleteAllowed,\"is-https\":_vm.isHttps,\"is-localhost\":_vm.isLocalhost,\"has-public-key-credential\":_vm.hasPublicKeyCredential},on:{\"update:username\":function($event){_vm.user=$event},\"submit\":function($event){_vm.loading = true}}}),_vm._v(\" \"),_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = false}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Back'))+\"\\n\\t\\t\\t\")])],1):(!_vm.loading && _vm.canResetPassword)?_c('div',{key:\"reset\",staticClass:\"login-additional\"},[_c('div',{staticClass:\"lost-password-container\"},[(_vm.resetPassword)?_c('ResetPassword',{attrs:{\"username\":_vm.user,\"reset-password-link\":_vm.resetPasswordLink,\"inverted-colors\":_vm.invertedColors},on:{\"update:username\":function($event){_vm.user=$event},\"abort\":function($event){_vm.resetPassword = false}}}):_vm._e()],1)]):(_vm.resetPasswordTarget !== '')?_c('div',[_c('UpdatePassword',{attrs:{\"username\":_vm.user,\"reset-password-target\":_vm.resetPasswordTarget,\"inverted-colors\":_vm.invertedColors},on:{\"update:username\":function($event){_vm.user=$event},\"done\":_vm.passwordResetFinished}})],1):_vm._e()])],1):_c('div',[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('div',{staticClass:\"warning\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Login form is disabled.'))),_c('br'),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.t('core', 'Please contact your administrator.'))+\"\\n\\t\\t\\t\")])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.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!./LoginButton.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\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\n<template>\n\t<div id=\"submit-wrapper\" @click=\"$emit('click')\">\n\t\t<input id=\"submit-form\"\n\t\t\ttype=\"submit\"\n\t\t\tclass=\"login primary\"\n\t\t\ttitle=\"\"\n\t\t\t:value=\"!loading ? t('core', 'Log in') : t('core', 'Logging in …')\">\n\t\t<div class=\"submit-icon\"\n\t\t\t:class=\"{\n\t\t\t\t'icon-confirm-white': !loading,\n\t\t\t\t'icon-loading-small': loading && invertedColors,\n\t\t\t\t'icon-loading-small-dark': loading && !invertedColors,\n\t\t\t}\" />\n\t</div>\n</template>\n\n<script>\nexport default {\n\tname: 'LoginButton',\n\tprops: {\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tinvertedColors: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\n</style>\n","import { render, staticRenderFns } from \"./LoginButton.vue?vue&type=template&id=125b100b&scoped=true&\"\nimport script from \"./LoginButton.vue?vue&type=script&lang=js&\"\nexport * from \"./LoginButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"125b100b\",\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',{attrs:{\"id\":\"submit-wrapper\"},on:{\"click\":function($event){return _vm.$emit('click')}}},[_c('input',{staticClass:\"login primary\",attrs:{\"id\":\"submit-form\",\"type\":\"submit\",\"title\":\"\"},domProps:{\"value\":!_vm.loading ? _vm.t('core', 'Log in') : _vm.t('core', 'Logging in …')}}),_vm._v(\" \"),_c('div',{staticClass:\"submit-icon\",class:{\n\t\t\t'icon-confirm-white': !_vm.loading,\n\t\t\t'icon-loading-small': _vm.loading && _vm.invertedColors,\n\t\t\t'icon-loading-small-dark': _vm.loading && !_vm.invertedColors,\n\t\t}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.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!./LoginForm.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\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\n<template>\n\t<form ref=\"loginForm\"\n\t\tmethod=\"post\"\n\t\tname=\"login\"\n\t\t:action=\"loginActionUrl\"\n\t\t@submit=\"submit\">\n\t\t<fieldset>\n\t\t\t<div v-if=\"apacheAuthFailed\"\n\t\t\t\tclass=\"warning\">\n\t\t\t\t{{ t('core', 'Server side authentication failed!') }}<br>\n\t\t\t\t<small>{{ t('core', 'Please contact your administrator.') }}\n\t\t\t\t</small>\n\t\t\t</div>\n\t\t\t<div v-for=\"(message, index) in messages\"\n\t\t\t\t:key=\"index\"\n\t\t\t\tclass=\"warning\">\n\t\t\t\t{{ message }}<br>\n\t\t\t</div>\n\t\t\t<div v-if=\"internalException\"\n\t\t\t\tclass=\"warning\">\n\t\t\t\t{{ t('core', 'An internal error occurred.') }}<br>\n\t\t\t\t<small>{{ t('core', 'Please try again or contact your administrator.') }}\n\t\t\t\t</small>\n\t\t\t</div>\n\t\t\t<div id=\"message\"\n\t\t\t\tclass=\"hidden\">\n\t\t\t\t<img class=\"float-spinner\"\n\t\t\t\t\talt=\"\"\n\t\t\t\t\t:src=\"loadingIcon\">\n\t\t\t\t<span id=\"messageText\" />\n\t\t\t\t<!-- the following div ensures that the spinner is always inside the #message div -->\n\t\t\t\t<div style=\"clear: both;\" />\n\t\t\t</div>\n\t\t\t<p class=\"grouptop\"\n\t\t\t\t:class=\"{shake: invalidPassword}\">\n\t\t\t\t<input id=\"user\"\n\t\t\t\t\tref=\"user\"\n\t\t\t\t\tv-model=\"user\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tname=\"user\"\n\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\tautocorrect=\"off\"\n\t\t\t\t\t:autocomplete=\"autoCompleteAllowed ? 'on' : 'off'\"\n\t\t\t\t\t:placeholder=\"t('core', 'Username or email')\"\n\t\t\t\t\t:aria-label=\"t('core', 'Username or email')\"\n\t\t\t\t\trequired\n\t\t\t\t\t@change=\"updateUsername\">\n\t\t\t\t<label for=\"user\" class=\"infield\">{{ t('core', 'Username or email') }}</label>\n\t\t\t</p>\n\n\t\t\t<p class=\"groupbottom\"\n\t\t\t\t:class=\"{shake: invalidPassword}\">\n\t\t\t\t<input id=\"password\"\n\t\t\t\t\tref=\"password\"\n\t\t\t\t\t:type=\"passwordInputType\"\n\t\t\t\t\tclass=\"password-with-toggle\"\n\t\t\t\t\tname=\"password\"\n\t\t\t\t\tautocorrect=\"off\"\n\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\t:autocomplete=\"autoCompleteAllowed ? 'current-password' : 'off'\"\n\t\t\t\t\t:placeholder=\"t('core', 'Password')\"\n\t\t\t\t\t:aria-label=\"t('core', 'Password')\"\n\t\t\t\t\trequired>\n\t\t\t\t<label for=\"password\"\n\t\t\t\t\tclass=\"infield\">{{ t('Password') }}</label>\n\t\t\t\t<a href=\"#\" class=\"toggle-password\" @click.stop.prevent=\"togglePassword\">\n\t\t\t\t\t<img :src=\"toggleIcon\" :alt=\"t('core', 'Toggle password visibility')\">\n\t\t\t\t</a>\n\t\t\t</p>\n\n\t\t\t<LoginButton :loading=\"loading\" :inverted-colors=\"invertedColors\" />\n\n\t\t\t<p v-if=\"invalidPassword\"\n\t\t\t\tclass=\"warning wrongPasswordMsg\">\n\t\t\t\t{{ t('core', 'Wrong username or password.') }}\n\t\t\t</p>\n\t\t\t<p v-else-if=\"userDisabled\"\n\t\t\t\tclass=\"warning userDisabledMsg\">\n\t\t\t\t{{ t('core', 'User disabled') }}\n\t\t\t</p>\n\n\t\t\t<p v-if=\"throttleDelay && throttleDelay > 5000\"\n\t\t\t\tclass=\"warning throttledMsg\">\n\t\t\t\t{{ t('core', 'We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds.') }}\n\t\t\t</p>\n\n\t\t\t<input v-if=\"redirectUrl\"\n\t\t\t\ttype=\"hidden\"\n\t\t\t\tname=\"redirect_url\"\n\t\t\t\t:value=\"redirectUrl\">\n\t\t\t<input type=\"hidden\"\n\t\t\t\tname=\"timezone\"\n\t\t\t\t:value=\"timezone\">\n\t\t\t<input type=\"hidden\"\n\t\t\t\tname=\"timezone_offset\"\n\t\t\t\t:value=\"timezoneOffset\">\n\t\t\t<input type=\"hidden\"\n\t\t\t\tname=\"requesttoken\"\n\t\t\t\t:value=\"OC.requestToken\">\n\t\t\t<input v-if=\"directLogin\"\n\t\t\t\ttype=\"hidden\"\n\t\t\t\tname=\"direct\"\n\t\t\t\tvalue=\"1\">\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport jstz from 'jstimezonedetect'\nimport LoginButton from './LoginButton'\nimport {\n\tgenerateUrl,\n\timagePath,\n} from '@nextcloud/router'\n\nexport default {\n\tname: 'LoginForm',\n\tcomponents: { LoginButton },\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tredirectUrl: {\n\t\t\ttype: [String, Boolean],\n\t\t\tdefault: false,\n\t\t},\n\t\terrors: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tmessages: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tthrottleDelay: {\n\t\t\ttype: Number,\n\t\t\tdefault: 0,\n\t\t},\n\t\tinvertedColors: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tautoCompleteAllowed: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tdirectLogin: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\ttimezone: jstz.determine().name(),\n\t\t\ttimezoneOffset: (-new Date().getTimezoneOffset() / 60),\n\t\t\tuser: this.username,\n\t\t\tpassword: '',\n\t\t\tpasswordInputType: 'password',\n\t\t}\n\t},\n\tcomputed: {\n\t\tapacheAuthFailed() {\n\t\t\treturn this.errors.indexOf('apacheAuthFailed') !== -1\n\t\t},\n\t\tinternalException() {\n\t\t\treturn this.errors.indexOf('internalexception') !== -1\n\t\t},\n\t\tinvalidPassword() {\n\t\t\treturn this.errors.indexOf('invalidpassword') !== -1\n\t\t},\n\t\tuserDisabled() {\n\t\t\treturn this.errors.indexOf('userdisabled') !== -1\n\t\t},\n\t\ttoggleIcon() {\n\t\t\treturn imagePath('core', 'actions/toggle.svg')\n\t\t},\n\t\tloadingIcon() {\n\t\t\treturn imagePath('core', 'loading-dark.gif')\n\t\t},\n\t\tloginActionUrl() {\n\t\t\treturn generateUrl('login')\n\t\t},\n\t},\n\tmounted() {\n\t\tif (this.username === '') {\n\t\t\tthis.$refs.user.focus()\n\t\t} else {\n\t\t\tthis.$refs.password.focus()\n\t\t}\n\t},\n\tmethods: {\n\t\ttogglePassword() {\n\t\t\tif (this.passwordInputType === 'password') {\n\t\t\t\tthis.passwordInputType = 'text'\n\t\t\t} else {\n\t\t\t\tthis.passwordInputType = 'password'\n\t\t\t}\n\t\t},\n\t\tupdateUsername() {\n\t\t\tthis.$emit('update:username', this.user)\n\t\t},\n\t\tsubmit() {\n\t\t\tthis.loading = true\n\t\t\tthis.$emit('submit')\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\n</style>\n","import { render, staticRenderFns } from \"./LoginForm.vue?vue&type=template&id=0b3a0522&scoped=true&\"\nimport script from \"./LoginForm.vue?vue&type=script&lang=js&\"\nexport * from \"./LoginForm.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0b3a0522\",\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('form',{ref:\"loginForm\",attrs:{\"method\":\"post\",\"name\":\"login\",\"action\":_vm.loginActionUrl},on:{\"submit\":_vm.submit}},[_c('fieldset',[(_vm.apacheAuthFailed)?_c('div',{staticClass:\"warning\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Server side authentication failed!'))),_c('br'),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.t('core', 'Please contact your administrator.'))+\"\\n\\t\\t\\t\")])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.messages),function(message,index){return _c('div',{key:index,staticClass:\"warning\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(message)),_c('br')])}),_vm._v(\" \"),(_vm.internalException)?_c('div',{staticClass:\"warning\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'An internal error occurred.'))),_c('br'),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.t('core', 'Please try again or contact your administrator.'))+\"\\n\\t\\t\\t\")])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"hidden\",attrs:{\"id\":\"message\"}},[_c('img',{staticClass:\"float-spinner\",attrs:{\"alt\":\"\",\"src\":_vm.loadingIcon}}),_vm._v(\" \"),_c('span',{attrs:{\"id\":\"messageText\"}}),_vm._v(\" \"),_c('div',{staticStyle:{\"clear\":\"both\"}})]),_vm._v(\" \"),_c('p',{staticClass:\"grouptop\",class:{shake: _vm.invalidPassword}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user),expression:\"user\"}],ref:\"user\",attrs:{\"id\":\"user\",\"type\":\"text\",\"name\":\"user\",\"autocapitalize\":\"none\",\"autocorrect\":\"off\",\"autocomplete\":_vm.autoCompleteAllowed ? 'on' : 'off',\"placeholder\":_vm.t('core', 'Username or email'),\"aria-label\":_vm.t('core', 'Username or email'),\"required\":\"\"},domProps:{\"value\":(_vm.user)},on:{\"change\":_vm.updateUsername,\"input\":function($event){if($event.target.composing){ return; }_vm.user=$event.target.value}}}),_vm._v(\" \"),_c('label',{staticClass:\"infield\",attrs:{\"for\":\"user\"}},[_vm._v(_vm._s(_vm.t('core', 'Username or email')))])]),_vm._v(\" \"),_c('p',{staticClass:\"groupbottom\",class:{shake: _vm.invalidPassword}},[_c('input',{ref:\"password\",staticClass:\"password-with-toggle\",attrs:{\"id\":\"password\",\"type\":_vm.passwordInputType,\"name\":\"password\",\"autocorrect\":\"off\",\"autocapitalize\":\"none\",\"autocomplete\":_vm.autoCompleteAllowed ? 'current-password' : 'off',\"placeholder\":_vm.t('core', 'Password'),\"aria-label\":_vm.t('core', 'Password'),\"required\":\"\"}}),_vm._v(\" \"),_c('label',{staticClass:\"infield\",attrs:{\"for\":\"password\"}},[_vm._v(_vm._s(_vm.t('Password')))]),_vm._v(\" \"),_c('a',{staticClass:\"toggle-password\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.togglePassword.apply(null, arguments)}}},[_c('img',{attrs:{\"src\":_vm.toggleIcon,\"alt\":_vm.t('core', 'Toggle password visibility')}})])]),_vm._v(\" \"),_c('LoginButton',{attrs:{\"loading\":_vm.loading,\"inverted-colors\":_vm.invertedColors}}),_vm._v(\" \"),(_vm.invalidPassword)?_c('p',{staticClass:\"warning wrongPasswordMsg\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Wrong username or password.'))+\"\\n\\t\\t\")]):(_vm.userDisabled)?_c('p',{staticClass:\"warning userDisabledMsg\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'User disabled'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.throttleDelay && _vm.throttleDelay > 5000)?_c('p',{staticClass:\"warning throttledMsg\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.redirectUrl)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"redirect_url\"},domProps:{\"value\":_vm.redirectUrl}}):_vm._e(),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"timezone\"},domProps:{\"value\":_vm.timezone}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"timezone_offset\"},domProps:{\"value\":_vm.timezoneOffset}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"requesttoken\"},domProps:{\"value\":_vm.OC.requestToken}}),_vm._v(\" \"),(_vm.directLogin)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"direct\",\"value\":\"1\"}}):_vm._e()],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<form v-if=\"(isHttps || isLocalhost) && hasPublicKeyCredential\"\n\t\tref=\"loginForm\"\n\t\tmethod=\"post\"\n\t\tname=\"login\"\n\t\t@submit.prevent=\"submit\">\n\t\t<fieldset>\n\t\t\t<p class=\"grouptop groupbottom\">\n\t\t\t\t<label for=\"user\" class=\"infield\">{{ t('core', 'Username or\temail') }}</label>\n\t\t\t\t<input id=\"user\"\n\t\t\t\t\tref=\"user\"\n\t\t\t\t\tv-model=\"user\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tname=\"user\"\n\t\t\t\t\t:autocomplete=\"autoCompleteAllowed ? 'on' : 'off'\"\n\t\t\t\t\t:placeholder=\"t('core', 'Username or email')\"\n\t\t\t\t\t:aria-label=\"t('core', 'Username or email')\"\n\t\t\t\t\trequired\n\t\t\t\t\t@change=\"$emit('update:username', user)\">\n\t\t\t</p>\n\n\t\t\t<div v-if=\"!validCredentials\" class=\"body-login-container update form__message-box\">\n\t\t\t\t{{ t('core', 'Your account is not setup for passwordless login.') }}\n\t\t\t</div>\n\n\t\t\t<LoginButton v-if=\"validCredentials\"\n\t\t\t\t:loading=\"loading\"\n\t\t\t\t:inverted-colors=\"invertedColors\"\n\t\t\t\t@click=\"authenticate\" />\n\t\t</fieldset>\n\t</form>\n\t<div v-else-if=\"!hasPublicKeyCredential\" class=\"body-login-container update\">\n\t\t<InformationIcon size=\"70\" />\n\t\t<h2>{{ t('core', 'Browser not supported') }}</h2>\n\t\t<p class=\"infogroup\">\n\t\t\t{{ t('core', 'Passwordless authentication is not supported in your browser.') }}\n\t\t</p>\n\t</div>\n\t<div v-else-if=\"!isHttps && !isLocalhost\" class=\"body-login-container update\">\n\t\t<LockOpenIcon size=\"70\" />\n\t\t<h2>{{ t('core', 'Your connection is not secure') }}</h2>\n\t\t<p class=\"infogroup\">\n\t\t\t{{ t('core', 'Passwordless authentication is only available over a secure connection.') }}\n\t\t</p>\n\t</div>\n</template>\n\n<script>\nimport {\n\tstartAuthentication,\n\tfinishAuthentication,\n} from '../../services/WebAuthnAuthenticationService'\nimport LoginButton from './LoginButton'\nimport InformationIcon from 'vue-material-design-icons/Information'\nimport LockOpenIcon from 'vue-material-design-icons/LockOpen'\n\nclass NoValidCredentials extends Error {\n\n}\n\nexport default {\n\tname: 'PasswordLessLoginForm',\n\tcomponents: {\n\t\tLoginButton,\n\t\tInformationIcon,\n\t\tLockOpenIcon,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tredirectUrl: {\n\t\t\ttype: [String, Boolean],\n\t\t\tdefault: false,\n\t\t},\n\t\tinvertedColors: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tautoCompleteAllowed: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tisHttps: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisLocalhost: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\thasPublicKeyCredential: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tuser: this.username,\n\t\t\tloading: false,\n\t\t\tvalidCredentials: true,\n\t\t}\n\t},\n\tmethods: {\n\t\tauthenticate() {\n\t\t\tconsole.debug('passwordless login initiated')\n\n\t\t\tthis.getAuthenticationData(this.user)\n\t\t\t\t.then(publicKey => {\n\t\t\t\t\tconsole.debug(publicKey)\n\t\t\t\t\treturn publicKey\n\t\t\t\t})\n\t\t\t\t.then(this.sign)\n\t\t\t\t.then(this.completeAuthentication)\n\t\t\t\t.catch(error => {\n\t\t\t\t\tif (error instanceof NoValidCredentials) {\n\t\t\t\t\t\tthis.validCredentials = false\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tconsole.debug(error)\n\t\t\t\t})\n\t\t},\n\t\tgetAuthenticationData(uid) {\n\t\t\tconst base64urlDecode = function(input) {\n\t\t\t\t// Replace non-url compatible chars with base64 standard chars\n\t\t\t\tinput = input\n\t\t\t\t\t.replace(/-/g, '+')\n\t\t\t\t\t.replace(/_/g, '/')\n\n\t\t\t\t// Pad out with standard base64 required padding characters\n\t\t\t\tconst pad = input.length % 4\n\t\t\t\tif (pad) {\n\t\t\t\t\tif (pad === 1) {\n\t\t\t\t\t\tthrow new Error('InvalidLengthError: Input base64url string is the wrong length to determine padding')\n\t\t\t\t\t}\n\t\t\t\t\tinput += new Array(5 - pad).join('=')\n\t\t\t\t}\n\n\t\t\t\treturn window.atob(input)\n\t\t\t}\n\n\t\t\treturn startAuthentication(uid)\n\t\t\t\t.then(publicKey => {\n\t\t\t\t\tconsole.debug('Obtained PublicKeyCredentialRequestOptions')\n\t\t\t\t\tconsole.debug(publicKey)\n\n\t\t\t\t\tif (!Object.prototype.hasOwnProperty.call(publicKey, 'allowCredentials')) {\n\t\t\t\t\t\tconsole.debug('No credentials found.')\n\t\t\t\t\t\tthrow new NoValidCredentials()\n\t\t\t\t\t}\n\n\t\t\t\t\tpublicKey.challenge = Uint8Array.from(base64urlDecode(publicKey.challenge), c => c.charCodeAt(0))\n\t\t\t\t\tpublicKey.allowCredentials = publicKey.allowCredentials.map(function(data) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...data,\n\t\t\t\t\t\t\tid: Uint8Array.from(base64urlDecode(data.id), c => c.charCodeAt(0)),\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\n\t\t\t\t\tconsole.debug('Converted PublicKeyCredentialRequestOptions')\n\t\t\t\t\tconsole.debug(publicKey)\n\t\t\t\t\treturn publicKey\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.debug('Error while obtaining data')\n\t\t\t\t\tthrow error\n\t\t\t\t})\n\t\t},\n\t\tsign(publicKey) {\n\t\t\tconst arrayToBase64String = function(a) {\n\t\t\t\treturn window.btoa(String.fromCharCode(...a))\n\t\t\t}\n\n\t\t\tconst arrayToString = function(a) {\n\t\t\t\treturn String.fromCharCode(...a)\n\t\t\t}\n\n\t\t\treturn navigator.credentials.get({ publicKey })\n\t\t\t\t.then(data => {\n\t\t\t\t\tconsole.debug(data)\n\t\t\t\t\tconsole.debug(new Uint8Array(data.rawId))\n\t\t\t\t\tconsole.debug(arrayToBase64String(new Uint8Array(data.rawId)))\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: data.id,\n\t\t\t\t\t\ttype: data.type,\n\t\t\t\t\t\trawId: arrayToBase64String(new Uint8Array(data.rawId)),\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tauthenticatorData: arrayToBase64String(new Uint8Array(data.response.authenticatorData)),\n\t\t\t\t\t\t\tclientDataJSON: arrayToBase64String(new Uint8Array(data.response.clientDataJSON)),\n\t\t\t\t\t\t\tsignature: arrayToBase64String(new Uint8Array(data.response.signature)),\n\t\t\t\t\t\t\tuserHandle: data.response.userHandle ? arrayToString(new Uint8Array(data.response.userHandle)) : null,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.then(challenge => {\n\t\t\t\t\tconsole.debug(challenge)\n\t\t\t\t\treturn challenge\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.debug('GOT AN ERROR!')\n\t\t\t\t\tconsole.debug(error) // Example: timeout, interaction refused...\n\t\t\t\t})\n\t\t},\n\t\tcompleteAuthentication(challenge) {\n\t\t\tconsole.debug('TIME TO COMPLETE')\n\n\t\t\tconst location = this.redirectUrl\n\n\t\t\treturn finishAuthentication(JSON.stringify(challenge))\n\t\t\t\t.then(data => {\n\t\t\t\t\tconsole.debug('Logged in redirecting')\n\t\t\t\t\twindow.location.href = location\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.debug('GOT AN ERROR WHILE SUBMITTING CHALLENGE!')\n\t\t\t\t\tconsole.debug(error) // Example: timeout, interaction refused...\n\t\t\t\t})\n\t\t},\n\t\tsubmit() {\n\t\t\t// noop\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.body-login-container.update {\n\t\tmargin: 15px 0;\n\n\t\t&.form__message-box {\n\t\t\twidth: 240px;\n\t\t\tmargin: 5px;\n\t\t}\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.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!./PasswordLessLoginForm.vue?vue&type=script&lang=js&\"","/**\n * @copyright 2020, Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport Axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\n\n/**\n * @param {any} loginName -\n */\nexport function startAuthentication(loginName) {\n\tconst url = generateUrl('/login/webauthn/start')\n\n\treturn Axios.post(url, { loginName })\n\t\t.then(resp => resp.data)\n}\n\n/**\n * @param {any} data -\n */\nexport function finishAuthentication(data) {\n\tconst url = generateUrl('/login/webauthn/finish')\n\n\treturn Axios.post(url, { data })\n\t\t.then(resp => resp.data)\n}\n","\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!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=4f29a6e2&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!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=4f29a6e2&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PasswordLessLoginForm.vue?vue&type=template&id=4f29a6e2&scoped=true&\"\nimport script from \"./PasswordLessLoginForm.vue?vue&type=script&lang=js&\"\nexport * from \"./PasswordLessLoginForm.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PasswordLessLoginForm.vue?vue&type=style&index=0&id=4f29a6e2&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 \"4f29a6e2\",\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 ((_vm.isHttps || _vm.isLocalhost) && _vm.hasPublicKeyCredential)?_c('form',{ref:\"loginForm\",attrs:{\"method\":\"post\",\"name\":\"login\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',[_c('p',{staticClass:\"grouptop groupbottom\"},[_c('label',{staticClass:\"infield\",attrs:{\"for\":\"user\"}},[_vm._v(_vm._s(_vm.t('core', 'Username or\temail')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user),expression:\"user\"}],ref:\"user\",attrs:{\"id\":\"user\",\"type\":\"text\",\"name\":\"user\",\"autocomplete\":_vm.autoCompleteAllowed ? 'on' : 'off',\"placeholder\":_vm.t('core', 'Username or email'),\"aria-label\":_vm.t('core', 'Username or email'),\"required\":\"\"},domProps:{\"value\":(_vm.user)},on:{\"change\":function($event){return _vm.$emit('update:username', _vm.user)},\"input\":function($event){if($event.target.composing){ return; }_vm.user=$event.target.value}}})]),_vm._v(\" \"),(!_vm.validCredentials)?_c('div',{staticClass:\"body-login-container update form__message-box\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Your account is not setup for passwordless login.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.validCredentials)?_c('LoginButton',{attrs:{\"loading\":_vm.loading,\"inverted-colors\":_vm.invertedColors},on:{\"click\":_vm.authenticate}}):_vm._e()],1)]):(!_vm.hasPublicKeyCredential)?_c('div',{staticClass:\"body-login-container update\"},[_c('InformationIcon',{attrs:{\"size\":\"70\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Browser not supported')))]),_vm._v(\" \"),_c('p',{staticClass:\"infogroup\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Passwordless authentication is not supported in your browser.'))+\"\\n\\t\")])],1):(!_vm.isHttps && !_vm.isLocalhost)?_c('div',{staticClass:\"body-login-container update\"},[_c('LockOpenIcon',{attrs:{\"size\":\"70\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Your connection is not secure')))]),_vm._v(\" \"),_c('p',{staticClass:\"infogroup\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Passwordless authentication is only available over a secure connection.'))+\"\\n\\t\")])],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.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!./ResetPassword.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\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\n<template>\n\t<form @submit.prevent=\"submit\">\n\t\t<fieldset>\n\t\t\t<p>\n\t\t\t\t<input id=\"user\"\n\t\t\t\t\tv-model=\"user\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tname=\"user\"\n\t\t\t\t\tautocapitalize=\"off\"\n\t\t\t\t\t:placeholder=\"t('core', 'Username or email')\"\n\t\t\t\t\t:aria-label=\"t('core', 'Username or email')\"\n\t\t\t\t\trequired\n\t\t\t\t\t@change=\"updateUsername\">\n\t\t\t\t<!--<?php p($_['user_autofocus'] ? 'autofocus' : ''); ?>\n\t\t\t\tautocomplete=\"<?php p($_['login_form_autocomplete']); ?>\" autocapitalize=\"none\" autocorrect=\"off\"-->\n\t\t\t\t<label for=\"user\" class=\"infield\">{{ t('core', 'Username or email') }}</label>\n\t\t\t</p>\n\t\t\t<div id=\"reset-password-wrapper\">\n\t\t\t\t<input id=\"reset-password-submit\"\n\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\tclass=\"login primary\"\n\t\t\t\t\ttitle=\"\"\n\t\t\t\t\t:value=\"t('core', 'Reset password')\">\n\t\t\t\t<div class=\"submit-icon\"\n\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t'icon-confirm-white': !loading,\n\t\t\t\t\t\t'icon-loading-small': loading && invertedColors,\n\t\t\t\t\t\t'icon-loading-small-dark': loading && !invertedColors,\n\t\t\t\t\t}\" />\n\t\t\t</div>\n\t\t\t<p v-if=\"message === 'send-success'\"\n\t\t\t\tclass=\"update\">\n\t\t\t\t{{ t('core', 'A password reset message has been sent to the email address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help.') }}\n\t\t\t\t<br>\n\t\t\t\t{{ t('core', 'If it is not there ask your local administrator.') }}\n\t\t\t</p>\n\t\t\t<p v-else-if=\"message === 'send-error'\"\n\t\t\t\tclass=\"update warning\">\n\t\t\t\t{{ t('core', 'Couldn\\'t send reset email. Please contact your administrator.') }}\n\t\t\t</p>\n\t\t\t<p v-else-if=\"message === 'reset-error'\"\n\t\t\t\tclass=\"update warning\">\n\t\t\t\t{{ t('core', 'Password cannot be changed. Please contact your administrator.') }}\n\t\t\t</p>\n\t\t\t<p v-else-if=\"message\"\n\t\t\t\tclass=\"update\"\n\t\t\t\t:class=\"{warning: error}\" />\n\n\t\t\t<a href=\"#\"\n\t\t\t\t@click.prevent=\"$emit('abort')\">\n\t\t\t\t{{ t('core', 'Back to login') }}\n\t\t\t</a>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\n\nimport { generateUrl } from '@nextcloud/router'\n\nexport default {\n\tname: 'ResetPassword',\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordLink: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tinvertedColors: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tupdateUsername() {\n\t\t\tthis.$emit('update:username', this.user)\n\t\t},\n\t\tsubmit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = ''\n\t\t\tconst url = generateUrl('/lostpassword/email')\n\n\t\t\tconst data = {\n\t\t\t\tuser: this.user,\n\t\t\t}\n\n\t\t\treturn axios.post(url, data)\n\t\t\t\t.then(resp => resp.data)\n\t\t\t\t.then(data => {\n\t\t\t\t\tif (data.status !== 'success') {\n\t\t\t\t\t\tthrow new Error(`got status ${data.status}`)\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.message = 'send-success'\n\t\t\t\t})\n\t\t\t\t.catch(e => {\n\t\t\t\t\tconsole.error('could not send reset email request', e)\n\n\t\t\t\t\tthis.error = true\n\t\t\t\t\tthis.message = 'send-error'\n\t\t\t\t})\n\t\t\t\t.then(() => { this.loading = false })\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\t.update {\n\t\twidth: auto;\n\t}\n</style>\n","\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/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=style&index=0&id=d9d670b8&scoped=true&lang=css&\";\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/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=style&index=0&id=d9d670b8&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ResetPassword.vue?vue&type=template&id=d9d670b8&scoped=true&\"\nimport script from \"./ResetPassword.vue?vue&type=script&lang=js&\"\nexport * from \"./ResetPassword.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ResetPassword.vue?vue&type=style&index=0&id=d9d670b8&scoped=true&lang=css&\"\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 \"d9d670b8\",\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('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',[_c('p',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user),expression:\"user\"}],attrs:{\"id\":\"user\",\"type\":\"text\",\"name\":\"user\",\"autocapitalize\":\"off\",\"placeholder\":_vm.t('core', 'Username or email'),\"aria-label\":_vm.t('core', 'Username or email'),\"required\":\"\"},domProps:{\"value\":(_vm.user)},on:{\"change\":_vm.updateUsername,\"input\":function($event){if($event.target.composing){ return; }_vm.user=$event.target.value}}}),_vm._v(\" \"),_c('label',{staticClass:\"infield\",attrs:{\"for\":\"user\"}},[_vm._v(_vm._s(_vm.t('core', 'Username or email')))])]),_vm._v(\" \"),_c('div',{attrs:{\"id\":\"reset-password-wrapper\"}},[_c('input',{staticClass:\"login primary\",attrs:{\"id\":\"reset-password-submit\",\"type\":\"submit\",\"title\":\"\"},domProps:{\"value\":_vm.t('core', 'Reset password')}}),_vm._v(\" \"),_c('div',{staticClass:\"submit-icon\",class:{\n\t\t\t\t\t'icon-confirm-white': !_vm.loading,\n\t\t\t\t\t'icon-loading-small': _vm.loading && _vm.invertedColors,\n\t\t\t\t\t'icon-loading-small-dark': _vm.loading && !_vm.invertedColors,\n\t\t\t\t}})]),_vm._v(\" \"),(_vm.message === 'send-success')?_c('p',{staticClass:\"update\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'A password reset message has been sent to the email address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help.'))+\"\\n\\t\\t\\t\"),_c('br'),_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'If it is not there ask your local administrator.'))+\"\\n\\t\\t\")]):(_vm.message === 'send-error')?_c('p',{staticClass:\"update warning\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Couldn\\'t send reset email. Please contact your administrator.'))+\"\\n\\t\\t\")]):(_vm.message === 'reset-error')?_c('p',{staticClass:\"update warning\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Password cannot be changed. Please contact your administrator.'))+\"\\n\\t\\t\")]):(_vm.message)?_c('p',{staticClass:\"update\",class:{warning: _vm.error}}):_vm._e(),_vm._v(\" \"),_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.$emit('abort')}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Back to login'))+\"\\n\\t\\t\")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<form @submit.prevent=\"submit\">\n\t\t<fieldset>\n\t\t\t<p>\n\t\t\t\t<label for=\"password\" class=\"infield\">{{ t('core', 'New password') }}</label>\n\t\t\t\t<input id=\"password\"\n\t\t\t\t\tv-model=\"password\"\n\t\t\t\t\ttype=\"password\"\n\t\t\t\t\tname=\"password\"\n\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\tautocorrect=\"off\"\n\t\t\t\t\trequired\n\t\t\t\t\t:placeholder=\"t('core', 'New password')\">\n\t\t\t</p>\n\n\t\t\t<div v-if=\"encrypted\" class=\"update\">\n\t\t\t\t<p>\n\t\t\t\t\t{{ t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?') }}\n\t\t\t\t</p>\n\t\t\t\t<input id=\"encrypted-continue\"\n\t\t\t\t\tv-model=\"proceed\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\tclass=\"checkbox\">\n\t\t\t\t<label for=\"encrypted-continue\">\n\t\t\t\t\t{{ t('core', 'I know what I\\'m doing') }}\n\t\t\t\t</label>\n\t\t\t</div>\n\n\t\t\t<div id=\"submit-wrapper\">\n\t\t\t\t<input id=\"submit\"\n\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\tclass=\"login primary\"\n\t\t\t\t\ttitle=\"\"\n\t\t\t\t\t:value=\"!loading ? t('core', 'Reset password') : t('core', 'Resetting password')\">\n\t\t\t\t<div class=\"submit-icon\"\n\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t'icon-loading-small': loading && invertedColors,\n\t\t\t\t\t\t'icon-loading-small-dark': loading && !invertedColors\n\t\t\t\t\t}\" />\n\t\t\t</div>\n\n\t\t\t<p v-if=\"error && message\" :class=\"{warning: error}\">\n\t\t\t\t{{ message }}\n\t\t\t</p>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport Axios from '@nextcloud/axios'\n\nexport default {\n\tname: 'UpdatePassword',\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordTarget: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tinvertedColors: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t\tpassword: '',\n\t\t\tencrypted: false,\n\t\t\tproceed: false,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tasync submit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = ''\n\n\t\t\ttry {\n\t\t\t\tconst { data } = await Axios.post(this.resetPasswordTarget, {\n\t\t\t\t\tpassword: this.password,\n\t\t\t\t\tproceed: this.proceed,\n\t\t\t\t})\n\t\t\t\tif (data && data.status === 'success') {\n\t\t\t\t\tthis.message = 'send-success'\n\t\t\t\t\tthis.$emit('update:username', this.user)\n\t\t\t\t\tthis.$emit('done')\n\t\t\t\t} else if (data && data.encryption) {\n\t\t\t\t\tthis.encrypted = true\n\t\t\t\t} else if (data && data.msg) {\n\t\t\t\t\tthrow new Error(data.msg)\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error()\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tthis.error = true\n\t\t\t\tthis.message = e.message ? e.message : t('core', 'Password cannot be changed. Please contact your administrator.')\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\tfieldset {\n\t\ttext-align: center;\n\t}\n\n\tinput[type=submit] {\n\t\tmargin-top: 20px;\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.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!./UpdatePassword.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/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=style&index=0&id=9ae5fdb4&scoped=true&lang=css&\";\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/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=style&index=0&id=9ae5fdb4&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UpdatePassword.vue?vue&type=template&id=9ae5fdb4&scoped=true&\"\nimport script from \"./UpdatePassword.vue?vue&type=script&lang=js&\"\nexport * from \"./UpdatePassword.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UpdatePassword.vue?vue&type=style&index=0&id=9ae5fdb4&scoped=true&lang=css&\"\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 \"9ae5fdb4\",\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('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',[_c('p',[_c('label',{staticClass:\"infield\",attrs:{\"for\":\"password\"}},[_vm._v(_vm._s(_vm.t('core', 'New password')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"}],attrs:{\"id\":\"password\",\"type\":\"password\",\"name\":\"password\",\"autocomplete\":\"new-password\",\"autocapitalize\":\"none\",\"autocorrect\":\"off\",\"required\":\"\",\"placeholder\":_vm.t('core', 'New password')},domProps:{\"value\":(_vm.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.password=$event.target.value}}})]),_vm._v(\" \"),(_vm.encrypted)?_c('div',{staticClass:\"update\"},[_c('p',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.proceed),expression:\"proceed\"}],staticClass:\"checkbox\",attrs:{\"id\":\"encrypted-continue\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.proceed)?_vm._i(_vm.proceed,null)>-1:(_vm.proceed)},on:{\"change\":function($event){var $$a=_vm.proceed,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.proceed=$$a.concat([$$v]))}else{$$i>-1&&(_vm.proceed=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.proceed=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"encrypted-continue\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'I know what I\\'m doing'))+\"\\n\\t\\t\\t\")])]):_vm._e(),_vm._v(\" \"),_c('div',{attrs:{\"id\":\"submit-wrapper\"}},[_c('input',{staticClass:\"login primary\",attrs:{\"id\":\"submit\",\"type\":\"submit\",\"title\":\"\"},domProps:{\"value\":!_vm.loading ? _vm.t('core', 'Reset password') : _vm.t('core', 'Resetting password')}}),_vm._v(\" \"),_c('div',{staticClass:\"submit-icon\",class:{\n\t\t\t\t\t'icon-loading-small': _vm.loading && _vm.invertedColors,\n\t\t\t\t\t'icon-loading-small-dark': _vm.loading && !_vm.invertedColors\n\t\t\t\t}})]),_vm._v(\" \"),(_vm.error && _vm.message)?_c('p',{class:{warning: _vm.error}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.message)+\"\\n\\t\\t\")]):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\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\n<template>\n\t<div v-if=\"!hideLoginForm || directLogin\">\n\t\t<transition name=\"fade\" mode=\"out-in\">\n\t\t\t<div v-if=\"!passwordlessLogin && !resetPassword && resetPasswordTarget === ''\"\n\t\t\t\tkey=\"login\">\n\t\t\t\t<LoginForm :username.sync=\"user\"\n\t\t\t\t\t:redirect-url=\"redirectUrl\"\n\t\t\t\t\t:direct-login=\"directLogin\"\n\t\t\t\t\t:messages=\"messages\"\n\t\t\t\t\t:errors=\"errors\"\n\t\t\t\t\t:throttle-delay=\"throttleDelay\"\n\t\t\t\t\t:inverted-colors=\"invertedColors\"\n\t\t\t\t\t:auto-complete-allowed=\"autoCompleteAllowed\"\n\t\t\t\t\t@submit=\"loading = true\" />\n\t\t\t\t<a v-if=\"canResetPassword && resetPasswordLink !== ''\"\n\t\t\t\t\tid=\"lost-password\"\n\t\t\t\t\t:href=\"resetPasswordLink\">\n\t\t\t\t\t{{ t('core', 'Forgot password?') }}\n\t\t\t\t</a>\n\t\t\t\t<a v-else-if=\"canResetPassword && !resetPassword\"\n\t\t\t\t\tid=\"lost-password\"\n\t\t\t\t\t:href=\"resetPasswordLink\"\n\t\t\t\t\t@click.prevent=\"resetPassword = true\">\n\t\t\t\t\t{{ t('core', 'Forgot password?') }}\n\t\t\t\t</a>\n\t\t\t\t<br>\n\t\t\t\t<template v-if=\"hasPasswordless\">\n\t\t\t\t\t<div v-if=\"countAlternativeLogins\"\n\t\t\t\t\t\tclass=\"alternative-logins\">\n\t\t\t\t\t\t<a v-if=\"hasPasswordless\"\n\t\t\t\t\t\t\tclass=\"button\"\n\t\t\t\t\t\t\t:class=\"{ 'single-alt-login-option': countAlternativeLogins }\"\n\t\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\t\t@click.prevent=\"passwordlessLogin = true\">\n\t\t\t\t\t\t\t{{ t('core', 'Log in with a device') }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t\t<a v-else\n\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\t@click.prevent=\"passwordlessLogin = true\">\n\t\t\t\t\t\t{{ t('core', 'Log in with a device') }}\n\t\t\t\t\t</a>\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t\t<div v-else-if=\"!loading && passwordlessLogin\"\n\t\t\t\tkey=\"reset\"\n\t\t\t\tclass=\"login-additional\">\n\t\t\t\t<PasswordLessLoginForm :username.sync=\"user\"\n\t\t\t\t\t:redirect-url=\"redirectUrl\"\n\t\t\t\t\t:inverted-colors=\"invertedColors\"\n\t\t\t\t\t:auto-complete-allowed=\"autoCompleteAllowed\"\n\t\t\t\t\t:is-https=\"isHttps\"\n\t\t\t\t\t:is-localhost=\"isLocalhost\"\n\t\t\t\t\t:has-public-key-credential=\"hasPublicKeyCredential\"\n\t\t\t\t\t@submit=\"loading = true\" />\n\t\t\t\t<a href=\"#\" @click.prevent=\"passwordlessLogin = false\">\n\t\t\t\t\t{{ t('core', 'Back') }}\n\t\t\t\t</a>\n\t\t\t</div>\n\t\t\t<div v-else-if=\"!loading && canResetPassword\"\n\t\t\t\tkey=\"reset\"\n\t\t\t\tclass=\"login-additional\">\n\t\t\t\t<div class=\"lost-password-container\">\n\t\t\t\t\t<ResetPassword v-if=\"resetPassword\"\n\t\t\t\t\t\t:username.sync=\"user\"\n\t\t\t\t\t\t:reset-password-link=\"resetPasswordLink\"\n\t\t\t\t\t\t:inverted-colors=\"invertedColors\"\n\t\t\t\t\t\t@abort=\"resetPassword = false\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div v-else-if=\"resetPasswordTarget !== ''\">\n\t\t\t\t<UpdatePassword :username.sync=\"user\"\n\t\t\t\t\t:reset-password-target=\"resetPasswordTarget\"\n\t\t\t\t\t:inverted-colors=\"invertedColors\"\n\t\t\t\t\t@done=\"passwordResetFinished\" />\n\t\t\t</div>\n\t\t</transition>\n\t</div>\n\t<div v-else>\n\t\t<transition name=\"fade\" mode=\"out-in\">\n\t\t\t<div class=\"warning\">\n\t\t\t\t{{ t('core', 'Login form is disabled.') }}<br>\n\t\t\t\t<small>{{ t('core', 'Please contact your administrator.') }}\n\t\t\t\t</small>\n\t\t\t</div>\n\t\t</transition>\n\t</div>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport queryString from 'query-string'\n\nimport LoginForm from '../components/login/LoginForm.vue'\nimport PasswordLessLoginForm from '../components/login/PasswordLessLoginForm.vue'\nimport ResetPassword from '../components/login/ResetPassword.vue'\nimport UpdatePassword from '../components/login/UpdatePassword.vue'\n\nconst query = queryString.parse(location.search)\nif (query.clear === '1') {\n\ttry {\n\t\twindow.localStorage.clear()\n\t\twindow.sessionStorage.clear()\n\t\tconsole.debug('Browser storage cleared')\n\t} catch (e) {\n\t\tconsole.error('Could not clear browser storage', e)\n\t}\n}\n\nexport default {\n\tname: 'Login',\n\n\tcomponents: {\n\t\tLoginForm,\n\t\tPasswordLessLoginForm,\n\t\tResetPassword,\n\t\tUpdatePassword,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\tuser: loadState('core', 'loginUsername', ''),\n\t\t\tpasswordlessLogin: false,\n\t\t\tresetPassword: false,\n\n\t\t\t// Initial data\n\t\t\terrors: loadState('core', 'loginErrors', []),\n\t\t\tmessages: loadState('core', 'loginMessages', []),\n\t\t\tredirectUrl: loadState('core', 'loginRedirectUrl', false),\n\t\t\tthrottleDelay: loadState('core', 'loginThrottleDelay', 0),\n\t\t\tinvertedColors: OCA.Theming && OCA.Theming.inverted,\n\t\t\tcanResetPassword: loadState('core', 'loginCanResetPassword', false),\n\t\t\tresetPasswordLink: loadState('core', 'loginResetPasswordLink', ''),\n\t\t\tautoCompleteAllowed: loadState('core', 'loginAutocomplete', true),\n\t\t\tresetPasswordTarget: loadState('core', 'resetPasswordTarget', ''),\n\t\t\tresetPasswordUser: loadState('core', 'resetPasswordUser', ''),\n\t\t\tdirectLogin: query.direct === '1',\n\t\t\thasPasswordless: loadState('core', 'webauthn-available', false),\n\t\t\tcountAlternativeLogins: loadState('core', 'countAlternativeLogins', false),\n\t\t\tisHttps: window.location.protocol === 'https:',\n\t\t\tisLocalhost: window.location.hostname === 'localhost',\n\t\t\thasPublicKeyCredential: typeof (window.PublicKeyCredential) !== 'undefined',\n\t\t\thideLoginForm: loadState('core', 'hideLoginForm', false),\n\t\t}\n\t},\n\tmethods: {\n\t\tpasswordResetFinished() {\n\t\t\tthis.resetPasswordTarget = ''\n\t\t\tthis.directLogin = true\n\t\t},\n\t},\n}\n</script>\n\n<style>\n\t.fade-enter-active, .fade-leave-active {\n\t\ttransition: opacity .3s;\n\t}\n\t.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\n\t\topacity: 0;\n\t}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.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!./Login.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/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&lang=css&\";\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/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Login.vue?vue&type=template&id=cdd35698&\"\nimport script from \"./Login.vue?vue&type=script&lang=js&\"\nexport * from \"./Login.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Login.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 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 */\n\nimport L10n from '../OC/l10n'\nimport OC from '../OC/index'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tOC,\n\t\t}\n\t},\n\tmethods: {\n\t\tt: L10n.translate.bind(L10n),\n\t\tn: L10n.translatePlural.bind(L10n),\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport Vue from 'vue'\n\n// eslint-disable-next-line no-unused-vars\nimport OC from './OC/index' // TODO: Not needed but L10n breaks if removed\nimport LoginView from './views/Login.vue'\nimport Nextcloud from './mixins/Nextcloud'\n\nVue.mixin(Nextcloud)\n\nconst View = Vue.extend(LoginView)\nnew View().$mount('#login')\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, \".body-login-container.update[data-v-4f29a6e2]{margin:15px 0}.body-login-container.update.form__message-box[data-v-4f29a6e2]{width:240px;margin:5px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/PasswordLessLoginForm.vue\"],\"names\":[],\"mappings\":\"AAmOA,8CACC,aAAA,CAEA,gEACC,WAAA,CACA,UAAA\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.body-login-container.update {\\n\\tmargin: 15px 0;\\n\\n\\t&.form__message-box {\\n\\t\\twidth: 240px;\\n\\t\\tmargin: 5px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"\\n.update[data-v-d9d670b8] {\\n\\twidth: auto;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/ResetPassword.vue\"],\"names\":[],\"mappings\":\";AAmJA;CACA,WAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\\n -\\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\\n -\\n - @license GNU AGPL version 3 or any later version\\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\\n<template>\\n\\t<form @submit.prevent=\\\"submit\\\">\\n\\t\\t<fieldset>\\n\\t\\t\\t<p>\\n\\t\\t\\t\\t<input id=\\\"user\\\"\\n\\t\\t\\t\\t\\tv-model=\\\"user\\\"\\n\\t\\t\\t\\t\\ttype=\\\"text\\\"\\n\\t\\t\\t\\t\\tname=\\\"user\\\"\\n\\t\\t\\t\\t\\tautocapitalize=\\\"off\\\"\\n\\t\\t\\t\\t\\t:placeholder=\\\"t('core', 'Username or email')\\\"\\n\\t\\t\\t\\t\\t:aria-label=\\\"t('core', 'Username or email')\\\"\\n\\t\\t\\t\\t\\trequired\\n\\t\\t\\t\\t\\t@change=\\\"updateUsername\\\">\\n\\t\\t\\t\\t<!--<?php p($_['user_autofocus'] ? 'autofocus' : ''); ?>\\n\\t\\t\\t\\tautocomplete=\\\"<?php p($_['login_form_autocomplete']); ?>\\\" autocapitalize=\\\"none\\\" autocorrect=\\\"off\\\"-->\\n\\t\\t\\t\\t<label for=\\\"user\\\" class=\\\"infield\\\">{{ t('core', 'Username or email') }}</label>\\n\\t\\t\\t</p>\\n\\t\\t\\t<div id=\\\"reset-password-wrapper\\\">\\n\\t\\t\\t\\t<input id=\\\"reset-password-submit\\\"\\n\\t\\t\\t\\t\\ttype=\\\"submit\\\"\\n\\t\\t\\t\\t\\tclass=\\\"login primary\\\"\\n\\t\\t\\t\\t\\ttitle=\\\"\\\"\\n\\t\\t\\t\\t\\t:value=\\\"t('core', 'Reset password')\\\">\\n\\t\\t\\t\\t<div class=\\\"submit-icon\\\"\\n\\t\\t\\t\\t\\t:class=\\\"{\\n\\t\\t\\t\\t\\t\\t'icon-confirm-white': !loading,\\n\\t\\t\\t\\t\\t\\t'icon-loading-small': loading && invertedColors,\\n\\t\\t\\t\\t\\t\\t'icon-loading-small-dark': loading && !invertedColors,\\n\\t\\t\\t\\t\\t}\\\" />\\n\\t\\t\\t</div>\\n\\t\\t\\t<p v-if=\\\"message === 'send-success'\\\"\\n\\t\\t\\t\\tclass=\\\"update\\\">\\n\\t\\t\\t\\t{{ t('core', 'A password reset message has been sent to the email address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help.') }}\\n\\t\\t\\t\\t<br>\\n\\t\\t\\t\\t{{ t('core', 'If it is not there ask your local administrator.') }}\\n\\t\\t\\t</p>\\n\\t\\t\\t<p v-else-if=\\\"message === 'send-error'\\\"\\n\\t\\t\\t\\tclass=\\\"update warning\\\">\\n\\t\\t\\t\\t{{ t('core', 'Couldn\\\\'t send reset email. Please contact your administrator.') }}\\n\\t\\t\\t</p>\\n\\t\\t\\t<p v-else-if=\\\"message === 'reset-error'\\\"\\n\\t\\t\\t\\tclass=\\\"update warning\\\">\\n\\t\\t\\t\\t{{ t('core', 'Password cannot be changed. Please contact your administrator.') }}\\n\\t\\t\\t</p>\\n\\t\\t\\t<p v-else-if=\\\"message\\\"\\n\\t\\t\\t\\tclass=\\\"update\\\"\\n\\t\\t\\t\\t:class=\\\"{warning: error}\\\" />\\n\\n\\t\\t\\t<a href=\\\"#\\\"\\n\\t\\t\\t\\t@click.prevent=\\\"$emit('abort')\\\">\\n\\t\\t\\t\\t{{ t('core', 'Back to login') }}\\n\\t\\t\\t</a>\\n\\t\\t</fieldset>\\n\\t</form>\\n</template>\\n\\n<script>\\nimport axios from '@nextcloud/axios'\\n\\nimport { generateUrl } from '@nextcloud/router'\\n\\nexport default {\\n\\tname: 'ResetPassword',\\n\\tprops: {\\n\\t\\tusername: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t\\tresetPasswordLink: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t\\tinvertedColors: {\\n\\t\\t\\ttype: Boolean,\\n\\t\\t\\tdefault: false,\\n\\t\\t},\\n\\t},\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\terror: false,\\n\\t\\t\\tloading: false,\\n\\t\\t\\tmessage: undefined,\\n\\t\\t\\tuser: this.username,\\n\\t\\t}\\n\\t},\\n\\twatch: {\\n\\t\\tusername(value) {\\n\\t\\t\\tthis.user = value\\n\\t\\t},\\n\\t},\\n\\tmethods: {\\n\\t\\tupdateUsername() {\\n\\t\\t\\tthis.$emit('update:username', this.user)\\n\\t\\t},\\n\\t\\tsubmit() {\\n\\t\\t\\tthis.loading = true\\n\\t\\t\\tthis.error = false\\n\\t\\t\\tthis.message = ''\\n\\t\\t\\tconst url = generateUrl('/lostpassword/email')\\n\\n\\t\\t\\tconst data = {\\n\\t\\t\\t\\tuser: this.user,\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn axios.post(url, data)\\n\\t\\t\\t\\t.then(resp => resp.data)\\n\\t\\t\\t\\t.then(data => {\\n\\t\\t\\t\\t\\tif (data.status !== 'success') {\\n\\t\\t\\t\\t\\t\\tthrow new Error(`got status ${data.status}`)\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tthis.message = 'send-success'\\n\\t\\t\\t\\t})\\n\\t\\t\\t\\t.catch(e => {\\n\\t\\t\\t\\t\\tconsole.error('could not send reset email request', e)\\n\\n\\t\\t\\t\\t\\tthis.error = true\\n\\t\\t\\t\\t\\tthis.message = 'send-error'\\n\\t\\t\\t\\t})\\n\\t\\t\\t\\t.then(() => { this.loading = false })\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style scoped>\\n\\t.update {\\n\\t\\twidth: auto;\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"\\nfieldset[data-v-9ae5fdb4] {\\n\\ttext-align: center;\\n}\\ninput[type=submit][data-v-9ae5fdb4] {\\n\\tmargin-top: 20px;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/UpdatePassword.vue\"],\"names\":[],\"mappings\":\";AA4IA;CACA,kBAAA;AACA;AAEA;CACA,gBAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\\n -\\n - @author Julius Härtl <jus@bitgrid.net>\\n -\\n - @license GNU AGPL version 3 or any later version\\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 -->\\n\\n<template>\\n\\t<form @submit.prevent=\\\"submit\\\">\\n\\t\\t<fieldset>\\n\\t\\t\\t<p>\\n\\t\\t\\t\\t<label for=\\\"password\\\" class=\\\"infield\\\">{{ t('core', 'New password') }}</label>\\n\\t\\t\\t\\t<input id=\\\"password\\\"\\n\\t\\t\\t\\t\\tv-model=\\\"password\\\"\\n\\t\\t\\t\\t\\ttype=\\\"password\\\"\\n\\t\\t\\t\\t\\tname=\\\"password\\\"\\n\\t\\t\\t\\t\\tautocomplete=\\\"new-password\\\"\\n\\t\\t\\t\\t\\tautocapitalize=\\\"none\\\"\\n\\t\\t\\t\\t\\tautocorrect=\\\"off\\\"\\n\\t\\t\\t\\t\\trequired\\n\\t\\t\\t\\t\\t:placeholder=\\\"t('core', 'New password')\\\">\\n\\t\\t\\t</p>\\n\\n\\t\\t\\t<div v-if=\\\"encrypted\\\" class=\\\"update\\\">\\n\\t\\t\\t\\t<p>\\n\\t\\t\\t\\t\\t{{ t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?') }}\\n\\t\\t\\t\\t</p>\\n\\t\\t\\t\\t<input id=\\\"encrypted-continue\\\"\\n\\t\\t\\t\\t\\tv-model=\\\"proceed\\\"\\n\\t\\t\\t\\t\\ttype=\\\"checkbox\\\"\\n\\t\\t\\t\\t\\tclass=\\\"checkbox\\\">\\n\\t\\t\\t\\t<label for=\\\"encrypted-continue\\\">\\n\\t\\t\\t\\t\\t{{ t('core', 'I know what I\\\\'m doing') }}\\n\\t\\t\\t\\t</label>\\n\\t\\t\\t</div>\\n\\n\\t\\t\\t<div id=\\\"submit-wrapper\\\">\\n\\t\\t\\t\\t<input id=\\\"submit\\\"\\n\\t\\t\\t\\t\\ttype=\\\"submit\\\"\\n\\t\\t\\t\\t\\tclass=\\\"login primary\\\"\\n\\t\\t\\t\\t\\ttitle=\\\"\\\"\\n\\t\\t\\t\\t\\t:value=\\\"!loading ? t('core', 'Reset password') : t('core', 'Resetting password')\\\">\\n\\t\\t\\t\\t<div class=\\\"submit-icon\\\"\\n\\t\\t\\t\\t\\t:class=\\\"{\\n\\t\\t\\t\\t\\t\\t'icon-loading-small': loading && invertedColors,\\n\\t\\t\\t\\t\\t\\t'icon-loading-small-dark': loading && !invertedColors\\n\\t\\t\\t\\t\\t}\\\" />\\n\\t\\t\\t</div>\\n\\n\\t\\t\\t<p v-if=\\\"error && message\\\" :class=\\\"{warning: error}\\\">\\n\\t\\t\\t\\t{{ message }}\\n\\t\\t\\t</p>\\n\\t\\t</fieldset>\\n\\t</form>\\n</template>\\n\\n<script>\\nimport Axios from '@nextcloud/axios'\\n\\nexport default {\\n\\tname: 'UpdatePassword',\\n\\tprops: {\\n\\t\\tusername: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t\\tresetPasswordTarget: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t\\tinvertedColors: {\\n\\t\\t\\ttype: Boolean,\\n\\t\\t\\tdefault: false,\\n\\t\\t},\\n\\t},\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\terror: false,\\n\\t\\t\\tloading: false,\\n\\t\\t\\tmessage: undefined,\\n\\t\\t\\tuser: this.username,\\n\\t\\t\\tpassword: '',\\n\\t\\t\\tencrypted: false,\\n\\t\\t\\tproceed: false,\\n\\t\\t}\\n\\t},\\n\\twatch: {\\n\\t\\tusername(value) {\\n\\t\\t\\tthis.user = value\\n\\t\\t},\\n\\t},\\n\\tmethods: {\\n\\t\\tasync submit() {\\n\\t\\t\\tthis.loading = true\\n\\t\\t\\tthis.error = false\\n\\t\\t\\tthis.message = ''\\n\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tconst { data } = await Axios.post(this.resetPasswordTarget, {\\n\\t\\t\\t\\t\\tpassword: this.password,\\n\\t\\t\\t\\t\\tproceed: this.proceed,\\n\\t\\t\\t\\t})\\n\\t\\t\\t\\tif (data && data.status === 'success') {\\n\\t\\t\\t\\t\\tthis.message = 'send-success'\\n\\t\\t\\t\\t\\tthis.$emit('update:username', this.user)\\n\\t\\t\\t\\t\\tthis.$emit('done')\\n\\t\\t\\t\\t} else if (data && data.encryption) {\\n\\t\\t\\t\\t\\tthis.encrypted = true\\n\\t\\t\\t\\t} else if (data && data.msg) {\\n\\t\\t\\t\\t\\tthrow new Error(data.msg)\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tthrow new Error()\\n\\t\\t\\t\\t}\\n\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\tthis.error = true\\n\\t\\t\\t\\tthis.message = e.message ? e.message : t('core', 'Password cannot be changed. Please contact your administrator.')\\n\\t\\t\\t} finally {\\n\\t\\t\\t\\tthis.loading = false\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style scoped>\\n\\tfieldset {\\n\\t\\ttext-align: center;\\n\\t}\\n\\n\\tinput[type=submit] {\\n\\t\\tmargin-top: 20px;\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"\\n.fade-enter-active, .fade-leave-active {\\n\\ttransition: opacity .3s;\\n}\\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\\n\\topacity: 0;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/Login.vue\"],\"names\":[],\"mappings\":\";AAiLA;CACA,uBAAA;AACA;AACA;CACA,UAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\\n -\\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\\n -\\n - @license GNU AGPL version 3 or any later version\\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\\n<template>\\n\\t<div v-if=\\\"!hideLoginForm || directLogin\\\">\\n\\t\\t<transition name=\\\"fade\\\" mode=\\\"out-in\\\">\\n\\t\\t\\t<div v-if=\\\"!passwordlessLogin && !resetPassword && resetPasswordTarget === ''\\\"\\n\\t\\t\\t\\tkey=\\\"login\\\">\\n\\t\\t\\t\\t<LoginForm :username.sync=\\\"user\\\"\\n\\t\\t\\t\\t\\t:redirect-url=\\\"redirectUrl\\\"\\n\\t\\t\\t\\t\\t:direct-login=\\\"directLogin\\\"\\n\\t\\t\\t\\t\\t:messages=\\\"messages\\\"\\n\\t\\t\\t\\t\\t:errors=\\\"errors\\\"\\n\\t\\t\\t\\t\\t:throttle-delay=\\\"throttleDelay\\\"\\n\\t\\t\\t\\t\\t:inverted-colors=\\\"invertedColors\\\"\\n\\t\\t\\t\\t\\t:auto-complete-allowed=\\\"autoCompleteAllowed\\\"\\n\\t\\t\\t\\t\\t@submit=\\\"loading = true\\\" />\\n\\t\\t\\t\\t<a v-if=\\\"canResetPassword && resetPasswordLink !== ''\\\"\\n\\t\\t\\t\\t\\tid=\\\"lost-password\\\"\\n\\t\\t\\t\\t\\t:href=\\\"resetPasswordLink\\\">\\n\\t\\t\\t\\t\\t{{ t('core', 'Forgot password?') }}\\n\\t\\t\\t\\t</a>\\n\\t\\t\\t\\t<a v-else-if=\\\"canResetPassword && !resetPassword\\\"\\n\\t\\t\\t\\t\\tid=\\\"lost-password\\\"\\n\\t\\t\\t\\t\\t:href=\\\"resetPasswordLink\\\"\\n\\t\\t\\t\\t\\t@click.prevent=\\\"resetPassword = true\\\">\\n\\t\\t\\t\\t\\t{{ t('core', 'Forgot password?') }}\\n\\t\\t\\t\\t</a>\\n\\t\\t\\t\\t<br>\\n\\t\\t\\t\\t<template v-if=\\\"hasPasswordless\\\">\\n\\t\\t\\t\\t\\t<div v-if=\\\"countAlternativeLogins\\\"\\n\\t\\t\\t\\t\\t\\tclass=\\\"alternative-logins\\\">\\n\\t\\t\\t\\t\\t\\t<a v-if=\\\"hasPasswordless\\\"\\n\\t\\t\\t\\t\\t\\t\\tclass=\\\"button\\\"\\n\\t\\t\\t\\t\\t\\t\\t:class=\\\"{ 'single-alt-login-option': countAlternativeLogins }\\\"\\n\\t\\t\\t\\t\\t\\t\\thref=\\\"#\\\"\\n\\t\\t\\t\\t\\t\\t\\t@click.prevent=\\\"passwordlessLogin = true\\\">\\n\\t\\t\\t\\t\\t\\t\\t{{ t('core', 'Log in with a device') }}\\n\\t\\t\\t\\t\\t\\t</a>\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t\\t<a v-else\\n\\t\\t\\t\\t\\t\\thref=\\\"#\\\"\\n\\t\\t\\t\\t\\t\\t@click.prevent=\\\"passwordlessLogin = true\\\">\\n\\t\\t\\t\\t\\t\\t{{ t('core', 'Log in with a device') }}\\n\\t\\t\\t\\t\\t</a>\\n\\t\\t\\t\\t</template>\\n\\t\\t\\t</div>\\n\\t\\t\\t<div v-else-if=\\\"!loading && passwordlessLogin\\\"\\n\\t\\t\\t\\tkey=\\\"reset\\\"\\n\\t\\t\\t\\tclass=\\\"login-additional\\\">\\n\\t\\t\\t\\t<PasswordLessLoginForm :username.sync=\\\"user\\\"\\n\\t\\t\\t\\t\\t:redirect-url=\\\"redirectUrl\\\"\\n\\t\\t\\t\\t\\t:inverted-colors=\\\"invertedColors\\\"\\n\\t\\t\\t\\t\\t:auto-complete-allowed=\\\"autoCompleteAllowed\\\"\\n\\t\\t\\t\\t\\t:is-https=\\\"isHttps\\\"\\n\\t\\t\\t\\t\\t:is-localhost=\\\"isLocalhost\\\"\\n\\t\\t\\t\\t\\t:has-public-key-credential=\\\"hasPublicKeyCredential\\\"\\n\\t\\t\\t\\t\\t@submit=\\\"loading = true\\\" />\\n\\t\\t\\t\\t<a href=\\\"#\\\" @click.prevent=\\\"passwordlessLogin = false\\\">\\n\\t\\t\\t\\t\\t{{ t('core', 'Back') }}\\n\\t\\t\\t\\t</a>\\n\\t\\t\\t</div>\\n\\t\\t\\t<div v-else-if=\\\"!loading && canResetPassword\\\"\\n\\t\\t\\t\\tkey=\\\"reset\\\"\\n\\t\\t\\t\\tclass=\\\"login-additional\\\">\\n\\t\\t\\t\\t<div class=\\\"lost-password-container\\\">\\n\\t\\t\\t\\t\\t<ResetPassword v-if=\\\"resetPassword\\\"\\n\\t\\t\\t\\t\\t\\t:username.sync=\\\"user\\\"\\n\\t\\t\\t\\t\\t\\t:reset-password-link=\\\"resetPasswordLink\\\"\\n\\t\\t\\t\\t\\t\\t:inverted-colors=\\\"invertedColors\\\"\\n\\t\\t\\t\\t\\t\\t@abort=\\\"resetPassword = false\\\" />\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t</div>\\n\\t\\t\\t<div v-else-if=\\\"resetPasswordTarget !== ''\\\">\\n\\t\\t\\t\\t<UpdatePassword :username.sync=\\\"user\\\"\\n\\t\\t\\t\\t\\t:reset-password-target=\\\"resetPasswordTarget\\\"\\n\\t\\t\\t\\t\\t:inverted-colors=\\\"invertedColors\\\"\\n\\t\\t\\t\\t\\t@done=\\\"passwordResetFinished\\\" />\\n\\t\\t\\t</div>\\n\\t\\t</transition>\\n\\t</div>\\n\\t<div v-else>\\n\\t\\t<transition name=\\\"fade\\\" mode=\\\"out-in\\\">\\n\\t\\t\\t<div class=\\\"warning\\\">\\n\\t\\t\\t\\t{{ t('core', 'Login form is disabled.') }}<br>\\n\\t\\t\\t\\t<small>{{ t('core', 'Please contact your administrator.') }}\\n\\t\\t\\t\\t</small>\\n\\t\\t\\t</div>\\n\\t\\t</transition>\\n\\t</div>\\n</template>\\n\\n<script>\\nimport { loadState } from '@nextcloud/initial-state'\\nimport queryString from 'query-string'\\n\\nimport LoginForm from '../components/login/LoginForm.vue'\\nimport PasswordLessLoginForm from '../components/login/PasswordLessLoginForm.vue'\\nimport ResetPassword from '../components/login/ResetPassword.vue'\\nimport UpdatePassword from '../components/login/UpdatePassword.vue'\\n\\nconst query = queryString.parse(location.search)\\nif (query.clear === '1') {\\n\\ttry {\\n\\t\\twindow.localStorage.clear()\\n\\t\\twindow.sessionStorage.clear()\\n\\t\\tconsole.debug('Browser storage cleared')\\n\\t} catch (e) {\\n\\t\\tconsole.error('Could not clear browser storage', e)\\n\\t}\\n}\\n\\nexport default {\\n\\tname: 'Login',\\n\\n\\tcomponents: {\\n\\t\\tLoginForm,\\n\\t\\tPasswordLessLoginForm,\\n\\t\\tResetPassword,\\n\\t\\tUpdatePassword,\\n\\t},\\n\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tloading: false,\\n\\t\\t\\tuser: loadState('core', 'loginUsername', ''),\\n\\t\\t\\tpasswordlessLogin: false,\\n\\t\\t\\tresetPassword: false,\\n\\n\\t\\t\\t// Initial data\\n\\t\\t\\terrors: loadState('core', 'loginErrors', []),\\n\\t\\t\\tmessages: loadState('core', 'loginMessages', []),\\n\\t\\t\\tredirectUrl: loadState('core', 'loginRedirectUrl', false),\\n\\t\\t\\tthrottleDelay: loadState('core', 'loginThrottleDelay', 0),\\n\\t\\t\\tinvertedColors: OCA.Theming && OCA.Theming.inverted,\\n\\t\\t\\tcanResetPassword: loadState('core', 'loginCanResetPassword', false),\\n\\t\\t\\tresetPasswordLink: loadState('core', 'loginResetPasswordLink', ''),\\n\\t\\t\\tautoCompleteAllowed: loadState('core', 'loginAutocomplete', true),\\n\\t\\t\\tresetPasswordTarget: loadState('core', 'resetPasswordTarget', ''),\\n\\t\\t\\tresetPasswordUser: loadState('core', 'resetPasswordUser', ''),\\n\\t\\t\\tdirectLogin: query.direct === '1',\\n\\t\\t\\thasPasswordless: loadState('core', 'webauthn-available', false),\\n\\t\\t\\tcountAlternativeLogins: loadState('core', 'countAlternativeLogins', false),\\n\\t\\t\\tisHttps: window.location.protocol === 'https:',\\n\\t\\t\\tisLocalhost: window.location.hostname === 'localhost',\\n\\t\\t\\thasPublicKeyCredential: typeof (window.PublicKeyCredential) !== 'undefined',\\n\\t\\t\\thideLoginForm: loadState('core', 'hideLoginForm', false),\\n\\t\\t}\\n\\t},\\n\\tmethods: {\\n\\t\\tpasswordResetFinished() {\\n\\t\\t\\tthis.resetPasswordTarget = ''\\n\\t\\t\\tthis.directLogin = true\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style>\\n\\t.fade-enter-active, .fade-leave-active {\\n\\t\\ttransition: opacity .3s;\\n\\t}\\n\\t.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\\n\\t\\topacity: 0;\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.program(5, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":1},\"end\":{\"line\":10,\"column\":8}}})) != null ? stack1 : \"\");\n},\"2\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":2},\"end\":{\"line\":7,\"column\":9}}})) != null ? stack1 : \"\");\n},\"3\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<a class=\\\"profile-link--avatar\\\" href=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32\\\" class=\\\"avatar\\\" srcset=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32 1x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=64 2x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=128 4x\\\" alt=\\\"\\\">\\n\t\t\t</a>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32\\\" class=\\\"avatar\\\" srcset=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32 1x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=64 2x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=128 4x\\\" alt=\\\"\\\">\\n\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(8, data, 0),\"inverse\":container.program(11, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":1},\"end\":{\"line\":20,\"column\":8}}})) != null ? stack1 : \"\");\n},\"8\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(9, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":2},\"end\":{\"line\":17,\"column\":9}}})) != null ? stack1 : \"\");\n},\"9\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<a class=\\\"profile-link--avatar\\\" href=\\\"\"\n + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t\t<div class=\\\"avatar\\\"></div>\\n\t\t\t</a>\\n\";\n},\"11\":function(container,depth0,helpers,partials,data) {\n return \"\t\t<div class=\\\"avatar\\\"></div>\\n\";\n},\"13\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(14, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":1},\"end\":{\"line\":29,\"column\":8}}})) != null ? stack1 : \"\");\n},\"14\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<a class=\\\"body profile-link--full-name\\\" href=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t\t</a>\\n\";\n},\"16\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(17, data, 0),\"inverse\":container.program(19, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":0},\"end\":{\"line\":45,\"column\":0}}})) != null ? stack1 : \"\");\n},\"17\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<a class=\\\"body\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\"> \\n\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t</a>\\n \t<a class=\\\"top-action\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n \t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n + \"\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t</a>\\n\";\n},\"19\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<div class=\\\"body\\\">\\n\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t</div>\\n\";\n},\"21\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<a class=\\\"second-action\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t<img src=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n + \"\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n</a>\\n\";\n},\"23\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<span class=\\\"other-actions icon-more\\\"></span>\\n\t<div class=\\\"menu popovermenu\\\">\\n\t\t<ul>\\n\"\n + ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"actions\") : stack1),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(24, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":55,\"column\":3},\"end\":{\"line\":62,\"column\":12}}})) != null ? stack1 : \"\")\n + \"\t\t</ul>\\n\t</div>\\n\";\n},\"24\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<li>\\n\t\t\t\t<a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"hyperlink\") || (depth0 != null ? lookupProperty(depth0,\"hyperlink\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"hyperlink\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":57,\"column\":13},\"end\":{\"line\":57,\"column\":26}}}) : helper)))\n + \"\\\">\\n\t\t\t\t\t<img src=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"icon\") || (depth0 != null ? lookupProperty(depth0,\"icon\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"icon\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":58,\"column\":15},\"end\":{\"line\":58,\"column\":23}}}) : helper)))\n + \"\\\" alt=\\\"\\\">\\n\t\t\t\t\t<span>\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"title\") || (depth0 != null ? lookupProperty(depth0,\"title\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"title\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":59,\"column\":11},\"end\":{\"line\":59,\"column\":20}}}) : helper)))\n + \"</span>\\n\t\t\t\t</a>\\n\t\t\t</li>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.program(7, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":21,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(13, data, 0),\"inverse\":container.program(16, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":22,\"column\":0},\"end\":{\"line\":45,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"hasTwoActions\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(21, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":46,\"column\":0},\"end\":{\"line\":50,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"hasManyActions\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(23, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":51,\"column\":0},\"end\":{\"line\":65,\"column\":7}}})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-search\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"couldNotLoadText\") || (depth0 != null ? lookupProperty(depth0,\"couldNotLoadText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"couldNotLoadText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":5},\"end\":{\"line\":3,\"column\":25}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-search\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"noContactsFoundText\") || (depth0 != null ? lookupProperty(depth0,\"noContactsFoundText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"noContactsFoundText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":5},\"end\":{\"line\":4,\"column\":28}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"footer\\\"><a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppURL\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppURL\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppURL\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":29},\"end\":{\"line\":9,\"column\":47}}}) : helper)))\n + \"\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"showAllContactsText\") || (depth0 != null ? lookupProperty(depth0,\"showAllContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"showAllContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":49},\"end\":{\"line\":9,\"column\":72}}}) : helper)))\n + \"</a></div>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"canInstallApp\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(6, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":0},\"end\":{\"line\":12,\"column\":0}}})) != null ? stack1 : \"\");\n},\"6\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"footer\\\"><a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppMgmtURL\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppMgmtURL\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppMgmtURL\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":29},\"end\":{\"line\":11,\"column\":51}}}) : helper)))\n + \"\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppMgmtText\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppMgmtText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppMgmtText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":53},\"end\":{\"line\":11,\"column\":76}}}) : helper)))\n + \"</a></div>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contacts\") : depth0)) != null ? lookupProperty(stack1,\"length\") : stack1),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":6,\"column\":11}}})) != null ? stack1 : \"\")\n + \"<div id=\\\"contactsmenu-contacts\\\"></div>\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"contactsAppEnabled\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.program(5, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":0},\"end\":{\"line\":12,\"column\":7}}})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-loading\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"loadingText\") || (depth0 != null ? lookupProperty(depth0,\"loadingText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"loadingText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":5},\"end\":{\"line\":3,\"column\":20}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<label class=\\\"hidden-visually\\\" for=\\\"contactsmenu-search\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchContactsText\") || (depth0 != null ? lookupProperty(depth0,\"searchContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":57},\"end\":{\"line\":1,\"column\":79}}}) : helper)))\n + \"</label>\\n<input id=\\\"contactsmenu-search\\\" type=\\\"search\\\" placeholder=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchContactsText\") || (depth0 != null ? lookupProperty(depth0,\"searchContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":59},\"end\":{\"line\":2,\"column\":81}}}) : helper)))\n + \"\\\" value=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchTerm\") || (depth0 != null ? lookupProperty(depth0,\"searchTerm\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchTerm\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":90},\"end\":{\"line\":2,\"column\":104}}}) : helper)))\n + \"\\\">\\n<div class=\\\"content\\\">\\n</div>\\n\";\n},\"useData\":true});","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 2819,\n\t\"./hi.js\": 2819,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","// 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 = 4577;","__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\t4577: 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));","__webpack_require__.nc = undefined;","// 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__(10473); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","loadedScripts","loadedStyles","updatableNotification","getDefaultNotificationFunction","setDefault","callback","this","hide","$row","_","undefined","each","$","toastify","hideToast","console","error","call","showHtml","html","options","isHTML","timeout","TOAST_PERMANENT_TIMEOUT","toast","showMessage","toastElement","show","text","toString","split","join","escapeHTML","showUpdate","showTemporary","TOAST_DEFAULT_TIMEOUT","isHidden","find","length","ajaxConnectionLostHandler","Notification","t","trailing","enableDynamicSlideToggle","Apps","$el","removeClass","trigger","addClass","method","endpoint","OC","type","toUpperCase","url","generateOcsUrl","data","success","bind","appConfig","window","oc_appconfig","AppConfig","getValue","app","key","defaultValue","setValue","value","getApps","getKeys","deleteKey","_oc_appswebroots","methodMap","create","update","patch","delete","read","parsePropFindResult","result","davProperties","subResult","props","href","propStat","status","properties","propKey","id","parseIdFromLocation","queryPos","indexOf","substr","parts","pop","isSuccessStatus","callPropPatch","client","model","headers","propPatch","attrs","changedProp","warn","convertModelAttributesToDavProperties","changed","then","toJSON","Backbone","VendorBackbone","Object","assign","davCall","dav","baseUrl","xmlNamespaces","resolveUrl","requestToken","propFind","depth","response","propsMapping","results","body","shift","callPropFind","request","callMkCol","responseJson","locationHeader","xhr","getResponseHeader","callMethod","davSync","params","isCollection","Collection","hasInnerCollection","usePUT","collection","Error","urlError","JSON","stringify","processData","prototype","textStatus","errorThrown","context","_oc_config","Contact","Model","defaults","fullName","lastMessage","actions","hasOneAction","hasTwoActions","hasManyActions","initialize","get","set","ContactCollection","ContactsListView","View","_collection","_subViews","render","self","forEach","contact","item","ContactsListItemView","append","on","_onChildActionMenuToggle","push","$src","view","className","_template","_model","_actionMenuShown","events","contactTemplate","require","template","_onOtherActionMenuOpened","delegateEvents","imageplaceholder","tooltip","placement","_onToggleActionsMenu","is","ContactsMenuView","_loadingTemplate","_errorTemplate","_contentTemplate","_contactsTemplate","_contacts","_searchTerm","templates","loading","menu","list","_onSearch","e","searchTerm","val","loadingTemplate","errorTemplate","couldNotLoadText","contentTemplate","searchContactsText","contactsTemplate","noContactsFoundText","showAllContactsText","contactsAppMgmtText","showLoading","loadingText","showError","showContacts","viewData","contacts","contactsAppEnabled","contactsAppURL","canInstallApp","contactsAppMgmtURL","searchVal","focus","ContactsMenu","_$trigger","_view","_contactsPromise","el","_loadContacts","_toggleVisibility","Promise","resolve","_getContacts","filter","term","catch","rawUid","document","getElementsByTagName","getAttribute","displayName","currentUser","Search","global","emit","token","Dialogs","YES_NO_BUTTONS","OK_BUTTONS","FILEPICKER_TYPE_CHOOSE","FILEPICKER_TYPE_MOVE","FILEPICKER_TYPE_COPY","FILEPICKER_TYPE_COPY_MOVE","FILEPICKER_TYPE_CUSTOM","dialogsCounter","alert","title","modal","message","OK_BUTTON","info","confirm","confirmDestructive","buttons","confirmHtml","prompt","name","password","_getMessageTemplate","$tmpl","dialogName","dialogId","$dlg","octemplate","dialog_name","input","attr","label","buttonlist","click","ocdialog","defaultButton","closeOnEscape","close","filepicker","multiselect","mimetypeFilter","path","sortField","sortOrder","emptyText","newText","filesClient","OCA","filelist","allowDirectoryChooser","_getFilePickerTemplate","$filePicker","emptytext","newtext","nameCol","sizeCol","modifiedCol","remove","$showGridView","_onGridviewChange","_getGridSettings","newButton","event","stopImmediatePropagation","preventDefault","$input","submit","newName","lastPos","lastIndexOf","selectRange","$form","stopPropagation","filename","trimmedName","trim","match","isFileNameValid","file","escape","checkInput","newname","createDirectory","always","_fillFilePicker","keypress","keyCode","which","ready","$fileListHeader","$filelist","$filelistContainer","$dirTree","_handleTreeListSelect","_handlePickerClick","dir","currentTarget","functionToCall","returnType","datapath","index","element","selectedName","button","width","height","style","buttonEnableDisable","closest","prop","fail","content","dialogType","allowHtml","escapeFunction","cancel","classes","confirmClasses","closeCallback","_fileexistsshown","fileexists","original","replacement","controller","dialogDeferred","resampleHermite","canvas","W","H","W2","H2","Math","round","img","getContext","getImageData","img2","data2","ratio_w","ratio_h","ratio_w_half","ceil","ratio_h_half","j","i","x2","weight","weights","weights_alpha","gx_r","gx_g","gx_b","gx_a","center_y","yy","floor","dy","abs","center_x","w0","xx","dx","w","sqrt","clearRect","max","putImageData","addConflict","$conflicts","$conflict","clone","$originalDiv","$replacementDiv","size","mtime","lastModified","directory","urlSpec","x","y","c","etag","forceIcon","previewpath","Files","generatePreviewUrl","replace","css","FileReader","reader","onload","blob","Blob","target","URL","webkitURL","originalUrl","createObjectURL","image","Image","src","createElement","min","drawImage","toDataURL","readAsArrayBuffer","reject","getCroppedPreview","checkboxId","count","n","parent","children","_getFileExistsTemplate","allnewfiles","allexistingfiles","why","what","onCancel","onContinue","closeButton","$primaryButton","updatePrimaryButton","checkedCount","$checkbox","promise","checked","gridview","next","toggleClass","defer","$filePickerTemplate","tmpl","$listTmpl","detach","jqXHR","$messageTemplate","$fileexistsTemplate","_getFileList","mimeType","mimetypes","empty","advancedFilter","getFolderContents","files","mimetype","showHiddenInput","getElementById","startsWith","Comparators","fileInfo1","fileInfo2","comparator","sort","file1","file2","isFavorite","fileInfo","tags","_fillSlug","idx","entry","simpleSize","sizeColor","icon","parseInt","pow","filename1","filename2","date","previewUrl","addButton","$template","paths","prepend","prependTo","getOcDialog","_changeButtonsText","$element","ctrlKey","copyText","folder","moveText","eq","getToken","setToken","newToken","OCEventSource","joinChar","dataStr","typelessListeners","closed","listeners","encodeURIComponent","useFallBack","EventSource","iframeId","iframeCount","fallBackSources","iframe","source","onmessage","parse","listen","fallBackCallBack","done","lastLength","addEventListener","currentMenu","hideMenus","complete","lastMenu","slideUp","apply","arguments","isAdmin","_oc_isadmin","_oc_l10n_registry_translations","_oc_l10n_registry_plural_functions","hasAppTranslations","appId","getAppTranslations","translations","pluralFunction","L10n","load","appName","generateFilePath","register","pluralForm","bundle","_getPlural","extend","_unregister","translate","vars","allOptions","sanitize","optSanitize","DOMPurify","identity","optEscape","translation","a","b","r","_build","translatePlural","textSingular","textPlural","identifier","plural","number","language","substring","Handlebars","startSaving","selector","startAction","stop","finishedSaving","finishedAction","finishedSuccess","finishedError","delay","fadeOut","pageLoadTime","init","requirePasswordConfirmation","moment","requiresPasswordConfirmation","serverTimeDiff","nc_pageLoad","timeSinceLogin","nc_lastLogin","backendAllowsPasswordConfirmation","rejectCallback","config","_confirmPassword","$dialog","$error","$buttons","generateUrl","lastLogin","theme","_theme","_handlers","_pushState","strParams","history","pushState","location","pathname","navigator","userAgent","toLowerCase","pattern","patterns","querySelectorAll","ii","fill","stroke","removeAttribute","setAttribute","replaceState","hash","_cancelPop","addOnPopStateHandler","handler","_parseHashQuery","pos","_decodeQuery","query","parseUrlQuery","search","_onPopState","state","chunkify","tz","charAt","m","History","humanFileSize","computerFileSize","string","s","bytes","matches","parseFloat","isFinite","k","kb","mb","gb","g","tb","pb","p","formatDate","timestamp","format","TESTING","relativeModifiedDate","diff","fromNow","getScrollBarWidth","_scrollBarWidth","inner","outer","position","top","left","visibility","overflow","appendChild","w1","offsetWidth","w2","clientWidth","removeChild","stripTime","Date","getFullYear","getMonth","getDate","naturalSortCompare","aa","bb","aNum","Number","bNum","localeCompare","waitFor","interval","internalCallback","setTimeout","isCookieSetToValue","cookies","cookie","debug","_oc_debug","webroot","_oc_webroot","coreApps","menuSpeed","PERMISSION_ALL","PERMISSION_CREATE","PERMISSION_DELETE","PERMISSION_NONE","PERMISSION_READ","PERMISSION_SHARE","PERMISSION_UPDATE","TAG_FAVORITE","fileIsBlacklisted","Config","addScript","script","addStyle","createStyleSheet","appSettings","args","appid","scriptName","cache","settings","popup","hasClass","arrowclass","loadJS","scriptname","jqxhr","appswebroots","dialogs","getCurrentUser","uid","isUserAdmin","L10N","_ajaxConnectionLostHandler","_processAjaxError","statusText","timer","setInterval","clearInterval","registerXHRForErrorProcessing","readyState","getCapabilities","realGetCapabilities","registerMenu","$toggle","$menuEl","toggle","headerMenu","isClickableElement","slideToggle","showMenu","unregisterMenu","off","basename","encodePath","dirname","isSamePath","joinPaths","getHost","host","getHostName","hostname","getPort","port","getProtocol","protocol","getCanonicalLocale","getLocale","getLanguage","addTranslations","buildQueryString","parseQueryString","queryString","components","part","decodeURIComponent","msg","PasswordConfirmation","Plugins","_plugins","targetName","plugin","plugins","getPlugins","attach","targetObject","Util","filePath","namespaces","tail","getRootPath","getRootUrl","imagePath","redirect","targetURL","reload","getRequestToken","linkTo","linkToOCS","service","version","ocsVersion","linkToRemote","generateRemoteUrl","linkToRemoteBase","realGetRootUrl","subscribe","_vm","_h","$createElement","_c","_self","$event","$emit","staticClass","domProps","_v","class","invertedColors","ref","loginActionUrl","_s","_e","_l","loadingIcon","staticStyle","shake","invalidPassword","directives","rawName","expression","autoCompleteAllowed","updateUsername","composing","user","passwordInputType","togglePassword","toggleIcon","throttleDelay","redirectUrl","timezone","timezoneOffset","loginName","Axios","resp","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","isHttps","isLocalhost","hasPublicKeyCredential","validCredentials","authenticate","warning","Array","isArray","proceed","_i","$$a","$$el","$$c","$$i","concat","slice","clear","hideLoginForm","directLogin","passwordlessLogin","resetPassword","resetPasswordTarget","canResetPassword","resetPasswordLink","passwordResetFinished","messages","errors","countAlternativeLogins","methods","Vue","Nextcloud","LoginView","$mount","___CSS_LOADER_EXPORT___","module","exports","container","depth0","helpers","partials","stack1","lookupProperty","propertyName","hasOwnProperty","nullContext","program","noop","alias1","lambda","alias2","escapeExpression","helper","hooks","helperMissing","alias3","alias4","map","webpackContext","req","webpackContextResolve","__webpack_require__","o","code","keys","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","amdD","amdO","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","every","splice","getter","__esModule","d","definition","defineProperty","enumerable","globalThis","Function","obj","Symbol","toStringTag","nmd","baseURI","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/core-main.js b/dist/core-main.js
index a2af318f8d0..57ec920a79c 100644
--- a/dist/core-main.js
+++ b/dist/core-main.js
@@ -1,3 +1,3 @@
/*! For license information please see core-main.js.LICENSE.txt */
-!function(){var e,i={6772:function(){Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector),Element.prototype.closest||(Element.prototype.closest=function(e){var t=this;do{if(t.matches(e))return t;t=t.parentElement||t.parentNode}while(null!==t&&1===t.nodeType);return null})},97782:function(){if("undefined"==typeof console||void 0===console.log){window.console||(window.console={});for(var e=function(){},t=["log","debug","warn","info","error","assert","time","timeEnd"],n=0;n<t.length;n++)console[t[n]]=e}},76389:function(){if("-ms-user-select"in document.documentElement.style&&navigator.userAgent.match(/IEMobile\/10\.0/)){var e=document.createElement("style");e.appendChild(document.createTextNode("@-ms-viewport{width:auto!important}")),document.getElementsByTagName("head")[0].appendChild(e)}},13084:function(e,i,o){"use strict";var a={};o.r(a),o.d(a,{deleteKey:function(){return E},getApps:function(){return b},getKeys:function(){return y},getValue:function(){return k},setValue:function(){return x}});var r={};o.r(r),o.d(r,{formatLinksPlain:function(){return pt},formatLinksRich:function(){return ft},plainToRich:function(){return ut},richToPlain:function(){return dt}});var s={};o.r(s),o.d(s,{dismiss:function(){return gt},query:function(){return ht}});var l=o(19755),c=o.n(l),u=(o(28594),o(35666),o(97782),o(6772),o(76389),o(74854)),d=o(79753),f={},p=[],h=o(64492),g=o(26932),A={updatableNotification:null,getDefaultNotificationFunction:null,setDefault:function(e){this.getDefaultNotificationFunction=e},hide:function(e,t){h.default.isFunction(e)&&(t=e,e=void 0),e?(e.each((function(){c()(this)[0].toastify?c()(this)[0].toastify.hideToast():console.error("cannot hide toast because object is not set"),this===this.updatableNotification&&(this.updatableNotification=null)})),t&&t.call(),this.getDefaultNotificationFunction&&this.getDefaultNotificationFunction()):console.error("Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification")},showHtml:function(e,t){(t=t||{}).isHTML=!0,t.timeout=t.timeout?t.timeout:g.Rl;var n=(0,g.PV)(e,t);return n.toastElement.toastify=n,c()(n.toastElement)},show:function(e,t){(t=t||{}).timeout=t.timeout?t.timeout:g.Rl;var n=(0,g.PV)(function(e){return e.toString().split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;").split('"').join("&quot;").split("'").join("&#039;")}(e),t);return n.toastElement.toastify=n,c()(n.toastElement)},showUpdate:function(e){return this.updatableNotification&&this.updatableNotification.hideToast(),this.updatableNotification=(0,g.PV)(e,{timeout:g.Rl}),this.updatableNotification.toastElement.toastify=this.updatableNotification,c()(this.updatableNotification.toastElement)},showTemporary:function(e,t){(t=t||{}).timeout=t.timeout||g.TN;var n=(0,g.PV)(e,t);return n.toastElement.toastify=n,c()(n.toastElement)},isHidden:function(){return!c()("#content").find(".toastify").length}},m=h.default.throttle((function(){A.showTemporary(t("core","Connection to server lost"))}),7e3,{trailing:!1}),v=!1,w={enableDynamicSlideToggle:function(){v=!0},showAppSidebar:function(e){(e||c()("#app-sidebar")).removeClass("disappear").show(),c()("#app-content").trigger(new(c().Event)("appresized"))},hideAppSidebar:function(e){(e||c()("#app-sidebar")).hide().addClass("disappear"),c()("#app-content").trigger(new(c().Event)("appresized"))}};function C(e,t,n){"post"!==e&&"delete"!==e||!Ge.PasswordConfirmation.requiresPasswordConfirmation()?(n=n||{},c().ajax({type:e.toUpperCase(),url:(0,d.generateOcsUrl)("apps/provisioning_api/api/v1/config/apps")+t,data:n.data||{},success:n.success,error:n.error})):Ge.PasswordConfirmation.requirePasswordConfirmation(_.bind(C,this,e,t,n))}function b(e){C("get","",e)}function y(e,t){C("get","/"+e,t)}function k(e,t,n,i){(i=i||{}).data={defaultValue:n},C("get","/"+e+"/"+t,i)}function x(e,t,n,i){(i=i||{}).data={value:n},C("post","/"+e+"/"+t,i)}function E(e,t,n){C("delete","/"+e+"/"+t,n)}var P=window.oc_appconfig||{},B={getValue:function(e,t,n,i){k(e,t,n,{success:i})},setValue:function(e,t,n){x(e,t,n)},getApps:function(e){b({success:e})},getKeys:function(e,t){y(e,{success:t})},deleteKey:function(e,t){E(e,t)}},O=void 0!==window._oc_appswebroots&&window._oc_appswebroots,T=o(72316),j=o.n(T),I=o(87240),D={create:"POST",update:"PROPPATCH",patch:"PROPPATCH",delete:"DELETE",read:"PROPFIND"};function z(e,t){if(h.default.isArray(e))return h.default.map(e,(function(e){return z(e,t)}));var n={href:e.href};return h.default.each(e.propStat,(function(e){if("HTTP/1.1 200 OK"===e.status)for(var i in e.properties){var o=i;i in t&&(o=t[i]),n[o]=e.properties[i]}})),n.id||(n.id=N(n.href)),n}function N(e){var t=e.indexOf("?");t>0&&(e=e.substr(0,t));var n,i=e.split("/");do{n=i[i.length-1],i.pop()}while(!n&&i.length>0);return n}function S(e){return e>=200&&e<=299}function M(e,t,n,i){return e.propPatch(t.url,function(e,t){var n,i={};for(n in e){var o=t[n],a=e[n];o||(console.warn('No matching DAV property for property "'+n),o=n),(h.default.isBoolean(a)||h.default.isNumber(a))&&(a=""+a),i[o]=a}return i}(n.changed,t.davProperties),i).then((function(e){S(e.status)?h.default.isFunction(t.success)&&t.success(n.toJSON()):h.default.isFunction(t.error)&&t.error(e)}))}var U=j().noConflict();Object.assign(U,{davCall:function(e,t){var n=new I.dav.Client({baseUrl:e.url,xmlNamespaces:h.default.extend({"DAV:":"d","http://owncloud.org/ns":"oc"},e.xmlNamespaces||{})});n.resolveUrl=function(){return e.url};var i=h.default.extend({"X-Requested-With":"XMLHttpRequest",requesttoken:OC.requestToken},e.headers);return"PROPFIND"===e.type?function(e,t,n,i){return e.propFind(t.url,h.default.values(t.davProperties)||[],t.depth,i).then((function(e){if(S(e.status)){if(h.default.isFunction(t.success)){var n=h.default.invert(t.davProperties),i=z(e.body,n);t.depth>0&&i.shift(),t.success(i)}}else h.default.isFunction(t.error)&&t.error(e)}))}(n,e,0,i):"PROPPATCH"===e.type?M(n,e,t,i):"MKCOL"===e.type?function(e,t,n,i){return e.request(t.type,t.url,i,null).then((function(o){S(o.status)?M(e,t,n,i):h.default.isFunction(t.error)&&t.error(o)}))}(n,e,t,i):function(e,t,n,i){return i["Content-Type"]="application/json",e.request(t.type,t.url,i,t.data).then((function(e){if(S(e.status)){if(h.default.isFunction(t.success)){if("PUT"===t.type||"POST"===t.type||"MKCOL"===t.type){var i=e.body||n.toJSON(),o=e.xhr.getResponseHeader("Content-Location");return"POST"===t.type&&o&&(i.id=N(o)),void t.success(i)}if(207===e.status){var a=h.default.invert(t.davProperties);t.success(z(e.body,a))}else t.success(e.body)}}else h.default.isFunction(t.error)&&t.error(e)}))}(n,e,t,i)},davSync:function(e){return function(t,n,i){var o={type:D[t]||t},a=n instanceof e.Collection;if("update"===t&&(n.hasInnerCollection?o.type="MKCOL":(n.usePUT||n.collection&&n.collection.usePUT)&&(o.type="PUT")),i.url||(o.url=h.default.result(n,"url")||function(){throw new Error('A "url" property or function must be specified')}()),null!=i.data||!n||"create"!==t&&"update"!==t&&"patch"!==t||(o.data=JSON.stringify(i.attrs||n.toJSON(i))),"PROPFIND"!==o.type&&(o.processData=!1),"PROPFIND"===o.type||"PROPPATCH"===o.type){var r=n.davProperties;!r&&n.model&&(r=n.model.prototype.davProperties),r&&(h.default.isFunction(r)?o.davProperties=r.call(n):o.davProperties=r),o.davProperties=h.default.extend(o.davProperties||{},i.davProperties),h.default.isUndefined(i.depth)&&(i.depth=a?1:0)}var s=i.error;i.error=function(e,t,n){i.textStatus=t,i.errorThrown=n,s&&s.call(i.context,e,t,n)};var l=i.xhr=e.davCall(h.default.extend(o,i),n);return n.trigger("request",n,l,i),l}}(U)});var L=U,F=o(76632),R=window._oc_config||{},Q=T.Model.extend({defaults:{fullName:"",lastMessage:"",actions:[],hasOneAction:!1,hasTwoActions:!1,hasManyActions:!1},initialize:function(){0===this.get("actions").length?this.set("hasOneAction",!0):1===this.get("actions").length?(this.set("hasTwoActions",!0),this.set("secondAction",this.get("actions")[0])):this.set("hasManyActions",!0)}}),G=T.Collection.extend({model:Q}),H=T.View.extend({_collection:void 0,_subViews:[],initialize:function(e){this._collection=e.collection},render:function(){var e=this;return e.$el.html(""),e._subViews=[],e._collection.forEach((function(t){var n=new K({model:t});n.render(),e.$el.append(n.$el),n.on("toggle:actionmenu",e._onChildActionMenuToggle,e),e._subViews.push(n)})),e},_onChildActionMenuToggle:function(e){this._subViews.forEach((function(t){t.trigger("parent:toggle:actionmenu",e)}))}}),K=T.View.extend({className:"contact",_template:void 0,_model:void 0,_actionMenuShown:!1,events:{"click .icon-more":"_onToggleActionsMenu"},contactTemplate:o(10944),template:function(e){return this.contactTemplate(e)},initialize:function(e){this._model=e.model,this.on("parent:toggle:actionmenu",this._onOtherActionMenuOpened,this)},render:function(){return this.$el.html(this.template({contact:this._model.toJSON()})),this.delegateEvents(),this.$("div.avatar").imageplaceholder(this._model.get("fullName")),this.$(".top-action").tooltip({placement:"left"}),this.$(".second-action").tooltip({placement:"left"}),this},_onToggleActionsMenu:function(){this._actionMenuShown=!this._actionMenuShown,this._actionMenuShown?this.$(".menu").show():this.$(".menu").hide(),this.trigger("toggle:actionmenu",this.$el)},_onOtherActionMenuOpened:function(e){this.$el.is(e)||(this._actionMenuShown=!1,this.$(".menu").hide())}}),Y=T.View.extend({_loadingTemplate:void 0,_errorTemplate:void 0,_contentTemplate:void 0,_contactsTemplate:void 0,_contacts:void 0,_searchTerm:"",events:{"input #contactsmenu-search":"_onSearch"},templates:{loading:o(95386),error:o(20421),menu:o(66115),list:o(34083)},_onSearch:h.default.debounce((function(e){var t=this.$("#contactsmenu-search").val();t!==this._searchTerm&&(this.trigger("search",this.$("#contactsmenu-search").val()),this._searchTerm=t)}),700),loadingTemplate:function(e){return this.templates.loading(e)},errorTemplate:function(e){return this.templates.error(h.default.extend({couldNotLoadText:t("core","Could not load your contacts")},e))},contentTemplate:function(e){return this.templates.menu(h.default.extend({searchContactsText:t("core","Search contacts …")},e))},contactsTemplate:function(e){return this.templates.list(h.default.extend({noContactsFoundText:t("core","No contacts found"),showAllContactsText:t("core","Show all contacts …"),contactsAppMgmtText:t("core","Install the Contacts app")},e))},initialize:function(e){this.options=e},showLoading:function(e){this.render(),this._contacts=void 0,this.$(".content").html(this.loadingTemplate({loadingText:e}))},showError:function(){this.render(),this._contacts=void 0,this.$(".content").html(this.errorTemplate())},showContacts:function(e,t){this._contacts=e.contacts,this.render({contacts:e.contacts});var n=new H({collection:e.contacts});n.render(),this.$(".content").html(this.contactsTemplate({contacts:e.contacts,searchTerm:t,contactsAppEnabled:e.contactsAppEnabled,contactsAppURL:Ge.generateUrl("/apps/contacts"),canInstallApp:Ge.isUserAdmin(),contactsAppMgmtURL:Ge.generateUrl("/settings/apps/social/contacts")})),this.$("#contactsmenu-contacts").html(n.$el)},render:function(e){var t=this.$("#contactsmenu-search").val();return this.$el.html(this.contentTemplate(e)),this.$("#contactsmenu-search").val(t),this.$("#contactsmenu-search").focus(),this}}),q=function(e){this.initialize(e)};q.prototype={$el:void 0,_$trigger:void 0,_view:void 0,_contactsPromise:void 0,initialize:function(e){this.$el=e.el,this._$trigger=e.trigger,this._view=new Y({el:this.$el}),this._view.on("search",(function(e){this._loadContacts(e)}),this),Ge.registerMenu(this._$trigger,this.$el,function(){this._toggleVisibility(!0)}.bind(this),!0),this.$el.on("beforeHide",function(){this._toggleVisibility(!1)}.bind(this))},_toggleVisibility:function(e){return e?this._loadContacts():(this.$el.html(""),Promise.resolve())},_getContacts:function(e){var t=Ge.generateUrl("/contactsmenu/contacts");return Promise.resolve(c().ajax(t,{method:"POST",data:{filter:e}}))},_loadContacts:function(e){var n=this;return n._contactsPromise||(n._contactsPromise=n._getContacts(e)),h.default.isUndefined(e)||""===e?n._view.showLoading(t("core","Loading your contacts …")):n._view.showLoading(t("core","Looking for {term} …",{term:e})),n._contactsPromise.then((function(t){t.contacts=new G(t.contacts),n._view.showContacts(t,e)}),(function(e){n._view.showError(),console.error("There was an error loading your contacts",e)})).then((function(){delete n._contactsPromise})).catch(console.error.bind(this))}};var W=q,J=document.getElementsByTagName("head")[0].getAttribute("data-user"),V=document.getElementsByTagName("head")[0].getAttribute("data-user-displayname"),Z=void 0!==J&&J;function X(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function $(e,t,n){return t&&X(e.prototype,t),n&&X(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}var ee={Search:$((function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),console.warn("OCA.Search is deprecated. Please use the unified search API instead")}))};function te(e){return te="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},te(e)}var ne,ie,oe,ae={YES_NO_BUTTONS:70,OK_BUTTONS:71,FILEPICKER_TYPE_CHOOSE:1,FILEPICKER_TYPE_MOVE:2,FILEPICKER_TYPE_COPY:3,FILEPICKER_TYPE_COPY_MOVE:4,FILEPICKER_TYPE_CUSTOM:5,dialogsCounter:0,alert:function(e,t,n,i){this.message(e,t,"alert",ae.OK_BUTTON,n,i)},info:function(e,t,n,i){this.message(e,t,"info",ae.OK_BUTTON,n,i)},confirm:function(e,t,n,i){return this.message(e,t,"notice",ae.YES_NO_BUTTONS,n,i)},confirmDestructive:function(e,t,n,i,o){return this.message(e,t,"none",n,i,void 0===o||o)},confirmHtml:function(e,t,n,i){return this.message(e,t,"notice",ae.YES_NO_BUTTONS,n,i,!0)},prompt:function(e,n,i,o,a,r){return c().when(this._getMessageTemplate()).then((function(s){var l="oc-dialog-"+ae.dialogsCounter+"-content",u="#"+l,d=s.octemplate({dialog_name:l,title:n,message:e,type:"notice"}),f=c()("<input/>");f.attr("type",r?"password":"text").attr("id",l+"-input").attr("placeholder",a);var p=c()("<label/>").attr("for",l+"-input").text(a+": ");d.append(p),d.append(f),void 0===o&&(o=!1),c()("body").append(d),void 0!==i&&(i=h.default.once(i));var g=[{text:t("core","No"),click:function(){void 0!==i&&i(!1,f.val()),c()(u).ocdialog("close")}},{text:t("core","Yes"),click:function(){void 0!==i&&i(!0,f.val()),c()(u).ocdialog("close")},defaultButton:!0}];c()(u).ocdialog({closeOnEscape:!0,modal:o,buttons:g,close:function(){void 0!==i&&i(!1,f.val())}}),f.focus(),ae.dialogsCounter++}))},filepicker:function(e,n,i,o,a,r,s,l){var u=this;if(this.filepicker.sortField="name",this.filepicker.sortOrder="asc",!this.filepicker.loading){void 0===r&&(r=this.FILEPICKER_TYPE_CHOOSE);var d=t("core","No files in here"),f=t("files","New folder");r!==this.FILEPICKER_TYPE_COPY&&r!==this.FILEPICKER_TYPE_MOVE&&r!==this.FILEPICKER_TYPE_COPY_MOVE||(d=t("core","No more subfolders in here")),this.filepicker.loading=!0,this.filepicker.filesClient=ee.Sharing&&ee.Sharing.PublicApp&&ee.Sharing.PublicApp.fileList?ee.Sharing.PublicApp.fileList.filesClient:Ge.Files.getClient(),this.filelist=null,s=s||"",l=Object.assign({allowDirectoryChooser:!1},l),c().when(this._getFilePickerTemplate()).then((function(p){u.filepicker.loading=!1,u.$filePicker&&u.$filePicker.ocdialog("close"),null==o&&(o=[]),"string"==typeof o&&(o=[o]),u.$filePicker=p.octemplate({dialog_name:"oc-dialog-filepicker-content",title:e,emptytext:d,newtext:f,nameCol:t("core","Name"),sizeCol:t("core","Size"),modifiedCol:t("core","Modified")}).data("path",s).data("multiselect",i).data("mimetype",o).data("allowDirectoryChooser",l.allowDirectoryChooser),"function"==typeof l.filter&&u.$filePicker.data("filter",l.filter),void 0===a&&(a=!1),void 0===i&&(i=!1),u.$filePicker.find("#picker-view-toggle").remove(),u.$filePicker.find("#picker-filestable").removeClass("view-grid"),c()("body").append(u.$filePicker),u.$showGridView=c()("input#picker-showgridview"),u.$showGridView.on("change",h.default.bind(u._onGridviewChange,u)),u._getGridSettings();var g=u.$filePicker.find(".actions.creatable .button-add");r!==u.FILEPICKER_TYPE_CHOOSE||l.allowDirectoryChooser||g.hide(),g.on("focus",(function(){u.$filePicker.ocdialog("setEnterCallback",(function(){event.stopImmediatePropagation(),event.preventDefault(),g.click()}))})),g.on("blur",(function(){u.$filePicker.ocdialog("unsetEnterCallback")})),Ge.registerMenu(g,u.$filePicker.find(".menu"),(function(){m.tooltip("hide"),m.focus(),u.$filePicker.ocdialog("setEnterCallback",(function(){event.stopImmediatePropagation(),event.preventDefault(),u.$filePicker.submit()}));var e=m.val(),t=e.lastIndexOf(".");-1===t&&(t=e.length),m.selectRange(0,t)}));var A=u.$filePicker.find(".filenameform"),m=A.find("input[type='text']");A.find("input[type='submit']").on("click",(function(e){e.stopImmediatePropagation(),e.preventDefault(),A.submit()}));A.on("submit",(function(e){if(e.stopPropagation(),e.preventDefault(),function(){var e=m.val();try{if(function(e){var n=e.trim();if("."===n||".."===n)throw t("files",'"{name}" is an invalid file name.',{name:e});if(0===n.length)throw t("files","File name cannot be empty.");if(-1!==n.indexOf("/"))throw t("files",'"/" is not allowed inside a file name.');if(n.match(Ge.config.blacklist_files_regex))throw t("files",'"{name}" is not an allowed filetype',{name:e});return!0}(e)){if(u.filelist.find((function(e){return e.name===this}),e))throw t("files","{newName} already exists",{newName:e},void 0,{escape:!1});return!0}}catch(e){m.attr("title",e),m.tooltip({placement:"right",trigger:"manual",container:".newFolderMenu"}),m.tooltip("_fixTitle"),m.tooltip("show"),m.addClass("error")}return!1}()){var n=m.val();u.filepicker.filesClient.createDirectory(u.$filePicker.data("path")+"/"+n).always((function(e){u._fillFilePicker(u.$filePicker.data("path")+"/"+n)})),Ge.hideMenus(),u.$filePicker.ocdialog("unsetEnterCallback"),u.$filePicker.click(),m.val(f)}})),m.keypress((function(e){13!==e.keyCode&&13!==e.which||(e.stopImmediatePropagation(),e.preventDefault(),A.submit())})),m.on("input",(function(e){m.tooltip("hide")})),u.$filePicker.ready((function(){u.$fileListHeader=u.$filePicker.find(".filelist thead tr"),u.$filelist=u.$filePicker.find(".filelist tbody"),u.$filelistContainer=u.$filePicker.find(".filelist-container"),u.$dirTree=u.$filePicker.find(".dirtree"),u.$dirTree.on("click","div:not(:last-child)",u,(function(e){u._handleTreeListSelect(e,r)})),u.$filelist.on("click","tr",(function(e){u._handlePickerClick(e,c()(this),r)})),u.$fileListHeader.on("click","a",(function(e){var t=u.$filePicker.data("path");u.filepicker.sortField=c()(e.currentTarget).data("sort"),u.filepicker.sortOrder="asc"===u.filepicker.sortOrder?"desc":"asc",u._fillFilePicker(t)})),u._fillFilePicker(s)}));var v=function(e){if(void 0!==n){var t;if(!0===i)t=[],u.$filelist.find("tr.filepicker_element_selected").each((function(e,n){t.push(u.$filePicker.data("path")+"/"+c()(n).data("entryname"))}));else{t=u.$filePicker.data("path");var o=u.$filelist.find("tr.filepicker_element_selected").data("entryname");o&&(t+="/"+o)}n(t,e),u.$filePicker.ocdialog("close")}},w=[];r===ae.FILEPICKER_TYPE_CHOOSE?w.push({text:t("core","Choose"),click:function(){v(ae.FILEPICKER_TYPE_CHOOSE)},defaultButton:!0}):r===ae.FILEPICKER_TYPE_CUSTOM?l.buttons.forEach((function(e){w.push({text:e.text,click:function(){v(e.type)},defaultButton:e.defaultButton})})):(r!==ae.FILEPICKER_TYPE_COPY&&r!==ae.FILEPICKER_TYPE_COPY_MOVE||w.push({text:t("core","Copy"),click:function(){v(ae.FILEPICKER_TYPE_COPY)},defaultButton:!1}),r!==ae.FILEPICKER_TYPE_MOVE&&r!==ae.FILEPICKER_TYPE_COPY_MOVE||w.push({text:t("core","Move"),click:function(){v(ae.FILEPICKER_TYPE_MOVE)},defaultButton:!0})),u.$filePicker.ocdialog({closeOnEscape:!0,width:600,height:500,modal:a,buttons:w,style:{buttons:"aside"},close:function(){try{c()(this).ocdialog("destroy").remove()}catch(e){}u.$filePicker=null}});var C=u.$filePicker.closest(".oc-dialog").find(".primary");-1!==u.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||u.$filePicker.data("allowDirectoryChooser")?C.prop("disabled",!1):C.prop("disabled",!0)})).fail((function(e,n){u.filepicker.loading=!1,0!==e&&alert(t("core","Error loading file picker template: {error}",{error:n}))}))}},message:function(e,n,i,o,a,r,s){return c().when(this._getMessageTemplate()).then((function(l){var u="oc-dialog-"+ae.dialogsCounter+"-content",d="#"+u,f=l.octemplate({dialog_name:u,title:n,message:e,type:i},s?{escapeFunction:""}:{});void 0===r&&(r=!1),c()("body").append(f);var p=[];switch(o){case ae.YES_NO_BUTTONS:p=[{text:t("core","No"),click:function(){void 0!==a&&a(!1),c()(d).ocdialog("close")}},{text:t("core","Yes"),click:function(){void 0!==a&&a(!0),c()(d).ocdialog("close")},defaultButton:!0}];break;case ae.OK_BUTTON:p[0]={text:t("core","OK"),click:function(){c()(d).ocdialog("close"),void 0!==a&&a()},defaultButton:!0};break;default:"object"===te(o)&&o.type===ae.YES_NO_BUTTONS&&(p=[{text:o.cancel||t("core","No"),click:function(){void 0!==a&&a(!1),c()(d).ocdialog("close")}},{text:o.confirm||t("core","Yes"),click:function(){void 0!==a&&a(!0),c()(d).ocdialog("close")},defaultButton:!0,classes:o.confirmClasses}])}c()(d).ocdialog({closeOnEscape:!0,closeCallback:function(){a&&a(!1)},modal:r,buttons:p}),ae.dialogsCounter++})).fail((function(i,o){0===i?alert(n+": "+e):alert(t("core","Error loading message template: {error}",{error:o}))}))},_fileexistsshown:!1,fileexists:function(e,i,o,a){var r=this,s=new(c().Deferred),l=function(e,t,n,i,o){i=Math.round(i),o=Math.round(o);for(var a=e.getContext("2d").getImageData(0,0,t,n),r=e.getContext("2d").getImageData(0,0,i,o),s=a.data,l=r.data,c=t/i,u=n/o,d=Math.ceil(c/2),f=Math.ceil(u/2),p=0;p<o;p++)for(var h=0;h<i;h++){for(var g=4*(h+p*i),A=0,m=0,v=0,w=0,C=0,b=0,y=0,k=(p+.5)*u,x=Math.floor(p*u);x<(p+1)*u;x++)for(var E=Math.abs(k-(x+.5))/f,P=(h+.5)*c,B=E*E,O=Math.floor(h*c);O<(h+1)*c;O++){var T=Math.abs(P-(O+.5))/d,j=Math.sqrt(B+T*T);j>=-1&&j<=1&&(A=2*j*j*j-3*j*j+1)>0&&(y+=A*s[3+(T=4*(O+x*t))],v+=A,s[T+3]<255&&(A=A*s[T+3]/250),w+=A*s[T],C+=A*s[T+1],b+=A*s[T+2],m+=A)}l[g]=w/m,l[g+1]=C/m,l[g+2]=b/m,l[g+3]=y/v}e.getContext("2d").clearRect(0,0,Math.max(t,i),Math.max(n,o)),e.width=i,e.height=o,e.getContext("2d").putImageData(r,0,0)},u=function(n,i,o){var a=n.find(".template").clone().removeClass("template").addClass("conflict"),r=a.find(".original"),s=a.find(".replacement");a.data("data",e),a.find(".filename").text(i.name),r.find(".size").text(Ge.Util.humanFileSize(i.size)),r.find(".mtime").text(Ge.Util.formatDate(i.mtime)),o.size&&o.lastModified&&(s.find(".size").text(Ge.Util.humanFileSize(o.size)),s.find(".mtime").text(Ge.Util.formatDate(o.lastModified)));var u=i.directory+"/"+i.name,d={file:u,x:96,y:96,c:i.etag,forceIcon:0},f=Files.generatePreviewUrl(d);f=f.replace(/'/g,"%27"),r.find(".icon").css({"background-image":"url('"+f+"')"}),function(e){var t=new(c().Deferred),n=e.type&&e.type.split("/").shift();if(window.FileReader&&"image"===n){var i=new FileReader;i.onload=function(e){var n=new Blob([e.target.result]);window.URL=window.URL||window.webkitURL;var i=window.URL.createObjectURL(n),o=new Image;o.src=i,o.onload=function(){var e,n,i,a,r,s,c,u=(e=o,r=document.createElement("canvas"),s=e.width,c=e.height,s>c?(i=0,n=(s-c)/2):(i=(c-s)/2,n=0),a=Math.min(s,c),r.width=a,r.height=a,r.getContext("2d").drawImage(e,n,i,a,a,0,0,a,a),l(r,a,a,96,96),r.toDataURL("image/png",.7));t.resolve(u)}},i.readAsArrayBuffer(e)}else t.reject();return t}(o).then((function(e){s.find(".icon").css("background-image","url("+e+")")}),(function(){u=Ge.MimeType.getIconUrl(o.type),s.find(".icon").css("background-image","url("+u+")")}));var p=n.find(".conflict").length;r.find("input:checkbox").attr("id","checkbox_original_"+p),s.find("input:checkbox").attr("id","checkbox_replacement_"+p),n.append(a),o.lastModified>i.mtime?s.find(".mtime").css("font-weight","bold"):o.lastModified<i.mtime&&r.find(".mtime").css("font-weight","bold"),o.size&&o.size>i.size?s.find(".size").css("font-weight","bold"):o.size&&o.size<i.size&&r.find(".size").css("font-weight","bold"),"readonly"===i.status&&(r.addClass("readonly").find('input[type="checkbox"]').prop("checked",!0).prop("disabled",!0),r.find(".message").text(t("core","read-only")))},d="oc-dialog-fileexists-content",f="#"+d;if(this._fileexistsshown){var p=c()(f+" .conflicts");u(p,i,o);var h=c()(f+" .conflict").length,g=n("core","{count} file conflict","{count} file conflicts",h,{count:h});c()(f).parent().children(".oc-dialog-title").text(g),c()(window).trigger("resize"),s.resolve()}else this._fileexistsshown=!0,c().when(this._getFileExistsTemplate()).then((function(n){var l=t("core","One file conflict"),p=n.octemplate({dialog_name:d,title:l,type:"fileexists",allnewfiles:t("core","New Files"),allexistingfiles:t("core","Already existing files"),why:t("core","Which files do you want to keep?"),what:t("core","If you select both versions, the copied file will have a number added to its name.")});if(c()("body").append(p),i&&o){var h=p.find(".conflicts");u(h,i,o)}var g=[{text:t("core","Cancel"),classes:"cancel",click:function(){void 0!==a.onCancel&&a.onCancel(e),c()(f).ocdialog("close")}},{text:t("core","Continue"),classes:"continue",click:function(){void 0!==a.onContinue&&a.onContinue(c()(f+" .conflict")),c()(f).ocdialog("close")}}];c()(f).ocdialog({width:500,closeOnEscape:!0,modal:!0,buttons:g,closeButton:null,close:function(){r._fileexistsshown=!1;try{c()(this).ocdialog("destroy").remove()}catch(e){}}}),c()(f).css("height","auto");var A=p.closest(".oc-dialog").find("button.continue");function m(){var e=p.find(".conflicts .checkbox:checked").length;A.prop("disabled",0===e)}A.prop("disabled",!0),c()(f).find(".allnewfiles").on("click",(function(){c()(f).find('.conflict .replacement input[type="checkbox"]').prop("checked",c()(this).prop("checked"))})),c()(f).find(".allexistingfiles").on("click",(function(){c()(f).find('.conflict .original:not(.readonly) input[type="checkbox"]').prop("checked",c()(this).prop("checked"))})),c()(f).find(".conflicts").on("click",".replacement,.original:not(.readonly)",(function(){var e=c()(this).find('input[type="checkbox"]');e.prop("checked",!e.prop("checked"))})),c()(f).find(".conflicts").on("click",'.replacement input[type="checkbox"],.original:not(.readonly) input[type="checkbox"]',(function(){var e=c()(this);e.prop("checked",!e.prop("checked"))})),c()(f).on("click",".replacement,.allnewfiles",(function(){var e=c()(f).find('.conflict .replacement input[type="checkbox"]:checked').length;e===c()(f+" .conflict").length?(c()(f).find(".allnewfiles").prop("checked",!0),c()(f).find(".allnewfiles + .count").text(t("core","(all selected)"))):e>0?(c()(f).find(".allnewfiles").prop("checked",!1),c()(f).find(".allnewfiles + .count").text(t("core","({count} selected)",{count:e}))):(c()(f).find(".allnewfiles").prop("checked",!1),c()(f).find(".allnewfiles + .count").text("")),m()})),c()(f).on("click",".original,.allexistingfiles",(function(){var e=c()(f).find('.conflict .original input[type="checkbox"]:checked').length;e===c()(f+" .conflict").length?(c()(f).find(".allexistingfiles").prop("checked",!0),c()(f).find(".allexistingfiles + .count").text(t("core","(all selected)"))):e>0?(c()(f).find(".allexistingfiles").prop("checked",!1),c()(f).find(".allexistingfiles + .count").text(t("core","({count} selected)",{count:e}))):(c()(f).find(".allexistingfiles").prop("checked",!1),c()(f).find(".allexistingfiles + .count").text("")),m()})),s.resolve()})).fail((function(){s.reject(),alert(t("core","Error loading file exists template"))}));return s.promise()},_getGridSettings:function(){var e=this;c().get(Ge.generateUrl("/apps/files/api/v1/showgridview"),(function(t){e.$showGridView.get(0).checked=t.gridview,e.$showGridView.next("#picker-view-toggle").removeClass("icon-toggle-filelist icon-toggle-pictures").addClass(t.gridview?"icon-toggle-filelist":"icon-toggle-pictures"),c()(".list-container").toggleClass("view-grid",t.gridview)}))},_onGridviewChange:function(){var e=this.$showGridView.is(":checked");Ge.currentUser&&c().post(Ge.generateUrl("/apps/files/api/v1/showgridview"),{show:e}),this.$showGridView.next("#picker-view-toggle").removeClass("icon-toggle-filelist icon-toggle-pictures").addClass(e?"icon-toggle-filelist":"icon-toggle-pictures"),c()(".list-container").toggleClass("view-grid",e)},_getFilePickerTemplate:function(){var e=c().Deferred();if(this.$filePickerTemplate)e.resolve(this.$filePickerTemplate);else{var t=this;c().get(Ge.filePath("core","templates","filepicker.html"),(function(n){t.$filePickerTemplate=c()(n),t.$listTmpl=t.$filePickerTemplate.find(".filelist tbody tr:first-child").detach(),e.resolve(t.$filePickerTemplate)})).fail((function(t,n,i){e.reject(t.status,i)}))}return e.promise()},_getMessageTemplate:function(){var e=c().Deferred();if(this.$messageTemplate)e.resolve(this.$messageTemplate);else{var t=this;c().get(Ge.filePath("core","templates","message.html"),(function(n){t.$messageTemplate=c()(n),e.resolve(t.$messageTemplate)})).fail((function(t,n,i){e.reject(t.status,i)}))}return e.promise()},_getFileExistsTemplate:function(){var e=c().Deferred();if(this.$fileexistsTemplate)e.resolve(this.$fileexistsTemplate);else{var t=this;c().get(Ge.filePath("files","templates","fileexists.html"),(function(n){t.$fileexistsTemplate=c()(n),e.resolve(t.$fileexistsTemplate)})).fail((function(){e.reject()}))}return e.promise()},_getFileList:function(e,t){return"string"==typeof t&&(t=[t]),c().getJSON(Ge.filePath("files","ajax","list.php"),{dir:e,mimetypes:JSON.stringify(t)})},_fillFilePicker:function(e){var n=this;this.$filelist.empty(),this.$filePicker.find(".emptycontent").hide(),this.$filelistContainer.addClass("icon-loading"),this.$filePicker.data("path",e);var i=this.$filePicker.data("mimetype"),o=this.$filePicker.data("filter");"string"==typeof i&&(i=[i]),n.$fileListHeader.find(".sort-indicator").addClass("hidden").removeClass("icon-triangle-n").removeClass("icon-triangle-s"),n.$fileListHeader.find("[data-sort="+n.filepicker.sortField+"] .sort-indicator").removeClass("hidden"),"asc"===n.filepicker.sortOrder?n.$fileListHeader.find("[data-sort="+n.filepicker.sortField+"] .sort-indicator").addClass("icon-triangle-n"):n.$fileListHeader.find("[data-sort="+n.filepicker.sortField+"] .sort-indicator").addClass("icon-triangle-s"),n.filepicker.filesClient.getFolderContents(e).then((function(a,r){n.filelist=r,i&&i.length>0&&-1===i.indexOf("*")&&(r=r.filter((function(e){return"dir"===e.type||-1!==i.indexOf(e.mimetype)}))),o&&(r=r.filter(o));var s=document.getElementById("showHiddenFiles");null===s||"1"===s.value||(r=r.filter((function(e){return!e.name.startsWith(".")})));var l={name:function(e,t){return"dir"===e.type&&"dir"!==t.type?-1:"dir"!==e.type&&"dir"===t.type?1:Ge.Util.naturalSortCompare(e.name,t.name)},size:function(e,t){return e.size-t.size},mtime:function(e,t){return e.mtime-t.mtime}},u=l[n.filepicker.sortField]||l.name;r=r.sort((function(e,t){var i=function(e){return e.tags&&e.tags.indexOf(Ge.TAG_FAVORITE)>=0};return i(e)&&!i(t)?-1:!i(e)&&i(t)?1:"asc"===n.filepicker.sortOrder?u(e,t):-u(e,t)})),n._fillSlug(),0===r.length?(n.$filePicker.find(".emptycontent").show(),n.$fileListHeader.hide()):(n.$filePicker.find(".emptycontent").hide(),n.$fileListHeader.show()),n.$filelist.empty(),c().each(r,(function(i,o){var a,r;if(o.icon=Ge.MimeType.getIconUrl(o.mimetype),void 0!==o.size&&o.size>=0?(a=Ge.Util.humanFileSize(parseInt(o.size,10),!0),r=Math.round(160-Math.pow(o.size/1048576,2))):(a=t("files","Pending"),r=80),o.name.length>=10)var s=Math.min(Math.floor(o.name.length/2),10),l=o.name.substr(0,o.name.length-s),u=o.name.substr(o.name.length-s);else l=o.name,u="";var d=n.$listTmpl.octemplate({type:o.type,dir:e,filename:o.name,filename1:l,filename2:u,date:Ge.Util.relativeModifiedDate(o.mtime),size:a,sizeColor:r,icon:o.icon});if("file"===o.type){var f={file:e+"/"+o.name,x:100,y:100},p=new Image,h=Ge.generateUrl("/core/preview.png?")+c().param(f);p.onload=function(){p.width>5&&d.find("td.filename").attr("style","background-image:url("+h+")")},p.src=h}n.$filelist.append(d)})),n.$filelistContainer.removeClass("icon-loading")}))},_fillSlug:function(){var e=this.$dirTree.find(".actions.creatable").detach();this.$dirTree.empty();var t=this;t.$dirTree.append(e);var n=this.$filePicker.data("path"),i=c()('<div data-dir="{dir}"><a>{name}</a></div>').addClass("crumb");if(n){var o=n.split("/");c().each(o,(function(e,n){if(""===(n=o.pop()))return!1;t.$dirTree.prepend(i.octemplate({dir:o.join("/")+"/"+n,name:n}))}))}i.octemplate({dir:"",name:""},{escapeFunction:null}).prependTo(this.$dirTree)},_handleTreeListSelect:function(e,t){var n=e.data,i=c()(e.target).closest(".crumb").data("dir");n._fillFilePicker(i);var o=e.target.closest(".oc-dialog"),a=c()(".primary",o);this._changeButtonsText(t,i.split(/[/]+/).pop()),-1!==this.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||this.$filePicker.data("allowDirectoryChooser")?a.prop("disabled",!1):a.prop("disabled",!0)},_handlePickerClick:function(e,t,n){var i=this.$filePicker.closest(".oc-dialog").find(".primary");"file"===t.data("type")?(!0===this.$filePicker.data("multiselect")&&e.ctrlKey||this.$filelist.find(".filepicker_element_selected").removeClass("filepicker_element_selected"),t.toggleClass("filepicker_element_selected"),i.prop("disabled",!1)):"dir"===t.data("type")&&(this._fillFilePicker(this.$filePicker.data("path")+"/"+t.data("entryname")),this._changeButtonsText(n,t.data("entryname")),-1!==this.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||this.$filePicker.data("allowDirectoryChooser")?i.prop("disabled",!1):i.prop("disabled",!0))},_changeButtonsText:function(e,n){var i=""===n?t("core","Copy"):t("core","Copy to {folder}",{folder:n}),o=""===n?t("core","Move"):t("core","Move to {folder}",{folder:n}),a=c()(".oc-dialog-buttonrow button");switch(e){case this.FILEPICKER_TYPE_CHOOSE:case this.FILEPICKER_TYPE_CUSTOM:break;case this.FILEPICKER_TYPE_COPY:a.text(i);break;case this.FILEPICKER_TYPE_MOVE:a.text(o);break;case this.FILEPICKER_TYPE_COPY_MOVE:a.eq(0).text(i),a.eq(1).text(o)}}},re=ae,se=(ne=document,ie=u.emit,oe=ne.getElementsByTagName("head")[0].getAttribute("data-requesttoken"),{getToken:function(){return oe},setToken:function(e){ie("csrf-token-update",{token:oe=e})}}),le=se.getToken,ce=se.setToken,ue=function e(t,n){var i,o,a="";if(this.typelessListeners=[],this.closed=!1,this.listeners={},n)for(i in n)a+=i+"="+encodeURIComponent(n[i])+"&";if(a+="requesttoken="+encodeURIComponent(le()),this.useFallBack||"undefined"==typeof EventSource){var r="oc_eventsource_iframe_"+e.iframeCount;e.fallBackSources[e.iframeCount]=this,this.iframe=c()("<iframe></iframe>"),this.iframe.attr("id",r),this.iframe.hide(),o="&",-1===t.indexOf("?")&&(o="?"),this.iframe.attr("src",t+o+"fallback=true&fallback_id="+e.iframeCount+"&"+a),c()("body").append(this.iframe),this.useFallBack=!0,e.iframeCount++}else o="&",-1===t.indexOf("?")&&(o="?"),this.source=new EventSource(t+o+a),this.source.onmessage=function(e){for(var t=0;t<this.typelessListeners.length;t++)this.typelessListeners[t](JSON.parse(e.data))}.bind(this);this.listen("__internal__",function(e){"close"===e&&this.close()}.bind(this))};ue.fallBackSources=[],ue.iframeCount=0,ue.fallBackCallBack=function(e,t,n){ue.fallBackSources[e].fallBackCallBack(t,n)},ue.prototype={typelessListeners:[],iframe:null,listeners:{},useFallBack:!1,fallBackCallBack:function(e,t){var n;if(!this.closed)if(e){if(void 0!==this.listeners.done)for(n=0;n<this.listeners[e].length;n++)this.listeners[e][n](t)}else for(n=0;n<this.typelessListeners.length;n++)this.typelessListeners[n](t)},lastLength:0,listen:function(e,t){t&&t.call&&(e?this.useFallBack?(this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(t)):this.source.addEventListener(e,(function(e){void 0!==e.data?t(JSON.parse(e.data)):t("")}),!1):this.typelessListeners.push(t))},close:function(){this.closed=!0,void 0!==this.source&&this.source.close()}};var de=ue,fe=o(42515),pe=null,he=function(e){if(pe){var t=pe;pe.trigger(new(c().Event)("beforeHide")),pe.slideUp(50,(function(){t.trigger(new(c().Event)("afterHide")),e&&e.apply(this,arguments)}))}c()(".menutoggle").attr("aria-expanded",!1),c()(".openedMenu").removeClass("openedMenu"),pe=null},ge=!!window._oc_isadmin,Ae=o(27856),me=o.n(Ae),ve=o(86834),we=o.n(ve),Ce=o(46488),be=o.n(Ce),ye=o(95573),ke=o.n(ye);window._oc_l10n_registry_translations=window._oc_l10n_registry_translations||{},window._oc_l10n_registry_plural_functions=window._oc_l10n_registry_plural_functions||{};var xe=function(e){return void 0!==window._oc_l10n_registry_translations[e]&&void 0!==window._oc_l10n_registry_plural_functions[e]},Ee=function(e){return{translations:window._oc_l10n_registry_translations[e]||{},pluralFunction:window._oc_l10n_registry_plural_functions[e]}};function Pe(e){return Pe="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Pe(e)}var Be={load:function(e,t){if(xe(e)||"en"===Ge.getLocale()){var n=c().Deferred(),i=n.promise();return i.then(t),n.resolve(),i}var o=this,a=(0,d.generateFilePath)(e,"l10n",Ge.getLocale()+".json");return c().get(a).then((function(t){t.translations&&o.register(e,t.translations,t.pluralForm)})).then(t)},register:function(e,t){var n,i,o;n=e,i=t,o=this._getPlural,xe(n)?function(e,t,n){window._oc_l10n_registry_translations[e]=Object.assign(window._oc_l10n_registry_translations[e],t),window._oc_l10n_registry_plural_functions[e]=n}(n,i,o):function(e,t,n){window._oc_l10n_registry_translations[e]=t,window._oc_l10n_registry_plural_functions[e]=n}(n,i,o)},_unregister:function(e){delete window._oc_l10n_registry_translations[e],delete window._oc_l10n_registry_plural_functions[e]},translate:function(e,t,n,i,o){var a=o||{};h.default.defaults(a,{escape:!0,sanitize:!0});var r=a.sanitize?me().sanitize:be(),s=a.escape?ke():be(),l=t,c=Ee(e).translations[t];return void 0!==c&&(l=c),"object"===Pe(n)||void 0!==i?r(function(e,t,n){return e.replace(/%n/g,n).replace(/{([^{}]*)}/g,(function(e,n){var i=t[n];return r("string"==typeof i||"number"==typeof i?s(i):e)}))}(l,n,i)):r(l)},translatePlural:function(e,t,n,i,o,a){var r="_"+t+"_::_"+n+"_",s=Ee(e),l=s.translations[r];if(void 0!==l){var u=l;if(c().isArray(u)){var d=s.pluralFunction(i);return this.translate(e,u[d],o,i,a)}}return 1===i?this.translate(e,t,o,i,a):this.translate(e,n,o,i,a)},_getPlural:function(e){var t=Ge.getLanguage();if("pt-BR"===t&&(t="xbr"),void 0===t||""===t)return 1===e?0:1;switch(t.length>3&&(t=t.substring(0,t.lastIndexOf("-"))),t){case"az":case"bo":case"dz":case"id":case"ja":case"jv":case"ka":case"km":case"kn":case"ko":case"ms":case"th":case"tr":case"vi":case"zh":default:return 0;case"af":case"bn":case"bg":case"ca":case"da":case"de":case"el":case"en":case"eo":case"es":case"et":case"eu":case"fa":case"fi":case"fo":case"fur":case"fy":case"gl":case"gu":case"ha":case"he":case"hu":case"is":case"it":case"ku":case"lb":case"ml":case"mn":case"mr":case"nah":case"nb":case"ne":case"nl":case"nn":case"no":case"oc":case"om":case"or":case"pa":case"pap":case"ps":case"pt":case"so":case"sq":case"sv":case"sw":case"ta":case"te":case"tk":case"ur":case"zu":return 1===e?0:1;case"am":case"bh":case"fil":case"fr":case"gun":case"hi":case"hy":case"ln":case"mg":case"nso":case"xbr":case"ti":case"wa":return 0===e||1===e?0:1;case"be":case"bs":case"hr":case"ru":case"sh":case"sr":case"uk":return e%10==1&&e%100!=11?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2;case"cs":case"sk":return 1===e?0:e>=2&&e<=4?1:2;case"ga":return 1===e?0:2===e?1:2;case"lt":return e%10==1&&e%100!=11?0:e%10>=2&&(e%100<10||e%100>=20)?1:2;case"sl":return e%100==1?0:e%100==2?1:e%100==3||e%100==4?2:3;case"mk":return e%10==1?0:1;case"mt":return 1===e?0:0===e||e%100>1&&e%100<11?1:e%100>10&&e%100<20?2:3;case"lv":return 0===e?0:e%10==1&&e%100!=11?1:2;case"pl":return 1===e?0:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?1:2;case"cy":return 1===e?0:2===e?1:8===e||11===e?2:3;case"ro":return 1===e?0:0===e||e%100>0&&e%100<20?1:2;case"ar":return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11&&e%100<=99?4:5}}},Oe=Be;we().registerHelper("t",(function(e,t){return Be.translate(e,t)}));var Te=o(9944),je={startSaving:function(e){this.startAction(e,t("core","Saving …"))},startAction:function(e,t){c()(e).text(t).removeClass("success").removeClass("error").stop(!0,!0).show()},finishedSaving:function(e,t){this.finishedAction(e,t)},finishedAction:function(e,t){"success"===t.status?this.finishedSuccess(e,t.data.message):this.finishedError(e,t.data.message)},finishedSuccess:function(e,t){c()(e).text(t).addClass("success").removeClass("error").stop(!0,!0).delay(3e3).fadeOut(900).show()},finishedError:function(e,t){c()(e).text(t).addClass("error").removeClass("success").show()}},Ie=o(30381),De=o.n(Ie),ze={callback:null,pageLoadTime:null,init:function(){c()(".password-confirm-required").on("click",h.default.bind(this.requirePasswordConfirmation,this)),this.pageLoadTime=De().now()},requiresPasswordConfirmation:function(){var e=this.pageLoadTime-1e3*window.nc_pageLoad,t=De().now()-(e+1e3*window.nc_lastLogin);return window.backendAllowsPasswordConfirmation&&t>18e5},requirePasswordConfirmation:function(e,n,i){n=void 0!==n?n:{};var o={title:t("core","Authentication required"),text:t("core","This action requires you to confirm your password"),confirm:t("core","Confirm"),label:t("core","Password"),error:""},a=h.default.extend(o,n),r=this;this.requiresPasswordConfirmation()&&Ge.dialogs.prompt(a.text,a.title,(function(e,t){e&&""!==t?r._confirmPassword(t,a):h.default.isFunction(i)&&i()}),!0,a.label,!0).then((function(){var e=c()(".oc-dialog:visible");if(e.find(".ui-icon").remove(),e.addClass("password-confirmation"),""!==a.error){var t=c()("<p></p>").addClass("msg warning").text(a.error);e.find(".oc-dialog-content").append(t)}e.find(".oc-dialog-buttonrow").addClass("aside");var n=e.find("button");n.eq(0).hide(),n.eq(1).text(a.confirm)})),this.callback=e},_confirmPassword:function(e,n){var i=this;c().ajax({url:(0,d.generateUrl)("/login/confirm"),data:{password:e},type:"POST",success:function(e){window.nc_lastLogin=e.lastLogin,h.default.isFunction(i.callback)&&i.callback()},error:function(){n.error=t("core","Failed to authenticate, try again"),Ge.PasswordConfirmation.requirePasswordConfirmation(i.callback,n)}})}},_e=window._theme||{},Ne={_handlers:[],_pushState:function(e,t,n){var i;if(i="string"==typeof e?e:Ge.buildQueryString(e),window.history.pushState){if(t=t||location.pathname+"?"+i,navigator.userAgent.toLowerCase().indexOf("firefox")>-1&&parseInt(navigator.userAgent.split("/").pop())<51)for(var o,a=document.querySelectorAll('[fill^="url(#"], [stroke^="url(#"], [filter^="url(#invert"]'),r=0,s=a.length;r<s;r++)(o=a[r]).style.fill=o.style.fill,o.style.stroke=o.style.stroke,o.removeAttribute("filter"),o.setAttribute("filter","url(#invert)");n?window.history.replaceState(e,"",t):window.history.pushState(e,"",t)}else window.location.hash="?"+i,this._cancelPop=!0},pushState:function(e,t){this._pushState(e,t,!1)},replaceState:function(e,t){this._pushState(e,t,!0)},addOnPopStateHandler:function(e){this._handlers.push(e)},_parseHashQuery:function(){var e=window.location.hash,t=e.indexOf("?");return t>=0?e.substr(t+1):e.length?e.substr(1):""},_decodeQuery:function(e){return e.replace(/\+/g," ")},parseUrlQuery:function(){var e,t=this._parseHashQuery();return t&&(e=Ge.parseQueryString(this._decodeQuery(t))),(e=h.default.extend(e||{},Ge.parseQueryString(this._decodeQuery(location.search))))||{}},_onPopState:function(e){var t;if(this._cancelPop)this._cancelPop=!1;else if(this._handlers.length){t=e&&e.state,h.default.isString(t)?t=Ge.parseQueryString(t):t||(t=this.parseUrlQuery()||{});for(var n=0;n<this._handlers.length;n++)this._handlers[n](t)}}};function Se(e){for(var t,n=[],i=0,o=-1,a=0;i<e.length;){t=e.charAt(i);var r=!a&&"."===t||t>="0"&&t<="9";r!==a&&(n[++o]="",a=r),n[o]+=t,i++}return n}var Me={History:Ne,humanFileSize:o(3378).s,computerFileSize:function(e){if("string"!=typeof e)return null;var t=e.toLowerCase().trim(),n=null,i=t.match(/^[\s+]?([0-9]*)(\.([0-9]+))?( +)?([kmgtp]?b?)$/i);return null===i?null:(n=parseFloat(t),isFinite(n)?(i[5]&&(n*={b:1,k:1024,kb:1024,mb:1048576,m:1048576,gb:1073741824,g:1073741824,tb:1099511627776,t:1099511627776,pb:0x4000000000000,p:0x4000000000000}[i[5]]),n=Math.round(n)):null)},formatDate:function(e,t){return void 0===window.TESTING&&console.warn("OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment"),t=t||"LLL",De()(e).format(t)},relativeModifiedDate:function(e){void 0===window.TESTING&&console.warn("OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment");var n=De()().diff(De()(e));return n>=0&&n<45e3?t("core","seconds ago"):De()(e).fromNow()},getScrollBarWidth:function(){if(this._scrollBarWidth)return this._scrollBarWidth;var e=document.createElement("p");e.style.width="100%",e.style.height="200px";var t=document.createElement("div");t.style.position="absolute",t.style.top="0px",t.style.left="0px",t.style.visibility="hidden",t.style.width="200px",t.style.height="150px",t.style.overflow="hidden",t.appendChild(e),document.body.appendChild(t);var n=e.offsetWidth;t.style.overflow="scroll";var i=e.offsetWidth;return n===i&&(i=t.clientWidth),document.body.removeChild(t),this._scrollBarWidth=n-i,this._scrollBarWidth},stripTime:function(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate())},naturalSortCompare:function(e,t){var n,i=Se(e),o=Se(t);for(n=0;i[n]&&o[n];n++)if(i[n]!==o[n]){var a=Number(i[n]),r=Number(o[n]);return a==i[n]&&r==o[n]?a-r:i[n].localeCompare(o[n],Ge.getLanguage())}return i.length-o.length},waitFor:function(e,t){!function n(){!0!==e()&&setTimeout(n,t)}()},isCookieSetToValue:function(e,t){for(var n=document.cookie.split(";"),i=0;i<n.length;i++){var o=n[i].split("=");if(o[0].trim()===e&&o[1].trim()===t)return!0}return!1}},Ue=window._oc_debug,Le=window._oc_webroot;if(void 0===Le){var Fe=(Le=location.pathname).indexOf("/index.php/");Le=-1!==Fe?Le.substr(0,Fe):Le.substr(0,Le.lastIndexOf("/"))}var Re,Qe=Le,Ge={coreApps:["","admin","log","core/search","core","3rdparty"],menuSpeed:50,PERMISSION_ALL:31,PERMISSION_CREATE:4,PERMISSION_DELETE:8,PERMISSION_NONE:0,PERMISSION_READ:1,PERMISSION_SHARE:16,PERMISSION_UPDATE:2,TAG_FAVORITE:"_$!<Favorite>!$_",fileIsBlacklisted:function(e){return!!e.match(R.blacklist_files_regex)},addScript:function(e,t,n){var i;console.warn("OC.addScript is deprecated, use OCP.Loader.loadScript instead");var o=(0,d.generateFilePath)(e,"js",t+".js");return f[o]?n&&n():(i=c().Deferred(),c().getScript(o,(function(){return i.resolve()})),f[o]=i),f[o]},addStyle:function(e,t){console.warn("OC.addStyle is deprecated, use OCP.Loader.loadStylesheet instead");var n=(0,d.generateFilePath)(e,"css",t+".css");-1===p.indexOf(n)&&(p.push(n),document.createStyleSheet?document.createStyleSheet(n):(t=c()('<link rel="stylesheet" type="text/css" href="'+n+'"/>'),c()("head").append(t)))},Apps:w,AppConfig:B,appConfig:P,appSettings:function(e){if(console.warn("OC.appSettings is deprecated and will be removed with Nextcloud 18"),void 0===e||void 0===e.appid)throw{name:"MissingParameter",message:"The parameter appid is missing"};var n={scriptName:"settings.php",cache:!0};c().extend(n,e);var i=c()("#appsettings");if(0===i.length)throw{name:"MissingDOMElement",message:'There has be be an element with id "appsettings" for the popup to show.'};var o=c()("#appsettings_popup");if(0===o.length&&(c()("body").prepend('<div class="popup hidden" id="appsettings_popup"></div>'),(o=c()("#appsettings_popup")).addClass(i.hasClass("topright")?"topright":"bottomleft")),o.is(":visible"))o.hide().remove();else{var a=i.hasClass("topright")?"up":"left";c().get((0,d.generateFilePath)(n.appid,"",n.scriptName),(function(e){o.html(e).ready((function(){if(o.prepend('<span class="arrow '+a+'"></span><h2>'+t("core","Settings")+'</h2><a class="close"></a>').show(),o.find(".close").bind("click",(function(){o.remove()})),void 0!==n.loadJS){var e;if(!0===n.loadJS)e="settings.js";else{if("string"!=typeof n.loadJS)throw{name:"InvalidParameter",message:'The "loadJS" parameter must be either boolean or a string.'};e=n.loadJS}n.cache&&c().ajaxSetup({cache:!0}),c().getScript((0,d.generateFilePath)(n.appid,"js",e)).fail((function(e,t,n){throw n}))}})).show()}),"html")}},appswebroots:O,Backbone:L,ContactsMenu:W,config:R,currentUser:Z,dialogs:re,EventSource:de,getCurrentUser:function(){return{uid:Z,displayName:V}},isUserAdmin:function(){return ge},L10N:Oe,_ajaxConnectionLostHandler:m,_processAjaxError:function(e){(0!==e.status||"abort"!==e.statusText&&"timeout"!==e.statusText&&!Ge._reloadCalled)&&(h.default.contains([302,303,307,401],e.status)&&Ge.currentUser?setTimeout((function(){if(!Ge._userIsNavigatingAway&&!Ge._reloadCalled){var e=0,t=setInterval((function(){A.showUpdate(n("core","Problem loading page, reloading in %n second","Problem loading page, reloading in %n seconds",5-e)),e>=5&&(clearInterval(t),Ge.reload()),e++}),1e3);Ge._reloadCalled=!0}}),100):0===e.status&&setTimeout((function(){Ge._userIsNavigatingAway||Ge._reloadCalled||Ge._ajaxConnectionLostHandler()}),100))},registerXHRForErrorProcessing:function(e){e.addEventListener&&(e.addEventListener("load",(function(){4===e.readyState&&(e.status>=200&&e.status<300||304===e.status||c()(document).trigger(new(c().Event)("ajaxError"),e))})),e.addEventListener("error",(function(){c()(document).trigger(new(c().Event)("ajaxError"),e)})))},getCapabilities:function(){return console.warn("OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities"),(0,fe.getCapabilities)()},hideMenus:he,registerMenu:function(e,t,n,i){t.addClass("menu");var o="A"===e.prop("tagName")||"BUTTON"===e.prop("tagName");e.on(o?"click.menu":"click.menu keyup.menu",(function(o){o.preventDefault(),o.key&&"Enter"!==o.key||(t.is(pe)?he():(pe&&he(),!0===i&&t.parent().addClass("openedMenu"),e.attr("aria-expanded",!0),t.slideToggle(50,n),pe=t))}))},showMenu:function(e,t,n){t.is(pe)||(he(),pe=t,t.trigger(new(c().Event)("beforeShow")),t.show(),t.trigger(new(c().Event)("afterShow")),h.default.isFunction(n)&&n())},unregisterMenu:function(e,t){t.is(pe)&&he(),e.off("click.menu").removeClass("menutoggle"),t.removeClass("menu")},basename:F.EZ,encodePath:F.Ec,dirname:F.XX,isSamePath:F.Mg,joinPaths:F.RQ,getHost:function(){return window.location.host},getHostName:function(){return window.location.hostname},getPort:function(){return window.location.port},getProtocol:function(){return window.location.protocol.split(":")[0]},getCanonicalLocale:Te.getCanonicalLocale,getLocale:function(){var e;return null!==(e=c()("html").data("locale"))&&void 0!==e?e:"en"},getLanguage:function(){return c()("html").prop("lang")},addTranslations:Oe.load,buildQueryString:function(e){return e?c().map(e,(function(e,t){var n=encodeURIComponent(t);return null!=e&&(n+="="+encodeURIComponent(e)),n})).join("&"):""},parseQueryString:function(e){var t,n,i,o={};if(!e)return null;(t=e.indexOf("?"))>=0&&(e=e.substr(t+1));for(var a=e.replace(/\+/g,"%20").split("&"),r=0;r<a.length;r++){var s=a[r];(n=(t=s.indexOf("="))>=0?[s.substr(0,t),s.substr(t+1)]:[s]).length&&(i=decodeURIComponent(n[0]))&&(o[i]=n.length>1?decodeURIComponent(n[1]):null)}return o},msg:je,Notification:A,PasswordConfirmation:ze,Plugins:{_plugins:{},register:function(e,t){var n=this._plugins[e];n||(n=this._plugins[e]=[]),n.push(t)},getPlugins:function(e){return this._plugins[e]||[]},attach:function(e,t,n){for(var i=this.getPlugins(e),o=0;o<i.length;o++)i[o].attach&&i[o].attach(t,n)},detach:function(e,t,n){for(var i=this.getPlugins(e),o=0;o<i.length;o++)i[o].detach&&i[o].detach(t,n)}},theme:_e,Util:Me,debug:Ue,filePath:d.generateFilePath,generateUrl:d.generateUrl,get:(Re=window,function(e){for(var t=e.split("."),n=t.pop(),i=0;i<t.length;i++)if(!(Re=Re[t[i]]))return!1;return Re[n]}),set:function(e){return function(t,n){for(var i=t.split("."),o=i.pop(),a=0;a<i.length;a++)e[i[a]]||(e[i[a]]={}),e=e[i[a]];return e[o]=n,n}}(window),getRootPath:d.getRootUrl,imagePath:d.imagePath,redirect:function(e){window.location=e},reload:function(){window.location.reload()},requestToken:le(),linkTo:d.linkTo,linkToOCS:function(e,t){return(0,d.generateOcsUrl)(e,{},{ocsVersion:t||1})+"/"},linkToRemote:d.generateRemoteUrl,linkToRemoteBase:function(e){return(0,d.getRootUrl)()+"/remote.php/"+e},webroot:Qe};(0,u.subscribe)("csrf-token-update",(function(e){OC.requestToken=e.token,console.info("OC.requestToken changed",e.token)}));var He=o(18037),Ke=o(16453),Ye=o(22200);function qe(e,t,n,i,o,a,r){try{var s=e[a](r),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(i,o)}function We(e){return function(){var t=this,n=arguments;return new Promise((function(i,o){var a=e.apply(t,n);function r(e){qe(a,i,o,r,s,"next",e)}function s(e){qe(a,i,o,r,s,"throw",e)}r(void 0)}))}}var Je=null,Ve=function(){var e=We(regeneratorRuntime.mark((function e(){var t,n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=(0,d.generateUrl)("/csrftoken"),e.next=3,c().get(t);case 3:return n=e.sent,e.abrupt("return",n.token);case 5:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),Ze=function(){var e=We(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,Ve();case 3:t=e.sent,ce(t),e.next=10;break;case 7:e.prev=7,e.t0=e.catch(0),console.error("session heartbeat failed",e.t0);case 10:case"end":return e.stop()}}),e,null,[[0,7]])})));return function(){return e.apply(this,arguments)}}(),Xe=function(){var e=setInterval(Ze,1e3*function(){var e=NaN;return Je.session_lifetime&&(e=Math.floor(Je.session_lifetime/2)),Math.min(86400,Math.max(60,isNaN(e)?900:e))}());return console.info("session heartbeat polling started"),e},$e=function(){var e=c()("#appmenu li"),t=c()(".header-right").outerWidth(),n=c()("header").outerWidth()-c()("#nextcloud").outerWidth()-(t>210?t:210),i=c()(window).width()<1024;i||(n*=.67);var o,a=Math.floor(n/c()(e).width());i&&a>12&&(a=12),!i&&a<12&&(a=12),e.length-1-a>=1&&a--,c()("#more-apps a").removeClass("active");for(var r=0;r<e.length-1;r++){var s=c()(e[r]).data("id");r<a?(c()(e[r]).removeClass("hidden"),c()("#apps li[data-id="+s+"]").addClass("in-header"),o=e[r]):(c()(e[r]).addClass("hidden"),c()("#apps li[data-id="+s+"]").removeClass("in-header"),a>0&&c()(e[r]).children("a").hasClass("active")&&(c()(o).addClass("hidden"),c()("#apps li[data-id="+c()(o).data("id")+"]").removeClass("in-header"),c()(e[r]).removeClass("hidden"),c()("#apps li[data-id="+s+"]").addClass("in-header")))}0===c()("#apps li:not(.in-header)").length?(c()("#more-apps").hide(),c()("#navigation").hide()):c()("#more-apps").show()},et={zh:"zh-cn",zh_Hans:"zh-cn",zh_Hans_CN:"zh-cn",zh_Hans_HK:"zh-cn",zh_Hans_MO:"zh-cn",zh_Hans_SG:"zh-cn",zh_Hant:"zh-hk",zh_Hant_HK:"zh-hk",zh_Hant_MO:"zh-mo",zh_Hant_TW:"zh-tw"},tt=Ge.getLocale();Object.prototype.hasOwnProperty.call(et,tt)&&(tt=et[tt]),De().locale(tt);var nt,it=function(){var e,t;if(window.navigator.userAgent.indexOf("Edge/")>0&&(c()("html").addClass("edge"),console.info("Legacy browser detected, applying css vars polyfill"),(0,He.Z)({watch:!0,onlyLegacy:!(/Edge\/([0-9]{2})\./i.test(navigator.userAgent)&&parseInt(/Edge\/([0-9]{2})\./i.exec(navigator.userAgent)[1])<16)})),c()(window).on("unload.main",(function(){Ge._unloadCalled=!0})),c()(window).on("beforeunload.main",(function(){setTimeout((function(){Ge._userIsNavigatingAway=!0,setTimeout((function(){Ge._unloadCalled||(Ge._userIsNavigatingAway=!1)}),1e4)}),1)})),c()(document).on("ajaxError.main",(function(e,t,n){n&&n.allowAuthErrors||Ge._processAjaxError(t)})),function(){if(function(){try{Je=(0,Ke.loadState)("core","config")}catch(e){Je=Ge.config}}(),function(){if(Je.auto_logout&&(0,Ye.getCurrentUser)()){var e=Date.now();window.addEventListener("mousemove",(function(t){e=Date.now(),localStorage.setItem("lastActive",e)})),window.addEventListener("touchstart",(function(t){e=Date.now(),localStorage.setItem("lastActive",e)})),window.addEventListener("storage",(function(t){"lastActive"===t.key&&(e=t.newValue)})),setInterval((function(){var t=Date.now()-1e3*Je.session_lifetime;if(e<t){console.info("Inactivity timout reached, logging out");var n=(0,d.generateUrl)("/logout")+"?requesttoken="+encodeURIComponent(le());window.location=n}}),1e3)}}(),void 0===Je.session_keepalive||Je.session_keepalive){var e=Xe();window.addEventListener("online",We(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return console.info("browser is online again, resuming heartbeat"),e=Xe(),t.prev=2,t.next=5,Ze();case 5:console.info("session token successfully updated after resuming network"),(0,u.emit)("networkOnline",{success:!0}),t.next=13;break;case 9:t.prev=9,t.t0=t.catch(2),console.error("could not update session token after resuming network",t.t0),(0,u.emit)("networkOnline",{success:!1});case 13:case"end":return t.stop()}}),t,null,[[2,9]])})))),window.addEventListener("offline",(function(){console.info("browser is offline, stopping heartbeat"),(0,u.emit)("networkOffline",{}),clearInterval(e),console.info("session heartbeat polling stopped")}))}else console.info("session heartbeat disabled")}(),Ge.registerMenu(c()("#expand"),c()("#expanddiv"),!1,!0),c()(document).on("mouseup.closemenus",(function(e){var t=c()(e.target);if(t.closest(".menu").length||t.closest(".menutoggle").length)return!1;Ge.hideMenus()})),function(){Object.assign(Ge,{setNavigationCounter:function(e,t){var n=document.getElementById("appmenu").querySelector('[data-id="'+e+'"] svg'),i=document.getElementById("apps").querySelector('[data-id="'+e+'"] svg');0===t?(n.classList.remove("has-unread"),i.classList.remove("has-unread"),n.getElementsByTagName("image")[0].style.mask="",i.getElementsByTagName("image")[0].style.mask=""):(n.classList.add("has-unread"),i.classList.add("has-unread"),n.getElementsByTagName("image")[0].style.mask="url(#hole)",i.getElementsByTagName("image")[0].style.mask="url(#hole)"),document.getElementById("appmenu").querySelector('[data-id="'+e+'"] .unread-counter').textContent=t,document.getElementById("apps").querySelector('[data-id="'+e+'"] .unread-counter').textContent=t}}),Ge.registerMenu(c()("#more-apps > a"),c()("#navigation"));var e=c()("#header .header-appname-container"),t=c()("#navigation"),n=c()("#appmenu");Ge.registerMenu(e,t),e.data("oldhref",e.attr("href")),e.attr("href","#"),t.hide(),t.delegate("a","click",(function(e){var t=c()(e.target);t.is("a")||(t=t.closest("a")),1!==e.which||e.ctrlKey||e.metaKey||"_blank"===t.attr("target")?Ge.hideMenus((function(){return!1})):(t.find("svg").remove(),t.find("div").remove(),t.prepend(c()("<div></div>").addClass("icon-loading-small")))})),t.delegate("a","mouseup",(function(e){2===e.which&&Ge.hideMenus((function(){return!1}))})),n.delegate("li:not(#more-apps) > a","click",(function(e){var t=c()(e.target);t.is("a")||(t=t.closest("a")),1!==e.which||e.ctrlKey||e.metaKey||0!==t.parent("#more-apps").length||"_blank"===t.attr("target")?Ge.hideMenus((function(){return!1})):(t.find("svg").remove(),t.find("div").remove(),t.prepend(c()("<div></div>").addClass(OCA.Theming&&OCA.Theming.inverted?"icon-loading-small":"icon-loading-small-dark")),window.location=t.attr("href"))}))}(),e=c()("#header #settings"),t=["user-status-menu-item__header"],e.delegate("a","click",(function(e){var n=c()(e.target);n.is("a")||(n=n.closest("a")),1!==e.which||e.ctrlKey||e.metaKey?Ge.hideMenus((function(){return!1})):t.includes(n.attr("class"))||(n.find("img").remove(),n.find("div").remove(),n.prepend(c()("<div></div>").addClass("icon-loading-small")))})),e.delegate("a","mouseup",(function(e){2===e.which&&Ge.hideMenus((function(){return!1}))})),new Ge.ContactsMenu({el:c()("#contactsmenu .menu"),trigger:c()("#contactsmenu .menutoggle")}),c()("#navigation").length&&(c()("#header #nextcloud + .menutoggle").on("click",(function(){c()("#menu-css-helper").remove();var e=c()(".header-appname + .icon-caret").offset().left-2;e>255||c()("head").append('<style id="menu-css-helper">#navigation:after { left: '+e+"px }</style>")})),c()("#header #appmenu .menutoggle").on("click",(function(){c()("#appmenu").toggleClass("menu-open"),c()("#appmenu").is(":visible")&&c()("#menu-css-helper").remove()}))),c()(window).resize($e),setTimeout($e,0),c()("#app-navigation").length&&!c()("html").hasClass("lte9")&&!c()("#app-content").hasClass("no-snapper")){var n=new Snap({element:document.getElementById("app-content"),disable:"right",maxPosition:300,minDragDistance:100});c()("#app-content").prepend('<div id="app-navigation-toggle" class="icon-menu" style="display:none" tabindex="0"></div>');var i=!1;n.on("animating",(function(){i=!0})),n.on("animated",(function(){i=!1})),n.on("start",(function(){i=!0})),n.on("end",(function(){i=!1}));var o=n.open,a=n.close,r=function(){i||"closed"!==n.state().state||o("left")},s=function(){i||"closed"===n.state().state||a()};window.TESTING||(n.open=function(){h.default.defer(r)},n.close=function(){h.default.defer(s)}),c()("#app-navigation-toggle").click((function(e){"left"!==n.state().state&&n.open()})),c()("#app-navigation-toggle").keypress((function(e){"left"===n.state().state?n.close():n.open()})),c()("#app-navigation").delegate("a, :button","click",(function(e){var t=c()(e.target);t.is(".app-navigation-noclose")||t.closest(".app-navigation-noclose").length||t.is(".app-navigation-entry-utils-menu-button")||t.closest(".app-navigation-entry-utils-menu-button").length||t.is(".add-new")||t.closest(".add-new").length||t.is("#app-settings")||t.closest("#app-settings").length||n.close()}));var l=!1,f=!0,p=!1;Ge.allowNavigationBarSlideGesture=function(){f=!0,p&&(n.enable(),l=!0,p=!1)},Ge.disallowNavigationBarSlideGesture=function(){f=!1,l&&(n.disable(!0),l=!1,p=!0)};var g=function(){c()(window).width()>1024?(n.close(),n.disable(),l=!1,p=!1):f?(n.enable(),l=!0,p=!1):p=!0};c()(window).resize(h.default.debounce(g,250)),g()}setInterval((function(){c()(".live-relative-timestamp").each((function(){var e=parseInt(c()(this).attr("data-timestamp"),10);c()(this).text(De()(e).fromNow())}))}),3e4),ze.init()},ot=(o(49226),o(41704),o(78312),o(22634),o(3682));o(33824),c().prototype.tooltip=(nt=c().prototype.tooltip,function(e){try{return nt.call(this,e)}catch(t){if(t instanceof TypeError&&"destroy"===e)return void 0===window.TESTING&&console.error("Deprecated call $.tooltip('destroy') has been deprecated and should be removed"),nt.call(this,"dispose");if(t instanceof TypeError&&"fixTitle"===e)return void 0===window.TESTING&&console.error("Deprecated call $.tooltip('fixTitle') has been deprecated and should be removed"),nt.call(this,"_fixTitle")}});var at=o(42152),rt=o.n(at),st=(o(317),o(77980),o(99560)),lt=o.n(st),ct=(o(18553),o(34140),o(75693),o(99205),o(38554),/(\s|^)(https?:\/\/)?((?:[-A-Z0-9+_]+\.)+[-A-Z]+(?:\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*)(\s|$)/gi);function ut(e){return this.formatLinksRich(e)}function dt(e){return this.formatLinksPlain(e)}function ft(e){return e.replace(ct,(function(e,t,n,i,o){var a=i;return n?"http://"===n&&(a=n+i):n="https://",t+'<a class="external" target="_blank" rel="noopener noreferrer" href="'+n+i+'">'+a+"</a>"+o}))}function pt(e){var t=c()("<div></div>").html(e);return t.find("a").each((function(){var e=c()(this);e.html(e.attr("href"))})),t.html()}function ht(e){var n=(e=e||{}).dismiss||{};c().ajax({type:"GET",url:e.url||(0,d.generateOcsUrl)("core/whatsnew?format=json"),success:e.success||function(e,i,o){!function(e,n,i,o){if(console.debug("querying Whats New data was successful: "+n),console.debug(e),200===i.status){var a,r,s,l,c=document.createElement("div");c.classList.add("popovermenu","open","whatsNewPopover","menu-left");var u=document.createElement("ul");for(var d in a=document.createElement("li"),(r=document.createElement("span")).className="menuitem",(s=document.createElement("span")).innerText=t("core","New in")+" "+e.ocs.data.product,s.className="caption",r.appendChild(s),(l=document.createElement("span")).className="icon-close",l.onclick=function(){gt(e.ocs.data.version,o)},r.appendChild(l),a.appendChild(r),u.appendChild(a),e.ocs.data.whatsNew.regular){var f=e.ocs.data.whatsNew.regular[d];a=document.createElement("li"),(r=document.createElement("span")).className="menuitem",(l=document.createElement("span")).className="icon-checkmark",r.appendChild(l),(s=document.createElement("p")).innerHTML=h.default.escape(f),r.appendChild(s),a.appendChild(r),u.appendChild(a)}h.default.isUndefined(e.ocs.data.changelogURL)||(a=document.createElement("li"),(r=document.createElement("a")).href=e.ocs.data.changelogURL,r.rel="noreferrer noopener",r.target="_blank",(l=document.createElement("span")).className="icon-link",r.appendChild(l),(s=document.createElement("span")).innerText=t("core","View changelog"),r.appendChild(s),a.appendChild(r),u.appendChild(a)),c.appendChild(u),document.body.appendChild(c)}}(e,i,o,n)},error:e.error||At})}function gt(e,t){t=t||{},c().ajax({type:"POST",url:t.url||(0,d.generateOcsUrl)("core/whatsnew"),data:{version:encodeURIComponent(e)},success:t.success||mt,error:t.error||vt}),c()(".whatsNewPopover").remove()}function At(e,t,n){console.debug("querying Whats New Data resulted in an error: "+t+n),console.debug(e)}function mt(e){}function vt(e){console.debug("dismissing Whats New data resulted in an error: "+e)}var wt,Ct,bt,yt,kt={},xt={},Et={},Pt={loadScript:function(e,t){var n=e+t;return Object.prototype.hasOwnProperty.call(xt,n)?Promise.resolve():(xt[n]=!0,new Promise((function(n,i){var o=OC.filePath(e,"js",t),a=document.createElement("script");a.src=o,a.setAttribute("nonce",btoa(OC.requestToken)),a.onload=function(){return n()},a.onerror=function(){return i(new Error("Failed to load script from ".concat(o)))},document.head.appendChild(a)})))},loadStylesheet:function(e,t){var n=e+t;return Object.prototype.hasOwnProperty.call(Et,n)?Promise.resolve():(Et[n]=!0,new Promise((function(n,i){var o=OC.filePath(e,"css",t),a=document.createElement("link");a.href=o,a.type="text/css",a.rel="stylesheet",a.onload=function(){return n()},a.onerror=function(){return i(new Error("Failed to load stylesheet from ".concat(o)))},document.head.appendChild(a)})))}},Bt={success:function(e,t){return(0,g.s$)(e,t)},warning:function(e,t){return(0,g.K2)(e,t)},error:function(e,t){return(0,g.x2)(e,t)},info:function(e,t){return(0,g.JQ)(e,t)},message:function(e,t){return(0,g.PV)(e,t)}},Ot={AppConfig:a,Collaboration:{registerType:function(e,t){kt[e]=t},trigger:function(e){return kt[e].action()},getTypes:function(){return Object.keys(kt)},getIcon:function(e){return kt[e].typeIconClass||""},getLabel:function(e){return ke()(kt[e].typeString||e)},getLink:function(e,t){return void 0!==kt[e]?kt[e].link(t):""}},Comments:r,InitialState:{loadState:Ke.loadState},Loader:Pt,Toast:Bt,WhatsNew:s},Tt=function(){void 0===window.TESTING&&console.warn.apply(console,arguments)},jt=function(e,t,n){(Array.isArray(e)?e:[e]).forEach((function(e){void 0!==window[e]&&delete window[e],Object.defineProperty(window,e,{get:function(){return Tt(n?"".concat(e," is deprecated: ").concat(n):"".concat(e," is deprecated")),t()}})}))};window._=h.default,jt(["$","jQuery"],(function(){return c()}),"The global jQuery is deprecated. It will be removed in a later versions without another warning. Please ship your own."),jt("autosize",(function(){return ot.Z}),"please ship your own, this will be removed in Nextcloud 20"),jt("Backbone",(function(){return j()}),"please ship your own, this will be removed in Nextcloud 20"),jt(["Clipboard","ClipboardJS"],(function(){return rt()}),"please ship your own, this will be removed in Nextcloud 20"),window.dav=I.dav,jt("Handlebars",(function(){return we()}),"please ship your own, this will be removed in Nextcloud 20"),jt("md5",(function(){return lt()}),"please ship your own, this will be removed in Nextcloud 20"),jt("moment",(function(){return De()}),"please ship your own, this will be removed in Nextcloud 20"),window.OC=Ge,jt("initCore",(function(){return it}),"this is an internal function"),jt("oc_appswebroots",(function(){return Ge.appswebroots}),"use OC.appswebroots instead, this will be removed in Nextcloud 20"),jt("oc_config",(function(){return Ge.config}),"use OC.config instead, this will be removed in Nextcloud 20"),jt("oc_current_user",(function(){return Ge.getCurrentUser().uid}),"use OC.getCurrentUser().uid instead, this will be removed in Nextcloud 20"),jt("oc_debug",(function(){return Ge.debug}),"use OC.debug instead, this will be removed in Nextcloud 20"),jt("oc_defaults",(function(){return Ge.theme}),"use OC.theme instead, this will be removed in Nextcloud 20"),jt("oc_isadmin",Ge.isUserAdmin,"use OC.isUserAdmin() instead, this will be removed in Nextcloud 20"),jt("oc_requesttoken",(function(){return le()}),"use OC.requestToken instead, this will be removed in Nextcloud 20"),jt("oc_webroot",(function(){return Ge.webroot}),"use OC.getRootPath() instead, this will be removed in Nextcloud 20"),jt("OCDialogs",(function(){return Ge.dialogs}),"use OC.dialogs instead, this will be removed in Nextcloud 20"),window.OCP=Ot,window.OCA=ee,c().fn.select2=(wt=c().fn.select2,Ct="select2",19,bt=wt,yt=function(){return Tt("The ".concat(Ct," library is deprecated! It will be removed in nextcloud ").concat(19,".")),bt.apply(this,arguments)},Object.assign(yt,bt),yt),window.t=h.default.bind(Ge.L10N.translate,Ge.L10N),window.n=h.default.bind(Ge.L10N.translatePlural,Ge.L10N),c().fn.avatar=function(e,t,n,i,o,a){var r=function(e){e.imageplaceholder("?"),e.css("background-color","#b9b9b9")};if(void 0!==e&&(e=String(e)),void 0!==a&&(a=String(a)),void 0===t&&(t=this.height()>0?this.height():this.data("size")>0?this.data("size"):64),this.height(t),this.width(t),void 0===e){if(void 0===this.data("user"))return void r(this);e=this.data("user")}e=String(e).replace(/\//g,"");var s,l=this;s=e===Ge.getCurrentUser().uid?Ge.generateUrl("/avatar/{user}/{size}?v={version}",{user:e,size:Math.ceil(t*window.devicePixelRatio),version:oc_userconfig.avatar.version}):Ge.generateUrl("/avatar/{user}/{size}",{user:e,size:Math.ceil(t*window.devicePixelRatio)});var c=new Image;c.onload=function(){l.clearimageplaceholder(),l.append(c),"function"==typeof o&&o()},c.onerror=function(){l.clearimageplaceholder(),void 0!==a?l.imageplaceholder(e,a):r(l),"function"==typeof o&&o()},t<32?l.addClass("icon-loading-small"):l.addClass("icon-loading"),c.width=t,c.height=t,c.src=s,c.alt=""};var It=o(47078);c().fn.contactsMenu=function(e,n,i){if(-1!==[0,4,6].indexOf(n)){var o=this;i.append('<div class="menu popovermenu menu-left hidden contactsmenu-popover"> <ul> <li> <a> <span class="icon-loading-small"></span> </a> </li> </ul></div>');var a=i.find("div.contactsmenu-popover");o.click((function(){if(!a.hasClass("hidden"))return a.addClass("hidden"),void a.hide();a.removeClass("hidden"),a.show(),a.hasClass("loaded")||(a.addClass("loaded"),c().ajax(Ge.generateUrl("/contactsmenu/findOne"),{method:"POST",data:{shareType:n,shareWith:e}}).then((function(e){a.find("ul").find("li").addClass("hidden"),(e.topAction?[e.topAction].concat(e.actions):[{hyperlink:"#",title:t("core","No action available")}]).forEach((function(e){a.find("ul").append(It(e))})),o.trigger("load")}),(function(e){var n;a.find("ul").find("li").addClass("hidden"),n=404===e.status?t("core","No action available"):t("core","Error fetching contact actions"),a.find("ul").append(It({hyperlink:"#",title:n})),o.trigger("loaderror",e)})))})),c()(document).click((function(e){var t=a.has(e.target).length>0,n=o.has(e.target).length>0;o.each((function(){c()(this).is(e.target)&&(n=!0)})),t||n||(a.addClass("hidden"),a.hide())}))}},c().fn.exists=function(){return this.length>0},c().fn.filterAttr=function(e,t){return this.filter((function(){return c()(this).attr(e)===t}))},c().widget("oc.ocdialog",{options:{width:"auto",height:"auto",closeButton:!0,closeOnEscape:!0,closeCallback:null,modal:!1},_create:function(){var e=this;this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,height:this.element[0].style.height},this.originalTitle=this.element.attr("title"),this.options.title=this.options.title||this.originalTitle,this.$dialog=c()('<div class="oc-dialog"></div>').attr({tabIndex:-1,role:"dialog"}).insertBefore(this.element),this.$dialog.append(this.element.detach()),this.element.removeAttr("title").addClass("oc-dialog-content").appendTo(this.$dialog),this.$dialog.css({display:"inline-block",position:"fixed"}),this.enterCallback=null,c()(document).on("keydown keyup",(function(t){if(t.target===e.$dialog.get(0)||0!==e.$dialog.find(c()(t.target)).length){if(27===t.keyCode&&"keydown"===t.type&&e.options.closeOnEscape)return t.stopImmediatePropagation(),e.close(),!1;if(13===t.keyCode){if(t.stopImmediatePropagation(),null!==e.enterCallback)return e.enterCallback(),t.preventDefault(),!1;if("keyup"===t.type)return t.preventDefault(),!1;if(e.$buttonrow&&0===e.$buttonrow.find(c()(t.target)).length){var n=e.$buttonrow.find("button.primary");n&&!n.prop("disabled")&&n.trigger("click")}else e.$buttonrow&&c()(t.target).trigger("click");return!1}}})),this._setOptions(this.options),this._createOverlay()},_init:function(){this.$dialog.focus(),this._trigger("open")},_setOption:function(e,t){var n=this;switch(e){case"title":if(this.$title)this.$title.text(t);else{var i=c()('<h2 class="oc-dialog-title">'+t+"</h2>");this.$title=i.prependTo(this.$dialog)}this._setSizes();break;case"buttons":if(this.$buttonrow)this.$buttonrow.empty();else{var o=c()('<div class="oc-dialog-buttonrow"></div>');this.$buttonrow=o.appendTo(this.$dialog)}1===t.length?this.$buttonrow.addClass("onebutton"):2===t.length?this.$buttonrow.addClass("twobuttons"):3===t.length&&this.$buttonrow.addClass("threebuttons"),c().each(t,(function(e,t){var i=c()("<button>").text(t.text);t.classes&&i.addClass(t.classes),t.defaultButton&&(i.addClass("primary"),n.$defaultButton=i),n.$buttonrow.append(i),i.click((function(){t.click.apply(n.element[0],arguments)}))})),this.$buttonrow.find("button").on("focus",(function(e){n.$buttonrow.find("button").removeClass("primary"),c()(this).addClass("primary")})),this._setSizes();break;case"style":void 0!==t.buttons&&this.$buttonrow.addClass(t.buttons);break;case"closeButton":if(t){var a=c()('<a class="oc-dialog-close"></a>');this.$dialog.prepend(a),a.on("click",(function(){n.options.closeCallback&&n.options.closeCallback(),n.close()}))}else this.$dialog.find(".oc-dialog-close").remove();break;case"width":this.$dialog.css("width",t);break;case"height":this.$dialog.css("height",t);break;case"close":this.closeCB=t}c().Widget.prototype._setOption.apply(this,arguments)},_setOptions:function(e){c().Widget.prototype._setOptions.apply(this,arguments)},_setSizes:function(){var e=0;this.$title&&(e+=this.$title.outerHeight(!0)),this.$buttonrow&&(e+=this.$buttonrow.outerHeight(!0)),this.element.css({height:"calc(100% - "+e+"px)"})},_createOverlay:function(){if(this.options.modal){var e=this,t=c()("#content");0===t.length&&(t=c()(".content")),this.overlay=c()("<div>").addClass("oc-dialog-dim").appendTo(t),this.overlay.on("click keydown keyup",(function(t){t.target!==e.$dialog.get(0)&&0===e.$dialog.find(c()(t.target)).length&&(t.preventDefault(),t.stopPropagation())}))}},_destroyOverlay:function(){this.options.modal&&this.overlay&&(this.overlay.off("click keydown keyup"),this.overlay.remove(),this.overlay=null)},widget:function(){return this.$dialog},setEnterCallback:function(e){this.enterCallback=e},unsetEnterCallback:function(){this.enterCallback=null},close:function(){this._destroyOverlay();var e=this;setTimeout((function(){e._trigger("close",e)}),200),e.$dialog.remove(),this.destroy()},destroy:function(){this.$title&&this.$title.remove(),this.$buttonrow&&this.$buttonrow.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),this.element.removeClass("oc-dialog-content").css(this.originalCss).detach().insertBefore(this.$dialog),this.$dialog.remove()}});var Dt={init:function(e,t,n){if(this.vars=e,this.options=c().extend({},this.options,t),this.elem=n,"function"==typeof this.options.escapeFunction)for(var i=Object.keys(this.vars),o=0;o<i.length;o++)"string"==typeof this.vars[i[o]]&&(this.vars[i[o]]=this.options.escapeFunction(this.vars[i[o]]));var a=this._build(this.vars);return c()(a)},_build:function(e){var t="text/template"===this.elem.attr("type")?this.elem.html():this.elem.get(0).outerHTML;try{return t.replace(/{([^{}]*)}/g,(function(t,n){var i=e[n];return"string"==typeof i||"number"==typeof i?i:t}))}catch(e){console.error(e,"data:",t)}},options:{escapeFunction:ke()}};c().fn.octemplate=function(e,t){if(e=e||{},this.length)return Object.create(Dt).init(e,t,this)};var zt=function(e){var t=e.toLowerCase();function n(e,t,n){this.r=e,this.g=t,this.b=n}function i(e,t,i){var o=[];o.push(t);for(var a=function(e,t){var n=new Array(3);return n[0]=(t[1].r-t[0].r)/e,n[1]=(t[1].g-t[0].g)/e,n[2]=(t[1].b-t[0].b)/e,n}(e,[t,i]),r=1;r<e;r++){var s=parseInt(t.r+a[0]*r),l=parseInt(t.g+a[1]*r),c=parseInt(t.b+a[2]*r);o.push(new n(s,l,c))}return o}null===t.match(/^([0-9a-f]{4}-?){8}$/)&&(t=lt()(t)),t=t.replace(/[^0-9a-f]/g,"");var o=new n(182,70,157),a=new n(221,203,85),r=new n(0,130,201),s=i(6,o,a),l=i(6,a,r),c=i(6,r,o);return s.concat(l).concat(c)[function(e,t){for(var n=0,i=[],o=0;o<e.length;o++)i.push(parseInt(e.charAt(o),16)%16);for(var a in i)n+=i[a];return parseInt(parseInt(n)%18)}(t)]};String.prototype.toRgb=function(){return console.warn("String.prototype.toRgb is deprecated! It will be removed in Nextcloud 22."),zt(this)},c().fn.imageplaceholder=function(e,t,n){t=t||e;var i=zt(e);this.css("background-color","rgb("+i.r+", "+i.g+", "+i.b+")");var o=this.height()||n||32;if(this.height(o),this.width(o),this.css("color","#fff"),this.css("font-weight","normal"),this.css("text-align","center"),this.css("line-height",o+"px"),this.css("font-size",.55*o+"px"),null!==e&&e.length){var a=t.replace(/\s+/g," ").trim().split(" ",2).map((function(e){return e[0].toUpperCase()})).join("");this.html(a)}},c().fn.clearimageplaceholder=function(){this.css("background-color",""),this.css("color",""),this.css("font-weight",""),this.css("text-align",""),this.css("line-height",""),this.css("font-size",""),this.html(""),this.removeClass("icon-loading"),this.removeClass("icon-loading-small")},c()(document).on("ajaxSend",(function(e,t,n){!1===n.crossDomain&&(t.setRequestHeader("requesttoken",le()),t.setRequestHeader("OCS-APIREQUEST","true"))})),c().fn.selectRange=function(e,t){return this.each((function(){if(this.setSelectionRange)this.focus(),this.setSelectionRange(e,t);else if(this.createTextRange){var n=this.createTextRange();n.collapse(!0),n.moveEnd("character",t),n.moveStart("character",e),n.select()}}))},c().fn.extend({showPassword:function(e){var t={fn:null,args:{}};t.fn=e;var n=function(e,t){t.val(e.val())},i=function(e,t,i){e.is(":checked")?(n(t,i),i.show(),t.hide()):(n(i,t),i.hide(),t.show())};return this.each((function(){var e=c()(this),o=c()(e.data("typetoggle")),a=function(e){var t=c()(e),n=c()("<input />");return n.attr({type:"text",class:t.attr("class"),style:t.attr("style"),size:t.attr("size"),name:t.attr("name")+"-clone",tabindex:t.attr("tabindex"),autocomplete:"off"}),void 0!==t.attr("placeholder")&&n.attr("placeholder",t.attr("placeholder")),n}(e);a.insertAfter(e),t.fn&&(t.args.input=e,t.args.checkbox=o,t.args.clone=a),o.bind("click",(function(){i(o,e,a)})),e.bind("keyup",(function(){n(e,a)})),a.bind("keyup",(function(){n(a,e),e.trigger("keyup")})),a.bind("blur",(function(){e.trigger("focusout")})),i(o,e,a),a.closest("form").submit((function(e){a.prop("type","password")})),t.fn&&t.fn(t.args)}))}}),c().ui.autocomplete.prototype._resizeMenu=function(){this.menu.element.outerWidth(this.element.outerWidth())};var _t=o(93379),Nt=o.n(_t),St=o(7795),Mt=o.n(St),Ut=o(90569),Lt=o.n(Ut),Ft=o(3565),Rt=o.n(Ft),Qt=o(19216),Gt=o.n(Qt),Ht=o(44589),Kt=o.n(Ht),Yt=o(12448),qt={};qt.styleTagTransform=Kt(),qt.setAttributes=Rt(),qt.insert=Lt().bind(null,"head"),qt.domAPI=Mt(),qt.insertStyleElement=Gt(),Nt()(Yt.Z,qt),Yt.Z&&Yt.Z.locals&&Yt.Z.locals;var Wt=o(72417),Jt={};Jt.styleTagTransform=Kt(),Jt.setAttributes=Rt(),Jt.insert=Lt().bind(null,"head"),Jt.domAPI=Mt(),Jt.insertStyleElement=Gt(),Nt()(Wt.Z,Jt),Wt.Z&&Wt.Z.locals&&Wt.Z.locals,c().ajaxSetup({contents:{script:!1}}),c().globalEval=function(){},window.addEventListener("DOMContentLoaded",(function(){var e;it(),0===(e=c()("[data-apps-slide-toggle]")).length&&c()("#app-navigation").addClass("without-app-settings"),c()(document).click((function(t){v&&(e=c()("[data-apps-slide-toggle]")),e.each((function(e,n){var i=c()(n).data("apps-slide-toggle"),o=c()(i);function a(){o.slideUp(4*OC.menuSpeed,(function(){o.trigger(new(c().Event)("hide"))})),o.removeClass("opened"),c()(n).removeClass("opened")}if(!o.is(":animated"))if(c()(n).is(c()(t.target).closest("[data-apps-slide-toggle]")))o.is(":visible")?a():function(){o.slideDown(4*OC.menuSpeed,(function(){o.trigger(new(c().Event)("show"))})),o.addClass("opened"),c()(n).addClass("opened");var e=c()(i+" [autofocus]");1===e.length&&e.focus()}();else{var r=c()(t.target).closest(i);o.is(":visible")&&r[0]!==o[0]&&a()}}))})),window.history.pushState?window.onpopstate=_.bind(Ge.Util.History._onPopState,Ge.Util.History):c()(window).on("hashchange",_.bind(Ge.Util.History._onPopState,Ge.Util.History))}))},12448:function(e,t,n){"use strict";var i=n(87537),o=n.n(i),a=n(23645),r=n.n(a),s=n(61667),l=n.n(s),c=new URL(n(58188),n.b),u=new URL(n(40337),n.b),d=new URL(n(33178),n.b),f=new URL(n(12081),n.b),p=new URL(n(47868),n.b),h=r()(o()),g=l()(c),A=l()(u),m=l()(d),v=l()(f),w=l()(p);h.push([e.id,".ui-widget-content{border:1px solid var(--color-border);background:var(--color-main-background) none;color:var(--color-main-text)}.ui-widget-content a{color:var(--color-main-text)}.ui-widget-header{border:none;color:var(--color-main-text);background-image:none}.ui-widget-header a{color:var(--color-main-text)}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid var(--color-border);background:var(--color-main-background) none;font-weight:bold;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #ddd;background:var(--color-main-background) none;font-weight:bold;color:var(--color-main-text)}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:var(--color-main-text)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid var(--color-primary);background:var(--color-main-background) none;font-weight:bold;color:var(--color-main-text)}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:var(--color-main-text)}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid var(--color-main-background);background:var(--color-main-background) none;color:var(--color-text-light);font-weight:600}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:var(--color-text-lighter)}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:var(--color-error);background:var(--color-error) none;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-state-default .ui-icon{background-image:url("+g+")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("+g+")}.ui-state-active .ui-icon{background-image:url("+g+")}.ui-state-highlight .ui-icon{background-image:url("+A+")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("+m+")}.ui-icon.ui-icon-none{display:none}.ui-widget-overlay{background:#666 url("+v+") 50% 50% repeat;opacity:.5}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:#000 url("+w+") 50% 50% repeat-x;opacity:.2;border-radius:5px}.ui-tabs{border:none}.ui-tabs .ui-tabs-nav.ui-corner-all{border-bottom-left-radius:0;border-bottom-right-radius:0}.ui-tabs .ui-tabs-nav{background:none;margin-bottom:15px}.ui-tabs .ui-tabs-nav .ui-state-default{border:none;border-bottom:1px solid rgba(0,0,0,0);font-weight:normal;margin:0 !important;padding:0 !important}.ui-tabs .ui-tabs-nav .ui-state-hover,.ui-tabs .ui-tabs-nav .ui-state-active{border:none;border-bottom:1px solid var(--color-main-text);color:var(--color-main-text)}.ui-tabs .ui-tabs-nav .ui-state-hover a,.ui-tabs .ui-tabs-nav .ui-state-hover a:link,.ui-tabs .ui-tabs-nav .ui-state-hover a:hover,.ui-tabs .ui-tabs-nav .ui-state-hover a:visited,.ui-tabs .ui-tabs-nav .ui-state-active a,.ui-tabs .ui-tabs-nav .ui-state-active a:link,.ui-tabs .ui-tabs-nav .ui-state-active a:hover,.ui-tabs .ui-tabs-nav .ui-state-active a:visited{color:var(--color-main-text)}.ui-tabs .ui-tabs-nav .ui-state-active{font-weight:bold}.ui-autocomplete.ui-menu{padding:0}.ui-autocomplete.ui-menu.item-count-1,.ui-autocomplete.ui-menu.item-count-2{overflow-y:hidden}.ui-autocomplete.ui-menu .ui-menu-item a{color:var(--color-text-lighter);display:block;padding:4px 4px 4px 14px}.ui-autocomplete.ui-menu .ui-menu-item a.ui-state-focus,.ui-autocomplete.ui-menu .ui-menu-item a.ui-state-active{box-shadow:inset 4px 0 var(--color-primary-element);color:var(--color-main-text)}.ui-autocomplete.ui-widget-content{background:var(--color-main-background);border-top:none}.ui-autocomplete.ui-corner-all{border-radius:0;border-bottom-left-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}.ui-autocomplete .ui-state-hover,.ui-autocomplete .ui-widget-content .ui-state-hover,.ui-autocomplete .ui-widget-header .ui-state-hover,.ui-autocomplete .ui-state-focus,.ui-autocomplete .ui-widget-content .ui-state-focus,.ui-autocomplete .ui-widget-header .ui-state-focus{border:1px solid rgba(0,0,0,0);background:inherit;color:var(--color-primary-element)}.ui-autocomplete .ui-menu-item a{border-radius:0 !important}.ui-button.primary{background-color:var(--color-primary);color:var(--color-primary-text);border:1px solid var(--color-primary-text)}.ui-draggable-handle,.ui-selectable{touch-action:pan-y}","",{version:3,sources:["webpack://./core/src/jquery/css/jquery-ui-fixes.scss"],names:[],mappings:"AAEA,mBACC,oCAAA,CACA,4CAAA,CACA,4BAAA,CAED,qBACC,4BAAA,CAED,kBACC,WAAA,CACA,4BAAA,CACA,qBAAA,CAED,oBACC,4BAAA,CAKD,2FAGC,oCAAA,CACA,4CAAA,CACA,gBAAA,CACA,UAAA,CAED,yEAGC,UAAA,CAED,0KAMC,qBAAA,CACA,4CAAA,CACA,gBAAA,CACA,4BAAA,CAED,2FAIC,4BAAA,CAED,wFAGC,qCAAA,CACA,4CAAA,CACA,gBAAA,CACA,4BAAA,CAED,sEAGC,4BAAA,CAKD,iGAGC,6CAAA,CACA,4CAAA,CACA,6BAAA,CACA,eAAA,CAED,uGAGC,+BAAA,CAED,qFAGC,yBAAA,CACA,kCAAA,CACA,UAAA,CAED,2FAGC,UAAA,CAED,oGAGC,UAAA,CAKD,2BACC,wDAAA,CAED,kDAEC,wDAAA,CAED,0BACC,wDAAA,CAED,6BACC,wDAAA,CAED,uDAEC,wDAAA,CAED,sBACC,YAAA,CAMD,mBACC,sEAAA,CACA,UAAA,CAED,kBACC,oBAAA,CACA,WAAA,CACA,wEAAA,CACA,UAAA,CACA,iBAAA,CAID,SACC,WAAA,CAEA,oCACC,2BAAA,CACA,4BAAA,CAGD,sBACC,eAAA,CACA,kBAAA,CAEA,wCACC,WAAA,CACA,qCAAA,CACA,kBAAA,CACA,mBAAA,CACA,oBAAA,CAGD,6EAEC,WAAA,CACA,8CAAA,CACA,4BAAA,CACA,0WACC,4BAAA,CAGF,uCACC,gBAAA,CAOF,yBACC,SAAA,CAIA,4EAEC,iBAAA,CAGD,yCACC,+BAAA,CACA,aAAA,CACA,wBAAA,CAEA,iHACC,mDAAA,CACA,4BAAA,CAKH,mCACC,uCAAA,CACA,eAAA,CAGD,+BACC,eAAA,CACA,8CAAA,CACA,+CAAA,CAGD,gRAKC,8BAAA,CACA,kBAAA,CACA,kCAAA,CAIA,iCACC,0BAAA,CAKH,mBACC,qCAAA,CACA,+BAAA,CACA,0CAAA,CAKD,oCAEC,kBAAA",sourcesContent:["/* Component containers\n----------------------------------*/\n.ui-widget-content {\n\tborder: 1px solid var(--color-border);\n\tbackground: var(--color-main-background) none;\n\tcolor: var(--color-main-text);\n}\n.ui-widget-content a {\n\tcolor: var(--color-main-text);\n}\n.ui-widget-header {\n\tborder: none;\n\tcolor: var(--color-main-text);\n\tbackground-image: none;\n}\n.ui-widget-header a {\n\tcolor: var(--color-main-text);\n}\n\n/* Interaction states\n----------------------------------*/\n.ui-state-default,\n.ui-widget-content .ui-state-default,\n.ui-widget-header .ui-state-default {\n\tborder: 1px solid var(--color-border);\n\tbackground: var(--color-main-background) none;\n\tfont-weight: bold;\n\tcolor: #555;\n}\n.ui-state-default a,\n.ui-state-default a:link,\n.ui-state-default a:visited {\n\tcolor: #555;\n}\n.ui-state-hover,\n.ui-widget-content .ui-state-hover,\n.ui-widget-header .ui-state-hover,\n.ui-state-focus,\n.ui-widget-content .ui-state-focus,\n.ui-widget-header .ui-state-focus {\n\tborder: 1px solid #ddd;\n\tbackground: var(--color-main-background) none;\n\tfont-weight: bold;\n\tcolor: var(--color-main-text);\n}\n.ui-state-hover a,\n.ui-state-hover a:hover,\n.ui-state-hover a:link,\n.ui-state-hover a:visited {\n\tcolor: var(--color-main-text);\n}\n.ui-state-active,\n.ui-widget-content .ui-state-active,\n.ui-widget-header .ui-state-active {\n\tborder: 1px solid var(--color-primary);\n\tbackground: var(--color-main-background) none;\n\tfont-weight: bold;\n\tcolor: var(--color-main-text);\n}\n.ui-state-active a,\n.ui-state-active a:link,\n.ui-state-active a:visited {\n\tcolor: var(--color-main-text);\n}\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-highlight,\n.ui-widget-content .ui-state-highlight,\n.ui-widget-header .ui-state-highlight {\n\tborder: 1px solid var(--color-main-background);\n\tbackground: var(--color-main-background) none;\n\tcolor: var(--color-text-light);\n\tfont-weight: 600;\n}\n.ui-state-highlight a,\n.ui-widget-content .ui-state-highlight a,\n.ui-widget-header .ui-state-highlight a {\n\tcolor: var(--color-text-lighter);\n}\n.ui-state-error,\n.ui-widget-content .ui-state-error,\n.ui-widget-header .ui-state-error {\n\tborder: var(--color-error);\n\tbackground: var(--color-error) none;\n\tcolor: #ffffff;\n}\n.ui-state-error a,\n.ui-widget-content .ui-state-error a,\n.ui-widget-header .ui-state-error a {\n\tcolor: #ffffff;\n}\n.ui-state-error-text,\n.ui-widget-content .ui-state-error-text,\n.ui-widget-header .ui-state-error-text {\n\tcolor: #ffffff;\n}\n\n/* Icons\n----------------------------------*/\n.ui-state-default .ui-icon {\n\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\n}\n.ui-state-hover .ui-icon,\n.ui-state-focus .ui-icon {\n\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\n}\n.ui-state-active .ui-icon {\n\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\n}\n.ui-state-highlight .ui-icon {\n\tbackground-image: url('images/ui-icons_ffffff_256x240.png');\n}\n.ui-state-error .ui-icon,\n.ui-state-error-text .ui-icon {\n\tbackground-image: url('images/ui-icons_ffd27a_256x240.png');\n}\n.ui-icon.ui-icon-none {\n\tdisplay: none;\n}\n\n/* Misc visuals\n----------------------------------*/\n/* Overlays */\n.ui-widget-overlay {\n\tbackground: #666666 url('images/ui-bg_diagonals-thick_20_666666_40x40.png') 50% 50% repeat;\n\topacity: .5;\n}\n.ui-widget-shadow {\n\tmargin: -5px 0 0 -5px;\n\tpadding: 5px;\n\tbackground: #000000 url('images/ui-bg_flat_10_000000_40x100.png') 50% 50% repeat-x;\n\topacity: .2;\n\tborder-radius: 5px;\n}\n\n/* Tabs customizations */\n.ui-tabs {\n\tborder: none;\n\n\t.ui-tabs-nav.ui-corner-all {\n\t\tborder-bottom-left-radius: 0;\n\t\tborder-bottom-right-radius: 0;\n\t}\n\n\t.ui-tabs-nav {\n\t\tbackground: none;\n\t\tmargin-bottom: 15px;\n\n\t\t.ui-state-default {\n\t\t\tborder: none;\n\t\t\tborder-bottom: 1px solid transparent;\n\t\t\tfont-weight: normal;\n\t\t\tmargin: 0 !important;\n\t\t\tpadding: 0 !important;\n\t\t}\n\n\t\t.ui-state-hover,\n\t\t.ui-state-active {\n\t\t\tborder: none;\n\t\t\tborder-bottom: 1px solid var(--color-main-text);\n\t\t\tcolor: var(--color-main-text);\n\t\t\ta, a:link, a:hover, a:visited {\n\t\t\t\tcolor: var(--color-main-text);\n\t\t\t}\n\t\t}\n\t\t.ui-state-active {\n\t\t\tfont-weight: bold;\n\t\t}\n\t}\n}\n\n/* Select menus */\n.ui-autocomplete {\n\t&.ui-menu {\n\t\tpadding: 0;\n\n\t\t/* scrolling starts from three items,\n\t\t * so hide overflow and scrollbars for a clean layout */\n\t\t&.item-count-1,\n\t\t&.item-count-2 {\n\t\t\toverflow-y: hidden;\n\t\t}\n\n\t\t.ui-menu-item a {\n\t\t\tcolor: var(--color-text-lighter);\n\t\t\tdisplay: block;\n\t\t\tpadding: 4px 4px 4px 14px;\n\n\t\t\t&.ui-state-focus, &.ui-state-active {\n\t\t\t\tbox-shadow: inset 4px 0 var(--color-primary-element);\n\t\t\t\tcolor: var(--color-main-text);\n\t\t\t}\n\t\t}\n\t}\n\n\t&.ui-widget-content {\n\t\tbackground: var(--color-main-background);\n\t\tborder-top: none;\n\t}\n\n\t&.ui-corner-all {\n\t\tborder-radius: 0;\n\t\tborder-bottom-left-radius: var(--border-radius);\n\t\tborder-bottom-right-radius: var(--border-radius);\n\t}\n\n\t.ui-state-hover, .ui-widget-content .ui-state-hover,\n\t.ui-widget-header .ui-state-hover,\n\t.ui-state-focus,\n\t.ui-widget-content .ui-state-focus,\n\t.ui-widget-header .ui-state-focus {\n\t\tborder: 1px solid transparent;\n\t\tbackground: inherit;\n\t\tcolor: var(--color-primary-element);\n\t}\n\n\t.ui-menu-item {\n\t\ta {\n\t\t\tborder-radius: 0 !important;\n\t\t}\n\t}\n}\n\n.ui-button.primary {\n\tbackground-color: var(--color-primary);\n\tcolor: var(--color-primary-text);\n\tborder: 1px solid var(--color-primary-text);\n}\n\n\n/* DRAGGABLE */\n.ui-draggable-handle,\n.ui-selectable {\n\ttouch-action: pan-y;\n}\n"],sourceRoot:""}]),t.Z=h},72417:function(e,t,n){"use strict";var i=n(87537),o=n.n(i),a=n(23645),r=n.n(a)()(o());r.push([e.id,".oc-dialog{background:var(--color-main-background);color:var(--color-text-light);border-radius:var(--border-radius-large);box-shadow:0 0 30px var(--color-box-shadow);padding:24px;z-index:10000;font-size:100%;box-sizing:border-box;min-width:200px;top:50%;left:50%;transform:translate(-50%, -50%);max-height:calc(100% - 20px);max-width:calc(100% - 20px);overflow:auto}.oc-dialog-title{background:var(--color-main-background)}.oc-dialog-buttonrow{position:relative;display:flex;background:rgba(0,0,0,0);right:0;bottom:0;padding:0;padding-top:10px;box-sizing:border-box;width:100%;background-image:linear-gradient(rgba(255, 255, 255, 0), var(--color-main-background))}.oc-dialog-buttonrow.twobuttons{justify-content:space-between}.oc-dialog-buttonrow.onebutton,.oc-dialog-buttonrow.twobuttons.aside{justify-content:flex-end}.oc-dialog-buttonrow button{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:44px;min-width:44px}.oc-dialog-close{position:absolute;top:0;right:0;padding:25px;background:var(--icon-close-000) no-repeat center;opacity:.5}.oc-dialog-close:hover,.oc-dialog-close:focus,.oc-dialog-close:active{opacity:1}.oc-dialog-dim{background-color:#000;opacity:.2;z-index:9999;position:fixed;top:0;left:0;width:100%;height:100%}body.theme--dark .oc-dialog-dim{opacity:.8}.oc-dialog-content{width:100%;max-width:550px}.oc-dialog.password-confirmation .oc-dialog-content{width:auto}.oc-dialog.password-confirmation .oc-dialog-content input[type=password]{width:100%}.oc-dialog.password-confirmation .oc-dialog-content label{display:none}","",{version:3,sources:["webpack://./core/src/jquery/css/jquery.ocdialog.scss"],names:[],mappings:"AAAA,WACC,uCAAA,CACA,6BAAA,CACA,wCAAA,CACA,2CAAA,CACA,YAAA,CACA,aAAA,CACA,cAAA,CACA,qBAAA,CACA,eAAA,CACA,OAAA,CACA,QAAA,CACA,+BAAA,CACA,4BAAA,CACA,2BAAA,CACA,aAAA,CAED,iBACC,uCAAA,CAED,qBACC,iBAAA,CACA,YAAA,CACA,wBAAA,CACA,OAAA,CACA,QAAA,CACA,SAAA,CACA,gBAAA,CACA,qBAAA,CACA,UAAA,CACA,sFAAA,CAEA,gCACO,6BAAA,CAGP,qEAEC,wBAAA,CAGD,4BACI,kBAAA,CACA,eAAA,CACH,sBAAA,CACA,WAAA,CACA,cAAA,CAIF,iBACC,iBAAA,CACA,KAAA,CACA,OAAA,CACA,YAAA,CACA,iDAAA,CACA,UAAA,CAEA,sEAGC,SAAA,CAIF,eACC,qBAAA,CACA,UAAA,CACA,YAAA,CACA,cAAA,CACA,KAAA,CACA,MAAA,CACA,UAAA,CACA,WAAA,CAGD,gCACC,UAAA,CAGD,mBACC,UAAA,CACA,eAAA,CAIA,oDACC,UAAA,CAEA,yEACC,UAAA,CAED,0DACC,YAAA",sourcesContent:[".oc-dialog {\n\tbackground: var(--color-main-background);\n\tcolor: var(--color-text-light);\n\tborder-radius: var(--border-radius-large);\n\tbox-shadow: 0 0 30px var(--color-box-shadow);\n\tpadding: 24px;\n\tz-index: 10000;\n\tfont-size: 100%;\n\tbox-sizing: border-box;\n\tmin-width: 200px;\n\ttop: 50%;\n\tleft: 50%;\n\ttransform: translate(-50%, -50%);\n\tmax-height: calc(100% - 20px);\n\tmax-width: calc(100% - 20px);\n\toverflow: auto;\n}\n.oc-dialog-title {\n\tbackground: var(--color-main-background);\n}\n.oc-dialog-buttonrow {\n\tposition: relative;\n\tdisplay: flex;\n\tbackground: transparent;\n\tright: 0;\n\tbottom: 0;\n\tpadding: 0;\n\tpadding-top: 10px;\n\tbox-sizing: border-box;\n\twidth: 100%;\n\tbackground-image: linear-gradient(rgba(255, 255, 255, 0.0), var(--color-main-background));\n\n\t&.twobuttons {\n justify-content: space-between;\n }\n\n\t&.onebutton,\n\t&.twobuttons.aside {\n\t\tjustify-content: flex-end;\n\t}\n\n\tbutton {\n\t white-space: nowrap;\n\t overflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\theight: 44px;\n\t\tmin-width: 44px;\n\t}\n}\n\n.oc-dialog-close {\n\tposition: absolute;\n\ttop: 0;\n\tright: 0;\n\tpadding: 25px;\n\tbackground: var(--icon-close-000) no-repeat center;\n\topacity: .5;\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\topacity: 1;\n\t}\n}\n\n.oc-dialog-dim {\n\tbackground-color: #000;\n\topacity: .2;\n\tz-index: 9999;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n}\n\nbody.theme--dark .oc-dialog-dim {\n\topacity: .8;\n}\n\n.oc-dialog-content {\n\twidth: 100%;\n\tmax-width: 550px;\n}\n\n.oc-dialog.password-confirmation {\n\t.oc-dialog-content {\n\t\twidth: auto;\n\n\t\tinput[type=password] {\n\t\t\twidth: 100%;\n\t\t}\n\t\tlabel {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),t.Z=r},10944:function(e,t,n){var i=n(40202);e.exports=(i.default||i).template({1:function(e,t,n,i,o){var a,r=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return null!=(a=r(n,"if").call(null!=t?t:e.nullContext||{},null!=(a=null!=t?r(t,"contact"):t)?r(a,"profileUrl"):a,{name:"if",hash:{},fn:e.program(2,o,0),inverse:e.program(5,o,0),data:o,loc:{start:{line:2,column:1},end:{line:10,column:8}}}))?a:""},2:function(e,t,n,i,o){var a,r=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return null!=(a=r(n,"if").call(null!=t?t:e.nullContext||{},null!=(a=null!=t?r(t,"contact"):t)?r(a,"profileTitle"):a,{name:"if",hash:{},fn:e.program(3,o,0),inverse:e.noop,data:o,loc:{start:{line:3,column:2},end:{line:7,column:9}}}))?a:""},3:function(e,t,n,i,o){var a,r=e.lambda,s=e.escapeExpression,l=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'\t\t\t<a class="profile-link--avatar" href="'+s(r(null!=(a=null!=t?l(t,"contact"):t)?l(a,"profileUrl"):a,t))+'">\n\t\t\t\t<img src="'+s(r(null!=(a=null!=t?l(t,"contact"):t)?l(a,"avatar"):a,t))+'&size=32" class="avatar" srcset="'+s(r(null!=(a=null!=t?l(t,"contact"):t)?l(a,"avatar"):a,t))+"&size=32 1x, "+s(r(null!=(a=null!=t?l(t,"contact"):t)?l(a,"avatar"):a,t))+"&size=64 2x, "+s(r(null!=(a=null!=t?l(t,"contact"):t)?l(a,"avatar"):a,t))+'&size=128 4x" alt="">\n\t\t\t</a>\n'},5:function(e,t,n,i,o){var a,r=e.lambda,s=e.escapeExpression,l=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'\t\t<img src="'+s(r(null!=(a=null!=t?l(t,"contact"):t)?l(a,"avatar"):a,t))+'&size=32" class="avatar" srcset="'+s(r(null!=(a=null!=t?l(t,"contact"):t)?l(a,"avatar"):a,t))+"&size=32 1x, "+s(r(null!=(a=null!=t?l(t,"contact"):t)?l(a,"avatar"):a,t))+"&size=64 2x, "+s(r(null!=(a=null!=t?l(t,"contact"):t)?l(a,"avatar"):a,t))+'&size=128 4x" alt="">\n'},7:function(e,t,n,i,o){var a,r=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return null!=(a=r(n,"if").call(null!=t?t:e.nullContext||{},null!=(a=null!=t?r(t,"contact"):t)?r(a,"profileUrl"):a,{name:"if",hash:{},fn:e.program(8,o,0),inverse:e.program(11,o,0),data:o,loc:{start:{line:12,column:1},end:{line:20,column:8}}}))?a:""},8:function(e,t,n,i,o){var a,r=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return null!=(a=r(n,"if").call(null!=t?t:e.nullContext||{},null!=(a=null!=t?r(t,"contact"):t)?r(a,"profileTitle"):a,{name:"if",hash:{},fn:e.program(9,o,0),inverse:e.noop,data:o,loc:{start:{line:13,column:2},end:{line:17,column:9}}}))?a:""},9:function(e,t,n,i,o){var a,r=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'\t\t\t<a class="profile-link--avatar" href="'+e.escapeExpression(e.lambda(null!=(a=null!=t?r(t,"contact"):t)?r(a,"profileUrl"):a,t))+'">\n\t\t\t\t<div class="avatar"></div>\n\t\t\t</a>\n'},11:function(e,t,n,i,o){return'\t\t<div class="avatar"></div>\n'},13:function(e,t,n,i,o){var a,r=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return null!=(a=r(n,"if").call(null!=t?t:e.nullContext||{},null!=(a=null!=t?r(t,"contact"):t)?r(a,"profileTitle"):a,{name:"if",hash:{},fn:e.program(14,o,0),inverse:e.noop,data:o,loc:{start:{line:23,column:1},end:{line:29,column:8}}}))?a:""},14:function(e,t,n,i,o){var a,r=e.lambda,s=e.escapeExpression,l=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'\t\t<a class="body profile-link--full-name" href="'+s(r(null!=(a=null!=t?l(t,"contact"):t)?l(a,"profileUrl"):a,t))+'">\n\t\t\t<div class="full-name">'+s(r(null!=(a=null!=t?l(t,"contact"):t)?l(a,"fullName"):a,t))+'</div>\n\t\t\t<div class="last-message">'+s(r(null!=(a=null!=t?l(t,"contact"):t)?l(a,"lastMessage"):a,t))+'</div>\n\t\t\t<div class="email-address">'+s(r(null!=(a=null!=t?l(t,"contact"):t)?l(a,"emailAddresses"):a,t))+"</div>\n\t\t</a>\n"},16:function(e,t,n,i,o){var a,r=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return null!=(a=r(n,"if").call(null!=t?t:e.nullContext||{},null!=(a=null!=t?r(t,"contact"):t)?r(a,"topAction"):a,{name:"if",hash:{},fn:e.program(17,o,0),inverse:e.program(19,o,0),data:o,loc:{start:{line:30,column:0},end:{line:45,column:0}}}))?a:""},17:function(e,t,n,i,o){var a,r=e.lambda,s=e.escapeExpression,l=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'\t<a class="body" href="'+s(r(null!=(a=null!=(a=null!=t?l(t,"contact"):t)?l(a,"topAction"):a)?l(a,"hyperlink"):a,t))+'"> \n\t\t<div class="full-name">'+s(r(null!=(a=null!=t?l(t,"contact"):t)?l(a,"fullName"):a,t))+'</div>\n\t\t<div class="last-message">'+s(r(null!=(a=null!=t?l(t,"contact"):t)?l(a,"lastMessage"):a,t))+'</div>\n\t\t<div class="email-address">'+s(r(null!=(a=null!=t?l(t,"contact"):t)?l(a,"emailAddresses"):a,t))+'</div>\n\t</a>\n \t<a class="top-action" href="'+s(r(null!=(a=null!=(a=null!=t?l(t,"contact"):t)?l(a,"topAction"):a)?l(a,"hyperlink"):a,t))+'" title="'+s(r(null!=(a=null!=(a=null!=t?l(t,"contact"):t)?l(a,"topAction"):a)?l(a,"title"):a,t))+'">\n \t\t<img src="'+s(r(null!=(a=null!=(a=null!=t?l(t,"contact"):t)?l(a,"topAction"):a)?l(a,"icon"):a,t))+'" alt="'+s(r(null!=(a=null!=(a=null!=t?l(t,"contact"):t)?l(a,"topAction"):a)?l(a,"title"):a,t))+'">\n\t</a>\n'},19:function(e,t,n,i,o){var a,r=e.lambda,s=e.escapeExpression,l=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'\t<div class="body">\n\t\t<div class="full-name">'+s(r(null!=(a=null!=t?l(t,"contact"):t)?l(a,"fullName"):a,t))+'</div>\n\t\t<div class="last-message">'+s(r(null!=(a=null!=t?l(t,"contact"):t)?l(a,"lastMessage"):a,t))+'</div>\n\t\t<div class="email-address">'+s(r(null!=(a=null!=t?l(t,"contact"):t)?l(a,"emailAddresses"):a,t))+"</div>\n\t</div>\n"},21:function(e,t,n,i,o){var a,r=e.lambda,s=e.escapeExpression,l=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<a class="second-action" href="'+s(r(null!=(a=null!=(a=null!=t?l(t,"contact"):t)?l(a,"secondAction"):a)?l(a,"hyperlink"):a,t))+'" title="'+s(r(null!=(a=null!=(a=null!=t?l(t,"contact"):t)?l(a,"secondAction"):a)?l(a,"title"):a,t))+'">\n\t<img src="'+s(r(null!=(a=null!=(a=null!=t?l(t,"contact"):t)?l(a,"secondAction"):a)?l(a,"icon"):a,t))+'" alt="'+s(r(null!=(a=null!=(a=null!=t?l(t,"contact"):t)?l(a,"secondAction"):a)?l(a,"title"):a,t))+'">\n</a>\n'},23:function(e,t,n,i,o){var a,r=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'\t<span class="other-actions icon-more"></span>\n\t<div class="menu popovermenu">\n\t\t<ul>\n'+(null!=(a=r(n,"each").call(null!=t?t:e.nullContext||{},null!=(a=null!=t?r(t,"contact"):t)?r(a,"actions"):a,{name:"each",hash:{},fn:e.program(24,o,0),inverse:e.noop,data:o,loc:{start:{line:55,column:3},end:{line:62,column:12}}}))?a:"")+"\t\t</ul>\n\t</div>\n"},24:function(e,t,n,i,o){var a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,l="function",c=e.escapeExpression,u=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'\t\t\t<li>\n\t\t\t\t<a href="'+c(typeof(a=null!=(a=u(n,"hyperlink")||(null!=t?u(t,"hyperlink"):t))?a:s)===l?a.call(r,{name:"hyperlink",hash:{},data:o,loc:{start:{line:57,column:13},end:{line:57,column:26}}}):a)+'">\n\t\t\t\t\t<img src="'+c(typeof(a=null!=(a=u(n,"icon")||(null!=t?u(t,"icon"):t))?a:s)===l?a.call(r,{name:"icon",hash:{},data:o,loc:{start:{line:58,column:15},end:{line:58,column:23}}}):a)+'" alt="">\n\t\t\t\t\t<span>'+c(typeof(a=null!=(a=u(n,"title")||(null!=t?u(t,"title"):t))?a:s)===l?a.call(r,{name:"title",hash:{},data:o,loc:{start:{line:59,column:11},end:{line:59,column:20}}}):a)+"</span>\n\t\t\t\t</a>\n\t\t\t</li>\n"},compiler:[8,">= 4.3.0"],main:function(e,t,n,i,o){var a,r=null!=t?t:e.nullContext||{},s=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return(null!=(a=s(n,"if").call(r,null!=(a=null!=t?s(t,"contact"):t)?s(a,"avatar"):a,{name:"if",hash:{},fn:e.program(1,o,0),inverse:e.program(7,o,0),data:o,loc:{start:{line:1,column:0},end:{line:21,column:7}}}))?a:"")+(null!=(a=s(n,"if").call(r,null!=(a=null!=t?s(t,"contact"):t)?s(a,"profileUrl"):a,{name:"if",hash:{},fn:e.program(13,o,0),inverse:e.program(16,o,0),data:o,loc:{start:{line:22,column:0},end:{line:45,column:7}}}))?a:"")+(null!=(a=s(n,"if").call(r,null!=(a=null!=t?s(t,"contact"):t)?s(a,"hasTwoActions"):a,{name:"if",hash:{},fn:e.program(21,o,0),inverse:e.noop,data:o,loc:{start:{line:46,column:0},end:{line:50,column:7}}}))?a:"")+(null!=(a=s(n,"if").call(r,null!=(a=null!=t?s(t,"contact"):t)?s(a,"hasManyActions"):a,{name:"if",hash:{},fn:e.program(23,o,0),inverse:e.noop,data:o,loc:{start:{line:51,column:0},end:{line:65,column:7}}}))?a:"")},useData:!0})},20421:function(e,t,n){var i=n(40202);e.exports=(i.default||i).template({compiler:[8,">= 4.3.0"],main:function(e,t,n,i,o){var a,r=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div class="emptycontent">\n\t<div class="icon-search"></div>\n\t<h2>'+e.escapeExpression("function"==typeof(a=null!=(a=r(n,"couldNotLoadText")||(null!=t?r(t,"couldNotLoadText"):t))?a:e.hooks.helperMissing)?a.call(null!=t?t:e.nullContext||{},{name:"couldNotLoadText",hash:{},data:o,loc:{start:{line:3,column:5},end:{line:3,column:25}}}):a)+"</h2>\n</div>\n"},useData:!0})},34083:function(e,t,n){var i=n(40202);e.exports=(i.default||i).template({1:function(e,t,n,i,o){var a,r=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div class="emptycontent">\n\t<div class="icon-search"></div>\n\t<h2>'+e.escapeExpression("function"==typeof(a=null!=(a=r(n,"noContactsFoundText")||(null!=t?r(t,"noContactsFoundText"):t))?a:e.hooks.helperMissing)?a.call(null!=t?t:e.nullContext||{},{name:"noContactsFoundText",hash:{},data:o,loc:{start:{line:4,column:5},end:{line:4,column:28}}}):a)+"</h2>\n</div>\n"},3:function(e,t,n,i,o){var a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,l="function",c=e.escapeExpression,u=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div class="footer"><a href="'+c(typeof(a=null!=(a=u(n,"contactsAppURL")||(null!=t?u(t,"contactsAppURL"):t))?a:s)===l?a.call(r,{name:"contactsAppURL",hash:{},data:o,loc:{start:{line:9,column:29},end:{line:9,column:47}}}):a)+'">'+c(typeof(a=null!=(a=u(n,"showAllContactsText")||(null!=t?u(t,"showAllContactsText"):t))?a:s)===l?a.call(r,{name:"showAllContactsText",hash:{},data:o,loc:{start:{line:9,column:49},end:{line:9,column:72}}}):a)+"</a></div>\n"},5:function(e,t,n,i,o){var a,r=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return null!=(a=r(n,"if").call(null!=t?t:e.nullContext||{},null!=t?r(t,"canInstallApp"):t,{name:"if",hash:{},fn:e.program(6,o,0),inverse:e.noop,data:o,loc:{start:{line:10,column:0},end:{line:12,column:0}}}))?a:""},6:function(e,t,n,i,o){var a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,l="function",c=e.escapeExpression,u=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div class="footer"><a href="'+c(typeof(a=null!=(a=u(n,"contactsAppMgmtURL")||(null!=t?u(t,"contactsAppMgmtURL"):t))?a:s)===l?a.call(r,{name:"contactsAppMgmtURL",hash:{},data:o,loc:{start:{line:11,column:29},end:{line:11,column:51}}}):a)+'">'+c(typeof(a=null!=(a=u(n,"contactsAppMgmtText")||(null!=t?u(t,"contactsAppMgmtText"):t))?a:s)===l?a.call(r,{name:"contactsAppMgmtText",hash:{},data:o,loc:{start:{line:11,column:53},end:{line:11,column:76}}}):a)+"</a></div>\n"},compiler:[8,">= 4.3.0"],main:function(e,t,n,i,o){var a,r=null!=t?t:e.nullContext||{},s=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return(null!=(a=s(n,"unless").call(r,null!=(a=null!=t?s(t,"contacts"):t)?s(a,"length"):a,{name:"unless",hash:{},fn:e.program(1,o,0),inverse:e.noop,data:o,loc:{start:{line:1,column:0},end:{line:6,column:11}}}))?a:"")+'<div id="contactsmenu-contacts"></div>\n'+(null!=(a=s(n,"if").call(r,null!=t?s(t,"contactsAppEnabled"):t,{name:"if",hash:{},fn:e.program(3,o,0),inverse:e.program(5,o,0),data:o,loc:{start:{line:8,column:0},end:{line:12,column:7}}}))?a:"")},useData:!0})},95386:function(e,t,n){var i=n(40202);e.exports=(i.default||i).template({compiler:[8,">= 4.3.0"],main:function(e,t,n,i,o){var a,r=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div class="emptycontent">\n\t<div class="icon-loading"></div>\n\t<h2>'+e.escapeExpression("function"==typeof(a=null!=(a=r(n,"loadingText")||(null!=t?r(t,"loadingText"):t))?a:e.hooks.helperMissing)?a.call(null!=t?t:e.nullContext||{},{name:"loadingText",hash:{},data:o,loc:{start:{line:3,column:5},end:{line:3,column:20}}}):a)+"</h2>\n</div>\n"},useData:!0})},66115:function(e,t,n){var i=n(40202);e.exports=(i.default||i).template({compiler:[8,">= 4.3.0"],main:function(e,t,n,i,o){var a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,l="function",c=e.escapeExpression,u=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<label class="hidden-visually" for="contactsmenu-search">'+c(typeof(a=null!=(a=u(n,"searchContactsText")||(null!=t?u(t,"searchContactsText"):t))?a:s)===l?a.call(r,{name:"searchContactsText",hash:{},data:o,loc:{start:{line:1,column:57},end:{line:1,column:79}}}):a)+'</label>\n<input id="contactsmenu-search" type="search" placeholder="'+c(typeof(a=null!=(a=u(n,"searchContactsText")||(null!=t?u(t,"searchContactsText"):t))?a:s)===l?a.call(r,{name:"searchContactsText",hash:{},data:o,loc:{start:{line:2,column:59},end:{line:2,column:81}}}):a)+'" value="'+c(typeof(a=null!=(a=u(n,"searchTerm")||(null!=t?u(t,"searchTerm"):t))?a:s)===l?a.call(r,{name:"searchTerm",hash:{},data:o,loc:{start:{line:2,column:90},end:{line:2,column:104}}}):a)+'">\n<div class="content">\n</div>\n'},useData:!0})},47078:function(e,t,n){var i=n(40202);e.exports=(i.default||i).template({1:function(e,t,n,i,o){var a,r=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<img src="'+e.escapeExpression("function"==typeof(a=null!=(a=r(n,"icon")||(null!=t?r(t,"icon"):t))?a:e.hooks.helperMissing)?a.call(null!=t?t:e.nullContext||{},{name:"icon",hash:{},data:o,loc:{start:{line:3,column:24},end:{line:3,column:32}}}):a)+'">'},compiler:[8,">= 4.3.0"],main:function(e,t,n,i,o){var a,r,s=null!=t?t:e.nullContext||{},l=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<li>\n\t<a href="'+u(typeof(r=null!=(r=d(n,"hyperlink")||(null!=t?d(t,"hyperlink"):t))?r:l)===c?r.call(s,{name:"hyperlink",hash:{},data:o,loc:{start:{line:2,column:10},end:{line:2,column:23}}}):r)+'">\n\t\t'+(null!=(a=d(n,"if").call(s,null!=t?d(t,"icon"):t,{name:"if",hash:{},fn:e.program(1,o,0),inverse:e.noop,data:o,loc:{start:{line:3,column:2},end:{line:3,column:41}}}))?a:"")+"\n\t\t<span>"+u(typeof(r=null!=(r=d(n,"title")||(null!=t?d(t,"title"):t))?r:l)===c?r.call(s,{name:"title",hash:{},data:o,loc:{start:{line:4,column:8},end:{line:4,column:17}}}):r)+"</span>\n\t</a>\n</li>\n"},useData:!0})},46700:function(e,t,n){var i={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":2819,"./hi.js":2819,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(i,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return i[e]}o.keys=function(){return Object.keys(i)},o.resolve=a,e.exports=o,o.id=46700},12081:function(e){"use strict";e.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoAQMAAAC2MCouAAAABlBMVEVmZmZ1dXVT6N0BAAAAUklEQVQIW8XNsQ3AIAwF0bMoKBmBURgNj8YojEBJEcXwu2yQ+p507BTeWDnozPISjPpY4O0W6CqEisUtiG/EF+IT8YG4fznihnhCPCNeEK/89D1Gd22TNOyXVAAAAABJRU5ErkJggg=="},47868:function(e){"use strict";e.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAABkAQMAAADOquA5AAAAA1BMVEUAAACnej3aAAAADklEQVQYGWMYBaOABgAAAlgAARbiVEcAAAAASUVORK5CYII="},58188:function(e){"use strict";e.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAMAAADYSUr5AAAAaVBMVEUAAAAcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkQcLkSVcboQAAAAInRSTlMAGBAyCD9gIS5RZkqgwEQnj81slZ0MMK4WLB2ZcIGF737fFn1o5AAADQJJREFUeNrsml2OwjAMBuOrfPc/5IrsAwqjHVSVdiPhETy0tuOfuGlTGE3T7EClxjdTyeYVSJ1O0fN/fBblGwvCDsyDRQETlLxIK1mkSBEOYL8o39gS7MA8wByxAJxBSmlOB1SGySUwfk0BcqvgWIiPTmV6PI97ZIKokXcIZ1g7QAJAB9yGh4j8ABRkDbAWnMqb3RYuvAvwEprKe+X/B/0g1DRN0zTNF/CBJ8Gtn4Mq5c/ySUlC+QX18vcB8kKoMm4tCQNAAaiwHi0KqFeFBSjdPLLkn4bxe8TIGBWUemk9SZL5vQV28KQs4qI6Ey4p2JTu0wGyal30PmCOttEa0HeBpmmapmma/yPnH+ZPjZ+7E2AGfsKF78kx/2FAOKBcLXT8jFBlNQ9l5gABiFT8ywjwCDmklgHd5UUYCLWDYBAK3b9ul8MCiDgTz8DMNQAmmMmqkBf1CfwfKJG3MOcDx7R3cwZw0IOnx9FcIcEJlw8Q2ntDi8P3awCle90FLrbPg9E0TdM0TUPO/y01OR2A7hddlonH5+5zLABxAC3NwANYf1ZKLSInZRvozCGlgPRC/yyAJrCgM8gaVTLPFGTyb/7SAhTcvW8zrUCi+aMAPEPzrPV52mR4B2WC/TG3w/TvAUCKARAh7CGHPcXBAEMSRAFQoPcFQADQp4KLJ7p/HjTnJSAuhl0C9TTWS0B6nP5lEQsTAJwyiLAI2hzZIjjhImj2A6R8jlw8SPQaHoZ3AMn27wN+2DnX5bZBIIwuoBvquB13xp3ef5z3f8hGKO4KqNZx67bqlKMozrLCsJ8Qguji/voNMY1Go9FoHBjkd+KwT8zUOQB5IMA9CgCPjZ86BZwZf6Yad+8yrOvV1AFD5X8cJFyVksVS+G8FC1gbUAW8SQBDEN38wQIYz3cnV+aHG0Nt0lIFYLYPirxU2X+XAA7qoMj8icprXr42/WqoTeHF3hjhwZ1gKUClwP4exxKgzkFaqvyGALUfkMfi2Mx869kZuKqLtO9AKMC+neCWIIb/QWA/0YIzZ6933gSE5awVOvhs/vDjnEaj0Wg0fi/+Hz+RkRlQz+dqE34l/mO9KqmMTj80RFMAFrxkYJoHe1kWucHzb5XHozsZ8vmdX9wbG24+csChrlax/li363u8UE51UDspQJ6dvcvRjmMJwBVLIJ/ZtQD1hLUyNH4OdgjcbgH19olMoN0WQEK9JA72gLzdB+zuXrXxgq/6APUf9vg3zwJWly+KZ8EQNfe5gwVvjQNeDl5ejDugAL8KXhqNRqPR+CEBIMiL6RLyh4jAKYrBV+yRG5/ACjGU7mDr0ckEk6gCofz6ERilsjNDic9kGTQkPvd9RBMiQKyGujO7g9khkBiyeCHUtn4hZW201t1E1zF1xuXzlbxChaHAXJeosxP6vvcrhSCnTICNAnQLaAvIBABxTwg824FEYEcAuhWuAtB5H9gKcD6f7ScwBDLDFGDMBMQ/QeIqiPMrmwrmgl8W9loAEf14gmsfgFYwr/GFhYsK4MexzwR4//69ULfA2q4TagFG4PVWACATwHkKiRJaAO8XdluAiyzxO/0/QIAgKoAnrfp1K+gh8OrV9hA4y9InnrX8kJa7BdD446vX+wK4IkFwCS2AcRz3+wCcixDdVgCRrQABCJqfjwAfP14T/NoJ+uqYNwRIa52gAgyiJvMQgX5PgLJAxoQWwJs3b6DbbQHBxeiCCrDa+wK8WWE13cQ4Te+YXCZAEM0QlyUToCsF6AoByFrAvMZvC6DlfUgUTa7r9lpAcInAjk0EItkxOU0wrubEM1PVAjIB7joEICsvxV8JEPLyinEAX41xwD2nQZhJqygExqrF89JOb9Di64RaABk1/ocQwpAI8tPA+NgXJ9mM9NJoNBqN/4avX22/B2+4Ia02gbAzf4/Ado49szIX07Pxtq0RFfXpezG4wEVyhmHYxh+CKnDqgC9TRAc6M8yfMO/aDMD2T1QBmBfAmM9P03TbLvbJ8D16PHh63Z2zzNt9eoJTET8wjBo/qAK4on6UtvD2afmMKEEiGjAI7AaMnNOi+ZkEmTJbcvvSXSay+g9DXUE1Z7VnqhYnkcHr0JEAENgVwCfUlvCNvbNRTBOGovA1/CM4WTdcra7bef+HHAblJrklzOmoP/mw1WMieE8vScBgt6vtclsY8aOgiP7WgLpfzAAB5I5+NXVMsVGeQsMZrFEfb+8nIMbyNXYpUtWLtwia6G3MgD7jDI0dfuEnzPgR0V8bQJtuqfiU0pchA1iTrTkDOP502AMAvZXk4+2toVlzk5I5xw5AxEenPgM4A9KsW2T8GsA9HldQSrHe9AvPmBj2cdYRay439t+ObMQABTsj6KNjJ08rj7gwj5ekARGOiPit7TkGGHq7+VH/2AzH/ziSTWqOn0yUE7ASsq5ZH3Iftc8AcgCRUvy8gBt826DINIBI7hKDfCVmWpMTvzyAV2b8tEJJVGI1GLBLoTyvF4GWohGFVY1DFeMAcdpbaDFXaFKnHL/oBtkBZRQX1FEkZGaQh5zuEP9ASI6BAoFAIPCZFEBidGMdX8gDQP+THB35Bdf3+1GoiKgyu+Y9wA6sUBRZxg7kwI4M2iWiCMt2ZL5FgSMFa/kES/m5Qo66KN4tB4BLDEiRU47UeHFFlTsazwaN2Pm4vSqQU+oe3HC581Gt8wBKw3VAiDoHh4roC3J+YU1U4R1XMwBAyq/QsesfOwHYADeQgpCkQEpjBlhDTeiTUQAbQDv0mcdD9bIEDAO2iw5zg1Xn+ogBk/PpIcpz2PtUBVjxK0AakIGMw9ea45cZYr8eMaCrcAYABWVsAGkDDIfzts3znHXRxU8F6x6h4egxA+Rwu3Lij2C2ARtkHVgb41rr9fg+ZgBLBahB7wEUyIYnxNHrdrvYttjTEbyjIqovN8CfAbUdPweYV5ps0E7CQKluQoplgLXrZB3b7gbbn2q0DWjbbgewGsH3oqiR/+82oOYzcIkig9Y+54tqh73hAIjIbPYi2Aa8vh5vToKMtgFF1LYtWohu8P/1AjXVAAaZkE1VlmtWSLqbYgdg3PHDjPBxN4jsxEgbgOIAG8BcxQBJf/6lhuLTBw7osFqMd0XK2MfSaEGwDDDiozhC1N1imhoH3O41K+rlRRGT7g5K0eBYjzzjEggEAtehKIhZVuiolvQ8bIDNIL7iyFd6FpboWJqCaHhK06Ahg988mGESuhYNDjQ0GxsoNaTANzbg2/R3XzEJEnEsZD3h0WiiQ9xi/TOx7ANe9goGrgGMAtz4gWRi4ibrVbwaNG/zswzYAEoBG2Pj7nsoUbrx1xw7xz82dTdVKcB6RUQrq0LziQYkOJIIA2R+8ztWRhnHP2KAslJGTzSPwdUdAyI0TTPfSJcDlgYIOCTTP47/ogyYvRHkBFBqSIEXNuDFzAD/Crj84jaA5RzIRm/FcjXaCJqS8//iXoABzUaDgWZ4d5pU9HHCAFn6CF8wmKzRsT4rqIcyIBAIBAKBeUkg5IygTrxXSFyftzc3fgg5IwBbIA3QZcqskNTq8Au2f+Wgy77S+OFtAiRkawiJhOYCYAscA9geIBneng7PrmAZYJdLA2wJjZSguUBPKQ1ge/T9URLVAJwKlgG1jElG7JfwG3DXGQDNbWXAXG0Ac1NtwMy9ADQ31AvcAAls+XQGBAKBQOATwVNfR6W+En5tlTVQ2T/R9+Qq1J0BCTjkPFkDOTlAfP/BufpGqbDuDCBUliu1cADufXSevtWJjQoN0a+EGk4BoMqo7rQBOJD4e9zdhunb+H6az84ato4PS3yjw9voOG9+z3+hPAUyhd2IAYsjOGkIDaGxuNWvFNcZ0NFA2e1CBTt8uN9+F52nb3UXoFr3gSlq82i4QFbYBjxuI5gDzb4Bcvt0QJLACv+BP7DNNwA2d3nVfCAQCAQuhK8PmNZyEtX5mtc3j/Yjrw/wazmN7nzN65tDT7PEwHJKi4mUZ2qxvhm0H3l9gNYa1ikBlHaap9LiwMug4Wr6sJzX72yPXA1veUNEVrmtNaT1JHJyNE6wJkpT/WCyPpf7NYjGylmylvcgMnVZlqw1RC3wtwZYD6TWe2/qvGGCpz6JgER9j6HT74cA+HSr45/PAHnvC8ivpw2azoCW+vgx2y7g1wzrKQMBTGSIR6OlFlpPIq8PkI0aN4Ivo40UXE0j5SONJLkannKtfBpoWXuZuxsT65tBTzH/QIbXN4/2M/9Qltd3bX1L1zsEAoFAIHA3oOdSfdP/XNsL4gOY0I9tAPwG6IU1QH4DCHRfBgAcoNDSIOhfHg0KGXBnBjx5G/DsvUAgEAgEAoFrc6tzYyXTsyARITo//gXdCwtaXGzAAvcb/0UZwPHeb/x2BmBxWkYMwAk7XpCtH7cNiE5w+eAX67vKgUszoK9/v/H/awY8TPyX9gIy/sduA6b7/7vLAc6AK4BF/3NH8f/ZKBi5AADUzjm/v2XQ+gAAAABJRU5ErkJggg=="},33178:function(e){"use strict";e.exports="data:image/png;base64,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"},40337:function(e){"use strict";e.exports="data:image/png;base64,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"},98811:function(e){"use strict";e.exports="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"},27373:function(e){"use strict";e.exports="data:image/gif;base64,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"}},o={};function a(e){var t=o[e];if(void 0!==t)return t.exports;var n=o[e]={id:e,loaded:!1,exports:{}};return i[e].call(n.exports,n,n.exports,a),n.loaded=!0,n.exports}a.m=i,a.amdD=function(){throw new Error("define cannot be used indirect")},a.amdO={},e=[],a.O=function(t,n,i,o){if(!n){var r=1/0;for(u=0;u<e.length;u++){n=e[u][0],i=e[u][1],o=e[u][2];for(var s=!0,l=0;l<n.length;l++)(!1&o||r>=o)&&Object.keys(a.O).every((function(e){return a.O[e](n[l])}))?n.splice(l--,1):(s=!1,o<r&&(r=o));if(s){e.splice(u--,1);var c=i();void 0!==c&&(t=c)}}return t}o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[n,i,o]},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,{a:t}),t},a.d=function(e,t){for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},a.j=2943,function(){a.b=document.baseURI||self.location.href;var e={2943:0};a.O.j=function(t){return 0===e[t]};var t=function(t,n){var i,o,r=n[0],s=n[1],l=n[2],c=0;if(r.some((function(t){return 0!==e[t]}))){for(i in s)a.o(s,i)&&(a.m[i]=s[i]);if(l)var u=l(a)}for(t&&t(n);c<r.length;c++)o=r[c],a.o(e,o)&&e[o]&&e[o][0](),e[o]=0;return a.O(u)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))}();var r=a.O(void 0,[7874],(function(){return a(13084)}));r=a.O(r)}();
-//# sourceMappingURL=core-main.js.map?v=4df32d9e682e4fa84498 \ No newline at end of file
+!function(){var e,i={6772:function(){Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector),Element.prototype.closest||(Element.prototype.closest=function(e){var t=this;do{if(t.matches(e))return t;t=t.parentElement||t.parentNode}while(null!==t&&1===t.nodeType);return null})},97782:function(){if("undefined"==typeof console||void 0===console.log){window.console||(window.console={});for(var e=function(){},t=["log","debug","warn","info","error","assert","time","timeEnd"],n=0;n<t.length;n++)console[t[n]]=e}},76389:function(){if("-ms-user-select"in document.documentElement.style&&navigator.userAgent.match(/IEMobile\/10\.0/)){var e=document.createElement("style");e.appendChild(document.createTextNode("@-ms-viewport{width:auto!important}")),document.getElementsByTagName("head")[0].appendChild(e)}},13084:function(e,i,o){"use strict";var a={};o.r(a),o.d(a,{deleteKey:function(){return E},getApps:function(){return b},getKeys:function(){return y},getValue:function(){return k},setValue:function(){return x}});var r={};o.r(r),o.d(r,{formatLinksPlain:function(){return pt},formatLinksRich:function(){return ft},plainToRich:function(){return ut},richToPlain:function(){return dt}});var s={};o.r(s),o.d(s,{dismiss:function(){return gt},query:function(){return ht}});var l=o(19755),c=o.n(l),u=(o(28594),o(35666),o(97782),o(6772),o(76389),o(74854)),d=o(79753),f={},p=[],h=o(64492),g=o(26932),A={updatableNotification:null,getDefaultNotificationFunction:null,setDefault:function(e){this.getDefaultNotificationFunction=e},hide:function(e,t){h.default.isFunction(e)&&(t=e,e=void 0),e?(e.each((function(){c()(this)[0].toastify?c()(this)[0].toastify.hideToast():console.error("cannot hide toast because object is not set"),this===this.updatableNotification&&(this.updatableNotification=null)})),t&&t.call(),this.getDefaultNotificationFunction&&this.getDefaultNotificationFunction()):console.error("Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification")},showHtml:function(e,t){(t=t||{}).isHTML=!0,t.timeout=t.timeout?t.timeout:g.Rl;var n=(0,g.PV)(e,t);return n.toastElement.toastify=n,c()(n.toastElement)},show:function(e,t){(t=t||{}).timeout=t.timeout?t.timeout:g.Rl;var n=(0,g.PV)(function(e){return e.toString().split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;").split('"').join("&quot;").split("'").join("&#039;")}(e),t);return n.toastElement.toastify=n,c()(n.toastElement)},showUpdate:function(e){return this.updatableNotification&&this.updatableNotification.hideToast(),this.updatableNotification=(0,g.PV)(e,{timeout:g.Rl}),this.updatableNotification.toastElement.toastify=this.updatableNotification,c()(this.updatableNotification.toastElement)},showTemporary:function(e,t){(t=t||{}).timeout=t.timeout||g.TN;var n=(0,g.PV)(e,t);return n.toastElement.toastify=n,c()(n.toastElement)},isHidden:function(){return!c()("#content").find(".toastify").length}},m=h.default.throttle((function(){A.showTemporary(t("core","Connection to server lost"))}),7e3,{trailing:!1}),v=!1,w={enableDynamicSlideToggle:function(){v=!0},showAppSidebar:function(e){(e||c()("#app-sidebar")).removeClass("disappear").show(),c()("#app-content").trigger(new(c().Event)("appresized"))},hideAppSidebar:function(e){(e||c()("#app-sidebar")).hide().addClass("disappear"),c()("#app-content").trigger(new(c().Event)("appresized"))}};function C(e,t,n){"post"!==e&&"delete"!==e||!Ge.PasswordConfirmation.requiresPasswordConfirmation()?(n=n||{},c().ajax({type:e.toUpperCase(),url:(0,d.generateOcsUrl)("apps/provisioning_api/api/v1/config/apps")+t,data:n.data||{},success:n.success,error:n.error})):Ge.PasswordConfirmation.requirePasswordConfirmation(_.bind(C,this,e,t,n))}function b(e){C("get","",e)}function y(e,t){C("get","/"+e,t)}function k(e,t,n,i){(i=i||{}).data={defaultValue:n},C("get","/"+e+"/"+t,i)}function x(e,t,n,i){(i=i||{}).data={value:n},C("post","/"+e+"/"+t,i)}function E(e,t,n){C("delete","/"+e+"/"+t,n)}var P=window.oc_appconfig||{},B={getValue:function(e,t,n,i){k(e,t,n,{success:i})},setValue:function(e,t,n){x(e,t,n)},getApps:function(e){b({success:e})},getKeys:function(e,t){y(e,{success:t})},deleteKey:function(e,t){E(e,t)}},O=void 0!==window._oc_appswebroots&&window._oc_appswebroots,T=o(72316),j=o.n(T),I=o(87240),D={create:"POST",update:"PROPPATCH",patch:"PROPPATCH",delete:"DELETE",read:"PROPFIND"};function z(e,t){if(h.default.isArray(e))return h.default.map(e,(function(e){return z(e,t)}));var n={href:e.href};return h.default.each(e.propStat,(function(e){if("HTTP/1.1 200 OK"===e.status)for(var i in e.properties){var o=i;i in t&&(o=t[i]),n[o]=e.properties[i]}})),n.id||(n.id=N(n.href)),n}function N(e){var t=e.indexOf("?");t>0&&(e=e.substr(0,t));var n,i=e.split("/");do{n=i[i.length-1],i.pop()}while(!n&&i.length>0);return n}function S(e){return e>=200&&e<=299}function M(e,t,n,i){return e.propPatch(t.url,function(e,t){var n,i={};for(n in e){var o=t[n],a=e[n];o||(console.warn('No matching DAV property for property "'+n),o=n),(h.default.isBoolean(a)||h.default.isNumber(a))&&(a=""+a),i[o]=a}return i}(n.changed,t.davProperties),i).then((function(e){S(e.status)?h.default.isFunction(t.success)&&t.success(n.toJSON()):h.default.isFunction(t.error)&&t.error(e)}))}var U=j().noConflict();Object.assign(U,{davCall:function(e,t){var n=new I.dav.Client({baseUrl:e.url,xmlNamespaces:h.default.extend({"DAV:":"d","http://owncloud.org/ns":"oc"},e.xmlNamespaces||{})});n.resolveUrl=function(){return e.url};var i=h.default.extend({"X-Requested-With":"XMLHttpRequest",requesttoken:OC.requestToken},e.headers);return"PROPFIND"===e.type?function(e,t,n,i){return e.propFind(t.url,h.default.values(t.davProperties)||[],t.depth,i).then((function(e){if(S(e.status)){if(h.default.isFunction(t.success)){var n=h.default.invert(t.davProperties),i=z(e.body,n);t.depth>0&&i.shift(),t.success(i)}}else h.default.isFunction(t.error)&&t.error(e)}))}(n,e,0,i):"PROPPATCH"===e.type?M(n,e,t,i):"MKCOL"===e.type?function(e,t,n,i){return e.request(t.type,t.url,i,null).then((function(o){S(o.status)?M(e,t,n,i):h.default.isFunction(t.error)&&t.error(o)}))}(n,e,t,i):function(e,t,n,i){return i["Content-Type"]="application/json",e.request(t.type,t.url,i,t.data).then((function(e){if(S(e.status)){if(h.default.isFunction(t.success)){if("PUT"===t.type||"POST"===t.type||"MKCOL"===t.type){var i=e.body||n.toJSON(),o=e.xhr.getResponseHeader("Content-Location");return"POST"===t.type&&o&&(i.id=N(o)),void t.success(i)}if(207===e.status){var a=h.default.invert(t.davProperties);t.success(z(e.body,a))}else t.success(e.body)}}else h.default.isFunction(t.error)&&t.error(e)}))}(n,e,t,i)},davSync:function(e){return function(t,n,i){var o={type:D[t]||t},a=n instanceof e.Collection;if("update"===t&&(n.hasInnerCollection?o.type="MKCOL":(n.usePUT||n.collection&&n.collection.usePUT)&&(o.type="PUT")),i.url||(o.url=h.default.result(n,"url")||function(){throw new Error('A "url" property or function must be specified')}()),null!=i.data||!n||"create"!==t&&"update"!==t&&"patch"!==t||(o.data=JSON.stringify(i.attrs||n.toJSON(i))),"PROPFIND"!==o.type&&(o.processData=!1),"PROPFIND"===o.type||"PROPPATCH"===o.type){var r=n.davProperties;!r&&n.model&&(r=n.model.prototype.davProperties),r&&(h.default.isFunction(r)?o.davProperties=r.call(n):o.davProperties=r),o.davProperties=h.default.extend(o.davProperties||{},i.davProperties),h.default.isUndefined(i.depth)&&(i.depth=a?1:0)}var s=i.error;i.error=function(e,t,n){i.textStatus=t,i.errorThrown=n,s&&s.call(i.context,e,t,n)};var l=i.xhr=e.davCall(h.default.extend(o,i),n);return n.trigger("request",n,l,i),l}}(U)});var L=U,F=o(76632),R=window._oc_config||{},Q=T.Model.extend({defaults:{fullName:"",lastMessage:"",actions:[],hasOneAction:!1,hasTwoActions:!1,hasManyActions:!1},initialize:function(){0===this.get("actions").length?this.set("hasOneAction",!0):1===this.get("actions").length?(this.set("hasTwoActions",!0),this.set("secondAction",this.get("actions")[0])):this.set("hasManyActions",!0)}}),G=T.Collection.extend({model:Q}),H=T.View.extend({_collection:void 0,_subViews:[],initialize:function(e){this._collection=e.collection},render:function(){var e=this;return e.$el.html(""),e._subViews=[],e._collection.forEach((function(t){var n=new K({model:t});n.render(),e.$el.append(n.$el),n.on("toggle:actionmenu",e._onChildActionMenuToggle,e),e._subViews.push(n)})),e},_onChildActionMenuToggle:function(e){this._subViews.forEach((function(t){t.trigger("parent:toggle:actionmenu",e)}))}}),K=T.View.extend({className:"contact",_template:void 0,_model:void 0,_actionMenuShown:!1,events:{"click .icon-more":"_onToggleActionsMenu"},contactTemplate:o(10944),template:function(e){return this.contactTemplate(e)},initialize:function(e){this._model=e.model,this.on("parent:toggle:actionmenu",this._onOtherActionMenuOpened,this)},render:function(){return this.$el.html(this.template({contact:this._model.toJSON()})),this.delegateEvents(),this.$("div.avatar").imageplaceholder(this._model.get("fullName")),this.$(".top-action").tooltip({placement:"left"}),this.$(".second-action").tooltip({placement:"left"}),this},_onToggleActionsMenu:function(){this._actionMenuShown=!this._actionMenuShown,this._actionMenuShown?this.$(".menu").show():this.$(".menu").hide(),this.trigger("toggle:actionmenu",this.$el)},_onOtherActionMenuOpened:function(e){this.$el.is(e)||(this._actionMenuShown=!1,this.$(".menu").hide())}}),Y=T.View.extend({_loadingTemplate:void 0,_errorTemplate:void 0,_contentTemplate:void 0,_contactsTemplate:void 0,_contacts:void 0,_searchTerm:"",events:{"input #contactsmenu-search":"_onSearch"},templates:{loading:o(95386),error:o(20421),menu:o(66115),list:o(34083)},_onSearch:h.default.debounce((function(e){var t=this.$("#contactsmenu-search").val();t!==this._searchTerm&&(this.trigger("search",this.$("#contactsmenu-search").val()),this._searchTerm=t)}),700),loadingTemplate:function(e){return this.templates.loading(e)},errorTemplate:function(e){return this.templates.error(h.default.extend({couldNotLoadText:t("core","Could not load your contacts")},e))},contentTemplate:function(e){return this.templates.menu(h.default.extend({searchContactsText:t("core","Search contacts …")},e))},contactsTemplate:function(e){return this.templates.list(h.default.extend({noContactsFoundText:t("core","No contacts found"),showAllContactsText:t("core","Show all contacts …"),contactsAppMgmtText:t("core","Install the Contacts app")},e))},initialize:function(e){this.options=e},showLoading:function(e){this.render(),this._contacts=void 0,this.$(".content").html(this.loadingTemplate({loadingText:e}))},showError:function(){this.render(),this._contacts=void 0,this.$(".content").html(this.errorTemplate())},showContacts:function(e,t){this._contacts=e.contacts,this.render({contacts:e.contacts});var n=new H({collection:e.contacts});n.render(),this.$(".content").html(this.contactsTemplate({contacts:e.contacts,searchTerm:t,contactsAppEnabled:e.contactsAppEnabled,contactsAppURL:Ge.generateUrl("/apps/contacts"),canInstallApp:Ge.isUserAdmin(),contactsAppMgmtURL:Ge.generateUrl("/settings/apps/social/contacts")})),this.$("#contactsmenu-contacts").html(n.$el)},render:function(e){var t=this.$("#contactsmenu-search").val();return this.$el.html(this.contentTemplate(e)),this.$("#contactsmenu-search").val(t),this.$("#contactsmenu-search").focus(),this}}),q=function(e){this.initialize(e)};q.prototype={$el:void 0,_$trigger:void 0,_view:void 0,_contactsPromise:void 0,initialize:function(e){this.$el=e.el,this._$trigger=e.trigger,this._view=new Y({el:this.$el}),this._view.on("search",(function(e){this._loadContacts(e)}),this),Ge.registerMenu(this._$trigger,this.$el,function(){this._toggleVisibility(!0)}.bind(this),!0),this.$el.on("beforeHide",function(){this._toggleVisibility(!1)}.bind(this))},_toggleVisibility:function(e){return e?this._loadContacts():(this.$el.html(""),Promise.resolve())},_getContacts:function(e){var t=Ge.generateUrl("/contactsmenu/contacts");return Promise.resolve(c().ajax(t,{method:"POST",data:{filter:e}}))},_loadContacts:function(e){var n=this;return n._contactsPromise||(n._contactsPromise=n._getContacts(e)),h.default.isUndefined(e)||""===e?n._view.showLoading(t("core","Loading your contacts …")):n._view.showLoading(t("core","Looking for {term} …",{term:e})),n._contactsPromise.then((function(t){t.contacts=new G(t.contacts),n._view.showContacts(t,e)}),(function(e){n._view.showError(),console.error("There was an error loading your contacts",e)})).then((function(){delete n._contactsPromise})).catch(console.error.bind(this))}};var W=q,J=document.getElementsByTagName("head")[0].getAttribute("data-user"),V=document.getElementsByTagName("head")[0].getAttribute("data-user-displayname"),Z=void 0!==J&&J;function X(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function $(e,t,n){return t&&X(e.prototype,t),n&&X(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}var ee={Search:$((function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),console.warn("OCA.Search is deprecated. Please use the unified search API instead")}))};function te(e){return te="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},te(e)}var ne,ie,oe,ae={YES_NO_BUTTONS:70,OK_BUTTONS:71,FILEPICKER_TYPE_CHOOSE:1,FILEPICKER_TYPE_MOVE:2,FILEPICKER_TYPE_COPY:3,FILEPICKER_TYPE_COPY_MOVE:4,FILEPICKER_TYPE_CUSTOM:5,dialogsCounter:0,alert:function(e,t,n,i){this.message(e,t,"alert",ae.OK_BUTTON,n,i)},info:function(e,t,n,i){this.message(e,t,"info",ae.OK_BUTTON,n,i)},confirm:function(e,t,n,i){return this.message(e,t,"notice",ae.YES_NO_BUTTONS,n,i)},confirmDestructive:function(e,t,n,i,o){return this.message(e,t,"none",n,i,void 0===o||o)},confirmHtml:function(e,t,n,i){return this.message(e,t,"notice",ae.YES_NO_BUTTONS,n,i,!0)},prompt:function(e,n,i,o,a,r){return c().when(this._getMessageTemplate()).then((function(s){var l="oc-dialog-"+ae.dialogsCounter+"-content",u="#"+l,d=s.octemplate({dialog_name:l,title:n,message:e,type:"notice"}),f=c()("<input/>");f.attr("type",r?"password":"text").attr("id",l+"-input").attr("placeholder",a);var p=c()("<label/>").attr("for",l+"-input").text(a+": ");d.append(p),d.append(f),void 0===o&&(o=!1),c()("body").append(d),void 0!==i&&(i=h.default.once(i));var g=[{text:t("core","No"),click:function(){void 0!==i&&i(!1,f.val()),c()(u).ocdialog("close")}},{text:t("core","Yes"),click:function(){void 0!==i&&i(!0,f.val()),c()(u).ocdialog("close")},defaultButton:!0}];c()(u).ocdialog({closeOnEscape:!0,modal:o,buttons:g,close:function(){void 0!==i&&i(!1,f.val())}}),f.focus(),ae.dialogsCounter++}))},filepicker:function(e,n,i,o,a,r,s,l){var u=this;if(this.filepicker.sortField="name",this.filepicker.sortOrder="asc",!this.filepicker.loading){void 0===r&&(r=this.FILEPICKER_TYPE_CHOOSE);var d=t("core","No files in here"),f=t("files","New folder");r!==this.FILEPICKER_TYPE_COPY&&r!==this.FILEPICKER_TYPE_MOVE&&r!==this.FILEPICKER_TYPE_COPY_MOVE||(d=t("core","No more subfolders in here")),this.filepicker.loading=!0,this.filepicker.filesClient=ee.Sharing&&ee.Sharing.PublicApp&&ee.Sharing.PublicApp.fileList?ee.Sharing.PublicApp.fileList.filesClient:Ge.Files.getClient(),this.filelist=null,s=s||"",l=Object.assign({allowDirectoryChooser:!1},l),c().when(this._getFilePickerTemplate()).then((function(p){u.filepicker.loading=!1,u.$filePicker&&u.$filePicker.ocdialog("close"),null==o&&(o=[]),"string"==typeof o&&(o=[o]),u.$filePicker=p.octemplate({dialog_name:"oc-dialog-filepicker-content",title:e,emptytext:d,newtext:f,nameCol:t("core","Name"),sizeCol:t("core","Size"),modifiedCol:t("core","Modified")}).data("path",s).data("multiselect",i).data("mimetype",o).data("allowDirectoryChooser",l.allowDirectoryChooser),"function"==typeof l.filter&&u.$filePicker.data("filter",l.filter),void 0===a&&(a=!1),void 0===i&&(i=!1),u.$filePicker.find("#picker-view-toggle").remove(),u.$filePicker.find("#picker-filestable").removeClass("view-grid"),c()("body").append(u.$filePicker),u.$showGridView=c()("input#picker-showgridview"),u.$showGridView.on("change",h.default.bind(u._onGridviewChange,u)),u._getGridSettings();var g=u.$filePicker.find(".actions.creatable .button-add");r!==u.FILEPICKER_TYPE_CHOOSE||l.allowDirectoryChooser||g.hide(),g.on("focus",(function(){u.$filePicker.ocdialog("setEnterCallback",(function(){event.stopImmediatePropagation(),event.preventDefault(),g.click()}))})),g.on("blur",(function(){u.$filePicker.ocdialog("unsetEnterCallback")})),Ge.registerMenu(g,u.$filePicker.find(".menu"),(function(){m.tooltip("hide"),m.focus(),u.$filePicker.ocdialog("setEnterCallback",(function(){event.stopImmediatePropagation(),event.preventDefault(),u.$filePicker.submit()}));var e=m.val(),t=e.lastIndexOf(".");-1===t&&(t=e.length),m.selectRange(0,t)}));var A=u.$filePicker.find(".filenameform"),m=A.find("input[type='text']");A.find("input[type='submit']").on("click",(function(e){e.stopImmediatePropagation(),e.preventDefault(),A.submit()}));A.on("submit",(function(e){if(e.stopPropagation(),e.preventDefault(),function(){var e=m.val();try{if(function(e){var n=e.trim();if("."===n||".."===n)throw t("files",'"{name}" is an invalid file name.',{name:e});if(0===n.length)throw t("files","File name cannot be empty.");if(-1!==n.indexOf("/"))throw t("files",'"/" is not allowed inside a file name.');if(n.match(Ge.config.blacklist_files_regex))throw t("files",'"{name}" is not an allowed filetype',{name:e});return!0}(e)){if(u.filelist.find((function(e){return e.name===this}),e))throw t("files","{newName} already exists",{newName:e},void 0,{escape:!1});return!0}}catch(e){m.attr("title",e),m.tooltip({placement:"right",trigger:"manual",container:".newFolderMenu"}),m.tooltip("_fixTitle"),m.tooltip("show"),m.addClass("error")}return!1}()){var n=m.val();u.filepicker.filesClient.createDirectory(u.$filePicker.data("path")+"/"+n).always((function(e){u._fillFilePicker(u.$filePicker.data("path")+"/"+n)})),Ge.hideMenus(),u.$filePicker.ocdialog("unsetEnterCallback"),u.$filePicker.click(),m.val(f)}})),m.keypress((function(e){13!==e.keyCode&&13!==e.which||(e.stopImmediatePropagation(),e.preventDefault(),A.submit())})),m.on("input",(function(e){m.tooltip("hide")})),u.$filePicker.ready((function(){u.$fileListHeader=u.$filePicker.find(".filelist thead tr"),u.$filelist=u.$filePicker.find(".filelist tbody"),u.$filelistContainer=u.$filePicker.find(".filelist-container"),u.$dirTree=u.$filePicker.find(".dirtree"),u.$dirTree.on("click","div:not(:last-child)",u,(function(e){u._handleTreeListSelect(e,r)})),u.$filelist.on("click","tr",(function(e){u._handlePickerClick(e,c()(this),r)})),u.$fileListHeader.on("click","a",(function(e){var t=u.$filePicker.data("path");u.filepicker.sortField=c()(e.currentTarget).data("sort"),u.filepicker.sortOrder="asc"===u.filepicker.sortOrder?"desc":"asc",u._fillFilePicker(t)})),u._fillFilePicker(s)}));var v=function(e){if(void 0!==n){var t;if(!0===i)t=[],u.$filelist.find("tr.filepicker_element_selected").each((function(e,n){t.push(u.$filePicker.data("path")+"/"+c()(n).data("entryname"))}));else{t=u.$filePicker.data("path");var o=u.$filelist.find("tr.filepicker_element_selected").data("entryname");o&&(t+="/"+o)}n(t,e),u.$filePicker.ocdialog("close")}},w=[];r===ae.FILEPICKER_TYPE_CHOOSE?w.push({text:t("core","Choose"),click:function(){v(ae.FILEPICKER_TYPE_CHOOSE)},defaultButton:!0}):r===ae.FILEPICKER_TYPE_CUSTOM?l.buttons.forEach((function(e){w.push({text:e.text,click:function(){v(e.type)},defaultButton:e.defaultButton})})):(r!==ae.FILEPICKER_TYPE_COPY&&r!==ae.FILEPICKER_TYPE_COPY_MOVE||w.push({text:t("core","Copy"),click:function(){v(ae.FILEPICKER_TYPE_COPY)},defaultButton:!1}),r!==ae.FILEPICKER_TYPE_MOVE&&r!==ae.FILEPICKER_TYPE_COPY_MOVE||w.push({text:t("core","Move"),click:function(){v(ae.FILEPICKER_TYPE_MOVE)},defaultButton:!0})),u.$filePicker.ocdialog({closeOnEscape:!0,width:600,height:500,modal:a,buttons:w,style:{buttons:"aside"},close:function(){try{c()(this).ocdialog("destroy").remove()}catch(e){}u.$filePicker=null}});var C=u.$filePicker.closest(".oc-dialog").find(".primary");-1!==u.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||u.$filePicker.data("allowDirectoryChooser")?C.prop("disabled",!1):C.prop("disabled",!0)})).fail((function(e,n){u.filepicker.loading=!1,0!==e&&alert(t("core","Error loading file picker template: {error}",{error:n}))}))}},message:function(e,n,i,o,a,r,s){return c().when(this._getMessageTemplate()).then((function(l){var u="oc-dialog-"+ae.dialogsCounter+"-content",d="#"+u,f=l.octemplate({dialog_name:u,title:n,message:e,type:i},s?{escapeFunction:""}:{});void 0===r&&(r=!1),c()("body").append(f);var p=[];switch(o){case ae.YES_NO_BUTTONS:p=[{text:t("core","No"),click:function(){void 0!==a&&a(!1),c()(d).ocdialog("close")}},{text:t("core","Yes"),click:function(){void 0!==a&&a(!0),c()(d).ocdialog("close")},defaultButton:!0}];break;case ae.OK_BUTTON:p[0]={text:t("core","OK"),click:function(){c()(d).ocdialog("close"),void 0!==a&&a()},defaultButton:!0};break;default:"object"===te(o)&&o.type===ae.YES_NO_BUTTONS&&(p=[{text:o.cancel||t("core","No"),click:function(){void 0!==a&&a(!1),c()(d).ocdialog("close")}},{text:o.confirm||t("core","Yes"),click:function(){void 0!==a&&a(!0),c()(d).ocdialog("close")},defaultButton:!0,classes:o.confirmClasses}])}c()(d).ocdialog({closeOnEscape:!0,closeCallback:function(){a&&a(!1)},modal:r,buttons:p}),ae.dialogsCounter++})).fail((function(i,o){0===i?alert(n+": "+e):alert(t("core","Error loading message template: {error}",{error:o}))}))},_fileexistsshown:!1,fileexists:function(e,i,o,a){var r=this,s=new(c().Deferred),l=function(e,t,n,i,o){i=Math.round(i),o=Math.round(o);for(var a=e.getContext("2d").getImageData(0,0,t,n),r=e.getContext("2d").getImageData(0,0,i,o),s=a.data,l=r.data,c=t/i,u=n/o,d=Math.ceil(c/2),f=Math.ceil(u/2),p=0;p<o;p++)for(var h=0;h<i;h++){for(var g=4*(h+p*i),A=0,m=0,v=0,w=0,C=0,b=0,y=0,k=(p+.5)*u,x=Math.floor(p*u);x<(p+1)*u;x++)for(var E=Math.abs(k-(x+.5))/f,P=(h+.5)*c,B=E*E,O=Math.floor(h*c);O<(h+1)*c;O++){var T=Math.abs(P-(O+.5))/d,j=Math.sqrt(B+T*T);j>=-1&&j<=1&&(A=2*j*j*j-3*j*j+1)>0&&(y+=A*s[3+(T=4*(O+x*t))],v+=A,s[T+3]<255&&(A=A*s[T+3]/250),w+=A*s[T],C+=A*s[T+1],b+=A*s[T+2],m+=A)}l[g]=w/m,l[g+1]=C/m,l[g+2]=b/m,l[g+3]=y/v}e.getContext("2d").clearRect(0,0,Math.max(t,i),Math.max(n,o)),e.width=i,e.height=o,e.getContext("2d").putImageData(r,0,0)},u=function(n,i,o){var a=n.find(".template").clone().removeClass("template").addClass("conflict"),r=a.find(".original"),s=a.find(".replacement");a.data("data",e),a.find(".filename").text(i.name),r.find(".size").text(Ge.Util.humanFileSize(i.size)),r.find(".mtime").text(Ge.Util.formatDate(i.mtime)),o.size&&o.lastModified&&(s.find(".size").text(Ge.Util.humanFileSize(o.size)),s.find(".mtime").text(Ge.Util.formatDate(o.lastModified)));var u=i.directory+"/"+i.name,d={file:u,x:96,y:96,c:i.etag,forceIcon:0},f=Files.generatePreviewUrl(d);f=f.replace(/'/g,"%27"),r.find(".icon").css({"background-image":"url('"+f+"')"}),function(e){var t=new(c().Deferred),n=e.type&&e.type.split("/").shift();if(window.FileReader&&"image"===n){var i=new FileReader;i.onload=function(e){var n=new Blob([e.target.result]);window.URL=window.URL||window.webkitURL;var i=window.URL.createObjectURL(n),o=new Image;o.src=i,o.onload=function(){var e,n,i,a,r,s,c,u=(e=o,r=document.createElement("canvas"),s=e.width,c=e.height,s>c?(i=0,n=(s-c)/2):(i=(c-s)/2,n=0),a=Math.min(s,c),r.width=a,r.height=a,r.getContext("2d").drawImage(e,n,i,a,a,0,0,a,a),l(r,a,a,96,96),r.toDataURL("image/png",.7));t.resolve(u)}},i.readAsArrayBuffer(e)}else t.reject();return t}(o).then((function(e){s.find(".icon").css("background-image","url("+e+")")}),(function(){u=Ge.MimeType.getIconUrl(o.type),s.find(".icon").css("background-image","url("+u+")")}));var p=n.find(".conflict").length;r.find("input:checkbox").attr("id","checkbox_original_"+p),s.find("input:checkbox").attr("id","checkbox_replacement_"+p),n.append(a),o.lastModified>i.mtime?s.find(".mtime").css("font-weight","bold"):o.lastModified<i.mtime&&r.find(".mtime").css("font-weight","bold"),o.size&&o.size>i.size?s.find(".size").css("font-weight","bold"):o.size&&o.size<i.size&&r.find(".size").css("font-weight","bold"),"readonly"===i.status&&(r.addClass("readonly").find('input[type="checkbox"]').prop("checked",!0).prop("disabled",!0),r.find(".message").text(t("core","read-only")))},d="oc-dialog-fileexists-content",f="#"+d;if(this._fileexistsshown){var p=c()(f+" .conflicts");u(p,i,o);var h=c()(f+" .conflict").length,g=n("core","{count} file conflict","{count} file conflicts",h,{count:h});c()(f).parent().children(".oc-dialog-title").text(g),c()(window).trigger("resize"),s.resolve()}else this._fileexistsshown=!0,c().when(this._getFileExistsTemplate()).then((function(n){var l=t("core","One file conflict"),p=n.octemplate({dialog_name:d,title:l,type:"fileexists",allnewfiles:t("core","New Files"),allexistingfiles:t("core","Already existing files"),why:t("core","Which files do you want to keep?"),what:t("core","If you select both versions, the copied file will have a number added to its name.")});if(c()("body").append(p),i&&o){var h=p.find(".conflicts");u(h,i,o)}var g=[{text:t("core","Cancel"),classes:"cancel",click:function(){void 0!==a.onCancel&&a.onCancel(e),c()(f).ocdialog("close")}},{text:t("core","Continue"),classes:"continue",click:function(){void 0!==a.onContinue&&a.onContinue(c()(f+" .conflict")),c()(f).ocdialog("close")}}];c()(f).ocdialog({width:500,closeOnEscape:!0,modal:!0,buttons:g,closeButton:null,close:function(){r._fileexistsshown=!1;try{c()(this).ocdialog("destroy").remove()}catch(e){}}}),c()(f).css("height","auto");var A=p.closest(".oc-dialog").find("button.continue");function m(){var e=p.find(".conflicts .checkbox:checked").length;A.prop("disabled",0===e)}A.prop("disabled",!0),c()(f).find(".allnewfiles").on("click",(function(){c()(f).find('.conflict .replacement input[type="checkbox"]').prop("checked",c()(this).prop("checked"))})),c()(f).find(".allexistingfiles").on("click",(function(){c()(f).find('.conflict .original:not(.readonly) input[type="checkbox"]').prop("checked",c()(this).prop("checked"))})),c()(f).find(".conflicts").on("click",".replacement,.original:not(.readonly)",(function(){var e=c()(this).find('input[type="checkbox"]');e.prop("checked",!e.prop("checked"))})),c()(f).find(".conflicts").on("click",'.replacement input[type="checkbox"],.original:not(.readonly) input[type="checkbox"]',(function(){var e=c()(this);e.prop("checked",!e.prop("checked"))})),c()(f).on("click",".replacement,.allnewfiles",(function(){var e=c()(f).find('.conflict .replacement input[type="checkbox"]:checked').length;e===c()(f+" .conflict").length?(c()(f).find(".allnewfiles").prop("checked",!0),c()(f).find(".allnewfiles + .count").text(t("core","(all selected)"))):e>0?(c()(f).find(".allnewfiles").prop("checked",!1),c()(f).find(".allnewfiles + .count").text(t("core","({count} selected)",{count:e}))):(c()(f).find(".allnewfiles").prop("checked",!1),c()(f).find(".allnewfiles + .count").text("")),m()})),c()(f).on("click",".original,.allexistingfiles",(function(){var e=c()(f).find('.conflict .original input[type="checkbox"]:checked').length;e===c()(f+" .conflict").length?(c()(f).find(".allexistingfiles").prop("checked",!0),c()(f).find(".allexistingfiles + .count").text(t("core","(all selected)"))):e>0?(c()(f).find(".allexistingfiles").prop("checked",!1),c()(f).find(".allexistingfiles + .count").text(t("core","({count} selected)",{count:e}))):(c()(f).find(".allexistingfiles").prop("checked",!1),c()(f).find(".allexistingfiles + .count").text("")),m()})),s.resolve()})).fail((function(){s.reject(),alert(t("core","Error loading file exists template"))}));return s.promise()},_getGridSettings:function(){var e=this;c().get(Ge.generateUrl("/apps/files/api/v1/showgridview"),(function(t){e.$showGridView.get(0).checked=t.gridview,e.$showGridView.next("#picker-view-toggle").removeClass("icon-toggle-filelist icon-toggle-pictures").addClass(t.gridview?"icon-toggle-filelist":"icon-toggle-pictures"),c()(".list-container").toggleClass("view-grid",t.gridview)}))},_onGridviewChange:function(){var e=this.$showGridView.is(":checked");Ge.currentUser&&c().post(Ge.generateUrl("/apps/files/api/v1/showgridview"),{show:e}),this.$showGridView.next("#picker-view-toggle").removeClass("icon-toggle-filelist icon-toggle-pictures").addClass(e?"icon-toggle-filelist":"icon-toggle-pictures"),c()(".list-container").toggleClass("view-grid",e)},_getFilePickerTemplate:function(){var e=c().Deferred();if(this.$filePickerTemplate)e.resolve(this.$filePickerTemplate);else{var t=this;c().get(Ge.filePath("core","templates","filepicker.html"),(function(n){t.$filePickerTemplate=c()(n),t.$listTmpl=t.$filePickerTemplate.find(".filelist tbody tr:first-child").detach(),e.resolve(t.$filePickerTemplate)})).fail((function(t,n,i){e.reject(t.status,i)}))}return e.promise()},_getMessageTemplate:function(){var e=c().Deferred();if(this.$messageTemplate)e.resolve(this.$messageTemplate);else{var t=this;c().get(Ge.filePath("core","templates","message.html"),(function(n){t.$messageTemplate=c()(n),e.resolve(t.$messageTemplate)})).fail((function(t,n,i){e.reject(t.status,i)}))}return e.promise()},_getFileExistsTemplate:function(){var e=c().Deferred();if(this.$fileexistsTemplate)e.resolve(this.$fileexistsTemplate);else{var t=this;c().get(Ge.filePath("files","templates","fileexists.html"),(function(n){t.$fileexistsTemplate=c()(n),e.resolve(t.$fileexistsTemplate)})).fail((function(){e.reject()}))}return e.promise()},_getFileList:function(e,t){return"string"==typeof t&&(t=[t]),c().getJSON(Ge.filePath("files","ajax","list.php"),{dir:e,mimetypes:JSON.stringify(t)})},_fillFilePicker:function(e){var n=this;this.$filelist.empty(),this.$filePicker.find(".emptycontent").hide(),this.$filelistContainer.addClass("icon-loading"),this.$filePicker.data("path",e);var i=this.$filePicker.data("mimetype"),o=this.$filePicker.data("filter");"string"==typeof i&&(i=[i]),n.$fileListHeader.find(".sort-indicator").addClass("hidden").removeClass("icon-triangle-n").removeClass("icon-triangle-s"),n.$fileListHeader.find("[data-sort="+n.filepicker.sortField+"] .sort-indicator").removeClass("hidden"),"asc"===n.filepicker.sortOrder?n.$fileListHeader.find("[data-sort="+n.filepicker.sortField+"] .sort-indicator").addClass("icon-triangle-n"):n.$fileListHeader.find("[data-sort="+n.filepicker.sortField+"] .sort-indicator").addClass("icon-triangle-s"),n.filepicker.filesClient.getFolderContents(e).then((function(a,r){n.filelist=r,i&&i.length>0&&-1===i.indexOf("*")&&(r=r.filter((function(e){return"dir"===e.type||-1!==i.indexOf(e.mimetype)}))),o&&(r=r.filter(o));var s=document.getElementById("showHiddenFiles");null===s||"1"===s.value||(r=r.filter((function(e){return!e.name.startsWith(".")})));var l={name:function(e,t){return"dir"===e.type&&"dir"!==t.type?-1:"dir"!==e.type&&"dir"===t.type?1:Ge.Util.naturalSortCompare(e.name,t.name)},size:function(e,t){return e.size-t.size},mtime:function(e,t){return e.mtime-t.mtime}},u=l[n.filepicker.sortField]||l.name;r=r.sort((function(e,t){var i=function(e){return e.tags&&e.tags.indexOf(Ge.TAG_FAVORITE)>=0};return i(e)&&!i(t)?-1:!i(e)&&i(t)?1:"asc"===n.filepicker.sortOrder?u(e,t):-u(e,t)})),n._fillSlug(),0===r.length?(n.$filePicker.find(".emptycontent").show(),n.$fileListHeader.hide()):(n.$filePicker.find(".emptycontent").hide(),n.$fileListHeader.show()),n.$filelist.empty(),c().each(r,(function(i,o){var a,r;if(o.icon=Ge.MimeType.getIconUrl(o.mimetype),void 0!==o.size&&o.size>=0?(a=Ge.Util.humanFileSize(parseInt(o.size,10),!0),r=Math.round(160-Math.pow(o.size/1048576,2))):(a=t("files","Pending"),r=80),o.name.length>=10)var s=Math.min(Math.floor(o.name.length/2),10),l=o.name.substr(0,o.name.length-s),u=o.name.substr(o.name.length-s);else l=o.name,u="";var d=n.$listTmpl.octemplate({type:o.type,dir:e,filename:o.name,filename1:l,filename2:u,date:Ge.Util.relativeModifiedDate(o.mtime),size:a,sizeColor:r,icon:o.icon});if("file"===o.type){var f={file:e+"/"+o.name,x:100,y:100},p=new Image,h=Ge.generateUrl("/core/preview.png?")+c().param(f);p.onload=function(){p.width>5&&d.find("td.filename").attr("style","background-image:url("+h+")")},p.src=h}n.$filelist.append(d)})),n.$filelistContainer.removeClass("icon-loading")}))},_fillSlug:function(){var e=this.$dirTree.find(".actions.creatable").detach();this.$dirTree.empty();var t=this;t.$dirTree.append(e);var n=this.$filePicker.data("path"),i=c()('<div data-dir="{dir}"><a>{name}</a></div>').addClass("crumb");if(n){var o=n.split("/");c().each(o,(function(e,n){if(""===(n=o.pop()))return!1;t.$dirTree.prepend(i.octemplate({dir:o.join("/")+"/"+n,name:n}))}))}i.octemplate({dir:"",name:""},{escapeFunction:null}).prependTo(this.$dirTree)},_handleTreeListSelect:function(e,t){var n=e.data,i=c()(e.target).closest(".crumb").data("dir");n._fillFilePicker(i);var o=e.target.closest(".oc-dialog"),a=c()(".primary",o);this._changeButtonsText(t,i.split(/[/]+/).pop()),-1!==this.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||this.$filePicker.data("allowDirectoryChooser")?a.prop("disabled",!1):a.prop("disabled",!0)},_handlePickerClick:function(e,t,n){var i=this.$filePicker.closest(".oc-dialog").find(".primary");"file"===t.data("type")?(!0===this.$filePicker.data("multiselect")&&e.ctrlKey||this.$filelist.find(".filepicker_element_selected").removeClass("filepicker_element_selected"),t.toggleClass("filepicker_element_selected"),i.prop("disabled",!1)):"dir"===t.data("type")&&(this._fillFilePicker(this.$filePicker.data("path")+"/"+t.data("entryname")),this._changeButtonsText(n,t.data("entryname")),-1!==this.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||this.$filePicker.data("allowDirectoryChooser")?i.prop("disabled",!1):i.prop("disabled",!0))},_changeButtonsText:function(e,n){var i=""===n?t("core","Copy"):t("core","Copy to {folder}",{folder:n}),o=""===n?t("core","Move"):t("core","Move to {folder}",{folder:n}),a=c()(".oc-dialog-buttonrow button");switch(e){case this.FILEPICKER_TYPE_CHOOSE:case this.FILEPICKER_TYPE_CUSTOM:break;case this.FILEPICKER_TYPE_COPY:a.text(i);break;case this.FILEPICKER_TYPE_MOVE:a.text(o);break;case this.FILEPICKER_TYPE_COPY_MOVE:a.eq(0).text(i),a.eq(1).text(o)}}},re=ae,se=(ne=document,ie=u.emit,oe=ne.getElementsByTagName("head")[0].getAttribute("data-requesttoken"),{getToken:function(){return oe},setToken:function(e){ie("csrf-token-update",{token:oe=e})}}),le=se.getToken,ce=se.setToken,ue=function e(t,n){var i,o,a="";if(this.typelessListeners=[],this.closed=!1,this.listeners={},n)for(i in n)a+=i+"="+encodeURIComponent(n[i])+"&";if(a+="requesttoken="+encodeURIComponent(le()),this.useFallBack||"undefined"==typeof EventSource){var r="oc_eventsource_iframe_"+e.iframeCount;e.fallBackSources[e.iframeCount]=this,this.iframe=c()("<iframe></iframe>"),this.iframe.attr("id",r),this.iframe.hide(),o="&",-1===t.indexOf("?")&&(o="?"),this.iframe.attr("src",t+o+"fallback=true&fallback_id="+e.iframeCount+"&"+a),c()("body").append(this.iframe),this.useFallBack=!0,e.iframeCount++}else o="&",-1===t.indexOf("?")&&(o="?"),this.source=new EventSource(t+o+a),this.source.onmessage=function(e){for(var t=0;t<this.typelessListeners.length;t++)this.typelessListeners[t](JSON.parse(e.data))}.bind(this);this.listen("__internal__",function(e){"close"===e&&this.close()}.bind(this))};ue.fallBackSources=[],ue.iframeCount=0,ue.fallBackCallBack=function(e,t,n){ue.fallBackSources[e].fallBackCallBack(t,n)},ue.prototype={typelessListeners:[],iframe:null,listeners:{},useFallBack:!1,fallBackCallBack:function(e,t){var n;if(!this.closed)if(e){if(void 0!==this.listeners.done)for(n=0;n<this.listeners[e].length;n++)this.listeners[e][n](t)}else for(n=0;n<this.typelessListeners.length;n++)this.typelessListeners[n](t)},lastLength:0,listen:function(e,t){t&&t.call&&(e?this.useFallBack?(this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(t)):this.source.addEventListener(e,(function(e){void 0!==e.data?t(JSON.parse(e.data)):t("")}),!1):this.typelessListeners.push(t))},close:function(){this.closed=!0,void 0!==this.source&&this.source.close()}};var de=ue,fe=o(42515),pe=null,he=function(e){if(pe){var t=pe;pe.trigger(new(c().Event)("beforeHide")),pe.slideUp(50,(function(){t.trigger(new(c().Event)("afterHide")),e&&e.apply(this,arguments)}))}c()(".menutoggle").attr("aria-expanded",!1),c()(".openedMenu").removeClass("openedMenu"),pe=null},ge=!!window._oc_isadmin,Ae=o(27856),me=o.n(Ae),ve=o(86834),we=o.n(ve),Ce=o(46488),be=o.n(Ce),ye=o(95573),ke=o.n(ye);window._oc_l10n_registry_translations=window._oc_l10n_registry_translations||{},window._oc_l10n_registry_plural_functions=window._oc_l10n_registry_plural_functions||{};var xe=function(e){return void 0!==window._oc_l10n_registry_translations[e]&&void 0!==window._oc_l10n_registry_plural_functions[e]},Ee=function(e){return{translations:window._oc_l10n_registry_translations[e]||{},pluralFunction:window._oc_l10n_registry_plural_functions[e]}};function Pe(e){return Pe="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Pe(e)}var Be={load:function(e,t){if(xe(e)||"en"===Ge.getLocale()){var n=c().Deferred(),i=n.promise();return i.then(t),n.resolve(),i}var o=this,a=(0,d.generateFilePath)(e,"l10n",Ge.getLocale()+".json");return c().get(a).then((function(t){t.translations&&o.register(e,t.translations,t.pluralForm)})).then(t)},register:function(e,t){var n,i,o;n=e,i=t,o=this._getPlural,xe(n)?function(e,t,n){window._oc_l10n_registry_translations[e]=Object.assign(window._oc_l10n_registry_translations[e],t),window._oc_l10n_registry_plural_functions[e]=n}(n,i,o):function(e,t,n){window._oc_l10n_registry_translations[e]=t,window._oc_l10n_registry_plural_functions[e]=n}(n,i,o)},_unregister:function(e){delete window._oc_l10n_registry_translations[e],delete window._oc_l10n_registry_plural_functions[e]},translate:function(e,t,n,i,o){var a=o||{};h.default.defaults(a,{escape:!0,sanitize:!0});var r=a.sanitize?me().sanitize:be(),s=a.escape?ke():be(),l=t,c=Ee(e).translations[t];return void 0!==c&&(l=c),"object"===Pe(n)||void 0!==i?r(function(e,t,n){return e.replace(/%n/g,n).replace(/{([^{}]*)}/g,(function(e,n){var i=t[n];return r("string"==typeof i||"number"==typeof i?s(i):e)}))}(l,n,i)):r(l)},translatePlural:function(e,t,n,i,o,a){var r="_"+t+"_::_"+n+"_",s=Ee(e),l=s.translations[r];if(void 0!==l){var u=l;if(c().isArray(u)){var d=s.pluralFunction(i);return this.translate(e,u[d],o,i,a)}}return 1===i?this.translate(e,t,o,i,a):this.translate(e,n,o,i,a)},_getPlural:function(e){var t=Ge.getLanguage();if("pt-BR"===t&&(t="xbr"),void 0===t||""===t)return 1===e?0:1;switch(t.length>3&&(t=t.substring(0,t.lastIndexOf("-"))),t){case"az":case"bo":case"dz":case"id":case"ja":case"jv":case"ka":case"km":case"kn":case"ko":case"ms":case"th":case"tr":case"vi":case"zh":default:return 0;case"af":case"bn":case"bg":case"ca":case"da":case"de":case"el":case"en":case"eo":case"es":case"et":case"eu":case"fa":case"fi":case"fo":case"fur":case"fy":case"gl":case"gu":case"ha":case"he":case"hu":case"is":case"it":case"ku":case"lb":case"ml":case"mn":case"mr":case"nah":case"nb":case"ne":case"nl":case"nn":case"no":case"oc":case"om":case"or":case"pa":case"pap":case"ps":case"pt":case"so":case"sq":case"sv":case"sw":case"ta":case"te":case"tk":case"ur":case"zu":return 1===e?0:1;case"am":case"bh":case"fil":case"fr":case"gun":case"hi":case"hy":case"ln":case"mg":case"nso":case"xbr":case"ti":case"wa":return 0===e||1===e?0:1;case"be":case"bs":case"hr":case"ru":case"sh":case"sr":case"uk":return e%10==1&&e%100!=11?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2;case"cs":case"sk":return 1===e?0:e>=2&&e<=4?1:2;case"ga":return 1===e?0:2===e?1:2;case"lt":return e%10==1&&e%100!=11?0:e%10>=2&&(e%100<10||e%100>=20)?1:2;case"sl":return e%100==1?0:e%100==2?1:e%100==3||e%100==4?2:3;case"mk":return e%10==1?0:1;case"mt":return 1===e?0:0===e||e%100>1&&e%100<11?1:e%100>10&&e%100<20?2:3;case"lv":return 0===e?0:e%10==1&&e%100!=11?1:2;case"pl":return 1===e?0:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?1:2;case"cy":return 1===e?0:2===e?1:8===e||11===e?2:3;case"ro":return 1===e?0:0===e||e%100>0&&e%100<20?1:2;case"ar":return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11&&e%100<=99?4:5}}},Oe=Be;we().registerHelper("t",(function(e,t){return Be.translate(e,t)}));var Te=o(9944),je={startSaving:function(e){this.startAction(e,t("core","Saving …"))},startAction:function(e,t){c()(e).text(t).removeClass("success").removeClass("error").stop(!0,!0).show()},finishedSaving:function(e,t){this.finishedAction(e,t)},finishedAction:function(e,t){"success"===t.status?this.finishedSuccess(e,t.data.message):this.finishedError(e,t.data.message)},finishedSuccess:function(e,t){c()(e).text(t).addClass("success").removeClass("error").stop(!0,!0).delay(3e3).fadeOut(900).show()},finishedError:function(e,t){c()(e).text(t).addClass("error").removeClass("success").show()}},Ie=o(30381),De=o.n(Ie),ze={callback:null,pageLoadTime:null,init:function(){c()(".password-confirm-required").on("click",h.default.bind(this.requirePasswordConfirmation,this)),this.pageLoadTime=De().now()},requiresPasswordConfirmation:function(){var e=this.pageLoadTime-1e3*window.nc_pageLoad,t=De().now()-(e+1e3*window.nc_lastLogin);return window.backendAllowsPasswordConfirmation&&t>18e5},requirePasswordConfirmation:function(e,n,i){n=void 0!==n?n:{};var o={title:t("core","Authentication required"),text:t("core","This action requires you to confirm your password"),confirm:t("core","Confirm"),label:t("core","Password"),error:""},a=h.default.extend(o,n),r=this;this.requiresPasswordConfirmation()&&Ge.dialogs.prompt(a.text,a.title,(function(e,t){e&&""!==t?r._confirmPassword(t,a):h.default.isFunction(i)&&i()}),!0,a.label,!0).then((function(){var e=c()(".oc-dialog:visible");if(e.find(".ui-icon").remove(),e.addClass("password-confirmation"),""!==a.error){var t=c()("<p></p>").addClass("msg warning").text(a.error);e.find(".oc-dialog-content").append(t)}e.find(".oc-dialog-buttonrow").addClass("aside");var n=e.find("button");n.eq(0).hide(),n.eq(1).text(a.confirm)})),this.callback=e},_confirmPassword:function(e,n){var i=this;c().ajax({url:(0,d.generateUrl)("/login/confirm"),data:{password:e},type:"POST",success:function(e){window.nc_lastLogin=e.lastLogin,h.default.isFunction(i.callback)&&i.callback()},error:function(){n.error=t("core","Failed to authenticate, try again"),Ge.PasswordConfirmation.requirePasswordConfirmation(i.callback,n)}})}},_e=window._theme||{},Ne={_handlers:[],_pushState:function(e,t,n){var i;if(i="string"==typeof e?e:Ge.buildQueryString(e),window.history.pushState){if(t=t||location.pathname+"?"+i,navigator.userAgent.toLowerCase().indexOf("firefox")>-1&&parseInt(navigator.userAgent.split("/").pop())<51)for(var o,a=document.querySelectorAll('[fill^="url(#"], [stroke^="url(#"], [filter^="url(#invert"]'),r=0,s=a.length;r<s;r++)(o=a[r]).style.fill=o.style.fill,o.style.stroke=o.style.stroke,o.removeAttribute("filter"),o.setAttribute("filter","url(#invert)");n?window.history.replaceState(e,"",t):window.history.pushState(e,"",t)}else window.location.hash="?"+i,this._cancelPop=!0},pushState:function(e,t){this._pushState(e,t,!1)},replaceState:function(e,t){this._pushState(e,t,!0)},addOnPopStateHandler:function(e){this._handlers.push(e)},_parseHashQuery:function(){var e=window.location.hash,t=e.indexOf("?");return t>=0?e.substr(t+1):e.length?e.substr(1):""},_decodeQuery:function(e){return e.replace(/\+/g," ")},parseUrlQuery:function(){var e,t=this._parseHashQuery();return t&&(e=Ge.parseQueryString(this._decodeQuery(t))),(e=h.default.extend(e||{},Ge.parseQueryString(this._decodeQuery(location.search))))||{}},_onPopState:function(e){var t;if(this._cancelPop)this._cancelPop=!1;else if(this._handlers.length){t=e&&e.state,h.default.isString(t)?t=Ge.parseQueryString(t):t||(t=this.parseUrlQuery()||{});for(var n=0;n<this._handlers.length;n++)this._handlers[n](t)}}};function Se(e){for(var t,n=[],i=0,o=-1,a=0;i<e.length;){t=e.charAt(i);var r=!a&&"."===t||t>="0"&&t<="9";r!==a&&(n[++o]="",a=r),n[o]+=t,i++}return n}var Me={History:Ne,humanFileSize:o(3378).s,computerFileSize:function(e){if("string"!=typeof e)return null;var t=e.toLowerCase().trim(),n=null,i=t.match(/^[\s+]?([0-9]*)(\.([0-9]+))?( +)?([kmgtp]?b?)$/i);return null===i?null:(n=parseFloat(t),isFinite(n)?(i[5]&&(n*={b:1,k:1024,kb:1024,mb:1048576,m:1048576,gb:1073741824,g:1073741824,tb:1099511627776,t:1099511627776,pb:0x4000000000000,p:0x4000000000000}[i[5]]),n=Math.round(n)):null)},formatDate:function(e,t){return void 0===window.TESTING&&console.warn("OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment"),t=t||"LLL",De()(e).format(t)},relativeModifiedDate:function(e){void 0===window.TESTING&&console.warn("OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment");var n=De()().diff(De()(e));return n>=0&&n<45e3?t("core","seconds ago"):De()(e).fromNow()},getScrollBarWidth:function(){if(this._scrollBarWidth)return this._scrollBarWidth;var e=document.createElement("p");e.style.width="100%",e.style.height="200px";var t=document.createElement("div");t.style.position="absolute",t.style.top="0px",t.style.left="0px",t.style.visibility="hidden",t.style.width="200px",t.style.height="150px",t.style.overflow="hidden",t.appendChild(e),document.body.appendChild(t);var n=e.offsetWidth;t.style.overflow="scroll";var i=e.offsetWidth;return n===i&&(i=t.clientWidth),document.body.removeChild(t),this._scrollBarWidth=n-i,this._scrollBarWidth},stripTime:function(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate())},naturalSortCompare:function(e,t){var n,i=Se(e),o=Se(t);for(n=0;i[n]&&o[n];n++)if(i[n]!==o[n]){var a=Number(i[n]),r=Number(o[n]);return a==i[n]&&r==o[n]?a-r:i[n].localeCompare(o[n],Ge.getLanguage())}return i.length-o.length},waitFor:function(e,t){!function n(){!0!==e()&&setTimeout(n,t)}()},isCookieSetToValue:function(e,t){for(var n=document.cookie.split(";"),i=0;i<n.length;i++){var o=n[i].split("=");if(o[0].trim()===e&&o[1].trim()===t)return!0}return!1}},Ue=window._oc_debug,Le=window._oc_webroot;if(void 0===Le){var Fe=(Le=location.pathname).indexOf("/index.php/");Le=-1!==Fe?Le.substr(0,Fe):Le.substr(0,Le.lastIndexOf("/"))}var Re,Qe=Le,Ge={coreApps:["","admin","log","core/search","core","3rdparty"],menuSpeed:50,PERMISSION_ALL:31,PERMISSION_CREATE:4,PERMISSION_DELETE:8,PERMISSION_NONE:0,PERMISSION_READ:1,PERMISSION_SHARE:16,PERMISSION_UPDATE:2,TAG_FAVORITE:"_$!<Favorite>!$_",fileIsBlacklisted:function(e){return!!e.match(R.blacklist_files_regex)},addScript:function(e,t,n){var i;console.warn("OC.addScript is deprecated, use OCP.Loader.loadScript instead");var o=(0,d.generateFilePath)(e,"js",t+".js");return f[o]?n&&n():(i=c().Deferred(),c().getScript(o,(function(){return i.resolve()})),f[o]=i),f[o]},addStyle:function(e,t){console.warn("OC.addStyle is deprecated, use OCP.Loader.loadStylesheet instead");var n=(0,d.generateFilePath)(e,"css",t+".css");-1===p.indexOf(n)&&(p.push(n),document.createStyleSheet?document.createStyleSheet(n):(t=c()('<link rel="stylesheet" type="text/css" href="'+n+'"/>'),c()("head").append(t)))},Apps:w,AppConfig:B,appConfig:P,appSettings:function(e){if(console.warn("OC.appSettings is deprecated and will be removed with Nextcloud 18"),void 0===e||void 0===e.appid)throw{name:"MissingParameter",message:"The parameter appid is missing"};var n={scriptName:"settings.php",cache:!0};c().extend(n,e);var i=c()("#appsettings");if(0===i.length)throw{name:"MissingDOMElement",message:'There has be be an element with id "appsettings" for the popup to show.'};var o=c()("#appsettings_popup");if(0===o.length&&(c()("body").prepend('<div class="popup hidden" id="appsettings_popup"></div>'),(o=c()("#appsettings_popup")).addClass(i.hasClass("topright")?"topright":"bottomleft")),o.is(":visible"))o.hide().remove();else{var a=i.hasClass("topright")?"up":"left";c().get((0,d.generateFilePath)(n.appid,"",n.scriptName),(function(e){o.html(e).ready((function(){if(o.prepend('<span class="arrow '+a+'"></span><h2>'+t("core","Settings")+'</h2><a class="close"></a>').show(),o.find(".close").bind("click",(function(){o.remove()})),void 0!==n.loadJS){var e;if(!0===n.loadJS)e="settings.js";else{if("string"!=typeof n.loadJS)throw{name:"InvalidParameter",message:'The "loadJS" parameter must be either boolean or a string.'};e=n.loadJS}n.cache&&c().ajaxSetup({cache:!0}),c().getScript((0,d.generateFilePath)(n.appid,"js",e)).fail((function(e,t,n){throw n}))}})).show()}),"html")}},appswebroots:O,Backbone:L,ContactsMenu:W,config:R,currentUser:Z,dialogs:re,EventSource:de,getCurrentUser:function(){return{uid:Z,displayName:V}},isUserAdmin:function(){return ge},L10N:Oe,_ajaxConnectionLostHandler:m,_processAjaxError:function(e){(0!==e.status||"abort"!==e.statusText&&"timeout"!==e.statusText&&!Ge._reloadCalled)&&(h.default.contains([302,303,307,401],e.status)&&Ge.currentUser?setTimeout((function(){if(!Ge._userIsNavigatingAway&&!Ge._reloadCalled){var e=0,t=setInterval((function(){A.showUpdate(n("core","Problem loading page, reloading in %n second","Problem loading page, reloading in %n seconds",5-e)),e>=5&&(clearInterval(t),Ge.reload()),e++}),1e3);Ge._reloadCalled=!0}}),100):0===e.status&&setTimeout((function(){Ge._userIsNavigatingAway||Ge._reloadCalled||Ge._ajaxConnectionLostHandler()}),100))},registerXHRForErrorProcessing:function(e){e.addEventListener&&(e.addEventListener("load",(function(){4===e.readyState&&(e.status>=200&&e.status<300||304===e.status||c()(document).trigger(new(c().Event)("ajaxError"),e))})),e.addEventListener("error",(function(){c()(document).trigger(new(c().Event)("ajaxError"),e)})))},getCapabilities:function(){return console.warn("OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities"),(0,fe.getCapabilities)()},hideMenus:he,registerMenu:function(e,t,n,i){t.addClass("menu");var o="A"===e.prop("tagName")||"BUTTON"===e.prop("tagName");e.on(o?"click.menu":"click.menu keyup.menu",(function(o){o.preventDefault(),o.key&&"Enter"!==o.key||(t.is(pe)?he():(pe&&he(),!0===i&&t.parent().addClass("openedMenu"),e.attr("aria-expanded",!0),t.slideToggle(50,n),pe=t))}))},showMenu:function(e,t,n){t.is(pe)||(he(),pe=t,t.trigger(new(c().Event)("beforeShow")),t.show(),t.trigger(new(c().Event)("afterShow")),h.default.isFunction(n)&&n())},unregisterMenu:function(e,t){t.is(pe)&&he(),e.off("click.menu").removeClass("menutoggle"),t.removeClass("menu")},basename:F.EZ,encodePath:F.Ec,dirname:F.XX,isSamePath:F.Mg,joinPaths:F.RQ,getHost:function(){return window.location.host},getHostName:function(){return window.location.hostname},getPort:function(){return window.location.port},getProtocol:function(){return window.location.protocol.split(":")[0]},getCanonicalLocale:Te.getCanonicalLocale,getLocale:function(){var e;return null!==(e=c()("html").data("locale"))&&void 0!==e?e:"en"},getLanguage:function(){return c()("html").prop("lang")},addTranslations:Oe.load,buildQueryString:function(e){return e?c().map(e,(function(e,t){var n=encodeURIComponent(t);return null!=e&&(n+="="+encodeURIComponent(e)),n})).join("&"):""},parseQueryString:function(e){var t,n,i,o={};if(!e)return null;(t=e.indexOf("?"))>=0&&(e=e.substr(t+1));for(var a=e.replace(/\+/g,"%20").split("&"),r=0;r<a.length;r++){var s=a[r];(n=(t=s.indexOf("="))>=0?[s.substr(0,t),s.substr(t+1)]:[s]).length&&(i=decodeURIComponent(n[0]))&&(o[i]=n.length>1?decodeURIComponent(n[1]):null)}return o},msg:je,Notification:A,PasswordConfirmation:ze,Plugins:{_plugins:{},register:function(e,t){var n=this._plugins[e];n||(n=this._plugins[e]=[]),n.push(t)},getPlugins:function(e){return this._plugins[e]||[]},attach:function(e,t,n){for(var i=this.getPlugins(e),o=0;o<i.length;o++)i[o].attach&&i[o].attach(t,n)},detach:function(e,t,n){for(var i=this.getPlugins(e),o=0;o<i.length;o++)i[o].detach&&i[o].detach(t,n)}},theme:_e,Util:Me,debug:Ue,filePath:d.generateFilePath,generateUrl:d.generateUrl,get:(Re=window,function(e){for(var t=e.split("."),n=t.pop(),i=0;i<t.length;i++)if(!(Re=Re[t[i]]))return!1;return Re[n]}),set:function(e){return function(t,n){for(var i=t.split("."),o=i.pop(),a=0;a<i.length;a++)e[i[a]]||(e[i[a]]={}),e=e[i[a]];return e[o]=n,n}}(window),getRootPath:d.getRootUrl,imagePath:d.imagePath,redirect:function(e){window.location=e},reload:function(){window.location.reload()},requestToken:le(),linkTo:d.linkTo,linkToOCS:function(e,t){return(0,d.generateOcsUrl)(e,{},{ocsVersion:t||1})+"/"},linkToRemote:d.generateRemoteUrl,linkToRemoteBase:function(e){return(0,d.getRootUrl)()+"/remote.php/"+e},webroot:Qe};(0,u.subscribe)("csrf-token-update",(function(e){OC.requestToken=e.token,console.info("OC.requestToken changed",e.token)}));var He=o(18037),Ke=o(16453),Ye=o(22200);function qe(e,t,n,i,o,a,r){try{var s=e[a](r),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(i,o)}function We(e){return function(){var t=this,n=arguments;return new Promise((function(i,o){var a=e.apply(t,n);function r(e){qe(a,i,o,r,s,"next",e)}function s(e){qe(a,i,o,r,s,"throw",e)}r(void 0)}))}}var Je=null,Ve=function(){var e=We(regeneratorRuntime.mark((function e(){var t,n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=(0,d.generateUrl)("/csrftoken"),e.next=3,c().get(t);case 3:return n=e.sent,e.abrupt("return",n.token);case 5:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),Ze=function(){var e=We(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,Ve();case 3:t=e.sent,ce(t),e.next=10;break;case 7:e.prev=7,e.t0=e.catch(0),console.error("session heartbeat failed",e.t0);case 10:case"end":return e.stop()}}),e,null,[[0,7]])})));return function(){return e.apply(this,arguments)}}(),Xe=function(){var e=setInterval(Ze,1e3*function(){var e=NaN;return Je.session_lifetime&&(e=Math.floor(Je.session_lifetime/2)),Math.min(86400,Math.max(60,isNaN(e)?900:e))}());return console.info("session heartbeat polling started"),e},$e=function(){var e=c()("#appmenu li"),t=c()(".header-right").outerWidth(),n=c()("header").outerWidth()-c()("#nextcloud").outerWidth()-(t>210?t:210),i=c()(window).width()<1024;i||(n*=.67);var o,a=Math.floor(n/c()(e).width());i&&a>12&&(a=12),!i&&a<12&&(a=12),e.length-1-a>=1&&a--,c()("#more-apps a").removeClass("active");for(var r=0;r<e.length-1;r++){var s=c()(e[r]).data("id");r<a?(c()(e[r]).removeClass("hidden"),c()("#apps li[data-id="+s+"]").addClass("in-header"),o=e[r]):(c()(e[r]).addClass("hidden"),c()("#apps li[data-id="+s+"]").removeClass("in-header"),a>0&&c()(e[r]).children("a").hasClass("active")&&(c()(o).addClass("hidden"),c()("#apps li[data-id="+c()(o).data("id")+"]").removeClass("in-header"),c()(e[r]).removeClass("hidden"),c()("#apps li[data-id="+s+"]").addClass("in-header")))}0===c()("#apps li:not(.in-header)").length?(c()("#more-apps").hide(),c()("#navigation").hide()):c()("#more-apps").show()},et={zh:"zh-cn",zh_Hans:"zh-cn",zh_Hans_CN:"zh-cn",zh_Hans_HK:"zh-cn",zh_Hans_MO:"zh-cn",zh_Hans_SG:"zh-cn",zh_Hant:"zh-hk",zh_Hant_HK:"zh-hk",zh_Hant_MO:"zh-mo",zh_Hant_TW:"zh-tw"},tt=Ge.getLocale();Object.prototype.hasOwnProperty.call(et,tt)&&(tt=et[tt]),De().locale(tt);var nt,it=function(){var e,t;if(window.navigator.userAgent.indexOf("Edge/")>0&&(c()("html").addClass("edge"),console.info("Legacy browser detected, applying css vars polyfill"),(0,He.Z)({watch:!0,onlyLegacy:!(/Edge\/([0-9]{2})\./i.test(navigator.userAgent)&&parseInt(/Edge\/([0-9]{2})\./i.exec(navigator.userAgent)[1])<16)})),c()(window).on("unload.main",(function(){Ge._unloadCalled=!0})),c()(window).on("beforeunload.main",(function(){setTimeout((function(){Ge._userIsNavigatingAway=!0,setTimeout((function(){Ge._unloadCalled||(Ge._userIsNavigatingAway=!1)}),1e4)}),1)})),c()(document).on("ajaxError.main",(function(e,t,n){n&&n.allowAuthErrors||Ge._processAjaxError(t)})),function(){if(function(){try{Je=(0,Ke.loadState)("core","config")}catch(e){Je=Ge.config}}(),function(){if(Je.auto_logout&&(0,Ye.getCurrentUser)()){var e=Date.now();window.addEventListener("mousemove",(function(t){e=Date.now(),localStorage.setItem("lastActive",e)})),window.addEventListener("touchstart",(function(t){e=Date.now(),localStorage.setItem("lastActive",e)})),window.addEventListener("storage",(function(t){"lastActive"===t.key&&(e=t.newValue)})),setInterval((function(){var t=Date.now()-1e3*Je.session_lifetime;if(e<t){console.info("Inactivity timout reached, logging out");var n=(0,d.generateUrl)("/logout")+"?requesttoken="+encodeURIComponent(le());window.location=n}}),1e3)}}(),void 0===Je.session_keepalive||Je.session_keepalive){var e=Xe();window.addEventListener("online",We(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return console.info("browser is online again, resuming heartbeat"),e=Xe(),t.prev=2,t.next=5,Ze();case 5:console.info("session token successfully updated after resuming network"),(0,u.emit)("networkOnline",{success:!0}),t.next=13;break;case 9:t.prev=9,t.t0=t.catch(2),console.error("could not update session token after resuming network",t.t0),(0,u.emit)("networkOnline",{success:!1});case 13:case"end":return t.stop()}}),t,null,[[2,9]])})))),window.addEventListener("offline",(function(){console.info("browser is offline, stopping heartbeat"),(0,u.emit)("networkOffline",{}),clearInterval(e),console.info("session heartbeat polling stopped")}))}else console.info("session heartbeat disabled")}(),Ge.registerMenu(c()("#expand"),c()("#expanddiv"),!1,!0),c()(document).on("mouseup.closemenus",(function(e){var t=c()(e.target);if(t.closest(".menu").length||t.closest(".menutoggle").length)return!1;Ge.hideMenus()})),function(){Object.assign(Ge,{setNavigationCounter:function(e,t){var n=document.getElementById("appmenu").querySelector('[data-id="'+e+'"] svg'),i=document.getElementById("apps").querySelector('[data-id="'+e+'"] svg');0===t?(n.classList.remove("has-unread"),i.classList.remove("has-unread"),n.getElementsByTagName("image")[0].style.mask="",i.getElementsByTagName("image")[0].style.mask=""):(n.classList.add("has-unread"),i.classList.add("has-unread"),n.getElementsByTagName("image")[0].style.mask="url(#hole)",i.getElementsByTagName("image")[0].style.mask="url(#hole)"),document.getElementById("appmenu").querySelector('[data-id="'+e+'"] .unread-counter').textContent=t,document.getElementById("apps").querySelector('[data-id="'+e+'"] .unread-counter').textContent=t}}),Ge.registerMenu(c()("#more-apps > a"),c()("#navigation"));var e=c()("#header .header-appname-container"),t=c()("#navigation"),n=c()("#appmenu");Ge.registerMenu(e,t),e.data("oldhref",e.attr("href")),e.attr("href","#"),t.hide(),t.delegate("a","click",(function(e){var t=c()(e.target);t.is("a")||(t=t.closest("a")),1!==e.which||e.ctrlKey||e.metaKey||"_blank"===t.attr("target")?Ge.hideMenus((function(){return!1})):(t.find("svg").remove(),t.find("div").remove(),t.prepend(c()("<div></div>").addClass("icon-loading-small")))})),t.delegate("a","mouseup",(function(e){2===e.which&&Ge.hideMenus((function(){return!1}))})),n.delegate("li:not(#more-apps) > a","click",(function(e){var t=c()(e.target);t.is("a")||(t=t.closest("a")),1!==e.which||e.ctrlKey||e.metaKey||0!==t.parent("#more-apps").length||"_blank"===t.attr("target")?Ge.hideMenus((function(){return!1})):(t.find("svg").remove(),t.find("div").remove(),t.prepend(c()("<div></div>").addClass(OCA.Theming&&OCA.Theming.inverted?"icon-loading-small":"icon-loading-small-dark")),window.location=t.attr("href"))}))}(),e=c()("#header #settings"),t=["user-status-menu-item__header"],e.delegate("a","click",(function(e){var n=c()(e.target);n.is("a")||(n=n.closest("a")),1!==e.which||e.ctrlKey||e.metaKey?Ge.hideMenus((function(){return!1})):t.includes(n.attr("class"))||(n.find("img").remove(),n.find("div").remove(),n.prepend(c()("<div></div>").addClass("icon-loading-small")))})),e.delegate("a","mouseup",(function(e){2===e.which&&Ge.hideMenus((function(){return!1}))})),new Ge.ContactsMenu({el:c()("#contactsmenu .menu"),trigger:c()("#contactsmenu .menutoggle")}),c()("#navigation").length&&(c()("#header #nextcloud + .menutoggle").on("click",(function(){c()("#menu-css-helper").remove();var e=c()(".header-appname + .icon-caret").offset().left-2;e>255||c()("head").append('<style id="menu-css-helper">#navigation:after { left: '+e+"px }</style>")})),c()("#header #appmenu .menutoggle").on("click",(function(){c()("#appmenu").toggleClass("menu-open"),c()("#appmenu").is(":visible")&&c()("#menu-css-helper").remove()}))),c()(window).resize($e),setTimeout($e,0),c()("#app-navigation").length&&!c()("html").hasClass("lte9")&&!c()("#app-content").hasClass("no-snapper")){var n=new Snap({element:document.getElementById("app-content"),disable:"right",maxPosition:300,minDragDistance:100});c()("#app-content").prepend('<div id="app-navigation-toggle" class="icon-menu" style="display:none" tabindex="0"></div>');var i=!1;n.on("animating",(function(){i=!0})),n.on("animated",(function(){i=!1})),n.on("start",(function(){i=!0})),n.on("end",(function(){i=!1}));var o=n.open,a=n.close,r=function(){i||"closed"!==n.state().state||o("left")},s=function(){i||"closed"===n.state().state||a()};window.TESTING||(n.open=function(){h.default.defer(r)},n.close=function(){h.default.defer(s)}),c()("#app-navigation-toggle").click((function(e){"left"!==n.state().state&&n.open()})),c()("#app-navigation-toggle").keypress((function(e){"left"===n.state().state?n.close():n.open()})),c()("#app-navigation").delegate("a, :button","click",(function(e){var t=c()(e.target);t.is(".app-navigation-noclose")||t.closest(".app-navigation-noclose").length||t.is(".app-navigation-entry-utils-menu-button")||t.closest(".app-navigation-entry-utils-menu-button").length||t.is(".add-new")||t.closest(".add-new").length||t.is("#app-settings")||t.closest("#app-settings").length||n.close()}));var l=!1,f=!0,p=!1;Ge.allowNavigationBarSlideGesture=function(){f=!0,p&&(n.enable(),l=!0,p=!1)},Ge.disallowNavigationBarSlideGesture=function(){f=!1,l&&(n.disable(!0),l=!1,p=!0)};var g=function(){c()(window).width()>1024?(n.close(),n.disable(),l=!1,p=!1):f?(n.enable(),l=!0,p=!1):p=!0};c()(window).resize(h.default.debounce(g,250)),g()}setInterval((function(){c()(".live-relative-timestamp").each((function(){var e=parseInt(c()(this).attr("data-timestamp"),10);c()(this).text(De()(e).fromNow())}))}),3e4),ze.init()},ot=(o(49226),o(41704),o(78312),o(22634),o(3682));o(33824),c().prototype.tooltip=(nt=c().prototype.tooltip,function(e){try{return nt.call(this,e)}catch(t){if(t instanceof TypeError&&"destroy"===e)return void 0===window.TESTING&&console.error("Deprecated call $.tooltip('destroy') has been deprecated and should be removed"),nt.call(this,"dispose");if(t instanceof TypeError&&"fixTitle"===e)return void 0===window.TESTING&&console.error("Deprecated call $.tooltip('fixTitle') has been deprecated and should be removed"),nt.call(this,"_fixTitle")}});var at=o(42152),rt=o.n(at),st=(o(317),o(77980),o(99560)),lt=o.n(st),ct=(o(18553),o(34140),o(75693),o(99205),o(38554),/(\s|^)(https?:\/\/)?((?:[-A-Z0-9+_]+\.)+[-A-Z]+(?:\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*)(\s|$)/gi);function ut(e){return this.formatLinksRich(e)}function dt(e){return this.formatLinksPlain(e)}function ft(e){return e.replace(ct,(function(e,t,n,i,o){var a=i;return n?"http://"===n&&(a=n+i):n="https://",t+'<a class="external" target="_blank" rel="noopener noreferrer" href="'+n+i+'">'+a+"</a>"+o}))}function pt(e){var t=c()("<div></div>").html(e);return t.find("a").each((function(){var e=c()(this);e.html(e.attr("href"))})),t.html()}function ht(e){var n=(e=e||{}).dismiss||{};c().ajax({type:"GET",url:e.url||(0,d.generateOcsUrl)("core/whatsnew?format=json"),success:e.success||function(e,i,o){!function(e,n,i,o){if(console.debug("querying Whats New data was successful: "+n),console.debug(e),200===i.status){var a,r,s,l,c=document.createElement("div");c.classList.add("popovermenu","open","whatsNewPopover","menu-left");var u=document.createElement("ul");for(var d in a=document.createElement("li"),(r=document.createElement("span")).className="menuitem",(s=document.createElement("span")).innerText=t("core","New in")+" "+e.ocs.data.product,s.className="caption",r.appendChild(s),(l=document.createElement("span")).className="icon-close",l.onclick=function(){gt(e.ocs.data.version,o)},r.appendChild(l),a.appendChild(r),u.appendChild(a),e.ocs.data.whatsNew.regular){var f=e.ocs.data.whatsNew.regular[d];a=document.createElement("li"),(r=document.createElement("span")).className="menuitem",(l=document.createElement("span")).className="icon-checkmark",r.appendChild(l),(s=document.createElement("p")).innerHTML=h.default.escape(f),r.appendChild(s),a.appendChild(r),u.appendChild(a)}h.default.isUndefined(e.ocs.data.changelogURL)||(a=document.createElement("li"),(r=document.createElement("a")).href=e.ocs.data.changelogURL,r.rel="noreferrer noopener",r.target="_blank",(l=document.createElement("span")).className="icon-link",r.appendChild(l),(s=document.createElement("span")).innerText=t("core","View changelog"),r.appendChild(s),a.appendChild(r),u.appendChild(a)),c.appendChild(u),document.body.appendChild(c)}}(e,i,o,n)},error:e.error||At})}function gt(e,t){t=t||{},c().ajax({type:"POST",url:t.url||(0,d.generateOcsUrl)("core/whatsnew"),data:{version:encodeURIComponent(e)},success:t.success||mt,error:t.error||vt}),c()(".whatsNewPopover").remove()}function At(e,t,n){console.debug("querying Whats New Data resulted in an error: "+t+n),console.debug(e)}function mt(e){}function vt(e){console.debug("dismissing Whats New data resulted in an error: "+e)}var wt,Ct,bt,yt,kt={},xt={},Et={},Pt={loadScript:function(e,t){var n=e+t;return Object.prototype.hasOwnProperty.call(xt,n)?Promise.resolve():(xt[n]=!0,new Promise((function(n,i){var o=OC.filePath(e,"js",t),a=document.createElement("script");a.src=o,a.setAttribute("nonce",btoa(OC.requestToken)),a.onload=function(){return n()},a.onerror=function(){return i(new Error("Failed to load script from ".concat(o)))},document.head.appendChild(a)})))},loadStylesheet:function(e,t){var n=e+t;return Object.prototype.hasOwnProperty.call(Et,n)?Promise.resolve():(Et[n]=!0,new Promise((function(n,i){var o=OC.filePath(e,"css",t),a=document.createElement("link");a.href=o,a.type="text/css",a.rel="stylesheet",a.onload=function(){return n()},a.onerror=function(){return i(new Error("Failed to load stylesheet from ".concat(o)))},document.head.appendChild(a)})))}},Bt={success:function(e,t){return(0,g.s$)(e,t)},warning:function(e,t){return(0,g.K2)(e,t)},error:function(e,t){return(0,g.x2)(e,t)},info:function(e,t){return(0,g.JQ)(e,t)},message:function(e,t){return(0,g.PV)(e,t)}},Ot={AppConfig:a,Collaboration:{registerType:function(e,t){kt[e]=t},trigger:function(e){return kt[e].action()},getTypes:function(){return Object.keys(kt)},getIcon:function(e){return kt[e].typeIconClass||""},getLabel:function(e){return ke()(kt[e].typeString||e)},getLink:function(e,t){return void 0!==kt[e]?kt[e].link(t):""}},Comments:r,InitialState:{loadState:Ke.loadState},Loader:Pt,Toast:Bt,WhatsNew:s},Tt=function(){void 0===window.TESTING&&console.warn.apply(console,arguments)},jt=function(e,t,n){(Array.isArray(e)?e:[e]).forEach((function(e){void 0!==window[e]&&delete window[e],Object.defineProperty(window,e,{get:function(){return Tt(n?"".concat(e," is deprecated: ").concat(n):"".concat(e," is deprecated")),t()}})}))};window._=h.default,jt(["$","jQuery"],(function(){return c()}),"The global jQuery is deprecated. It will be removed in a later versions without another warning. Please ship your own."),jt("autosize",(function(){return ot.Z}),"please ship your own, this will be removed in Nextcloud 20"),jt("Backbone",(function(){return j()}),"please ship your own, this will be removed in Nextcloud 20"),jt(["Clipboard","ClipboardJS"],(function(){return rt()}),"please ship your own, this will be removed in Nextcloud 20"),window.dav=I.dav,jt("Handlebars",(function(){return we()}),"please ship your own, this will be removed in Nextcloud 20"),jt("md5",(function(){return lt()}),"please ship your own, this will be removed in Nextcloud 20"),jt("moment",(function(){return De()}),"please ship your own, this will be removed in Nextcloud 20"),window.OC=Ge,jt("initCore",(function(){return it}),"this is an internal function"),jt("oc_appswebroots",(function(){return Ge.appswebroots}),"use OC.appswebroots instead, this will be removed in Nextcloud 20"),jt("oc_config",(function(){return Ge.config}),"use OC.config instead, this will be removed in Nextcloud 20"),jt("oc_current_user",(function(){return Ge.getCurrentUser().uid}),"use OC.getCurrentUser().uid instead, this will be removed in Nextcloud 20"),jt("oc_debug",(function(){return Ge.debug}),"use OC.debug instead, this will be removed in Nextcloud 20"),jt("oc_defaults",(function(){return Ge.theme}),"use OC.theme instead, this will be removed in Nextcloud 20"),jt("oc_isadmin",Ge.isUserAdmin,"use OC.isUserAdmin() instead, this will be removed in Nextcloud 20"),jt("oc_requesttoken",(function(){return le()}),"use OC.requestToken instead, this will be removed in Nextcloud 20"),jt("oc_webroot",(function(){return Ge.webroot}),"use OC.getRootPath() instead, this will be removed in Nextcloud 20"),jt("OCDialogs",(function(){return Ge.dialogs}),"use OC.dialogs instead, this will be removed in Nextcloud 20"),window.OCP=Ot,window.OCA=ee,c().fn.select2=(wt=c().fn.select2,Ct="select2",19,bt=wt,yt=function(){return Tt("The ".concat(Ct," library is deprecated! It will be removed in nextcloud ").concat(19,".")),bt.apply(this,arguments)},Object.assign(yt,bt),yt),window.t=h.default.bind(Ge.L10N.translate,Ge.L10N),window.n=h.default.bind(Ge.L10N.translatePlural,Ge.L10N),c().fn.avatar=function(e,t,n,i,o,a){var r=function(e){e.imageplaceholder("?"),e.css("background-color","#b9b9b9")};if(void 0!==e&&(e=String(e)),void 0!==a&&(a=String(a)),void 0===t&&(t=this.height()>0?this.height():this.data("size")>0?this.data("size"):64),this.height(t),this.width(t),void 0===e){if(void 0===this.data("user"))return void r(this);e=this.data("user")}e=String(e).replace(/\//g,"");var s,l=this;s=e===Ge.getCurrentUser().uid?Ge.generateUrl("/avatar/{user}/{size}?v={version}",{user:e,size:Math.ceil(t*window.devicePixelRatio),version:oc_userconfig.avatar.version}):Ge.generateUrl("/avatar/{user}/{size}",{user:e,size:Math.ceil(t*window.devicePixelRatio)});var c=new Image;c.onload=function(){l.clearimageplaceholder(),l.append(c),"function"==typeof o&&o()},c.onerror=function(){l.clearimageplaceholder(),void 0!==a?l.imageplaceholder(e,a):r(l),"function"==typeof o&&o()},t<32?l.addClass("icon-loading-small"):l.addClass("icon-loading"),c.width=t,c.height=t,c.src=s,c.alt=""};var It=o(47078);c().fn.contactsMenu=function(e,n,i){if(-1!==[0,4,6].indexOf(n)){var o=this;i.append('<div class="menu popovermenu menu-left hidden contactsmenu-popover"> <ul> <li> <a> <span class="icon-loading-small"></span> </a> </li> </ul></div>');var a=i.find("div.contactsmenu-popover");o.click((function(){if(!a.hasClass("hidden"))return a.addClass("hidden"),void a.hide();a.removeClass("hidden"),a.show(),a.hasClass("loaded")||(a.addClass("loaded"),c().ajax(Ge.generateUrl("/contactsmenu/findOne"),{method:"POST",data:{shareType:n,shareWith:e}}).then((function(e){a.find("ul").find("li").addClass("hidden"),(e.topAction?[e.topAction].concat(e.actions):[{hyperlink:"#",title:t("core","No action available")}]).forEach((function(e){a.find("ul").append(It(e))})),o.trigger("load")}),(function(e){var n;a.find("ul").find("li").addClass("hidden"),n=404===e.status?t("core","No action available"):t("core","Error fetching contact actions"),a.find("ul").append(It({hyperlink:"#",title:n})),o.trigger("loaderror",e)})))})),c()(document).click((function(e){var t=a.has(e.target).length>0,n=o.has(e.target).length>0;o.each((function(){c()(this).is(e.target)&&(n=!0)})),t||n||(a.addClass("hidden"),a.hide())}))}},c().fn.exists=function(){return this.length>0},c().fn.filterAttr=function(e,t){return this.filter((function(){return c()(this).attr(e)===t}))},c().widget("oc.ocdialog",{options:{width:"auto",height:"auto",closeButton:!0,closeOnEscape:!0,closeCallback:null,modal:!1},_create:function(){var e=this;this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,height:this.element[0].style.height},this.originalTitle=this.element.attr("title"),this.options.title=this.options.title||this.originalTitle,this.$dialog=c()('<div class="oc-dialog"></div>').attr({tabIndex:-1,role:"dialog"}).insertBefore(this.element),this.$dialog.append(this.element.detach()),this.element.removeAttr("title").addClass("oc-dialog-content").appendTo(this.$dialog),this.$dialog.css({display:"inline-block",position:"fixed"}),this.enterCallback=null,c()(document).on("keydown keyup",(function(t){if(t.target===e.$dialog.get(0)||0!==e.$dialog.find(c()(t.target)).length){if(27===t.keyCode&&"keydown"===t.type&&e.options.closeOnEscape)return t.stopImmediatePropagation(),e.close(),!1;if(13===t.keyCode){if(t.stopImmediatePropagation(),null!==e.enterCallback)return e.enterCallback(),t.preventDefault(),!1;if("keyup"===t.type)return t.preventDefault(),!1;if(e.$buttonrow&&0===e.$buttonrow.find(c()(t.target)).length){var n=e.$buttonrow.find("button.primary");n&&!n.prop("disabled")&&n.trigger("click")}else e.$buttonrow&&c()(t.target).trigger("click");return!1}}})),this._setOptions(this.options),this._createOverlay()},_init:function(){this.$dialog.focus(),this._trigger("open")},_setOption:function(e,t){var n=this;switch(e){case"title":if(this.$title)this.$title.text(t);else{var i=c()('<h2 class="oc-dialog-title">'+t+"</h2>");this.$title=i.prependTo(this.$dialog)}this._setSizes();break;case"buttons":if(this.$buttonrow)this.$buttonrow.empty();else{var o=c()('<div class="oc-dialog-buttonrow"></div>');this.$buttonrow=o.appendTo(this.$dialog)}1===t.length?this.$buttonrow.addClass("onebutton"):2===t.length?this.$buttonrow.addClass("twobuttons"):3===t.length&&this.$buttonrow.addClass("threebuttons"),c().each(t,(function(e,t){var i=c()("<button>").text(t.text);t.classes&&i.addClass(t.classes),t.defaultButton&&(i.addClass("primary"),n.$defaultButton=i),n.$buttonrow.append(i),i.click((function(){t.click.apply(n.element[0],arguments)}))})),this.$buttonrow.find("button").on("focus",(function(e){n.$buttonrow.find("button").removeClass("primary"),c()(this).addClass("primary")})),this._setSizes();break;case"style":void 0!==t.buttons&&this.$buttonrow.addClass(t.buttons);break;case"closeButton":if(t){var a=c()('<a class="oc-dialog-close"></a>');this.$dialog.prepend(a),a.on("click",(function(){n.options.closeCallback&&n.options.closeCallback(),n.close()}))}else this.$dialog.find(".oc-dialog-close").remove();break;case"width":this.$dialog.css("width",t);break;case"height":this.$dialog.css("height",t);break;case"close":this.closeCB=t}c().Widget.prototype._setOption.apply(this,arguments)},_setOptions:function(e){c().Widget.prototype._setOptions.apply(this,arguments)},_setSizes:function(){var e=0;this.$title&&(e+=this.$title.outerHeight(!0)),this.$buttonrow&&(e+=this.$buttonrow.outerHeight(!0)),this.element.css({height:"calc(100% - "+e+"px)"})},_createOverlay:function(){if(this.options.modal){var e=this,t=c()("#content");0===t.length&&(t=c()(".content")),this.overlay=c()("<div>").addClass("oc-dialog-dim").appendTo(t),this.overlay.on("click keydown keyup",(function(t){t.target!==e.$dialog.get(0)&&0===e.$dialog.find(c()(t.target)).length&&(t.preventDefault(),t.stopPropagation())}))}},_destroyOverlay:function(){this.options.modal&&this.overlay&&(this.overlay.off("click keydown keyup"),this.overlay.remove(),this.overlay=null)},widget:function(){return this.$dialog},setEnterCallback:function(e){this.enterCallback=e},unsetEnterCallback:function(){this.enterCallback=null},close:function(){this._destroyOverlay();var e=this;setTimeout((function(){e._trigger("close",e)}),200),e.$dialog.remove(),this.destroy()},destroy:function(){this.$title&&this.$title.remove(),this.$buttonrow&&this.$buttonrow.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),this.element.removeClass("oc-dialog-content").css(this.originalCss).detach().insertBefore(this.$dialog),this.$dialog.remove()}});var Dt={init:function(e,t,n){if(this.vars=e,this.options=c().extend({},this.options,t),this.elem=n,"function"==typeof this.options.escapeFunction)for(var i=Object.keys(this.vars),o=0;o<i.length;o++)"string"==typeof this.vars[i[o]]&&(this.vars[i[o]]=this.options.escapeFunction(this.vars[i[o]]));var a=this._build(this.vars);return c()(a)},_build:function(e){var t="text/template"===this.elem.attr("type")?this.elem.html():this.elem.get(0).outerHTML;try{return t.replace(/{([^{}]*)}/g,(function(t,n){var i=e[n];return"string"==typeof i||"number"==typeof i?i:t}))}catch(e){console.error(e,"data:",t)}},options:{escapeFunction:ke()}};c().fn.octemplate=function(e,t){if(e=e||{},this.length)return Object.create(Dt).init(e,t,this)};var zt=function(e){var t=e.toLowerCase();function n(e,t,n){this.r=e,this.g=t,this.b=n}function i(e,t,i){var o=[];o.push(t);for(var a=function(e,t){var n=new Array(3);return n[0]=(t[1].r-t[0].r)/e,n[1]=(t[1].g-t[0].g)/e,n[2]=(t[1].b-t[0].b)/e,n}(e,[t,i]),r=1;r<e;r++){var s=parseInt(t.r+a[0]*r),l=parseInt(t.g+a[1]*r),c=parseInt(t.b+a[2]*r);o.push(new n(s,l,c))}return o}null===t.match(/^([0-9a-f]{4}-?){8}$/)&&(t=lt()(t)),t=t.replace(/[^0-9a-f]/g,"");var o=new n(182,70,157),a=new n(221,203,85),r=new n(0,130,201),s=i(6,o,a),l=i(6,a,r),c=i(6,r,o);return s.concat(l).concat(c)[function(e,t){for(var n=0,i=[],o=0;o<e.length;o++)i.push(parseInt(e.charAt(o),16)%16);for(var a in i)n+=i[a];return parseInt(parseInt(n)%18)}(t)]};String.prototype.toRgb=function(){return console.warn("String.prototype.toRgb is deprecated! It will be removed in Nextcloud 22."),zt(this)},c().fn.imageplaceholder=function(e,t,n){t=t||e;var i=zt(e);this.css("background-color","rgb("+i.r+", "+i.g+", "+i.b+")");var o=this.height()||n||32;if(this.height(o),this.width(o),this.css("color","#fff"),this.css("font-weight","normal"),this.css("text-align","center"),this.css("line-height",o+"px"),this.css("font-size",.55*o+"px"),null!==e&&e.length){var a=t.replace(/\s+/g," ").trim().split(" ",2).map((function(e){return e[0].toUpperCase()})).join("");this.html(a)}},c().fn.clearimageplaceholder=function(){this.css("background-color",""),this.css("color",""),this.css("font-weight",""),this.css("text-align",""),this.css("line-height",""),this.css("font-size",""),this.html(""),this.removeClass("icon-loading"),this.removeClass("icon-loading-small")},c()(document).on("ajaxSend",(function(e,t,n){!1===n.crossDomain&&(t.setRequestHeader("requesttoken",le()),t.setRequestHeader("OCS-APIREQUEST","true"))})),c().fn.selectRange=function(e,t){return this.each((function(){if(this.setSelectionRange)this.focus(),this.setSelectionRange(e,t);else if(this.createTextRange){var n=this.createTextRange();n.collapse(!0),n.moveEnd("character",t),n.moveStart("character",e),n.select()}}))},c().fn.extend({showPassword:function(e){var t={fn:null,args:{}};t.fn=e;var n=function(e,t){t.val(e.val())},i=function(e,t,i){e.is(":checked")?(n(t,i),i.show(),t.hide()):(n(i,t),i.hide(),t.show())};return this.each((function(){var e=c()(this),o=c()(e.data("typetoggle")),a=function(e){var t=c()(e),n=c()("<input />");return n.attr({type:"text",class:t.attr("class"),style:t.attr("style"),size:t.attr("size"),name:t.attr("name")+"-clone",tabindex:t.attr("tabindex"),autocomplete:"off"}),void 0!==t.attr("placeholder")&&n.attr("placeholder",t.attr("placeholder")),n}(e);a.insertAfter(e),t.fn&&(t.args.input=e,t.args.checkbox=o,t.args.clone=a),o.bind("click",(function(){i(o,e,a)})),e.bind("keyup",(function(){n(e,a)})),a.bind("keyup",(function(){n(a,e),e.trigger("keyup")})),a.bind("blur",(function(){e.trigger("focusout")})),i(o,e,a),a.closest("form").submit((function(e){a.prop("type","password")})),t.fn&&t.fn(t.args)}))}}),c().ui.autocomplete.prototype._resizeMenu=function(){this.menu.element.outerWidth(this.element.outerWidth())};var _t=o(93379),Nt=o.n(_t),St=o(7795),Mt=o.n(St),Ut=o(90569),Lt=o.n(Ut),Ft=o(3565),Rt=o.n(Ft),Qt=o(19216),Gt=o.n(Qt),Ht=o(44589),Kt=o.n(Ht),Yt=o(12448),qt={};qt.styleTagTransform=Kt(),qt.setAttributes=Rt(),qt.insert=Lt().bind(null,"head"),qt.domAPI=Mt(),qt.insertStyleElement=Gt(),Nt()(Yt.Z,qt),Yt.Z&&Yt.Z.locals&&Yt.Z.locals;var Wt=o(72417),Jt={};Jt.styleTagTransform=Kt(),Jt.setAttributes=Rt(),Jt.insert=Lt().bind(null,"head"),Jt.domAPI=Mt(),Jt.insertStyleElement=Gt(),Nt()(Wt.Z,Jt),Wt.Z&&Wt.Z.locals&&Wt.Z.locals,c().ajaxSetup({contents:{script:!1}}),c().globalEval=function(){},window.addEventListener("DOMContentLoaded",(function(){var e;it(),0===(e=c()("[data-apps-slide-toggle]")).length&&c()("#app-navigation").addClass("without-app-settings"),c()(document).click((function(t){v&&(e=c()("[data-apps-slide-toggle]")),e.each((function(e,n){var i=c()(n).data("apps-slide-toggle"),o=c()(i);function a(){o.slideUp(4*OC.menuSpeed,(function(){o.trigger(new(c().Event)("hide"))})),o.removeClass("opened"),c()(n).removeClass("opened")}if(!o.is(":animated"))if(c()(n).is(c()(t.target).closest("[data-apps-slide-toggle]")))o.is(":visible")?a():function(){o.slideDown(4*OC.menuSpeed,(function(){o.trigger(new(c().Event)("show"))})),o.addClass("opened"),c()(n).addClass("opened");var e=c()(i+" [autofocus]");1===e.length&&e.focus()}();else{var r=c()(t.target).closest(i);o.is(":visible")&&r[0]!==o[0]&&a()}}))})),window.history.pushState?window.onpopstate=_.bind(Ge.Util.History._onPopState,Ge.Util.History):c()(window).on("hashchange",_.bind(Ge.Util.History._onPopState,Ge.Util.History))}))},12448:function(e,t,n){"use strict";var i=n(87537),o=n.n(i),a=n(23645),r=n.n(a),s=n(61667),l=n.n(s),c=new URL(n(58188),n.b),u=new URL(n(40337),n.b),d=new URL(n(33178),n.b),f=new URL(n(12081),n.b),p=new URL(n(47868),n.b),h=r()(o()),g=l()(c),A=l()(u),m=l()(d),v=l()(f),w=l()(p);h.push([e.id,".ui-widget-content{border:1px solid var(--color-border);background:var(--color-main-background) none;color:var(--color-main-text)}.ui-widget-content a{color:var(--color-main-text)}.ui-widget-header{border:none;color:var(--color-main-text);background-image:none}.ui-widget-header a{color:var(--color-main-text)}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid var(--color-border);background:var(--color-main-background) none;font-weight:bold;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #ddd;background:var(--color-main-background) none;font-weight:bold;color:var(--color-main-text)}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:var(--color-main-text)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid var(--color-primary);background:var(--color-main-background) none;font-weight:bold;color:var(--color-main-text)}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:var(--color-main-text)}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid var(--color-main-background);background:var(--color-main-background) none;color:var(--color-text-light);font-weight:600}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:var(--color-text-lighter)}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:var(--color-error);background:var(--color-error) none;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-state-default .ui-icon{background-image:url("+g+")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("+g+")}.ui-state-active .ui-icon{background-image:url("+g+")}.ui-state-highlight .ui-icon{background-image:url("+A+")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("+m+")}.ui-icon.ui-icon-none{display:none}.ui-widget-overlay{background:#666 url("+v+") 50% 50% repeat;opacity:.5}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:#000 url("+w+") 50% 50% repeat-x;opacity:.2;border-radius:5px}.ui-tabs{border:none}.ui-tabs .ui-tabs-nav.ui-corner-all{border-bottom-left-radius:0;border-bottom-right-radius:0}.ui-tabs .ui-tabs-nav{background:none;margin-bottom:15px}.ui-tabs .ui-tabs-nav .ui-state-default{border:none;border-bottom:1px solid rgba(0,0,0,0);font-weight:normal;margin:0 !important;padding:0 !important}.ui-tabs .ui-tabs-nav .ui-state-hover,.ui-tabs .ui-tabs-nav .ui-state-active{border:none;border-bottom:1px solid var(--color-main-text);color:var(--color-main-text)}.ui-tabs .ui-tabs-nav .ui-state-hover a,.ui-tabs .ui-tabs-nav .ui-state-hover a:link,.ui-tabs .ui-tabs-nav .ui-state-hover a:hover,.ui-tabs .ui-tabs-nav .ui-state-hover a:visited,.ui-tabs .ui-tabs-nav .ui-state-active a,.ui-tabs .ui-tabs-nav .ui-state-active a:link,.ui-tabs .ui-tabs-nav .ui-state-active a:hover,.ui-tabs .ui-tabs-nav .ui-state-active a:visited{color:var(--color-main-text)}.ui-tabs .ui-tabs-nav .ui-state-active{font-weight:bold}.ui-autocomplete.ui-menu{padding:0}.ui-autocomplete.ui-menu.item-count-1,.ui-autocomplete.ui-menu.item-count-2{overflow-y:hidden}.ui-autocomplete.ui-menu .ui-menu-item a{color:var(--color-text-lighter);display:block;padding:4px 4px 4px 14px}.ui-autocomplete.ui-menu .ui-menu-item a.ui-state-focus,.ui-autocomplete.ui-menu .ui-menu-item a.ui-state-active{box-shadow:inset 4px 0 var(--color-primary-element);color:var(--color-main-text)}.ui-autocomplete.ui-widget-content{background:var(--color-main-background);border-top:none}.ui-autocomplete.ui-corner-all{border-radius:0;border-bottom-left-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}.ui-autocomplete .ui-state-hover,.ui-autocomplete .ui-widget-content .ui-state-hover,.ui-autocomplete .ui-widget-header .ui-state-hover,.ui-autocomplete .ui-state-focus,.ui-autocomplete .ui-widget-content .ui-state-focus,.ui-autocomplete .ui-widget-header .ui-state-focus{border:1px solid rgba(0,0,0,0);background:inherit;color:var(--color-primary-element)}.ui-autocomplete .ui-menu-item a{border-radius:0 !important}.ui-button.primary{background-color:var(--color-primary);color:var(--color-primary-text);border:1px solid var(--color-primary-text)}.ui-draggable-handle,.ui-selectable{touch-action:pan-y}","",{version:3,sources:["webpack://./core/src/jquery/css/jquery-ui-fixes.scss"],names:[],mappings:"AAEA,mBACC,oCAAA,CACA,4CAAA,CACA,4BAAA,CAED,qBACC,4BAAA,CAED,kBACC,WAAA,CACA,4BAAA,CACA,qBAAA,CAED,oBACC,4BAAA,CAKD,2FAGC,oCAAA,CACA,4CAAA,CACA,gBAAA,CACA,UAAA,CAED,yEAGC,UAAA,CAED,0KAMC,qBAAA,CACA,4CAAA,CACA,gBAAA,CACA,4BAAA,CAED,2FAIC,4BAAA,CAED,wFAGC,qCAAA,CACA,4CAAA,CACA,gBAAA,CACA,4BAAA,CAED,sEAGC,4BAAA,CAKD,iGAGC,6CAAA,CACA,4CAAA,CACA,6BAAA,CACA,eAAA,CAED,uGAGC,+BAAA,CAED,qFAGC,yBAAA,CACA,kCAAA,CACA,UAAA,CAED,2FAGC,UAAA,CAED,oGAGC,UAAA,CAKD,2BACC,wDAAA,CAED,kDAEC,wDAAA,CAED,0BACC,wDAAA,CAED,6BACC,wDAAA,CAED,uDAEC,wDAAA,CAED,sBACC,YAAA,CAMD,mBACC,sEAAA,CACA,UAAA,CAED,kBACC,oBAAA,CACA,WAAA,CACA,wEAAA,CACA,UAAA,CACA,iBAAA,CAID,SACC,WAAA,CAEA,oCACC,2BAAA,CACA,4BAAA,CAGD,sBACC,eAAA,CACA,kBAAA,CAEA,wCACC,WAAA,CACA,qCAAA,CACA,kBAAA,CACA,mBAAA,CACA,oBAAA,CAGD,6EAEC,WAAA,CACA,8CAAA,CACA,4BAAA,CACA,0WACC,4BAAA,CAGF,uCACC,gBAAA,CAOF,yBACC,SAAA,CAIA,4EAEC,iBAAA,CAGD,yCACC,+BAAA,CACA,aAAA,CACA,wBAAA,CAEA,iHACC,mDAAA,CACA,4BAAA,CAKH,mCACC,uCAAA,CACA,eAAA,CAGD,+BACC,eAAA,CACA,8CAAA,CACA,+CAAA,CAGD,gRAKC,8BAAA,CACA,kBAAA,CACA,kCAAA,CAIA,iCACC,0BAAA,CAKH,mBACC,qCAAA,CACA,+BAAA,CACA,0CAAA,CAKD,oCAEC,kBAAA",sourcesContent:["/* Component containers\n----------------------------------*/\n.ui-widget-content {\n\tborder: 1px solid var(--color-border);\n\tbackground: var(--color-main-background) none;\n\tcolor: var(--color-main-text);\n}\n.ui-widget-content a {\n\tcolor: var(--color-main-text);\n}\n.ui-widget-header {\n\tborder: none;\n\tcolor: var(--color-main-text);\n\tbackground-image: none;\n}\n.ui-widget-header a {\n\tcolor: var(--color-main-text);\n}\n\n/* Interaction states\n----------------------------------*/\n.ui-state-default,\n.ui-widget-content .ui-state-default,\n.ui-widget-header .ui-state-default {\n\tborder: 1px solid var(--color-border);\n\tbackground: var(--color-main-background) none;\n\tfont-weight: bold;\n\tcolor: #555;\n}\n.ui-state-default a,\n.ui-state-default a:link,\n.ui-state-default a:visited {\n\tcolor: #555;\n}\n.ui-state-hover,\n.ui-widget-content .ui-state-hover,\n.ui-widget-header .ui-state-hover,\n.ui-state-focus,\n.ui-widget-content .ui-state-focus,\n.ui-widget-header .ui-state-focus {\n\tborder: 1px solid #ddd;\n\tbackground: var(--color-main-background) none;\n\tfont-weight: bold;\n\tcolor: var(--color-main-text);\n}\n.ui-state-hover a,\n.ui-state-hover a:hover,\n.ui-state-hover a:link,\n.ui-state-hover a:visited {\n\tcolor: var(--color-main-text);\n}\n.ui-state-active,\n.ui-widget-content .ui-state-active,\n.ui-widget-header .ui-state-active {\n\tborder: 1px solid var(--color-primary);\n\tbackground: var(--color-main-background) none;\n\tfont-weight: bold;\n\tcolor: var(--color-main-text);\n}\n.ui-state-active a,\n.ui-state-active a:link,\n.ui-state-active a:visited {\n\tcolor: var(--color-main-text);\n}\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-highlight,\n.ui-widget-content .ui-state-highlight,\n.ui-widget-header .ui-state-highlight {\n\tborder: 1px solid var(--color-main-background);\n\tbackground: var(--color-main-background) none;\n\tcolor: var(--color-text-light);\n\tfont-weight: 600;\n}\n.ui-state-highlight a,\n.ui-widget-content .ui-state-highlight a,\n.ui-widget-header .ui-state-highlight a {\n\tcolor: var(--color-text-lighter);\n}\n.ui-state-error,\n.ui-widget-content .ui-state-error,\n.ui-widget-header .ui-state-error {\n\tborder: var(--color-error);\n\tbackground: var(--color-error) none;\n\tcolor: #ffffff;\n}\n.ui-state-error a,\n.ui-widget-content .ui-state-error a,\n.ui-widget-header .ui-state-error a {\n\tcolor: #ffffff;\n}\n.ui-state-error-text,\n.ui-widget-content .ui-state-error-text,\n.ui-widget-header .ui-state-error-text {\n\tcolor: #ffffff;\n}\n\n/* Icons\n----------------------------------*/\n.ui-state-default .ui-icon {\n\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\n}\n.ui-state-hover .ui-icon,\n.ui-state-focus .ui-icon {\n\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\n}\n.ui-state-active .ui-icon {\n\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\n}\n.ui-state-highlight .ui-icon {\n\tbackground-image: url('images/ui-icons_ffffff_256x240.png');\n}\n.ui-state-error .ui-icon,\n.ui-state-error-text .ui-icon {\n\tbackground-image: url('images/ui-icons_ffd27a_256x240.png');\n}\n.ui-icon.ui-icon-none {\n\tdisplay: none;\n}\n\n/* Misc visuals\n----------------------------------*/\n/* Overlays */\n.ui-widget-overlay {\n\tbackground: #666666 url('images/ui-bg_diagonals-thick_20_666666_40x40.png') 50% 50% repeat;\n\topacity: .5;\n}\n.ui-widget-shadow {\n\tmargin: -5px 0 0 -5px;\n\tpadding: 5px;\n\tbackground: #000000 url('images/ui-bg_flat_10_000000_40x100.png') 50% 50% repeat-x;\n\topacity: .2;\n\tborder-radius: 5px;\n}\n\n/* Tabs customizations */\n.ui-tabs {\n\tborder: none;\n\n\t.ui-tabs-nav.ui-corner-all {\n\t\tborder-bottom-left-radius: 0;\n\t\tborder-bottom-right-radius: 0;\n\t}\n\n\t.ui-tabs-nav {\n\t\tbackground: none;\n\t\tmargin-bottom: 15px;\n\n\t\t.ui-state-default {\n\t\t\tborder: none;\n\t\t\tborder-bottom: 1px solid transparent;\n\t\t\tfont-weight: normal;\n\t\t\tmargin: 0 !important;\n\t\t\tpadding: 0 !important;\n\t\t}\n\n\t\t.ui-state-hover,\n\t\t.ui-state-active {\n\t\t\tborder: none;\n\t\t\tborder-bottom: 1px solid var(--color-main-text);\n\t\t\tcolor: var(--color-main-text);\n\t\t\ta, a:link, a:hover, a:visited {\n\t\t\t\tcolor: var(--color-main-text);\n\t\t\t}\n\t\t}\n\t\t.ui-state-active {\n\t\t\tfont-weight: bold;\n\t\t}\n\t}\n}\n\n/* Select menus */\n.ui-autocomplete {\n\t&.ui-menu {\n\t\tpadding: 0;\n\n\t\t/* scrolling starts from three items,\n\t\t * so hide overflow and scrollbars for a clean layout */\n\t\t&.item-count-1,\n\t\t&.item-count-2 {\n\t\t\toverflow-y: hidden;\n\t\t}\n\n\t\t.ui-menu-item a {\n\t\t\tcolor: var(--color-text-lighter);\n\t\t\tdisplay: block;\n\t\t\tpadding: 4px 4px 4px 14px;\n\n\t\t\t&.ui-state-focus, &.ui-state-active {\n\t\t\t\tbox-shadow: inset 4px 0 var(--color-primary-element);\n\t\t\t\tcolor: var(--color-main-text);\n\t\t\t}\n\t\t}\n\t}\n\n\t&.ui-widget-content {\n\t\tbackground: var(--color-main-background);\n\t\tborder-top: none;\n\t}\n\n\t&.ui-corner-all {\n\t\tborder-radius: 0;\n\t\tborder-bottom-left-radius: var(--border-radius);\n\t\tborder-bottom-right-radius: var(--border-radius);\n\t}\n\n\t.ui-state-hover, .ui-widget-content .ui-state-hover,\n\t.ui-widget-header .ui-state-hover,\n\t.ui-state-focus,\n\t.ui-widget-content .ui-state-focus,\n\t.ui-widget-header .ui-state-focus {\n\t\tborder: 1px solid transparent;\n\t\tbackground: inherit;\n\t\tcolor: var(--color-primary-element);\n\t}\n\n\t.ui-menu-item {\n\t\ta {\n\t\t\tborder-radius: 0 !important;\n\t\t}\n\t}\n}\n\n.ui-button.primary {\n\tbackground-color: var(--color-primary);\n\tcolor: var(--color-primary-text);\n\tborder: 1px solid var(--color-primary-text);\n}\n\n\n/* DRAGGABLE */\n.ui-draggable-handle,\n.ui-selectable {\n\ttouch-action: pan-y;\n}\n"],sourceRoot:""}]),t.Z=h},72417:function(e,t,n){"use strict";var i=n(87537),o=n.n(i),a=n(23645),r=n.n(a)()(o());r.push([e.id,".oc-dialog{background:var(--color-main-background);color:var(--color-text-light);border-radius:var(--border-radius-large);box-shadow:0 0 30px var(--color-box-shadow);padding:24px;z-index:10000;font-size:100%;box-sizing:border-box;min-width:200px;top:50%;left:50%;transform:translate(-50%, -50%);max-height:calc(100% - 20px);max-width:calc(100% - 20px);overflow:auto}.oc-dialog-title{background:var(--color-main-background)}.oc-dialog-buttonrow{position:relative;display:flex;background:rgba(0,0,0,0);right:0;bottom:0;padding:0;padding-top:10px;box-sizing:border-box;width:100%;background-image:linear-gradient(rgba(255, 255, 255, 0), var(--color-main-background))}.oc-dialog-buttonrow.twobuttons{justify-content:space-between}.oc-dialog-buttonrow.onebutton,.oc-dialog-buttonrow.twobuttons.aside{justify-content:flex-end}.oc-dialog-buttonrow button{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:44px;min-width:44px}.oc-dialog-close{position:absolute;top:0;right:0;padding:25px;background:var(--icon-close-000) no-repeat center;opacity:.5}.oc-dialog-close:hover,.oc-dialog-close:focus,.oc-dialog-close:active{opacity:1}.oc-dialog-dim{background-color:#000;opacity:.2;z-index:9999;position:fixed;top:0;left:0;width:100%;height:100%}body.theme--dark .oc-dialog-dim{opacity:.8}.oc-dialog-content{width:100%;max-width:550px}.oc-dialog.password-confirmation .oc-dialog-content{width:auto}.oc-dialog.password-confirmation .oc-dialog-content input[type=password]{width:100%}.oc-dialog.password-confirmation .oc-dialog-content label{display:none}","",{version:3,sources:["webpack://./core/src/jquery/css/jquery.ocdialog.scss"],names:[],mappings:"AAAA,WACC,uCAAA,CACA,6BAAA,CACA,wCAAA,CACA,2CAAA,CACA,YAAA,CACA,aAAA,CACA,cAAA,CACA,qBAAA,CACA,eAAA,CACA,OAAA,CACA,QAAA,CACA,+BAAA,CACA,4BAAA,CACA,2BAAA,CACA,aAAA,CAED,iBACC,uCAAA,CAED,qBACC,iBAAA,CACA,YAAA,CACA,wBAAA,CACA,OAAA,CACA,QAAA,CACA,SAAA,CACA,gBAAA,CACA,qBAAA,CACA,UAAA,CACA,sFAAA,CAEA,gCACO,6BAAA,CAGP,qEAEC,wBAAA,CAGD,4BACI,kBAAA,CACA,eAAA,CACH,sBAAA,CACA,WAAA,CACA,cAAA,CAIF,iBACC,iBAAA,CACA,KAAA,CACA,OAAA,CACA,YAAA,CACA,iDAAA,CACA,UAAA,CAEA,sEAGC,SAAA,CAIF,eACC,qBAAA,CACA,UAAA,CACA,YAAA,CACA,cAAA,CACA,KAAA,CACA,MAAA,CACA,UAAA,CACA,WAAA,CAGD,gCACC,UAAA,CAGD,mBACC,UAAA,CACA,eAAA,CAIA,oDACC,UAAA,CAEA,yEACC,UAAA,CAED,0DACC,YAAA",sourcesContent:[".oc-dialog {\n\tbackground: var(--color-main-background);\n\tcolor: var(--color-text-light);\n\tborder-radius: var(--border-radius-large);\n\tbox-shadow: 0 0 30px var(--color-box-shadow);\n\tpadding: 24px;\n\tz-index: 10000;\n\tfont-size: 100%;\n\tbox-sizing: border-box;\n\tmin-width: 200px;\n\ttop: 50%;\n\tleft: 50%;\n\ttransform: translate(-50%, -50%);\n\tmax-height: calc(100% - 20px);\n\tmax-width: calc(100% - 20px);\n\toverflow: auto;\n}\n.oc-dialog-title {\n\tbackground: var(--color-main-background);\n}\n.oc-dialog-buttonrow {\n\tposition: relative;\n\tdisplay: flex;\n\tbackground: transparent;\n\tright: 0;\n\tbottom: 0;\n\tpadding: 0;\n\tpadding-top: 10px;\n\tbox-sizing: border-box;\n\twidth: 100%;\n\tbackground-image: linear-gradient(rgba(255, 255, 255, 0.0), var(--color-main-background));\n\n\t&.twobuttons {\n justify-content: space-between;\n }\n\n\t&.onebutton,\n\t&.twobuttons.aside {\n\t\tjustify-content: flex-end;\n\t}\n\n\tbutton {\n\t white-space: nowrap;\n\t overflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\theight: 44px;\n\t\tmin-width: 44px;\n\t}\n}\n\n.oc-dialog-close {\n\tposition: absolute;\n\ttop: 0;\n\tright: 0;\n\tpadding: 25px;\n\tbackground: var(--icon-close-000) no-repeat center;\n\topacity: .5;\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\topacity: 1;\n\t}\n}\n\n.oc-dialog-dim {\n\tbackground-color: #000;\n\topacity: .2;\n\tz-index: 9999;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n}\n\nbody.theme--dark .oc-dialog-dim {\n\topacity: .8;\n}\n\n.oc-dialog-content {\n\twidth: 100%;\n\tmax-width: 550px;\n}\n\n.oc-dialog.password-confirmation {\n\t.oc-dialog-content {\n\t\twidth: auto;\n\n\t\tinput[type=password] {\n\t\t\twidth: 100%;\n\t\t}\n\t\tlabel {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),t.Z=r},10944:function(e,t,n){var i=n(40202);e.exports=(i.default||i).template({1:function(e,t,n,i,o){var a,r=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return null!=(a=r(n,"if").call(null!=t?t:e.nullContext||{},null!=(a=null!=t?r(t,"contact"):t)?r(a,"profileUrl"):a,{name:"if",hash:{},fn:e.program(2,o,0),inverse:e.program(5,o,0),data:o,loc:{start:{line:2,column:1},end:{line:10,column:8}}}))?a:""},2:function(e,t,n,i,o){var a,r=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return null!=(a=r(n,"if").call(null!=t?t:e.nullContext||{},null!=(a=null!=t?r(t,"contact"):t)?r(a,"profileTitle"):a,{name:"if",hash:{},fn:e.program(3,o,0),inverse:e.noop,data:o,loc:{start:{line:3,column:2},end:{line:7,column:9}}}))?a:""},3:function(e,t,n,i,o){var a,r=e.lambda,s=e.escapeExpression,l=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'\t\t\t<a class="profile-link--avatar" href="'+s(r(null!=(a=null!=t?l(t,"contact"):t)?l(a,"profileUrl"):a,t))+'">\n\t\t\t\t<img src="'+s(r(null!=(a=null!=t?l(t,"contact"):t)?l(a,"avatar"):a,t))+'&size=32" class="avatar" srcset="'+s(r(null!=(a=null!=t?l(t,"contact"):t)?l(a,"avatar"):a,t))+"&size=32 1x, "+s(r(null!=(a=null!=t?l(t,"contact"):t)?l(a,"avatar"):a,t))+"&size=64 2x, "+s(r(null!=(a=null!=t?l(t,"contact"):t)?l(a,"avatar"):a,t))+'&size=128 4x" alt="">\n\t\t\t</a>\n'},5:function(e,t,n,i,o){var a,r=e.lambda,s=e.escapeExpression,l=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'\t\t<img src="'+s(r(null!=(a=null!=t?l(t,"contact"):t)?l(a,"avatar"):a,t))+'&size=32" class="avatar" srcset="'+s(r(null!=(a=null!=t?l(t,"contact"):t)?l(a,"avatar"):a,t))+"&size=32 1x, "+s(r(null!=(a=null!=t?l(t,"contact"):t)?l(a,"avatar"):a,t))+"&size=64 2x, "+s(r(null!=(a=null!=t?l(t,"contact"):t)?l(a,"avatar"):a,t))+'&size=128 4x" alt="">\n'},7:function(e,t,n,i,o){var a,r=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return null!=(a=r(n,"if").call(null!=t?t:e.nullContext||{},null!=(a=null!=t?r(t,"contact"):t)?r(a,"profileUrl"):a,{name:"if",hash:{},fn:e.program(8,o,0),inverse:e.program(11,o,0),data:o,loc:{start:{line:12,column:1},end:{line:20,column:8}}}))?a:""},8:function(e,t,n,i,o){var a,r=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return null!=(a=r(n,"if").call(null!=t?t:e.nullContext||{},null!=(a=null!=t?r(t,"contact"):t)?r(a,"profileTitle"):a,{name:"if",hash:{},fn:e.program(9,o,0),inverse:e.noop,data:o,loc:{start:{line:13,column:2},end:{line:17,column:9}}}))?a:""},9:function(e,t,n,i,o){var a,r=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'\t\t\t<a class="profile-link--avatar" href="'+e.escapeExpression(e.lambda(null!=(a=null!=t?r(t,"contact"):t)?r(a,"profileUrl"):a,t))+'">\n\t\t\t\t<div class="avatar"></div>\n\t\t\t</a>\n'},11:function(e,t,n,i,o){return'\t\t<div class="avatar"></div>\n'},13:function(e,t,n,i,o){var a,r=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return null!=(a=r(n,"if").call(null!=t?t:e.nullContext||{},null!=(a=null!=t?r(t,"contact"):t)?r(a,"profileTitle"):a,{name:"if",hash:{},fn:e.program(14,o,0),inverse:e.noop,data:o,loc:{start:{line:23,column:1},end:{line:29,column:8}}}))?a:""},14:function(e,t,n,i,o){var a,r=e.lambda,s=e.escapeExpression,l=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'\t\t<a class="body profile-link--full-name" href="'+s(r(null!=(a=null!=t?l(t,"contact"):t)?l(a,"profileUrl"):a,t))+'">\n\t\t\t<div class="full-name">'+s(r(null!=(a=null!=t?l(t,"contact"):t)?l(a,"fullName"):a,t))+'</div>\n\t\t\t<div class="last-message">'+s(r(null!=(a=null!=t?l(t,"contact"):t)?l(a,"lastMessage"):a,t))+'</div>\n\t\t\t<div class="email-address">'+s(r(null!=(a=null!=t?l(t,"contact"):t)?l(a,"emailAddresses"):a,t))+"</div>\n\t\t</a>\n"},16:function(e,t,n,i,o){var a,r=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return null!=(a=r(n,"if").call(null!=t?t:e.nullContext||{},null!=(a=null!=t?r(t,"contact"):t)?r(a,"topAction"):a,{name:"if",hash:{},fn:e.program(17,o,0),inverse:e.program(19,o,0),data:o,loc:{start:{line:30,column:0},end:{line:45,column:0}}}))?a:""},17:function(e,t,n,i,o){var a,r=e.lambda,s=e.escapeExpression,l=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'\t<a class="body" href="'+s(r(null!=(a=null!=(a=null!=t?l(t,"contact"):t)?l(a,"topAction"):a)?l(a,"hyperlink"):a,t))+'"> \n\t\t<div class="full-name">'+s(r(null!=(a=null!=t?l(t,"contact"):t)?l(a,"fullName"):a,t))+'</div>\n\t\t<div class="last-message">'+s(r(null!=(a=null!=t?l(t,"contact"):t)?l(a,"lastMessage"):a,t))+'</div>\n\t\t<div class="email-address">'+s(r(null!=(a=null!=t?l(t,"contact"):t)?l(a,"emailAddresses"):a,t))+'</div>\n\t</a>\n \t<a class="top-action" href="'+s(r(null!=(a=null!=(a=null!=t?l(t,"contact"):t)?l(a,"topAction"):a)?l(a,"hyperlink"):a,t))+'" title="'+s(r(null!=(a=null!=(a=null!=t?l(t,"contact"):t)?l(a,"topAction"):a)?l(a,"title"):a,t))+'">\n \t\t<img src="'+s(r(null!=(a=null!=(a=null!=t?l(t,"contact"):t)?l(a,"topAction"):a)?l(a,"icon"):a,t))+'" alt="'+s(r(null!=(a=null!=(a=null!=t?l(t,"contact"):t)?l(a,"topAction"):a)?l(a,"title"):a,t))+'">\n\t</a>\n'},19:function(e,t,n,i,o){var a,r=e.lambda,s=e.escapeExpression,l=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'\t<div class="body">\n\t\t<div class="full-name">'+s(r(null!=(a=null!=t?l(t,"contact"):t)?l(a,"fullName"):a,t))+'</div>\n\t\t<div class="last-message">'+s(r(null!=(a=null!=t?l(t,"contact"):t)?l(a,"lastMessage"):a,t))+'</div>\n\t\t<div class="email-address">'+s(r(null!=(a=null!=t?l(t,"contact"):t)?l(a,"emailAddresses"):a,t))+"</div>\n\t</div>\n"},21:function(e,t,n,i,o){var a,r=e.lambda,s=e.escapeExpression,l=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<a class="second-action" href="'+s(r(null!=(a=null!=(a=null!=t?l(t,"contact"):t)?l(a,"secondAction"):a)?l(a,"hyperlink"):a,t))+'" title="'+s(r(null!=(a=null!=(a=null!=t?l(t,"contact"):t)?l(a,"secondAction"):a)?l(a,"title"):a,t))+'">\n\t<img src="'+s(r(null!=(a=null!=(a=null!=t?l(t,"contact"):t)?l(a,"secondAction"):a)?l(a,"icon"):a,t))+'" alt="'+s(r(null!=(a=null!=(a=null!=t?l(t,"contact"):t)?l(a,"secondAction"):a)?l(a,"title"):a,t))+'">\n</a>\n'},23:function(e,t,n,i,o){var a,r=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'\t<span class="other-actions icon-more"></span>\n\t<div class="menu popovermenu">\n\t\t<ul>\n'+(null!=(a=r(n,"each").call(null!=t?t:e.nullContext||{},null!=(a=null!=t?r(t,"contact"):t)?r(a,"actions"):a,{name:"each",hash:{},fn:e.program(24,o,0),inverse:e.noop,data:o,loc:{start:{line:55,column:3},end:{line:62,column:12}}}))?a:"")+"\t\t</ul>\n\t</div>\n"},24:function(e,t,n,i,o){var a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,l="function",c=e.escapeExpression,u=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'\t\t\t<li>\n\t\t\t\t<a href="'+c(typeof(a=null!=(a=u(n,"hyperlink")||(null!=t?u(t,"hyperlink"):t))?a:s)===l?a.call(r,{name:"hyperlink",hash:{},data:o,loc:{start:{line:57,column:13},end:{line:57,column:26}}}):a)+'">\n\t\t\t\t\t<img src="'+c(typeof(a=null!=(a=u(n,"icon")||(null!=t?u(t,"icon"):t))?a:s)===l?a.call(r,{name:"icon",hash:{},data:o,loc:{start:{line:58,column:15},end:{line:58,column:23}}}):a)+'" alt="">\n\t\t\t\t\t<span>'+c(typeof(a=null!=(a=u(n,"title")||(null!=t?u(t,"title"):t))?a:s)===l?a.call(r,{name:"title",hash:{},data:o,loc:{start:{line:59,column:11},end:{line:59,column:20}}}):a)+"</span>\n\t\t\t\t</a>\n\t\t\t</li>\n"},compiler:[8,">= 4.3.0"],main:function(e,t,n,i,o){var a,r=null!=t?t:e.nullContext||{},s=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return(null!=(a=s(n,"if").call(r,null!=(a=null!=t?s(t,"contact"):t)?s(a,"avatar"):a,{name:"if",hash:{},fn:e.program(1,o,0),inverse:e.program(7,o,0),data:o,loc:{start:{line:1,column:0},end:{line:21,column:7}}}))?a:"")+(null!=(a=s(n,"if").call(r,null!=(a=null!=t?s(t,"contact"):t)?s(a,"profileUrl"):a,{name:"if",hash:{},fn:e.program(13,o,0),inverse:e.program(16,o,0),data:o,loc:{start:{line:22,column:0},end:{line:45,column:7}}}))?a:"")+(null!=(a=s(n,"if").call(r,null!=(a=null!=t?s(t,"contact"):t)?s(a,"hasTwoActions"):a,{name:"if",hash:{},fn:e.program(21,o,0),inverse:e.noop,data:o,loc:{start:{line:46,column:0},end:{line:50,column:7}}}))?a:"")+(null!=(a=s(n,"if").call(r,null!=(a=null!=t?s(t,"contact"):t)?s(a,"hasManyActions"):a,{name:"if",hash:{},fn:e.program(23,o,0),inverse:e.noop,data:o,loc:{start:{line:51,column:0},end:{line:65,column:7}}}))?a:"")},useData:!0})},20421:function(e,t,n){var i=n(40202);e.exports=(i.default||i).template({compiler:[8,">= 4.3.0"],main:function(e,t,n,i,o){var a,r=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div class="emptycontent">\n\t<div class="icon-search"></div>\n\t<h2>'+e.escapeExpression("function"==typeof(a=null!=(a=r(n,"couldNotLoadText")||(null!=t?r(t,"couldNotLoadText"):t))?a:e.hooks.helperMissing)?a.call(null!=t?t:e.nullContext||{},{name:"couldNotLoadText",hash:{},data:o,loc:{start:{line:3,column:5},end:{line:3,column:25}}}):a)+"</h2>\n</div>\n"},useData:!0})},34083:function(e,t,n){var i=n(40202);e.exports=(i.default||i).template({1:function(e,t,n,i,o){var a,r=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div class="emptycontent">\n\t<div class="icon-search"></div>\n\t<h2>'+e.escapeExpression("function"==typeof(a=null!=(a=r(n,"noContactsFoundText")||(null!=t?r(t,"noContactsFoundText"):t))?a:e.hooks.helperMissing)?a.call(null!=t?t:e.nullContext||{},{name:"noContactsFoundText",hash:{},data:o,loc:{start:{line:4,column:5},end:{line:4,column:28}}}):a)+"</h2>\n</div>\n"},3:function(e,t,n,i,o){var a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,l="function",c=e.escapeExpression,u=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div class="footer"><a href="'+c(typeof(a=null!=(a=u(n,"contactsAppURL")||(null!=t?u(t,"contactsAppURL"):t))?a:s)===l?a.call(r,{name:"contactsAppURL",hash:{},data:o,loc:{start:{line:9,column:29},end:{line:9,column:47}}}):a)+'">'+c(typeof(a=null!=(a=u(n,"showAllContactsText")||(null!=t?u(t,"showAllContactsText"):t))?a:s)===l?a.call(r,{name:"showAllContactsText",hash:{},data:o,loc:{start:{line:9,column:49},end:{line:9,column:72}}}):a)+"</a></div>\n"},5:function(e,t,n,i,o){var a,r=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return null!=(a=r(n,"if").call(null!=t?t:e.nullContext||{},null!=t?r(t,"canInstallApp"):t,{name:"if",hash:{},fn:e.program(6,o,0),inverse:e.noop,data:o,loc:{start:{line:10,column:0},end:{line:12,column:0}}}))?a:""},6:function(e,t,n,i,o){var a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,l="function",c=e.escapeExpression,u=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div class="footer"><a href="'+c(typeof(a=null!=(a=u(n,"contactsAppMgmtURL")||(null!=t?u(t,"contactsAppMgmtURL"):t))?a:s)===l?a.call(r,{name:"contactsAppMgmtURL",hash:{},data:o,loc:{start:{line:11,column:29},end:{line:11,column:51}}}):a)+'">'+c(typeof(a=null!=(a=u(n,"contactsAppMgmtText")||(null!=t?u(t,"contactsAppMgmtText"):t))?a:s)===l?a.call(r,{name:"contactsAppMgmtText",hash:{},data:o,loc:{start:{line:11,column:53},end:{line:11,column:76}}}):a)+"</a></div>\n"},compiler:[8,">= 4.3.0"],main:function(e,t,n,i,o){var a,r=null!=t?t:e.nullContext||{},s=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return(null!=(a=s(n,"unless").call(r,null!=(a=null!=t?s(t,"contacts"):t)?s(a,"length"):a,{name:"unless",hash:{},fn:e.program(1,o,0),inverse:e.noop,data:o,loc:{start:{line:1,column:0},end:{line:6,column:11}}}))?a:"")+'<div id="contactsmenu-contacts"></div>\n'+(null!=(a=s(n,"if").call(r,null!=t?s(t,"contactsAppEnabled"):t,{name:"if",hash:{},fn:e.program(3,o,0),inverse:e.program(5,o,0),data:o,loc:{start:{line:8,column:0},end:{line:12,column:7}}}))?a:"")},useData:!0})},95386:function(e,t,n){var i=n(40202);e.exports=(i.default||i).template({compiler:[8,">= 4.3.0"],main:function(e,t,n,i,o){var a,r=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<div class="emptycontent">\n\t<div class="icon-loading"></div>\n\t<h2>'+e.escapeExpression("function"==typeof(a=null!=(a=r(n,"loadingText")||(null!=t?r(t,"loadingText"):t))?a:e.hooks.helperMissing)?a.call(null!=t?t:e.nullContext||{},{name:"loadingText",hash:{},data:o,loc:{start:{line:3,column:5},end:{line:3,column:20}}}):a)+"</h2>\n</div>\n"},useData:!0})},66115:function(e,t,n){var i=n(40202);e.exports=(i.default||i).template({compiler:[8,">= 4.3.0"],main:function(e,t,n,i,o){var a,r=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,l="function",c=e.escapeExpression,u=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<label class="hidden-visually" for="contactsmenu-search">'+c(typeof(a=null!=(a=u(n,"searchContactsText")||(null!=t?u(t,"searchContactsText"):t))?a:s)===l?a.call(r,{name:"searchContactsText",hash:{},data:o,loc:{start:{line:1,column:57},end:{line:1,column:79}}}):a)+'</label>\n<input id="contactsmenu-search" type="search" placeholder="'+c(typeof(a=null!=(a=u(n,"searchContactsText")||(null!=t?u(t,"searchContactsText"):t))?a:s)===l?a.call(r,{name:"searchContactsText",hash:{},data:o,loc:{start:{line:2,column:59},end:{line:2,column:81}}}):a)+'" value="'+c(typeof(a=null!=(a=u(n,"searchTerm")||(null!=t?u(t,"searchTerm"):t))?a:s)===l?a.call(r,{name:"searchTerm",hash:{},data:o,loc:{start:{line:2,column:90},end:{line:2,column:104}}}):a)+'">\n<div class="content">\n</div>\n'},useData:!0})},47078:function(e,t,n){var i=n(40202);e.exports=(i.default||i).template({1:function(e,t,n,i,o){var a,r=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<img src="'+e.escapeExpression("function"==typeof(a=null!=(a=r(n,"icon")||(null!=t?r(t,"icon"):t))?a:e.hooks.helperMissing)?a.call(null!=t?t:e.nullContext||{},{name:"icon",hash:{},data:o,loc:{start:{line:3,column:24},end:{line:3,column:32}}}):a)+'">'},compiler:[8,">= 4.3.0"],main:function(e,t,n,i,o){var a,r,s=null!=t?t:e.nullContext||{},l=e.hooks.helperMissing,c="function",u=e.escapeExpression,d=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<li>\n\t<a href="'+u(typeof(r=null!=(r=d(n,"hyperlink")||(null!=t?d(t,"hyperlink"):t))?r:l)===c?r.call(s,{name:"hyperlink",hash:{},data:o,loc:{start:{line:2,column:10},end:{line:2,column:23}}}):r)+'">\n\t\t'+(null!=(a=d(n,"if").call(s,null!=t?d(t,"icon"):t,{name:"if",hash:{},fn:e.program(1,o,0),inverse:e.noop,data:o,loc:{start:{line:3,column:2},end:{line:3,column:41}}}))?a:"")+"\n\t\t<span>"+u(typeof(r=null!=(r=d(n,"title")||(null!=t?d(t,"title"):t))?r:l)===c?r.call(s,{name:"title",hash:{},data:o,loc:{start:{line:4,column:8},end:{line:4,column:17}}}):r)+"</span>\n\t</a>\n</li>\n"},useData:!0})},46700:function(e,t,n){var i={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":2819,"./hi.js":2819,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(i,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return i[e]}o.keys=function(){return Object.keys(i)},o.resolve=a,e.exports=o,o.id=46700},12081:function(e){"use strict";e.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoAQMAAAC2MCouAAAABlBMVEVmZmZ1dXVT6N0BAAAAUklEQVQIW8XNsQ3AIAwF0bMoKBmBURgNj8YojEBJEcXwu2yQ+p507BTeWDnozPISjPpY4O0W6CqEisUtiG/EF+IT8YG4fznihnhCPCNeEK/89D1Gd22TNOyXVAAAAABJRU5ErkJggg=="},47868:function(e){"use strict";e.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAABkAQMAAADOquA5AAAAA1BMVEUAAACnej3aAAAADklEQVQYGWMYBaOABgAAAlgAARbiVEcAAAAASUVORK5CYII="},58188:function(e){"use strict";e.exports="data:image/png;base64,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"},33178:function(e){"use strict";e.exports="data:image/png;base64,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"},40337:function(e){"use strict";e.exports="data:image/png;base64,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"},98811:function(e){"use strict";e.exports="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"},27373:function(e){"use strict";e.exports="data:image/gif;base64,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"}},o={};function a(e){var t=o[e];if(void 0!==t)return t.exports;var n=o[e]={id:e,loaded:!1,exports:{}};return i[e].call(n.exports,n,n.exports,a),n.loaded=!0,n.exports}a.m=i,a.amdD=function(){throw new Error("define cannot be used indirect")},a.amdO={},e=[],a.O=function(t,n,i,o){if(!n){var r=1/0;for(u=0;u<e.length;u++){n=e[u][0],i=e[u][1],o=e[u][2];for(var s=!0,l=0;l<n.length;l++)(!1&o||r>=o)&&Object.keys(a.O).every((function(e){return a.O[e](n[l])}))?n.splice(l--,1):(s=!1,o<r&&(r=o));if(s){e.splice(u--,1);var c=i();void 0!==c&&(t=c)}}return t}o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[n,i,o]},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,{a:t}),t},a.d=function(e,t){for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},a.j=2943,function(){a.b=document.baseURI||self.location.href;var e={2943:0};a.O.j=function(t){return 0===e[t]};var t=function(t,n){var i,o,r=n[0],s=n[1],l=n[2],c=0;if(r.some((function(t){return 0!==e[t]}))){for(i in s)a.o(s,i)&&(a.m[i]=s[i]);if(l)var u=l(a)}for(t&&t(n);c<r.length;c++)o=r[c],a.o(e,o)&&e[o]&&e[o][0](),e[o]=0;return a.O(u)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))}(),a.nc=void 0;var r=a.O(void 0,[7874],(function(){return a(13084)}));r=a.O(r)}();
+//# sourceMappingURL=core-main.js.map?v=9b97aa47ae0dc846825b \ No newline at end of file
diff --git a/dist/core-main.js.map b/dist/core-main.js.map
index 8fd454088f6..6a3a05d6de1 100644
--- a/dist/core-main.js.map
+++ b/dist/core-main.js.map
@@ -1 +1 @@
-{"version":3,"file":"core-main.js?v=4df32d9e682e4fa84498","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/Polyfill/closest.js","webpack:///nextcloud/core/src/Polyfill/console.js","webpack:///nextcloud/core/src/Polyfill/windows-phone.js","webpack:///nextcloud/core/src/OC/legacy-loader.js","webpack:///nextcloud/core/src/OC/notification.js","webpack:///nextcloud/core/src/OC/xhr-error.js","webpack:///nextcloud/core/src/OC/apps.js","webpack:///nextcloud/core/src/OCP/appconfig.js","webpack:///nextcloud/core/src/OC/appconfig.js","webpack:///nextcloud/core/src/OC/appswebroots.js","webpack:///nextcloud/core/src/OC/backbone-webdav.js","webpack:///nextcloud/core/src/OC/backbone.js","webpack:///nextcloud/core/src/OC/config.js","webpack:///nextcloud/core/src/OC/contactsmenu.js","webpack:///nextcloud/core/src/OC/currentuser.js","webpack:///nextcloud/core/src/OCA/index.js","webpack:///nextcloud/core/src/OCA/search.js","webpack:///nextcloud/core/src/OC/dialogs.js","webpack:///nextcloud/core/src/OC/requesttoken.js","webpack:///nextcloud/core/src/OC/eventsource.js","webpack:///nextcloud/core/src/OC/menu.js","webpack:///nextcloud/core/src/OC/constants.js","webpack:///nextcloud/core/src/OC/admin.js","webpack:///nextcloud/core/src/OC/l10n-registry.js","webpack:///nextcloud/core/src/OC/l10n.js","webpack:///nextcloud/core/src/OC/msg.js","webpack:///nextcloud/core/src/OC/password-confirmation.js","webpack:///nextcloud/core/src/OC/theme.js","webpack:///nextcloud/core/src/OC/util-history.js","webpack:///nextcloud/core/src/OC/util.js","webpack:///nextcloud/core/src/OC/debug.js","webpack:///nextcloud/core/src/OC/webroot.js","webpack:///nextcloud/core/src/OC/get_set.js","webpack:///nextcloud/core/src/OC/index.js","webpack:///nextcloud/core/src/OC/appsettings.js","webpack:///nextcloud/core/src/OC/capabilities.js","webpack:///nextcloud/core/src/OC/host.js","webpack:///nextcloud/core/src/OC/query-string.js","webpack:///nextcloud/core/src/OC/plugins.js","webpack:///nextcloud/core/src/OC/navigation.js","webpack:///nextcloud/core/src/OC/routing.js","webpack:///nextcloud/core/src/session-heartbeat.js","webpack:///nextcloud/core/src/init.js","webpack:///nextcloud/core/src/Polyfill/tooltip.js","webpack:///nextcloud/core/src/components/UserMenu.js","webpack:///nextcloud/core/src/components/MainMenu.js","webpack:///nextcloud/core/src/components/ContactsMenu.js","webpack:///nextcloud/core/src/OCP/comments.js","webpack:///nextcloud/core/src/OCP/whatsnew.js","webpack:///nextcloud/core/src/OCP/collaboration.js","webpack:///nextcloud/core/src/globals.js","webpack:///nextcloud/core/src/OCP/loader.js","webpack:///nextcloud/core/src/OCP/toast.js","webpack:///nextcloud/core/src/OCP/index.js","webpack:///nextcloud/core/src/jquery/avatar.js","webpack:///nextcloud/core/src/jquery/contactsmenu.js","webpack:///nextcloud/core/src/jquery/exists.js","webpack:///nextcloud/core/src/jquery/filterattr.js","webpack:///nextcloud/core/src/jquery/ocdialog.js","webpack:///nextcloud/core/src/jquery/octemplate.js","webpack:///nextcloud/core/src/jquery/placeholder.js","webpack:///nextcloud/core/src/jquery/requesttoken.js","webpack:///nextcloud/core/src/jquery/selectrange.js","webpack:///nextcloud/core/src/jquery/showpassword.js","webpack:///nextcloud/core/src/jquery/ui-fixes.js","webpack://nextcloud/./core/src/jquery/css/jquery-ui-fixes.scss?a4c2","webpack://nextcloud/./core/src/jquery/css/jquery.ocdialog.scss?5718","webpack:///nextcloud/core/src/jquery/index.js","webpack:///nextcloud/core/src/main.js","webpack:///nextcloud/core/src/jquery/css/jquery-ui-fixes.scss","webpack:///nextcloud/core/src/jquery/css/jquery.ocdialog.scss","webpack:///nextcloud/core/src/OC/contactsmenu/contact.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/error.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/list.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/loading.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/menu.handlebars","webpack:///nextcloud/core/src/jquery/contactsmenu/jquery_entry.handlebars","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","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 Copyright (c) 2016 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#Polyfill\n\nif (!Element.prototype.matches) {\n\tElement.prototype.matches\n\t\t= Element.prototype.msMatchesSelector\n\t\t|| Element.prototype.webkitMatchesSelector\n}\n\nif (!Element.prototype.closest) {\n\tElement.prototype.closest = function(s) {\n\t\tlet el = this\n\n\t\tdo {\n\t\t\tif (el.matches(s)) return el\n\t\t\tel = el.parentElement || el.parentNode\n\t\t} while (el !== null && el.nodeType === 1)\n\t\treturn null\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\n/* eslint-disable no-console */\nif (typeof console === 'undefined' || typeof console.log === 'undefined') {\n\tif (!window.console) {\n\t\twindow.console = {}\n\t}\n\tconst noOp = () => {}\n\tconst methods = ['log', 'debug', 'warn', 'info', 'error', 'assert', 'time', 'timeEnd']\n\tfor (let i = 0; i < methods.length; i++) {\n\t\tconsole[methods[i]] = noOp\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\n// fix device width on windows phone\nif ('-ms-user-select' in document.documentElement.style && navigator.userAgent.match(/IEMobile\\/10\\.0/)) {\n\tconst msViewportStyle = document.createElement('style')\n\tmsViewportStyle.appendChild(\n\t\tdocument.createTextNode('@-ms-viewport{width:auto!important}')\n\t)\n\tdocument.getElementsByTagName('head')[0].appendChild(msViewportStyle)\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\nimport { generateFilePath } from '@nextcloud/router'\n\nconst loadedScripts = {}\nconst loadedStyles = []\n\n/**\n * Load a script for the server and load it. If the script is already loaded,\n * the event handler will be called directly\n *\n * @param {string} app the app id to which the script belongs\n * @param {string} script the filename of the script\n * @param {Function} ready event handler to be called when the script is loaded\n * @return {jQuery.Deferred}\n * @deprecated 16.0.0 Use OCP.Loader.loadScript\n */\nexport const addScript = (app, script, ready) => {\n\tconsole.warn('OC.addScript is deprecated, use OCP.Loader.loadScript instead')\n\n\tlet deferred\n\tconst path = generateFilePath(app, 'js', script + '.js')\n\tif (!loadedScripts[path]) {\n\t\tdeferred = $.Deferred()\n\t\t$.getScript(path, () => deferred.resolve())\n\t\tloadedScripts[path] = deferred\n\t} else {\n\t\tif (ready) {\n\t\t\tready()\n\t\t}\n\t}\n\treturn loadedScripts[path]\n}\n\n/**\n * Loads a CSS file\n *\n * @param {string} app the app id to which the css style belongs\n * @param {string} style the filename of the css file\n * @deprecated 16.0.0 Use OCP.Loader.loadStylesheet\n */\nexport const addStyle = (app, style) => {\n\tconsole.warn('OC.addStyle is deprecated, use OCP.Loader.loadStylesheet instead')\n\n\tconst path = generateFilePath(app, 'css', style + '.css')\n\tif (loadedStyles.indexOf(path) === -1) {\n\t\tloadedStyles.push(path)\n\t\tif (document.createStyleSheet) {\n\t\t\tdocument.createStyleSheet(path)\n\t\t} else {\n\t\t\tstyle = $('<link rel=\"stylesheet\" type=\"text/css\" href=\"' + path + '\"/>')\n\t\t\t$('head').append(style)\n\t\t}\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author npmbuildbot[bot] \"npmbuildbot[bot]@users.noreply.github.com\"\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 */\n\nimport _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\nimport { showMessage, TOAST_DEFAULT_TIMEOUT, TOAST_PERMANENT_TIMEOUT } from '@nextcloud/dialogs'\n\n/**\n * @todo Write documentation\n * @deprecated 17.0.0 use the `@nextcloud/dialogs` package instead\n * @namespace OC.Notification\n */\nexport default {\n\n\tupdatableNotification: null,\n\n\tgetDefaultNotificationFunction: null,\n\n\t/**\n\t * @param {Function} callback callback function\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tsetDefault(callback) {\n\t\tthis.getDefaultNotificationFunction = callback\n\t},\n\n\t/**\n\t * Hides a notification.\n\t *\n\t * If a row is given, only hide that one.\n\t * If no row is given, hide all notifications.\n\t *\n\t * @param {jQuery} [$row] notification row\n\t * @param {Function} [callback] callback\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\thide($row, callback) {\n\t\tif (_.isFunction($row)) {\n\t\t\t// first arg is the callback\n\t\t\tcallback = $row\n\t\t\t$row = undefined\n\t\t}\n\n\t\tif (!$row) {\n\t\t\tconsole.error('Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification')\n\t\t\treturn\n\t\t}\n\n\t\t// remove the row directly\n\t\t$row.each(function() {\n\t\t\tif ($(this)[0].toastify) {\n\t\t\t\t$(this)[0].toastify.hideToast()\n\t\t\t} else {\n\t\t\t\tconsole.error('cannot hide toast because object is not set')\n\t\t\t}\n\t\t\tif (this === this.updatableNotification) {\n\t\t\t\tthis.updatableNotification = null\n\t\t\t}\n\t\t})\n\t\tif (callback) {\n\t\t\tcallback.call()\n\t\t}\n\t\tif (this.getDefaultNotificationFunction) {\n\t\t\tthis.getDefaultNotificationFunction()\n\t\t}\n\t},\n\n\t/**\n\t * Shows a notification as HTML without being sanitized before.\n\t * If you pass unsanitized user input this may lead to a XSS vulnerability.\n\t * Consider using show() instead of showHTML()\n\t *\n\t * @param {string} html Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout=0] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowHtml(html, options) {\n\t\toptions = options || {}\n\t\toptions.isHTML = true\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(html, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Shows a sanitized notification\n\t *\n\t * @param {string} text Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout=0] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshow(text, options) {\n\t\tconst escapeHTML = function(text) {\n\t\t\treturn text.toString()\n\t\t\t\t.split('&').join('&amp;')\n\t\t\t\t.split('<').join('&lt;')\n\t\t\t\t.split('>').join('&gt;')\n\t\t\t\t.split('\"').join('&quot;')\n\t\t\t\t.split('\\'').join('&#039;')\n\t\t}\n\n\t\toptions = options || {}\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(escapeHTML(text), options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Updates (replaces) a sanitized notification.\n\t *\n\t * @param {string} text Message to display\n\t * @return {jQuery} JQuery element for notificaiton row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowUpdate(text) {\n\t\tif (this.updatableNotification) {\n\t\t\tthis.updatableNotification.hideToast()\n\t\t}\n\t\tthis.updatableNotification = showMessage(text, { timeout: TOAST_PERMANENT_TIMEOUT })\n\t\tthis.updatableNotification.toastElement.toastify = this.updatableNotification\n\t\treturn $(this.updatableNotification.toastElement)\n\t},\n\n\t/**\n\t * Shows a notification that disappears after x seconds, default is\n\t * 7 seconds\n\t *\n\t * @param {string} text Message to show\n\t * @param {Array} [options] options array\n\t * @param {number} [options.timeout=7] timeout in seconds, if this is 0 it will show the message permanently\n\t * @param {boolean} [options.isHTML=false] an indicator for HTML notifications (true) or text (false)\n\t * @param {string} [options.type] notification type\n\t * @return {JQuery} the toast element\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowTemporary(text, options) {\n\t\toptions = options || {}\n\t\toptions.timeout = options.timeout || TOAST_DEFAULT_TIMEOUT\n\t\tconst toast = showMessage(text, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Returns whether a notification is hidden.\n\t *\n\t * @return {boolean}\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tisHidden() {\n\t\treturn !$('#content').find('.toastify').length\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\n\nimport OC from './index'\nimport Notification from './notification'\n\n/**\n * Warn users that the connection to the server was lost temporarily\n *\n * This function is throttled to prevent stacked notfications.\n * After 7sec the first notification is gone, then we can show another one\n * if necessary.\n */\nexport const ajaxConnectionLostHandler = _.throttle(() => {\n\tNotification.showTemporary(t('core', 'Connection to server lost'))\n}, 7 * 1000, { trailing: false })\n\n/**\n * Process ajax error, redirects to main page\n * if an error/auth error status was returned.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const processAjaxError = xhr => {\n\t// purposefully aborted request ?\n\t// OC._userIsNavigatingAway needed to distinguish ajax calls cancelled by navigating away\n\t// from calls cancelled by failed cross-domain ajax due to SSO redirect\n\tif (xhr.status === 0 && (xhr.statusText === 'abort' || xhr.statusText === 'timeout' || OC._reloadCalled)) {\n\t\treturn\n\t}\n\n\tif (_.contains([302, 303, 307, 401], xhr.status) && OC.currentUser) {\n\t\t// sometimes \"beforeunload\" happens later, so need to defer the reload a bit\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\tlet timer = 0\n\t\t\t\tconst seconds = 5\n\t\t\t\tconst interval = setInterval(function() {\n\t\t\t\t\tNotification.showUpdate(n('core', 'Problem loading page, reloading in %n second', 'Problem loading page, reloading in %n seconds', seconds - timer))\n\t\t\t\t\tif (timer >= seconds) {\n\t\t\t\t\t\tclearInterval(interval)\n\t\t\t\t\t\tOC.reload()\n\t\t\t\t\t}\n\t\t\t\t\ttimer++\n\t\t\t\t}, 1000 // 1 second interval\n\t\t\t\t)\n\n\t\t\t\t// only call reload once\n\t\t\t\tOC._reloadCalled = true\n\t\t\t}\n\t\t}, 100)\n\t} else if (xhr.status === 0) {\n\t\t// Connection lost (e.g. WiFi disconnected or server is down)\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\t// TODO: call method above directly\n\t\t\t\tOC._ajaxConnectionLostHandler()\n\t\t\t}\n\t\t}, 100)\n\t}\n}\n\n/**\n * Registers XmlHttpRequest object for global error processing.\n *\n * This means that if this XHR object returns 401 or session timeout errors,\n * the current page will automatically be reloaded.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const registerXHRForErrorProcessing = xhr => {\n\tconst loadCallback = () => {\n\t\tif (xhr.readyState !== 4) {\n\t\t\treturn\n\t\t}\n\n\t\tif ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) {\n\t\t\treturn\n\t\t}\n\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tconst errorCallback = () => {\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tif (xhr.addEventListener) {\n\t\txhr.addEventListener('load', loadCallback)\n\t\txhr.addEventListener('error', errorCallback)\n\t}\n\n}\n","/**\n * @copyright Bernhard Posselt 2014\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport $ from 'jquery'\n\nlet dynamicSlideToggleEnabled = false\n\nconst Apps = {\n\tenableDynamicSlideToggle() {\n\t\tdynamicSlideToggleEnabled = true\n\t},\n}\n\n/**\n * Shows the #app-sidebar and add .with-app-sidebar to subsequent siblings\n *\n * @param {object} [$el] sidebar element to show, defaults to $('#app-sidebar')\n */\nApps.showAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.removeClass('disappear').show()\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Shows the #app-sidebar and removes .with-app-sidebar from subsequent\n * siblings\n *\n * @param {object} [$el] sidebar element to hide, defaults to $('#app-sidebar')\n */\nApps.hideAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.hide().addClass('disappear')\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Provides a way to slide down a target area through a button and slide it\n * up if the user clicks somewhere else. Used for the news app settings and\n * add new field.\n *\n * Usage:\n * <button data-apps-slide-toggle=\".slide-area\">slide</button>\n * <div class=\".slide-area\" class=\"hidden\">I'm sliding up</div>\n */\nexport const registerAppsSlideToggle = () => {\n\tlet buttons = $('[data-apps-slide-toggle]')\n\n\tif (buttons.length === 0) {\n\t\t$('#app-navigation').addClass('without-app-settings')\n\t}\n\n\t$(document).click(function(event) {\n\n\t\tif (dynamicSlideToggleEnabled) {\n\t\t\tbuttons = $('[data-apps-slide-toggle]')\n\t\t}\n\n\t\tbuttons.each(function(index, button) {\n\n\t\t\tconst areaSelector = $(button).data('apps-slide-toggle')\n\t\t\tconst area = $(areaSelector)\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction hideArea() {\n\t\t\t\tarea.slideUp(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('hide'))\n\t\t\t\t})\n\t\t\t\tarea.removeClass('opened')\n\t\t\t\t$(button).removeClass('opened')\n\t\t\t}\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction showArea() {\n\t\t\t\tarea.slideDown(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('show'))\n\t\t\t\t})\n\t\t\t\tarea.addClass('opened')\n\t\t\t\t$(button).addClass('opened')\n\t\t\t\tconst input = $(areaSelector + ' [autofocus]')\n\t\t\t\tif (input.length === 1) {\n\t\t\t\t\tinput.focus()\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// do nothing if the area is animated\n\t\t\tif (!area.is(':animated')) {\n\n\t\t\t\t// button toggles the area\n\t\t\t\tif ($(button).is($(event.target).closest('[data-apps-slide-toggle]'))) {\n\t\t\t\t\tif (area.is(':visible')) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tshowArea()\n\t\t\t\t\t}\n\n\t\t\t\t\t// all other areas that have not been clicked but are open\n\t\t\t\t\t// should be slid up\n\t\t\t\t} else {\n\t\t\t\t\tconst closest = $(event.target).closest(areaSelector)\n\t\t\t\t\tif (area.is(':visible') && closest[0] !== area[0]) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t})\n}\n\nexport default Apps\n","/**\n * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport $ from 'jquery'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nimport OC from '../OC/index'\n\n/**\n * @param {string} method 'post' or 'delete'\n * @param {string} endpoint endpoint\n * @param {object} [options] destructuring object\n * @param {object} [options.data] option data\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n */\nfunction call(method, endpoint, options) {\n\tif ((method === 'post' || method === 'delete') && OC.PasswordConfirmation.requiresPasswordConfirmation()) {\n\t\tOC.PasswordConfirmation.requirePasswordConfirmation(_.bind(call, this, method, endpoint, options))\n\t\treturn\n\t}\n\n\toptions = options || {}\n\t$.ajax({\n\t\ttype: method.toUpperCase(),\n\t\turl: generateOcsUrl('apps/provisioning_api/api/v1/config/apps') + endpoint,\n\t\tdata: options.data || {},\n\t\tsuccess: options.success,\n\t\terror: options.error,\n\t})\n}\n\n/**\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @since 11.0.0\n */\nexport function getApps(options) {\n\tcall('get', '', options)\n}\n\n/**\n * @param {string} app app id\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getKeys(app, options) {\n\tcall('get', '/' + app, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string | Function} defaultValue default value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getValue(app, key, defaultValue, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tdefaultValue,\n\t}\n\n\tcall('get', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string} value value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function setValue(app, key, value, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tvalue,\n\t}\n\n\tcall('post', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function deleteKey(app, key, options) {\n\tcall('delete', '/' + app + '/' + key, options)\n}\n","/**\n * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Jörn Friedrich Dreyer <jfd@butonic.de>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n/* eslint-disable */\n import { getValue, setValue, getApps, getKeys, deleteKey } from '../OCP/appconfig'\n\nexport const appConfig = window.oc_appconfig || {}\n\n/**\n * @namespace\n * @deprecated 16.0.0 Use OCP.AppConfig instead\n */\nexport const AppConfig = {\n\t/**\n\t * @deprecated Use OCP.AppConfig.getValue() instead\n\t */\n\tgetValue: function(app, key, defaultValue, callback) {\n\t\tgetValue(app, key, defaultValue, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.setValue() instead\n\t */\n\tsetValue: function(app, key, value) {\n\t\tsetValue(app, key, value)\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getApps() instead\n\t */\n\tgetApps: function(callback) {\n\t\tgetApps({\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getKeys() instead\n\t */\n\tgetKeys: function(app, callback) {\n\t\tgetKeys(app, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.deleteKey() instead\n\t */\n\tdeleteKey: function(app, key) {\n\t\tdeleteKey(app, key)\n\t}\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 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 */\n\nconst appswebroots = (window._oc_appswebroots !== undefined) ? window._oc_appswebroots : false\n\nexport default appswebroots\n","/**\n * Copyright (c) 2015\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport { dav } from 'davclient.js'\n\nconst methodMap = {\n\tcreate: 'POST',\n\tupdate: 'PROPPATCH',\n\tpatch: 'PROPPATCH',\n\tdelete: 'DELETE',\n\tread: 'PROPFIND'\n}\n\n// Throw an error when a URL is needed, and none is supplied.\nfunction urlError() {\n\tthrow new Error('A \"url\" property or function must be specified')\n}\n\n/**\n * Convert a single propfind result to JSON\n *\n * @param {Object} result\n * @param {Object} davProperties properties mapping\n */\nfunction parsePropFindResult(result, davProperties) {\n\tif (_.isArray(result)) {\n\t\treturn _.map(result, function(subResult) {\n\t\t\treturn parsePropFindResult(subResult, davProperties)\n\t\t})\n\t}\n\tvar props = {\n\t\thref: result.href\n\t}\n\n\t_.each(result.propStat, function(propStat) {\n\t\tif (propStat.status !== 'HTTP/1.1 200 OK') {\n\t\t\treturn\n\t\t}\n\n\t\tfor (var key in propStat.properties) {\n\t\t\tvar propKey = key\n\t\t\tif (key in davProperties) {\n\t\t\t\tpropKey = davProperties[key]\n\t\t\t}\n\t\t\tprops[propKey] = propStat.properties[key]\n\t\t}\n\t})\n\n\tif (!props.id) {\n\t\t// parse id from href\n\t\tprops.id = parseIdFromLocation(props.href)\n\t}\n\n\treturn props\n}\n\n/**\n * Parse ID from location\n *\n * @param {string} url url\n * @returns {string} id\n */\nfunction parseIdFromLocation(url) {\n\tvar queryPos = url.indexOf('?')\n\tif (queryPos > 0) {\n\t\turl = url.substr(0, queryPos)\n\t}\n\n\tvar parts = url.split('/')\n\tvar result\n\tdo {\n\t\tresult = parts[parts.length - 1]\n\t\tparts.pop()\n\t\t// note: first result can be empty when there is a trailing slash,\n\t\t// so we take the part before that\n\t} while (!result && parts.length > 0)\n\n\treturn result\n}\n\nfunction isSuccessStatus(status) {\n\treturn status >= 200 && status <= 299\n}\n\nfunction convertModelAttributesToDavProperties(attrs, davProperties) {\n\tvar props = {}\n\tvar key\n\tfor (key in attrs) {\n\t\tvar changedProp = davProperties[key]\n\t\tvar value = attrs[key]\n\t\tif (!changedProp) {\n\t\t\tconsole.warn('No matching DAV property for property \"' + key)\n\t\t\tchangedProp = key\n\t\t}\n\t\tif (_.isBoolean(value) || _.isNumber(value)) {\n\t\t\t// convert to string\n\t\t\tvalue = '' + value\n\t\t}\n\t\tprops[changedProp] = value\n\t}\n\treturn props\n}\n\nfunction callPropFind(client, options, model, headers) {\n\treturn client.propFind(\n\t\toptions.url,\n\t\t_.values(options.davProperties) || [],\n\t\toptions.depth,\n\t\theaders\n\t).then(function(response) {\n\t\tif (isSuccessStatus(response.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\tvar results = parsePropFindResult(response.body, propsMapping)\n\t\t\t\tif (options.depth > 0) {\n\t\t\t\t\t// discard root entry\n\t\t\t\t\tresults.shift()\n\t\t\t\t}\n\n\t\t\t\toptions.success(results)\n\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(response)\n\t\t}\n\t})\n}\n\nfunction callPropPatch(client, options, model, headers) {\n\treturn client.propPatch(\n\t\toptions.url,\n\t\tconvertModelAttributesToDavProperties(model.changed, options.davProperties),\n\t\theaders\n\t).then(function(result) {\n\t\tif (isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return the updated model\n\t\t\t\toptions.success(model.toJSON())\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(result)\n\t\t}\n\t})\n\n}\n\nfunction callMkCol(client, options, model, headers) {\n\t// call MKCOL without data, followed by PROPPATCH\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\tnull\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tcallPropPatch(client, options, model, headers)\n\t})\n}\n\nfunction callMethod(client, options, model, headers) {\n\theaders['Content-Type'] = 'application/json'\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\toptions.data\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tif (_.isFunction(options.success)) {\n\t\t\tif (options.type === 'PUT' || options.type === 'POST' || options.type === 'MKCOL') {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return anything\n\t\t\t\tvar responseJson = result.body || model.toJSON()\n\t\t\t\tvar locationHeader = result.xhr.getResponseHeader('Content-Location')\n\t\t\t\tif (options.type === 'POST' && locationHeader) {\n\t\t\t\t\tresponseJson.id = parseIdFromLocation(locationHeader)\n\t\t\t\t}\n\t\t\t\toptions.success(responseJson)\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// if multi-status, parse\n\t\t\tif (result.status === 207) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\toptions.success(parsePropFindResult(result.body, propsMapping))\n\t\t\t} else {\n\t\t\t\toptions.success(result.body)\n\t\t\t}\n\t\t}\n\t})\n}\n\nexport const davCall = (options, model) => {\n\tvar client = new dav.Client({\n\t\tbaseUrl: options.url,\n\t\txmlNamespaces: _.extend({\n\t\t\t'DAV:': 'd',\n\t\t\t'http://owncloud.org/ns': 'oc'\n\t\t}, options.xmlNamespaces || {})\n\t})\n\tclient.resolveUrl = function() {\n\t\treturn options.url\n\t}\n\tvar headers = _.extend({\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t'requesttoken': OC.requestToken\n\t}, options.headers)\n\tif (options.type === 'PROPFIND') {\n\t\treturn callPropFind(client, options, model, headers)\n\t} else if (options.type === 'PROPPATCH') {\n\t\treturn callPropPatch(client, options, model, headers)\n\t} else if (options.type === 'MKCOL') {\n\t\treturn callMkCol(client, options, model, headers)\n\t} else {\n\t\treturn callMethod(client, options, model, headers)\n\t}\n}\n\n/**\n * DAV transport\n */\nexport const davSync = Backbone => (method, model, options) => {\n\tvar params = { type: methodMap[method] || method }\n\tvar isCollection = (model instanceof Backbone.Collection)\n\n\tif (method === 'update') {\n\t\t// if a model has an inner collection, it must define an\n\t\t// attribute \"hasInnerCollection\" that evaluates to true\n\t\tif (model.hasInnerCollection) {\n\t\t\t// if the model itself is a Webdav collection, use MKCOL\n\t\t\tparams.type = 'MKCOL'\n\t\t} else if (model.usePUT || (model.collection && model.collection.usePUT)) {\n\t\t\t// use PUT instead of PROPPATCH\n\t\t\tparams.type = 'PUT'\n\t\t}\n\t}\n\n\t// Ensure that we have a URL.\n\tif (!options.url) {\n\t\tparams.url = _.result(model, 'url') || urlError()\n\t}\n\n\t// Ensure that we have the appropriate request data.\n\tif (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n\t\tparams.data = JSON.stringify(options.attrs || model.toJSON(options))\n\t}\n\n\t// Don't process data on a non-GET request.\n\tif (params.type !== 'PROPFIND') {\n\t\tparams.processData = false\n\t}\n\n\tif (params.type === 'PROPFIND' || params.type === 'PROPPATCH') {\n\t\tvar davProperties = model.davProperties\n\t\tif (!davProperties && model.model) {\n\t\t\t// use dav properties from model in case of collection\n\t\t\tdavProperties = model.model.prototype.davProperties\n\t\t}\n\t\tif (davProperties) {\n\t\t\tif (_.isFunction(davProperties)) {\n\t\t\t\tparams.davProperties = davProperties.call(model)\n\t\t\t} else {\n\t\t\t\tparams.davProperties = davProperties\n\t\t\t}\n\t\t}\n\n\t\tparams.davProperties = _.extend(params.davProperties || {}, options.davProperties)\n\n\t\tif (_.isUndefined(options.depth)) {\n\t\t\tif (isCollection) {\n\t\t\t\toptions.depth = 1\n\t\t\t} else {\n\t\t\t\toptions.depth = 0\n\t\t\t}\n\t\t}\n\t}\n\n\t// Pass along `textStatus` and `errorThrown` from jQuery.\n\tvar error = options.error\n\toptions.error = function(xhr, textStatus, errorThrown) {\n\t\toptions.textStatus = textStatus\n\t\toptions.errorThrown = errorThrown\n\t\tif (error) {\n\t\t\terror.call(options.context, xhr, textStatus, errorThrown)\n\t\t}\n\t}\n\n\t// Make the request, allowing the user to override any Ajax options.\n\tvar xhr = options.xhr = Backbone.davCall(_.extend(params, options), model)\n\tmodel.trigger('request', model, xhr, options)\n\treturn xhr\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport VendorBackbone from 'backbone'\nimport { davCall, davSync } from './backbone-webdav'\n\nconst Backbone = VendorBackbone.noConflict()\n\n// Patch Backbone for DAV\nObject.assign(Backbone, {\n\tdavCall,\n\tdavSync: davSync(Backbone),\n})\n\nexport default Backbone\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 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 */\n\nconst config = window._oc_config || {}\n\nexport default config\n","/**\n * @copyright 2017 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport { Collection, Model, View } from 'backbone'\n\nimport OC from './index'\n\n/**\n * @class Contact\n */\nconst Contact = Model.extend({\n\tdefaults: {\n\t\tfullName: '',\n\t\tlastMessage: '',\n\t\tactions: [],\n\t\thasOneAction: false,\n\t\thasTwoActions: false,\n\t\thasManyActions: false\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\tinitialize: function() {\n\t\t// Add needed property for easier template rendering\n\t\tif (this.get('actions').length === 0) {\n\t\t\tthis.set('hasOneAction', true)\n\t\t} else if (this.get('actions').length === 1) {\n\t\t\tthis.set('hasTwoActions', true)\n\t\t\tthis.set('secondAction', this.get('actions')[0])\n\t\t} else {\n\t\t\tthis.set('hasManyActions', true)\n\t\t}\n\t}\n})\n\n/**\n * @class ContactCollection\n * @private\n */\nconst ContactCollection = Collection.extend({\n\tmodel: Contact\n})\n\n/**\n * @class ContactsListView\n * @private\n */\nconst ContactsListView = View.extend({\n\n\t/** @type {ContactCollection} */\n\t_collection: undefined,\n\n\t/** @type {array} */\n\t_subViews: [],\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis._collection = options.collection\n\t},\n\n\t/**\n\t * @returns {self}\n\t */\n\trender: function() {\n\t\tvar self = this\n\t\tself.$el.html('')\n\t\tself._subViews = []\n\n\t\tself._collection.forEach(function(contact) {\n\t\t\tvar item = new ContactsListItemView({\n\t\t\t\tmodel: contact\n\t\t\t})\n\t\t\titem.render()\n\t\t\tself.$el.append(item.$el)\n\t\t\titem.on('toggle:actionmenu', self._onChildActionMenuToggle, self)\n\t\t\tself._subViews.push(item)\n\t\t})\n\n\t\treturn self\n\t},\n\n\t/**\n\t * Event callback to propagate opening (another) entry's action menu\n\t *\n\t * @param {type} $src\n\t * @returns {undefined}\n\t */\n\t_onChildActionMenuToggle: function($src) {\n\t\tthis._subViews.forEach(function(view) {\n\t\t\tview.trigger('parent:toggle:actionmenu', $src)\n\t\t})\n\t}\n})\n\n/**\n * @class ContactsListItemView\n * @private\n */\nconst ContactsListItemView = View.extend({\n\n\t/** @type {string} */\n\tclassName: 'contact',\n\n\t/** @type {undefined|function} */\n\t_template: undefined,\n\n\t/** @type {Contact} */\n\t_model: undefined,\n\n\t/** @type {boolean} */\n\t_actionMenuShown: false,\n\n\tevents: {\n\t\t'click .icon-more': '_onToggleActionsMenu'\n\t},\n\n\tcontactTemplate: require('./contactsmenu/contact.handlebars'),\n\n\t/**\n\t * @param {object} data\n\t * @returns {undefined}\n\t */\n\ttemplate: function(data) {\n\t\treturn this.contactTemplate(data)\n\t},\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis._model = options.model\n\t\tthis.on('parent:toggle:actionmenu', this._onOtherActionMenuOpened, this)\n\t},\n\n\t/**\n\t * @returns {self}\n\t */\n\trender: function() {\n\t\tthis.$el.html(this.template({\n\t\t\tcontact: this._model.toJSON()\n\t\t}))\n\t\tthis.delegateEvents()\n\n\t\t// Show placeholder if no avatar is available (avatar is rendered as img, not div)\n\t\tthis.$('div.avatar').imageplaceholder(this._model.get('fullName'))\n\n\t\t// Show tooltip for top action\n\t\tthis.$('.top-action').tooltip({ placement: 'left' })\n\t\t// Show tooltip for second action\n\t\tthis.$('.second-action').tooltip({ placement: 'left' })\n\n\t\treturn this\n\t},\n\n\t/**\n\t * Toggle the visibility of the action popover menu\n\t *\n\t * @private\n\t * @returns {undefined}\n\t */\n\t_onToggleActionsMenu: function() {\n\t\tthis._actionMenuShown = !this._actionMenuShown\n\t\tif (this._actionMenuShown) {\n\t\t\tthis.$('.menu').show()\n\t\t} else {\n\t\t\tthis.$('.menu').hide()\n\t\t}\n\t\tthis.trigger('toggle:actionmenu', this.$el)\n\t},\n\n\t/**\n\t * @private\n\t * @argument {jQuery} $src\n\t * @returns {undefined}\n\t */\n\t_onOtherActionMenuOpened: function($src) {\n\t\tif (this.$el.is($src)) {\n\t\t\t// Ignore\n\t\t\treturn\n\t\t}\n\t\tthis._actionMenuShown = false\n\t\tthis.$('.menu').hide()\n\t}\n})\n\n/**\n * @class ContactsMenuView\n * @private\n */\nconst ContactsMenuView = View.extend({\n\n\t/** @type {undefined|function} */\n\t_loadingTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_errorTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_contentTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_contactsTemplate: undefined,\n\n\t/** @type {undefined|ContactCollection} */\n\t_contacts: undefined,\n\n\t/** @type {string} */\n\t_searchTerm: '',\n\n\tevents: {\n\t\t'input #contactsmenu-search': '_onSearch'\n\t},\n\n\ttemplates: {\n\t\tloading: require('./contactsmenu/loading.handlebars'),\n\t\terror: require('./contactsmenu/error.handlebars'),\n\t\tmenu: require('./contactsmenu/menu.handlebars'),\n\t\tlist: require('./contactsmenu/list.handlebars')\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\t_onSearch: _.debounce(function(e) {\n\t\tvar searchTerm = this.$('#contactsmenu-search').val()\n\t\t// IE11 triggers an 'input' event after the view has been rendered\n\t\t// resulting in an endless loading loop. To prevent this, we remember\n\t\t// the last search term to savely ignore some events\n\t\t// See https://github.com/nextcloud/server/issues/5281\n\t\tif (searchTerm !== this._searchTerm) {\n\t\t\tthis.trigger('search', this.$('#contactsmenu-search').val())\n\t\t\tthis._searchTerm = searchTerm\n\t\t}\n\t}, 700),\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tloadingTemplate: function(data) {\n\t\treturn this.templates.loading(data)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\terrorTemplate: function(data) {\n\t\treturn this.templates.error(\n\t\t\t_.extend({\n\t\t\t\tcouldNotLoadText: t('core', 'Could not load your contacts')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tcontentTemplate: function(data) {\n\t\treturn this.templates.menu(\n\t\t\t_.extend({\n\t\t\t\tsearchContactsText: t('core', 'Search contacts …')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tcontactsTemplate: function(data) {\n\t\treturn this.templates.list(\n\t\t\t_.extend({\n\t\t\t\tnoContactsFoundText: t('core', 'No contacts found'),\n\t\t\t\tshowAllContactsText: t('core', 'Show all contacts …'),\n\t\t\t\tcontactsAppMgmtText: t('core', 'Install the Contacts app')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis.options = options\n\t},\n\n\t/**\n\t * @param {string} text\n\t * @returns {undefined}\n\t */\n\tshowLoading: function(text) {\n\t\tthis.render()\n\t\tthis._contacts = undefined\n\t\tthis.$('.content').html(this.loadingTemplate({\n\t\t\tloadingText: text\n\t\t}))\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\tshowError: function() {\n\t\tthis.render()\n\t\tthis._contacts = undefined\n\t\tthis.$('.content').html(this.errorTemplate())\n\t},\n\n\t/**\n\t * @param {object} viewData\n\t * @param {string} searchTerm\n\t * @returns {undefined}\n\t */\n\tshowContacts: function(viewData, searchTerm) {\n\t\tthis._contacts = viewData.contacts\n\t\tthis.render({\n\t\t\tcontacts: viewData.contacts\n\t\t})\n\n\t\tvar list = new ContactsListView({\n\t\t\tcollection: viewData.contacts\n\t\t})\n\t\tlist.render()\n\t\tthis.$('.content').html(this.contactsTemplate({\n\t\t\tcontacts: viewData.contacts,\n\t\t\tsearchTerm: searchTerm,\n\t\t\tcontactsAppEnabled: viewData.contactsAppEnabled,\n\t\t\tcontactsAppURL: OC.generateUrl('/apps/contacts'),\n\t\t\tcanInstallApp: OC.isUserAdmin(),\n\t\t\tcontactsAppMgmtURL: OC.generateUrl('/settings/apps/social/contacts')\n\t\t}))\n\t\tthis.$('#contactsmenu-contacts').html(list.$el)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {self}\n\t */\n\trender: function(data) {\n\t\tvar searchVal = this.$('#contactsmenu-search').val()\n\t\tthis.$el.html(this.contentTemplate(data))\n\n\t\t// Focus search\n\t\tthis.$('#contactsmenu-search').val(searchVal)\n\t\tthis.$('#contactsmenu-search').focus()\n\t\treturn this\n\t}\n\n})\n\n/**\n * @param {Object} options\n * @param {jQuery} options.el\n * @param {jQuery} options.trigger\n * @class ContactsMenu\n * @memberOf OC\n */\nconst ContactsMenu = function(options) {\n\tthis.initialize(options)\n}\n\nContactsMenu.prototype = {\n\t/** @type {jQuery} */\n\t$el: undefined,\n\n\t/** @type {jQuery} */\n\t_$trigger: undefined,\n\n\t/** @type {ContactsMenuView} */\n\t_view: undefined,\n\n\t/** @type {Promise} */\n\t_contactsPromise: undefined,\n\n\t/**\n\t * @param {Object} options\n\t * @param {jQuery} options.el - the element to render the menu in\n\t * @param {jQuery} options.trigger - the element to click on to open the menu\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis.$el = options.el\n\t\tthis._$trigger = options.trigger\n\n\t\tthis._view = new ContactsMenuView({\n\t\t\tel: this.$el\n\t\t})\n\t\tthis._view.on('search', function(searchTerm) {\n\t\t\tthis._loadContacts(searchTerm)\n\t\t}, this)\n\n\t\tOC.registerMenu(this._$trigger, this.$el, function() {\n\t\t\tthis._toggleVisibility(true)\n\t\t}.bind(this), true)\n\t\tthis.$el.on('beforeHide', function() {\n\t\t\tthis._toggleVisibility(false)\n\t\t}.bind(this))\n\t},\n\n\t/**\n\t * @private\n\t * @param {boolean} show\n\t * @returns {Promise}\n\t */\n\t_toggleVisibility: function(show) {\n\t\tif (show) {\n\t\t\treturn this._loadContacts()\n\t\t} else {\n\t\t\tthis.$el.html('')\n\t\t\treturn Promise.resolve()\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t * @param {string|undefined} searchTerm\n\t * @returns {Promise}\n\t */\n\t_getContacts: function(searchTerm) {\n\t\tvar url = OC.generateUrl('/contactsmenu/contacts')\n\t\treturn Promise.resolve($.ajax(url, {\n\t\t\tmethod: 'POST',\n\t\t\tdata: {\n\t\t\t\tfilter: searchTerm\n\t\t\t}\n\t\t}))\n\t},\n\n\t/**\n\t * @param {string|undefined} searchTerm\n\t * @returns {undefined}\n\t */\n\t_loadContacts: function(searchTerm) {\n\t\tvar self = this\n\n\t\tif (!self._contactsPromise) {\n\t\t\tself._contactsPromise = self._getContacts(searchTerm)\n\t\t}\n\n\t\tif (_.isUndefined(searchTerm) || searchTerm === '') {\n\t\t\tself._view.showLoading(t('core', 'Loading your contacts …'))\n\t\t} else {\n\t\t\tself._view.showLoading(t('core', 'Looking for {term} …', {\n\t\t\t\tterm: searchTerm\n\t\t\t}))\n\t\t}\n\t\treturn self._contactsPromise.then(function(data) {\n\t\t\t// Convert contact entries to Backbone collection\n\t\t\tdata.contacts = new ContactCollection(data.contacts)\n\n\t\t\tself._view.showContacts(data, searchTerm)\n\t\t}, function(e) {\n\t\t\tself._view.showError()\n\t\t\tconsole.error('There was an error loading your contacts', e)\n\t\t}).then(function() {\n\t\t\t// Delete promise, so that contacts are fetched again when the\n\t\t\t// menu is opened the next time.\n\t\t\tdelete self._contactsPromise\n\t\t}).catch(console.error.bind(this))\n\t}\n}\n\nexport default ContactsMenu\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\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 */\n\nconst rawUid = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user')\nconst displayName = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user-displayname')\n\nexport const currentUser = rawUid !== undefined ? rawUid : false\n\nexport const getCurrentUser = () => {\n\treturn {\n\t\tuid: currentUser,\n\t\tdisplayName,\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 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 */\n\nimport Search from './search'\n\n/**\n * Namespace for apps\n *\n * @namespace OCA\n */\nexport default {\n\t/**\n\t * @deprecated 20.0.0, will be removed in Nextcloud 22\n\t */\n\tSearch,\n}\n","/**\n * @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 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 */\n\nexport default class Search {\n\n\t/**\n\t * @deprecated 20.0.0, will be removed in Nextcloud 22\n\t */\n\tconstructor() {\n\t\tconsole.warn('OCA.Search is deprecated. Please use the unified search API instead')\n\t}\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n * @copyright Copyright (c) 2019 Gary Kim <gary@garykim.dev>\n *\n * @author Bartek Przybylski <bart.p.pl@gmail.com>\n * @author Christopher Schäpers <kondou@ts.unde.re>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Daniel Kesselberg <mail@danielkesselberg.de>\n * @author Florian Schunk <florian.schunk@rwth-aachen.de>\n * @author Gary Kim <gary@garykim.dev>\n * @author Hendrik Leppelsack <hendrik@leppelsack.de>\n * @author Jan-Christoph Borchardt <hey@jancborchardt.net>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Jörn Friedrich Dreyer <jfd@butonic.de>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Loïc Hermann <loic.hermann@sciam.fr>\n * @author Morris Jobke <hey@morrisjobke.de>\n * @author Olivier Paroz <github@oparoz.com>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Sujith Haridasan <Sujith_Haridasan@mentor.com>\n * @author Thomas Citharel <nextcloud@tcit.fr>\n * @author Thomas Müller <thomas.mueller@tmit.eu>\n * @author Thomas Tanghus <thomas@tanghus.net>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport $ from 'jquery'\n\nimport OC from './index'\nimport OCA from '../OCA/index'\n\n/**\n * this class to ease the usage of jquery dialogs\n */\nconst Dialogs = {\n\t// dialog button types\n\tYES_NO_BUTTONS: 70,\n\tOK_BUTTONS: 71,\n\n\tFILEPICKER_TYPE_CHOOSE: 1,\n\tFILEPICKER_TYPE_MOVE: 2,\n\tFILEPICKER_TYPE_COPY: 3,\n\tFILEPICKER_TYPE_COPY_MOVE: 4,\n\tFILEPICKER_TYPE_CUSTOM: 5,\n\n\t// used to name each dialog\n\tdialogsCounter: 0,\n\n\t/**\n\t * displays alert dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t */\n\talert: function(text, title, callback, modal) {\n\t\tthis.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'alert',\n\t\t\tDialogs.OK_BUTTON,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\t/**\n\t * displays info dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t */\n\tinfo: function(text, title, callback, modal) {\n\t\tthis.message(text, title, 'info', Dialogs.OK_BUTTON, callback, modal)\n\t},\n\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirm: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {{type: Int, confirm: String, cancel: String, confirmClasses: String}} buttons text content of buttons\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirmDestructive: function(text, title, buttons, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'none',\n\t\t\tbuttons,\n\t\t\tcallback,\n\t\t\tmodal === undefined ? true : modal\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirmHtml: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal,\n\t\t\ttrue\n\t\t)\n\t},\n\t/**\n\t * displays prompt dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} name name of the input field\n\t * @param {boolean} password whether the input should be a password input\n\t * @returns {Promise}\n\t */\n\tprompt: function(text, title, callback, modal, name, password) {\n\t\treturn $.when(this._getMessageTemplate()).then(function($tmpl) {\n\t\t\tvar dialogName = 'oc-dialog-' + Dialogs.dialogsCounter + '-content'\n\t\t\tvar dialogId = '#' + dialogName\n\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\tmessage: text,\n\t\t\t\ttype: 'notice'\n\t\t\t})\n\t\t\tvar input = $('<input/>')\n\t\t\tinput.attr('type', password ? 'password' : 'text').attr('id', dialogName + '-input').attr('placeholder', name)\n\t\t\tvar label = $('<label/>').attr('for', dialogName + '-input').text(name + ': ')\n\t\t\t$dlg.append(label)\n\t\t\t$dlg.append(input)\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\t$('body').append($dlg)\n\n\t\t\t// wrap callback in _.once():\n\t\t\t// only call callback once and not twice (button handler and close\n\t\t\t// event) but call it for the close event, if ESC or the x is hit\n\t\t\tif (callback !== undefined) {\n\t\t\t\tcallback = _.once(callback)\n\t\t\t}\n\n\t\t\tvar buttonlist = [{\n\t\t\t\ttext: t('core', 'No'),\n\t\t\t\tclick: function() {\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(false, input.val())\n\t\t\t\t\t}\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\ttext: t('core', 'Yes'),\n\t\t\t\tclick: function() {\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(true, input.val())\n\t\t\t\t\t}\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t},\n\t\t\t\tdefaultButton: true\n\t\t\t}]\n\n\t\t\t$(dialogId).ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist,\n\t\t\t\tclose: function() {\n\t\t\t\t\t// callback is already fired if Yes/No is clicked directly\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(false, input.val())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\tinput.focus()\n\t\t\tDialogs.dialogsCounter++\n\t\t})\n\t},\n\t/**\n\t * show a file picker to pick a file from\n\t *\n\t * In order to pick several types of mime types they need to be passed as an\n\t * array of strings.\n\t *\n\t * When no mime type filter is given only files can be selected. In order to\n\t * be able to select both files and folders \"['*', 'httpd/unix-directory']\"\n\t * should be used instead.\n\t *\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses Choose\n\t * @param {boolean} [multiselect] whether it should be possible to select multiple files\n\t * @param {string[]} [mimetypeFilter] mimetype to filter by - directories will always be included\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} [type] Type of file picker : Choose, copy, move, copy and move\n\t * @param {string} [path] path to the folder that the the file can be picket from\n\t * @param {Object} [options] additonal options that need to be set\n\t * @param {Function} [options.filter] filter function for advanced filtering\n\t */\n\tfilepicker: function(title, callback, multiselect, mimetypeFilter, modal, type, path, options) {\n\t\tvar self = this\n\n\t\tthis.filepicker.sortField = 'name'\n\t\tthis.filepicker.sortOrder = 'asc'\n\t\t// avoid opening the picker twice\n\t\tif (this.filepicker.loading) {\n\t\t\treturn\n\t\t}\n\n\t\tif (type === undefined) {\n\t\t\ttype = this.FILEPICKER_TYPE_CHOOSE\n\t\t}\n\n\t\tvar emptyText = t('core', 'No files in here')\n\t\tvar newText = t('files', 'New folder')\n\t\tif (type === this.FILEPICKER_TYPE_COPY || type === this.FILEPICKER_TYPE_MOVE || type === this.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\temptyText = t('core', 'No more subfolders in here')\n\t\t}\n\n\t\tthis.filepicker.loading = true\n\t\tthis.filepicker.filesClient = (OCA.Sharing && OCA.Sharing.PublicApp && OCA.Sharing.PublicApp.fileList) ? OCA.Sharing.PublicApp.fileList.filesClient : OC.Files.getClient()\n\n\t\tthis.filelist = null\n\t\tpath = path || ''\n\t\toptions = Object.assign({\n\t\t\tallowDirectoryChooser: false\n\t\t}, options)\n\n\t\t$.when(this._getFilePickerTemplate()).then(function($tmpl) {\n\t\t\tself.filepicker.loading = false\n\t\t\tvar dialogName = 'oc-dialog-filepicker-content'\n\t\t\tif (self.$filePicker) {\n\t\t\t\tself.$filePicker.ocdialog('close')\n\t\t\t}\n\n\t\t\tif (mimetypeFilter === undefined || mimetypeFilter === null) {\n\t\t\t\tmimetypeFilter = []\n\t\t\t}\n\t\t\tif (typeof (mimetypeFilter) === 'string') {\n\t\t\t\tmimetypeFilter = [mimetypeFilter]\n\t\t\t}\n\n\t\t\tself.$filePicker = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\temptytext: emptyText,\n\t\t\t\tnewtext: newText,\n\t\t\t\tnameCol: t('core', 'Name'),\n\t\t\t\tsizeCol: t('core', 'Size'),\n\t\t\t\tmodifiedCol: t('core', 'Modified')\n\t\t\t}).data('path', path).data('multiselect', multiselect).data('mimetype', mimetypeFilter).data('allowDirectoryChooser', options.allowDirectoryChooser)\n\t\t\tif (typeof(options.filter) === 'function') {\n\t\t\t\tself.$filePicker.data('filter', options.filter)\n\t\t\t}\n\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\tif (multiselect === undefined) {\n\t\t\t\tmultiselect = false\n\t\t\t}\n\n\t\t\tself.$filePicker.find('#picker-view-toggle').remove()\n\t\t\tself.$filePicker.find('#picker-filestable').removeClass('view-grid')\n\n\t\t\t$('body').append(self.$filePicker)\n\n\t\t\tself.$showGridView = $('input#picker-showgridview')\n\t\t\tself.$showGridView.on('change', _.bind(self._onGridviewChange, self))\n\n\t\t\tself._getGridSettings()\n\n\t\t\tvar newButton = self.$filePicker.find('.actions.creatable .button-add')\n\t\t\tif (type === self.FILEPICKER_TYPE_CHOOSE && !options.allowDirectoryChooser) {\n\t\t\t\tnewButton.hide()\n\t\t\t}\n\t\t\tnewButton.on('focus', function() {\n\t\t\t\tself.$filePicker.ocdialog('setEnterCallback', function() {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tnewButton.click()\n\t\t\t\t})\n\t\t\t})\n\t\t\tnewButton.on('blur', function() {\n\t\t\t\tself.$filePicker.ocdialog('unsetEnterCallback')\n\t\t\t})\n\n\t\t\tOC.registerMenu(newButton, self.$filePicker.find('.menu'), function() {\n\t\t\t\t$input.tooltip('hide')\n\t\t\t\t$input.focus()\n\t\t\t\tself.$filePicker.ocdialog('setEnterCallback', function() {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tself.$filePicker.submit()\n\t\t\t\t})\n\t\t\t\tvar newName = $input.val()\n\t\t\t\tvar lastPos = newName.lastIndexOf('.')\n\t\t\t\tif (lastPos === -1) {\n\t\t\t\t\tlastPos = newName.length\n\t\t\t\t}\n\t\t\t\t$input.selectRange(0, lastPos)\n\t\t\t})\n\t\t\tvar $form = self.$filePicker.find('.filenameform')\n\t\t\tvar $input = $form.find('input[type=\\'text\\']')\n\t\t\tvar $submit = $form.find('input[type=\\'submit\\']')\n\t\t\t$submit.on('click', function(event) {\n\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\tevent.preventDefault()\n\t\t\t\t$form.submit()\n\t\t\t})\n\n\t\t\t/**\n\t\t\t * Checks whether the given file name is valid.\n\t\t\t *\n\t\t\t * @param name file name to check\n\t\t\t * @return true if the file name is valid.\n\t\t\t * @throws a string exception with an error message if\n\t\t\t * the file name is not valid\n\t\t\t *\n\t\t\t * NOTE: This function is duplicated in the files app:\n\t\t\t * https://github.com/nextcloud/server/blob/b9bc2417e7a8dc81feb0abe20359bedaf864f790/apps/files/js/files.js#L127-L148\n\t\t\t */\n\t\t\tvar isFileNameValid = function (name) {\n\t\t\t\tvar trimmedName = name.trim();\n\t\t\t\tif (trimmedName === '.' || trimmedName === '..')\n\t\t\t\t{\n\t\t\t\t\tthrow t('files', '\"{name}\" is an invalid file name.', {name: name})\n\t\t\t\t} else if (trimmedName.length === 0) {\n\t\t\t\t\tthrow t('files', 'File name cannot be empty.')\n\t\t\t\t} else if (trimmedName.indexOf('/') !== -1) {\n\t\t\t\t\tthrow t('files', '\"/\" is not allowed inside a file name.')\n\t\t\t\t} else if (!!(trimmedName.match(OC.config.blacklist_files_regex))) {\n\t\t\t\t\tthrow t('files', '\"{name}\" is not an allowed filetype', {name: name})\n\t\t\t\t}\n\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\tvar checkInput = function() {\n\t\t\t\tvar filename = $input.val()\n\t\t\t\ttry {\n\t\t\t\t\tif (!isFileNameValid(filename)) {\n\t\t\t\t\t\t// isFileNameValid(filename) throws an exception itself\n\t\t\t\t\t} else if (self.filelist.find(function(file) {\n\t\t\t\t\t\treturn file.name === this\n\t\t\t\t\t}, filename)) {\n\t\t\t\t\t\tthrow t('files', '{newName} already exists', { newName: filename }, undefined, {\n\t\t\t\t\t\t\tescape: false\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn true\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\t$input.attr('title', error)\n\t\t\t\t\t$input.tooltip({\n\t\t\t\t\t\tplacement: 'right',\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t'container': '.newFolderMenu'\n\t\t\t\t\t})\n\t\t\t\t\t$input.tooltip('_fixTitle')\n\t\t\t\t\t$input.tooltip('show')\n\t\t\t\t\t$input.addClass('error')\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t$form.on('submit', function(event) {\n\t\t\t\tevent.stopPropagation()\n\t\t\t\tevent.preventDefault()\n\n\t\t\t\tif (checkInput()) {\n\t\t\t\t\tvar newname = $input.val()\n\t\t\t\t\tself.filepicker.filesClient.createDirectory(self.$filePicker.data('path') + \"/\" + newname).always(function (status) {\n\t\t\t\t\t\tself._fillFilePicker(self.$filePicker.data('path') + \"/\" + newname)\n\t\t\t\t\t})\n\t\t\t\t\tOC.hideMenus()\n\t\t\t\t\tself.$filePicker.ocdialog('unsetEnterCallback')\n\t\t\t\t\tself.$filePicker.click()\n\t\t\t\t\t$input.val(newText)\n\t\t\t\t}\n\t\t\t})\n\t\t\t$input.keypress(function(event) {\n\t\t\t\tif (event.keyCode === 13 || event.which === 13) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t$form.submit()\n\t\t\t\t}\n\t\t\t})\n\t\t\t$input.on('input', function(event) {\n\t\t\t\t$input.tooltip('hide')\n\t\t\t})\n\n\t\t\tself.$filePicker.ready(function() {\n\t\t\t\tself.$fileListHeader = self.$filePicker.find('.filelist thead tr')\n\t\t\t\tself.$filelist = self.$filePicker.find('.filelist tbody')\n\t\t\t\tself.$filelistContainer = self.$filePicker.find('.filelist-container')\n\t\t\t\tself.$dirTree = self.$filePicker.find('.dirtree')\n\t\t\t\tself.$dirTree.on('click', 'div:not(:last-child)', self, function(event) {\n\t\t\t\t\tself._handleTreeListSelect(event, type)\n\t\t\t\t})\n\t\t\t\tself.$filelist.on('click', 'tr', function(event) {\n\t\t\t\t\tself._handlePickerClick(event, $(this), type)\n\t\t\t\t})\n\t\t\t\tself.$fileListHeader.on('click', 'a', function(event) {\n\t\t\t\t\tvar dir = self.$filePicker.data('path')\n\t\t\t\t\tself.filepicker.sortField = $(event.currentTarget).data('sort')\n\t\t\t\t\tself.filepicker.sortOrder = self.filepicker.sortOrder === 'asc' ? 'desc' : 'asc'\n\t\t\t\t\tself._fillFilePicker(dir)\n\t\t\t\t})\n\t\t\t\tself._fillFilePicker(path)\n\t\t\t})\n\n\t\t\t// build buttons\n\t\t\tvar functionToCall = function(returnType) {\n\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\tvar datapath\n\t\t\t\t\tif (multiselect === true) {\n\t\t\t\t\t\tdatapath = []\n\t\t\t\t\t\tself.$filelist.find('tr.filepicker_element_selected').each(function(index, element) {\n\t\t\t\t\t\t\tdatapath.push(self.$filePicker.data('path') + '/' + $(element).data('entryname'))\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdatapath = self.$filePicker.data('path')\n\t\t\t\t\t\tvar selectedName = self.$filelist.find('tr.filepicker_element_selected').data('entryname')\n\t\t\t\t\t\tif (selectedName) {\n\t\t\t\t\t\t\tdatapath += '/' + selectedName\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcallback(datapath, returnType)\n\t\t\t\t\tself.$filePicker.ocdialog('close')\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar chooseCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_CHOOSE)\n\t\t\t}\n\n\t\t\tvar copyCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_COPY)\n\t\t\t}\n\n\t\t\tvar moveCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_MOVE)\n\t\t\t}\n\n\t\t\tvar buttonlist = []\n\t\t\tif (type === Dialogs.FILEPICKER_TYPE_CHOOSE) {\n\t\t\t\tbuttonlist.push({\n\t\t\t\t\ttext: t('core', 'Choose'),\n\t\t\t\t\tclick: chooseCallback,\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t})\n\t\t\t} else if (type === Dialogs.FILEPICKER_TYPE_CUSTOM) {\n\t\t\t\toptions.buttons.forEach(function(button) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: button.text,\n\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\tfunctionToCall(button.type)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefaultButton: button.defaultButton\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tif (type === Dialogs.FILEPICKER_TYPE_COPY || type === Dialogs.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: t('core', 'Copy'),\n\t\t\t\t\t\tclick: copyCallback,\n\t\t\t\t\t\tdefaultButton: false\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (type === Dialogs.FILEPICKER_TYPE_MOVE || type === Dialogs.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: t('core', 'Move'),\n\t\t\t\t\t\tclick: moveCallback,\n\t\t\t\t\t\tdefaultButton: true\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tself.$filePicker.ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\t// max-width of 600\n\t\t\t\twidth: 600,\n\t\t\t\theight: 500,\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist,\n\t\t\t\tstyle: {\n\t\t\t\t\tbuttons: 'aside'\n\t\t\t\t},\n\t\t\t\tclose: function() {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t}\n\t\t\t\t\tself.$filePicker = null\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t// We can access primary class only from oc-dialog.\n\t\t\t// Hence this is one of the approach to get the choose button.\n\t\t\tvar getOcDialog = self.$filePicker.closest('.oc-dialog')\n\t\t\tvar buttonEnableDisable = getOcDialog.find('.primary')\n\t\t\tif (self.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || self.$filePicker.data('allowDirectoryChooser')) {\n\t\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t\t} else {\n\t\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t\t}\n\t\t})\n\t\t\t.fail(function(status, error) {\n\t\t\t\t// If the method is called while navigating away\n\t\t\t\t// from the page, it is probably not needed ;)\n\t\t\t\tself.filepicker.loading = false\n\t\t\t\tif (status !== 0) {\n\t\t\t\t\talert(t('core', 'Error loading file picker template: {error}', { error: error }))\n\t\t\t\t}\n\t\t\t})\n\t},\n\t/**\n\t * Displays raw dialog\n\t * You better use a wrapper instead ...\n\t */\n\tmessage: function(content, title, dialogType, buttons, callback, modal, allowHtml) {\n\t\treturn $.when(this._getMessageTemplate()).then(function($tmpl) {\n\t\t\tvar dialogName = 'oc-dialog-' + Dialogs.dialogsCounter + '-content'\n\t\t\tvar dialogId = '#' + dialogName\n\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\tmessage: content,\n\t\t\t\ttype: dialogType\n\t\t\t}, allowHtml ? { escapeFunction: '' } : {})\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\t$('body').append($dlg)\n\t\t\tvar buttonlist = []\n\t\t\tswitch (buttons) {\n\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\tbuttonlist = [{\n\t\t\t\t\ttext: t('core', 'No'),\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: t('core', 'Yes'),\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t},\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t}]\n\t\t\t\tbreak\n\t\t\tcase Dialogs.OK_BUTTON:\n\t\t\t\tvar functionToCall = function() {\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\tcallback()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbuttonlist[0] = {\n\t\t\t\t\ttext: t('core', 'OK'),\n\t\t\t\t\tclick: functionToCall,\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tif (typeof(buttons) === 'object') {\n\t\t\t\t\tswitch (buttons.type) {\n\t\t\t\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\t\t\t\tbuttonlist = [{\n\t\t\t\t\t\t\t\ttext: buttons.cancel || t('core', 'No'),\n\t\t\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttext: buttons.confirm || t('core', 'Yes'),\n\t\t\t\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tdefaultButton: true,\n\t\t\t\t\t\t\t\t\tclasses: buttons.confirmClasses\n\t\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t$(dialogId).ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\tcloseCallback: () => { callback && callback(false) },\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist\n\t\t\t})\n\t\t\tDialogs.dialogsCounter++\n\t\t})\n\t\t\t.fail(function(status, error) {\n\t\t\t\t// If the method is called while navigating away from\n\t\t\t\t// the page, we still want to deliver the message.\n\t\t\t\tif (status === 0) {\n\t\t\t\t\talert(title + ': ' + content)\n\t\t\t\t} else {\n\t\t\t\t\talert(t('core', 'Error loading message template: {error}', { error: error }))\n\t\t\t\t}\n\t\t\t})\n\t},\n\t_fileexistsshown: false,\n\t/**\n\t * Displays file exists dialog\n\t * @param {object} data upload object\n\t * @param {object} original file with name, size and mtime\n\t * @param {object} replacement file with name, size and mtime\n\t * @param {object} controller with onCancel, onSkip, onReplace and onRename methods\n\t * @returns {Promise} jquery promise that resolves after the dialog template was loaded\n\t */\n\tfileexists: function(data, original, replacement, controller) {\n\t\tvar self = this\n\t\tvar dialogDeferred = new $.Deferred()\n\n\t\tvar getCroppedPreview = function(file) {\n\t\t\tvar deferred = new $.Deferred()\n\t\t\t// Only process image files.\n\t\t\tvar type = file.type && file.type.split('/').shift()\n\t\t\tif (window.FileReader && type === 'image') {\n\t\t\t\tvar reader = new FileReader()\n\t\t\t\treader.onload = function(e) {\n\t\t\t\t\tvar blob = new Blob([e.target.result])\n\t\t\t\t\twindow.URL = window.URL || window.webkitURL\n\t\t\t\t\tvar originalUrl = window.URL.createObjectURL(blob)\n\t\t\t\t\tvar image = new Image()\n\t\t\t\t\timage.src = originalUrl\n\t\t\t\t\timage.onload = function() {\n\t\t\t\t\t\tvar url = crop(image)\n\t\t\t\t\t\tdeferred.resolve(url)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treader.readAsArrayBuffer(file)\n\t\t\t} else {\n\t\t\t\tdeferred.reject()\n\t\t\t}\n\t\t\treturn deferred\n\t\t}\n\n\t\tvar crop = function(img) {\n\t\t\tvar canvas = document.createElement('canvas')\n\t\t\tvar targetSize = 96\n\t\t\tvar width = img.width\n\t\t\tvar height = img.height\n\t\t\tvar x; var y; var size\n\n\t\t\t// Calculate the width and height, constraining the proportions\n\t\t\tif (width > height) {\n\t\t\t\ty = 0\n\t\t\t\tx = (width - height) / 2\n\t\t\t} else {\n\t\t\t\ty = (height - width) / 2\n\t\t\t\tx = 0\n\t\t\t}\n\t\t\tsize = Math.min(width, height)\n\n\t\t\t// Set canvas size to the cropped area\n\t\t\tcanvas.width = size\n\t\t\tcanvas.height = size\n\t\t\tvar ctx = canvas.getContext('2d')\n\t\t\tctx.drawImage(img, x, y, size, size, 0, 0, size, size)\n\n\t\t\t// Resize the canvas to match the destination (right size uses 96px)\n\t\t\tresampleHermite(canvas, size, size, targetSize, targetSize)\n\n\t\t\treturn canvas.toDataURL('image/png', 0.7)\n\t\t}\n\n\t\t/**\n\t\t * Fast image resize/resample using Hermite filter with JavaScript.\n\t\t *\n\t\t * @author: ViliusL\n\t\t *\n\t\t * @param {*} canvas\n\t\t * @param {number} W\n\t\t * @param {number} H\n\t\t * @param {number} W2\n\t\t * @param {number} H2\n\t\t */\n\t\tvar resampleHermite = function(canvas, W, H, W2, H2) {\n\t\t\tW2 = Math.round(W2)\n\t\t\tH2 = Math.round(H2)\n\t\t\tvar img = canvas.getContext('2d').getImageData(0, 0, W, H)\n\t\t\tvar img2 = canvas.getContext('2d').getImageData(0, 0, W2, H2)\n\t\t\tvar data = img.data\n\t\t\tvar data2 = img2.data\n\t\t\tvar ratio_w = W / W2\n\t\t\tvar ratio_h = H / H2\n\t\t\tvar ratio_w_half = Math.ceil(ratio_w / 2)\n\t\t\tvar ratio_h_half = Math.ceil(ratio_h / 2)\n\n\t\t\tfor (var j = 0; j < H2; j++) {\n\t\t\t\tfor (var i = 0; i < W2; i++) {\n\t\t\t\t\tvar x2 = (i + j * W2) * 4\n\t\t\t\t\tvar weight = 0\n\t\t\t\t\tvar weights = 0\n\t\t\t\t\tvar weights_alpha = 0\n\t\t\t\t\tvar gx_r = 0\n\t\t\t\t\tvar gx_g = 0\n\t\t\t\t\tvar gx_b = 0\n\t\t\t\t\tvar gx_a = 0\n\t\t\t\t\tvar center_y = (j + 0.5) * ratio_h\n\t\t\t\t\tfor (var yy = Math.floor(j * ratio_h); yy < (j + 1) * ratio_h; yy++) {\n\t\t\t\t\t\tvar dy = Math.abs(center_y - (yy + 0.5)) / ratio_h_half\n\t\t\t\t\t\tvar center_x = (i + 0.5) * ratio_w\n\t\t\t\t\t\tvar w0 = dy * dy // pre-calc part of w\n\t\t\t\t\t\tfor (var xx = Math.floor(i * ratio_w); xx < (i + 1) * ratio_w; xx++) {\n\t\t\t\t\t\t\tvar dx = Math.abs(center_x - (xx + 0.5)) / ratio_w_half\n\t\t\t\t\t\t\tvar w = Math.sqrt(w0 + dx * dx)\n\t\t\t\t\t\t\tif (w >= -1 && w <= 1) {\n\t\t\t\t\t\t\t\t// hermite filter\n\t\t\t\t\t\t\t\tweight = 2 * w * w * w - 3 * w * w + 1\n\t\t\t\t\t\t\t\tif (weight > 0) {\n\t\t\t\t\t\t\t\t\tdx = 4 * (xx + yy * W)\n\t\t\t\t\t\t\t\t\t// alpha\n\t\t\t\t\t\t\t\t\tgx_a += weight * data[dx + 3]\n\t\t\t\t\t\t\t\t\tweights_alpha += weight\n\t\t\t\t\t\t\t\t\t// colors\n\t\t\t\t\t\t\t\t\tif (data[dx + 3] < 255) { weight = weight * data[dx + 3] / 250 }\n\t\t\t\t\t\t\t\t\tgx_r += weight * data[dx]\n\t\t\t\t\t\t\t\t\tgx_g += weight * data[dx + 1]\n\t\t\t\t\t\t\t\t\tgx_b += weight * data[dx + 2]\n\t\t\t\t\t\t\t\t\tweights += weight\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdata2[x2] = gx_r / weights\n\t\t\t\t\tdata2[x2 + 1] = gx_g / weights\n\t\t\t\t\tdata2[x2 + 2] = gx_b / weights\n\t\t\t\t\tdata2[x2 + 3] = gx_a / weights_alpha\n\t\t\t\t}\n\t\t\t}\n\t\t\tcanvas.getContext('2d').clearRect(0, 0, Math.max(W, W2), Math.max(H, H2))\n\t\t\tcanvas.width = W2\n\t\t\tcanvas.height = H2\n\t\t\tcanvas.getContext('2d').putImageData(img2, 0, 0)\n\t\t}\n\n\t\tvar addConflict = function($conflicts, original, replacement) {\n\n\t\t\tvar $conflict = $conflicts.find('.template').clone().removeClass('template').addClass('conflict')\n\t\t\tvar $originalDiv = $conflict.find('.original')\n\t\t\tvar $replacementDiv = $conflict.find('.replacement')\n\n\t\t\t$conflict.data('data', data)\n\n\t\t\t$conflict.find('.filename').text(original.name)\n\t\t\t$originalDiv.find('.size').text(OC.Util.humanFileSize(original.size))\n\t\t\t$originalDiv.find('.mtime').text(OC.Util.formatDate(original.mtime))\n\t\t\t// ie sucks\n\t\t\tif (replacement.size && replacement.lastModified) {\n\t\t\t\t$replacementDiv.find('.size').text(OC.Util.humanFileSize(replacement.size))\n\t\t\t\t$replacementDiv.find('.mtime').text(OC.Util.formatDate(replacement.lastModified))\n\t\t\t}\n\t\t\tvar path = original.directory + '/' + original.name\n\t\t\tvar urlSpec = {\n\t\t\t\tfile: path,\n\t\t\t\tx: 96,\n\t\t\t\ty: 96,\n\t\t\t\tc: original.etag,\n\t\t\t\tforceIcon: 0\n\t\t\t}\n\t\t\tvar previewpath = Files.generatePreviewUrl(urlSpec)\n\t\t\t// Escaping single quotes\n\t\t\tpreviewpath = previewpath.replace(/'/g, '%27')\n\t\t\t$originalDiv.find('.icon').css({ 'background-image': \"url('\" + previewpath + \"')\" })\n\t\t\tgetCroppedPreview(replacement).then(\n\t\t\t\tfunction(path) {\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}, function() {\n\t\t\t\t\tpath = OC.MimeType.getIconUrl(replacement.type)\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}\n\t\t\t)\n\t\t\t// connect checkboxes with labels\n\t\t\tvar checkboxId = $conflicts.find('.conflict').length\n\t\t\t$originalDiv.find('input:checkbox').attr('id', 'checkbox_original_' + checkboxId)\n\t\t\t$replacementDiv.find('input:checkbox').attr('id', 'checkbox_replacement_' + checkboxId)\n\n\t\t\t$conflicts.append($conflict)\n\n\t\t\t// set more recent mtime bold\n\t\t\t// ie sucks\n\t\t\tif (replacement.lastModified > original.mtime) {\n\t\t\t\t$replacementDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else if (replacement.lastModified < original.mtime) {\n\t\t\t\t$originalDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same mtime collection?\n\t\t\t}\n\n\t\t\t// set bigger size bold\n\t\t\tif (replacement.size && replacement.size > original.size) {\n\t\t\t\t$replacementDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else if (replacement.size && replacement.size < original.size) {\n\t\t\t\t$originalDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same size collection?\n\t\t\t}\n\n\t\t\t// TODO show skip action for files with same size and mtime in bottom row\n\n\t\t\t// always keep readonly files\n\n\t\t\tif (original.status === 'readonly') {\n\t\t\t\t$originalDiv\n\t\t\t\t\t.addClass('readonly')\n\t\t\t\t\t.find('input[type=\"checkbox\"]')\n\t\t\t\t\t.prop('checked', true)\n\t\t\t\t\t.prop('disabled', true)\n\t\t\t\t$originalDiv.find('.message')\n\t\t\t\t\t.text(t('core', 'read-only'))\n\t\t\t}\n\t\t}\n\t\t// var selection = controller.getSelection(data.originalFiles);\n\t\t// if (selection.defaultAction) {\n\t\t//\tcontroller[selection.defaultAction](data);\n\t\t// } else {\n\t\tvar dialogName = 'oc-dialog-fileexists-content'\n\t\tvar dialogId = '#' + dialogName\n\t\tif (this._fileexistsshown) {\n\t\t\t// add conflict\n\n\t\t\tvar $conflicts = $(dialogId + ' .conflicts')\n\t\t\taddConflict($conflicts, original, replacement)\n\n\t\t\tvar count = $(dialogId + ' .conflict').length\n\t\t\tvar title = n('core',\n\t\t\t\t'{count} file conflict',\n\t\t\t\t'{count} file conflicts',\n\t\t\t\tcount,\n\t\t\t\t{ count: count }\n\t\t\t)\n\t\t\t$(dialogId).parent().children('.oc-dialog-title').text(title)\n\n\t\t\t// recalculate dimensions\n\t\t\t$(window).trigger('resize')\n\t\t\tdialogDeferred.resolve()\n\t\t} else {\n\t\t\t// create dialog\n\t\t\tthis._fileexistsshown = true\n\t\t\t$.when(this._getFileExistsTemplate()).then(function($tmpl) {\n\t\t\t\tvar title = t('core', 'One file conflict')\n\t\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\t\tdialog_name: dialogName,\n\t\t\t\t\ttitle: title,\n\t\t\t\t\ttype: 'fileexists',\n\n\t\t\t\t\tallnewfiles: t('core', 'New Files'),\n\t\t\t\t\tallexistingfiles: t('core', 'Already existing files'),\n\n\t\t\t\t\twhy: t('core', 'Which files do you want to keep?'),\n\t\t\t\t\twhat: t('core', 'If you select both versions, the copied file will have a number added to its name.')\n\t\t\t\t})\n\t\t\t\t$('body').append($dlg)\n\n\t\t\t\tif (original && replacement) {\n\t\t\t\t\tvar $conflicts = $dlg.find('.conflicts')\n\t\t\t\t\taddConflict($conflicts, original, replacement)\n\t\t\t\t}\n\n\t\t\t\tvar buttonlist = [{\n\t\t\t\t\ttext: t('core', 'Cancel'),\n\t\t\t\t\tclasses: 'cancel',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onCancel !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onCancel(data)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: t('core', 'Continue'),\n\t\t\t\t\tclasses: 'continue',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onContinue !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onContinue($(dialogId + ' .conflict'))\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t}]\n\n\t\t\t\t$(dialogId).ocdialog({\n\t\t\t\t\twidth: 500,\n\t\t\t\t\tcloseOnEscape: true,\n\t\t\t\t\tmodal: true,\n\t\t\t\t\tbuttons: buttonlist,\n\t\t\t\t\tcloseButton: null,\n\t\t\t\t\tclose: function() {\n\t\t\t\t\t\tself._fileexistsshown = false\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t// ignore\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\t$(dialogId).css('height', 'auto')\n\n\t\t\t\tvar $primaryButton = $dlg.closest('.oc-dialog').find('button.continue')\n\t\t\t\t$primaryButton.prop('disabled', true)\n\n\t\t\t\tfunction updatePrimaryButton() {\n\t\t\t\t\tvar checkedCount = $dlg.find('.conflicts .checkbox:checked').length\n\t\t\t\t\t$primaryButton.prop('disabled', checkedCount === 0)\n\t\t\t\t}\n\n\t\t\t\t// add checkbox toggling actions\n\t\t\t\t$(dialogId).find('.allnewfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.allexistingfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .original:not(.readonly) input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement,.original:not(.readonly)', function() {\n\t\t\t\t\tvar $checkbox = $(this).find('input[type=\"checkbox\"]')\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement input[type=\"checkbox\"],.original:not(.readonly) input[type=\"checkbox\"]', function() {\n\t\t\t\t\tvar $checkbox = $(this)\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\n\t\t\t\t// update counters\n\t\t\t\t$(dialogId).on('click', '.replacement,.allnewfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\t\t\t\t$(dialogId).on('click', '.original,.allexistingfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .original input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count')\n\t\t\t\t\t\t\t.text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\n\t\t\t\tdialogDeferred.resolve()\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdialogDeferred.reject()\n\t\t\t\t\talert(t('core', 'Error loading file exists template'))\n\t\t\t\t})\n\t\t}\n\t\t// }\n\t\treturn dialogDeferred.promise()\n\t},\n\t// get the gridview setting and set the input accordingly\n\t_getGridSettings: function() {\n\t\tvar self = this\n\t\t$.get(OC.generateUrl('/apps/files/api/v1/showgridview'), function(response) {\n\t\t\tself.$showGridView.get(0).checked = response.gridview\n\t\t\tself.$showGridView.next('#picker-view-toggle')\n\t\t\t\t.removeClass('icon-toggle-filelist icon-toggle-pictures')\n\t\t\t\t.addClass(response.gridview ? 'icon-toggle-filelist' : 'icon-toggle-pictures')\n\t\t\t$('.list-container').toggleClass('view-grid', response.gridview)\n\t\t})\n\t},\n\t_onGridviewChange: function() {\n\t\tvar show = this.$showGridView.is(':checked')\n\t\t// only save state if user is logged in\n\t\tif (OC.currentUser) {\n\t\t\t$.post(OC.generateUrl('/apps/files/api/v1/showgridview'), {\n\t\t\t\tshow: show\n\t\t\t})\n\t\t}\n\t\tthis.$showGridView.next('#picker-view-toggle')\n\t\t\t.removeClass('icon-toggle-filelist icon-toggle-pictures')\n\t\t\t.addClass(show ? 'icon-toggle-filelist' : 'icon-toggle-pictures')\n\t\t$('.list-container').toggleClass('view-grid', show)\n\t},\n\t_getFilePickerTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$filePickerTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('core', 'templates', 'filepicker.html'), function(tmpl) {\n\t\t\t\tself.$filePickerTemplate = $(tmpl)\n\t\t\t\tself.$listTmpl = self.$filePickerTemplate.find('.filelist tbody tr:first-child').detach()\n\t\t\t\tdefer.resolve(self.$filePickerTemplate)\n\t\t\t})\n\t\t\t\t.fail(function(jqXHR, textStatus, errorThrown) {\n\t\t\t\t\tdefer.reject(jqXHR.status, errorThrown)\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$filePickerTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getMessageTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$messageTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('core', 'templates', 'message.html'), function(tmpl) {\n\t\t\t\tself.$messageTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$messageTemplate)\n\t\t\t})\n\t\t\t\t.fail(function(jqXHR, textStatus, errorThrown) {\n\t\t\t\t\tdefer.reject(jqXHR.status, errorThrown)\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$messageTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getFileExistsTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$fileexistsTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('files', 'templates', 'fileexists.html'), function(tmpl) {\n\t\t\t\tself.$fileexistsTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$fileexistsTemplate)\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdefer.reject()\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$fileexistsTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getFileList: function(dir, mimeType) { // this is only used by the spreedme app atm\n\t\tif (typeof (mimeType) === 'string') {\n\t\t\tmimeType = [mimeType]\n\t\t}\n\n\t\treturn $.getJSON(\n\t\t\tOC.filePath('files', 'ajax', 'list.php'),\n\t\t\t{\n\t\t\t\tdir: dir,\n\t\t\t\tmimetypes: JSON.stringify(mimeType)\n\t\t\t}\n\t\t)\n\t},\n\n\t/**\n\t * fills the filepicker with files\n\t */\n\t_fillFilePicker: function(dir) {\n\t\tvar self = this\n\t\tthis.$filelist.empty()\n\t\tthis.$filePicker.find('.emptycontent').hide()\n\t\tthis.$filelistContainer.addClass('icon-loading')\n\t\tthis.$filePicker.data('path', dir)\n\t\tvar filter = this.$filePicker.data('mimetype')\n\t\tvar advancedFilter = this.$filePicker.data('filter')\n\t\tif (typeof (filter) === 'string') {\n\t\t\tfilter = [filter]\n\t\t}\n\t\tself.$fileListHeader.find('.sort-indicator').addClass('hidden').removeClass('icon-triangle-n').removeClass('icon-triangle-s')\n\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').removeClass('hidden')\n\t\tif (self.filepicker.sortOrder === 'asc') {\n\t\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').addClass('icon-triangle-n')\n\t\t} else {\n\t\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').addClass('icon-triangle-s')\n\t\t}\n\t\tself.filepicker.filesClient.getFolderContents(dir).then(function(status, files) {\n\t\t\tself.filelist = files\n\t\t\tif (filter && filter.length > 0 && filter.indexOf('*') === -1) {\n\t\t\t\tfiles = files.filter(function(file) {\n\t\t\t\t\treturn file.type === 'dir' || filter.indexOf(file.mimetype) !== -1\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (advancedFilter) {\n\t\t\t\tfiles = files.filter(advancedFilter)\n\t\t\t}\n\n\t\t\t// Check if the showHidden input field exist and if it exist follow it\n\t\t\t// Otherwise just show the hidden files\n\t\t\tconst showHiddenInput = document.getElementById('showHiddenFiles')\n\t\t\tconst showHidden = showHiddenInput === null || showHiddenInput.value === \"1\"\n\t\t\tif (!showHidden) {\n\t\t\t\tfiles = files.filter(function(file) {\n\t\t\t\t\treturn !file.name.startsWith('.')\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tvar Comparators = {\n\t\t\t\tname: function(fileInfo1, fileInfo2) {\n\t\t\t\t\tif (fileInfo1.type === 'dir' && fileInfo2.type !== 'dir') {\n\t\t\t\t\t\treturn -1\n\t\t\t\t\t}\n\t\t\t\t\tif (fileInfo1.type !== 'dir' && fileInfo2.type === 'dir') {\n\t\t\t\t\t\treturn 1\n\t\t\t\t\t}\n\t\t\t\t\treturn OC.Util.naturalSortCompare(fileInfo1.name, fileInfo2.name)\n\t\t\t\t},\n\t\t\t\tsize: function(fileInfo1, fileInfo2) {\n\t\t\t\t\treturn fileInfo1.size - fileInfo2.size\n\t\t\t\t},\n\t\t\t\tmtime: function(fileInfo1, fileInfo2) {\n\t\t\t\t\treturn fileInfo1.mtime - fileInfo2.mtime\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar comparator = Comparators[self.filepicker.sortField] || Comparators.name\n\t\t\tfiles = files.sort(function(file1, file2) {\n\t\t\t\tvar isFavorite = function(fileInfo) {\n\t\t\t\t\treturn fileInfo.tags && fileInfo.tags.indexOf(OC.TAG_FAVORITE) >= 0\n\t\t\t\t}\n\n\t\t\t\tif (isFavorite(file1) && !isFavorite(file2)) {\n\t\t\t\t\treturn -1\n\t\t\t\t} else if (!isFavorite(file1) && isFavorite(file2)) {\n\t\t\t\t\treturn 1\n\t\t\t\t}\n\n\t\t\t\treturn self.filepicker.sortOrder === 'asc' ? comparator(file1, file2) : -comparator(file1, file2)\n\t\t\t})\n\n\t\t\tself._fillSlug()\n\n\t\t\tif (files.length === 0) {\n\t\t\t\tself.$filePicker.find('.emptycontent').show()\n\t\t\t\tself.$fileListHeader.hide()\n\t\t\t} else {\n\t\t\t\tself.$filePicker.find('.emptycontent').hide()\n\t\t\t\tself.$fileListHeader.show()\n\t\t\t}\n\n\t\t\tself.$filelist.empty();\n\n\t\t\t$.each(files, function(idx, entry) {\n\t\t\t\tentry.icon = OC.MimeType.getIconUrl(entry.mimetype)\n\t\t\t\tvar simpleSize, sizeColor\n\t\t\t\tif (typeof (entry.size) !== 'undefined' && entry.size >= 0) {\n\t\t\t\t\tsimpleSize = OC.Util.humanFileSize(parseInt(entry.size, 10), true)\n\t\t\t\t\tsizeColor = Math.round(160 - Math.pow((entry.size / (1024 * 1024)), 2))\n\t\t\t\t} else {\n\t\t\t\t\tsimpleSize = t('files', 'Pending')\n\t\t\t\t\tsizeColor = 80\n\t\t\t\t}\n\n\t\t\t\t// split the filename in half if the size is bigger than 20 char\n\t\t\t\t// for ellipsis\n\t\t\t\tif (entry.name.length >= 10) {\n\t\t\t\t\t// leave maximum 10 letters\n\t\t\t\t\tvar split = Math.min(Math.floor(entry.name.length / 2), 10)\n\t\t\t\t\tvar filename1 = entry.name.substr(0, entry.name.length - split)\n\t\t\t\t\tvar filename2 = entry.name.substr(entry.name.length - split)\n\t\t\t\t} else {\n\t\t\t\t\tvar filename1 = entry.name\n\t\t\t\t\tvar filename2 = ''\n\t\t\t\t}\n\n\t\t\t\tvar $row = self.$listTmpl.octemplate({\n\t\t\t\t\ttype: entry.type,\n\t\t\t\t\tdir: dir,\n\t\t\t\t\tfilename: entry.name,\n\t\t\t\t\tfilename1: filename1,\n\t\t\t\t\tfilename2: filename2,\n\t\t\t\t\tdate: OC.Util.relativeModifiedDate(entry.mtime),\n\t\t\t\t\tsize: simpleSize,\n\t\t\t\t\tsizeColor: sizeColor,\n\t\t\t\t\ticon: entry.icon\n\t\t\t\t})\n\t\t\t\tif (entry.type === 'file') {\n\t\t\t\t\tvar urlSpec = {\n\t\t\t\t\t\tfile: dir + '/' + entry.name,\n\t\t\t\t\t\tx: 100,\n\t\t\t\t\t\ty: 100\n\t\t\t\t\t}\n\t\t\t\t\tvar img = new Image()\n\t\t\t\t\tvar previewUrl = OC.generateUrl('/core/preview.png?') + $.param(urlSpec)\n\t\t\t\t\timg.onload = function() {\n\t\t\t\t\t\tif (img.width > 5) {\n\t\t\t\t\t\t\t$row.find('td.filename').attr('style', 'background-image:url(' + previewUrl + ')')\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\timg.src = previewUrl\n\t\t\t\t}\n\t\t\t\tself.$filelist.append($row)\n\t\t\t})\n\n\t\t\tself.$filelistContainer.removeClass('icon-loading')\n\t\t})\n\t},\n\t/**\n\t * fills the tree list with directories\n\t */\n\t_fillSlug: function() {\n\t\tvar addButton = this.$dirTree.find('.actions.creatable').detach()\n\t\tthis.$dirTree.empty()\n\t\tvar self = this\n\n\t\tself.$dirTree.append(addButton)\n\n\t\tvar dir\n\t\tvar path = this.$filePicker.data('path')\n\t\tvar $template = $('<div data-dir=\"{dir}\"><a>{name}</a></div>').addClass('crumb')\n\t\tif (path) {\n\t\t\tvar paths = path.split('/')\n\t\t\t$.each(paths, function(index, dir) {\n\t\t\t\tdir = paths.pop()\n\t\t\t\tif (dir === '') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tself.$dirTree.prepend($template.octemplate({\n\t\t\t\t\tdir: paths.join('/') + '/' + dir,\n\t\t\t\t\tname: dir\n\t\t\t\t}))\n\t\t\t})\n\t\t}\n\n\t\t$template.octemplate({\n\t\t\tdir: '',\n\t\t\tname: '' // Ugly but works ;)\n\t\t}, { escapeFunction: null }).prependTo(this.$dirTree)\n\n\t},\n\t/**\n\t * handle selection made in the tree list\n\t */\n\t_handleTreeListSelect: function(event, type) {\n\t\tvar self = event.data\n\t\tvar dir = $(event.target).closest('.crumb').data('dir')\n\t\tself._fillFilePicker(dir)\n\t\tvar getOcDialog = (event.target).closest('.oc-dialog')\n\t\tvar buttonEnableDisable = $('.primary', getOcDialog)\n\t\tthis._changeButtonsText(type, dir.split(/[/]+/).pop())\n\t\tif (this.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || this.$filePicker.data('allowDirectoryChooser')) {\n\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t} else {\n\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t}\n\t},\n\t/**\n\t * handle clicks made in the filepicker\n\t */\n\t_handlePickerClick: function(event, $element, type) {\n\t\tvar getOcDialog = this.$filePicker.closest('.oc-dialog')\n\t\tvar buttonEnableDisable = getOcDialog.find('.primary')\n\t\tif ($element.data('type') === 'file') {\n\t\t\tif (this.$filePicker.data('multiselect') !== true || !event.ctrlKey) {\n\t\t\t\tthis.$filelist.find('.filepicker_element_selected').removeClass('filepicker_element_selected')\n\t\t\t}\n\t\t\t$element.toggleClass('filepicker_element_selected')\n\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t} else if ($element.data('type') === 'dir') {\n\t\t\tthis._fillFilePicker(this.$filePicker.data('path') + '/' + $element.data('entryname'))\n\t\t\tthis._changeButtonsText(type, $element.data('entryname'))\n\t\t\tif (this.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || this.$filePicker.data('allowDirectoryChooser')) {\n\t\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t\t} else {\n\t\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Handle\n\t * @param type of action\n\t * @param dir on which to change buttons text\n\t * @private\n\t */\n\t_changeButtonsText: function(type, dir) {\n\t\tvar copyText = dir === '' ? t('core', 'Copy') : t('core', 'Copy to {folder}', { folder: dir })\n\t\tvar moveText = dir === '' ? t('core', 'Move') : t('core', 'Move to {folder}', { folder: dir })\n\t\tvar buttons = $('.oc-dialog-buttonrow button')\n\t\tswitch (type) {\n\t\t\tcase this.FILEPICKER_TYPE_CHOOSE:\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_CUSTOM:\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_COPY:\n\t\t\t\tbuttons.text(copyText)\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_MOVE:\n\t\t\t\tbuttons.text(moveText)\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_COPY_MOVE:\n\t\t\t\tbuttons.eq(0).text(copyText)\n\t\t\t\tbuttons.eq(1).text(moveText)\n\t\t\t\tbreak\n\t\t}\n\t}\n}\n\nexport default Dialogs\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport { emit } from '@nextcloud/event-bus'\n\n/**\n * @private\n * @param {Document} global the document to read the initial value from\n * @param {Function} emit the function to invoke for every new token\n * @return {object}\n */\nexport const manageToken = (global, emit) => {\n\tlet token = global.getElementsByTagName('head')[0].getAttribute('data-requesttoken')\n\n\treturn {\n\t\tgetToken: () => token,\n\t\tsetToken: newToken => {\n\t\t\ttoken = newToken\n\n\t\t\temit('csrf-token-update', {\n\t\t\t\ttoken,\n\t\t\t})\n\t\t},\n\t}\n}\n\nconst manageFromDocument = manageToken(document, emit)\n\n/**\n * @return {string}\n */\nexport const getToken = manageFromDocument.getToken\n\n/**\n * @param {string} newToken new token\n */\nexport const setToken = manageFromDocument.setToken\n","/**\n * @copyright 2012 Robin Appelman icewind1991@gmail.com\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Lukas Reschke <lukas@statuscode.ch>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Thomas Müller <thomas.mueller@tmit.eu>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n/* eslint-disable */\nimport $ from 'jquery'\n\nimport { getToken } from './requesttoken'\n\n/**\n * Create a new event source\n * @param {string} src\n * @param {object} [data] to be send as GET\n *\n * @constructs OCEventSource\n */\nconst OCEventSource = function(src, data) {\n\tvar dataStr = ''\n\tvar name\n\tvar joinChar\n\tthis.typelessListeners = []\n\tthis.closed = false\n\tthis.listeners = {}\n\tif (data) {\n\t\tfor (name in data) {\n\t\t\tdataStr += name + '=' + encodeURIComponent(data[name]) + '&'\n\t\t}\n\t}\n\tdataStr += 'requesttoken=' + encodeURIComponent(getToken())\n\tif (!this.useFallBack && typeof EventSource !== 'undefined') {\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.source = new EventSource(src + joinChar + dataStr)\n\t\tthis.source.onmessage = function(e) {\n\t\t\tfor (var i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](JSON.parse(e.data))\n\t\t\t}\n\t\t}.bind(this)\n\t} else {\n\t\tvar iframeId = 'oc_eventsource_iframe_' + OCEventSource.iframeCount\n\t\tOCEventSource.fallBackSources[OCEventSource.iframeCount] = this\n\t\tthis.iframe = $('<iframe></iframe>')\n\t\tthis.iframe.attr('id', iframeId)\n\t\tthis.iframe.hide()\n\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.iframe.attr('src', src + joinChar + 'fallback=true&fallback_id=' + OCEventSource.iframeCount + '&' + dataStr)\n\t\t$('body').append(this.iframe)\n\t\tthis.useFallBack = true\n\t\tOCEventSource.iframeCount++\n\t}\n\t// add close listener\n\tthis.listen('__internal__', function(data) {\n\t\tif (data === 'close') {\n\t\t\tthis.close()\n\t\t}\n\t}.bind(this))\n}\nOCEventSource.fallBackSources = []\nOCEventSource.iframeCount = 0// number of fallback iframes\nOCEventSource.fallBackCallBack = function(id, type, data) {\n\tOCEventSource.fallBackSources[id].fallBackCallBack(type, data)\n}\nOCEventSource.prototype = {\n\ttypelessListeners: [],\n\tiframe: null,\n\tlisteners: {}, // only for fallback\n\tuseFallBack: false,\n\t/**\n\t * Fallback callback for browsers that don't have the\n\t * native EventSource object.\n\t *\n\t * Calls the registered listeners.\n\t *\n\t * @private\n\t * @param {String} type event type\n\t * @param {Object} data received data\n\t */\n\tfallBackCallBack: function(type, data) {\n\t\tvar i\n\t\t// ignore messages that might appear after closing\n\t\tif (this.closed) {\n\t\t\treturn\n\t\t}\n\t\tif (type) {\n\t\t\tif (typeof this.listeners.done !== 'undefined') {\n\t\t\t\tfor (i = 0; i < this.listeners[type].length; i++) {\n\t\t\t\t\tthis.listeners[type][i](data)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](data)\n\t\t\t}\n\t\t}\n\t},\n\tlastLength: 0, // for fallback\n\t/**\n\t * Listen to a given type of events.\n\t *\n\t * @param {String} type event type\n\t * @param {Function} callback event callback\n\t */\n\tlisten: function(type, callback) {\n\t\tif (callback && callback.call) {\n\n\t\t\tif (type) {\n\t\t\t\tif (this.useFallBack) {\n\t\t\t\t\tif (!this.listeners[type]) {\n\t\t\t\t\t\tthis.listeners[type] = []\n\t\t\t\t\t}\n\t\t\t\t\tthis.listeners[type].push(callback)\n\t\t\t\t} else {\n\t\t\t\t\tthis.source.addEventListener(type, function(e) {\n\t\t\t\t\t\tif (typeof e.data !== 'undefined') {\n\t\t\t\t\t\t\tcallback(JSON.parse(e.data))\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcallback('')\n\t\t\t\t\t\t}\n\t\t\t\t\t}, false)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.typelessListeners.push(callback)\n\t\t\t}\n\t\t}\n\t},\n\t/**\n\t * Closes this event source.\n\t */\n\tclose: function() {\n\t\tthis.closed = true\n\t\tif (typeof this.source !== 'undefined') {\n\t\t\tthis.source.close()\n\t\t}\n\t}\n}\n\nexport default OCEventSource\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\n\nimport { menuSpeed } from './constants'\n\nexport let currentMenu = null\nexport let currentMenuToggle = null\n\n/**\n * For menu toggling\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n * @param {Function | undefined} toggle callback invoked everytime the menu is opened\n * @param {boolean} headerMenu is this a top right header menu?\n * @return {void}\n */\nexport const registerMenu = function($toggle, $menuEl, toggle, headerMenu) {\n\t$menuEl.addClass('menu')\n\tconst isClickableElement = $toggle.prop('tagName') === 'A' || $toggle.prop('tagName') === 'BUTTON'\n\n\t// On link and button, the enter key trigger a click event\n\t// Only use the click to avoid two fired events\n\t$toggle.on(isClickableElement ? 'click.menu' : 'click.menu keyup.menu', function(event) {\n\t\t// prevent the link event (append anchor to URL)\n\t\tevent.preventDefault()\n\n\t\t// allow enter key as a trigger\n\t\tif (event.key && event.key !== 'Enter') {\n\t\t\treturn\n\t\t}\n\n\t\tif ($menuEl.is(currentMenu)) {\n\t\t\thideMenus()\n\t\t\treturn\n\t\t} else if (currentMenu) {\n\t\t\t// another menu was open?\n\t\t\t// close it\n\t\t\thideMenus()\n\t\t}\n\n\t\tif (headerMenu === true) {\n\t\t\t$menuEl.parent().addClass('openedMenu')\n\t\t}\n\n\t\t// Set menu to expanded\n\t\t$toggle.attr('aria-expanded', true)\n\n\t\t$menuEl.slideToggle(menuSpeed, toggle)\n\t\tcurrentMenu = $menuEl\n\t\tcurrentMenuToggle = $toggle\n\t})\n}\n\n/**\n * Unregister a previously registered menu\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n */\nexport const unregisterMenu = ($toggle, $menuEl) => {\n\t// close menu if opened\n\tif ($menuEl.is(currentMenu)) {\n\t\thideMenus()\n\t}\n\t$toggle.off('click.menu').removeClass('menutoggle')\n\t$menuEl.removeClass('menu')\n}\n\n/**\n * Hides any open menus\n *\n * @param {Function} complete callback when the hiding animation is done\n */\nexport const hideMenus = function(complete) {\n\tif (currentMenu) {\n\t\tconst lastMenu = currentMenu\n\t\tcurrentMenu.trigger(new $.Event('beforeHide'))\n\t\tcurrentMenu.slideUp(menuSpeed, function() {\n\t\t\tlastMenu.trigger(new $.Event('afterHide'))\n\t\t\tif (complete) {\n\t\t\t\tcomplete.apply(this, arguments)\n\t\t\t}\n\t\t})\n\t}\n\n\t// Set menu to closed\n\t$('.menutoggle').attr('aria-expanded', false)\n\n\t$('.openedMenu').removeClass('openedMenu')\n\tcurrentMenu = null\n\tcurrentMenuToggle = null\n}\n\n/**\n * Shows a given element as menu\n *\n * @param {object} [$toggle=null] menu toggle\n * @param {object} $menuEl menu element\n * @param {Function} complete callback when the showing animation is done\n */\nexport const showMenu = ($toggle, $menuEl, complete) => {\n\tif ($menuEl.is(currentMenu)) {\n\t\treturn\n\t}\n\thideMenus()\n\tcurrentMenu = $menuEl\n\tcurrentMenuToggle = $toggle\n\t$menuEl.trigger(new $.Event('beforeShow'))\n\t$menuEl.show()\n\t$menuEl.trigger(new $.Event('afterShow'))\n\t// no animation\n\tif (_.isFunction(complete)) {\n\t\tcomplete()\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nexport const coreApps = ['', 'admin', 'log', 'core/search', 'core', '3rdparty']\nexport const menuSpeed = 50\nexport const PERMISSION_NONE = 0\nexport const PERMISSION_CREATE = 4\nexport const PERMISSION_READ = 1\nexport const PERMISSION_UPDATE = 2\nexport const PERMISSION_DELETE = 8\nexport const PERMISSION_SHARE = 16\nexport const PERMISSION_ALL = 31\nexport const TAG_FAVORITE = '_$!<Favorite>!$_'\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nconst isAdmin = !!window._oc_isadmin\n\n/**\n * Returns whether the current user is an administrator\n *\n * @return {boolean} true if the user is an admin, false otherwise\n * @since 9.0.0\n */\nexport const isUserAdmin = () => isAdmin\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\n// This var is global because it's shared across webpack bundles\nwindow._oc_l10n_registry_translations = window._oc_l10n_registry_translations || {}\nwindow._oc_l10n_registry_plural_functions = window._oc_l10n_registry_plural_functions || {}\n\n/**\n * @param {string} appId the app id\n * @param {object} translations the translations list\n * @param {Function} pluralFunction the translations list\n */\nconst register = (appId, translations, pluralFunction) => {\n\twindow._oc_l10n_registry_translations[appId] = translations\n\twindow._oc_l10n_registry_plural_functions[appId] = pluralFunction\n}\n\n/**\n * @param {string} appId the app id\n * @param {object} translations the translations list\n * @param {Function} pluralFunction the translations list\n */\nconst extend = (appId, translations, pluralFunction) => {\n\twindow._oc_l10n_registry_translations[appId] = Object.assign(\n\t\twindow._oc_l10n_registry_translations[appId],\n\t\ttranslations\n\t)\n\twindow._oc_l10n_registry_plural_functions[appId] = pluralFunction\n}\n\n/**\n * @param {string} appId the app id\n * @param {object} translations the translations list\n * @param {Function} pluralFunction the translations list\n */\nexport const registerAppTranslations = (appId, translations, pluralFunction) => {\n\tif (!hasAppTranslations(appId)) {\n\t\tregister(appId, translations, pluralFunction)\n\t} else {\n\t\textend(appId, translations, pluralFunction)\n\t}\n}\n\n/**\n * @param {string} appId the app id\n */\nexport const unregisterAppTranslations = appId => {\n\tdelete window._oc_l10n_registry_translations[appId]\n\tdelete window._oc_l10n_registry_plural_functions[appId]\n}\n\n/**\n * @param {string} appId the app id\n * @return {boolean}\n */\nexport const hasAppTranslations = appId => {\n\treturn window._oc_l10n_registry_translations[appId] !== undefined\n\t\t&& window._oc_l10n_registry_plural_functions[appId] !== undefined\n}\n\n/**\n * @param {string} appId the app id\n * @return {object}\n */\nexport const getAppTranslations = appId => {\n\treturn {\n\t\ttranslations: window._oc_l10n_registry_translations[appId] || {},\n\t\tpluralFunction: window._oc_l10n_registry_plural_functions[appId],\n\t}\n}\n","/**\n * Copyright (c) 2014 Vincent Petry <pvince81@owncloud.com>\n * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Kesselberg <mail@danielkesselberg.de>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Morris Jobke <hey@morrisjobke.de>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport DOMPurify from 'dompurify'\nimport Handlebars from 'handlebars'\nimport identity from 'lodash/fp/identity'\nimport escapeHTML from 'escape-html'\nimport { generateFilePath } from '@nextcloud/router'\n\nimport OC from './index'\nimport {\n\tgetAppTranslations,\n\thasAppTranslations,\n\tregisterAppTranslations,\n\tunregisterAppTranslations,\n} from './l10n-registry'\n\n/**\n * L10N namespace with localization functions.\n *\n * @namespace OC.L10n\n */\nconst L10n = {\n\n\t/**\n\t * Load an app's translation bundle if not loaded already.\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Function} callback callback to be called when\n\t * the translations are loaded\n\t * @return {Promise} promise\n\t */\n\tload(appName, callback) {\n\t\t// already available ?\n\t\tif (hasAppTranslations(appName) || OC.getLocale() === 'en') {\n\t\t\tconst deferred = $.Deferred()\n\t\t\tconst promise = deferred.promise()\n\t\t\tpromise.then(callback)\n\t\t\tdeferred.resolve()\n\t\t\treturn promise\n\t\t}\n\n\t\tconst self = this\n\t\tconst url = generateFilePath(appName, 'l10n', OC.getLocale() + '.json')\n\n\t\t// load JSON translation bundle per AJAX\n\t\treturn $.get(url)\n\t\t\t.then(\n\t\t\t\tfunction(result) {\n\t\t\t\t\tif (result.translations) {\n\t\t\t\t\t\tself.register(appName, result.translations, result.pluralForm)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t.then(callback)\n\t},\n\n\t/**\n\t * Register an app's translation bundle.\n\t *\n\t * @param {string} appName name of the app\n\t * @param {object<string, string>} bundle bundle\n\t */\n\tregister(appName, bundle) {\n\t\tregisterAppTranslations(appName, bundle, this._getPlural)\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_unregister: unregisterAppTranslations,\n\n\t/**\n\t * Translate a string\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} text the string to translate\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {number} [count] number to replace %n with\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @param {boolean} [options.sanitize=true] enable/disable sanitization (by default enabled)\n\t * @return {string}\n\t */\n\ttranslate(app, text, vars, count, options) {\n\t\tconst defaultOptions = {\n\t\t\tescape: true,\n\t\t\tsanitize: true,\n\t\t}\n\t\tconst allOptions = options || {}\n\t\t_.defaults(allOptions, defaultOptions)\n\n\t\tconst optSanitize = allOptions.sanitize ? DOMPurify.sanitize : identity\n\t\tconst optEscape = allOptions.escape ? escapeHTML : identity\n\n\t\t// TODO: cache this function to avoid inline recreation\n\t\t// of the same function over and over again in case\n\t\t// translate() is used in a loop\n\t\tconst _build = function(text, vars, count) {\n\t\t\treturn text.replace(/%n/g, count).replace(/{([^{}]*)}/g,\n\t\t\t\tfunction(a, b) {\n\t\t\t\t\tconst r = vars[b]\n\t\t\t\t\tif (typeof r === 'string' || typeof r === 'number') {\n\t\t\t\t\t\treturn optSanitize(optEscape(r))\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn optSanitize(a)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\t\tlet translation = text\n\t\tconst bundle = getAppTranslations(app)\n\t\tconst value = bundle.translations[text]\n\t\tif (typeof (value) !== 'undefined') {\n\t\t\ttranslation = value\n\t\t}\n\n\t\tif (typeof vars === 'object' || count !== undefined) {\n\t\t\treturn optSanitize(_build(translation, vars, count))\n\t\t} else {\n\t\t\treturn optSanitize(translation)\n\t\t}\n\t},\n\n\t/**\n\t * Translate a plural string\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} textSingular the string to translate for exactly one object\n\t * @param {string} textPlural the string to translate for n objects\n\t * @param {number} count number to determine whether to use singular or plural\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @return {string} Translated string\n\t */\n\ttranslatePlural(app, textSingular, textPlural, count, vars, options) {\n\t\tconst identifier = '_' + textSingular + '_::_' + textPlural + '_'\n\t\tconst bundle = getAppTranslations(app)\n\t\tconst value = bundle.translations[identifier]\n\t\tif (typeof (value) !== 'undefined') {\n\t\t\tconst translation = value\n\t\t\tif ($.isArray(translation)) {\n\t\t\t\tconst plural = bundle.pluralFunction(count)\n\t\t\t\treturn this.translate(app, translation[plural], vars, count, options)\n\t\t\t}\n\t\t}\n\n\t\tif (count === 1) {\n\t\t\treturn this.translate(app, textSingular, vars, count, options)\n\t\t} else {\n\t\t\treturn this.translate(app, textPlural, vars, count, options)\n\t\t}\n\t},\n\n\t/**\n\t * The plural function taken from symfony\n\t *\n\t * @param {number} number the number of elements\n\t * @return {number}\n\t * @private\n\t */\n\t_getPlural(number) {\n\t\tlet language = OC.getLanguage()\n\t\tif (language === 'pt-BR') {\n\t\t\t// temporary set a locale for brazilian\n\t\t\tlanguage = 'xbr'\n\t\t}\n\n\t\tif (typeof language === 'undefined' || language === '') {\n\t\t\treturn (number === 1) ? 0 : 1\n\t\t}\n\n\t\tif (language.length > 3) {\n\t\t\tlanguage = language.substring(0, language.lastIndexOf('-'))\n\t\t}\n\n\t\t/*\n\t\t * The plural rules are derived from code of the Zend Framework (2010-09-25),\n\t\t * which is subject to the new BSD license (http://framework.zend.com/license/new-bsd).\n\t\t * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n\t\t */\n\t\tswitch (language) {\n\t\tcase 'az':\n\t\tcase 'bo':\n\t\tcase 'dz':\n\t\tcase 'id':\n\t\tcase 'ja':\n\t\tcase 'jv':\n\t\tcase 'ka':\n\t\tcase 'km':\n\t\tcase 'kn':\n\t\tcase 'ko':\n\t\tcase 'ms':\n\t\tcase 'th':\n\t\tcase 'tr':\n\t\tcase 'vi':\n\t\tcase 'zh':\n\t\t\treturn 0\n\n\t\tcase 'af':\n\t\tcase 'bn':\n\t\tcase 'bg':\n\t\tcase 'ca':\n\t\tcase 'da':\n\t\tcase 'de':\n\t\tcase 'el':\n\t\tcase 'en':\n\t\tcase 'eo':\n\t\tcase 'es':\n\t\tcase 'et':\n\t\tcase 'eu':\n\t\tcase 'fa':\n\t\tcase 'fi':\n\t\tcase 'fo':\n\t\tcase 'fur':\n\t\tcase 'fy':\n\t\tcase 'gl':\n\t\tcase 'gu':\n\t\tcase 'ha':\n\t\tcase 'he':\n\t\tcase 'hu':\n\t\tcase 'is':\n\t\tcase 'it':\n\t\tcase 'ku':\n\t\tcase 'lb':\n\t\tcase 'ml':\n\t\tcase 'mn':\n\t\tcase 'mr':\n\t\tcase 'nah':\n\t\tcase 'nb':\n\t\tcase 'ne':\n\t\tcase 'nl':\n\t\tcase 'nn':\n\t\tcase 'no':\n\t\tcase 'oc':\n\t\tcase 'om':\n\t\tcase 'or':\n\t\tcase 'pa':\n\t\tcase 'pap':\n\t\tcase 'ps':\n\t\tcase 'pt':\n\t\tcase 'so':\n\t\tcase 'sq':\n\t\tcase 'sv':\n\t\tcase 'sw':\n\t\tcase 'ta':\n\t\tcase 'te':\n\t\tcase 'tk':\n\t\tcase 'ur':\n\t\tcase 'zu':\n\t\t\treturn (number === 1) ? 0 : 1\n\n\t\tcase 'am':\n\t\tcase 'bh':\n\t\tcase 'fil':\n\t\tcase 'fr':\n\t\tcase 'gun':\n\t\tcase 'hi':\n\t\tcase 'hy':\n\t\tcase 'ln':\n\t\tcase 'mg':\n\t\tcase 'nso':\n\t\tcase 'xbr':\n\t\tcase 'ti':\n\t\tcase 'wa':\n\t\t\treturn ((number === 0) || (number === 1)) ? 0 : 1\n\n\t\tcase 'be':\n\t\tcase 'bs':\n\t\tcase 'hr':\n\t\tcase 'ru':\n\t\tcase 'sh':\n\t\tcase 'sr':\n\t\tcase 'uk':\n\t\t\treturn ((number % 10 === 1) && (number % 100 !== 11)) ? 0 : (((number % 10 >= 2) && (number % 10 <= 4) && ((number % 100 < 10) || (number % 100 >= 20))) ? 1 : 2)\n\n\t\tcase 'cs':\n\t\tcase 'sk':\n\t\t\treturn (number === 1) ? 0 : (((number >= 2) && (number <= 4)) ? 1 : 2)\n\n\t\tcase 'ga':\n\t\t\treturn (number === 1) ? 0 : ((number === 2) ? 1 : 2)\n\n\t\tcase 'lt':\n\t\t\treturn ((number % 10 === 1) && (number % 100 !== 11)) ? 0 : (((number % 10 >= 2) && ((number % 100 < 10) || (number % 100 >= 20))) ? 1 : 2)\n\n\t\tcase 'sl':\n\t\t\treturn (number % 100 === 1) ? 0 : ((number % 100 === 2) ? 1 : (((number % 100 === 3) || (number % 100 === 4)) ? 2 : 3))\n\n\t\tcase 'mk':\n\t\t\treturn (number % 10 === 1) ? 0 : 1\n\n\t\tcase 'mt':\n\t\t\treturn (number === 1) ? 0 : (((number === 0) || ((number % 100 > 1) && (number % 100 < 11))) ? 1 : (((number % 100 > 10) && (number % 100 < 20)) ? 2 : 3))\n\n\t\tcase 'lv':\n\t\t\treturn (number === 0) ? 0 : (((number % 10 === 1) && (number % 100 !== 11)) ? 1 : 2)\n\n\t\tcase 'pl':\n\t\t\treturn (number === 1) ? 0 : (((number % 10 >= 2) && (number % 10 <= 4) && ((number % 100 < 12) || (number % 100 > 14))) ? 1 : 2)\n\n\t\tcase 'cy':\n\t\t\treturn (number === 1) ? 0 : ((number === 2) ? 1 : (((number === 8) || (number === 11)) ? 2 : 3))\n\n\t\tcase 'ro':\n\t\t\treturn (number === 1) ? 0 : (((number === 0) || ((number % 100 > 0) && (number % 100 < 20))) ? 1 : 2)\n\n\t\tcase 'ar':\n\t\t\treturn (number === 0) ? 0 : ((number === 1) ? 1 : ((number === 2) ? 2 : (((number % 100 >= 3) && (number % 100 <= 10)) ? 3 : (((number % 100 >= 11) && (number % 100 <= 99)) ? 4 : 5))))\n\n\t\tdefault:\n\t\t\treturn 0\n\t\t}\n\t},\n}\n\nexport default L10n\n\n/**\n * Returns the user's locale\n *\n * @return {string} locale string\n */\nexport const getLocale = () => $('html').data('locale') ?? 'en'\n\n/**\n * Returns the user's language\n *\n * @return {string} language string\n */\nexport const getLanguage = () => $('html').prop('lang')\n\nHandlebars.registerHelper('t', function(app, text) {\n\treturn L10n.translate(app, text)\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author rakekniven <mark.ziegler@rakekniven.de>\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 */\n\nimport $ from 'jquery'\n\n/**\n * A little class to manage a status field for a \"saving\" process.\n * It can be used to display a starting message (e.g. \"Saving...\") and then\n * replace it with a green success message or a red error message.\n *\n * @namespace OC.msg\n */\nexport default {\n\t/**\n\t * Displayes a \"Saving...\" message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t */\n\tstartSaving(selector) {\n\t\tthis.startAction(selector, t('core', 'Saving …'))\n\t},\n\n\t/**\n\t * Displayes a custom message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text message to display (no HTML allowed)\n\t */\n\tstartAction(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.removeClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedSaving(selector, response) {\n\t\tthis.finishedAction(selector, response)\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedAction(selector, response) {\n\t\tif (response.status === 'success') {\n\t\t\tthis.finishedSuccess(selector, response.data.message)\n\t\t} else {\n\t\t\tthis.finishedError(selector, response.data.message)\n\t\t}\n\t},\n\n\t/**\n\t * Displayes an success message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text success message to display (no HTML allowed)\n\t */\n\tfinishedSuccess(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.delay(3000)\n\t\t\t.fadeOut(900)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text error message to display (no HTML allowed)\n\t */\n\tfinishedError(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('error')\n\t\t\t.removeClass('success')\n\t\t\t.show()\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport moment from 'moment'\nimport { generateUrl } from '@nextcloud/router'\n\nimport OC from './index'\n\n/**\n * @namespace OC.PasswordConfirmation\n */\nexport default {\n\tcallback: null,\n\n\tpageLoadTime: null,\n\n\tinit() {\n\t\t$('.password-confirm-required').on('click', _.bind(this.requirePasswordConfirmation, this))\n\t\tthis.pageLoadTime = moment.now()\n\t},\n\n\trequiresPasswordConfirmation() {\n\t\tconst serverTimeDiff = this.pageLoadTime - (window.nc_pageLoad * 1000)\n\t\tconst timeSinceLogin = moment.now() - (serverTimeDiff + (window.nc_lastLogin * 1000))\n\n\t\t// if timeSinceLogin > 30 minutes and user backend allows password confirmation\n\t\treturn (window.backendAllowsPasswordConfirmation && timeSinceLogin > 30 * 60 * 1000)\n\t},\n\n\t/**\n\t * @param {Function} callback success callback function\n\t * @param {object} options options\n\t * @param {Function} rejectCallback error callback function\n\t */\n\trequirePasswordConfirmation(callback, options, rejectCallback) {\n\t\toptions = typeof options !== 'undefined' ? options : {}\n\t\tconst defaults = {\n\t\t\ttitle: t('core', 'Authentication required'),\n\t\t\ttext: t(\n\t\t\t\t'core',\n\t\t\t\t'This action requires you to confirm your password'\n\t\t\t),\n\t\t\tconfirm: t('core', 'Confirm'),\n\t\t\tlabel: t('core', 'Password'),\n\t\t\terror: '',\n\t\t}\n\n\t\tconst config = _.extend(defaults, options)\n\n\t\tconst self = this\n\n\t\tif (this.requiresPasswordConfirmation()) {\n\t\t\tOC.dialogs.prompt(\n\t\t\t\tconfig.text,\n\t\t\t\tconfig.title,\n\t\t\t\tfunction(result, password) {\n\t\t\t\t\tif (result && password !== '') {\n\t\t\t\t\t\tself._confirmPassword(password, config)\n\t\t\t\t\t} else if (_.isFunction(rejectCallback)) {\n\t\t\t\t\t\trejectCallback()\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\ttrue,\n\t\t\t\tconfig.label,\n\t\t\t\ttrue\n\t\t\t).then(function() {\n\t\t\t\tconst $dialog = $('.oc-dialog:visible')\n\t\t\t\t$dialog.find('.ui-icon').remove()\n\t\t\t\t$dialog.addClass('password-confirmation')\n\t\t\t\tif (config.error !== '') {\n\t\t\t\t\tconst $error = $('<p></p>').addClass('msg warning').text(config.error)\n\t\t\t\t\t$dialog.find('.oc-dialog-content').append($error)\n\t\t\t\t}\n\t\t\t\t$dialog.find('.oc-dialog-buttonrow').addClass('aside')\n\n\t\t\t\tconst $buttons = $dialog.find('button')\n\t\t\t\t$buttons.eq(0).hide()\n\t\t\t\t$buttons.eq(1).text(config.confirm)\n\t\t\t})\n\t\t}\n\n\t\tthis.callback = callback\n\t},\n\n\t_confirmPassword(password, config) {\n\t\tconst self = this\n\n\t\t$.ajax({\n\t\t\turl: generateUrl('/login/confirm'),\n\t\t\tdata: {\n\t\t\t\tpassword,\n\t\t\t},\n\t\t\ttype: 'POST',\n\t\t\tsuccess(response) {\n\t\t\t\twindow.nc_lastLogin = response.lastLogin\n\n\t\t\t\tif (_.isFunction(self.callback)) {\n\t\t\t\t\tself.callback()\n\t\t\t\t}\n\t\t\t},\n\t\t\terror() {\n\t\t\t\tconfig.error = t('core', 'Failed to authenticate, try again')\n\t\t\t\tOC.PasswordConfirmation.requirePasswordConfirmation(self.callback, config)\n\t\t\t},\n\t\t})\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 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 */\n\nexport const theme = window._theme || {}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport _ from 'underscore'\nimport OC from './index'\n\n/**\n * Utility class for the history API,\n * includes fallback to using the URL hash when\n * the browser doesn't support the history API.\n *\n * @namespace OC.Util.History\n */\nexport default {\n\n\t_handlers: [],\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t * @param {boolean} [replace=false] whether to replace instead of pushing\n\t */\n\t_pushState(params, url, replace) {\n\t\tlet strParams\n\t\tif (typeof (params) === 'string') {\n\t\t\tstrParams = params\n\t\t} else {\n\t\t\tstrParams = OC.buildQueryString(params)\n\t\t}\n\n\t\tif (window.history.pushState) {\n\t\t\turl = url || location.pathname + '?' + strParams\n\t\t\t// Workaround for bug with SVG and window.history.pushState on Firefox < 51\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=652991\n\t\t\tconst isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1\n\t\t\tif (isFirefox && parseInt(navigator.userAgent.split('/').pop()) < 51) {\n\t\t\t\tconst patterns = document.querySelectorAll('[fill^=\"url(#\"], [stroke^=\"url(#\"], [filter^=\"url(#invert\"]')\n\t\t\t\tfor (let i = 0, ii = patterns.length, pattern; i < ii; i++) {\n\t\t\t\t\tpattern = patterns[i]\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.fill = pattern.style.fill\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.stroke = pattern.style.stroke\n\t\t\t\t\tpattern.removeAttribute('filter')\n\t\t\t\t\tpattern.setAttribute('filter', 'url(#invert)')\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (replace) {\n\t\t\t\twindow.history.replaceState(params, '', url)\n\t\t\t} else {\n\t\t\t\twindow.history.pushState(params, '', url)\n\t\t\t}\n\t\t} else {\n\t\t\t// use URL hash for IE8\n\t\t\twindow.location.hash = '?' + strParams\n\t\t\t// inhibit next onhashchange that just added itself\n\t\t\t// to the event queue\n\t\t\tthis._cancelPop = true\n\t\t}\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used, using the params as query string\n\t */\n\tpushState(params, url) {\n\t\tthis._pushState(params, url, false)\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t */\n\treplaceState(params, url) {\n\t\tthis._pushState(params, url, true)\n\t},\n\n\t/**\n\t * Add a popstate handler\n\t *\n\t * @param {Function} handler handler\n\t */\n\taddOnPopStateHandler(handler) {\n\t\tthis._handlers.push(handler)\n\t},\n\n\t/**\n\t * Parse a query string from the hash part of the URL.\n\t * (workaround for IE8 / IE9)\n\t *\n\t * @return {string}\n\t */\n\t_parseHashQuery() {\n\t\tconst hash = window.location.hash\n\t\tconst pos = hash.indexOf('?')\n\t\tif (pos >= 0) {\n\t\t\treturn hash.substr(pos + 1)\n\t\t}\n\t\tif (hash.length) {\n\t\t\t// remove hash sign\n\t\t\treturn hash.substr(1)\n\t\t}\n\t\treturn ''\n\t},\n\n\t_decodeQuery(query) {\n\t\treturn query.replace(/\\+/g, ' ')\n\t},\n\n\t/**\n\t * Parse the query/search part of the URL.\n\t * Also try and parse it from the URL hash (for IE8)\n\t *\n\t * @return {object} map of parameters\n\t */\n\tparseUrlQuery() {\n\t\tconst query = this._parseHashQuery()\n\t\tlet params\n\t\t// try and parse from URL hash first\n\t\tif (query) {\n\t\t\tparams = OC.parseQueryString(this._decodeQuery(query))\n\t\t}\n\t\t// else read from query attributes\n\t\tparams = _.extend(params || {}, OC.parseQueryString(this._decodeQuery(location.search)))\n\t\treturn params || {}\n\t},\n\n\t_onPopState(e) {\n\t\tif (this._cancelPop) {\n\t\t\tthis._cancelPop = false\n\t\t\treturn\n\t\t}\n\t\tlet params\n\t\tif (!this._handlers.length) {\n\t\t\treturn\n\t\t}\n\t\tparams = (e && e.state)\n\t\tif (_.isString(params)) {\n\t\t\tparams = OC.parseQueryString(params)\n\t\t} else if (!params) {\n\t\t\tparams = this.parseUrlQuery() || {}\n\t\t}\n\t\tfor (let i = 0; i < this._handlers.length; i++) {\n\t\t\tthis._handlers[i](params)\n\t\t}\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport moment from 'moment'\n\nimport History from './util-history'\nimport OC from './index'\nimport { formatFileSize as humanFileSize } from '@nextcloud/files'\n\n/**\n * @param {any} t -\n */\nfunction chunkify(t) {\n\t// Adapted from http://my.opera.com/GreyWyvern/blog/show.dml/1671288\n\tconst tz = []\n\tlet x = 0\n\tlet y = -1\n\tlet n = 0\n\tlet c\n\n\twhile (x < t.length) {\n\t\tc = t.charAt(x)\n\t\t// only include the dot in strings\n\t\tconst m = ((!n && c === '.') || (c >= '0' && c <= '9'))\n\t\tif (m !== n) {\n\t\t\t// next chunk\n\t\t\ty++\n\t\t\ttz[y] = ''\n\t\t\tn = m\n\t\t}\n\t\ttz[y] += c\n\t\tx++\n\t}\n\treturn tz\n}\n\n/**\n * Utility functions\n *\n * @namespace OC.Util\n */\nexport default {\n\n\tHistory,\n\n\t/**\n\t * @deprecated use https://nextcloud.github.io/nextcloud-files/modules/_humanfilesize_.html#formatfilesize\n\t */\n\thumanFileSize,\n\n\t/**\n\t * Returns a file size in bytes from a humanly readable string\n\t * Makes 2kB to 2048.\n\t * Inspired by computerFileSize in helper.php\n\t *\n\t * @param {string} string file size in human readable format\n\t * @return {number} or null if string could not be parsed\n\t *\n\t *\n\t */\n\tcomputerFileSize(string) {\n\t\tif (typeof string !== 'string') {\n\t\t\treturn null\n\t\t}\n\n\t\tconst s = string.toLowerCase().trim()\n\t\tlet bytes = null\n\n\t\tconst bytesArray = {\n\t\t\tb: 1,\n\t\t\tk: 1024,\n\t\t\tkb: 1024,\n\t\t\tmb: 1024 * 1024,\n\t\t\tm: 1024 * 1024,\n\t\t\tgb: 1024 * 1024 * 1024,\n\t\t\tg: 1024 * 1024 * 1024,\n\t\t\ttb: 1024 * 1024 * 1024 * 1024,\n\t\t\tt: 1024 * 1024 * 1024 * 1024,\n\t\t\tpb: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t\tp: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t}\n\n\t\tconst matches = s.match(/^[\\s+]?([0-9]*)(\\.([0-9]+))?( +)?([kmgtp]?b?)$/i)\n\t\tif (matches !== null) {\n\t\t\tbytes = parseFloat(s)\n\t\t\tif (!isFinite(bytes)) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t\tif (matches[5]) {\n\t\t\tbytes = bytes * bytesArray[matches[5]]\n\t\t}\n\n\t\tbytes = Math.round(bytes)\n\t\treturn bytes\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @param {string} format date format, see momentjs docs\n\t * @return {string} timestamp formatted as requested\n\t */\n\tformatDate(timestamp, format) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tconsole.warn('OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tformat = format || 'LLL'\n\t\treturn moment(timestamp).format(format)\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @return {string} human readable difference from now\n\t */\n\trelativeModifiedDate(timestamp) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tconsole.warn('OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tconst diff = moment().diff(moment(timestamp))\n\t\tif (diff >= 0 && diff < 45000) {\n\t\t\treturn t('core', 'seconds ago')\n\t\t}\n\t\treturn moment(timestamp).fromNow()\n\t},\n\n\t/**\n\t * Returns the width of a generic browser scrollbar\n\t *\n\t * @return {number} width of scrollbar\n\t */\n\tgetScrollBarWidth() {\n\t\tif (this._scrollBarWidth) {\n\t\t\treturn this._scrollBarWidth\n\t\t}\n\n\t\tconst inner = document.createElement('p')\n\t\tinner.style.width = '100%'\n\t\tinner.style.height = '200px'\n\n\t\tconst outer = document.createElement('div')\n\t\touter.style.position = 'absolute'\n\t\touter.style.top = '0px'\n\t\touter.style.left = '0px'\n\t\touter.style.visibility = 'hidden'\n\t\touter.style.width = '200px'\n\t\touter.style.height = '150px'\n\t\touter.style.overflow = 'hidden'\n\t\touter.appendChild(inner)\n\n\t\tdocument.body.appendChild(outer)\n\t\tconst w1 = inner.offsetWidth\n\t\touter.style.overflow = 'scroll'\n\t\tlet w2 = inner.offsetWidth\n\t\tif (w1 === w2) {\n\t\t\tw2 = outer.clientWidth\n\t\t}\n\n\t\tdocument.body.removeChild(outer)\n\n\t\tthis._scrollBarWidth = (w1 - w2)\n\n\t\treturn this._scrollBarWidth\n\t},\n\n\t/**\n\t * Remove the time component from a given date\n\t *\n\t * @param {Date} date date\n\t * @return {Date} date with stripped time\n\t */\n\tstripTime(date) {\n\t\t// FIXME: likely to break when crossing DST\n\t\t// would be better to use a library like momentJS\n\t\treturn new Date(date.getFullYear(), date.getMonth(), date.getDate())\n\t},\n\n\t/**\n\t * Compare two strings to provide a natural sort\n\t *\n\t * @param {string} a first string to compare\n\t * @param {string} b second string to compare\n\t * @return {number} -1 if b comes before a, 1 if a comes before b\n\t * or 0 if the strings are identical\n\t */\n\tnaturalSortCompare(a, b) {\n\t\tlet x\n\t\tconst aa = chunkify(a)\n\t\tconst bb = chunkify(b)\n\n\t\tfor (x = 0; aa[x] && bb[x]; x++) {\n\t\t\tif (aa[x] !== bb[x]) {\n\t\t\t\tconst aNum = Number(aa[x]); const bNum = Number(bb[x])\n\t\t\t\t// note: == is correct here\n\t\t\t\t/* eslint-disable-next-line */\n\t\t\t\tif (aNum == aa[x] && bNum == bb[x]) {\n\t\t\t\t\treturn aNum - bNum\n\t\t\t\t} else {\n\t\t\t\t\t// Note: This locale setting isn't supported by all browsers but for the ones\n\t\t\t\t\t// that do there will be more consistency between client-server sorting\n\t\t\t\t\treturn aa[x].localeCompare(bb[x], OC.getLanguage())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn aa.length - bb.length\n\t},\n\n\t/**\n\t * Calls the callback in a given interval until it returns true\n\t *\n\t * @param {Function} callback function to call on success\n\t * @param {number} interval in milliseconds\n\t */\n\twaitFor(callback, interval) {\n\t\tconst internalCallback = function() {\n\t\t\tif (callback() !== true) {\n\t\t\t\tsetTimeout(internalCallback, interval)\n\t\t\t}\n\t\t}\n\n\t\tinternalCallback()\n\t},\n\n\t/**\n\t * Checks if a cookie with the given name is present and is set to the provided value.\n\t *\n\t * @param {string} name name of the cookie\n\t * @param {string} value value of the cookie\n\t * @return {boolean} true if the cookie with the given name has the given value\n\t */\n\tisCookieSetToValue(name, value) {\n\t\tconst cookies = document.cookie.split(';')\n\t\tfor (let i = 0; i < cookies.length; i++) {\n\t\t\tconst cookie = cookies[i].split('=')\n\t\t\tif (cookie[0].trim() === name && cookie[1].trim() === value) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 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 */\n\nconst base = window._oc_debug\n\nexport const debug = base\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 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 */\n\nlet webroot = window._oc_webroot\n\nif (typeof webroot === 'undefined') {\n\twebroot = location.pathname\n\tconst pos = webroot.indexOf('/index.php/')\n\tif (pos !== -1) {\n\t\twebroot = webroot.substr(0, pos)\n\t} else {\n\t\twebroot = webroot.substr(0, webroot.lastIndexOf('/'))\n\t}\n}\n\nexport default webroot\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nexport const get = context => name => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tcontext = context[namespaces[i]]\n\t\tif (!context) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn context[tail]\n}\n\n/**\n * Set a variable by name\n *\n * @param {string} context context\n * @return {Function} setter\n * @deprecated 19.0.0 use https://lodash.com/docs#set\n */\nexport const set = context => (name, value) => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tif (!context[namespaces[i]]) {\n\t\t\tcontext[namespaces[i]] = {}\n\t\t}\n\t\tcontext = context[namespaces[i]]\n\t}\n\tcontext[tail] = value\n\treturn value\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport { subscribe } from '@nextcloud/event-bus'\n\nimport { addScript, addStyle } from './legacy-loader'\nimport {\n\tajaxConnectionLostHandler,\n\tprocessAjaxError,\n\tregisterXHRForErrorProcessing,\n} from './xhr-error'\nimport Apps from './apps'\nimport { AppConfig, appConfig } from './appconfig'\nimport { appSettings } from './appsettings'\nimport appswebroots from './appswebroots'\nimport Backbone from './backbone'\nimport {\n\tbasename,\n\tdirname,\n\tencodePath,\n\tisSamePath,\n\tjoinPaths,\n} from '@nextcloud/paths'\nimport {\n\tbuild as buildQueryString,\n\tparse as parseQueryString,\n} from './query-string'\nimport Config from './config'\nimport {\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n} from './constants'\nimport ContactsMenu from './contactsmenu'\nimport { currentUser, getCurrentUser } from './currentuser'\nimport Dialogs from './dialogs'\nimport EventSource from './eventsource'\nimport { get, set } from './get_set'\nimport { getCapabilities } from './capabilities'\nimport {\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n} from './host'\nimport {\n\tgetToken as getRequestToken,\n} from './requesttoken'\nimport {\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n} from './menu'\nimport { isUserAdmin } from './admin'\nimport L10N, {\n\tgetLanguage,\n\tgetLocale,\n} from './l10n'\nimport {\n\tgetCanonicalLocale,\n} from '@nextcloud/l10n'\n\nimport {\n\tgenerateUrl,\n\tgenerateFilePath,\n\tgenerateOcsUrl,\n\tgenerateRemoteUrl,\n\tgetRootUrl,\n\timagePath,\n\tlinkTo,\n} from '@nextcloud/router'\n\nimport {\n\tlinkToRemoteBase,\n} from './routing'\nimport msg from './msg'\nimport Notification from './notification'\nimport PasswordConfirmation from './password-confirmation'\nimport Plugins from './plugins'\nimport { theme } from './theme'\nimport Util from './util'\nimport { debug } from './debug'\nimport { redirect, reload } from './navigation'\nimport webroot from './webroot'\n\n/** @namespace OC */\nexport default {\n\t/*\n\t * Constants\n\t */\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n\n\t/*\n\t * Deprecated helpers to be removed\n\t */\n\t/**\n\t * Check if a user file is allowed to be handled.\n\t *\n\t * @param {string} file to check\n\t * @return {boolean}\n\t * @deprecated 17.0.0\n\t */\n\tfileIsBlacklisted: file => !!(file.match(Config.blacklist_files_regex)),\n\n\taddScript,\n\taddStyle,\n\tApps,\n\tAppConfig,\n\tappConfig,\n\tappSettings,\n\tappswebroots,\n\tBackbone,\n\tContactsMenu,\n\tconfig: Config,\n\t/**\n\t * Currently logged in user or null if none\n\t *\n\t * @type {string}\n\t * @deprecated use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tcurrentUser,\n\tdialogs: Dialogs,\n\tEventSource,\n\t/**\n\t * Returns the currently logged in user or null if there is no logged in\n\t * user (public page mode)\n\t *\n\t * @since 9.0.0\n\t * @deprecated 19.0.0 use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tgetCurrentUser,\n\tisUserAdmin,\n\tL10N,\n\n\t/**\n\t * Ajax error handlers\n\t *\n\t * @todo remove from here and keep internally -> requires new tests\n\t */\n\t_ajaxConnectionLostHandler: ajaxConnectionLostHandler,\n\t_processAjaxError: processAjaxError,\n\tregisterXHRForErrorProcessing,\n\n\t/**\n\t * Capabilities\n\t *\n\t * @type {Array}\n\t * @deprecated 20.0.0 use @nextcloud/capabilities instead\n\t */\n\tgetCapabilities,\n\n\t/*\n\t * Legacy menu helpers\n\t */\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n\n\t/*\n\t * Path helpers\n\t */\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tbasename,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tencodePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tdirname,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tisSamePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tjoinPaths,\n\n\t/**\n\t * Host (url) helpers\n\t */\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n\n\t/**\n\t * @deprecated 20.0.0 use `getCanonicalLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetCanonicalLocale,\n\tgetLocale,\n\tgetLanguage,\n\t/**\n\t * Loads translations for the given app asynchronously.\n\t *\n\t * @param {string} app app name\n\t * @param {Function} callback callback to call after loading\n\t * @return {Promise}\n\t * @deprecated 17.0.0 use OC.L10N.load instead\n\t */\n\taddTranslations: L10N.load,\n\n\t/**\n\t * Query string helpers\n\t */\n\tbuildQueryString,\n\tparseQueryString,\n\n\tmsg,\n\tNotification,\n\tPasswordConfirmation,\n\tPlugins,\n\ttheme,\n\tUtil,\n\tdebug,\n\t/**\n\t * @deprecated 19.0.0 use `generateFilePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tfilePath: generateFilePath,\n\t/**\n\t * @deprecated 19.0.0 use `generateUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgenerateUrl,\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#get\n\t */\n\tget: get(window),\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#set\n\t */\n\tset: set(window),\n\t/**\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgetRootPath: getRootUrl,\n\t/**\n\t * @deprecated 19.0.0 use `imagePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\timagePath,\n\tredirect,\n\treload,\n\trequestToken: getRequestToken(),\n\t/**\n\t * @deprecated 19.0.0 use `linkTo` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkTo,\n\t/**\n\t * @param {string} service service name\n\t * @param {number} version OCS API version\n\t * @return {string} OCS API base path\n\t * @deprecated 19.0.0 use `generateOcsUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToOCS: (service, version) => {\n\t\treturn generateOcsUrl(service, {}, {\n\t\t\tocsVersion: version || 1,\n\t\t}) + '/'\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `generateRemoteUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToRemote: generateRemoteUrl,\n\tlinkToRemoteBase,\n\t/**\n\t * Relative path to Nextcloud root.\n\t * For example: \"/nextcloud\"\n\t *\n\t * @type {string}\n\t *\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t * @see OC#getRootPath\n\t */\n\twebroot,\n}\n\n// Keep the request token prop in sync\nsubscribe('csrf-token-update', e => {\n\tOC.requestToken = e.token\n\n\t// Logging might help debug (Sentry) issues\n\tconsole.info('OC.requestToken changed', e.token)\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\n/* eslint-disable */\nimport $ from 'jquery'\nimport { filePath } from './routing'\nimport { generateFilePath } from \"@nextcloud/router\"\n\n/**\n * Opens a popup with the setting for an app.\n * @param {string} appid The ID of the app e.g. 'calendar', 'contacts' or 'files'.\n * @param {boolean|string} loadJS If true 'js/settings.js' is loaded. If it's a string\n * it will attempt to load a script by that name in the 'js' directory.\n * @param {boolean} [cache] If true the javascript file won't be forced refreshed. Defaults to true.\n * @param {string} [scriptName] The name of the PHP file to load. Defaults to 'settings.php' in\n * the root of the app directory hierarchy.\n *\n * @deprecated 17.0.0 this method is unused and will be removed with Nextcloud 18\n */\nexport const appSettings = args => {\n\tconsole.warn('OC.appSettings is deprecated and will be removed with Nextcloud 18')\n\n\tif (typeof args === 'undefined' || typeof args.appid === 'undefined') {\n\t\tthrow {\n\t\t\tname: 'MissingParameter',\n\t\t\tmessage: 'The parameter appid is missing'\n\t\t}\n\t}\n\tvar props = { scriptName: 'settings.php', cache: true }\n\t$.extend(props, args)\n\tvar settings = $('#appsettings')\n\tif (settings.length === 0) {\n\t\tthrow {\n\t\t\tname: 'MissingDOMElement',\n\t\t\tmessage: 'There has be be an element with id \"appsettings\" for the popup to show.'\n\t\t}\n\t}\n\tvar popup = $('#appsettings_popup')\n\tif (popup.length === 0) {\n\t\t$('body').prepend('<div class=\"popup hidden\" id=\"appsettings_popup\"></div>')\n\t\tpopup = $('#appsettings_popup')\n\t\tpopup.addClass(settings.hasClass('topright') ? 'topright' : 'bottomleft')\n\t}\n\tif (popup.is(':visible')) {\n\t\tpopup.hide().remove()\n\t} else {\n\t\tconst arrowclass = settings.hasClass('topright') ? 'up' : 'left'\n\t\t$.get(generateFilePath(props.appid, '', props.scriptName), function(data) {\n\t\t\tpopup.html(data).ready(function() {\n\t\t\t\tpopup.prepend('<span class=\"arrow ' + arrowclass + '\"></span><h2>' + t('core', 'Settings') + '</h2><a class=\"close\"></a>').show()\n\t\t\t\tpopup.find('.close').bind('click', function() {\n\t\t\t\t\tpopup.remove()\n\t\t\t\t})\n\t\t\t\tif (typeof props.loadJS !== 'undefined') {\n\t\t\t\t\tvar scriptname\n\t\t\t\t\tif (props.loadJS === true) {\n\t\t\t\t\t\tscriptname = 'settings.js'\n\t\t\t\t\t} else if (typeof props.loadJS === 'string') {\n\t\t\t\t\t\tscriptname = props.loadJS\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow {\n\t\t\t\t\t\t\tname: 'InvalidParameter',\n\t\t\t\t\t\t\tmessage: 'The \"loadJS\" parameter must be either boolean or a string.'\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (props.cache) {\n\t\t\t\t\t\t$.ajaxSetup({ cache: true })\n\t\t\t\t\t}\n\t\t\t\t\t$.getScript(generateFilePath(props.appid, 'js', scriptname))\n\t\t\t\t\t\t.fail(function(jqxhr, settings, e) {\n\t\t\t\t\t\t\tthrow e\n\t\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}).show()\n\t\t}, 'html')\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport { getCapabilities as realGetCapabilities } from '@nextcloud/capabilities'\n\n/**\n * Returns the capabilities\n *\n * @return {Array} capabilities\n *\n * @since 14.0.0\n */\nexport const getCapabilities = () => {\n\tconsole.warn('OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities')\n\treturn realGetCapabilities()\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nexport const getProtocol = () => window.location.protocol.split(':')[0]\n\n/**\n * Returns the host used to access this Nextcloud instance\n * Host is sometimes the same as the hostname but now always.\n *\n * Examples:\n * http://example.com => example.com\n * https://example.com => example.com\n * http://example.com:8080 => example.com:8080\n *\n * @return {string} host\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.host directly\n */\nexport const getHost = () => window.location.host\n\n/**\n * Returns the hostname used to access this Nextcloud instance\n * The hostname is always stripped of the port\n *\n * @return {string} hostname\n * @since 9.0.0\n * @deprecated 17.0.0 use window.location.hostname directly\n */\nexport const getHostName = () => window.location.hostname\n\n/**\n * Returns the port number used to access this Nextcloud instance\n *\n * @return {number} port number\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.port directly\n */\nexport const getPort = () => window.location.port\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport $ from 'jquery'\n\n/**\n * Parses a URL query string into a JS map\n *\n * @param {string} queryString query string in the format param1=1234&param2=abcde&param3=xyz\n * @return {object.<string, string>} map containing key/values matching the URL parameters\n */\nexport const parse = queryString => {\n\tlet pos\n\tlet components\n\tconst result = {}\n\tlet key\n\tif (!queryString) {\n\t\treturn null\n\t}\n\tpos = queryString.indexOf('?')\n\tif (pos >= 0) {\n\t\tqueryString = queryString.substr(pos + 1)\n\t}\n\tconst parts = queryString.replace(/\\+/g, '%20').split('&')\n\tfor (let i = 0; i < parts.length; i++) {\n\t\t// split on first equal sign\n\t\tconst part = parts[i]\n\t\tpos = part.indexOf('=')\n\t\tif (pos >= 0) {\n\t\t\tcomponents = [\n\t\t\t\tpart.substr(0, pos),\n\t\t\t\tpart.substr(pos + 1),\n\t\t\t]\n\t\t} else {\n\t\t\t// key only\n\t\t\tcomponents = [part]\n\t\t}\n\t\tif (!components.length) {\n\t\t\tcontinue\n\t\t}\n\t\tkey = decodeURIComponent(components[0])\n\t\tif (!key) {\n\t\t\tcontinue\n\t\t}\n\t\t// if equal sign was there, return string\n\t\tif (components.length > 1) {\n\t\t\tresult[key] = decodeURIComponent(components[1])\n\t\t} else {\n\t\t\t// no equal sign => null value\n\t\t\tresult[key] = null\n\t\t}\n\t}\n\treturn result\n}\n\n/**\n * Builds a URL query from a JS map.\n *\n * @param {object.<string, string>} params map containing key/values matching the URL parameters\n * @return {string} String containing a URL query (without question) mark\n */\nexport const build = params => {\n\tif (!params) {\n\t\treturn ''\n\t}\n\treturn $.map(params, function(value, key) {\n\t\tlet s = encodeURIComponent(key)\n\t\tif (value !== null && typeof (value) !== 'undefined') {\n\t\t\ts += '=' + encodeURIComponent(value)\n\t\t}\n\t\treturn s\n\t}).join('&')\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nexport default {\n\n\t/**\n\t * @type {Array.<OC.Plugin>}\n\t */\n\t_plugins: {},\n\n\t/**\n\t * Register plugin\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @param {OC.Plugin} plugin plugin\n\t */\n\tregister(targetName, plugin) {\n\t\tlet plugins = this._plugins[targetName]\n\t\tif (!plugins) {\n\t\t\tplugins = this._plugins[targetName] = []\n\t\t}\n\t\tplugins.push(plugin)\n\t},\n\n\t/**\n\t * Returns all plugin registered to the given target\n\t * name / app name / class name.\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @return {Array.<OC.Plugin>} array of plugins\n\t */\n\tgetPlugins(targetName) {\n\t\treturn this._plugins[targetName] || []\n\t},\n\n\t/**\n\t * Call attach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tattach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].attach) {\n\t\t\t\tplugins[i].attach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Call detach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tdetach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].detach) {\n\t\t\t\tplugins[i].detach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nexport const redirect = targetURL => { window.location = targetURL }\n\n/**\n * Reloads the current page\n *\n * @deprecated 17.0.0 use window.location.reload directly\n */\nexport const reload = () => { window.location.reload() }\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport {\n\tgetRootUrl as realGetRootUrl,\n} from '@nextcloud/router'\n\n/**\n * Creates a relative url for remote use\n *\n * @param {string} service id\n * @return {string} the url\n */\nexport const linkToRemoteBase = service => {\n\treturn realGetRootUrl() + '/remote.php/' + service\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport $ from 'jquery'\nimport { emit } from '@nextcloud/event-bus'\nimport { loadState } from '@nextcloud/initial-state'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateUrl } from '@nextcloud/router'\n\nimport OC from './OC'\nimport { setToken as setRequestToken, getToken as getRequestToken } from './OC/requesttoken'\n\nlet config = null\n/**\n * The legacy jsunit tests overwrite OC.config before calling initCore\n * therefore we need to wait with assigning the config fallback until initCore calls initSessionHeartBeat\n */\nconst loadConfig = () => {\n\ttry {\n\t\tconfig = loadState('core', 'config')\n\t} catch (e) {\n\t\t// This fallback is just for our legacy jsunit tests since we have no way to mock loadState calls\n\t\tconfig = OC.config\n\t}\n}\n\n/**\n * session heartbeat (defaults to enabled)\n *\n * @return {boolean}\n */\nconst keepSessionAlive = () => {\n\treturn config.session_keepalive === undefined\n\t\t|| !!config.session_keepalive\n}\n\n/**\n * get interval in seconds\n *\n * @return {number}\n */\nconst getInterval = () => {\n\tlet interval = NaN\n\tif (config.session_lifetime) {\n\t\tinterval = Math.floor(config.session_lifetime / 2)\n\t}\n\n\t// minimum one minute, max 24 hours, default 15 minutes\n\treturn Math.min(\n\t\t24 * 3600,\n\t\tMath.max(\n\t\t\t60,\n\t\t\tisNaN(interval) ? 900 : interval\n\t\t)\n\t)\n}\n\nconst getToken = async () => {\n\tconst url = generateUrl('/csrftoken')\n\n\t// Not using Axios here as Axios is not stubbable with the sinon fake server\n\t// see https://stackoverflow.com/questions/41516044/sinon-mocha-test-with-async-ajax-calls-didnt-return-promises\n\t// see js/tests/specs/coreSpec.js for the tests\n\tconst resp = await $.get(url)\n\n\treturn resp.token\n}\n\nconst poll = async () => {\n\ttry {\n\t\tconst token = await getToken()\n\t\tsetRequestToken(token)\n\t} catch (e) {\n\t\tconsole.error('session heartbeat failed', e)\n\t}\n}\n\nconst startPolling = () => {\n\tconst interval = setInterval(poll, getInterval() * 1000)\n\n\tconsole.info('session heartbeat polling started')\n\n\treturn interval\n}\n\nconst registerAutoLogout = () => {\n\tif (!config.auto_logout || !getCurrentUser()) {\n\t\treturn\n\t}\n\n\tlet lastActive = Date.now()\n\twindow.addEventListener('mousemove', e => {\n\t\tlastActive = Date.now()\n\t\tlocalStorage.setItem('lastActive', lastActive)\n\t})\n\n\twindow.addEventListener('touchstart', e => {\n\t\tlastActive = Date.now()\n\t\tlocalStorage.setItem('lastActive', lastActive)\n\t})\n\n\twindow.addEventListener('storage', e => {\n\t\tif (e.key !== 'lastActive') {\n\t\t\treturn\n\t\t}\n\t\tlastActive = e.newValue\n\t})\n\n\tsetInterval(function() {\n\t\tconst timeout = Date.now() - config.session_lifetime * 1000\n\t\tif (lastActive < timeout) {\n\t\t\tconsole.info('Inactivity timout reached, logging out')\n\t\t\tconst logoutUrl = generateUrl('/logout') + '?requesttoken=' + encodeURIComponent(getRequestToken())\n\t\t\twindow.location = logoutUrl\n\t\t}\n\t}, 1000)\n}\n\n/**\n * Calls the server periodically to ensure that session and CSRF\n * token doesn't expire\n */\nexport const initSessionHeartBeat = () => {\n\tloadConfig()\n\n\tregisterAutoLogout()\n\n\tif (!keepSessionAlive()) {\n\t\tconsole.info('session heartbeat disabled')\n\t\treturn\n\t}\n\tlet interval = startPolling()\n\n\twindow.addEventListener('online', async () => {\n\t\tconsole.info('browser is online again, resuming heartbeat')\n\t\tinterval = startPolling()\n\t\ttry {\n\t\t\tawait poll()\n\t\t\tconsole.info('session token successfully updated after resuming network')\n\n\t\t\t// Let apps know we're online and requests will have the new token\n\t\t\temit('networkOnline', {\n\t\t\t\tsuccess: true,\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error('could not update session token after resuming network', e)\n\n\t\t\t// Let apps know we're online but requests might have an outdated token\n\t\t\temit('networkOnline', {\n\t\t\t\tsuccess: false,\n\t\t\t})\n\t\t}\n\t})\n\twindow.addEventListener('offline', () => {\n\t\tconsole.info('browser is offline, stopping heartbeat')\n\n\t\t// Let apps know we're offline\n\t\temit('networkOffline', {})\n\n\t\tclearInterval(interval)\n\t\tconsole.info('session heartbeat polling stopped')\n\t})\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Jan-Christoph Borchardt <hey@jancborchardt.net>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author nacho <nacho@ownyourbits.com>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n/* globals Snap */\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport moment from 'moment'\nimport cssVars from 'css-vars-ponyfill'\n\nimport { initSessionHeartBeat } from './session-heartbeat'\nimport OC from './OC/index'\nimport { setUp as setUpContactsMenu } from './components/ContactsMenu'\nimport { setUp as setUpMainMenu } from './components/MainMenu'\nimport { setUp as setUpUserMenu } from './components/UserMenu'\nimport PasswordConfirmation from './OC/password-confirmation'\n\n// keep in sync with core/css/variables.scss\nconst breakpointMobileWidth = 1024\n\nconst resizeMenu = () => {\n\tconst appList = $('#appmenu li')\n\tconst rightHeaderWidth = $('.header-right').outerWidth()\n\tconst headerWidth = $('header').outerWidth()\n\tconst usePercentualAppMenuLimit = 0.67\n\tconst minAppsDesktop = 12\n\tlet availableWidth = headerWidth - $('#nextcloud').outerWidth() - (rightHeaderWidth > 210 ? rightHeaderWidth : 210)\n\tconst isMobile = $(window).width() < breakpointMobileWidth\n\tif (!isMobile) {\n\t\tavailableWidth = availableWidth * usePercentualAppMenuLimit\n\t}\n\tlet appCount = Math.floor((availableWidth / $(appList).width()))\n\tif (isMobile && appCount > minAppsDesktop) {\n\t\tappCount = minAppsDesktop\n\t}\n\tif (!isMobile && appCount < minAppsDesktop) {\n\t\tappCount = minAppsDesktop\n\t}\n\n\t// show at least 2 apps in the popover\n\tif (appList.length - 1 - appCount >= 1) {\n\t\tappCount--\n\t}\n\n\t$('#more-apps a').removeClass('active')\n\tlet lastShownApp\n\tfor (let k = 0; k < appList.length - 1; k++) {\n\t\tconst name = $(appList[k]).data('id')\n\t\tif (k < appCount) {\n\t\t\t$(appList[k]).removeClass('hidden')\n\t\t\t$('#apps li[data-id=' + name + ']').addClass('in-header')\n\t\t\tlastShownApp = appList[k]\n\t\t} else {\n\t\t\t$(appList[k]).addClass('hidden')\n\t\t\t$('#apps li[data-id=' + name + ']').removeClass('in-header')\n\t\t\t// move active app to last position if it is active\n\t\t\tif (appCount > 0 && $(appList[k]).children('a').hasClass('active')) {\n\t\t\t\t$(lastShownApp).addClass('hidden')\n\t\t\t\t$('#apps li[data-id=' + $(lastShownApp).data('id') + ']').removeClass('in-header')\n\t\t\t\t$(appList[k]).removeClass('hidden')\n\t\t\t\t$('#apps li[data-id=' + name + ']').addClass('in-header')\n\t\t\t}\n\t\t}\n\t}\n\n\t// show/hide more apps icon\n\tif ($('#apps li:not(.in-header)').length === 0) {\n\t\t$('#more-apps').hide()\n\t\t$('#navigation').hide()\n\t} else {\n\t\t$('#more-apps').show()\n\t}\n}\n\nconst initLiveTimestamps = () => {\n\t// Update live timestamps every 30 seconds\n\tsetInterval(() => {\n\t\t$('.live-relative-timestamp').each(function() {\n\t\t\tconst timestamp = parseInt($(this).attr('data-timestamp'), 10)\n\t\t\t$(this).text(moment(timestamp).fromNow())\n\t\t})\n\t}, 30 * 1000)\n}\n\n/**\n * Moment doesn't have aliases for every locale and doesn't parse some locale IDs correctly so we need to alias them\n */\nconst localeAliases = {\n\tzh: 'zh-cn',\n\tzh_Hans: 'zh-cn',\n\tzh_Hans_CN: 'zh-cn',\n\tzh_Hans_HK: 'zh-cn',\n\tzh_Hans_MO: 'zh-cn',\n\tzh_Hans_SG: 'zh-cn',\n\tzh_Hant: 'zh-hk',\n\tzh_Hant_HK: 'zh-hk',\n\tzh_Hant_MO: 'zh-mo',\n\tzh_Hant_TW: 'zh-tw',\n}\nlet locale = OC.getLocale()\nif (Object.prototype.hasOwnProperty.call(localeAliases, locale)) {\n\tlocale = localeAliases[locale]\n}\n\n/**\n * Set users locale to moment.js as soon as possible\n */\nmoment.locale(locale)\n\n/**\n * Initializes core\n */\nexport const initCore = () => {\n\tconst userAgent = window.navigator.userAgent\n\tconst edge = userAgent.indexOf('Edge/')\n\n\tif (edge > 0) {\n\t\t$('html').addClass('edge')\n\t\tconsole.info('Legacy browser detected, applying css vars polyfill')\n\t\tcssVars({\n\t\t\twatch: true,\n\t\t\t// set edge < 16 as incompatible\n\t\t\tonlyLegacy: !(/Edge\\/([0-9]{2})\\./i.test(navigator.userAgent)\n\t\t\t\t&& parseInt(/Edge\\/([0-9]{2})\\./i.exec(navigator.userAgent)[1]) < 16),\n\t\t})\n\t}\n\n\t$(window).on('unload.main', () => { OC._unloadCalled = true })\n\t$(window).on('beforeunload.main', () => {\n\t\t// super-trick thanks to http://stackoverflow.com/a/4651049\n\t\t// in case another handler displays a confirmation dialog (ex: navigating away\n\t\t// during an upload), there are two possible outcomes: user clicked \"ok\" or\n\t\t// \"cancel\"\n\n\t\t// first timeout handler is called after unload dialog is closed\n\t\tsetTimeout(() => {\n\t\t\tOC._userIsNavigatingAway = true\n\n\t\t\t// second timeout event is only called if user cancelled (Chrome),\n\t\t\t// but in other browsers it might still be triggered, so need to\n\t\t\t// set a higher delay...\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (!OC._unloadCalled) {\n\t\t\t\t\tOC._userIsNavigatingAway = false\n\t\t\t\t}\n\t\t\t}, 10000)\n\t\t}, 1)\n\t})\n\t$(document).on('ajaxError.main', function(event, request, settings) {\n\t\tif (settings && settings.allowAuthErrors) {\n\t\t\treturn\n\t\t}\n\t\tOC._processAjaxError(request)\n\t})\n\n\tinitSessionHeartBeat()\n\n\tOC.registerMenu($('#expand'), $('#expanddiv'), false, true)\n\n\t// toggle for menus\n\t$(document).on('mouseup.closemenus', event => {\n\t\tconst $el = $(event.target)\n\t\tif ($el.closest('.menu').length || $el.closest('.menutoggle').length) {\n\t\t\t// don't close when clicking on the menu directly or a menu toggle\n\t\t\treturn false\n\t\t}\n\n\t\tOC.hideMenus()\n\t})\n\n\tsetUpMainMenu()\n\tsetUpUserMenu()\n\tsetUpContactsMenu()\n\n\t// move triangle of apps dropdown to align with app name triangle\n\t// 2 is the additional offset between the triangles\n\tif ($('#navigation').length) {\n\t\t$('#header #nextcloud + .menutoggle').on('click', () => {\n\t\t\t$('#menu-css-helper').remove()\n\t\t\tconst caretPosition = $('.header-appname + .icon-caret').offset().left - 2\n\t\t\tif (caretPosition > 255) {\n\t\t\t\t// if the app name is longer than the menu, just put the triangle in the middle\n\n\t\t\t} else {\n\t\t\t\t$('head').append('<style id=\"menu-css-helper\">#navigation:after { left: ' + caretPosition + 'px }</style>')\n\t\t\t}\n\t\t})\n\t\t$('#header #appmenu .menutoggle').on('click', () => {\n\t\t\t$('#appmenu').toggleClass('menu-open')\n\t\t\tif ($('#appmenu').is(':visible')) {\n\t\t\t\t$('#menu-css-helper').remove()\n\t\t\t}\n\t\t})\n\t}\n\n\t$(window).resize(resizeMenu)\n\tsetTimeout(resizeMenu, 0)\n\n\t// just add snapper for logged in users\n\t// and if the app doesn't handle the nav slider itself\n\tif ($('#app-navigation').length && !$('html').hasClass('lte9')\n\t\t&& !$('#app-content').hasClass('no-snapper')) {\n\n\t\t// App sidebar on mobile\n\t\tconst snapper = new Snap({\n\t\t\telement: document.getElementById('app-content'),\n\t\t\tdisable: 'right',\n\t\t\tmaxPosition: 300, // $navigation-width\n\t\t\tminDragDistance: 100,\n\t\t})\n\n\t\t$('#app-content').prepend('<div id=\"app-navigation-toggle\" class=\"icon-menu\" style=\"display:none\" tabindex=\"0\"></div>')\n\n\t\t// keep track whether snapper is currently animating, and\n\t\t// prevent to call open or close while that is the case\n\t\t// to avoid duplicating events (snap.js doesn't check this)\n\t\tlet animating = false\n\t\tsnapper.on('animating', () => {\n\t\t\t// we need this because the trigger button\n\t\t\t// is also implicitly wired to close by snapper\n\t\t\tanimating = true\n\t\t})\n\t\tsnapper.on('animated', () => {\n\t\t\tanimating = false\n\t\t})\n\t\tsnapper.on('start', () => {\n\t\t\t// we need this because dragging triggers that\n\t\t\tanimating = true\n\t\t})\n\t\tsnapper.on('end', () => {\n\t\t\t// we need this because dragging stop triggers that\n\t\t\tanimating = false\n\t\t})\n\n\t\t// These are necessary because calling open or close\n\t\t// on snapper during an animation makes it trigger an\n\t\t// unfinishable animation, which itself will continue\n\t\t// triggering animating events and cause high CPU load,\n\t\t//\n\t\t// Ref https://github.com/jakiestfu/Snap.js/issues/216\n\t\tconst oldSnapperOpen = snapper.open\n\t\tconst oldSnapperClose = snapper.close\n\t\tconst _snapperOpen = () => {\n\t\t\tif (animating || snapper.state().state !== 'closed') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\toldSnapperOpen('left')\n\t\t}\n\n\t\tconst _snapperClose = () => {\n\t\t\tif (animating || snapper.state().state === 'closed') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\toldSnapperClose()\n\t\t}\n\n\t\t// Needs to be deferred to properly catch in-between\n\t\t// events that snap.js is triggering after dragging.\n\t\t//\n\t\t// Skipped when running unit tests as we are not testing\n\t\t// the snap.js workarounds...\n\t\tif (!window.TESTING) {\n\t\t\tsnapper.open = () => {\n\t\t\t\t_.defer(_snapperOpen)\n\t\t\t}\n\t\t\tsnapper.close = () => {\n\t\t\t\t_.defer(_snapperClose)\n\t\t\t}\n\t\t}\n\n\t\t$('#app-navigation-toggle').click((e) => {\n\t\t\t// close is implicit in the button by snap.js\n\t\t\tif (snapper.state().state !== 'left') {\n\t\t\t\tsnapper.open()\n\t\t\t}\n\t\t})\n\t\t$('#app-navigation-toggle').keypress(e => {\n\t\t\tif (snapper.state().state === 'left') {\n\t\t\t\tsnapper.close()\n\t\t\t} else {\n\t\t\t\tsnapper.open()\n\t\t\t}\n\t\t})\n\n\t\t// close sidebar when switching navigation entry\n\t\tconst $appNavigation = $('#app-navigation')\n\t\t$appNavigation.delegate('a, :button', 'click', event => {\n\t\t\tconst $target = $(event.target)\n\t\t\t// don't hide navigation when changing settings or adding things\n\t\t\tif ($target.is('.app-navigation-noclose')\n\t\t\t\t|| $target.closest('.app-navigation-noclose').length) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif ($target.is('.app-navigation-entry-utils-menu-button')\n\t\t\t\t|| $target.closest('.app-navigation-entry-utils-menu-button').length) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif ($target.is('.add-new')\n\t\t\t\t|| $target.closest('.add-new').length) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif ($target.is('#app-settings')\n\t\t\t\t|| $target.closest('#app-settings').length) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tsnapper.close()\n\t\t})\n\n\t\tlet navigationBarSlideGestureEnabled = false\n\t\tlet navigationBarSlideGestureAllowed = true\n\t\tlet navigationBarSlideGestureEnablePending = false\n\n\t\tOC.allowNavigationBarSlideGesture = () => {\n\t\t\tnavigationBarSlideGestureAllowed = true\n\n\t\t\tif (navigationBarSlideGestureEnablePending) {\n\t\t\t\tsnapper.enable()\n\n\t\t\t\tnavigationBarSlideGestureEnabled = true\n\t\t\t\tnavigationBarSlideGestureEnablePending = false\n\t\t\t}\n\t\t}\n\n\t\tOC.disallowNavigationBarSlideGesture = () => {\n\t\t\tnavigationBarSlideGestureAllowed = false\n\n\t\t\tif (navigationBarSlideGestureEnabled) {\n\t\t\t\tconst endCurrentDrag = true\n\t\t\t\tsnapper.disable(endCurrentDrag)\n\n\t\t\t\tnavigationBarSlideGestureEnabled = false\n\t\t\t\tnavigationBarSlideGestureEnablePending = true\n\t\t\t}\n\t\t}\n\n\t\tconst toggleSnapperOnSize = () => {\n\t\t\tif ($(window).width() > breakpointMobileWidth) {\n\t\t\t\tsnapper.close()\n\t\t\t\tsnapper.disable()\n\n\t\t\t\tnavigationBarSlideGestureEnabled = false\n\t\t\t\tnavigationBarSlideGestureEnablePending = false\n\t\t\t} else if (navigationBarSlideGestureAllowed) {\n\t\t\t\tsnapper.enable()\n\n\t\t\t\tnavigationBarSlideGestureEnabled = true\n\t\t\t\tnavigationBarSlideGestureEnablePending = false\n\t\t\t} else {\n\t\t\t\tnavigationBarSlideGestureEnablePending = true\n\t\t\t}\n\t\t}\n\n\t\t$(window).resize(_.debounce(toggleSnapperOnSize, 250))\n\n\t\t// initial call\n\t\ttoggleSnapperOnSize()\n\n\t}\n\n\tinitLiveTimestamps()\n\tPasswordConfirmation.init()\n}\n","/**\n * @copyright 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nimport $ from 'jquery'\n\n$.prototype.tooltip = (function(tooltip) {\n\treturn function(config) {\n\t\ttry {\n\t\t\treturn tooltip.call(this, config)\n\t\t} catch (ex) {\n\t\t\tif (ex instanceof TypeError && config === 'destroy') {\n\t\t\t\tif (window.TESTING === undefined) {\n\t\t\t\t\tconsole.error('Deprecated call $.tooltip(\\'destroy\\') has been deprecated and should be removed')\n\t\t\t\t}\n\t\t\t\treturn tooltip.call(this, 'dispose')\n\t\t\t}\n\t\t\tif (ex instanceof TypeError && config === 'fixTitle') {\n\t\t\t\tif (window.TESTING === undefined) {\n\t\t\t\t\tconsole.error('Deprecated call $.tooltip(\\'fixTitle\\') has been deprecated and should be removed')\n\t\t\t\t}\n\t\t\t\treturn tooltip.call(this, '_fixTitle')\n\t\t\t}\n\t\t}\n\t}\n})($.prototype.tooltip)\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 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 */\n\nimport OC from '../OC'\n\nimport $ from 'jquery'\n\nexport const setUp = () => {\n\tconst $menu = $('#header #settings')\n\t// Using page terminoogy as below\n\tconst $excludedPageClasses = [\n\t\t'user-status-menu-item__header',\n\t]\n\n\t// show loading feedback\n\t$menu.delegate('a', 'click', event => {\n\t\tlet $page = $(event.target)\n\t\tif (!$page.is('a')) {\n\t\t\t$page = $page.closest('a')\n\t\t}\n\t\tif (event.which === 1 && !event.ctrlKey && !event.metaKey) {\n\t\t\tif (!$excludedPageClasses.includes($page.attr('class'))) {\n\t\t\t\t$page.find('img').remove()\n\t\t\t\t$page.find('div').remove() // prevent odd double-clicks\n\t\t\t\t$page.prepend($('<div></div>').addClass('icon-loading-small'))\n\t\t\t}\n\t\t} else {\n\t\t\t// Close navigation when opening menu entry in\n\t\t\t// a new tab\n\t\t\tOC.hideMenus(() => false)\n\t\t}\n\t})\n\n\t$menu.delegate('a', 'mouseup', event => {\n\t\tif (event.which === 2) {\n\t\t\t// Close navigation when opening app in\n\t\t\t// a new tab via middle click\n\t\t\tOC.hideMenus(() => false)\n\t\t}\n\t})\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nimport $ from 'jquery'\n\nimport OC from '../OC'\n\n/**\n * Set up the main menu toggle to react to media query changes.\n * If the screen is small enough, the main menu becomes a toggle.\n * If the screen is bigger, the main menu is not a toggle any more.\n */\nexport const setUp = () => {\n\n\tObject.assign(OC, {\n\t\tsetNavigationCounter(id, counter) {\n\t\t\tconst appmenuElement = document.getElementById('appmenu').querySelector('[data-id=\"' + id + '\"] svg')\n\t\t\tconst appsElement = document.getElementById('apps').querySelector('[data-id=\"' + id + '\"] svg')\n\t\t\tif (counter === 0) {\n\t\t\t\tappmenuElement.classList.remove('has-unread')\n\t\t\t\tappsElement.classList.remove('has-unread')\n\t\t\t\tappmenuElement.getElementsByTagName('image')[0].style.mask = ''\n\t\t\t\tappsElement.getElementsByTagName('image')[0].style.mask = ''\n\t\t\t} else {\n\t\t\t\tappmenuElement.classList.add('has-unread')\n\t\t\t\tappsElement.classList.add('has-unread')\n\t\t\t\tappmenuElement.getElementsByTagName('image')[0].style.mask = 'url(#hole)'\n\t\t\t\tappsElement.getElementsByTagName('image')[0].style.mask = 'url(#hole)'\n\t\t\t}\n\t\t\tdocument.getElementById('appmenu').querySelector('[data-id=\"' + id + '\"] .unread-counter').textContent = counter\n\t\t\tdocument.getElementById('apps').querySelector('[data-id=\"' + id + '\"] .unread-counter').textContent = counter\n\t\t},\n\t})\n\t// init the more-apps menu\n\tOC.registerMenu($('#more-apps > a'), $('#navigation'))\n\n\t// toggle the navigation\n\tconst $toggle = $('#header .header-appname-container')\n\tconst $navigation = $('#navigation')\n\tconst $appmenu = $('#appmenu')\n\n\t// init the menu\n\tOC.registerMenu($toggle, $navigation)\n\t$toggle.data('oldhref', $toggle.attr('href'))\n\t$toggle.attr('href', '#')\n\t$navigation.hide()\n\n\t// show loading feedback on more apps list\n\t$navigation.delegate('a', 'click', event => {\n\t\tlet $app = $(event.target)\n\t\tif (!$app.is('a')) {\n\t\t\t$app = $app.closest('a')\n\t\t}\n\t\tif (event.which === 1 && !event.ctrlKey && !event.metaKey && $app.attr('target') !== '_blank') {\n\t\t\t$app.find('svg').remove()\n\t\t\t$app.find('div').remove() // prevent odd double-clicks\n\t\t\t// no need for theming, loader is already inverted on dark mode\n\t\t\t// but we need it over the primary colour\n\t\t\t$app.prepend($('<div></div>').addClass('icon-loading-small'))\n\t\t} else {\n\t\t\t// Close navigation when opening app in\n\t\t\t// a new tab\n\t\t\tOC.hideMenus(() => false)\n\t\t}\n\t})\n\n\t$navigation.delegate('a', 'mouseup', event => {\n\t\tif (event.which === 2) {\n\t\t\t// Close navigation when opening app in\n\t\t\t// a new tab via middle click\n\t\t\tOC.hideMenus(() => false)\n\t\t}\n\t})\n\n\t// show loading feedback on visible apps list\n\t$appmenu.delegate('li:not(#more-apps) > a', 'click', event => {\n\t\tlet $app = $(event.target)\n\t\tif (!$app.is('a')) {\n\t\t\t$app = $app.closest('a')\n\t\t}\n\n\t\tif (event.which === 1 && !event.ctrlKey && !event.metaKey && $app.parent('#more-apps').length === 0 && $app.attr('target') !== '_blank') {\n\t\t\t$app.find('svg').remove()\n\t\t\t$app.find('div').remove() // prevent odd double-clicks\n\t\t\t$app.prepend($('<div></div>').addClass(\n\t\t\t\tOCA.Theming && OCA.Theming.inverted\n\t\t\t\t\t? 'icon-loading-small'\n\t\t\t\t\t: 'icon-loading-small-dark'\n\t\t\t))\n\t\t\t// trigger redirect\n\t\t\t// needed for ie, but also works for every browser\n\t\t\twindow.location = $app.attr('href')\n\t\t} else {\n\t\t\t// Close navigation when opening app in\n\t\t\t// a new tab\n\t\t\tOC.hideMenus(() => false)\n\t\t}\n\t})\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport $ from 'jquery'\nimport OC from '../OC'\n\n/**\n * @todo move to contacts menu code https://github.com/orgs/nextcloud/projects/31#card-21213129\n */\nexport const setUp = () => {\n\t// eslint-disable-next-line no-new\n\tnew OC.ContactsMenu({\n\t\tel: $('#contactsmenu .menu'),\n\t\ttrigger: $('#contactsmenu .menutoggle'),\n\t})\n}\n","/**\n * @copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport $ from 'jquery'\n\n/*\n * Detects links:\n * Either the http(s) protocol is given or two strings, basically limited to ascii with the last\n * word being at least one digit long,\n * followed by at least another character\n *\n * The downside: anything not ascii is excluded. Not sure how common it is in areas using different\n * alphabets… the upside: fake domains with similar looking characters won't be formatted as links\n */\nconst urlRegex = /(\\s|^)(https?:\\/\\/)?((?:[-A-Z0-9+_]+\\.)+[-A-Z]+(?:\\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*)(\\s|$)/ig\n\n/**\n * @param {any} content -\n */\nexport function plainToRich(content) {\n\treturn this.formatLinksRich(content)\n}\n\n/**\n * @param {any} content -\n */\nexport function richToPlain(content) {\n\treturn this.formatLinksPlain(content)\n}\n\n/**\n * @param {any} content -\n */\nexport function formatLinksRich(content) {\n\treturn content.replace(urlRegex, function(_, leadingSpace, protocol, url, trailingSpace) {\n\t\tlet linkText = url\n\t\tif (!protocol) {\n\t\t\tprotocol = 'https://'\n\t\t} else if (protocol === 'http://') {\n\t\t\tlinkText = protocol + url\n\t\t}\n\n\t\treturn leadingSpace + '<a class=\"external\" target=\"_blank\" rel=\"noopener noreferrer\" href=\"' + protocol + url + '\">' + linkText + '</a>' + trailingSpace\n\t})\n}\n\n/**\n * @param {any} content -\n */\nexport function formatLinksPlain(content) {\n\tconst $content = $('<div></div>').html(content)\n\t$content.find('a').each(function() {\n\t\tconst $this = $(this)\n\t\t$this.html($this.attr('href'))\n\t})\n\treturn $content.html()\n}\n","/**\n * @copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n * @param {any} options -\n */\nexport function query(options) {\n\toptions = options || {}\n\tconst dismissOptions = options.dismiss || {}\n\t$.ajax({\n\t\ttype: 'GET',\n\t\turl: options.url || generateOcsUrl('core/whatsnew?format=json'),\n\t\tsuccess: options.success || function(data, statusText, xhr) {\n\t\t\tonQuerySuccess(data, statusText, xhr, dismissOptions)\n\t\t},\n\t\terror: options.error || onQueryError,\n\t})\n}\n\n/**\n * @param {any} version -\n * @param {any} options -\n */\nexport function dismiss(version, options) {\n\toptions = options || {}\n\t$.ajax({\n\t\ttype: 'POST',\n\t\turl: options.url || generateOcsUrl('core/whatsnew'),\n\t\tdata: { version: encodeURIComponent(version) },\n\t\tsuccess: options.success || onDismissSuccess,\n\t\terror: options.error || onDismissError,\n\t})\n\t// remove element immediately\n\t$('.whatsNewPopover').remove()\n}\n\n/**\n * @param {any} data -\n * @param {any} statusText -\n * @param {any} xhr -\n * @param {any} dismissOptions -\n */\nfunction onQuerySuccess(data, statusText, xhr, dismissOptions) {\n\tconsole.debug('querying Whats New data was successful: ' + statusText)\n\tconsole.debug(data)\n\n\tif (xhr.status !== 200) {\n\t\treturn\n\t}\n\n\tlet item, menuItem, text, icon\n\n\tconst div = document.createElement('div')\n\tdiv.classList.add('popovermenu', 'open', 'whatsNewPopover', 'menu-left')\n\n\tconst list = document.createElement('ul')\n\n\t// header\n\titem = document.createElement('li')\n\tmenuItem = document.createElement('span')\n\tmenuItem.className = 'menuitem'\n\n\ttext = document.createElement('span')\n\ttext.innerText = t('core', 'New in') + ' ' + data.ocs.data.product\n\ttext.className = 'caption'\n\tmenuItem.appendChild(text)\n\n\ticon = document.createElement('span')\n\ticon.className = 'icon-close'\n\ticon.onclick = function() {\n\t\tdismiss(data.ocs.data.version, dismissOptions)\n\t}\n\tmenuItem.appendChild(icon)\n\n\titem.appendChild(menuItem)\n\tlist.appendChild(item)\n\n\t// Highlights\n\tfor (const i in data.ocs.data.whatsNew.regular) {\n\t\tconst whatsNewTextItem = data.ocs.data.whatsNew.regular[i]\n\t\titem = document.createElement('li')\n\n\t\tmenuItem = document.createElement('span')\n\t\tmenuItem.className = 'menuitem'\n\n\t\ticon = document.createElement('span')\n\t\ticon.className = 'icon-checkmark'\n\t\tmenuItem.appendChild(icon)\n\n\t\ttext = document.createElement('p')\n\t\ttext.innerHTML = _.escape(whatsNewTextItem)\n\t\tmenuItem.appendChild(text)\n\n\t\titem.appendChild(menuItem)\n\t\tlist.appendChild(item)\n\t}\n\n\t// Changelog URL\n\tif (!_.isUndefined(data.ocs.data.changelogURL)) {\n\t\titem = document.createElement('li')\n\n\t\tmenuItem = document.createElement('a')\n\t\tmenuItem.href = data.ocs.data.changelogURL\n\t\tmenuItem.rel = 'noreferrer noopener'\n\t\tmenuItem.target = '_blank'\n\n\t\ticon = document.createElement('span')\n\t\ticon.className = 'icon-link'\n\t\tmenuItem.appendChild(icon)\n\n\t\ttext = document.createElement('span')\n\t\ttext.innerText = t('core', 'View changelog')\n\t\tmenuItem.appendChild(text)\n\n\t\titem.appendChild(menuItem)\n\t\tlist.appendChild(item)\n\t}\n\n\tdiv.appendChild(list)\n\tdocument.body.appendChild(div)\n}\n\n/**\n * @param {any} x -\n * @param {any} t -\n * @param {any} e -\n */\nfunction onQueryError(x, t, e) {\n\tconsole.debug('querying Whats New Data resulted in an error: ' + t + e)\n\tconsole.debug(x)\n}\n\n/**\n * @param {any} data -\n */\nfunction onDismissSuccess(data) {\n\t// noop\n}\n\n/**\n * @param {any} data -\n */\nfunction onDismissError(data) {\n\tconsole.debug('dismissing Whats New data resulted in an error: ' + data)\n}\n","/**\n * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nimport escapeHTML from 'escape-html'\n\n/**\n * @typedef TypeDefinition\n * @function {Function} action This action is executed to let the user select a resource\n * @param {string} icon Contains the icon css class for the type\n * @function Object() { [native code] }\n */\n\n/**\n * @type {TypeDefinition[]}\n */\nconst types = {}\n\n/**\n * Those translations will be used by the vue component but they should be shipped with the server\n * FIXME: Those translations should be added to the library\n *\n * @return {Array}\n */\nexport const l10nProjects = () => {\n\treturn [\n\t\tt('core', 'Add to a project'),\n\t\tt('core', 'Show details'),\n\t\tt('core', 'Hide details'),\n\t\tt('core', 'Rename project'),\n\t\tt('core', 'Failed to rename the project'),\n\t\tt('core', 'Failed to create a project'),\n\t\tt('core', 'Failed to add the item to the project'),\n\t\tt('core', 'Connect items to a project to make them easier to find'),\n\t\tt('core', 'Type to search for existing projects'),\n\t]\n}\n\nexport default {\n\t/**\n\t *\n\t * @param {string} type type\n\t * @param {TypeDefinition} typeDefinition typeDefinition\n\t */\n\tregisterType(type, typeDefinition) {\n\t\ttypes[type] = typeDefinition\n\t},\n\ttrigger(type) {\n\t\treturn types[type].action()\n\t},\n\tgetTypes() {\n\t\treturn Object.keys(types)\n\t},\n\tgetIcon(type) {\n\t\treturn types[type].typeIconClass || ''\n\t},\n\tgetLabel(type) {\n\t\treturn escapeHTML(types[type].typeString || type)\n\t},\n\tgetLink(type, id) {\n\t\t/* TODO: Allow action to be executed instead of href as well */\n\t\treturn typeof types[type] !== 'undefined' ? types[type].link(id) : ''\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\n/* eslint-disable @nextcloud/no-deprecations */\nimport { initCore } from './init'\n\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport 'jquery-migrate/dist/jquery-migrate.min'\n// TODO: switch to `jquery-ui` package and import widgets and effects individually\n// `jquery-ui-dist` is used as a workaround for the issue of missing effects\nimport 'jquery-ui-dist/jquery-ui'\nimport 'jquery-ui-dist/jquery-ui.css'\nimport 'jquery-ui-dist/jquery-ui.theme.css'\n// END TODO\nimport autosize from 'autosize'\nimport Backbone from 'backbone'\nimport 'bootstrap/js/dist/tooltip'\nimport './Polyfill/tooltip'\nimport ClipboardJS from 'clipboard'\nimport { dav } from 'davclient.js'\nimport Handlebars from 'handlebars'\nimport '@nextcloud/jcrop/js/jquery.Jcrop'\nimport '@nextcloud/jcrop/css/jquery.Jcrop.css'\nimport md5 from 'blueimp-md5'\nimport moment from 'moment'\nimport 'select2'\nimport 'select2/select2.css'\nimport 'snap.js/dist/snap'\nimport 'strengthify'\nimport 'strengthify/strengthify.css'\n\nimport OC from './OC/index'\nimport OCP from './OCP/index'\nimport OCA from './OCA/index'\nimport { getToken as getRequestToken } from './OC/requesttoken'\n\nconst warnIfNotTesting = function() {\n\tif (window.TESTING === undefined) {\n\t\tconsole.warn.apply(console, arguments)\n\t}\n}\n\n/**\n * Mark a function as deprecated and automatically\n * warn if used!\n *\n * @param {Function} func the library to deprecate\n * @param {string} funcName the name of the library\n * @param {number} version the version this gets removed\n * @return {Function}\n */\nconst deprecate = (func, funcName, version) => {\n\tconst oldFunc = func\n\tconst newFunc = function() {\n\t\twarnIfNotTesting(`The ${funcName} library is deprecated! It will be removed in nextcloud ${version}.`)\n\t\treturn oldFunc.apply(this, arguments)\n\t}\n\tObject.assign(newFunc, oldFunc)\n\treturn newFunc\n}\n\nconst setDeprecatedProp = (global, cb, msg) => {\n\t(Array.isArray(global) ? global : [global]).forEach(global => {\n\t\tif (window[global] !== undefined) {\n\t\t\tdelete window[global]\n\t\t}\n\t\tObject.defineProperty(window, global, {\n\t\t\tget: () => {\n\t\t\t\tif (msg) {\n\t\t\t\t\twarnIfNotTesting(`${global} is deprecated: ${msg}`)\n\t\t\t\t} else {\n\t\t\t\t\twarnIfNotTesting(`${global} is deprecated`)\n\t\t\t\t}\n\n\t\t\t\treturn cb()\n\t\t\t},\n\t\t})\n\t})\n}\n\nwindow._ = _\nsetDeprecatedProp(['$', 'jQuery'], () => $, 'The global jQuery is deprecated. It will be removed in a later versions without another warning. Please ship your own.')\nsetDeprecatedProp('autosize', () => autosize, 'please ship your own, this will be removed in Nextcloud 20')\nsetDeprecatedProp('Backbone', () => Backbone, 'please ship your own, this will be removed in Nextcloud 20')\nsetDeprecatedProp(['Clipboard', 'ClipboardJS'], () => ClipboardJS, 'please ship your own, this will be removed in Nextcloud 20')\nwindow.dav = dav\nsetDeprecatedProp('Handlebars', () => Handlebars, 'please ship your own, this will be removed in Nextcloud 20')\nsetDeprecatedProp('md5', () => md5, 'please ship your own, this will be removed in Nextcloud 20')\nsetDeprecatedProp('moment', () => moment, 'please ship your own, this will be removed in Nextcloud 20')\n\nwindow.OC = OC\nsetDeprecatedProp('initCore', () => initCore, 'this is an internal function')\nsetDeprecatedProp('oc_appswebroots', () => OC.appswebroots, 'use OC.appswebroots instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_config', () => OC.config, 'use OC.config instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_current_user', () => OC.getCurrentUser().uid, 'use OC.getCurrentUser().uid instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_debug', () => OC.debug, 'use OC.debug instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_defaults', () => OC.theme, 'use OC.theme instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_isadmin', OC.isUserAdmin, 'use OC.isUserAdmin() instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_requesttoken', () => getRequestToken(), 'use OC.requestToken instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_webroot', () => OC.webroot, 'use OC.getRootPath() instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('OCDialogs', () => OC.dialogs, 'use OC.dialogs instead, this will be removed in Nextcloud 20')\nwindow.OCP = OCP\nwindow.OCA = OCA\n$.fn.select2 = deprecate($.fn.select2, 'select2', 19)\n\n/**\n * translate a string\n *\n * @param {string} app the id of the app for which to translate the string\n * @param {string} text the string to translate\n * @param [vars] map of placeholder key to value\n * @param {number} [count] number to replace %n with\n * @return {string}\n */\nwindow.t = _.bind(OC.L10N.translate, OC.L10N)\n\n/**\n * translate a string\n *\n * @param {string} app the id of the app for which to translate the string\n * @param {string} text_singular the string to translate for exactly one object\n * @param {string} text_plural the string to translate for n objects\n * @param {number} count number to determine whether to use singular or plural\n * @param [vars] map of placeholder key to value\n * @return {string} Translated string\n */\nwindow.n = _.bind(OC.L10N.translatePlural, OC.L10N)\n","/**\n * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nconst loadedScripts = {}\nconst loadedStylesheets = {}\n/**\n * @namespace OCP\n * @class Loader\n */\nexport default {\n\n\t/**\n\t * Load a script asynchronously\n\t *\n\t * @param {string} app the app name\n\t * @param {string} file the script file name\n\t * @return {Promise}\n\t */\n\tloadScript(app, file) {\n\t\tconst key = app + file\n\t\tif (Object.prototype.hasOwnProperty.call(loadedScripts, key)) {\n\t\t\treturn Promise.resolve()\n\t\t}\n\t\tloadedScripts[key] = true\n\t\treturn new Promise(function(resolve, reject) {\n\t\t\tconst scriptPath = OC.filePath(app, 'js', file)\n\t\t\tconst script = document.createElement('script')\n\t\t\tscript.src = scriptPath\n\t\t\tscript.setAttribute('nonce', btoa(OC.requestToken))\n\t\t\tscript.onload = () => resolve()\n\t\t\tscript.onerror = () => reject(new Error(`Failed to load script from ${scriptPath}`))\n\t\t\tdocument.head.appendChild(script)\n\t\t})\n\t},\n\n\t/**\n\t * Load a stylesheet file asynchronously\n\t *\n\t * @param {string} app the app name\n\t * @param {string} file the script file name\n\t * @return {Promise}\n\t */\n\tloadStylesheet(app, file) {\n\t\tconst key = app + file\n\t\tif (Object.prototype.hasOwnProperty.call(loadedStylesheets, key)) {\n\t\t\treturn Promise.resolve()\n\t\t}\n\t\tloadedStylesheets[key] = true\n\t\treturn new Promise(function(resolve, reject) {\n\t\t\tconst stylePath = OC.filePath(app, 'css', file)\n\t\t\tconst link = document.createElement('link')\n\t\t\tlink.href = stylePath\n\t\t\tlink.type = 'text/css'\n\t\t\tlink.rel = 'stylesheet'\n\t\t\tlink.onload = () => resolve()\n\t\t\tlink.onerror = () => reject(new Error(`Failed to load stylesheet from ${stylePath}`))\n\t\t\tdocument.head.appendChild(link)\n\t\t})\n\t},\n}\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nimport {\n\tshowError,\n\tshowInfo, showMessage,\n\tshowSuccess,\n\tshowWarning,\n} from '@nextcloud/dialogs'\n\nexport default {\n\t/**\n\t * @deprecated 19.0.0 use `showSuccess` from the `@nextcloud/dialogs` package instead\n\t *\n\t * @param {string} text the toast text\n\t * @param {object} options options\n\t * @return {Toast}\n\t */\n\tsuccess(text, options) {\n\t\treturn showSuccess(text, options)\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `showWarning` from the `@nextcloud/dialogs` package instead\n\t *\n\t * @param {string} text the toast text\n\t * @param {object} options options\n\t * @return {Toast}\n\t */\n\twarning(text, options) {\n\t\treturn showWarning(text, options)\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `showError` from the `@nextcloud/dialogs` package instead\n\t *\n\t * @param {string} text the toast text\n\t * @param {object} options options\n\t * @return {Toast}\n\t */\n\terror(text, options) {\n\t\treturn showError(text, options)\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `showInfo` from the `@nextcloud/dialogs` package instead\n\t *\n\t * @param {string} text the toast text\n\t * @param {object} options options\n\t * @return {Toast}\n\t */\n\tinfo(text, options) {\n\t\treturn showInfo(text, options)\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `showMessage` from the `@nextcloud/dialogs` package instead\n\t *\n\t * @param {string} text the toast text\n\t * @param {object} options options\n\t * @return {Toast}\n\t */\n\tmessage(text, options) {\n\t\treturn showMessage(text, options)\n\t},\n\n}\n","/**\n * @copyright Copyright (c) 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nimport { loadState } from '@nextcloud/initial-state'\n\nimport * as AppConfig from './appconfig'\nimport * as Comments from './comments'\nimport * as WhatsNew from './whatsnew'\n\nimport Collaboration from './collaboration'\nimport Loader from './loader'\nimport Toast from './toast'\n\n/** @namespace OCP */\nexport default {\n\tAppConfig,\n\tCollaboration,\n\tComments,\n\tInitialState: {\n\t\t/**\n\t\t * @deprecated 18.0.0 add https://www.npmjs.com/package/@nextcloud/initial-state to your app\n\t\t */\n\t\tloadState,\n\t},\n\tLoader,\n\t/**\n\t * @deprecated 19.0.0 use the `@nextcloud/dialogs` package instead\n\t */\n\tToast,\n\tWhatsNew,\n}\n","/**\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport $ from 'jquery'\n\nimport OC from '../OC'\n\n/**\n * This plugin inserts the right avatar for the user, depending on, whether a\n * custom avatar is uploaded - which it uses then - or not, and display a\n * placeholder with the first letter of the users name instead.\n * For this it queries the core_avatar_get route, thus this plugin is fit very\n * tightly for owncloud, and it may not work anywhere else.\n *\n * You may use this on any <div></div>\n * Here I'm using <div class=\"avatardiv\"></div> as an example.\n *\n * There are 5 ways to call this:\n *\n * 1. $('.avatardiv').avatar('jdoe', 128);\n * This will make the div to jdoe's fitting avatar, with a size of 128px.\n *\n * 2. $('.avatardiv').avatar('jdoe');\n * This will make the div to jdoe's fitting avatar. If the div already has a\n * height, it will be used for the avatars size. Otherwise this plugin will\n * search for 'size' DOM data, to use for avatar size. If neither are available\n * it will default to 64px.\n *\n * 3. $('.avatardiv').avatar();\n * This will search the DOM for 'user' data, to use as the username. If there\n * is no username available it will default to a placeholder with the value of\n * \"?\". The size will be determined the same way, as the second example.\n *\n * 4. $('.avatardiv').avatar('jdoe', 128, true);\n * This will behave like the first example, except it will also append random\n * hashes to the custom avatar images, to force image reloading in IE8.\n *\n * 5. $('.avatardiv').avatar('jdoe', 128, undefined, true);\n * This will behave like the first example, but it will hide the avatardiv, if\n * it will display the default placeholder. undefined is the ie8fix from\n * example 4 and can be either true, or false/undefined, to be ignored.\n *\n * 6. $('.avatardiv').avatar('jdoe', 128, undefined, true, callback);\n * This will behave like the above example, but it will call the function\n * defined in callback after the avatar is placed into the DOM.\n *\n */\n\n$.fn.avatar = function(user, size, ie8fix, hidedefault, callback, displayname) {\n\tconst setAvatarForUnknownUser = function(target) {\n\t\ttarget.imageplaceholder('?')\n\t\ttarget.css('background-color', '#b9b9b9')\n\t}\n\n\tif (typeof (user) !== 'undefined') {\n\t\tuser = String(user)\n\t}\n\tif (typeof (displayname) !== 'undefined') {\n\t\tdisplayname = String(displayname)\n\t}\n\n\tif (typeof (size) === 'undefined') {\n\t\tif (this.height() > 0) {\n\t\t\tsize = this.height()\n\t\t} else if (this.data('size') > 0) {\n\t\t\tsize = this.data('size')\n\t\t} else {\n\t\t\tsize = 64\n\t\t}\n\t}\n\n\tthis.height(size)\n\tthis.width(size)\n\n\tif (typeof (user) === 'undefined') {\n\t\tif (typeof (this.data('user')) !== 'undefined') {\n\t\t\tuser = this.data('user')\n\t\t} else {\n\t\t\tsetAvatarForUnknownUser(this)\n\t\t\treturn\n\t\t}\n\t}\n\n\t// sanitize\n\tuser = String(user).replace(/\\//g, '')\n\n\tconst $div = this\n\tlet url\n\n\t// If this is our own avatar we have to use the version attribute\n\tif (user === OC.getCurrentUser().uid) {\n\t\turl = OC.generateUrl(\n\t\t\t'/avatar/{user}/{size}?v={version}',\n\t\t\t{\n\t\t\t\tuser,\n\t\t\t\tsize: Math.ceil(size * window.devicePixelRatio),\n\t\t\t\tversion: oc_userconfig.avatar.version,\n\t\t\t})\n\t} else {\n\t\turl = OC.generateUrl(\n\t\t\t'/avatar/{user}/{size}',\n\t\t\t{\n\t\t\t\tuser,\n\t\t\t\tsize: Math.ceil(size * window.devicePixelRatio),\n\t\t\t})\n\t}\n\n\tconst img = new Image()\n\n\t// If the new image loads successfully set it.\n\timg.onload = function() {\n\t\t$div.clearimageplaceholder()\n\t\t$div.append(img)\n\n\t\tif (typeof callback === 'function') {\n\t\t\tcallback()\n\t\t}\n\t}\n\t// Fallback when avatar loading fails:\n\t// Use old placeholder when a displayname attribute is defined,\n\t// otherwise show the unknown user placeholder.\n\timg.onerror = function() {\n\t\t$div.clearimageplaceholder()\n\t\tif (typeof (displayname) !== 'undefined') {\n\t\t\t$div.imageplaceholder(user, displayname)\n\t\t} else {\n\t\t\tsetAvatarForUnknownUser($div)\n\t\t}\n\n\t\tif (typeof callback === 'function') {\n\t\t\tcallback()\n\t\t}\n\t}\n\n\tif (size < 32) {\n\t\t$div.addClass('icon-loading-small')\n\t} else {\n\t\t$div.addClass('icon-loading')\n\t}\n\timg.width = size\n\timg.height = size\n\timg.src = url\n\timg.alt = ''\n}\n","/**\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport $ from 'jquery'\n\nimport OC from '../OC'\n\nconst LIST = ''\n\t+ '<div class=\"menu popovermenu menu-left hidden contactsmenu-popover\">'\n\t+ ' <ul>'\n\t+ ' <li>'\n\t+ ' <a>'\n\t+ ' <span class=\"icon-loading-small\"></span>'\n\t+ ' </a>'\n\t+ ' </li>'\n\t+ ' </ul>'\n\t+ '</div>'\n\nconst entryTemplate = require('./contactsmenu/jquery_entry.handlebars')\n\n$.fn.contactsMenu = function(shareWith, shareType, appendTo) {\n\t// 0 - user, 4 - email, 6 - remote\n\tconst allowedTypes = [0, 4, 6]\n\tif (allowedTypes.indexOf(shareType) === -1) {\n\t\treturn\n\t}\n\n\tconst $div = this\n\tappendTo.append(LIST)\n\tconst $list = appendTo.find('div.contactsmenu-popover')\n\n\t$div.click(function() {\n\t\tif (!$list.hasClass('hidden')) {\n\t\t\t$list.addClass('hidden')\n\t\t\t$list.hide()\n\t\t\treturn\n\t\t}\n\n\t\t$list.removeClass('hidden')\n\t\t$list.show()\n\n\t\tif ($list.hasClass('loaded')) {\n\t\t\treturn\n\t\t}\n\n\t\t$list.addClass('loaded')\n\t\t$.ajax(OC.generateUrl('/contactsmenu/findOne'), {\n\t\t\tmethod: 'POST',\n\t\t\tdata: {\n\t\t\t\tshareType,\n\t\t\t\tshareWith,\n\t\t\t},\n\t\t}).then(function(data) {\n\t\t\t$list.find('ul').find('li').addClass('hidden')\n\n\t\t\tlet actions\n\t\t\tif (!data.topAction) {\n\t\t\t\tactions = [{\n\t\t\t\t\thyperlink: '#',\n\t\t\t\t\ttitle: t('core', 'No action available'),\n\t\t\t\t}]\n\t\t\t} else {\n\t\t\t\tactions = [data.topAction].concat(data.actions)\n\t\t\t}\n\n\t\t\tactions.forEach(function(action) {\n\t\t\t\t$list.find('ul').append(entryTemplate(action))\n\t\t\t})\n\n\t\t\t$div.trigger('load')\n\t\t}, function(jqXHR) {\n\t\t\t$list.find('ul').find('li').addClass('hidden')\n\n\t\t\tlet title\n\t\t\tif (jqXHR.status === 404) {\n\t\t\t\ttitle = t('core', 'No action available')\n\t\t\t} else {\n\t\t\t\ttitle = t('core', 'Error fetching contact actions')\n\t\t\t}\n\n\t\t\t$list.find('ul').append(entryTemplate({\n\t\t\t\thyperlink: '#',\n\t\t\t\ttitle,\n\t\t\t}))\n\n\t\t\t$div.trigger('loaderror', jqXHR)\n\t\t})\n\t})\n\n\t$(document).click(function(event) {\n\t\tconst clickedList = ($list.has(event.target).length > 0)\n\t\tlet clickedTarget = ($div.has(event.target).length > 0)\n\n\t\t$div.each(function() {\n\t\t\tif ($(this).is(event.target)) {\n\t\t\t\tclickedTarget = true\n\t\t\t}\n\t\t})\n\n\t\tif (clickedList || clickedTarget) {\n\t\t\treturn\n\t\t}\n\n\t\t$list.addClass('hidden')\n\t\t$list.hide()\n\t})\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport $ from 'jquery'\n\n/**\n * check if an element exists.\n * allows you to write if ($('#myid').exists()) to increase readability\n *\n * @see {@link http://stackoverflow.com/questions/31044/is-there-an-exists-function-for-jquery}\n * @return {boolean}\n */\n$.fn.exists = function() {\n\treturn this.length > 0\n}\n","/**\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport $ from 'jquery'\n\n/**\n * Filter jQuery selector by attribute value\n *\n * @param {string} attrName attribute name\n * @param {string} attrValue attribute value\n * @return {void}\n */\n$.fn.filterAttr = function(attrName, attrValue) {\n\treturn this.filter(function() {\n\t\treturn $(this).attr(attrName) === attrValue\n\t})\n}\n","/**\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Gary Kim <gary@garykim.dev>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport $ from 'jquery'\n\n$.widget('oc.ocdialog', {\n\toptions: {\n\t\twidth: 'auto',\n\t\theight: 'auto',\n\t\tcloseButton: true,\n\t\tcloseOnEscape: true,\n\t\tcloseCallback: null,\n\t\tmodal: false,\n\t},\n\t_create() {\n\t\tconst self = this\n\n\t\tthis.originalCss = {\n\t\t\tdisplay: this.element[0].style.display,\n\t\t\twidth: this.element[0].style.width,\n\t\t\theight: this.element[0].style.height,\n\t\t}\n\n\t\tthis.originalTitle = this.element.attr('title')\n\t\tthis.options.title = this.options.title || this.originalTitle\n\n\t\tthis.$dialog = $('<div class=\"oc-dialog\"></div>')\n\t\t\t.attr({\n\t\t\t\t// Setting tabIndex makes the div focusable\n\t\t\t\ttabIndex: -1,\n\t\t\t\trole: 'dialog',\n\t\t\t})\n\t\t\t.insertBefore(this.element)\n\t\tthis.$dialog.append(this.element.detach())\n\t\tthis.element.removeAttr('title').addClass('oc-dialog-content').appendTo(this.$dialog)\n\n\t\tthis.$dialog.css({\n\t\t\tdisplay: 'inline-block',\n\t\t\tposition: 'fixed',\n\t\t})\n\n\t\tthis.enterCallback = null\n\n\t\t$(document).on('keydown keyup', function(event) {\n\t\t\tif (\n\t\t\t\tevent.target !== self.$dialog.get(0)\n\t\t\t\t&& self.$dialog.find($(event.target)).length === 0\n\t\t\t) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// Escape\n\t\t\tif (\n\t\t\t\tevent.keyCode === 27\n\t\t\t\t&& event.type === 'keydown'\n\t\t\t\t&& self.options.closeOnEscape\n\t\t\t) {\n\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\tself.close()\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t// Enter\n\t\t\tif (event.keyCode === 13) {\n\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\tif (self.enterCallback !== null) {\n\t\t\t\t\tself.enterCallback()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif (event.type === 'keyup') {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\t// If no button is selected we trigger the primary\n\t\t\t\tif (\n\t\t\t\t\tself.$buttonrow\n\t\t\t\t\t&& self.$buttonrow.find($(event.target)).length === 0\n\t\t\t\t) {\n\t\t\t\t\tconst $button = self.$buttonrow.find('button.primary')\n\t\t\t\t\tif ($button && !$button.prop('disabled')) {\n\t\t\t\t\t\t$button.trigger('click')\n\t\t\t\t\t}\n\t\t\t\t} else if (self.$buttonrow) {\n\t\t\t\t\t$(event.target).trigger('click')\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t}\n\t\t})\n\n\t\tthis._setOptions(this.options)\n\t\tthis._createOverlay()\n\t},\n\t_init() {\n\t\tthis.$dialog.focus()\n\t\tthis._trigger('open')\n\t},\n\t_setOption(key, value) {\n\t\tconst self = this\n\t\tswitch (key) {\n\t\tcase 'title':\n\t\t\tif (this.$title) {\n\t\t\t\tthis.$title.text(value)\n\t\t\t} else {\n\t\t\t\tconst $title = $('<h2 class=\"oc-dialog-title\">'\n\t\t\t\t\t\t+ value\n\t\t\t\t\t\t+ '</h2>')\n\t\t\t\tthis.$title = $title.prependTo(this.$dialog)\n\t\t\t}\n\t\t\tthis._setSizes()\n\t\t\tbreak\n\t\tcase 'buttons':\n\t\t\tif (this.$buttonrow) {\n\t\t\t\tthis.$buttonrow.empty()\n\t\t\t} else {\n\t\t\t\tconst $buttonrow = $('<div class=\"oc-dialog-buttonrow\"></div>')\n\t\t\t\tthis.$buttonrow = $buttonrow.appendTo(this.$dialog)\n\t\t\t}\n\t\t\tif (value.length === 1) {\n\t\t\t\tthis.$buttonrow.addClass('onebutton')\n\t\t\t} else if (value.length === 2) {\n\t\t\t\tthis.$buttonrow.addClass('twobuttons')\n\t\t\t} else if (value.length === 3) {\n\t\t\t\tthis.$buttonrow.addClass('threebuttons')\n\t\t\t}\n\t\t\t$.each(value, function(idx, val) {\n\t\t\t\tconst $button = $('<button>').text(val.text)\n\t\t\t\tif (val.classes) {\n\t\t\t\t\t$button.addClass(val.classes)\n\t\t\t\t}\n\t\t\t\tif (val.defaultButton) {\n\t\t\t\t\t$button.addClass('primary')\n\t\t\t\t\tself.$defaultButton = $button\n\t\t\t\t}\n\t\t\t\tself.$buttonrow.append($button)\n\t\t\t\t$button.click(function() {\n\t\t\t\t\tval.click.apply(self.element[0], arguments)\n\t\t\t\t})\n\t\t\t})\n\t\t\tthis.$buttonrow.find('button')\n\t\t\t\t.on('focus', function(event) {\n\t\t\t\t\tself.$buttonrow.find('button').removeClass('primary')\n\t\t\t\t\t$(this).addClass('primary')\n\t\t\t\t})\n\t\t\tthis._setSizes()\n\t\t\tbreak\n\t\tcase 'style':\n\t\t\tif (value.buttons !== undefined) {\n\t\t\t\tthis.$buttonrow.addClass(value.buttons)\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'closeButton':\n\t\t\tif (value) {\n\t\t\t\tconst $closeButton = $('<a class=\"oc-dialog-close\"></a>')\n\t\t\t\tthis.$dialog.prepend($closeButton)\n\t\t\t\t$closeButton.on('click', function() {\n\t\t\t\t\tself.options.closeCallback && self.options.closeCallback()\n\t\t\t\t\tself.close()\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tthis.$dialog.find('.oc-dialog-close').remove()\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'width':\n\t\t\tthis.$dialog.css('width', value)\n\t\t\tbreak\n\t\tcase 'height':\n\t\t\tthis.$dialog.css('height', value)\n\t\t\tbreak\n\t\tcase 'close':\n\t\t\tthis.closeCB = value\n\t\t\tbreak\n\t\t}\n\t\t// this._super(key, value);\n\t\t$.Widget.prototype._setOption.apply(this, arguments)\n\t},\n\t_setOptions(options) {\n\t\t// this._super(options);\n\t\t$.Widget.prototype._setOptions.apply(this, arguments)\n\t},\n\t_setSizes() {\n\t\tlet lessHeight = 0\n\t\tif (this.$title) {\n\t\t\tlessHeight += this.$title.outerHeight(true)\n\t\t}\n\t\tif (this.$buttonrow) {\n\t\t\tlessHeight += this.$buttonrow.outerHeight(true)\n\t\t}\n\t\tthis.element.css({\n\t\t\theight: 'calc(100% - ' + lessHeight + 'px)',\n\t\t})\n\t},\n\t_createOverlay() {\n\t\tif (!this.options.modal) {\n\t\t\treturn\n\t\t}\n\n\t\tconst self = this\n\t\tlet contentDiv = $('#content')\n\t\tif (contentDiv.length === 0) {\n\t\t\t// nextcloud-vue compatibility\n\t\t\tcontentDiv = $('.content')\n\t\t}\n\t\tthis.overlay = $('<div>')\n\t\t\t.addClass('oc-dialog-dim')\n\t\t\t.appendTo(contentDiv)\n\t\tthis.overlay.on('click keydown keyup', function(event) {\n\t\t\tif (event.target !== self.$dialog.get(0) && self.$dialog.find($(event.target)).length === 0) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tevent.stopPropagation()\n\n\t\t\t}\n\t\t})\n\t},\n\t_destroyOverlay() {\n\t\tif (!this.options.modal) {\n\t\t\treturn\n\t\t}\n\n\t\tif (this.overlay) {\n\t\t\tthis.overlay.off('click keydown keyup')\n\t\t\tthis.overlay.remove()\n\t\t\tthis.overlay = null\n\t\t}\n\t},\n\twidget() {\n\t\treturn this.$dialog\n\t},\n\tsetEnterCallback(callback) {\n\t\tthis.enterCallback = callback\n\t},\n\tunsetEnterCallback() {\n\t\tthis.enterCallback = null\n\t},\n\tclose() {\n\t\tthis._destroyOverlay()\n\t\tconst self = this\n\t\t// Ugly hack to catch remaining keyup events.\n\t\tsetTimeout(function() {\n\t\t\tself._trigger('close', self)\n\t\t}, 200)\n\n\t\tself.$dialog.remove()\n\t\tthis.destroy()\n\t},\n\tdestroy() {\n\t\tif (this.$title) {\n\t\t\tthis.$title.remove()\n\t\t}\n\t\tif (this.$buttonrow) {\n\t\t\tthis.$buttonrow.remove()\n\t\t}\n\n\t\tif (this.originalTitle) {\n\t\t\tthis.element.attr('title', this.originalTitle)\n\t\t}\n\t\tthis.element.removeClass('oc-dialog-content')\n\t\t\t.css(this.originalCss).detach().insertBefore(this.$dialog)\n\t\tthis.$dialog.remove()\n\t},\n})\n","/**\n * @copyright Copyright (c) 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport $ from 'jquery'\nimport escapeHTML from 'escape-html'\n\n/**\n * jQuery plugin for micro templates\n *\n * Strings are automatically escaped, but that can be disabled by setting\n * escapeFunction to null.\n *\n * Usage examples:\n *\n * var htmlStr = '<p>Bake, uncovered, until the {greasystuff} is melted and the {pasta} is heated through, about {min} minutes.</p>'\n * $(htmlStr).octemplate({greasystuff: 'cheese', pasta: 'macaroni', min: 10});\n *\n * var htmlStr = '<p>Welcome back {user}</p>';\n * $(htmlStr).octemplate({user: 'John Q. Public'}, {escapeFunction: null});\n *\n * Be aware that the target string must be wrapped in an HTML element for the\n * plugin to work. The following won't work:\n *\n * var textStr = 'Welcome back {user}';\n * $(textStr).octemplate({user: 'John Q. Public'});\n *\n * For anything larger than one-liners, you can use a simple $.get() ajax\n * request to get the template, or you can embed them it the page using the\n * text/template type:\n *\n * <script id=\"contactListItemTemplate\" type=\"text/template\">\n * <tr class=\"contact\" data-id=\"{id}\">\n * <td class=\"name\">\n * <input type=\"checkbox\" name=\"id\" value=\"{id}\" /><span class=\"nametext\">{name}</span>\n * </td>\n * <td class=\"email\">\n * <a href=\"mailto:{email}\">{email}</a>\n * </td>\n * <td class=\"phone\">{phone}</td>\n * </tr>\n * </script>\n *\n * var $tmpl = $('#contactListItemTemplate');\n * var contacts = // fetched in some ajax call\n *\n * $.each(contacts, function(idx, contact) {\n * $contactList.append(\n * $tmpl.octemplate({\n * id: contact.getId(),\n * name: contact.getDisplayName(),\n * email: contact.getPreferredEmail(),\n * phone: contact.getPreferredPhone(),\n * });\n * );\n * });\n */\n/**\n * Object Template\n * Inspired by micro templating done by e.g. underscore.js\n */\nconst Template = {\n\tinit(vars, options, elem) {\n\t\t// Mix in the passed in options with the default options\n\t\tthis.vars = vars\n\t\tthis.options = $.extend({}, this.options, options)\n\n\t\tthis.elem = elem\n\t\tconst self = this\n\n\t\tif (typeof this.options.escapeFunction === 'function') {\n\t\t\tconst keys = Object.keys(this.vars)\n\t\t\tfor (let key = 0; key < keys.length; key++) {\n\t\t\t\tif (typeof this.vars[keys[key]] === 'string') {\n\t\t\t\t\tthis.vars[keys[key]] = self.options.escapeFunction(this.vars[keys[key]])\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst _html = this._build(this.vars)\n\t\treturn $(_html)\n\t},\n\t// From stackoverflow.com/questions/1408289/best-way-to-do-variable-interpolation-in-javascript\n\t_build(o) {\n\t\tconst data = this.elem.attr('type') === 'text/template' ? this.elem.html() : this.elem.get(0).outerHTML\n\t\ttry {\n\t\t\treturn data.replace(/{([^{}]*)}/g,\n\t\t\t\tfunction(a, b) {\n\t\t\t\t\tconst r = o[b]\n\t\t\t\t\treturn typeof r === 'string' || typeof r === 'number' ? r : a\n\t\t\t\t}\n\t\t\t)\n\t\t} catch (e) {\n\t\t\tconsole.error(e, 'data:', data)\n\t\t}\n\t},\n\toptions: {\n\t\tescapeFunction: escapeHTML,\n\t},\n}\n\n$.fn.octemplate = function(vars, options) {\n\tvars = vars || {}\n\tif (this.length) {\n\t\tconst _template = Object.create(Template)\n\t\treturn _template.init(vars, options, this)\n\t}\n}\n","/**\n * @copyright 2016-2018 John Molakvoæ <skjnldsv@protonmail.com>\n * @copyright 2013 Morris Jobke <morris.jobke@gmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Sergey Shliakhov <husband.sergey@gmail.com>\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 */\n\n/* eslint-disable */\nimport $ from 'jquery'\nimport md5 from 'blueimp-md5'\n\n/*\n * Adds a background color to the element called on and adds the first character\n * of the passed in string. This string is also the seed for the generation of\n * the background color.\n *\n * You have following HTML:\n *\n * <div id=\"albumart\"></div>\n *\n * And call this from Javascript:\n *\n * $('#albumart').imageplaceholder('The Album Title');\n *\n * Which will result in:\n *\n * <div id=\"albumart\" style=\"background-color: rgb(121, 90, 171); ... \">T</div>\n *\n * You may also call it like this, to have a different background, than the seed:\n *\n * $('#albumart').imageplaceholder('The Album Title', 'Album Title');\n *\n * Resulting in:\n *\n * <div id=\"albumart\" style=\"background-color: rgb(121, 90, 171); ... \">A</div>\n *\n */\n\n/*\n* Alternatively, you can use the prototype function to convert your string to rgb colors:\n*\n* \"a6741a86aded5611a8e46ce16f2ad646\".toRgb()\n*\n* Will return the rgb parameters within the following object:\n*\n* Color {r: 208, g: 158, b: 109}\n*\n*/\n\nconst toRgb = (s) => {\n\t// Normalize hash\n\tvar hash = s.toLowerCase()\n\n\t// Already a md5 hash?\n\tif (hash.match(/^([0-9a-f]{4}-?){8}$/) === null) {\n\t\thash = md5(hash)\n\t}\n\n\thash = hash.replace(/[^0-9a-f]/g, '')\n\n\tfunction Color(r, g, b) {\n\t\tthis.r = r\n\t\tthis.g = g\n\t\tthis.b = b\n\t}\n\n\tfunction stepCalc(steps, ends) {\n\t\tvar step = new Array(3)\n\t\tstep[0] = (ends[1].r - ends[0].r) / steps\n\t\tstep[1] = (ends[1].g - ends[0].g) / steps\n\t\tstep[2] = (ends[1].b - ends[0].b) / steps\n\t\treturn step\n\t}\n\n\tfunction mixPalette(steps, color1, color2) {\n\t\tvar palette = []\n\t\tpalette.push(color1)\n\t\tvar step = stepCalc(steps, [color1, color2])\n\t\tfor (var i = 1; i < steps; i++) {\n\t\t\tvar r = parseInt(color1.r + (step[0] * i))\n\t\t\tvar g = parseInt(color1.g + (step[1] * i))\n\t\t\tvar b = parseInt(color1.b + (step[2] * i))\n\t\t\tpalette.push(new Color(r, g, b))\n\t\t}\n\t\treturn palette\n\t}\n\n\tconst red = new Color(182, 70, 157);\n\tconst yellow = new Color(221, 203, 85);\n\tconst blue = new Color(0, 130, 201); // Nextcloud blue\n\t// Number of steps to go from a color to another\n\t// 3 colors * 6 will result in 18 generated colors\n\tconst steps = 6;\n\n\tconst palette1 = mixPalette(steps, red, yellow);\n\tconst palette2 = mixPalette(steps, yellow, blue);\n\tconst palette3 = mixPalette(steps, blue, red);\n\n\tconst finalPalette = palette1.concat(palette2).concat(palette3);\n\n\t// Convert a string to an integer evenly\n\tfunction hashToInt(hash, maximum) {\n\t\tvar finalInt = 0\n\t\tvar result = []\n\n\t\t// Splitting evenly the string\n\t\tfor (var i = 0; i < hash.length; i++) {\n\t\t\t// chars in md5 goes up to f, hex:16\n\t\t\tresult.push(parseInt(hash.charAt(i), 16) % 16)\n\t\t}\n\t\t// Adds up all results\n\t\tfor (var j in result) {\n\t\t\tfinalInt += result[j]\n\t\t}\n\t\t// chars in md5 goes up to f, hex:16\n\t\t// make sure we're always using int in our operation\n\t\treturn parseInt(parseInt(finalInt) % maximum)\n\t}\n\n\treturn finalPalette[hashToInt(hash, steps * 3)]\n}\n\nString.prototype.toRgb = function() {\n\tconsole.warn('String.prototype.toRgb is deprecated! It will be removed in Nextcloud 22.')\n\n\treturn toRgb(this)\n}\n\n$.fn.imageplaceholder = function(seed, text, size) {\n\ttext = text || seed\n\n\t// Compute the hash\n\tvar rgb = toRgb(seed)\n\tthis.css('background-color', 'rgb(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ')')\n\n\t// Placeholders are square\n\tvar height = this.height() || size || 32\n\tthis.height(height)\n\tthis.width(height)\n\n\t// CSS rules\n\tthis.css('color', '#fff')\n\tthis.css('font-weight', 'normal')\n\tthis.css('text-align', 'center')\n\n\t// calculate the height\n\tthis.css('line-height', height + 'px')\n\tthis.css('font-size', (height * 0.55) + 'px')\n\n\tif (seed !== null && seed.length) {\n\t\tvar placeholderText = text.replace(/\\s+/g, ' ').trim().split(' ', 2).map((word) => word[0].toUpperCase()).join('')\n\t\tthis.html(placeholderText);\n\t}\n}\n\n$.fn.clearimageplaceholder = function() {\n\tthis.css('background-color', '')\n\tthis.css('color', '')\n\tthis.css('font-weight', '')\n\tthis.css('text-align', '')\n\tthis.css('line-height', '')\n\tthis.css('font-size', '')\n\tthis.html('')\n\tthis.removeClass('icon-loading')\n\tthis.removeClass('icon-loading-small')\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport $ from 'jquery'\n\nimport { getToken } from '../OC/requesttoken'\n\n$(document).on('ajaxSend', function(elm, xhr, settings) {\n\tif (settings.crossDomain === false) {\n\t\txhr.setRequestHeader('requesttoken', getToken())\n\t\txhr.setRequestHeader('OCS-APIREQUEST', 'true')\n\t}\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport $ from 'jquery'\n\n/**\n * select a range in an input field\n *\n * @see {@link http://stackoverflow.com/questions/499126/jquery-set-cursor-position-in-text-area}\n * @param {number} start start selection from\n * @param {number} end number of char from start\n * @return {void}\n */\n$.fn.selectRange = function(start, end) {\n\treturn this.each(function() {\n\t\tif (this.setSelectionRange) {\n\t\t\tthis.focus()\n\t\t\tthis.setSelectionRange(start, end)\n\t\t} else if (this.createTextRange) {\n\t\t\tconst range = this.createTextRange()\n\t\t\trange.collapse(true)\n\t\t\trange.moveEnd('character', end)\n\t\t\trange.moveStart('character', start)\n\t\t\trange.select()\n\t\t}\n\t})\n}\n","/**\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport $ from 'jquery'\n\n/**\n * @name Show Password\n * @description\n * @version 1.3.0\n * @requires Jquery 1.5\n *\n * @author Jan Jarfalk <jan.jarfalk@unwrongest.com>\n * author-website http://www.unwrongest.com\n *\n * special-thanks Michel Gratton\n *\n * @license MIT\n */\n$.fn.extend({\n\tshowPassword(c) {\n\n\t\t// Setup callback object\n\t\tconst callback = { fn: null, args: {} }\n\t\tcallback.fn = c\n\n\t\t// Clones passwords and turn the clones into text inputs\n\t\tconst cloneElement = function(element) {\n\n\t\t\tconst $element = $(element)\n\n\t\t\tconst $clone = $('<input />')\n\n\t\t\t// Name added for JQuery Validation compatibility\n\t\t\t// Element name is required to avoid script warning.\n\t\t\t$clone.attr({\n\t\t\t\ttype: 'text',\n\t\t\t\tclass: $element.attr('class'),\n\t\t\t\tstyle: $element.attr('style'),\n\t\t\t\tsize: $element.attr('size'),\n\t\t\t\tname: $element.attr('name') + '-clone',\n\t\t\t\ttabindex: $element.attr('tabindex'),\n\t\t\t\tautocomplete: 'off',\n\t\t\t})\n\n\t\t\tif ($element.attr('placeholder') !== undefined) {\n\t\t\t\t$clone.attr('placeholder', $element.attr('placeholder'))\n\t\t\t}\n\n\t\t\treturn $clone\n\n\t\t}\n\n\t\t// Transfers values between two elements\n\t\tconst update = function(a, b) {\n\t\t\tb.val(a.val())\n\t\t}\n\n\t\t// Shows a or b depending on checkbox\n\t\tconst setState = function(checkbox, a, b) {\n\n\t\t\tif (checkbox.is(':checked')) {\n\t\t\t\tupdate(a, b)\n\t\t\t\tb.show()\n\t\t\t\ta.hide()\n\t\t\t} else {\n\t\t\t\tupdate(b, a)\n\t\t\t\tb.hide()\n\t\t\t\ta.show()\n\t\t\t}\n\n\t\t}\n\n\t\treturn this.each(function() {\n\n\t\t\tconst $input = $(this)\n\t\t\tconst $checkbox = $($input.data('typetoggle'))\n\n\t\t\t// Create clone\n\t\t\tconst $clone = cloneElement($input)\n\t\t\t$clone.insertAfter($input)\n\n\t\t\t// Set callback arguments\n\t\t\tif (callback.fn) {\n\t\t\t\tcallback.args.input = $input\n\t\t\t\tcallback.args.checkbox = $checkbox\n\t\t\t\tcallback.args.clone = $clone\n\t\t\t}\n\n\t\t\t$checkbox.bind('click', function() {\n\t\t\t\tsetState($checkbox, $input, $clone)\n\t\t\t})\n\n\t\t\t$input.bind('keyup', function() {\n\t\t\t\tupdate($input, $clone)\n\t\t\t})\n\n\t\t\t$clone.bind('keyup', function() {\n\t\t\t\tupdate($clone, $input)\n\n\t\t\t\t// Added for JQuery Validation compatibility\n\t\t\t\t// This will trigger validation if it's ON for keyup event\n\t\t\t\t$input.trigger('keyup')\n\n\t\t\t})\n\n\t\t\t// Added for JQuery Validation compatibility\n\t\t\t// This will trigger validation if it's ON for blur event\n\t\t\t$clone.bind('blur', function() {\n\t\t\t\t$input.trigger('focusout')\n\t\t\t})\n\n\t\t\tsetState($checkbox, $input, $clone)\n\n\t\t\t// set type of password field clone (type=text) to password right on submit\n\t\t\t// to prevent browser save the value of this field\n\t\t\t$clone.closest('form').submit(function(e) {\n\t\t\t\t// .prop has to be used, because .attr throws\n\t\t\t\t// an error while changing a type of an input\n\t\t\t\t// element\n\t\t\t\t$clone.prop('type', 'password')\n\t\t\t})\n\n\t\t\tif (callback.fn) {\n\t\t\t\tcallback.fn(callback.args)\n\t\t\t}\n\n\t\t})\n\t},\n})\n","/**\n * @copyright Copyright (c) 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport $ from 'jquery'\n\n// Set autocomplete width the same as the related input\n// See http://stackoverflow.com/a/11845718\n$.ui.autocomplete.prototype._resizeMenu = function() {\n\tconst ul = this.menu.element\n\tul.outerWidth(this.element.outerWidth())\n}\n","\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/sass-loader/dist/cjs.js!./jquery-ui-fixes.scss\";\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/sass-loader/dist/cjs.js!./jquery-ui-fixes.scss\";\n export default content && content.locals ? content.locals : undefined;\n","\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/sass-loader/dist/cjs.js!./jquery.ocdialog.scss\";\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/sass-loader/dist/cjs.js!./jquery.ocdialog.scss\";\n export default content && content.locals ? content.locals : undefined;\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport $ from 'jquery'\n\nimport './avatar'\nimport './contactsmenu'\nimport './exists'\nimport './filterattr'\nimport './ocdialog'\nimport './octemplate'\nimport './placeholder'\nimport './requesttoken'\nimport './selectrange'\nimport './showpassword'\nimport './ui-fixes'\n\nimport './css/jquery-ui-fixes.scss'\nimport './css/jquery.ocdialog.scss'\n\n/**\n * Disable automatic evaluation of responses for $.ajax() functions (and its\n * higher-level alternatives like $.get() and $.post()).\n *\n * If a response to a $.ajax() request returns a content type of \"application/javascript\"\n * JQuery would previously execute the response body. This is a pretty unexpected\n * behaviour and can result in a bypass of our Content-Security-Policy as well as\n * multiple unexpected XSS vectors.\n */\n$.ajaxSetup({\n\tcontents: {\n\t\tscript: false,\n\t},\n})\n\n/**\n * Disable execution of eval in jQuery. We do require an allowed eval CSP\n * configuration at the moment for handlebars et al. But for jQuery there is\n * not much of a reason to execute JavaScript directly via eval.\n *\n * This thus mitigates some unexpected XSS vectors.\n */\n$.globalEval = function() {\n}\n","/**\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport $ from 'jquery'\nimport 'core-js/stable'\nimport 'regenerator-runtime/runtime'\nimport './Polyfill/index'\n\n// If you remove the line below, tests won't pass\n// eslint-disable-next-line no-unused-vars\nimport OC from './OC/index'\n\nimport './globals'\nimport './jquery/index'\nimport { initCore } from './init'\nimport { registerAppsSlideToggle } from './OC/apps'\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\tinitCore()\n\tregisterAppsSlideToggle()\n\n\t// fallback to hashchange when no history support\n\tif (window.history.pushState) {\n\t\twindow.onpopstate = _.bind(OC.Util.History._onPopState, OC.Util.History)\n\t} else {\n\t\t$(window).on('hashchange', _.bind(OC.Util.History._onPopState, OC.Util.History))\n\t}\n})\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\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"images/ui-icons_1d2d44_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"images/ui-icons_ffffff_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(\"images/ui-icons_ffd27a_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_3___ = new URL(\"images/ui-bg_diagonals-thick_20_666666_40x40.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_4___ = new URL(\"images/ui-bg_flat_10_000000_40x100.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\nvar ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ui-widget-content{border:1px solid var(--color-border);background:var(--color-main-background) none;color:var(--color-main-text)}.ui-widget-content a{color:var(--color-main-text)}.ui-widget-header{border:none;color:var(--color-main-text);background-image:none}.ui-widget-header a{color:var(--color-main-text)}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid var(--color-border);background:var(--color-main-background) none;font-weight:bold;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #ddd;background:var(--color-main-background) none;font-weight:bold;color:var(--color-main-text)}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:var(--color-main-text)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid var(--color-primary);background:var(--color-main-background) none;font-weight:bold;color:var(--color-main-text)}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:var(--color-main-text)}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid var(--color-main-background);background:var(--color-main-background) none;color:var(--color-text-light);font-weight:600}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:var(--color-text-lighter)}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:var(--color-error);background:var(--color-error) none;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-state-default .ui-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \")}.ui-state-active .ui-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \")}.ui-state-highlight .ui-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \")}.ui-icon.ui-icon-none{display:none}.ui-widget-overlay{background:#666 url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \") 50% 50% repeat;opacity:.5}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:#000 url(\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \") 50% 50% repeat-x;opacity:.2;border-radius:5px}.ui-tabs{border:none}.ui-tabs .ui-tabs-nav.ui-corner-all{border-bottom-left-radius:0;border-bottom-right-radius:0}.ui-tabs .ui-tabs-nav{background:none;margin-bottom:15px}.ui-tabs .ui-tabs-nav .ui-state-default{border:none;border-bottom:1px solid rgba(0,0,0,0);font-weight:normal;margin:0 !important;padding:0 !important}.ui-tabs .ui-tabs-nav .ui-state-hover,.ui-tabs .ui-tabs-nav .ui-state-active{border:none;border-bottom:1px solid var(--color-main-text);color:var(--color-main-text)}.ui-tabs .ui-tabs-nav .ui-state-hover a,.ui-tabs .ui-tabs-nav .ui-state-hover a:link,.ui-tabs .ui-tabs-nav .ui-state-hover a:hover,.ui-tabs .ui-tabs-nav .ui-state-hover a:visited,.ui-tabs .ui-tabs-nav .ui-state-active a,.ui-tabs .ui-tabs-nav .ui-state-active a:link,.ui-tabs .ui-tabs-nav .ui-state-active a:hover,.ui-tabs .ui-tabs-nav .ui-state-active a:visited{color:var(--color-main-text)}.ui-tabs .ui-tabs-nav .ui-state-active{font-weight:bold}.ui-autocomplete.ui-menu{padding:0}.ui-autocomplete.ui-menu.item-count-1,.ui-autocomplete.ui-menu.item-count-2{overflow-y:hidden}.ui-autocomplete.ui-menu .ui-menu-item a{color:var(--color-text-lighter);display:block;padding:4px 4px 4px 14px}.ui-autocomplete.ui-menu .ui-menu-item a.ui-state-focus,.ui-autocomplete.ui-menu .ui-menu-item a.ui-state-active{box-shadow:inset 4px 0 var(--color-primary-element);color:var(--color-main-text)}.ui-autocomplete.ui-widget-content{background:var(--color-main-background);border-top:none}.ui-autocomplete.ui-corner-all{border-radius:0;border-bottom-left-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}.ui-autocomplete .ui-state-hover,.ui-autocomplete .ui-widget-content .ui-state-hover,.ui-autocomplete .ui-widget-header .ui-state-hover,.ui-autocomplete .ui-state-focus,.ui-autocomplete .ui-widget-content .ui-state-focus,.ui-autocomplete .ui-widget-header .ui-state-focus{border:1px solid rgba(0,0,0,0);background:inherit;color:var(--color-primary-element)}.ui-autocomplete .ui-menu-item a{border-radius:0 !important}.ui-button.primary{background-color:var(--color-primary);color:var(--color-primary-text);border:1px solid var(--color-primary-text)}.ui-draggable-handle,.ui-selectable{touch-action:pan-y}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/jquery/css/jquery-ui-fixes.scss\"],\"names\":[],\"mappings\":\"AAEA,mBACC,oCAAA,CACA,4CAAA,CACA,4BAAA,CAED,qBACC,4BAAA,CAED,kBACC,WAAA,CACA,4BAAA,CACA,qBAAA,CAED,oBACC,4BAAA,CAKD,2FAGC,oCAAA,CACA,4CAAA,CACA,gBAAA,CACA,UAAA,CAED,yEAGC,UAAA,CAED,0KAMC,qBAAA,CACA,4CAAA,CACA,gBAAA,CACA,4BAAA,CAED,2FAIC,4BAAA,CAED,wFAGC,qCAAA,CACA,4CAAA,CACA,gBAAA,CACA,4BAAA,CAED,sEAGC,4BAAA,CAKD,iGAGC,6CAAA,CACA,4CAAA,CACA,6BAAA,CACA,eAAA,CAED,uGAGC,+BAAA,CAED,qFAGC,yBAAA,CACA,kCAAA,CACA,UAAA,CAED,2FAGC,UAAA,CAED,oGAGC,UAAA,CAKD,2BACC,wDAAA,CAED,kDAEC,wDAAA,CAED,0BACC,wDAAA,CAED,6BACC,wDAAA,CAED,uDAEC,wDAAA,CAED,sBACC,YAAA,CAMD,mBACC,sEAAA,CACA,UAAA,CAED,kBACC,oBAAA,CACA,WAAA,CACA,wEAAA,CACA,UAAA,CACA,iBAAA,CAID,SACC,WAAA,CAEA,oCACC,2BAAA,CACA,4BAAA,CAGD,sBACC,eAAA,CACA,kBAAA,CAEA,wCACC,WAAA,CACA,qCAAA,CACA,kBAAA,CACA,mBAAA,CACA,oBAAA,CAGD,6EAEC,WAAA,CACA,8CAAA,CACA,4BAAA,CACA,0WACC,4BAAA,CAGF,uCACC,gBAAA,CAOF,yBACC,SAAA,CAIA,4EAEC,iBAAA,CAGD,yCACC,+BAAA,CACA,aAAA,CACA,wBAAA,CAEA,iHACC,mDAAA,CACA,4BAAA,CAKH,mCACC,uCAAA,CACA,eAAA,CAGD,+BACC,eAAA,CACA,8CAAA,CACA,+CAAA,CAGD,gRAKC,8BAAA,CACA,kBAAA,CACA,kCAAA,CAIA,iCACC,0BAAA,CAKH,mBACC,qCAAA,CACA,+BAAA,CACA,0CAAA,CAKD,oCAEC,kBAAA\",\"sourcesContent\":[\"/* Component containers\\n----------------------------------*/\\n.ui-widget-content {\\n\\tborder: 1px solid var(--color-border);\\n\\tbackground: var(--color-main-background) none;\\n\\tcolor: var(--color-main-text);\\n}\\n.ui-widget-content a {\\n\\tcolor: var(--color-main-text);\\n}\\n.ui-widget-header {\\n\\tborder: none;\\n\\tcolor: var(--color-main-text);\\n\\tbackground-image: none;\\n}\\n.ui-widget-header a {\\n\\tcolor: var(--color-main-text);\\n}\\n\\n/* Interaction states\\n----------------------------------*/\\n.ui-state-default,\\n.ui-widget-content .ui-state-default,\\n.ui-widget-header .ui-state-default {\\n\\tborder: 1px solid var(--color-border);\\n\\tbackground: var(--color-main-background) none;\\n\\tfont-weight: bold;\\n\\tcolor: #555;\\n}\\n.ui-state-default a,\\n.ui-state-default a:link,\\n.ui-state-default a:visited {\\n\\tcolor: #555;\\n}\\n.ui-state-hover,\\n.ui-widget-content .ui-state-hover,\\n.ui-widget-header .ui-state-hover,\\n.ui-state-focus,\\n.ui-widget-content .ui-state-focus,\\n.ui-widget-header .ui-state-focus {\\n\\tborder: 1px solid #ddd;\\n\\tbackground: var(--color-main-background) none;\\n\\tfont-weight: bold;\\n\\tcolor: var(--color-main-text);\\n}\\n.ui-state-hover a,\\n.ui-state-hover a:hover,\\n.ui-state-hover a:link,\\n.ui-state-hover a:visited {\\n\\tcolor: var(--color-main-text);\\n}\\n.ui-state-active,\\n.ui-widget-content .ui-state-active,\\n.ui-widget-header .ui-state-active {\\n\\tborder: 1px solid var(--color-primary);\\n\\tbackground: var(--color-main-background) none;\\n\\tfont-weight: bold;\\n\\tcolor: var(--color-main-text);\\n}\\n.ui-state-active a,\\n.ui-state-active a:link,\\n.ui-state-active a:visited {\\n\\tcolor: var(--color-main-text);\\n}\\n\\n/* Interaction Cues\\n----------------------------------*/\\n.ui-state-highlight,\\n.ui-widget-content .ui-state-highlight,\\n.ui-widget-header .ui-state-highlight {\\n\\tborder: 1px solid var(--color-main-background);\\n\\tbackground: var(--color-main-background) none;\\n\\tcolor: var(--color-text-light);\\n\\tfont-weight: 600;\\n}\\n.ui-state-highlight a,\\n.ui-widget-content .ui-state-highlight a,\\n.ui-widget-header .ui-state-highlight a {\\n\\tcolor: var(--color-text-lighter);\\n}\\n.ui-state-error,\\n.ui-widget-content .ui-state-error,\\n.ui-widget-header .ui-state-error {\\n\\tborder: var(--color-error);\\n\\tbackground: var(--color-error) none;\\n\\tcolor: #ffffff;\\n}\\n.ui-state-error a,\\n.ui-widget-content .ui-state-error a,\\n.ui-widget-header .ui-state-error a {\\n\\tcolor: #ffffff;\\n}\\n.ui-state-error-text,\\n.ui-widget-content .ui-state-error-text,\\n.ui-widget-header .ui-state-error-text {\\n\\tcolor: #ffffff;\\n}\\n\\n/* Icons\\n----------------------------------*/\\n.ui-state-default .ui-icon {\\n\\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\\n}\\n.ui-state-hover .ui-icon,\\n.ui-state-focus .ui-icon {\\n\\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\\n}\\n.ui-state-active .ui-icon {\\n\\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\\n}\\n.ui-state-highlight .ui-icon {\\n\\tbackground-image: url('images/ui-icons_ffffff_256x240.png');\\n}\\n.ui-state-error .ui-icon,\\n.ui-state-error-text .ui-icon {\\n\\tbackground-image: url('images/ui-icons_ffd27a_256x240.png');\\n}\\n.ui-icon.ui-icon-none {\\n\\tdisplay: none;\\n}\\n\\n/* Misc visuals\\n----------------------------------*/\\n/* Overlays */\\n.ui-widget-overlay {\\n\\tbackground: #666666 url('images/ui-bg_diagonals-thick_20_666666_40x40.png') 50% 50% repeat;\\n\\topacity: .5;\\n}\\n.ui-widget-shadow {\\n\\tmargin: -5px 0 0 -5px;\\n\\tpadding: 5px;\\n\\tbackground: #000000 url('images/ui-bg_flat_10_000000_40x100.png') 50% 50% repeat-x;\\n\\topacity: .2;\\n\\tborder-radius: 5px;\\n}\\n\\n/* Tabs customizations */\\n.ui-tabs {\\n\\tborder: none;\\n\\n\\t.ui-tabs-nav.ui-corner-all {\\n\\t\\tborder-bottom-left-radius: 0;\\n\\t\\tborder-bottom-right-radius: 0;\\n\\t}\\n\\n\\t.ui-tabs-nav {\\n\\t\\tbackground: none;\\n\\t\\tmargin-bottom: 15px;\\n\\n\\t\\t.ui-state-default {\\n\\t\\t\\tborder: none;\\n\\t\\t\\tborder-bottom: 1px solid transparent;\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t\\tmargin: 0 !important;\\n\\t\\t\\tpadding: 0 !important;\\n\\t\\t}\\n\\n\\t\\t.ui-state-hover,\\n\\t\\t.ui-state-active {\\n\\t\\t\\tborder: none;\\n\\t\\t\\tborder-bottom: 1px solid var(--color-main-text);\\n\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\ta, a:link, a:hover, a:visited {\\n\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t.ui-state-active {\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t}\\n\\t}\\n}\\n\\n/* Select menus */\\n.ui-autocomplete {\\n\\t&.ui-menu {\\n\\t\\tpadding: 0;\\n\\n\\t\\t/* scrolling starts from three items,\\n\\t\\t * so hide overflow and scrollbars for a clean layout */\\n\\t\\t&.item-count-1,\\n\\t\\t&.item-count-2 {\\n\\t\\t\\toverflow-y: hidden;\\n\\t\\t}\\n\\n\\t\\t.ui-menu-item a {\\n\\t\\t\\tcolor: var(--color-text-lighter);\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tpadding: 4px 4px 4px 14px;\\n\\n\\t\\t\\t&.ui-state-focus, &.ui-state-active {\\n\\t\\t\\t\\tbox-shadow: inset 4px 0 var(--color-primary-element);\\n\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&.ui-widget-content {\\n\\t\\tbackground: var(--color-main-background);\\n\\t\\tborder-top: none;\\n\\t}\\n\\n\\t&.ui-corner-all {\\n\\t\\tborder-radius: 0;\\n\\t\\tborder-bottom-left-radius: var(--border-radius);\\n\\t\\tborder-bottom-right-radius: var(--border-radius);\\n\\t}\\n\\n\\t.ui-state-hover, .ui-widget-content .ui-state-hover,\\n\\t.ui-widget-header .ui-state-hover,\\n\\t.ui-state-focus,\\n\\t.ui-widget-content .ui-state-focus,\\n\\t.ui-widget-header .ui-state-focus {\\n\\t\\tborder: 1px solid transparent;\\n\\t\\tbackground: inherit;\\n\\t\\tcolor: var(--color-primary-element);\\n\\t}\\n\\n\\t.ui-menu-item {\\n\\t\\ta {\\n\\t\\t\\tborder-radius: 0 !important;\\n\\t\\t}\\n\\t}\\n}\\n\\n.ui-button.primary {\\n\\tbackground-color: var(--color-primary);\\n\\tcolor: var(--color-primary-text);\\n\\tborder: 1px solid var(--color-primary-text);\\n}\\n\\n\\n/* DRAGGABLE */\\n.ui-draggable-handle,\\n.ui-selectable {\\n\\ttouch-action: pan-y;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".oc-dialog{background:var(--color-main-background);color:var(--color-text-light);border-radius:var(--border-radius-large);box-shadow:0 0 30px var(--color-box-shadow);padding:24px;z-index:10000;font-size:100%;box-sizing:border-box;min-width:200px;top:50%;left:50%;transform:translate(-50%, -50%);max-height:calc(100% - 20px);max-width:calc(100% - 20px);overflow:auto}.oc-dialog-title{background:var(--color-main-background)}.oc-dialog-buttonrow{position:relative;display:flex;background:rgba(0,0,0,0);right:0;bottom:0;padding:0;padding-top:10px;box-sizing:border-box;width:100%;background-image:linear-gradient(rgba(255, 255, 255, 0), var(--color-main-background))}.oc-dialog-buttonrow.twobuttons{justify-content:space-between}.oc-dialog-buttonrow.onebutton,.oc-dialog-buttonrow.twobuttons.aside{justify-content:flex-end}.oc-dialog-buttonrow button{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:44px;min-width:44px}.oc-dialog-close{position:absolute;top:0;right:0;padding:25px;background:var(--icon-close-000) no-repeat center;opacity:.5}.oc-dialog-close:hover,.oc-dialog-close:focus,.oc-dialog-close:active{opacity:1}.oc-dialog-dim{background-color:#000;opacity:.2;z-index:9999;position:fixed;top:0;left:0;width:100%;height:100%}body.theme--dark .oc-dialog-dim{opacity:.8}.oc-dialog-content{width:100%;max-width:550px}.oc-dialog.password-confirmation .oc-dialog-content{width:auto}.oc-dialog.password-confirmation .oc-dialog-content input[type=password]{width:100%}.oc-dialog.password-confirmation .oc-dialog-content label{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/jquery/css/jquery.ocdialog.scss\"],\"names\":[],\"mappings\":\"AAAA,WACC,uCAAA,CACA,6BAAA,CACA,wCAAA,CACA,2CAAA,CACA,YAAA,CACA,aAAA,CACA,cAAA,CACA,qBAAA,CACA,eAAA,CACA,OAAA,CACA,QAAA,CACA,+BAAA,CACA,4BAAA,CACA,2BAAA,CACA,aAAA,CAED,iBACC,uCAAA,CAED,qBACC,iBAAA,CACA,YAAA,CACA,wBAAA,CACA,OAAA,CACA,QAAA,CACA,SAAA,CACA,gBAAA,CACA,qBAAA,CACA,UAAA,CACA,sFAAA,CAEA,gCACO,6BAAA,CAGP,qEAEC,wBAAA,CAGD,4BACI,kBAAA,CACA,eAAA,CACH,sBAAA,CACA,WAAA,CACA,cAAA,CAIF,iBACC,iBAAA,CACA,KAAA,CACA,OAAA,CACA,YAAA,CACA,iDAAA,CACA,UAAA,CAEA,sEAGC,SAAA,CAIF,eACC,qBAAA,CACA,UAAA,CACA,YAAA,CACA,cAAA,CACA,KAAA,CACA,MAAA,CACA,UAAA,CACA,WAAA,CAGD,gCACC,UAAA,CAGD,mBACC,UAAA,CACA,eAAA,CAIA,oDACC,UAAA,CAEA,yEACC,UAAA,CAED,0DACC,YAAA\",\"sourcesContent\":[\".oc-dialog {\\n\\tbackground: var(--color-main-background);\\n\\tcolor: var(--color-text-light);\\n\\tborder-radius: var(--border-radius-large);\\n\\tbox-shadow: 0 0 30px var(--color-box-shadow);\\n\\tpadding: 24px;\\n\\tz-index: 10000;\\n\\tfont-size: 100%;\\n\\tbox-sizing: border-box;\\n\\tmin-width: 200px;\\n\\ttop: 50%;\\n\\tleft: 50%;\\n\\ttransform: translate(-50%, -50%);\\n\\tmax-height: calc(100% - 20px);\\n\\tmax-width: calc(100% - 20px);\\n\\toverflow: auto;\\n}\\n.oc-dialog-title {\\n\\tbackground: var(--color-main-background);\\n}\\n.oc-dialog-buttonrow {\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tbackground: transparent;\\n\\tright: 0;\\n\\tbottom: 0;\\n\\tpadding: 0;\\n\\tpadding-top: 10px;\\n\\tbox-sizing: border-box;\\n\\twidth: 100%;\\n\\tbackground-image: linear-gradient(rgba(255, 255, 255, 0.0), var(--color-main-background));\\n\\n\\t&.twobuttons {\\n justify-content: space-between;\\n }\\n\\n\\t&.onebutton,\\n\\t&.twobuttons.aside {\\n\\t\\tjustify-content: flex-end;\\n\\t}\\n\\n\\tbutton {\\n\\t white-space: nowrap;\\n\\t overflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\theight: 44px;\\n\\t\\tmin-width: 44px;\\n\\t}\\n}\\n\\n.oc-dialog-close {\\n\\tposition: absolute;\\n\\ttop: 0;\\n\\tright: 0;\\n\\tpadding: 25px;\\n\\tbackground: var(--icon-close-000) no-repeat center;\\n\\topacity: .5;\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\\n.oc-dialog-dim {\\n\\tbackground-color: #000;\\n\\topacity: .2;\\n\\tz-index: 9999;\\n\\tposition: fixed;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\twidth: 100%;\\n\\theight: 100%;\\n}\\n\\nbody.theme--dark .oc-dialog-dim {\\n\\topacity: .8;\\n}\\n\\n.oc-dialog-content {\\n\\twidth: 100%;\\n\\tmax-width: 550px;\\n}\\n\\n.oc-dialog.password-confirmation {\\n\\t.oc-dialog-content {\\n\\t\\twidth: auto;\\n\\n\\t\\tinput[type=password] {\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\t\\tlabel {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.program(5, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":1},\"end\":{\"line\":10,\"column\":8}}})) != null ? stack1 : \"\");\n},\"2\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":2},\"end\":{\"line\":7,\"column\":9}}})) != null ? stack1 : \"\");\n},\"3\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<a class=\\\"profile-link--avatar\\\" href=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32\\\" class=\\\"avatar\\\" srcset=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32 1x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=64 2x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=128 4x\\\" alt=\\\"\\\">\\n\t\t\t</a>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32\\\" class=\\\"avatar\\\" srcset=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32 1x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=64 2x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=128 4x\\\" alt=\\\"\\\">\\n\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(8, data, 0),\"inverse\":container.program(11, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":1},\"end\":{\"line\":20,\"column\":8}}})) != null ? stack1 : \"\");\n},\"8\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(9, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":2},\"end\":{\"line\":17,\"column\":9}}})) != null ? stack1 : \"\");\n},\"9\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<a class=\\\"profile-link--avatar\\\" href=\\\"\"\n + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t\t<div class=\\\"avatar\\\"></div>\\n\t\t\t</a>\\n\";\n},\"11\":function(container,depth0,helpers,partials,data) {\n return \"\t\t<div class=\\\"avatar\\\"></div>\\n\";\n},\"13\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(14, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":1},\"end\":{\"line\":29,\"column\":8}}})) != null ? stack1 : \"\");\n},\"14\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<a class=\\\"body profile-link--full-name\\\" href=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t\t</a>\\n\";\n},\"16\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(17, data, 0),\"inverse\":container.program(19, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":0},\"end\":{\"line\":45,\"column\":0}}})) != null ? stack1 : \"\");\n},\"17\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<a class=\\\"body\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\"> \\n\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t</a>\\n \t<a class=\\\"top-action\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n \t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n + \"\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t</a>\\n\";\n},\"19\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<div class=\\\"body\\\">\\n\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t</div>\\n\";\n},\"21\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<a class=\\\"second-action\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t<img src=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n + \"\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n</a>\\n\";\n},\"23\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<span class=\\\"other-actions icon-more\\\"></span>\\n\t<div class=\\\"menu popovermenu\\\">\\n\t\t<ul>\\n\"\n + ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"actions\") : stack1),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(24, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":55,\"column\":3},\"end\":{\"line\":62,\"column\":12}}})) != null ? stack1 : \"\")\n + \"\t\t</ul>\\n\t</div>\\n\";\n},\"24\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<li>\\n\t\t\t\t<a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"hyperlink\") || (depth0 != null ? lookupProperty(depth0,\"hyperlink\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"hyperlink\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":57,\"column\":13},\"end\":{\"line\":57,\"column\":26}}}) : helper)))\n + \"\\\">\\n\t\t\t\t\t<img src=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"icon\") || (depth0 != null ? lookupProperty(depth0,\"icon\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"icon\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":58,\"column\":15},\"end\":{\"line\":58,\"column\":23}}}) : helper)))\n + \"\\\" alt=\\\"\\\">\\n\t\t\t\t\t<span>\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"title\") || (depth0 != null ? lookupProperty(depth0,\"title\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"title\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":59,\"column\":11},\"end\":{\"line\":59,\"column\":20}}}) : helper)))\n + \"</span>\\n\t\t\t\t</a>\\n\t\t\t</li>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.program(7, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":21,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(13, data, 0),\"inverse\":container.program(16, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":22,\"column\":0},\"end\":{\"line\":45,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"hasTwoActions\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(21, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":46,\"column\":0},\"end\":{\"line\":50,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"hasManyActions\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(23, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":51,\"column\":0},\"end\":{\"line\":65,\"column\":7}}})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-search\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"couldNotLoadText\") || (depth0 != null ? lookupProperty(depth0,\"couldNotLoadText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"couldNotLoadText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":5},\"end\":{\"line\":3,\"column\":25}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-search\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"noContactsFoundText\") || (depth0 != null ? lookupProperty(depth0,\"noContactsFoundText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"noContactsFoundText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":5},\"end\":{\"line\":4,\"column\":28}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"footer\\\"><a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppURL\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppURL\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppURL\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":29},\"end\":{\"line\":9,\"column\":47}}}) : helper)))\n + \"\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"showAllContactsText\") || (depth0 != null ? lookupProperty(depth0,\"showAllContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"showAllContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":49},\"end\":{\"line\":9,\"column\":72}}}) : helper)))\n + \"</a></div>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"canInstallApp\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(6, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":0},\"end\":{\"line\":12,\"column\":0}}})) != null ? stack1 : \"\");\n},\"6\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"footer\\\"><a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppMgmtURL\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppMgmtURL\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppMgmtURL\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":29},\"end\":{\"line\":11,\"column\":51}}}) : helper)))\n + \"\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppMgmtText\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppMgmtText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppMgmtText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":53},\"end\":{\"line\":11,\"column\":76}}}) : helper)))\n + \"</a></div>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contacts\") : depth0)) != null ? lookupProperty(stack1,\"length\") : stack1),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":6,\"column\":11}}})) != null ? stack1 : \"\")\n + \"<div id=\\\"contactsmenu-contacts\\\"></div>\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"contactsAppEnabled\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.program(5, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":0},\"end\":{\"line\":12,\"column\":7}}})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-loading\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"loadingText\") || (depth0 != null ? lookupProperty(depth0,\"loadingText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"loadingText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":5},\"end\":{\"line\":3,\"column\":20}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<label class=\\\"hidden-visually\\\" for=\\\"contactsmenu-search\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchContactsText\") || (depth0 != null ? lookupProperty(depth0,\"searchContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":57},\"end\":{\"line\":1,\"column\":79}}}) : helper)))\n + \"</label>\\n<input id=\\\"contactsmenu-search\\\" type=\\\"search\\\" placeholder=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchContactsText\") || (depth0 != null ? lookupProperty(depth0,\"searchContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":59},\"end\":{\"line\":2,\"column\":81}}}) : helper)))\n + \"\\\" value=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchTerm\") || (depth0 != null ? lookupProperty(depth0,\"searchTerm\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchTerm\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":90},\"end\":{\"line\":2,\"column\":104}}}) : helper)))\n + \"\\\">\\n<div class=\\\"content\\\">\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<img src=\\\"\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"icon\") || (depth0 != null ? lookupProperty(depth0,\"icon\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"icon\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":24},\"end\":{\"line\":3,\"column\":32}}}) : helper)))\n + \"\\\">\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<li>\\n\t<a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"hyperlink\") || (depth0 != null ? lookupProperty(depth0,\"hyperlink\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"hyperlink\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":10},\"end\":{\"line\":2,\"column\":23}}}) : helper)))\n + \"\\\">\\n\t\t\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"icon\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":2},\"end\":{\"line\":3,\"column\":41}}})) != null ? stack1 : \"\")\n + \"\\n\t\t<span>\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"title\") || (depth0 != null ? lookupProperty(depth0,\"title\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"title\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":8},\"end\":{\"line\":4,\"column\":17}}}) : helper)))\n + \"</span>\\n\t</a>\\n</li>\\n\";\n},\"useData\":true});","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 2819,\n\t\"./hi.js\": 2819,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","// 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 = 2943;","__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\t2943: 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__(13084); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","Element","prototype","matches","msMatchesSelector","webkitMatchesSelector","closest","s","el","this","parentElement","parentNode","nodeType","console","log","window","noOp","methods","i","length","document","documentElement","style","navigator","userAgent","match","msViewportStyle","createElement","appendChild","createTextNode","getElementsByTagName","loadedScripts","loadedStyles","updatableNotification","getDefaultNotificationFunction","setDefault","callback","hide","$row","_","undefined","each","$","toastify","hideToast","error","call","showHtml","html","options","isHTML","timeout","TOAST_PERMANENT_TIMEOUT","toast","showMessage","toastElement","show","text","toString","split","join","escapeHTML","showUpdate","showTemporary","TOAST_DEFAULT_TIMEOUT","isHidden","find","ajaxConnectionLostHandler","Notification","t","trailing","dynamicSlideToggleEnabled","enableDynamicSlideToggle","Apps","$el","removeClass","trigger","addClass","method","endpoint","OC","type","toUpperCase","url","generateOcsUrl","data","success","bind","getApps","getKeys","app","getValue","key","defaultValue","setValue","value","deleteKey","appConfig","oc_appconfig","AppConfig","_oc_appswebroots","methodMap","create","update","patch","delete","read","parsePropFindResult","result","davProperties","subResult","props","href","propStat","status","properties","propKey","id","parseIdFromLocation","queryPos","indexOf","substr","parts","pop","isSuccessStatus","callPropPatch","client","model","headers","propPatch","attrs","changedProp","warn","convertModelAttributesToDavProperties","changed","then","toJSON","Backbone","VendorBackbone","Object","assign","davCall","dav","baseUrl","xmlNamespaces","resolveUrl","requestToken","propFind","depth","response","propsMapping","results","body","shift","callPropFind","request","callMkCol","responseJson","locationHeader","xhr","getResponseHeader","callMethod","davSync","params","isCollection","Collection","hasInnerCollection","usePUT","collection","Error","urlError","JSON","stringify","processData","textStatus","errorThrown","context","_oc_config","Contact","Model","defaults","fullName","lastMessage","actions","hasOneAction","hasTwoActions","hasManyActions","initialize","get","set","ContactCollection","ContactsListView","View","_collection","_subViews","render","self","forEach","contact","item","ContactsListItemView","append","on","_onChildActionMenuToggle","push","$src","view","className","_template","_model","_actionMenuShown","events","contactTemplate","require","template","_onOtherActionMenuOpened","delegateEvents","imageplaceholder","tooltip","placement","_onToggleActionsMenu","is","ContactsMenuView","_loadingTemplate","_errorTemplate","_contentTemplate","_contactsTemplate","_contacts","_searchTerm","templates","loading","menu","list","_onSearch","e","searchTerm","val","loadingTemplate","errorTemplate","couldNotLoadText","contentTemplate","searchContactsText","contactsTemplate","noContactsFoundText","showAllContactsText","contactsAppMgmtText","showLoading","loadingText","showError","showContacts","viewData","contacts","contactsAppEnabled","contactsAppURL","canInstallApp","contactsAppMgmtURL","searchVal","focus","ContactsMenu","_$trigger","_view","_contactsPromise","_loadContacts","_toggleVisibility","Promise","resolve","_getContacts","filter","term","catch","rawUid","getAttribute","displayName","currentUser","Search","global","emit","token","Dialogs","YES_NO_BUTTONS","OK_BUTTONS","FILEPICKER_TYPE_CHOOSE","FILEPICKER_TYPE_MOVE","FILEPICKER_TYPE_COPY","FILEPICKER_TYPE_COPY_MOVE","FILEPICKER_TYPE_CUSTOM","dialogsCounter","alert","title","modal","message","OK_BUTTON","info","confirm","confirmDestructive","buttons","confirmHtml","prompt","name","password","_getMessageTemplate","$tmpl","dialogName","dialogId","$dlg","octemplate","dialog_name","input","attr","label","buttonlist","click","ocdialog","defaultButton","closeOnEscape","close","filepicker","multiselect","mimetypeFilter","path","sortField","sortOrder","emptyText","newText","filesClient","OCA","filelist","allowDirectoryChooser","_getFilePickerTemplate","$filePicker","emptytext","newtext","nameCol","sizeCol","modifiedCol","remove","$showGridView","_onGridviewChange","_getGridSettings","newButton","event","stopImmediatePropagation","preventDefault","$input","submit","newName","lastPos","lastIndexOf","selectRange","$form","stopPropagation","filename","trimmedName","trim","isFileNameValid","file","escape","checkInput","newname","createDirectory","always","_fillFilePicker","keypress","keyCode","which","ready","$fileListHeader","$filelist","$filelistContainer","$dirTree","_handleTreeListSelect","_handlePickerClick","dir","currentTarget","functionToCall","returnType","datapath","index","element","selectedName","button","width","height","buttonEnableDisable","prop","fail","content","dialogType","allowHtml","escapeFunction","cancel","classes","confirmClasses","closeCallback","_fileexistsshown","fileexists","original","replacement","controller","dialogDeferred","resampleHermite","canvas","W","H","W2","H2","Math","round","img","getContext","getImageData","img2","data2","ratio_w","ratio_h","ratio_w_half","ceil","ratio_h_half","j","x2","weight","weights","weights_alpha","gx_r","gx_g","gx_b","gx_a","center_y","yy","floor","dy","abs","center_x","w0","xx","dx","w","sqrt","clearRect","max","putImageData","addConflict","$conflicts","$conflict","clone","$originalDiv","$replacementDiv","size","mtime","lastModified","directory","urlSpec","x","y","c","etag","forceIcon","previewpath","Files","generatePreviewUrl","replace","css","FileReader","reader","onload","blob","Blob","target","URL","webkitURL","originalUrl","createObjectURL","image","Image","src","min","drawImage","toDataURL","readAsArrayBuffer","reject","getCroppedPreview","checkboxId","count","n","parent","children","_getFileExistsTemplate","allnewfiles","allexistingfiles","why","what","onCancel","onContinue","closeButton","$primaryButton","updatePrimaryButton","checkedCount","$checkbox","promise","checked","gridview","next","toggleClass","defer","$filePickerTemplate","tmpl","$listTmpl","detach","jqXHR","$messageTemplate","$fileexistsTemplate","_getFileList","mimeType","mimetypes","empty","advancedFilter","getFolderContents","files","mimetype","showHiddenInput","getElementById","startsWith","Comparators","fileInfo1","fileInfo2","comparator","sort","file1","file2","isFavorite","fileInfo","tags","_fillSlug","idx","entry","simpleSize","sizeColor","icon","parseInt","pow","filename1","filename2","date","previewUrl","addButton","$template","paths","prepend","prependTo","getOcDialog","_changeButtonsText","$element","ctrlKey","copyText","folder","moveText","eq","manageFromDocument","getToken","setToken","newToken","OCEventSource","joinChar","dataStr","typelessListeners","closed","listeners","encodeURIComponent","useFallBack","EventSource","iframeId","iframeCount","fallBackSources","iframe","source","onmessage","parse","listen","fallBackCallBack","done","lastLength","addEventListener","currentMenu","hideMenus","complete","lastMenu","slideUp","apply","arguments","isAdmin","_oc_isadmin","_oc_l10n_registry_translations","_oc_l10n_registry_plural_functions","hasAppTranslations","appId","getAppTranslations","translations","pluralFunction","L10n","load","appName","generateFilePath","register","pluralForm","bundle","_getPlural","extend","_unregister","translate","vars","allOptions","sanitize","optSanitize","DOMPurify","identity","optEscape","translation","a","b","r","_build","translatePlural","textSingular","textPlural","identifier","plural","number","language","substring","Handlebars","startSaving","selector","startAction","stop","finishedSaving","finishedAction","finishedSuccess","finishedError","delay","fadeOut","pageLoadTime","init","requirePasswordConfirmation","moment","requiresPasswordConfirmation","serverTimeDiff","nc_pageLoad","timeSinceLogin","nc_lastLogin","backendAllowsPasswordConfirmation","rejectCallback","config","_confirmPassword","$dialog","$error","$buttons","generateUrl","lastLogin","theme","_theme","_handlers","_pushState","strParams","history","pushState","location","pathname","toLowerCase","pattern","patterns","querySelectorAll","ii","fill","stroke","removeAttribute","setAttribute","replaceState","hash","_cancelPop","addOnPopStateHandler","handler","_parseHashQuery","pos","_decodeQuery","query","parseUrlQuery","search","_onPopState","state","chunkify","tz","charAt","m","History","humanFileSize","computerFileSize","string","bytes","parseFloat","isFinite","k","kb","mb","gb","g","tb","pb","p","formatDate","timestamp","format","TESTING","relativeModifiedDate","diff","fromNow","getScrollBarWidth","_scrollBarWidth","inner","outer","position","top","left","visibility","overflow","w1","offsetWidth","w2","clientWidth","removeChild","stripTime","Date","getFullYear","getMonth","getDate","naturalSortCompare","aa","bb","aNum","Number","bNum","localeCompare","waitFor","interval","internalCallback","setTimeout","isCookieSetToValue","cookies","cookie","debug","_oc_debug","webroot","_oc_webroot","coreApps","menuSpeed","PERMISSION_ALL","PERMISSION_CREATE","PERMISSION_DELETE","PERMISSION_NONE","PERMISSION_READ","PERMISSION_SHARE","PERMISSION_UPDATE","TAG_FAVORITE","fileIsBlacklisted","Config","addScript","script","addStyle","createStyleSheet","appSettings","args","appid","scriptName","cache","settings","popup","hasClass","arrowclass","loadJS","scriptname","jqxhr","appswebroots","dialogs","getCurrentUser","uid","isUserAdmin","L10N","_ajaxConnectionLostHandler","_processAjaxError","statusText","timer","setInterval","clearInterval","registerXHRForErrorProcessing","readyState","getCapabilities","realGetCapabilities","registerMenu","$toggle","$menuEl","toggle","headerMenu","isClickableElement","slideToggle","showMenu","unregisterMenu","off","basename","encodePath","dirname","isSamePath","joinPaths","getHost","host","getHostName","hostname","getPort","port","getProtocol","protocol","getCanonicalLocale","getLocale","getLanguage","addTranslations","buildQueryString","parseQueryString","queryString","components","part","decodeURIComponent","msg","PasswordConfirmation","Plugins","_plugins","targetName","plugin","plugins","getPlugins","attach","targetObject","Util","filePath","namespaces","tail","getRootPath","getRootUrl","imagePath","redirect","targetURL","reload","getRequestToken","linkTo","linkToOCS","service","version","ocsVersion","linkToRemote","generateRemoteUrl","linkToRemoteBase","realGetRootUrl","subscribe","resp","poll","setRequestToken","startPolling","NaN","session_lifetime","isNaN","getInterval","resizeMenu","appList","rightHeaderWidth","outerWidth","availableWidth","isMobile","lastShownApp","appCount","localeAliases","zh","zh_Hans","zh_Hans_CN","zh_Hans_HK","zh_Hans_MO","zh_Hans_SG","zh_Hant","zh_Hant_HK","zh_Hant_MO","zh_Hant_TW","locale","hasOwnProperty","initCore","$menu","$excludedPageClasses","cssVars","watch","onlyLegacy","test","exec","allowAuthErrors","loadState","loadConfig","auto_logout","lastActive","now","localStorage","setItem","newValue","logoutUrl","registerAutoLogout","session_keepalive","initSessionHeartBeat","setNavigationCounter","counter","appmenuElement","querySelector","appsElement","classList","mask","add","textContent","$navigation","$appmenu","delegate","$app","metaKey","Theming","inverted","setUpMainMenu","$page","includes","caretPosition","offset","resize","snapper","Snap","disable","maxPosition","minDragDistance","animating","oldSnapperOpen","open","oldSnapperClose","_snapperOpen","_snapperClose","$target","navigationBarSlideGestureEnabled","navigationBarSlideGestureAllowed","navigationBarSlideGestureEnablePending","enable","toggleSnapperOnSize","ex","TypeError","urlRegex","plainToRich","formatLinksRich","richToPlain","formatLinksPlain","leadingSpace","trailingSpace","linkText","$content","$this","dismissOptions","dismiss","menuItem","div","innerText","ocs","product","onclick","whatsNew","regular","whatsNewTextItem","innerHTML","changelogURL","rel","onQuerySuccess","onQueryError","onDismissSuccess","onDismissError","func","funcName","oldFunc","newFunc","types","loadedStylesheets","loadScript","scriptPath","btoa","onerror","head","loadStylesheet","stylePath","link","showSuccess","warning","showWarning","showInfo","Collaboration","registerType","typeDefinition","action","getTypes","keys","getIcon","typeIconClass","getLabel","typeString","getLink","Comments","InitialState","Loader","Toast","WhatsNew","warnIfNotTesting","setDeprecatedProp","cb","Array","isArray","defineProperty","autosize","ClipboardJS","md5","OCP","user","ie8fix","hidedefault","displayname","setAvatarForUnknownUser","String","$div","devicePixelRatio","oc_userconfig","avatar","clearimageplaceholder","alt","entryTemplate","shareWith","shareType","appendTo","$list","topAction","concat","hyperlink","clickedList","has","clickedTarget","attrName","attrValue","_create","originalCss","display","originalTitle","tabIndex","role","insertBefore","removeAttr","enterCallback","$buttonrow","$button","_setOptions","_createOverlay","_init","_trigger","_setOption","$title","_setSizes","$defaultButton","$closeButton","closeCB","lessHeight","outerHeight","contentDiv","overlay","_destroyOverlay","widget","setEnterCallback","unsetEnterCallback","destroy","Template","elem","_html","o","outerHTML","toRgb","Color","mixPalette","steps","color1","color2","palette","step","ends","stepCalc","red","yellow","blue","palette1","palette2","palette3","maximum","finalInt","hashToInt","seed","rgb","placeholderText","map","word","elm","crossDomain","setRequestHeader","start","end","setSelectionRange","createTextRange","range","collapse","moveEnd","moveStart","select","showPassword","fn","setState","checkbox","$clone","class","tabindex","autocomplete","cloneElement","insertAfter","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","contents","areaSelector","area","hideArea","slideDown","showArea","onpopstate","___CSS_LOADER_URL_IMPORT_0___","___CSS_LOADER_URL_IMPORT_1___","___CSS_LOADER_URL_IMPORT_2___","___CSS_LOADER_URL_IMPORT_3___","___CSS_LOADER_URL_IMPORT_4___","___CSS_LOADER_EXPORT___","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_REPLACEMENT_1___","___CSS_LOADER_URL_REPLACEMENT_2___","___CSS_LOADER_URL_REPLACEMENT_3___","___CSS_LOADER_URL_REPLACEMENT_4___","module","exports","container","depth0","helpers","partials","stack1","lookupProperty","propertyName","nullContext","program","noop","alias1","lambda","alias2","escapeExpression","helper","hooks","helperMissing","alias3","alias4","webpackContext","req","webpackContextResolve","__webpack_require__","code","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","amdD","amdO","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","every","splice","getter","__esModule","d","definition","enumerable","globalThis","Function","obj","Symbol","toStringTag","nmd","baseURI","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"core-main.js?v=9b97aa47ae0dc846825b","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/Polyfill/closest.js","webpack:///nextcloud/core/src/Polyfill/console.js","webpack:///nextcloud/core/src/Polyfill/windows-phone.js","webpack:///nextcloud/core/src/OC/legacy-loader.js","webpack:///nextcloud/core/src/OC/notification.js","webpack:///nextcloud/core/src/OC/xhr-error.js","webpack:///nextcloud/core/src/OC/apps.js","webpack:///nextcloud/core/src/OCP/appconfig.js","webpack:///nextcloud/core/src/OC/appconfig.js","webpack:///nextcloud/core/src/OC/appswebroots.js","webpack:///nextcloud/core/src/OC/backbone-webdav.js","webpack:///nextcloud/core/src/OC/backbone.js","webpack:///nextcloud/core/src/OC/config.js","webpack:///nextcloud/core/src/OC/contactsmenu.js","webpack:///nextcloud/core/src/OC/currentuser.js","webpack:///nextcloud/core/src/OCA/index.js","webpack:///nextcloud/core/src/OCA/search.js","webpack:///nextcloud/core/src/OC/dialogs.js","webpack:///nextcloud/core/src/OC/requesttoken.js","webpack:///nextcloud/core/src/OC/eventsource.js","webpack:///nextcloud/core/src/OC/menu.js","webpack:///nextcloud/core/src/OC/constants.js","webpack:///nextcloud/core/src/OC/admin.js","webpack:///nextcloud/core/src/OC/l10n-registry.js","webpack:///nextcloud/core/src/OC/l10n.js","webpack:///nextcloud/core/src/OC/msg.js","webpack:///nextcloud/core/src/OC/password-confirmation.js","webpack:///nextcloud/core/src/OC/theme.js","webpack:///nextcloud/core/src/OC/util-history.js","webpack:///nextcloud/core/src/OC/util.js","webpack:///nextcloud/core/src/OC/debug.js","webpack:///nextcloud/core/src/OC/webroot.js","webpack:///nextcloud/core/src/OC/get_set.js","webpack:///nextcloud/core/src/OC/index.js","webpack:///nextcloud/core/src/OC/appsettings.js","webpack:///nextcloud/core/src/OC/capabilities.js","webpack:///nextcloud/core/src/OC/host.js","webpack:///nextcloud/core/src/OC/query-string.js","webpack:///nextcloud/core/src/OC/plugins.js","webpack:///nextcloud/core/src/OC/navigation.js","webpack:///nextcloud/core/src/OC/routing.js","webpack:///nextcloud/core/src/session-heartbeat.js","webpack:///nextcloud/core/src/init.js","webpack:///nextcloud/core/src/Polyfill/tooltip.js","webpack:///nextcloud/core/src/components/UserMenu.js","webpack:///nextcloud/core/src/components/MainMenu.js","webpack:///nextcloud/core/src/components/ContactsMenu.js","webpack:///nextcloud/core/src/OCP/comments.js","webpack:///nextcloud/core/src/OCP/whatsnew.js","webpack:///nextcloud/core/src/OCP/collaboration.js","webpack:///nextcloud/core/src/globals.js","webpack:///nextcloud/core/src/OCP/loader.js","webpack:///nextcloud/core/src/OCP/toast.js","webpack:///nextcloud/core/src/OCP/index.js","webpack:///nextcloud/core/src/jquery/avatar.js","webpack:///nextcloud/core/src/jquery/contactsmenu.js","webpack:///nextcloud/core/src/jquery/exists.js","webpack:///nextcloud/core/src/jquery/filterattr.js","webpack:///nextcloud/core/src/jquery/ocdialog.js","webpack:///nextcloud/core/src/jquery/octemplate.js","webpack:///nextcloud/core/src/jquery/placeholder.js","webpack:///nextcloud/core/src/jquery/requesttoken.js","webpack:///nextcloud/core/src/jquery/selectrange.js","webpack:///nextcloud/core/src/jquery/showpassword.js","webpack:///nextcloud/core/src/jquery/ui-fixes.js","webpack://nextcloud/./core/src/jquery/css/jquery-ui-fixes.scss?a4c2","webpack://nextcloud/./core/src/jquery/css/jquery.ocdialog.scss?5718","webpack:///nextcloud/core/src/jquery/index.js","webpack:///nextcloud/core/src/main.js","webpack:///nextcloud/core/src/jquery/css/jquery-ui-fixes.scss","webpack:///nextcloud/core/src/jquery/css/jquery.ocdialog.scss","webpack:///nextcloud/core/src/OC/contactsmenu/contact.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/error.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/list.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/loading.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/menu.handlebars","webpack:///nextcloud/core/src/jquery/contactsmenu/jquery_entry.handlebars","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","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/runtime/nonce","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 Copyright (c) 2016 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#Polyfill\n\nif (!Element.prototype.matches) {\n\tElement.prototype.matches\n\t\t= Element.prototype.msMatchesSelector\n\t\t|| Element.prototype.webkitMatchesSelector\n}\n\nif (!Element.prototype.closest) {\n\tElement.prototype.closest = function(s) {\n\t\tlet el = this\n\n\t\tdo {\n\t\t\tif (el.matches(s)) return el\n\t\t\tel = el.parentElement || el.parentNode\n\t\t} while (el !== null && el.nodeType === 1)\n\t\treturn null\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\n/* eslint-disable no-console */\nif (typeof console === 'undefined' || typeof console.log === 'undefined') {\n\tif (!window.console) {\n\t\twindow.console = {}\n\t}\n\tconst noOp = () => {}\n\tconst methods = ['log', 'debug', 'warn', 'info', 'error', 'assert', 'time', 'timeEnd']\n\tfor (let i = 0; i < methods.length; i++) {\n\t\tconsole[methods[i]] = noOp\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\n// fix device width on windows phone\nif ('-ms-user-select' in document.documentElement.style && navigator.userAgent.match(/IEMobile\\/10\\.0/)) {\n\tconst msViewportStyle = document.createElement('style')\n\tmsViewportStyle.appendChild(\n\t\tdocument.createTextNode('@-ms-viewport{width:auto!important}')\n\t)\n\tdocument.getElementsByTagName('head')[0].appendChild(msViewportStyle)\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\nimport { generateFilePath } from '@nextcloud/router'\n\nconst loadedScripts = {}\nconst loadedStyles = []\n\n/**\n * Load a script for the server and load it. If the script is already loaded,\n * the event handler will be called directly\n *\n * @param {string} app the app id to which the script belongs\n * @param {string} script the filename of the script\n * @param {Function} ready event handler to be called when the script is loaded\n * @return {jQuery.Deferred}\n * @deprecated 16.0.0 Use OCP.Loader.loadScript\n */\nexport const addScript = (app, script, ready) => {\n\tconsole.warn('OC.addScript is deprecated, use OCP.Loader.loadScript instead')\n\n\tlet deferred\n\tconst path = generateFilePath(app, 'js', script + '.js')\n\tif (!loadedScripts[path]) {\n\t\tdeferred = $.Deferred()\n\t\t$.getScript(path, () => deferred.resolve())\n\t\tloadedScripts[path] = deferred\n\t} else {\n\t\tif (ready) {\n\t\t\tready()\n\t\t}\n\t}\n\treturn loadedScripts[path]\n}\n\n/**\n * Loads a CSS file\n *\n * @param {string} app the app id to which the css style belongs\n * @param {string} style the filename of the css file\n * @deprecated 16.0.0 Use OCP.Loader.loadStylesheet\n */\nexport const addStyle = (app, style) => {\n\tconsole.warn('OC.addStyle is deprecated, use OCP.Loader.loadStylesheet instead')\n\n\tconst path = generateFilePath(app, 'css', style + '.css')\n\tif (loadedStyles.indexOf(path) === -1) {\n\t\tloadedStyles.push(path)\n\t\tif (document.createStyleSheet) {\n\t\t\tdocument.createStyleSheet(path)\n\t\t} else {\n\t\t\tstyle = $('<link rel=\"stylesheet\" type=\"text/css\" href=\"' + path + '\"/>')\n\t\t\t$('head').append(style)\n\t\t}\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author npmbuildbot[bot] \"npmbuildbot[bot]@users.noreply.github.com\"\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 */\n\nimport _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\nimport { showMessage, TOAST_DEFAULT_TIMEOUT, TOAST_PERMANENT_TIMEOUT } from '@nextcloud/dialogs'\n\n/**\n * @todo Write documentation\n * @deprecated 17.0.0 use the `@nextcloud/dialogs` package instead\n * @namespace OC.Notification\n */\nexport default {\n\n\tupdatableNotification: null,\n\n\tgetDefaultNotificationFunction: null,\n\n\t/**\n\t * @param {Function} callback callback function\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tsetDefault(callback) {\n\t\tthis.getDefaultNotificationFunction = callback\n\t},\n\n\t/**\n\t * Hides a notification.\n\t *\n\t * If a row is given, only hide that one.\n\t * If no row is given, hide all notifications.\n\t *\n\t * @param {jQuery} [$row] notification row\n\t * @param {Function} [callback] callback\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\thide($row, callback) {\n\t\tif (_.isFunction($row)) {\n\t\t\t// first arg is the callback\n\t\t\tcallback = $row\n\t\t\t$row = undefined\n\t\t}\n\n\t\tif (!$row) {\n\t\t\tconsole.error('Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification')\n\t\t\treturn\n\t\t}\n\n\t\t// remove the row directly\n\t\t$row.each(function() {\n\t\t\tif ($(this)[0].toastify) {\n\t\t\t\t$(this)[0].toastify.hideToast()\n\t\t\t} else {\n\t\t\t\tconsole.error('cannot hide toast because object is not set')\n\t\t\t}\n\t\t\tif (this === this.updatableNotification) {\n\t\t\t\tthis.updatableNotification = null\n\t\t\t}\n\t\t})\n\t\tif (callback) {\n\t\t\tcallback.call()\n\t\t}\n\t\tif (this.getDefaultNotificationFunction) {\n\t\t\tthis.getDefaultNotificationFunction()\n\t\t}\n\t},\n\n\t/**\n\t * Shows a notification as HTML without being sanitized before.\n\t * If you pass unsanitized user input this may lead to a XSS vulnerability.\n\t * Consider using show() instead of showHTML()\n\t *\n\t * @param {string} html Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout=0] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowHtml(html, options) {\n\t\toptions = options || {}\n\t\toptions.isHTML = true\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(html, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Shows a sanitized notification\n\t *\n\t * @param {string} text Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout=0] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshow(text, options) {\n\t\tconst escapeHTML = function(text) {\n\t\t\treturn text.toString()\n\t\t\t\t.split('&').join('&amp;')\n\t\t\t\t.split('<').join('&lt;')\n\t\t\t\t.split('>').join('&gt;')\n\t\t\t\t.split('\"').join('&quot;')\n\t\t\t\t.split('\\'').join('&#039;')\n\t\t}\n\n\t\toptions = options || {}\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(escapeHTML(text), options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Updates (replaces) a sanitized notification.\n\t *\n\t * @param {string} text Message to display\n\t * @return {jQuery} JQuery element for notificaiton row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowUpdate(text) {\n\t\tif (this.updatableNotification) {\n\t\t\tthis.updatableNotification.hideToast()\n\t\t}\n\t\tthis.updatableNotification = showMessage(text, { timeout: TOAST_PERMANENT_TIMEOUT })\n\t\tthis.updatableNotification.toastElement.toastify = this.updatableNotification\n\t\treturn $(this.updatableNotification.toastElement)\n\t},\n\n\t/**\n\t * Shows a notification that disappears after x seconds, default is\n\t * 7 seconds\n\t *\n\t * @param {string} text Message to show\n\t * @param {Array} [options] options array\n\t * @param {number} [options.timeout=7] timeout in seconds, if this is 0 it will show the message permanently\n\t * @param {boolean} [options.isHTML=false] an indicator for HTML notifications (true) or text (false)\n\t * @param {string} [options.type] notification type\n\t * @return {JQuery} the toast element\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowTemporary(text, options) {\n\t\toptions = options || {}\n\t\toptions.timeout = options.timeout || TOAST_DEFAULT_TIMEOUT\n\t\tconst toast = showMessage(text, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Returns whether a notification is hidden.\n\t *\n\t * @return {boolean}\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tisHidden() {\n\t\treturn !$('#content').find('.toastify').length\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\n\nimport OC from './index'\nimport Notification from './notification'\n\n/**\n * Warn users that the connection to the server was lost temporarily\n *\n * This function is throttled to prevent stacked notfications.\n * After 7sec the first notification is gone, then we can show another one\n * if necessary.\n */\nexport const ajaxConnectionLostHandler = _.throttle(() => {\n\tNotification.showTemporary(t('core', 'Connection to server lost'))\n}, 7 * 1000, { trailing: false })\n\n/**\n * Process ajax error, redirects to main page\n * if an error/auth error status was returned.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const processAjaxError = xhr => {\n\t// purposefully aborted request ?\n\t// OC._userIsNavigatingAway needed to distinguish ajax calls cancelled by navigating away\n\t// from calls cancelled by failed cross-domain ajax due to SSO redirect\n\tif (xhr.status === 0 && (xhr.statusText === 'abort' || xhr.statusText === 'timeout' || OC._reloadCalled)) {\n\t\treturn\n\t}\n\n\tif (_.contains([302, 303, 307, 401], xhr.status) && OC.currentUser) {\n\t\t// sometimes \"beforeunload\" happens later, so need to defer the reload a bit\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\tlet timer = 0\n\t\t\t\tconst seconds = 5\n\t\t\t\tconst interval = setInterval(function() {\n\t\t\t\t\tNotification.showUpdate(n('core', 'Problem loading page, reloading in %n second', 'Problem loading page, reloading in %n seconds', seconds - timer))\n\t\t\t\t\tif (timer >= seconds) {\n\t\t\t\t\t\tclearInterval(interval)\n\t\t\t\t\t\tOC.reload()\n\t\t\t\t\t}\n\t\t\t\t\ttimer++\n\t\t\t\t}, 1000 // 1 second interval\n\t\t\t\t)\n\n\t\t\t\t// only call reload once\n\t\t\t\tOC._reloadCalled = true\n\t\t\t}\n\t\t}, 100)\n\t} else if (xhr.status === 0) {\n\t\t// Connection lost (e.g. WiFi disconnected or server is down)\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\t// TODO: call method above directly\n\t\t\t\tOC._ajaxConnectionLostHandler()\n\t\t\t}\n\t\t}, 100)\n\t}\n}\n\n/**\n * Registers XmlHttpRequest object for global error processing.\n *\n * This means that if this XHR object returns 401 or session timeout errors,\n * the current page will automatically be reloaded.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const registerXHRForErrorProcessing = xhr => {\n\tconst loadCallback = () => {\n\t\tif (xhr.readyState !== 4) {\n\t\t\treturn\n\t\t}\n\n\t\tif ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) {\n\t\t\treturn\n\t\t}\n\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tconst errorCallback = () => {\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tif (xhr.addEventListener) {\n\t\txhr.addEventListener('load', loadCallback)\n\t\txhr.addEventListener('error', errorCallback)\n\t}\n\n}\n","/**\n * @copyright Bernhard Posselt 2014\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport $ from 'jquery'\n\nlet dynamicSlideToggleEnabled = false\n\nconst Apps = {\n\tenableDynamicSlideToggle() {\n\t\tdynamicSlideToggleEnabled = true\n\t},\n}\n\n/**\n * Shows the #app-sidebar and add .with-app-sidebar to subsequent siblings\n *\n * @param {object} [$el] sidebar element to show, defaults to $('#app-sidebar')\n */\nApps.showAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.removeClass('disappear').show()\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Shows the #app-sidebar and removes .with-app-sidebar from subsequent\n * siblings\n *\n * @param {object} [$el] sidebar element to hide, defaults to $('#app-sidebar')\n */\nApps.hideAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.hide().addClass('disappear')\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Provides a way to slide down a target area through a button and slide it\n * up if the user clicks somewhere else. Used for the news app settings and\n * add new field.\n *\n * Usage:\n * <button data-apps-slide-toggle=\".slide-area\">slide</button>\n * <div class=\".slide-area\" class=\"hidden\">I'm sliding up</div>\n */\nexport const registerAppsSlideToggle = () => {\n\tlet buttons = $('[data-apps-slide-toggle]')\n\n\tif (buttons.length === 0) {\n\t\t$('#app-navigation').addClass('without-app-settings')\n\t}\n\n\t$(document).click(function(event) {\n\n\t\tif (dynamicSlideToggleEnabled) {\n\t\t\tbuttons = $('[data-apps-slide-toggle]')\n\t\t}\n\n\t\tbuttons.each(function(index, button) {\n\n\t\t\tconst areaSelector = $(button).data('apps-slide-toggle')\n\t\t\tconst area = $(areaSelector)\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction hideArea() {\n\t\t\t\tarea.slideUp(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('hide'))\n\t\t\t\t})\n\t\t\t\tarea.removeClass('opened')\n\t\t\t\t$(button).removeClass('opened')\n\t\t\t}\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction showArea() {\n\t\t\t\tarea.slideDown(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('show'))\n\t\t\t\t})\n\t\t\t\tarea.addClass('opened')\n\t\t\t\t$(button).addClass('opened')\n\t\t\t\tconst input = $(areaSelector + ' [autofocus]')\n\t\t\t\tif (input.length === 1) {\n\t\t\t\t\tinput.focus()\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// do nothing if the area is animated\n\t\t\tif (!area.is(':animated')) {\n\n\t\t\t\t// button toggles the area\n\t\t\t\tif ($(button).is($(event.target).closest('[data-apps-slide-toggle]'))) {\n\t\t\t\t\tif (area.is(':visible')) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tshowArea()\n\t\t\t\t\t}\n\n\t\t\t\t\t// all other areas that have not been clicked but are open\n\t\t\t\t\t// should be slid up\n\t\t\t\t} else {\n\t\t\t\t\tconst closest = $(event.target).closest(areaSelector)\n\t\t\t\t\tif (area.is(':visible') && closest[0] !== area[0]) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t})\n}\n\nexport default Apps\n","/**\n * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport $ from 'jquery'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nimport OC from '../OC/index'\n\n/**\n * @param {string} method 'post' or 'delete'\n * @param {string} endpoint endpoint\n * @param {object} [options] destructuring object\n * @param {object} [options.data] option data\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n */\nfunction call(method, endpoint, options) {\n\tif ((method === 'post' || method === 'delete') && OC.PasswordConfirmation.requiresPasswordConfirmation()) {\n\t\tOC.PasswordConfirmation.requirePasswordConfirmation(_.bind(call, this, method, endpoint, options))\n\t\treturn\n\t}\n\n\toptions = options || {}\n\t$.ajax({\n\t\ttype: method.toUpperCase(),\n\t\turl: generateOcsUrl('apps/provisioning_api/api/v1/config/apps') + endpoint,\n\t\tdata: options.data || {},\n\t\tsuccess: options.success,\n\t\terror: options.error,\n\t})\n}\n\n/**\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @since 11.0.0\n */\nexport function getApps(options) {\n\tcall('get', '', options)\n}\n\n/**\n * @param {string} app app id\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getKeys(app, options) {\n\tcall('get', '/' + app, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string | Function} defaultValue default value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getValue(app, key, defaultValue, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tdefaultValue,\n\t}\n\n\tcall('get', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string} value value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function setValue(app, key, value, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tvalue,\n\t}\n\n\tcall('post', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function deleteKey(app, key, options) {\n\tcall('delete', '/' + app + '/' + key, options)\n}\n","/**\n * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Jörn Friedrich Dreyer <jfd@butonic.de>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n/* eslint-disable */\n import { getValue, setValue, getApps, getKeys, deleteKey } from '../OCP/appconfig'\n\nexport const appConfig = window.oc_appconfig || {}\n\n/**\n * @namespace\n * @deprecated 16.0.0 Use OCP.AppConfig instead\n */\nexport const AppConfig = {\n\t/**\n\t * @deprecated Use OCP.AppConfig.getValue() instead\n\t */\n\tgetValue: function(app, key, defaultValue, callback) {\n\t\tgetValue(app, key, defaultValue, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.setValue() instead\n\t */\n\tsetValue: function(app, key, value) {\n\t\tsetValue(app, key, value)\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getApps() instead\n\t */\n\tgetApps: function(callback) {\n\t\tgetApps({\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getKeys() instead\n\t */\n\tgetKeys: function(app, callback) {\n\t\tgetKeys(app, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.deleteKey() instead\n\t */\n\tdeleteKey: function(app, key) {\n\t\tdeleteKey(app, key)\n\t}\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 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 */\n\nconst appswebroots = (window._oc_appswebroots !== undefined) ? window._oc_appswebroots : false\n\nexport default appswebroots\n","/**\n * Copyright (c) 2015\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport { dav } from 'davclient.js'\n\nconst methodMap = {\n\tcreate: 'POST',\n\tupdate: 'PROPPATCH',\n\tpatch: 'PROPPATCH',\n\tdelete: 'DELETE',\n\tread: 'PROPFIND'\n}\n\n// Throw an error when a URL is needed, and none is supplied.\nfunction urlError() {\n\tthrow new Error('A \"url\" property or function must be specified')\n}\n\n/**\n * Convert a single propfind result to JSON\n *\n * @param {Object} result\n * @param {Object} davProperties properties mapping\n */\nfunction parsePropFindResult(result, davProperties) {\n\tif (_.isArray(result)) {\n\t\treturn _.map(result, function(subResult) {\n\t\t\treturn parsePropFindResult(subResult, davProperties)\n\t\t})\n\t}\n\tvar props = {\n\t\thref: result.href\n\t}\n\n\t_.each(result.propStat, function(propStat) {\n\t\tif (propStat.status !== 'HTTP/1.1 200 OK') {\n\t\t\treturn\n\t\t}\n\n\t\tfor (var key in propStat.properties) {\n\t\t\tvar propKey = key\n\t\t\tif (key in davProperties) {\n\t\t\t\tpropKey = davProperties[key]\n\t\t\t}\n\t\t\tprops[propKey] = propStat.properties[key]\n\t\t}\n\t})\n\n\tif (!props.id) {\n\t\t// parse id from href\n\t\tprops.id = parseIdFromLocation(props.href)\n\t}\n\n\treturn props\n}\n\n/**\n * Parse ID from location\n *\n * @param {string} url url\n * @returns {string} id\n */\nfunction parseIdFromLocation(url) {\n\tvar queryPos = url.indexOf('?')\n\tif (queryPos > 0) {\n\t\turl = url.substr(0, queryPos)\n\t}\n\n\tvar parts = url.split('/')\n\tvar result\n\tdo {\n\t\tresult = parts[parts.length - 1]\n\t\tparts.pop()\n\t\t// note: first result can be empty when there is a trailing slash,\n\t\t// so we take the part before that\n\t} while (!result && parts.length > 0)\n\n\treturn result\n}\n\nfunction isSuccessStatus(status) {\n\treturn status >= 200 && status <= 299\n}\n\nfunction convertModelAttributesToDavProperties(attrs, davProperties) {\n\tvar props = {}\n\tvar key\n\tfor (key in attrs) {\n\t\tvar changedProp = davProperties[key]\n\t\tvar value = attrs[key]\n\t\tif (!changedProp) {\n\t\t\tconsole.warn('No matching DAV property for property \"' + key)\n\t\t\tchangedProp = key\n\t\t}\n\t\tif (_.isBoolean(value) || _.isNumber(value)) {\n\t\t\t// convert to string\n\t\t\tvalue = '' + value\n\t\t}\n\t\tprops[changedProp] = value\n\t}\n\treturn props\n}\n\nfunction callPropFind(client, options, model, headers) {\n\treturn client.propFind(\n\t\toptions.url,\n\t\t_.values(options.davProperties) || [],\n\t\toptions.depth,\n\t\theaders\n\t).then(function(response) {\n\t\tif (isSuccessStatus(response.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\tvar results = parsePropFindResult(response.body, propsMapping)\n\t\t\t\tif (options.depth > 0) {\n\t\t\t\t\t// discard root entry\n\t\t\t\t\tresults.shift()\n\t\t\t\t}\n\n\t\t\t\toptions.success(results)\n\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(response)\n\t\t}\n\t})\n}\n\nfunction callPropPatch(client, options, model, headers) {\n\treturn client.propPatch(\n\t\toptions.url,\n\t\tconvertModelAttributesToDavProperties(model.changed, options.davProperties),\n\t\theaders\n\t).then(function(result) {\n\t\tif (isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return the updated model\n\t\t\t\toptions.success(model.toJSON())\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(result)\n\t\t}\n\t})\n\n}\n\nfunction callMkCol(client, options, model, headers) {\n\t// call MKCOL without data, followed by PROPPATCH\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\tnull\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tcallPropPatch(client, options, model, headers)\n\t})\n}\n\nfunction callMethod(client, options, model, headers) {\n\theaders['Content-Type'] = 'application/json'\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\toptions.data\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tif (_.isFunction(options.success)) {\n\t\t\tif (options.type === 'PUT' || options.type === 'POST' || options.type === 'MKCOL') {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return anything\n\t\t\t\tvar responseJson = result.body || model.toJSON()\n\t\t\t\tvar locationHeader = result.xhr.getResponseHeader('Content-Location')\n\t\t\t\tif (options.type === 'POST' && locationHeader) {\n\t\t\t\t\tresponseJson.id = parseIdFromLocation(locationHeader)\n\t\t\t\t}\n\t\t\t\toptions.success(responseJson)\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// if multi-status, parse\n\t\t\tif (result.status === 207) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\toptions.success(parsePropFindResult(result.body, propsMapping))\n\t\t\t} else {\n\t\t\t\toptions.success(result.body)\n\t\t\t}\n\t\t}\n\t})\n}\n\nexport const davCall = (options, model) => {\n\tvar client = new dav.Client({\n\t\tbaseUrl: options.url,\n\t\txmlNamespaces: _.extend({\n\t\t\t'DAV:': 'd',\n\t\t\t'http://owncloud.org/ns': 'oc'\n\t\t}, options.xmlNamespaces || {})\n\t})\n\tclient.resolveUrl = function() {\n\t\treturn options.url\n\t}\n\tvar headers = _.extend({\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t'requesttoken': OC.requestToken\n\t}, options.headers)\n\tif (options.type === 'PROPFIND') {\n\t\treturn callPropFind(client, options, model, headers)\n\t} else if (options.type === 'PROPPATCH') {\n\t\treturn callPropPatch(client, options, model, headers)\n\t} else if (options.type === 'MKCOL') {\n\t\treturn callMkCol(client, options, model, headers)\n\t} else {\n\t\treturn callMethod(client, options, model, headers)\n\t}\n}\n\n/**\n * DAV transport\n */\nexport const davSync = Backbone => (method, model, options) => {\n\tvar params = { type: methodMap[method] || method }\n\tvar isCollection = (model instanceof Backbone.Collection)\n\n\tif (method === 'update') {\n\t\t// if a model has an inner collection, it must define an\n\t\t// attribute \"hasInnerCollection\" that evaluates to true\n\t\tif (model.hasInnerCollection) {\n\t\t\t// if the model itself is a Webdav collection, use MKCOL\n\t\t\tparams.type = 'MKCOL'\n\t\t} else if (model.usePUT || (model.collection && model.collection.usePUT)) {\n\t\t\t// use PUT instead of PROPPATCH\n\t\t\tparams.type = 'PUT'\n\t\t}\n\t}\n\n\t// Ensure that we have a URL.\n\tif (!options.url) {\n\t\tparams.url = _.result(model, 'url') || urlError()\n\t}\n\n\t// Ensure that we have the appropriate request data.\n\tif (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n\t\tparams.data = JSON.stringify(options.attrs || model.toJSON(options))\n\t}\n\n\t// Don't process data on a non-GET request.\n\tif (params.type !== 'PROPFIND') {\n\t\tparams.processData = false\n\t}\n\n\tif (params.type === 'PROPFIND' || params.type === 'PROPPATCH') {\n\t\tvar davProperties = model.davProperties\n\t\tif (!davProperties && model.model) {\n\t\t\t// use dav properties from model in case of collection\n\t\t\tdavProperties = model.model.prototype.davProperties\n\t\t}\n\t\tif (davProperties) {\n\t\t\tif (_.isFunction(davProperties)) {\n\t\t\t\tparams.davProperties = davProperties.call(model)\n\t\t\t} else {\n\t\t\t\tparams.davProperties = davProperties\n\t\t\t}\n\t\t}\n\n\t\tparams.davProperties = _.extend(params.davProperties || {}, options.davProperties)\n\n\t\tif (_.isUndefined(options.depth)) {\n\t\t\tif (isCollection) {\n\t\t\t\toptions.depth = 1\n\t\t\t} else {\n\t\t\t\toptions.depth = 0\n\t\t\t}\n\t\t}\n\t}\n\n\t// Pass along `textStatus` and `errorThrown` from jQuery.\n\tvar error = options.error\n\toptions.error = function(xhr, textStatus, errorThrown) {\n\t\toptions.textStatus = textStatus\n\t\toptions.errorThrown = errorThrown\n\t\tif (error) {\n\t\t\terror.call(options.context, xhr, textStatus, errorThrown)\n\t\t}\n\t}\n\n\t// Make the request, allowing the user to override any Ajax options.\n\tvar xhr = options.xhr = Backbone.davCall(_.extend(params, options), model)\n\tmodel.trigger('request', model, xhr, options)\n\treturn xhr\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport VendorBackbone from 'backbone'\nimport { davCall, davSync } from './backbone-webdav'\n\nconst Backbone = VendorBackbone.noConflict()\n\n// Patch Backbone for DAV\nObject.assign(Backbone, {\n\tdavCall,\n\tdavSync: davSync(Backbone),\n})\n\nexport default Backbone\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 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 */\n\nconst config = window._oc_config || {}\n\nexport default config\n","/**\n * @copyright 2017 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport { Collection, Model, View } from 'backbone'\n\nimport OC from './index'\n\n/**\n * @class Contact\n */\nconst Contact = Model.extend({\n\tdefaults: {\n\t\tfullName: '',\n\t\tlastMessage: '',\n\t\tactions: [],\n\t\thasOneAction: false,\n\t\thasTwoActions: false,\n\t\thasManyActions: false\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\tinitialize: function() {\n\t\t// Add needed property for easier template rendering\n\t\tif (this.get('actions').length === 0) {\n\t\t\tthis.set('hasOneAction', true)\n\t\t} else if (this.get('actions').length === 1) {\n\t\t\tthis.set('hasTwoActions', true)\n\t\t\tthis.set('secondAction', this.get('actions')[0])\n\t\t} else {\n\t\t\tthis.set('hasManyActions', true)\n\t\t}\n\t}\n})\n\n/**\n * @class ContactCollection\n * @private\n */\nconst ContactCollection = Collection.extend({\n\tmodel: Contact\n})\n\n/**\n * @class ContactsListView\n * @private\n */\nconst ContactsListView = View.extend({\n\n\t/** @type {ContactCollection} */\n\t_collection: undefined,\n\n\t/** @type {array} */\n\t_subViews: [],\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis._collection = options.collection\n\t},\n\n\t/**\n\t * @returns {self}\n\t */\n\trender: function() {\n\t\tvar self = this\n\t\tself.$el.html('')\n\t\tself._subViews = []\n\n\t\tself._collection.forEach(function(contact) {\n\t\t\tvar item = new ContactsListItemView({\n\t\t\t\tmodel: contact\n\t\t\t})\n\t\t\titem.render()\n\t\t\tself.$el.append(item.$el)\n\t\t\titem.on('toggle:actionmenu', self._onChildActionMenuToggle, self)\n\t\t\tself._subViews.push(item)\n\t\t})\n\n\t\treturn self\n\t},\n\n\t/**\n\t * Event callback to propagate opening (another) entry's action menu\n\t *\n\t * @param {type} $src\n\t * @returns {undefined}\n\t */\n\t_onChildActionMenuToggle: function($src) {\n\t\tthis._subViews.forEach(function(view) {\n\t\t\tview.trigger('parent:toggle:actionmenu', $src)\n\t\t})\n\t}\n})\n\n/**\n * @class ContactsListItemView\n * @private\n */\nconst ContactsListItemView = View.extend({\n\n\t/** @type {string} */\n\tclassName: 'contact',\n\n\t/** @type {undefined|function} */\n\t_template: undefined,\n\n\t/** @type {Contact} */\n\t_model: undefined,\n\n\t/** @type {boolean} */\n\t_actionMenuShown: false,\n\n\tevents: {\n\t\t'click .icon-more': '_onToggleActionsMenu'\n\t},\n\n\tcontactTemplate: require('./contactsmenu/contact.handlebars'),\n\n\t/**\n\t * @param {object} data\n\t * @returns {undefined}\n\t */\n\ttemplate: function(data) {\n\t\treturn this.contactTemplate(data)\n\t},\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis._model = options.model\n\t\tthis.on('parent:toggle:actionmenu', this._onOtherActionMenuOpened, this)\n\t},\n\n\t/**\n\t * @returns {self}\n\t */\n\trender: function() {\n\t\tthis.$el.html(this.template({\n\t\t\tcontact: this._model.toJSON()\n\t\t}))\n\t\tthis.delegateEvents()\n\n\t\t// Show placeholder if no avatar is available (avatar is rendered as img, not div)\n\t\tthis.$('div.avatar').imageplaceholder(this._model.get('fullName'))\n\n\t\t// Show tooltip for top action\n\t\tthis.$('.top-action').tooltip({ placement: 'left' })\n\t\t// Show tooltip for second action\n\t\tthis.$('.second-action').tooltip({ placement: 'left' })\n\n\t\treturn this\n\t},\n\n\t/**\n\t * Toggle the visibility of the action popover menu\n\t *\n\t * @private\n\t * @returns {undefined}\n\t */\n\t_onToggleActionsMenu: function() {\n\t\tthis._actionMenuShown = !this._actionMenuShown\n\t\tif (this._actionMenuShown) {\n\t\t\tthis.$('.menu').show()\n\t\t} else {\n\t\t\tthis.$('.menu').hide()\n\t\t}\n\t\tthis.trigger('toggle:actionmenu', this.$el)\n\t},\n\n\t/**\n\t * @private\n\t * @argument {jQuery} $src\n\t * @returns {undefined}\n\t */\n\t_onOtherActionMenuOpened: function($src) {\n\t\tif (this.$el.is($src)) {\n\t\t\t// Ignore\n\t\t\treturn\n\t\t}\n\t\tthis._actionMenuShown = false\n\t\tthis.$('.menu').hide()\n\t}\n})\n\n/**\n * @class ContactsMenuView\n * @private\n */\nconst ContactsMenuView = View.extend({\n\n\t/** @type {undefined|function} */\n\t_loadingTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_errorTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_contentTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_contactsTemplate: undefined,\n\n\t/** @type {undefined|ContactCollection} */\n\t_contacts: undefined,\n\n\t/** @type {string} */\n\t_searchTerm: '',\n\n\tevents: {\n\t\t'input #contactsmenu-search': '_onSearch'\n\t},\n\n\ttemplates: {\n\t\tloading: require('./contactsmenu/loading.handlebars'),\n\t\terror: require('./contactsmenu/error.handlebars'),\n\t\tmenu: require('./contactsmenu/menu.handlebars'),\n\t\tlist: require('./contactsmenu/list.handlebars')\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\t_onSearch: _.debounce(function(e) {\n\t\tvar searchTerm = this.$('#contactsmenu-search').val()\n\t\t// IE11 triggers an 'input' event after the view has been rendered\n\t\t// resulting in an endless loading loop. To prevent this, we remember\n\t\t// the last search term to savely ignore some events\n\t\t// See https://github.com/nextcloud/server/issues/5281\n\t\tif (searchTerm !== this._searchTerm) {\n\t\t\tthis.trigger('search', this.$('#contactsmenu-search').val())\n\t\t\tthis._searchTerm = searchTerm\n\t\t}\n\t}, 700),\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tloadingTemplate: function(data) {\n\t\treturn this.templates.loading(data)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\terrorTemplate: function(data) {\n\t\treturn this.templates.error(\n\t\t\t_.extend({\n\t\t\t\tcouldNotLoadText: t('core', 'Could not load your contacts')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tcontentTemplate: function(data) {\n\t\treturn this.templates.menu(\n\t\t\t_.extend({\n\t\t\t\tsearchContactsText: t('core', 'Search contacts …')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tcontactsTemplate: function(data) {\n\t\treturn this.templates.list(\n\t\t\t_.extend({\n\t\t\t\tnoContactsFoundText: t('core', 'No contacts found'),\n\t\t\t\tshowAllContactsText: t('core', 'Show all contacts …'),\n\t\t\t\tcontactsAppMgmtText: t('core', 'Install the Contacts app')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis.options = options\n\t},\n\n\t/**\n\t * @param {string} text\n\t * @returns {undefined}\n\t */\n\tshowLoading: function(text) {\n\t\tthis.render()\n\t\tthis._contacts = undefined\n\t\tthis.$('.content').html(this.loadingTemplate({\n\t\t\tloadingText: text\n\t\t}))\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\tshowError: function() {\n\t\tthis.render()\n\t\tthis._contacts = undefined\n\t\tthis.$('.content').html(this.errorTemplate())\n\t},\n\n\t/**\n\t * @param {object} viewData\n\t * @param {string} searchTerm\n\t * @returns {undefined}\n\t */\n\tshowContacts: function(viewData, searchTerm) {\n\t\tthis._contacts = viewData.contacts\n\t\tthis.render({\n\t\t\tcontacts: viewData.contacts\n\t\t})\n\n\t\tvar list = new ContactsListView({\n\t\t\tcollection: viewData.contacts\n\t\t})\n\t\tlist.render()\n\t\tthis.$('.content').html(this.contactsTemplate({\n\t\t\tcontacts: viewData.contacts,\n\t\t\tsearchTerm: searchTerm,\n\t\t\tcontactsAppEnabled: viewData.contactsAppEnabled,\n\t\t\tcontactsAppURL: OC.generateUrl('/apps/contacts'),\n\t\t\tcanInstallApp: OC.isUserAdmin(),\n\t\t\tcontactsAppMgmtURL: OC.generateUrl('/settings/apps/social/contacts')\n\t\t}))\n\t\tthis.$('#contactsmenu-contacts').html(list.$el)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {self}\n\t */\n\trender: function(data) {\n\t\tvar searchVal = this.$('#contactsmenu-search').val()\n\t\tthis.$el.html(this.contentTemplate(data))\n\n\t\t// Focus search\n\t\tthis.$('#contactsmenu-search').val(searchVal)\n\t\tthis.$('#contactsmenu-search').focus()\n\t\treturn this\n\t}\n\n})\n\n/**\n * @param {Object} options\n * @param {jQuery} options.el\n * @param {jQuery} options.trigger\n * @class ContactsMenu\n * @memberOf OC\n */\nconst ContactsMenu = function(options) {\n\tthis.initialize(options)\n}\n\nContactsMenu.prototype = {\n\t/** @type {jQuery} */\n\t$el: undefined,\n\n\t/** @type {jQuery} */\n\t_$trigger: undefined,\n\n\t/** @type {ContactsMenuView} */\n\t_view: undefined,\n\n\t/** @type {Promise} */\n\t_contactsPromise: undefined,\n\n\t/**\n\t * @param {Object} options\n\t * @param {jQuery} options.el - the element to render the menu in\n\t * @param {jQuery} options.trigger - the element to click on to open the menu\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis.$el = options.el\n\t\tthis._$trigger = options.trigger\n\n\t\tthis._view = new ContactsMenuView({\n\t\t\tel: this.$el\n\t\t})\n\t\tthis._view.on('search', function(searchTerm) {\n\t\t\tthis._loadContacts(searchTerm)\n\t\t}, this)\n\n\t\tOC.registerMenu(this._$trigger, this.$el, function() {\n\t\t\tthis._toggleVisibility(true)\n\t\t}.bind(this), true)\n\t\tthis.$el.on('beforeHide', function() {\n\t\t\tthis._toggleVisibility(false)\n\t\t}.bind(this))\n\t},\n\n\t/**\n\t * @private\n\t * @param {boolean} show\n\t * @returns {Promise}\n\t */\n\t_toggleVisibility: function(show) {\n\t\tif (show) {\n\t\t\treturn this._loadContacts()\n\t\t} else {\n\t\t\tthis.$el.html('')\n\t\t\treturn Promise.resolve()\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t * @param {string|undefined} searchTerm\n\t * @returns {Promise}\n\t */\n\t_getContacts: function(searchTerm) {\n\t\tvar url = OC.generateUrl('/contactsmenu/contacts')\n\t\treturn Promise.resolve($.ajax(url, {\n\t\t\tmethod: 'POST',\n\t\t\tdata: {\n\t\t\t\tfilter: searchTerm\n\t\t\t}\n\t\t}))\n\t},\n\n\t/**\n\t * @param {string|undefined} searchTerm\n\t * @returns {undefined}\n\t */\n\t_loadContacts: function(searchTerm) {\n\t\tvar self = this\n\n\t\tif (!self._contactsPromise) {\n\t\t\tself._contactsPromise = self._getContacts(searchTerm)\n\t\t}\n\n\t\tif (_.isUndefined(searchTerm) || searchTerm === '') {\n\t\t\tself._view.showLoading(t('core', 'Loading your contacts …'))\n\t\t} else {\n\t\t\tself._view.showLoading(t('core', 'Looking for {term} …', {\n\t\t\t\tterm: searchTerm\n\t\t\t}))\n\t\t}\n\t\treturn self._contactsPromise.then(function(data) {\n\t\t\t// Convert contact entries to Backbone collection\n\t\t\tdata.contacts = new ContactCollection(data.contacts)\n\n\t\t\tself._view.showContacts(data, searchTerm)\n\t\t}, function(e) {\n\t\t\tself._view.showError()\n\t\t\tconsole.error('There was an error loading your contacts', e)\n\t\t}).then(function() {\n\t\t\t// Delete promise, so that contacts are fetched again when the\n\t\t\t// menu is opened the next time.\n\t\t\tdelete self._contactsPromise\n\t\t}).catch(console.error.bind(this))\n\t}\n}\n\nexport default ContactsMenu\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\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 */\n\nconst rawUid = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user')\nconst displayName = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user-displayname')\n\nexport const currentUser = rawUid !== undefined ? rawUid : false\n\nexport const getCurrentUser = () => {\n\treturn {\n\t\tuid: currentUser,\n\t\tdisplayName,\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 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 */\n\nimport Search from './search'\n\n/**\n * Namespace for apps\n *\n * @namespace OCA\n */\nexport default {\n\t/**\n\t * @deprecated 20.0.0, will be removed in Nextcloud 22\n\t */\n\tSearch,\n}\n","/**\n * @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 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 */\n\nexport default class Search {\n\n\t/**\n\t * @deprecated 20.0.0, will be removed in Nextcloud 22\n\t */\n\tconstructor() {\n\t\tconsole.warn('OCA.Search is deprecated. Please use the unified search API instead')\n\t}\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n * @copyright Copyright (c) 2019 Gary Kim <gary@garykim.dev>\n *\n * @author Bartek Przybylski <bart.p.pl@gmail.com>\n * @author Christopher Schäpers <kondou@ts.unde.re>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Daniel Kesselberg <mail@danielkesselberg.de>\n * @author Florian Schunk <florian.schunk@rwth-aachen.de>\n * @author Gary Kim <gary@garykim.dev>\n * @author Hendrik Leppelsack <hendrik@leppelsack.de>\n * @author Jan-Christoph Borchardt <hey@jancborchardt.net>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Jörn Friedrich Dreyer <jfd@butonic.de>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Loïc Hermann <loic.hermann@sciam.fr>\n * @author Morris Jobke <hey@morrisjobke.de>\n * @author Olivier Paroz <github@oparoz.com>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Sujith Haridasan <Sujith_Haridasan@mentor.com>\n * @author Thomas Citharel <nextcloud@tcit.fr>\n * @author Thomas Müller <thomas.mueller@tmit.eu>\n * @author Thomas Tanghus <thomas@tanghus.net>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport $ from 'jquery'\n\nimport OC from './index'\nimport OCA from '../OCA/index'\n\n/**\n * this class to ease the usage of jquery dialogs\n */\nconst Dialogs = {\n\t// dialog button types\n\tYES_NO_BUTTONS: 70,\n\tOK_BUTTONS: 71,\n\n\tFILEPICKER_TYPE_CHOOSE: 1,\n\tFILEPICKER_TYPE_MOVE: 2,\n\tFILEPICKER_TYPE_COPY: 3,\n\tFILEPICKER_TYPE_COPY_MOVE: 4,\n\tFILEPICKER_TYPE_CUSTOM: 5,\n\n\t// used to name each dialog\n\tdialogsCounter: 0,\n\n\t/**\n\t * displays alert dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t */\n\talert: function(text, title, callback, modal) {\n\t\tthis.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'alert',\n\t\t\tDialogs.OK_BUTTON,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\t/**\n\t * displays info dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t */\n\tinfo: function(text, title, callback, modal) {\n\t\tthis.message(text, title, 'info', Dialogs.OK_BUTTON, callback, modal)\n\t},\n\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirm: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {{type: Int, confirm: String, cancel: String, confirmClasses: String}} buttons text content of buttons\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirmDestructive: function(text, title, buttons, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'none',\n\t\t\tbuttons,\n\t\t\tcallback,\n\t\t\tmodal === undefined ? true : modal\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirmHtml: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal,\n\t\t\ttrue\n\t\t)\n\t},\n\t/**\n\t * displays prompt dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} name name of the input field\n\t * @param {boolean} password whether the input should be a password input\n\t * @returns {Promise}\n\t */\n\tprompt: function(text, title, callback, modal, name, password) {\n\t\treturn $.when(this._getMessageTemplate()).then(function($tmpl) {\n\t\t\tvar dialogName = 'oc-dialog-' + Dialogs.dialogsCounter + '-content'\n\t\t\tvar dialogId = '#' + dialogName\n\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\tmessage: text,\n\t\t\t\ttype: 'notice'\n\t\t\t})\n\t\t\tvar input = $('<input/>')\n\t\t\tinput.attr('type', password ? 'password' : 'text').attr('id', dialogName + '-input').attr('placeholder', name)\n\t\t\tvar label = $('<label/>').attr('for', dialogName + '-input').text(name + ': ')\n\t\t\t$dlg.append(label)\n\t\t\t$dlg.append(input)\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\t$('body').append($dlg)\n\n\t\t\t// wrap callback in _.once():\n\t\t\t// only call callback once and not twice (button handler and close\n\t\t\t// event) but call it for the close event, if ESC or the x is hit\n\t\t\tif (callback !== undefined) {\n\t\t\t\tcallback = _.once(callback)\n\t\t\t}\n\n\t\t\tvar buttonlist = [{\n\t\t\t\ttext: t('core', 'No'),\n\t\t\t\tclick: function() {\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(false, input.val())\n\t\t\t\t\t}\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\ttext: t('core', 'Yes'),\n\t\t\t\tclick: function() {\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(true, input.val())\n\t\t\t\t\t}\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t},\n\t\t\t\tdefaultButton: true\n\t\t\t}]\n\n\t\t\t$(dialogId).ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist,\n\t\t\t\tclose: function() {\n\t\t\t\t\t// callback is already fired if Yes/No is clicked directly\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(false, input.val())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\tinput.focus()\n\t\t\tDialogs.dialogsCounter++\n\t\t})\n\t},\n\t/**\n\t * show a file picker to pick a file from\n\t *\n\t * In order to pick several types of mime types they need to be passed as an\n\t * array of strings.\n\t *\n\t * When no mime type filter is given only files can be selected. In order to\n\t * be able to select both files and folders \"['*', 'httpd/unix-directory']\"\n\t * should be used instead.\n\t *\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses Choose\n\t * @param {boolean} [multiselect] whether it should be possible to select multiple files\n\t * @param {string[]} [mimetypeFilter] mimetype to filter by - directories will always be included\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} [type] Type of file picker : Choose, copy, move, copy and move\n\t * @param {string} [path] path to the folder that the the file can be picket from\n\t * @param {Object} [options] additonal options that need to be set\n\t * @param {Function} [options.filter] filter function for advanced filtering\n\t */\n\tfilepicker: function(title, callback, multiselect, mimetypeFilter, modal, type, path, options) {\n\t\tvar self = this\n\n\t\tthis.filepicker.sortField = 'name'\n\t\tthis.filepicker.sortOrder = 'asc'\n\t\t// avoid opening the picker twice\n\t\tif (this.filepicker.loading) {\n\t\t\treturn\n\t\t}\n\n\t\tif (type === undefined) {\n\t\t\ttype = this.FILEPICKER_TYPE_CHOOSE\n\t\t}\n\n\t\tvar emptyText = t('core', 'No files in here')\n\t\tvar newText = t('files', 'New folder')\n\t\tif (type === this.FILEPICKER_TYPE_COPY || type === this.FILEPICKER_TYPE_MOVE || type === this.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\temptyText = t('core', 'No more subfolders in here')\n\t\t}\n\n\t\tthis.filepicker.loading = true\n\t\tthis.filepicker.filesClient = (OCA.Sharing && OCA.Sharing.PublicApp && OCA.Sharing.PublicApp.fileList) ? OCA.Sharing.PublicApp.fileList.filesClient : OC.Files.getClient()\n\n\t\tthis.filelist = null\n\t\tpath = path || ''\n\t\toptions = Object.assign({\n\t\t\tallowDirectoryChooser: false\n\t\t}, options)\n\n\t\t$.when(this._getFilePickerTemplate()).then(function($tmpl) {\n\t\t\tself.filepicker.loading = false\n\t\t\tvar dialogName = 'oc-dialog-filepicker-content'\n\t\t\tif (self.$filePicker) {\n\t\t\t\tself.$filePicker.ocdialog('close')\n\t\t\t}\n\n\t\t\tif (mimetypeFilter === undefined || mimetypeFilter === null) {\n\t\t\t\tmimetypeFilter = []\n\t\t\t}\n\t\t\tif (typeof (mimetypeFilter) === 'string') {\n\t\t\t\tmimetypeFilter = [mimetypeFilter]\n\t\t\t}\n\n\t\t\tself.$filePicker = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\temptytext: emptyText,\n\t\t\t\tnewtext: newText,\n\t\t\t\tnameCol: t('core', 'Name'),\n\t\t\t\tsizeCol: t('core', 'Size'),\n\t\t\t\tmodifiedCol: t('core', 'Modified')\n\t\t\t}).data('path', path).data('multiselect', multiselect).data('mimetype', mimetypeFilter).data('allowDirectoryChooser', options.allowDirectoryChooser)\n\t\t\tif (typeof(options.filter) === 'function') {\n\t\t\t\tself.$filePicker.data('filter', options.filter)\n\t\t\t}\n\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\tif (multiselect === undefined) {\n\t\t\t\tmultiselect = false\n\t\t\t}\n\n\t\t\tself.$filePicker.find('#picker-view-toggle').remove()\n\t\t\tself.$filePicker.find('#picker-filestable').removeClass('view-grid')\n\n\t\t\t$('body').append(self.$filePicker)\n\n\t\t\tself.$showGridView = $('input#picker-showgridview')\n\t\t\tself.$showGridView.on('change', _.bind(self._onGridviewChange, self))\n\n\t\t\tself._getGridSettings()\n\n\t\t\tvar newButton = self.$filePicker.find('.actions.creatable .button-add')\n\t\t\tif (type === self.FILEPICKER_TYPE_CHOOSE && !options.allowDirectoryChooser) {\n\t\t\t\tnewButton.hide()\n\t\t\t}\n\t\t\tnewButton.on('focus', function() {\n\t\t\t\tself.$filePicker.ocdialog('setEnterCallback', function() {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tnewButton.click()\n\t\t\t\t})\n\t\t\t})\n\t\t\tnewButton.on('blur', function() {\n\t\t\t\tself.$filePicker.ocdialog('unsetEnterCallback')\n\t\t\t})\n\n\t\t\tOC.registerMenu(newButton, self.$filePicker.find('.menu'), function() {\n\t\t\t\t$input.tooltip('hide')\n\t\t\t\t$input.focus()\n\t\t\t\tself.$filePicker.ocdialog('setEnterCallback', function() {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tself.$filePicker.submit()\n\t\t\t\t})\n\t\t\t\tvar newName = $input.val()\n\t\t\t\tvar lastPos = newName.lastIndexOf('.')\n\t\t\t\tif (lastPos === -1) {\n\t\t\t\t\tlastPos = newName.length\n\t\t\t\t}\n\t\t\t\t$input.selectRange(0, lastPos)\n\t\t\t})\n\t\t\tvar $form = self.$filePicker.find('.filenameform')\n\t\t\tvar $input = $form.find('input[type=\\'text\\']')\n\t\t\tvar $submit = $form.find('input[type=\\'submit\\']')\n\t\t\t$submit.on('click', function(event) {\n\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\tevent.preventDefault()\n\t\t\t\t$form.submit()\n\t\t\t})\n\n\t\t\t/**\n\t\t\t * Checks whether the given file name is valid.\n\t\t\t *\n\t\t\t * @param name file name to check\n\t\t\t * @return true if the file name is valid.\n\t\t\t * @throws a string exception with an error message if\n\t\t\t * the file name is not valid\n\t\t\t *\n\t\t\t * NOTE: This function is duplicated in the files app:\n\t\t\t * https://github.com/nextcloud/server/blob/b9bc2417e7a8dc81feb0abe20359bedaf864f790/apps/files/js/files.js#L127-L148\n\t\t\t */\n\t\t\tvar isFileNameValid = function (name) {\n\t\t\t\tvar trimmedName = name.trim();\n\t\t\t\tif (trimmedName === '.' || trimmedName === '..')\n\t\t\t\t{\n\t\t\t\t\tthrow t('files', '\"{name}\" is an invalid file name.', {name: name})\n\t\t\t\t} else if (trimmedName.length === 0) {\n\t\t\t\t\tthrow t('files', 'File name cannot be empty.')\n\t\t\t\t} else if (trimmedName.indexOf('/') !== -1) {\n\t\t\t\t\tthrow t('files', '\"/\" is not allowed inside a file name.')\n\t\t\t\t} else if (!!(trimmedName.match(OC.config.blacklist_files_regex))) {\n\t\t\t\t\tthrow t('files', '\"{name}\" is not an allowed filetype', {name: name})\n\t\t\t\t}\n\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\tvar checkInput = function() {\n\t\t\t\tvar filename = $input.val()\n\t\t\t\ttry {\n\t\t\t\t\tif (!isFileNameValid(filename)) {\n\t\t\t\t\t\t// isFileNameValid(filename) throws an exception itself\n\t\t\t\t\t} else if (self.filelist.find(function(file) {\n\t\t\t\t\t\treturn file.name === this\n\t\t\t\t\t}, filename)) {\n\t\t\t\t\t\tthrow t('files', '{newName} already exists', { newName: filename }, undefined, {\n\t\t\t\t\t\t\tescape: false\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn true\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\t$input.attr('title', error)\n\t\t\t\t\t$input.tooltip({\n\t\t\t\t\t\tplacement: 'right',\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t'container': '.newFolderMenu'\n\t\t\t\t\t})\n\t\t\t\t\t$input.tooltip('_fixTitle')\n\t\t\t\t\t$input.tooltip('show')\n\t\t\t\t\t$input.addClass('error')\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t$form.on('submit', function(event) {\n\t\t\t\tevent.stopPropagation()\n\t\t\t\tevent.preventDefault()\n\n\t\t\t\tif (checkInput()) {\n\t\t\t\t\tvar newname = $input.val()\n\t\t\t\t\tself.filepicker.filesClient.createDirectory(self.$filePicker.data('path') + \"/\" + newname).always(function (status) {\n\t\t\t\t\t\tself._fillFilePicker(self.$filePicker.data('path') + \"/\" + newname)\n\t\t\t\t\t})\n\t\t\t\t\tOC.hideMenus()\n\t\t\t\t\tself.$filePicker.ocdialog('unsetEnterCallback')\n\t\t\t\t\tself.$filePicker.click()\n\t\t\t\t\t$input.val(newText)\n\t\t\t\t}\n\t\t\t})\n\t\t\t$input.keypress(function(event) {\n\t\t\t\tif (event.keyCode === 13 || event.which === 13) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t$form.submit()\n\t\t\t\t}\n\t\t\t})\n\t\t\t$input.on('input', function(event) {\n\t\t\t\t$input.tooltip('hide')\n\t\t\t})\n\n\t\t\tself.$filePicker.ready(function() {\n\t\t\t\tself.$fileListHeader = self.$filePicker.find('.filelist thead tr')\n\t\t\t\tself.$filelist = self.$filePicker.find('.filelist tbody')\n\t\t\t\tself.$filelistContainer = self.$filePicker.find('.filelist-container')\n\t\t\t\tself.$dirTree = self.$filePicker.find('.dirtree')\n\t\t\t\tself.$dirTree.on('click', 'div:not(:last-child)', self, function(event) {\n\t\t\t\t\tself._handleTreeListSelect(event, type)\n\t\t\t\t})\n\t\t\t\tself.$filelist.on('click', 'tr', function(event) {\n\t\t\t\t\tself._handlePickerClick(event, $(this), type)\n\t\t\t\t})\n\t\t\t\tself.$fileListHeader.on('click', 'a', function(event) {\n\t\t\t\t\tvar dir = self.$filePicker.data('path')\n\t\t\t\t\tself.filepicker.sortField = $(event.currentTarget).data('sort')\n\t\t\t\t\tself.filepicker.sortOrder = self.filepicker.sortOrder === 'asc' ? 'desc' : 'asc'\n\t\t\t\t\tself._fillFilePicker(dir)\n\t\t\t\t})\n\t\t\t\tself._fillFilePicker(path)\n\t\t\t})\n\n\t\t\t// build buttons\n\t\t\tvar functionToCall = function(returnType) {\n\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\tvar datapath\n\t\t\t\t\tif (multiselect === true) {\n\t\t\t\t\t\tdatapath = []\n\t\t\t\t\t\tself.$filelist.find('tr.filepicker_element_selected').each(function(index, element) {\n\t\t\t\t\t\t\tdatapath.push(self.$filePicker.data('path') + '/' + $(element).data('entryname'))\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdatapath = self.$filePicker.data('path')\n\t\t\t\t\t\tvar selectedName = self.$filelist.find('tr.filepicker_element_selected').data('entryname')\n\t\t\t\t\t\tif (selectedName) {\n\t\t\t\t\t\t\tdatapath += '/' + selectedName\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcallback(datapath, returnType)\n\t\t\t\t\tself.$filePicker.ocdialog('close')\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar chooseCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_CHOOSE)\n\t\t\t}\n\n\t\t\tvar copyCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_COPY)\n\t\t\t}\n\n\t\t\tvar moveCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_MOVE)\n\t\t\t}\n\n\t\t\tvar buttonlist = []\n\t\t\tif (type === Dialogs.FILEPICKER_TYPE_CHOOSE) {\n\t\t\t\tbuttonlist.push({\n\t\t\t\t\ttext: t('core', 'Choose'),\n\t\t\t\t\tclick: chooseCallback,\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t})\n\t\t\t} else if (type === Dialogs.FILEPICKER_TYPE_CUSTOM) {\n\t\t\t\toptions.buttons.forEach(function(button) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: button.text,\n\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\tfunctionToCall(button.type)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefaultButton: button.defaultButton\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tif (type === Dialogs.FILEPICKER_TYPE_COPY || type === Dialogs.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: t('core', 'Copy'),\n\t\t\t\t\t\tclick: copyCallback,\n\t\t\t\t\t\tdefaultButton: false\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (type === Dialogs.FILEPICKER_TYPE_MOVE || type === Dialogs.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: t('core', 'Move'),\n\t\t\t\t\t\tclick: moveCallback,\n\t\t\t\t\t\tdefaultButton: true\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tself.$filePicker.ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\t// max-width of 600\n\t\t\t\twidth: 600,\n\t\t\t\theight: 500,\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist,\n\t\t\t\tstyle: {\n\t\t\t\t\tbuttons: 'aside'\n\t\t\t\t},\n\t\t\t\tclose: function() {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t}\n\t\t\t\t\tself.$filePicker = null\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t// We can access primary class only from oc-dialog.\n\t\t\t// Hence this is one of the approach to get the choose button.\n\t\t\tvar getOcDialog = self.$filePicker.closest('.oc-dialog')\n\t\t\tvar buttonEnableDisable = getOcDialog.find('.primary')\n\t\t\tif (self.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || self.$filePicker.data('allowDirectoryChooser')) {\n\t\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t\t} else {\n\t\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t\t}\n\t\t})\n\t\t\t.fail(function(status, error) {\n\t\t\t\t// If the method is called while navigating away\n\t\t\t\t// from the page, it is probably not needed ;)\n\t\t\t\tself.filepicker.loading = false\n\t\t\t\tif (status !== 0) {\n\t\t\t\t\talert(t('core', 'Error loading file picker template: {error}', { error: error }))\n\t\t\t\t}\n\t\t\t})\n\t},\n\t/**\n\t * Displays raw dialog\n\t * You better use a wrapper instead ...\n\t */\n\tmessage: function(content, title, dialogType, buttons, callback, modal, allowHtml) {\n\t\treturn $.when(this._getMessageTemplate()).then(function($tmpl) {\n\t\t\tvar dialogName = 'oc-dialog-' + Dialogs.dialogsCounter + '-content'\n\t\t\tvar dialogId = '#' + dialogName\n\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\tmessage: content,\n\t\t\t\ttype: dialogType\n\t\t\t}, allowHtml ? { escapeFunction: '' } : {})\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\t$('body').append($dlg)\n\t\t\tvar buttonlist = []\n\t\t\tswitch (buttons) {\n\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\tbuttonlist = [{\n\t\t\t\t\ttext: t('core', 'No'),\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: t('core', 'Yes'),\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t},\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t}]\n\t\t\t\tbreak\n\t\t\tcase Dialogs.OK_BUTTON:\n\t\t\t\tvar functionToCall = function() {\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\tcallback()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbuttonlist[0] = {\n\t\t\t\t\ttext: t('core', 'OK'),\n\t\t\t\t\tclick: functionToCall,\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tif (typeof(buttons) === 'object') {\n\t\t\t\t\tswitch (buttons.type) {\n\t\t\t\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\t\t\t\tbuttonlist = [{\n\t\t\t\t\t\t\t\ttext: buttons.cancel || t('core', 'No'),\n\t\t\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttext: buttons.confirm || t('core', 'Yes'),\n\t\t\t\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tdefaultButton: true,\n\t\t\t\t\t\t\t\t\tclasses: buttons.confirmClasses\n\t\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t$(dialogId).ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\tcloseCallback: () => { callback && callback(false) },\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist\n\t\t\t})\n\t\t\tDialogs.dialogsCounter++\n\t\t})\n\t\t\t.fail(function(status, error) {\n\t\t\t\t// If the method is called while navigating away from\n\t\t\t\t// the page, we still want to deliver the message.\n\t\t\t\tif (status === 0) {\n\t\t\t\t\talert(title + ': ' + content)\n\t\t\t\t} else {\n\t\t\t\t\talert(t('core', 'Error loading message template: {error}', { error: error }))\n\t\t\t\t}\n\t\t\t})\n\t},\n\t_fileexistsshown: false,\n\t/**\n\t * Displays file exists dialog\n\t * @param {object} data upload object\n\t * @param {object} original file with name, size and mtime\n\t * @param {object} replacement file with name, size and mtime\n\t * @param {object} controller with onCancel, onSkip, onReplace and onRename methods\n\t * @returns {Promise} jquery promise that resolves after the dialog template was loaded\n\t */\n\tfileexists: function(data, original, replacement, controller) {\n\t\tvar self = this\n\t\tvar dialogDeferred = new $.Deferred()\n\n\t\tvar getCroppedPreview = function(file) {\n\t\t\tvar deferred = new $.Deferred()\n\t\t\t// Only process image files.\n\t\t\tvar type = file.type && file.type.split('/').shift()\n\t\t\tif (window.FileReader && type === 'image') {\n\t\t\t\tvar reader = new FileReader()\n\t\t\t\treader.onload = function(e) {\n\t\t\t\t\tvar blob = new Blob([e.target.result])\n\t\t\t\t\twindow.URL = window.URL || window.webkitURL\n\t\t\t\t\tvar originalUrl = window.URL.createObjectURL(blob)\n\t\t\t\t\tvar image = new Image()\n\t\t\t\t\timage.src = originalUrl\n\t\t\t\t\timage.onload = function() {\n\t\t\t\t\t\tvar url = crop(image)\n\t\t\t\t\t\tdeferred.resolve(url)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treader.readAsArrayBuffer(file)\n\t\t\t} else {\n\t\t\t\tdeferred.reject()\n\t\t\t}\n\t\t\treturn deferred\n\t\t}\n\n\t\tvar crop = function(img) {\n\t\t\tvar canvas = document.createElement('canvas')\n\t\t\tvar targetSize = 96\n\t\t\tvar width = img.width\n\t\t\tvar height = img.height\n\t\t\tvar x; var y; var size\n\n\t\t\t// Calculate the width and height, constraining the proportions\n\t\t\tif (width > height) {\n\t\t\t\ty = 0\n\t\t\t\tx = (width - height) / 2\n\t\t\t} else {\n\t\t\t\ty = (height - width) / 2\n\t\t\t\tx = 0\n\t\t\t}\n\t\t\tsize = Math.min(width, height)\n\n\t\t\t// Set canvas size to the cropped area\n\t\t\tcanvas.width = size\n\t\t\tcanvas.height = size\n\t\t\tvar ctx = canvas.getContext('2d')\n\t\t\tctx.drawImage(img, x, y, size, size, 0, 0, size, size)\n\n\t\t\t// Resize the canvas to match the destination (right size uses 96px)\n\t\t\tresampleHermite(canvas, size, size, targetSize, targetSize)\n\n\t\t\treturn canvas.toDataURL('image/png', 0.7)\n\t\t}\n\n\t\t/**\n\t\t * Fast image resize/resample using Hermite filter with JavaScript.\n\t\t *\n\t\t * @author: ViliusL\n\t\t *\n\t\t * @param {*} canvas\n\t\t * @param {number} W\n\t\t * @param {number} H\n\t\t * @param {number} W2\n\t\t * @param {number} H2\n\t\t */\n\t\tvar resampleHermite = function(canvas, W, H, W2, H2) {\n\t\t\tW2 = Math.round(W2)\n\t\t\tH2 = Math.round(H2)\n\t\t\tvar img = canvas.getContext('2d').getImageData(0, 0, W, H)\n\t\t\tvar img2 = canvas.getContext('2d').getImageData(0, 0, W2, H2)\n\t\t\tvar data = img.data\n\t\t\tvar data2 = img2.data\n\t\t\tvar ratio_w = W / W2\n\t\t\tvar ratio_h = H / H2\n\t\t\tvar ratio_w_half = Math.ceil(ratio_w / 2)\n\t\t\tvar ratio_h_half = Math.ceil(ratio_h / 2)\n\n\t\t\tfor (var j = 0; j < H2; j++) {\n\t\t\t\tfor (var i = 0; i < W2; i++) {\n\t\t\t\t\tvar x2 = (i + j * W2) * 4\n\t\t\t\t\tvar weight = 0\n\t\t\t\t\tvar weights = 0\n\t\t\t\t\tvar weights_alpha = 0\n\t\t\t\t\tvar gx_r = 0\n\t\t\t\t\tvar gx_g = 0\n\t\t\t\t\tvar gx_b = 0\n\t\t\t\t\tvar gx_a = 0\n\t\t\t\t\tvar center_y = (j + 0.5) * ratio_h\n\t\t\t\t\tfor (var yy = Math.floor(j * ratio_h); yy < (j + 1) * ratio_h; yy++) {\n\t\t\t\t\t\tvar dy = Math.abs(center_y - (yy + 0.5)) / ratio_h_half\n\t\t\t\t\t\tvar center_x = (i + 0.5) * ratio_w\n\t\t\t\t\t\tvar w0 = dy * dy // pre-calc part of w\n\t\t\t\t\t\tfor (var xx = Math.floor(i * ratio_w); xx < (i + 1) * ratio_w; xx++) {\n\t\t\t\t\t\t\tvar dx = Math.abs(center_x - (xx + 0.5)) / ratio_w_half\n\t\t\t\t\t\t\tvar w = Math.sqrt(w0 + dx * dx)\n\t\t\t\t\t\t\tif (w >= -1 && w <= 1) {\n\t\t\t\t\t\t\t\t// hermite filter\n\t\t\t\t\t\t\t\tweight = 2 * w * w * w - 3 * w * w + 1\n\t\t\t\t\t\t\t\tif (weight > 0) {\n\t\t\t\t\t\t\t\t\tdx = 4 * (xx + yy * W)\n\t\t\t\t\t\t\t\t\t// alpha\n\t\t\t\t\t\t\t\t\tgx_a += weight * data[dx + 3]\n\t\t\t\t\t\t\t\t\tweights_alpha += weight\n\t\t\t\t\t\t\t\t\t// colors\n\t\t\t\t\t\t\t\t\tif (data[dx + 3] < 255) { weight = weight * data[dx + 3] / 250 }\n\t\t\t\t\t\t\t\t\tgx_r += weight * data[dx]\n\t\t\t\t\t\t\t\t\tgx_g += weight * data[dx + 1]\n\t\t\t\t\t\t\t\t\tgx_b += weight * data[dx + 2]\n\t\t\t\t\t\t\t\t\tweights += weight\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdata2[x2] = gx_r / weights\n\t\t\t\t\tdata2[x2 + 1] = gx_g / weights\n\t\t\t\t\tdata2[x2 + 2] = gx_b / weights\n\t\t\t\t\tdata2[x2 + 3] = gx_a / weights_alpha\n\t\t\t\t}\n\t\t\t}\n\t\t\tcanvas.getContext('2d').clearRect(0, 0, Math.max(W, W2), Math.max(H, H2))\n\t\t\tcanvas.width = W2\n\t\t\tcanvas.height = H2\n\t\t\tcanvas.getContext('2d').putImageData(img2, 0, 0)\n\t\t}\n\n\t\tvar addConflict = function($conflicts, original, replacement) {\n\n\t\t\tvar $conflict = $conflicts.find('.template').clone().removeClass('template').addClass('conflict')\n\t\t\tvar $originalDiv = $conflict.find('.original')\n\t\t\tvar $replacementDiv = $conflict.find('.replacement')\n\n\t\t\t$conflict.data('data', data)\n\n\t\t\t$conflict.find('.filename').text(original.name)\n\t\t\t$originalDiv.find('.size').text(OC.Util.humanFileSize(original.size))\n\t\t\t$originalDiv.find('.mtime').text(OC.Util.formatDate(original.mtime))\n\t\t\t// ie sucks\n\t\t\tif (replacement.size && replacement.lastModified) {\n\t\t\t\t$replacementDiv.find('.size').text(OC.Util.humanFileSize(replacement.size))\n\t\t\t\t$replacementDiv.find('.mtime').text(OC.Util.formatDate(replacement.lastModified))\n\t\t\t}\n\t\t\tvar path = original.directory + '/' + original.name\n\t\t\tvar urlSpec = {\n\t\t\t\tfile: path,\n\t\t\t\tx: 96,\n\t\t\t\ty: 96,\n\t\t\t\tc: original.etag,\n\t\t\t\tforceIcon: 0\n\t\t\t}\n\t\t\tvar previewpath = Files.generatePreviewUrl(urlSpec)\n\t\t\t// Escaping single quotes\n\t\t\tpreviewpath = previewpath.replace(/'/g, '%27')\n\t\t\t$originalDiv.find('.icon').css({ 'background-image': \"url('\" + previewpath + \"')\" })\n\t\t\tgetCroppedPreview(replacement).then(\n\t\t\t\tfunction(path) {\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}, function() {\n\t\t\t\t\tpath = OC.MimeType.getIconUrl(replacement.type)\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}\n\t\t\t)\n\t\t\t// connect checkboxes with labels\n\t\t\tvar checkboxId = $conflicts.find('.conflict').length\n\t\t\t$originalDiv.find('input:checkbox').attr('id', 'checkbox_original_' + checkboxId)\n\t\t\t$replacementDiv.find('input:checkbox').attr('id', 'checkbox_replacement_' + checkboxId)\n\n\t\t\t$conflicts.append($conflict)\n\n\t\t\t// set more recent mtime bold\n\t\t\t// ie sucks\n\t\t\tif (replacement.lastModified > original.mtime) {\n\t\t\t\t$replacementDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else if (replacement.lastModified < original.mtime) {\n\t\t\t\t$originalDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same mtime collection?\n\t\t\t}\n\n\t\t\t// set bigger size bold\n\t\t\tif (replacement.size && replacement.size > original.size) {\n\t\t\t\t$replacementDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else if (replacement.size && replacement.size < original.size) {\n\t\t\t\t$originalDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same size collection?\n\t\t\t}\n\n\t\t\t// TODO show skip action for files with same size and mtime in bottom row\n\n\t\t\t// always keep readonly files\n\n\t\t\tif (original.status === 'readonly') {\n\t\t\t\t$originalDiv\n\t\t\t\t\t.addClass('readonly')\n\t\t\t\t\t.find('input[type=\"checkbox\"]')\n\t\t\t\t\t.prop('checked', true)\n\t\t\t\t\t.prop('disabled', true)\n\t\t\t\t$originalDiv.find('.message')\n\t\t\t\t\t.text(t('core', 'read-only'))\n\t\t\t}\n\t\t}\n\t\t// var selection = controller.getSelection(data.originalFiles);\n\t\t// if (selection.defaultAction) {\n\t\t//\tcontroller[selection.defaultAction](data);\n\t\t// } else {\n\t\tvar dialogName = 'oc-dialog-fileexists-content'\n\t\tvar dialogId = '#' + dialogName\n\t\tif (this._fileexistsshown) {\n\t\t\t// add conflict\n\n\t\t\tvar $conflicts = $(dialogId + ' .conflicts')\n\t\t\taddConflict($conflicts, original, replacement)\n\n\t\t\tvar count = $(dialogId + ' .conflict').length\n\t\t\tvar title = n('core',\n\t\t\t\t'{count} file conflict',\n\t\t\t\t'{count} file conflicts',\n\t\t\t\tcount,\n\t\t\t\t{ count: count }\n\t\t\t)\n\t\t\t$(dialogId).parent().children('.oc-dialog-title').text(title)\n\n\t\t\t// recalculate dimensions\n\t\t\t$(window).trigger('resize')\n\t\t\tdialogDeferred.resolve()\n\t\t} else {\n\t\t\t// create dialog\n\t\t\tthis._fileexistsshown = true\n\t\t\t$.when(this._getFileExistsTemplate()).then(function($tmpl) {\n\t\t\t\tvar title = t('core', 'One file conflict')\n\t\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\t\tdialog_name: dialogName,\n\t\t\t\t\ttitle: title,\n\t\t\t\t\ttype: 'fileexists',\n\n\t\t\t\t\tallnewfiles: t('core', 'New Files'),\n\t\t\t\t\tallexistingfiles: t('core', 'Already existing files'),\n\n\t\t\t\t\twhy: t('core', 'Which files do you want to keep?'),\n\t\t\t\t\twhat: t('core', 'If you select both versions, the copied file will have a number added to its name.')\n\t\t\t\t})\n\t\t\t\t$('body').append($dlg)\n\n\t\t\t\tif (original && replacement) {\n\t\t\t\t\tvar $conflicts = $dlg.find('.conflicts')\n\t\t\t\t\taddConflict($conflicts, original, replacement)\n\t\t\t\t}\n\n\t\t\t\tvar buttonlist = [{\n\t\t\t\t\ttext: t('core', 'Cancel'),\n\t\t\t\t\tclasses: 'cancel',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onCancel !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onCancel(data)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: t('core', 'Continue'),\n\t\t\t\t\tclasses: 'continue',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onContinue !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onContinue($(dialogId + ' .conflict'))\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t}]\n\n\t\t\t\t$(dialogId).ocdialog({\n\t\t\t\t\twidth: 500,\n\t\t\t\t\tcloseOnEscape: true,\n\t\t\t\t\tmodal: true,\n\t\t\t\t\tbuttons: buttonlist,\n\t\t\t\t\tcloseButton: null,\n\t\t\t\t\tclose: function() {\n\t\t\t\t\t\tself._fileexistsshown = false\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t// ignore\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\t$(dialogId).css('height', 'auto')\n\n\t\t\t\tvar $primaryButton = $dlg.closest('.oc-dialog').find('button.continue')\n\t\t\t\t$primaryButton.prop('disabled', true)\n\n\t\t\t\tfunction updatePrimaryButton() {\n\t\t\t\t\tvar checkedCount = $dlg.find('.conflicts .checkbox:checked').length\n\t\t\t\t\t$primaryButton.prop('disabled', checkedCount === 0)\n\t\t\t\t}\n\n\t\t\t\t// add checkbox toggling actions\n\t\t\t\t$(dialogId).find('.allnewfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.allexistingfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .original:not(.readonly) input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement,.original:not(.readonly)', function() {\n\t\t\t\t\tvar $checkbox = $(this).find('input[type=\"checkbox\"]')\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement input[type=\"checkbox\"],.original:not(.readonly) input[type=\"checkbox\"]', function() {\n\t\t\t\t\tvar $checkbox = $(this)\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\n\t\t\t\t// update counters\n\t\t\t\t$(dialogId).on('click', '.replacement,.allnewfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\t\t\t\t$(dialogId).on('click', '.original,.allexistingfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .original input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count')\n\t\t\t\t\t\t\t.text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\n\t\t\t\tdialogDeferred.resolve()\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdialogDeferred.reject()\n\t\t\t\t\talert(t('core', 'Error loading file exists template'))\n\t\t\t\t})\n\t\t}\n\t\t// }\n\t\treturn dialogDeferred.promise()\n\t},\n\t// get the gridview setting and set the input accordingly\n\t_getGridSettings: function() {\n\t\tvar self = this\n\t\t$.get(OC.generateUrl('/apps/files/api/v1/showgridview'), function(response) {\n\t\t\tself.$showGridView.get(0).checked = response.gridview\n\t\t\tself.$showGridView.next('#picker-view-toggle')\n\t\t\t\t.removeClass('icon-toggle-filelist icon-toggle-pictures')\n\t\t\t\t.addClass(response.gridview ? 'icon-toggle-filelist' : 'icon-toggle-pictures')\n\t\t\t$('.list-container').toggleClass('view-grid', response.gridview)\n\t\t})\n\t},\n\t_onGridviewChange: function() {\n\t\tvar show = this.$showGridView.is(':checked')\n\t\t// only save state if user is logged in\n\t\tif (OC.currentUser) {\n\t\t\t$.post(OC.generateUrl('/apps/files/api/v1/showgridview'), {\n\t\t\t\tshow: show\n\t\t\t})\n\t\t}\n\t\tthis.$showGridView.next('#picker-view-toggle')\n\t\t\t.removeClass('icon-toggle-filelist icon-toggle-pictures')\n\t\t\t.addClass(show ? 'icon-toggle-filelist' : 'icon-toggle-pictures')\n\t\t$('.list-container').toggleClass('view-grid', show)\n\t},\n\t_getFilePickerTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$filePickerTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('core', 'templates', 'filepicker.html'), function(tmpl) {\n\t\t\t\tself.$filePickerTemplate = $(tmpl)\n\t\t\t\tself.$listTmpl = self.$filePickerTemplate.find('.filelist tbody tr:first-child').detach()\n\t\t\t\tdefer.resolve(self.$filePickerTemplate)\n\t\t\t})\n\t\t\t\t.fail(function(jqXHR, textStatus, errorThrown) {\n\t\t\t\t\tdefer.reject(jqXHR.status, errorThrown)\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$filePickerTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getMessageTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$messageTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('core', 'templates', 'message.html'), function(tmpl) {\n\t\t\t\tself.$messageTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$messageTemplate)\n\t\t\t})\n\t\t\t\t.fail(function(jqXHR, textStatus, errorThrown) {\n\t\t\t\t\tdefer.reject(jqXHR.status, errorThrown)\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$messageTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getFileExistsTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$fileexistsTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('files', 'templates', 'fileexists.html'), function(tmpl) {\n\t\t\t\tself.$fileexistsTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$fileexistsTemplate)\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdefer.reject()\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$fileexistsTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getFileList: function(dir, mimeType) { // this is only used by the spreedme app atm\n\t\tif (typeof (mimeType) === 'string') {\n\t\t\tmimeType = [mimeType]\n\t\t}\n\n\t\treturn $.getJSON(\n\t\t\tOC.filePath('files', 'ajax', 'list.php'),\n\t\t\t{\n\t\t\t\tdir: dir,\n\t\t\t\tmimetypes: JSON.stringify(mimeType)\n\t\t\t}\n\t\t)\n\t},\n\n\t/**\n\t * fills the filepicker with files\n\t */\n\t_fillFilePicker: function(dir) {\n\t\tvar self = this\n\t\tthis.$filelist.empty()\n\t\tthis.$filePicker.find('.emptycontent').hide()\n\t\tthis.$filelistContainer.addClass('icon-loading')\n\t\tthis.$filePicker.data('path', dir)\n\t\tvar filter = this.$filePicker.data('mimetype')\n\t\tvar advancedFilter = this.$filePicker.data('filter')\n\t\tif (typeof (filter) === 'string') {\n\t\t\tfilter = [filter]\n\t\t}\n\t\tself.$fileListHeader.find('.sort-indicator').addClass('hidden').removeClass('icon-triangle-n').removeClass('icon-triangle-s')\n\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').removeClass('hidden')\n\t\tif (self.filepicker.sortOrder === 'asc') {\n\t\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').addClass('icon-triangle-n')\n\t\t} else {\n\t\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').addClass('icon-triangle-s')\n\t\t}\n\t\tself.filepicker.filesClient.getFolderContents(dir).then(function(status, files) {\n\t\t\tself.filelist = files\n\t\t\tif (filter && filter.length > 0 && filter.indexOf('*') === -1) {\n\t\t\t\tfiles = files.filter(function(file) {\n\t\t\t\t\treturn file.type === 'dir' || filter.indexOf(file.mimetype) !== -1\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (advancedFilter) {\n\t\t\t\tfiles = files.filter(advancedFilter)\n\t\t\t}\n\n\t\t\t// Check if the showHidden input field exist and if it exist follow it\n\t\t\t// Otherwise just show the hidden files\n\t\t\tconst showHiddenInput = document.getElementById('showHiddenFiles')\n\t\t\tconst showHidden = showHiddenInput === null || showHiddenInput.value === \"1\"\n\t\t\tif (!showHidden) {\n\t\t\t\tfiles = files.filter(function(file) {\n\t\t\t\t\treturn !file.name.startsWith('.')\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tvar Comparators = {\n\t\t\t\tname: function(fileInfo1, fileInfo2) {\n\t\t\t\t\tif (fileInfo1.type === 'dir' && fileInfo2.type !== 'dir') {\n\t\t\t\t\t\treturn -1\n\t\t\t\t\t}\n\t\t\t\t\tif (fileInfo1.type !== 'dir' && fileInfo2.type === 'dir') {\n\t\t\t\t\t\treturn 1\n\t\t\t\t\t}\n\t\t\t\t\treturn OC.Util.naturalSortCompare(fileInfo1.name, fileInfo2.name)\n\t\t\t\t},\n\t\t\t\tsize: function(fileInfo1, fileInfo2) {\n\t\t\t\t\treturn fileInfo1.size - fileInfo2.size\n\t\t\t\t},\n\t\t\t\tmtime: function(fileInfo1, fileInfo2) {\n\t\t\t\t\treturn fileInfo1.mtime - fileInfo2.mtime\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar comparator = Comparators[self.filepicker.sortField] || Comparators.name\n\t\t\tfiles = files.sort(function(file1, file2) {\n\t\t\t\tvar isFavorite = function(fileInfo) {\n\t\t\t\t\treturn fileInfo.tags && fileInfo.tags.indexOf(OC.TAG_FAVORITE) >= 0\n\t\t\t\t}\n\n\t\t\t\tif (isFavorite(file1) && !isFavorite(file2)) {\n\t\t\t\t\treturn -1\n\t\t\t\t} else if (!isFavorite(file1) && isFavorite(file2)) {\n\t\t\t\t\treturn 1\n\t\t\t\t}\n\n\t\t\t\treturn self.filepicker.sortOrder === 'asc' ? comparator(file1, file2) : -comparator(file1, file2)\n\t\t\t})\n\n\t\t\tself._fillSlug()\n\n\t\t\tif (files.length === 0) {\n\t\t\t\tself.$filePicker.find('.emptycontent').show()\n\t\t\t\tself.$fileListHeader.hide()\n\t\t\t} else {\n\t\t\t\tself.$filePicker.find('.emptycontent').hide()\n\t\t\t\tself.$fileListHeader.show()\n\t\t\t}\n\n\t\t\tself.$filelist.empty();\n\n\t\t\t$.each(files, function(idx, entry) {\n\t\t\t\tentry.icon = OC.MimeType.getIconUrl(entry.mimetype)\n\t\t\t\tvar simpleSize, sizeColor\n\t\t\t\tif (typeof (entry.size) !== 'undefined' && entry.size >= 0) {\n\t\t\t\t\tsimpleSize = OC.Util.humanFileSize(parseInt(entry.size, 10), true)\n\t\t\t\t\tsizeColor = Math.round(160 - Math.pow((entry.size / (1024 * 1024)), 2))\n\t\t\t\t} else {\n\t\t\t\t\tsimpleSize = t('files', 'Pending')\n\t\t\t\t\tsizeColor = 80\n\t\t\t\t}\n\n\t\t\t\t// split the filename in half if the size is bigger than 20 char\n\t\t\t\t// for ellipsis\n\t\t\t\tif (entry.name.length >= 10) {\n\t\t\t\t\t// leave maximum 10 letters\n\t\t\t\t\tvar split = Math.min(Math.floor(entry.name.length / 2), 10)\n\t\t\t\t\tvar filename1 = entry.name.substr(0, entry.name.length - split)\n\t\t\t\t\tvar filename2 = entry.name.substr(entry.name.length - split)\n\t\t\t\t} else {\n\t\t\t\t\tvar filename1 = entry.name\n\t\t\t\t\tvar filename2 = ''\n\t\t\t\t}\n\n\t\t\t\tvar $row = self.$listTmpl.octemplate({\n\t\t\t\t\ttype: entry.type,\n\t\t\t\t\tdir: dir,\n\t\t\t\t\tfilename: entry.name,\n\t\t\t\t\tfilename1: filename1,\n\t\t\t\t\tfilename2: filename2,\n\t\t\t\t\tdate: OC.Util.relativeModifiedDate(entry.mtime),\n\t\t\t\t\tsize: simpleSize,\n\t\t\t\t\tsizeColor: sizeColor,\n\t\t\t\t\ticon: entry.icon\n\t\t\t\t})\n\t\t\t\tif (entry.type === 'file') {\n\t\t\t\t\tvar urlSpec = {\n\t\t\t\t\t\tfile: dir + '/' + entry.name,\n\t\t\t\t\t\tx: 100,\n\t\t\t\t\t\ty: 100\n\t\t\t\t\t}\n\t\t\t\t\tvar img = new Image()\n\t\t\t\t\tvar previewUrl = OC.generateUrl('/core/preview.png?') + $.param(urlSpec)\n\t\t\t\t\timg.onload = function() {\n\t\t\t\t\t\tif (img.width > 5) {\n\t\t\t\t\t\t\t$row.find('td.filename').attr('style', 'background-image:url(' + previewUrl + ')')\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\timg.src = previewUrl\n\t\t\t\t}\n\t\t\t\tself.$filelist.append($row)\n\t\t\t})\n\n\t\t\tself.$filelistContainer.removeClass('icon-loading')\n\t\t})\n\t},\n\t/**\n\t * fills the tree list with directories\n\t */\n\t_fillSlug: function() {\n\t\tvar addButton = this.$dirTree.find('.actions.creatable').detach()\n\t\tthis.$dirTree.empty()\n\t\tvar self = this\n\n\t\tself.$dirTree.append(addButton)\n\n\t\tvar dir\n\t\tvar path = this.$filePicker.data('path')\n\t\tvar $template = $('<div data-dir=\"{dir}\"><a>{name}</a></div>').addClass('crumb')\n\t\tif (path) {\n\t\t\tvar paths = path.split('/')\n\t\t\t$.each(paths, function(index, dir) {\n\t\t\t\tdir = paths.pop()\n\t\t\t\tif (dir === '') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tself.$dirTree.prepend($template.octemplate({\n\t\t\t\t\tdir: paths.join('/') + '/' + dir,\n\t\t\t\t\tname: dir\n\t\t\t\t}))\n\t\t\t})\n\t\t}\n\n\t\t$template.octemplate({\n\t\t\tdir: '',\n\t\t\tname: '' // Ugly but works ;)\n\t\t}, { escapeFunction: null }).prependTo(this.$dirTree)\n\n\t},\n\t/**\n\t * handle selection made in the tree list\n\t */\n\t_handleTreeListSelect: function(event, type) {\n\t\tvar self = event.data\n\t\tvar dir = $(event.target).closest('.crumb').data('dir')\n\t\tself._fillFilePicker(dir)\n\t\tvar getOcDialog = (event.target).closest('.oc-dialog')\n\t\tvar buttonEnableDisable = $('.primary', getOcDialog)\n\t\tthis._changeButtonsText(type, dir.split(/[/]+/).pop())\n\t\tif (this.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || this.$filePicker.data('allowDirectoryChooser')) {\n\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t} else {\n\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t}\n\t},\n\t/**\n\t * handle clicks made in the filepicker\n\t */\n\t_handlePickerClick: function(event, $element, type) {\n\t\tvar getOcDialog = this.$filePicker.closest('.oc-dialog')\n\t\tvar buttonEnableDisable = getOcDialog.find('.primary')\n\t\tif ($element.data('type') === 'file') {\n\t\t\tif (this.$filePicker.data('multiselect') !== true || !event.ctrlKey) {\n\t\t\t\tthis.$filelist.find('.filepicker_element_selected').removeClass('filepicker_element_selected')\n\t\t\t}\n\t\t\t$element.toggleClass('filepicker_element_selected')\n\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t} else if ($element.data('type') === 'dir') {\n\t\t\tthis._fillFilePicker(this.$filePicker.data('path') + '/' + $element.data('entryname'))\n\t\t\tthis._changeButtonsText(type, $element.data('entryname'))\n\t\t\tif (this.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || this.$filePicker.data('allowDirectoryChooser')) {\n\t\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t\t} else {\n\t\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Handle\n\t * @param type of action\n\t * @param dir on which to change buttons text\n\t * @private\n\t */\n\t_changeButtonsText: function(type, dir) {\n\t\tvar copyText = dir === '' ? t('core', 'Copy') : t('core', 'Copy to {folder}', { folder: dir })\n\t\tvar moveText = dir === '' ? t('core', 'Move') : t('core', 'Move to {folder}', { folder: dir })\n\t\tvar buttons = $('.oc-dialog-buttonrow button')\n\t\tswitch (type) {\n\t\t\tcase this.FILEPICKER_TYPE_CHOOSE:\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_CUSTOM:\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_COPY:\n\t\t\t\tbuttons.text(copyText)\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_MOVE:\n\t\t\t\tbuttons.text(moveText)\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_COPY_MOVE:\n\t\t\t\tbuttons.eq(0).text(copyText)\n\t\t\t\tbuttons.eq(1).text(moveText)\n\t\t\t\tbreak\n\t\t}\n\t}\n}\n\nexport default Dialogs\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport { emit } from '@nextcloud/event-bus'\n\n/**\n * @private\n * @param {Document} global the document to read the initial value from\n * @param {Function} emit the function to invoke for every new token\n * @return {object}\n */\nexport const manageToken = (global, emit) => {\n\tlet token = global.getElementsByTagName('head')[0].getAttribute('data-requesttoken')\n\n\treturn {\n\t\tgetToken: () => token,\n\t\tsetToken: newToken => {\n\t\t\ttoken = newToken\n\n\t\t\temit('csrf-token-update', {\n\t\t\t\ttoken,\n\t\t\t})\n\t\t},\n\t}\n}\n\nconst manageFromDocument = manageToken(document, emit)\n\n/**\n * @return {string}\n */\nexport const getToken = manageFromDocument.getToken\n\n/**\n * @param {string} newToken new token\n */\nexport const setToken = manageFromDocument.setToken\n","/**\n * @copyright 2012 Robin Appelman icewind1991@gmail.com\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Lukas Reschke <lukas@statuscode.ch>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Thomas Müller <thomas.mueller@tmit.eu>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n/* eslint-disable */\nimport $ from 'jquery'\n\nimport { getToken } from './requesttoken'\n\n/**\n * Create a new event source\n * @param {string} src\n * @param {object} [data] to be send as GET\n *\n * @constructs OCEventSource\n */\nconst OCEventSource = function(src, data) {\n\tvar dataStr = ''\n\tvar name\n\tvar joinChar\n\tthis.typelessListeners = []\n\tthis.closed = false\n\tthis.listeners = {}\n\tif (data) {\n\t\tfor (name in data) {\n\t\t\tdataStr += name + '=' + encodeURIComponent(data[name]) + '&'\n\t\t}\n\t}\n\tdataStr += 'requesttoken=' + encodeURIComponent(getToken())\n\tif (!this.useFallBack && typeof EventSource !== 'undefined') {\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.source = new EventSource(src + joinChar + dataStr)\n\t\tthis.source.onmessage = function(e) {\n\t\t\tfor (var i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](JSON.parse(e.data))\n\t\t\t}\n\t\t}.bind(this)\n\t} else {\n\t\tvar iframeId = 'oc_eventsource_iframe_' + OCEventSource.iframeCount\n\t\tOCEventSource.fallBackSources[OCEventSource.iframeCount] = this\n\t\tthis.iframe = $('<iframe></iframe>')\n\t\tthis.iframe.attr('id', iframeId)\n\t\tthis.iframe.hide()\n\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.iframe.attr('src', src + joinChar + 'fallback=true&fallback_id=' + OCEventSource.iframeCount + '&' + dataStr)\n\t\t$('body').append(this.iframe)\n\t\tthis.useFallBack = true\n\t\tOCEventSource.iframeCount++\n\t}\n\t// add close listener\n\tthis.listen('__internal__', function(data) {\n\t\tif (data === 'close') {\n\t\t\tthis.close()\n\t\t}\n\t}.bind(this))\n}\nOCEventSource.fallBackSources = []\nOCEventSource.iframeCount = 0// number of fallback iframes\nOCEventSource.fallBackCallBack = function(id, type, data) {\n\tOCEventSource.fallBackSources[id].fallBackCallBack(type, data)\n}\nOCEventSource.prototype = {\n\ttypelessListeners: [],\n\tiframe: null,\n\tlisteners: {}, // only for fallback\n\tuseFallBack: false,\n\t/**\n\t * Fallback callback for browsers that don't have the\n\t * native EventSource object.\n\t *\n\t * Calls the registered listeners.\n\t *\n\t * @private\n\t * @param {String} type event type\n\t * @param {Object} data received data\n\t */\n\tfallBackCallBack: function(type, data) {\n\t\tvar i\n\t\t// ignore messages that might appear after closing\n\t\tif (this.closed) {\n\t\t\treturn\n\t\t}\n\t\tif (type) {\n\t\t\tif (typeof this.listeners.done !== 'undefined') {\n\t\t\t\tfor (i = 0; i < this.listeners[type].length; i++) {\n\t\t\t\t\tthis.listeners[type][i](data)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](data)\n\t\t\t}\n\t\t}\n\t},\n\tlastLength: 0, // for fallback\n\t/**\n\t * Listen to a given type of events.\n\t *\n\t * @param {String} type event type\n\t * @param {Function} callback event callback\n\t */\n\tlisten: function(type, callback) {\n\t\tif (callback && callback.call) {\n\n\t\t\tif (type) {\n\t\t\t\tif (this.useFallBack) {\n\t\t\t\t\tif (!this.listeners[type]) {\n\t\t\t\t\t\tthis.listeners[type] = []\n\t\t\t\t\t}\n\t\t\t\t\tthis.listeners[type].push(callback)\n\t\t\t\t} else {\n\t\t\t\t\tthis.source.addEventListener(type, function(e) {\n\t\t\t\t\t\tif (typeof e.data !== 'undefined') {\n\t\t\t\t\t\t\tcallback(JSON.parse(e.data))\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcallback('')\n\t\t\t\t\t\t}\n\t\t\t\t\t}, false)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.typelessListeners.push(callback)\n\t\t\t}\n\t\t}\n\t},\n\t/**\n\t * Closes this event source.\n\t */\n\tclose: function() {\n\t\tthis.closed = true\n\t\tif (typeof this.source !== 'undefined') {\n\t\t\tthis.source.close()\n\t\t}\n\t}\n}\n\nexport default OCEventSource\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\n\nimport { menuSpeed } from './constants'\n\nexport let currentMenu = null\nexport let currentMenuToggle = null\n\n/**\n * For menu toggling\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n * @param {Function | undefined} toggle callback invoked everytime the menu is opened\n * @param {boolean} headerMenu is this a top right header menu?\n * @return {void}\n */\nexport const registerMenu = function($toggle, $menuEl, toggle, headerMenu) {\n\t$menuEl.addClass('menu')\n\tconst isClickableElement = $toggle.prop('tagName') === 'A' || $toggle.prop('tagName') === 'BUTTON'\n\n\t// On link and button, the enter key trigger a click event\n\t// Only use the click to avoid two fired events\n\t$toggle.on(isClickableElement ? 'click.menu' : 'click.menu keyup.menu', function(event) {\n\t\t// prevent the link event (append anchor to URL)\n\t\tevent.preventDefault()\n\n\t\t// allow enter key as a trigger\n\t\tif (event.key && event.key !== 'Enter') {\n\t\t\treturn\n\t\t}\n\n\t\tif ($menuEl.is(currentMenu)) {\n\t\t\thideMenus()\n\t\t\treturn\n\t\t} else if (currentMenu) {\n\t\t\t// another menu was open?\n\t\t\t// close it\n\t\t\thideMenus()\n\t\t}\n\n\t\tif (headerMenu === true) {\n\t\t\t$menuEl.parent().addClass('openedMenu')\n\t\t}\n\n\t\t// Set menu to expanded\n\t\t$toggle.attr('aria-expanded', true)\n\n\t\t$menuEl.slideToggle(menuSpeed, toggle)\n\t\tcurrentMenu = $menuEl\n\t\tcurrentMenuToggle = $toggle\n\t})\n}\n\n/**\n * Unregister a previously registered menu\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n */\nexport const unregisterMenu = ($toggle, $menuEl) => {\n\t// close menu if opened\n\tif ($menuEl.is(currentMenu)) {\n\t\thideMenus()\n\t}\n\t$toggle.off('click.menu').removeClass('menutoggle')\n\t$menuEl.removeClass('menu')\n}\n\n/**\n * Hides any open menus\n *\n * @param {Function} complete callback when the hiding animation is done\n */\nexport const hideMenus = function(complete) {\n\tif (currentMenu) {\n\t\tconst lastMenu = currentMenu\n\t\tcurrentMenu.trigger(new $.Event('beforeHide'))\n\t\tcurrentMenu.slideUp(menuSpeed, function() {\n\t\t\tlastMenu.trigger(new $.Event('afterHide'))\n\t\t\tif (complete) {\n\t\t\t\tcomplete.apply(this, arguments)\n\t\t\t}\n\t\t})\n\t}\n\n\t// Set menu to closed\n\t$('.menutoggle').attr('aria-expanded', false)\n\n\t$('.openedMenu').removeClass('openedMenu')\n\tcurrentMenu = null\n\tcurrentMenuToggle = null\n}\n\n/**\n * Shows a given element as menu\n *\n * @param {object} [$toggle=null] menu toggle\n * @param {object} $menuEl menu element\n * @param {Function} complete callback when the showing animation is done\n */\nexport const showMenu = ($toggle, $menuEl, complete) => {\n\tif ($menuEl.is(currentMenu)) {\n\t\treturn\n\t}\n\thideMenus()\n\tcurrentMenu = $menuEl\n\tcurrentMenuToggle = $toggle\n\t$menuEl.trigger(new $.Event('beforeShow'))\n\t$menuEl.show()\n\t$menuEl.trigger(new $.Event('afterShow'))\n\t// no animation\n\tif (_.isFunction(complete)) {\n\t\tcomplete()\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nexport const coreApps = ['', 'admin', 'log', 'core/search', 'core', '3rdparty']\nexport const menuSpeed = 50\nexport const PERMISSION_NONE = 0\nexport const PERMISSION_CREATE = 4\nexport const PERMISSION_READ = 1\nexport const PERMISSION_UPDATE = 2\nexport const PERMISSION_DELETE = 8\nexport const PERMISSION_SHARE = 16\nexport const PERMISSION_ALL = 31\nexport const TAG_FAVORITE = '_$!<Favorite>!$_'\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nconst isAdmin = !!window._oc_isadmin\n\n/**\n * Returns whether the current user is an administrator\n *\n * @return {boolean} true if the user is an admin, false otherwise\n * @since 9.0.0\n */\nexport const isUserAdmin = () => isAdmin\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\n// This var is global because it's shared across webpack bundles\nwindow._oc_l10n_registry_translations = window._oc_l10n_registry_translations || {}\nwindow._oc_l10n_registry_plural_functions = window._oc_l10n_registry_plural_functions || {}\n\n/**\n * @param {string} appId the app id\n * @param {object} translations the translations list\n * @param {Function} pluralFunction the translations list\n */\nconst register = (appId, translations, pluralFunction) => {\n\twindow._oc_l10n_registry_translations[appId] = translations\n\twindow._oc_l10n_registry_plural_functions[appId] = pluralFunction\n}\n\n/**\n * @param {string} appId the app id\n * @param {object} translations the translations list\n * @param {Function} pluralFunction the translations list\n */\nconst extend = (appId, translations, pluralFunction) => {\n\twindow._oc_l10n_registry_translations[appId] = Object.assign(\n\t\twindow._oc_l10n_registry_translations[appId],\n\t\ttranslations\n\t)\n\twindow._oc_l10n_registry_plural_functions[appId] = pluralFunction\n}\n\n/**\n * @param {string} appId the app id\n * @param {object} translations the translations list\n * @param {Function} pluralFunction the translations list\n */\nexport const registerAppTranslations = (appId, translations, pluralFunction) => {\n\tif (!hasAppTranslations(appId)) {\n\t\tregister(appId, translations, pluralFunction)\n\t} else {\n\t\textend(appId, translations, pluralFunction)\n\t}\n}\n\n/**\n * @param {string} appId the app id\n */\nexport const unregisterAppTranslations = appId => {\n\tdelete window._oc_l10n_registry_translations[appId]\n\tdelete window._oc_l10n_registry_plural_functions[appId]\n}\n\n/**\n * @param {string} appId the app id\n * @return {boolean}\n */\nexport const hasAppTranslations = appId => {\n\treturn window._oc_l10n_registry_translations[appId] !== undefined\n\t\t&& window._oc_l10n_registry_plural_functions[appId] !== undefined\n}\n\n/**\n * @param {string} appId the app id\n * @return {object}\n */\nexport const getAppTranslations = appId => {\n\treturn {\n\t\ttranslations: window._oc_l10n_registry_translations[appId] || {},\n\t\tpluralFunction: window._oc_l10n_registry_plural_functions[appId],\n\t}\n}\n","/**\n * Copyright (c) 2014 Vincent Petry <pvince81@owncloud.com>\n * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Kesselberg <mail@danielkesselberg.de>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Morris Jobke <hey@morrisjobke.de>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport DOMPurify from 'dompurify'\nimport Handlebars from 'handlebars'\nimport identity from 'lodash/fp/identity'\nimport escapeHTML from 'escape-html'\nimport { generateFilePath } from '@nextcloud/router'\n\nimport OC from './index'\nimport {\n\tgetAppTranslations,\n\thasAppTranslations,\n\tregisterAppTranslations,\n\tunregisterAppTranslations,\n} from './l10n-registry'\n\n/**\n * L10N namespace with localization functions.\n *\n * @namespace OC.L10n\n */\nconst L10n = {\n\n\t/**\n\t * Load an app's translation bundle if not loaded already.\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Function} callback callback to be called when\n\t * the translations are loaded\n\t * @return {Promise} promise\n\t */\n\tload(appName, callback) {\n\t\t// already available ?\n\t\tif (hasAppTranslations(appName) || OC.getLocale() === 'en') {\n\t\t\tconst deferred = $.Deferred()\n\t\t\tconst promise = deferred.promise()\n\t\t\tpromise.then(callback)\n\t\t\tdeferred.resolve()\n\t\t\treturn promise\n\t\t}\n\n\t\tconst self = this\n\t\tconst url = generateFilePath(appName, 'l10n', OC.getLocale() + '.json')\n\n\t\t// load JSON translation bundle per AJAX\n\t\treturn $.get(url)\n\t\t\t.then(\n\t\t\t\tfunction(result) {\n\t\t\t\t\tif (result.translations) {\n\t\t\t\t\t\tself.register(appName, result.translations, result.pluralForm)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t.then(callback)\n\t},\n\n\t/**\n\t * Register an app's translation bundle.\n\t *\n\t * @param {string} appName name of the app\n\t * @param {object<string, string>} bundle bundle\n\t */\n\tregister(appName, bundle) {\n\t\tregisterAppTranslations(appName, bundle, this._getPlural)\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_unregister: unregisterAppTranslations,\n\n\t/**\n\t * Translate a string\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} text the string to translate\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {number} [count] number to replace %n with\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @param {boolean} [options.sanitize=true] enable/disable sanitization (by default enabled)\n\t * @return {string}\n\t */\n\ttranslate(app, text, vars, count, options) {\n\t\tconst defaultOptions = {\n\t\t\tescape: true,\n\t\t\tsanitize: true,\n\t\t}\n\t\tconst allOptions = options || {}\n\t\t_.defaults(allOptions, defaultOptions)\n\n\t\tconst optSanitize = allOptions.sanitize ? DOMPurify.sanitize : identity\n\t\tconst optEscape = allOptions.escape ? escapeHTML : identity\n\n\t\t// TODO: cache this function to avoid inline recreation\n\t\t// of the same function over and over again in case\n\t\t// translate() is used in a loop\n\t\tconst _build = function(text, vars, count) {\n\t\t\treturn text.replace(/%n/g, count).replace(/{([^{}]*)}/g,\n\t\t\t\tfunction(a, b) {\n\t\t\t\t\tconst r = vars[b]\n\t\t\t\t\tif (typeof r === 'string' || typeof r === 'number') {\n\t\t\t\t\t\treturn optSanitize(optEscape(r))\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn optSanitize(a)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\t\tlet translation = text\n\t\tconst bundle = getAppTranslations(app)\n\t\tconst value = bundle.translations[text]\n\t\tif (typeof (value) !== 'undefined') {\n\t\t\ttranslation = value\n\t\t}\n\n\t\tif (typeof vars === 'object' || count !== undefined) {\n\t\t\treturn optSanitize(_build(translation, vars, count))\n\t\t} else {\n\t\t\treturn optSanitize(translation)\n\t\t}\n\t},\n\n\t/**\n\t * Translate a plural string\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} textSingular the string to translate for exactly one object\n\t * @param {string} textPlural the string to translate for n objects\n\t * @param {number} count number to determine whether to use singular or plural\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @return {string} Translated string\n\t */\n\ttranslatePlural(app, textSingular, textPlural, count, vars, options) {\n\t\tconst identifier = '_' + textSingular + '_::_' + textPlural + '_'\n\t\tconst bundle = getAppTranslations(app)\n\t\tconst value = bundle.translations[identifier]\n\t\tif (typeof (value) !== 'undefined') {\n\t\t\tconst translation = value\n\t\t\tif ($.isArray(translation)) {\n\t\t\t\tconst plural = bundle.pluralFunction(count)\n\t\t\t\treturn this.translate(app, translation[plural], vars, count, options)\n\t\t\t}\n\t\t}\n\n\t\tif (count === 1) {\n\t\t\treturn this.translate(app, textSingular, vars, count, options)\n\t\t} else {\n\t\t\treturn this.translate(app, textPlural, vars, count, options)\n\t\t}\n\t},\n\n\t/**\n\t * The plural function taken from symfony\n\t *\n\t * @param {number} number the number of elements\n\t * @return {number}\n\t * @private\n\t */\n\t_getPlural(number) {\n\t\tlet language = OC.getLanguage()\n\t\tif (language === 'pt-BR') {\n\t\t\t// temporary set a locale for brazilian\n\t\t\tlanguage = 'xbr'\n\t\t}\n\n\t\tif (typeof language === 'undefined' || language === '') {\n\t\t\treturn (number === 1) ? 0 : 1\n\t\t}\n\n\t\tif (language.length > 3) {\n\t\t\tlanguage = language.substring(0, language.lastIndexOf('-'))\n\t\t}\n\n\t\t/*\n\t\t * The plural rules are derived from code of the Zend Framework (2010-09-25),\n\t\t * which is subject to the new BSD license (http://framework.zend.com/license/new-bsd).\n\t\t * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n\t\t */\n\t\tswitch (language) {\n\t\tcase 'az':\n\t\tcase 'bo':\n\t\tcase 'dz':\n\t\tcase 'id':\n\t\tcase 'ja':\n\t\tcase 'jv':\n\t\tcase 'ka':\n\t\tcase 'km':\n\t\tcase 'kn':\n\t\tcase 'ko':\n\t\tcase 'ms':\n\t\tcase 'th':\n\t\tcase 'tr':\n\t\tcase 'vi':\n\t\tcase 'zh':\n\t\t\treturn 0\n\n\t\tcase 'af':\n\t\tcase 'bn':\n\t\tcase 'bg':\n\t\tcase 'ca':\n\t\tcase 'da':\n\t\tcase 'de':\n\t\tcase 'el':\n\t\tcase 'en':\n\t\tcase 'eo':\n\t\tcase 'es':\n\t\tcase 'et':\n\t\tcase 'eu':\n\t\tcase 'fa':\n\t\tcase 'fi':\n\t\tcase 'fo':\n\t\tcase 'fur':\n\t\tcase 'fy':\n\t\tcase 'gl':\n\t\tcase 'gu':\n\t\tcase 'ha':\n\t\tcase 'he':\n\t\tcase 'hu':\n\t\tcase 'is':\n\t\tcase 'it':\n\t\tcase 'ku':\n\t\tcase 'lb':\n\t\tcase 'ml':\n\t\tcase 'mn':\n\t\tcase 'mr':\n\t\tcase 'nah':\n\t\tcase 'nb':\n\t\tcase 'ne':\n\t\tcase 'nl':\n\t\tcase 'nn':\n\t\tcase 'no':\n\t\tcase 'oc':\n\t\tcase 'om':\n\t\tcase 'or':\n\t\tcase 'pa':\n\t\tcase 'pap':\n\t\tcase 'ps':\n\t\tcase 'pt':\n\t\tcase 'so':\n\t\tcase 'sq':\n\t\tcase 'sv':\n\t\tcase 'sw':\n\t\tcase 'ta':\n\t\tcase 'te':\n\t\tcase 'tk':\n\t\tcase 'ur':\n\t\tcase 'zu':\n\t\t\treturn (number === 1) ? 0 : 1\n\n\t\tcase 'am':\n\t\tcase 'bh':\n\t\tcase 'fil':\n\t\tcase 'fr':\n\t\tcase 'gun':\n\t\tcase 'hi':\n\t\tcase 'hy':\n\t\tcase 'ln':\n\t\tcase 'mg':\n\t\tcase 'nso':\n\t\tcase 'xbr':\n\t\tcase 'ti':\n\t\tcase 'wa':\n\t\t\treturn ((number === 0) || (number === 1)) ? 0 : 1\n\n\t\tcase 'be':\n\t\tcase 'bs':\n\t\tcase 'hr':\n\t\tcase 'ru':\n\t\tcase 'sh':\n\t\tcase 'sr':\n\t\tcase 'uk':\n\t\t\treturn ((number % 10 === 1) && (number % 100 !== 11)) ? 0 : (((number % 10 >= 2) && (number % 10 <= 4) && ((number % 100 < 10) || (number % 100 >= 20))) ? 1 : 2)\n\n\t\tcase 'cs':\n\t\tcase 'sk':\n\t\t\treturn (number === 1) ? 0 : (((number >= 2) && (number <= 4)) ? 1 : 2)\n\n\t\tcase 'ga':\n\t\t\treturn (number === 1) ? 0 : ((number === 2) ? 1 : 2)\n\n\t\tcase 'lt':\n\t\t\treturn ((number % 10 === 1) && (number % 100 !== 11)) ? 0 : (((number % 10 >= 2) && ((number % 100 < 10) || (number % 100 >= 20))) ? 1 : 2)\n\n\t\tcase 'sl':\n\t\t\treturn (number % 100 === 1) ? 0 : ((number % 100 === 2) ? 1 : (((number % 100 === 3) || (number % 100 === 4)) ? 2 : 3))\n\n\t\tcase 'mk':\n\t\t\treturn (number % 10 === 1) ? 0 : 1\n\n\t\tcase 'mt':\n\t\t\treturn (number === 1) ? 0 : (((number === 0) || ((number % 100 > 1) && (number % 100 < 11))) ? 1 : (((number % 100 > 10) && (number % 100 < 20)) ? 2 : 3))\n\n\t\tcase 'lv':\n\t\t\treturn (number === 0) ? 0 : (((number % 10 === 1) && (number % 100 !== 11)) ? 1 : 2)\n\n\t\tcase 'pl':\n\t\t\treturn (number === 1) ? 0 : (((number % 10 >= 2) && (number % 10 <= 4) && ((number % 100 < 12) || (number % 100 > 14))) ? 1 : 2)\n\n\t\tcase 'cy':\n\t\t\treturn (number === 1) ? 0 : ((number === 2) ? 1 : (((number === 8) || (number === 11)) ? 2 : 3))\n\n\t\tcase 'ro':\n\t\t\treturn (number === 1) ? 0 : (((number === 0) || ((number % 100 > 0) && (number % 100 < 20))) ? 1 : 2)\n\n\t\tcase 'ar':\n\t\t\treturn (number === 0) ? 0 : ((number === 1) ? 1 : ((number === 2) ? 2 : (((number % 100 >= 3) && (number % 100 <= 10)) ? 3 : (((number % 100 >= 11) && (number % 100 <= 99)) ? 4 : 5))))\n\n\t\tdefault:\n\t\t\treturn 0\n\t\t}\n\t},\n}\n\nexport default L10n\n\n/**\n * Returns the user's locale\n *\n * @return {string} locale string\n */\nexport const getLocale = () => $('html').data('locale') ?? 'en'\n\n/**\n * Returns the user's language\n *\n * @return {string} language string\n */\nexport const getLanguage = () => $('html').prop('lang')\n\nHandlebars.registerHelper('t', function(app, text) {\n\treturn L10n.translate(app, text)\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author rakekniven <mark.ziegler@rakekniven.de>\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 */\n\nimport $ from 'jquery'\n\n/**\n * A little class to manage a status field for a \"saving\" process.\n * It can be used to display a starting message (e.g. \"Saving...\") and then\n * replace it with a green success message or a red error message.\n *\n * @namespace OC.msg\n */\nexport default {\n\t/**\n\t * Displayes a \"Saving...\" message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t */\n\tstartSaving(selector) {\n\t\tthis.startAction(selector, t('core', 'Saving …'))\n\t},\n\n\t/**\n\t * Displayes a custom message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text message to display (no HTML allowed)\n\t */\n\tstartAction(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.removeClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedSaving(selector, response) {\n\t\tthis.finishedAction(selector, response)\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedAction(selector, response) {\n\t\tif (response.status === 'success') {\n\t\t\tthis.finishedSuccess(selector, response.data.message)\n\t\t} else {\n\t\t\tthis.finishedError(selector, response.data.message)\n\t\t}\n\t},\n\n\t/**\n\t * Displayes an success message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text success message to display (no HTML allowed)\n\t */\n\tfinishedSuccess(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.delay(3000)\n\t\t\t.fadeOut(900)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text error message to display (no HTML allowed)\n\t */\n\tfinishedError(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('error')\n\t\t\t.removeClass('success')\n\t\t\t.show()\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport moment from 'moment'\nimport { generateUrl } from '@nextcloud/router'\n\nimport OC from './index'\n\n/**\n * @namespace OC.PasswordConfirmation\n */\nexport default {\n\tcallback: null,\n\n\tpageLoadTime: null,\n\n\tinit() {\n\t\t$('.password-confirm-required').on('click', _.bind(this.requirePasswordConfirmation, this))\n\t\tthis.pageLoadTime = moment.now()\n\t},\n\n\trequiresPasswordConfirmation() {\n\t\tconst serverTimeDiff = this.pageLoadTime - (window.nc_pageLoad * 1000)\n\t\tconst timeSinceLogin = moment.now() - (serverTimeDiff + (window.nc_lastLogin * 1000))\n\n\t\t// if timeSinceLogin > 30 minutes and user backend allows password confirmation\n\t\treturn (window.backendAllowsPasswordConfirmation && timeSinceLogin > 30 * 60 * 1000)\n\t},\n\n\t/**\n\t * @param {Function} callback success callback function\n\t * @param {object} options options\n\t * @param {Function} rejectCallback error callback function\n\t */\n\trequirePasswordConfirmation(callback, options, rejectCallback) {\n\t\toptions = typeof options !== 'undefined' ? options : {}\n\t\tconst defaults = {\n\t\t\ttitle: t('core', 'Authentication required'),\n\t\t\ttext: t(\n\t\t\t\t'core',\n\t\t\t\t'This action requires you to confirm your password'\n\t\t\t),\n\t\t\tconfirm: t('core', 'Confirm'),\n\t\t\tlabel: t('core', 'Password'),\n\t\t\terror: '',\n\t\t}\n\n\t\tconst config = _.extend(defaults, options)\n\n\t\tconst self = this\n\n\t\tif (this.requiresPasswordConfirmation()) {\n\t\t\tOC.dialogs.prompt(\n\t\t\t\tconfig.text,\n\t\t\t\tconfig.title,\n\t\t\t\tfunction(result, password) {\n\t\t\t\t\tif (result && password !== '') {\n\t\t\t\t\t\tself._confirmPassword(password, config)\n\t\t\t\t\t} else if (_.isFunction(rejectCallback)) {\n\t\t\t\t\t\trejectCallback()\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\ttrue,\n\t\t\t\tconfig.label,\n\t\t\t\ttrue\n\t\t\t).then(function() {\n\t\t\t\tconst $dialog = $('.oc-dialog:visible')\n\t\t\t\t$dialog.find('.ui-icon').remove()\n\t\t\t\t$dialog.addClass('password-confirmation')\n\t\t\t\tif (config.error !== '') {\n\t\t\t\t\tconst $error = $('<p></p>').addClass('msg warning').text(config.error)\n\t\t\t\t\t$dialog.find('.oc-dialog-content').append($error)\n\t\t\t\t}\n\t\t\t\t$dialog.find('.oc-dialog-buttonrow').addClass('aside')\n\n\t\t\t\tconst $buttons = $dialog.find('button')\n\t\t\t\t$buttons.eq(0).hide()\n\t\t\t\t$buttons.eq(1).text(config.confirm)\n\t\t\t})\n\t\t}\n\n\t\tthis.callback = callback\n\t},\n\n\t_confirmPassword(password, config) {\n\t\tconst self = this\n\n\t\t$.ajax({\n\t\t\turl: generateUrl('/login/confirm'),\n\t\t\tdata: {\n\t\t\t\tpassword,\n\t\t\t},\n\t\t\ttype: 'POST',\n\t\t\tsuccess(response) {\n\t\t\t\twindow.nc_lastLogin = response.lastLogin\n\n\t\t\t\tif (_.isFunction(self.callback)) {\n\t\t\t\t\tself.callback()\n\t\t\t\t}\n\t\t\t},\n\t\t\terror() {\n\t\t\t\tconfig.error = t('core', 'Failed to authenticate, try again')\n\t\t\t\tOC.PasswordConfirmation.requirePasswordConfirmation(self.callback, config)\n\t\t\t},\n\t\t})\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 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 */\n\nexport const theme = window._theme || {}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport _ from 'underscore'\nimport OC from './index'\n\n/**\n * Utility class for the history API,\n * includes fallback to using the URL hash when\n * the browser doesn't support the history API.\n *\n * @namespace OC.Util.History\n */\nexport default {\n\n\t_handlers: [],\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t * @param {boolean} [replace=false] whether to replace instead of pushing\n\t */\n\t_pushState(params, url, replace) {\n\t\tlet strParams\n\t\tif (typeof (params) === 'string') {\n\t\t\tstrParams = params\n\t\t} else {\n\t\t\tstrParams = OC.buildQueryString(params)\n\t\t}\n\n\t\tif (window.history.pushState) {\n\t\t\turl = url || location.pathname + '?' + strParams\n\t\t\t// Workaround for bug with SVG and window.history.pushState on Firefox < 51\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=652991\n\t\t\tconst isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1\n\t\t\tif (isFirefox && parseInt(navigator.userAgent.split('/').pop()) < 51) {\n\t\t\t\tconst patterns = document.querySelectorAll('[fill^=\"url(#\"], [stroke^=\"url(#\"], [filter^=\"url(#invert\"]')\n\t\t\t\tfor (let i = 0, ii = patterns.length, pattern; i < ii; i++) {\n\t\t\t\t\tpattern = patterns[i]\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.fill = pattern.style.fill\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.stroke = pattern.style.stroke\n\t\t\t\t\tpattern.removeAttribute('filter')\n\t\t\t\t\tpattern.setAttribute('filter', 'url(#invert)')\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (replace) {\n\t\t\t\twindow.history.replaceState(params, '', url)\n\t\t\t} else {\n\t\t\t\twindow.history.pushState(params, '', url)\n\t\t\t}\n\t\t} else {\n\t\t\t// use URL hash for IE8\n\t\t\twindow.location.hash = '?' + strParams\n\t\t\t// inhibit next onhashchange that just added itself\n\t\t\t// to the event queue\n\t\t\tthis._cancelPop = true\n\t\t}\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used, using the params as query string\n\t */\n\tpushState(params, url) {\n\t\tthis._pushState(params, url, false)\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t */\n\treplaceState(params, url) {\n\t\tthis._pushState(params, url, true)\n\t},\n\n\t/**\n\t * Add a popstate handler\n\t *\n\t * @param {Function} handler handler\n\t */\n\taddOnPopStateHandler(handler) {\n\t\tthis._handlers.push(handler)\n\t},\n\n\t/**\n\t * Parse a query string from the hash part of the URL.\n\t * (workaround for IE8 / IE9)\n\t *\n\t * @return {string}\n\t */\n\t_parseHashQuery() {\n\t\tconst hash = window.location.hash\n\t\tconst pos = hash.indexOf('?')\n\t\tif (pos >= 0) {\n\t\t\treturn hash.substr(pos + 1)\n\t\t}\n\t\tif (hash.length) {\n\t\t\t// remove hash sign\n\t\t\treturn hash.substr(1)\n\t\t}\n\t\treturn ''\n\t},\n\n\t_decodeQuery(query) {\n\t\treturn query.replace(/\\+/g, ' ')\n\t},\n\n\t/**\n\t * Parse the query/search part of the URL.\n\t * Also try and parse it from the URL hash (for IE8)\n\t *\n\t * @return {object} map of parameters\n\t */\n\tparseUrlQuery() {\n\t\tconst query = this._parseHashQuery()\n\t\tlet params\n\t\t// try and parse from URL hash first\n\t\tif (query) {\n\t\t\tparams = OC.parseQueryString(this._decodeQuery(query))\n\t\t}\n\t\t// else read from query attributes\n\t\tparams = _.extend(params || {}, OC.parseQueryString(this._decodeQuery(location.search)))\n\t\treturn params || {}\n\t},\n\n\t_onPopState(e) {\n\t\tif (this._cancelPop) {\n\t\t\tthis._cancelPop = false\n\t\t\treturn\n\t\t}\n\t\tlet params\n\t\tif (!this._handlers.length) {\n\t\t\treturn\n\t\t}\n\t\tparams = (e && e.state)\n\t\tif (_.isString(params)) {\n\t\t\tparams = OC.parseQueryString(params)\n\t\t} else if (!params) {\n\t\t\tparams = this.parseUrlQuery() || {}\n\t\t}\n\t\tfor (let i = 0; i < this._handlers.length; i++) {\n\t\t\tthis._handlers[i](params)\n\t\t}\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport moment from 'moment'\n\nimport History from './util-history'\nimport OC from './index'\nimport { formatFileSize as humanFileSize } from '@nextcloud/files'\n\n/**\n * @param {any} t -\n */\nfunction chunkify(t) {\n\t// Adapted from http://my.opera.com/GreyWyvern/blog/show.dml/1671288\n\tconst tz = []\n\tlet x = 0\n\tlet y = -1\n\tlet n = 0\n\tlet c\n\n\twhile (x < t.length) {\n\t\tc = t.charAt(x)\n\t\t// only include the dot in strings\n\t\tconst m = ((!n && c === '.') || (c >= '0' && c <= '9'))\n\t\tif (m !== n) {\n\t\t\t// next chunk\n\t\t\ty++\n\t\t\ttz[y] = ''\n\t\t\tn = m\n\t\t}\n\t\ttz[y] += c\n\t\tx++\n\t}\n\treturn tz\n}\n\n/**\n * Utility functions\n *\n * @namespace OC.Util\n */\nexport default {\n\n\tHistory,\n\n\t/**\n\t * @deprecated use https://nextcloud.github.io/nextcloud-files/modules/_humanfilesize_.html#formatfilesize\n\t */\n\thumanFileSize,\n\n\t/**\n\t * Returns a file size in bytes from a humanly readable string\n\t * Makes 2kB to 2048.\n\t * Inspired by computerFileSize in helper.php\n\t *\n\t * @param {string} string file size in human readable format\n\t * @return {number} or null if string could not be parsed\n\t *\n\t *\n\t */\n\tcomputerFileSize(string) {\n\t\tif (typeof string !== 'string') {\n\t\t\treturn null\n\t\t}\n\n\t\tconst s = string.toLowerCase().trim()\n\t\tlet bytes = null\n\n\t\tconst bytesArray = {\n\t\t\tb: 1,\n\t\t\tk: 1024,\n\t\t\tkb: 1024,\n\t\t\tmb: 1024 * 1024,\n\t\t\tm: 1024 * 1024,\n\t\t\tgb: 1024 * 1024 * 1024,\n\t\t\tg: 1024 * 1024 * 1024,\n\t\t\ttb: 1024 * 1024 * 1024 * 1024,\n\t\t\tt: 1024 * 1024 * 1024 * 1024,\n\t\t\tpb: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t\tp: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t}\n\n\t\tconst matches = s.match(/^[\\s+]?([0-9]*)(\\.([0-9]+))?( +)?([kmgtp]?b?)$/i)\n\t\tif (matches !== null) {\n\t\t\tbytes = parseFloat(s)\n\t\t\tif (!isFinite(bytes)) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t\tif (matches[5]) {\n\t\t\tbytes = bytes * bytesArray[matches[5]]\n\t\t}\n\n\t\tbytes = Math.round(bytes)\n\t\treturn bytes\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @param {string} format date format, see momentjs docs\n\t * @return {string} timestamp formatted as requested\n\t */\n\tformatDate(timestamp, format) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tconsole.warn('OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tformat = format || 'LLL'\n\t\treturn moment(timestamp).format(format)\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @return {string} human readable difference from now\n\t */\n\trelativeModifiedDate(timestamp) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tconsole.warn('OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tconst diff = moment().diff(moment(timestamp))\n\t\tif (diff >= 0 && diff < 45000) {\n\t\t\treturn t('core', 'seconds ago')\n\t\t}\n\t\treturn moment(timestamp).fromNow()\n\t},\n\n\t/**\n\t * Returns the width of a generic browser scrollbar\n\t *\n\t * @return {number} width of scrollbar\n\t */\n\tgetScrollBarWidth() {\n\t\tif (this._scrollBarWidth) {\n\t\t\treturn this._scrollBarWidth\n\t\t}\n\n\t\tconst inner = document.createElement('p')\n\t\tinner.style.width = '100%'\n\t\tinner.style.height = '200px'\n\n\t\tconst outer = document.createElement('div')\n\t\touter.style.position = 'absolute'\n\t\touter.style.top = '0px'\n\t\touter.style.left = '0px'\n\t\touter.style.visibility = 'hidden'\n\t\touter.style.width = '200px'\n\t\touter.style.height = '150px'\n\t\touter.style.overflow = 'hidden'\n\t\touter.appendChild(inner)\n\n\t\tdocument.body.appendChild(outer)\n\t\tconst w1 = inner.offsetWidth\n\t\touter.style.overflow = 'scroll'\n\t\tlet w2 = inner.offsetWidth\n\t\tif (w1 === w2) {\n\t\t\tw2 = outer.clientWidth\n\t\t}\n\n\t\tdocument.body.removeChild(outer)\n\n\t\tthis._scrollBarWidth = (w1 - w2)\n\n\t\treturn this._scrollBarWidth\n\t},\n\n\t/**\n\t * Remove the time component from a given date\n\t *\n\t * @param {Date} date date\n\t * @return {Date} date with stripped time\n\t */\n\tstripTime(date) {\n\t\t// FIXME: likely to break when crossing DST\n\t\t// would be better to use a library like momentJS\n\t\treturn new Date(date.getFullYear(), date.getMonth(), date.getDate())\n\t},\n\n\t/**\n\t * Compare two strings to provide a natural sort\n\t *\n\t * @param {string} a first string to compare\n\t * @param {string} b second string to compare\n\t * @return {number} -1 if b comes before a, 1 if a comes before b\n\t * or 0 if the strings are identical\n\t */\n\tnaturalSortCompare(a, b) {\n\t\tlet x\n\t\tconst aa = chunkify(a)\n\t\tconst bb = chunkify(b)\n\n\t\tfor (x = 0; aa[x] && bb[x]; x++) {\n\t\t\tif (aa[x] !== bb[x]) {\n\t\t\t\tconst aNum = Number(aa[x]); const bNum = Number(bb[x])\n\t\t\t\t// note: == is correct here\n\t\t\t\t/* eslint-disable-next-line */\n\t\t\t\tif (aNum == aa[x] && bNum == bb[x]) {\n\t\t\t\t\treturn aNum - bNum\n\t\t\t\t} else {\n\t\t\t\t\t// Note: This locale setting isn't supported by all browsers but for the ones\n\t\t\t\t\t// that do there will be more consistency between client-server sorting\n\t\t\t\t\treturn aa[x].localeCompare(bb[x], OC.getLanguage())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn aa.length - bb.length\n\t},\n\n\t/**\n\t * Calls the callback in a given interval until it returns true\n\t *\n\t * @param {Function} callback function to call on success\n\t * @param {number} interval in milliseconds\n\t */\n\twaitFor(callback, interval) {\n\t\tconst internalCallback = function() {\n\t\t\tif (callback() !== true) {\n\t\t\t\tsetTimeout(internalCallback, interval)\n\t\t\t}\n\t\t}\n\n\t\tinternalCallback()\n\t},\n\n\t/**\n\t * Checks if a cookie with the given name is present and is set to the provided value.\n\t *\n\t * @param {string} name name of the cookie\n\t * @param {string} value value of the cookie\n\t * @return {boolean} true if the cookie with the given name has the given value\n\t */\n\tisCookieSetToValue(name, value) {\n\t\tconst cookies = document.cookie.split(';')\n\t\tfor (let i = 0; i < cookies.length; i++) {\n\t\t\tconst cookie = cookies[i].split('=')\n\t\t\tif (cookie[0].trim() === name && cookie[1].trim() === value) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 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 */\n\nconst base = window._oc_debug\n\nexport const debug = base\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 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 */\n\nlet webroot = window._oc_webroot\n\nif (typeof webroot === 'undefined') {\n\twebroot = location.pathname\n\tconst pos = webroot.indexOf('/index.php/')\n\tif (pos !== -1) {\n\t\twebroot = webroot.substr(0, pos)\n\t} else {\n\t\twebroot = webroot.substr(0, webroot.lastIndexOf('/'))\n\t}\n}\n\nexport default webroot\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nexport const get = context => name => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tcontext = context[namespaces[i]]\n\t\tif (!context) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn context[tail]\n}\n\n/**\n * Set a variable by name\n *\n * @param {string} context context\n * @return {Function} setter\n * @deprecated 19.0.0 use https://lodash.com/docs#set\n */\nexport const set = context => (name, value) => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tif (!context[namespaces[i]]) {\n\t\t\tcontext[namespaces[i]] = {}\n\t\t}\n\t\tcontext = context[namespaces[i]]\n\t}\n\tcontext[tail] = value\n\treturn value\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport { subscribe } from '@nextcloud/event-bus'\n\nimport { addScript, addStyle } from './legacy-loader'\nimport {\n\tajaxConnectionLostHandler,\n\tprocessAjaxError,\n\tregisterXHRForErrorProcessing,\n} from './xhr-error'\nimport Apps from './apps'\nimport { AppConfig, appConfig } from './appconfig'\nimport { appSettings } from './appsettings'\nimport appswebroots from './appswebroots'\nimport Backbone from './backbone'\nimport {\n\tbasename,\n\tdirname,\n\tencodePath,\n\tisSamePath,\n\tjoinPaths,\n} from '@nextcloud/paths'\nimport {\n\tbuild as buildQueryString,\n\tparse as parseQueryString,\n} from './query-string'\nimport Config from './config'\nimport {\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n} from './constants'\nimport ContactsMenu from './contactsmenu'\nimport { currentUser, getCurrentUser } from './currentuser'\nimport Dialogs from './dialogs'\nimport EventSource from './eventsource'\nimport { get, set } from './get_set'\nimport { getCapabilities } from './capabilities'\nimport {\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n} from './host'\nimport {\n\tgetToken as getRequestToken,\n} from './requesttoken'\nimport {\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n} from './menu'\nimport { isUserAdmin } from './admin'\nimport L10N, {\n\tgetLanguage,\n\tgetLocale,\n} from './l10n'\nimport {\n\tgetCanonicalLocale,\n} from '@nextcloud/l10n'\n\nimport {\n\tgenerateUrl,\n\tgenerateFilePath,\n\tgenerateOcsUrl,\n\tgenerateRemoteUrl,\n\tgetRootUrl,\n\timagePath,\n\tlinkTo,\n} from '@nextcloud/router'\n\nimport {\n\tlinkToRemoteBase,\n} from './routing'\nimport msg from './msg'\nimport Notification from './notification'\nimport PasswordConfirmation from './password-confirmation'\nimport Plugins from './plugins'\nimport { theme } from './theme'\nimport Util from './util'\nimport { debug } from './debug'\nimport { redirect, reload } from './navigation'\nimport webroot from './webroot'\n\n/** @namespace OC */\nexport default {\n\t/*\n\t * Constants\n\t */\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n\n\t/*\n\t * Deprecated helpers to be removed\n\t */\n\t/**\n\t * Check if a user file is allowed to be handled.\n\t *\n\t * @param {string} file to check\n\t * @return {boolean}\n\t * @deprecated 17.0.0\n\t */\n\tfileIsBlacklisted: file => !!(file.match(Config.blacklist_files_regex)),\n\n\taddScript,\n\taddStyle,\n\tApps,\n\tAppConfig,\n\tappConfig,\n\tappSettings,\n\tappswebroots,\n\tBackbone,\n\tContactsMenu,\n\tconfig: Config,\n\t/**\n\t * Currently logged in user or null if none\n\t *\n\t * @type {string}\n\t * @deprecated use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tcurrentUser,\n\tdialogs: Dialogs,\n\tEventSource,\n\t/**\n\t * Returns the currently logged in user or null if there is no logged in\n\t * user (public page mode)\n\t *\n\t * @since 9.0.0\n\t * @deprecated 19.0.0 use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tgetCurrentUser,\n\tisUserAdmin,\n\tL10N,\n\n\t/**\n\t * Ajax error handlers\n\t *\n\t * @todo remove from here and keep internally -> requires new tests\n\t */\n\t_ajaxConnectionLostHandler: ajaxConnectionLostHandler,\n\t_processAjaxError: processAjaxError,\n\tregisterXHRForErrorProcessing,\n\n\t/**\n\t * Capabilities\n\t *\n\t * @type {Array}\n\t * @deprecated 20.0.0 use @nextcloud/capabilities instead\n\t */\n\tgetCapabilities,\n\n\t/*\n\t * Legacy menu helpers\n\t */\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n\n\t/*\n\t * Path helpers\n\t */\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tbasename,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tencodePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tdirname,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tisSamePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tjoinPaths,\n\n\t/**\n\t * Host (url) helpers\n\t */\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n\n\t/**\n\t * @deprecated 20.0.0 use `getCanonicalLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetCanonicalLocale,\n\tgetLocale,\n\tgetLanguage,\n\t/**\n\t * Loads translations for the given app asynchronously.\n\t *\n\t * @param {string} app app name\n\t * @param {Function} callback callback to call after loading\n\t * @return {Promise}\n\t * @deprecated 17.0.0 use OC.L10N.load instead\n\t */\n\taddTranslations: L10N.load,\n\n\t/**\n\t * Query string helpers\n\t */\n\tbuildQueryString,\n\tparseQueryString,\n\n\tmsg,\n\tNotification,\n\tPasswordConfirmation,\n\tPlugins,\n\ttheme,\n\tUtil,\n\tdebug,\n\t/**\n\t * @deprecated 19.0.0 use `generateFilePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tfilePath: generateFilePath,\n\t/**\n\t * @deprecated 19.0.0 use `generateUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgenerateUrl,\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#get\n\t */\n\tget: get(window),\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#set\n\t */\n\tset: set(window),\n\t/**\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgetRootPath: getRootUrl,\n\t/**\n\t * @deprecated 19.0.0 use `imagePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\timagePath,\n\tredirect,\n\treload,\n\trequestToken: getRequestToken(),\n\t/**\n\t * @deprecated 19.0.0 use `linkTo` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkTo,\n\t/**\n\t * @param {string} service service name\n\t * @param {number} version OCS API version\n\t * @return {string} OCS API base path\n\t * @deprecated 19.0.0 use `generateOcsUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToOCS: (service, version) => {\n\t\treturn generateOcsUrl(service, {}, {\n\t\t\tocsVersion: version || 1,\n\t\t}) + '/'\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `generateRemoteUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToRemote: generateRemoteUrl,\n\tlinkToRemoteBase,\n\t/**\n\t * Relative path to Nextcloud root.\n\t * For example: \"/nextcloud\"\n\t *\n\t * @type {string}\n\t *\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t * @see OC#getRootPath\n\t */\n\twebroot,\n}\n\n// Keep the request token prop in sync\nsubscribe('csrf-token-update', e => {\n\tOC.requestToken = e.token\n\n\t// Logging might help debug (Sentry) issues\n\tconsole.info('OC.requestToken changed', e.token)\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\n/* eslint-disable */\nimport $ from 'jquery'\nimport { filePath } from './routing'\nimport { generateFilePath } from \"@nextcloud/router\"\n\n/**\n * Opens a popup with the setting for an app.\n * @param {string} appid The ID of the app e.g. 'calendar', 'contacts' or 'files'.\n * @param {boolean|string} loadJS If true 'js/settings.js' is loaded. If it's a string\n * it will attempt to load a script by that name in the 'js' directory.\n * @param {boolean} [cache] If true the javascript file won't be forced refreshed. Defaults to true.\n * @param {string} [scriptName] The name of the PHP file to load. Defaults to 'settings.php' in\n * the root of the app directory hierarchy.\n *\n * @deprecated 17.0.0 this method is unused and will be removed with Nextcloud 18\n */\nexport const appSettings = args => {\n\tconsole.warn('OC.appSettings is deprecated and will be removed with Nextcloud 18')\n\n\tif (typeof args === 'undefined' || typeof args.appid === 'undefined') {\n\t\tthrow {\n\t\t\tname: 'MissingParameter',\n\t\t\tmessage: 'The parameter appid is missing'\n\t\t}\n\t}\n\tvar props = { scriptName: 'settings.php', cache: true }\n\t$.extend(props, args)\n\tvar settings = $('#appsettings')\n\tif (settings.length === 0) {\n\t\tthrow {\n\t\t\tname: 'MissingDOMElement',\n\t\t\tmessage: 'There has be be an element with id \"appsettings\" for the popup to show.'\n\t\t}\n\t}\n\tvar popup = $('#appsettings_popup')\n\tif (popup.length === 0) {\n\t\t$('body').prepend('<div class=\"popup hidden\" id=\"appsettings_popup\"></div>')\n\t\tpopup = $('#appsettings_popup')\n\t\tpopup.addClass(settings.hasClass('topright') ? 'topright' : 'bottomleft')\n\t}\n\tif (popup.is(':visible')) {\n\t\tpopup.hide().remove()\n\t} else {\n\t\tconst arrowclass = settings.hasClass('topright') ? 'up' : 'left'\n\t\t$.get(generateFilePath(props.appid, '', props.scriptName), function(data) {\n\t\t\tpopup.html(data).ready(function() {\n\t\t\t\tpopup.prepend('<span class=\"arrow ' + arrowclass + '\"></span><h2>' + t('core', 'Settings') + '</h2><a class=\"close\"></a>').show()\n\t\t\t\tpopup.find('.close').bind('click', function() {\n\t\t\t\t\tpopup.remove()\n\t\t\t\t})\n\t\t\t\tif (typeof props.loadJS !== 'undefined') {\n\t\t\t\t\tvar scriptname\n\t\t\t\t\tif (props.loadJS === true) {\n\t\t\t\t\t\tscriptname = 'settings.js'\n\t\t\t\t\t} else if (typeof props.loadJS === 'string') {\n\t\t\t\t\t\tscriptname = props.loadJS\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow {\n\t\t\t\t\t\t\tname: 'InvalidParameter',\n\t\t\t\t\t\t\tmessage: 'The \"loadJS\" parameter must be either boolean or a string.'\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (props.cache) {\n\t\t\t\t\t\t$.ajaxSetup({ cache: true })\n\t\t\t\t\t}\n\t\t\t\t\t$.getScript(generateFilePath(props.appid, 'js', scriptname))\n\t\t\t\t\t\t.fail(function(jqxhr, settings, e) {\n\t\t\t\t\t\t\tthrow e\n\t\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}).show()\n\t\t}, 'html')\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport { getCapabilities as realGetCapabilities } from '@nextcloud/capabilities'\n\n/**\n * Returns the capabilities\n *\n * @return {Array} capabilities\n *\n * @since 14.0.0\n */\nexport const getCapabilities = () => {\n\tconsole.warn('OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities')\n\treturn realGetCapabilities()\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nexport const getProtocol = () => window.location.protocol.split(':')[0]\n\n/**\n * Returns the host used to access this Nextcloud instance\n * Host is sometimes the same as the hostname but now always.\n *\n * Examples:\n * http://example.com => example.com\n * https://example.com => example.com\n * http://example.com:8080 => example.com:8080\n *\n * @return {string} host\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.host directly\n */\nexport const getHost = () => window.location.host\n\n/**\n * Returns the hostname used to access this Nextcloud instance\n * The hostname is always stripped of the port\n *\n * @return {string} hostname\n * @since 9.0.0\n * @deprecated 17.0.0 use window.location.hostname directly\n */\nexport const getHostName = () => window.location.hostname\n\n/**\n * Returns the port number used to access this Nextcloud instance\n *\n * @return {number} port number\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.port directly\n */\nexport const getPort = () => window.location.port\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport $ from 'jquery'\n\n/**\n * Parses a URL query string into a JS map\n *\n * @param {string} queryString query string in the format param1=1234&param2=abcde&param3=xyz\n * @return {object.<string, string>} map containing key/values matching the URL parameters\n */\nexport const parse = queryString => {\n\tlet pos\n\tlet components\n\tconst result = {}\n\tlet key\n\tif (!queryString) {\n\t\treturn null\n\t}\n\tpos = queryString.indexOf('?')\n\tif (pos >= 0) {\n\t\tqueryString = queryString.substr(pos + 1)\n\t}\n\tconst parts = queryString.replace(/\\+/g, '%20').split('&')\n\tfor (let i = 0; i < parts.length; i++) {\n\t\t// split on first equal sign\n\t\tconst part = parts[i]\n\t\tpos = part.indexOf('=')\n\t\tif (pos >= 0) {\n\t\t\tcomponents = [\n\t\t\t\tpart.substr(0, pos),\n\t\t\t\tpart.substr(pos + 1),\n\t\t\t]\n\t\t} else {\n\t\t\t// key only\n\t\t\tcomponents = [part]\n\t\t}\n\t\tif (!components.length) {\n\t\t\tcontinue\n\t\t}\n\t\tkey = decodeURIComponent(components[0])\n\t\tif (!key) {\n\t\t\tcontinue\n\t\t}\n\t\t// if equal sign was there, return string\n\t\tif (components.length > 1) {\n\t\t\tresult[key] = decodeURIComponent(components[1])\n\t\t} else {\n\t\t\t// no equal sign => null value\n\t\t\tresult[key] = null\n\t\t}\n\t}\n\treturn result\n}\n\n/**\n * Builds a URL query from a JS map.\n *\n * @param {object.<string, string>} params map containing key/values matching the URL parameters\n * @return {string} String containing a URL query (without question) mark\n */\nexport const build = params => {\n\tif (!params) {\n\t\treturn ''\n\t}\n\treturn $.map(params, function(value, key) {\n\t\tlet s = encodeURIComponent(key)\n\t\tif (value !== null && typeof (value) !== 'undefined') {\n\t\t\ts += '=' + encodeURIComponent(value)\n\t\t}\n\t\treturn s\n\t}).join('&')\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nexport default {\n\n\t/**\n\t * @type {Array.<OC.Plugin>}\n\t */\n\t_plugins: {},\n\n\t/**\n\t * Register plugin\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @param {OC.Plugin} plugin plugin\n\t */\n\tregister(targetName, plugin) {\n\t\tlet plugins = this._plugins[targetName]\n\t\tif (!plugins) {\n\t\t\tplugins = this._plugins[targetName] = []\n\t\t}\n\t\tplugins.push(plugin)\n\t},\n\n\t/**\n\t * Returns all plugin registered to the given target\n\t * name / app name / class name.\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @return {Array.<OC.Plugin>} array of plugins\n\t */\n\tgetPlugins(targetName) {\n\t\treturn this._plugins[targetName] || []\n\t},\n\n\t/**\n\t * Call attach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tattach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].attach) {\n\t\t\t\tplugins[i].attach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Call detach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tdetach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].detach) {\n\t\t\t\tplugins[i].detach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nexport const redirect = targetURL => { window.location = targetURL }\n\n/**\n * Reloads the current page\n *\n * @deprecated 17.0.0 use window.location.reload directly\n */\nexport const reload = () => { window.location.reload() }\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport {\n\tgetRootUrl as realGetRootUrl,\n} from '@nextcloud/router'\n\n/**\n * Creates a relative url for remote use\n *\n * @param {string} service id\n * @return {string} the url\n */\nexport const linkToRemoteBase = service => {\n\treturn realGetRootUrl() + '/remote.php/' + service\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport $ from 'jquery'\nimport { emit } from '@nextcloud/event-bus'\nimport { loadState } from '@nextcloud/initial-state'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateUrl } from '@nextcloud/router'\n\nimport OC from './OC'\nimport { setToken as setRequestToken, getToken as getRequestToken } from './OC/requesttoken'\n\nlet config = null\n/**\n * The legacy jsunit tests overwrite OC.config before calling initCore\n * therefore we need to wait with assigning the config fallback until initCore calls initSessionHeartBeat\n */\nconst loadConfig = () => {\n\ttry {\n\t\tconfig = loadState('core', 'config')\n\t} catch (e) {\n\t\t// This fallback is just for our legacy jsunit tests since we have no way to mock loadState calls\n\t\tconfig = OC.config\n\t}\n}\n\n/**\n * session heartbeat (defaults to enabled)\n *\n * @return {boolean}\n */\nconst keepSessionAlive = () => {\n\treturn config.session_keepalive === undefined\n\t\t|| !!config.session_keepalive\n}\n\n/**\n * get interval in seconds\n *\n * @return {number}\n */\nconst getInterval = () => {\n\tlet interval = NaN\n\tif (config.session_lifetime) {\n\t\tinterval = Math.floor(config.session_lifetime / 2)\n\t}\n\n\t// minimum one minute, max 24 hours, default 15 minutes\n\treturn Math.min(\n\t\t24 * 3600,\n\t\tMath.max(\n\t\t\t60,\n\t\t\tisNaN(interval) ? 900 : interval\n\t\t)\n\t)\n}\n\nconst getToken = async () => {\n\tconst url = generateUrl('/csrftoken')\n\n\t// Not using Axios here as Axios is not stubbable with the sinon fake server\n\t// see https://stackoverflow.com/questions/41516044/sinon-mocha-test-with-async-ajax-calls-didnt-return-promises\n\t// see js/tests/specs/coreSpec.js for the tests\n\tconst resp = await $.get(url)\n\n\treturn resp.token\n}\n\nconst poll = async () => {\n\ttry {\n\t\tconst token = await getToken()\n\t\tsetRequestToken(token)\n\t} catch (e) {\n\t\tconsole.error('session heartbeat failed', e)\n\t}\n}\n\nconst startPolling = () => {\n\tconst interval = setInterval(poll, getInterval() * 1000)\n\n\tconsole.info('session heartbeat polling started')\n\n\treturn interval\n}\n\nconst registerAutoLogout = () => {\n\tif (!config.auto_logout || !getCurrentUser()) {\n\t\treturn\n\t}\n\n\tlet lastActive = Date.now()\n\twindow.addEventListener('mousemove', e => {\n\t\tlastActive = Date.now()\n\t\tlocalStorage.setItem('lastActive', lastActive)\n\t})\n\n\twindow.addEventListener('touchstart', e => {\n\t\tlastActive = Date.now()\n\t\tlocalStorage.setItem('lastActive', lastActive)\n\t})\n\n\twindow.addEventListener('storage', e => {\n\t\tif (e.key !== 'lastActive') {\n\t\t\treturn\n\t\t}\n\t\tlastActive = e.newValue\n\t})\n\n\tsetInterval(function() {\n\t\tconst timeout = Date.now() - config.session_lifetime * 1000\n\t\tif (lastActive < timeout) {\n\t\t\tconsole.info('Inactivity timout reached, logging out')\n\t\t\tconst logoutUrl = generateUrl('/logout') + '?requesttoken=' + encodeURIComponent(getRequestToken())\n\t\t\twindow.location = logoutUrl\n\t\t}\n\t}, 1000)\n}\n\n/**\n * Calls the server periodically to ensure that session and CSRF\n * token doesn't expire\n */\nexport const initSessionHeartBeat = () => {\n\tloadConfig()\n\n\tregisterAutoLogout()\n\n\tif (!keepSessionAlive()) {\n\t\tconsole.info('session heartbeat disabled')\n\t\treturn\n\t}\n\tlet interval = startPolling()\n\n\twindow.addEventListener('online', async () => {\n\t\tconsole.info('browser is online again, resuming heartbeat')\n\t\tinterval = startPolling()\n\t\ttry {\n\t\t\tawait poll()\n\t\t\tconsole.info('session token successfully updated after resuming network')\n\n\t\t\t// Let apps know we're online and requests will have the new token\n\t\t\temit('networkOnline', {\n\t\t\t\tsuccess: true,\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error('could not update session token after resuming network', e)\n\n\t\t\t// Let apps know we're online but requests might have an outdated token\n\t\t\temit('networkOnline', {\n\t\t\t\tsuccess: false,\n\t\t\t})\n\t\t}\n\t})\n\twindow.addEventListener('offline', () => {\n\t\tconsole.info('browser is offline, stopping heartbeat')\n\n\t\t// Let apps know we're offline\n\t\temit('networkOffline', {})\n\n\t\tclearInterval(interval)\n\t\tconsole.info('session heartbeat polling stopped')\n\t})\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Jan-Christoph Borchardt <hey@jancborchardt.net>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author nacho <nacho@ownyourbits.com>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n/* globals Snap */\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport moment from 'moment'\nimport cssVars from 'css-vars-ponyfill'\n\nimport { initSessionHeartBeat } from './session-heartbeat'\nimport OC from './OC/index'\nimport { setUp as setUpContactsMenu } from './components/ContactsMenu'\nimport { setUp as setUpMainMenu } from './components/MainMenu'\nimport { setUp as setUpUserMenu } from './components/UserMenu'\nimport PasswordConfirmation from './OC/password-confirmation'\n\n// keep in sync with core/css/variables.scss\nconst breakpointMobileWidth = 1024\n\nconst resizeMenu = () => {\n\tconst appList = $('#appmenu li')\n\tconst rightHeaderWidth = $('.header-right').outerWidth()\n\tconst headerWidth = $('header').outerWidth()\n\tconst usePercentualAppMenuLimit = 0.67\n\tconst minAppsDesktop = 12\n\tlet availableWidth = headerWidth - $('#nextcloud').outerWidth() - (rightHeaderWidth > 210 ? rightHeaderWidth : 210)\n\tconst isMobile = $(window).width() < breakpointMobileWidth\n\tif (!isMobile) {\n\t\tavailableWidth = availableWidth * usePercentualAppMenuLimit\n\t}\n\tlet appCount = Math.floor((availableWidth / $(appList).width()))\n\tif (isMobile && appCount > minAppsDesktop) {\n\t\tappCount = minAppsDesktop\n\t}\n\tif (!isMobile && appCount < minAppsDesktop) {\n\t\tappCount = minAppsDesktop\n\t}\n\n\t// show at least 2 apps in the popover\n\tif (appList.length - 1 - appCount >= 1) {\n\t\tappCount--\n\t}\n\n\t$('#more-apps a').removeClass('active')\n\tlet lastShownApp\n\tfor (let k = 0; k < appList.length - 1; k++) {\n\t\tconst name = $(appList[k]).data('id')\n\t\tif (k < appCount) {\n\t\t\t$(appList[k]).removeClass('hidden')\n\t\t\t$('#apps li[data-id=' + name + ']').addClass('in-header')\n\t\t\tlastShownApp = appList[k]\n\t\t} else {\n\t\t\t$(appList[k]).addClass('hidden')\n\t\t\t$('#apps li[data-id=' + name + ']').removeClass('in-header')\n\t\t\t// move active app to last position if it is active\n\t\t\tif (appCount > 0 && $(appList[k]).children('a').hasClass('active')) {\n\t\t\t\t$(lastShownApp).addClass('hidden')\n\t\t\t\t$('#apps li[data-id=' + $(lastShownApp).data('id') + ']').removeClass('in-header')\n\t\t\t\t$(appList[k]).removeClass('hidden')\n\t\t\t\t$('#apps li[data-id=' + name + ']').addClass('in-header')\n\t\t\t}\n\t\t}\n\t}\n\n\t// show/hide more apps icon\n\tif ($('#apps li:not(.in-header)').length === 0) {\n\t\t$('#more-apps').hide()\n\t\t$('#navigation').hide()\n\t} else {\n\t\t$('#more-apps').show()\n\t}\n}\n\nconst initLiveTimestamps = () => {\n\t// Update live timestamps every 30 seconds\n\tsetInterval(() => {\n\t\t$('.live-relative-timestamp').each(function() {\n\t\t\tconst timestamp = parseInt($(this).attr('data-timestamp'), 10)\n\t\t\t$(this).text(moment(timestamp).fromNow())\n\t\t})\n\t}, 30 * 1000)\n}\n\n/**\n * Moment doesn't have aliases for every locale and doesn't parse some locale IDs correctly so we need to alias them\n */\nconst localeAliases = {\n\tzh: 'zh-cn',\n\tzh_Hans: 'zh-cn',\n\tzh_Hans_CN: 'zh-cn',\n\tzh_Hans_HK: 'zh-cn',\n\tzh_Hans_MO: 'zh-cn',\n\tzh_Hans_SG: 'zh-cn',\n\tzh_Hant: 'zh-hk',\n\tzh_Hant_HK: 'zh-hk',\n\tzh_Hant_MO: 'zh-mo',\n\tzh_Hant_TW: 'zh-tw',\n}\nlet locale = OC.getLocale()\nif (Object.prototype.hasOwnProperty.call(localeAliases, locale)) {\n\tlocale = localeAliases[locale]\n}\n\n/**\n * Set users locale to moment.js as soon as possible\n */\nmoment.locale(locale)\n\n/**\n * Initializes core\n */\nexport const initCore = () => {\n\tconst userAgent = window.navigator.userAgent\n\tconst edge = userAgent.indexOf('Edge/')\n\n\tif (edge > 0) {\n\t\t$('html').addClass('edge')\n\t\tconsole.info('Legacy browser detected, applying css vars polyfill')\n\t\tcssVars({\n\t\t\twatch: true,\n\t\t\t// set edge < 16 as incompatible\n\t\t\tonlyLegacy: !(/Edge\\/([0-9]{2})\\./i.test(navigator.userAgent)\n\t\t\t\t&& parseInt(/Edge\\/([0-9]{2})\\./i.exec(navigator.userAgent)[1]) < 16),\n\t\t})\n\t}\n\n\t$(window).on('unload.main', () => { OC._unloadCalled = true })\n\t$(window).on('beforeunload.main', () => {\n\t\t// super-trick thanks to http://stackoverflow.com/a/4651049\n\t\t// in case another handler displays a confirmation dialog (ex: navigating away\n\t\t// during an upload), there are two possible outcomes: user clicked \"ok\" or\n\t\t// \"cancel\"\n\n\t\t// first timeout handler is called after unload dialog is closed\n\t\tsetTimeout(() => {\n\t\t\tOC._userIsNavigatingAway = true\n\n\t\t\t// second timeout event is only called if user cancelled (Chrome),\n\t\t\t// but in other browsers it might still be triggered, so need to\n\t\t\t// set a higher delay...\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (!OC._unloadCalled) {\n\t\t\t\t\tOC._userIsNavigatingAway = false\n\t\t\t\t}\n\t\t\t}, 10000)\n\t\t}, 1)\n\t})\n\t$(document).on('ajaxError.main', function(event, request, settings) {\n\t\tif (settings && settings.allowAuthErrors) {\n\t\t\treturn\n\t\t}\n\t\tOC._processAjaxError(request)\n\t})\n\n\tinitSessionHeartBeat()\n\n\tOC.registerMenu($('#expand'), $('#expanddiv'), false, true)\n\n\t// toggle for menus\n\t$(document).on('mouseup.closemenus', event => {\n\t\tconst $el = $(event.target)\n\t\tif ($el.closest('.menu').length || $el.closest('.menutoggle').length) {\n\t\t\t// don't close when clicking on the menu directly or a menu toggle\n\t\t\treturn false\n\t\t}\n\n\t\tOC.hideMenus()\n\t})\n\n\tsetUpMainMenu()\n\tsetUpUserMenu()\n\tsetUpContactsMenu()\n\n\t// move triangle of apps dropdown to align with app name triangle\n\t// 2 is the additional offset between the triangles\n\tif ($('#navigation').length) {\n\t\t$('#header #nextcloud + .menutoggle').on('click', () => {\n\t\t\t$('#menu-css-helper').remove()\n\t\t\tconst caretPosition = $('.header-appname + .icon-caret').offset().left - 2\n\t\t\tif (caretPosition > 255) {\n\t\t\t\t// if the app name is longer than the menu, just put the triangle in the middle\n\n\t\t\t} else {\n\t\t\t\t$('head').append('<style id=\"menu-css-helper\">#navigation:after { left: ' + caretPosition + 'px }</style>')\n\t\t\t}\n\t\t})\n\t\t$('#header #appmenu .menutoggle').on('click', () => {\n\t\t\t$('#appmenu').toggleClass('menu-open')\n\t\t\tif ($('#appmenu').is(':visible')) {\n\t\t\t\t$('#menu-css-helper').remove()\n\t\t\t}\n\t\t})\n\t}\n\n\t$(window).resize(resizeMenu)\n\tsetTimeout(resizeMenu, 0)\n\n\t// just add snapper for logged in users\n\t// and if the app doesn't handle the nav slider itself\n\tif ($('#app-navigation').length && !$('html').hasClass('lte9')\n\t\t&& !$('#app-content').hasClass('no-snapper')) {\n\n\t\t// App sidebar on mobile\n\t\tconst snapper = new Snap({\n\t\t\telement: document.getElementById('app-content'),\n\t\t\tdisable: 'right',\n\t\t\tmaxPosition: 300, // $navigation-width\n\t\t\tminDragDistance: 100,\n\t\t})\n\n\t\t$('#app-content').prepend('<div id=\"app-navigation-toggle\" class=\"icon-menu\" style=\"display:none\" tabindex=\"0\"></div>')\n\n\t\t// keep track whether snapper is currently animating, and\n\t\t// prevent to call open or close while that is the case\n\t\t// to avoid duplicating events (snap.js doesn't check this)\n\t\tlet animating = false\n\t\tsnapper.on('animating', () => {\n\t\t\t// we need this because the trigger button\n\t\t\t// is also implicitly wired to close by snapper\n\t\t\tanimating = true\n\t\t})\n\t\tsnapper.on('animated', () => {\n\t\t\tanimating = false\n\t\t})\n\t\tsnapper.on('start', () => {\n\t\t\t// we need this because dragging triggers that\n\t\t\tanimating = true\n\t\t})\n\t\tsnapper.on('end', () => {\n\t\t\t// we need this because dragging stop triggers that\n\t\t\tanimating = false\n\t\t})\n\n\t\t// These are necessary because calling open or close\n\t\t// on snapper during an animation makes it trigger an\n\t\t// unfinishable animation, which itself will continue\n\t\t// triggering animating events and cause high CPU load,\n\t\t//\n\t\t// Ref https://github.com/jakiestfu/Snap.js/issues/216\n\t\tconst oldSnapperOpen = snapper.open\n\t\tconst oldSnapperClose = snapper.close\n\t\tconst _snapperOpen = () => {\n\t\t\tif (animating || snapper.state().state !== 'closed') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\toldSnapperOpen('left')\n\t\t}\n\n\t\tconst _snapperClose = () => {\n\t\t\tif (animating || snapper.state().state === 'closed') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\toldSnapperClose()\n\t\t}\n\n\t\t// Needs to be deferred to properly catch in-between\n\t\t// events that snap.js is triggering after dragging.\n\t\t//\n\t\t// Skipped when running unit tests as we are not testing\n\t\t// the snap.js workarounds...\n\t\tif (!window.TESTING) {\n\t\t\tsnapper.open = () => {\n\t\t\t\t_.defer(_snapperOpen)\n\t\t\t}\n\t\t\tsnapper.close = () => {\n\t\t\t\t_.defer(_snapperClose)\n\t\t\t}\n\t\t}\n\n\t\t$('#app-navigation-toggle').click((e) => {\n\t\t\t// close is implicit in the button by snap.js\n\t\t\tif (snapper.state().state !== 'left') {\n\t\t\t\tsnapper.open()\n\t\t\t}\n\t\t})\n\t\t$('#app-navigation-toggle').keypress(e => {\n\t\t\tif (snapper.state().state === 'left') {\n\t\t\t\tsnapper.close()\n\t\t\t} else {\n\t\t\t\tsnapper.open()\n\t\t\t}\n\t\t})\n\n\t\t// close sidebar when switching navigation entry\n\t\tconst $appNavigation = $('#app-navigation')\n\t\t$appNavigation.delegate('a, :button', 'click', event => {\n\t\t\tconst $target = $(event.target)\n\t\t\t// don't hide navigation when changing settings or adding things\n\t\t\tif ($target.is('.app-navigation-noclose')\n\t\t\t\t|| $target.closest('.app-navigation-noclose').length) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif ($target.is('.app-navigation-entry-utils-menu-button')\n\t\t\t\t|| $target.closest('.app-navigation-entry-utils-menu-button').length) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif ($target.is('.add-new')\n\t\t\t\t|| $target.closest('.add-new').length) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif ($target.is('#app-settings')\n\t\t\t\t|| $target.closest('#app-settings').length) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tsnapper.close()\n\t\t})\n\n\t\tlet navigationBarSlideGestureEnabled = false\n\t\tlet navigationBarSlideGestureAllowed = true\n\t\tlet navigationBarSlideGestureEnablePending = false\n\n\t\tOC.allowNavigationBarSlideGesture = () => {\n\t\t\tnavigationBarSlideGestureAllowed = true\n\n\t\t\tif (navigationBarSlideGestureEnablePending) {\n\t\t\t\tsnapper.enable()\n\n\t\t\t\tnavigationBarSlideGestureEnabled = true\n\t\t\t\tnavigationBarSlideGestureEnablePending = false\n\t\t\t}\n\t\t}\n\n\t\tOC.disallowNavigationBarSlideGesture = () => {\n\t\t\tnavigationBarSlideGestureAllowed = false\n\n\t\t\tif (navigationBarSlideGestureEnabled) {\n\t\t\t\tconst endCurrentDrag = true\n\t\t\t\tsnapper.disable(endCurrentDrag)\n\n\t\t\t\tnavigationBarSlideGestureEnabled = false\n\t\t\t\tnavigationBarSlideGestureEnablePending = true\n\t\t\t}\n\t\t}\n\n\t\tconst toggleSnapperOnSize = () => {\n\t\t\tif ($(window).width() > breakpointMobileWidth) {\n\t\t\t\tsnapper.close()\n\t\t\t\tsnapper.disable()\n\n\t\t\t\tnavigationBarSlideGestureEnabled = false\n\t\t\t\tnavigationBarSlideGestureEnablePending = false\n\t\t\t} else if (navigationBarSlideGestureAllowed) {\n\t\t\t\tsnapper.enable()\n\n\t\t\t\tnavigationBarSlideGestureEnabled = true\n\t\t\t\tnavigationBarSlideGestureEnablePending = false\n\t\t\t} else {\n\t\t\t\tnavigationBarSlideGestureEnablePending = true\n\t\t\t}\n\t\t}\n\n\t\t$(window).resize(_.debounce(toggleSnapperOnSize, 250))\n\n\t\t// initial call\n\t\ttoggleSnapperOnSize()\n\n\t}\n\n\tinitLiveTimestamps()\n\tPasswordConfirmation.init()\n}\n","/**\n * @copyright 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nimport $ from 'jquery'\n\n$.prototype.tooltip = (function(tooltip) {\n\treturn function(config) {\n\t\ttry {\n\t\t\treturn tooltip.call(this, config)\n\t\t} catch (ex) {\n\t\t\tif (ex instanceof TypeError && config === 'destroy') {\n\t\t\t\tif (window.TESTING === undefined) {\n\t\t\t\t\tconsole.error('Deprecated call $.tooltip(\\'destroy\\') has been deprecated and should be removed')\n\t\t\t\t}\n\t\t\t\treturn tooltip.call(this, 'dispose')\n\t\t\t}\n\t\t\tif (ex instanceof TypeError && config === 'fixTitle') {\n\t\t\t\tif (window.TESTING === undefined) {\n\t\t\t\t\tconsole.error('Deprecated call $.tooltip(\\'fixTitle\\') has been deprecated and should be removed')\n\t\t\t\t}\n\t\t\t\treturn tooltip.call(this, '_fixTitle')\n\t\t\t}\n\t\t}\n\t}\n})($.prototype.tooltip)\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 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 */\n\nimport OC from '../OC'\n\nimport $ from 'jquery'\n\nexport const setUp = () => {\n\tconst $menu = $('#header #settings')\n\t// Using page terminoogy as below\n\tconst $excludedPageClasses = [\n\t\t'user-status-menu-item__header',\n\t]\n\n\t// show loading feedback\n\t$menu.delegate('a', 'click', event => {\n\t\tlet $page = $(event.target)\n\t\tif (!$page.is('a')) {\n\t\t\t$page = $page.closest('a')\n\t\t}\n\t\tif (event.which === 1 && !event.ctrlKey && !event.metaKey) {\n\t\t\tif (!$excludedPageClasses.includes($page.attr('class'))) {\n\t\t\t\t$page.find('img').remove()\n\t\t\t\t$page.find('div').remove() // prevent odd double-clicks\n\t\t\t\t$page.prepend($('<div></div>').addClass('icon-loading-small'))\n\t\t\t}\n\t\t} else {\n\t\t\t// Close navigation when opening menu entry in\n\t\t\t// a new tab\n\t\t\tOC.hideMenus(() => false)\n\t\t}\n\t})\n\n\t$menu.delegate('a', 'mouseup', event => {\n\t\tif (event.which === 2) {\n\t\t\t// Close navigation when opening app in\n\t\t\t// a new tab via middle click\n\t\t\tOC.hideMenus(() => false)\n\t\t}\n\t})\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nimport $ from 'jquery'\n\nimport OC from '../OC'\n\n/**\n * Set up the main menu toggle to react to media query changes.\n * If the screen is small enough, the main menu becomes a toggle.\n * If the screen is bigger, the main menu is not a toggle any more.\n */\nexport const setUp = () => {\n\n\tObject.assign(OC, {\n\t\tsetNavigationCounter(id, counter) {\n\t\t\tconst appmenuElement = document.getElementById('appmenu').querySelector('[data-id=\"' + id + '\"] svg')\n\t\t\tconst appsElement = document.getElementById('apps').querySelector('[data-id=\"' + id + '\"] svg')\n\t\t\tif (counter === 0) {\n\t\t\t\tappmenuElement.classList.remove('has-unread')\n\t\t\t\tappsElement.classList.remove('has-unread')\n\t\t\t\tappmenuElement.getElementsByTagName('image')[0].style.mask = ''\n\t\t\t\tappsElement.getElementsByTagName('image')[0].style.mask = ''\n\t\t\t} else {\n\t\t\t\tappmenuElement.classList.add('has-unread')\n\t\t\t\tappsElement.classList.add('has-unread')\n\t\t\t\tappmenuElement.getElementsByTagName('image')[0].style.mask = 'url(#hole)'\n\t\t\t\tappsElement.getElementsByTagName('image')[0].style.mask = 'url(#hole)'\n\t\t\t}\n\t\t\tdocument.getElementById('appmenu').querySelector('[data-id=\"' + id + '\"] .unread-counter').textContent = counter\n\t\t\tdocument.getElementById('apps').querySelector('[data-id=\"' + id + '\"] .unread-counter').textContent = counter\n\t\t},\n\t})\n\t// init the more-apps menu\n\tOC.registerMenu($('#more-apps > a'), $('#navigation'))\n\n\t// toggle the navigation\n\tconst $toggle = $('#header .header-appname-container')\n\tconst $navigation = $('#navigation')\n\tconst $appmenu = $('#appmenu')\n\n\t// init the menu\n\tOC.registerMenu($toggle, $navigation)\n\t$toggle.data('oldhref', $toggle.attr('href'))\n\t$toggle.attr('href', '#')\n\t$navigation.hide()\n\n\t// show loading feedback on more apps list\n\t$navigation.delegate('a', 'click', event => {\n\t\tlet $app = $(event.target)\n\t\tif (!$app.is('a')) {\n\t\t\t$app = $app.closest('a')\n\t\t}\n\t\tif (event.which === 1 && !event.ctrlKey && !event.metaKey && $app.attr('target') !== '_blank') {\n\t\t\t$app.find('svg').remove()\n\t\t\t$app.find('div').remove() // prevent odd double-clicks\n\t\t\t// no need for theming, loader is already inverted on dark mode\n\t\t\t// but we need it over the primary colour\n\t\t\t$app.prepend($('<div></div>').addClass('icon-loading-small'))\n\t\t} else {\n\t\t\t// Close navigation when opening app in\n\t\t\t// a new tab\n\t\t\tOC.hideMenus(() => false)\n\t\t}\n\t})\n\n\t$navigation.delegate('a', 'mouseup', event => {\n\t\tif (event.which === 2) {\n\t\t\t// Close navigation when opening app in\n\t\t\t// a new tab via middle click\n\t\t\tOC.hideMenus(() => false)\n\t\t}\n\t})\n\n\t// show loading feedback on visible apps list\n\t$appmenu.delegate('li:not(#more-apps) > a', 'click', event => {\n\t\tlet $app = $(event.target)\n\t\tif (!$app.is('a')) {\n\t\t\t$app = $app.closest('a')\n\t\t}\n\n\t\tif (event.which === 1 && !event.ctrlKey && !event.metaKey && $app.parent('#more-apps').length === 0 && $app.attr('target') !== '_blank') {\n\t\t\t$app.find('svg').remove()\n\t\t\t$app.find('div').remove() // prevent odd double-clicks\n\t\t\t$app.prepend($('<div></div>').addClass(\n\t\t\t\tOCA.Theming && OCA.Theming.inverted\n\t\t\t\t\t? 'icon-loading-small'\n\t\t\t\t\t: 'icon-loading-small-dark'\n\t\t\t))\n\t\t\t// trigger redirect\n\t\t\t// needed for ie, but also works for every browser\n\t\t\twindow.location = $app.attr('href')\n\t\t} else {\n\t\t\t// Close navigation when opening app in\n\t\t\t// a new tab\n\t\t\tOC.hideMenus(() => false)\n\t\t}\n\t})\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport $ from 'jquery'\nimport OC from '../OC'\n\n/**\n * @todo move to contacts menu code https://github.com/orgs/nextcloud/projects/31#card-21213129\n */\nexport const setUp = () => {\n\t// eslint-disable-next-line no-new\n\tnew OC.ContactsMenu({\n\t\tel: $('#contactsmenu .menu'),\n\t\ttrigger: $('#contactsmenu .menutoggle'),\n\t})\n}\n","/**\n * @copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport $ from 'jquery'\n\n/*\n * Detects links:\n * Either the http(s) protocol is given or two strings, basically limited to ascii with the last\n * word being at least one digit long,\n * followed by at least another character\n *\n * The downside: anything not ascii is excluded. Not sure how common it is in areas using different\n * alphabets… the upside: fake domains with similar looking characters won't be formatted as links\n */\nconst urlRegex = /(\\s|^)(https?:\\/\\/)?((?:[-A-Z0-9+_]+\\.)+[-A-Z]+(?:\\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*)(\\s|$)/ig\n\n/**\n * @param {any} content -\n */\nexport function plainToRich(content) {\n\treturn this.formatLinksRich(content)\n}\n\n/**\n * @param {any} content -\n */\nexport function richToPlain(content) {\n\treturn this.formatLinksPlain(content)\n}\n\n/**\n * @param {any} content -\n */\nexport function formatLinksRich(content) {\n\treturn content.replace(urlRegex, function(_, leadingSpace, protocol, url, trailingSpace) {\n\t\tlet linkText = url\n\t\tif (!protocol) {\n\t\t\tprotocol = 'https://'\n\t\t} else if (protocol === 'http://') {\n\t\t\tlinkText = protocol + url\n\t\t}\n\n\t\treturn leadingSpace + '<a class=\"external\" target=\"_blank\" rel=\"noopener noreferrer\" href=\"' + protocol + url + '\">' + linkText + '</a>' + trailingSpace\n\t})\n}\n\n/**\n * @param {any} content -\n */\nexport function formatLinksPlain(content) {\n\tconst $content = $('<div></div>').html(content)\n\t$content.find('a').each(function() {\n\t\tconst $this = $(this)\n\t\t$this.html($this.attr('href'))\n\t})\n\treturn $content.html()\n}\n","/**\n * @copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n * @param {any} options -\n */\nexport function query(options) {\n\toptions = options || {}\n\tconst dismissOptions = options.dismiss || {}\n\t$.ajax({\n\t\ttype: 'GET',\n\t\turl: options.url || generateOcsUrl('core/whatsnew?format=json'),\n\t\tsuccess: options.success || function(data, statusText, xhr) {\n\t\t\tonQuerySuccess(data, statusText, xhr, dismissOptions)\n\t\t},\n\t\terror: options.error || onQueryError,\n\t})\n}\n\n/**\n * @param {any} version -\n * @param {any} options -\n */\nexport function dismiss(version, options) {\n\toptions = options || {}\n\t$.ajax({\n\t\ttype: 'POST',\n\t\turl: options.url || generateOcsUrl('core/whatsnew'),\n\t\tdata: { version: encodeURIComponent(version) },\n\t\tsuccess: options.success || onDismissSuccess,\n\t\terror: options.error || onDismissError,\n\t})\n\t// remove element immediately\n\t$('.whatsNewPopover').remove()\n}\n\n/**\n * @param {any} data -\n * @param {any} statusText -\n * @param {any} xhr -\n * @param {any} dismissOptions -\n */\nfunction onQuerySuccess(data, statusText, xhr, dismissOptions) {\n\tconsole.debug('querying Whats New data was successful: ' + statusText)\n\tconsole.debug(data)\n\n\tif (xhr.status !== 200) {\n\t\treturn\n\t}\n\n\tlet item, menuItem, text, icon\n\n\tconst div = document.createElement('div')\n\tdiv.classList.add('popovermenu', 'open', 'whatsNewPopover', 'menu-left')\n\n\tconst list = document.createElement('ul')\n\n\t// header\n\titem = document.createElement('li')\n\tmenuItem = document.createElement('span')\n\tmenuItem.className = 'menuitem'\n\n\ttext = document.createElement('span')\n\ttext.innerText = t('core', 'New in') + ' ' + data.ocs.data.product\n\ttext.className = 'caption'\n\tmenuItem.appendChild(text)\n\n\ticon = document.createElement('span')\n\ticon.className = 'icon-close'\n\ticon.onclick = function() {\n\t\tdismiss(data.ocs.data.version, dismissOptions)\n\t}\n\tmenuItem.appendChild(icon)\n\n\titem.appendChild(menuItem)\n\tlist.appendChild(item)\n\n\t// Highlights\n\tfor (const i in data.ocs.data.whatsNew.regular) {\n\t\tconst whatsNewTextItem = data.ocs.data.whatsNew.regular[i]\n\t\titem = document.createElement('li')\n\n\t\tmenuItem = document.createElement('span')\n\t\tmenuItem.className = 'menuitem'\n\n\t\ticon = document.createElement('span')\n\t\ticon.className = 'icon-checkmark'\n\t\tmenuItem.appendChild(icon)\n\n\t\ttext = document.createElement('p')\n\t\ttext.innerHTML = _.escape(whatsNewTextItem)\n\t\tmenuItem.appendChild(text)\n\n\t\titem.appendChild(menuItem)\n\t\tlist.appendChild(item)\n\t}\n\n\t// Changelog URL\n\tif (!_.isUndefined(data.ocs.data.changelogURL)) {\n\t\titem = document.createElement('li')\n\n\t\tmenuItem = document.createElement('a')\n\t\tmenuItem.href = data.ocs.data.changelogURL\n\t\tmenuItem.rel = 'noreferrer noopener'\n\t\tmenuItem.target = '_blank'\n\n\t\ticon = document.createElement('span')\n\t\ticon.className = 'icon-link'\n\t\tmenuItem.appendChild(icon)\n\n\t\ttext = document.createElement('span')\n\t\ttext.innerText = t('core', 'View changelog')\n\t\tmenuItem.appendChild(text)\n\n\t\titem.appendChild(menuItem)\n\t\tlist.appendChild(item)\n\t}\n\n\tdiv.appendChild(list)\n\tdocument.body.appendChild(div)\n}\n\n/**\n * @param {any} x -\n * @param {any} t -\n * @param {any} e -\n */\nfunction onQueryError(x, t, e) {\n\tconsole.debug('querying Whats New Data resulted in an error: ' + t + e)\n\tconsole.debug(x)\n}\n\n/**\n * @param {any} data -\n */\nfunction onDismissSuccess(data) {\n\t// noop\n}\n\n/**\n * @param {any} data -\n */\nfunction onDismissError(data) {\n\tconsole.debug('dismissing Whats New data resulted in an error: ' + data)\n}\n","/**\n * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nimport escapeHTML from 'escape-html'\n\n/**\n * @typedef TypeDefinition\n * @function {Function} action This action is executed to let the user select a resource\n * @param {string} icon Contains the icon css class for the type\n * @function Object() { [native code] }\n */\n\n/**\n * @type {TypeDefinition[]}\n */\nconst types = {}\n\n/**\n * Those translations will be used by the vue component but they should be shipped with the server\n * FIXME: Those translations should be added to the library\n *\n * @return {Array}\n */\nexport const l10nProjects = () => {\n\treturn [\n\t\tt('core', 'Add to a project'),\n\t\tt('core', 'Show details'),\n\t\tt('core', 'Hide details'),\n\t\tt('core', 'Rename project'),\n\t\tt('core', 'Failed to rename the project'),\n\t\tt('core', 'Failed to create a project'),\n\t\tt('core', 'Failed to add the item to the project'),\n\t\tt('core', 'Connect items to a project to make them easier to find'),\n\t\tt('core', 'Type to search for existing projects'),\n\t]\n}\n\nexport default {\n\t/**\n\t *\n\t * @param {string} type type\n\t * @param {TypeDefinition} typeDefinition typeDefinition\n\t */\n\tregisterType(type, typeDefinition) {\n\t\ttypes[type] = typeDefinition\n\t},\n\ttrigger(type) {\n\t\treturn types[type].action()\n\t},\n\tgetTypes() {\n\t\treturn Object.keys(types)\n\t},\n\tgetIcon(type) {\n\t\treturn types[type].typeIconClass || ''\n\t},\n\tgetLabel(type) {\n\t\treturn escapeHTML(types[type].typeString || type)\n\t},\n\tgetLink(type, id) {\n\t\t/* TODO: Allow action to be executed instead of href as well */\n\t\treturn typeof types[type] !== 'undefined' ? types[type].link(id) : ''\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\n/* eslint-disable @nextcloud/no-deprecations */\nimport { initCore } from './init'\n\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport 'jquery-migrate/dist/jquery-migrate.min'\n// TODO: switch to `jquery-ui` package and import widgets and effects individually\n// `jquery-ui-dist` is used as a workaround for the issue of missing effects\nimport 'jquery-ui-dist/jquery-ui'\nimport 'jquery-ui-dist/jquery-ui.css'\nimport 'jquery-ui-dist/jquery-ui.theme.css'\n// END TODO\nimport autosize from 'autosize'\nimport Backbone from 'backbone'\nimport 'bootstrap/js/dist/tooltip'\nimport './Polyfill/tooltip'\nimport ClipboardJS from 'clipboard'\nimport { dav } from 'davclient.js'\nimport Handlebars from 'handlebars'\nimport '@nextcloud/jcrop/js/jquery.Jcrop'\nimport '@nextcloud/jcrop/css/jquery.Jcrop.css'\nimport md5 from 'blueimp-md5'\nimport moment from 'moment'\nimport 'select2'\nimport 'select2/select2.css'\nimport 'snap.js/dist/snap'\nimport 'strengthify'\nimport 'strengthify/strengthify.css'\n\nimport OC from './OC/index'\nimport OCP from './OCP/index'\nimport OCA from './OCA/index'\nimport { getToken as getRequestToken } from './OC/requesttoken'\n\nconst warnIfNotTesting = function() {\n\tif (window.TESTING === undefined) {\n\t\tconsole.warn.apply(console, arguments)\n\t}\n}\n\n/**\n * Mark a function as deprecated and automatically\n * warn if used!\n *\n * @param {Function} func the library to deprecate\n * @param {string} funcName the name of the library\n * @param {number} version the version this gets removed\n * @return {Function}\n */\nconst deprecate = (func, funcName, version) => {\n\tconst oldFunc = func\n\tconst newFunc = function() {\n\t\twarnIfNotTesting(`The ${funcName} library is deprecated! It will be removed in nextcloud ${version}.`)\n\t\treturn oldFunc.apply(this, arguments)\n\t}\n\tObject.assign(newFunc, oldFunc)\n\treturn newFunc\n}\n\nconst setDeprecatedProp = (global, cb, msg) => {\n\t(Array.isArray(global) ? global : [global]).forEach(global => {\n\t\tif (window[global] !== undefined) {\n\t\t\tdelete window[global]\n\t\t}\n\t\tObject.defineProperty(window, global, {\n\t\t\tget: () => {\n\t\t\t\tif (msg) {\n\t\t\t\t\twarnIfNotTesting(`${global} is deprecated: ${msg}`)\n\t\t\t\t} else {\n\t\t\t\t\twarnIfNotTesting(`${global} is deprecated`)\n\t\t\t\t}\n\n\t\t\t\treturn cb()\n\t\t\t},\n\t\t})\n\t})\n}\n\nwindow._ = _\nsetDeprecatedProp(['$', 'jQuery'], () => $, 'The global jQuery is deprecated. It will be removed in a later versions without another warning. Please ship your own.')\nsetDeprecatedProp('autosize', () => autosize, 'please ship your own, this will be removed in Nextcloud 20')\nsetDeprecatedProp('Backbone', () => Backbone, 'please ship your own, this will be removed in Nextcloud 20')\nsetDeprecatedProp(['Clipboard', 'ClipboardJS'], () => ClipboardJS, 'please ship your own, this will be removed in Nextcloud 20')\nwindow.dav = dav\nsetDeprecatedProp('Handlebars', () => Handlebars, 'please ship your own, this will be removed in Nextcloud 20')\nsetDeprecatedProp('md5', () => md5, 'please ship your own, this will be removed in Nextcloud 20')\nsetDeprecatedProp('moment', () => moment, 'please ship your own, this will be removed in Nextcloud 20')\n\nwindow.OC = OC\nsetDeprecatedProp('initCore', () => initCore, 'this is an internal function')\nsetDeprecatedProp('oc_appswebroots', () => OC.appswebroots, 'use OC.appswebroots instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_config', () => OC.config, 'use OC.config instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_current_user', () => OC.getCurrentUser().uid, 'use OC.getCurrentUser().uid instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_debug', () => OC.debug, 'use OC.debug instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_defaults', () => OC.theme, 'use OC.theme instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_isadmin', OC.isUserAdmin, 'use OC.isUserAdmin() instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_requesttoken', () => getRequestToken(), 'use OC.requestToken instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_webroot', () => OC.webroot, 'use OC.getRootPath() instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('OCDialogs', () => OC.dialogs, 'use OC.dialogs instead, this will be removed in Nextcloud 20')\nwindow.OCP = OCP\nwindow.OCA = OCA\n$.fn.select2 = deprecate($.fn.select2, 'select2', 19)\n\n/**\n * translate a string\n *\n * @param {string} app the id of the app for which to translate the string\n * @param {string} text the string to translate\n * @param [vars] map of placeholder key to value\n * @param {number} [count] number to replace %n with\n * @return {string}\n */\nwindow.t = _.bind(OC.L10N.translate, OC.L10N)\n\n/**\n * translate a string\n *\n * @param {string} app the id of the app for which to translate the string\n * @param {string} text_singular the string to translate for exactly one object\n * @param {string} text_plural the string to translate for n objects\n * @param {number} count number to determine whether to use singular or plural\n * @param [vars] map of placeholder key to value\n * @return {string} Translated string\n */\nwindow.n = _.bind(OC.L10N.translatePlural, OC.L10N)\n","/**\n * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nconst loadedScripts = {}\nconst loadedStylesheets = {}\n/**\n * @namespace OCP\n * @class Loader\n */\nexport default {\n\n\t/**\n\t * Load a script asynchronously\n\t *\n\t * @param {string} app the app name\n\t * @param {string} file the script file name\n\t * @return {Promise}\n\t */\n\tloadScript(app, file) {\n\t\tconst key = app + file\n\t\tif (Object.prototype.hasOwnProperty.call(loadedScripts, key)) {\n\t\t\treturn Promise.resolve()\n\t\t}\n\t\tloadedScripts[key] = true\n\t\treturn new Promise(function(resolve, reject) {\n\t\t\tconst scriptPath = OC.filePath(app, 'js', file)\n\t\t\tconst script = document.createElement('script')\n\t\t\tscript.src = scriptPath\n\t\t\tscript.setAttribute('nonce', btoa(OC.requestToken))\n\t\t\tscript.onload = () => resolve()\n\t\t\tscript.onerror = () => reject(new Error(`Failed to load script from ${scriptPath}`))\n\t\t\tdocument.head.appendChild(script)\n\t\t})\n\t},\n\n\t/**\n\t * Load a stylesheet file asynchronously\n\t *\n\t * @param {string} app the app name\n\t * @param {string} file the script file name\n\t * @return {Promise}\n\t */\n\tloadStylesheet(app, file) {\n\t\tconst key = app + file\n\t\tif (Object.prototype.hasOwnProperty.call(loadedStylesheets, key)) {\n\t\t\treturn Promise.resolve()\n\t\t}\n\t\tloadedStylesheets[key] = true\n\t\treturn new Promise(function(resolve, reject) {\n\t\t\tconst stylePath = OC.filePath(app, 'css', file)\n\t\t\tconst link = document.createElement('link')\n\t\t\tlink.href = stylePath\n\t\t\tlink.type = 'text/css'\n\t\t\tlink.rel = 'stylesheet'\n\t\t\tlink.onload = () => resolve()\n\t\t\tlink.onerror = () => reject(new Error(`Failed to load stylesheet from ${stylePath}`))\n\t\t\tdocument.head.appendChild(link)\n\t\t})\n\t},\n}\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nimport {\n\tshowError,\n\tshowInfo, showMessage,\n\tshowSuccess,\n\tshowWarning,\n} from '@nextcloud/dialogs'\n\nexport default {\n\t/**\n\t * @deprecated 19.0.0 use `showSuccess` from the `@nextcloud/dialogs` package instead\n\t *\n\t * @param {string} text the toast text\n\t * @param {object} options options\n\t * @return {Toast}\n\t */\n\tsuccess(text, options) {\n\t\treturn showSuccess(text, options)\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `showWarning` from the `@nextcloud/dialogs` package instead\n\t *\n\t * @param {string} text the toast text\n\t * @param {object} options options\n\t * @return {Toast}\n\t */\n\twarning(text, options) {\n\t\treturn showWarning(text, options)\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `showError` from the `@nextcloud/dialogs` package instead\n\t *\n\t * @param {string} text the toast text\n\t * @param {object} options options\n\t * @return {Toast}\n\t */\n\terror(text, options) {\n\t\treturn showError(text, options)\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `showInfo` from the `@nextcloud/dialogs` package instead\n\t *\n\t * @param {string} text the toast text\n\t * @param {object} options options\n\t * @return {Toast}\n\t */\n\tinfo(text, options) {\n\t\treturn showInfo(text, options)\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `showMessage` from the `@nextcloud/dialogs` package instead\n\t *\n\t * @param {string} text the toast text\n\t * @param {object} options options\n\t * @return {Toast}\n\t */\n\tmessage(text, options) {\n\t\treturn showMessage(text, options)\n\t},\n\n}\n","/**\n * @copyright Copyright (c) 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nimport { loadState } from '@nextcloud/initial-state'\n\nimport * as AppConfig from './appconfig'\nimport * as Comments from './comments'\nimport * as WhatsNew from './whatsnew'\n\nimport Collaboration from './collaboration'\nimport Loader from './loader'\nimport Toast from './toast'\n\n/** @namespace OCP */\nexport default {\n\tAppConfig,\n\tCollaboration,\n\tComments,\n\tInitialState: {\n\t\t/**\n\t\t * @deprecated 18.0.0 add https://www.npmjs.com/package/@nextcloud/initial-state to your app\n\t\t */\n\t\tloadState,\n\t},\n\tLoader,\n\t/**\n\t * @deprecated 19.0.0 use the `@nextcloud/dialogs` package instead\n\t */\n\tToast,\n\tWhatsNew,\n}\n","/**\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport $ from 'jquery'\n\nimport OC from '../OC'\n\n/**\n * This plugin inserts the right avatar for the user, depending on, whether a\n * custom avatar is uploaded - which it uses then - or not, and display a\n * placeholder with the first letter of the users name instead.\n * For this it queries the core_avatar_get route, thus this plugin is fit very\n * tightly for owncloud, and it may not work anywhere else.\n *\n * You may use this on any <div></div>\n * Here I'm using <div class=\"avatardiv\"></div> as an example.\n *\n * There are 5 ways to call this:\n *\n * 1. $('.avatardiv').avatar('jdoe', 128);\n * This will make the div to jdoe's fitting avatar, with a size of 128px.\n *\n * 2. $('.avatardiv').avatar('jdoe');\n * This will make the div to jdoe's fitting avatar. If the div already has a\n * height, it will be used for the avatars size. Otherwise this plugin will\n * search for 'size' DOM data, to use for avatar size. If neither are available\n * it will default to 64px.\n *\n * 3. $('.avatardiv').avatar();\n * This will search the DOM for 'user' data, to use as the username. If there\n * is no username available it will default to a placeholder with the value of\n * \"?\". The size will be determined the same way, as the second example.\n *\n * 4. $('.avatardiv').avatar('jdoe', 128, true);\n * This will behave like the first example, except it will also append random\n * hashes to the custom avatar images, to force image reloading in IE8.\n *\n * 5. $('.avatardiv').avatar('jdoe', 128, undefined, true);\n * This will behave like the first example, but it will hide the avatardiv, if\n * it will display the default placeholder. undefined is the ie8fix from\n * example 4 and can be either true, or false/undefined, to be ignored.\n *\n * 6. $('.avatardiv').avatar('jdoe', 128, undefined, true, callback);\n * This will behave like the above example, but it will call the function\n * defined in callback after the avatar is placed into the DOM.\n *\n */\n\n$.fn.avatar = function(user, size, ie8fix, hidedefault, callback, displayname) {\n\tconst setAvatarForUnknownUser = function(target) {\n\t\ttarget.imageplaceholder('?')\n\t\ttarget.css('background-color', '#b9b9b9')\n\t}\n\n\tif (typeof (user) !== 'undefined') {\n\t\tuser = String(user)\n\t}\n\tif (typeof (displayname) !== 'undefined') {\n\t\tdisplayname = String(displayname)\n\t}\n\n\tif (typeof (size) === 'undefined') {\n\t\tif (this.height() > 0) {\n\t\t\tsize = this.height()\n\t\t} else if (this.data('size') > 0) {\n\t\t\tsize = this.data('size')\n\t\t} else {\n\t\t\tsize = 64\n\t\t}\n\t}\n\n\tthis.height(size)\n\tthis.width(size)\n\n\tif (typeof (user) === 'undefined') {\n\t\tif (typeof (this.data('user')) !== 'undefined') {\n\t\t\tuser = this.data('user')\n\t\t} else {\n\t\t\tsetAvatarForUnknownUser(this)\n\t\t\treturn\n\t\t}\n\t}\n\n\t// sanitize\n\tuser = String(user).replace(/\\//g, '')\n\n\tconst $div = this\n\tlet url\n\n\t// If this is our own avatar we have to use the version attribute\n\tif (user === OC.getCurrentUser().uid) {\n\t\turl = OC.generateUrl(\n\t\t\t'/avatar/{user}/{size}?v={version}',\n\t\t\t{\n\t\t\t\tuser,\n\t\t\t\tsize: Math.ceil(size * window.devicePixelRatio),\n\t\t\t\tversion: oc_userconfig.avatar.version,\n\t\t\t})\n\t} else {\n\t\turl = OC.generateUrl(\n\t\t\t'/avatar/{user}/{size}',\n\t\t\t{\n\t\t\t\tuser,\n\t\t\t\tsize: Math.ceil(size * window.devicePixelRatio),\n\t\t\t})\n\t}\n\n\tconst img = new Image()\n\n\t// If the new image loads successfully set it.\n\timg.onload = function() {\n\t\t$div.clearimageplaceholder()\n\t\t$div.append(img)\n\n\t\tif (typeof callback === 'function') {\n\t\t\tcallback()\n\t\t}\n\t}\n\t// Fallback when avatar loading fails:\n\t// Use old placeholder when a displayname attribute is defined,\n\t// otherwise show the unknown user placeholder.\n\timg.onerror = function() {\n\t\t$div.clearimageplaceholder()\n\t\tif (typeof (displayname) !== 'undefined') {\n\t\t\t$div.imageplaceholder(user, displayname)\n\t\t} else {\n\t\t\tsetAvatarForUnknownUser($div)\n\t\t}\n\n\t\tif (typeof callback === 'function') {\n\t\t\tcallback()\n\t\t}\n\t}\n\n\tif (size < 32) {\n\t\t$div.addClass('icon-loading-small')\n\t} else {\n\t\t$div.addClass('icon-loading')\n\t}\n\timg.width = size\n\timg.height = size\n\timg.src = url\n\timg.alt = ''\n}\n","/**\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport $ from 'jquery'\n\nimport OC from '../OC'\n\nconst LIST = ''\n\t+ '<div class=\"menu popovermenu menu-left hidden contactsmenu-popover\">'\n\t+ ' <ul>'\n\t+ ' <li>'\n\t+ ' <a>'\n\t+ ' <span class=\"icon-loading-small\"></span>'\n\t+ ' </a>'\n\t+ ' </li>'\n\t+ ' </ul>'\n\t+ '</div>'\n\nconst entryTemplate = require('./contactsmenu/jquery_entry.handlebars')\n\n$.fn.contactsMenu = function(shareWith, shareType, appendTo) {\n\t// 0 - user, 4 - email, 6 - remote\n\tconst allowedTypes = [0, 4, 6]\n\tif (allowedTypes.indexOf(shareType) === -1) {\n\t\treturn\n\t}\n\n\tconst $div = this\n\tappendTo.append(LIST)\n\tconst $list = appendTo.find('div.contactsmenu-popover')\n\n\t$div.click(function() {\n\t\tif (!$list.hasClass('hidden')) {\n\t\t\t$list.addClass('hidden')\n\t\t\t$list.hide()\n\t\t\treturn\n\t\t}\n\n\t\t$list.removeClass('hidden')\n\t\t$list.show()\n\n\t\tif ($list.hasClass('loaded')) {\n\t\t\treturn\n\t\t}\n\n\t\t$list.addClass('loaded')\n\t\t$.ajax(OC.generateUrl('/contactsmenu/findOne'), {\n\t\t\tmethod: 'POST',\n\t\t\tdata: {\n\t\t\t\tshareType,\n\t\t\t\tshareWith,\n\t\t\t},\n\t\t}).then(function(data) {\n\t\t\t$list.find('ul').find('li').addClass('hidden')\n\n\t\t\tlet actions\n\t\t\tif (!data.topAction) {\n\t\t\t\tactions = [{\n\t\t\t\t\thyperlink: '#',\n\t\t\t\t\ttitle: t('core', 'No action available'),\n\t\t\t\t}]\n\t\t\t} else {\n\t\t\t\tactions = [data.topAction].concat(data.actions)\n\t\t\t}\n\n\t\t\tactions.forEach(function(action) {\n\t\t\t\t$list.find('ul').append(entryTemplate(action))\n\t\t\t})\n\n\t\t\t$div.trigger('load')\n\t\t}, function(jqXHR) {\n\t\t\t$list.find('ul').find('li').addClass('hidden')\n\n\t\t\tlet title\n\t\t\tif (jqXHR.status === 404) {\n\t\t\t\ttitle = t('core', 'No action available')\n\t\t\t} else {\n\t\t\t\ttitle = t('core', 'Error fetching contact actions')\n\t\t\t}\n\n\t\t\t$list.find('ul').append(entryTemplate({\n\t\t\t\thyperlink: '#',\n\t\t\t\ttitle,\n\t\t\t}))\n\n\t\t\t$div.trigger('loaderror', jqXHR)\n\t\t})\n\t})\n\n\t$(document).click(function(event) {\n\t\tconst clickedList = ($list.has(event.target).length > 0)\n\t\tlet clickedTarget = ($div.has(event.target).length > 0)\n\n\t\t$div.each(function() {\n\t\t\tif ($(this).is(event.target)) {\n\t\t\t\tclickedTarget = true\n\t\t\t}\n\t\t})\n\n\t\tif (clickedList || clickedTarget) {\n\t\t\treturn\n\t\t}\n\n\t\t$list.addClass('hidden')\n\t\t$list.hide()\n\t})\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport $ from 'jquery'\n\n/**\n * check if an element exists.\n * allows you to write if ($('#myid').exists()) to increase readability\n *\n * @see {@link http://stackoverflow.com/questions/31044/is-there-an-exists-function-for-jquery}\n * @return {boolean}\n */\n$.fn.exists = function() {\n\treturn this.length > 0\n}\n","/**\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport $ from 'jquery'\n\n/**\n * Filter jQuery selector by attribute value\n *\n * @param {string} attrName attribute name\n * @param {string} attrValue attribute value\n * @return {void}\n */\n$.fn.filterAttr = function(attrName, attrValue) {\n\treturn this.filter(function() {\n\t\treturn $(this).attr(attrName) === attrValue\n\t})\n}\n","/**\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Gary Kim <gary@garykim.dev>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport $ from 'jquery'\n\n$.widget('oc.ocdialog', {\n\toptions: {\n\t\twidth: 'auto',\n\t\theight: 'auto',\n\t\tcloseButton: true,\n\t\tcloseOnEscape: true,\n\t\tcloseCallback: null,\n\t\tmodal: false,\n\t},\n\t_create() {\n\t\tconst self = this\n\n\t\tthis.originalCss = {\n\t\t\tdisplay: this.element[0].style.display,\n\t\t\twidth: this.element[0].style.width,\n\t\t\theight: this.element[0].style.height,\n\t\t}\n\n\t\tthis.originalTitle = this.element.attr('title')\n\t\tthis.options.title = this.options.title || this.originalTitle\n\n\t\tthis.$dialog = $('<div class=\"oc-dialog\"></div>')\n\t\t\t.attr({\n\t\t\t\t// Setting tabIndex makes the div focusable\n\t\t\t\ttabIndex: -1,\n\t\t\t\trole: 'dialog',\n\t\t\t})\n\t\t\t.insertBefore(this.element)\n\t\tthis.$dialog.append(this.element.detach())\n\t\tthis.element.removeAttr('title').addClass('oc-dialog-content').appendTo(this.$dialog)\n\n\t\tthis.$dialog.css({\n\t\t\tdisplay: 'inline-block',\n\t\t\tposition: 'fixed',\n\t\t})\n\n\t\tthis.enterCallback = null\n\n\t\t$(document).on('keydown keyup', function(event) {\n\t\t\tif (\n\t\t\t\tevent.target !== self.$dialog.get(0)\n\t\t\t\t&& self.$dialog.find($(event.target)).length === 0\n\t\t\t) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// Escape\n\t\t\tif (\n\t\t\t\tevent.keyCode === 27\n\t\t\t\t&& event.type === 'keydown'\n\t\t\t\t&& self.options.closeOnEscape\n\t\t\t) {\n\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\tself.close()\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t// Enter\n\t\t\tif (event.keyCode === 13) {\n\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\tif (self.enterCallback !== null) {\n\t\t\t\t\tself.enterCallback()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif (event.type === 'keyup') {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\t// If no button is selected we trigger the primary\n\t\t\t\tif (\n\t\t\t\t\tself.$buttonrow\n\t\t\t\t\t&& self.$buttonrow.find($(event.target)).length === 0\n\t\t\t\t) {\n\t\t\t\t\tconst $button = self.$buttonrow.find('button.primary')\n\t\t\t\t\tif ($button && !$button.prop('disabled')) {\n\t\t\t\t\t\t$button.trigger('click')\n\t\t\t\t\t}\n\t\t\t\t} else if (self.$buttonrow) {\n\t\t\t\t\t$(event.target).trigger('click')\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t}\n\t\t})\n\n\t\tthis._setOptions(this.options)\n\t\tthis._createOverlay()\n\t},\n\t_init() {\n\t\tthis.$dialog.focus()\n\t\tthis._trigger('open')\n\t},\n\t_setOption(key, value) {\n\t\tconst self = this\n\t\tswitch (key) {\n\t\tcase 'title':\n\t\t\tif (this.$title) {\n\t\t\t\tthis.$title.text(value)\n\t\t\t} else {\n\t\t\t\tconst $title = $('<h2 class=\"oc-dialog-title\">'\n\t\t\t\t\t\t+ value\n\t\t\t\t\t\t+ '</h2>')\n\t\t\t\tthis.$title = $title.prependTo(this.$dialog)\n\t\t\t}\n\t\t\tthis._setSizes()\n\t\t\tbreak\n\t\tcase 'buttons':\n\t\t\tif (this.$buttonrow) {\n\t\t\t\tthis.$buttonrow.empty()\n\t\t\t} else {\n\t\t\t\tconst $buttonrow = $('<div class=\"oc-dialog-buttonrow\"></div>')\n\t\t\t\tthis.$buttonrow = $buttonrow.appendTo(this.$dialog)\n\t\t\t}\n\t\t\tif (value.length === 1) {\n\t\t\t\tthis.$buttonrow.addClass('onebutton')\n\t\t\t} else if (value.length === 2) {\n\t\t\t\tthis.$buttonrow.addClass('twobuttons')\n\t\t\t} else if (value.length === 3) {\n\t\t\t\tthis.$buttonrow.addClass('threebuttons')\n\t\t\t}\n\t\t\t$.each(value, function(idx, val) {\n\t\t\t\tconst $button = $('<button>').text(val.text)\n\t\t\t\tif (val.classes) {\n\t\t\t\t\t$button.addClass(val.classes)\n\t\t\t\t}\n\t\t\t\tif (val.defaultButton) {\n\t\t\t\t\t$button.addClass('primary')\n\t\t\t\t\tself.$defaultButton = $button\n\t\t\t\t}\n\t\t\t\tself.$buttonrow.append($button)\n\t\t\t\t$button.click(function() {\n\t\t\t\t\tval.click.apply(self.element[0], arguments)\n\t\t\t\t})\n\t\t\t})\n\t\t\tthis.$buttonrow.find('button')\n\t\t\t\t.on('focus', function(event) {\n\t\t\t\t\tself.$buttonrow.find('button').removeClass('primary')\n\t\t\t\t\t$(this).addClass('primary')\n\t\t\t\t})\n\t\t\tthis._setSizes()\n\t\t\tbreak\n\t\tcase 'style':\n\t\t\tif (value.buttons !== undefined) {\n\t\t\t\tthis.$buttonrow.addClass(value.buttons)\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'closeButton':\n\t\t\tif (value) {\n\t\t\t\tconst $closeButton = $('<a class=\"oc-dialog-close\"></a>')\n\t\t\t\tthis.$dialog.prepend($closeButton)\n\t\t\t\t$closeButton.on('click', function() {\n\t\t\t\t\tself.options.closeCallback && self.options.closeCallback()\n\t\t\t\t\tself.close()\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tthis.$dialog.find('.oc-dialog-close').remove()\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'width':\n\t\t\tthis.$dialog.css('width', value)\n\t\t\tbreak\n\t\tcase 'height':\n\t\t\tthis.$dialog.css('height', value)\n\t\t\tbreak\n\t\tcase 'close':\n\t\t\tthis.closeCB = value\n\t\t\tbreak\n\t\t}\n\t\t// this._super(key, value);\n\t\t$.Widget.prototype._setOption.apply(this, arguments)\n\t},\n\t_setOptions(options) {\n\t\t// this._super(options);\n\t\t$.Widget.prototype._setOptions.apply(this, arguments)\n\t},\n\t_setSizes() {\n\t\tlet lessHeight = 0\n\t\tif (this.$title) {\n\t\t\tlessHeight += this.$title.outerHeight(true)\n\t\t}\n\t\tif (this.$buttonrow) {\n\t\t\tlessHeight += this.$buttonrow.outerHeight(true)\n\t\t}\n\t\tthis.element.css({\n\t\t\theight: 'calc(100% - ' + lessHeight + 'px)',\n\t\t})\n\t},\n\t_createOverlay() {\n\t\tif (!this.options.modal) {\n\t\t\treturn\n\t\t}\n\n\t\tconst self = this\n\t\tlet contentDiv = $('#content')\n\t\tif (contentDiv.length === 0) {\n\t\t\t// nextcloud-vue compatibility\n\t\t\tcontentDiv = $('.content')\n\t\t}\n\t\tthis.overlay = $('<div>')\n\t\t\t.addClass('oc-dialog-dim')\n\t\t\t.appendTo(contentDiv)\n\t\tthis.overlay.on('click keydown keyup', function(event) {\n\t\t\tif (event.target !== self.$dialog.get(0) && self.$dialog.find($(event.target)).length === 0) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tevent.stopPropagation()\n\n\t\t\t}\n\t\t})\n\t},\n\t_destroyOverlay() {\n\t\tif (!this.options.modal) {\n\t\t\treturn\n\t\t}\n\n\t\tif (this.overlay) {\n\t\t\tthis.overlay.off('click keydown keyup')\n\t\t\tthis.overlay.remove()\n\t\t\tthis.overlay = null\n\t\t}\n\t},\n\twidget() {\n\t\treturn this.$dialog\n\t},\n\tsetEnterCallback(callback) {\n\t\tthis.enterCallback = callback\n\t},\n\tunsetEnterCallback() {\n\t\tthis.enterCallback = null\n\t},\n\tclose() {\n\t\tthis._destroyOverlay()\n\t\tconst self = this\n\t\t// Ugly hack to catch remaining keyup events.\n\t\tsetTimeout(function() {\n\t\t\tself._trigger('close', self)\n\t\t}, 200)\n\n\t\tself.$dialog.remove()\n\t\tthis.destroy()\n\t},\n\tdestroy() {\n\t\tif (this.$title) {\n\t\t\tthis.$title.remove()\n\t\t}\n\t\tif (this.$buttonrow) {\n\t\t\tthis.$buttonrow.remove()\n\t\t}\n\n\t\tif (this.originalTitle) {\n\t\t\tthis.element.attr('title', this.originalTitle)\n\t\t}\n\t\tthis.element.removeClass('oc-dialog-content')\n\t\t\t.css(this.originalCss).detach().insertBefore(this.$dialog)\n\t\tthis.$dialog.remove()\n\t},\n})\n","/**\n * @copyright Copyright (c) 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport $ from 'jquery'\nimport escapeHTML from 'escape-html'\n\n/**\n * jQuery plugin for micro templates\n *\n * Strings are automatically escaped, but that can be disabled by setting\n * escapeFunction to null.\n *\n * Usage examples:\n *\n * var htmlStr = '<p>Bake, uncovered, until the {greasystuff} is melted and the {pasta} is heated through, about {min} minutes.</p>'\n * $(htmlStr).octemplate({greasystuff: 'cheese', pasta: 'macaroni', min: 10});\n *\n * var htmlStr = '<p>Welcome back {user}</p>';\n * $(htmlStr).octemplate({user: 'John Q. Public'}, {escapeFunction: null});\n *\n * Be aware that the target string must be wrapped in an HTML element for the\n * plugin to work. The following won't work:\n *\n * var textStr = 'Welcome back {user}';\n * $(textStr).octemplate({user: 'John Q. Public'});\n *\n * For anything larger than one-liners, you can use a simple $.get() ajax\n * request to get the template, or you can embed them it the page using the\n * text/template type:\n *\n * <script id=\"contactListItemTemplate\" type=\"text/template\">\n * <tr class=\"contact\" data-id=\"{id}\">\n * <td class=\"name\">\n * <input type=\"checkbox\" name=\"id\" value=\"{id}\" /><span class=\"nametext\">{name}</span>\n * </td>\n * <td class=\"email\">\n * <a href=\"mailto:{email}\">{email}</a>\n * </td>\n * <td class=\"phone\">{phone}</td>\n * </tr>\n * </script>\n *\n * var $tmpl = $('#contactListItemTemplate');\n * var contacts = // fetched in some ajax call\n *\n * $.each(contacts, function(idx, contact) {\n * $contactList.append(\n * $tmpl.octemplate({\n * id: contact.getId(),\n * name: contact.getDisplayName(),\n * email: contact.getPreferredEmail(),\n * phone: contact.getPreferredPhone(),\n * });\n * );\n * });\n */\n/**\n * Object Template\n * Inspired by micro templating done by e.g. underscore.js\n */\nconst Template = {\n\tinit(vars, options, elem) {\n\t\t// Mix in the passed in options with the default options\n\t\tthis.vars = vars\n\t\tthis.options = $.extend({}, this.options, options)\n\n\t\tthis.elem = elem\n\t\tconst self = this\n\n\t\tif (typeof this.options.escapeFunction === 'function') {\n\t\t\tconst keys = Object.keys(this.vars)\n\t\t\tfor (let key = 0; key < keys.length; key++) {\n\t\t\t\tif (typeof this.vars[keys[key]] === 'string') {\n\t\t\t\t\tthis.vars[keys[key]] = self.options.escapeFunction(this.vars[keys[key]])\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst _html = this._build(this.vars)\n\t\treturn $(_html)\n\t},\n\t// From stackoverflow.com/questions/1408289/best-way-to-do-variable-interpolation-in-javascript\n\t_build(o) {\n\t\tconst data = this.elem.attr('type') === 'text/template' ? this.elem.html() : this.elem.get(0).outerHTML\n\t\ttry {\n\t\t\treturn data.replace(/{([^{}]*)}/g,\n\t\t\t\tfunction(a, b) {\n\t\t\t\t\tconst r = o[b]\n\t\t\t\t\treturn typeof r === 'string' || typeof r === 'number' ? r : a\n\t\t\t\t}\n\t\t\t)\n\t\t} catch (e) {\n\t\t\tconsole.error(e, 'data:', data)\n\t\t}\n\t},\n\toptions: {\n\t\tescapeFunction: escapeHTML,\n\t},\n}\n\n$.fn.octemplate = function(vars, options) {\n\tvars = vars || {}\n\tif (this.length) {\n\t\tconst _template = Object.create(Template)\n\t\treturn _template.init(vars, options, this)\n\t}\n}\n","/**\n * @copyright 2016-2018 John Molakvoæ <skjnldsv@protonmail.com>\n * @copyright 2013 Morris Jobke <morris.jobke@gmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Sergey Shliakhov <husband.sergey@gmail.com>\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 */\n\n/* eslint-disable */\nimport $ from 'jquery'\nimport md5 from 'blueimp-md5'\n\n/*\n * Adds a background color to the element called on and adds the first character\n * of the passed in string. This string is also the seed for the generation of\n * the background color.\n *\n * You have following HTML:\n *\n * <div id=\"albumart\"></div>\n *\n * And call this from Javascript:\n *\n * $('#albumart').imageplaceholder('The Album Title');\n *\n * Which will result in:\n *\n * <div id=\"albumart\" style=\"background-color: rgb(121, 90, 171); ... \">T</div>\n *\n * You may also call it like this, to have a different background, than the seed:\n *\n * $('#albumart').imageplaceholder('The Album Title', 'Album Title');\n *\n * Resulting in:\n *\n * <div id=\"albumart\" style=\"background-color: rgb(121, 90, 171); ... \">A</div>\n *\n */\n\n/*\n* Alternatively, you can use the prototype function to convert your string to rgb colors:\n*\n* \"a6741a86aded5611a8e46ce16f2ad646\".toRgb()\n*\n* Will return the rgb parameters within the following object:\n*\n* Color {r: 208, g: 158, b: 109}\n*\n*/\n\nconst toRgb = (s) => {\n\t// Normalize hash\n\tvar hash = s.toLowerCase()\n\n\t// Already a md5 hash?\n\tif (hash.match(/^([0-9a-f]{4}-?){8}$/) === null) {\n\t\thash = md5(hash)\n\t}\n\n\thash = hash.replace(/[^0-9a-f]/g, '')\n\n\tfunction Color(r, g, b) {\n\t\tthis.r = r\n\t\tthis.g = g\n\t\tthis.b = b\n\t}\n\n\tfunction stepCalc(steps, ends) {\n\t\tvar step = new Array(3)\n\t\tstep[0] = (ends[1].r - ends[0].r) / steps\n\t\tstep[1] = (ends[1].g - ends[0].g) / steps\n\t\tstep[2] = (ends[1].b - ends[0].b) / steps\n\t\treturn step\n\t}\n\n\tfunction mixPalette(steps, color1, color2) {\n\t\tvar palette = []\n\t\tpalette.push(color1)\n\t\tvar step = stepCalc(steps, [color1, color2])\n\t\tfor (var i = 1; i < steps; i++) {\n\t\t\tvar r = parseInt(color1.r + (step[0] * i))\n\t\t\tvar g = parseInt(color1.g + (step[1] * i))\n\t\t\tvar b = parseInt(color1.b + (step[2] * i))\n\t\t\tpalette.push(new Color(r, g, b))\n\t\t}\n\t\treturn palette\n\t}\n\n\tconst red = new Color(182, 70, 157);\n\tconst yellow = new Color(221, 203, 85);\n\tconst blue = new Color(0, 130, 201); // Nextcloud blue\n\t// Number of steps to go from a color to another\n\t// 3 colors * 6 will result in 18 generated colors\n\tconst steps = 6;\n\n\tconst palette1 = mixPalette(steps, red, yellow);\n\tconst palette2 = mixPalette(steps, yellow, blue);\n\tconst palette3 = mixPalette(steps, blue, red);\n\n\tconst finalPalette = palette1.concat(palette2).concat(palette3);\n\n\t// Convert a string to an integer evenly\n\tfunction hashToInt(hash, maximum) {\n\t\tvar finalInt = 0\n\t\tvar result = []\n\n\t\t// Splitting evenly the string\n\t\tfor (var i = 0; i < hash.length; i++) {\n\t\t\t// chars in md5 goes up to f, hex:16\n\t\t\tresult.push(parseInt(hash.charAt(i), 16) % 16)\n\t\t}\n\t\t// Adds up all results\n\t\tfor (var j in result) {\n\t\t\tfinalInt += result[j]\n\t\t}\n\t\t// chars in md5 goes up to f, hex:16\n\t\t// make sure we're always using int in our operation\n\t\treturn parseInt(parseInt(finalInt) % maximum)\n\t}\n\n\treturn finalPalette[hashToInt(hash, steps * 3)]\n}\n\nString.prototype.toRgb = function() {\n\tconsole.warn('String.prototype.toRgb is deprecated! It will be removed in Nextcloud 22.')\n\n\treturn toRgb(this)\n}\n\n$.fn.imageplaceholder = function(seed, text, size) {\n\ttext = text || seed\n\n\t// Compute the hash\n\tvar rgb = toRgb(seed)\n\tthis.css('background-color', 'rgb(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ')')\n\n\t// Placeholders are square\n\tvar height = this.height() || size || 32\n\tthis.height(height)\n\tthis.width(height)\n\n\t// CSS rules\n\tthis.css('color', '#fff')\n\tthis.css('font-weight', 'normal')\n\tthis.css('text-align', 'center')\n\n\t// calculate the height\n\tthis.css('line-height', height + 'px')\n\tthis.css('font-size', (height * 0.55) + 'px')\n\n\tif (seed !== null && seed.length) {\n\t\tvar placeholderText = text.replace(/\\s+/g, ' ').trim().split(' ', 2).map((word) => word[0].toUpperCase()).join('')\n\t\tthis.html(placeholderText);\n\t}\n}\n\n$.fn.clearimageplaceholder = function() {\n\tthis.css('background-color', '')\n\tthis.css('color', '')\n\tthis.css('font-weight', '')\n\tthis.css('text-align', '')\n\tthis.css('line-height', '')\n\tthis.css('font-size', '')\n\tthis.html('')\n\tthis.removeClass('icon-loading')\n\tthis.removeClass('icon-loading-small')\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport $ from 'jquery'\n\nimport { getToken } from '../OC/requesttoken'\n\n$(document).on('ajaxSend', function(elm, xhr, settings) {\n\tif (settings.crossDomain === false) {\n\t\txhr.setRequestHeader('requesttoken', getToken())\n\t\txhr.setRequestHeader('OCS-APIREQUEST', 'true')\n\t}\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport $ from 'jquery'\n\n/**\n * select a range in an input field\n *\n * @see {@link http://stackoverflow.com/questions/499126/jquery-set-cursor-position-in-text-area}\n * @param {number} start start selection from\n * @param {number} end number of char from start\n * @return {void}\n */\n$.fn.selectRange = function(start, end) {\n\treturn this.each(function() {\n\t\tif (this.setSelectionRange) {\n\t\t\tthis.focus()\n\t\t\tthis.setSelectionRange(start, end)\n\t\t} else if (this.createTextRange) {\n\t\t\tconst range = this.createTextRange()\n\t\t\trange.collapse(true)\n\t\t\trange.moveEnd('character', end)\n\t\t\trange.moveStart('character', start)\n\t\t\trange.select()\n\t\t}\n\t})\n}\n","/**\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport $ from 'jquery'\n\n/**\n * @name Show Password\n * @description\n * @version 1.3.0\n * @requires Jquery 1.5\n *\n * @author Jan Jarfalk <jan.jarfalk@unwrongest.com>\n * author-website http://www.unwrongest.com\n *\n * special-thanks Michel Gratton\n *\n * @license MIT\n */\n$.fn.extend({\n\tshowPassword(c) {\n\n\t\t// Setup callback object\n\t\tconst callback = { fn: null, args: {} }\n\t\tcallback.fn = c\n\n\t\t// Clones passwords and turn the clones into text inputs\n\t\tconst cloneElement = function(element) {\n\n\t\t\tconst $element = $(element)\n\n\t\t\tconst $clone = $('<input />')\n\n\t\t\t// Name added for JQuery Validation compatibility\n\t\t\t// Element name is required to avoid script warning.\n\t\t\t$clone.attr({\n\t\t\t\ttype: 'text',\n\t\t\t\tclass: $element.attr('class'),\n\t\t\t\tstyle: $element.attr('style'),\n\t\t\t\tsize: $element.attr('size'),\n\t\t\t\tname: $element.attr('name') + '-clone',\n\t\t\t\ttabindex: $element.attr('tabindex'),\n\t\t\t\tautocomplete: 'off',\n\t\t\t})\n\n\t\t\tif ($element.attr('placeholder') !== undefined) {\n\t\t\t\t$clone.attr('placeholder', $element.attr('placeholder'))\n\t\t\t}\n\n\t\t\treturn $clone\n\n\t\t}\n\n\t\t// Transfers values between two elements\n\t\tconst update = function(a, b) {\n\t\t\tb.val(a.val())\n\t\t}\n\n\t\t// Shows a or b depending on checkbox\n\t\tconst setState = function(checkbox, a, b) {\n\n\t\t\tif (checkbox.is(':checked')) {\n\t\t\t\tupdate(a, b)\n\t\t\t\tb.show()\n\t\t\t\ta.hide()\n\t\t\t} else {\n\t\t\t\tupdate(b, a)\n\t\t\t\tb.hide()\n\t\t\t\ta.show()\n\t\t\t}\n\n\t\t}\n\n\t\treturn this.each(function() {\n\n\t\t\tconst $input = $(this)\n\t\t\tconst $checkbox = $($input.data('typetoggle'))\n\n\t\t\t// Create clone\n\t\t\tconst $clone = cloneElement($input)\n\t\t\t$clone.insertAfter($input)\n\n\t\t\t// Set callback arguments\n\t\t\tif (callback.fn) {\n\t\t\t\tcallback.args.input = $input\n\t\t\t\tcallback.args.checkbox = $checkbox\n\t\t\t\tcallback.args.clone = $clone\n\t\t\t}\n\n\t\t\t$checkbox.bind('click', function() {\n\t\t\t\tsetState($checkbox, $input, $clone)\n\t\t\t})\n\n\t\t\t$input.bind('keyup', function() {\n\t\t\t\tupdate($input, $clone)\n\t\t\t})\n\n\t\t\t$clone.bind('keyup', function() {\n\t\t\t\tupdate($clone, $input)\n\n\t\t\t\t// Added for JQuery Validation compatibility\n\t\t\t\t// This will trigger validation if it's ON for keyup event\n\t\t\t\t$input.trigger('keyup')\n\n\t\t\t})\n\n\t\t\t// Added for JQuery Validation compatibility\n\t\t\t// This will trigger validation if it's ON for blur event\n\t\t\t$clone.bind('blur', function() {\n\t\t\t\t$input.trigger('focusout')\n\t\t\t})\n\n\t\t\tsetState($checkbox, $input, $clone)\n\n\t\t\t// set type of password field clone (type=text) to password right on submit\n\t\t\t// to prevent browser save the value of this field\n\t\t\t$clone.closest('form').submit(function(e) {\n\t\t\t\t// .prop has to be used, because .attr throws\n\t\t\t\t// an error while changing a type of an input\n\t\t\t\t// element\n\t\t\t\t$clone.prop('type', 'password')\n\t\t\t})\n\n\t\t\tif (callback.fn) {\n\t\t\t\tcallback.fn(callback.args)\n\t\t\t}\n\n\t\t})\n\t},\n})\n","/**\n * @copyright Copyright (c) 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport $ from 'jquery'\n\n// Set autocomplete width the same as the related input\n// See http://stackoverflow.com/a/11845718\n$.ui.autocomplete.prototype._resizeMenu = function() {\n\tconst ul = this.menu.element\n\tul.outerWidth(this.element.outerWidth())\n}\n","\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/sass-loader/dist/cjs.js!./jquery-ui-fixes.scss\";\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/sass-loader/dist/cjs.js!./jquery-ui-fixes.scss\";\n export default content && content.locals ? content.locals : undefined;\n","\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/sass-loader/dist/cjs.js!./jquery.ocdialog.scss\";\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/sass-loader/dist/cjs.js!./jquery.ocdialog.scss\";\n export default content && content.locals ? content.locals : undefined;\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport $ from 'jquery'\n\nimport './avatar'\nimport './contactsmenu'\nimport './exists'\nimport './filterattr'\nimport './ocdialog'\nimport './octemplate'\nimport './placeholder'\nimport './requesttoken'\nimport './selectrange'\nimport './showpassword'\nimport './ui-fixes'\n\nimport './css/jquery-ui-fixes.scss'\nimport './css/jquery.ocdialog.scss'\n\n/**\n * Disable automatic evaluation of responses for $.ajax() functions (and its\n * higher-level alternatives like $.get() and $.post()).\n *\n * If a response to a $.ajax() request returns a content type of \"application/javascript\"\n * JQuery would previously execute the response body. This is a pretty unexpected\n * behaviour and can result in a bypass of our Content-Security-Policy as well as\n * multiple unexpected XSS vectors.\n */\n$.ajaxSetup({\n\tcontents: {\n\t\tscript: false,\n\t},\n})\n\n/**\n * Disable execution of eval in jQuery. We do require an allowed eval CSP\n * configuration at the moment for handlebars et al. But for jQuery there is\n * not much of a reason to execute JavaScript directly via eval.\n *\n * This thus mitigates some unexpected XSS vectors.\n */\n$.globalEval = function() {\n}\n","/**\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport $ from 'jquery'\nimport 'core-js/stable'\nimport 'regenerator-runtime/runtime'\nimport './Polyfill/index'\n\n// If you remove the line below, tests won't pass\n// eslint-disable-next-line no-unused-vars\nimport OC from './OC/index'\n\nimport './globals'\nimport './jquery/index'\nimport { initCore } from './init'\nimport { registerAppsSlideToggle } from './OC/apps'\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\tinitCore()\n\tregisterAppsSlideToggle()\n\n\t// fallback to hashchange when no history support\n\tif (window.history.pushState) {\n\t\twindow.onpopstate = _.bind(OC.Util.History._onPopState, OC.Util.History)\n\t} else {\n\t\t$(window).on('hashchange', _.bind(OC.Util.History._onPopState, OC.Util.History))\n\t}\n})\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\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"images/ui-icons_1d2d44_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"images/ui-icons_ffffff_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(\"images/ui-icons_ffd27a_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_3___ = new URL(\"images/ui-bg_diagonals-thick_20_666666_40x40.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_4___ = new URL(\"images/ui-bg_flat_10_000000_40x100.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\nvar ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ui-widget-content{border:1px solid var(--color-border);background:var(--color-main-background) none;color:var(--color-main-text)}.ui-widget-content a{color:var(--color-main-text)}.ui-widget-header{border:none;color:var(--color-main-text);background-image:none}.ui-widget-header a{color:var(--color-main-text)}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid var(--color-border);background:var(--color-main-background) none;font-weight:bold;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #ddd;background:var(--color-main-background) none;font-weight:bold;color:var(--color-main-text)}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:var(--color-main-text)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid var(--color-primary);background:var(--color-main-background) none;font-weight:bold;color:var(--color-main-text)}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:var(--color-main-text)}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid var(--color-main-background);background:var(--color-main-background) none;color:var(--color-text-light);font-weight:600}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:var(--color-text-lighter)}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:var(--color-error);background:var(--color-error) none;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-state-default .ui-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \")}.ui-state-active .ui-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \")}.ui-state-highlight .ui-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \")}.ui-icon.ui-icon-none{display:none}.ui-widget-overlay{background:#666 url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \") 50% 50% repeat;opacity:.5}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:#000 url(\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \") 50% 50% repeat-x;opacity:.2;border-radius:5px}.ui-tabs{border:none}.ui-tabs .ui-tabs-nav.ui-corner-all{border-bottom-left-radius:0;border-bottom-right-radius:0}.ui-tabs .ui-tabs-nav{background:none;margin-bottom:15px}.ui-tabs .ui-tabs-nav .ui-state-default{border:none;border-bottom:1px solid rgba(0,0,0,0);font-weight:normal;margin:0 !important;padding:0 !important}.ui-tabs .ui-tabs-nav .ui-state-hover,.ui-tabs .ui-tabs-nav .ui-state-active{border:none;border-bottom:1px solid var(--color-main-text);color:var(--color-main-text)}.ui-tabs .ui-tabs-nav .ui-state-hover a,.ui-tabs .ui-tabs-nav .ui-state-hover a:link,.ui-tabs .ui-tabs-nav .ui-state-hover a:hover,.ui-tabs .ui-tabs-nav .ui-state-hover a:visited,.ui-tabs .ui-tabs-nav .ui-state-active a,.ui-tabs .ui-tabs-nav .ui-state-active a:link,.ui-tabs .ui-tabs-nav .ui-state-active a:hover,.ui-tabs .ui-tabs-nav .ui-state-active a:visited{color:var(--color-main-text)}.ui-tabs .ui-tabs-nav .ui-state-active{font-weight:bold}.ui-autocomplete.ui-menu{padding:0}.ui-autocomplete.ui-menu.item-count-1,.ui-autocomplete.ui-menu.item-count-2{overflow-y:hidden}.ui-autocomplete.ui-menu .ui-menu-item a{color:var(--color-text-lighter);display:block;padding:4px 4px 4px 14px}.ui-autocomplete.ui-menu .ui-menu-item a.ui-state-focus,.ui-autocomplete.ui-menu .ui-menu-item a.ui-state-active{box-shadow:inset 4px 0 var(--color-primary-element);color:var(--color-main-text)}.ui-autocomplete.ui-widget-content{background:var(--color-main-background);border-top:none}.ui-autocomplete.ui-corner-all{border-radius:0;border-bottom-left-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}.ui-autocomplete .ui-state-hover,.ui-autocomplete .ui-widget-content .ui-state-hover,.ui-autocomplete .ui-widget-header .ui-state-hover,.ui-autocomplete .ui-state-focus,.ui-autocomplete .ui-widget-content .ui-state-focus,.ui-autocomplete .ui-widget-header .ui-state-focus{border:1px solid rgba(0,0,0,0);background:inherit;color:var(--color-primary-element)}.ui-autocomplete .ui-menu-item a{border-radius:0 !important}.ui-button.primary{background-color:var(--color-primary);color:var(--color-primary-text);border:1px solid var(--color-primary-text)}.ui-draggable-handle,.ui-selectable{touch-action:pan-y}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/jquery/css/jquery-ui-fixes.scss\"],\"names\":[],\"mappings\":\"AAEA,mBACC,oCAAA,CACA,4CAAA,CACA,4BAAA,CAED,qBACC,4BAAA,CAED,kBACC,WAAA,CACA,4BAAA,CACA,qBAAA,CAED,oBACC,4BAAA,CAKD,2FAGC,oCAAA,CACA,4CAAA,CACA,gBAAA,CACA,UAAA,CAED,yEAGC,UAAA,CAED,0KAMC,qBAAA,CACA,4CAAA,CACA,gBAAA,CACA,4BAAA,CAED,2FAIC,4BAAA,CAED,wFAGC,qCAAA,CACA,4CAAA,CACA,gBAAA,CACA,4BAAA,CAED,sEAGC,4BAAA,CAKD,iGAGC,6CAAA,CACA,4CAAA,CACA,6BAAA,CACA,eAAA,CAED,uGAGC,+BAAA,CAED,qFAGC,yBAAA,CACA,kCAAA,CACA,UAAA,CAED,2FAGC,UAAA,CAED,oGAGC,UAAA,CAKD,2BACC,wDAAA,CAED,kDAEC,wDAAA,CAED,0BACC,wDAAA,CAED,6BACC,wDAAA,CAED,uDAEC,wDAAA,CAED,sBACC,YAAA,CAMD,mBACC,sEAAA,CACA,UAAA,CAED,kBACC,oBAAA,CACA,WAAA,CACA,wEAAA,CACA,UAAA,CACA,iBAAA,CAID,SACC,WAAA,CAEA,oCACC,2BAAA,CACA,4BAAA,CAGD,sBACC,eAAA,CACA,kBAAA,CAEA,wCACC,WAAA,CACA,qCAAA,CACA,kBAAA,CACA,mBAAA,CACA,oBAAA,CAGD,6EAEC,WAAA,CACA,8CAAA,CACA,4BAAA,CACA,0WACC,4BAAA,CAGF,uCACC,gBAAA,CAOF,yBACC,SAAA,CAIA,4EAEC,iBAAA,CAGD,yCACC,+BAAA,CACA,aAAA,CACA,wBAAA,CAEA,iHACC,mDAAA,CACA,4BAAA,CAKH,mCACC,uCAAA,CACA,eAAA,CAGD,+BACC,eAAA,CACA,8CAAA,CACA,+CAAA,CAGD,gRAKC,8BAAA,CACA,kBAAA,CACA,kCAAA,CAIA,iCACC,0BAAA,CAKH,mBACC,qCAAA,CACA,+BAAA,CACA,0CAAA,CAKD,oCAEC,kBAAA\",\"sourcesContent\":[\"/* Component containers\\n----------------------------------*/\\n.ui-widget-content {\\n\\tborder: 1px solid var(--color-border);\\n\\tbackground: var(--color-main-background) none;\\n\\tcolor: var(--color-main-text);\\n}\\n.ui-widget-content a {\\n\\tcolor: var(--color-main-text);\\n}\\n.ui-widget-header {\\n\\tborder: none;\\n\\tcolor: var(--color-main-text);\\n\\tbackground-image: none;\\n}\\n.ui-widget-header a {\\n\\tcolor: var(--color-main-text);\\n}\\n\\n/* Interaction states\\n----------------------------------*/\\n.ui-state-default,\\n.ui-widget-content .ui-state-default,\\n.ui-widget-header .ui-state-default {\\n\\tborder: 1px solid var(--color-border);\\n\\tbackground: var(--color-main-background) none;\\n\\tfont-weight: bold;\\n\\tcolor: #555;\\n}\\n.ui-state-default a,\\n.ui-state-default a:link,\\n.ui-state-default a:visited {\\n\\tcolor: #555;\\n}\\n.ui-state-hover,\\n.ui-widget-content .ui-state-hover,\\n.ui-widget-header .ui-state-hover,\\n.ui-state-focus,\\n.ui-widget-content .ui-state-focus,\\n.ui-widget-header .ui-state-focus {\\n\\tborder: 1px solid #ddd;\\n\\tbackground: var(--color-main-background) none;\\n\\tfont-weight: bold;\\n\\tcolor: var(--color-main-text);\\n}\\n.ui-state-hover a,\\n.ui-state-hover a:hover,\\n.ui-state-hover a:link,\\n.ui-state-hover a:visited {\\n\\tcolor: var(--color-main-text);\\n}\\n.ui-state-active,\\n.ui-widget-content .ui-state-active,\\n.ui-widget-header .ui-state-active {\\n\\tborder: 1px solid var(--color-primary);\\n\\tbackground: var(--color-main-background) none;\\n\\tfont-weight: bold;\\n\\tcolor: var(--color-main-text);\\n}\\n.ui-state-active a,\\n.ui-state-active a:link,\\n.ui-state-active a:visited {\\n\\tcolor: var(--color-main-text);\\n}\\n\\n/* Interaction Cues\\n----------------------------------*/\\n.ui-state-highlight,\\n.ui-widget-content .ui-state-highlight,\\n.ui-widget-header .ui-state-highlight {\\n\\tborder: 1px solid var(--color-main-background);\\n\\tbackground: var(--color-main-background) none;\\n\\tcolor: var(--color-text-light);\\n\\tfont-weight: 600;\\n}\\n.ui-state-highlight a,\\n.ui-widget-content .ui-state-highlight a,\\n.ui-widget-header .ui-state-highlight a {\\n\\tcolor: var(--color-text-lighter);\\n}\\n.ui-state-error,\\n.ui-widget-content .ui-state-error,\\n.ui-widget-header .ui-state-error {\\n\\tborder: var(--color-error);\\n\\tbackground: var(--color-error) none;\\n\\tcolor: #ffffff;\\n}\\n.ui-state-error a,\\n.ui-widget-content .ui-state-error a,\\n.ui-widget-header .ui-state-error a {\\n\\tcolor: #ffffff;\\n}\\n.ui-state-error-text,\\n.ui-widget-content .ui-state-error-text,\\n.ui-widget-header .ui-state-error-text {\\n\\tcolor: #ffffff;\\n}\\n\\n/* Icons\\n----------------------------------*/\\n.ui-state-default .ui-icon {\\n\\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\\n}\\n.ui-state-hover .ui-icon,\\n.ui-state-focus .ui-icon {\\n\\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\\n}\\n.ui-state-active .ui-icon {\\n\\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\\n}\\n.ui-state-highlight .ui-icon {\\n\\tbackground-image: url('images/ui-icons_ffffff_256x240.png');\\n}\\n.ui-state-error .ui-icon,\\n.ui-state-error-text .ui-icon {\\n\\tbackground-image: url('images/ui-icons_ffd27a_256x240.png');\\n}\\n.ui-icon.ui-icon-none {\\n\\tdisplay: none;\\n}\\n\\n/* Misc visuals\\n----------------------------------*/\\n/* Overlays */\\n.ui-widget-overlay {\\n\\tbackground: #666666 url('images/ui-bg_diagonals-thick_20_666666_40x40.png') 50% 50% repeat;\\n\\topacity: .5;\\n}\\n.ui-widget-shadow {\\n\\tmargin: -5px 0 0 -5px;\\n\\tpadding: 5px;\\n\\tbackground: #000000 url('images/ui-bg_flat_10_000000_40x100.png') 50% 50% repeat-x;\\n\\topacity: .2;\\n\\tborder-radius: 5px;\\n}\\n\\n/* Tabs customizations */\\n.ui-tabs {\\n\\tborder: none;\\n\\n\\t.ui-tabs-nav.ui-corner-all {\\n\\t\\tborder-bottom-left-radius: 0;\\n\\t\\tborder-bottom-right-radius: 0;\\n\\t}\\n\\n\\t.ui-tabs-nav {\\n\\t\\tbackground: none;\\n\\t\\tmargin-bottom: 15px;\\n\\n\\t\\t.ui-state-default {\\n\\t\\t\\tborder: none;\\n\\t\\t\\tborder-bottom: 1px solid transparent;\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t\\tmargin: 0 !important;\\n\\t\\t\\tpadding: 0 !important;\\n\\t\\t}\\n\\n\\t\\t.ui-state-hover,\\n\\t\\t.ui-state-active {\\n\\t\\t\\tborder: none;\\n\\t\\t\\tborder-bottom: 1px solid var(--color-main-text);\\n\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\ta, a:link, a:hover, a:visited {\\n\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t.ui-state-active {\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t}\\n\\t}\\n}\\n\\n/* Select menus */\\n.ui-autocomplete {\\n\\t&.ui-menu {\\n\\t\\tpadding: 0;\\n\\n\\t\\t/* scrolling starts from three items,\\n\\t\\t * so hide overflow and scrollbars for a clean layout */\\n\\t\\t&.item-count-1,\\n\\t\\t&.item-count-2 {\\n\\t\\t\\toverflow-y: hidden;\\n\\t\\t}\\n\\n\\t\\t.ui-menu-item a {\\n\\t\\t\\tcolor: var(--color-text-lighter);\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tpadding: 4px 4px 4px 14px;\\n\\n\\t\\t\\t&.ui-state-focus, &.ui-state-active {\\n\\t\\t\\t\\tbox-shadow: inset 4px 0 var(--color-primary-element);\\n\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&.ui-widget-content {\\n\\t\\tbackground: var(--color-main-background);\\n\\t\\tborder-top: none;\\n\\t}\\n\\n\\t&.ui-corner-all {\\n\\t\\tborder-radius: 0;\\n\\t\\tborder-bottom-left-radius: var(--border-radius);\\n\\t\\tborder-bottom-right-radius: var(--border-radius);\\n\\t}\\n\\n\\t.ui-state-hover, .ui-widget-content .ui-state-hover,\\n\\t.ui-widget-header .ui-state-hover,\\n\\t.ui-state-focus,\\n\\t.ui-widget-content .ui-state-focus,\\n\\t.ui-widget-header .ui-state-focus {\\n\\t\\tborder: 1px solid transparent;\\n\\t\\tbackground: inherit;\\n\\t\\tcolor: var(--color-primary-element);\\n\\t}\\n\\n\\t.ui-menu-item {\\n\\t\\ta {\\n\\t\\t\\tborder-radius: 0 !important;\\n\\t\\t}\\n\\t}\\n}\\n\\n.ui-button.primary {\\n\\tbackground-color: var(--color-primary);\\n\\tcolor: var(--color-primary-text);\\n\\tborder: 1px solid var(--color-primary-text);\\n}\\n\\n\\n/* DRAGGABLE */\\n.ui-draggable-handle,\\n.ui-selectable {\\n\\ttouch-action: pan-y;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".oc-dialog{background:var(--color-main-background);color:var(--color-text-light);border-radius:var(--border-radius-large);box-shadow:0 0 30px var(--color-box-shadow);padding:24px;z-index:10000;font-size:100%;box-sizing:border-box;min-width:200px;top:50%;left:50%;transform:translate(-50%, -50%);max-height:calc(100% - 20px);max-width:calc(100% - 20px);overflow:auto}.oc-dialog-title{background:var(--color-main-background)}.oc-dialog-buttonrow{position:relative;display:flex;background:rgba(0,0,0,0);right:0;bottom:0;padding:0;padding-top:10px;box-sizing:border-box;width:100%;background-image:linear-gradient(rgba(255, 255, 255, 0), var(--color-main-background))}.oc-dialog-buttonrow.twobuttons{justify-content:space-between}.oc-dialog-buttonrow.onebutton,.oc-dialog-buttonrow.twobuttons.aside{justify-content:flex-end}.oc-dialog-buttonrow button{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:44px;min-width:44px}.oc-dialog-close{position:absolute;top:0;right:0;padding:25px;background:var(--icon-close-000) no-repeat center;opacity:.5}.oc-dialog-close:hover,.oc-dialog-close:focus,.oc-dialog-close:active{opacity:1}.oc-dialog-dim{background-color:#000;opacity:.2;z-index:9999;position:fixed;top:0;left:0;width:100%;height:100%}body.theme--dark .oc-dialog-dim{opacity:.8}.oc-dialog-content{width:100%;max-width:550px}.oc-dialog.password-confirmation .oc-dialog-content{width:auto}.oc-dialog.password-confirmation .oc-dialog-content input[type=password]{width:100%}.oc-dialog.password-confirmation .oc-dialog-content label{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/jquery/css/jquery.ocdialog.scss\"],\"names\":[],\"mappings\":\"AAAA,WACC,uCAAA,CACA,6BAAA,CACA,wCAAA,CACA,2CAAA,CACA,YAAA,CACA,aAAA,CACA,cAAA,CACA,qBAAA,CACA,eAAA,CACA,OAAA,CACA,QAAA,CACA,+BAAA,CACA,4BAAA,CACA,2BAAA,CACA,aAAA,CAED,iBACC,uCAAA,CAED,qBACC,iBAAA,CACA,YAAA,CACA,wBAAA,CACA,OAAA,CACA,QAAA,CACA,SAAA,CACA,gBAAA,CACA,qBAAA,CACA,UAAA,CACA,sFAAA,CAEA,gCACO,6BAAA,CAGP,qEAEC,wBAAA,CAGD,4BACI,kBAAA,CACA,eAAA,CACH,sBAAA,CACA,WAAA,CACA,cAAA,CAIF,iBACC,iBAAA,CACA,KAAA,CACA,OAAA,CACA,YAAA,CACA,iDAAA,CACA,UAAA,CAEA,sEAGC,SAAA,CAIF,eACC,qBAAA,CACA,UAAA,CACA,YAAA,CACA,cAAA,CACA,KAAA,CACA,MAAA,CACA,UAAA,CACA,WAAA,CAGD,gCACC,UAAA,CAGD,mBACC,UAAA,CACA,eAAA,CAIA,oDACC,UAAA,CAEA,yEACC,UAAA,CAED,0DACC,YAAA\",\"sourcesContent\":[\".oc-dialog {\\n\\tbackground: var(--color-main-background);\\n\\tcolor: var(--color-text-light);\\n\\tborder-radius: var(--border-radius-large);\\n\\tbox-shadow: 0 0 30px var(--color-box-shadow);\\n\\tpadding: 24px;\\n\\tz-index: 10000;\\n\\tfont-size: 100%;\\n\\tbox-sizing: border-box;\\n\\tmin-width: 200px;\\n\\ttop: 50%;\\n\\tleft: 50%;\\n\\ttransform: translate(-50%, -50%);\\n\\tmax-height: calc(100% - 20px);\\n\\tmax-width: calc(100% - 20px);\\n\\toverflow: auto;\\n}\\n.oc-dialog-title {\\n\\tbackground: var(--color-main-background);\\n}\\n.oc-dialog-buttonrow {\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tbackground: transparent;\\n\\tright: 0;\\n\\tbottom: 0;\\n\\tpadding: 0;\\n\\tpadding-top: 10px;\\n\\tbox-sizing: border-box;\\n\\twidth: 100%;\\n\\tbackground-image: linear-gradient(rgba(255, 255, 255, 0.0), var(--color-main-background));\\n\\n\\t&.twobuttons {\\n justify-content: space-between;\\n }\\n\\n\\t&.onebutton,\\n\\t&.twobuttons.aside {\\n\\t\\tjustify-content: flex-end;\\n\\t}\\n\\n\\tbutton {\\n\\t white-space: nowrap;\\n\\t overflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\theight: 44px;\\n\\t\\tmin-width: 44px;\\n\\t}\\n}\\n\\n.oc-dialog-close {\\n\\tposition: absolute;\\n\\ttop: 0;\\n\\tright: 0;\\n\\tpadding: 25px;\\n\\tbackground: var(--icon-close-000) no-repeat center;\\n\\topacity: .5;\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\\n.oc-dialog-dim {\\n\\tbackground-color: #000;\\n\\topacity: .2;\\n\\tz-index: 9999;\\n\\tposition: fixed;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\twidth: 100%;\\n\\theight: 100%;\\n}\\n\\nbody.theme--dark .oc-dialog-dim {\\n\\topacity: .8;\\n}\\n\\n.oc-dialog-content {\\n\\twidth: 100%;\\n\\tmax-width: 550px;\\n}\\n\\n.oc-dialog.password-confirmation {\\n\\t.oc-dialog-content {\\n\\t\\twidth: auto;\\n\\n\\t\\tinput[type=password] {\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\t\\tlabel {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.program(5, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":1},\"end\":{\"line\":10,\"column\":8}}})) != null ? stack1 : \"\");\n},\"2\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":2},\"end\":{\"line\":7,\"column\":9}}})) != null ? stack1 : \"\");\n},\"3\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<a class=\\\"profile-link--avatar\\\" href=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32\\\" class=\\\"avatar\\\" srcset=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32 1x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=64 2x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=128 4x\\\" alt=\\\"\\\">\\n\t\t\t</a>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32\\\" class=\\\"avatar\\\" srcset=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32 1x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=64 2x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=128 4x\\\" alt=\\\"\\\">\\n\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(8, data, 0),\"inverse\":container.program(11, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":1},\"end\":{\"line\":20,\"column\":8}}})) != null ? stack1 : \"\");\n},\"8\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(9, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":2},\"end\":{\"line\":17,\"column\":9}}})) != null ? stack1 : \"\");\n},\"9\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<a class=\\\"profile-link--avatar\\\" href=\\\"\"\n + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t\t<div class=\\\"avatar\\\"></div>\\n\t\t\t</a>\\n\";\n},\"11\":function(container,depth0,helpers,partials,data) {\n return \"\t\t<div class=\\\"avatar\\\"></div>\\n\";\n},\"13\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(14, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":1},\"end\":{\"line\":29,\"column\":8}}})) != null ? stack1 : \"\");\n},\"14\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<a class=\\\"body profile-link--full-name\\\" href=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t\t</a>\\n\";\n},\"16\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(17, data, 0),\"inverse\":container.program(19, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":0},\"end\":{\"line\":45,\"column\":0}}})) != null ? stack1 : \"\");\n},\"17\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<a class=\\\"body\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\"> \\n\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t</a>\\n \t<a class=\\\"top-action\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n \t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n + \"\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t</a>\\n\";\n},\"19\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<div class=\\\"body\\\">\\n\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t</div>\\n\";\n},\"21\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<a class=\\\"second-action\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t<img src=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n + \"\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n</a>\\n\";\n},\"23\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<span class=\\\"other-actions icon-more\\\"></span>\\n\t<div class=\\\"menu popovermenu\\\">\\n\t\t<ul>\\n\"\n + ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"actions\") : stack1),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(24, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":55,\"column\":3},\"end\":{\"line\":62,\"column\":12}}})) != null ? stack1 : \"\")\n + \"\t\t</ul>\\n\t</div>\\n\";\n},\"24\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<li>\\n\t\t\t\t<a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"hyperlink\") || (depth0 != null ? lookupProperty(depth0,\"hyperlink\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"hyperlink\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":57,\"column\":13},\"end\":{\"line\":57,\"column\":26}}}) : helper)))\n + \"\\\">\\n\t\t\t\t\t<img src=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"icon\") || (depth0 != null ? lookupProperty(depth0,\"icon\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"icon\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":58,\"column\":15},\"end\":{\"line\":58,\"column\":23}}}) : helper)))\n + \"\\\" alt=\\\"\\\">\\n\t\t\t\t\t<span>\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"title\") || (depth0 != null ? lookupProperty(depth0,\"title\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"title\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":59,\"column\":11},\"end\":{\"line\":59,\"column\":20}}}) : helper)))\n + \"</span>\\n\t\t\t\t</a>\\n\t\t\t</li>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.program(7, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":21,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(13, data, 0),\"inverse\":container.program(16, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":22,\"column\":0},\"end\":{\"line\":45,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"hasTwoActions\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(21, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":46,\"column\":0},\"end\":{\"line\":50,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"hasManyActions\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(23, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":51,\"column\":0},\"end\":{\"line\":65,\"column\":7}}})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-search\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"couldNotLoadText\") || (depth0 != null ? lookupProperty(depth0,\"couldNotLoadText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"couldNotLoadText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":5},\"end\":{\"line\":3,\"column\":25}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-search\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"noContactsFoundText\") || (depth0 != null ? lookupProperty(depth0,\"noContactsFoundText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"noContactsFoundText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":5},\"end\":{\"line\":4,\"column\":28}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"footer\\\"><a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppURL\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppURL\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppURL\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":29},\"end\":{\"line\":9,\"column\":47}}}) : helper)))\n + \"\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"showAllContactsText\") || (depth0 != null ? lookupProperty(depth0,\"showAllContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"showAllContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":49},\"end\":{\"line\":9,\"column\":72}}}) : helper)))\n + \"</a></div>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"canInstallApp\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(6, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":0},\"end\":{\"line\":12,\"column\":0}}})) != null ? stack1 : \"\");\n},\"6\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"footer\\\"><a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppMgmtURL\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppMgmtURL\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppMgmtURL\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":29},\"end\":{\"line\":11,\"column\":51}}}) : helper)))\n + \"\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppMgmtText\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppMgmtText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppMgmtText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":53},\"end\":{\"line\":11,\"column\":76}}}) : helper)))\n + \"</a></div>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contacts\") : depth0)) != null ? lookupProperty(stack1,\"length\") : stack1),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":6,\"column\":11}}})) != null ? stack1 : \"\")\n + \"<div id=\\\"contactsmenu-contacts\\\"></div>\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"contactsAppEnabled\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.program(5, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":0},\"end\":{\"line\":12,\"column\":7}}})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-loading\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"loadingText\") || (depth0 != null ? lookupProperty(depth0,\"loadingText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"loadingText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":5},\"end\":{\"line\":3,\"column\":20}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<label class=\\\"hidden-visually\\\" for=\\\"contactsmenu-search\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchContactsText\") || (depth0 != null ? lookupProperty(depth0,\"searchContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":57},\"end\":{\"line\":1,\"column\":79}}}) : helper)))\n + \"</label>\\n<input id=\\\"contactsmenu-search\\\" type=\\\"search\\\" placeholder=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchContactsText\") || (depth0 != null ? lookupProperty(depth0,\"searchContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":59},\"end\":{\"line\":2,\"column\":81}}}) : helper)))\n + \"\\\" value=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchTerm\") || (depth0 != null ? lookupProperty(depth0,\"searchTerm\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchTerm\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":90},\"end\":{\"line\":2,\"column\":104}}}) : helper)))\n + \"\\\">\\n<div class=\\\"content\\\">\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<img src=\\\"\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"icon\") || (depth0 != null ? lookupProperty(depth0,\"icon\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"icon\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":24},\"end\":{\"line\":3,\"column\":32}}}) : helper)))\n + \"\\\">\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<li>\\n\t<a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"hyperlink\") || (depth0 != null ? lookupProperty(depth0,\"hyperlink\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"hyperlink\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":10},\"end\":{\"line\":2,\"column\":23}}}) : helper)))\n + \"\\\">\\n\t\t\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"icon\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":2},\"end\":{\"line\":3,\"column\":41}}})) != null ? stack1 : \"\")\n + \"\\n\t\t<span>\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"title\") || (depth0 != null ? lookupProperty(depth0,\"title\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"title\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":8},\"end\":{\"line\":4,\"column\":17}}}) : helper)))\n + \"</span>\\n\t</a>\\n</li>\\n\";\n},\"useData\":true});","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 2819,\n\t\"./hi.js\": 2819,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","// 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 = 2943;","__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\t2943: 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));","__webpack_require__.nc = undefined;","// 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__(13084); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","Element","prototype","matches","msMatchesSelector","webkitMatchesSelector","closest","s","el","this","parentElement","parentNode","nodeType","console","log","window","noOp","methods","i","length","document","documentElement","style","navigator","userAgent","match","msViewportStyle","createElement","appendChild","createTextNode","getElementsByTagName","loadedScripts","loadedStyles","updatableNotification","getDefaultNotificationFunction","setDefault","callback","hide","$row","_","undefined","each","$","toastify","hideToast","error","call","showHtml","html","options","isHTML","timeout","TOAST_PERMANENT_TIMEOUT","toast","showMessage","toastElement","show","text","toString","split","join","escapeHTML","showUpdate","showTemporary","TOAST_DEFAULT_TIMEOUT","isHidden","find","ajaxConnectionLostHandler","Notification","t","trailing","dynamicSlideToggleEnabled","enableDynamicSlideToggle","Apps","$el","removeClass","trigger","addClass","method","endpoint","OC","type","toUpperCase","url","generateOcsUrl","data","success","bind","getApps","getKeys","app","getValue","key","defaultValue","setValue","value","deleteKey","appConfig","oc_appconfig","AppConfig","_oc_appswebroots","methodMap","create","update","patch","delete","read","parsePropFindResult","result","davProperties","subResult","props","href","propStat","status","properties","propKey","id","parseIdFromLocation","queryPos","indexOf","substr","parts","pop","isSuccessStatus","callPropPatch","client","model","headers","propPatch","attrs","changedProp","warn","convertModelAttributesToDavProperties","changed","then","toJSON","Backbone","VendorBackbone","Object","assign","davCall","dav","baseUrl","xmlNamespaces","resolveUrl","requestToken","propFind","depth","response","propsMapping","results","body","shift","callPropFind","request","callMkCol","responseJson","locationHeader","xhr","getResponseHeader","callMethod","davSync","params","isCollection","Collection","hasInnerCollection","usePUT","collection","Error","urlError","JSON","stringify","processData","textStatus","errorThrown","context","_oc_config","Contact","Model","defaults","fullName","lastMessage","actions","hasOneAction","hasTwoActions","hasManyActions","initialize","get","set","ContactCollection","ContactsListView","View","_collection","_subViews","render","self","forEach","contact","item","ContactsListItemView","append","on","_onChildActionMenuToggle","push","$src","view","className","_template","_model","_actionMenuShown","events","contactTemplate","require","template","_onOtherActionMenuOpened","delegateEvents","imageplaceholder","tooltip","placement","_onToggleActionsMenu","is","ContactsMenuView","_loadingTemplate","_errorTemplate","_contentTemplate","_contactsTemplate","_contacts","_searchTerm","templates","loading","menu","list","_onSearch","e","searchTerm","val","loadingTemplate","errorTemplate","couldNotLoadText","contentTemplate","searchContactsText","contactsTemplate","noContactsFoundText","showAllContactsText","contactsAppMgmtText","showLoading","loadingText","showError","showContacts","viewData","contacts","contactsAppEnabled","contactsAppURL","canInstallApp","contactsAppMgmtURL","searchVal","focus","ContactsMenu","_$trigger","_view","_contactsPromise","_loadContacts","_toggleVisibility","Promise","resolve","_getContacts","filter","term","catch","rawUid","getAttribute","displayName","currentUser","Search","global","emit","token","Dialogs","YES_NO_BUTTONS","OK_BUTTONS","FILEPICKER_TYPE_CHOOSE","FILEPICKER_TYPE_MOVE","FILEPICKER_TYPE_COPY","FILEPICKER_TYPE_COPY_MOVE","FILEPICKER_TYPE_CUSTOM","dialogsCounter","alert","title","modal","message","OK_BUTTON","info","confirm","confirmDestructive","buttons","confirmHtml","prompt","name","password","_getMessageTemplate","$tmpl","dialogName","dialogId","$dlg","octemplate","dialog_name","input","attr","label","buttonlist","click","ocdialog","defaultButton","closeOnEscape","close","filepicker","multiselect","mimetypeFilter","path","sortField","sortOrder","emptyText","newText","filesClient","OCA","filelist","allowDirectoryChooser","_getFilePickerTemplate","$filePicker","emptytext","newtext","nameCol","sizeCol","modifiedCol","remove","$showGridView","_onGridviewChange","_getGridSettings","newButton","event","stopImmediatePropagation","preventDefault","$input","submit","newName","lastPos","lastIndexOf","selectRange","$form","stopPropagation","filename","trimmedName","trim","isFileNameValid","file","escape","checkInput","newname","createDirectory","always","_fillFilePicker","keypress","keyCode","which","ready","$fileListHeader","$filelist","$filelistContainer","$dirTree","_handleTreeListSelect","_handlePickerClick","dir","currentTarget","functionToCall","returnType","datapath","index","element","selectedName","button","width","height","buttonEnableDisable","prop","fail","content","dialogType","allowHtml","escapeFunction","cancel","classes","confirmClasses","closeCallback","_fileexistsshown","fileexists","original","replacement","controller","dialogDeferred","resampleHermite","canvas","W","H","W2","H2","Math","round","img","getContext","getImageData","img2","data2","ratio_w","ratio_h","ratio_w_half","ceil","ratio_h_half","j","x2","weight","weights","weights_alpha","gx_r","gx_g","gx_b","gx_a","center_y","yy","floor","dy","abs","center_x","w0","xx","dx","w","sqrt","clearRect","max","putImageData","addConflict","$conflicts","$conflict","clone","$originalDiv","$replacementDiv","size","mtime","lastModified","directory","urlSpec","x","y","c","etag","forceIcon","previewpath","Files","generatePreviewUrl","replace","css","FileReader","reader","onload","blob","Blob","target","URL","webkitURL","originalUrl","createObjectURL","image","Image","src","min","drawImage","toDataURL","readAsArrayBuffer","reject","getCroppedPreview","checkboxId","count","n","parent","children","_getFileExistsTemplate","allnewfiles","allexistingfiles","why","what","onCancel","onContinue","closeButton","$primaryButton","updatePrimaryButton","checkedCount","$checkbox","promise","checked","gridview","next","toggleClass","defer","$filePickerTemplate","tmpl","$listTmpl","detach","jqXHR","$messageTemplate","$fileexistsTemplate","_getFileList","mimeType","mimetypes","empty","advancedFilter","getFolderContents","files","mimetype","showHiddenInput","getElementById","startsWith","Comparators","fileInfo1","fileInfo2","comparator","sort","file1","file2","isFavorite","fileInfo","tags","_fillSlug","idx","entry","simpleSize","sizeColor","icon","parseInt","pow","filename1","filename2","date","previewUrl","addButton","$template","paths","prepend","prependTo","getOcDialog","_changeButtonsText","$element","ctrlKey","copyText","folder","moveText","eq","manageFromDocument","getToken","setToken","newToken","OCEventSource","joinChar","dataStr","typelessListeners","closed","listeners","encodeURIComponent","useFallBack","EventSource","iframeId","iframeCount","fallBackSources","iframe","source","onmessage","parse","listen","fallBackCallBack","done","lastLength","addEventListener","currentMenu","hideMenus","complete","lastMenu","slideUp","apply","arguments","isAdmin","_oc_isadmin","_oc_l10n_registry_translations","_oc_l10n_registry_plural_functions","hasAppTranslations","appId","getAppTranslations","translations","pluralFunction","L10n","load","appName","generateFilePath","register","pluralForm","bundle","_getPlural","extend","_unregister","translate","vars","allOptions","sanitize","optSanitize","DOMPurify","identity","optEscape","translation","a","b","r","_build","translatePlural","textSingular","textPlural","identifier","plural","number","language","substring","Handlebars","startSaving","selector","startAction","stop","finishedSaving","finishedAction","finishedSuccess","finishedError","delay","fadeOut","pageLoadTime","init","requirePasswordConfirmation","moment","requiresPasswordConfirmation","serverTimeDiff","nc_pageLoad","timeSinceLogin","nc_lastLogin","backendAllowsPasswordConfirmation","rejectCallback","config","_confirmPassword","$dialog","$error","$buttons","generateUrl","lastLogin","theme","_theme","_handlers","_pushState","strParams","history","pushState","location","pathname","toLowerCase","pattern","patterns","querySelectorAll","ii","fill","stroke","removeAttribute","setAttribute","replaceState","hash","_cancelPop","addOnPopStateHandler","handler","_parseHashQuery","pos","_decodeQuery","query","parseUrlQuery","search","_onPopState","state","chunkify","tz","charAt","m","History","humanFileSize","computerFileSize","string","bytes","parseFloat","isFinite","k","kb","mb","gb","g","tb","pb","p","formatDate","timestamp","format","TESTING","relativeModifiedDate","diff","fromNow","getScrollBarWidth","_scrollBarWidth","inner","outer","position","top","left","visibility","overflow","w1","offsetWidth","w2","clientWidth","removeChild","stripTime","Date","getFullYear","getMonth","getDate","naturalSortCompare","aa","bb","aNum","Number","bNum","localeCompare","waitFor","interval","internalCallback","setTimeout","isCookieSetToValue","cookies","cookie","debug","_oc_debug","webroot","_oc_webroot","coreApps","menuSpeed","PERMISSION_ALL","PERMISSION_CREATE","PERMISSION_DELETE","PERMISSION_NONE","PERMISSION_READ","PERMISSION_SHARE","PERMISSION_UPDATE","TAG_FAVORITE","fileIsBlacklisted","Config","addScript","script","addStyle","createStyleSheet","appSettings","args","appid","scriptName","cache","settings","popup","hasClass","arrowclass","loadJS","scriptname","jqxhr","appswebroots","dialogs","getCurrentUser","uid","isUserAdmin","L10N","_ajaxConnectionLostHandler","_processAjaxError","statusText","timer","setInterval","clearInterval","registerXHRForErrorProcessing","readyState","getCapabilities","realGetCapabilities","registerMenu","$toggle","$menuEl","toggle","headerMenu","isClickableElement","slideToggle","showMenu","unregisterMenu","off","basename","encodePath","dirname","isSamePath","joinPaths","getHost","host","getHostName","hostname","getPort","port","getProtocol","protocol","getCanonicalLocale","getLocale","getLanguage","addTranslations","buildQueryString","parseQueryString","queryString","components","part","decodeURIComponent","msg","PasswordConfirmation","Plugins","_plugins","targetName","plugin","plugins","getPlugins","attach","targetObject","Util","filePath","namespaces","tail","getRootPath","getRootUrl","imagePath","redirect","targetURL","reload","getRequestToken","linkTo","linkToOCS","service","version","ocsVersion","linkToRemote","generateRemoteUrl","linkToRemoteBase","realGetRootUrl","subscribe","resp","poll","setRequestToken","startPolling","NaN","session_lifetime","isNaN","getInterval","resizeMenu","appList","rightHeaderWidth","outerWidth","availableWidth","isMobile","lastShownApp","appCount","localeAliases","zh","zh_Hans","zh_Hans_CN","zh_Hans_HK","zh_Hans_MO","zh_Hans_SG","zh_Hant","zh_Hant_HK","zh_Hant_MO","zh_Hant_TW","locale","hasOwnProperty","initCore","$menu","$excludedPageClasses","cssVars","watch","onlyLegacy","test","exec","allowAuthErrors","loadState","loadConfig","auto_logout","lastActive","now","localStorage","setItem","newValue","logoutUrl","registerAutoLogout","session_keepalive","initSessionHeartBeat","setNavigationCounter","counter","appmenuElement","querySelector","appsElement","classList","mask","add","textContent","$navigation","$appmenu","delegate","$app","metaKey","Theming","inverted","setUpMainMenu","$page","includes","caretPosition","offset","resize","snapper","Snap","disable","maxPosition","minDragDistance","animating","oldSnapperOpen","open","oldSnapperClose","_snapperOpen","_snapperClose","$target","navigationBarSlideGestureEnabled","navigationBarSlideGestureAllowed","navigationBarSlideGestureEnablePending","enable","toggleSnapperOnSize","ex","TypeError","urlRegex","plainToRich","formatLinksRich","richToPlain","formatLinksPlain","leadingSpace","trailingSpace","linkText","$content","$this","dismissOptions","dismiss","menuItem","div","innerText","ocs","product","onclick","whatsNew","regular","whatsNewTextItem","innerHTML","changelogURL","rel","onQuerySuccess","onQueryError","onDismissSuccess","onDismissError","func","funcName","oldFunc","newFunc","types","loadedStylesheets","loadScript","scriptPath","btoa","onerror","head","loadStylesheet","stylePath","link","showSuccess","warning","showWarning","showInfo","Collaboration","registerType","typeDefinition","action","getTypes","keys","getIcon","typeIconClass","getLabel","typeString","getLink","Comments","InitialState","Loader","Toast","WhatsNew","warnIfNotTesting","setDeprecatedProp","cb","Array","isArray","defineProperty","autosize","ClipboardJS","md5","OCP","user","ie8fix","hidedefault","displayname","setAvatarForUnknownUser","String","$div","devicePixelRatio","oc_userconfig","avatar","clearimageplaceholder","alt","entryTemplate","shareWith","shareType","appendTo","$list","topAction","concat","hyperlink","clickedList","has","clickedTarget","attrName","attrValue","_create","originalCss","display","originalTitle","tabIndex","role","insertBefore","removeAttr","enterCallback","$buttonrow","$button","_setOptions","_createOverlay","_init","_trigger","_setOption","$title","_setSizes","$defaultButton","$closeButton","closeCB","lessHeight","outerHeight","contentDiv","overlay","_destroyOverlay","widget","setEnterCallback","unsetEnterCallback","destroy","Template","elem","_html","o","outerHTML","toRgb","Color","mixPalette","steps","color1","color2","palette","step","ends","stepCalc","red","yellow","blue","palette1","palette2","palette3","maximum","finalInt","hashToInt","seed","rgb","placeholderText","map","word","elm","crossDomain","setRequestHeader","start","end","setSelectionRange","createTextRange","range","collapse","moveEnd","moveStart","select","showPassword","fn","setState","checkbox","$clone","class","tabindex","autocomplete","cloneElement","insertAfter","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","contents","areaSelector","area","hideArea","slideDown","showArea","onpopstate","___CSS_LOADER_URL_IMPORT_0___","___CSS_LOADER_URL_IMPORT_1___","___CSS_LOADER_URL_IMPORT_2___","___CSS_LOADER_URL_IMPORT_3___","___CSS_LOADER_URL_IMPORT_4___","___CSS_LOADER_EXPORT___","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_REPLACEMENT_1___","___CSS_LOADER_URL_REPLACEMENT_2___","___CSS_LOADER_URL_REPLACEMENT_3___","___CSS_LOADER_URL_REPLACEMENT_4___","module","exports","container","depth0","helpers","partials","stack1","lookupProperty","propertyName","nullContext","program","noop","alias1","lambda","alias2","escapeExpression","helper","hooks","helperMissing","alias3","alias4","webpackContext","req","webpackContextResolve","__webpack_require__","code","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","amdD","amdO","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","every","splice","getter","__esModule","d","definition","enumerable","globalThis","Function","obj","Symbol","toStringTag","nmd","baseURI","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/core-maintenance.js b/dist/core-maintenance.js
index e9dff7d22af..7937b8f4a23 100644
--- a/dist/core-maintenance.js
+++ b/dist/core-maintenance.js
@@ -1,2 +1,2 @@
-!function(){"use strict";var n,e={49e3:function(n,e,t){var o=t(4820),r=(0,t(79753).getRootUrl)()+"/status.php";!function n(){console.info("checking the Nextcloud maintenance status"),o.default.get(r).then((function(n){return n.data})).then((function(e){if(!1===e.maintenance)return console.info("Nextcloud is not in maintenance mode anymore -> reloading"),void window.location.reload();console.info("Nextcloud is still in maintenance mode"),setTimeout(n,2e4)})).catch(console.error.bind(void 0))}()}},t={};function o(n){var r=t[n];if(void 0!==r)return r.exports;var i=t[n]={id:n,loaded:!1,exports:{}};return e[n].call(i.exports,i,i.exports,o),i.loaded=!0,i.exports}o.m=e,o.amdD=function(){throw new Error("define cannot be used indirect")},o.amdO={},n=[],o.O=function(e,t,r,i){if(!t){var u=1/0;for(l=0;l<n.length;l++){t=n[l][0],r=n[l][1],i=n[l][2];for(var c=!0,a=0;a<t.length;a++)(!1&i||u>=i)&&Object.keys(o.O).every((function(n){return o.O[n](t[a])}))?t.splice(a--,1):(c=!1,i<u&&(u=i));if(c){n.splice(l--,1);var f=r();void 0!==f&&(e=f)}}return e}i=i||0;for(var l=n.length;l>0&&n[l-1][2]>i;l--)n[l]=n[l-1];n[l]=[t,r,i]},o.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return o.d(e,{a:e}),e},o.d=function(n,e){for(var t in e)o.o(e,t)&&!o.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:e[t]})},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),o.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},o.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},o.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n},o.j=1802,function(){o.b=document.baseURI||self.location.href;var n={1802:0};o.O.j=function(e){return 0===n[e]};var e=function(e,t){var r,i,u=t[0],c=t[1],a=t[2],f=0;if(u.some((function(e){return 0!==n[e]}))){for(r in c)o.o(c,r)&&(o.m[r]=c[r]);if(a)var l=a(o)}for(e&&e(t);f<u.length;f++)i=u[f],o.o(n,i)&&n[i]&&n[i][0](),n[i]=0;return o.O(l)},t=self.webpackChunknextcloud=self.webpackChunknextcloud||[];t.forEach(e.bind(null,0)),t.push=e.bind(null,t.push.bind(t))}();var r=o.O(void 0,[7874],(function(){return o(49e3)}));r=o.O(r)}();
-//# sourceMappingURL=core-maintenance.js.map?v=1b4f16bb5395363395e8 \ No newline at end of file
+!function(){"use strict";var n,e={49e3:function(n,e,t){var o=t(4820),r=(0,t(79753).getRootUrl)()+"/status.php";!function n(){console.info("checking the Nextcloud maintenance status"),o.default.get(r).then((function(n){return n.data})).then((function(e){if(!1===e.maintenance)return console.info("Nextcloud is not in maintenance mode anymore -> reloading"),void window.location.reload();console.info("Nextcloud is still in maintenance mode"),setTimeout(n,2e4)})).catch(console.error.bind(void 0))}()}},t={};function o(n){var r=t[n];if(void 0!==r)return r.exports;var i=t[n]={id:n,loaded:!1,exports:{}};return e[n].call(i.exports,i,i.exports,o),i.loaded=!0,i.exports}o.m=e,o.amdD=function(){throw new Error("define cannot be used indirect")},o.amdO={},n=[],o.O=function(e,t,r,i){if(!t){var u=1/0;for(l=0;l<n.length;l++){t=n[l][0],r=n[l][1],i=n[l][2];for(var c=!0,a=0;a<t.length;a++)(!1&i||u>=i)&&Object.keys(o.O).every((function(n){return o.O[n](t[a])}))?t.splice(a--,1):(c=!1,i<u&&(u=i));if(c){n.splice(l--,1);var f=r();void 0!==f&&(e=f)}}return e}i=i||0;for(var l=n.length;l>0&&n[l-1][2]>i;l--)n[l]=n[l-1];n[l]=[t,r,i]},o.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return o.d(e,{a:e}),e},o.d=function(n,e){for(var t in e)o.o(e,t)&&!o.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:e[t]})},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),o.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},o.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},o.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n},o.j=1802,function(){o.b=document.baseURI||self.location.href;var n={1802:0};o.O.j=function(e){return 0===n[e]};var e=function(e,t){var r,i,u=t[0],c=t[1],a=t[2],f=0;if(u.some((function(e){return 0!==n[e]}))){for(r in c)o.o(c,r)&&(o.m[r]=c[r]);if(a)var l=a(o)}for(e&&e(t);f<u.length;f++)i=u[f],o.o(n,i)&&n[i]&&n[i][0](),n[i]=0;return o.O(l)},t=self.webpackChunknextcloud=self.webpackChunknextcloud||[];t.forEach(e.bind(null,0)),t.push=e.bind(null,t.push.bind(t))}(),o.nc=void 0;var r=o.O(void 0,[7874],(function(){return o(49e3)}));r=o.O(r)}();
+//# sourceMappingURL=core-maintenance.js.map?v=233162144465b054cb0a \ No newline at end of file
diff --git a/dist/core-maintenance.js.map b/dist/core-maintenance.js.map
index 17c0d871e3b..c95ac7b3e89 100644
--- a/dist/core-maintenance.js.map
+++ b/dist/core-maintenance.js.map
@@ -1 +1 @@
-{"version":3,"file":"core-maintenance.js?v=1b4f16bb5395363395e8","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/maintenance.js","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 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport Axios from '@nextcloud/axios'\nimport { getRootUrl } from '@nextcloud/router'\n\nconst url = getRootUrl() + '/status.php'\n\nconst check = () => {\n\tconsole.info('checking the Nextcloud maintenance status')\n\tAxios.get(url)\n\t\t.then(resp => resp.data)\n\t\t.then(status => {\n\t\t\tif (status.maintenance === false) {\n\t\t\t\tconsole.info('Nextcloud is not in maintenance mode anymore -> reloading')\n\n\t\t\t\twindow.location.reload()\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconsole.info('Nextcloud is still in maintenance mode')\n\n\t\t\t// Wait 20sec before the next request\n\t\t\tsetTimeout(check, 20 * 1000)\n\t\t})\n\t\t.catch(console.error.bind(this))\n}\n\n// Off we go!\ncheck()\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 = 1802;","__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\t1802: 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__(49000); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","url","getRootUrl","check","console","info","Axios","then","resp","data","status","maintenance","window","location","reload","setTimeout","catch","error","bind","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","id","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","this","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","children","b","document","baseURI","self","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","push","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"core-maintenance.js?v=233162144465b054cb0a","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/maintenance.js","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/runtime/nonce","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 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport Axios from '@nextcloud/axios'\nimport { getRootUrl } from '@nextcloud/router'\n\nconst url = getRootUrl() + '/status.php'\n\nconst check = () => {\n\tconsole.info('checking the Nextcloud maintenance status')\n\tAxios.get(url)\n\t\t.then(resp => resp.data)\n\t\t.then(status => {\n\t\t\tif (status.maintenance === false) {\n\t\t\t\tconsole.info('Nextcloud is not in maintenance mode anymore -> reloading')\n\n\t\t\t\twindow.location.reload()\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconsole.info('Nextcloud is still in maintenance mode')\n\n\t\t\t// Wait 20sec before the next request\n\t\t\tsetTimeout(check, 20 * 1000)\n\t\t})\n\t\t.catch(console.error.bind(this))\n}\n\n// Off we go!\ncheck()\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 = 1802;","__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\t1802: 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));","__webpack_require__.nc = undefined;","// 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__(49000); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","url","getRootUrl","check","console","info","Axios","then","resp","data","status","maintenance","window","location","reload","setTimeout","catch","error","bind","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","id","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","this","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","children","b","document","baseURI","self","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","push","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/core-profile.js b/dist/core-profile.js
index 99788cf2661..a6901e3fa0d 100644
--- a/dist/core-profile.js
+++ b/dist/core-profile.js
@@ -1,3 +1,3 @@
/*! For license information please see core-profile.js.LICENSE.txt */
-!function(){"use strict";var n,e={8948:function(n,e,a){var i,r=a(20144),o=a(22200),A=a(9944),s=a(34741),l=a(17499),c=null===(i=(0,o.getCurrentUser)())?(0,l.IY)().setApp("core").build():(0,l.IY)().setApp("core").setUid(i.uid).build(),d=a(74854),p=a(16453),C=a(79753),u=a(26932),_=a(28017),v=a.n(_),f=a(79440),g=a.n(f),h=a(74466),m=a.n(h),x=a(58022),b=a(59466),y=a(48747),k={name:"PrimaryActionButton",props:{disabled:{type:Boolean,default:!1},href:{type:String,required:!0},icon:{type:String,required:!0},target:{type:String,required:!0,validator:function(t){return["_self","_blank","_parent","_top"].includes(t)}}},computed:{colorPrimaryText:function(){return getComputedStyle(document.body).getPropertyValue("--color-primary-text").trim()}}},w=a(93379),B=a.n(w),E=a(7795),D=a.n(E),S=a(90569),I=a.n(S),P=a(3565),U=a.n(P),z=a(19216),O=a.n(z),M=a(44589),Z=a.n(M),G=a(53155),q={};q.styleTagTransform=Z(),q.setAttributes=U(),q.insert=I().bind(null,"head"),q.domAPI=D(),q.insertStyleElement=O(),B()(G.Z,q),G.Z&&G.Z.locals&&G.Z.locals;var W=a(51900),Y=(0,W.Z)(k,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("a",t._g({staticClass:"profile__primary-action-button",class:{disabled:t.disabled},attrs:{href:t.href,target:t.target,rel:"noopener noreferrer nofollow"}},t.$listeners),[e("img",{staticClass:"icon",class:[t.icon,{"icon-invert":"#ffffff"===t.colorPrimaryText}],attrs:{src:t.icon}}),t._v(" "),t._t("default")],2)}),[],!1,null,"35d5c4b6",null).exports,j=(0,p.loadState)("core","status",{}),T=(0,p.loadState)("core","profileParameters",{userId:null,displayname:null,address:null,organisation:null,role:null,headline:null,biography:null,actions:[],isUserAvatarVisible:!1}),$=T.userId,F=T.displayname,J=T.address,K=T.organisation,L=T.role,R=T.headline,V=T.biography,H=T.actions,Q=T.isUserAvatarVisible,N={name:"Profile",components:{AccountIcon:y.Z,ActionLink:m(),Actions:g(),Avatar:v(),MapMarkerIcon:x.Z,PencilIcon:b.default,PrimaryActionButton:Y},data:function(){return{status:j,userId:$,displayname:F,address:J,organisation:K,role:L,headline:R,biography:V,actions:H,isUserAvatarVisible:Q}},computed:{isCurrentUser:function(){var t;return(null===(t=(0,o.getCurrentUser)())||void 0===t?void 0:t.uid)===this.userId},allActions:function(){return this.actions},primaryAction:function(){return this.allActions.length?this.allActions[0]:null},middleActions:function(){return this.allActions.slice(1,4).length?this.allActions.slice(1,4):null},otherActions:function(){return this.allActions.slice(4).length?this.allActions.slice(4):null},settingsUrl:function(){return(0,C.generateUrl)("/settings/user")},colorMainBackground:function(){return getComputedStyle(document.body).getPropertyValue("--color-main-background").trim()},emptyProfileMessage:function(){return this.isCurrentUser?t("core","You have not added any info yet"):t("core","{user} has not added any info yet",{user:this.displayname||this.userId})}},mounted:function(){document.title="".concat(this.displayname||this.userId," - ").concat(document.title),(0,d.subscribe)("user_status:status.updated",this.handleStatusUpdate)},beforeDestroy:function(){(0,d.unsubscribe)("user_status:status.updated",this.handleStatusUpdate)},methods:{handleStatusUpdate:function(t){this.isCurrentUser&&t.userId===this.userId&&(this.status=t)},openStatusModal:function(){var n=document.querySelector(".user-status-menu-item__toggle");this.isCurrentUser&&(n?n.click():(0,u.x2)(t("core","Error opening the user status modal, try hard refreshing the page")))}}},X=a(52500),tt={};tt.styleTagTransform=Z(),tt.setAttributes=U(),tt.insert=I().bind(null,"head"),tt.domAPI=D(),tt.insertStyleElement=O(),B()(X.Z,tt),X.Z&&X.Z.locals&&X.Z.locals;var nt=a(20075),et={};et.styleTagTransform=Z(),et.setAttributes=U(),et.insert=I().bind(null,"head"),et.domAPI=D(),et.insertStyleElement=O(),B()(nt.Z,et),nt.Z&&nt.Z.locals&&nt.Z.locals;var at=(0,W.Z)(N,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{staticClass:"profile"},[e("div",{staticClass:"profile__header"},[e("div",{staticClass:"profile__header__container"},[e("div",{staticClass:"profile__header__container__placeholder"}),t._v(" "),e("h2",{staticClass:"profile__header__container__displayname"},[t._v("\n\t\t\t\t"+t._s(t.displayname||t.userId)+"\n\t\t\t\t"),t.isCurrentUser?e("a",{staticClass:"primary profile__header__container__edit-button",attrs:{href:t.settingsUrl}},[e("PencilIcon",{staticClass:"pencil-icon",attrs:{decorative:"",title:"",size:16}}),t._v("\n\t\t\t\t\t"+t._s(t.t("core","Edit Profile"))+"\n\t\t\t\t")],1):t._e()]),t._v(" "),t.status.icon||t.status.message?e("div",{staticClass:"profile__header__container__status-text",class:{interactive:t.isCurrentUser},on:{click:function(n){return n.preventDefault(),n.stopPropagation(),t.openStatusModal.apply(null,arguments)}}},[t._v("\n\t\t\t\t"+t._s(t.status.icon)+" "+t._s(t.status.message)+"\n\t\t\t")]):t._e()])]),t._v(" "),e("div",{staticClass:"profile__content"},[e("div",{staticClass:"profile__sidebar"},[e("Avatar",{staticClass:"avatar",class:{interactive:t.isCurrentUser},attrs:{user:t.userId,size:180,"show-user-status":!0,"show-user-status-compact":!1,"disable-menu":!0,"disable-tooltip":!0,"is-no-user":!t.isUserAvatarVisible},nativeOn:{click:function(n){return n.preventDefault(),n.stopPropagation(),t.openStatusModal.apply(null,arguments)}}}),t._v(" "),e("div",{staticClass:"user-actions"},[t.primaryAction?e("PrimaryActionButton",{staticClass:"user-actions__primary",attrs:{href:t.primaryAction.target,icon:t.primaryAction.icon,target:"phone"===t.primaryAction.id?"_self":"_blank"}},[t._v("\n\t\t\t\t\t"+t._s(t.primaryAction.title)+"\n\t\t\t\t")]):t._e(),t._v(" "),e("div",{staticClass:"user-actions__other"},[t._l(t.middleActions,(function(n){return e("Actions",{key:n.id,staticStyle:{"background-position":"14px center","background-size":"16px","background-repeat":"no-repeat"},style:Object.assign({},{backgroundImage:"url("+n.icon+")"},"#181818"===t.colorMainBackground&&{filter:"invert(1)"}),attrs:{"default-icon":n.icon}},[e("ActionLink",{attrs:{"close-after-click":!0,icon:n.icon,href:n.target,target:"phone"===n.id?"_self":"_blank"}},[t._v("\n\t\t\t\t\t\t\t"+t._s(n.title)+"\n\t\t\t\t\t\t")])],1)})),t._v(" "),t.otherActions?[e("Actions",{attrs:{"force-menu":!0}},t._l(t.otherActions,(function(n){return e("ActionLink",{key:n.id,class:{"icon-invert":"#181818"===t.colorMainBackground},attrs:{"close-after-click":!0,icon:n.icon,href:n.target,target:"phone"===n.id?"_self":"_blank"}},[t._v("\n\t\t\t\t\t\t\t\t"+t._s(n.title)+"\n\t\t\t\t\t\t\t")])})),1)]:t._e()],2)],1)],1),t._v(" "),e("div",{staticClass:"profile__blocks"},[t.organisation||t.role||t.address?e("div",{staticClass:"profile__blocks-details"},[t.organisation||t.role?e("div",{staticClass:"detail"},[e("p",[t._v(t._s(t.organisation)+" "),t.organisation&&t.role?e("span",[t._v("•")]):t._e(),t._v(" "+t._s(t.role))])]):t._e(),t._v(" "),t.address?e("div",{staticClass:"detail"},[e("p",[e("MapMarkerIcon",{staticClass:"map-icon",attrs:{decorative:"",title:"",size:16}}),t._v("\n\t\t\t\t\t\t"+t._s(t.address)+"\n\t\t\t\t\t")],1)]):t._e()]):t._e(),t._v(" "),t.headline||t.biography?[t.headline?e("div",{staticClass:"profile__blocks-headline"},[e("h3",[t._v(t._s(t.headline))])]):t._e(),t._v(" "),t.biography?e("div",{staticClass:"profile__blocks-biography"},[e("p",[t._v(t._s(t.biography))])]):t._e()]:[e("div",{staticClass:"profile__blocks-empty-info"},[e("AccountIcon",{attrs:{decorative:"",title:"","fill-color":"var(--color-text-maxcontrast)",size:60}}),t._v(" "),e("h3",[t._v(t._s(t.emptyProfileMessage))]),t._v(" "),e("p",[t._v(t._s(t.t("core","The headline and about sections will show up here")))])],1)]],2)])])}),[],!1,null,"6311e07c",null),it=at.exports;a.nc=btoa((0,o.getRequestToken)()),r.default.use(s.default),r.default.mixin({props:{logger:c},methods:{t:A.translate}});var rt=r.default.extend(it);window.addEventListener("DOMContentLoaded",(function(){(new rt).$mount("#vue-profile")}))},53155:function(t,n,e){var a=e(87537),i=e.n(a),r=e(23645),o=e.n(r)()(i());o.push([t.id,".profile__primary-action-button[data-v-35d5c4b6]{font-size:var(--default-font-size);font-weight:bold;width:188px;height:44px;padding:0 16px;line-height:44px;text-align:center;border-radius:var(--border-radius-pill);color:var(--color-primary-text);background-color:var(--color-primary-element);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.profile__primary-action-button .icon[data-v-35d5c4b6]{display:inline-block;vertical-align:middle;margin-bottom:2px;margin-right:4px}.profile__primary-action-button .icon.icon-invert[data-v-35d5c4b6]{filter:invert(1)}.profile__primary-action-button[data-v-35d5c4b6]:hover,.profile__primary-action-button[data-v-35d5c4b6]:focus,.profile__primary-action-button[data-v-35d5c4b6]:active{background-color:var(--color-primary-element-light)}","",{version:3,sources:["webpack://./core/src/components/Profile/PrimaryActionButton.vue"],names:[],mappings:"AAsEA,iDACC,kCAAA,CACA,gBAAA,CACA,WAAA,CACA,WAAA,CACA,cAAA,CACA,gBAAA,CACA,iBAAA,CACA,uCAAA,CACA,+BAAA,CACA,6CAAA,CACA,eAAA,CACA,kBAAA,CACA,sBAAA,CAEA,uDACC,oBAAA,CACA,qBAAA,CACA,iBAAA,CACA,gBAAA,CAEA,mEACC,gBAAA,CAIF,sKAGC,mDAAA",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.profile__primary-action-button {\n\tfont-size: var(--default-font-size);\n\tfont-weight: bold;\n\twidth: 188px;\n\theight: 44px;\n\tpadding: 0 16px;\n\tline-height: 44px;\n\ttext-align: center;\n\tborder-radius: var(--border-radius-pill);\n\tcolor: var(--color-primary-text);\n\tbackground-color: var(--color-primary-element);\n\toverflow: hidden;\n\twhite-space: nowrap;\n\ttext-overflow: ellipsis;\n\n\t.icon {\n\t\tdisplay: inline-block;\n\t\tvertical-align: middle;\n\t\tmargin-bottom: 2px;\n\t\tmargin-right: 4px;\n\n\t\t&.icon-invert {\n\t\t\tfilter: invert(1);\n\t\t}\n\t}\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbackground-color: var(--color-primary-element-light);\n\t}\n}\n"],sourceRoot:""}]),n.Z=o},52500:function(t,n,e){var a=e(87537),i=e.n(a),r=e(23645),o=e.n(r)()(i());o.push([t.id,"#header{background-color:rgba(0,0,0,0) !important;background-image:none !important}#content{padding-top:0px}","",{version:3,sources:["webpack://./core/src/views/Profile.vue"],names:[],mappings:"AAqSA,QACC,yCAAA,CACA,gCAAA,CAGD,SACC,eAAA",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// Override header styles\n#header {\n\tbackground-color: transparent !important;\n\tbackground-image: none !important;\n}\n\n#content {\n\tpadding-top: 0px;\n}\n"],sourceRoot:""}]),n.Z=o},20075:function(t,n,e){var a=e(87537),i=e.n(a),r=e(23645),o=e.n(r)()(i());o.push([t.id,".profile[data-v-6311e07c]{width:100%}.profile__header[data-v-6311e07c]{position:sticky;height:190px;top:-40px}.profile__header__container[data-v-6311e07c]{align-self:flex-end;width:100%;max-width:1024px;margin:0 auto;display:grid;grid-template-rows:max-content max-content;grid-template-columns:240px 1fr;justify-content:center}.profile__header__container__placeholder[data-v-6311e07c]{grid-row:1/3}.profile__header__container__displayname[data-v-6311e07c],.profile__header__container__status-text[data-v-6311e07c]{color:var(--color-primary-text)}.profile__header__container__displayname[data-v-6311e07c]{width:640px;height:45px;margin-top:128px;margin-bottom:0;font-size:30px;display:flex;align-items:center;cursor:text}.profile__header__container__displayname[data-v-6311e07c]:not(:last-child){margin-top:100px;margin-bottom:4px}.profile__header__container__edit-button[data-v-6311e07c]{border:none;margin-left:18px;margin-top:2px;color:var(--color-primary-element);background-color:var(--color-primary-text);box-shadow:0 0 0 2px var(--color-primary-text);border-radius:var(--border-radius-pill);padding:0 18px;font-size:var(--default-font-size);height:44px;line-height:44px;font-weight:bold}.profile__header__container__edit-button[data-v-6311e07c]:hover,.profile__header__container__edit-button[data-v-6311e07c]:focus,.profile__header__container__edit-button[data-v-6311e07c]:active{color:var(--color-primary-text);background-color:var(--color-primary-element-light)}.profile__header__container__edit-button .pencil-icon[data-v-6311e07c]{display:inline-block;vertical-align:middle;margin-top:2px}.profile__header__container__status-text[data-v-6311e07c]{width:max-content;max-width:640px;padding:5px 10px;margin-left:-12px;margin-top:2px}.profile__header__container__status-text.interactive[data-v-6311e07c]{cursor:pointer}.profile__header__container__status-text.interactive[data-v-6311e07c]:hover,.profile__header__container__status-text.interactive[data-v-6311e07c]:focus,.profile__header__container__status-text.interactive[data-v-6311e07c]:active{background-color:var(--color-main-background);color:var(--color-main-text);border-radius:var(--border-radius-pill);font-weight:bold;box-shadow:0 3px 6px var(--color-box-shadow)}.profile__sidebar[data-v-6311e07c]{position:sticky;top:var(--header-height);align-self:flex-start;padding-top:20px;min-width:220px;margin:-150px 20px 0 0}.profile__sidebar[data-v-6311e07c] .avatar.avatardiv,.profile__sidebar h2[data-v-6311e07c]{text-align:center;margin:auto;display:block;padding:8px}.profile__sidebar[data-v-6311e07c] .avatar.avatardiv:not(.avatardiv--unknown){background-color:var(--color-main-background) !important;box-shadow:none}.profile__sidebar[data-v-6311e07c] .avatar.avatardiv .avatardiv__user-status{right:14px;bottom:14px;width:34px;height:34px;background-size:28px;border:none;background-color:var(--color-main-background);line-height:34px;font-size:20px}.profile__sidebar[data-v-6311e07c] .avatar.interactive.avatardiv .avatardiv__user-status{cursor:pointer}.profile__sidebar[data-v-6311e07c] .avatar.interactive.avatardiv .avatardiv__user-status:hover,.profile__sidebar[data-v-6311e07c] .avatar.interactive.avatardiv .avatardiv__user-status:focus,.profile__sidebar[data-v-6311e07c] .avatar.interactive.avatardiv .avatardiv__user-status:active{box-shadow:0 3px 6px var(--color-box-shadow)}.profile__content[data-v-6311e07c]{max-width:1024px;margin:0 auto;display:flex;width:100%}.profile__blocks[data-v-6311e07c]{margin:18px 0 80px 0;display:grid;gap:16px 0;width:640px}.profile__blocks p[data-v-6311e07c],.profile__blocks h3[data-v-6311e07c]{overflow-wrap:anywhere}.profile__blocks-details[data-v-6311e07c]{display:flex;flex-direction:column;gap:2px 0}.profile__blocks-details .detail[data-v-6311e07c]{display:inline-block;color:var(--color-text-maxcontrast)}.profile__blocks-details .detail p .map-icon[data-v-6311e07c]{display:inline-block;vertical-align:middle}.profile__blocks-headline[data-v-6311e07c]{margin-top:10px}.profile__blocks-headline h3[data-v-6311e07c]{font-weight:bold;font-size:20px;margin:0}.profile__blocks-biography[data-v-6311e07c]{white-space:pre-line}.profile__blocks h3[data-v-6311e07c],.profile__blocks p[data-v-6311e07c]{cursor:text}.profile__blocks-empty-info[data-v-6311e07c]{margin-top:80px;margin-right:100px;display:flex;flex-direction:column;text-align:center}.profile__blocks-empty-info h3[data-v-6311e07c]{font-weight:bold;font-size:18px;margin:8px 0}@media only screen and (max-width: 1024px){.profile__header[data-v-6311e07c]{height:250px;position:unset}.profile__header__container[data-v-6311e07c]{grid-template-columns:unset}.profile__header__container__displayname[data-v-6311e07c]{margin:100px 20px 0px;width:unset;display:unset;text-align:center}.profile__header__container__edit-button[data-v-6311e07c]{width:fit-content;display:block;margin:30px auto}.profile__content[data-v-6311e07c]{display:block}.profile__blocks[data-v-6311e07c]{width:unset;max-width:600px;margin:0 auto;padding:20px 50px 50px 50px}.profile__blocks-empty-info[data-v-6311e07c]{margin:0}.profile__sidebar[data-v-6311e07c]{margin:unset;position:unset}}.user-actions[data-v-6311e07c]{display:flex;flex-direction:column;gap:8px 0;margin-top:20px}.user-actions__primary[data-v-6311e07c]{margin:0 auto}.user-actions__other[data-v-6311e07c]{display:flex;justify-content:center;gap:0 4px}.icon-invert[data-v-6311e07c] .action-link__icon{filter:invert(1)}","",{version:3,sources:["webpack://./core/src/views/Profile.vue"],names:[],mappings:"AAmTA,0BACC,UAAA,CAEA,kCACC,eAAA,CACA,YAAA,CACA,SAAA,CAEA,6CACC,mBAAA,CACA,UAAA,CACA,gBAdiB,CAejB,aAAA,CACA,YAAA,CACA,0CAAA,CACA,+BAAA,CACA,sBAAA,CAEA,0DACC,YAAA,CAGD,oHACC,+BAAA,CAGD,0DACC,WA7BgB,CA8BhB,WAAA,CACA,gBAAA,CAEA,eAAA,CACA,cAAA,CACA,YAAA,CACA,kBAAA,CACA,WAAA,CAEA,2EACC,gBAAA,CACA,iBAAA,CAIF,0DACC,WAAA,CACA,gBAAA,CACA,cAAA,CACA,kCAAA,CACA,0CAAA,CACA,8CAAA,CACA,uCAAA,CACA,cAAA,CACA,kCAAA,CACA,WAAA,CACA,gBAAA,CACA,gBAAA,CAEA,iMAGC,+BAAA,CACA,mDAAA,CAGD,uEACC,oBAAA,CACA,qBAAA,CACA,cAAA,CAIF,0DACC,iBAAA,CACA,eA3EgB,CA4EhB,gBAAA,CACA,iBAAA,CACA,cAAA,CAEA,sEACC,cAAA,CAEA,qOAGC,6CAAA,CACA,4BAAA,CACA,uCAAA,CACA,gBAAA,CACA,4CAAA,CAOL,mCACC,eAAA,CACA,wBAAA,CACA,qBAAA,CACA,gBAAA,CACA,eAAA,CACA,sBAAA,CAGA,2FACC,iBAAA,CACA,WAAA,CACA,aAAA,CACA,WAAA,CAGD,8EACC,wDAAA,CACA,eAAA,CAIA,6EACC,UAAA,CACA,WAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,WAAA,CAEA,6CAAA,CACA,gBAAA,CACA,cAAA,CAKD,yFACC,cAAA,CAEA,8RAGC,4CAAA,CAMJ,mCACC,gBApJkB,CAqJlB,aAAA,CACA,YAAA,CACA,UAAA,CAGD,kCACC,oBAAA,CACA,YAAA,CACA,UAAA,CACA,WA7JkB,CA+JlB,yEACC,sBAAA,CAGD,0CACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,kDACC,oBAAA,CACA,mCAAA,CAEA,8DACC,oBAAA,CACA,qBAAA,CAKH,2CACC,eAAA,CAEA,8CACC,gBAAA,CACA,cAAA,CACA,QAAA,CAIF,4CACC,oBAAA,CAGD,yEACC,WAAA,CAGD,6CACC,eAAA,CACA,kBAAA,CACA,YAAA,CACA,qBAAA,CACA,iBAAA,CAEA,gDACC,gBAAA,CACA,cAAA,CACA,YAAA,CAMJ,2CAEE,kCACC,YAAA,CACA,cAAA,CAEA,6CACC,2BAAA,CAEA,0DACC,qBAAA,CACA,WAAA,CACA,aAAA,CACA,iBAAA,CAGD,0DACC,iBAAA,CACA,aAAA,CACA,gBAAA,CAKH,mCACC,aAAA,CAGD,kCACC,WAAA,CACA,eAAA,CACA,aAAA,CACA,2BAAA,CAEA,6CACC,QAAA,CAIF,mCACC,YAAA,CACA,cAAA,CAAA,CAKH,+BACC,YAAA,CACA,qBAAA,CACA,SAAA,CACA,eAAA,CAEA,wCACC,aAAA,CAGD,sCACC,YAAA,CACA,sBAAA,CACA,SAAA,CAKD,iDACC,gBAAA",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n$profile-max-width: 1024px;\n$content-max-width: 640px;\n\n.profile {\n\twidth: 100%;\n\n\t&__header {\n\t\tposition: sticky;\n\t\theight: 190px;\n\t\ttop: -40px;\n\n\t\t&__container {\n\t\t\talign-self: flex-end;\n\t\t\twidth: 100%;\n\t\t\tmax-width: $profile-max-width;\n\t\t\tmargin: 0 auto;\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-rows: max-content max-content;\n\t\t\tgrid-template-columns: 240px 1fr;\n\t\t\tjustify-content: center;\n\n\t\t\t&__placeholder {\n\t\t\t\tgrid-row: 1 / 3;\n\t\t\t}\n\n\t\t\t&__displayname, &__status-text {\n\t\t\t\tcolor: var(--color-primary-text);\n\t\t\t}\n\n\t\t\t&__displayname {\n\t\t\t\twidth: $content-max-width;\n\t\t\t\theight: 45px;\n\t\t\t\tmargin-top: 128px;\n\t\t\t\t// Override the global style declaration\n\t\t\t\tmargin-bottom: 0;\n\t\t\t\tfont-size: 30px;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tcursor: text;\n\n\t\t\t\t&:not(:last-child) {\n\t\t\t\t\tmargin-top: 100px;\n\t\t\t\t\tmargin-bottom: 4px;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&__edit-button {\n\t\t\t\tborder: none;\n\t\t\t\tmargin-left: 18px;\n\t\t\t\tmargin-top: 2px;\n\t\t\t\tcolor: var(--color-primary-element);\n\t\t\t\tbackground-color: var(--color-primary-text);\n\t\t\t\tbox-shadow: 0 0 0 2px var(--color-primary-text);\n\t\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\t\tpadding: 0 18px;\n\t\t\t\tfont-size: var(--default-font-size);\n\t\t\t\theight: 44px;\n\t\t\t\tline-height: 44px;\n\t\t\t\tfont-weight: bold;\n\n\t\t\t\t&:hover,\n\t\t\t\t&:focus,\n\t\t\t\t&:active {\n\t\t\t\t\tcolor: var(--color-primary-text);\n\t\t\t\t\tbackground-color: var(--color-primary-element-light);\n\t\t\t\t}\n\n\t\t\t\t.pencil-icon {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tvertical-align: middle;\n\t\t\t\t\tmargin-top: 2px;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&__status-text {\n\t\t\t\twidth: max-content;\n\t\t\t\tmax-width: $content-max-width;\n\t\t\t\tpadding: 5px 10px;\n\t\t\t\tmargin-left: -12px;\n\t\t\t\tmargin-top: 2px;\n\n\t\t\t\t&.interactive {\n\t\t\t\t\tcursor: pointer;\n\n\t\t\t\t\t&:hover,\n\t\t\t\t\t&:focus,\n\t\t\t\t\t&:active {\n\t\t\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t\t\t\tcolor: var(--color-main-text);\n\t\t\t\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\tbox-shadow: 0 3px 6px var(--color-box-shadow);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&__sidebar {\n\t\tposition: sticky;\n\t\ttop: var(--header-height);\n\t\talign-self: flex-start;\n\t\tpadding-top: 20px;\n\t\tmin-width: 220px;\n\t\tmargin: -150px 20px 0 0;\n\n\t\t// Specificity hack is needed to override Avatar component styles\n\t\t&::v-deep .avatar.avatardiv, h2 {\n\t\t\ttext-align: center;\n\t\t\tmargin: auto;\n\t\t\tdisplay: block;\n\t\t\tpadding: 8px;\n\t\t}\n\n\t\t&::v-deep .avatar.avatardiv:not(.avatardiv--unknown) {\n\t\t\tbackground-color: var(--color-main-background) !important;\n\t\t\tbox-shadow: none;\n\t\t}\n\n\t\t&::v-deep .avatar.avatardiv {\n\t\t\t.avatardiv__user-status {\n\t\t\t\tright: 14px;\n\t\t\t\tbottom: 14px;\n\t\t\t\twidth: 34px;\n\t\t\t\theight: 34px;\n\t\t\t\tbackground-size: 28px;\n\t\t\t\tborder: none;\n\t\t\t\t// Styles when custom status icon and status text are set\n\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t\tline-height: 34px;\n\t\t\t\tfont-size: 20px;\n\t\t\t}\n\t\t}\n\n\t\t&::v-deep .avatar.interactive.avatardiv {\n\t\t\t.avatardiv__user-status {\n\t\t\t\tcursor: pointer;\n\n\t\t\t\t&:hover,\n\t\t\t\t&:focus,\n\t\t\t\t&:active {\n\t\t\t\t\tbox-shadow: 0 3px 6px var(--color-box-shadow);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&__content {\n\t\tmax-width: $profile-max-width;\n\t\tmargin: 0 auto;\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t}\n\n\t&__blocks {\n\t\tmargin: 18px 0 80px 0;\n\t\tdisplay: grid;\n\t\tgap: 16px 0;\n\t\twidth: $content-max-width;\n\n\t\tp, h3 {\n\t\t\toverflow-wrap: anywhere;\n\t\t}\n\n\t\t&-details {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tgap: 2px 0;\n\n\t\t\t.detail {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t\t\tp .map-icon {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tvertical-align: middle;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&-headline {\n\t\t\tmargin-top: 10px;\n\n\t\t\th3 {\n\t\t\t\tfont-weight: bold;\n\t\t\t\tfont-size: 20px;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t}\n\n\t\t&-biography {\n\t\t\twhite-space: pre-line;\n\t\t}\n\n\t\th3, p {\n\t\t\tcursor: text;\n\t\t}\n\n\t\t&-empty-info {\n\t\t\tmargin-top: 80px;\n\t\t\tmargin-right: 100px;\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\ttext-align: center;\n\n\t\t\th3 {\n\t\t\t\tfont-weight: bold;\n\t\t\t\tfont-size: 18px;\n\t\t\t\tmargin: 8px 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\n@media only screen and (max-width: 1024px) {\n\t.profile {\n\t\t&__header {\n\t\t\theight: 250px;\n\t\t\tposition: unset;\n\n\t\t\t&__container {\n\t\t\t\tgrid-template-columns: unset;\n\n\t\t\t\t&__displayname {\n\t\t\t\t\tmargin: 100px 20px 0px;\n\t\t\t\t\twidth: unset;\n\t\t\t\t\tdisplay: unset;\n\t\t\t\t\ttext-align: center;\n\t\t\t\t}\n\n\t\t\t\t&__edit-button {\n\t\t\t\t\twidth: fit-content;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tmargin: 30px auto;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&__content {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t&__blocks {\n\t\t\twidth: unset;\n\t\t\tmax-width: 600px;\n\t\t\tmargin: 0 auto;\n\t\t\tpadding: 20px 50px 50px 50px;\n\n\t\t\t&-empty-info {\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t}\n\n\t\t&__sidebar {\n\t\t\tmargin: unset;\n\t\t\tposition: unset;\n\t\t}\n\t}\n}\n\n.user-actions {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px 0;\n\tmargin-top: 20px;\n\n\t&__primary {\n\t\tmargin: 0 auto;\n\t}\n\n\t&__other {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tgap: 0 4px;\n\t}\n}\n\n.icon-invert {\n\t&::v-deep .action-link__icon {\n\t\tfilter: invert(1);\n\t}\n}\n"],sourceRoot:""}]),n.Z=o}},a={};function i(t){var n=a[t];if(void 0!==n)return n.exports;var r=a[t]={id:t,loaded:!1,exports:{}};return e[t].call(r.exports,r,r.exports,i),r.loaded=!0,r.exports}i.m=e,i.amdD=function(){throw new Error("define cannot be used indirect")},i.amdO={},n=[],i.O=function(t,e,a,r){if(!e){var o=1/0;for(c=0;c<n.length;c++){e=n[c][0],a=n[c][1],r=n[c][2];for(var A=!0,s=0;s<e.length;s++)(!1&r||o>=r)&&Object.keys(i.O).every((function(t){return i.O[t](e[s])}))?e.splice(s--,1):(A=!1,r<o&&(o=r));if(A){n.splice(c--,1);var l=a();void 0!==l&&(t=l)}}return t}r=r||0;for(var c=n.length;c>0&&n[c-1][2]>r;c--)n[c]=n[c-1];n[c]=[e,a,r]},i.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(n,{a:n}),n},i.d=function(t,n){for(var e in n)i.o(n,e)&&!i.o(t,e)&&Object.defineProperty(t,e,{enumerable:!0,get:n[e]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),i.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},i.j=9651,function(){i.b=document.baseURI||self.location.href;var t={9651:0};i.O.j=function(n){return 0===t[n]};var n=function(n,e){var a,r,o=e[0],A=e[1],s=e[2],l=0;if(o.some((function(n){return 0!==t[n]}))){for(a in A)i.o(A,a)&&(i.m[a]=A[a]);if(s)var c=s(i)}for(n&&n(e);l<o.length;l++)r=o[l],i.o(t,r)&&t[r]&&t[r][0](),t[r]=0;return i.O(c)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(n.bind(null,0)),e.push=n.bind(null,e.push.bind(e))}();var r=i.O(void 0,[7874],(function(){return i(8948)}));r=i.O(r)}();
-//# sourceMappingURL=core-profile.js.map?v=e90e48722771a129772a \ No newline at end of file
+!function(){"use strict";var n,e={8948:function(n,e,a){var i,r=a(20144),o=a(22200),A=a(9944),s=a(34741),l=a(17499),c=null===(i=(0,o.getCurrentUser)())?(0,l.IY)().setApp("core").build():(0,l.IY)().setApp("core").setUid(i.uid).build(),d=a(74854),p=a(16453),C=a(79753),u=a(26932),_=a(28017),v=a.n(_),f=a(79440),g=a.n(f),h=a(74466),m=a.n(h),x=a(58022),b=a(59466),y=a(48747),k={name:"PrimaryActionButton",props:{disabled:{type:Boolean,default:!1},href:{type:String,required:!0},icon:{type:String,required:!0},target:{type:String,required:!0,validator:function(t){return["_self","_blank","_parent","_top"].includes(t)}}},computed:{colorPrimaryText:function(){return getComputedStyle(document.body).getPropertyValue("--color-primary-text").trim()}}},w=a(93379),B=a.n(w),E=a(7795),D=a.n(E),S=a(90569),I=a.n(S),P=a(3565),U=a.n(P),z=a(19216),O=a.n(z),M=a(44589),Z=a.n(M),G=a(53155),q={};q.styleTagTransform=Z(),q.setAttributes=U(),q.insert=I().bind(null,"head"),q.domAPI=D(),q.insertStyleElement=O(),B()(G.Z,q),G.Z&&G.Z.locals&&G.Z.locals;var W=a(51900),Y=(0,W.Z)(k,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("a",t._g({staticClass:"profile__primary-action-button",class:{disabled:t.disabled},attrs:{href:t.href,target:t.target,rel:"noopener noreferrer nofollow"}},t.$listeners),[e("img",{staticClass:"icon",class:[t.icon,{"icon-invert":"#ffffff"===t.colorPrimaryText}],attrs:{src:t.icon}}),t._v(" "),t._t("default")],2)}),[],!1,null,"35d5c4b6",null).exports,j=(0,p.loadState)("core","status",{}),T=(0,p.loadState)("core","profileParameters",{userId:null,displayname:null,address:null,organisation:null,role:null,headline:null,biography:null,actions:[],isUserAvatarVisible:!1}),$=T.userId,F=T.displayname,J=T.address,K=T.organisation,L=T.role,R=T.headline,V=T.biography,H=T.actions,Q=T.isUserAvatarVisible,N={name:"Profile",components:{AccountIcon:y.Z,ActionLink:m(),Actions:g(),Avatar:v(),MapMarkerIcon:x.Z,PencilIcon:b.default,PrimaryActionButton:Y},data:function(){return{status:j,userId:$,displayname:F,address:J,organisation:K,role:L,headline:R,biography:V,actions:H,isUserAvatarVisible:Q}},computed:{isCurrentUser:function(){var t;return(null===(t=(0,o.getCurrentUser)())||void 0===t?void 0:t.uid)===this.userId},allActions:function(){return this.actions},primaryAction:function(){return this.allActions.length?this.allActions[0]:null},middleActions:function(){return this.allActions.slice(1,4).length?this.allActions.slice(1,4):null},otherActions:function(){return this.allActions.slice(4).length?this.allActions.slice(4):null},settingsUrl:function(){return(0,C.generateUrl)("/settings/user")},colorMainBackground:function(){return getComputedStyle(document.body).getPropertyValue("--color-main-background").trim()},emptyProfileMessage:function(){return this.isCurrentUser?t("core","You have not added any info yet"):t("core","{user} has not added any info yet",{user:this.displayname||this.userId})}},mounted:function(){document.title="".concat(this.displayname||this.userId," - ").concat(document.title),(0,d.subscribe)("user_status:status.updated",this.handleStatusUpdate)},beforeDestroy:function(){(0,d.unsubscribe)("user_status:status.updated",this.handleStatusUpdate)},methods:{handleStatusUpdate:function(t){this.isCurrentUser&&t.userId===this.userId&&(this.status=t)},openStatusModal:function(){var n=document.querySelector(".user-status-menu-item__toggle");this.isCurrentUser&&(n?n.click():(0,u.x2)(t("core","Error opening the user status modal, try hard refreshing the page")))}}},X=a(52500),tt={};tt.styleTagTransform=Z(),tt.setAttributes=U(),tt.insert=I().bind(null,"head"),tt.domAPI=D(),tt.insertStyleElement=O(),B()(X.Z,tt),X.Z&&X.Z.locals&&X.Z.locals;var nt=a(20075),et={};et.styleTagTransform=Z(),et.setAttributes=U(),et.insert=I().bind(null,"head"),et.domAPI=D(),et.insertStyleElement=O(),B()(nt.Z,et),nt.Z&&nt.Z.locals&&nt.Z.locals;var at=(0,W.Z)(N,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{staticClass:"profile"},[e("div",{staticClass:"profile__header"},[e("div",{staticClass:"profile__header__container"},[e("div",{staticClass:"profile__header__container__placeholder"}),t._v(" "),e("h2",{staticClass:"profile__header__container__displayname"},[t._v("\n\t\t\t\t"+t._s(t.displayname||t.userId)+"\n\t\t\t\t"),t.isCurrentUser?e("a",{staticClass:"primary profile__header__container__edit-button",attrs:{href:t.settingsUrl}},[e("PencilIcon",{staticClass:"pencil-icon",attrs:{decorative:"",title:"",size:16}}),t._v("\n\t\t\t\t\t"+t._s(t.t("core","Edit Profile"))+"\n\t\t\t\t")],1):t._e()]),t._v(" "),t.status.icon||t.status.message?e("div",{staticClass:"profile__header__container__status-text",class:{interactive:t.isCurrentUser},on:{click:function(n){return n.preventDefault(),n.stopPropagation(),t.openStatusModal.apply(null,arguments)}}},[t._v("\n\t\t\t\t"+t._s(t.status.icon)+" "+t._s(t.status.message)+"\n\t\t\t")]):t._e()])]),t._v(" "),e("div",{staticClass:"profile__content"},[e("div",{staticClass:"profile__sidebar"},[e("Avatar",{staticClass:"avatar",class:{interactive:t.isCurrentUser},attrs:{user:t.userId,size:180,"show-user-status":!0,"show-user-status-compact":!1,"disable-menu":!0,"disable-tooltip":!0,"is-no-user":!t.isUserAvatarVisible},nativeOn:{click:function(n){return n.preventDefault(),n.stopPropagation(),t.openStatusModal.apply(null,arguments)}}}),t._v(" "),e("div",{staticClass:"user-actions"},[t.primaryAction?e("PrimaryActionButton",{staticClass:"user-actions__primary",attrs:{href:t.primaryAction.target,icon:t.primaryAction.icon,target:"phone"===t.primaryAction.id?"_self":"_blank"}},[t._v("\n\t\t\t\t\t"+t._s(t.primaryAction.title)+"\n\t\t\t\t")]):t._e(),t._v(" "),e("div",{staticClass:"user-actions__other"},[t._l(t.middleActions,(function(n){return e("Actions",{key:n.id,staticStyle:{"background-position":"14px center","background-size":"16px","background-repeat":"no-repeat"},style:Object.assign({},{backgroundImage:"url("+n.icon+")"},"#181818"===t.colorMainBackground&&{filter:"invert(1)"}),attrs:{"default-icon":n.icon}},[e("ActionLink",{attrs:{"close-after-click":!0,icon:n.icon,href:n.target,target:"phone"===n.id?"_self":"_blank"}},[t._v("\n\t\t\t\t\t\t\t"+t._s(n.title)+"\n\t\t\t\t\t\t")])],1)})),t._v(" "),t.otherActions?[e("Actions",{attrs:{"force-menu":!0}},t._l(t.otherActions,(function(n){return e("ActionLink",{key:n.id,class:{"icon-invert":"#181818"===t.colorMainBackground},attrs:{"close-after-click":!0,icon:n.icon,href:n.target,target:"phone"===n.id?"_self":"_blank"}},[t._v("\n\t\t\t\t\t\t\t\t"+t._s(n.title)+"\n\t\t\t\t\t\t\t")])})),1)]:t._e()],2)],1)],1),t._v(" "),e("div",{staticClass:"profile__blocks"},[t.organisation||t.role||t.address?e("div",{staticClass:"profile__blocks-details"},[t.organisation||t.role?e("div",{staticClass:"detail"},[e("p",[t._v(t._s(t.organisation)+" "),t.organisation&&t.role?e("span",[t._v("•")]):t._e(),t._v(" "+t._s(t.role))])]):t._e(),t._v(" "),t.address?e("div",{staticClass:"detail"},[e("p",[e("MapMarkerIcon",{staticClass:"map-icon",attrs:{decorative:"",title:"",size:16}}),t._v("\n\t\t\t\t\t\t"+t._s(t.address)+"\n\t\t\t\t\t")],1)]):t._e()]):t._e(),t._v(" "),t.headline||t.biography?[t.headline?e("div",{staticClass:"profile__blocks-headline"},[e("h3",[t._v(t._s(t.headline))])]):t._e(),t._v(" "),t.biography?e("div",{staticClass:"profile__blocks-biography"},[e("p",[t._v(t._s(t.biography))])]):t._e()]:[e("div",{staticClass:"profile__blocks-empty-info"},[e("AccountIcon",{attrs:{decorative:"",title:"","fill-color":"var(--color-text-maxcontrast)",size:60}}),t._v(" "),e("h3",[t._v(t._s(t.emptyProfileMessage))]),t._v(" "),e("p",[t._v(t._s(t.t("core","The headline and about sections will show up here")))])],1)]],2)])])}),[],!1,null,"6311e07c",null),it=at.exports;a.nc=btoa((0,o.getRequestToken)()),r.default.use(s.default),r.default.mixin({props:{logger:c},methods:{t:A.translate}});var rt=r.default.extend(it);window.addEventListener("DOMContentLoaded",(function(){(new rt).$mount("#vue-profile")}))},53155:function(t,n,e){var a=e(87537),i=e.n(a),r=e(23645),o=e.n(r)()(i());o.push([t.id,".profile__primary-action-button[data-v-35d5c4b6]{font-size:var(--default-font-size);font-weight:bold;width:188px;height:44px;padding:0 16px;line-height:44px;text-align:center;border-radius:var(--border-radius-pill);color:var(--color-primary-text);background-color:var(--color-primary-element);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.profile__primary-action-button .icon[data-v-35d5c4b6]{display:inline-block;vertical-align:middle;margin-bottom:2px;margin-right:4px}.profile__primary-action-button .icon.icon-invert[data-v-35d5c4b6]{filter:invert(1)}.profile__primary-action-button[data-v-35d5c4b6]:hover,.profile__primary-action-button[data-v-35d5c4b6]:focus,.profile__primary-action-button[data-v-35d5c4b6]:active{background-color:var(--color-primary-element-light)}","",{version:3,sources:["webpack://./core/src/components/Profile/PrimaryActionButton.vue"],names:[],mappings:"AAsEA,iDACC,kCAAA,CACA,gBAAA,CACA,WAAA,CACA,WAAA,CACA,cAAA,CACA,gBAAA,CACA,iBAAA,CACA,uCAAA,CACA,+BAAA,CACA,6CAAA,CACA,eAAA,CACA,kBAAA,CACA,sBAAA,CAEA,uDACC,oBAAA,CACA,qBAAA,CACA,iBAAA,CACA,gBAAA,CAEA,mEACC,gBAAA,CAIF,sKAGC,mDAAA",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.profile__primary-action-button {\n\tfont-size: var(--default-font-size);\n\tfont-weight: bold;\n\twidth: 188px;\n\theight: 44px;\n\tpadding: 0 16px;\n\tline-height: 44px;\n\ttext-align: center;\n\tborder-radius: var(--border-radius-pill);\n\tcolor: var(--color-primary-text);\n\tbackground-color: var(--color-primary-element);\n\toverflow: hidden;\n\twhite-space: nowrap;\n\ttext-overflow: ellipsis;\n\n\t.icon {\n\t\tdisplay: inline-block;\n\t\tvertical-align: middle;\n\t\tmargin-bottom: 2px;\n\t\tmargin-right: 4px;\n\n\t\t&.icon-invert {\n\t\t\tfilter: invert(1);\n\t\t}\n\t}\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbackground-color: var(--color-primary-element-light);\n\t}\n}\n"],sourceRoot:""}]),n.Z=o},52500:function(t,n,e){var a=e(87537),i=e.n(a),r=e(23645),o=e.n(r)()(i());o.push([t.id,"#header{background-color:rgba(0,0,0,0) !important;background-image:none !important}#content{padding-top:0px}","",{version:3,sources:["webpack://./core/src/views/Profile.vue"],names:[],mappings:"AAqSA,QACC,yCAAA,CACA,gCAAA,CAGD,SACC,eAAA",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// Override header styles\n#header {\n\tbackground-color: transparent !important;\n\tbackground-image: none !important;\n}\n\n#content {\n\tpadding-top: 0px;\n}\n"],sourceRoot:""}]),n.Z=o},20075:function(t,n,e){var a=e(87537),i=e.n(a),r=e(23645),o=e.n(r)()(i());o.push([t.id,".profile[data-v-6311e07c]{width:100%}.profile__header[data-v-6311e07c]{position:sticky;height:190px;top:-40px}.profile__header__container[data-v-6311e07c]{align-self:flex-end;width:100%;max-width:1024px;margin:0 auto;display:grid;grid-template-rows:max-content max-content;grid-template-columns:240px 1fr;justify-content:center}.profile__header__container__placeholder[data-v-6311e07c]{grid-row:1/3}.profile__header__container__displayname[data-v-6311e07c],.profile__header__container__status-text[data-v-6311e07c]{color:var(--color-primary-text)}.profile__header__container__displayname[data-v-6311e07c]{width:640px;height:45px;margin-top:128px;margin-bottom:0;font-size:30px;display:flex;align-items:center;cursor:text}.profile__header__container__displayname[data-v-6311e07c]:not(:last-child){margin-top:100px;margin-bottom:4px}.profile__header__container__edit-button[data-v-6311e07c]{border:none;margin-left:18px;margin-top:2px;color:var(--color-primary-element);background-color:var(--color-primary-text);box-shadow:0 0 0 2px var(--color-primary-text);border-radius:var(--border-radius-pill);padding:0 18px;font-size:var(--default-font-size);height:44px;line-height:44px;font-weight:bold}.profile__header__container__edit-button[data-v-6311e07c]:hover,.profile__header__container__edit-button[data-v-6311e07c]:focus,.profile__header__container__edit-button[data-v-6311e07c]:active{color:var(--color-primary-text);background-color:var(--color-primary-element-light)}.profile__header__container__edit-button .pencil-icon[data-v-6311e07c]{display:inline-block;vertical-align:middle;margin-top:2px}.profile__header__container__status-text[data-v-6311e07c]{width:max-content;max-width:640px;padding:5px 10px;margin-left:-12px;margin-top:2px}.profile__header__container__status-text.interactive[data-v-6311e07c]{cursor:pointer}.profile__header__container__status-text.interactive[data-v-6311e07c]:hover,.profile__header__container__status-text.interactive[data-v-6311e07c]:focus,.profile__header__container__status-text.interactive[data-v-6311e07c]:active{background-color:var(--color-main-background);color:var(--color-main-text);border-radius:var(--border-radius-pill);font-weight:bold;box-shadow:0 3px 6px var(--color-box-shadow)}.profile__sidebar[data-v-6311e07c]{position:sticky;top:var(--header-height);align-self:flex-start;padding-top:20px;min-width:220px;margin:-150px 20px 0 0}.profile__sidebar[data-v-6311e07c] .avatar.avatardiv,.profile__sidebar h2[data-v-6311e07c]{text-align:center;margin:auto;display:block;padding:8px}.profile__sidebar[data-v-6311e07c] .avatar.avatardiv:not(.avatardiv--unknown){background-color:var(--color-main-background) !important;box-shadow:none}.profile__sidebar[data-v-6311e07c] .avatar.avatardiv .avatardiv__user-status{right:14px;bottom:14px;width:34px;height:34px;background-size:28px;border:none;background-color:var(--color-main-background);line-height:34px;font-size:20px}.profile__sidebar[data-v-6311e07c] .avatar.interactive.avatardiv .avatardiv__user-status{cursor:pointer}.profile__sidebar[data-v-6311e07c] .avatar.interactive.avatardiv .avatardiv__user-status:hover,.profile__sidebar[data-v-6311e07c] .avatar.interactive.avatardiv .avatardiv__user-status:focus,.profile__sidebar[data-v-6311e07c] .avatar.interactive.avatardiv .avatardiv__user-status:active{box-shadow:0 3px 6px var(--color-box-shadow)}.profile__content[data-v-6311e07c]{max-width:1024px;margin:0 auto;display:flex;width:100%}.profile__blocks[data-v-6311e07c]{margin:18px 0 80px 0;display:grid;gap:16px 0;width:640px}.profile__blocks p[data-v-6311e07c],.profile__blocks h3[data-v-6311e07c]{overflow-wrap:anywhere}.profile__blocks-details[data-v-6311e07c]{display:flex;flex-direction:column;gap:2px 0}.profile__blocks-details .detail[data-v-6311e07c]{display:inline-block;color:var(--color-text-maxcontrast)}.profile__blocks-details .detail p .map-icon[data-v-6311e07c]{display:inline-block;vertical-align:middle}.profile__blocks-headline[data-v-6311e07c]{margin-top:10px}.profile__blocks-headline h3[data-v-6311e07c]{font-weight:bold;font-size:20px;margin:0}.profile__blocks-biography[data-v-6311e07c]{white-space:pre-line}.profile__blocks h3[data-v-6311e07c],.profile__blocks p[data-v-6311e07c]{cursor:text}.profile__blocks-empty-info[data-v-6311e07c]{margin-top:80px;margin-right:100px;display:flex;flex-direction:column;text-align:center}.profile__blocks-empty-info h3[data-v-6311e07c]{font-weight:bold;font-size:18px;margin:8px 0}@media only screen and (max-width: 1024px){.profile__header[data-v-6311e07c]{height:250px;position:unset}.profile__header__container[data-v-6311e07c]{grid-template-columns:unset}.profile__header__container__displayname[data-v-6311e07c]{margin:100px 20px 0px;width:unset;display:unset;text-align:center}.profile__header__container__edit-button[data-v-6311e07c]{width:fit-content;display:block;margin:30px auto}.profile__content[data-v-6311e07c]{display:block}.profile__blocks[data-v-6311e07c]{width:unset;max-width:600px;margin:0 auto;padding:20px 50px 50px 50px}.profile__blocks-empty-info[data-v-6311e07c]{margin:0}.profile__sidebar[data-v-6311e07c]{margin:unset;position:unset}}.user-actions[data-v-6311e07c]{display:flex;flex-direction:column;gap:8px 0;margin-top:20px}.user-actions__primary[data-v-6311e07c]{margin:0 auto}.user-actions__other[data-v-6311e07c]{display:flex;justify-content:center;gap:0 4px}.icon-invert[data-v-6311e07c] .action-link__icon{filter:invert(1)}","",{version:3,sources:["webpack://./core/src/views/Profile.vue"],names:[],mappings:"AAmTA,0BACC,UAAA,CAEA,kCACC,eAAA,CACA,YAAA,CACA,SAAA,CAEA,6CACC,mBAAA,CACA,UAAA,CACA,gBAdiB,CAejB,aAAA,CACA,YAAA,CACA,0CAAA,CACA,+BAAA,CACA,sBAAA,CAEA,0DACC,YAAA,CAGD,oHACC,+BAAA,CAGD,0DACC,WA7BgB,CA8BhB,WAAA,CACA,gBAAA,CAEA,eAAA,CACA,cAAA,CACA,YAAA,CACA,kBAAA,CACA,WAAA,CAEA,2EACC,gBAAA,CACA,iBAAA,CAIF,0DACC,WAAA,CACA,gBAAA,CACA,cAAA,CACA,kCAAA,CACA,0CAAA,CACA,8CAAA,CACA,uCAAA,CACA,cAAA,CACA,kCAAA,CACA,WAAA,CACA,gBAAA,CACA,gBAAA,CAEA,iMAGC,+BAAA,CACA,mDAAA,CAGD,uEACC,oBAAA,CACA,qBAAA,CACA,cAAA,CAIF,0DACC,iBAAA,CACA,eA3EgB,CA4EhB,gBAAA,CACA,iBAAA,CACA,cAAA,CAEA,sEACC,cAAA,CAEA,qOAGC,6CAAA,CACA,4BAAA,CACA,uCAAA,CACA,gBAAA,CACA,4CAAA,CAOL,mCACC,eAAA,CACA,wBAAA,CACA,qBAAA,CACA,gBAAA,CACA,eAAA,CACA,sBAAA,CAGA,2FACC,iBAAA,CACA,WAAA,CACA,aAAA,CACA,WAAA,CAGD,8EACC,wDAAA,CACA,eAAA,CAIA,6EACC,UAAA,CACA,WAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,WAAA,CAEA,6CAAA,CACA,gBAAA,CACA,cAAA,CAKD,yFACC,cAAA,CAEA,8RAGC,4CAAA,CAMJ,mCACC,gBApJkB,CAqJlB,aAAA,CACA,YAAA,CACA,UAAA,CAGD,kCACC,oBAAA,CACA,YAAA,CACA,UAAA,CACA,WA7JkB,CA+JlB,yEACC,sBAAA,CAGD,0CACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,kDACC,oBAAA,CACA,mCAAA,CAEA,8DACC,oBAAA,CACA,qBAAA,CAKH,2CACC,eAAA,CAEA,8CACC,gBAAA,CACA,cAAA,CACA,QAAA,CAIF,4CACC,oBAAA,CAGD,yEACC,WAAA,CAGD,6CACC,eAAA,CACA,kBAAA,CACA,YAAA,CACA,qBAAA,CACA,iBAAA,CAEA,gDACC,gBAAA,CACA,cAAA,CACA,YAAA,CAMJ,2CAEE,kCACC,YAAA,CACA,cAAA,CAEA,6CACC,2BAAA,CAEA,0DACC,qBAAA,CACA,WAAA,CACA,aAAA,CACA,iBAAA,CAGD,0DACC,iBAAA,CACA,aAAA,CACA,gBAAA,CAKH,mCACC,aAAA,CAGD,kCACC,WAAA,CACA,eAAA,CACA,aAAA,CACA,2BAAA,CAEA,6CACC,QAAA,CAIF,mCACC,YAAA,CACA,cAAA,CAAA,CAKH,+BACC,YAAA,CACA,qBAAA,CACA,SAAA,CACA,eAAA,CAEA,wCACC,aAAA,CAGD,sCACC,YAAA,CACA,sBAAA,CACA,SAAA,CAKD,iDACC,gBAAA",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n$profile-max-width: 1024px;\n$content-max-width: 640px;\n\n.profile {\n\twidth: 100%;\n\n\t&__header {\n\t\tposition: sticky;\n\t\theight: 190px;\n\t\ttop: -40px;\n\n\t\t&__container {\n\t\t\talign-self: flex-end;\n\t\t\twidth: 100%;\n\t\t\tmax-width: $profile-max-width;\n\t\t\tmargin: 0 auto;\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-rows: max-content max-content;\n\t\t\tgrid-template-columns: 240px 1fr;\n\t\t\tjustify-content: center;\n\n\t\t\t&__placeholder {\n\t\t\t\tgrid-row: 1 / 3;\n\t\t\t}\n\n\t\t\t&__displayname, &__status-text {\n\t\t\t\tcolor: var(--color-primary-text);\n\t\t\t}\n\n\t\t\t&__displayname {\n\t\t\t\twidth: $content-max-width;\n\t\t\t\theight: 45px;\n\t\t\t\tmargin-top: 128px;\n\t\t\t\t// Override the global style declaration\n\t\t\t\tmargin-bottom: 0;\n\t\t\t\tfont-size: 30px;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tcursor: text;\n\n\t\t\t\t&:not(:last-child) {\n\t\t\t\t\tmargin-top: 100px;\n\t\t\t\t\tmargin-bottom: 4px;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&__edit-button {\n\t\t\t\tborder: none;\n\t\t\t\tmargin-left: 18px;\n\t\t\t\tmargin-top: 2px;\n\t\t\t\tcolor: var(--color-primary-element);\n\t\t\t\tbackground-color: var(--color-primary-text);\n\t\t\t\tbox-shadow: 0 0 0 2px var(--color-primary-text);\n\t\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\t\tpadding: 0 18px;\n\t\t\t\tfont-size: var(--default-font-size);\n\t\t\t\theight: 44px;\n\t\t\t\tline-height: 44px;\n\t\t\t\tfont-weight: bold;\n\n\t\t\t\t&:hover,\n\t\t\t\t&:focus,\n\t\t\t\t&:active {\n\t\t\t\t\tcolor: var(--color-primary-text);\n\t\t\t\t\tbackground-color: var(--color-primary-element-light);\n\t\t\t\t}\n\n\t\t\t\t.pencil-icon {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tvertical-align: middle;\n\t\t\t\t\tmargin-top: 2px;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&__status-text {\n\t\t\t\twidth: max-content;\n\t\t\t\tmax-width: $content-max-width;\n\t\t\t\tpadding: 5px 10px;\n\t\t\t\tmargin-left: -12px;\n\t\t\t\tmargin-top: 2px;\n\n\t\t\t\t&.interactive {\n\t\t\t\t\tcursor: pointer;\n\n\t\t\t\t\t&:hover,\n\t\t\t\t\t&:focus,\n\t\t\t\t\t&:active {\n\t\t\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t\t\t\tcolor: var(--color-main-text);\n\t\t\t\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\tbox-shadow: 0 3px 6px var(--color-box-shadow);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&__sidebar {\n\t\tposition: sticky;\n\t\ttop: var(--header-height);\n\t\talign-self: flex-start;\n\t\tpadding-top: 20px;\n\t\tmin-width: 220px;\n\t\tmargin: -150px 20px 0 0;\n\n\t\t// Specificity hack is needed to override Avatar component styles\n\t\t&::v-deep .avatar.avatardiv, h2 {\n\t\t\ttext-align: center;\n\t\t\tmargin: auto;\n\t\t\tdisplay: block;\n\t\t\tpadding: 8px;\n\t\t}\n\n\t\t&::v-deep .avatar.avatardiv:not(.avatardiv--unknown) {\n\t\t\tbackground-color: var(--color-main-background) !important;\n\t\t\tbox-shadow: none;\n\t\t}\n\n\t\t&::v-deep .avatar.avatardiv {\n\t\t\t.avatardiv__user-status {\n\t\t\t\tright: 14px;\n\t\t\t\tbottom: 14px;\n\t\t\t\twidth: 34px;\n\t\t\t\theight: 34px;\n\t\t\t\tbackground-size: 28px;\n\t\t\t\tborder: none;\n\t\t\t\t// Styles when custom status icon and status text are set\n\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t\tline-height: 34px;\n\t\t\t\tfont-size: 20px;\n\t\t\t}\n\t\t}\n\n\t\t&::v-deep .avatar.interactive.avatardiv {\n\t\t\t.avatardiv__user-status {\n\t\t\t\tcursor: pointer;\n\n\t\t\t\t&:hover,\n\t\t\t\t&:focus,\n\t\t\t\t&:active {\n\t\t\t\t\tbox-shadow: 0 3px 6px var(--color-box-shadow);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&__content {\n\t\tmax-width: $profile-max-width;\n\t\tmargin: 0 auto;\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t}\n\n\t&__blocks {\n\t\tmargin: 18px 0 80px 0;\n\t\tdisplay: grid;\n\t\tgap: 16px 0;\n\t\twidth: $content-max-width;\n\n\t\tp, h3 {\n\t\t\toverflow-wrap: anywhere;\n\t\t}\n\n\t\t&-details {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tgap: 2px 0;\n\n\t\t\t.detail {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t\t\tp .map-icon {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tvertical-align: middle;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&-headline {\n\t\t\tmargin-top: 10px;\n\n\t\t\th3 {\n\t\t\t\tfont-weight: bold;\n\t\t\t\tfont-size: 20px;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t}\n\n\t\t&-biography {\n\t\t\twhite-space: pre-line;\n\t\t}\n\n\t\th3, p {\n\t\t\tcursor: text;\n\t\t}\n\n\t\t&-empty-info {\n\t\t\tmargin-top: 80px;\n\t\t\tmargin-right: 100px;\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\ttext-align: center;\n\n\t\t\th3 {\n\t\t\t\tfont-weight: bold;\n\t\t\t\tfont-size: 18px;\n\t\t\t\tmargin: 8px 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\n@media only screen and (max-width: 1024px) {\n\t.profile {\n\t\t&__header {\n\t\t\theight: 250px;\n\t\t\tposition: unset;\n\n\t\t\t&__container {\n\t\t\t\tgrid-template-columns: unset;\n\n\t\t\t\t&__displayname {\n\t\t\t\t\tmargin: 100px 20px 0px;\n\t\t\t\t\twidth: unset;\n\t\t\t\t\tdisplay: unset;\n\t\t\t\t\ttext-align: center;\n\t\t\t\t}\n\n\t\t\t\t&__edit-button {\n\t\t\t\t\twidth: fit-content;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tmargin: 30px auto;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&__content {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t&__blocks {\n\t\t\twidth: unset;\n\t\t\tmax-width: 600px;\n\t\t\tmargin: 0 auto;\n\t\t\tpadding: 20px 50px 50px 50px;\n\n\t\t\t&-empty-info {\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t}\n\n\t\t&__sidebar {\n\t\t\tmargin: unset;\n\t\t\tposition: unset;\n\t\t}\n\t}\n}\n\n.user-actions {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px 0;\n\tmargin-top: 20px;\n\n\t&__primary {\n\t\tmargin: 0 auto;\n\t}\n\n\t&__other {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tgap: 0 4px;\n\t}\n}\n\n.icon-invert {\n\t&::v-deep .action-link__icon {\n\t\tfilter: invert(1);\n\t}\n}\n"],sourceRoot:""}]),n.Z=o}},a={};function i(t){var n=a[t];if(void 0!==n)return n.exports;var r=a[t]={id:t,loaded:!1,exports:{}};return e[t].call(r.exports,r,r.exports,i),r.loaded=!0,r.exports}i.m=e,i.amdD=function(){throw new Error("define cannot be used indirect")},i.amdO={},n=[],i.O=function(t,e,a,r){if(!e){var o=1/0;for(c=0;c<n.length;c++){e=n[c][0],a=n[c][1],r=n[c][2];for(var A=!0,s=0;s<e.length;s++)(!1&r||o>=r)&&Object.keys(i.O).every((function(t){return i.O[t](e[s])}))?e.splice(s--,1):(A=!1,r<o&&(o=r));if(A){n.splice(c--,1);var l=a();void 0!==l&&(t=l)}}return t}r=r||0;for(var c=n.length;c>0&&n[c-1][2]>r;c--)n[c]=n[c-1];n[c]=[e,a,r]},i.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(n,{a:n}),n},i.d=function(t,n){for(var e in n)i.o(n,e)&&!i.o(t,e)&&Object.defineProperty(t,e,{enumerable:!0,get:n[e]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),i.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},i.j=9651,function(){i.b=document.baseURI||self.location.href;var t={9651:0};i.O.j=function(n){return 0===t[n]};var n=function(n,e){var a,r,o=e[0],A=e[1],s=e[2],l=0;if(o.some((function(n){return 0!==t[n]}))){for(a in A)i.o(A,a)&&(i.m[a]=A[a]);if(s)var c=s(i)}for(n&&n(e);l<o.length;l++)r=o[l],i.o(t,r)&&t[r]&&t[r][0](),t[r]=0;return i.O(c)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(n.bind(null,0)),e.push=n.bind(null,e.push.bind(e))}(),i.nc=void 0;var r=i.O(void 0,[7874],(function(){return i(8948)}));r=i.O(r)}();
+//# sourceMappingURL=core-profile.js.map?v=709965172bbdb4092252 \ No newline at end of file
diff --git a/dist/core-profile.js.map b/dist/core-profile.js.map
index 3a4a9d72fe1..363af1db6d0 100644
--- a/dist/core-profile.js.map
+++ b/dist/core-profile.js.map
@@ -1 +1 @@
-{"version":3,"file":"core-profile.js?v=e90e48722771a129772a","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/logger.js","webpack:///nextcloud/core/src/components/Profile/PrimaryActionButton.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/Profile/PrimaryActionButton.vue","webpack://nextcloud/./core/src/components/Profile/PrimaryActionButton.vue?e5bb","webpack://nextcloud/./core/src/components/Profile/PrimaryActionButton.vue?4873","webpack:///nextcloud/core/src/components/Profile/PrimaryActionButton.vue?vue&type=template&id=35d5c4b6&scoped=true&","webpack:///nextcloud/core/src/views/Profile.vue","webpack:///nextcloud/core/src/views/Profile.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/views/Profile.vue?165e","webpack://nextcloud/./core/src/views/Profile.vue?5f38","webpack://nextcloud/./core/src/views/Profile.vue?6193","webpack:///nextcloud/core/src/views/Profile.vue?vue&type=template&id=6311e07c&scoped=true&","webpack:///nextcloud/core/src/profile.js","webpack:///nextcloud/core/src/components/Profile/PrimaryActionButton.vue?vue&type=style&index=0&id=35d5c4b6&lang=scss&scoped=true&","webpack:///nextcloud/core/src/views/Profile.vue?vue&type=style&index=0&lang=scss&","webpack:///nextcloud/core/src/views/Profile.vue?vue&type=style&index=1&id=6311e07c&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 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 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 */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nconst getLogger = user => {\n\tif (user === null) {\n\t\treturn getLoggerBuilder()\n\t\t\t.setApp('core')\n\t\t\t.build()\n\t}\n\treturn getLoggerBuilder()\n\t\t.setApp('core')\n\t\t.setUid(user.uid)\n\t\t.build()\n}\n\nexport default getLogger(getCurrentUser())\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrimaryActionButton.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!./PrimaryActionButton.vue?vue&type=script&lang=js&\"","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<a class=\"profile__primary-action-button\"\n\t\t:class=\"{ 'disabled': disabled }\"\n\t\t:href=\"href\"\n\t\t:target=\"target\"\n\t\trel=\"noopener noreferrer nofollow\"\n\t\tv-on=\"$listeners\">\n\t\t<img class=\"icon\"\n\t\t\t:class=\"[icon, { 'icon-invert': colorPrimaryText === '#ffffff' }]\"\n\t\t\t:src=\"icon\">\n\t\t<slot />\n\t</a>\n</template>\n\n<script>\nexport default {\n\tname: 'PrimaryActionButton',\n\n\tprops: {\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\thref: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ttarget: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t\tvalidator: (value) => ['_self', '_blank', '_parent', '_top'].includes(value),\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tcolorPrimaryText() {\n\t\t\t// For some reason the returned string has prepended whitespace\n\t\t\treturn getComputedStyle(document.body).getPropertyValue('--color-primary-text').trim()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.profile__primary-action-button {\n\t\tfont-size: var(--default-font-size);\n\t\tfont-weight: bold;\n\t\twidth: 188px;\n\t\theight: 44px;\n\t\tpadding: 0 16px;\n\t\tline-height: 44px;\n\t\ttext-align: center;\n\t\tborder-radius: var(--border-radius-pill);\n\t\tcolor: var(--color-primary-text);\n\t\tbackground-color: var(--color-primary-element);\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\n\t\t.icon {\n\t\t\tdisplay: inline-block;\n\t\t\tvertical-align: middle;\n\t\t\tmargin-bottom: 2px;\n\t\t\tmargin-right: 4px;\n\n\t\t\t&.icon-invert {\n\t\t\t\tfilter: invert(1);\n\t\t\t}\n\t\t}\n\n\t\t&:hover,\n\t\t&:focus,\n\t\t&:active {\n\t\t\tbackground-color: var(--color-primary-element-light);\n\t\t}\n\t}\n</style>\n","\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!./PrimaryActionButton.vue?vue&type=style&index=0&id=35d5c4b6&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!./PrimaryActionButton.vue?vue&type=style&index=0&id=35d5c4b6&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PrimaryActionButton.vue?vue&type=template&id=35d5c4b6&scoped=true&\"\nimport script from \"./PrimaryActionButton.vue?vue&type=script&lang=js&\"\nexport * from \"./PrimaryActionButton.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PrimaryActionButton.vue?vue&type=style&index=0&id=35d5c4b6&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 \"35d5c4b6\",\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('a',_vm._g({staticClass:\"profile__primary-action-button\",class:{ 'disabled': _vm.disabled },attrs:{\"href\":_vm.href,\"target\":_vm.target,\"rel\":\"noopener noreferrer nofollow\"}},_vm.$listeners),[_c('img',{staticClass:\"icon\",class:[_vm.icon, { 'icon-invert': _vm.colorPrimaryText === '#ffffff' }],attrs:{\"src\":_vm.icon}}),_vm._v(\" \"),_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2021 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<div class=\"profile\">\n\t\t<div class=\"profile__header\">\n\t\t\t<div class=\"profile__header__container\">\n\t\t\t\t<div class=\"profile__header__container__placeholder\" />\n\t\t\t\t<h2 class=\"profile__header__container__displayname\">\n\t\t\t\t\t{{ displayname || userId }}\n\t\t\t\t\t<a v-if=\"isCurrentUser\"\n\t\t\t\t\t\tclass=\"primary profile__header__container__edit-button\"\n\t\t\t\t\t\t:href=\"settingsUrl\">\n\t\t\t\t\t\t<PencilIcon class=\"pencil-icon\"\n\t\t\t\t\t\t\tdecorative\n\t\t\t\t\t\t\ttitle=\"\"\n\t\t\t\t\t\t\t:size=\"16\" />\n\t\t\t\t\t\t{{ t('core', 'Edit Profile') }}\n\t\t\t\t\t</a>\n\t\t\t\t</h2>\n\t\t\t\t<div v-if=\"status.icon || status.message\"\n\t\t\t\t\tclass=\"profile__header__container__status-text\"\n\t\t\t\t\t:class=\"{ interactive: isCurrentUser }\"\n\t\t\t\t\t@click.prevent.stop=\"openStatusModal\">\n\t\t\t\t\t{{ status.icon }} {{ status.message }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"profile__content\">\n\t\t\t<div class=\"profile__sidebar\">\n\t\t\t\t<Avatar class=\"avatar\"\n\t\t\t\t\t:class=\"{ interactive: isCurrentUser }\"\n\t\t\t\t\t:user=\"userId\"\n\t\t\t\t\t:size=\"180\"\n\t\t\t\t\t:show-user-status=\"true\"\n\t\t\t\t\t:show-user-status-compact=\"false\"\n\t\t\t\t\t:disable-menu=\"true\"\n\t\t\t\t\t:disable-tooltip=\"true\"\n\t\t\t\t\t:is-no-user=\"!isUserAvatarVisible\"\n\t\t\t\t\t@click.native.prevent.stop=\"openStatusModal\" />\n\n\t\t\t\t<div class=\"user-actions\">\n\t\t\t\t\t<!-- When a tel: URL is opened with target=\"_blank\", a blank new tab is opened which is inconsistent with the handling of other URLs so we set target=\"_self\" for the phone action -->\n\t\t\t\t\t<PrimaryActionButton v-if=\"primaryAction\"\n\t\t\t\t\t\tclass=\"user-actions__primary\"\n\t\t\t\t\t\t:href=\"primaryAction.target\"\n\t\t\t\t\t\t:icon=\"primaryAction.icon\"\n\t\t\t\t\t\t:target=\"primaryAction.id === 'phone' ? '_self' :'_blank'\">\n\t\t\t\t\t\t{{ primaryAction.title }}\n\t\t\t\t\t</PrimaryActionButton>\n\t\t\t\t\t<div class=\"user-actions__other\">\n\t\t\t\t\t\t<!-- FIXME Remove inline styles after https://github.com/nextcloud/nextcloud-vue/issues/2315 is fixed -->\n\t\t\t\t\t\t<Actions v-for=\"action in middleActions\"\n\t\t\t\t\t\t\t:key=\"action.id\"\n\t\t\t\t\t\t\t:default-icon=\"action.icon\"\n\t\t\t\t\t\t\tstyle=\"\n\t\t\t\t\t\t\t\tbackground-position: 14px center;\n\t\t\t\t\t\t\t\tbackground-size: 16px;\n\t\t\t\t\t\t\t\tbackground-repeat: no-repeat;\"\n\t\t\t\t\t\t\t:style=\"{\n\t\t\t\t\t\t\t\tbackgroundImage: `url(${action.icon})`,\n\t\t\t\t\t\t\t\t...(colorMainBackground === '#181818' && { filter: 'invert(1)' })\n\t\t\t\t\t\t\t}\">\n\t\t\t\t\t\t\t<ActionLink :close-after-click=\"true\"\n\t\t\t\t\t\t\t\t:icon=\"action.icon\"\n\t\t\t\t\t\t\t\t:href=\"action.target\"\n\t\t\t\t\t\t\t\t:target=\"action.id === 'phone' ? '_self' :'_blank'\">\n\t\t\t\t\t\t\t\t{{ action.title }}\n\t\t\t\t\t\t\t</ActionLink>\n\t\t\t\t\t\t</Actions>\n\t\t\t\t\t\t<template v-if=\"otherActions\">\n\t\t\t\t\t\t\t<Actions :force-menu=\"true\">\n\t\t\t\t\t\t\t\t<ActionLink v-for=\"action in otherActions\"\n\t\t\t\t\t\t\t\t\t:key=\"action.id\"\n\t\t\t\t\t\t\t\t\t:class=\"{ 'icon-invert': colorMainBackground === '#181818' }\"\n\t\t\t\t\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t\t\t\t\t:icon=\"action.icon\"\n\t\t\t\t\t\t\t\t\t:href=\"action.target\"\n\t\t\t\t\t\t\t\t\t:target=\"action.id === 'phone' ? '_self' :'_blank'\">\n\t\t\t\t\t\t\t\t\t{{ action.title }}\n\t\t\t\t\t\t\t\t</ActionLink>\n\t\t\t\t\t\t\t</Actions>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"profile__blocks\">\n\t\t\t\t<div v-if=\"organisation || role || address\" class=\"profile__blocks-details\">\n\t\t\t\t\t<div v-if=\"organisation || role\" class=\"detail\">\n\t\t\t\t\t\t<p>{{ organisation }} <span v-if=\"organisation && role\">•</span> {{ role }}</p>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div v-if=\"address\" class=\"detail\">\n\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t<MapMarkerIcon class=\"map-icon\"\n\t\t\t\t\t\t\t\tdecorative\n\t\t\t\t\t\t\t\ttitle=\"\"\n\t\t\t\t\t\t\t\t:size=\"16\" />\n\t\t\t\t\t\t\t{{ address }}\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<template v-if=\"headline || biography\">\n\t\t\t\t\t<div v-if=\"headline\" class=\"profile__blocks-headline\">\n\t\t\t\t\t\t<h3>{{ headline }}</h3>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div v-if=\"biography\" class=\"profile__blocks-biography\">\n\t\t\t\t\t\t<p>{{ biography }}</p>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t\t<template v-else>\n\t\t\t\t\t<div class=\"profile__blocks-empty-info\">\n\t\t\t\t\t\t<AccountIcon decorative\n\t\t\t\t\t\t\ttitle=\"\"\n\t\t\t\t\t\t\tfill-color=\"var(--color-text-maxcontrast)\"\n\t\t\t\t\t\t\t:size=\"60\" />\n\t\t\t\t\t\t<h3>{{ emptyProfileMessage }}</h3>\n\t\t\t\t\t\t<p>{{ t('core', 'The headline and about sections will show up here') }}</p>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateUrl } from '@nextcloud/router'\nimport { showError } from '@nextcloud/dialogs'\n\nimport Avatar from '@nextcloud/vue/dist/Components/Avatar'\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport ActionLink from '@nextcloud/vue/dist/Components/ActionLink'\nimport MapMarkerIcon from 'vue-material-design-icons/MapMarker'\nimport PencilIcon from 'vue-material-design-icons/Pencil'\nimport AccountIcon from 'vue-material-design-icons/Account'\n\nimport PrimaryActionButton from '../components/Profile/PrimaryActionButton'\n\nconst status = loadState('core', 'status', {})\nconst {\n\tuserId,\n\tdisplayname,\n\taddress,\n\torganisation,\n\trole,\n\theadline,\n\tbiography,\n\tactions,\n\tisUserAvatarVisible,\n} = loadState('core', 'profileParameters', {\n\tuserId: null,\n\tdisplayname: null,\n\taddress: null,\n\torganisation: null,\n\trole: null,\n\theadline: null,\n\tbiography: null,\n\tactions: [],\n\tisUserAvatarVisible: false,\n})\n\nexport default {\n\tname: 'Profile',\n\n\tcomponents: {\n\t\tAccountIcon,\n\t\tActionLink,\n\t\tActions,\n\t\tAvatar,\n\t\tMapMarkerIcon,\n\t\tPencilIcon,\n\t\tPrimaryActionButton,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tstatus,\n\t\t\tuserId,\n\t\t\tdisplayname,\n\t\t\taddress,\n\t\t\torganisation,\n\t\t\trole,\n\t\t\theadline,\n\t\t\tbiography,\n\t\t\tactions,\n\t\t\tisUserAvatarVisible,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisCurrentUser() {\n\t\t\treturn getCurrentUser()?.uid === this.userId\n\t\t},\n\n\t\tallActions() {\n\t\t\treturn this.actions\n\t\t},\n\n\t\tprimaryAction() {\n\t\t\tif (this.allActions.length) {\n\t\t\t\treturn this.allActions[0]\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\tmiddleActions() {\n\t\t\tif (this.allActions.slice(1, 4).length) {\n\t\t\t\treturn this.allActions.slice(1, 4)\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\totherActions() {\n\t\t\tif (this.allActions.slice(4).length) {\n\t\t\t\treturn this.allActions.slice(4)\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\tsettingsUrl() {\n\t\t\treturn generateUrl('/settings/user')\n\t\t},\n\n\t\tcolorMainBackground() {\n\t\t\t// For some reason the returned string has prepended whitespace\n\t\t\treturn getComputedStyle(document.body).getPropertyValue('--color-main-background').trim()\n\t\t},\n\n\t\temptyProfileMessage() {\n\t\t\treturn this.isCurrentUser\n\t\t\t\t? t('core', 'You have not added any info yet')\n\t\t\t\t: t('core', '{user} has not added any info yet', { user: (this.displayname || this.userId) })\n\t\t},\n\t},\n\n\tmounted() {\n\t\t// Set the user's displayname or userId in the page title and preserve the default title of \"Nextcloud\" at the end\n\t\tdocument.title = `${this.displayname || this.userId} - ${document.title}`\n\t\tsubscribe('user_status:status.updated', this.handleStatusUpdate)\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('user_status:status.updated', this.handleStatusUpdate)\n\t},\n\n\tmethods: {\n\t\thandleStatusUpdate(status) {\n\t\t\tif (this.isCurrentUser && status.userId === this.userId) {\n\t\t\t\tthis.status = status\n\t\t\t}\n\t\t},\n\n\t\topenStatusModal() {\n\t\t\tconst statusMenuItem = document.querySelector('.user-status-menu-item__toggle')\n\t\t\t// Changing the user status is only enabled if you are the current user\n\t\t\tif (this.isCurrentUser) {\n\t\t\t\tif (statusMenuItem) {\n\t\t\t\t\tstatusMenuItem.click()\n\t\t\t\t} else {\n\t\t\t\t\tshowError(t('core', 'Error opening the user status modal, try hard refreshing the page'))\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n// Override header styles\n#header {\n\tbackground-color: transparent !important;\n\tbackground-image: none !important;\n}\n\n#content {\n\tpadding-top: 0px;\n}\n</style>\n\n<style lang=\"scss\" scoped>\n$profile-max-width: 1024px;\n$content-max-width: 640px;\n\n.profile {\n\twidth: 100%;\n\n\t&__header {\n\t\tposition: sticky;\n\t\theight: 190px;\n\t\ttop: -40px;\n\n\t\t&__container {\n\t\t\talign-self: flex-end;\n\t\t\twidth: 100%;\n\t\t\tmax-width: $profile-max-width;\n\t\t\tmargin: 0 auto;\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-rows: max-content max-content;\n\t\t\tgrid-template-columns: 240px 1fr;\n\t\t\tjustify-content: center;\n\n\t\t\t&__placeholder {\n\t\t\t\tgrid-row: 1 / 3;\n\t\t\t}\n\n\t\t\t&__displayname, &__status-text {\n\t\t\t\tcolor: var(--color-primary-text);\n\t\t\t}\n\n\t\t\t&__displayname {\n\t\t\t\twidth: $content-max-width;\n\t\t\t\theight: 45px;\n\t\t\t\tmargin-top: 128px;\n\t\t\t\t// Override the global style declaration\n\t\t\t\tmargin-bottom: 0;\n\t\t\t\tfont-size: 30px;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tcursor: text;\n\n\t\t\t\t&:not(:last-child) {\n\t\t\t\t\tmargin-top: 100px;\n\t\t\t\t\tmargin-bottom: 4px;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&__edit-button {\n\t\t\t\tborder: none;\n\t\t\t\tmargin-left: 18px;\n\t\t\t\tmargin-top: 2px;\n\t\t\t\tcolor: var(--color-primary-element);\n\t\t\t\tbackground-color: var(--color-primary-text);\n\t\t\t\tbox-shadow: 0 0 0 2px var(--color-primary-text);\n\t\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\t\tpadding: 0 18px;\n\t\t\t\tfont-size: var(--default-font-size);\n\t\t\t\theight: 44px;\n\t\t\t\tline-height: 44px;\n\t\t\t\tfont-weight: bold;\n\n\t\t\t\t&:hover,\n\t\t\t\t&:focus,\n\t\t\t\t&:active {\n\t\t\t\t\tcolor: var(--color-primary-text);\n\t\t\t\t\tbackground-color: var(--color-primary-element-light);\n\t\t\t\t}\n\n\t\t\t\t.pencil-icon {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tvertical-align: middle;\n\t\t\t\t\tmargin-top: 2px;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&__status-text {\n\t\t\t\twidth: max-content;\n\t\t\t\tmax-width: $content-max-width;\n\t\t\t\tpadding: 5px 10px;\n\t\t\t\tmargin-left: -12px;\n\t\t\t\tmargin-top: 2px;\n\n\t\t\t\t&.interactive {\n\t\t\t\t\tcursor: pointer;\n\n\t\t\t\t\t&:hover,\n\t\t\t\t\t&:focus,\n\t\t\t\t\t&:active {\n\t\t\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t\t\t\tcolor: var(--color-main-text);\n\t\t\t\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\tbox-shadow: 0 3px 6px var(--color-box-shadow);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&__sidebar {\n\t\tposition: sticky;\n\t\ttop: var(--header-height);\n\t\talign-self: flex-start;\n\t\tpadding-top: 20px;\n\t\tmin-width: 220px;\n\t\tmargin: -150px 20px 0 0;\n\n\t\t// Specificity hack is needed to override Avatar component styles\n\t\t&::v-deep .avatar.avatardiv, h2 {\n\t\t\ttext-align: center;\n\t\t\tmargin: auto;\n\t\t\tdisplay: block;\n\t\t\tpadding: 8px;\n\t\t}\n\n\t\t&::v-deep .avatar.avatardiv:not(.avatardiv--unknown) {\n\t\t\tbackground-color: var(--color-main-background) !important;\n\t\t\tbox-shadow: none;\n\t\t}\n\n\t\t&::v-deep .avatar.avatardiv {\n\t\t\t.avatardiv__user-status {\n\t\t\t\tright: 14px;\n\t\t\t\tbottom: 14px;\n\t\t\t\twidth: 34px;\n\t\t\t\theight: 34px;\n\t\t\t\tbackground-size: 28px;\n\t\t\t\tborder: none;\n\t\t\t\t// Styles when custom status icon and status text are set\n\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t\tline-height: 34px;\n\t\t\t\tfont-size: 20px;\n\t\t\t}\n\t\t}\n\n\t\t&::v-deep .avatar.interactive.avatardiv {\n\t\t\t.avatardiv__user-status {\n\t\t\t\tcursor: pointer;\n\n\t\t\t\t&:hover,\n\t\t\t\t&:focus,\n\t\t\t\t&:active {\n\t\t\t\t\tbox-shadow: 0 3px 6px var(--color-box-shadow);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&__content {\n\t\tmax-width: $profile-max-width;\n\t\tmargin: 0 auto;\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t}\n\n\t&__blocks {\n\t\tmargin: 18px 0 80px 0;\n\t\tdisplay: grid;\n\t\tgap: 16px 0;\n\t\twidth: $content-max-width;\n\n\t\tp, h3 {\n\t\t\toverflow-wrap: anywhere;\n\t\t}\n\n\t\t&-details {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tgap: 2px 0;\n\n\t\t\t.detail {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t\t\tp .map-icon {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tvertical-align: middle;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&-headline {\n\t\t\tmargin-top: 10px;\n\n\t\t\th3 {\n\t\t\t\tfont-weight: bold;\n\t\t\t\tfont-size: 20px;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t}\n\n\t\t&-biography {\n\t\t\twhite-space: pre-line;\n\t\t}\n\n\t\th3, p {\n\t\t\tcursor: text;\n\t\t}\n\n\t\t&-empty-info {\n\t\t\tmargin-top: 80px;\n\t\t\tmargin-right: 100px;\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\ttext-align: center;\n\n\t\t\th3 {\n\t\t\t\tfont-weight: bold;\n\t\t\t\tfont-size: 18px;\n\t\t\t\tmargin: 8px 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\n@media only screen and (max-width: 1024px) {\n\t.profile {\n\t\t&__header {\n\t\t\theight: 250px;\n\t\t\tposition: unset;\n\n\t\t\t&__container {\n\t\t\t\tgrid-template-columns: unset;\n\n\t\t\t\t&__displayname {\n\t\t\t\t\tmargin: 100px 20px 0px;\n\t\t\t\t\twidth: unset;\n\t\t\t\t\tdisplay: unset;\n\t\t\t\t\ttext-align: center;\n\t\t\t\t}\n\n\t\t\t\t&__edit-button {\n\t\t\t\t\twidth: fit-content;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tmargin: 30px auto;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&__content {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t&__blocks {\n\t\t\twidth: unset;\n\t\t\tmax-width: 600px;\n\t\t\tmargin: 0 auto;\n\t\t\tpadding: 20px 50px 50px 50px;\n\n\t\t\t&-empty-info {\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t}\n\n\t\t&__sidebar {\n\t\t\tmargin: unset;\n\t\t\tposition: unset;\n\t\t}\n\t}\n}\n\n.user-actions {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px 0;\n\tmargin-top: 20px;\n\n\t&__primary {\n\t\tmargin: 0 auto;\n\t}\n\n\t&__other {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tgap: 0 4px;\n\t}\n}\n\n.icon-invert {\n\t&::v-deep .action-link__icon {\n\t\tfilter: invert(1);\n\t}\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.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!./Profile.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!./Profile.vue?vue&type=style&index=0&lang=scss&\";\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!./Profile.vue?vue&type=style&index=0&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","\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!./Profile.vue?vue&type=style&index=1&id=6311e07c&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!./Profile.vue?vue&type=style&index=1&id=6311e07c&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Profile.vue?vue&type=template&id=6311e07c&scoped=true&\"\nimport script from \"./Profile.vue?vue&type=script&lang=js&\"\nexport * from \"./Profile.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Profile.vue?vue&type=style&index=0&lang=scss&\"\nimport style1 from \"./Profile.vue?vue&type=style&index=1&id=6311e07c&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 \"6311e07c\",\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:\"profile\"},[_c('div',{staticClass:\"profile__header\"},[_c('div',{staticClass:\"profile__header__container\"},[_c('div',{staticClass:\"profile__header__container__placeholder\"}),_vm._v(\" \"),_c('h2',{staticClass:\"profile__header__container__displayname\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.displayname || _vm.userId)+\"\\n\\t\\t\\t\\t\"),(_vm.isCurrentUser)?_c('a',{staticClass:\"primary profile__header__container__edit-button\",attrs:{\"href\":_vm.settingsUrl}},[_c('PencilIcon',{staticClass:\"pencil-icon\",attrs:{\"decorative\":\"\",\"title\":\"\",\"size\":16}}),_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Edit Profile'))+\"\\n\\t\\t\\t\\t\")],1):_vm._e()]),_vm._v(\" \"),(_vm.status.icon || _vm.status.message)?_c('div',{staticClass:\"profile__header__container__status-text\",class:{ interactive: _vm.isCurrentUser },on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.openStatusModal.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.status.icon)+\" \"+_vm._s(_vm.status.message)+\"\\n\\t\\t\\t\")]):_vm._e()])]),_vm._v(\" \"),_c('div',{staticClass:\"profile__content\"},[_c('div',{staticClass:\"profile__sidebar\"},[_c('Avatar',{staticClass:\"avatar\",class:{ interactive: _vm.isCurrentUser },attrs:{\"user\":_vm.userId,\"size\":180,\"show-user-status\":true,\"show-user-status-compact\":false,\"disable-menu\":true,\"disable-tooltip\":true,\"is-no-user\":!_vm.isUserAvatarVisible},nativeOn:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.openStatusModal.apply(null, arguments)}}}),_vm._v(\" \"),_c('div',{staticClass:\"user-actions\"},[(_vm.primaryAction)?_c('PrimaryActionButton',{staticClass:\"user-actions__primary\",attrs:{\"href\":_vm.primaryAction.target,\"icon\":_vm.primaryAction.icon,\"target\":_vm.primaryAction.id === 'phone' ? '_self' :'_blank'}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.primaryAction.title)+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"user-actions__other\"},[_vm._l((_vm.middleActions),function(action){return _c('Actions',{key:action.id,staticStyle:{\"background-position\":\"14px center\",\"background-size\":\"16px\",\"background-repeat\":\"no-repeat\"},style:(Object.assign({}, {backgroundImage: (\"url(\" + (action.icon) + \")\")},\n\t\t\t\t\t\t\t(_vm.colorMainBackground === '#181818' && { filter: 'invert(1)' }))),attrs:{\"default-icon\":action.icon}},[_c('ActionLink',{attrs:{\"close-after-click\":true,\"icon\":action.icon,\"href\":action.target,\"target\":action.id === 'phone' ? '_self' :'_blank'}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(action.title)+\"\\n\\t\\t\\t\\t\\t\\t\")])],1)}),_vm._v(\" \"),(_vm.otherActions)?[_c('Actions',{attrs:{\"force-menu\":true}},_vm._l((_vm.otherActions),function(action){return _c('ActionLink',{key:action.id,class:{ 'icon-invert': _vm.colorMainBackground === '#181818' },attrs:{\"close-after-click\":true,\"icon\":action.icon,\"href\":action.target,\"target\":action.id === 'phone' ? '_self' :'_blank'}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(action.title)+\"\\n\\t\\t\\t\\t\\t\\t\\t\")])}),1)]:_vm._e()],2)],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"profile__blocks\"},[(_vm.organisation || _vm.role || _vm.address)?_c('div',{staticClass:\"profile__blocks-details\"},[(_vm.organisation || _vm.role)?_c('div',{staticClass:\"detail\"},[_c('p',[_vm._v(_vm._s(_vm.organisation)+\" \"),(_vm.organisation && _vm.role)?_c('span',[_vm._v(\"•\")]):_vm._e(),_vm._v(\" \"+_vm._s(_vm.role))])]):_vm._e(),_vm._v(\" \"),(_vm.address)?_c('div',{staticClass:\"detail\"},[_c('p',[_c('MapMarkerIcon',{staticClass:\"map-icon\",attrs:{\"decorative\":\"\",\"title\":\"\",\"size\":16}}),_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.address)+\"\\n\\t\\t\\t\\t\\t\")],1)]):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.headline || _vm.biography)?[(_vm.headline)?_c('div',{staticClass:\"profile__blocks-headline\"},[_c('h3',[_vm._v(_vm._s(_vm.headline))])]):_vm._e(),_vm._v(\" \"),(_vm.biography)?_c('div',{staticClass:\"profile__blocks-biography\"},[_c('p',[_vm._v(_vm._s(_vm.biography))])]):_vm._e()]:[_c('div',{staticClass:\"profile__blocks-empty-info\"},[_c('AccountIcon',{attrs:{\"decorative\":\"\",\"title\":\"\",\"fill-color\":\"var(--color-text-maxcontrast)\",\"size\":60}}),_vm._v(\" \"),_c('h3',[_vm._v(_vm._s(_vm.emptyProfileMessage))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.t('core', 'The headline and about sections will show up here')))])],1)]],2)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\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 */\n\nimport Vue from 'vue'\nimport { getRequestToken } from '@nextcloud/auth'\nimport { translate as t } from '@nextcloud/l10n'\nimport VTooltip from 'v-tooltip'\n\nimport logger from './logger'\n\nimport Profile from './views/Profile'\n\n__webpack_nonce__ = btoa(getRequestToken())\n\nVue.use(VTooltip)\n\nVue.mixin({\n\tprops: {\n\t\tlogger,\n\t},\n\tmethods: {\n\t\tt,\n\t},\n})\n\nconst View = Vue.extend(Profile)\n\nwindow.addEventListener('DOMContentLoaded', () => {\n\tnew View().$mount('#vue-profile')\n})\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, \".profile__primary-action-button[data-v-35d5c4b6]{font-size:var(--default-font-size);font-weight:bold;width:188px;height:44px;padding:0 16px;line-height:44px;text-align:center;border-radius:var(--border-radius-pill);color:var(--color-primary-text);background-color:var(--color-primary-element);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.profile__primary-action-button .icon[data-v-35d5c4b6]{display:inline-block;vertical-align:middle;margin-bottom:2px;margin-right:4px}.profile__primary-action-button .icon.icon-invert[data-v-35d5c4b6]{filter:invert(1)}.profile__primary-action-button[data-v-35d5c4b6]:hover,.profile__primary-action-button[data-v-35d5c4b6]:focus,.profile__primary-action-button[data-v-35d5c4b6]:active{background-color:var(--color-primary-element-light)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/Profile/PrimaryActionButton.vue\"],\"names\":[],\"mappings\":\"AAsEA,iDACC,kCAAA,CACA,gBAAA,CACA,WAAA,CACA,WAAA,CACA,cAAA,CACA,gBAAA,CACA,iBAAA,CACA,uCAAA,CACA,+BAAA,CACA,6CAAA,CACA,eAAA,CACA,kBAAA,CACA,sBAAA,CAEA,uDACC,oBAAA,CACA,qBAAA,CACA,iBAAA,CACA,gBAAA,CAEA,mEACC,gBAAA,CAIF,sKAGC,mDAAA\",\"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.profile__primary-action-button {\\n\\tfont-size: var(--default-font-size);\\n\\tfont-weight: bold;\\n\\twidth: 188px;\\n\\theight: 44px;\\n\\tpadding: 0 16px;\\n\\tline-height: 44px;\\n\\ttext-align: center;\\n\\tborder-radius: var(--border-radius-pill);\\n\\tcolor: var(--color-primary-text);\\n\\tbackground-color: var(--color-primary-element);\\n\\toverflow: hidden;\\n\\twhite-space: nowrap;\\n\\ttext-overflow: ellipsis;\\n\\n\\t.icon {\\n\\t\\tdisplay: inline-block;\\n\\t\\tvertical-align: middle;\\n\\t\\tmargin-bottom: 2px;\\n\\t\\tmargin-right: 4px;\\n\\n\\t\\t&.icon-invert {\\n\\t\\t\\tfilter: invert(1);\\n\\t\\t}\\n\\t}\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\tbackground-color: var(--color-primary-element-light);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"#header{background-color:rgba(0,0,0,0) !important;background-image:none !important}#content{padding-top:0px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/Profile.vue\"],\"names\":[],\"mappings\":\"AAqSA,QACC,yCAAA,CACA,gCAAA,CAGD,SACC,eAAA\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n// Override header styles\\n#header {\\n\\tbackground-color: transparent !important;\\n\\tbackground-image: none !important;\\n}\\n\\n#content {\\n\\tpadding-top: 0px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".profile[data-v-6311e07c]{width:100%}.profile__header[data-v-6311e07c]{position:sticky;height:190px;top:-40px}.profile__header__container[data-v-6311e07c]{align-self:flex-end;width:100%;max-width:1024px;margin:0 auto;display:grid;grid-template-rows:max-content max-content;grid-template-columns:240px 1fr;justify-content:center}.profile__header__container__placeholder[data-v-6311e07c]{grid-row:1/3}.profile__header__container__displayname[data-v-6311e07c],.profile__header__container__status-text[data-v-6311e07c]{color:var(--color-primary-text)}.profile__header__container__displayname[data-v-6311e07c]{width:640px;height:45px;margin-top:128px;margin-bottom:0;font-size:30px;display:flex;align-items:center;cursor:text}.profile__header__container__displayname[data-v-6311e07c]:not(:last-child){margin-top:100px;margin-bottom:4px}.profile__header__container__edit-button[data-v-6311e07c]{border:none;margin-left:18px;margin-top:2px;color:var(--color-primary-element);background-color:var(--color-primary-text);box-shadow:0 0 0 2px var(--color-primary-text);border-radius:var(--border-radius-pill);padding:0 18px;font-size:var(--default-font-size);height:44px;line-height:44px;font-weight:bold}.profile__header__container__edit-button[data-v-6311e07c]:hover,.profile__header__container__edit-button[data-v-6311e07c]:focus,.profile__header__container__edit-button[data-v-6311e07c]:active{color:var(--color-primary-text);background-color:var(--color-primary-element-light)}.profile__header__container__edit-button .pencil-icon[data-v-6311e07c]{display:inline-block;vertical-align:middle;margin-top:2px}.profile__header__container__status-text[data-v-6311e07c]{width:max-content;max-width:640px;padding:5px 10px;margin-left:-12px;margin-top:2px}.profile__header__container__status-text.interactive[data-v-6311e07c]{cursor:pointer}.profile__header__container__status-text.interactive[data-v-6311e07c]:hover,.profile__header__container__status-text.interactive[data-v-6311e07c]:focus,.profile__header__container__status-text.interactive[data-v-6311e07c]:active{background-color:var(--color-main-background);color:var(--color-main-text);border-radius:var(--border-radius-pill);font-weight:bold;box-shadow:0 3px 6px var(--color-box-shadow)}.profile__sidebar[data-v-6311e07c]{position:sticky;top:var(--header-height);align-self:flex-start;padding-top:20px;min-width:220px;margin:-150px 20px 0 0}.profile__sidebar[data-v-6311e07c] .avatar.avatardiv,.profile__sidebar h2[data-v-6311e07c]{text-align:center;margin:auto;display:block;padding:8px}.profile__sidebar[data-v-6311e07c] .avatar.avatardiv:not(.avatardiv--unknown){background-color:var(--color-main-background) !important;box-shadow:none}.profile__sidebar[data-v-6311e07c] .avatar.avatardiv .avatardiv__user-status{right:14px;bottom:14px;width:34px;height:34px;background-size:28px;border:none;background-color:var(--color-main-background);line-height:34px;font-size:20px}.profile__sidebar[data-v-6311e07c] .avatar.interactive.avatardiv .avatardiv__user-status{cursor:pointer}.profile__sidebar[data-v-6311e07c] .avatar.interactive.avatardiv .avatardiv__user-status:hover,.profile__sidebar[data-v-6311e07c] .avatar.interactive.avatardiv .avatardiv__user-status:focus,.profile__sidebar[data-v-6311e07c] .avatar.interactive.avatardiv .avatardiv__user-status:active{box-shadow:0 3px 6px var(--color-box-shadow)}.profile__content[data-v-6311e07c]{max-width:1024px;margin:0 auto;display:flex;width:100%}.profile__blocks[data-v-6311e07c]{margin:18px 0 80px 0;display:grid;gap:16px 0;width:640px}.profile__blocks p[data-v-6311e07c],.profile__blocks h3[data-v-6311e07c]{overflow-wrap:anywhere}.profile__blocks-details[data-v-6311e07c]{display:flex;flex-direction:column;gap:2px 0}.profile__blocks-details .detail[data-v-6311e07c]{display:inline-block;color:var(--color-text-maxcontrast)}.profile__blocks-details .detail p .map-icon[data-v-6311e07c]{display:inline-block;vertical-align:middle}.profile__blocks-headline[data-v-6311e07c]{margin-top:10px}.profile__blocks-headline h3[data-v-6311e07c]{font-weight:bold;font-size:20px;margin:0}.profile__blocks-biography[data-v-6311e07c]{white-space:pre-line}.profile__blocks h3[data-v-6311e07c],.profile__blocks p[data-v-6311e07c]{cursor:text}.profile__blocks-empty-info[data-v-6311e07c]{margin-top:80px;margin-right:100px;display:flex;flex-direction:column;text-align:center}.profile__blocks-empty-info h3[data-v-6311e07c]{font-weight:bold;font-size:18px;margin:8px 0}@media only screen and (max-width: 1024px){.profile__header[data-v-6311e07c]{height:250px;position:unset}.profile__header__container[data-v-6311e07c]{grid-template-columns:unset}.profile__header__container__displayname[data-v-6311e07c]{margin:100px 20px 0px;width:unset;display:unset;text-align:center}.profile__header__container__edit-button[data-v-6311e07c]{width:fit-content;display:block;margin:30px auto}.profile__content[data-v-6311e07c]{display:block}.profile__blocks[data-v-6311e07c]{width:unset;max-width:600px;margin:0 auto;padding:20px 50px 50px 50px}.profile__blocks-empty-info[data-v-6311e07c]{margin:0}.profile__sidebar[data-v-6311e07c]{margin:unset;position:unset}}.user-actions[data-v-6311e07c]{display:flex;flex-direction:column;gap:8px 0;margin-top:20px}.user-actions__primary[data-v-6311e07c]{margin:0 auto}.user-actions__other[data-v-6311e07c]{display:flex;justify-content:center;gap:0 4px}.icon-invert[data-v-6311e07c] .action-link__icon{filter:invert(1)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/Profile.vue\"],\"names\":[],\"mappings\":\"AAmTA,0BACC,UAAA,CAEA,kCACC,eAAA,CACA,YAAA,CACA,SAAA,CAEA,6CACC,mBAAA,CACA,UAAA,CACA,gBAdiB,CAejB,aAAA,CACA,YAAA,CACA,0CAAA,CACA,+BAAA,CACA,sBAAA,CAEA,0DACC,YAAA,CAGD,oHACC,+BAAA,CAGD,0DACC,WA7BgB,CA8BhB,WAAA,CACA,gBAAA,CAEA,eAAA,CACA,cAAA,CACA,YAAA,CACA,kBAAA,CACA,WAAA,CAEA,2EACC,gBAAA,CACA,iBAAA,CAIF,0DACC,WAAA,CACA,gBAAA,CACA,cAAA,CACA,kCAAA,CACA,0CAAA,CACA,8CAAA,CACA,uCAAA,CACA,cAAA,CACA,kCAAA,CACA,WAAA,CACA,gBAAA,CACA,gBAAA,CAEA,iMAGC,+BAAA,CACA,mDAAA,CAGD,uEACC,oBAAA,CACA,qBAAA,CACA,cAAA,CAIF,0DACC,iBAAA,CACA,eA3EgB,CA4EhB,gBAAA,CACA,iBAAA,CACA,cAAA,CAEA,sEACC,cAAA,CAEA,qOAGC,6CAAA,CACA,4BAAA,CACA,uCAAA,CACA,gBAAA,CACA,4CAAA,CAOL,mCACC,eAAA,CACA,wBAAA,CACA,qBAAA,CACA,gBAAA,CACA,eAAA,CACA,sBAAA,CAGA,2FACC,iBAAA,CACA,WAAA,CACA,aAAA,CACA,WAAA,CAGD,8EACC,wDAAA,CACA,eAAA,CAIA,6EACC,UAAA,CACA,WAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,WAAA,CAEA,6CAAA,CACA,gBAAA,CACA,cAAA,CAKD,yFACC,cAAA,CAEA,8RAGC,4CAAA,CAMJ,mCACC,gBApJkB,CAqJlB,aAAA,CACA,YAAA,CACA,UAAA,CAGD,kCACC,oBAAA,CACA,YAAA,CACA,UAAA,CACA,WA7JkB,CA+JlB,yEACC,sBAAA,CAGD,0CACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,kDACC,oBAAA,CACA,mCAAA,CAEA,8DACC,oBAAA,CACA,qBAAA,CAKH,2CACC,eAAA,CAEA,8CACC,gBAAA,CACA,cAAA,CACA,QAAA,CAIF,4CACC,oBAAA,CAGD,yEACC,WAAA,CAGD,6CACC,eAAA,CACA,kBAAA,CACA,YAAA,CACA,qBAAA,CACA,iBAAA,CAEA,gDACC,gBAAA,CACA,cAAA,CACA,YAAA,CAMJ,2CAEE,kCACC,YAAA,CACA,cAAA,CAEA,6CACC,2BAAA,CAEA,0DACC,qBAAA,CACA,WAAA,CACA,aAAA,CACA,iBAAA,CAGD,0DACC,iBAAA,CACA,aAAA,CACA,gBAAA,CAKH,mCACC,aAAA,CAGD,kCACC,WAAA,CACA,eAAA,CACA,aAAA,CACA,2BAAA,CAEA,6CACC,QAAA,CAIF,mCACC,YAAA,CACA,cAAA,CAAA,CAKH,+BACC,YAAA,CACA,qBAAA,CACA,SAAA,CACA,eAAA,CAEA,wCACC,aAAA,CAGD,sCACC,YAAA,CACA,sBAAA,CACA,SAAA,CAKD,iDACC,gBAAA\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n$profile-max-width: 1024px;\\n$content-max-width: 640px;\\n\\n.profile {\\n\\twidth: 100%;\\n\\n\\t&__header {\\n\\t\\tposition: sticky;\\n\\t\\theight: 190px;\\n\\t\\ttop: -40px;\\n\\n\\t\\t&__container {\\n\\t\\t\\talign-self: flex-end;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tmax-width: $profile-max-width;\\n\\t\\t\\tmargin: 0 auto;\\n\\t\\t\\tdisplay: grid;\\n\\t\\t\\tgrid-template-rows: max-content max-content;\\n\\t\\t\\tgrid-template-columns: 240px 1fr;\\n\\t\\t\\tjustify-content: center;\\n\\n\\t\\t\\t&__placeholder {\\n\\t\\t\\t\\tgrid-row: 1 / 3;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&__displayname, &__status-text {\\n\\t\\t\\t\\tcolor: var(--color-primary-text);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&__displayname {\\n\\t\\t\\t\\twidth: $content-max-width;\\n\\t\\t\\t\\theight: 45px;\\n\\t\\t\\t\\tmargin-top: 128px;\\n\\t\\t\\t\\t// Override the global style declaration\\n\\t\\t\\t\\tmargin-bottom: 0;\\n\\t\\t\\t\\tfont-size: 30px;\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\talign-items: center;\\n\\t\\t\\t\\tcursor: text;\\n\\n\\t\\t\\t\\t&:not(:last-child) {\\n\\t\\t\\t\\t\\tmargin-top: 100px;\\n\\t\\t\\t\\t\\tmargin-bottom: 4px;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&__edit-button {\\n\\t\\t\\t\\tborder: none;\\n\\t\\t\\t\\tmargin-left: 18px;\\n\\t\\t\\t\\tmargin-top: 2px;\\n\\t\\t\\t\\tcolor: var(--color-primary-element);\\n\\t\\t\\t\\tbackground-color: var(--color-primary-text);\\n\\t\\t\\t\\tbox-shadow: 0 0 0 2px var(--color-primary-text);\\n\\t\\t\\t\\tborder-radius: var(--border-radius-pill);\\n\\t\\t\\t\\tpadding: 0 18px;\\n\\t\\t\\t\\tfont-size: var(--default-font-size);\\n\\t\\t\\t\\theight: 44px;\\n\\t\\t\\t\\tline-height: 44px;\\n\\t\\t\\t\\tfont-weight: bold;\\n\\n\\t\\t\\t\\t&:hover,\\n\\t\\t\\t\\t&:focus,\\n\\t\\t\\t\\t&:active {\\n\\t\\t\\t\\t\\tcolor: var(--color-primary-text);\\n\\t\\t\\t\\t\\tbackground-color: var(--color-primary-element-light);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t.pencil-icon {\\n\\t\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t\\t\\tvertical-align: middle;\\n\\t\\t\\t\\t\\tmargin-top: 2px;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&__status-text {\\n\\t\\t\\t\\twidth: max-content;\\n\\t\\t\\t\\tmax-width: $content-max-width;\\n\\t\\t\\t\\tpadding: 5px 10px;\\n\\t\\t\\t\\tmargin-left: -12px;\\n\\t\\t\\t\\tmargin-top: 2px;\\n\\n\\t\\t\\t\\t&.interactive {\\n\\t\\t\\t\\t\\tcursor: pointer;\\n\\n\\t\\t\\t\\t\\t&:hover,\\n\\t\\t\\t\\t\\t&:focus,\\n\\t\\t\\t\\t\\t&:active {\\n\\t\\t\\t\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t\\t\\t\\tborder-radius: var(--border-radius-pill);\\n\\t\\t\\t\\t\\t\\tfont-weight: bold;\\n\\t\\t\\t\\t\\t\\tbox-shadow: 0 3px 6px var(--color-box-shadow);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__sidebar {\\n\\t\\tposition: sticky;\\n\\t\\ttop: var(--header-height);\\n\\t\\talign-self: flex-start;\\n\\t\\tpadding-top: 20px;\\n\\t\\tmin-width: 220px;\\n\\t\\tmargin: -150px 20px 0 0;\\n\\n\\t\\t// Specificity hack is needed to override Avatar component styles\\n\\t\\t&::v-deep .avatar.avatardiv, h2 {\\n\\t\\t\\ttext-align: center;\\n\\t\\t\\tmargin: auto;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tpadding: 8px;\\n\\t\\t}\\n\\n\\t\\t&::v-deep .avatar.avatardiv:not(.avatardiv--unknown) {\\n\\t\\t\\tbackground-color: var(--color-main-background) !important;\\n\\t\\t\\tbox-shadow: none;\\n\\t\\t}\\n\\n\\t\\t&::v-deep .avatar.avatardiv {\\n\\t\\t\\t.avatardiv__user-status {\\n\\t\\t\\t\\tright: 14px;\\n\\t\\t\\t\\tbottom: 14px;\\n\\t\\t\\t\\twidth: 34px;\\n\\t\\t\\t\\theight: 34px;\\n\\t\\t\\t\\tbackground-size: 28px;\\n\\t\\t\\t\\tborder: none;\\n\\t\\t\\t\\t// Styles when custom status icon and status text are set\\n\\t\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\t\\tline-height: 34px;\\n\\t\\t\\t\\tfont-size: 20px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&::v-deep .avatar.interactive.avatardiv {\\n\\t\\t\\t.avatardiv__user-status {\\n\\t\\t\\t\\tcursor: pointer;\\n\\n\\t\\t\\t\\t&:hover,\\n\\t\\t\\t\\t&:focus,\\n\\t\\t\\t\\t&:active {\\n\\t\\t\\t\\t\\tbox-shadow: 0 3px 6px var(--color-box-shadow);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__content {\\n\\t\\tmax-width: $profile-max-width;\\n\\t\\tmargin: 0 auto;\\n\\t\\tdisplay: flex;\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t&__blocks {\\n\\t\\tmargin: 18px 0 80px 0;\\n\\t\\tdisplay: grid;\\n\\t\\tgap: 16px 0;\\n\\t\\twidth: $content-max-width;\\n\\n\\t\\tp, h3 {\\n\\t\\t\\toverflow-wrap: anywhere;\\n\\t\\t}\\n\\n\\t\\t&-details {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\tgap: 2px 0;\\n\\n\\t\\t\\t.detail {\\n\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\n\\t\\t\\t\\tp .map-icon {\\n\\t\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t\\t\\tvertical-align: middle;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&-headline {\\n\\t\\t\\tmargin-top: 10px;\\n\\n\\t\\t\\th3 {\\n\\t\\t\\t\\tfont-weight: bold;\\n\\t\\t\\t\\tfont-size: 20px;\\n\\t\\t\\t\\tmargin: 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&-biography {\\n\\t\\t\\twhite-space: pre-line;\\n\\t\\t}\\n\\n\\t\\th3, p {\\n\\t\\t\\tcursor: text;\\n\\t\\t}\\n\\n\\t\\t&-empty-info {\\n\\t\\t\\tmargin-top: 80px;\\n\\t\\t\\tmargin-right: 100px;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\ttext-align: center;\\n\\n\\t\\t\\th3 {\\n\\t\\t\\t\\tfont-weight: bold;\\n\\t\\t\\t\\tfont-size: 18px;\\n\\t\\t\\t\\tmargin: 8px 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\n@media only screen and (max-width: 1024px) {\\n\\t.profile {\\n\\t\\t&__header {\\n\\t\\t\\theight: 250px;\\n\\t\\t\\tposition: unset;\\n\\n\\t\\t\\t&__container {\\n\\t\\t\\t\\tgrid-template-columns: unset;\\n\\n\\t\\t\\t\\t&__displayname {\\n\\t\\t\\t\\t\\tmargin: 100px 20px 0px;\\n\\t\\t\\t\\t\\twidth: unset;\\n\\t\\t\\t\\t\\tdisplay: unset;\\n\\t\\t\\t\\t\\ttext-align: center;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t&__edit-button {\\n\\t\\t\\t\\t\\twidth: fit-content;\\n\\t\\t\\t\\t\\tdisplay: block;\\n\\t\\t\\t\\t\\tmargin: 30px auto;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&__content {\\n\\t\\t\\tdisplay: block;\\n\\t\\t}\\n\\n\\t\\t&__blocks {\\n\\t\\t\\twidth: unset;\\n\\t\\t\\tmax-width: 600px;\\n\\t\\t\\tmargin: 0 auto;\\n\\t\\t\\tpadding: 20px 50px 50px 50px;\\n\\n\\t\\t\\t&-empty-info {\\n\\t\\t\\t\\tmargin: 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&__sidebar {\\n\\t\\t\\tmargin: unset;\\n\\t\\t\\tposition: unset;\\n\\t\\t}\\n\\t}\\n}\\n\\n.user-actions {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 8px 0;\\n\\tmargin-top: 20px;\\n\\n\\t&__primary {\\n\\t\\tmargin: 0 auto;\\n\\t}\\n\\n\\t&__other {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: center;\\n\\t\\tgap: 0 4px;\\n\\t}\\n}\\n\\n.icon-invert {\\n\\t&::v-deep .action-link__icon {\\n\\t\\tfilter: invert(1);\\n\\t}\\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 = 9651;","__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\t9651: 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__(8948); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","user","getCurrentUser","getLoggerBuilder","setApp","build","setUid","uid","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_c","_self","_g","staticClass","class","disabled","attrs","href","target","$listeners","icon","colorPrimaryText","_v","_t","_s","displayname","userId","settingsUrl","t","_e","status","message","interactive","isCurrentUser","on","$event","preventDefault","stopPropagation","openStatusModal","apply","arguments","isUserAvatarVisible","nativeOn","primaryAction","id","title","_l","action","key","staticStyle","style","Object","assign","backgroundImage","colorMainBackground","filter","organisation","role","address","headline","biography","emptyProfileMessage","__webpack_nonce__","btoa","getRequestToken","Vue","VTooltip","props","logger","methods","View","Profile","window","addEventListener","$mount","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","children","b","document","baseURI","self","location","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"core-profile.js?v=709965172bbdb4092252","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/logger.js","webpack:///nextcloud/core/src/components/Profile/PrimaryActionButton.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/Profile/PrimaryActionButton.vue","webpack://nextcloud/./core/src/components/Profile/PrimaryActionButton.vue?e5bb","webpack://nextcloud/./core/src/components/Profile/PrimaryActionButton.vue?4873","webpack:///nextcloud/core/src/components/Profile/PrimaryActionButton.vue?vue&type=template&id=35d5c4b6&scoped=true&","webpack:///nextcloud/core/src/views/Profile.vue","webpack:///nextcloud/core/src/views/Profile.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/views/Profile.vue?165e","webpack://nextcloud/./core/src/views/Profile.vue?5f38","webpack://nextcloud/./core/src/views/Profile.vue?6193","webpack:///nextcloud/core/src/views/Profile.vue?vue&type=template&id=6311e07c&scoped=true&","webpack:///nextcloud/core/src/profile.js","webpack:///nextcloud/core/src/components/Profile/PrimaryActionButton.vue?vue&type=style&index=0&id=35d5c4b6&lang=scss&scoped=true&","webpack:///nextcloud/core/src/views/Profile.vue?vue&type=style&index=0&lang=scss&","webpack:///nextcloud/core/src/views/Profile.vue?vue&type=style&index=1&id=6311e07c&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/runtime/nonce","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 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 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 */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nconst getLogger = user => {\n\tif (user === null) {\n\t\treturn getLoggerBuilder()\n\t\t\t.setApp('core')\n\t\t\t.build()\n\t}\n\treturn getLoggerBuilder()\n\t\t.setApp('core')\n\t\t.setUid(user.uid)\n\t\t.build()\n}\n\nexport default getLogger(getCurrentUser())\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrimaryActionButton.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!./PrimaryActionButton.vue?vue&type=script&lang=js&\"","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<a class=\"profile__primary-action-button\"\n\t\t:class=\"{ 'disabled': disabled }\"\n\t\t:href=\"href\"\n\t\t:target=\"target\"\n\t\trel=\"noopener noreferrer nofollow\"\n\t\tv-on=\"$listeners\">\n\t\t<img class=\"icon\"\n\t\t\t:class=\"[icon, { 'icon-invert': colorPrimaryText === '#ffffff' }]\"\n\t\t\t:src=\"icon\">\n\t\t<slot />\n\t</a>\n</template>\n\n<script>\nexport default {\n\tname: 'PrimaryActionButton',\n\n\tprops: {\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\thref: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ttarget: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t\tvalidator: (value) => ['_self', '_blank', '_parent', '_top'].includes(value),\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tcolorPrimaryText() {\n\t\t\t// For some reason the returned string has prepended whitespace\n\t\t\treturn getComputedStyle(document.body).getPropertyValue('--color-primary-text').trim()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.profile__primary-action-button {\n\t\tfont-size: var(--default-font-size);\n\t\tfont-weight: bold;\n\t\twidth: 188px;\n\t\theight: 44px;\n\t\tpadding: 0 16px;\n\t\tline-height: 44px;\n\t\ttext-align: center;\n\t\tborder-radius: var(--border-radius-pill);\n\t\tcolor: var(--color-primary-text);\n\t\tbackground-color: var(--color-primary-element);\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\n\t\t.icon {\n\t\t\tdisplay: inline-block;\n\t\t\tvertical-align: middle;\n\t\t\tmargin-bottom: 2px;\n\t\t\tmargin-right: 4px;\n\n\t\t\t&.icon-invert {\n\t\t\t\tfilter: invert(1);\n\t\t\t}\n\t\t}\n\n\t\t&:hover,\n\t\t&:focus,\n\t\t&:active {\n\t\t\tbackground-color: var(--color-primary-element-light);\n\t\t}\n\t}\n</style>\n","\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!./PrimaryActionButton.vue?vue&type=style&index=0&id=35d5c4b6&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!./PrimaryActionButton.vue?vue&type=style&index=0&id=35d5c4b6&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PrimaryActionButton.vue?vue&type=template&id=35d5c4b6&scoped=true&\"\nimport script from \"./PrimaryActionButton.vue?vue&type=script&lang=js&\"\nexport * from \"./PrimaryActionButton.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PrimaryActionButton.vue?vue&type=style&index=0&id=35d5c4b6&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 \"35d5c4b6\",\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('a',_vm._g({staticClass:\"profile__primary-action-button\",class:{ 'disabled': _vm.disabled },attrs:{\"href\":_vm.href,\"target\":_vm.target,\"rel\":\"noopener noreferrer nofollow\"}},_vm.$listeners),[_c('img',{staticClass:\"icon\",class:[_vm.icon, { 'icon-invert': _vm.colorPrimaryText === '#ffffff' }],attrs:{\"src\":_vm.icon}}),_vm._v(\" \"),_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2021 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<div class=\"profile\">\n\t\t<div class=\"profile__header\">\n\t\t\t<div class=\"profile__header__container\">\n\t\t\t\t<div class=\"profile__header__container__placeholder\" />\n\t\t\t\t<h2 class=\"profile__header__container__displayname\">\n\t\t\t\t\t{{ displayname || userId }}\n\t\t\t\t\t<a v-if=\"isCurrentUser\"\n\t\t\t\t\t\tclass=\"primary profile__header__container__edit-button\"\n\t\t\t\t\t\t:href=\"settingsUrl\">\n\t\t\t\t\t\t<PencilIcon class=\"pencil-icon\"\n\t\t\t\t\t\t\tdecorative\n\t\t\t\t\t\t\ttitle=\"\"\n\t\t\t\t\t\t\t:size=\"16\" />\n\t\t\t\t\t\t{{ t('core', 'Edit Profile') }}\n\t\t\t\t\t</a>\n\t\t\t\t</h2>\n\t\t\t\t<div v-if=\"status.icon || status.message\"\n\t\t\t\t\tclass=\"profile__header__container__status-text\"\n\t\t\t\t\t:class=\"{ interactive: isCurrentUser }\"\n\t\t\t\t\t@click.prevent.stop=\"openStatusModal\">\n\t\t\t\t\t{{ status.icon }} {{ status.message }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"profile__content\">\n\t\t\t<div class=\"profile__sidebar\">\n\t\t\t\t<Avatar class=\"avatar\"\n\t\t\t\t\t:class=\"{ interactive: isCurrentUser }\"\n\t\t\t\t\t:user=\"userId\"\n\t\t\t\t\t:size=\"180\"\n\t\t\t\t\t:show-user-status=\"true\"\n\t\t\t\t\t:show-user-status-compact=\"false\"\n\t\t\t\t\t:disable-menu=\"true\"\n\t\t\t\t\t:disable-tooltip=\"true\"\n\t\t\t\t\t:is-no-user=\"!isUserAvatarVisible\"\n\t\t\t\t\t@click.native.prevent.stop=\"openStatusModal\" />\n\n\t\t\t\t<div class=\"user-actions\">\n\t\t\t\t\t<!-- When a tel: URL is opened with target=\"_blank\", a blank new tab is opened which is inconsistent with the handling of other URLs so we set target=\"_self\" for the phone action -->\n\t\t\t\t\t<PrimaryActionButton v-if=\"primaryAction\"\n\t\t\t\t\t\tclass=\"user-actions__primary\"\n\t\t\t\t\t\t:href=\"primaryAction.target\"\n\t\t\t\t\t\t:icon=\"primaryAction.icon\"\n\t\t\t\t\t\t:target=\"primaryAction.id === 'phone' ? '_self' :'_blank'\">\n\t\t\t\t\t\t{{ primaryAction.title }}\n\t\t\t\t\t</PrimaryActionButton>\n\t\t\t\t\t<div class=\"user-actions__other\">\n\t\t\t\t\t\t<!-- FIXME Remove inline styles after https://github.com/nextcloud/nextcloud-vue/issues/2315 is fixed -->\n\t\t\t\t\t\t<Actions v-for=\"action in middleActions\"\n\t\t\t\t\t\t\t:key=\"action.id\"\n\t\t\t\t\t\t\t:default-icon=\"action.icon\"\n\t\t\t\t\t\t\tstyle=\"\n\t\t\t\t\t\t\t\tbackground-position: 14px center;\n\t\t\t\t\t\t\t\tbackground-size: 16px;\n\t\t\t\t\t\t\t\tbackground-repeat: no-repeat;\"\n\t\t\t\t\t\t\t:style=\"{\n\t\t\t\t\t\t\t\tbackgroundImage: `url(${action.icon})`,\n\t\t\t\t\t\t\t\t...(colorMainBackground === '#181818' && { filter: 'invert(1)' })\n\t\t\t\t\t\t\t}\">\n\t\t\t\t\t\t\t<ActionLink :close-after-click=\"true\"\n\t\t\t\t\t\t\t\t:icon=\"action.icon\"\n\t\t\t\t\t\t\t\t:href=\"action.target\"\n\t\t\t\t\t\t\t\t:target=\"action.id === 'phone' ? '_self' :'_blank'\">\n\t\t\t\t\t\t\t\t{{ action.title }}\n\t\t\t\t\t\t\t</ActionLink>\n\t\t\t\t\t\t</Actions>\n\t\t\t\t\t\t<template v-if=\"otherActions\">\n\t\t\t\t\t\t\t<Actions :force-menu=\"true\">\n\t\t\t\t\t\t\t\t<ActionLink v-for=\"action in otherActions\"\n\t\t\t\t\t\t\t\t\t:key=\"action.id\"\n\t\t\t\t\t\t\t\t\t:class=\"{ 'icon-invert': colorMainBackground === '#181818' }\"\n\t\t\t\t\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t\t\t\t\t:icon=\"action.icon\"\n\t\t\t\t\t\t\t\t\t:href=\"action.target\"\n\t\t\t\t\t\t\t\t\t:target=\"action.id === 'phone' ? '_self' :'_blank'\">\n\t\t\t\t\t\t\t\t\t{{ action.title }}\n\t\t\t\t\t\t\t\t</ActionLink>\n\t\t\t\t\t\t\t</Actions>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"profile__blocks\">\n\t\t\t\t<div v-if=\"organisation || role || address\" class=\"profile__blocks-details\">\n\t\t\t\t\t<div v-if=\"organisation || role\" class=\"detail\">\n\t\t\t\t\t\t<p>{{ organisation }} <span v-if=\"organisation && role\">•</span> {{ role }}</p>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div v-if=\"address\" class=\"detail\">\n\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t<MapMarkerIcon class=\"map-icon\"\n\t\t\t\t\t\t\t\tdecorative\n\t\t\t\t\t\t\t\ttitle=\"\"\n\t\t\t\t\t\t\t\t:size=\"16\" />\n\t\t\t\t\t\t\t{{ address }}\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<template v-if=\"headline || biography\">\n\t\t\t\t\t<div v-if=\"headline\" class=\"profile__blocks-headline\">\n\t\t\t\t\t\t<h3>{{ headline }}</h3>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div v-if=\"biography\" class=\"profile__blocks-biography\">\n\t\t\t\t\t\t<p>{{ biography }}</p>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t\t<template v-else>\n\t\t\t\t\t<div class=\"profile__blocks-empty-info\">\n\t\t\t\t\t\t<AccountIcon decorative\n\t\t\t\t\t\t\ttitle=\"\"\n\t\t\t\t\t\t\tfill-color=\"var(--color-text-maxcontrast)\"\n\t\t\t\t\t\t\t:size=\"60\" />\n\t\t\t\t\t\t<h3>{{ emptyProfileMessage }}</h3>\n\t\t\t\t\t\t<p>{{ t('core', 'The headline and about sections will show up here') }}</p>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateUrl } from '@nextcloud/router'\nimport { showError } from '@nextcloud/dialogs'\n\nimport Avatar from '@nextcloud/vue/dist/Components/Avatar'\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport ActionLink from '@nextcloud/vue/dist/Components/ActionLink'\nimport MapMarkerIcon from 'vue-material-design-icons/MapMarker'\nimport PencilIcon from 'vue-material-design-icons/Pencil'\nimport AccountIcon from 'vue-material-design-icons/Account'\n\nimport PrimaryActionButton from '../components/Profile/PrimaryActionButton'\n\nconst status = loadState('core', 'status', {})\nconst {\n\tuserId,\n\tdisplayname,\n\taddress,\n\torganisation,\n\trole,\n\theadline,\n\tbiography,\n\tactions,\n\tisUserAvatarVisible,\n} = loadState('core', 'profileParameters', {\n\tuserId: null,\n\tdisplayname: null,\n\taddress: null,\n\torganisation: null,\n\trole: null,\n\theadline: null,\n\tbiography: null,\n\tactions: [],\n\tisUserAvatarVisible: false,\n})\n\nexport default {\n\tname: 'Profile',\n\n\tcomponents: {\n\t\tAccountIcon,\n\t\tActionLink,\n\t\tActions,\n\t\tAvatar,\n\t\tMapMarkerIcon,\n\t\tPencilIcon,\n\t\tPrimaryActionButton,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tstatus,\n\t\t\tuserId,\n\t\t\tdisplayname,\n\t\t\taddress,\n\t\t\torganisation,\n\t\t\trole,\n\t\t\theadline,\n\t\t\tbiography,\n\t\t\tactions,\n\t\t\tisUserAvatarVisible,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisCurrentUser() {\n\t\t\treturn getCurrentUser()?.uid === this.userId\n\t\t},\n\n\t\tallActions() {\n\t\t\treturn this.actions\n\t\t},\n\n\t\tprimaryAction() {\n\t\t\tif (this.allActions.length) {\n\t\t\t\treturn this.allActions[0]\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\tmiddleActions() {\n\t\t\tif (this.allActions.slice(1, 4).length) {\n\t\t\t\treturn this.allActions.slice(1, 4)\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\totherActions() {\n\t\t\tif (this.allActions.slice(4).length) {\n\t\t\t\treturn this.allActions.slice(4)\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\tsettingsUrl() {\n\t\t\treturn generateUrl('/settings/user')\n\t\t},\n\n\t\tcolorMainBackground() {\n\t\t\t// For some reason the returned string has prepended whitespace\n\t\t\treturn getComputedStyle(document.body).getPropertyValue('--color-main-background').trim()\n\t\t},\n\n\t\temptyProfileMessage() {\n\t\t\treturn this.isCurrentUser\n\t\t\t\t? t('core', 'You have not added any info yet')\n\t\t\t\t: t('core', '{user} has not added any info yet', { user: (this.displayname || this.userId) })\n\t\t},\n\t},\n\n\tmounted() {\n\t\t// Set the user's displayname or userId in the page title and preserve the default title of \"Nextcloud\" at the end\n\t\tdocument.title = `${this.displayname || this.userId} - ${document.title}`\n\t\tsubscribe('user_status:status.updated', this.handleStatusUpdate)\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('user_status:status.updated', this.handleStatusUpdate)\n\t},\n\n\tmethods: {\n\t\thandleStatusUpdate(status) {\n\t\t\tif (this.isCurrentUser && status.userId === this.userId) {\n\t\t\t\tthis.status = status\n\t\t\t}\n\t\t},\n\n\t\topenStatusModal() {\n\t\t\tconst statusMenuItem = document.querySelector('.user-status-menu-item__toggle')\n\t\t\t// Changing the user status is only enabled if you are the current user\n\t\t\tif (this.isCurrentUser) {\n\t\t\t\tif (statusMenuItem) {\n\t\t\t\t\tstatusMenuItem.click()\n\t\t\t\t} else {\n\t\t\t\t\tshowError(t('core', 'Error opening the user status modal, try hard refreshing the page'))\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n// Override header styles\n#header {\n\tbackground-color: transparent !important;\n\tbackground-image: none !important;\n}\n\n#content {\n\tpadding-top: 0px;\n}\n</style>\n\n<style lang=\"scss\" scoped>\n$profile-max-width: 1024px;\n$content-max-width: 640px;\n\n.profile {\n\twidth: 100%;\n\n\t&__header {\n\t\tposition: sticky;\n\t\theight: 190px;\n\t\ttop: -40px;\n\n\t\t&__container {\n\t\t\talign-self: flex-end;\n\t\t\twidth: 100%;\n\t\t\tmax-width: $profile-max-width;\n\t\t\tmargin: 0 auto;\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-rows: max-content max-content;\n\t\t\tgrid-template-columns: 240px 1fr;\n\t\t\tjustify-content: center;\n\n\t\t\t&__placeholder {\n\t\t\t\tgrid-row: 1 / 3;\n\t\t\t}\n\n\t\t\t&__displayname, &__status-text {\n\t\t\t\tcolor: var(--color-primary-text);\n\t\t\t}\n\n\t\t\t&__displayname {\n\t\t\t\twidth: $content-max-width;\n\t\t\t\theight: 45px;\n\t\t\t\tmargin-top: 128px;\n\t\t\t\t// Override the global style declaration\n\t\t\t\tmargin-bottom: 0;\n\t\t\t\tfont-size: 30px;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tcursor: text;\n\n\t\t\t\t&:not(:last-child) {\n\t\t\t\t\tmargin-top: 100px;\n\t\t\t\t\tmargin-bottom: 4px;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&__edit-button {\n\t\t\t\tborder: none;\n\t\t\t\tmargin-left: 18px;\n\t\t\t\tmargin-top: 2px;\n\t\t\t\tcolor: var(--color-primary-element);\n\t\t\t\tbackground-color: var(--color-primary-text);\n\t\t\t\tbox-shadow: 0 0 0 2px var(--color-primary-text);\n\t\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\t\tpadding: 0 18px;\n\t\t\t\tfont-size: var(--default-font-size);\n\t\t\t\theight: 44px;\n\t\t\t\tline-height: 44px;\n\t\t\t\tfont-weight: bold;\n\n\t\t\t\t&:hover,\n\t\t\t\t&:focus,\n\t\t\t\t&:active {\n\t\t\t\t\tcolor: var(--color-primary-text);\n\t\t\t\t\tbackground-color: var(--color-primary-element-light);\n\t\t\t\t}\n\n\t\t\t\t.pencil-icon {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tvertical-align: middle;\n\t\t\t\t\tmargin-top: 2px;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&__status-text {\n\t\t\t\twidth: max-content;\n\t\t\t\tmax-width: $content-max-width;\n\t\t\t\tpadding: 5px 10px;\n\t\t\t\tmargin-left: -12px;\n\t\t\t\tmargin-top: 2px;\n\n\t\t\t\t&.interactive {\n\t\t\t\t\tcursor: pointer;\n\n\t\t\t\t\t&:hover,\n\t\t\t\t\t&:focus,\n\t\t\t\t\t&:active {\n\t\t\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t\t\t\tcolor: var(--color-main-text);\n\t\t\t\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\tbox-shadow: 0 3px 6px var(--color-box-shadow);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&__sidebar {\n\t\tposition: sticky;\n\t\ttop: var(--header-height);\n\t\talign-self: flex-start;\n\t\tpadding-top: 20px;\n\t\tmin-width: 220px;\n\t\tmargin: -150px 20px 0 0;\n\n\t\t// Specificity hack is needed to override Avatar component styles\n\t\t&::v-deep .avatar.avatardiv, h2 {\n\t\t\ttext-align: center;\n\t\t\tmargin: auto;\n\t\t\tdisplay: block;\n\t\t\tpadding: 8px;\n\t\t}\n\n\t\t&::v-deep .avatar.avatardiv:not(.avatardiv--unknown) {\n\t\t\tbackground-color: var(--color-main-background) !important;\n\t\t\tbox-shadow: none;\n\t\t}\n\n\t\t&::v-deep .avatar.avatardiv {\n\t\t\t.avatardiv__user-status {\n\t\t\t\tright: 14px;\n\t\t\t\tbottom: 14px;\n\t\t\t\twidth: 34px;\n\t\t\t\theight: 34px;\n\t\t\t\tbackground-size: 28px;\n\t\t\t\tborder: none;\n\t\t\t\t// Styles when custom status icon and status text are set\n\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t\tline-height: 34px;\n\t\t\t\tfont-size: 20px;\n\t\t\t}\n\t\t}\n\n\t\t&::v-deep .avatar.interactive.avatardiv {\n\t\t\t.avatardiv__user-status {\n\t\t\t\tcursor: pointer;\n\n\t\t\t\t&:hover,\n\t\t\t\t&:focus,\n\t\t\t\t&:active {\n\t\t\t\t\tbox-shadow: 0 3px 6px var(--color-box-shadow);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&__content {\n\t\tmax-width: $profile-max-width;\n\t\tmargin: 0 auto;\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t}\n\n\t&__blocks {\n\t\tmargin: 18px 0 80px 0;\n\t\tdisplay: grid;\n\t\tgap: 16px 0;\n\t\twidth: $content-max-width;\n\n\t\tp, h3 {\n\t\t\toverflow-wrap: anywhere;\n\t\t}\n\n\t\t&-details {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tgap: 2px 0;\n\n\t\t\t.detail {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t\t\tp .map-icon {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tvertical-align: middle;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&-headline {\n\t\t\tmargin-top: 10px;\n\n\t\t\th3 {\n\t\t\t\tfont-weight: bold;\n\t\t\t\tfont-size: 20px;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t}\n\n\t\t&-biography {\n\t\t\twhite-space: pre-line;\n\t\t}\n\n\t\th3, p {\n\t\t\tcursor: text;\n\t\t}\n\n\t\t&-empty-info {\n\t\t\tmargin-top: 80px;\n\t\t\tmargin-right: 100px;\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\ttext-align: center;\n\n\t\t\th3 {\n\t\t\t\tfont-weight: bold;\n\t\t\t\tfont-size: 18px;\n\t\t\t\tmargin: 8px 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\n@media only screen and (max-width: 1024px) {\n\t.profile {\n\t\t&__header {\n\t\t\theight: 250px;\n\t\t\tposition: unset;\n\n\t\t\t&__container {\n\t\t\t\tgrid-template-columns: unset;\n\n\t\t\t\t&__displayname {\n\t\t\t\t\tmargin: 100px 20px 0px;\n\t\t\t\t\twidth: unset;\n\t\t\t\t\tdisplay: unset;\n\t\t\t\t\ttext-align: center;\n\t\t\t\t}\n\n\t\t\t\t&__edit-button {\n\t\t\t\t\twidth: fit-content;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tmargin: 30px auto;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&__content {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t&__blocks {\n\t\t\twidth: unset;\n\t\t\tmax-width: 600px;\n\t\t\tmargin: 0 auto;\n\t\t\tpadding: 20px 50px 50px 50px;\n\n\t\t\t&-empty-info {\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t}\n\n\t\t&__sidebar {\n\t\t\tmargin: unset;\n\t\t\tposition: unset;\n\t\t}\n\t}\n}\n\n.user-actions {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px 0;\n\tmargin-top: 20px;\n\n\t&__primary {\n\t\tmargin: 0 auto;\n\t}\n\n\t&__other {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tgap: 0 4px;\n\t}\n}\n\n.icon-invert {\n\t&::v-deep .action-link__icon {\n\t\tfilter: invert(1);\n\t}\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.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!./Profile.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!./Profile.vue?vue&type=style&index=0&lang=scss&\";\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!./Profile.vue?vue&type=style&index=0&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","\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!./Profile.vue?vue&type=style&index=1&id=6311e07c&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!./Profile.vue?vue&type=style&index=1&id=6311e07c&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Profile.vue?vue&type=template&id=6311e07c&scoped=true&\"\nimport script from \"./Profile.vue?vue&type=script&lang=js&\"\nexport * from \"./Profile.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Profile.vue?vue&type=style&index=0&lang=scss&\"\nimport style1 from \"./Profile.vue?vue&type=style&index=1&id=6311e07c&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 \"6311e07c\",\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:\"profile\"},[_c('div',{staticClass:\"profile__header\"},[_c('div',{staticClass:\"profile__header__container\"},[_c('div',{staticClass:\"profile__header__container__placeholder\"}),_vm._v(\" \"),_c('h2',{staticClass:\"profile__header__container__displayname\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.displayname || _vm.userId)+\"\\n\\t\\t\\t\\t\"),(_vm.isCurrentUser)?_c('a',{staticClass:\"primary profile__header__container__edit-button\",attrs:{\"href\":_vm.settingsUrl}},[_c('PencilIcon',{staticClass:\"pencil-icon\",attrs:{\"decorative\":\"\",\"title\":\"\",\"size\":16}}),_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Edit Profile'))+\"\\n\\t\\t\\t\\t\")],1):_vm._e()]),_vm._v(\" \"),(_vm.status.icon || _vm.status.message)?_c('div',{staticClass:\"profile__header__container__status-text\",class:{ interactive: _vm.isCurrentUser },on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.openStatusModal.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.status.icon)+\" \"+_vm._s(_vm.status.message)+\"\\n\\t\\t\\t\")]):_vm._e()])]),_vm._v(\" \"),_c('div',{staticClass:\"profile__content\"},[_c('div',{staticClass:\"profile__sidebar\"},[_c('Avatar',{staticClass:\"avatar\",class:{ interactive: _vm.isCurrentUser },attrs:{\"user\":_vm.userId,\"size\":180,\"show-user-status\":true,\"show-user-status-compact\":false,\"disable-menu\":true,\"disable-tooltip\":true,\"is-no-user\":!_vm.isUserAvatarVisible},nativeOn:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.openStatusModal.apply(null, arguments)}}}),_vm._v(\" \"),_c('div',{staticClass:\"user-actions\"},[(_vm.primaryAction)?_c('PrimaryActionButton',{staticClass:\"user-actions__primary\",attrs:{\"href\":_vm.primaryAction.target,\"icon\":_vm.primaryAction.icon,\"target\":_vm.primaryAction.id === 'phone' ? '_self' :'_blank'}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.primaryAction.title)+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"user-actions__other\"},[_vm._l((_vm.middleActions),function(action){return _c('Actions',{key:action.id,staticStyle:{\"background-position\":\"14px center\",\"background-size\":\"16px\",\"background-repeat\":\"no-repeat\"},style:(Object.assign({}, {backgroundImage: (\"url(\" + (action.icon) + \")\")},\n\t\t\t\t\t\t\t(_vm.colorMainBackground === '#181818' && { filter: 'invert(1)' }))),attrs:{\"default-icon\":action.icon}},[_c('ActionLink',{attrs:{\"close-after-click\":true,\"icon\":action.icon,\"href\":action.target,\"target\":action.id === 'phone' ? '_self' :'_blank'}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(action.title)+\"\\n\\t\\t\\t\\t\\t\\t\")])],1)}),_vm._v(\" \"),(_vm.otherActions)?[_c('Actions',{attrs:{\"force-menu\":true}},_vm._l((_vm.otherActions),function(action){return _c('ActionLink',{key:action.id,class:{ 'icon-invert': _vm.colorMainBackground === '#181818' },attrs:{\"close-after-click\":true,\"icon\":action.icon,\"href\":action.target,\"target\":action.id === 'phone' ? '_self' :'_blank'}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(action.title)+\"\\n\\t\\t\\t\\t\\t\\t\\t\")])}),1)]:_vm._e()],2)],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"profile__blocks\"},[(_vm.organisation || _vm.role || _vm.address)?_c('div',{staticClass:\"profile__blocks-details\"},[(_vm.organisation || _vm.role)?_c('div',{staticClass:\"detail\"},[_c('p',[_vm._v(_vm._s(_vm.organisation)+\" \"),(_vm.organisation && _vm.role)?_c('span',[_vm._v(\"•\")]):_vm._e(),_vm._v(\" \"+_vm._s(_vm.role))])]):_vm._e(),_vm._v(\" \"),(_vm.address)?_c('div',{staticClass:\"detail\"},[_c('p',[_c('MapMarkerIcon',{staticClass:\"map-icon\",attrs:{\"decorative\":\"\",\"title\":\"\",\"size\":16}}),_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.address)+\"\\n\\t\\t\\t\\t\\t\")],1)]):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.headline || _vm.biography)?[(_vm.headline)?_c('div',{staticClass:\"profile__blocks-headline\"},[_c('h3',[_vm._v(_vm._s(_vm.headline))])]):_vm._e(),_vm._v(\" \"),(_vm.biography)?_c('div',{staticClass:\"profile__blocks-biography\"},[_c('p',[_vm._v(_vm._s(_vm.biography))])]):_vm._e()]:[_c('div',{staticClass:\"profile__blocks-empty-info\"},[_c('AccountIcon',{attrs:{\"decorative\":\"\",\"title\":\"\",\"fill-color\":\"var(--color-text-maxcontrast)\",\"size\":60}}),_vm._v(\" \"),_c('h3',[_vm._v(_vm._s(_vm.emptyProfileMessage))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.t('core', 'The headline and about sections will show up here')))])],1)]],2)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\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 */\n\nimport Vue from 'vue'\nimport { getRequestToken } from '@nextcloud/auth'\nimport { translate as t } from '@nextcloud/l10n'\nimport VTooltip from 'v-tooltip'\n\nimport logger from './logger'\n\nimport Profile from './views/Profile'\n\n__webpack_nonce__ = btoa(getRequestToken())\n\nVue.use(VTooltip)\n\nVue.mixin({\n\tprops: {\n\t\tlogger,\n\t},\n\tmethods: {\n\t\tt,\n\t},\n})\n\nconst View = Vue.extend(Profile)\n\nwindow.addEventListener('DOMContentLoaded', () => {\n\tnew View().$mount('#vue-profile')\n})\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, \".profile__primary-action-button[data-v-35d5c4b6]{font-size:var(--default-font-size);font-weight:bold;width:188px;height:44px;padding:0 16px;line-height:44px;text-align:center;border-radius:var(--border-radius-pill);color:var(--color-primary-text);background-color:var(--color-primary-element);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.profile__primary-action-button .icon[data-v-35d5c4b6]{display:inline-block;vertical-align:middle;margin-bottom:2px;margin-right:4px}.profile__primary-action-button .icon.icon-invert[data-v-35d5c4b6]{filter:invert(1)}.profile__primary-action-button[data-v-35d5c4b6]:hover,.profile__primary-action-button[data-v-35d5c4b6]:focus,.profile__primary-action-button[data-v-35d5c4b6]:active{background-color:var(--color-primary-element-light)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/Profile/PrimaryActionButton.vue\"],\"names\":[],\"mappings\":\"AAsEA,iDACC,kCAAA,CACA,gBAAA,CACA,WAAA,CACA,WAAA,CACA,cAAA,CACA,gBAAA,CACA,iBAAA,CACA,uCAAA,CACA,+BAAA,CACA,6CAAA,CACA,eAAA,CACA,kBAAA,CACA,sBAAA,CAEA,uDACC,oBAAA,CACA,qBAAA,CACA,iBAAA,CACA,gBAAA,CAEA,mEACC,gBAAA,CAIF,sKAGC,mDAAA\",\"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.profile__primary-action-button {\\n\\tfont-size: var(--default-font-size);\\n\\tfont-weight: bold;\\n\\twidth: 188px;\\n\\theight: 44px;\\n\\tpadding: 0 16px;\\n\\tline-height: 44px;\\n\\ttext-align: center;\\n\\tborder-radius: var(--border-radius-pill);\\n\\tcolor: var(--color-primary-text);\\n\\tbackground-color: var(--color-primary-element);\\n\\toverflow: hidden;\\n\\twhite-space: nowrap;\\n\\ttext-overflow: ellipsis;\\n\\n\\t.icon {\\n\\t\\tdisplay: inline-block;\\n\\t\\tvertical-align: middle;\\n\\t\\tmargin-bottom: 2px;\\n\\t\\tmargin-right: 4px;\\n\\n\\t\\t&.icon-invert {\\n\\t\\t\\tfilter: invert(1);\\n\\t\\t}\\n\\t}\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\tbackground-color: var(--color-primary-element-light);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"#header{background-color:rgba(0,0,0,0) !important;background-image:none !important}#content{padding-top:0px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/Profile.vue\"],\"names\":[],\"mappings\":\"AAqSA,QACC,yCAAA,CACA,gCAAA,CAGD,SACC,eAAA\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n// Override header styles\\n#header {\\n\\tbackground-color: transparent !important;\\n\\tbackground-image: none !important;\\n}\\n\\n#content {\\n\\tpadding-top: 0px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".profile[data-v-6311e07c]{width:100%}.profile__header[data-v-6311e07c]{position:sticky;height:190px;top:-40px}.profile__header__container[data-v-6311e07c]{align-self:flex-end;width:100%;max-width:1024px;margin:0 auto;display:grid;grid-template-rows:max-content max-content;grid-template-columns:240px 1fr;justify-content:center}.profile__header__container__placeholder[data-v-6311e07c]{grid-row:1/3}.profile__header__container__displayname[data-v-6311e07c],.profile__header__container__status-text[data-v-6311e07c]{color:var(--color-primary-text)}.profile__header__container__displayname[data-v-6311e07c]{width:640px;height:45px;margin-top:128px;margin-bottom:0;font-size:30px;display:flex;align-items:center;cursor:text}.profile__header__container__displayname[data-v-6311e07c]:not(:last-child){margin-top:100px;margin-bottom:4px}.profile__header__container__edit-button[data-v-6311e07c]{border:none;margin-left:18px;margin-top:2px;color:var(--color-primary-element);background-color:var(--color-primary-text);box-shadow:0 0 0 2px var(--color-primary-text);border-radius:var(--border-radius-pill);padding:0 18px;font-size:var(--default-font-size);height:44px;line-height:44px;font-weight:bold}.profile__header__container__edit-button[data-v-6311e07c]:hover,.profile__header__container__edit-button[data-v-6311e07c]:focus,.profile__header__container__edit-button[data-v-6311e07c]:active{color:var(--color-primary-text);background-color:var(--color-primary-element-light)}.profile__header__container__edit-button .pencil-icon[data-v-6311e07c]{display:inline-block;vertical-align:middle;margin-top:2px}.profile__header__container__status-text[data-v-6311e07c]{width:max-content;max-width:640px;padding:5px 10px;margin-left:-12px;margin-top:2px}.profile__header__container__status-text.interactive[data-v-6311e07c]{cursor:pointer}.profile__header__container__status-text.interactive[data-v-6311e07c]:hover,.profile__header__container__status-text.interactive[data-v-6311e07c]:focus,.profile__header__container__status-text.interactive[data-v-6311e07c]:active{background-color:var(--color-main-background);color:var(--color-main-text);border-radius:var(--border-radius-pill);font-weight:bold;box-shadow:0 3px 6px var(--color-box-shadow)}.profile__sidebar[data-v-6311e07c]{position:sticky;top:var(--header-height);align-self:flex-start;padding-top:20px;min-width:220px;margin:-150px 20px 0 0}.profile__sidebar[data-v-6311e07c] .avatar.avatardiv,.profile__sidebar h2[data-v-6311e07c]{text-align:center;margin:auto;display:block;padding:8px}.profile__sidebar[data-v-6311e07c] .avatar.avatardiv:not(.avatardiv--unknown){background-color:var(--color-main-background) !important;box-shadow:none}.profile__sidebar[data-v-6311e07c] .avatar.avatardiv .avatardiv__user-status{right:14px;bottom:14px;width:34px;height:34px;background-size:28px;border:none;background-color:var(--color-main-background);line-height:34px;font-size:20px}.profile__sidebar[data-v-6311e07c] .avatar.interactive.avatardiv .avatardiv__user-status{cursor:pointer}.profile__sidebar[data-v-6311e07c] .avatar.interactive.avatardiv .avatardiv__user-status:hover,.profile__sidebar[data-v-6311e07c] .avatar.interactive.avatardiv .avatardiv__user-status:focus,.profile__sidebar[data-v-6311e07c] .avatar.interactive.avatardiv .avatardiv__user-status:active{box-shadow:0 3px 6px var(--color-box-shadow)}.profile__content[data-v-6311e07c]{max-width:1024px;margin:0 auto;display:flex;width:100%}.profile__blocks[data-v-6311e07c]{margin:18px 0 80px 0;display:grid;gap:16px 0;width:640px}.profile__blocks p[data-v-6311e07c],.profile__blocks h3[data-v-6311e07c]{overflow-wrap:anywhere}.profile__blocks-details[data-v-6311e07c]{display:flex;flex-direction:column;gap:2px 0}.profile__blocks-details .detail[data-v-6311e07c]{display:inline-block;color:var(--color-text-maxcontrast)}.profile__blocks-details .detail p .map-icon[data-v-6311e07c]{display:inline-block;vertical-align:middle}.profile__blocks-headline[data-v-6311e07c]{margin-top:10px}.profile__blocks-headline h3[data-v-6311e07c]{font-weight:bold;font-size:20px;margin:0}.profile__blocks-biography[data-v-6311e07c]{white-space:pre-line}.profile__blocks h3[data-v-6311e07c],.profile__blocks p[data-v-6311e07c]{cursor:text}.profile__blocks-empty-info[data-v-6311e07c]{margin-top:80px;margin-right:100px;display:flex;flex-direction:column;text-align:center}.profile__blocks-empty-info h3[data-v-6311e07c]{font-weight:bold;font-size:18px;margin:8px 0}@media only screen and (max-width: 1024px){.profile__header[data-v-6311e07c]{height:250px;position:unset}.profile__header__container[data-v-6311e07c]{grid-template-columns:unset}.profile__header__container__displayname[data-v-6311e07c]{margin:100px 20px 0px;width:unset;display:unset;text-align:center}.profile__header__container__edit-button[data-v-6311e07c]{width:fit-content;display:block;margin:30px auto}.profile__content[data-v-6311e07c]{display:block}.profile__blocks[data-v-6311e07c]{width:unset;max-width:600px;margin:0 auto;padding:20px 50px 50px 50px}.profile__blocks-empty-info[data-v-6311e07c]{margin:0}.profile__sidebar[data-v-6311e07c]{margin:unset;position:unset}}.user-actions[data-v-6311e07c]{display:flex;flex-direction:column;gap:8px 0;margin-top:20px}.user-actions__primary[data-v-6311e07c]{margin:0 auto}.user-actions__other[data-v-6311e07c]{display:flex;justify-content:center;gap:0 4px}.icon-invert[data-v-6311e07c] .action-link__icon{filter:invert(1)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/Profile.vue\"],\"names\":[],\"mappings\":\"AAmTA,0BACC,UAAA,CAEA,kCACC,eAAA,CACA,YAAA,CACA,SAAA,CAEA,6CACC,mBAAA,CACA,UAAA,CACA,gBAdiB,CAejB,aAAA,CACA,YAAA,CACA,0CAAA,CACA,+BAAA,CACA,sBAAA,CAEA,0DACC,YAAA,CAGD,oHACC,+BAAA,CAGD,0DACC,WA7BgB,CA8BhB,WAAA,CACA,gBAAA,CAEA,eAAA,CACA,cAAA,CACA,YAAA,CACA,kBAAA,CACA,WAAA,CAEA,2EACC,gBAAA,CACA,iBAAA,CAIF,0DACC,WAAA,CACA,gBAAA,CACA,cAAA,CACA,kCAAA,CACA,0CAAA,CACA,8CAAA,CACA,uCAAA,CACA,cAAA,CACA,kCAAA,CACA,WAAA,CACA,gBAAA,CACA,gBAAA,CAEA,iMAGC,+BAAA,CACA,mDAAA,CAGD,uEACC,oBAAA,CACA,qBAAA,CACA,cAAA,CAIF,0DACC,iBAAA,CACA,eA3EgB,CA4EhB,gBAAA,CACA,iBAAA,CACA,cAAA,CAEA,sEACC,cAAA,CAEA,qOAGC,6CAAA,CACA,4BAAA,CACA,uCAAA,CACA,gBAAA,CACA,4CAAA,CAOL,mCACC,eAAA,CACA,wBAAA,CACA,qBAAA,CACA,gBAAA,CACA,eAAA,CACA,sBAAA,CAGA,2FACC,iBAAA,CACA,WAAA,CACA,aAAA,CACA,WAAA,CAGD,8EACC,wDAAA,CACA,eAAA,CAIA,6EACC,UAAA,CACA,WAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,WAAA,CAEA,6CAAA,CACA,gBAAA,CACA,cAAA,CAKD,yFACC,cAAA,CAEA,8RAGC,4CAAA,CAMJ,mCACC,gBApJkB,CAqJlB,aAAA,CACA,YAAA,CACA,UAAA,CAGD,kCACC,oBAAA,CACA,YAAA,CACA,UAAA,CACA,WA7JkB,CA+JlB,yEACC,sBAAA,CAGD,0CACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,kDACC,oBAAA,CACA,mCAAA,CAEA,8DACC,oBAAA,CACA,qBAAA,CAKH,2CACC,eAAA,CAEA,8CACC,gBAAA,CACA,cAAA,CACA,QAAA,CAIF,4CACC,oBAAA,CAGD,yEACC,WAAA,CAGD,6CACC,eAAA,CACA,kBAAA,CACA,YAAA,CACA,qBAAA,CACA,iBAAA,CAEA,gDACC,gBAAA,CACA,cAAA,CACA,YAAA,CAMJ,2CAEE,kCACC,YAAA,CACA,cAAA,CAEA,6CACC,2BAAA,CAEA,0DACC,qBAAA,CACA,WAAA,CACA,aAAA,CACA,iBAAA,CAGD,0DACC,iBAAA,CACA,aAAA,CACA,gBAAA,CAKH,mCACC,aAAA,CAGD,kCACC,WAAA,CACA,eAAA,CACA,aAAA,CACA,2BAAA,CAEA,6CACC,QAAA,CAIF,mCACC,YAAA,CACA,cAAA,CAAA,CAKH,+BACC,YAAA,CACA,qBAAA,CACA,SAAA,CACA,eAAA,CAEA,wCACC,aAAA,CAGD,sCACC,YAAA,CACA,sBAAA,CACA,SAAA,CAKD,iDACC,gBAAA\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n$profile-max-width: 1024px;\\n$content-max-width: 640px;\\n\\n.profile {\\n\\twidth: 100%;\\n\\n\\t&__header {\\n\\t\\tposition: sticky;\\n\\t\\theight: 190px;\\n\\t\\ttop: -40px;\\n\\n\\t\\t&__container {\\n\\t\\t\\talign-self: flex-end;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tmax-width: $profile-max-width;\\n\\t\\t\\tmargin: 0 auto;\\n\\t\\t\\tdisplay: grid;\\n\\t\\t\\tgrid-template-rows: max-content max-content;\\n\\t\\t\\tgrid-template-columns: 240px 1fr;\\n\\t\\t\\tjustify-content: center;\\n\\n\\t\\t\\t&__placeholder {\\n\\t\\t\\t\\tgrid-row: 1 / 3;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&__displayname, &__status-text {\\n\\t\\t\\t\\tcolor: var(--color-primary-text);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&__displayname {\\n\\t\\t\\t\\twidth: $content-max-width;\\n\\t\\t\\t\\theight: 45px;\\n\\t\\t\\t\\tmargin-top: 128px;\\n\\t\\t\\t\\t// Override the global style declaration\\n\\t\\t\\t\\tmargin-bottom: 0;\\n\\t\\t\\t\\tfont-size: 30px;\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\talign-items: center;\\n\\t\\t\\t\\tcursor: text;\\n\\n\\t\\t\\t\\t&:not(:last-child) {\\n\\t\\t\\t\\t\\tmargin-top: 100px;\\n\\t\\t\\t\\t\\tmargin-bottom: 4px;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&__edit-button {\\n\\t\\t\\t\\tborder: none;\\n\\t\\t\\t\\tmargin-left: 18px;\\n\\t\\t\\t\\tmargin-top: 2px;\\n\\t\\t\\t\\tcolor: var(--color-primary-element);\\n\\t\\t\\t\\tbackground-color: var(--color-primary-text);\\n\\t\\t\\t\\tbox-shadow: 0 0 0 2px var(--color-primary-text);\\n\\t\\t\\t\\tborder-radius: var(--border-radius-pill);\\n\\t\\t\\t\\tpadding: 0 18px;\\n\\t\\t\\t\\tfont-size: var(--default-font-size);\\n\\t\\t\\t\\theight: 44px;\\n\\t\\t\\t\\tline-height: 44px;\\n\\t\\t\\t\\tfont-weight: bold;\\n\\n\\t\\t\\t\\t&:hover,\\n\\t\\t\\t\\t&:focus,\\n\\t\\t\\t\\t&:active {\\n\\t\\t\\t\\t\\tcolor: var(--color-primary-text);\\n\\t\\t\\t\\t\\tbackground-color: var(--color-primary-element-light);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t.pencil-icon {\\n\\t\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t\\t\\tvertical-align: middle;\\n\\t\\t\\t\\t\\tmargin-top: 2px;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&__status-text {\\n\\t\\t\\t\\twidth: max-content;\\n\\t\\t\\t\\tmax-width: $content-max-width;\\n\\t\\t\\t\\tpadding: 5px 10px;\\n\\t\\t\\t\\tmargin-left: -12px;\\n\\t\\t\\t\\tmargin-top: 2px;\\n\\n\\t\\t\\t\\t&.interactive {\\n\\t\\t\\t\\t\\tcursor: pointer;\\n\\n\\t\\t\\t\\t\\t&:hover,\\n\\t\\t\\t\\t\\t&:focus,\\n\\t\\t\\t\\t\\t&:active {\\n\\t\\t\\t\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t\\t\\t\\tborder-radius: var(--border-radius-pill);\\n\\t\\t\\t\\t\\t\\tfont-weight: bold;\\n\\t\\t\\t\\t\\t\\tbox-shadow: 0 3px 6px var(--color-box-shadow);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__sidebar {\\n\\t\\tposition: sticky;\\n\\t\\ttop: var(--header-height);\\n\\t\\talign-self: flex-start;\\n\\t\\tpadding-top: 20px;\\n\\t\\tmin-width: 220px;\\n\\t\\tmargin: -150px 20px 0 0;\\n\\n\\t\\t// Specificity hack is needed to override Avatar component styles\\n\\t\\t&::v-deep .avatar.avatardiv, h2 {\\n\\t\\t\\ttext-align: center;\\n\\t\\t\\tmargin: auto;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tpadding: 8px;\\n\\t\\t}\\n\\n\\t\\t&::v-deep .avatar.avatardiv:not(.avatardiv--unknown) {\\n\\t\\t\\tbackground-color: var(--color-main-background) !important;\\n\\t\\t\\tbox-shadow: none;\\n\\t\\t}\\n\\n\\t\\t&::v-deep .avatar.avatardiv {\\n\\t\\t\\t.avatardiv__user-status {\\n\\t\\t\\t\\tright: 14px;\\n\\t\\t\\t\\tbottom: 14px;\\n\\t\\t\\t\\twidth: 34px;\\n\\t\\t\\t\\theight: 34px;\\n\\t\\t\\t\\tbackground-size: 28px;\\n\\t\\t\\t\\tborder: none;\\n\\t\\t\\t\\t// Styles when custom status icon and status text are set\\n\\t\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\t\\tline-height: 34px;\\n\\t\\t\\t\\tfont-size: 20px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&::v-deep .avatar.interactive.avatardiv {\\n\\t\\t\\t.avatardiv__user-status {\\n\\t\\t\\t\\tcursor: pointer;\\n\\n\\t\\t\\t\\t&:hover,\\n\\t\\t\\t\\t&:focus,\\n\\t\\t\\t\\t&:active {\\n\\t\\t\\t\\t\\tbox-shadow: 0 3px 6px var(--color-box-shadow);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__content {\\n\\t\\tmax-width: $profile-max-width;\\n\\t\\tmargin: 0 auto;\\n\\t\\tdisplay: flex;\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t&__blocks {\\n\\t\\tmargin: 18px 0 80px 0;\\n\\t\\tdisplay: grid;\\n\\t\\tgap: 16px 0;\\n\\t\\twidth: $content-max-width;\\n\\n\\t\\tp, h3 {\\n\\t\\t\\toverflow-wrap: anywhere;\\n\\t\\t}\\n\\n\\t\\t&-details {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\tgap: 2px 0;\\n\\n\\t\\t\\t.detail {\\n\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\n\\t\\t\\t\\tp .map-icon {\\n\\t\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t\\t\\tvertical-align: middle;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&-headline {\\n\\t\\t\\tmargin-top: 10px;\\n\\n\\t\\t\\th3 {\\n\\t\\t\\t\\tfont-weight: bold;\\n\\t\\t\\t\\tfont-size: 20px;\\n\\t\\t\\t\\tmargin: 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&-biography {\\n\\t\\t\\twhite-space: pre-line;\\n\\t\\t}\\n\\n\\t\\th3, p {\\n\\t\\t\\tcursor: text;\\n\\t\\t}\\n\\n\\t\\t&-empty-info {\\n\\t\\t\\tmargin-top: 80px;\\n\\t\\t\\tmargin-right: 100px;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\ttext-align: center;\\n\\n\\t\\t\\th3 {\\n\\t\\t\\t\\tfont-weight: bold;\\n\\t\\t\\t\\tfont-size: 18px;\\n\\t\\t\\t\\tmargin: 8px 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\n@media only screen and (max-width: 1024px) {\\n\\t.profile {\\n\\t\\t&__header {\\n\\t\\t\\theight: 250px;\\n\\t\\t\\tposition: unset;\\n\\n\\t\\t\\t&__container {\\n\\t\\t\\t\\tgrid-template-columns: unset;\\n\\n\\t\\t\\t\\t&__displayname {\\n\\t\\t\\t\\t\\tmargin: 100px 20px 0px;\\n\\t\\t\\t\\t\\twidth: unset;\\n\\t\\t\\t\\t\\tdisplay: unset;\\n\\t\\t\\t\\t\\ttext-align: center;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t&__edit-button {\\n\\t\\t\\t\\t\\twidth: fit-content;\\n\\t\\t\\t\\t\\tdisplay: block;\\n\\t\\t\\t\\t\\tmargin: 30px auto;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&__content {\\n\\t\\t\\tdisplay: block;\\n\\t\\t}\\n\\n\\t\\t&__blocks {\\n\\t\\t\\twidth: unset;\\n\\t\\t\\tmax-width: 600px;\\n\\t\\t\\tmargin: 0 auto;\\n\\t\\t\\tpadding: 20px 50px 50px 50px;\\n\\n\\t\\t\\t&-empty-info {\\n\\t\\t\\t\\tmargin: 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&__sidebar {\\n\\t\\t\\tmargin: unset;\\n\\t\\t\\tposition: unset;\\n\\t\\t}\\n\\t}\\n}\\n\\n.user-actions {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 8px 0;\\n\\tmargin-top: 20px;\\n\\n\\t&__primary {\\n\\t\\tmargin: 0 auto;\\n\\t}\\n\\n\\t&__other {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: center;\\n\\t\\tgap: 0 4px;\\n\\t}\\n}\\n\\n.icon-invert {\\n\\t&::v-deep .action-link__icon {\\n\\t\\tfilter: invert(1);\\n\\t}\\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 = 9651;","__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\t9651: 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));","__webpack_require__.nc = undefined;","// 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__(8948); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","user","getCurrentUser","getLoggerBuilder","setApp","build","setUid","uid","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_c","_self","_g","staticClass","class","disabled","attrs","href","target","$listeners","icon","colorPrimaryText","_v","_t","_s","displayname","userId","settingsUrl","t","_e","status","message","interactive","isCurrentUser","on","$event","preventDefault","stopPropagation","openStatusModal","apply","arguments","isUserAvatarVisible","nativeOn","primaryAction","id","title","_l","action","key","staticStyle","style","Object","assign","backgroundImage","colorMainBackground","filter","organisation","role","address","headline","biography","emptyProfileMessage","__webpack_nonce__","btoa","getRequestToken","Vue","VTooltip","props","logger","methods","View","Profile","window","addEventListener","$mount","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","children","b","document","baseURI","self","location","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/core-recommendedapps.js b/dist/core-recommendedapps.js
index 182a4d6964f..5fa98ca32b0 100644
--- a/dist/core-recommendedapps.js
+++ b/dist/core-recommendedapps.js
@@ -1,3 +1,3 @@
/*! For license information please see core-recommendedapps.js.LICENSE.txt */
-!function(){"use strict";var n,t={12996:function(n,t,e){var a,o=e(22200),r=e(9944),i=e(20144),s=e(17499),c=null===(a=(0,o.getCurrentUser)())?(0,s.IY)().setApp("core").build():(0,s.IY)().setApp("core").setUid(a.uid).build(),l=e(4820),p=e(79753),d=e(16453),u=e(63560),f=e(93379),m=e.n(f),g=e(7795),A=e.n(g),h=e(90569),v=e.n(h),b=e(3565),C=e.n(b),x=e(19216),_=e.n(x),w=e(44589),y=e.n(w),k=e(54887),I={};I.styleTagTransform=y(),I.setAttributes=C(),I.insert=v().bind(null,"head"),I.domAPI=A(),I.insertStyleElement=_(),m()(k.Z,I),k.Z&&k.Z.locals&&k.Z.locals;var P=e(51900),B=(0,P.Z)({name:"InstallButton"},(function(){var n=this,t=n.$createElement;return(n._self._c||t)("button",n._g({staticClass:"primary",attrs:{autofocus:!0}},n.$listeners),[n._v("\n\t"+n._s(n.t("core","Install recommended apps"))+"\n")])}),[],!1,null,"3933c599",null).exports;function O(n,t,e,a,o,r,i){try{var s=n[r](i),c=s.value}catch(n){return void e(n)}s.done?t(c):Promise.resolve(c).then(a,o)}var E={calendar:{description:(0,r.translate)("core","Schedule work & meetings, synced with all your devices."),icon:(0,p.imagePath)("core","places/calendar.svg")},contacts:{description:(0,r.translate)("core","Keep your colleagues and friends in one place without leaking their private info."),icon:(0,p.imagePath)("core","places/contacts.svg")},mail:{description:(0,r.translate)("core","Simple email app nicely integrated with Files, Contacts and Calendar."),icon:(0,p.imagePath)("core","actions/mail.svg")},spreed:{description:(0,r.translate)("core","Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps."),icon:(0,p.imagePath)("core","apps/spreed.svg")},richdocuments:{description:(0,r.translate)("core","Collaboratively edit office documents."),icon:(0,p.imagePath)("core","apps/richdocuments.svg")},richdocumentscode:{description:(0,r.translate)("core","Local document editing back-end used by the Collabora Online app."),icon:(0,p.imagePath)("core","apps/richdocumentscode.svg")}},Z=Object.keys(E),D=(0,d.loadState)("core","defaultPageUrl"),j={name:"RecommendedApps",components:{InstallButton:B},data:function(){return{showInstallButton:!1,installingApps:!1,loadingApps:!0,loadingAppsError:!1,apps:[],defaultPageUrl:D}},computed:{recommendedApps:function(){return this.apps.filter((function(n){return Z.includes(n.id)}))}},mounted:function(){var n,t=this;return(n=regeneratorRuntime.mark((function n(){var e,a;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,l.default.get((0,p.generateUrl)("settings/apps/list"));case 3:e=n.sent,a=e.data,c.info("".concat(a.apps.length," apps fetched")),t.apps=a.apps.map((function(n){return Object.assign(n,{loading:!1,installationError:!1})})),c.debug("".concat(t.recommendedApps.length," recommended apps found"),{apps:t.recommendedApps}),t.showInstallButton=!0,n.next=15;break;case 11:n.prev=11,n.t0=n.catch(0),c.error("could not fetch app list",{error:n.t0}),t.loadingAppsError=!0;case 15:return n.prev=15,t.loadingApps=!1,n.finish(15);case 18:case"end":return n.stop()}}),n,null,[[0,11,15,18]])})),function(){var t=this,e=arguments;return new Promise((function(a,o){var r=n.apply(t,e);function i(n){O(r,a,o,i,s,"next",n)}function s(n){O(r,a,o,i,s,"throw",n)}i(void 0)}))})()},methods:{installApps:function(){this.showInstallButton=!1,this.installingApps=!0;var n=(0,u.Z)(1),t=this.recommendedApps.filter((function(n){return!n.active&&n.isCompatible&&n.canInstall})).map((function(t){return n((function(){return c.info("installing ".concat(t.id)),t.loading=!0,l.default.post((0,p.generateUrl)("settings/apps/enable"),{appIds:[t.id],groups:[]}).catch((function(n){c.error("could not install ".concat(t.id),{error:n}),t.installationError=!0})).then((function(){c.info("installed ".concat(t.id)),t.loading=!1}))}))}));c.debug("installing ".concat(t.length," recommended apps")),Promise.all(t).then((function(){c.info("all recommended apps installed, redirecting …"),window.location=D})).catch((function(n){return c.error("could not install recommended apps",{error:n})}))},customIcon:function(n){return n in E&&E[n].icon?E[n].icon:(c.warn("no app icon for recommended app ".concat(n)),(0,p.imagePath)("core","places/default-app-icon.svg"))},customDescription:function(n){return n in E?E[n].description:(c.warn("no app description for recommended app ".concat(n)),"")}}},S=j,T=e(12135),U={};U.styleTagTransform=y(),U.setAttributes=C(),U.insert=v().bind(null,"head"),U.domAPI=A(),U.insertStyleElement=_(),m()(T.Z,U),T.Z&&T.Z.locals&&T.Z.locals;var R=(0,P.Z)(S,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"body-login-container"},[e("h2",[n._v(n._s(n.t("core","Recommended apps")))]),n._v(" "),n.loadingApps?e("p",{staticClass:"loading text-center"},[n._v("\n\t\t"+n._s(n.t("core","Loading apps …"))+"\n\t")]):n.loadingAppsError?e("p",{staticClass:"loading-error text-center"},[n._v("\n\t\t"+n._s(n.t("core","Could not fetch list of apps from the App Store."))+"\n\t")]):n.installingApps?e("p",{staticClass:"text-center"},[n._v("\n\t\t"+n._s(n.t("core","Installing apps …"))+"\n\t")]):n._e(),n._v(" "),n._l(n.recommendedApps,(function(t){return e("div",{key:t.id,staticClass:"app"},[e("img",{attrs:{src:n.customIcon(t.id),alt:""}}),n._v(" "),e("div",{staticClass:"info"},[e("h3",[n._v("\n\t\t\t\t"+n._s(t.name)+"\n\t\t\t\t"),t.loading?e("span",{staticClass:"icon icon-loading-small-dark"}):t.active?e("span",{staticClass:"icon icon-checkmark-white"}):n._e()]),n._v(" "),e("p",{domProps:{innerHTML:n._s(n.customDescription(t.id))}}),n._v(" "),t.installationError?e("p",[e("strong",[n._v(n._s(n.t("core","App download or installation failed")))])]):t.isCompatible?t.canInstall?n._e():e("p",[e("strong",[n._v(n._s(n.t("core","Cannot install this app")))])]):e("p",[e("strong",[n._v(n._s(n.t("core","Cannot install this app because it is not compatible")))])])])])})),n._v(" "),n.showInstallButton?e("InstallButton",{on:{click:function(t){return t.stopPropagation(),t.preventDefault(),n.installApps.apply(null,arguments)}}}):n._e(),n._v(" "),e("p",{staticClass:"text-center"},[e("a",{attrs:{href:n.defaultPageUrl}},[n._v(n._s(n.t("core","Cancel")))])])],2)}),[],!1,null,"cbe02e2a",null),Y=R.exports;e.nc=btoa((0,o.getRequestToken)()),i.default.mixin({methods:{t:r.translate}}),(new(i.default.extend(Y))).$mount("#recommended-apps"),c.debug("recommended apps view rendered")},54887:function(n,t,e){var a=e(87537),o=e.n(a),r=e(23645),i=e.n(r)()(o());i.push([n.id,"button[data-v-3933c599]{margin:24px auto 10px auto;padding:10px 20px;font-size:20px}","",{version:3,sources:["webpack://./core/src/components/setup/InstallButton.vue"],names:[],mappings:"AAqCA,wBACC,0BAAA,CACA,iBAAA,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\nbutton {\n\tmargin: 24px auto 10px auto;\n\tpadding: 10px 20px;\n\tfont-size: 20px;\n}\n"],sourceRoot:""}]),t.Z=i},12135:function(n,t,e){var a=e(87537),o=e.n(a),r=e(23645),i=e.n(r)()(o());i.push([n.id,"p.loading[data-v-cbe02e2a],p.loading-error[data-v-cbe02e2a]{height:100px}p[data-v-cbe02e2a]:last-child{margin-top:10px}.text-center[data-v-cbe02e2a]{text-align:center}.app[data-v-cbe02e2a]{display:flex;flex-direction:row}.app img[data-v-cbe02e2a]{height:50px;width:50px;filter:invert(1)}.app img[data-v-cbe02e2a],.app .info[data-v-cbe02e2a]{padding:12px}.app .info h3[data-v-cbe02e2a],.app .info p[data-v-cbe02e2a]{text-align:left}.app .info h3[data-v-cbe02e2a]{color:#fff;margin-top:0}.app .info h3>span.icon[data-v-cbe02e2a]{display:inline-block}","",{version:3,sources:["webpack://./core/src/components/setup/RecommendedApps.vue"],names:[],mappings:"AAoMC,4DAEC,YAAA,CAGD,8BACC,eAAA,CAIF,8BACC,iBAAA,CAGD,sBACC,YAAA,CACA,kBAAA,CAEA,0BACC,WAAA,CACA,UAAA,CACA,gBAAA,CAGD,sDACC,YAAA,CAIA,6DACC,eAAA,CAGD,+BACC,UAAA,CACA,YAAA,CAGD,yCACC,oBAAA",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\n\n.body-login-container {\n\n}\n\np {\n\t&.loading,\n\t&.loading-error {\n\t\theight: 100px;\n\t}\n\n\t&:last-child {\n\t\tmargin-top: 10px;\n\t}\n}\n\n.text-center {\n\ttext-align: center;\n}\n\n.app {\n\tdisplay: flex;\n\tflex-direction: row;\n\n\timg {\n\t\theight: 50px;\n\t\twidth: 50px;\n\t\tfilter: invert(1);\n\t}\n\n\timg, .info {\n\t\tpadding: 12px;\n\t}\n\n\t.info {\n\t\th3, p {\n\t\t\ttext-align: left;\n\t\t}\n\n\t\th3 {\n\t\t\tcolor: #fff;\n\t\t\tmargin-top: 0;\n\t\t}\n\n\t\th3 > span.icon {\n\t\t\tdisplay: inline-block;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),t.Z=i}},e={};function a(n){var o=e[n];if(void 0!==o)return o.exports;var r=e[n]={id:n,loaded:!1,exports:{}};return t[n].call(r.exports,r,r.exports,a),r.loaded=!0,r.exports}a.m=t,a.amdD=function(){throw new Error("define cannot be used indirect")},a.amdO={},n=[],a.O=function(t,e,o,r){if(!e){var i=1/0;for(p=0;p<n.length;p++){e=n[p][0],o=n[p][1],r=n[p][2];for(var s=!0,c=0;c<e.length;c++)(!1&r||i>=r)&&Object.keys(a.O).every((function(n){return a.O[n](e[c])}))?e.splice(c--,1):(s=!1,r<i&&(i=r));if(s){n.splice(p--,1);var l=o();void 0!==l&&(t=l)}}return t}r=r||0;for(var p=n.length;p>0&&n[p-1][2]>r;p--)n[p]=n[p-1];n[p]=[e,o,r]},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=1033,function(){a.b=document.baseURI||self.location.href;var n={1033:0};a.O.j=function(t){return 0===n[t]};var t=function(t,e){var o,r,i=e[0],s=e[1],c=e[2],l=0;if(i.some((function(t){return 0!==n[t]}))){for(o in s)a.o(s,o)&&(a.m[o]=s[o]);if(c)var p=c(a)}for(t&&t(e);l<i.length;l++)r=i[l],a.o(n,r)&&n[r]&&n[r][0](),n[r]=0;return a.O(p)},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(12996)}));o=a.O(o)}();
-//# sourceMappingURL=core-recommendedapps.js.map?v=656250c3c5524055183e \ No newline at end of file
+!function(){"use strict";var n,t={12996:function(n,t,e){var a,o=e(22200),r=e(9944),i=e(20144),s=e(17499),c=null===(a=(0,o.getCurrentUser)())?(0,s.IY)().setApp("core").build():(0,s.IY)().setApp("core").setUid(a.uid).build(),l=e(4820),p=e(79753),d=e(16453),u=e(63560),f=e(93379),m=e.n(f),g=e(7795),A=e.n(g),h=e(90569),v=e.n(h),b=e(3565),C=e.n(b),x=e(19216),_=e.n(x),w=e(44589),y=e.n(w),k=e(54887),I={};I.styleTagTransform=y(),I.setAttributes=C(),I.insert=v().bind(null,"head"),I.domAPI=A(),I.insertStyleElement=_(),m()(k.Z,I),k.Z&&k.Z.locals&&k.Z.locals;var P=e(51900),B=(0,P.Z)({name:"InstallButton"},(function(){var n=this,t=n.$createElement;return(n._self._c||t)("button",n._g({staticClass:"primary",attrs:{autofocus:!0}},n.$listeners),[n._v("\n\t"+n._s(n.t("core","Install recommended apps"))+"\n")])}),[],!1,null,"3933c599",null).exports;function O(n,t,e,a,o,r,i){try{var s=n[r](i),c=s.value}catch(n){return void e(n)}s.done?t(c):Promise.resolve(c).then(a,o)}var E={calendar:{description:(0,r.translate)("core","Schedule work & meetings, synced with all your devices."),icon:(0,p.imagePath)("core","places/calendar.svg")},contacts:{description:(0,r.translate)("core","Keep your colleagues and friends in one place without leaking their private info."),icon:(0,p.imagePath)("core","places/contacts.svg")},mail:{description:(0,r.translate)("core","Simple email app nicely integrated with Files, Contacts and Calendar."),icon:(0,p.imagePath)("core","actions/mail.svg")},spreed:{description:(0,r.translate)("core","Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps."),icon:(0,p.imagePath)("core","apps/spreed.svg")},richdocuments:{description:(0,r.translate)("core","Collaboratively edit office documents."),icon:(0,p.imagePath)("core","apps/richdocuments.svg")},richdocumentscode:{description:(0,r.translate)("core","Local document editing back-end used by the Collabora Online app."),icon:(0,p.imagePath)("core","apps/richdocumentscode.svg")}},Z=Object.keys(E),D=(0,d.loadState)("core","defaultPageUrl"),j={name:"RecommendedApps",components:{InstallButton:B},data:function(){return{showInstallButton:!1,installingApps:!1,loadingApps:!0,loadingAppsError:!1,apps:[],defaultPageUrl:D}},computed:{recommendedApps:function(){return this.apps.filter((function(n){return Z.includes(n.id)}))}},mounted:function(){var n,t=this;return(n=regeneratorRuntime.mark((function n(){var e,a;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,l.default.get((0,p.generateUrl)("settings/apps/list"));case 3:e=n.sent,a=e.data,c.info("".concat(a.apps.length," apps fetched")),t.apps=a.apps.map((function(n){return Object.assign(n,{loading:!1,installationError:!1})})),c.debug("".concat(t.recommendedApps.length," recommended apps found"),{apps:t.recommendedApps}),t.showInstallButton=!0,n.next=15;break;case 11:n.prev=11,n.t0=n.catch(0),c.error("could not fetch app list",{error:n.t0}),t.loadingAppsError=!0;case 15:return n.prev=15,t.loadingApps=!1,n.finish(15);case 18:case"end":return n.stop()}}),n,null,[[0,11,15,18]])})),function(){var t=this,e=arguments;return new Promise((function(a,o){var r=n.apply(t,e);function i(n){O(r,a,o,i,s,"next",n)}function s(n){O(r,a,o,i,s,"throw",n)}i(void 0)}))})()},methods:{installApps:function(){this.showInstallButton=!1,this.installingApps=!0;var n=(0,u.Z)(1),t=this.recommendedApps.filter((function(n){return!n.active&&n.isCompatible&&n.canInstall})).map((function(t){return n((function(){return c.info("installing ".concat(t.id)),t.loading=!0,l.default.post((0,p.generateUrl)("settings/apps/enable"),{appIds:[t.id],groups:[]}).catch((function(n){c.error("could not install ".concat(t.id),{error:n}),t.installationError=!0})).then((function(){c.info("installed ".concat(t.id)),t.loading=!1}))}))}));c.debug("installing ".concat(t.length," recommended apps")),Promise.all(t).then((function(){c.info("all recommended apps installed, redirecting …"),window.location=D})).catch((function(n){return c.error("could not install recommended apps",{error:n})}))},customIcon:function(n){return n in E&&E[n].icon?E[n].icon:(c.warn("no app icon for recommended app ".concat(n)),(0,p.imagePath)("core","places/default-app-icon.svg"))},customDescription:function(n){return n in E?E[n].description:(c.warn("no app description for recommended app ".concat(n)),"")}}},S=j,T=e(12135),U={};U.styleTagTransform=y(),U.setAttributes=C(),U.insert=v().bind(null,"head"),U.domAPI=A(),U.insertStyleElement=_(),m()(T.Z,U),T.Z&&T.Z.locals&&T.Z.locals;var R=(0,P.Z)(S,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"body-login-container"},[e("h2",[n._v(n._s(n.t("core","Recommended apps")))]),n._v(" "),n.loadingApps?e("p",{staticClass:"loading text-center"},[n._v("\n\t\t"+n._s(n.t("core","Loading apps …"))+"\n\t")]):n.loadingAppsError?e("p",{staticClass:"loading-error text-center"},[n._v("\n\t\t"+n._s(n.t("core","Could not fetch list of apps from the App Store."))+"\n\t")]):n.installingApps?e("p",{staticClass:"text-center"},[n._v("\n\t\t"+n._s(n.t("core","Installing apps …"))+"\n\t")]):n._e(),n._v(" "),n._l(n.recommendedApps,(function(t){return e("div",{key:t.id,staticClass:"app"},[e("img",{attrs:{src:n.customIcon(t.id),alt:""}}),n._v(" "),e("div",{staticClass:"info"},[e("h3",[n._v("\n\t\t\t\t"+n._s(t.name)+"\n\t\t\t\t"),t.loading?e("span",{staticClass:"icon icon-loading-small-dark"}):t.active?e("span",{staticClass:"icon icon-checkmark-white"}):n._e()]),n._v(" "),e("p",{domProps:{innerHTML:n._s(n.customDescription(t.id))}}),n._v(" "),t.installationError?e("p",[e("strong",[n._v(n._s(n.t("core","App download or installation failed")))])]):t.isCompatible?t.canInstall?n._e():e("p",[e("strong",[n._v(n._s(n.t("core","Cannot install this app")))])]):e("p",[e("strong",[n._v(n._s(n.t("core","Cannot install this app because it is not compatible")))])])])])})),n._v(" "),n.showInstallButton?e("InstallButton",{on:{click:function(t){return t.stopPropagation(),t.preventDefault(),n.installApps.apply(null,arguments)}}}):n._e(),n._v(" "),e("p",{staticClass:"text-center"},[e("a",{attrs:{href:n.defaultPageUrl}},[n._v(n._s(n.t("core","Cancel")))])])],2)}),[],!1,null,"cbe02e2a",null),Y=R.exports;e.nc=btoa((0,o.getRequestToken)()),i.default.mixin({methods:{t:r.translate}}),(new(i.default.extend(Y))).$mount("#recommended-apps"),c.debug("recommended apps view rendered")},54887:function(n,t,e){var a=e(87537),o=e.n(a),r=e(23645),i=e.n(r)()(o());i.push([n.id,"button[data-v-3933c599]{margin:24px auto 10px auto;padding:10px 20px;font-size:20px}","",{version:3,sources:["webpack://./core/src/components/setup/InstallButton.vue"],names:[],mappings:"AAqCA,wBACC,0BAAA,CACA,iBAAA,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\nbutton {\n\tmargin: 24px auto 10px auto;\n\tpadding: 10px 20px;\n\tfont-size: 20px;\n}\n"],sourceRoot:""}]),t.Z=i},12135:function(n,t,e){var a=e(87537),o=e.n(a),r=e(23645),i=e.n(r)()(o());i.push([n.id,"p.loading[data-v-cbe02e2a],p.loading-error[data-v-cbe02e2a]{height:100px}p[data-v-cbe02e2a]:last-child{margin-top:10px}.text-center[data-v-cbe02e2a]{text-align:center}.app[data-v-cbe02e2a]{display:flex;flex-direction:row}.app img[data-v-cbe02e2a]{height:50px;width:50px;filter:invert(1)}.app img[data-v-cbe02e2a],.app .info[data-v-cbe02e2a]{padding:12px}.app .info h3[data-v-cbe02e2a],.app .info p[data-v-cbe02e2a]{text-align:left}.app .info h3[data-v-cbe02e2a]{color:#fff;margin-top:0}.app .info h3>span.icon[data-v-cbe02e2a]{display:inline-block}","",{version:3,sources:["webpack://./core/src/components/setup/RecommendedApps.vue"],names:[],mappings:"AAoMC,4DAEC,YAAA,CAGD,8BACC,eAAA,CAIF,8BACC,iBAAA,CAGD,sBACC,YAAA,CACA,kBAAA,CAEA,0BACC,WAAA,CACA,UAAA,CACA,gBAAA,CAGD,sDACC,YAAA,CAIA,6DACC,eAAA,CAGD,+BACC,UAAA,CACA,YAAA,CAGD,yCACC,oBAAA",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\n\n.body-login-container {\n\n}\n\np {\n\t&.loading,\n\t&.loading-error {\n\t\theight: 100px;\n\t}\n\n\t&:last-child {\n\t\tmargin-top: 10px;\n\t}\n}\n\n.text-center {\n\ttext-align: center;\n}\n\n.app {\n\tdisplay: flex;\n\tflex-direction: row;\n\n\timg {\n\t\theight: 50px;\n\t\twidth: 50px;\n\t\tfilter: invert(1);\n\t}\n\n\timg, .info {\n\t\tpadding: 12px;\n\t}\n\n\t.info {\n\t\th3, p {\n\t\t\ttext-align: left;\n\t\t}\n\n\t\th3 {\n\t\t\tcolor: #fff;\n\t\t\tmargin-top: 0;\n\t\t}\n\n\t\th3 > span.icon {\n\t\t\tdisplay: inline-block;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),t.Z=i}},e={};function a(n){var o=e[n];if(void 0!==o)return o.exports;var r=e[n]={id:n,loaded:!1,exports:{}};return t[n].call(r.exports,r,r.exports,a),r.loaded=!0,r.exports}a.m=t,a.amdD=function(){throw new Error("define cannot be used indirect")},a.amdO={},n=[],a.O=function(t,e,o,r){if(!e){var i=1/0;for(p=0;p<n.length;p++){e=n[p][0],o=n[p][1],r=n[p][2];for(var s=!0,c=0;c<e.length;c++)(!1&r||i>=r)&&Object.keys(a.O).every((function(n){return a.O[n](e[c])}))?e.splice(c--,1):(s=!1,r<i&&(i=r));if(s){n.splice(p--,1);var l=o();void 0!==l&&(t=l)}}return t}r=r||0;for(var p=n.length;p>0&&n[p-1][2]>r;p--)n[p]=n[p-1];n[p]=[e,o,r]},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=1033,function(){a.b=document.baseURI||self.location.href;var n={1033:0};a.O.j=function(t){return 0===n[t]};var t=function(t,e){var o,r,i=e[0],s=e[1],c=e[2],l=0;if(i.some((function(t){return 0!==n[t]}))){for(o in s)a.o(s,o)&&(a.m[o]=s[o]);if(c)var p=c(a)}for(t&&t(e);l<i.length;l++)r=i[l],a.o(n,r)&&n[r]&&n[r][0](),n[r]=0;return a.O(p)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(t.bind(null,0)),e.push=t.bind(null,e.push.bind(e))}(),a.nc=void 0;var o=a.O(void 0,[7874],(function(){return a(12996)}));o=a.O(o)}();
+//# sourceMappingURL=core-recommendedapps.js.map?v=363ab2097a633c210ea3 \ No newline at end of file
diff --git a/dist/core-recommendedapps.js.map b/dist/core-recommendedapps.js.map
index 37b78e07f4b..21b166315c7 100644
--- a/dist/core-recommendedapps.js.map
+++ b/dist/core-recommendedapps.js.map
@@ -1 +1 @@
-{"version":3,"file":"core-recommendedapps.js?v=656250c3c5524055183e","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/logger.js","webpack://nextcloud/./core/src/components/setup/InstallButton.vue?0482","webpack://nextcloud/./core/src/components/setup/InstallButton.vue?daad","webpack:///nextcloud/core/src/components/setup/InstallButton.vue","webpack:///nextcloud/core/src/components/setup/InstallButton.vue?vue&type=template&id=3933c599&scoped=true&","webpack:///nextcloud/core/src/components/setup/RecommendedApps.vue","webpack:///nextcloud/core/src/components/setup/RecommendedApps.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/components/setup/RecommendedApps.vue?f7d7","webpack://nextcloud/./core/src/components/setup/RecommendedApps.vue?84e8","webpack:///nextcloud/core/src/components/setup/RecommendedApps.vue?vue&type=template&id=cbe02e2a&scoped=true&","webpack:///nextcloud/core/src/recommendedapps.js","webpack:///nextcloud/core/src/components/setup/InstallButton.vue?vue&type=style&index=0&id=3933c599&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/setup/RecommendedApps.vue?vue&type=style&index=0&id=cbe02e2a&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 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 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 */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nconst getLogger = user => {\n\tif (user === null) {\n\t\treturn getLoggerBuilder()\n\t\t\t.setApp('core')\n\t\t\t.build()\n\t}\n\treturn getLoggerBuilder()\n\t\t.setApp('core')\n\t\t.setUid(user.uid)\n\t\t.build()\n}\n\nexport default getLogger(getCurrentUser())\n","\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!./InstallButton.vue?vue&type=style&index=0&id=3933c599&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!./InstallButton.vue?vue&type=style&index=0&id=3933c599&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./InstallButton.vue?vue&type=template&id=3933c599&scoped=true&\"\nimport script from \"./InstallButton.vue?vue&type=script&lang=js&\"\nexport * from \"./InstallButton.vue?vue&type=script&lang=js&\"\nimport style0 from \"./InstallButton.vue?vue&type=style&index=0&id=3933c599&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 \"3933c599\",\n null\n \n)\n\nexport default component.exports","<!--\n - @copyright 2022 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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-->\n\n<template>\n\t<button class=\"primary\"\n\t\t:autofocus=\"true\"\n\t\tv-on=\"$listeners\">\n\t\t{{ t('core', 'Install recommended apps') }}\n\t</button>\n</template>\n\n<script>\nexport default {\n\tname: 'InstallButton',\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\tbutton {\n\t\tmargin: 24px auto 10px auto;\n\t\tpadding: 10px 20px;\n\t\tfont-size: 20px;\n\t}\n</style>\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',_vm._g({staticClass:\"primary\",attrs:{\"autofocus\":true}},_vm.$listeners),[_vm._v(\"\\n\\t\"+_vm._s(_vm.t('core', 'Install recommended apps'))+\"\\n\")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\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\n<template>\n\t<div class=\"body-login-container\">\n\t\t<h2>{{ t('core', 'Recommended apps') }}</h2>\n\t\t<p v-if=\"loadingApps\" class=\"loading text-center\">\n\t\t\t{{ t('core', 'Loading apps …') }}\n\t\t</p>\n\t\t<p v-else-if=\"loadingAppsError\" class=\"loading-error text-center\">\n\t\t\t{{ t('core', 'Could not fetch list of apps from the App Store.') }}\n\t\t</p>\n\t\t<p v-else-if=\"installingApps\" class=\"text-center\">\n\t\t\t{{ t('core', 'Installing apps …') }}\n\t\t</p>\n\n\t\t<div v-for=\"app in recommendedApps\" :key=\"app.id\" class=\"app\">\n\t\t\t<img :src=\"customIcon(app.id)\" alt=\"\">\n\t\t\t<div class=\"info\">\n\t\t\t\t<h3>\n\t\t\t\t\t{{ app.name }}\n\t\t\t\t\t<span v-if=\"app.loading\" class=\"icon icon-loading-small-dark\" />\n\t\t\t\t\t<span v-else-if=\"app.active\" class=\"icon icon-checkmark-white\" />\n\t\t\t\t</h3>\n\t\t\t\t<p v-html=\"customDescription(app.id)\" />\n\t\t\t\t<p v-if=\"app.installationError\">\n\t\t\t\t\t<strong>{{ t('core', 'App download or installation failed') }}</strong>\n\t\t\t\t</p>\n\t\t\t\t<p v-else-if=\"!app.isCompatible\">\n\t\t\t\t\t<strong>{{ t('core', 'Cannot install this app because it is not compatible') }}</strong>\n\t\t\t\t</p>\n\t\t\t\t<p v-else-if=\"!app.canInstall\">\n\t\t\t\t\t<strong>{{ t('core', 'Cannot install this app') }}</strong>\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<InstallButton v-if=\"showInstallButton\"\n\t\t\t@click.stop.prevent=\"installApps\" />\n\n\t\t<p class=\"text-center\">\n\t\t\t<a :href=\"defaultPageUrl\">{{ t('core', 'Cancel') }}</a>\n\t\t</p>\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateUrl, imagePath } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport pLimit from 'p-limit'\nimport { translate as t } from '@nextcloud/l10n'\n\n// TODO replace with Button component when @nextcloud/vue is upgraded to v5\nimport InstallButton from './InstallButton'\n\nimport logger from '../../logger'\n\nconst recommended = {\n\tcalendar: {\n\t\tdescription: t('core', 'Schedule work & meetings, synced with all your devices.'),\n\t\ticon: imagePath('core', 'places/calendar.svg'),\n\t},\n\tcontacts: {\n\t\tdescription: t('core', 'Keep your colleagues and friends in one place without leaking their private info.'),\n\t\ticon: imagePath('core', 'places/contacts.svg'),\n\t},\n\tmail: {\n\t\tdescription: t('core', 'Simple email app nicely integrated with Files, Contacts and Calendar.'),\n\t\ticon: imagePath('core', 'actions/mail.svg'),\n\t},\n\tspreed: {\n\t\tdescription: t('core', 'Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps.'),\n\t\ticon: imagePath('core', 'apps/spreed.svg'),\n\t},\n\trichdocuments: {\n\t\tdescription: t('core', 'Collaboratively edit office documents.'),\n\t\ticon: imagePath('core', 'apps/richdocuments.svg'),\n\t},\n\trichdocumentscode: {\n\t\tdescription: t('core', 'Local document editing back-end used by the Collabora Online app.'),\n\t\ticon: imagePath('core', 'apps/richdocumentscode.svg'),\n\t},\n}\nconst recommendedIds = Object.keys(recommended)\nconst defaultPageUrl = loadState('core', 'defaultPageUrl')\n\nexport default {\n\tname: 'RecommendedApps',\n\tcomponents: {\n\t\tInstallButton,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tshowInstallButton: false,\n\t\t\tinstallingApps: false,\n\t\t\tloadingApps: true,\n\t\t\tloadingAppsError: false,\n\t\t\tapps: [],\n\t\t\tdefaultPageUrl,\n\t\t}\n\t},\n\tcomputed: {\n\t\trecommendedApps() {\n\t\t\treturn this.apps.filter(app => recommendedIds.includes(app.id))\n\t\t},\n\t},\n\tasync mounted() {\n\t\ttry {\n\t\t\tconst { data } = await axios.get(generateUrl('settings/apps/list'))\n\t\t\tlogger.info(`${data.apps.length} apps fetched`)\n\n\t\t\tthis.apps = data.apps.map(app => Object.assign(app, { loading: false, installationError: false }))\n\t\t\tlogger.debug(`${this.recommendedApps.length} recommended apps found`, { apps: this.recommendedApps })\n\n\t\t\tthis.showInstallButton = true\n\t\t} catch (error) {\n\t\t\tlogger.error('could not fetch app list', { error })\n\n\t\t\tthis.loadingAppsError = true\n\t\t} finally {\n\t\t\tthis.loadingApps = false\n\t\t}\n\t},\n\tmethods: {\n\t\tinstallApps() {\n\t\t\tthis.showInstallButton = false\n\t\t\tthis.installingApps = true\n\n\t\t\tconst limit = pLimit(1)\n\t\t\tconst installing = this.recommendedApps\n\t\t\t\t.filter(app => !app.active && app.isCompatible && app.canInstall)\n\t\t\t\t.map(app => limit(() => {\n\t\t\t\t\tlogger.info(`installing ${app.id}`)\n\t\t\t\t\tapp.loading = true\n\t\t\t\t\treturn axios.post(generateUrl('settings/apps/enable'), { appIds: [app.id], groups: [] })\n\t\t\t\t\t\t.catch(error => {\n\t\t\t\t\t\t\tlogger.error(`could not install ${app.id}`, { error })\n\t\t\t\t\t\t\tapp.installationError = true\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\tlogger.info(`installed ${app.id}`)\n\t\t\t\t\t\t\tapp.loading = false\n\t\t\t\t\t\t})\n\t\t\t\t}))\n\t\t\tlogger.debug(`installing ${installing.length} recommended apps`)\n\t\t\tPromise.all(installing)\n\t\t\t\t.then(() => {\n\t\t\t\t\tlogger.info('all recommended apps installed, redirecting …')\n\n\t\t\t\t\twindow.location = defaultPageUrl\n\t\t\t\t})\n\t\t\t\t.catch(error => logger.error('could not install recommended apps', { error }))\n\t\t},\n\t\tcustomIcon(appId) {\n\t\t\tif (!(appId in recommended) || !recommended[appId].icon) {\n\t\t\t\tlogger.warn(`no app icon for recommended app ${appId}`)\n\t\t\t\treturn imagePath('core', 'places/default-app-icon.svg')\n\t\t\t}\n\t\t\treturn recommended[appId].icon\n\t\t},\n\t\tcustomDescription(appId) {\n\t\t\tif (!(appId in recommended)) {\n\t\t\t\tlogger.warn(`no app description for recommended app ${appId}`)\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\treturn recommended[appId].description\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.body-login-container {\n\n}\n\np {\n\t&.loading,\n\t&.loading-error {\n\t\theight: 100px;\n\t}\n\n\t&:last-child {\n\t\tmargin-top: 10px;\n\t}\n}\n\n.text-center {\n\ttext-align: center;\n}\n\n.app {\n\tdisplay: flex;\n\tflex-direction: row;\n\n\timg {\n\t\theight: 50px;\n\t\twidth: 50px;\n\t\tfilter: invert(1);\n\t}\n\n\timg, .info {\n\t\tpadding: 12px;\n\t}\n\n\t.info {\n\t\th3, p {\n\t\t\ttext-align: left;\n\t\t}\n\n\t\th3 {\n\t\t\tcolor: #fff;\n\t\t\tmargin-top: 0;\n\t\t}\n\n\t\th3 > span.icon {\n\t\t\tdisplay: inline-block;\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecommendedApps.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!./RecommendedApps.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!./RecommendedApps.vue?vue&type=style&index=0&id=cbe02e2a&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!./RecommendedApps.vue?vue&type=style&index=0&id=cbe02e2a&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RecommendedApps.vue?vue&type=template&id=cbe02e2a&scoped=true&\"\nimport script from \"./RecommendedApps.vue?vue&type=script&lang=js&\"\nexport * from \"./RecommendedApps.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RecommendedApps.vue?vue&type=style&index=0&id=cbe02e2a&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 \"cbe02e2a\",\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:\"body-login-container\"},[_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Recommended apps')))]),_vm._v(\" \"),(_vm.loadingApps)?_c('p',{staticClass:\"loading text-center\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Loading apps …'))+\"\\n\\t\")]):(_vm.loadingAppsError)?_c('p',{staticClass:\"loading-error text-center\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Could not fetch list of apps from the App Store.'))+\"\\n\\t\")]):(_vm.installingApps)?_c('p',{staticClass:\"text-center\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Installing apps …'))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.recommendedApps),function(app){return _c('div',{key:app.id,staticClass:\"app\"},[_c('img',{attrs:{\"src\":_vm.customIcon(app.id),\"alt\":\"\"}}),_vm._v(\" \"),_c('div',{staticClass:\"info\"},[_c('h3',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(app.name)+\"\\n\\t\\t\\t\\t\"),(app.loading)?_c('span',{staticClass:\"icon icon-loading-small-dark\"}):(app.active)?_c('span',{staticClass:\"icon icon-checkmark-white\"}):_vm._e()]),_vm._v(\" \"),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.customDescription(app.id))}}),_vm._v(\" \"),(app.installationError)?_c('p',[_c('strong',[_vm._v(_vm._s(_vm.t('core', 'App download or installation failed')))])]):(!app.isCompatible)?_c('p',[_c('strong',[_vm._v(_vm._s(_vm.t('core', 'Cannot install this app because it is not compatible')))])]):(!app.canInstall)?_c('p',[_c('strong',[_vm._v(_vm._s(_vm.t('core', 'Cannot install this app')))])]):_vm._e()])])}),_vm._v(\" \"),(_vm.showInstallButton)?_c('InstallButton',{on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.installApps.apply(null, arguments)}}}):_vm._e(),_vm._v(\" \"),_c('p',{staticClass:\"text-center\"},[_c('a',{attrs:{\"href\":_vm.defaultPageUrl}},[_vm._v(_vm._s(_vm.t('core', 'Cancel')))])])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 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 */\n\nimport { getRequestToken } from '@nextcloud/auth'\nimport { translate as t } from '@nextcloud/l10n'\nimport Vue from 'vue'\n\nimport logger from './logger'\nimport RecommendedApps from './components/setup/RecommendedApps'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nVue.mixin({\n\tmethods: {\n\t\tt,\n\t},\n})\n\nconst View = Vue.extend(RecommendedApps)\nnew View().$mount('#recommended-apps')\n\nlogger.debug('recommended apps view rendered')\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, \"button[data-v-3933c599]{margin:24px auto 10px auto;padding:10px 20px;font-size:20px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/setup/InstallButton.vue\"],\"names\":[],\"mappings\":\"AAqCA,wBACC,0BAAA,CACA,iBAAA,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\\nbutton {\\n\\tmargin: 24px auto 10px auto;\\n\\tpadding: 10px 20px;\\n\\tfont-size: 20px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"p.loading[data-v-cbe02e2a],p.loading-error[data-v-cbe02e2a]{height:100px}p[data-v-cbe02e2a]:last-child{margin-top:10px}.text-center[data-v-cbe02e2a]{text-align:center}.app[data-v-cbe02e2a]{display:flex;flex-direction:row}.app img[data-v-cbe02e2a]{height:50px;width:50px;filter:invert(1)}.app img[data-v-cbe02e2a],.app .info[data-v-cbe02e2a]{padding:12px}.app .info h3[data-v-cbe02e2a],.app .info p[data-v-cbe02e2a]{text-align:left}.app .info h3[data-v-cbe02e2a]{color:#fff;margin-top:0}.app .info h3>span.icon[data-v-cbe02e2a]{display:inline-block}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/setup/RecommendedApps.vue\"],\"names\":[],\"mappings\":\"AAoMC,4DAEC,YAAA,CAGD,8BACC,eAAA,CAIF,8BACC,iBAAA,CAGD,sBACC,YAAA,CACA,kBAAA,CAEA,0BACC,WAAA,CACA,UAAA,CACA,gBAAA,CAGD,sDACC,YAAA,CAIA,6DACC,eAAA,CAGD,+BACC,UAAA,CACA,YAAA,CAGD,yCACC,oBAAA\",\"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\\n\\n.body-login-container {\\n\\n}\\n\\np {\\n\\t&.loading,\\n\\t&.loading-error {\\n\\t\\theight: 100px;\\n\\t}\\n\\n\\t&:last-child {\\n\\t\\tmargin-top: 10px;\\n\\t}\\n}\\n\\n.text-center {\\n\\ttext-align: center;\\n}\\n\\n.app {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\n\\timg {\\n\\t\\theight: 50px;\\n\\t\\twidth: 50px;\\n\\t\\tfilter: invert(1);\\n\\t}\\n\\n\\timg, .info {\\n\\t\\tpadding: 12px;\\n\\t}\\n\\n\\t.info {\\n\\t\\th3, p {\\n\\t\\t\\ttext-align: left;\\n\\t\\t}\\n\\n\\t\\th3 {\\n\\t\\t\\tcolor: #fff;\\n\\t\\t\\tmargin-top: 0;\\n\\t\\t}\\n\\n\\t\\th3 > span.icon {\\n\\t\\t\\tdisplay: inline-block;\\n\\t\\t}\\n\\t}\\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 = 1033;","__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\t1033: 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__(12996); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","user","getCurrentUser","getLoggerBuilder","setApp","build","setUid","uid","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_self","_c","_g","staticClass","attrs","$listeners","_v","_s","t","_e","_l","app","key","id","customIcon","name","domProps","customDescription","isCompatible","canInstall","on","$event","stopPropagation","preventDefault","installApps","apply","arguments","defaultPageUrl","__webpack_nonce__","btoa","getRequestToken","Vue","methods","RecommendedApps","$mount","logger","debug","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","children","b","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"core-recommendedapps.js?v=363ab2097a633c210ea3","mappings":";6BAAIA,+BCyBcC,6CAYlB,EAXc,QADIA,GAYOC,EAAAA,EAAAA,oBAVhBC,EAAAA,EAAAA,MACLC,OAAO,QACPC,SAEIF,EAAAA,EAAAA,MACLC,OAAO,QACPE,OAAOL,EAAKM,KACZF,oLCvBCG,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,eCFA,GAXgB,OCuBhB,CACA,uBChCa,WAAa,IAAIM,EAAIC,KAASC,EAAGF,EAAIG,eAAuC,OAAjBH,EAAII,MAAMC,IAAIH,GAAa,SAASF,EAAIM,GAAG,CAACC,YAAY,UAAUC,MAAM,CAAC,WAAY,IAAOR,EAAIS,YAAY,CAACT,EAAIU,GAAG,OAAOV,EAAIW,GAAGX,EAAIY,EAAE,OAAQ,6BAA6B,UAC/N,IFWpB,EACA,KACA,WACA,MAI8B,iIGyDhC,OACA,UACA,8FACA,oDAEA,UACA,wHACA,oDAEA,MACA,4GACA,iDAEA,QACA,yJACA,gDAEA,eACA,6EACA,uDAEA,mBACA,wGACA,4DAGA,iBACA,2CAEA,GACA,uBACA,YACA,iBAEA,KALA,WAMA,OACA,qBACA,kBACA,eACA,oBACA,QACA,mBAGA,UACA,gBADA,WAEA,kEAGA,QApBA,WAoBA,6KAEA,uDAFA,gBAEA,EAFA,EAEA,KACA,iDAEA,4FACA,gGAEA,uBARA,kDAUA,iDAEA,sBAZA,yBAcA,iBAdA,8PAiBA,SACA,YADA,WAEA,0BACA,uBAEA,iBACA,uBACA,qEACA,sCAGA,OAFA,mCACA,aACA,oFACA,mBACA,qDACA,0BAEA,iBACA,kCACA,sBAGA,4DACA,eACA,iBACA,wDAEA,qBAEA,sFAEA,WA9BA,SA8BA,GACA,yBAIA,WAHA,sDACA,uDAIA,kBArCA,SAqCA,GACA,cAIA,kBAHA,4DACA,OCtL4L,eCWxL,EAAU,GAEd,EAAQjB,kBAAoB,IAC5B,EAAQC,cAAgB,IAElB,EAAQC,OAAS,SAAc,KAAM,QAE3C,EAAQC,OAAS,IACjB,EAAQC,mBAAqB,IAEhB,IAAI,IAAS,GAKJ,KAAW,YAAiB,WALlD,ICbI,GAAY,OACd,GCTW,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBE,EAAGL,EAAII,MAAMC,IAAIH,EAAG,OAAOG,EAAG,MAAM,CAACE,YAAY,wBAAwB,CAACF,EAAG,KAAK,CAACL,EAAIU,GAAGV,EAAIW,GAAGX,EAAIY,EAAE,OAAQ,wBAAwBZ,EAAIU,GAAG,KAAMV,EAAe,YAAEK,EAAG,IAAI,CAACE,YAAY,uBAAuB,CAACP,EAAIU,GAAG,SAASV,EAAIW,GAAGX,EAAIY,EAAE,OAAQ,mBAAmB,UAAWZ,EAAoB,iBAAEK,EAAG,IAAI,CAACE,YAAY,6BAA6B,CAACP,EAAIU,GAAG,SAASV,EAAIW,GAAGX,EAAIY,EAAE,OAAQ,qDAAqD,UAAWZ,EAAkB,eAAEK,EAAG,IAAI,CAACE,YAAY,eAAe,CAACP,EAAIU,GAAG,SAASV,EAAIW,GAAGX,EAAIY,EAAE,OAAQ,sBAAsB,UAAUZ,EAAIa,KAAKb,EAAIU,GAAG,KAAKV,EAAIc,GAAId,EAAmB,iBAAE,SAASe,GAAK,OAAOV,EAAG,MAAM,CAACW,IAAID,EAAIE,GAAGV,YAAY,OAAO,CAACF,EAAG,MAAM,CAACG,MAAM,CAAC,IAAMR,EAAIkB,WAAWH,EAAIE,IAAI,IAAM,MAAMjB,EAAIU,GAAG,KAAKL,EAAG,MAAM,CAACE,YAAY,QAAQ,CAACF,EAAG,KAAK,CAACL,EAAIU,GAAG,aAAaV,EAAIW,GAAGI,EAAII,MAAM,cAAeJ,EAAW,QAAEV,EAAG,OAAO,CAACE,YAAY,iCAAkCQ,EAAU,OAAEV,EAAG,OAAO,CAACE,YAAY,8BAA8BP,EAAIa,OAAOb,EAAIU,GAAG,KAAKL,EAAG,IAAI,CAACe,SAAS,CAAC,UAAYpB,EAAIW,GAAGX,EAAIqB,kBAAkBN,EAAIE,QAAQjB,EAAIU,GAAG,KAAMK,EAAqB,kBAAEV,EAAG,IAAI,CAACA,EAAG,SAAS,CAACL,EAAIU,GAAGV,EAAIW,GAAGX,EAAIY,EAAE,OAAQ,6CAA+CG,EAAIO,aAA+HP,EAAIQ,WAA8FvB,EAAIa,KAAtFR,EAAG,IAAI,CAACA,EAAG,SAAS,CAACL,EAAIU,GAAGV,EAAIW,GAAGX,EAAIY,EAAE,OAAQ,iCAAlLP,EAAG,IAAI,CAACA,EAAG,SAAS,CAACL,EAAIU,GAAGV,EAAIW,GAAGX,EAAIY,EAAE,OAAQ,qEAAiLZ,EAAIU,GAAG,KAAMV,EAAqB,kBAAEK,EAAG,gBAAgB,CAACmB,GAAG,CAAC,MAAQ,SAASC,GAAyD,OAAjDA,EAAOC,kBAAkBD,EAAOE,iBAAwB3B,EAAI4B,YAAYC,MAAM,KAAMC,eAAe9B,EAAIa,KAAKb,EAAIU,GAAG,KAAKL,EAAG,IAAI,CAACE,YAAY,eAAe,CAACF,EAAG,IAAI,CAACG,MAAM,CAAC,KAAOR,EAAI+B,iBAAiB,CAAC/B,EAAIU,GAAGV,EAAIW,GAAGX,EAAIY,EAAE,OAAQ,iBAAiB,KACtyD,IDWpB,EACA,KACA,WACA,MAIF,EAAe,EAAiB,QEWhCoB,EAAAA,GAAoBC,MAAKC,EAAAA,EAAAA,oBAEzBC,EAAAA,QAAAA,MAAU,CACTC,QAAS,CACRxB,EAAAA,EAAAA,cAKF,IADauB,EAAAA,QAAAA,OAAWE,KACbC,OAAO,qBAElBC,EAAOC,MAAM,4FCtCTC,QAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAO1B,GAAI,uFAAwF,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,2DAA2D,MAAQ,GAAG,SAAW,yCAAyC,eAAiB,CAAC,sKAAsK,WAAa,MAE3d,gECJIwB,QAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAO1B,GAAI,uiBAAwiB,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,6DAA6D,MAAQ,GAAG,SAAW,+LAA+L,eAAiB,CAAC,06BAA06B,WAAa,MAEv0D,QCNI2B,EAA2B,GAG/B,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaE,QAGrB,IAAIN,EAASC,EAAyBE,GAAY,CACjD7B,GAAI6B,EACJI,QAAQ,EACRD,QAAS,IAUV,OANAE,EAAoBL,GAAUM,KAAKT,EAAOM,QAASN,EAAQA,EAAOM,QAASJ,GAG3EF,EAAOO,QAAS,EAGTP,EAAOM,QAIfJ,EAAoBQ,EAAIF,EC5BxBN,EAAoBS,KAAO,WAC1B,MAAM,IAAIC,MAAM,mCCDjBV,EAAoBW,KAAO,GhBAvBtE,EAAW,GACf2D,EAAoBY,EAAI,SAASC,EAAQC,EAAUC,EAAIC,GACtD,IAAGF,EAAH,CAMA,IAAIG,EAAeC,EAAAA,EACnB,IAASC,EAAI,EAAGA,EAAI9E,EAAS+E,OAAQD,IAAK,CACrCL,EAAWzE,EAAS8E,GAAG,GACvBJ,EAAK1E,EAAS8E,GAAG,GACjBH,EAAW3E,EAAS8E,GAAG,GAE3B,IAJA,IAGIE,GAAY,EACPC,EAAI,EAAGA,EAAIR,EAASM,OAAQE,MACpB,EAAXN,GAAsBC,GAAgBD,IAAaO,OAAOC,KAAKxB,EAAoBY,GAAGa,OAAM,SAAStD,GAAO,OAAO6B,EAAoBY,EAAEzC,GAAK2C,EAASQ,OAC3JR,EAASY,OAAOJ,IAAK,IAErBD,GAAY,EACTL,EAAWC,IAAcA,EAAeD,IAG7C,GAAGK,EAAW,CACbhF,EAASqF,OAAOP,IAAK,GACrB,IAAIQ,EAAIZ,SACEZ,IAANwB,IAAiBd,EAASc,IAGhC,OAAOd,EAzBNG,EAAWA,GAAY,EACvB,IAAI,IAAIG,EAAI9E,EAAS+E,OAAQD,EAAI,GAAK9E,EAAS8E,EAAI,GAAG,GAAKH,EAAUG,IAAK9E,EAAS8E,GAAK9E,EAAS8E,EAAI,GACrG9E,EAAS8E,GAAK,CAACL,EAAUC,EAAIC,IiBJ/BhB,EAAoB4B,EAAI,SAAS9B,GAChC,IAAI+B,EAAS/B,GAAUA,EAAOgC,WAC7B,WAAa,OAAOhC,EAAgB,SACpC,WAAa,OAAOA,GAErB,OADAE,EAAoB+B,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,GCLR7B,EAAoB+B,EAAI,SAAS3B,EAAS6B,GACzC,IAAI,IAAI9D,KAAO8D,EACXjC,EAAoBkC,EAAED,EAAY9D,KAAS6B,EAAoBkC,EAAE9B,EAASjC,IAC5EoD,OAAOY,eAAe/B,EAASjC,EAAK,CAAEiE,YAAY,EAAMC,IAAKJ,EAAW9D,MCJ3E6B,EAAoBsC,EAAI,WACvB,GAA0B,iBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAOnF,MAAQ,IAAIoF,SAAS,cAAb,GACd,MAAOC,GACR,GAAsB,iBAAXC,OAAqB,OAAOA,QALjB,GCAxB1C,EAAoBkC,EAAI,SAASS,EAAKC,GAAQ,OAAOrB,OAAOsB,UAAUC,eAAevC,KAAKoC,EAAKC,ICC/F5C,EAAoB2B,EAAI,SAASvB,GACX,oBAAX2C,QAA0BA,OAAOC,aAC1CzB,OAAOY,eAAe/B,EAAS2C,OAAOC,YAAa,CAAEC,MAAO,WAE7D1B,OAAOY,eAAe/B,EAAS,aAAc,CAAE6C,OAAO,KCLvDjD,EAAoBkD,IAAM,SAASpD,GAGlC,OAFAA,EAAOqD,MAAQ,GACVrD,EAAOsD,WAAUtD,EAAOsD,SAAW,IACjCtD,GCHRE,EAAoBsB,EAAI,gBCAxBtB,EAAoBqD,EAAIC,SAASC,SAAWC,KAAKC,SAASC,KAK1D,IAAIC,EAAkB,CACrB,KAAM,GAaP3D,EAAoBY,EAAEU,EAAI,SAASsC,GAAW,OAAoC,IAA7BD,EAAgBC,IAGrE,IAAIC,EAAuB,SAASC,EAA4BC,GAC/D,IAKI9D,EAAU2D,EALV9C,EAAWiD,EAAK,GAChBC,EAAcD,EAAK,GACnBE,EAAUF,EAAK,GAGI5C,EAAI,EAC3B,GAAGL,EAASoD,MAAK,SAAS9F,GAAM,OAA+B,IAAxBuF,EAAgBvF,MAAe,CACrE,IAAI6B,KAAY+D,EACZhE,EAAoBkC,EAAE8B,EAAa/D,KACrCD,EAAoBQ,EAAEP,GAAY+D,EAAY/D,IAGhD,GAAGgE,EAAS,IAAIpD,EAASoD,EAAQjE,GAGlC,IADG8D,GAA4BA,EAA2BC,GACrD5C,EAAIL,EAASM,OAAQD,IACzByC,EAAU9C,EAASK,GAChBnB,EAAoBkC,EAAEyB,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBC,GAAW,EAE5B,OAAO5D,EAAoBY,EAAEC,IAG1BsD,EAAqBX,KAA4B,sBAAIA,KAA4B,uBAAK,GAC1FW,EAAmBC,QAAQP,EAAqBQ,KAAK,KAAM,IAC3DF,EAAmBtE,KAAOgE,EAAqBQ,KAAK,KAAMF,EAAmBtE,KAAKwE,KAAKF,OClDvFnE,EAAoBsE,QAAKnE,ECGzB,IAAIoE,EAAsBvE,EAAoBY,OAAET,EAAW,CAAC,OAAO,WAAa,OAAOH,EAAoB,UAC3GuE,EAAsBvE,EAAoBY,EAAE2D","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/logger.js","webpack://nextcloud/./core/src/components/setup/InstallButton.vue?0482","webpack://nextcloud/./core/src/components/setup/InstallButton.vue?daad","webpack:///nextcloud/core/src/components/setup/InstallButton.vue","webpack:///nextcloud/core/src/components/setup/InstallButton.vue?vue&type=template&id=3933c599&scoped=true&","webpack:///nextcloud/core/src/components/setup/RecommendedApps.vue","webpack:///nextcloud/core/src/components/setup/RecommendedApps.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/components/setup/RecommendedApps.vue?f7d7","webpack://nextcloud/./core/src/components/setup/RecommendedApps.vue?84e8","webpack:///nextcloud/core/src/components/setup/RecommendedApps.vue?vue&type=template&id=cbe02e2a&scoped=true&","webpack:///nextcloud/core/src/recommendedapps.js","webpack:///nextcloud/core/src/components/setup/InstallButton.vue?vue&type=style&index=0&id=3933c599&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/setup/RecommendedApps.vue?vue&type=style&index=0&id=cbe02e2a&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/runtime/nonce","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 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 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 */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nconst getLogger = user => {\n\tif (user === null) {\n\t\treturn getLoggerBuilder()\n\t\t\t.setApp('core')\n\t\t\t.build()\n\t}\n\treturn getLoggerBuilder()\n\t\t.setApp('core')\n\t\t.setUid(user.uid)\n\t\t.build()\n}\n\nexport default getLogger(getCurrentUser())\n","\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!./InstallButton.vue?vue&type=style&index=0&id=3933c599&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!./InstallButton.vue?vue&type=style&index=0&id=3933c599&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./InstallButton.vue?vue&type=template&id=3933c599&scoped=true&\"\nimport script from \"./InstallButton.vue?vue&type=script&lang=js&\"\nexport * from \"./InstallButton.vue?vue&type=script&lang=js&\"\nimport style0 from \"./InstallButton.vue?vue&type=style&index=0&id=3933c599&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 \"3933c599\",\n null\n \n)\n\nexport default component.exports","<!--\n - @copyright 2022 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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-->\n\n<template>\n\t<button class=\"primary\"\n\t\t:autofocus=\"true\"\n\t\tv-on=\"$listeners\">\n\t\t{{ t('core', 'Install recommended apps') }}\n\t</button>\n</template>\n\n<script>\nexport default {\n\tname: 'InstallButton',\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\tbutton {\n\t\tmargin: 24px auto 10px auto;\n\t\tpadding: 10px 20px;\n\t\tfont-size: 20px;\n\t}\n</style>\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',_vm._g({staticClass:\"primary\",attrs:{\"autofocus\":true}},_vm.$listeners),[_vm._v(\"\\n\\t\"+_vm._s(_vm.t('core', 'Install recommended apps'))+\"\\n\")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\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\n<template>\n\t<div class=\"body-login-container\">\n\t\t<h2>{{ t('core', 'Recommended apps') }}</h2>\n\t\t<p v-if=\"loadingApps\" class=\"loading text-center\">\n\t\t\t{{ t('core', 'Loading apps …') }}\n\t\t</p>\n\t\t<p v-else-if=\"loadingAppsError\" class=\"loading-error text-center\">\n\t\t\t{{ t('core', 'Could not fetch list of apps from the App Store.') }}\n\t\t</p>\n\t\t<p v-else-if=\"installingApps\" class=\"text-center\">\n\t\t\t{{ t('core', 'Installing apps …') }}\n\t\t</p>\n\n\t\t<div v-for=\"app in recommendedApps\" :key=\"app.id\" class=\"app\">\n\t\t\t<img :src=\"customIcon(app.id)\" alt=\"\">\n\t\t\t<div class=\"info\">\n\t\t\t\t<h3>\n\t\t\t\t\t{{ app.name }}\n\t\t\t\t\t<span v-if=\"app.loading\" class=\"icon icon-loading-small-dark\" />\n\t\t\t\t\t<span v-else-if=\"app.active\" class=\"icon icon-checkmark-white\" />\n\t\t\t\t</h3>\n\t\t\t\t<p v-html=\"customDescription(app.id)\" />\n\t\t\t\t<p v-if=\"app.installationError\">\n\t\t\t\t\t<strong>{{ t('core', 'App download or installation failed') }}</strong>\n\t\t\t\t</p>\n\t\t\t\t<p v-else-if=\"!app.isCompatible\">\n\t\t\t\t\t<strong>{{ t('core', 'Cannot install this app because it is not compatible') }}</strong>\n\t\t\t\t</p>\n\t\t\t\t<p v-else-if=\"!app.canInstall\">\n\t\t\t\t\t<strong>{{ t('core', 'Cannot install this app') }}</strong>\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<InstallButton v-if=\"showInstallButton\"\n\t\t\t@click.stop.prevent=\"installApps\" />\n\n\t\t<p class=\"text-center\">\n\t\t\t<a :href=\"defaultPageUrl\">{{ t('core', 'Cancel') }}</a>\n\t\t</p>\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateUrl, imagePath } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport pLimit from 'p-limit'\nimport { translate as t } from '@nextcloud/l10n'\n\n// TODO replace with Button component when @nextcloud/vue is upgraded to v5\nimport InstallButton from './InstallButton'\n\nimport logger from '../../logger'\n\nconst recommended = {\n\tcalendar: {\n\t\tdescription: t('core', 'Schedule work & meetings, synced with all your devices.'),\n\t\ticon: imagePath('core', 'places/calendar.svg'),\n\t},\n\tcontacts: {\n\t\tdescription: t('core', 'Keep your colleagues and friends in one place without leaking their private info.'),\n\t\ticon: imagePath('core', 'places/contacts.svg'),\n\t},\n\tmail: {\n\t\tdescription: t('core', 'Simple email app nicely integrated with Files, Contacts and Calendar.'),\n\t\ticon: imagePath('core', 'actions/mail.svg'),\n\t},\n\tspreed: {\n\t\tdescription: t('core', 'Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps.'),\n\t\ticon: imagePath('core', 'apps/spreed.svg'),\n\t},\n\trichdocuments: {\n\t\tdescription: t('core', 'Collaboratively edit office documents.'),\n\t\ticon: imagePath('core', 'apps/richdocuments.svg'),\n\t},\n\trichdocumentscode: {\n\t\tdescription: t('core', 'Local document editing back-end used by the Collabora Online app.'),\n\t\ticon: imagePath('core', 'apps/richdocumentscode.svg'),\n\t},\n}\nconst recommendedIds = Object.keys(recommended)\nconst defaultPageUrl = loadState('core', 'defaultPageUrl')\n\nexport default {\n\tname: 'RecommendedApps',\n\tcomponents: {\n\t\tInstallButton,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tshowInstallButton: false,\n\t\t\tinstallingApps: false,\n\t\t\tloadingApps: true,\n\t\t\tloadingAppsError: false,\n\t\t\tapps: [],\n\t\t\tdefaultPageUrl,\n\t\t}\n\t},\n\tcomputed: {\n\t\trecommendedApps() {\n\t\t\treturn this.apps.filter(app => recommendedIds.includes(app.id))\n\t\t},\n\t},\n\tasync mounted() {\n\t\ttry {\n\t\t\tconst { data } = await axios.get(generateUrl('settings/apps/list'))\n\t\t\tlogger.info(`${data.apps.length} apps fetched`)\n\n\t\t\tthis.apps = data.apps.map(app => Object.assign(app, { loading: false, installationError: false }))\n\t\t\tlogger.debug(`${this.recommendedApps.length} recommended apps found`, { apps: this.recommendedApps })\n\n\t\t\tthis.showInstallButton = true\n\t\t} catch (error) {\n\t\t\tlogger.error('could not fetch app list', { error })\n\n\t\t\tthis.loadingAppsError = true\n\t\t} finally {\n\t\t\tthis.loadingApps = false\n\t\t}\n\t},\n\tmethods: {\n\t\tinstallApps() {\n\t\t\tthis.showInstallButton = false\n\t\t\tthis.installingApps = true\n\n\t\t\tconst limit = pLimit(1)\n\t\t\tconst installing = this.recommendedApps\n\t\t\t\t.filter(app => !app.active && app.isCompatible && app.canInstall)\n\t\t\t\t.map(app => limit(() => {\n\t\t\t\t\tlogger.info(`installing ${app.id}`)\n\t\t\t\t\tapp.loading = true\n\t\t\t\t\treturn axios.post(generateUrl('settings/apps/enable'), { appIds: [app.id], groups: [] })\n\t\t\t\t\t\t.catch(error => {\n\t\t\t\t\t\t\tlogger.error(`could not install ${app.id}`, { error })\n\t\t\t\t\t\t\tapp.installationError = true\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\tlogger.info(`installed ${app.id}`)\n\t\t\t\t\t\t\tapp.loading = false\n\t\t\t\t\t\t})\n\t\t\t\t}))\n\t\t\tlogger.debug(`installing ${installing.length} recommended apps`)\n\t\t\tPromise.all(installing)\n\t\t\t\t.then(() => {\n\t\t\t\t\tlogger.info('all recommended apps installed, redirecting …')\n\n\t\t\t\t\twindow.location = defaultPageUrl\n\t\t\t\t})\n\t\t\t\t.catch(error => logger.error('could not install recommended apps', { error }))\n\t\t},\n\t\tcustomIcon(appId) {\n\t\t\tif (!(appId in recommended) || !recommended[appId].icon) {\n\t\t\t\tlogger.warn(`no app icon for recommended app ${appId}`)\n\t\t\t\treturn imagePath('core', 'places/default-app-icon.svg')\n\t\t\t}\n\t\t\treturn recommended[appId].icon\n\t\t},\n\t\tcustomDescription(appId) {\n\t\t\tif (!(appId in recommended)) {\n\t\t\t\tlogger.warn(`no app description for recommended app ${appId}`)\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\treturn recommended[appId].description\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.body-login-container {\n\n}\n\np {\n\t&.loading,\n\t&.loading-error {\n\t\theight: 100px;\n\t}\n\n\t&:last-child {\n\t\tmargin-top: 10px;\n\t}\n}\n\n.text-center {\n\ttext-align: center;\n}\n\n.app {\n\tdisplay: flex;\n\tflex-direction: row;\n\n\timg {\n\t\theight: 50px;\n\t\twidth: 50px;\n\t\tfilter: invert(1);\n\t}\n\n\timg, .info {\n\t\tpadding: 12px;\n\t}\n\n\t.info {\n\t\th3, p {\n\t\t\ttext-align: left;\n\t\t}\n\n\t\th3 {\n\t\t\tcolor: #fff;\n\t\t\tmargin-top: 0;\n\t\t}\n\n\t\th3 > span.icon {\n\t\t\tdisplay: inline-block;\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecommendedApps.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!./RecommendedApps.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!./RecommendedApps.vue?vue&type=style&index=0&id=cbe02e2a&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!./RecommendedApps.vue?vue&type=style&index=0&id=cbe02e2a&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RecommendedApps.vue?vue&type=template&id=cbe02e2a&scoped=true&\"\nimport script from \"./RecommendedApps.vue?vue&type=script&lang=js&\"\nexport * from \"./RecommendedApps.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RecommendedApps.vue?vue&type=style&index=0&id=cbe02e2a&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 \"cbe02e2a\",\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:\"body-login-container\"},[_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Recommended apps')))]),_vm._v(\" \"),(_vm.loadingApps)?_c('p',{staticClass:\"loading text-center\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Loading apps …'))+\"\\n\\t\")]):(_vm.loadingAppsError)?_c('p',{staticClass:\"loading-error text-center\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Could not fetch list of apps from the App Store.'))+\"\\n\\t\")]):(_vm.installingApps)?_c('p',{staticClass:\"text-center\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Installing apps …'))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.recommendedApps),function(app){return _c('div',{key:app.id,staticClass:\"app\"},[_c('img',{attrs:{\"src\":_vm.customIcon(app.id),\"alt\":\"\"}}),_vm._v(\" \"),_c('div',{staticClass:\"info\"},[_c('h3',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(app.name)+\"\\n\\t\\t\\t\\t\"),(app.loading)?_c('span',{staticClass:\"icon icon-loading-small-dark\"}):(app.active)?_c('span',{staticClass:\"icon icon-checkmark-white\"}):_vm._e()]),_vm._v(\" \"),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.customDescription(app.id))}}),_vm._v(\" \"),(app.installationError)?_c('p',[_c('strong',[_vm._v(_vm._s(_vm.t('core', 'App download or installation failed')))])]):(!app.isCompatible)?_c('p',[_c('strong',[_vm._v(_vm._s(_vm.t('core', 'Cannot install this app because it is not compatible')))])]):(!app.canInstall)?_c('p',[_c('strong',[_vm._v(_vm._s(_vm.t('core', 'Cannot install this app')))])]):_vm._e()])])}),_vm._v(\" \"),(_vm.showInstallButton)?_c('InstallButton',{on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.installApps.apply(null, arguments)}}}):_vm._e(),_vm._v(\" \"),_c('p',{staticClass:\"text-center\"},[_c('a',{attrs:{\"href\":_vm.defaultPageUrl}},[_vm._v(_vm._s(_vm.t('core', 'Cancel')))])])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 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 */\n\nimport { getRequestToken } from '@nextcloud/auth'\nimport { translate as t } from '@nextcloud/l10n'\nimport Vue from 'vue'\n\nimport logger from './logger'\nimport RecommendedApps from './components/setup/RecommendedApps'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nVue.mixin({\n\tmethods: {\n\t\tt,\n\t},\n})\n\nconst View = Vue.extend(RecommendedApps)\nnew View().$mount('#recommended-apps')\n\nlogger.debug('recommended apps view rendered')\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, \"button[data-v-3933c599]{margin:24px auto 10px auto;padding:10px 20px;font-size:20px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/setup/InstallButton.vue\"],\"names\":[],\"mappings\":\"AAqCA,wBACC,0BAAA,CACA,iBAAA,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\\nbutton {\\n\\tmargin: 24px auto 10px auto;\\n\\tpadding: 10px 20px;\\n\\tfont-size: 20px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"p.loading[data-v-cbe02e2a],p.loading-error[data-v-cbe02e2a]{height:100px}p[data-v-cbe02e2a]:last-child{margin-top:10px}.text-center[data-v-cbe02e2a]{text-align:center}.app[data-v-cbe02e2a]{display:flex;flex-direction:row}.app img[data-v-cbe02e2a]{height:50px;width:50px;filter:invert(1)}.app img[data-v-cbe02e2a],.app .info[data-v-cbe02e2a]{padding:12px}.app .info h3[data-v-cbe02e2a],.app .info p[data-v-cbe02e2a]{text-align:left}.app .info h3[data-v-cbe02e2a]{color:#fff;margin-top:0}.app .info h3>span.icon[data-v-cbe02e2a]{display:inline-block}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/setup/RecommendedApps.vue\"],\"names\":[],\"mappings\":\"AAoMC,4DAEC,YAAA,CAGD,8BACC,eAAA,CAIF,8BACC,iBAAA,CAGD,sBACC,YAAA,CACA,kBAAA,CAEA,0BACC,WAAA,CACA,UAAA,CACA,gBAAA,CAGD,sDACC,YAAA,CAIA,6DACC,eAAA,CAGD,+BACC,UAAA,CACA,YAAA,CAGD,yCACC,oBAAA\",\"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\\n\\n.body-login-container {\\n\\n}\\n\\np {\\n\\t&.loading,\\n\\t&.loading-error {\\n\\t\\theight: 100px;\\n\\t}\\n\\n\\t&:last-child {\\n\\t\\tmargin-top: 10px;\\n\\t}\\n}\\n\\n.text-center {\\n\\ttext-align: center;\\n}\\n\\n.app {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\n\\timg {\\n\\t\\theight: 50px;\\n\\t\\twidth: 50px;\\n\\t\\tfilter: invert(1);\\n\\t}\\n\\n\\timg, .info {\\n\\t\\tpadding: 12px;\\n\\t}\\n\\n\\t.info {\\n\\t\\th3, p {\\n\\t\\t\\ttext-align: left;\\n\\t\\t}\\n\\n\\t\\th3 {\\n\\t\\t\\tcolor: #fff;\\n\\t\\t\\tmargin-top: 0;\\n\\t\\t}\\n\\n\\t\\th3 > span.icon {\\n\\t\\t\\tdisplay: inline-block;\\n\\t\\t}\\n\\t}\\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 = 1033;","__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\t1033: 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));","__webpack_require__.nc = undefined;","// 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__(12996); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","user","getCurrentUser","getLoggerBuilder","setApp","build","setUid","uid","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_self","_c","_g","staticClass","attrs","$listeners","_v","_s","t","_e","_l","app","key","id","customIcon","name","domProps","customDescription","isCompatible","canInstall","on","$event","stopPropagation","preventDefault","installApps","apply","arguments","defaultPageUrl","__webpack_nonce__","btoa","getRequestToken","Vue","methods","RecommendedApps","$mount","logger","debug","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","children","b","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/core-systemtags.js b/dist/core-systemtags.js
index 41d892057d8..38d054ca91a 100644
--- a/dist/core-systemtags.js
+++ b/dist/core-systemtags.js
@@ -1,3 +1,3 @@
/*! For license information please see core-systemtags.js.LICENSE.txt */
-!function(){var e,n={16558:function(e,n,s){"use strict";var i=s(95573),l=s.n(i);!function(e){e.SystemTags={getDescriptiveTag:function(e){if(_.isUndefined(e.name)&&!_.isUndefined(e.toJSON)&&(e=e.toJSON()),_.isUndefined(e.name))return $("<span>").addClass("non-existing-tag").text(t("core","Non-existing tag #{tag}",{tag:e}));var n,s=$("<span>");return s.append(l()(e.name)),e.userAssignable||(n=t("core","restricted")),e.userVisible||(n=t("core","invisible")),n&&s.append($("<em>").text(" ("+n+")")),s}}}(OC),s(53076);var o=s(79753);!function(e){var t=e.Backbone.Collection.extend({sync:e.Backbone.davSync,usePUT:!0,_objectId:null,_objectType:"files",model:e.SystemTags.SystemTagModel,url:function(){return(0,o.generateRemoteUrl)("dav")+"/systemtags-relations/"+this._objectType+"/"+this._objectId},setObjectId:function(e){this._objectId=e},setObjectType:function(e){this._objectType=e},initialize:function(e,t){t=t||{},_.isUndefined(t.objectId)||(this._objectId=t.objectId),_.isUndefined(t.objectType)||(this._objectType=t.objectType)},getTagIds:function(){return this.map((function(e){return e.id}))}});e.SystemTags=e.SystemTags||{},e.SystemTags.SystemTagsMappingCollection=t}(OC),s(75026);var a=s(69318),c=s.n(a),r=s(25759),u=s.n(r),d=s(82188),p=s.n(d);!function(e){var n=e.Backbone.View.extend({_rendered:!1,_newTag:null,_lastUsedTags:[],className:"systemTagsInputFieldContainer",template:function(e){return'<input class="systemTagsInputField" type="hidden" name="tags" value=""/>'},initialize:function(t){t=t||{},this._multiple=!!t.multiple,this._allowActions=_.isUndefined(t.allowActions)||!!t.allowActions,this._allowCreate=_.isUndefined(t.allowCreate)||!!t.allowCreate,this._isAdmin=!!t.isAdmin,_.isFunction(t.initSelection)&&(this._initSelection=t.initSelection),this.collection=t.collection||e.SystemTags.collection;var n=this;this.collection.on("change:name remove",(function(){_.defer(n._refreshSelection)})),_.defer(_.bind(this._getLastUsedTags,this)),_.bindAll(this,"_refreshSelection","_onClickRenameTag","_onClickDeleteTag","_onSelectTag","_onDeselectTag","_onSubmitRenameTag")},_getLastUsedTags:function(){var t=this;$.ajax({type:"GET",url:e.generateUrl("/apps/systemtags/lastused"),success:function(e){t._lastUsedTags=e}})},_refreshSelection:function(){this.$tagsField.select2("val",this.$tagsField.val())},_onClickRenameTag:function(e){var n=$(e.target).closest(".systemtags-item"),s=n.attr("data-id"),i=this.collection.get(s).get("name"),l=$(u()({cid:this.cid,name:i,deleteTooltip:t("core","Delete"),renameLabel:t("core","Rename"),isAdmin:this._isAdmin}));return n.find(".label").after(l),n.find(".label, .systemtags-actions").addClass("hidden"),n.closest(".select2-result").addClass("has-form"),l.find("[title]").tooltip({placement:"bottom",container:"body"}),l.find("input").focus().selectRange(0,i.length),!1},_onSubmitRenameTag:function(e){e.preventDefault();var t=$(e.target),n=t.closest(".systemtags-item"),s=n.attr("data-id"),i=this.collection.get(s),l=$(e.target).find("input").val().trim();l&&l!==i.get("name")&&(i.save({name:l}),n.find(".label").text(l)),n.find(".label, .systemtags-actions").removeClass("hidden"),t.remove(),n.closest(".select2-result").removeClass("has-form")},_onClickDeleteTag:function(e){var t=$(e.target).closest(".systemtags-item"),n=t.attr("data-id");return this.collection.get(n).destroy(),$(e.target).tooltip("hide"),t.closest(".select2-result").remove(),!1},_addToSelect2Selection:function(e){var t=this.$tagsField.select2("data");t.push(e),this.$tagsField.select2("data",t)},_onSelectTag:function(e){var t,n=this;if(e.object&&e.object.isNew)return t=this.collection.create({name:e.object.name.trim(),userVisible:!0,userAssignable:!0,canAssign:!0},{success:function(e){n._addToSelect2Selection(e.toJSON()),n._lastUsedTags.unshift(e.id),n.trigger("select",e)},error:function(t,s){409===s.status&&(n.collection.reset(),n.collection.fetch({success:function(t){var s=t.where({name:e.object.name.trim(),userVisible:!0,userAssignable:!0});s.length&&(s=s[0],n._addToSelect2Selection(s.toJSON()),n.trigger("select",s))}}))}}),this.$tagsField.select2("close"),e.preventDefault(),!1;t=this.collection.get(e.object.id),this._lastUsedTags.unshift(t.id),this._newTag=null,this.trigger("select",t)},_onDeselectTag:function(e){this.trigger("deselect",e.choice.id)},_queryTagsAutocomplete:function(e){var t=this;this.collection.fetch({success:function(n){var s=n.filterByName(e.term.trim());t._isAdmin||(s=_.filter(s,(function(e){return e.get("canAssign")}))),e.callback({results:_.invoke(s,"toJSON")})}})},_preventDefault:function(e){e.stopPropagation()},_formatDropDownResult:function(n){return c()(_.extend({renameTooltip:t("core","Rename"),allowActions:this._allowActions,tagMarkup:this._isAdmin?e.SystemTags.getDescriptiveTag(n)[0].innerHTML:null,isAdmin:this._isAdmin},n))},_formatSelection:function(t){return p()(_.extend({tagMarkup:this._isAdmin?e.SystemTags.getDescriptiveTag(t)[0].innerHTML:null,isAdmin:this._isAdmin},t))},_createSearchChoice:function(e){if(e=e.trim(),!this.collection.filter((function(t){return t.get("name")===e})).length)return this._newTag?this._newTag.name=e:this._newTag={id:-1,name:e,userAssignable:!0,userVisible:!0,canAssign:!0,isNew:!0},this._newTag},_initSelection:function(e,t){var n=this,s=$(e).val().split(",");function i(e){var t=e.toJSON();return n._isAdmin||t.canAssign||(t.locked=!0),t}this.collection.fetch({success:function(){t(function(e){var t=n.collection.filter((function(t){return e.indexOf(t.id)>=0&&(n._isAdmin||t.get("userVisible"))}));return _.map(t,i)}(s))}})},render:function(){var n=this;this.$el.html(this.template()),this.$el.find("[title]").tooltip({placement:"bottom"}),this.$tagsField=this.$el.find("[name=tags]"),this.$tagsField.select2({placeholder:t("core","Collaborative tags"),containerCssClass:"systemtags-select2-container",dropdownCssClass:"systemtags-select2-dropdown",closeOnSelect:!1,allowClear:!1,multiple:this._multiple,toggleSelect:this._multiple,query:_.bind(this._queryTagsAutocomplete,this),id:function(e){return e.id},initSelection:_.bind(this._initSelection,this),formatResult:_.bind(this._formatDropDownResult,this),formatSelection:_.bind(this._formatSelection,this),createSearchChoice:this._allowCreate?_.bind(this._createSearchChoice,this):void 0,sortResults:function(t){var s=_.pluck(n.$tagsField.select2("data"),"id");return t.sort((function(t,i){var l=s.indexOf(t.id)>=0,o=s.indexOf(i.id)>=0;if(l===o){var a=n._lastUsedTags.indexOf(t.id),c=n._lastUsedTags.indexOf(i.id);return a!==c?-1===c?-1:-1===a?1:a<c?-1:1:e.Util.naturalSortCompare(t.name,i.name)}return l&&!o?-1:1})),t},formatNoMatches:function(){return t("core","No tags found")}}).on("select2-selecting",this._onSelectTag).on("select2-removing",this._onDeselectTag);var s=this.$tagsField.select2("dropdown");s.on("mouseup",".rename",this._onClickRenameTag),s.on("mouseup",".delete",this._onClickDeleteTag),s.on("mouseup",".select2-result-selectable.has-form",this._preventDefault),s.on("submit",".systemtags-rename-form",this._onSubmitRenameTag),this.delegateEvents()},remove:function(){this.$tagsField&&this.$tagsField.select2("destroy")},getValues:function(){this.$tagsField.select2("val")},setValues:function(e){this.$tagsField.select2("val",e)},setData:function(e){this.$tagsField.select2("data",e)}});e.SystemTags=e.SystemTags||{},e.SystemTags.SystemTagsInputField=n}(OC);var m=s(93379),h=s.n(m),g=s(7795),f=s.n(g),A=s(90569),y=s.n(A),C=s(3565),b=s.n(C),v=s(19216),T=s.n(v),w=s(44589),S=s.n(w),k=s(9529),x={};x.styleTagTransform=S(),x.setAttributes=b(),x.insert=y().bind(null,"head"),x.domAPI=f(),x.insertStyleElement=T(),h()(k.Z,x),k.Z&&k.Z.locals&&k.Z.locals},53076:function(){!function(e){_.extend(e.Files.Client,{PROPERTY_FILEID:"{"+e.Files.Client.NS_OWNCLOUD+"}id",PROPERTY_CAN_ASSIGN:"{"+e.Files.Client.NS_OWNCLOUD+"}can-assign",PROPERTY_DISPLAYNAME:"{"+e.Files.Client.NS_OWNCLOUD+"}display-name",PROPERTY_USERVISIBLE:"{"+e.Files.Client.NS_OWNCLOUD+"}user-visible",PROPERTY_USERASSIGNABLE:"{"+e.Files.Client.NS_OWNCLOUD+"}user-assignable"});var t=e.Backbone.Model.extend({sync:e.Backbone.davSync,defaults:{userVisible:!0,userAssignable:!0,canAssign:!0},davProperties:{id:e.Files.Client.PROPERTY_FILEID,name:e.Files.Client.PROPERTY_DISPLAYNAME,userVisible:e.Files.Client.PROPERTY_USERVISIBLE,userAssignable:e.Files.Client.PROPERTY_USERASSIGNABLE,canAssign:e.Files.Client.PROPERTY_CAN_ASSIGN},parse:function(e){return{id:e.id,name:e.name,userVisible:!0===e.userVisible||"true"===e.userVisible,userAssignable:!0===e.userAssignable||"true"===e.userAssignable,canAssign:!0===e.canAssign||"true"===e.canAssign}}});e.SystemTags=e.SystemTags||{},e.SystemTags.SystemTagModel=t}(OC)},75026:function(){!function(e){var t=e.Backbone.Collection.extend({sync:e.Backbone.davSync,model:e.SystemTags.SystemTagModel,url:function(){return e.linkToRemote("dav")+"/systemtags/"},filterByName:function(e){return this.filter((function(t){return function(e,t){return e.get("name").substr(0,t.length).toLowerCase()===t.toLowerCase()}(t,e)}))},reset:function(){return this.fetched=!1,e.Backbone.Collection.prototype.reset.apply(this,arguments)},fetch:function(t){var n=this;if(t=t||{},this.fetched||t.force)return t.success&&t.success(this,null,t),this.trigger("sync",this,null,t),Promise.resolve();var s=t.success;return(t=_.extend({},t)).success=function(){if(n.fetched=!0,s)return s.apply(this,arguments)},e.Backbone.Collection.prototype.fetch.call(this,t)}});e.SystemTags=e.SystemTags||{},e.SystemTags.SystemTagsCollection=t,e.SystemTags.collection=new e.SystemTags.SystemTagsCollection}(OC)},9529:function(e,t,n){"use strict";var s=n(87537),i=n.n(s),l=n(23645),o=n.n(l)()(i());o.push([e.id,".systemtags-select2-dropdown .select2-result-label .checkmark{visibility:hidden;margin-left:-5px;margin-right:5px;padding:4px}.systemtags-select2-dropdown .select2-result-label .new-item .systemtags-actions{display:none}.systemtags-select2-dropdown .select2-selected .select2-result-label .checkmark{visibility:visible}.systemtags-select2-dropdown .select2-result-label .icon{display:inline-block;opacity:.5}.systemtags-select2-dropdown .select2-result-label .icon.rename{padding:4px}.systemtags-select2-dropdown .systemtags-actions{position:absolute;right:5px}.systemtags-select2-dropdown .systemtags-rename-form{display:inline-block;width:calc(100% - 20px);top:-6px;position:relative}.systemtags-select2-dropdown .systemtags-rename-form input{display:inline-block;height:30px;width:calc(100% - 40px)}.systemtags-select2-dropdown .label{width:85%;display:inline-block;overflow:hidden;text-overflow:ellipsis}.systemtags-select2-dropdown .label.hidden{display:none}.systemtags-select2-dropdown span{line-height:25px}.systemtags-select2-dropdown .systemtags-item{display:inline-block;height:25px;width:100%}.systemtags-select2-dropdown .select2-result-label{height:25px}.systemTagsInfoView,.systemtags-select2-container{width:100%}.systemTagsInfoView .select2-choices,.systemtags-select2-container .select2-choices{flex-wrap:nowrap !important;max-height:44px}.systemTagsInfoView .select2-choices .select2-search-choice.select2-locked .label,.systemtags-select2-container .select2-choices .select2-search-choice.select2-locked .label{opacity:.5}#select2-drop.systemtags-select2-dropdown .select2-results li.select2-result{padding:5px}","",{version:3,sources:["webpack://./core/css/systemtags.scss"],names:[],mappings:"AAcE,8DACC,iBAAA,CACA,gBAAA,CACA,gBAAA,CACA,WAAA,CAED,iFACC,YAAA,CAGF,gFACC,kBAAA,CAED,yDACC,oBAAA,CACA,UAAA,CACA,gEACC,WAAA,CAGF,iDACC,iBAAA,CACA,SAAA,CAED,qDACC,oBAAA,CACA,uBAAA,CACA,QAAA,CACA,iBAAA,CACA,2DACC,oBAAA,CACA,WAAA,CACA,uBAAA,CAGF,oCACC,SAAA,CACA,oBAAA,CACA,eAAA,CACA,sBAAA,CACA,2CACC,YAAA,CAGF,kCACC,gBAAA,CAED,8CACC,oBAAA,CACA,WAAA,CACA,UAAA,CAED,mDACC,WAAA,CAIF,kDAEC,UAAA,CAEA,oFACC,2BAAA,CACA,eAAA,CAGD,8KACC,UAAA,CAIF,6EACC,WAAA",sourcesContent:["/**\n * @copyright Copyright (c) 2016, John Molakvoæ <skjnldsv@protonmail.com>\n * @copyright Copyright (c) 2016, Robin Appelman <robin@icewind.nl>\n * @copyright Copyright (c) 2016, Jan-Christoph Borchardt <hey@jancborchardt.net>\n * @copyright Copyright (c) 2016, Vincent Petry <pvince81@owncloud.com>\n * @copyright Copyright (c) 2016, Erik Pellikka <erik@pellikka.org>\n * @copyright Copyright (c) 2015, Vincent Petry <pvince81@owncloud.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n */\n\n.systemtags-select2-dropdown {\n\t.select2-result-label {\n\t\t.checkmark {\n\t\t\tvisibility: hidden;\n\t\t\tmargin-left: -5px;\n\t\t\tmargin-right: 5px;\n\t\t\tpadding: 4px;\n\t\t}\n\t\t.new-item .systemtags-actions {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\t.select2-selected .select2-result-label .checkmark {\n\t\tvisibility: visible;\n\t}\n\t.select2-result-label .icon {\n\t\tdisplay: inline-block;\n\t\topacity: .5;\n\t\t&.rename {\n\t\t\tpadding: 4px;\n\t\t}\n\t}\n\t.systemtags-actions {\n\t\tposition: absolute;\n\t\tright: 5px;\n\t}\n\t.systemtags-rename-form {\n\t\tdisplay: inline-block;\n\t\twidth: calc(100% - 20px);\n\t\ttop: -6px;\n\t\tposition: relative;\n\t\tinput {\n\t\t\tdisplay: inline-block;\n\t\t\theight: 30px;\n\t\t\twidth: calc(100% - 40px);\n\t\t}\n\t}\n\t.label {\n\t\twidth: 85%;\n\t\tdisplay: inline-block;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\t&.hidden {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\tspan {\n\t\tline-height: 25px;\n\t}\n\t.systemtags-item {\n\t\tdisplay: inline-block;\n\t\theight: 25px;\n\t\twidth: 100%;\n\t}\n\t.select2-result-label {\n\t\theight: 25px;\n\t}\n}\n\n.systemTagsInfoView,\n.systemtags-select2-container {\n\twidth: 100%;\n\n\t.select2-choices {\n\t\tflex-wrap: nowrap !important;\n\t\tmax-height: 44px;\n\t}\n\n\t.select2-choices .select2-search-choice.select2-locked .label {\n\t\topacity: 0.5;\n\t}\n}\n\n#select2-drop.systemtags-select2-dropdown .select2-results li.select2-result {\n\tpadding: 5px;\n}\n"],sourceRoot:""}]),t.Z=o},69318:function(e,t,n){var s=n(40202);e.exports=(s.default||s).template({1:function(e,t,n,s,i){return" new-item"},3:function(e,t,n,s,i){var l,o,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'\t\t<span class="label">'+(null!=(l="function"==typeof(o=null!=(o=a(n,"tagMarkup")||(null!=t?a(t,"tagMarkup"):t))?o:e.hooks.helperMissing)?o.call(null!=t?t:e.nullContext||{},{name:"tagMarkup",hash:{},data:i,loc:{start:{line:4,column:22},end:{line:4,column:37}}}):o)?l:"")+"</span>\n"},5:function(e,t,n,s,i){var l,o=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'\t\t<span class="label">'+e.escapeExpression("function"==typeof(l=null!=(l=o(n,"name")||(null!=t?o(t,"name"):t))?l:e.hooks.helperMissing)?l.call(null!=t?t:e.nullContext||{},{name:"name",hash:{},data:i,loc:{start:{line:6,column:22},end:{line:6,column:30}}}):l)+"</span>\n"},7:function(e,t,n,s,i){var l,o=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'\t\t<span class="systemtags-actions">\n\t\t\t<a href="#" class="rename icon icon-rename" title="'+e.escapeExpression("function"==typeof(l=null!=(l=o(n,"renameTooltip")||(null!=t?o(t,"renameTooltip"):t))?l:e.hooks.helperMissing)?l.call(null!=t?t:e.nullContext||{},{name:"renameTooltip",hash:{},data:i,loc:{start:{line:10,column:54},end:{line:10,column:71}}}):l)+'"></a>\n\t\t</span>\n'},compiler:[8,">= 4.3.0"],main:function(e,t,n,s,i){var l,o,a,c=null!=t?t:e.nullContext||{},r=e.hooks.helperMissing,u="function",d=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]},p='<span class="systemtags-item'+(null!=(l=d(n,"if").call(c,null!=t?d(t,"isNew"):t,{name:"if",hash:{},fn:e.program(1,i,0),inverse:e.noop,data:i,loc:{start:{line:1,column:28},end:{line:1,column:57}}}))?l:"")+'" data-id="'+e.escapeExpression(typeof(o=null!=(o=d(n,"id")||(null!=t?d(t,"id"):t))?o:r)===u?o.call(c,{name:"id",hash:{},data:i,loc:{start:{line:1,column:68},end:{line:1,column:74}}}):o)+'">\n<span class="checkmark icon icon-checkmark"></span>\n'+(null!=(l=d(n,"if").call(c,null!=t?d(t,"isAdmin"):t,{name:"if",hash:{},fn:e.program(3,i,0),inverse:e.program(5,i,0),data:i,loc:{start:{line:3,column:1},end:{line:7,column:8}}}))?l:"");return o=null!=(o=d(n,"allowActions")||(null!=t?d(t,"allowActions"):t))?o:r,a={name:"allowActions",hash:{},fn:e.program(7,i,0),inverse:e.noop,data:i,loc:{start:{line:8,column:1},end:{line:12,column:18}}},l=typeof o===u?o.call(c,a):o,d(n,"allowActions")||(l=e.hooks.blockHelperMissing.call(t,l,a)),null!=l&&(p+=l),p+"</span>\n"},useData:!0})},25759:function(e,t,n){var s=n(40202);e.exports=(s.default||s).template({1:function(e,t,n,s,i){var l,o=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'\t\t<a href="#" class="delete icon icon-delete" title="'+e.escapeExpression("function"==typeof(l=null!=(l=o(n,"deleteTooltip")||(null!=t?o(t,"deleteTooltip"):t))?l:e.hooks.helperMissing)?l.call(null!=t?t:e.nullContext||{},{name:"deleteTooltip",hash:{},data:i,loc:{start:{line:5,column:53},end:{line:5,column:70}}}):l)+'"></a>\n'},compiler:[8,">= 4.3.0"],main:function(e,t,n,s,i){var l,o,a=null!=t?t:e.nullContext||{},c=e.hooks.helperMissing,r="function",u=e.escapeExpression,d=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<form class="systemtags-rename-form">\n\t <label class="hidden-visually" for="'+u(typeof(o=null!=(o=d(n,"cid")||(null!=t?d(t,"cid"):t))?o:c)===r?o.call(a,{name:"cid",hash:{},data:i,loc:{start:{line:2,column:38},end:{line:2,column:45}}}):o)+'-rename-input">'+u(typeof(o=null!=(o=d(n,"renameLabel")||(null!=t?d(t,"renameLabel"):t))?o:c)===r?o.call(a,{name:"renameLabel",hash:{},data:i,loc:{start:{line:2,column:60},end:{line:2,column:75}}}):o)+'</label>\n\t<input id="'+u(typeof(o=null!=(o=d(n,"cid")||(null!=t?d(t,"cid"):t))?o:c)===r?o.call(a,{name:"cid",hash:{},data:i,loc:{start:{line:3,column:12},end:{line:3,column:19}}}):o)+'-rename-input" type="text" value="'+u(typeof(o=null!=(o=d(n,"name")||(null!=t?d(t,"name"):t))?o:c)===r?o.call(a,{name:"name",hash:{},data:i,loc:{start:{line:3,column:53},end:{line:3,column:61}}}):o)+'">\n'+(null!=(l=d(n,"if").call(a,null!=t?d(t,"isAdmin"):t,{name:"if",hash:{},fn:e.program(1,i,0),inverse:e.noop,data:i,loc:{start:{line:4,column:1},end:{line:6,column:8}}}))?l:"")+"</form>\n"},useData:!0})},82188:function(e,t,n){var s=n(40202);e.exports=(s.default||s).template({1:function(e,t,n,s,i){var l,o,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'\t<span class="label">'+(null!=(l="function"==typeof(o=null!=(o=a(n,"tagMarkup")||(null!=t?a(t,"tagMarkup"):t))?o:e.hooks.helperMissing)?o.call(null!=t?t:e.nullContext||{},{name:"tagMarkup",hash:{},data:i,loc:{start:{line:2,column:21},end:{line:2,column:36}}}):o)?l:"")+"</span>\n"},3:function(e,t,n,s,i){var l,o=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'\t<span class="label">'+e.escapeExpression("function"==typeof(l=null!=(l=o(n,"name")||(null!=t?o(t,"name"):t))?l:e.hooks.helperMissing)?l.call(null!=t?t:e.nullContext||{},{name:"name",hash:{},data:i,loc:{start:{line:4,column:21},end:{line:4,column:29}}}):l)+"</span>\n"},compiler:[8,">= 4.3.0"],main:function(e,t,n,s,i){var l,o=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return null!=(l=o(n,"if").call(null!=t?t:e.nullContext||{},null!=t?o(t,"isAdmin"):t,{name:"if",hash:{},fn:e.program(1,i,0),inverse:e.program(3,i,0),data:i,loc:{start:{line:1,column:0},end:{line:5,column:7}}}))?l:""},useData:!0})}},s={};function i(e){var t=s[e];if(void 0!==t)return t.exports;var l=s[e]={id:e,loaded:!1,exports:{}};return n[e].call(l.exports,l,l.exports,i),l.loaded=!0,l.exports}i.m=n,i.amdD=function(){throw new Error("define cannot be used indirect")},i.amdO={},e=[],i.O=function(t,n,s,l){if(!n){var o=1/0;for(u=0;u<e.length;u++){n=e[u][0],s=e[u][1],l=e[u][2];for(var a=!0,c=0;c<n.length;c++)(!1&l||o>=l)&&Object.keys(i.O).every((function(e){return i.O[e](n[c])}))?n.splice(c--,1):(a=!1,l<o&&(o=l));if(a){e.splice(u--,1);var r=s();void 0!==r&&(t=r)}}return t}l=l||0;for(var u=e.length;u>0&&e[u-1][2]>l;u--)e[u]=e[u-1];e[u]=[n,s,l]},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,{a:t}),t},i.d=function(e,t){for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},i.j=1686,function(){i.b=document.baseURI||self.location.href;var e={1686:0};i.O.j=function(t){return 0===e[t]};var t=function(t,n){var s,l,o=n[0],a=n[1],c=n[2],r=0;if(o.some((function(t){return 0!==e[t]}))){for(s in a)i.o(a,s)&&(i.m[s]=a[s]);if(c)var u=c(i)}for(t&&t(n);r<o.length;r++)l=o[r],i.o(e,l)&&e[l]&&e[l][0](),e[l]=0;return i.O(u)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))}();var l=i.O(void 0,[7874],(function(){return i(16558)}));l=i.O(l)}();
-//# sourceMappingURL=core-systemtags.js.map?v=fb59502adcf28259f946 \ No newline at end of file
+!function(){var e,n={16558:function(e,n,s){"use strict";var i=s(95573),l=s.n(i);!function(e){e.SystemTags={getDescriptiveTag:function(e){if(_.isUndefined(e.name)&&!_.isUndefined(e.toJSON)&&(e=e.toJSON()),_.isUndefined(e.name))return $("<span>").addClass("non-existing-tag").text(t("core","Non-existing tag #{tag}",{tag:e}));var n,s=$("<span>");return s.append(l()(e.name)),e.userAssignable||(n=t("core","restricted")),e.userVisible||(n=t("core","invisible")),n&&s.append($("<em>").text(" ("+n+")")),s}}}(OC),s(53076);var o=s(79753);!function(e){var t=e.Backbone.Collection.extend({sync:e.Backbone.davSync,usePUT:!0,_objectId:null,_objectType:"files",model:e.SystemTags.SystemTagModel,url:function(){return(0,o.generateRemoteUrl)("dav")+"/systemtags-relations/"+this._objectType+"/"+this._objectId},setObjectId:function(e){this._objectId=e},setObjectType:function(e){this._objectType=e},initialize:function(e,t){t=t||{},_.isUndefined(t.objectId)||(this._objectId=t.objectId),_.isUndefined(t.objectType)||(this._objectType=t.objectType)},getTagIds:function(){return this.map((function(e){return e.id}))}});e.SystemTags=e.SystemTags||{},e.SystemTags.SystemTagsMappingCollection=t}(OC),s(75026);var a=s(69318),c=s.n(a),r=s(25759),u=s.n(r),d=s(82188),p=s.n(d);!function(e){var n=e.Backbone.View.extend({_rendered:!1,_newTag:null,_lastUsedTags:[],className:"systemTagsInputFieldContainer",template:function(e){return'<input class="systemTagsInputField" type="hidden" name="tags" value=""/>'},initialize:function(t){t=t||{},this._multiple=!!t.multiple,this._allowActions=_.isUndefined(t.allowActions)||!!t.allowActions,this._allowCreate=_.isUndefined(t.allowCreate)||!!t.allowCreate,this._isAdmin=!!t.isAdmin,_.isFunction(t.initSelection)&&(this._initSelection=t.initSelection),this.collection=t.collection||e.SystemTags.collection;var n=this;this.collection.on("change:name remove",(function(){_.defer(n._refreshSelection)})),_.defer(_.bind(this._getLastUsedTags,this)),_.bindAll(this,"_refreshSelection","_onClickRenameTag","_onClickDeleteTag","_onSelectTag","_onDeselectTag","_onSubmitRenameTag")},_getLastUsedTags:function(){var t=this;$.ajax({type:"GET",url:e.generateUrl("/apps/systemtags/lastused"),success:function(e){t._lastUsedTags=e}})},_refreshSelection:function(){this.$tagsField.select2("val",this.$tagsField.val())},_onClickRenameTag:function(e){var n=$(e.target).closest(".systemtags-item"),s=n.attr("data-id"),i=this.collection.get(s).get("name"),l=$(u()({cid:this.cid,name:i,deleteTooltip:t("core","Delete"),renameLabel:t("core","Rename"),isAdmin:this._isAdmin}));return n.find(".label").after(l),n.find(".label, .systemtags-actions").addClass("hidden"),n.closest(".select2-result").addClass("has-form"),l.find("[title]").tooltip({placement:"bottom",container:"body"}),l.find("input").focus().selectRange(0,i.length),!1},_onSubmitRenameTag:function(e){e.preventDefault();var t=$(e.target),n=t.closest(".systemtags-item"),s=n.attr("data-id"),i=this.collection.get(s),l=$(e.target).find("input").val().trim();l&&l!==i.get("name")&&(i.save({name:l}),n.find(".label").text(l)),n.find(".label, .systemtags-actions").removeClass("hidden"),t.remove(),n.closest(".select2-result").removeClass("has-form")},_onClickDeleteTag:function(e){var t=$(e.target).closest(".systemtags-item"),n=t.attr("data-id");return this.collection.get(n).destroy(),$(e.target).tooltip("hide"),t.closest(".select2-result").remove(),!1},_addToSelect2Selection:function(e){var t=this.$tagsField.select2("data");t.push(e),this.$tagsField.select2("data",t)},_onSelectTag:function(e){var t,n=this;if(e.object&&e.object.isNew)return t=this.collection.create({name:e.object.name.trim(),userVisible:!0,userAssignable:!0,canAssign:!0},{success:function(e){n._addToSelect2Selection(e.toJSON()),n._lastUsedTags.unshift(e.id),n.trigger("select",e)},error:function(t,s){409===s.status&&(n.collection.reset(),n.collection.fetch({success:function(t){var s=t.where({name:e.object.name.trim(),userVisible:!0,userAssignable:!0});s.length&&(s=s[0],n._addToSelect2Selection(s.toJSON()),n.trigger("select",s))}}))}}),this.$tagsField.select2("close"),e.preventDefault(),!1;t=this.collection.get(e.object.id),this._lastUsedTags.unshift(t.id),this._newTag=null,this.trigger("select",t)},_onDeselectTag:function(e){this.trigger("deselect",e.choice.id)},_queryTagsAutocomplete:function(e){var t=this;this.collection.fetch({success:function(n){var s=n.filterByName(e.term.trim());t._isAdmin||(s=_.filter(s,(function(e){return e.get("canAssign")}))),e.callback({results:_.invoke(s,"toJSON")})}})},_preventDefault:function(e){e.stopPropagation()},_formatDropDownResult:function(n){return c()(_.extend({renameTooltip:t("core","Rename"),allowActions:this._allowActions,tagMarkup:this._isAdmin?e.SystemTags.getDescriptiveTag(n)[0].innerHTML:null,isAdmin:this._isAdmin},n))},_formatSelection:function(t){return p()(_.extend({tagMarkup:this._isAdmin?e.SystemTags.getDescriptiveTag(t)[0].innerHTML:null,isAdmin:this._isAdmin},t))},_createSearchChoice:function(e){if(e=e.trim(),!this.collection.filter((function(t){return t.get("name")===e})).length)return this._newTag?this._newTag.name=e:this._newTag={id:-1,name:e,userAssignable:!0,userVisible:!0,canAssign:!0,isNew:!0},this._newTag},_initSelection:function(e,t){var n=this,s=$(e).val().split(",");function i(e){var t=e.toJSON();return n._isAdmin||t.canAssign||(t.locked=!0),t}this.collection.fetch({success:function(){t(function(e){var t=n.collection.filter((function(t){return e.indexOf(t.id)>=0&&(n._isAdmin||t.get("userVisible"))}));return _.map(t,i)}(s))}})},render:function(){var n=this;this.$el.html(this.template()),this.$el.find("[title]").tooltip({placement:"bottom"}),this.$tagsField=this.$el.find("[name=tags]"),this.$tagsField.select2({placeholder:t("core","Collaborative tags"),containerCssClass:"systemtags-select2-container",dropdownCssClass:"systemtags-select2-dropdown",closeOnSelect:!1,allowClear:!1,multiple:this._multiple,toggleSelect:this._multiple,query:_.bind(this._queryTagsAutocomplete,this),id:function(e){return e.id},initSelection:_.bind(this._initSelection,this),formatResult:_.bind(this._formatDropDownResult,this),formatSelection:_.bind(this._formatSelection,this),createSearchChoice:this._allowCreate?_.bind(this._createSearchChoice,this):void 0,sortResults:function(t){var s=_.pluck(n.$tagsField.select2("data"),"id");return t.sort((function(t,i){var l=s.indexOf(t.id)>=0,o=s.indexOf(i.id)>=0;if(l===o){var a=n._lastUsedTags.indexOf(t.id),c=n._lastUsedTags.indexOf(i.id);return a!==c?-1===c?-1:-1===a?1:a<c?-1:1:e.Util.naturalSortCompare(t.name,i.name)}return l&&!o?-1:1})),t},formatNoMatches:function(){return t("core","No tags found")}}).on("select2-selecting",this._onSelectTag).on("select2-removing",this._onDeselectTag);var s=this.$tagsField.select2("dropdown");s.on("mouseup",".rename",this._onClickRenameTag),s.on("mouseup",".delete",this._onClickDeleteTag),s.on("mouseup",".select2-result-selectable.has-form",this._preventDefault),s.on("submit",".systemtags-rename-form",this._onSubmitRenameTag),this.delegateEvents()},remove:function(){this.$tagsField&&this.$tagsField.select2("destroy")},getValues:function(){this.$tagsField.select2("val")},setValues:function(e){this.$tagsField.select2("val",e)},setData:function(e){this.$tagsField.select2("data",e)}});e.SystemTags=e.SystemTags||{},e.SystemTags.SystemTagsInputField=n}(OC);var m=s(93379),h=s.n(m),g=s(7795),f=s.n(g),A=s(90569),y=s.n(A),C=s(3565),b=s.n(C),v=s(19216),T=s.n(v),w=s(44589),S=s.n(w),k=s(9529),x={};x.styleTagTransform=S(),x.setAttributes=b(),x.insert=y().bind(null,"head"),x.domAPI=f(),x.insertStyleElement=T(),h()(k.Z,x),k.Z&&k.Z.locals&&k.Z.locals},53076:function(){!function(e){_.extend(e.Files.Client,{PROPERTY_FILEID:"{"+e.Files.Client.NS_OWNCLOUD+"}id",PROPERTY_CAN_ASSIGN:"{"+e.Files.Client.NS_OWNCLOUD+"}can-assign",PROPERTY_DISPLAYNAME:"{"+e.Files.Client.NS_OWNCLOUD+"}display-name",PROPERTY_USERVISIBLE:"{"+e.Files.Client.NS_OWNCLOUD+"}user-visible",PROPERTY_USERASSIGNABLE:"{"+e.Files.Client.NS_OWNCLOUD+"}user-assignable"});var t=e.Backbone.Model.extend({sync:e.Backbone.davSync,defaults:{userVisible:!0,userAssignable:!0,canAssign:!0},davProperties:{id:e.Files.Client.PROPERTY_FILEID,name:e.Files.Client.PROPERTY_DISPLAYNAME,userVisible:e.Files.Client.PROPERTY_USERVISIBLE,userAssignable:e.Files.Client.PROPERTY_USERASSIGNABLE,canAssign:e.Files.Client.PROPERTY_CAN_ASSIGN},parse:function(e){return{id:e.id,name:e.name,userVisible:!0===e.userVisible||"true"===e.userVisible,userAssignable:!0===e.userAssignable||"true"===e.userAssignable,canAssign:!0===e.canAssign||"true"===e.canAssign}}});e.SystemTags=e.SystemTags||{},e.SystemTags.SystemTagModel=t}(OC)},75026:function(){!function(e){var t=e.Backbone.Collection.extend({sync:e.Backbone.davSync,model:e.SystemTags.SystemTagModel,url:function(){return e.linkToRemote("dav")+"/systemtags/"},filterByName:function(e){return this.filter((function(t){return function(e,t){return e.get("name").substr(0,t.length).toLowerCase()===t.toLowerCase()}(t,e)}))},reset:function(){return this.fetched=!1,e.Backbone.Collection.prototype.reset.apply(this,arguments)},fetch:function(t){var n=this;if(t=t||{},this.fetched||t.force)return t.success&&t.success(this,null,t),this.trigger("sync",this,null,t),Promise.resolve();var s=t.success;return(t=_.extend({},t)).success=function(){if(n.fetched=!0,s)return s.apply(this,arguments)},e.Backbone.Collection.prototype.fetch.call(this,t)}});e.SystemTags=e.SystemTags||{},e.SystemTags.SystemTagsCollection=t,e.SystemTags.collection=new e.SystemTags.SystemTagsCollection}(OC)},9529:function(e,t,n){"use strict";var s=n(87537),i=n.n(s),l=n(23645),o=n.n(l)()(i());o.push([e.id,".systemtags-select2-dropdown .select2-result-label .checkmark{visibility:hidden;margin-left:-5px;margin-right:5px;padding:4px}.systemtags-select2-dropdown .select2-result-label .new-item .systemtags-actions{display:none}.systemtags-select2-dropdown .select2-selected .select2-result-label .checkmark{visibility:visible}.systemtags-select2-dropdown .select2-result-label .icon{display:inline-block;opacity:.5}.systemtags-select2-dropdown .select2-result-label .icon.rename{padding:4px}.systemtags-select2-dropdown .systemtags-actions{position:absolute;right:5px}.systemtags-select2-dropdown .systemtags-rename-form{display:inline-block;width:calc(100% - 20px);top:-6px;position:relative}.systemtags-select2-dropdown .systemtags-rename-form input{display:inline-block;height:30px;width:calc(100% - 40px)}.systemtags-select2-dropdown .label{width:85%;display:inline-block;overflow:hidden;text-overflow:ellipsis}.systemtags-select2-dropdown .label.hidden{display:none}.systemtags-select2-dropdown span{line-height:25px}.systemtags-select2-dropdown .systemtags-item{display:inline-block;height:25px;width:100%}.systemtags-select2-dropdown .select2-result-label{height:25px}.systemTagsInfoView,.systemtags-select2-container{width:100%}.systemTagsInfoView .select2-choices,.systemtags-select2-container .select2-choices{flex-wrap:nowrap !important;max-height:44px}.systemTagsInfoView .select2-choices .select2-search-choice.select2-locked .label,.systemtags-select2-container .select2-choices .select2-search-choice.select2-locked .label{opacity:.5}#select2-drop.systemtags-select2-dropdown .select2-results li.select2-result{padding:5px}","",{version:3,sources:["webpack://./core/css/systemtags.scss"],names:[],mappings:"AAcE,8DACC,iBAAA,CACA,gBAAA,CACA,gBAAA,CACA,WAAA,CAED,iFACC,YAAA,CAGF,gFACC,kBAAA,CAED,yDACC,oBAAA,CACA,UAAA,CACA,gEACC,WAAA,CAGF,iDACC,iBAAA,CACA,SAAA,CAED,qDACC,oBAAA,CACA,uBAAA,CACA,QAAA,CACA,iBAAA,CACA,2DACC,oBAAA,CACA,WAAA,CACA,uBAAA,CAGF,oCACC,SAAA,CACA,oBAAA,CACA,eAAA,CACA,sBAAA,CACA,2CACC,YAAA,CAGF,kCACC,gBAAA,CAED,8CACC,oBAAA,CACA,WAAA,CACA,UAAA,CAED,mDACC,WAAA,CAIF,kDAEC,UAAA,CAEA,oFACC,2BAAA,CACA,eAAA,CAGD,8KACC,UAAA,CAIF,6EACC,WAAA",sourcesContent:["/**\n * @copyright Copyright (c) 2016, John Molakvoæ <skjnldsv@protonmail.com>\n * @copyright Copyright (c) 2016, Robin Appelman <robin@icewind.nl>\n * @copyright Copyright (c) 2016, Jan-Christoph Borchardt <hey@jancborchardt.net>\n * @copyright Copyright (c) 2016, Vincent Petry <pvince81@owncloud.com>\n * @copyright Copyright (c) 2016, Erik Pellikka <erik@pellikka.org>\n * @copyright Copyright (c) 2015, Vincent Petry <pvince81@owncloud.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n */\n\n.systemtags-select2-dropdown {\n\t.select2-result-label {\n\t\t.checkmark {\n\t\t\tvisibility: hidden;\n\t\t\tmargin-left: -5px;\n\t\t\tmargin-right: 5px;\n\t\t\tpadding: 4px;\n\t\t}\n\t\t.new-item .systemtags-actions {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\t.select2-selected .select2-result-label .checkmark {\n\t\tvisibility: visible;\n\t}\n\t.select2-result-label .icon {\n\t\tdisplay: inline-block;\n\t\topacity: .5;\n\t\t&.rename {\n\t\t\tpadding: 4px;\n\t\t}\n\t}\n\t.systemtags-actions {\n\t\tposition: absolute;\n\t\tright: 5px;\n\t}\n\t.systemtags-rename-form {\n\t\tdisplay: inline-block;\n\t\twidth: calc(100% - 20px);\n\t\ttop: -6px;\n\t\tposition: relative;\n\t\tinput {\n\t\t\tdisplay: inline-block;\n\t\t\theight: 30px;\n\t\t\twidth: calc(100% - 40px);\n\t\t}\n\t}\n\t.label {\n\t\twidth: 85%;\n\t\tdisplay: inline-block;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\t&.hidden {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\tspan {\n\t\tline-height: 25px;\n\t}\n\t.systemtags-item {\n\t\tdisplay: inline-block;\n\t\theight: 25px;\n\t\twidth: 100%;\n\t}\n\t.select2-result-label {\n\t\theight: 25px;\n\t}\n}\n\n.systemTagsInfoView,\n.systemtags-select2-container {\n\twidth: 100%;\n\n\t.select2-choices {\n\t\tflex-wrap: nowrap !important;\n\t\tmax-height: 44px;\n\t}\n\n\t.select2-choices .select2-search-choice.select2-locked .label {\n\t\topacity: 0.5;\n\t}\n}\n\n#select2-drop.systemtags-select2-dropdown .select2-results li.select2-result {\n\tpadding: 5px;\n}\n"],sourceRoot:""}]),t.Z=o},69318:function(e,t,n){var s=n(40202);e.exports=(s.default||s).template({1:function(e,t,n,s,i){return" new-item"},3:function(e,t,n,s,i){var l,o,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'\t\t<span class="label">'+(null!=(l="function"==typeof(o=null!=(o=a(n,"tagMarkup")||(null!=t?a(t,"tagMarkup"):t))?o:e.hooks.helperMissing)?o.call(null!=t?t:e.nullContext||{},{name:"tagMarkup",hash:{},data:i,loc:{start:{line:4,column:22},end:{line:4,column:37}}}):o)?l:"")+"</span>\n"},5:function(e,t,n,s,i){var l,o=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'\t\t<span class="label">'+e.escapeExpression("function"==typeof(l=null!=(l=o(n,"name")||(null!=t?o(t,"name"):t))?l:e.hooks.helperMissing)?l.call(null!=t?t:e.nullContext||{},{name:"name",hash:{},data:i,loc:{start:{line:6,column:22},end:{line:6,column:30}}}):l)+"</span>\n"},7:function(e,t,n,s,i){var l,o=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'\t\t<span class="systemtags-actions">\n\t\t\t<a href="#" class="rename icon icon-rename" title="'+e.escapeExpression("function"==typeof(l=null!=(l=o(n,"renameTooltip")||(null!=t?o(t,"renameTooltip"):t))?l:e.hooks.helperMissing)?l.call(null!=t?t:e.nullContext||{},{name:"renameTooltip",hash:{},data:i,loc:{start:{line:10,column:54},end:{line:10,column:71}}}):l)+'"></a>\n\t\t</span>\n'},compiler:[8,">= 4.3.0"],main:function(e,t,n,s,i){var l,o,a,c=null!=t?t:e.nullContext||{},r=e.hooks.helperMissing,u="function",d=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]},p='<span class="systemtags-item'+(null!=(l=d(n,"if").call(c,null!=t?d(t,"isNew"):t,{name:"if",hash:{},fn:e.program(1,i,0),inverse:e.noop,data:i,loc:{start:{line:1,column:28},end:{line:1,column:57}}}))?l:"")+'" data-id="'+e.escapeExpression(typeof(o=null!=(o=d(n,"id")||(null!=t?d(t,"id"):t))?o:r)===u?o.call(c,{name:"id",hash:{},data:i,loc:{start:{line:1,column:68},end:{line:1,column:74}}}):o)+'">\n<span class="checkmark icon icon-checkmark"></span>\n'+(null!=(l=d(n,"if").call(c,null!=t?d(t,"isAdmin"):t,{name:"if",hash:{},fn:e.program(3,i,0),inverse:e.program(5,i,0),data:i,loc:{start:{line:3,column:1},end:{line:7,column:8}}}))?l:"");return o=null!=(o=d(n,"allowActions")||(null!=t?d(t,"allowActions"):t))?o:r,a={name:"allowActions",hash:{},fn:e.program(7,i,0),inverse:e.noop,data:i,loc:{start:{line:8,column:1},end:{line:12,column:18}}},l=typeof o===u?o.call(c,a):o,d(n,"allowActions")||(l=e.hooks.blockHelperMissing.call(t,l,a)),null!=l&&(p+=l),p+"</span>\n"},useData:!0})},25759:function(e,t,n){var s=n(40202);e.exports=(s.default||s).template({1:function(e,t,n,s,i){var l,o=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'\t\t<a href="#" class="delete icon icon-delete" title="'+e.escapeExpression("function"==typeof(l=null!=(l=o(n,"deleteTooltip")||(null!=t?o(t,"deleteTooltip"):t))?l:e.hooks.helperMissing)?l.call(null!=t?t:e.nullContext||{},{name:"deleteTooltip",hash:{},data:i,loc:{start:{line:5,column:53},end:{line:5,column:70}}}):l)+'"></a>\n'},compiler:[8,">= 4.3.0"],main:function(e,t,n,s,i){var l,o,a=null!=t?t:e.nullContext||{},c=e.hooks.helperMissing,r="function",u=e.escapeExpression,d=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'<form class="systemtags-rename-form">\n\t <label class="hidden-visually" for="'+u(typeof(o=null!=(o=d(n,"cid")||(null!=t?d(t,"cid"):t))?o:c)===r?o.call(a,{name:"cid",hash:{},data:i,loc:{start:{line:2,column:38},end:{line:2,column:45}}}):o)+'-rename-input">'+u(typeof(o=null!=(o=d(n,"renameLabel")||(null!=t?d(t,"renameLabel"):t))?o:c)===r?o.call(a,{name:"renameLabel",hash:{},data:i,loc:{start:{line:2,column:60},end:{line:2,column:75}}}):o)+'</label>\n\t<input id="'+u(typeof(o=null!=(o=d(n,"cid")||(null!=t?d(t,"cid"):t))?o:c)===r?o.call(a,{name:"cid",hash:{},data:i,loc:{start:{line:3,column:12},end:{line:3,column:19}}}):o)+'-rename-input" type="text" value="'+u(typeof(o=null!=(o=d(n,"name")||(null!=t?d(t,"name"):t))?o:c)===r?o.call(a,{name:"name",hash:{},data:i,loc:{start:{line:3,column:53},end:{line:3,column:61}}}):o)+'">\n'+(null!=(l=d(n,"if").call(a,null!=t?d(t,"isAdmin"):t,{name:"if",hash:{},fn:e.program(1,i,0),inverse:e.noop,data:i,loc:{start:{line:4,column:1},end:{line:6,column:8}}}))?l:"")+"</form>\n"},useData:!0})},82188:function(e,t,n){var s=n(40202);e.exports=(s.default||s).template({1:function(e,t,n,s,i){var l,o,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'\t<span class="label">'+(null!=(l="function"==typeof(o=null!=(o=a(n,"tagMarkup")||(null!=t?a(t,"tagMarkup"):t))?o:e.hooks.helperMissing)?o.call(null!=t?t:e.nullContext||{},{name:"tagMarkup",hash:{},data:i,loc:{start:{line:2,column:21},end:{line:2,column:36}}}):o)?l:"")+"</span>\n"},3:function(e,t,n,s,i){var l,o=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'\t<span class="label">'+e.escapeExpression("function"==typeof(l=null!=(l=o(n,"name")||(null!=t?o(t,"name"):t))?l:e.hooks.helperMissing)?l.call(null!=t?t:e.nullContext||{},{name:"name",hash:{},data:i,loc:{start:{line:4,column:21},end:{line:4,column:29}}}):l)+"</span>\n"},compiler:[8,">= 4.3.0"],main:function(e,t,n,s,i){var l,o=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return null!=(l=o(n,"if").call(null!=t?t:e.nullContext||{},null!=t?o(t,"isAdmin"):t,{name:"if",hash:{},fn:e.program(1,i,0),inverse:e.program(3,i,0),data:i,loc:{start:{line:1,column:0},end:{line:5,column:7}}}))?l:""},useData:!0})}},s={};function i(e){var t=s[e];if(void 0!==t)return t.exports;var l=s[e]={id:e,loaded:!1,exports:{}};return n[e].call(l.exports,l,l.exports,i),l.loaded=!0,l.exports}i.m=n,i.amdD=function(){throw new Error("define cannot be used indirect")},i.amdO={},e=[],i.O=function(t,n,s,l){if(!n){var o=1/0;for(u=0;u<e.length;u++){n=e[u][0],s=e[u][1],l=e[u][2];for(var a=!0,c=0;c<n.length;c++)(!1&l||o>=l)&&Object.keys(i.O).every((function(e){return i.O[e](n[c])}))?n.splice(c--,1):(a=!1,l<o&&(o=l));if(a){e.splice(u--,1);var r=s();void 0!==r&&(t=r)}}return t}l=l||0;for(var u=e.length;u>0&&e[u-1][2]>l;u--)e[u]=e[u-1];e[u]=[n,s,l]},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,{a:t}),t},i.d=function(e,t){for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},i.j=1686,function(){i.b=document.baseURI||self.location.href;var e={1686:0};i.O.j=function(t){return 0===e[t]};var t=function(t,n){var s,l,o=n[0],a=n[1],c=n[2],r=0;if(o.some((function(t){return 0!==e[t]}))){for(s in a)i.o(a,s)&&(i.m[s]=a[s]);if(c)var u=c(i)}for(t&&t(n);r<o.length;r++)l=o[r],i.o(e,l)&&e[l]&&e[l][0](),e[l]=0;return i.O(u)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))}(),i.nc=void 0;var l=i.O(void 0,[7874],(function(){return i(16558)}));l=i.O(l)}();
+//# sourceMappingURL=core-systemtags.js.map?v=47675efc1feed2a45be1 \ No newline at end of file
diff --git a/dist/core-systemtags.js.map b/dist/core-systemtags.js.map
index e3fc83cdbf7..77886771fd5 100644
--- a/dist/core-systemtags.js.map
+++ b/dist/core-systemtags.js.map
@@ -1 +1 @@
-{"version":3,"file":"core-systemtags.js?v=fb59502adcf28259f946","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/systemtags/systemtags.js","webpack:///nextcloud/core/src/systemtags/systemtagsmappingcollection.js","webpack:///nextcloud/core/src/systemtags/systemtagsinputfield.js","webpack://nextcloud/./core/css/systemtags.scss?38f5","webpack:///nextcloud/core/src/systemtags/systemtagmodel.js","webpack:///nextcloud/core/src/systemtags/systemtagscollection.js","webpack:///nextcloud/core/css/systemtags.scss","webpack:///nextcloud/core/src/systemtags/templates/result.handlebars","webpack:///nextcloud/core/src/systemtags/templates/result_form.handlebars","webpack:///nextcloud/core/src/systemtags/templates/selection.handlebars","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 (c) 2016\n *\n * @author Gary Kim <gary@garykim.dev>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n/* eslint-disable */\nimport escapeHTML from 'escape-html'\n\n(function(OC) {\n\t/**\n\t * @namespace\n\t */\n\tOC.SystemTags = {\n\t\t/**\n\t\t *\n\t\t * @param {OC.SystemTags.SystemTagModel|Object|String} tag\n\t\t * @returns {jQuery}\n\t\t */\n\t\tgetDescriptiveTag: function(tag) {\n\t\t\tif (_.isUndefined(tag.name) && !_.isUndefined(tag.toJSON)) {\n\t\t\t\ttag = tag.toJSON()\n\t\t\t}\n\n\t\t\tif (_.isUndefined(tag.name)) {\n\t\t\t\treturn $('<span>').addClass('non-existing-tag').text(\n\t\t\t\t\tt('core', 'Non-existing tag #{tag}', {\n\t\t\t\t\t\ttag: tag\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tvar $span = $('<span>')\n\t\t\t$span.append(escapeHTML(tag.name))\n\n\t\t\tvar scope\n\t\t\tif (!tag.userAssignable) {\n\t\t\t\tscope = t('core', 'restricted')\n\t\t\t}\n\t\t\tif (!tag.userVisible) {\n\t\t\t\t// invisible also implicitly means not assignable\n\t\t\t\tscope = t('core', 'invisible')\n\t\t\t}\n\t\t\tif (scope) {\n\t\t\t\t$span.append($('<em>').text(' (' + scope + ')'))\n\t\t\t}\n\t\t\treturn $span\n\t\t}\n\t}\n})(OC)\n","/**\n * Copyright (c) 2015\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\nimport { generateRemoteUrl } from '@nextcloud/router'\n\n(function(OC) {\n\t/**\n\t * @class OC.SystemTags.SystemTagsMappingCollection\n\t * @classdesc\n\t *\n\t * Collection of tags assigned to a an object\n\t *\n\t */\n\tconst SystemTagsMappingCollection = OC.Backbone.Collection.extend(\n\t\t/** @lends OC.SystemTags.SystemTagsMappingCollection.prototype */ {\n\n\t\t\tsync: OC.Backbone.davSync,\n\n\t\t\t/**\n\t\t\t * Use PUT instead of PROPPATCH\n\t\t\t */\n\t\t\tusePUT: true,\n\n\t\t\t/**\n\t\t\t * Id of the file for which to filter activities by\n\t\t\t *\n\t\t\t * @member int\n\t\t\t */\n\t\t\t_objectId: null,\n\n\t\t\t/**\n\t\t\t * Type of the object to filter by\n\t\t\t *\n\t\t\t * @member string\n\t\t\t */\n\t\t\t_objectType: 'files',\n\n\t\t\tmodel: OC.SystemTags.SystemTagModel,\n\n\t\t\turl() {\n\t\t\t\treturn generateRemoteUrl('dav') + '/systemtags-relations/' + this._objectType + '/' + this._objectId\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Sets the object id to filter by or null for all.\n\t\t\t *\n\t\t\t * @param {number} objectId file id or null\n\t\t\t */\n\t\t\tsetObjectId(objectId) {\n\t\t\t\tthis._objectId = objectId\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Sets the object type to filter by or null for all.\n\t\t\t *\n\t\t\t * @param {number} objectType file id or null\n\t\t\t */\n\t\t\tsetObjectType(objectType) {\n\t\t\t\tthis._objectType = objectType\n\t\t\t},\n\n\t\t\tinitialize(models, options) {\n\t\t\t\toptions = options || {}\n\t\t\t\tif (!_.isUndefined(options.objectId)) {\n\t\t\t\t\tthis._objectId = options.objectId\n\t\t\t\t}\n\t\t\t\tif (!_.isUndefined(options.objectType)) {\n\t\t\t\t\tthis._objectType = options.objectType\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tgetTagIds() {\n\t\t\t\treturn this.map(function(model) {\n\t\t\t\t\treturn model.id\n\t\t\t\t})\n\t\t\t},\n\t\t})\n\n\tOC.SystemTags = OC.SystemTags || {}\n\tOC.SystemTags.SystemTagsMappingCollection = SystemTagsMappingCollection\n})(OC)\n","/**\n * Copyright (c) 2015\n *\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n/* eslint-disable */\nimport templateResult from './templates/result.handlebars'\nimport templateResultForm from './templates/result_form.handlebars'\nimport templateSelection from './templates/selection.handlebars'\n\n(function(OC) {\n\n\t/**\n\t * @class OC.SystemTags.SystemTagsInputField\n\t * @classdesc\n\t *\n\t * Displays a file's system tags\n\t *\n\t */\n\tvar SystemTagsInputField = OC.Backbone.View.extend(\n\t\t/** @lends OC.SystemTags.SystemTagsInputField.prototype */ {\n\n\t\t\t_rendered: false,\n\n\t\t\t_newTag: null,\n\n\t\t\t_lastUsedTags: [],\n\n\t\t\tclassName: 'systemTagsInputFieldContainer',\n\n\t\t\ttemplate: function(data) {\n\t\t\t\treturn '<input class=\"systemTagsInputField\" type=\"hidden\" name=\"tags\" value=\"\"/>'\n\t\t\t},\n\n\t\t\t/**\n\t\t * Creates a new SystemTagsInputField\n\t\t *\n\t\t * @param {Object} [options]\n\t\t * @param {string} [options.objectType=files] object type for which tags are assigned to\n\t\t * @param {boolean} [options.multiple=false] whether to allow selecting multiple tags\n\t\t * @param {boolean} [options.allowActions=true] whether tags can be renamed/delete within the dropdown\n\t\t * @param {boolean} [options.allowCreate=true] whether new tags can be created\n\t\t * @param {boolean} [options.isAdmin=true] whether the user is an administrator\n\t\t * @param {Function} options.initSelection function to convert selection to data\n\t\t */\n\t\t\tinitialize: function(options) {\n\t\t\t\toptions = options || {}\n\n\t\t\t\tthis._multiple = !!options.multiple\n\t\t\t\tthis._allowActions = _.isUndefined(options.allowActions) || !!options.allowActions\n\t\t\t\tthis._allowCreate = _.isUndefined(options.allowCreate) || !!options.allowCreate\n\t\t\t\tthis._isAdmin = !!options.isAdmin\n\n\t\t\t\tif (_.isFunction(options.initSelection)) {\n\t\t\t\t\tthis._initSelection = options.initSelection\n\t\t\t\t}\n\n\t\t\t\tthis.collection = options.collection || OC.SystemTags.collection\n\n\t\t\t\tvar self = this\n\t\t\t\tthis.collection.on('change:name remove', function() {\n\t\t\t\t// refresh selection\n\t\t\t\t\t_.defer(self._refreshSelection)\n\t\t\t\t})\n\n\t\t\t\t_.defer(_.bind(this._getLastUsedTags, this))\n\n\t\t\t\t_.bindAll(\n\t\t\t\t\tthis,\n\t\t\t\t\t'_refreshSelection',\n\t\t\t\t\t'_onClickRenameTag',\n\t\t\t\t\t'_onClickDeleteTag',\n\t\t\t\t\t'_onSelectTag',\n\t\t\t\t\t'_onDeselectTag',\n\t\t\t\t\t'_onSubmitRenameTag'\n\t\t\t\t)\n\t\t\t},\n\n\t\t\t_getLastUsedTags: function() {\n\t\t\t\tvar self = this\n\t\t\t\t$.ajax({\n\t\t\t\t\ttype: 'GET',\n\t\t\t\t\turl: OC.generateUrl('/apps/systemtags/lastused'),\n\t\t\t\t\tsuccess: function(response) {\n\t\t\t\t\t\tself._lastUsedTags = response\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t},\n\n\t\t\t/**\n\t\t * Refreshes the selection, triggering a call to\n\t\t * select2's initSelection\n\t\t */\n\t\t\t_refreshSelection: function() {\n\t\t\t\tthis.$tagsField.select2('val', this.$tagsField.val())\n\t\t\t},\n\n\t\t\t/**\n\t\t * Event handler whenever the user clicked the \"rename\" action.\n\t\t * This will display the rename field.\n\t\t */\n\t\t\t_onClickRenameTag: function(ev) {\n\t\t\t\tvar $item = $(ev.target).closest('.systemtags-item')\n\t\t\t\tvar tagId = $item.attr('data-id')\n\t\t\t\tvar tagModel = this.collection.get(tagId)\n\n\t\t\t\tvar oldName = tagModel.get('name')\n\t\t\t\tvar $renameForm = $(templateResultForm({\n\t\t\t\t\tcid: this.cid,\n\t\t\t\t\tname: oldName,\n\t\t\t\t\tdeleteTooltip: t('core', 'Delete'),\n\t\t\t\t\trenameLabel: t('core', 'Rename'),\n\t\t\t\t\tisAdmin: this._isAdmin\n\t\t\t\t}))\n\t\t\t\t$item.find('.label').after($renameForm)\n\t\t\t\t$item.find('.label, .systemtags-actions').addClass('hidden')\n\t\t\t\t$item.closest('.select2-result').addClass('has-form')\n\n\t\t\t\t$renameForm.find('[title]').tooltip({\n\t\t\t\t\tplacement: 'bottom',\n\t\t\t\t\tcontainer: 'body'\n\t\t\t\t})\n\t\t\t\t$renameForm.find('input').focus().selectRange(0, oldName.length)\n\t\t\t\treturn false\n\t\t\t},\n\n\t\t\t/**\n\t\t * Event handler whenever the rename form has been submitted after\n\t\t * the user entered a new tag name.\n\t\t * This will submit the change to the server.\n\t\t *\n\t\t * @param {Object} ev event\n\t\t */\n\t\t\t_onSubmitRenameTag: function(ev) {\n\t\t\t\tev.preventDefault()\n\t\t\t\tvar $form = $(ev.target)\n\t\t\t\tvar $item = $form.closest('.systemtags-item')\n\t\t\t\tvar tagId = $item.attr('data-id')\n\t\t\t\tvar tagModel = this.collection.get(tagId)\n\t\t\t\tvar newName = $(ev.target).find('input').val().trim()\n\t\t\t\tif (newName && newName !== tagModel.get('name')) {\n\t\t\t\t\ttagModel.save({ 'name': newName })\n\t\t\t\t\t// TODO: spinner, and only change text after finished saving\n\t\t\t\t\t$item.find('.label').text(newName)\n\t\t\t\t}\n\t\t\t\t$item.find('.label, .systemtags-actions').removeClass('hidden')\n\t\t\t\t$form.remove()\n\t\t\t\t$item.closest('.select2-result').removeClass('has-form')\n\t\t\t},\n\n\t\t\t/**\n\t\t * Event handler whenever a tag must be deleted\n\t\t *\n\t\t * @param {Object} ev event\n\t\t */\n\t\t\t_onClickDeleteTag: function(ev) {\n\t\t\t\tvar $item = $(ev.target).closest('.systemtags-item')\n\t\t\t\tvar tagId = $item.attr('data-id')\n\t\t\t\tthis.collection.get(tagId).destroy()\n\t\t\t\t$(ev.target).tooltip('hide')\n\t\t\t\t$item.closest('.select2-result').remove()\n\t\t\t\t// TODO: spinner\n\t\t\t\treturn false\n\t\t\t},\n\n\t\t\t_addToSelect2Selection: function(selection) {\n\t\t\t\tvar data = this.$tagsField.select2('data')\n\t\t\t\tdata.push(selection)\n\t\t\t\tthis.$tagsField.select2('data', data)\n\t\t\t},\n\n\t\t\t/**\n\t\t * Event handler whenever a tag is selected.\n\t\t * Also called whenever tag creation is requested through the dummy tag object.\n\t\t *\n\t\t * @param {Object} e event\n\t\t */\n\t\t\t_onSelectTag: function(e) {\n\t\t\t\tvar self = this\n\t\t\t\tvar tag\n\t\t\t\tif (e.object && e.object.isNew) {\n\t\t\t\t// newly created tag, check if existing\n\t\t\t\t// create a new tag\n\t\t\t\t\ttag = this.collection.create({\n\t\t\t\t\t\tname: e.object.name.trim(),\n\t\t\t\t\t\tuserVisible: true,\n\t\t\t\t\t\tuserAssignable: true,\n\t\t\t\t\t\tcanAssign: true\n\t\t\t\t\t}, {\n\t\t\t\t\t\tsuccess: function(model) {\n\t\t\t\t\t\t\tself._addToSelect2Selection(model.toJSON())\n\t\t\t\t\t\t\tself._lastUsedTags.unshift(model.id)\n\t\t\t\t\t\t\tself.trigger('select', model)\n\t\t\t\t\t\t},\n\t\t\t\t\t\terror: function(model, xhr) {\n\t\t\t\t\t\t\tif (xhr.status === 409) {\n\t\t\t\t\t\t\t// re-fetch collection to get the missing tag\n\t\t\t\t\t\t\t\tself.collection.reset()\n\t\t\t\t\t\t\t\tself.collection.fetch({\n\t\t\t\t\t\t\t\t\tsuccess: function(collection) {\n\t\t\t\t\t\t\t\t\t// find the tag in the collection\n\t\t\t\t\t\t\t\t\t\tvar model = collection.where({\n\t\t\t\t\t\t\t\t\t\t\tname: e.object.name.trim(),\n\t\t\t\t\t\t\t\t\t\t\tuserVisible: true,\n\t\t\t\t\t\t\t\t\t\t\tuserAssignable: true\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\tif (model.length) {\n\t\t\t\t\t\t\t\t\t\t\tmodel = model[0]\n\t\t\t\t\t\t\t\t\t\t\t// the tag already exists or was already assigned,\n\t\t\t\t\t\t\t\t\t\t\t// add it to the list anyway\n\t\t\t\t\t\t\t\t\t\t\tself._addToSelect2Selection(model.toJSON())\n\t\t\t\t\t\t\t\t\t\t\tself.trigger('select', model)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\tthis.$tagsField.select2('close')\n\t\t\t\t\te.preventDefault()\n\t\t\t\t\treturn false\n\t\t\t\t} else {\n\t\t\t\t\ttag = this.collection.get(e.object.id)\n\t\t\t\t\tthis._lastUsedTags.unshift(tag.id)\n\t\t\t\t}\n\t\t\t\tthis._newTag = null\n\t\t\t\tthis.trigger('select', tag)\n\t\t\t},\n\n\t\t\t/**\n\t\t * Event handler whenever a tag gets deselected.\n\t\t *\n\t\t * @param {Object} e event\n\t\t */\n\t\t\t_onDeselectTag: function(e) {\n\t\t\t\tthis.trigger('deselect', e.choice.id)\n\t\t\t},\n\n\t\t\t/**\n\t\t * Autocomplete function for dropdown results\n\t\t *\n\t\t * @param {Object} query select2 query object\n\t\t */\n\t\t\t_queryTagsAutocomplete: function(query) {\n\t\t\t\tvar self = this\n\t\t\t\tthis.collection.fetch({\n\t\t\t\t\tsuccess: function(collection) {\n\t\t\t\t\t\tvar tagModels = collection.filterByName(query.term.trim())\n\t\t\t\t\t\tif (!self._isAdmin) {\n\t\t\t\t\t\t\ttagModels = _.filter(tagModels, function(tagModel) {\n\t\t\t\t\t\t\t\treturn tagModel.get('canAssign')\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t\tquery.callback({\n\t\t\t\t\t\t\tresults: _.invoke(tagModels, 'toJSON')\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t},\n\n\t\t\t_preventDefault: function(e) {\n\t\t\t\te.stopPropagation()\n\t\t\t},\n\n\t\t\t/**\n\t\t * Formats a single dropdown result\n\t\t *\n\t\t * @param {Object} data data to format\n\t\t * @returns {string} HTML markup\n\t\t */\n\t\t\t_formatDropDownResult: function(data) {\n\t\t\t\treturn templateResult(_.extend({\n\t\t\t\t\trenameTooltip: t('core', 'Rename'),\n\t\t\t\t\tallowActions: this._allowActions,\n\t\t\t\t\ttagMarkup: this._isAdmin ? OC.SystemTags.getDescriptiveTag(data)[0].innerHTML : null,\n\t\t\t\t\tisAdmin: this._isAdmin\n\t\t\t\t}, data))\n\t\t\t},\n\n\t\t\t/**\n\t\t * Formats a single selection item\n\t\t *\n\t\t * @param {Object} data data to format\n\t\t * @returns {string} HTML markup\n\t\t */\n\t\t\t_formatSelection: function(data) {\n\t\t\t\treturn templateSelection(_.extend({\n\t\t\t\t\ttagMarkup: this._isAdmin ? OC.SystemTags.getDescriptiveTag(data)[0].innerHTML : null,\n\t\t\t\t\tisAdmin: this._isAdmin\n\t\t\t\t}, data))\n\t\t\t},\n\n\t\t\t/**\n\t\t * Create new dummy choice for select2 when the user\n\t\t * types an arbitrary string\n\t\t *\n\t\t * @param {string} term entered term\n\t\t * @returns {Object} dummy tag\n\t\t */\n\t\t\t_createSearchChoice: function(term) {\n\t\t\t\tterm = term.trim()\n\t\t\t\tif (this.collection.filter(function(entry) {\n\t\t\t\t\treturn entry.get('name') === term\n\t\t\t\t}).length) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tif (!this._newTag) {\n\t\t\t\t\tthis._newTag = {\n\t\t\t\t\t\tid: -1,\n\t\t\t\t\t\tname: term,\n\t\t\t\t\t\tuserAssignable: true,\n\t\t\t\t\t\tuserVisible: true,\n\t\t\t\t\t\tcanAssign: true,\n\t\t\t\t\t\tisNew: true\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis._newTag.name = term\n\t\t\t\t}\n\n\t\t\t\treturn this._newTag\n\t\t\t},\n\n\t\t\t_initSelection: function(element, callback) {\n\t\t\t\tvar self = this\n\t\t\t\tvar ids = $(element).val().split(',')\n\n\t\t\t\tfunction modelToSelection(model) {\n\t\t\t\t\tvar data = model.toJSON()\n\t\t\t\t\tif (!self._isAdmin && !data.canAssign) {\n\t\t\t\t\t// lock static tags for non-admins\n\t\t\t\t\t\tdata.locked = true\n\t\t\t\t\t}\n\t\t\t\t\treturn data\n\t\t\t\t}\n\n\t\t\t\tfunction findSelectedObjects(ids) {\n\t\t\t\t\tvar selectedModels = self.collection.filter(function(model) {\n\t\t\t\t\t\treturn ids.indexOf(model.id) >= 0 && (self._isAdmin || model.get('userVisible'))\n\t\t\t\t\t})\n\t\t\t\t\treturn _.map(selectedModels, modelToSelection)\n\t\t\t\t}\n\n\t\t\t\tthis.collection.fetch({\n\t\t\t\t\tsuccess: function() {\n\t\t\t\t\t\tcallback(findSelectedObjects(ids))\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t},\n\n\t\t\t/**\n\t\t * Renders this details view\n\t\t */\n\t\t\trender: function() {\n\t\t\t\tvar self = this\n\t\t\t\tthis.$el.html(this.template())\n\n\t\t\t\tthis.$el.find('[title]').tooltip({ placement: 'bottom' })\n\t\t\t\tthis.$tagsField = this.$el.find('[name=tags]')\n\t\t\t\tthis.$tagsField.select2({\n\t\t\t\t\tplaceholder: t('core', 'Collaborative tags'),\n\t\t\t\t\tcontainerCssClass: 'systemtags-select2-container',\n\t\t\t\t\tdropdownCssClass: 'systemtags-select2-dropdown',\n\t\t\t\t\tcloseOnSelect: false,\n\t\t\t\t\tallowClear: false,\n\t\t\t\t\tmultiple: this._multiple,\n\t\t\t\t\ttoggleSelect: this._multiple,\n\t\t\t\t\tquery: _.bind(this._queryTagsAutocomplete, this),\n\t\t\t\t\tid: function(tag) {\n\t\t\t\t\t\treturn tag.id\n\t\t\t\t\t},\n\t\t\t\t\tinitSelection: _.bind(this._initSelection, this),\n\t\t\t\t\tformatResult: _.bind(this._formatDropDownResult, this),\n\t\t\t\t\tformatSelection: _.bind(this._formatSelection, this),\n\t\t\t\t\tcreateSearchChoice: this._allowCreate ? _.bind(this._createSearchChoice, this) : undefined,\n\t\t\t\t\tsortResults: function(results) {\n\t\t\t\t\t\tvar selectedItems = _.pluck(self.$tagsField.select2('data'), 'id')\n\t\t\t\t\t\tresults.sort(function(a, b) {\n\t\t\t\t\t\t\tvar aSelected = selectedItems.indexOf(a.id) >= 0\n\t\t\t\t\t\t\tvar bSelected = selectedItems.indexOf(b.id) >= 0\n\t\t\t\t\t\t\tif (aSelected === bSelected) {\n\t\t\t\t\t\t\t\tvar aLastUsed = self._lastUsedTags.indexOf(a.id)\n\t\t\t\t\t\t\t\tvar bLastUsed = self._lastUsedTags.indexOf(b.id)\n\n\t\t\t\t\t\t\t\tif (aLastUsed !== bLastUsed) {\n\t\t\t\t\t\t\t\t\tif (bLastUsed === -1) {\n\t\t\t\t\t\t\t\t\t\treturn -1\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (aLastUsed === -1) {\n\t\t\t\t\t\t\t\t\t\treturn 1\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn aLastUsed < bLastUsed ? -1 : 1\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Both not found\n\t\t\t\t\t\t\t\treturn OC.Util.naturalSortCompare(a.name, b.name)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (aSelected && !bSelected) {\n\t\t\t\t\t\t\t\treturn -1\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn 1\n\t\t\t\t\t\t})\n\t\t\t\t\t\treturn results\n\t\t\t\t\t},\n\t\t\t\t\tformatNoMatches: function() {\n\t\t\t\t\t\treturn t('core', 'No tags found')\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t\t.on('select2-selecting', this._onSelectTag)\n\t\t\t\t\t.on('select2-removing', this._onDeselectTag)\n\n\t\t\t\tvar $dropDown = this.$tagsField.select2('dropdown')\n\t\t\t\t// register events for inside the dropdown\n\t\t\t\t$dropDown.on('mouseup', '.rename', this._onClickRenameTag)\n\t\t\t\t$dropDown.on('mouseup', '.delete', this._onClickDeleteTag)\n\t\t\t\t$dropDown.on('mouseup', '.select2-result-selectable.has-form', this._preventDefault)\n\t\t\t\t$dropDown.on('submit', '.systemtags-rename-form', this._onSubmitRenameTag)\n\n\t\t\t\tthis.delegateEvents()\n\t\t\t},\n\n\t\t\tremove: function() {\n\t\t\t\tif (this.$tagsField) {\n\t\t\t\t\tthis.$tagsField.select2('destroy')\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tgetValues: function() {\n\t\t\t\tthis.$tagsField.select2('val')\n\t\t\t},\n\n\t\t\tsetValues: function(values) {\n\t\t\t\tthis.$tagsField.select2('val', values)\n\t\t\t},\n\n\t\t\tsetData: function(data) {\n\t\t\t\tthis.$tagsField.select2('data', data)\n\t\t\t}\n\t\t})\n\n\tOC.SystemTags = OC.SystemTags || {}\n\tOC.SystemTags.SystemTagsInputField = SystemTagsInputField\n\n})(OC)\n","\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/sass-loader/dist/cjs.js!./systemtags.scss\";\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/sass-loader/dist/cjs.js!./systemtags.scss\";\n export default content && content.locals ? content.locals : undefined;\n","/**\n * Copyright (c) 2015\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Michael Jobst <mjobst+github@tecratech.de>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n(function(OC) {\n\n\t_.extend(OC.Files.Client, {\n\t\tPROPERTY_FILEID: '{' + OC.Files.Client.NS_OWNCLOUD + '}id',\n\t\tPROPERTY_CAN_ASSIGN: '{' + OC.Files.Client.NS_OWNCLOUD + '}can-assign',\n\t\tPROPERTY_DISPLAYNAME: '{' + OC.Files.Client.NS_OWNCLOUD + '}display-name',\n\t\tPROPERTY_USERVISIBLE: '{' + OC.Files.Client.NS_OWNCLOUD + '}user-visible',\n\t\tPROPERTY_USERASSIGNABLE: '{' + OC.Files.Client.NS_OWNCLOUD + '}user-assignable',\n\t})\n\n\t/**\n\t * @class OCA.SystemTags.SystemTagsCollection\n\t * @classdesc\n\t *\n\t * System tag\n\t *\n\t */\n\tconst SystemTagModel = OC.Backbone.Model.extend(\n\t\t/** @lends OCA.SystemTags.SystemTagModel.prototype */ {\n\t\t\tsync: OC.Backbone.davSync,\n\n\t\t\tdefaults: {\n\t\t\t\tuserVisible: true,\n\t\t\t\tuserAssignable: true,\n\t\t\t\tcanAssign: true,\n\t\t\t},\n\n\t\t\tdavProperties: {\n\t\t\t\tid: OC.Files.Client.PROPERTY_FILEID,\n\t\t\t\tname: OC.Files.Client.PROPERTY_DISPLAYNAME,\n\t\t\t\tuserVisible: OC.Files.Client.PROPERTY_USERVISIBLE,\n\t\t\t\tuserAssignable: OC.Files.Client.PROPERTY_USERASSIGNABLE,\n\t\t\t\t// read-only, effective permissions computed by the server,\n\t\t\t\tcanAssign: OC.Files.Client.PROPERTY_CAN_ASSIGN,\n\t\t\t},\n\n\t\t\tparse(data) {\n\t\t\t\treturn {\n\t\t\t\t\tid: data.id,\n\t\t\t\t\tname: data.name,\n\t\t\t\t\tuserVisible: data.userVisible === true || data.userVisible === 'true',\n\t\t\t\t\tuserAssignable: data.userAssignable === true || data.userAssignable === 'true',\n\t\t\t\t\tcanAssign: data.canAssign === true || data.canAssign === 'true',\n\t\t\t\t}\n\t\t\t},\n\t\t})\n\n\tOC.SystemTags = OC.SystemTags || {}\n\tOC.SystemTags.SystemTagModel = SystemTagModel\n})(OC)\n","/**\n * Copyright (c) 2015\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n/* eslint-disable */\n(function(OC) {\n\n\tfunction filterFunction(model, term) {\n\t\treturn model.get('name').substr(0, term.length).toLowerCase() === term.toLowerCase()\n\t}\n\n\t/**\n\t * @class OCA.SystemTags.SystemTagsCollection\n\t * @classdesc\n\t *\n\t * Collection of tags assigned to a file\n\t *\n\t */\n\tvar SystemTagsCollection = OC.Backbone.Collection.extend(\n\t\t/** @lends OC.SystemTags.SystemTagsCollection.prototype */ {\n\n\t\t\tsync: OC.Backbone.davSync,\n\n\t\t\tmodel: OC.SystemTags.SystemTagModel,\n\n\t\t\turl: function() {\n\t\t\t\treturn OC.linkToRemote('dav') + '/systemtags/'\n\t\t\t},\n\n\t\t\tfilterByName: function(name) {\n\t\t\t\treturn this.filter(function(model) {\n\t\t\t\t\treturn filterFunction(model, name)\n\t\t\t\t})\n\t\t\t},\n\n\t\t\treset: function() {\n\t\t\t\tthis.fetched = false\n\t\t\t\treturn OC.Backbone.Collection.prototype.reset.apply(this, arguments)\n\t\t\t},\n\n\t\t\t/**\n\t\t * Lazy fetch.\n\t\t * Only fetches once, subsequent calls will directly call the success handler.\n\t\t *\n\t\t * @param {any} options -\n\t\t * @param [options.force] true to force fetch even if cached entries exist\n\t\t *\n\t\t * @see Backbone.Collection#fetch\n\t\t */\n\t\t\tfetch: function(options) {\n\t\t\t\tvar self = this\n\t\t\t\toptions = options || {}\n\t\t\t\tif (this.fetched || options.force) {\n\t\t\t\t// directly call handler\n\t\t\t\t\tif (options.success) {\n\t\t\t\t\t\toptions.success(this, null, options)\n\t\t\t\t\t}\n\t\t\t\t\t// trigger sync event\n\t\t\t\t\tthis.trigger('sync', this, null, options)\n\t\t\t\t\treturn Promise.resolve()\n\t\t\t\t}\n\n\t\t\t\tvar success = options.success\n\t\t\t\toptions = _.extend({}, options)\n\t\t\t\toptions.success = function() {\n\t\t\t\t\tself.fetched = true\n\t\t\t\t\tif (success) {\n\t\t\t\t\t\treturn success.apply(this, arguments)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn OC.Backbone.Collection.prototype.fetch.call(this, options)\n\t\t\t}\n\t\t})\n\n\tOC.SystemTags = OC.SystemTags || {}\n\tOC.SystemTags.SystemTagsCollection = SystemTagsCollection\n\n\t/**\n\t * @type OC.SystemTags.SystemTagsCollection\n\t */\n\tOC.SystemTags.collection = new OC.SystemTags.SystemTagsCollection()\n})(OC)\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, \".systemtags-select2-dropdown .select2-result-label .checkmark{visibility:hidden;margin-left:-5px;margin-right:5px;padding:4px}.systemtags-select2-dropdown .select2-result-label .new-item .systemtags-actions{display:none}.systemtags-select2-dropdown .select2-selected .select2-result-label .checkmark{visibility:visible}.systemtags-select2-dropdown .select2-result-label .icon{display:inline-block;opacity:.5}.systemtags-select2-dropdown .select2-result-label .icon.rename{padding:4px}.systemtags-select2-dropdown .systemtags-actions{position:absolute;right:5px}.systemtags-select2-dropdown .systemtags-rename-form{display:inline-block;width:calc(100% - 20px);top:-6px;position:relative}.systemtags-select2-dropdown .systemtags-rename-form input{display:inline-block;height:30px;width:calc(100% - 40px)}.systemtags-select2-dropdown .label{width:85%;display:inline-block;overflow:hidden;text-overflow:ellipsis}.systemtags-select2-dropdown .label.hidden{display:none}.systemtags-select2-dropdown span{line-height:25px}.systemtags-select2-dropdown .systemtags-item{display:inline-block;height:25px;width:100%}.systemtags-select2-dropdown .select2-result-label{height:25px}.systemTagsInfoView,.systemtags-select2-container{width:100%}.systemTagsInfoView .select2-choices,.systemtags-select2-container .select2-choices{flex-wrap:nowrap !important;max-height:44px}.systemTagsInfoView .select2-choices .select2-search-choice.select2-locked .label,.systemtags-select2-container .select2-choices .select2-search-choice.select2-locked .label{opacity:.5}#select2-drop.systemtags-select2-dropdown .select2-results li.select2-result{padding:5px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/css/systemtags.scss\"],\"names\":[],\"mappings\":\"AAcE,8DACC,iBAAA,CACA,gBAAA,CACA,gBAAA,CACA,WAAA,CAED,iFACC,YAAA,CAGF,gFACC,kBAAA,CAED,yDACC,oBAAA,CACA,UAAA,CACA,gEACC,WAAA,CAGF,iDACC,iBAAA,CACA,SAAA,CAED,qDACC,oBAAA,CACA,uBAAA,CACA,QAAA,CACA,iBAAA,CACA,2DACC,oBAAA,CACA,WAAA,CACA,uBAAA,CAGF,oCACC,SAAA,CACA,oBAAA,CACA,eAAA,CACA,sBAAA,CACA,2CACC,YAAA,CAGF,kCACC,gBAAA,CAED,8CACC,oBAAA,CACA,WAAA,CACA,UAAA,CAED,mDACC,WAAA,CAIF,kDAEC,UAAA,CAEA,oFACC,2BAAA,CACA,eAAA,CAGD,8KACC,UAAA,CAIF,6EACC,WAAA\",\"sourcesContent\":[\"/**\\n * @copyright Copyright (c) 2016, John Molakvoæ <skjnldsv@protonmail.com>\\n * @copyright Copyright (c) 2016, Robin Appelman <robin@icewind.nl>\\n * @copyright Copyright (c) 2016, Jan-Christoph Borchardt <hey@jancborchardt.net>\\n * @copyright Copyright (c) 2016, Vincent Petry <pvince81@owncloud.com>\\n * @copyright Copyright (c) 2016, Erik Pellikka <erik@pellikka.org>\\n * @copyright Copyright (c) 2015, Vincent Petry <pvince81@owncloud.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n */\\n\\n.systemtags-select2-dropdown {\\n\\t.select2-result-label {\\n\\t\\t.checkmark {\\n\\t\\t\\tvisibility: hidden;\\n\\t\\t\\tmargin-left: -5px;\\n\\t\\t\\tmargin-right: 5px;\\n\\t\\t\\tpadding: 4px;\\n\\t\\t}\\n\\t\\t.new-item .systemtags-actions {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n\\t.select2-selected .select2-result-label .checkmark {\\n\\t\\tvisibility: visible;\\n\\t}\\n\\t.select2-result-label .icon {\\n\\t\\tdisplay: inline-block;\\n\\t\\topacity: .5;\\n\\t\\t&.rename {\\n\\t\\t\\tpadding: 4px;\\n\\t\\t}\\n\\t}\\n\\t.systemtags-actions {\\n\\t\\tposition: absolute;\\n\\t\\tright: 5px;\\n\\t}\\n\\t.systemtags-rename-form {\\n\\t\\tdisplay: inline-block;\\n\\t\\twidth: calc(100% - 20px);\\n\\t\\ttop: -6px;\\n\\t\\tposition: relative;\\n\\t\\tinput {\\n\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\theight: 30px;\\n\\t\\t\\twidth: calc(100% - 40px);\\n\\t\\t}\\n\\t}\\n\\t.label {\\n\\t\\twidth: 85%;\\n\\t\\tdisplay: inline-block;\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\t&.hidden {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n\\tspan {\\n\\t\\tline-height: 25px;\\n\\t}\\n\\t.systemtags-item {\\n\\t\\tdisplay: inline-block;\\n\\t\\theight: 25px;\\n\\t\\twidth: 100%;\\n\\t}\\n\\t.select2-result-label {\\n\\t\\theight: 25px;\\n\\t}\\n}\\n\\n.systemTagsInfoView,\\n.systemtags-select2-container {\\n\\twidth: 100%;\\n\\n\\t.select2-choices {\\n\\t\\tflex-wrap: nowrap !important;\\n\\t\\tmax-height: 44px;\\n\\t}\\n\\n\\t.select2-choices .select2-search-choice.select2-locked .label {\\n\\t\\topacity: 0.5;\\n\\t}\\n}\\n\\n#select2-drop.systemtags-select2-dropdown .select2-results li.select2-result {\\n\\tpadding: 5px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n return \" new-item\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<span class=\\\"label\\\">\"\n + ((stack1 = ((helper = (helper = lookupProperty(helpers,\"tagMarkup\") || (depth0 != null ? lookupProperty(depth0,\"tagMarkup\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"tagMarkup\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":22},\"end\":{\"line\":4,\"column\":37}}}) : helper))) != null ? stack1 : \"\")\n + \"</span>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<span class=\\\"label\\\">\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"name\") || (depth0 != null ? lookupProperty(depth0,\"name\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"name\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":22},\"end\":{\"line\":6,\"column\":30}}}) : helper)))\n + \"</span>\\n\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<span class=\\\"systemtags-actions\\\">\\n\t\t\t<a href=\\\"#\\\" class=\\\"rename icon icon-rename\\\" title=\\\"\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"renameTooltip\") || (depth0 != null ? lookupProperty(depth0,\"renameTooltip\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"renameTooltip\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":54},\"end\":{\"line\":10,\"column\":71}}}) : helper)))\n + \"\\\"></a>\\n\t\t</span>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, options, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n }, buffer = \n \"<span class=\\\"systemtags-item\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"isNew\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":28},\"end\":{\"line\":1,\"column\":57}}})) != null ? stack1 : \"\")\n + \"\\\" data-id=\\\"\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"id\") || (depth0 != null ? lookupProperty(depth0,\"id\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"id\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":68},\"end\":{\"line\":1,\"column\":74}}}) : helper)))\n + \"\\\">\\n<span class=\\\"checkmark icon icon-checkmark\\\"></span>\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"isAdmin\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.program(5, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":1},\"end\":{\"line\":7,\"column\":8}}})) != null ? stack1 : \"\");\n stack1 = ((helper = (helper = lookupProperty(helpers,\"allowActions\") || (depth0 != null ? lookupProperty(depth0,\"allowActions\") : depth0)) != null ? helper : alias2),(options={\"name\":\"allowActions\",\"hash\":{},\"fn\":container.program(7, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":1},\"end\":{\"line\":12,\"column\":18}}}),(typeof helper === alias3 ? helper.call(alias1,options) : helper));\n if (!lookupProperty(helpers,\"allowActions\")) { stack1 = container.hooks.blockHelperMissing.call(depth0,stack1,options)}\n if (stack1 != null) { buffer += stack1; }\n return buffer + \"</span>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<a href=\\\"#\\\" class=\\\"delete icon icon-delete\\\" title=\\\"\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"deleteTooltip\") || (depth0 != null ? lookupProperty(depth0,\"deleteTooltip\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"deleteTooltip\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":5,\"column\":53},\"end\":{\"line\":5,\"column\":70}}}) : helper)))\n + \"\\\"></a>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<form class=\\\"systemtags-rename-form\\\">\\n\t <label class=\\\"hidden-visually\\\" for=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"cid\") || (depth0 != null ? lookupProperty(depth0,\"cid\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":38},\"end\":{\"line\":2,\"column\":45}}}) : helper)))\n + \"-rename-input\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"renameLabel\") || (depth0 != null ? lookupProperty(depth0,\"renameLabel\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"renameLabel\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":60},\"end\":{\"line\":2,\"column\":75}}}) : helper)))\n + \"</label>\\n\t<input id=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"cid\") || (depth0 != null ? lookupProperty(depth0,\"cid\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":12},\"end\":{\"line\":3,\"column\":19}}}) : helper)))\n + \"-rename-input\\\" type=\\\"text\\\" value=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"name\") || (depth0 != null ? lookupProperty(depth0,\"name\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"name\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":53},\"end\":{\"line\":3,\"column\":61}}}) : helper)))\n + \"\\\">\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"isAdmin\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":1},\"end\":{\"line\":6,\"column\":8}}})) != null ? stack1 : \"\")\n + \"</form>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<span class=\\\"label\\\">\"\n + ((stack1 = ((helper = (helper = lookupProperty(helpers,\"tagMarkup\") || (depth0 != null ? lookupProperty(depth0,\"tagMarkup\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"tagMarkup\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":21},\"end\":{\"line\":2,\"column\":36}}}) : helper))) != null ? stack1 : \"\")\n + \"</span>\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<span class=\\\"label\\\">\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"name\") || (depth0 != null ? lookupProperty(depth0,\"name\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"name\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":21},\"end\":{\"line\":4,\"column\":29}}}) : helper)))\n + \"</span>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"isAdmin\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.program(3, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":5,\"column\":7}}})) != null ? stack1 : \"\");\n},\"useData\":true});","// 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 = 1686;","__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\t1686: 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__(16558); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","OC","SystemTags","getDescriptiveTag","tag","_","isUndefined","name","toJSON","$","addClass","text","t","scope","$span","append","escapeHTML","userAssignable","userVisible","SystemTagsMappingCollection","Backbone","Collection","extend","sync","davSync","usePUT","_objectId","_objectType","model","SystemTagModel","url","generateRemoteUrl","this","setObjectId","objectId","setObjectType","objectType","initialize","models","options","getTagIds","map","id","SystemTagsInputField","View","_rendered","_newTag","_lastUsedTags","className","template","data","_multiple","multiple","_allowActions","allowActions","_allowCreate","allowCreate","_isAdmin","isAdmin","isFunction","initSelection","_initSelection","collection","self","on","defer","_refreshSelection","bind","_getLastUsedTags","bindAll","ajax","type","generateUrl","success","response","$tagsField","select2","val","_onClickRenameTag","ev","$item","target","closest","tagId","attr","oldName","get","$renameForm","templateResultForm","cid","deleteTooltip","renameLabel","find","after","tooltip","placement","container","focus","selectRange","length","_onSubmitRenameTag","preventDefault","$form","tagModel","newName","trim","save","removeClass","remove","_onClickDeleteTag","destroy","_addToSelect2Selection","selection","push","_onSelectTag","e","object","isNew","create","canAssign","unshift","trigger","error","xhr","status","reset","fetch","where","_onDeselectTag","choice","_queryTagsAutocomplete","query","tagModels","filterByName","term","filter","callback","results","invoke","_preventDefault","stopPropagation","_formatDropDownResult","templateResult","renameTooltip","tagMarkup","innerHTML","_formatSelection","templateSelection","_createSearchChoice","entry","element","ids","split","modelToSelection","locked","selectedModels","indexOf","findSelectedObjects","render","$el","html","placeholder","containerCssClass","dropdownCssClass","closeOnSelect","allowClear","toggleSelect","formatResult","formatSelection","createSearchChoice","undefined","sortResults","selectedItems","pluck","sort","a","b","aSelected","bSelected","aLastUsed","bLastUsed","Util","naturalSortCompare","formatNoMatches","$dropDown","delegateEvents","getValues","setValues","values","setData","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","Files","Client","PROPERTY_FILEID","NS_OWNCLOUD","PROPERTY_CAN_ASSIGN","PROPERTY_DISPLAYNAME","PROPERTY_USERVISIBLE","PROPERTY_USERASSIGNABLE","Model","defaults","davProperties","parse","SystemTagsCollection","linkToRemote","substr","toLowerCase","filterFunction","fetched","prototype","apply","arguments","force","Promise","resolve","call","___CSS_LOADER_EXPORT___","module","Handlebars","exports","depth0","helpers","partials","stack1","helper","lookupProperty","parent","propertyName","Object","hasOwnProperty","hooks","helperMissing","nullContext","escapeExpression","alias1","alias2","alias3","buffer","program","noop","blockHelperMissing","alias4","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","keys","every","key","splice","r","n","getter","__esModule","d","definition","o","defineProperty","enumerable","g","globalThis","Function","window","obj","prop","Symbol","toStringTag","value","nmd","paths","children","document","baseURI","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"core-systemtags.js?v=47675efc1feed2a45be1","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/systemtags/systemtags.js","webpack:///nextcloud/core/src/systemtags/systemtagsmappingcollection.js","webpack:///nextcloud/core/src/systemtags/systemtagsinputfield.js","webpack://nextcloud/./core/css/systemtags.scss?38f5","webpack:///nextcloud/core/src/systemtags/systemtagmodel.js","webpack:///nextcloud/core/src/systemtags/systemtagscollection.js","webpack:///nextcloud/core/css/systemtags.scss","webpack:///nextcloud/core/src/systemtags/templates/result.handlebars","webpack:///nextcloud/core/src/systemtags/templates/result_form.handlebars","webpack:///nextcloud/core/src/systemtags/templates/selection.handlebars","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/runtime/nonce","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 (c) 2016\n *\n * @author Gary Kim <gary@garykim.dev>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n/* eslint-disable */\nimport escapeHTML from 'escape-html'\n\n(function(OC) {\n\t/**\n\t * @namespace\n\t */\n\tOC.SystemTags = {\n\t\t/**\n\t\t *\n\t\t * @param {OC.SystemTags.SystemTagModel|Object|String} tag\n\t\t * @returns {jQuery}\n\t\t */\n\t\tgetDescriptiveTag: function(tag) {\n\t\t\tif (_.isUndefined(tag.name) && !_.isUndefined(tag.toJSON)) {\n\t\t\t\ttag = tag.toJSON()\n\t\t\t}\n\n\t\t\tif (_.isUndefined(tag.name)) {\n\t\t\t\treturn $('<span>').addClass('non-existing-tag').text(\n\t\t\t\t\tt('core', 'Non-existing tag #{tag}', {\n\t\t\t\t\t\ttag: tag\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tvar $span = $('<span>')\n\t\t\t$span.append(escapeHTML(tag.name))\n\n\t\t\tvar scope\n\t\t\tif (!tag.userAssignable) {\n\t\t\t\tscope = t('core', 'restricted')\n\t\t\t}\n\t\t\tif (!tag.userVisible) {\n\t\t\t\t// invisible also implicitly means not assignable\n\t\t\t\tscope = t('core', 'invisible')\n\t\t\t}\n\t\t\tif (scope) {\n\t\t\t\t$span.append($('<em>').text(' (' + scope + ')'))\n\t\t\t}\n\t\t\treturn $span\n\t\t}\n\t}\n})(OC)\n","/**\n * Copyright (c) 2015\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\nimport { generateRemoteUrl } from '@nextcloud/router'\n\n(function(OC) {\n\t/**\n\t * @class OC.SystemTags.SystemTagsMappingCollection\n\t * @classdesc\n\t *\n\t * Collection of tags assigned to a an object\n\t *\n\t */\n\tconst SystemTagsMappingCollection = OC.Backbone.Collection.extend(\n\t\t/** @lends OC.SystemTags.SystemTagsMappingCollection.prototype */ {\n\n\t\t\tsync: OC.Backbone.davSync,\n\n\t\t\t/**\n\t\t\t * Use PUT instead of PROPPATCH\n\t\t\t */\n\t\t\tusePUT: true,\n\n\t\t\t/**\n\t\t\t * Id of the file for which to filter activities by\n\t\t\t *\n\t\t\t * @member int\n\t\t\t */\n\t\t\t_objectId: null,\n\n\t\t\t/**\n\t\t\t * Type of the object to filter by\n\t\t\t *\n\t\t\t * @member string\n\t\t\t */\n\t\t\t_objectType: 'files',\n\n\t\t\tmodel: OC.SystemTags.SystemTagModel,\n\n\t\t\turl() {\n\t\t\t\treturn generateRemoteUrl('dav') + '/systemtags-relations/' + this._objectType + '/' + this._objectId\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Sets the object id to filter by or null for all.\n\t\t\t *\n\t\t\t * @param {number} objectId file id or null\n\t\t\t */\n\t\t\tsetObjectId(objectId) {\n\t\t\t\tthis._objectId = objectId\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Sets the object type to filter by or null for all.\n\t\t\t *\n\t\t\t * @param {number} objectType file id or null\n\t\t\t */\n\t\t\tsetObjectType(objectType) {\n\t\t\t\tthis._objectType = objectType\n\t\t\t},\n\n\t\t\tinitialize(models, options) {\n\t\t\t\toptions = options || {}\n\t\t\t\tif (!_.isUndefined(options.objectId)) {\n\t\t\t\t\tthis._objectId = options.objectId\n\t\t\t\t}\n\t\t\t\tif (!_.isUndefined(options.objectType)) {\n\t\t\t\t\tthis._objectType = options.objectType\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tgetTagIds() {\n\t\t\t\treturn this.map(function(model) {\n\t\t\t\t\treturn model.id\n\t\t\t\t})\n\t\t\t},\n\t\t})\n\n\tOC.SystemTags = OC.SystemTags || {}\n\tOC.SystemTags.SystemTagsMappingCollection = SystemTagsMappingCollection\n})(OC)\n","/**\n * Copyright (c) 2015\n *\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n/* eslint-disable */\nimport templateResult from './templates/result.handlebars'\nimport templateResultForm from './templates/result_form.handlebars'\nimport templateSelection from './templates/selection.handlebars'\n\n(function(OC) {\n\n\t/**\n\t * @class OC.SystemTags.SystemTagsInputField\n\t * @classdesc\n\t *\n\t * Displays a file's system tags\n\t *\n\t */\n\tvar SystemTagsInputField = OC.Backbone.View.extend(\n\t\t/** @lends OC.SystemTags.SystemTagsInputField.prototype */ {\n\n\t\t\t_rendered: false,\n\n\t\t\t_newTag: null,\n\n\t\t\t_lastUsedTags: [],\n\n\t\t\tclassName: 'systemTagsInputFieldContainer',\n\n\t\t\ttemplate: function(data) {\n\t\t\t\treturn '<input class=\"systemTagsInputField\" type=\"hidden\" name=\"tags\" value=\"\"/>'\n\t\t\t},\n\n\t\t\t/**\n\t\t * Creates a new SystemTagsInputField\n\t\t *\n\t\t * @param {Object} [options]\n\t\t * @param {string} [options.objectType=files] object type for which tags are assigned to\n\t\t * @param {boolean} [options.multiple=false] whether to allow selecting multiple tags\n\t\t * @param {boolean} [options.allowActions=true] whether tags can be renamed/delete within the dropdown\n\t\t * @param {boolean} [options.allowCreate=true] whether new tags can be created\n\t\t * @param {boolean} [options.isAdmin=true] whether the user is an administrator\n\t\t * @param {Function} options.initSelection function to convert selection to data\n\t\t */\n\t\t\tinitialize: function(options) {\n\t\t\t\toptions = options || {}\n\n\t\t\t\tthis._multiple = !!options.multiple\n\t\t\t\tthis._allowActions = _.isUndefined(options.allowActions) || !!options.allowActions\n\t\t\t\tthis._allowCreate = _.isUndefined(options.allowCreate) || !!options.allowCreate\n\t\t\t\tthis._isAdmin = !!options.isAdmin\n\n\t\t\t\tif (_.isFunction(options.initSelection)) {\n\t\t\t\t\tthis._initSelection = options.initSelection\n\t\t\t\t}\n\n\t\t\t\tthis.collection = options.collection || OC.SystemTags.collection\n\n\t\t\t\tvar self = this\n\t\t\t\tthis.collection.on('change:name remove', function() {\n\t\t\t\t// refresh selection\n\t\t\t\t\t_.defer(self._refreshSelection)\n\t\t\t\t})\n\n\t\t\t\t_.defer(_.bind(this._getLastUsedTags, this))\n\n\t\t\t\t_.bindAll(\n\t\t\t\t\tthis,\n\t\t\t\t\t'_refreshSelection',\n\t\t\t\t\t'_onClickRenameTag',\n\t\t\t\t\t'_onClickDeleteTag',\n\t\t\t\t\t'_onSelectTag',\n\t\t\t\t\t'_onDeselectTag',\n\t\t\t\t\t'_onSubmitRenameTag'\n\t\t\t\t)\n\t\t\t},\n\n\t\t\t_getLastUsedTags: function() {\n\t\t\t\tvar self = this\n\t\t\t\t$.ajax({\n\t\t\t\t\ttype: 'GET',\n\t\t\t\t\turl: OC.generateUrl('/apps/systemtags/lastused'),\n\t\t\t\t\tsuccess: function(response) {\n\t\t\t\t\t\tself._lastUsedTags = response\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t},\n\n\t\t\t/**\n\t\t * Refreshes the selection, triggering a call to\n\t\t * select2's initSelection\n\t\t */\n\t\t\t_refreshSelection: function() {\n\t\t\t\tthis.$tagsField.select2('val', this.$tagsField.val())\n\t\t\t},\n\n\t\t\t/**\n\t\t * Event handler whenever the user clicked the \"rename\" action.\n\t\t * This will display the rename field.\n\t\t */\n\t\t\t_onClickRenameTag: function(ev) {\n\t\t\t\tvar $item = $(ev.target).closest('.systemtags-item')\n\t\t\t\tvar tagId = $item.attr('data-id')\n\t\t\t\tvar tagModel = this.collection.get(tagId)\n\n\t\t\t\tvar oldName = tagModel.get('name')\n\t\t\t\tvar $renameForm = $(templateResultForm({\n\t\t\t\t\tcid: this.cid,\n\t\t\t\t\tname: oldName,\n\t\t\t\t\tdeleteTooltip: t('core', 'Delete'),\n\t\t\t\t\trenameLabel: t('core', 'Rename'),\n\t\t\t\t\tisAdmin: this._isAdmin\n\t\t\t\t}))\n\t\t\t\t$item.find('.label').after($renameForm)\n\t\t\t\t$item.find('.label, .systemtags-actions').addClass('hidden')\n\t\t\t\t$item.closest('.select2-result').addClass('has-form')\n\n\t\t\t\t$renameForm.find('[title]').tooltip({\n\t\t\t\t\tplacement: 'bottom',\n\t\t\t\t\tcontainer: 'body'\n\t\t\t\t})\n\t\t\t\t$renameForm.find('input').focus().selectRange(0, oldName.length)\n\t\t\t\treturn false\n\t\t\t},\n\n\t\t\t/**\n\t\t * Event handler whenever the rename form has been submitted after\n\t\t * the user entered a new tag name.\n\t\t * This will submit the change to the server.\n\t\t *\n\t\t * @param {Object} ev event\n\t\t */\n\t\t\t_onSubmitRenameTag: function(ev) {\n\t\t\t\tev.preventDefault()\n\t\t\t\tvar $form = $(ev.target)\n\t\t\t\tvar $item = $form.closest('.systemtags-item')\n\t\t\t\tvar tagId = $item.attr('data-id')\n\t\t\t\tvar tagModel = this.collection.get(tagId)\n\t\t\t\tvar newName = $(ev.target).find('input').val().trim()\n\t\t\t\tif (newName && newName !== tagModel.get('name')) {\n\t\t\t\t\ttagModel.save({ 'name': newName })\n\t\t\t\t\t// TODO: spinner, and only change text after finished saving\n\t\t\t\t\t$item.find('.label').text(newName)\n\t\t\t\t}\n\t\t\t\t$item.find('.label, .systemtags-actions').removeClass('hidden')\n\t\t\t\t$form.remove()\n\t\t\t\t$item.closest('.select2-result').removeClass('has-form')\n\t\t\t},\n\n\t\t\t/**\n\t\t * Event handler whenever a tag must be deleted\n\t\t *\n\t\t * @param {Object} ev event\n\t\t */\n\t\t\t_onClickDeleteTag: function(ev) {\n\t\t\t\tvar $item = $(ev.target).closest('.systemtags-item')\n\t\t\t\tvar tagId = $item.attr('data-id')\n\t\t\t\tthis.collection.get(tagId).destroy()\n\t\t\t\t$(ev.target).tooltip('hide')\n\t\t\t\t$item.closest('.select2-result').remove()\n\t\t\t\t// TODO: spinner\n\t\t\t\treturn false\n\t\t\t},\n\n\t\t\t_addToSelect2Selection: function(selection) {\n\t\t\t\tvar data = this.$tagsField.select2('data')\n\t\t\t\tdata.push(selection)\n\t\t\t\tthis.$tagsField.select2('data', data)\n\t\t\t},\n\n\t\t\t/**\n\t\t * Event handler whenever a tag is selected.\n\t\t * Also called whenever tag creation is requested through the dummy tag object.\n\t\t *\n\t\t * @param {Object} e event\n\t\t */\n\t\t\t_onSelectTag: function(e) {\n\t\t\t\tvar self = this\n\t\t\t\tvar tag\n\t\t\t\tif (e.object && e.object.isNew) {\n\t\t\t\t// newly created tag, check if existing\n\t\t\t\t// create a new tag\n\t\t\t\t\ttag = this.collection.create({\n\t\t\t\t\t\tname: e.object.name.trim(),\n\t\t\t\t\t\tuserVisible: true,\n\t\t\t\t\t\tuserAssignable: true,\n\t\t\t\t\t\tcanAssign: true\n\t\t\t\t\t}, {\n\t\t\t\t\t\tsuccess: function(model) {\n\t\t\t\t\t\t\tself._addToSelect2Selection(model.toJSON())\n\t\t\t\t\t\t\tself._lastUsedTags.unshift(model.id)\n\t\t\t\t\t\t\tself.trigger('select', model)\n\t\t\t\t\t\t},\n\t\t\t\t\t\terror: function(model, xhr) {\n\t\t\t\t\t\t\tif (xhr.status === 409) {\n\t\t\t\t\t\t\t// re-fetch collection to get the missing tag\n\t\t\t\t\t\t\t\tself.collection.reset()\n\t\t\t\t\t\t\t\tself.collection.fetch({\n\t\t\t\t\t\t\t\t\tsuccess: function(collection) {\n\t\t\t\t\t\t\t\t\t// find the tag in the collection\n\t\t\t\t\t\t\t\t\t\tvar model = collection.where({\n\t\t\t\t\t\t\t\t\t\t\tname: e.object.name.trim(),\n\t\t\t\t\t\t\t\t\t\t\tuserVisible: true,\n\t\t\t\t\t\t\t\t\t\t\tuserAssignable: true\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\tif (model.length) {\n\t\t\t\t\t\t\t\t\t\t\tmodel = model[0]\n\t\t\t\t\t\t\t\t\t\t\t// the tag already exists or was already assigned,\n\t\t\t\t\t\t\t\t\t\t\t// add it to the list anyway\n\t\t\t\t\t\t\t\t\t\t\tself._addToSelect2Selection(model.toJSON())\n\t\t\t\t\t\t\t\t\t\t\tself.trigger('select', model)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\tthis.$tagsField.select2('close')\n\t\t\t\t\te.preventDefault()\n\t\t\t\t\treturn false\n\t\t\t\t} else {\n\t\t\t\t\ttag = this.collection.get(e.object.id)\n\t\t\t\t\tthis._lastUsedTags.unshift(tag.id)\n\t\t\t\t}\n\t\t\t\tthis._newTag = null\n\t\t\t\tthis.trigger('select', tag)\n\t\t\t},\n\n\t\t\t/**\n\t\t * Event handler whenever a tag gets deselected.\n\t\t *\n\t\t * @param {Object} e event\n\t\t */\n\t\t\t_onDeselectTag: function(e) {\n\t\t\t\tthis.trigger('deselect', e.choice.id)\n\t\t\t},\n\n\t\t\t/**\n\t\t * Autocomplete function for dropdown results\n\t\t *\n\t\t * @param {Object} query select2 query object\n\t\t */\n\t\t\t_queryTagsAutocomplete: function(query) {\n\t\t\t\tvar self = this\n\t\t\t\tthis.collection.fetch({\n\t\t\t\t\tsuccess: function(collection) {\n\t\t\t\t\t\tvar tagModels = collection.filterByName(query.term.trim())\n\t\t\t\t\t\tif (!self._isAdmin) {\n\t\t\t\t\t\t\ttagModels = _.filter(tagModels, function(tagModel) {\n\t\t\t\t\t\t\t\treturn tagModel.get('canAssign')\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t\tquery.callback({\n\t\t\t\t\t\t\tresults: _.invoke(tagModels, 'toJSON')\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t},\n\n\t\t\t_preventDefault: function(e) {\n\t\t\t\te.stopPropagation()\n\t\t\t},\n\n\t\t\t/**\n\t\t * Formats a single dropdown result\n\t\t *\n\t\t * @param {Object} data data to format\n\t\t * @returns {string} HTML markup\n\t\t */\n\t\t\t_formatDropDownResult: function(data) {\n\t\t\t\treturn templateResult(_.extend({\n\t\t\t\t\trenameTooltip: t('core', 'Rename'),\n\t\t\t\t\tallowActions: this._allowActions,\n\t\t\t\t\ttagMarkup: this._isAdmin ? OC.SystemTags.getDescriptiveTag(data)[0].innerHTML : null,\n\t\t\t\t\tisAdmin: this._isAdmin\n\t\t\t\t}, data))\n\t\t\t},\n\n\t\t\t/**\n\t\t * Formats a single selection item\n\t\t *\n\t\t * @param {Object} data data to format\n\t\t * @returns {string} HTML markup\n\t\t */\n\t\t\t_formatSelection: function(data) {\n\t\t\t\treturn templateSelection(_.extend({\n\t\t\t\t\ttagMarkup: this._isAdmin ? OC.SystemTags.getDescriptiveTag(data)[0].innerHTML : null,\n\t\t\t\t\tisAdmin: this._isAdmin\n\t\t\t\t}, data))\n\t\t\t},\n\n\t\t\t/**\n\t\t * Create new dummy choice for select2 when the user\n\t\t * types an arbitrary string\n\t\t *\n\t\t * @param {string} term entered term\n\t\t * @returns {Object} dummy tag\n\t\t */\n\t\t\t_createSearchChoice: function(term) {\n\t\t\t\tterm = term.trim()\n\t\t\t\tif (this.collection.filter(function(entry) {\n\t\t\t\t\treturn entry.get('name') === term\n\t\t\t\t}).length) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tif (!this._newTag) {\n\t\t\t\t\tthis._newTag = {\n\t\t\t\t\t\tid: -1,\n\t\t\t\t\t\tname: term,\n\t\t\t\t\t\tuserAssignable: true,\n\t\t\t\t\t\tuserVisible: true,\n\t\t\t\t\t\tcanAssign: true,\n\t\t\t\t\t\tisNew: true\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis._newTag.name = term\n\t\t\t\t}\n\n\t\t\t\treturn this._newTag\n\t\t\t},\n\n\t\t\t_initSelection: function(element, callback) {\n\t\t\t\tvar self = this\n\t\t\t\tvar ids = $(element).val().split(',')\n\n\t\t\t\tfunction modelToSelection(model) {\n\t\t\t\t\tvar data = model.toJSON()\n\t\t\t\t\tif (!self._isAdmin && !data.canAssign) {\n\t\t\t\t\t// lock static tags for non-admins\n\t\t\t\t\t\tdata.locked = true\n\t\t\t\t\t}\n\t\t\t\t\treturn data\n\t\t\t\t}\n\n\t\t\t\tfunction findSelectedObjects(ids) {\n\t\t\t\t\tvar selectedModels = self.collection.filter(function(model) {\n\t\t\t\t\t\treturn ids.indexOf(model.id) >= 0 && (self._isAdmin || model.get('userVisible'))\n\t\t\t\t\t})\n\t\t\t\t\treturn _.map(selectedModels, modelToSelection)\n\t\t\t\t}\n\n\t\t\t\tthis.collection.fetch({\n\t\t\t\t\tsuccess: function() {\n\t\t\t\t\t\tcallback(findSelectedObjects(ids))\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t},\n\n\t\t\t/**\n\t\t * Renders this details view\n\t\t */\n\t\t\trender: function() {\n\t\t\t\tvar self = this\n\t\t\t\tthis.$el.html(this.template())\n\n\t\t\t\tthis.$el.find('[title]').tooltip({ placement: 'bottom' })\n\t\t\t\tthis.$tagsField = this.$el.find('[name=tags]')\n\t\t\t\tthis.$tagsField.select2({\n\t\t\t\t\tplaceholder: t('core', 'Collaborative tags'),\n\t\t\t\t\tcontainerCssClass: 'systemtags-select2-container',\n\t\t\t\t\tdropdownCssClass: 'systemtags-select2-dropdown',\n\t\t\t\t\tcloseOnSelect: false,\n\t\t\t\t\tallowClear: false,\n\t\t\t\t\tmultiple: this._multiple,\n\t\t\t\t\ttoggleSelect: this._multiple,\n\t\t\t\t\tquery: _.bind(this._queryTagsAutocomplete, this),\n\t\t\t\t\tid: function(tag) {\n\t\t\t\t\t\treturn tag.id\n\t\t\t\t\t},\n\t\t\t\t\tinitSelection: _.bind(this._initSelection, this),\n\t\t\t\t\tformatResult: _.bind(this._formatDropDownResult, this),\n\t\t\t\t\tformatSelection: _.bind(this._formatSelection, this),\n\t\t\t\t\tcreateSearchChoice: this._allowCreate ? _.bind(this._createSearchChoice, this) : undefined,\n\t\t\t\t\tsortResults: function(results) {\n\t\t\t\t\t\tvar selectedItems = _.pluck(self.$tagsField.select2('data'), 'id')\n\t\t\t\t\t\tresults.sort(function(a, b) {\n\t\t\t\t\t\t\tvar aSelected = selectedItems.indexOf(a.id) >= 0\n\t\t\t\t\t\t\tvar bSelected = selectedItems.indexOf(b.id) >= 0\n\t\t\t\t\t\t\tif (aSelected === bSelected) {\n\t\t\t\t\t\t\t\tvar aLastUsed = self._lastUsedTags.indexOf(a.id)\n\t\t\t\t\t\t\t\tvar bLastUsed = self._lastUsedTags.indexOf(b.id)\n\n\t\t\t\t\t\t\t\tif (aLastUsed !== bLastUsed) {\n\t\t\t\t\t\t\t\t\tif (bLastUsed === -1) {\n\t\t\t\t\t\t\t\t\t\treturn -1\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (aLastUsed === -1) {\n\t\t\t\t\t\t\t\t\t\treturn 1\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn aLastUsed < bLastUsed ? -1 : 1\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Both not found\n\t\t\t\t\t\t\t\treturn OC.Util.naturalSortCompare(a.name, b.name)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (aSelected && !bSelected) {\n\t\t\t\t\t\t\t\treturn -1\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn 1\n\t\t\t\t\t\t})\n\t\t\t\t\t\treturn results\n\t\t\t\t\t},\n\t\t\t\t\tformatNoMatches: function() {\n\t\t\t\t\t\treturn t('core', 'No tags found')\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t\t.on('select2-selecting', this._onSelectTag)\n\t\t\t\t\t.on('select2-removing', this._onDeselectTag)\n\n\t\t\t\tvar $dropDown = this.$tagsField.select2('dropdown')\n\t\t\t\t// register events for inside the dropdown\n\t\t\t\t$dropDown.on('mouseup', '.rename', this._onClickRenameTag)\n\t\t\t\t$dropDown.on('mouseup', '.delete', this._onClickDeleteTag)\n\t\t\t\t$dropDown.on('mouseup', '.select2-result-selectable.has-form', this._preventDefault)\n\t\t\t\t$dropDown.on('submit', '.systemtags-rename-form', this._onSubmitRenameTag)\n\n\t\t\t\tthis.delegateEvents()\n\t\t\t},\n\n\t\t\tremove: function() {\n\t\t\t\tif (this.$tagsField) {\n\t\t\t\t\tthis.$tagsField.select2('destroy')\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tgetValues: function() {\n\t\t\t\tthis.$tagsField.select2('val')\n\t\t\t},\n\n\t\t\tsetValues: function(values) {\n\t\t\t\tthis.$tagsField.select2('val', values)\n\t\t\t},\n\n\t\t\tsetData: function(data) {\n\t\t\t\tthis.$tagsField.select2('data', data)\n\t\t\t}\n\t\t})\n\n\tOC.SystemTags = OC.SystemTags || {}\n\tOC.SystemTags.SystemTagsInputField = SystemTagsInputField\n\n})(OC)\n","\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/sass-loader/dist/cjs.js!./systemtags.scss\";\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/sass-loader/dist/cjs.js!./systemtags.scss\";\n export default content && content.locals ? content.locals : undefined;\n","/**\n * Copyright (c) 2015\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Michael Jobst <mjobst+github@tecratech.de>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n(function(OC) {\n\n\t_.extend(OC.Files.Client, {\n\t\tPROPERTY_FILEID: '{' + OC.Files.Client.NS_OWNCLOUD + '}id',\n\t\tPROPERTY_CAN_ASSIGN: '{' + OC.Files.Client.NS_OWNCLOUD + '}can-assign',\n\t\tPROPERTY_DISPLAYNAME: '{' + OC.Files.Client.NS_OWNCLOUD + '}display-name',\n\t\tPROPERTY_USERVISIBLE: '{' + OC.Files.Client.NS_OWNCLOUD + '}user-visible',\n\t\tPROPERTY_USERASSIGNABLE: '{' + OC.Files.Client.NS_OWNCLOUD + '}user-assignable',\n\t})\n\n\t/**\n\t * @class OCA.SystemTags.SystemTagsCollection\n\t * @classdesc\n\t *\n\t * System tag\n\t *\n\t */\n\tconst SystemTagModel = OC.Backbone.Model.extend(\n\t\t/** @lends OCA.SystemTags.SystemTagModel.prototype */ {\n\t\t\tsync: OC.Backbone.davSync,\n\n\t\t\tdefaults: {\n\t\t\t\tuserVisible: true,\n\t\t\t\tuserAssignable: true,\n\t\t\t\tcanAssign: true,\n\t\t\t},\n\n\t\t\tdavProperties: {\n\t\t\t\tid: OC.Files.Client.PROPERTY_FILEID,\n\t\t\t\tname: OC.Files.Client.PROPERTY_DISPLAYNAME,\n\t\t\t\tuserVisible: OC.Files.Client.PROPERTY_USERVISIBLE,\n\t\t\t\tuserAssignable: OC.Files.Client.PROPERTY_USERASSIGNABLE,\n\t\t\t\t// read-only, effective permissions computed by the server,\n\t\t\t\tcanAssign: OC.Files.Client.PROPERTY_CAN_ASSIGN,\n\t\t\t},\n\n\t\t\tparse(data) {\n\t\t\t\treturn {\n\t\t\t\t\tid: data.id,\n\t\t\t\t\tname: data.name,\n\t\t\t\t\tuserVisible: data.userVisible === true || data.userVisible === 'true',\n\t\t\t\t\tuserAssignable: data.userAssignable === true || data.userAssignable === 'true',\n\t\t\t\t\tcanAssign: data.canAssign === true || data.canAssign === 'true',\n\t\t\t\t}\n\t\t\t},\n\t\t})\n\n\tOC.SystemTags = OC.SystemTags || {}\n\tOC.SystemTags.SystemTagModel = SystemTagModel\n})(OC)\n","/**\n * Copyright (c) 2015\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n/* eslint-disable */\n(function(OC) {\n\n\tfunction filterFunction(model, term) {\n\t\treturn model.get('name').substr(0, term.length).toLowerCase() === term.toLowerCase()\n\t}\n\n\t/**\n\t * @class OCA.SystemTags.SystemTagsCollection\n\t * @classdesc\n\t *\n\t * Collection of tags assigned to a file\n\t *\n\t */\n\tvar SystemTagsCollection = OC.Backbone.Collection.extend(\n\t\t/** @lends OC.SystemTags.SystemTagsCollection.prototype */ {\n\n\t\t\tsync: OC.Backbone.davSync,\n\n\t\t\tmodel: OC.SystemTags.SystemTagModel,\n\n\t\t\turl: function() {\n\t\t\t\treturn OC.linkToRemote('dav') + '/systemtags/'\n\t\t\t},\n\n\t\t\tfilterByName: function(name) {\n\t\t\t\treturn this.filter(function(model) {\n\t\t\t\t\treturn filterFunction(model, name)\n\t\t\t\t})\n\t\t\t},\n\n\t\t\treset: function() {\n\t\t\t\tthis.fetched = false\n\t\t\t\treturn OC.Backbone.Collection.prototype.reset.apply(this, arguments)\n\t\t\t},\n\n\t\t\t/**\n\t\t * Lazy fetch.\n\t\t * Only fetches once, subsequent calls will directly call the success handler.\n\t\t *\n\t\t * @param {any} options -\n\t\t * @param [options.force] true to force fetch even if cached entries exist\n\t\t *\n\t\t * @see Backbone.Collection#fetch\n\t\t */\n\t\t\tfetch: function(options) {\n\t\t\t\tvar self = this\n\t\t\t\toptions = options || {}\n\t\t\t\tif (this.fetched || options.force) {\n\t\t\t\t// directly call handler\n\t\t\t\t\tif (options.success) {\n\t\t\t\t\t\toptions.success(this, null, options)\n\t\t\t\t\t}\n\t\t\t\t\t// trigger sync event\n\t\t\t\t\tthis.trigger('sync', this, null, options)\n\t\t\t\t\treturn Promise.resolve()\n\t\t\t\t}\n\n\t\t\t\tvar success = options.success\n\t\t\t\toptions = _.extend({}, options)\n\t\t\t\toptions.success = function() {\n\t\t\t\t\tself.fetched = true\n\t\t\t\t\tif (success) {\n\t\t\t\t\t\treturn success.apply(this, arguments)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn OC.Backbone.Collection.prototype.fetch.call(this, options)\n\t\t\t}\n\t\t})\n\n\tOC.SystemTags = OC.SystemTags || {}\n\tOC.SystemTags.SystemTagsCollection = SystemTagsCollection\n\n\t/**\n\t * @type OC.SystemTags.SystemTagsCollection\n\t */\n\tOC.SystemTags.collection = new OC.SystemTags.SystemTagsCollection()\n})(OC)\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, \".systemtags-select2-dropdown .select2-result-label .checkmark{visibility:hidden;margin-left:-5px;margin-right:5px;padding:4px}.systemtags-select2-dropdown .select2-result-label .new-item .systemtags-actions{display:none}.systemtags-select2-dropdown .select2-selected .select2-result-label .checkmark{visibility:visible}.systemtags-select2-dropdown .select2-result-label .icon{display:inline-block;opacity:.5}.systemtags-select2-dropdown .select2-result-label .icon.rename{padding:4px}.systemtags-select2-dropdown .systemtags-actions{position:absolute;right:5px}.systemtags-select2-dropdown .systemtags-rename-form{display:inline-block;width:calc(100% - 20px);top:-6px;position:relative}.systemtags-select2-dropdown .systemtags-rename-form input{display:inline-block;height:30px;width:calc(100% - 40px)}.systemtags-select2-dropdown .label{width:85%;display:inline-block;overflow:hidden;text-overflow:ellipsis}.systemtags-select2-dropdown .label.hidden{display:none}.systemtags-select2-dropdown span{line-height:25px}.systemtags-select2-dropdown .systemtags-item{display:inline-block;height:25px;width:100%}.systemtags-select2-dropdown .select2-result-label{height:25px}.systemTagsInfoView,.systemtags-select2-container{width:100%}.systemTagsInfoView .select2-choices,.systemtags-select2-container .select2-choices{flex-wrap:nowrap !important;max-height:44px}.systemTagsInfoView .select2-choices .select2-search-choice.select2-locked .label,.systemtags-select2-container .select2-choices .select2-search-choice.select2-locked .label{opacity:.5}#select2-drop.systemtags-select2-dropdown .select2-results li.select2-result{padding:5px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/css/systemtags.scss\"],\"names\":[],\"mappings\":\"AAcE,8DACC,iBAAA,CACA,gBAAA,CACA,gBAAA,CACA,WAAA,CAED,iFACC,YAAA,CAGF,gFACC,kBAAA,CAED,yDACC,oBAAA,CACA,UAAA,CACA,gEACC,WAAA,CAGF,iDACC,iBAAA,CACA,SAAA,CAED,qDACC,oBAAA,CACA,uBAAA,CACA,QAAA,CACA,iBAAA,CACA,2DACC,oBAAA,CACA,WAAA,CACA,uBAAA,CAGF,oCACC,SAAA,CACA,oBAAA,CACA,eAAA,CACA,sBAAA,CACA,2CACC,YAAA,CAGF,kCACC,gBAAA,CAED,8CACC,oBAAA,CACA,WAAA,CACA,UAAA,CAED,mDACC,WAAA,CAIF,kDAEC,UAAA,CAEA,oFACC,2BAAA,CACA,eAAA,CAGD,8KACC,UAAA,CAIF,6EACC,WAAA\",\"sourcesContent\":[\"/**\\n * @copyright Copyright (c) 2016, John Molakvoæ <skjnldsv@protonmail.com>\\n * @copyright Copyright (c) 2016, Robin Appelman <robin@icewind.nl>\\n * @copyright Copyright (c) 2016, Jan-Christoph Borchardt <hey@jancborchardt.net>\\n * @copyright Copyright (c) 2016, Vincent Petry <pvince81@owncloud.com>\\n * @copyright Copyright (c) 2016, Erik Pellikka <erik@pellikka.org>\\n * @copyright Copyright (c) 2015, Vincent Petry <pvince81@owncloud.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n */\\n\\n.systemtags-select2-dropdown {\\n\\t.select2-result-label {\\n\\t\\t.checkmark {\\n\\t\\t\\tvisibility: hidden;\\n\\t\\t\\tmargin-left: -5px;\\n\\t\\t\\tmargin-right: 5px;\\n\\t\\t\\tpadding: 4px;\\n\\t\\t}\\n\\t\\t.new-item .systemtags-actions {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n\\t.select2-selected .select2-result-label .checkmark {\\n\\t\\tvisibility: visible;\\n\\t}\\n\\t.select2-result-label .icon {\\n\\t\\tdisplay: inline-block;\\n\\t\\topacity: .5;\\n\\t\\t&.rename {\\n\\t\\t\\tpadding: 4px;\\n\\t\\t}\\n\\t}\\n\\t.systemtags-actions {\\n\\t\\tposition: absolute;\\n\\t\\tright: 5px;\\n\\t}\\n\\t.systemtags-rename-form {\\n\\t\\tdisplay: inline-block;\\n\\t\\twidth: calc(100% - 20px);\\n\\t\\ttop: -6px;\\n\\t\\tposition: relative;\\n\\t\\tinput {\\n\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\theight: 30px;\\n\\t\\t\\twidth: calc(100% - 40px);\\n\\t\\t}\\n\\t}\\n\\t.label {\\n\\t\\twidth: 85%;\\n\\t\\tdisplay: inline-block;\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\t&.hidden {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n\\tspan {\\n\\t\\tline-height: 25px;\\n\\t}\\n\\t.systemtags-item {\\n\\t\\tdisplay: inline-block;\\n\\t\\theight: 25px;\\n\\t\\twidth: 100%;\\n\\t}\\n\\t.select2-result-label {\\n\\t\\theight: 25px;\\n\\t}\\n}\\n\\n.systemTagsInfoView,\\n.systemtags-select2-container {\\n\\twidth: 100%;\\n\\n\\t.select2-choices {\\n\\t\\tflex-wrap: nowrap !important;\\n\\t\\tmax-height: 44px;\\n\\t}\\n\\n\\t.select2-choices .select2-search-choice.select2-locked .label {\\n\\t\\topacity: 0.5;\\n\\t}\\n}\\n\\n#select2-drop.systemtags-select2-dropdown .select2-results li.select2-result {\\n\\tpadding: 5px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n return \" new-item\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<span class=\\\"label\\\">\"\n + ((stack1 = ((helper = (helper = lookupProperty(helpers,\"tagMarkup\") || (depth0 != null ? lookupProperty(depth0,\"tagMarkup\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"tagMarkup\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":22},\"end\":{\"line\":4,\"column\":37}}}) : helper))) != null ? stack1 : \"\")\n + \"</span>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<span class=\\\"label\\\">\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"name\") || (depth0 != null ? lookupProperty(depth0,\"name\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"name\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":22},\"end\":{\"line\":6,\"column\":30}}}) : helper)))\n + \"</span>\\n\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<span class=\\\"systemtags-actions\\\">\\n\t\t\t<a href=\\\"#\\\" class=\\\"rename icon icon-rename\\\" title=\\\"\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"renameTooltip\") || (depth0 != null ? lookupProperty(depth0,\"renameTooltip\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"renameTooltip\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":54},\"end\":{\"line\":10,\"column\":71}}}) : helper)))\n + \"\\\"></a>\\n\t\t</span>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, options, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n }, buffer = \n \"<span class=\\\"systemtags-item\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"isNew\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":28},\"end\":{\"line\":1,\"column\":57}}})) != null ? stack1 : \"\")\n + \"\\\" data-id=\\\"\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"id\") || (depth0 != null ? lookupProperty(depth0,\"id\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"id\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":68},\"end\":{\"line\":1,\"column\":74}}}) : helper)))\n + \"\\\">\\n<span class=\\\"checkmark icon icon-checkmark\\\"></span>\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"isAdmin\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.program(5, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":1},\"end\":{\"line\":7,\"column\":8}}})) != null ? stack1 : \"\");\n stack1 = ((helper = (helper = lookupProperty(helpers,\"allowActions\") || (depth0 != null ? lookupProperty(depth0,\"allowActions\") : depth0)) != null ? helper : alias2),(options={\"name\":\"allowActions\",\"hash\":{},\"fn\":container.program(7, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":1},\"end\":{\"line\":12,\"column\":18}}}),(typeof helper === alias3 ? helper.call(alias1,options) : helper));\n if (!lookupProperty(helpers,\"allowActions\")) { stack1 = container.hooks.blockHelperMissing.call(depth0,stack1,options)}\n if (stack1 != null) { buffer += stack1; }\n return buffer + \"</span>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<a href=\\\"#\\\" class=\\\"delete icon icon-delete\\\" title=\\\"\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"deleteTooltip\") || (depth0 != null ? lookupProperty(depth0,\"deleteTooltip\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"deleteTooltip\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":5,\"column\":53},\"end\":{\"line\":5,\"column\":70}}}) : helper)))\n + \"\\\"></a>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<form class=\\\"systemtags-rename-form\\\">\\n\t <label class=\\\"hidden-visually\\\" for=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"cid\") || (depth0 != null ? lookupProperty(depth0,\"cid\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":38},\"end\":{\"line\":2,\"column\":45}}}) : helper)))\n + \"-rename-input\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"renameLabel\") || (depth0 != null ? lookupProperty(depth0,\"renameLabel\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"renameLabel\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":60},\"end\":{\"line\":2,\"column\":75}}}) : helper)))\n + \"</label>\\n\t<input id=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"cid\") || (depth0 != null ? lookupProperty(depth0,\"cid\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":12},\"end\":{\"line\":3,\"column\":19}}}) : helper)))\n + \"-rename-input\\\" type=\\\"text\\\" value=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"name\") || (depth0 != null ? lookupProperty(depth0,\"name\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"name\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":53},\"end\":{\"line\":3,\"column\":61}}}) : helper)))\n + \"\\\">\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"isAdmin\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":1},\"end\":{\"line\":6,\"column\":8}}})) != null ? stack1 : \"\")\n + \"</form>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<span class=\\\"label\\\">\"\n + ((stack1 = ((helper = (helper = lookupProperty(helpers,\"tagMarkup\") || (depth0 != null ? lookupProperty(depth0,\"tagMarkup\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"tagMarkup\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":21},\"end\":{\"line\":2,\"column\":36}}}) : helper))) != null ? stack1 : \"\")\n + \"</span>\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<span class=\\\"label\\\">\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"name\") || (depth0 != null ? lookupProperty(depth0,\"name\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"name\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":21},\"end\":{\"line\":4,\"column\":29}}}) : helper)))\n + \"</span>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"isAdmin\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.program(3, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":5,\"column\":7}}})) != null ? stack1 : \"\");\n},\"useData\":true});","// 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 = 1686;","__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\t1686: 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));","__webpack_require__.nc = undefined;","// 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__(16558); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","OC","SystemTags","getDescriptiveTag","tag","_","isUndefined","name","toJSON","$","addClass","text","t","scope","$span","append","escapeHTML","userAssignable","userVisible","SystemTagsMappingCollection","Backbone","Collection","extend","sync","davSync","usePUT","_objectId","_objectType","model","SystemTagModel","url","generateRemoteUrl","this","setObjectId","objectId","setObjectType","objectType","initialize","models","options","getTagIds","map","id","SystemTagsInputField","View","_rendered","_newTag","_lastUsedTags","className","template","data","_multiple","multiple","_allowActions","allowActions","_allowCreate","allowCreate","_isAdmin","isAdmin","isFunction","initSelection","_initSelection","collection","self","on","defer","_refreshSelection","bind","_getLastUsedTags","bindAll","ajax","type","generateUrl","success","response","$tagsField","select2","val","_onClickRenameTag","ev","$item","target","closest","tagId","attr","oldName","get","$renameForm","templateResultForm","cid","deleteTooltip","renameLabel","find","after","tooltip","placement","container","focus","selectRange","length","_onSubmitRenameTag","preventDefault","$form","tagModel","newName","trim","save","removeClass","remove","_onClickDeleteTag","destroy","_addToSelect2Selection","selection","push","_onSelectTag","e","object","isNew","create","canAssign","unshift","trigger","error","xhr","status","reset","fetch","where","_onDeselectTag","choice","_queryTagsAutocomplete","query","tagModels","filterByName","term","filter","callback","results","invoke","_preventDefault","stopPropagation","_formatDropDownResult","templateResult","renameTooltip","tagMarkup","innerHTML","_formatSelection","templateSelection","_createSearchChoice","entry","element","ids","split","modelToSelection","locked","selectedModels","indexOf","findSelectedObjects","render","$el","html","placeholder","containerCssClass","dropdownCssClass","closeOnSelect","allowClear","toggleSelect","formatResult","formatSelection","createSearchChoice","undefined","sortResults","selectedItems","pluck","sort","a","b","aSelected","bSelected","aLastUsed","bLastUsed","Util","naturalSortCompare","formatNoMatches","$dropDown","delegateEvents","getValues","setValues","values","setData","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","Files","Client","PROPERTY_FILEID","NS_OWNCLOUD","PROPERTY_CAN_ASSIGN","PROPERTY_DISPLAYNAME","PROPERTY_USERVISIBLE","PROPERTY_USERASSIGNABLE","Model","defaults","davProperties","parse","SystemTagsCollection","linkToRemote","substr","toLowerCase","filterFunction","fetched","prototype","apply","arguments","force","Promise","resolve","call","___CSS_LOADER_EXPORT___","module","Handlebars","exports","depth0","helpers","partials","stack1","helper","lookupProperty","parent","propertyName","Object","hasOwnProperty","hooks","helperMissing","nullContext","escapeExpression","alias1","alias2","alias3","buffer","program","noop","blockHelperMissing","alias4","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","keys","every","key","splice","r","n","getter","__esModule","d","definition","o","defineProperty","enumerable","g","globalThis","Function","window","obj","prop","Symbol","toStringTag","value","nmd","paths","children","document","baseURI","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/core-unified-search.js b/dist/core-unified-search.js
index 1f658014793..600462b5512 100644
--- a/dist/core-unified-search.js
+++ b/dist/core-unified-search.js
@@ -1,3 +1,3 @@
/*! For license information please see core-unified-search.js.LICENSE.txt */
-!function(){"use strict";var n,e={91231:function(n,e,r){var i=r(17499),a=r(22200),o=r(9944),s=r(20144),c=r(74854),u=r(79753),l=r(16453),d=r(4820);function A(n,t,e,r,i,a,o){try{var s=n[a](o),c=s.value}catch(n){return void e(n)}s.done?t(c):Promise.resolve(c).then(r,i)}function h(n){return function(){var t=this,e=arguments;return new Promise((function(r,i){var a=n.apply(t,e);function o(n){A(a,r,i,o,s,"next",n)}function s(n){A(a,r,i,o,s,"throw",n)}o(void 0)}))}}var p=(0,l.loadState)("unified-search","limit-default"),f=/[^-]in:([a-z_-]+)/gi,m=/-in:([a-z_-]+)/gi;function C(){return g.apply(this,arguments)}function g(){return(g=h(regeneratorRuntime.mark((function n(){var t,e;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,d.default.get((0,u.generateOcsUrl)("search/providers"),{params:{from:window.location.pathname.replace("/index.php","")+window.location.search}});case 3:if(t=n.sent,!("ocs"in(e=t.data)&&"data"in e.ocs&&Array.isArray(e.ocs.data)&&e.ocs.data.length>0)){n.next=7;break}return n.abrupt("return",e.ocs.data);case 7:n.next=12;break;case 9:n.prev=9,n.t0=n.catch(0),console.error(n.t0);case 12:return n.abrupt("return",[]);case 13:case"end":return n.stop()}}),n,null,[[0,9]])})))).apply(this,arguments)}function v(n){var t=n.type,e=n.query,r=n.cursor,i=d.default.CancelToken.source(),a=function(){var n=h(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",d.default.get((0,u.generateOcsUrl)("search/providers/{type}/search",{type:t}),{cancelToken:i.token,params:{term:e,cursor:r,from:window.location.pathname.replace("/index.php","")+window.location.search}}));case 1:case"end":return n.stop()}}),n)})));return function(){return n.apply(this,arguments)}}();return{request:a,cancel:i.cancel}}var _=r(26932),b=r(56286),y=r.n(b),x=r(79440),w=r.n(x),k=r(20296),S=r.n(k),D=r(97e3),$=r.n(D),B=r(94094),E=r.n(B),R=r(13313),I=r(67536),q=r(85354),U=r.n(q),L={name:"HeaderMenu",directives:{ClickOutside:I.directive},mixins:[U()],props:{id:{type:String,required:!0},ariaLabel:{type:String,default:""},open:{type:Boolean,default:!1}},data:function(){return{opened:this.open,clickOutsideConfig:{handler:this.closeMenu,middleware:this.clickOutsideMiddleware}}},watch:{open:function(n){var t=this;this.opened=n,this.$nextTick((function(){t.opened?t.openMenu():t.closeMenu()}))}},mounted:function(){document.addEventListener("keydown",this.onKeyDown)},beforeDestroy:function(){document.removeEventListener("keydown",this.onKeyDown)},methods:{toggleMenu:function(){this.opened?this.closeMenu():this.openMenu()},closeMenu:function(){this.opened&&(this.opened=!1,this.$emit("close"),this.$emit("update:open",!1))},openMenu:function(){this.opened||(this.opened=!0,this.$emit("open"),this.$emit("update:open",!0))},onKeyDown:function(n){"Escape"===n.key&&this.opened&&(n.preventDefault(),this.$emit("cancel"),this.opened=!1,this.$emit("update:open",!1))}}},O=r(93379),M=r.n(O),P=r(7795),z=r.n(P),Z=r(90569),j=r.n(Z),G=r(3565),T=r.n(G),F=r(19216),W=r.n(F),N=r(44589),Q=r.n(N),H=r(34769),K={};K.styleTagTransform=Q(),K.setAttributes=T(),K.insert=j().bind(null,"head"),K.domAPI=z(),K.insertStyleElement=W(),M()(H.Z,K),H.Z&&H.Z.locals&&H.Z.locals;var V=r(51900),Y=(0,V.Z)(L,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{directives:[{name:"click-outside",rawName:"v-click-outside",value:n.clickOutsideConfig,expression:"clickOutsideConfig"}],staticClass:"header-menu",class:{"header-menu--opened":n.opened},attrs:{id:n.id}},[e("a",{staticClass:"header-menu__trigger",attrs:{href:"#","aria-label":n.ariaLabel,"aria-controls":"header-menu-"+n.id,"aria-expanded":n.opened,"aria-haspopup":"menu"},on:{click:function(t){return t.preventDefault(),n.toggleMenu.apply(null,arguments)}}},[n._t("trigger")],2),n._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:n.opened,expression:"opened"}],staticClass:"header-menu__wrapper",attrs:{id:"header-menu-"+n.id,role:"menu"}},[e("div",{staticClass:"header-menu__carret"}),n._v(" "),e("div",{staticClass:"header-menu__content"},[n._t("default")],2)])])}),[],!1,null,"51f09a15",null),J=Y.exports,X={name:"SearchResult",components:{Highlight:E()},props:{thumbnailUrl:{type:String,default:null},title:{type:String,required:!0},subline:{type:String,default:null},resourceUrl:{type:String,default:null},icon:{type:String,default:""},rounded:{type:Boolean,default:!1},query:{type:String,default:""},focused:{type:Boolean,default:!1}},data:function(){return{hasValidThumbnail:this.thumbnailUrl&&""!==this.thumbnailUrl.trim(),loaded:!1}},computed:{isIconUrl:function(){if(this.icon.startsWith("/"))return!0;try{new URL(this.icon)}catch(n){return!1}return!0}},watch:{thumbnailUrl:function(){this.hasValidThumbnail=this.thumbnailUrl&&""!==this.thumbnailUrl.trim(),this.loaded=!1}},methods:{reEmitEvent:function(n){this.$emit(n.type,n)},onError:function(){this.hasValidThumbnail=!1},onLoad:function(){this.loaded=!0}}},nn=r(33068),tn={};tn.styleTagTransform=Q(),tn.setAttributes=T(),tn.insert=j().bind(null,"head"),tn.domAPI=z(),tn.insertStyleElement=W(),M()(nn.Z,tn),nn.Z&&nn.Z.locals&&nn.Z.locals;var en=(0,V.Z)(X,(function(){var n,t=this,e=t.$createElement,r=t._self._c||e;return r("a",{staticClass:"unified-search__result",class:{"unified-search__result--focused":t.focused},attrs:{href:t.resourceUrl||"#"},on:{click:t.reEmitEvent,focus:t.reEmitEvent}},[r("div",{staticClass:"unified-search__result-icon",class:(n={"unified-search__result-icon--rounded":t.rounded,"unified-search__result-icon--no-preview":!t.hasValidThumbnail&&!t.loaded,"unified-search__result-icon--with-thumbnail":t.hasValidThumbnail&&t.loaded},n[t.icon]=!t.loaded&&!t.isIconUrl,n),style:{backgroundImage:t.isIconUrl?"url("+t.icon+")":""},attrs:{role:"img"}},[t.hasValidThumbnail?r("img",{directives:[{name:"show",rawName:"v-show",value:t.loaded,expression:"loaded"}],attrs:{src:t.thumbnailUrl,alt:""},on:{error:t.onError,load:t.onLoad}}):t._e()]),t._v(" "),r("span",{staticClass:"unified-search__result-content"},[r("h3",{staticClass:"unified-search__result-line-one",attrs:{title:t.title}},[r("Highlight",{attrs:{text:t.title,search:t.query}})],1),t._v(" "),t.subline?r("h4",{staticClass:"unified-search__result-line-two",attrs:{title:t.subline}},[t._v(t._s(t.subline))]):t._e()])])}),[],!1,null,"9dc2a344",null).exports,rn={name:"SearchResultPlaceholders",data:function(){return{light:null,dark:null}},mounted:function(){var n=getComputedStyle(document.documentElement);this.dark=n.getPropertyValue("--color-placeholder-dark"),this.light=n.getPropertyValue("--color-placeholder-light")},methods:{randWidth:function(){return Math.floor(20*Math.random())+30}}},an=r(44201),on={};on.styleTagTransform=Q(),on.setAttributes=T(),on.insert=j().bind(null,"head"),on.domAPI=z(),on.insertStyleElement=W(),M()(an.Z,on),an.Z&&an.Z.locals&&an.Z.locals;var sn=(0,V.Z)(rn,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("ul",[e("svg",{staticClass:"unified-search__result-placeholder-gradient"},[e("defs",[e("linearGradient",{attrs:{id:"unified-search__result-placeholder-gradient"}},[e("stop",{attrs:{offset:"0%","stop-color":n.light}},[e("animate",{attrs:{attributeName:"stop-color",values:n.light+"; "+n.light+"; "+n.dark+"; "+n.dark+"; "+n.light,dur:"2s",repeatCount:"indefinite"}})]),n._v(" "),e("stop",{attrs:{offset:"100%","stop-color":n.dark}},[e("animate",{attrs:{attributeName:"stop-color",values:n.dark+"; "+n.light+"; "+n.light+"; "+n.dark+"; "+n.dark,dur:"2s",repeatCount:"indefinite"}})])],1)],1)]),n._v(" "),n._l([1,2,3],(function(t){return e("li",{key:t},[e("svg",{staticClass:"unified-search__result-placeholder",attrs:{xmlns:"http://www.w3.org/2000/svg",fill:"url(#unified-search__result-placeholder-gradient)"}},[e("rect",{staticClass:"unified-search__result-placeholder-icon"}),n._v(" "),e("rect",{staticClass:"unified-search__result-placeholder-line-one"}),n._v(" "),e("rect",{staticClass:"unified-search__result-placeholder-line-two",style:{width:"calc("+n.randWidth()+"%)"}})])])}))],2)}),[],!1,null,"9ed03c40",null).exports;function cn(n){return function(n){if(Array.isArray(n))return un(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 un(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)?un(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 un(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 ln(n,t,e,r,i,a,o){try{var s=n[a](o),c=s.value}catch(n){return void e(n)}s.done?t(c):Promise.resolve(c).then(r,i)}function dn(n){return function(){var t=this,e=arguments;return new Promise((function(r,i){var a=n.apply(t,e);function o(n){ln(a,r,i,o,s,"next",n)}function s(n){ln(a,r,i,o,s,"throw",n)}o(void 0)}))}}var An={name:"UnifiedSearch",components:{ActionButton:y(),Actions:w(),EmptyContent:$(),HeaderMenu:J,Highlight:E(),Magnify:R.Z,SearchResult:en,SearchResultPlaceholders:sn},data:function(){return{types:[],cursors:{},limits:{},loading:{},reached:{},requests:[],results:{},query:"",focused:null,defaultLimit:p,minSearchLength:2,open:!1}},computed:{typesIDs:function(){return this.types.map((function(n){return n.id}))},typesNames:function(){return this.types.map((function(n){return n.name}))},typesMap:function(){return this.types.reduce((function(n,t){return n[t.id]=t.name,n}),{})},ariaLabel:function(){return t("core","Search")},hasResults:function(){return 0!==Object.keys(this.results).length},orderedResults:function(){var n=this;return this.typesIDs.filter((function(t){return t in n.results})).map((function(t){return{type:t,list:n.results[t]}}))},availableFilters:function(){return Object.keys(this.results)},usedFiltersIn:function(){for(var n,t=[];null!==(n=f.exec(this.query));)t.push(n[1]);return t},usedFiltersNot:function(){for(var n,t=[];null!==(n=m.exec(this.query));)t.push(n[1]);return t},isShortQuery:function(){return this.query&&this.query.trim().length<2},isValidQuery:function(){return this.query&&""!==this.query.trim()&&!this.isShortQuery},isDoneSearching:function(){return Object.values(this.reached).every((function(n){return!1===n}))},isLoading:function(){return Object.values(this.loading).some((function(n){return!0===n}))}},created:function(){var n=this;return dn(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,C();case 2:n.types=t.sent,n.logger.debug("Unified Search initialized with the following providers",n.types);case 4:case"end":return t.stop()}}),t)})))()},mounted:function(){var n=this;document.addEventListener("keydown",(function(t){t.ctrlKey&&"f"===t.key&&!n.open&&(t.preventDefault(),n.open=!0,n.focusInput()),n.open&&("ArrowDown"===t.key&&n.focusNext(t),"ArrowUp"===t.key&&n.focusPrev(t))}))},methods:{onOpen:function(){var n=this;return dn(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n.focusInput(),t.next=3,C();case 3:n.types=t.sent;case 4:case"end":return t.stop()}}),t)})))()},onClose:function(){(0,c.emit)("nextcloud:unified-search.close")},onReset:function(){(0,c.emit)("nextcloud:unified-search.reset"),this.logger.debug("Search reset"),this.query="",this.resetState(),this.focusInput()},resetState:function(){var n=this;return dn(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n.cursors={},n.limits={},n.reached={},n.results={},n.focused=null,t.next=7,n.cancelPendingRequests();case 7:case"end":return t.stop()}}),t)})))()},cancelPendingRequests:function(){var n=this;return dn(regeneratorRuntime.mark((function t(){var e;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e=n.requests.slice(0),n.requests=[],t.next=4,Promise.all(e.map((function(n){return n()})));case 4:case"end":return t.stop()}}),t)})))()},focusInput:function(){var n=this;this.$nextTick((function(){n.$refs.input.focus(),n.$refs.input.select()}))},onInputEnter:function(){this.hasResults?this.getResultsList()[0].click():this.onInput()},onInput:function(){var n=this;return dn(regeneratorRuntime.mark((function t(){var e,r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if((0,c.emit)("nextcloud:unified-search.search",{query:n.query}),""!==n.query.trim()&&!n.isShortQuery){t.next=3;break}return t.abrupt("return");case 3:return e=n.typesIDs,r=n.query,n.usedFiltersNot.length>0&&(e=n.typesIDs.filter((function(t){return-1===n.usedFiltersNot.indexOf(t)}))),n.usedFiltersIn.length>0&&(e=n.typesIDs.filter((function(t){return n.usedFiltersIn.indexOf(t)>-1}))),r=r.replace(f,"").replace(m,""),t.next=10,n.resetState();case 10:n.$set(n.loading,"all",!0),n.logger.debug("Searching ".concat(r," in"),e),Promise.all(e.map(function(){var t=dn(regeneratorRuntime.mark((function t(e){var i,a,o,s,c;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,i=v({type:e,query:r}),a=i.request,o=i.cancel,n.requests.push(o),t.next=5,a();case 5:return s=t.sent,(c=s.data).ocs.data.entries.length>0?n.$set(n.results,e,c.ocs.data.entries):n.$delete(n.results,e),c.ocs.data.cursor?n.$set(n.cursors,e,c.ocs.data.cursor):c.ocs.data.isPaginated||n.$set(n.limits,e,n.defaultLimit),c.ocs.data.entries.length<n.defaultLimit&&n.$set(n.reached,e,!0),null===n.focused&&(n.focused=0),t.abrupt("return",1);case 14:if(t.prev=14,t.t0=t.catch(0),n.$delete(n.results,e),!t.t0.response||!t.t0.response.status){t.next=21;break}return n.logger.error("Error searching for ".concat(n.typesMap[e]),t.t0),(0,_.x2)(n.t("core","An error occurred while searching for {type}",{type:n.typesMap[e]})),t.abrupt("return",0);case 21:return t.abrupt("return",2);case 22:case"end":return t.stop()}}),t,null,[[0,14]])})));return function(n){return t.apply(this,arguments)}}())).then((function(t){t.some((function(n){return 2===n}))||(n.loading={})}));case 13:case"end":return t.stop()}}),t)})))()},onInputDebounced:S()((function(n){this.onInput(n)}),200),loadMore:function(n){var t=this;return dn(regeneratorRuntime.mark((function e(){var r,i,a,o,s,c;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t.loading[n]){e.next=2;break}return e.abrupt("return");case 2:if(!t.cursors[n]){e.next=14;break}return r=v({type:n,query:t.query,cursor:t.cursors[n]}),i=r.request,a=r.cancel,t.requests.push(a),e.next=7,i();case 7:o=e.sent,(s=o.data).ocs.data.cursor&&t.$set(t.cursors,n,s.ocs.data.cursor),s.ocs.data.entries.length>0&&(c=t.results[n]).push.apply(c,cn(s.ocs.data.entries)),s.ocs.data.entries.length<t.defaultLimit&&t.$set(t.reached,n,!0),e.next=15;break;case 14:t.limits[n]&&t.limits[n]>=0&&(t.limits[n]+=t.defaultLimit,t.limits[n]>=t.results[n].length&&t.$set(t.reached,n,!0));case 15:null!==t.focused&&t.$nextTick((function(){t.focusIndex(t.focused)}));case 16:case"end":return e.stop()}}),e)})))()},limitIfAny:function(n,t){return t in this.limits?n.slice(0,this.limits[t]):n},getResultsList:function(){return this.$el.querySelectorAll(".unified-search__results .unified-search__result")},focusFirst:function(n){var t=this.getResultsList();t&&t.length>0&&(n&&n.preventDefault(),this.focused=0,this.focusIndex(this.focused))},focusNext:function(n){if(null!==this.focused){var t=this.getResultsList();t&&t.length>0&&this.focused+1<t.length&&(n.preventDefault(),this.focused++,this.focusIndex(this.focused))}else this.focusFirst(n)},focusPrev:function(n){if(null!==this.focused){var t=this.getResultsList();t&&t.length>0&&this.focused>0&&(n.preventDefault(),this.focused--,this.focusIndex(this.focused))}else this.focusFirst(n)},focusIndex:function(n){var t=this.getResultsList();t&&t[n]&&t[n].focus()},setFocusedIndex:function(n){var t=n.target,e=cn(this.getResultsList()).findIndex((function(n){return n===t}));e>-1&&(this.focused=e)},onClickFilter:function(n){this.query="".concat(this.query," ").concat(n).replace(/ {2}/g," ").trim(),this.onInput()}}},hn=An,pn=r(55352),fn={};fn.styleTagTransform=Q(),fn.setAttributes=T(),fn.insert=j().bind(null,"head"),fn.domAPI=z(),fn.insertStyleElement=W(),M()(pn.Z,fn),pn.Z&&pn.Z.locals&&pn.Z.locals;var mn=(0,V.Z)(hn,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("HeaderMenu",{staticClass:"unified-search",attrs:{id:"unified-search","exclude-click-outside-classes":"popover",open:n.open,"aria-label":n.ariaLabel},on:{"update:open":function(t){n.open=t},open:n.onOpen,close:n.onClose},scopedSlots:n._u([{key:"trigger",fn:function(){return[e("Magnify",{staticClass:"unified-search__trigger",attrs:{size:20,"fill-color":"var(--color-primary-text)"}})]},proxy:!0}])},[n._v(" "),e("div",{staticClass:"unified-search__input-wrapper"},[e("form",{staticClass:"unified-search__form",class:{"icon-loading-small":n.isLoading},attrs:{role:"search"},on:{submit:function(t){return t.preventDefault(),t.stopPropagation(),n.onInputEnter.apply(null,arguments)},reset:function(t){return t.preventDefault(),t.stopPropagation(),n.onReset.apply(null,arguments)}}},[e("input",{directives:[{name:"model",rawName:"v-model",value:n.query,expression:"query"}],ref:"input",staticClass:"unified-search__form-input",class:{"unified-search__form-input--with-reset":!!n.query},attrs:{type:"search",placeholder:n.t("core","Search {types} …",{types:n.typesNames.join(", ")})},domProps:{value:n.query},on:{input:[function(t){t.target.composing||(n.query=t.target.value)},n.onInputDebounced],keypress:function(t){return!t.type.indexOf("key")&&n._k(t.keyCode,"enter",13,t.key,"Enter")?null:(t.preventDefault(),t.stopPropagation(),n.onInputEnter.apply(null,arguments))}}}),n._v(" "),n.query&&!n.isLoading?e("input",{staticClass:"unified-search__form-reset icon-close",attrs:{type:"reset","aria-label":n.t("core","Reset search"),value:""}}):n._e()]),n._v(" "),n.availableFilters.length>1?e("Actions",{staticClass:"unified-search__filters",attrs:{placement:"bottom"}},n._l(n.availableFilters,(function(t){return e("ActionButton",{key:t,attrs:{icon:"icon-filter",title:n.t("core","Search for {name} only",{name:n.typesMap[t]})},on:{click:function(e){return n.onClickFilter("in:"+t)}}},[n._v("\n\t\t\t\t"+n._s("in:"+t)+"\n\t\t\t")])})),1):n._e()],1),n._v(" "),n.hasResults?n._l(n.orderedResults,(function(t,r){var i=t.list,a=t.type;return e("ul",{key:a,staticClass:"unified-search__results",class:"unified-search__results-"+a,attrs:{"aria-label":n.typesMap[a]}},[n._l(n.limitIfAny(i,a),(function(t,i){return e("li",{key:t.resourceUrl},[e("SearchResult",n._b({attrs:{query:n.query,focused:0===n.focused&&0===r&&0===i},on:{focus:n.setFocusedIndex}},"SearchResult",t,!1))],1)})),n._v(" "),e("li",[n.reached[a]?n._e():e("SearchResult",{staticClass:"unified-search__result-more",attrs:{title:n.loading[a]?n.t("core","Loading more results …"):n.t("core","Load more results"),"icon-class":n.loading[a]?"icon-loading-small":""},on:{click:function(t){return t.preventDefault(),n.loadMore(a)},focus:n.setFocusedIndex}})],1)],2)})):[n.isLoading?e("SearchResultPlaceholders"):n.isValidQuery?e("EmptyContent",{attrs:{icon:"icon-search"}},[e("Highlight",{attrs:{text:n.t("core","No results for {query}",{query:n.query}),search:n.query}})],1):!n.isLoading||n.isShortQuery?e("EmptyContent",{attrs:{icon:"icon-search"},scopedSlots:n._u([n.isShortQuery?{key:"desc",fn:function(){return[n._v("\n\t\t\t\t"+n._s(n.n("core","Please enter {minSearchLength} character or more to search","Please enter {minSearchLength} characters or more to search",n.minSearchLength,{minSearchLength:n.minSearchLength}))+"\n\t\t\t")]},proxy:!0}:null],null,!0)},[n._v("\n\t\t\t"+n._s(n.t("core","Start typing to search"))+"\n\t\t\t")]):n._e()]],2)}),[],!1,null,"59134936",null),Cn=mn.exports;r.nc=btoa((0,a.getRequestToken)());var gn=(0,i.IY)().setApp("unified-search").detectUser().build();s.default.mixin({data:function(){return{logger:gn}},methods:{t:o.translate,n:o.translatePlural}}),new s.default({el:"#unified-search",name:"UnifiedSearchRoot",render:function(n){return n(Cn)}})},34769:function(n,t,e){var r=e(87537),i=e.n(r),a=e(23645),o=e.n(a)()(i());o.push([n.id,'.notifications:not(:empty)~#unified-search[data-v-51f09a15]{order:-1}.notifications:not(:empty)~#unified-search .header-menu__carret[data-v-51f09a15]{right:175px}.header-menu__trigger[data-v-51f09a15]{display:flex;align-items:center;justify-content:center;width:50px;height:100%;margin:0;padding:0;cursor:pointer;opacity:.6}.header-menu--opened .header-menu__trigger[data-v-51f09a15],.header-menu__trigger[data-v-51f09a15]:hover,.header-menu__trigger[data-v-51f09a15]:focus,.header-menu__trigger[data-v-51f09a15]:active{opacity:1}.header-menu__wrapper[data-v-51f09a15]{position:fixed;z-index:2000;top:50px;right:0;box-sizing:border-box;margin:0;border-radius:0 0 var(--border-radius) var(--border-radius);background-color:var(--color-main-background);filter:drop-shadow(0 1px 5px var(--color-box-shadow))}.header-menu__carret[data-v-51f09a15]{position:absolute;right:128px;bottom:100%;width:0;height:0;content:" ";pointer-events:none;border:10px solid rgba(0,0,0,0);border-bottom-color:var(--color-main-background)}.header-menu__content[data-v-51f09a15]{overflow:auto;width:350px;max-width:100vw;min-height:66px;max-height:calc(100vh - 100px)}',"",{version:3,sources:["webpack://./core/src/components/HeaderMenu.vue"],names:[],mappings:"AAoKA,4DACC,QAAA,CACA,iFACC,WAAA,CAID,uCACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CACA,WAAA,CACA,QAAA,CACA,SAAA,CACA,cAAA,CACA,UAAA,CAGD,oMAIC,SAAA,CAGD,uCACC,cAAA,CACA,YAAA,CACA,QAAA,CACA,OAAA,CACA,qBAAA,CACA,QAAA,CACA,2DAAA,CACA,6CAAA,CAEA,qDAAA,CAGD,sCACC,iBAAA,CACA,WAAA,CACA,WAAA,CACA,OAAA,CACA,QAAA,CACA,WAAA,CACA,mBAAA,CACA,+BAAA,CACA,gDAAA,CAGD,uCACC,aAAA,CACA,WAAA,CACA,eAAA,CACA,eAAA,CACA,8BAAA",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.notifications:not(:empty) ~ #unified-search {\n\torder: -1;\n\t.header-menu__carret {\n\t\tright: 175px;\n\t}\n}\n.header-menu {\n\t&__trigger {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\twidth: 50px;\n\t\theight: 100%;\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\tcursor: pointer;\n\t\topacity: .6;\n\t}\n\n\t&--opened &__trigger,\n\t&__trigger:hover,\n\t&__trigger:focus,\n\t&__trigger:active {\n\t\topacity: 1;\n\t}\n\n\t&__wrapper {\n\t\tposition: fixed;\n\t\tz-index: 2000;\n\t\ttop: 50px;\n\t\tright: 0;\n\t\tbox-sizing: border-box;\n\t\tmargin: 0;\n\t\tborder-radius: 0 0 var(--border-radius) var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\n\t\tfilter: drop-shadow(0 1px 5px var(--color-box-shadow));\n\t}\n\n\t&__carret {\n\t\tposition: absolute;\n\t\tright: 128px;\n\t\tbottom: 100%;\n\t\twidth: 0;\n\t\theight: 0;\n\t\tcontent: ' ';\n\t\tpointer-events: none;\n\t\tborder: 10px solid transparent;\n\t\tborder-bottom-color: var(--color-main-background);\n\t}\n\n\t&__content {\n\t\toverflow: auto;\n\t\twidth: 350px;\n\t\tmax-width: 100vw;\n\t\tmin-height: calc(44px * 1.5);\n\t\tmax-height: calc(100vh - 50px * 2);\n\t}\n}\n\n"],sourceRoot:""}]),t.Z=o},33068:function(n,t,e){var r=e(87537),i=e.n(r),a=e(23645),o=e.n(a)()(i());o.push([n.id,".unified-search__result[data-v-9dc2a344]{display:flex;height:44px;padding:10px;border-bottom:1px solid var(--color-border)}.unified-search__result[data-v-9dc2a344]:last-child{border-bottom:none}.unified-search__result--focused[data-v-9dc2a344],.unified-search__result[data-v-9dc2a344]:active,.unified-search__result[data-v-9dc2a344]:hover,.unified-search__result[data-v-9dc2a344]:focus{background-color:var(--color-background-hover)}.unified-search__result *[data-v-9dc2a344]{cursor:pointer}.unified-search__result-icon[data-v-9dc2a344]{overflow:hidden;width:44px;height:44px;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center center;background-size:32px}.unified-search__result-icon--rounded[data-v-9dc2a344]{border-radius:22px}.unified-search__result-icon--no-preview[data-v-9dc2a344]{background-size:32px}.unified-search__result-icon--with-thumbnail[data-v-9dc2a344]{background-size:cover}.unified-search__result-icon--with-thumbnail[data-v-9dc2a344]:not(.unified-search__result-icon--rounded){max-width:42px;max-height:42px;border:1px solid var(--color-border)}.unified-search__result-icon img[data-v-9dc2a344]{width:100%;height:100%;object-fit:cover;object-position:center}.unified-search__result-icon[data-v-9dc2a344],.unified-search__result-actions[data-v-9dc2a344]{flex:0 0 44px}.unified-search__result-content[data-v-9dc2a344]{display:flex;align-items:center;flex:1 1 100%;flex-wrap:wrap;min-width:0;padding-left:10px}.unified-search__result-line-one[data-v-9dc2a344],.unified-search__result-line-two[data-v-9dc2a344]{overflow:hidden;flex:1 1 100%;margin:1px 0;white-space:nowrap;text-overflow:ellipsis;color:inherit;font-size:inherit}.unified-search__result-line-two[data-v-9dc2a344]{opacity:.7;font-size:var(--default-font-size)}","",{version:3,sources:["webpack://./core/src/components/UnifiedSearch/SearchResult.vue"],names:[],mappings:"AA0KA,yCACC,YAAA,CACA,WALgB,CAMhB,YALQ,CAMR,2CAAA,CAGA,oDACC,kBAAA,CAGD,gMAIC,8CAAA,CAGD,2CACC,cAAA,CAGD,8CACC,eAAA,CACA,UA3Be,CA4Bf,WA5Be,CA6Bf,kCAAA,CACA,2BAAA,CACA,iCAAA,CACA,oBAAA,CACA,uDACC,kBAAA,CAED,0DACC,oBAAA,CAED,8DACC,qBAAA,CAED,yGAEC,cAAA,CACA,eAAA,CACA,oCAAA,CAGD,kDAEC,UAAA,CACA,WAAA,CAEA,gBAAA,CACA,sBAAA,CAIF,+FAEC,aAAA,CAGD,iDACC,YAAA,CACA,kBAAA,CACA,aAAA,CACA,cAAA,CAEA,WAAA,CACA,iBAtEO,CAyER,oGAEC,eAAA,CACA,aAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA,CAEA,aAAA,CACA,iBAAA,CAED,kDACC,UAAA,CACA,kCAAA",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@use "sass:math";\n\n$clickable-area: 44px;\n$margin: 10px;\n\n.unified-search__result {\n\tdisplay: flex;\n\theight: $clickable-area;\n\tpadding: $margin;\n\tborder-bottom: 1px solid var(--color-border);\n\n\t// Load more entry,\n\t&:last-child {\n\t\tborder-bottom: none;\n\t}\n\n\t&--focused,\n\t&:active,\n\t&:hover,\n\t&:focus {\n\t\tbackground-color: var(--color-background-hover);\n\t}\n\n\t* {\n\t\tcursor: pointer;\n\t}\n\n\t&-icon {\n\t\toverflow: hidden;\n\t\twidth: $clickable-area;\n\t\theight: $clickable-area;\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center center;\n\t\tbackground-size: 32px;\n\t\t&--rounded {\n\t\t\tborder-radius: math.div($clickable-area, 2);\n\t\t}\n\t\t&--no-preview {\n\t\t\tbackground-size: 32px;\n\t\t}\n\t\t&--with-thumbnail {\n\t\t\tbackground-size: cover;\n\t\t}\n\t\t&--with-thumbnail:not(&--rounded) {\n\t\t\t// compensate for border\n\t\t\tmax-width: $clickable-area - 2px;\n\t\t\tmax-height: $clickable-area - 2px;\n\t\t\tborder: 1px solid var(--color-border);\n\t\t}\n\n\t\timg {\n\t\t\t// Make sure to keep ratio\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\n\t\t\tobject-fit: cover;\n\t\t\tobject-position: center;\n\t\t}\n\t}\n\n\t&-icon,\n\t&-actions {\n\t\tflex: 0 0 $clickable-area;\n\t}\n\n\t&-content {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tflex: 1 1 100%;\n\t\tflex-wrap: wrap;\n\t\t// Set to minimum and gro from it\n\t\tmin-width: 0;\n\t\tpadding-left: $margin;\n\t}\n\n\t&-line-one,\n\t&-line-two {\n\t\toverflow: hidden;\n\t\tflex: 1 1 100%;\n\t\tmargin: 1px 0;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\t// Use the same color as the `a`\n\t\tcolor: inherit;\n\t\tfont-size: inherit;\n\t}\n\t&-line-two {\n\t\topacity: .7;\n\t\tfont-size: var(--default-font-size);\n\t}\n}\n\n'],sourceRoot:""}]),t.Z=o},44201:function(n,t,e){var r=e(87537),i=e.n(r),a=e(23645),o=e.n(a)()(i());o.push([n.id,".unified-search__result-placeholder-gradient[data-v-9ed03c40]{position:fixed;height:0;width:0;z-index:-1}.unified-search__result-placeholder[data-v-9ed03c40]{width:calc(100% - 2 * 10px);height:44px;margin:10px}.unified-search__result-placeholder-icon[data-v-9ed03c40]{width:44px;height:44px;rx:var(--border-radius);ry:var(--border-radius)}.unified-search__result-placeholder-line-one[data-v-9ed03c40],.unified-search__result-placeholder-line-two[data-v-9ed03c40]{width:calc(100% - 54px);height:1em;x:54px}.unified-search__result-placeholder-line-one[data-v-9ed03c40]{y:5px}.unified-search__result-placeholder-line-two[data-v-9ed03c40]{y:25px}","",{version:3,sources:["webpack://./core/src/components/UnifiedSearch/SearchResultPlaceholders.vue"],names:[],mappings:"AA+DA,8DACC,cAAA,CACA,QAAA,CACA,OAAA,CACA,UAAA,CAGD,qDACC,2BAAA,CACA,WAZgB,CAahB,WAZQ,CAcR,0DACC,UAhBe,CAiBf,WAjBe,CAkBf,uBAAA,CACA,uBAAA,CAGD,4HAEC,uBAAA,CACA,UAAA,CACA,MAAA,CAGD,8DACC,KAAA,CAGD,8DACC,MAAA",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$clickable-area: 44px;\n$margin: 10px;\n\n.unified-search__result-placeholder-gradient {\n\tposition: fixed;\n\theight: 0;\n\twidth: 0;\n\tz-index: -1;\n}\n\n.unified-search__result-placeholder {\n\twidth: calc(100% - 2 * #{$margin});\n\theight: $clickable-area;\n\tmargin: $margin;\n\n\t&-icon {\n\t\twidth: $clickable-area;\n\t\theight: $clickable-area;\n\t\trx: var(--border-radius);\n\t\try: var(--border-radius);\n\t}\n\n\t&-line-one,\n\t&-line-two {\n\t\twidth: calc(100% - #{$margin + $clickable-area});\n\t\theight: 1em;\n\t\tx: $margin + $clickable-area;\n\t}\n\n\t&-line-one {\n\t\ty: 5px;\n\t}\n\n\t&-line-two {\n\t\ty: 25px;\n\t}\n}\n\n"],sourceRoot:""}]),t.Z=o},55352:function(n,t,e){var r=e(87537),i=e.n(r),a=e(23645),o=e.n(a)()(i());o.push([n.id,".unified-search__trigger[data-v-59134936]{width:20px;height:20px}.unified-search__input-wrapper[data-v-59134936]{position:sticky;z-index:2;top:0;display:inline-flex;align-items:center;width:100%;background-color:var(--color-main-background)}.unified-search__filters[data-v-59134936]{margin:5px 10px}.unified-search__filters ul[data-v-59134936]{display:inline-flex;justify-content:space-between}.unified-search__form[data-v-59134936]{position:relative;width:100%;margin:10px}.unified-search__form[data-v-59134936]::after{right:6px;left:auto}.unified-search__form-input[data-v-59134936],.unified-search__form-reset[data-v-59134936]{margin:3px}.unified-search__form-input[data-v-59134936]{width:100%;height:34px;padding:6px}.unified-search__form-input[data-v-59134936],.unified-search__form-input[placeholder][data-v-59134936],.unified-search__form-input[data-v-59134936]::placeholder{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.unified-search__form-input[data-v-59134936]::-webkit-search-decoration,.unified-search__form-input[data-v-59134936]::-webkit-search-cancel-button,.unified-search__form-input[data-v-59134936]::-webkit-search-results-button,.unified-search__form-input[data-v-59134936]::-webkit-search-results-decoration{-webkit-appearance:none}.icon-loading-small .unified-search__form-input[data-v-59134936],.unified-search__form-input--with-reset[data-v-59134936]{padding-right:34px}.unified-search__form-reset[data-v-59134936]{position:absolute;top:0;right:0;width:28px;height:28px;padding:0;opacity:.5;border:none;background-color:rgba(0,0,0,0);margin-right:0}.unified-search__form-reset[data-v-59134936]:hover,.unified-search__form-reset[data-v-59134936]:focus,.unified-search__form-reset[data-v-59134936]:active{opacity:1}.unified-search__filters[data-v-59134936]{margin-right:5px}.unified-search__results[data-v-59134936]::before{display:block;margin:10px;margin-left:16px;content:attr(aria-label);color:var(--color-primary-element)}.unified-search .unified-search__result-more[data-v-59134936]{color:var(--color-text-maxcontrast)}.unified-search .empty-content[data-v-59134936]{margin:10vh 0}.unified-search .empty-content[data-v-59134936] .empty-content__title{font-weight:normal;font-size:var(--default-font-size);padding:0 15px;text-align:center}","",{version:3,sources:["webpack://./core/src/views/UnifiedSearch.vue"],names:[],mappings:"AAspBC,0CACC,UAAA,CACA,WAAA,CAGD,gDACC,eAAA,CAEA,SAAA,CACA,KAAA,CACA,mBAAA,CACA,kBAAA,CACA,UAAA,CACA,6CAAA,CAGD,0CACC,eAAA,CACA,6CACC,mBAAA,CACA,6BAAA,CAIF,uCACC,iBAAA,CACA,UAAA,CACA,WAhCO,CAmCP,8CACC,SAlCa,CAmCb,SAAA,CAGD,0FAEC,UAAA,CAGD,6CACC,UAAA,CACA,WA9CY,CA+CZ,WA9Ca,CAgDb,iKAGC,eAAA,CACA,kBAAA,CACA,sBAAA,CAID,+SAIC,uBAAA,CAID,0HAEC,kBApEW,CAwEb,6CACC,iBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CACA,WAAA,CACA,SAAA,CACA,UAAA,CACA,WAAA,CACA,8BAAA,CACA,cAAA,CAEA,0JAGC,SAAA,CAKH,0CACC,gBAAA,CAIA,kDACC,aAAA,CACA,WApGM,CAqGN,gBAAA,CACA,wBAAA,CACA,kCAAA,CAIF,8DACC,mCAAA,CAGD,gDACC,aAAA,CAEA,uEACC,kBAAA,CACS,kCAAA,CACT,cAAA,CACA,iBAAA",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n@use "sass:math";\n\n$margin: 10px;\n$input-height: 34px;\n$input-padding: 6px;\n\n.unified-search {\n\t&__trigger {\n\t\twidth: 20px;\n\t\theight: 20px;\n\t}\n\n\t&__input-wrapper {\n\t\tposition: sticky;\n\t\t// above search results\n\t\tz-index: 2;\n\t\ttop: 0;\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\twidth: 100%;\n\t\tbackground-color: var(--color-main-background);\n\t}\n\n\t&__filters {\n\t\tmargin: math.div($margin, 2) $margin;\n\t\tul {\n\t\t\tdisplay: inline-flex;\n\t\t\tjustify-content: space-between;\n\t\t}\n\t}\n\n\t&__form {\n\t\tposition: relative;\n\t\twidth: 100%;\n\t\tmargin: $margin;\n\n\t\t// Loading spinner\n\t\t&::after {\n\t\t\tright: $input-padding;\n\t\t\tleft: auto;\n\t\t}\n\n\t\t&-input,\n\t\t&-reset {\n\t\t\tmargin: math.div($input-padding, 2);\n\t\t}\n\n\t\t&-input {\n\t\t\twidth: 100%;\n\t\t\theight: $input-height;\n\t\t\tpadding: $input-padding;\n\n\t\t\t&,\n\t\t\t&[placeholder],\n\t\t\t&::placeholder {\n\t\t\t\toverflow: hidden;\n\t\t\t\twhite-space: nowrap;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t}\n\n\t\t\t// Hide webkit clear search\n\t\t\t&::-webkit-search-decoration,\n\t\t\t&::-webkit-search-cancel-button,\n\t\t\t&::-webkit-search-results-button,\n\t\t\t&::-webkit-search-results-decoration {\n\t\t\t\t-webkit-appearance: none;\n\t\t\t}\n\n\t\t\t// Ellipsis earlier if reset button is here\n\t\t\t.icon-loading-small &,\n\t\t\t&--with-reset {\n\t\t\t\tpadding-right: $input-height;\n\t\t\t}\n\t\t}\n\n\t\t&-reset {\n\t\t\tposition: absolute;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\twidth: $input-height - $input-padding;\n\t\t\theight: $input-height - $input-padding;\n\t\t\tpadding: 0;\n\t\t\topacity: .5;\n\t\t\tborder: none;\n\t\t\tbackground-color: transparent;\n\t\t\tmargin-right: 0;\n\n\t\t\t&:hover,\n\t\t\t&:focus,\n\t\t\t&:active {\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__filters {\n\t\tmargin-right: math.div($margin, 2);\n\t}\n\n\t&__results {\n\t\t&::before {\n\t\t\tdisplay: block;\n\t\t\tmargin: $margin;\n\t\t\tmargin-left: $margin + $input-padding;\n\t\t\tcontent: attr(aria-label);\n\t\t\tcolor: var(--color-primary-element);\n\t\t}\n\t}\n\n\t.unified-search__result-more::v-deep {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t.empty-content {\n\t\tmargin: 10vh 0;\n\n\t\t::v-deep .empty-content__title {\n\t\t\tfont-weight: normal;\n font-size: var(--default-font-size);\n\t\t\tpadding: 0 15px;\n\t\t\ttext-align: center;\n\t\t}\n\t}\n}\n\n'],sourceRoot:""}]),t.Z=o}},r={};function i(n){var t=r[n];if(void 0!==t)return t.exports;var a=r[n]={id:n,loaded:!1,exports:{}};return e[n].call(a.exports,a,a.exports,i),a.loaded=!0,a.exports}i.m=e,i.amdD=function(){throw new Error("define cannot be used indirect")},i.amdO={},n=[],i.O=function(t,e,r,a){if(!e){var o=1/0;for(l=0;l<n.length;l++){e=n[l][0],r=n[l][1],a=n[l][2];for(var s=!0,c=0;c<e.length;c++)(!1&a||o>=a)&&Object.keys(i.O).every((function(n){return i.O[n](e[c])}))?e.splice(c--,1):(s=!1,a<o&&(o=a));if(s){n.splice(l--,1);var u=r();void 0!==u&&(t=u)}}return t}a=a||0;for(var l=n.length;l>0&&n[l-1][2]>a;l--)n[l]=n[l-1];n[l]=[e,r,a]},i.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return i.d(t,{a:t}),t},i.d=function(n,t){for(var e in t)i.o(t,e)&&!i.o(n,e)&&Object.defineProperty(n,e,{enumerable:!0,get:t[e]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),i.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},i.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},i.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n},i.j=9671,function(){i.b=document.baseURI||self.location.href;var n={9671:0};i.O.j=function(t){return 0===n[t]};var t=function(t,e){var r,a,o=e[0],s=e[1],c=e[2],u=0;if(o.some((function(t){return 0!==n[t]}))){for(r in s)i.o(s,r)&&(i.m[r]=s[r]);if(c)var l=c(i)}for(t&&t(e);u<o.length;u++)a=o[u],i.o(n,a)&&n[a]&&n[a][0](),n[a]=0;return i.O(l)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(t.bind(null,0)),e.push=t.bind(null,e.push.bind(e))}();var a=i.O(void 0,[7874],(function(){return i(91231)}));a=i.O(a)}();
-//# sourceMappingURL=core-unified-search.js.map?v=bc21ef54ccd4a9798f41 \ No newline at end of file
+!function(){"use strict";var n,e={91231:function(n,e,r){var i=r(17499),a=r(22200),o=r(9944),s=r(20144),c=r(74854),u=r(79753),l=r(16453),d=r(4820);function A(n,t,e,r,i,a,o){try{var s=n[a](o),c=s.value}catch(n){return void e(n)}s.done?t(c):Promise.resolve(c).then(r,i)}function h(n){return function(){var t=this,e=arguments;return new Promise((function(r,i){var a=n.apply(t,e);function o(n){A(a,r,i,o,s,"next",n)}function s(n){A(a,r,i,o,s,"throw",n)}o(void 0)}))}}var p=(0,l.loadState)("unified-search","limit-default"),f=/[^-]in:([a-z_-]+)/gi,m=/-in:([a-z_-]+)/gi;function C(){return g.apply(this,arguments)}function g(){return(g=h(regeneratorRuntime.mark((function n(){var t,e;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,d.default.get((0,u.generateOcsUrl)("search/providers"),{params:{from:window.location.pathname.replace("/index.php","")+window.location.search}});case 3:if(t=n.sent,!("ocs"in(e=t.data)&&"data"in e.ocs&&Array.isArray(e.ocs.data)&&e.ocs.data.length>0)){n.next=7;break}return n.abrupt("return",e.ocs.data);case 7:n.next=12;break;case 9:n.prev=9,n.t0=n.catch(0),console.error(n.t0);case 12:return n.abrupt("return",[]);case 13:case"end":return n.stop()}}),n,null,[[0,9]])})))).apply(this,arguments)}function v(n){var t=n.type,e=n.query,r=n.cursor,i=d.default.CancelToken.source(),a=function(){var n=h(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",d.default.get((0,u.generateOcsUrl)("search/providers/{type}/search",{type:t}),{cancelToken:i.token,params:{term:e,cursor:r,from:window.location.pathname.replace("/index.php","")+window.location.search}}));case 1:case"end":return n.stop()}}),n)})));return function(){return n.apply(this,arguments)}}();return{request:a,cancel:i.cancel}}var _=r(26932),b=r(56286),y=r.n(b),x=r(79440),w=r.n(x),k=r(20296),S=r.n(k),D=r(97e3),$=r.n(D),B=r(94094),E=r.n(B),R=r(13313),I=r(67536),q=r(85354),U=r.n(q),L={name:"HeaderMenu",directives:{ClickOutside:I.directive},mixins:[U()],props:{id:{type:String,required:!0},ariaLabel:{type:String,default:""},open:{type:Boolean,default:!1}},data:function(){return{opened:this.open,clickOutsideConfig:{handler:this.closeMenu,middleware:this.clickOutsideMiddleware}}},watch:{open:function(n){var t=this;this.opened=n,this.$nextTick((function(){t.opened?t.openMenu():t.closeMenu()}))}},mounted:function(){document.addEventListener("keydown",this.onKeyDown)},beforeDestroy:function(){document.removeEventListener("keydown",this.onKeyDown)},methods:{toggleMenu:function(){this.opened?this.closeMenu():this.openMenu()},closeMenu:function(){this.opened&&(this.opened=!1,this.$emit("close"),this.$emit("update:open",!1))},openMenu:function(){this.opened||(this.opened=!0,this.$emit("open"),this.$emit("update:open",!0))},onKeyDown:function(n){"Escape"===n.key&&this.opened&&(n.preventDefault(),this.$emit("cancel"),this.opened=!1,this.$emit("update:open",!1))}}},O=r(93379),M=r.n(O),P=r(7795),z=r.n(P),Z=r(90569),j=r.n(Z),G=r(3565),T=r.n(G),F=r(19216),W=r.n(F),N=r(44589),Q=r.n(N),H=r(34769),K={};K.styleTagTransform=Q(),K.setAttributes=T(),K.insert=j().bind(null,"head"),K.domAPI=z(),K.insertStyleElement=W(),M()(H.Z,K),H.Z&&H.Z.locals&&H.Z.locals;var V=r(51900),Y=(0,V.Z)(L,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{directives:[{name:"click-outside",rawName:"v-click-outside",value:n.clickOutsideConfig,expression:"clickOutsideConfig"}],staticClass:"header-menu",class:{"header-menu--opened":n.opened},attrs:{id:n.id}},[e("a",{staticClass:"header-menu__trigger",attrs:{href:"#","aria-label":n.ariaLabel,"aria-controls":"header-menu-"+n.id,"aria-expanded":n.opened,"aria-haspopup":"menu"},on:{click:function(t){return t.preventDefault(),n.toggleMenu.apply(null,arguments)}}},[n._t("trigger")],2),n._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:n.opened,expression:"opened"}],staticClass:"header-menu__wrapper",attrs:{id:"header-menu-"+n.id,role:"menu"}},[e("div",{staticClass:"header-menu__carret"}),n._v(" "),e("div",{staticClass:"header-menu__content"},[n._t("default")],2)])])}),[],!1,null,"51f09a15",null),J=Y.exports,X={name:"SearchResult",components:{Highlight:E()},props:{thumbnailUrl:{type:String,default:null},title:{type:String,required:!0},subline:{type:String,default:null},resourceUrl:{type:String,default:null},icon:{type:String,default:""},rounded:{type:Boolean,default:!1},query:{type:String,default:""},focused:{type:Boolean,default:!1}},data:function(){return{hasValidThumbnail:this.thumbnailUrl&&""!==this.thumbnailUrl.trim(),loaded:!1}},computed:{isIconUrl:function(){if(this.icon.startsWith("/"))return!0;try{new URL(this.icon)}catch(n){return!1}return!0}},watch:{thumbnailUrl:function(){this.hasValidThumbnail=this.thumbnailUrl&&""!==this.thumbnailUrl.trim(),this.loaded=!1}},methods:{reEmitEvent:function(n){this.$emit(n.type,n)},onError:function(){this.hasValidThumbnail=!1},onLoad:function(){this.loaded=!0}}},nn=r(33068),tn={};tn.styleTagTransform=Q(),tn.setAttributes=T(),tn.insert=j().bind(null,"head"),tn.domAPI=z(),tn.insertStyleElement=W(),M()(nn.Z,tn),nn.Z&&nn.Z.locals&&nn.Z.locals;var en=(0,V.Z)(X,(function(){var n,t=this,e=t.$createElement,r=t._self._c||e;return r("a",{staticClass:"unified-search__result",class:{"unified-search__result--focused":t.focused},attrs:{href:t.resourceUrl||"#"},on:{click:t.reEmitEvent,focus:t.reEmitEvent}},[r("div",{staticClass:"unified-search__result-icon",class:(n={"unified-search__result-icon--rounded":t.rounded,"unified-search__result-icon--no-preview":!t.hasValidThumbnail&&!t.loaded,"unified-search__result-icon--with-thumbnail":t.hasValidThumbnail&&t.loaded},n[t.icon]=!t.loaded&&!t.isIconUrl,n),style:{backgroundImage:t.isIconUrl?"url("+t.icon+")":""},attrs:{role:"img"}},[t.hasValidThumbnail?r("img",{directives:[{name:"show",rawName:"v-show",value:t.loaded,expression:"loaded"}],attrs:{src:t.thumbnailUrl,alt:""},on:{error:t.onError,load:t.onLoad}}):t._e()]),t._v(" "),r("span",{staticClass:"unified-search__result-content"},[r("h3",{staticClass:"unified-search__result-line-one",attrs:{title:t.title}},[r("Highlight",{attrs:{text:t.title,search:t.query}})],1),t._v(" "),t.subline?r("h4",{staticClass:"unified-search__result-line-two",attrs:{title:t.subline}},[t._v(t._s(t.subline))]):t._e()])])}),[],!1,null,"9dc2a344",null).exports,rn={name:"SearchResultPlaceholders",data:function(){return{light:null,dark:null}},mounted:function(){var n=getComputedStyle(document.documentElement);this.dark=n.getPropertyValue("--color-placeholder-dark"),this.light=n.getPropertyValue("--color-placeholder-light")},methods:{randWidth:function(){return Math.floor(20*Math.random())+30}}},an=r(44201),on={};on.styleTagTransform=Q(),on.setAttributes=T(),on.insert=j().bind(null,"head"),on.domAPI=z(),on.insertStyleElement=W(),M()(an.Z,on),an.Z&&an.Z.locals&&an.Z.locals;var sn=(0,V.Z)(rn,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("ul",[e("svg",{staticClass:"unified-search__result-placeholder-gradient"},[e("defs",[e("linearGradient",{attrs:{id:"unified-search__result-placeholder-gradient"}},[e("stop",{attrs:{offset:"0%","stop-color":n.light}},[e("animate",{attrs:{attributeName:"stop-color",values:n.light+"; "+n.light+"; "+n.dark+"; "+n.dark+"; "+n.light,dur:"2s",repeatCount:"indefinite"}})]),n._v(" "),e("stop",{attrs:{offset:"100%","stop-color":n.dark}},[e("animate",{attrs:{attributeName:"stop-color",values:n.dark+"; "+n.light+"; "+n.light+"; "+n.dark+"; "+n.dark,dur:"2s",repeatCount:"indefinite"}})])],1)],1)]),n._v(" "),n._l([1,2,3],(function(t){return e("li",{key:t},[e("svg",{staticClass:"unified-search__result-placeholder",attrs:{xmlns:"http://www.w3.org/2000/svg",fill:"url(#unified-search__result-placeholder-gradient)"}},[e("rect",{staticClass:"unified-search__result-placeholder-icon"}),n._v(" "),e("rect",{staticClass:"unified-search__result-placeholder-line-one"}),n._v(" "),e("rect",{staticClass:"unified-search__result-placeholder-line-two",style:{width:"calc("+n.randWidth()+"%)"}})])])}))],2)}),[],!1,null,"9ed03c40",null).exports;function cn(n){return function(n){if(Array.isArray(n))return un(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 un(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)?un(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 un(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 ln(n,t,e,r,i,a,o){try{var s=n[a](o),c=s.value}catch(n){return void e(n)}s.done?t(c):Promise.resolve(c).then(r,i)}function dn(n){return function(){var t=this,e=arguments;return new Promise((function(r,i){var a=n.apply(t,e);function o(n){ln(a,r,i,o,s,"next",n)}function s(n){ln(a,r,i,o,s,"throw",n)}o(void 0)}))}}var An={name:"UnifiedSearch",components:{ActionButton:y(),Actions:w(),EmptyContent:$(),HeaderMenu:J,Highlight:E(),Magnify:R.Z,SearchResult:en,SearchResultPlaceholders:sn},data:function(){return{types:[],cursors:{},limits:{},loading:{},reached:{},requests:[],results:{},query:"",focused:null,defaultLimit:p,minSearchLength:2,open:!1}},computed:{typesIDs:function(){return this.types.map((function(n){return n.id}))},typesNames:function(){return this.types.map((function(n){return n.name}))},typesMap:function(){return this.types.reduce((function(n,t){return n[t.id]=t.name,n}),{})},ariaLabel:function(){return t("core","Search")},hasResults:function(){return 0!==Object.keys(this.results).length},orderedResults:function(){var n=this;return this.typesIDs.filter((function(t){return t in n.results})).map((function(t){return{type:t,list:n.results[t]}}))},availableFilters:function(){return Object.keys(this.results)},usedFiltersIn:function(){for(var n,t=[];null!==(n=f.exec(this.query));)t.push(n[1]);return t},usedFiltersNot:function(){for(var n,t=[];null!==(n=m.exec(this.query));)t.push(n[1]);return t},isShortQuery:function(){return this.query&&this.query.trim().length<2},isValidQuery:function(){return this.query&&""!==this.query.trim()&&!this.isShortQuery},isDoneSearching:function(){return Object.values(this.reached).every((function(n){return!1===n}))},isLoading:function(){return Object.values(this.loading).some((function(n){return!0===n}))}},created:function(){var n=this;return dn(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,C();case 2:n.types=t.sent,n.logger.debug("Unified Search initialized with the following providers",n.types);case 4:case"end":return t.stop()}}),t)})))()},mounted:function(){var n=this;document.addEventListener("keydown",(function(t){t.ctrlKey&&"f"===t.key&&!n.open&&(t.preventDefault(),n.open=!0,n.focusInput()),n.open&&("ArrowDown"===t.key&&n.focusNext(t),"ArrowUp"===t.key&&n.focusPrev(t))}))},methods:{onOpen:function(){var n=this;return dn(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n.focusInput(),t.next=3,C();case 3:n.types=t.sent;case 4:case"end":return t.stop()}}),t)})))()},onClose:function(){(0,c.emit)("nextcloud:unified-search.close")},onReset:function(){(0,c.emit)("nextcloud:unified-search.reset"),this.logger.debug("Search reset"),this.query="",this.resetState(),this.focusInput()},resetState:function(){var n=this;return dn(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n.cursors={},n.limits={},n.reached={},n.results={},n.focused=null,t.next=7,n.cancelPendingRequests();case 7:case"end":return t.stop()}}),t)})))()},cancelPendingRequests:function(){var n=this;return dn(regeneratorRuntime.mark((function t(){var e;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e=n.requests.slice(0),n.requests=[],t.next=4,Promise.all(e.map((function(n){return n()})));case 4:case"end":return t.stop()}}),t)})))()},focusInput:function(){var n=this;this.$nextTick((function(){n.$refs.input.focus(),n.$refs.input.select()}))},onInputEnter:function(){this.hasResults?this.getResultsList()[0].click():this.onInput()},onInput:function(){var n=this;return dn(regeneratorRuntime.mark((function t(){var e,r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if((0,c.emit)("nextcloud:unified-search.search",{query:n.query}),""!==n.query.trim()&&!n.isShortQuery){t.next=3;break}return t.abrupt("return");case 3:return e=n.typesIDs,r=n.query,n.usedFiltersNot.length>0&&(e=n.typesIDs.filter((function(t){return-1===n.usedFiltersNot.indexOf(t)}))),n.usedFiltersIn.length>0&&(e=n.typesIDs.filter((function(t){return n.usedFiltersIn.indexOf(t)>-1}))),r=r.replace(f,"").replace(m,""),t.next=10,n.resetState();case 10:n.$set(n.loading,"all",!0),n.logger.debug("Searching ".concat(r," in"),e),Promise.all(e.map(function(){var t=dn(regeneratorRuntime.mark((function t(e){var i,a,o,s,c;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,i=v({type:e,query:r}),a=i.request,o=i.cancel,n.requests.push(o),t.next=5,a();case 5:return s=t.sent,(c=s.data).ocs.data.entries.length>0?n.$set(n.results,e,c.ocs.data.entries):n.$delete(n.results,e),c.ocs.data.cursor?n.$set(n.cursors,e,c.ocs.data.cursor):c.ocs.data.isPaginated||n.$set(n.limits,e,n.defaultLimit),c.ocs.data.entries.length<n.defaultLimit&&n.$set(n.reached,e,!0),null===n.focused&&(n.focused=0),t.abrupt("return",1);case 14:if(t.prev=14,t.t0=t.catch(0),n.$delete(n.results,e),!t.t0.response||!t.t0.response.status){t.next=21;break}return n.logger.error("Error searching for ".concat(n.typesMap[e]),t.t0),(0,_.x2)(n.t("core","An error occurred while searching for {type}",{type:n.typesMap[e]})),t.abrupt("return",0);case 21:return t.abrupt("return",2);case 22:case"end":return t.stop()}}),t,null,[[0,14]])})));return function(n){return t.apply(this,arguments)}}())).then((function(t){t.some((function(n){return 2===n}))||(n.loading={})}));case 13:case"end":return t.stop()}}),t)})))()},onInputDebounced:S()((function(n){this.onInput(n)}),200),loadMore:function(n){var t=this;return dn(regeneratorRuntime.mark((function e(){var r,i,a,o,s,c;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t.loading[n]){e.next=2;break}return e.abrupt("return");case 2:if(!t.cursors[n]){e.next=14;break}return r=v({type:n,query:t.query,cursor:t.cursors[n]}),i=r.request,a=r.cancel,t.requests.push(a),e.next=7,i();case 7:o=e.sent,(s=o.data).ocs.data.cursor&&t.$set(t.cursors,n,s.ocs.data.cursor),s.ocs.data.entries.length>0&&(c=t.results[n]).push.apply(c,cn(s.ocs.data.entries)),s.ocs.data.entries.length<t.defaultLimit&&t.$set(t.reached,n,!0),e.next=15;break;case 14:t.limits[n]&&t.limits[n]>=0&&(t.limits[n]+=t.defaultLimit,t.limits[n]>=t.results[n].length&&t.$set(t.reached,n,!0));case 15:null!==t.focused&&t.$nextTick((function(){t.focusIndex(t.focused)}));case 16:case"end":return e.stop()}}),e)})))()},limitIfAny:function(n,t){return t in this.limits?n.slice(0,this.limits[t]):n},getResultsList:function(){return this.$el.querySelectorAll(".unified-search__results .unified-search__result")},focusFirst:function(n){var t=this.getResultsList();t&&t.length>0&&(n&&n.preventDefault(),this.focused=0,this.focusIndex(this.focused))},focusNext:function(n){if(null!==this.focused){var t=this.getResultsList();t&&t.length>0&&this.focused+1<t.length&&(n.preventDefault(),this.focused++,this.focusIndex(this.focused))}else this.focusFirst(n)},focusPrev:function(n){if(null!==this.focused){var t=this.getResultsList();t&&t.length>0&&this.focused>0&&(n.preventDefault(),this.focused--,this.focusIndex(this.focused))}else this.focusFirst(n)},focusIndex:function(n){var t=this.getResultsList();t&&t[n]&&t[n].focus()},setFocusedIndex:function(n){var t=n.target,e=cn(this.getResultsList()).findIndex((function(n){return n===t}));e>-1&&(this.focused=e)},onClickFilter:function(n){this.query="".concat(this.query," ").concat(n).replace(/ {2}/g," ").trim(),this.onInput()}}},hn=An,pn=r(55352),fn={};fn.styleTagTransform=Q(),fn.setAttributes=T(),fn.insert=j().bind(null,"head"),fn.domAPI=z(),fn.insertStyleElement=W(),M()(pn.Z,fn),pn.Z&&pn.Z.locals&&pn.Z.locals;var mn=(0,V.Z)(hn,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("HeaderMenu",{staticClass:"unified-search",attrs:{id:"unified-search","exclude-click-outside-classes":"popover",open:n.open,"aria-label":n.ariaLabel},on:{"update:open":function(t){n.open=t},open:n.onOpen,close:n.onClose},scopedSlots:n._u([{key:"trigger",fn:function(){return[e("Magnify",{staticClass:"unified-search__trigger",attrs:{size:20,"fill-color":"var(--color-primary-text)"}})]},proxy:!0}])},[n._v(" "),e("div",{staticClass:"unified-search__input-wrapper"},[e("form",{staticClass:"unified-search__form",class:{"icon-loading-small":n.isLoading},attrs:{role:"search"},on:{submit:function(t){return t.preventDefault(),t.stopPropagation(),n.onInputEnter.apply(null,arguments)},reset:function(t){return t.preventDefault(),t.stopPropagation(),n.onReset.apply(null,arguments)}}},[e("input",{directives:[{name:"model",rawName:"v-model",value:n.query,expression:"query"}],ref:"input",staticClass:"unified-search__form-input",class:{"unified-search__form-input--with-reset":!!n.query},attrs:{type:"search",placeholder:n.t("core","Search {types} …",{types:n.typesNames.join(", ")})},domProps:{value:n.query},on:{input:[function(t){t.target.composing||(n.query=t.target.value)},n.onInputDebounced],keypress:function(t){return!t.type.indexOf("key")&&n._k(t.keyCode,"enter",13,t.key,"Enter")?null:(t.preventDefault(),t.stopPropagation(),n.onInputEnter.apply(null,arguments))}}}),n._v(" "),n.query&&!n.isLoading?e("input",{staticClass:"unified-search__form-reset icon-close",attrs:{type:"reset","aria-label":n.t("core","Reset search"),value:""}}):n._e()]),n._v(" "),n.availableFilters.length>1?e("Actions",{staticClass:"unified-search__filters",attrs:{placement:"bottom"}},n._l(n.availableFilters,(function(t){return e("ActionButton",{key:t,attrs:{icon:"icon-filter",title:n.t("core","Search for {name} only",{name:n.typesMap[t]})},on:{click:function(e){return n.onClickFilter("in:"+t)}}},[n._v("\n\t\t\t\t"+n._s("in:"+t)+"\n\t\t\t")])})),1):n._e()],1),n._v(" "),n.hasResults?n._l(n.orderedResults,(function(t,r){var i=t.list,a=t.type;return e("ul",{key:a,staticClass:"unified-search__results",class:"unified-search__results-"+a,attrs:{"aria-label":n.typesMap[a]}},[n._l(n.limitIfAny(i,a),(function(t,i){return e("li",{key:t.resourceUrl},[e("SearchResult",n._b({attrs:{query:n.query,focused:0===n.focused&&0===r&&0===i},on:{focus:n.setFocusedIndex}},"SearchResult",t,!1))],1)})),n._v(" "),e("li",[n.reached[a]?n._e():e("SearchResult",{staticClass:"unified-search__result-more",attrs:{title:n.loading[a]?n.t("core","Loading more results …"):n.t("core","Load more results"),"icon-class":n.loading[a]?"icon-loading-small":""},on:{click:function(t){return t.preventDefault(),n.loadMore(a)},focus:n.setFocusedIndex}})],1)],2)})):[n.isLoading?e("SearchResultPlaceholders"):n.isValidQuery?e("EmptyContent",{attrs:{icon:"icon-search"}},[e("Highlight",{attrs:{text:n.t("core","No results for {query}",{query:n.query}),search:n.query}})],1):!n.isLoading||n.isShortQuery?e("EmptyContent",{attrs:{icon:"icon-search"},scopedSlots:n._u([n.isShortQuery?{key:"desc",fn:function(){return[n._v("\n\t\t\t\t"+n._s(n.n("core","Please enter {minSearchLength} character or more to search","Please enter {minSearchLength} characters or more to search",n.minSearchLength,{minSearchLength:n.minSearchLength}))+"\n\t\t\t")]},proxy:!0}:null],null,!0)},[n._v("\n\t\t\t"+n._s(n.t("core","Start typing to search"))+"\n\t\t\t")]):n._e()]],2)}),[],!1,null,"59134936",null),Cn=mn.exports;r.nc=btoa((0,a.getRequestToken)());var gn=(0,i.IY)().setApp("unified-search").detectUser().build();s.default.mixin({data:function(){return{logger:gn}},methods:{t:o.translate,n:o.translatePlural}}),new s.default({el:"#unified-search",name:"UnifiedSearchRoot",render:function(n){return n(Cn)}})},34769:function(n,t,e){var r=e(87537),i=e.n(r),a=e(23645),o=e.n(a)()(i());o.push([n.id,'.notifications:not(:empty)~#unified-search[data-v-51f09a15]{order:-1}.notifications:not(:empty)~#unified-search .header-menu__carret[data-v-51f09a15]{right:175px}.header-menu__trigger[data-v-51f09a15]{display:flex;align-items:center;justify-content:center;width:50px;height:100%;margin:0;padding:0;cursor:pointer;opacity:.6}.header-menu--opened .header-menu__trigger[data-v-51f09a15],.header-menu__trigger[data-v-51f09a15]:hover,.header-menu__trigger[data-v-51f09a15]:focus,.header-menu__trigger[data-v-51f09a15]:active{opacity:1}.header-menu__wrapper[data-v-51f09a15]{position:fixed;z-index:2000;top:50px;right:0;box-sizing:border-box;margin:0;border-radius:0 0 var(--border-radius) var(--border-radius);background-color:var(--color-main-background);filter:drop-shadow(0 1px 5px var(--color-box-shadow))}.header-menu__carret[data-v-51f09a15]{position:absolute;right:128px;bottom:100%;width:0;height:0;content:" ";pointer-events:none;border:10px solid rgba(0,0,0,0);border-bottom-color:var(--color-main-background)}.header-menu__content[data-v-51f09a15]{overflow:auto;width:350px;max-width:100vw;min-height:66px;max-height:calc(100vh - 100px)}',"",{version:3,sources:["webpack://./core/src/components/HeaderMenu.vue"],names:[],mappings:"AAoKA,4DACC,QAAA,CACA,iFACC,WAAA,CAID,uCACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CACA,WAAA,CACA,QAAA,CACA,SAAA,CACA,cAAA,CACA,UAAA,CAGD,oMAIC,SAAA,CAGD,uCACC,cAAA,CACA,YAAA,CACA,QAAA,CACA,OAAA,CACA,qBAAA,CACA,QAAA,CACA,2DAAA,CACA,6CAAA,CAEA,qDAAA,CAGD,sCACC,iBAAA,CACA,WAAA,CACA,WAAA,CACA,OAAA,CACA,QAAA,CACA,WAAA,CACA,mBAAA,CACA,+BAAA,CACA,gDAAA,CAGD,uCACC,aAAA,CACA,WAAA,CACA,eAAA,CACA,eAAA,CACA,8BAAA",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.notifications:not(:empty) ~ #unified-search {\n\torder: -1;\n\t.header-menu__carret {\n\t\tright: 175px;\n\t}\n}\n.header-menu {\n\t&__trigger {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\twidth: 50px;\n\t\theight: 100%;\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\tcursor: pointer;\n\t\topacity: .6;\n\t}\n\n\t&--opened &__trigger,\n\t&__trigger:hover,\n\t&__trigger:focus,\n\t&__trigger:active {\n\t\topacity: 1;\n\t}\n\n\t&__wrapper {\n\t\tposition: fixed;\n\t\tz-index: 2000;\n\t\ttop: 50px;\n\t\tright: 0;\n\t\tbox-sizing: border-box;\n\t\tmargin: 0;\n\t\tborder-radius: 0 0 var(--border-radius) var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\n\t\tfilter: drop-shadow(0 1px 5px var(--color-box-shadow));\n\t}\n\n\t&__carret {\n\t\tposition: absolute;\n\t\tright: 128px;\n\t\tbottom: 100%;\n\t\twidth: 0;\n\t\theight: 0;\n\t\tcontent: ' ';\n\t\tpointer-events: none;\n\t\tborder: 10px solid transparent;\n\t\tborder-bottom-color: var(--color-main-background);\n\t}\n\n\t&__content {\n\t\toverflow: auto;\n\t\twidth: 350px;\n\t\tmax-width: 100vw;\n\t\tmin-height: calc(44px * 1.5);\n\t\tmax-height: calc(100vh - 50px * 2);\n\t}\n}\n\n"],sourceRoot:""}]),t.Z=o},33068:function(n,t,e){var r=e(87537),i=e.n(r),a=e(23645),o=e.n(a)()(i());o.push([n.id,".unified-search__result[data-v-9dc2a344]{display:flex;height:44px;padding:10px;border-bottom:1px solid var(--color-border)}.unified-search__result[data-v-9dc2a344]:last-child{border-bottom:none}.unified-search__result--focused[data-v-9dc2a344],.unified-search__result[data-v-9dc2a344]:active,.unified-search__result[data-v-9dc2a344]:hover,.unified-search__result[data-v-9dc2a344]:focus{background-color:var(--color-background-hover)}.unified-search__result *[data-v-9dc2a344]{cursor:pointer}.unified-search__result-icon[data-v-9dc2a344]{overflow:hidden;width:44px;height:44px;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center center;background-size:32px}.unified-search__result-icon--rounded[data-v-9dc2a344]{border-radius:22px}.unified-search__result-icon--no-preview[data-v-9dc2a344]{background-size:32px}.unified-search__result-icon--with-thumbnail[data-v-9dc2a344]{background-size:cover}.unified-search__result-icon--with-thumbnail[data-v-9dc2a344]:not(.unified-search__result-icon--rounded){max-width:42px;max-height:42px;border:1px solid var(--color-border)}.unified-search__result-icon img[data-v-9dc2a344]{width:100%;height:100%;object-fit:cover;object-position:center}.unified-search__result-icon[data-v-9dc2a344],.unified-search__result-actions[data-v-9dc2a344]{flex:0 0 44px}.unified-search__result-content[data-v-9dc2a344]{display:flex;align-items:center;flex:1 1 100%;flex-wrap:wrap;min-width:0;padding-left:10px}.unified-search__result-line-one[data-v-9dc2a344],.unified-search__result-line-two[data-v-9dc2a344]{overflow:hidden;flex:1 1 100%;margin:1px 0;white-space:nowrap;text-overflow:ellipsis;color:inherit;font-size:inherit}.unified-search__result-line-two[data-v-9dc2a344]{opacity:.7;font-size:var(--default-font-size)}","",{version:3,sources:["webpack://./core/src/components/UnifiedSearch/SearchResult.vue"],names:[],mappings:"AA0KA,yCACC,YAAA,CACA,WALgB,CAMhB,YALQ,CAMR,2CAAA,CAGA,oDACC,kBAAA,CAGD,gMAIC,8CAAA,CAGD,2CACC,cAAA,CAGD,8CACC,eAAA,CACA,UA3Be,CA4Bf,WA5Be,CA6Bf,kCAAA,CACA,2BAAA,CACA,iCAAA,CACA,oBAAA,CACA,uDACC,kBAAA,CAED,0DACC,oBAAA,CAED,8DACC,qBAAA,CAED,yGAEC,cAAA,CACA,eAAA,CACA,oCAAA,CAGD,kDAEC,UAAA,CACA,WAAA,CAEA,gBAAA,CACA,sBAAA,CAIF,+FAEC,aAAA,CAGD,iDACC,YAAA,CACA,kBAAA,CACA,aAAA,CACA,cAAA,CAEA,WAAA,CACA,iBAtEO,CAyER,oGAEC,eAAA,CACA,aAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA,CAEA,aAAA,CACA,iBAAA,CAED,kDACC,UAAA,CACA,kCAAA",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@use "sass:math";\n\n$clickable-area: 44px;\n$margin: 10px;\n\n.unified-search__result {\n\tdisplay: flex;\n\theight: $clickable-area;\n\tpadding: $margin;\n\tborder-bottom: 1px solid var(--color-border);\n\n\t// Load more entry,\n\t&:last-child {\n\t\tborder-bottom: none;\n\t}\n\n\t&--focused,\n\t&:active,\n\t&:hover,\n\t&:focus {\n\t\tbackground-color: var(--color-background-hover);\n\t}\n\n\t* {\n\t\tcursor: pointer;\n\t}\n\n\t&-icon {\n\t\toverflow: hidden;\n\t\twidth: $clickable-area;\n\t\theight: $clickable-area;\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center center;\n\t\tbackground-size: 32px;\n\t\t&--rounded {\n\t\t\tborder-radius: math.div($clickable-area, 2);\n\t\t}\n\t\t&--no-preview {\n\t\t\tbackground-size: 32px;\n\t\t}\n\t\t&--with-thumbnail {\n\t\t\tbackground-size: cover;\n\t\t}\n\t\t&--with-thumbnail:not(&--rounded) {\n\t\t\t// compensate for border\n\t\t\tmax-width: $clickable-area - 2px;\n\t\t\tmax-height: $clickable-area - 2px;\n\t\t\tborder: 1px solid var(--color-border);\n\t\t}\n\n\t\timg {\n\t\t\t// Make sure to keep ratio\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\n\t\t\tobject-fit: cover;\n\t\t\tobject-position: center;\n\t\t}\n\t}\n\n\t&-icon,\n\t&-actions {\n\t\tflex: 0 0 $clickable-area;\n\t}\n\n\t&-content {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tflex: 1 1 100%;\n\t\tflex-wrap: wrap;\n\t\t// Set to minimum and gro from it\n\t\tmin-width: 0;\n\t\tpadding-left: $margin;\n\t}\n\n\t&-line-one,\n\t&-line-two {\n\t\toverflow: hidden;\n\t\tflex: 1 1 100%;\n\t\tmargin: 1px 0;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\t// Use the same color as the `a`\n\t\tcolor: inherit;\n\t\tfont-size: inherit;\n\t}\n\t&-line-two {\n\t\topacity: .7;\n\t\tfont-size: var(--default-font-size);\n\t}\n}\n\n'],sourceRoot:""}]),t.Z=o},44201:function(n,t,e){var r=e(87537),i=e.n(r),a=e(23645),o=e.n(a)()(i());o.push([n.id,".unified-search__result-placeholder-gradient[data-v-9ed03c40]{position:fixed;height:0;width:0;z-index:-1}.unified-search__result-placeholder[data-v-9ed03c40]{width:calc(100% - 2 * 10px);height:44px;margin:10px}.unified-search__result-placeholder-icon[data-v-9ed03c40]{width:44px;height:44px;rx:var(--border-radius);ry:var(--border-radius)}.unified-search__result-placeholder-line-one[data-v-9ed03c40],.unified-search__result-placeholder-line-two[data-v-9ed03c40]{width:calc(100% - 54px);height:1em;x:54px}.unified-search__result-placeholder-line-one[data-v-9ed03c40]{y:5px}.unified-search__result-placeholder-line-two[data-v-9ed03c40]{y:25px}","",{version:3,sources:["webpack://./core/src/components/UnifiedSearch/SearchResultPlaceholders.vue"],names:[],mappings:"AA+DA,8DACC,cAAA,CACA,QAAA,CACA,OAAA,CACA,UAAA,CAGD,qDACC,2BAAA,CACA,WAZgB,CAahB,WAZQ,CAcR,0DACC,UAhBe,CAiBf,WAjBe,CAkBf,uBAAA,CACA,uBAAA,CAGD,4HAEC,uBAAA,CACA,UAAA,CACA,MAAA,CAGD,8DACC,KAAA,CAGD,8DACC,MAAA",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$clickable-area: 44px;\n$margin: 10px;\n\n.unified-search__result-placeholder-gradient {\n\tposition: fixed;\n\theight: 0;\n\twidth: 0;\n\tz-index: -1;\n}\n\n.unified-search__result-placeholder {\n\twidth: calc(100% - 2 * #{$margin});\n\theight: $clickable-area;\n\tmargin: $margin;\n\n\t&-icon {\n\t\twidth: $clickable-area;\n\t\theight: $clickable-area;\n\t\trx: var(--border-radius);\n\t\try: var(--border-radius);\n\t}\n\n\t&-line-one,\n\t&-line-two {\n\t\twidth: calc(100% - #{$margin + $clickable-area});\n\t\theight: 1em;\n\t\tx: $margin + $clickable-area;\n\t}\n\n\t&-line-one {\n\t\ty: 5px;\n\t}\n\n\t&-line-two {\n\t\ty: 25px;\n\t}\n}\n\n"],sourceRoot:""}]),t.Z=o},55352:function(n,t,e){var r=e(87537),i=e.n(r),a=e(23645),o=e.n(a)()(i());o.push([n.id,".unified-search__trigger[data-v-59134936]{width:20px;height:20px}.unified-search__input-wrapper[data-v-59134936]{position:sticky;z-index:2;top:0;display:inline-flex;align-items:center;width:100%;background-color:var(--color-main-background)}.unified-search__filters[data-v-59134936]{margin:5px 10px}.unified-search__filters ul[data-v-59134936]{display:inline-flex;justify-content:space-between}.unified-search__form[data-v-59134936]{position:relative;width:100%;margin:10px}.unified-search__form[data-v-59134936]::after{right:6px;left:auto}.unified-search__form-input[data-v-59134936],.unified-search__form-reset[data-v-59134936]{margin:3px}.unified-search__form-input[data-v-59134936]{width:100%;height:34px;padding:6px}.unified-search__form-input[data-v-59134936],.unified-search__form-input[placeholder][data-v-59134936],.unified-search__form-input[data-v-59134936]::placeholder{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.unified-search__form-input[data-v-59134936]::-webkit-search-decoration,.unified-search__form-input[data-v-59134936]::-webkit-search-cancel-button,.unified-search__form-input[data-v-59134936]::-webkit-search-results-button,.unified-search__form-input[data-v-59134936]::-webkit-search-results-decoration{-webkit-appearance:none}.icon-loading-small .unified-search__form-input[data-v-59134936],.unified-search__form-input--with-reset[data-v-59134936]{padding-right:34px}.unified-search__form-reset[data-v-59134936]{position:absolute;top:0;right:0;width:28px;height:28px;padding:0;opacity:.5;border:none;background-color:rgba(0,0,0,0);margin-right:0}.unified-search__form-reset[data-v-59134936]:hover,.unified-search__form-reset[data-v-59134936]:focus,.unified-search__form-reset[data-v-59134936]:active{opacity:1}.unified-search__filters[data-v-59134936]{margin-right:5px}.unified-search__results[data-v-59134936]::before{display:block;margin:10px;margin-left:16px;content:attr(aria-label);color:var(--color-primary-element)}.unified-search .unified-search__result-more[data-v-59134936]{color:var(--color-text-maxcontrast)}.unified-search .empty-content[data-v-59134936]{margin:10vh 0}.unified-search .empty-content[data-v-59134936] .empty-content__title{font-weight:normal;font-size:var(--default-font-size);padding:0 15px;text-align:center}","",{version:3,sources:["webpack://./core/src/views/UnifiedSearch.vue"],names:[],mappings:"AAspBC,0CACC,UAAA,CACA,WAAA,CAGD,gDACC,eAAA,CAEA,SAAA,CACA,KAAA,CACA,mBAAA,CACA,kBAAA,CACA,UAAA,CACA,6CAAA,CAGD,0CACC,eAAA,CACA,6CACC,mBAAA,CACA,6BAAA,CAIF,uCACC,iBAAA,CACA,UAAA,CACA,WAhCO,CAmCP,8CACC,SAlCa,CAmCb,SAAA,CAGD,0FAEC,UAAA,CAGD,6CACC,UAAA,CACA,WA9CY,CA+CZ,WA9Ca,CAgDb,iKAGC,eAAA,CACA,kBAAA,CACA,sBAAA,CAID,+SAIC,uBAAA,CAID,0HAEC,kBApEW,CAwEb,6CACC,iBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CACA,WAAA,CACA,SAAA,CACA,UAAA,CACA,WAAA,CACA,8BAAA,CACA,cAAA,CAEA,0JAGC,SAAA,CAKH,0CACC,gBAAA,CAIA,kDACC,aAAA,CACA,WApGM,CAqGN,gBAAA,CACA,wBAAA,CACA,kCAAA,CAIF,8DACC,mCAAA,CAGD,gDACC,aAAA,CAEA,uEACC,kBAAA,CACS,kCAAA,CACT,cAAA,CACA,iBAAA",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n@use "sass:math";\n\n$margin: 10px;\n$input-height: 34px;\n$input-padding: 6px;\n\n.unified-search {\n\t&__trigger {\n\t\twidth: 20px;\n\t\theight: 20px;\n\t}\n\n\t&__input-wrapper {\n\t\tposition: sticky;\n\t\t// above search results\n\t\tz-index: 2;\n\t\ttop: 0;\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\twidth: 100%;\n\t\tbackground-color: var(--color-main-background);\n\t}\n\n\t&__filters {\n\t\tmargin: math.div($margin, 2) $margin;\n\t\tul {\n\t\t\tdisplay: inline-flex;\n\t\t\tjustify-content: space-between;\n\t\t}\n\t}\n\n\t&__form {\n\t\tposition: relative;\n\t\twidth: 100%;\n\t\tmargin: $margin;\n\n\t\t// Loading spinner\n\t\t&::after {\n\t\t\tright: $input-padding;\n\t\t\tleft: auto;\n\t\t}\n\n\t\t&-input,\n\t\t&-reset {\n\t\t\tmargin: math.div($input-padding, 2);\n\t\t}\n\n\t\t&-input {\n\t\t\twidth: 100%;\n\t\t\theight: $input-height;\n\t\t\tpadding: $input-padding;\n\n\t\t\t&,\n\t\t\t&[placeholder],\n\t\t\t&::placeholder {\n\t\t\t\toverflow: hidden;\n\t\t\t\twhite-space: nowrap;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t}\n\n\t\t\t// Hide webkit clear search\n\t\t\t&::-webkit-search-decoration,\n\t\t\t&::-webkit-search-cancel-button,\n\t\t\t&::-webkit-search-results-button,\n\t\t\t&::-webkit-search-results-decoration {\n\t\t\t\t-webkit-appearance: none;\n\t\t\t}\n\n\t\t\t// Ellipsis earlier if reset button is here\n\t\t\t.icon-loading-small &,\n\t\t\t&--with-reset {\n\t\t\t\tpadding-right: $input-height;\n\t\t\t}\n\t\t}\n\n\t\t&-reset {\n\t\t\tposition: absolute;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\twidth: $input-height - $input-padding;\n\t\t\theight: $input-height - $input-padding;\n\t\t\tpadding: 0;\n\t\t\topacity: .5;\n\t\t\tborder: none;\n\t\t\tbackground-color: transparent;\n\t\t\tmargin-right: 0;\n\n\t\t\t&:hover,\n\t\t\t&:focus,\n\t\t\t&:active {\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__filters {\n\t\tmargin-right: math.div($margin, 2);\n\t}\n\n\t&__results {\n\t\t&::before {\n\t\t\tdisplay: block;\n\t\t\tmargin: $margin;\n\t\t\tmargin-left: $margin + $input-padding;\n\t\t\tcontent: attr(aria-label);\n\t\t\tcolor: var(--color-primary-element);\n\t\t}\n\t}\n\n\t.unified-search__result-more::v-deep {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t.empty-content {\n\t\tmargin: 10vh 0;\n\n\t\t::v-deep .empty-content__title {\n\t\t\tfont-weight: normal;\n font-size: var(--default-font-size);\n\t\t\tpadding: 0 15px;\n\t\t\ttext-align: center;\n\t\t}\n\t}\n}\n\n'],sourceRoot:""}]),t.Z=o}},r={};function i(n){var t=r[n];if(void 0!==t)return t.exports;var a=r[n]={id:n,loaded:!1,exports:{}};return e[n].call(a.exports,a,a.exports,i),a.loaded=!0,a.exports}i.m=e,i.amdD=function(){throw new Error("define cannot be used indirect")},i.amdO={},n=[],i.O=function(t,e,r,a){if(!e){var o=1/0;for(l=0;l<n.length;l++){e=n[l][0],r=n[l][1],a=n[l][2];for(var s=!0,c=0;c<e.length;c++)(!1&a||o>=a)&&Object.keys(i.O).every((function(n){return i.O[n](e[c])}))?e.splice(c--,1):(s=!1,a<o&&(o=a));if(s){n.splice(l--,1);var u=r();void 0!==u&&(t=u)}}return t}a=a||0;for(var l=n.length;l>0&&n[l-1][2]>a;l--)n[l]=n[l-1];n[l]=[e,r,a]},i.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return i.d(t,{a:t}),t},i.d=function(n,t){for(var e in t)i.o(t,e)&&!i.o(n,e)&&Object.defineProperty(n,e,{enumerable:!0,get:t[e]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),i.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},i.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},i.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n},i.j=9671,function(){i.b=document.baseURI||self.location.href;var n={9671:0};i.O.j=function(t){return 0===n[t]};var t=function(t,e){var r,a,o=e[0],s=e[1],c=e[2],u=0;if(o.some((function(t){return 0!==n[t]}))){for(r in s)i.o(s,r)&&(i.m[r]=s[r]);if(c)var l=c(i)}for(t&&t(e);u<o.length;u++)a=o[u],i.o(n,a)&&n[a]&&n[a][0](),n[a]=0;return i.O(l)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(t.bind(null,0)),e.push=t.bind(null,e.push.bind(e))}(),i.nc=void 0;var a=i.O(void 0,[7874],(function(){return i(91231)}));a=i.O(a)}();
+//# sourceMappingURL=core-unified-search.js.map?v=b1321989251fbdc89827 \ No newline at end of file
diff --git a/dist/core-unified-search.js.map b/dist/core-unified-search.js.map
index 21b3f99dd5d..80a5e2d8446 100644
--- a/dist/core-unified-search.js.map
+++ b/dist/core-unified-search.js.map
@@ -1 +1 @@
-{"version":3,"file":"core-unified-search.js?v=bc21ef54ccd4a9798f41","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/services/UnifiedSearchService.js","webpack:///nextcloud/core/src/components/HeaderMenu.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/HeaderMenu.vue","webpack://nextcloud/./core/src/components/HeaderMenu.vue?c3a1","webpack://nextcloud/./core/src/components/HeaderMenu.vue?30e1","webpack:///nextcloud/core/src/components/HeaderMenu.vue?vue&type=template&id=51f09a15&scoped=true&","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResult.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResult.vue","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchResult.vue?e389","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchResult.vue?32d3","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResult.vue?vue&type=template&id=9dc2a344&scoped=true&","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResultPlaceholders.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResultPlaceholders.vue","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchResultPlaceholders.vue?c1bc","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchResultPlaceholders.vue?7f72","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResultPlaceholders.vue?vue&type=template&id=9ed03c40&scoped=true&","webpack:///nextcloud/core/src/views/UnifiedSearch.vue","webpack:///nextcloud/core/src/views/UnifiedSearch.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/views/UnifiedSearch.vue?802c","webpack://nextcloud/./core/src/views/UnifiedSearch.vue?1990","webpack:///nextcloud/core/src/views/UnifiedSearch.vue?vue&type=template&id=59134936&scoped=true&","webpack:///nextcloud/core/src/unified-search.js","webpack:///nextcloud/core/src/components/HeaderMenu.vue?vue&type=style&index=0&id=51f09a15&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResult.vue?vue&type=style&index=0&id=9dc2a344&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResultPlaceholders.vue?vue&type=style&index=0&id=9ed03c40&lang=scss&scoped=true&","webpack:///nextcloud/core/src/views/UnifiedSearch.vue?vue&type=style&index=0&id=59134936&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 2020, John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport axios from '@nextcloud/axios'\n\nexport const defaultLimit = loadState('unified-search', 'limit-default')\nexport const minSearchLength = 2\nexport const regexFilterIn = /[^-]in:([a-z_-]+)/ig\nexport const regexFilterNot = /-in:([a-z_-]+)/ig\n\n/**\n * Create a cancel token\n *\n * @return {import('axios').CancelTokenSource}\n */\nconst createCancelToken = () => axios.CancelToken.source()\n\n/**\n * Get the list of available search providers\n *\n * @return {Promise<Array>}\n */\nexport async function getTypes() {\n\ttry {\n\t\tconst { data } = await axios.get(generateOcsUrl('search/providers'), {\n\t\t\tparams: {\n\t\t\t\t// Sending which location we're currently at\n\t\t\t\tfrom: window.location.pathname.replace('/index.php', '') + window.location.search,\n\t\t\t},\n\t\t})\n\t\tif ('ocs' in data && 'data' in data.ocs && Array.isArray(data.ocs.data) && data.ocs.data.length > 0) {\n\t\t\t// Providers are sorted by the api based on their order key\n\t\t\treturn data.ocs.data\n\t\t}\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n\treturn []\n}\n\n/**\n * Get the list of available search providers\n *\n * @param {object} options destructuring object\n * @param {string} options.type the type to search\n * @param {string} options.query the search\n * @param {number|string|undefined} options.cursor the offset for paginated searches\n * @return {object} {request: Promise, cancel: Promise}\n */\nexport function search({ type, query, cursor }) {\n\t/**\n\t * Generate an axios cancel token\n\t */\n\tconst cancelToken = createCancelToken()\n\n\tconst request = async () => axios.get(generateOcsUrl('search/providers/{type}/search', { type }), {\n\t\tcancelToken: cancelToken.token,\n\t\tparams: {\n\t\t\tterm: query,\n\t\t\tcursor,\n\t\t\t// Sending which location we're currently at\n\t\t\tfrom: window.location.pathname.replace('/index.php', '') + window.location.search,\n\t\t},\n\t})\n\n\treturn {\n\t\trequest,\n\t\tcancel: cancelToken.cancel,\n\t}\n}\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeaderMenu.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!./HeaderMenu.vue?vue&type=script&lang=js&\""," <!--\n - @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n<template>\n\t<div :id=\"id\"\n\t\tv-click-outside=\"clickOutsideConfig\"\n\t\t:class=\"{ 'header-menu--opened': opened }\"\n\t\tclass=\"header-menu\">\n\t\t<a class=\"header-menu__trigger\"\n\t\t\thref=\"#\"\n\t\t\t:aria-label=\"ariaLabel\"\n\t\t\t:aria-controls=\"`header-menu-${id}`\"\n\t\t\t:aria-expanded=\"opened\"\n\t\t\taria-haspopup=\"menu\"\n\t\t\t@click.prevent=\"toggleMenu\">\n\t\t\t<slot name=\"trigger\" />\n\t\t</a>\n\t\t<div v-show=\"opened\"\n\t\t\t:id=\"`header-menu-${id}`\"\n\t\t\tclass=\"header-menu__wrapper\"\n\t\t\trole=\"menu\">\n\t\t\t<div class=\"header-menu__carret\" />\n\t\t\t<div class=\"header-menu__content\">\n\t\t\t\t<slot />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { directive as ClickOutside } from 'v-click-outside'\nimport excludeClickOutsideClasses from '@nextcloud/vue/dist/Mixins/excludeClickOutsideClasses'\n\nexport default {\n\tname: 'HeaderMenu',\n\n\tdirectives: {\n\t\tClickOutside,\n\t},\n\n\tmixins: [\n\t\texcludeClickOutsideClasses,\n\t],\n\n\tprops: {\n\t\tid: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tariaLabel: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\topen: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\topened: this.open,\n\t\t\tclickOutsideConfig: {\n\t\t\t\thandler: this.closeMenu,\n\t\t\t\tmiddleware: this.clickOutsideMiddleware,\n\t\t\t},\n\t\t}\n\t},\n\n\twatch: {\n\t\topen(newVal) {\n\t\t\tthis.opened = newVal\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tif (this.opened) {\n\t\t\t\t\tthis.openMenu()\n\t\t\t\t} else {\n\t\t\t\t\tthis.closeMenu()\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t},\n\n\tmounted() {\n\t\tdocument.addEventListener('keydown', this.onKeyDown)\n\t},\n\tbeforeDestroy() {\n\t\tdocument.removeEventListener('keydown', this.onKeyDown)\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Toggle the current menu open state\n\t\t */\n\t\ttoggleMenu() {\n\t\t\t// Toggling current state\n\t\t\tif (!this.opened) {\n\t\t\t\tthis.openMenu()\n\t\t\t} else {\n\t\t\t\tthis.closeMenu()\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Close the current menu\n\t\t */\n\t\tcloseMenu() {\n\t\t\tif (!this.opened) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.opened = false\n\t\t\tthis.$emit('close')\n\t\t\tthis.$emit('update:open', false)\n\t\t},\n\n\t\t/**\n\t\t * Open the current menu\n\t\t */\n\t\topenMenu() {\n\t\t\tif (this.opened) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.opened = true\n\t\t\tthis.$emit('open')\n\t\t\tthis.$emit('update:open', true)\n\t\t},\n\n\t\tonKeyDown(event) {\n\t\t\t// If opened and escape pressed, close\n\t\t\tif (event.key === 'Escape' && this.opened) {\n\t\t\t\tevent.preventDefault()\n\n\t\t\t\t/** user cancelled the menu by pressing escape */\n\t\t\t\tthis.$emit('cancel')\n\n\t\t\t\t/** we do NOT fire a close event to differentiate cancel and close */\n\t\t\t\tthis.opened = false\n\t\t\t\tthis.$emit('update:open', false)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.notifications:not(:empty) ~ #unified-search {\n\torder: -1;\n\t.header-menu__carret {\n\t\tright: 175px;\n\t}\n}\n.header-menu {\n\t&__trigger {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\twidth: 50px;\n\t\theight: 100%;\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\tcursor: pointer;\n\t\topacity: .6;\n\t}\n\n\t&--opened &__trigger,\n\t&__trigger:hover,\n\t&__trigger:focus,\n\t&__trigger:active {\n\t\topacity: 1;\n\t}\n\n\t&__wrapper {\n\t\tposition: fixed;\n\t\tz-index: 2000;\n\t\ttop: 50px;\n\t\tright: 0;\n\t\tbox-sizing: border-box;\n\t\tmargin: 0;\n\t\tborder-radius: 0 0 var(--border-radius) var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\n\t\tfilter: drop-shadow(0 1px 5px var(--color-box-shadow));\n\t}\n\n\t&__carret {\n\t\tposition: absolute;\n\t\tright: 128px;\n\t\tbottom: 100%;\n\t\twidth: 0;\n\t\theight: 0;\n\t\tcontent: ' ';\n\t\tpointer-events: none;\n\t\tborder: 10px solid transparent;\n\t\tborder-bottom-color: var(--color-main-background);\n\t}\n\n\t&__content {\n\t\toverflow: auto;\n\t\twidth: 350px;\n\t\tmax-width: 100vw;\n\t\tmin-height: calc(44px * 1.5);\n\t\tmax-height: calc(100vh - 50px * 2);\n\t}\n}\n\n</style>\n","\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!./HeaderMenu.vue?vue&type=style&index=0&id=51f09a15&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!./HeaderMenu.vue?vue&type=style&index=0&id=51f09a15&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./HeaderMenu.vue?vue&type=template&id=51f09a15&scoped=true&\"\nimport script from \"./HeaderMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./HeaderMenu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./HeaderMenu.vue?vue&type=style&index=0&id=51f09a15&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 \"51f09a15\",\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',{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:(_vm.clickOutsideConfig),expression:\"clickOutsideConfig\"}],staticClass:\"header-menu\",class:{ 'header-menu--opened': _vm.opened },attrs:{\"id\":_vm.id}},[_c('a',{staticClass:\"header-menu__trigger\",attrs:{\"href\":\"#\",\"aria-label\":_vm.ariaLabel,\"aria-controls\":(\"header-menu-\" + _vm.id),\"aria-expanded\":_vm.opened,\"aria-haspopup\":\"menu\"},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleMenu.apply(null, arguments)}}},[_vm._t(\"trigger\")],2),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.opened),expression:\"opened\"}],staticClass:\"header-menu__wrapper\",attrs:{\"id\":(\"header-menu-\" + _vm.id),\"role\":\"menu\"}},[_c('div',{staticClass:\"header-menu__carret\"}),_vm._v(\" \"),_c('div',{staticClass:\"header-menu__content\"},[_vm._t(\"default\")],2)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchResult.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!./SearchResult.vue?vue&type=script&lang=js&\""," <!--\n - @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n<template>\n\t<a :href=\"resourceUrl || '#'\"\n\t\tclass=\"unified-search__result\"\n\t\t:class=\"{\n\t\t\t'unified-search__result--focused': focused,\n\t\t}\"\n\t\t@click=\"reEmitEvent\"\n\t\t@focus=\"reEmitEvent\">\n\n\t\t<!-- Icon describing the result -->\n\t\t<div class=\"unified-search__result-icon\"\n\t\t\t:class=\"{\n\t\t\t\t'unified-search__result-icon--rounded': rounded,\n\t\t\t\t'unified-search__result-icon--no-preview': !hasValidThumbnail && !loaded,\n\t\t\t\t'unified-search__result-icon--with-thumbnail': hasValidThumbnail && loaded,\n\t\t\t\t[icon]: !loaded && !isIconUrl,\n\t\t\t}\"\n\t\t\t:style=\"{\n\t\t\t\tbackgroundImage: isIconUrl ? `url(${icon})` : '',\n\t\t\t}\"\n\t\t\trole=\"img\">\n\n\t\t\t<img v-if=\"hasValidThumbnail\"\n\t\t\t\tv-show=\"loaded\"\n\t\t\t\t:src=\"thumbnailUrl\"\n\t\t\t\talt=\"\"\n\t\t\t\t@error=\"onError\"\n\t\t\t\t@load=\"onLoad\">\n\t\t</div>\n\n\t\t<!-- Title and sub-title -->\n\t\t<span class=\"unified-search__result-content\">\n\t\t\t<h3 class=\"unified-search__result-line-one\" :title=\"title\">\n\t\t\t\t<Highlight :text=\"title\" :search=\"query\" />\n\t\t\t</h3>\n\t\t\t<h4 v-if=\"subline\" class=\"unified-search__result-line-two\" :title=\"subline\">{{ subline }}</h4>\n\t\t</span>\n\t</a>\n</template>\n\n<script>\nimport Highlight from '@nextcloud/vue/dist/Components/Highlight'\n\nexport default {\n\tname: 'SearchResult',\n\n\tcomponents: {\n\t\tHighlight,\n\t},\n\n\tprops: {\n\t\tthumbnailUrl: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsubline: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tresourceUrl: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\trounded: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tquery: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * Only used for the first result as a visual feedback\n\t\t * so we can keep the search input focused but pressing\n\t\t * enter still opens the first result\n\t\t */\n\t\tfocused: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\thasValidThumbnail: this.thumbnailUrl && this.thumbnailUrl.trim() !== '',\n\t\t\tloaded: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisIconUrl() {\n\t\t\t// If we're facing an absolute url\n\t\t\tif (this.icon.startsWith('/')) {\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\t// Otherwise, let's check if this is a valid url\n\t\t\ttry {\n\t\t\t\t// eslint-disable-next-line no-new\n\t\t\t\tnew URL(this.icon)\n\t\t\t} catch {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\t},\n\n\twatch: {\n\t\t// Make sure to reset state on change even when vue recycle the component\n\t\tthumbnailUrl() {\n\t\t\tthis.hasValidThumbnail = this.thumbnailUrl && this.thumbnailUrl.trim() !== ''\n\t\t\tthis.loaded = false\n\t\t},\n\t},\n\n\tmethods: {\n\t\treEmitEvent(e) {\n\t\t\tthis.$emit(e.type, e)\n\t\t},\n\n\t\t/**\n\t\t * If the image fails to load, fallback to iconClass\n\t\t */\n\t\tonError() {\n\t\t\tthis.hasValidThumbnail = false\n\t\t},\n\n\t\tonLoad() {\n\t\t\tthis.loaded = true\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@use \"sass:math\";\n\n$clickable-area: 44px;\n$margin: 10px;\n\n.unified-search__result {\n\tdisplay: flex;\n\theight: $clickable-area;\n\tpadding: $margin;\n\tborder-bottom: 1px solid var(--color-border);\n\n\t// Load more entry,\n\t&:last-child {\n\t\tborder-bottom: none;\n\t}\n\n\t&--focused,\n\t&:active,\n\t&:hover,\n\t&:focus {\n\t\tbackground-color: var(--color-background-hover);\n\t}\n\n\t* {\n\t\tcursor: pointer;\n\t}\n\n\t&-icon {\n\t\toverflow: hidden;\n\t\twidth: $clickable-area;\n\t\theight: $clickable-area;\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center center;\n\t\tbackground-size: 32px;\n\t\t&--rounded {\n\t\t\tborder-radius: math.div($clickable-area, 2);\n\t\t}\n\t\t&--no-preview {\n\t\t\tbackground-size: 32px;\n\t\t}\n\t\t&--with-thumbnail {\n\t\t\tbackground-size: cover;\n\t\t}\n\t\t&--with-thumbnail:not(&--rounded) {\n\t\t\t// compensate for border\n\t\t\tmax-width: $clickable-area - 2px;\n\t\t\tmax-height: $clickable-area - 2px;\n\t\t\tborder: 1px solid var(--color-border);\n\t\t}\n\n\t\timg {\n\t\t\t// Make sure to keep ratio\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\n\t\t\tobject-fit: cover;\n\t\t\tobject-position: center;\n\t\t}\n\t}\n\n\t&-icon,\n\t&-actions {\n\t\tflex: 0 0 $clickable-area;\n\t}\n\n\t&-content {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tflex: 1 1 100%;\n\t\tflex-wrap: wrap;\n\t\t// Set to minimum and gro from it\n\t\tmin-width: 0;\n\t\tpadding-left: $margin;\n\t}\n\n\t&-line-one,\n\t&-line-two {\n\t\toverflow: hidden;\n\t\tflex: 1 1 100%;\n\t\tmargin: 1px 0;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\t// Use the same color as the `a`\n\t\tcolor: inherit;\n\t\tfont-size: inherit;\n\t}\n\t&-line-two {\n\t\topacity: .7;\n\t\tfont-size: var(--default-font-size);\n\t}\n}\n\n</style>\n","\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!./SearchResult.vue?vue&type=style&index=0&id=9dc2a344&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!./SearchResult.vue?vue&type=style&index=0&id=9dc2a344&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SearchResult.vue?vue&type=template&id=9dc2a344&scoped=true&\"\nimport script from \"./SearchResult.vue?vue&type=script&lang=js&\"\nexport * from \"./SearchResult.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SearchResult.vue?vue&type=style&index=0&id=9dc2a344&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 \"9dc2a344\",\n null\n \n)\n\nexport default component.exports","var render = function () {\nvar _obj;\nvar _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{staticClass:\"unified-search__result\",class:{\n\t\t'unified-search__result--focused': _vm.focused,\n\t},attrs:{\"href\":_vm.resourceUrl || '#'},on:{\"click\":_vm.reEmitEvent,\"focus\":_vm.reEmitEvent}},[_c('div',{staticClass:\"unified-search__result-icon\",class:( _obj = {\n\t\t\t'unified-search__result-icon--rounded': _vm.rounded,\n\t\t\t'unified-search__result-icon--no-preview': !_vm.hasValidThumbnail && !_vm.loaded,\n\t\t\t'unified-search__result-icon--with-thumbnail': _vm.hasValidThumbnail && _vm.loaded\n\t\t}, _obj[_vm.icon] = !_vm.loaded && !_vm.isIconUrl, _obj ),style:({\n\t\t\tbackgroundImage: _vm.isIconUrl ? (\"url(\" + _vm.icon + \")\") : '',\n\t\t}),attrs:{\"role\":\"img\"}},[(_vm.hasValidThumbnail)?_c('img',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.loaded),expression:\"loaded\"}],attrs:{\"src\":_vm.thumbnailUrl,\"alt\":\"\"},on:{\"error\":_vm.onError,\"load\":_vm.onLoad}}):_vm._e()]),_vm._v(\" \"),_c('span',{staticClass:\"unified-search__result-content\"},[_c('h3',{staticClass:\"unified-search__result-line-one\",attrs:{\"title\":_vm.title}},[_c('Highlight',{attrs:{\"text\":_vm.title,\"search\":_vm.query}})],1),_vm._v(\" \"),(_vm.subline)?_c('h4',{staticClass:\"unified-search__result-line-two\",attrs:{\"title\":_vm.subline}},[_vm._v(_vm._s(_vm.subline))]):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchResultPlaceholders.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!./SearchResultPlaceholders.vue?vue&type=script&lang=js&\"","<template>\n\t<ul>\n\t\t<!-- Placeholder animation -->\n\t\t<svg class=\"unified-search__result-placeholder-gradient\">\n\t\t\t<defs>\n\t\t\t\t<linearGradient id=\"unified-search__result-placeholder-gradient\">\n\t\t\t\t\t<stop offset=\"0%\" :stop-color=\"light\">\n\t\t\t\t\t\t<animate attributeName=\"stop-color\"\n\t\t\t\t\t\t\t:values=\"`${light}; ${light}; ${dark}; ${dark}; ${light}`\"\n\t\t\t\t\t\t\tdur=\"2s\"\n\t\t\t\t\t\t\trepeatCount=\"indefinite\" />\n\t\t\t\t\t</stop>\n\t\t\t\t\t<stop offset=\"100%\" :stop-color=\"dark\">\n\t\t\t\t\t\t<animate attributeName=\"stop-color\"\n\t\t\t\t\t\t\t:values=\"`${dark}; ${light}; ${light}; ${dark}; ${dark}`\"\n\t\t\t\t\t\t\tdur=\"2s\"\n\t\t\t\t\t\t\trepeatCount=\"indefinite\" />\n\t\t\t\t\t</stop>\n\t\t\t\t</linearGradient>\n\t\t\t</defs>\n\t\t</svg>\n\n\t\t<!-- Placeholders -->\n\t\t<li v-for=\"placeholder in [1, 2, 3]\" :key=\"placeholder\">\n\t\t\t<svg class=\"unified-search__result-placeholder\"\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tfill=\"url(#unified-search__result-placeholder-gradient)\">\n\t\t\t\t<rect class=\"unified-search__result-placeholder-icon\" />\n\t\t\t\t<rect class=\"unified-search__result-placeholder-line-one\" />\n\t\t\t\t<rect class=\"unified-search__result-placeholder-line-two\" :style=\"{width: `calc(${randWidth()}%)`}\" />\n\t\t\t</svg>\n\t\t</li>\n\t</ul>\n</template>\n\n<script>\nexport default {\n\tname: 'SearchResultPlaceholders',\n\n\tdata() {\n\t\treturn {\n\t\t\tlight: null,\n\t\t\tdark: null,\n\t\t}\n\t},\n\tmounted() {\n\t\tconst styles = getComputedStyle(document.documentElement)\n\t\tthis.dark = styles.getPropertyValue('--color-placeholder-dark')\n\t\tthis.light = styles.getPropertyValue('--color-placeholder-light')\n\t},\n\n\tmethods: {\n\t\trandWidth() {\n\t\t\treturn Math.floor(Math.random() * 20) + 30\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n$clickable-area: 44px;\n$margin: 10px;\n\n.unified-search__result-placeholder-gradient {\n\tposition: fixed;\n\theight: 0;\n\twidth: 0;\n\tz-index: -1;\n}\n\n.unified-search__result-placeholder {\n\twidth: calc(100% - 2 * #{$margin});\n\theight: $clickable-area;\n\tmargin: $margin;\n\n\t&-icon {\n\t\twidth: $clickable-area;\n\t\theight: $clickable-area;\n\t\trx: var(--border-radius);\n\t\try: var(--border-radius);\n\t}\n\n\t&-line-one,\n\t&-line-two {\n\t\twidth: calc(100% - #{$margin + $clickable-area});\n\t\theight: 1em;\n\t\tx: $margin + $clickable-area;\n\t}\n\n\t&-line-one {\n\t\ty: 5px;\n\t}\n\n\t&-line-two {\n\t\ty: 25px;\n\t}\n}\n\n</style>\n","\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!./SearchResultPlaceholders.vue?vue&type=style&index=0&id=9ed03c40&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!./SearchResultPlaceholders.vue?vue&type=style&index=0&id=9ed03c40&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SearchResultPlaceholders.vue?vue&type=template&id=9ed03c40&scoped=true&\"\nimport script from \"./SearchResultPlaceholders.vue?vue&type=script&lang=js&\"\nexport * from \"./SearchResultPlaceholders.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SearchResultPlaceholders.vue?vue&type=style&index=0&id=9ed03c40&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 \"9ed03c40\",\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('ul',[_c('svg',{staticClass:\"unified-search__result-placeholder-gradient\"},[_c('defs',[_c('linearGradient',{attrs:{\"id\":\"unified-search__result-placeholder-gradient\"}},[_c('stop',{attrs:{\"offset\":\"0%\",\"stop-color\":_vm.light}},[_c('animate',{attrs:{\"attributeName\":\"stop-color\",\"values\":(_vm.light + \"; \" + _vm.light + \"; \" + _vm.dark + \"; \" + _vm.dark + \"; \" + _vm.light),\"dur\":\"2s\",\"repeatCount\":\"indefinite\"}})]),_vm._v(\" \"),_c('stop',{attrs:{\"offset\":\"100%\",\"stop-color\":_vm.dark}},[_c('animate',{attrs:{\"attributeName\":\"stop-color\",\"values\":(_vm.dark + \"; \" + _vm.light + \"; \" + _vm.light + \"; \" + _vm.dark + \"; \" + _vm.dark),\"dur\":\"2s\",\"repeatCount\":\"indefinite\"}})])],1)],1)]),_vm._v(\" \"),_vm._l(([1, 2, 3]),function(placeholder){return _c('li',{key:placeholder},[_c('svg',{staticClass:\"unified-search__result-placeholder\",attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"fill\":\"url(#unified-search__result-placeholder-gradient)\"}},[_c('rect',{staticClass:\"unified-search__result-placeholder-icon\"}),_vm._v(\" \"),_c('rect',{staticClass:\"unified-search__result-placeholder-line-one\"}),_vm._v(\" \"),_c('rect',{staticClass:\"unified-search__result-placeholder-line-two\",style:({width: (\"calc(\" + (_vm.randWidth()) + \"%)\")})})])])})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }"," <!--\n - @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n<template>\n\t<HeaderMenu id=\"unified-search\"\n\t\tclass=\"unified-search\"\n\t\texclude-click-outside-classes=\"popover\"\n\t\t:open.sync=\"open\"\n\t\t:aria-label=\"ariaLabel\"\n\t\t@open=\"onOpen\"\n\t\t@close=\"onClose\">\n\t\t<!-- Header icon -->\n\t\t<template #trigger>\n\t\t\t<Magnify class=\"unified-search__trigger\"\n\t\t\t\t:size=\"20\"\n\t\t\t\tfill-color=\"var(--color-primary-text)\" />\n\t\t</template>\n\n\t\t<!-- Search form & filters wrapper -->\n\t\t<div class=\"unified-search__input-wrapper\">\n\t\t\t<form class=\"unified-search__form\"\n\t\t\t\trole=\"search\"\n\t\t\t\t:class=\"{'icon-loading-small': isLoading}\"\n\t\t\t\t@submit.prevent.stop=\"onInputEnter\"\n\t\t\t\t@reset.prevent.stop=\"onReset\">\n\t\t\t\t<!-- Search input -->\n\t\t\t\t<input ref=\"input\"\n\t\t\t\t\tv-model=\"query\"\n\t\t\t\t\tclass=\"unified-search__form-input\"\n\t\t\t\t\ttype=\"search\"\n\t\t\t\t\t:class=\"{'unified-search__form-input--with-reset': !!query}\"\n\t\t\t\t\t:placeholder=\"t('core', 'Search {types} …', { types: typesNames.join(', ') })\"\n\t\t\t\t\t@input=\"onInputDebounced\"\n\t\t\t\t\t@keypress.enter.prevent.stop=\"onInputEnter\">\n\n\t\t\t\t<!-- Reset search button -->\n\t\t\t\t<input v-if=\"!!query && !isLoading\"\n\t\t\t\t\ttype=\"reset\"\n\t\t\t\t\tclass=\"unified-search__form-reset icon-close\"\n\t\t\t\t\t:aria-label=\"t('core','Reset search')\"\n\t\t\t\t\tvalue=\"\">\n\t\t\t</form>\n\n\t\t\t<!-- Search filters -->\n\t\t\t<Actions v-if=\"availableFilters.length > 1\" class=\"unified-search__filters\" placement=\"bottom\">\n\t\t\t\t<ActionButton v-for=\"type in availableFilters\"\n\t\t\t\t\t:key=\"type\"\n\t\t\t\t\ticon=\"icon-filter\"\n\t\t\t\t\t:title=\"t('core', 'Search for {name} only', { name: typesMap[type] })\"\n\t\t\t\t\t@click=\"onClickFilter(`in:${type}`)\">\n\t\t\t\t\t{{ `in:${type}` }}\n\t\t\t\t</ActionButton>\n\t\t\t</Actions>\n\t\t</div>\n\n\t\t<template v-if=\"!hasResults\">\n\t\t\t<!-- Loading placeholders -->\n\t\t\t<SearchResultPlaceholders v-if=\"isLoading\" />\n\n\t\t\t<EmptyContent v-else-if=\"isValidQuery\" icon=\"icon-search\">\n\t\t\t\t<Highlight :text=\"t('core', 'No results for {query}', { query })\" :search=\"query\" />\n\t\t\t</EmptyContent>\n\n\t\t\t<EmptyContent v-else-if=\"!isLoading || isShortQuery\" icon=\"icon-search\">\n\t\t\t\t{{ t('core', 'Start typing to search') }}\n\t\t\t\t<template v-if=\"isShortQuery\" #desc>\n\t\t\t\t\t{{ n('core',\n\t\t\t\t\t\t'Please enter {minSearchLength} character or more to search',\n\t\t\t\t\t\t'Please enter {minSearchLength} characters or more to search',\n\t\t\t\t\t\tminSearchLength,\n\t\t\t\t\t\t{minSearchLength}) }}\n\t\t\t\t</template>\n\t\t\t</EmptyContent>\n\t\t</template>\n\n\t\t<!-- Grouped search results -->\n\t\t<template v-else>\n\t\t\t<ul v-for=\"({list, type}, typesIndex) in orderedResults\"\n\t\t\t\t:key=\"type\"\n\t\t\t\tclass=\"unified-search__results\"\n\t\t\t\t:class=\"`unified-search__results-${type}`\"\n\t\t\t\t:aria-label=\"typesMap[type]\">\n\t\t\t\t<!-- Search results -->\n\t\t\t\t<li v-for=\"(result, index) in limitIfAny(list, type)\" :key=\"result.resourceUrl\">\n\t\t\t\t\t<SearchResult v-bind=\"result\"\n\t\t\t\t\t\t:query=\"query\"\n\t\t\t\t\t\t:focused=\"focused === 0 && typesIndex === 0 && index === 0\"\n\t\t\t\t\t\t@focus=\"setFocusedIndex\" />\n\t\t\t\t</li>\n\n\t\t\t\t<!-- Load more button -->\n\t\t\t\t<li>\n\t\t\t\t\t<SearchResult v-if=\"!reached[type]\"\n\t\t\t\t\t\tclass=\"unified-search__result-more\"\n\t\t\t\t\t\t:title=\"loading[type]\n\t\t\t\t\t\t\t? t('core', 'Loading more results …')\n\t\t\t\t\t\t\t: t('core', 'Load more results')\"\n\t\t\t\t\t\t:icon-class=\"loading[type] ? 'icon-loading-small' : ''\"\n\t\t\t\t\t\t@click.prevent=\"loadMore(type)\"\n\t\t\t\t\t\t@focus=\"setFocusedIndex\" />\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</template>\n\t</HeaderMenu>\n</template>\n\n<script>\nimport { emit } from '@nextcloud/event-bus'\nimport { minSearchLength, getTypes, search, defaultLimit, regexFilterIn, regexFilterNot } from '../services/UnifiedSearchService'\nimport { showError } from '@nextcloud/dialogs'\n\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport debounce from 'debounce'\nimport EmptyContent from '@nextcloud/vue/dist/Components/EmptyContent'\nimport Highlight from '@nextcloud/vue/dist/Components/Highlight'\nimport Magnify from 'vue-material-design-icons/Magnify'\n\nimport HeaderMenu from '../components/HeaderMenu'\nimport SearchResult from '../components/UnifiedSearch/SearchResult'\nimport SearchResultPlaceholders from '../components/UnifiedSearch/SearchResultPlaceholders'\n\nconst REQUEST_FAILED = 0\nconst REQUEST_OK = 1\nconst REQUEST_CANCELED = 2\n\nexport default {\n\tname: 'UnifiedSearch',\n\n\tcomponents: {\n\t\tActionButton,\n\t\tActions,\n\t\tEmptyContent,\n\t\tHeaderMenu,\n\t\tHighlight,\n\t\tMagnify,\n\t\tSearchResult,\n\t\tSearchResultPlaceholders,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\ttypes: [],\n\n\t\t\t// Cursors per types\n\t\t\tcursors: {},\n\t\t\t// Various search limits per types\n\t\t\tlimits: {},\n\t\t\t// Loading types\n\t\t\tloading: {},\n\t\t\t// Reached search types\n\t\t\treached: {},\n\t\t\t// Pending cancellable requests\n\t\t\trequests: [],\n\t\t\t// List of all results\n\t\t\tresults: {},\n\n\t\t\tquery: '',\n\t\t\tfocused: null,\n\n\t\t\tdefaultLimit,\n\t\t\tminSearchLength,\n\n\t\t\topen: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\ttypesIDs() {\n\t\t\treturn this.types.map(type => type.id)\n\t\t},\n\t\ttypesNames() {\n\t\t\treturn this.types.map(type => type.name)\n\t\t},\n\t\ttypesMap() {\n\t\t\treturn this.types.reduce((prev, curr) => {\n\t\t\t\tprev[curr.id] = curr.name\n\t\t\t\treturn prev\n\t\t\t}, {})\n\t\t},\n\n\t\tariaLabel() {\n\t\t\treturn t('core', 'Search')\n\t\t},\n\n\t\t/**\n\t\t * Is there any result to display\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasResults() {\n\t\t\treturn Object.keys(this.results).length !== 0\n\t\t},\n\n\t\t/**\n\t\t * Return ordered results\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\torderedResults() {\n\t\t\treturn this.typesIDs\n\t\t\t\t.filter(type => type in this.results)\n\t\t\t\t.map(type => ({\n\t\t\t\t\ttype,\n\t\t\t\t\tlist: this.results[type],\n\t\t\t\t}))\n\t\t},\n\n\t\t/**\n\t\t * Available filters\n\t\t * We only show filters that are available on the results\n\t\t *\n\t\t * @return {string[]}\n\t\t */\n\t\tavailableFilters() {\n\t\t\treturn Object.keys(this.results)\n\t\t},\n\n\t\t/**\n\t\t * Applied filters\n\t\t *\n\t\t * @return {string[]}\n\t\t */\n\t\tusedFiltersIn() {\n\t\t\tlet match\n\t\t\tconst filters = []\n\t\t\twhile ((match = regexFilterIn.exec(this.query)) !== null) {\n\t\t\t\tfilters.push(match[1])\n\t\t\t}\n\t\t\treturn filters\n\t\t},\n\n\t\t/**\n\t\t * Applied anti filters\n\t\t *\n\t\t * @return {string[]}\n\t\t */\n\t\tusedFiltersNot() {\n\t\t\tlet match\n\t\t\tconst filters = []\n\t\t\twhile ((match = regexFilterNot.exec(this.query)) !== null) {\n\t\t\t\tfilters.push(match[1])\n\t\t\t}\n\t\t\treturn filters\n\t\t},\n\n\t\t/**\n\t\t * Is the current search too short\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisShortQuery() {\n\t\t\treturn this.query && this.query.trim().length < minSearchLength\n\t\t},\n\n\t\t/**\n\t\t * Is the current search valid\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisValidQuery() {\n\t\t\treturn this.query && this.query.trim() !== '' && !this.isShortQuery\n\t\t},\n\n\t\t/**\n\t\t * Have we reached the end of all types searches\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisDoneSearching() {\n\t\t\treturn Object.values(this.reached).every(state => state === false)\n\t\t},\n\n\t\t/**\n\t\t * Is there any search in progress\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisLoading() {\n\t\t\treturn Object.values(this.loading).some(state => state === true)\n\t\t},\n\t},\n\n\tasync created() {\n\t\tthis.types = await getTypes()\n\t\tthis.logger.debug('Unified Search initialized with the following providers', this.types)\n\t},\n\n\tmounted() {\n\t\tdocument.addEventListener('keydown', (event) => {\n\t\t\t// if not already opened, allows us to trigger default browser on second keydown\n\t\t\tif (event.ctrlKey && event.key === 'f' && !this.open) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tthis.open = true\n\t\t\t\tthis.focusInput()\n\t\t\t}\n\n\t\t\t// https://www.w3.org/WAI/GL/wiki/Using_ARIA_menus\n\t\t\tif (this.open) {\n\t\t\t\t// If arrow down, focus next result\n\t\t\t\tif (event.key === 'ArrowDown') {\n\t\t\t\t\tthis.focusNext(event)\n\t\t\t\t}\n\n\t\t\t\t// If arrow up, focus prev result\n\t\t\t\tif (event.key === 'ArrowUp') {\n\t\t\t\t\tthis.focusPrev(event)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t},\n\n\tmethods: {\n\t\tasync onOpen() {\n\t\t\tthis.focusInput()\n\t\t\t// Update types list in the background\n\t\t\tthis.types = await getTypes()\n\t\t},\n\t\tonClose() {\n\t\t\temit('nextcloud:unified-search.close')\n\t\t},\n\n\t\t/**\n\t\t * Reset the search state\n\t\t */\n\t\tonReset() {\n\t\t\temit('nextcloud:unified-search.reset')\n\t\t\tthis.logger.debug('Search reset')\n\t\t\tthis.query = ''\n\t\t\tthis.resetState()\n\t\t\tthis.focusInput()\n\t\t},\n\t\tasync resetState() {\n\t\t\tthis.cursors = {}\n\t\t\tthis.limits = {}\n\t\t\tthis.reached = {}\n\t\t\tthis.results = {}\n\t\t\tthis.focused = null\n\t\t\tawait this.cancelPendingRequests()\n\t\t},\n\n\t\t/**\n\t\t * Cancel any ongoing searches\n\t\t */\n\t\tasync cancelPendingRequests() {\n\t\t\t// Cloning so we can keep processing other requests\n\t\t\tconst requests = this.requests.slice(0)\n\t\t\tthis.requests = []\n\n\t\t\t// Cancel all pending requests\n\t\t\tawait Promise.all(requests.map(cancel => cancel()))\n\t\t},\n\n\t\t/**\n\t\t * Focus the search input on next tick\n\t\t */\n\t\tfocusInput() {\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.$refs.input.focus()\n\t\t\t\tthis.$refs.input.select()\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * If we have results already, open first one\n\t\t * If not, trigger the search again\n\t\t */\n\t\tonInputEnter() {\n\t\t\tif (this.hasResults) {\n\t\t\t\tconst results = this.getResultsList()\n\t\t\t\tresults[0].click()\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.onInput()\n\t\t},\n\n\t\t/**\n\t\t * Start searching on input\n\t\t */\n\t\tasync onInput() {\n\t\t\t// emit the search query\n\t\t\temit('nextcloud:unified-search.search', { query: this.query })\n\n\t\t\t// Do not search if not long enough\n\t\t\tif (this.query.trim() === '' || this.isShortQuery) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tlet types = this.typesIDs\n\t\t\tlet query = this.query\n\n\t\t\t// Filter out types\n\t\t\tif (this.usedFiltersNot.length > 0) {\n\t\t\t\ttypes = this.typesIDs.filter(type => this.usedFiltersNot.indexOf(type) === -1)\n\t\t\t}\n\n\t\t\t// Only use those filters if any and check if they are valid\n\t\t\tif (this.usedFiltersIn.length > 0) {\n\t\t\t\ttypes = this.typesIDs.filter(type => this.usedFiltersIn.indexOf(type) > -1)\n\t\t\t}\n\n\t\t\t// Remove any filters from the query\n\t\t\tquery = query.replace(regexFilterIn, '').replace(regexFilterNot, '')\n\n\t\t\t// Reset search if the query changed\n\t\t\tawait this.resetState()\n\t\t\tthis.$set(this.loading, 'all', true)\n\t\t\tthis.logger.debug(`Searching ${query} in`, types)\n\n\t\t\tPromise.all(types.map(async type => {\n\t\t\t\ttry {\n\t\t\t\t\t// Init cancellable request\n\t\t\t\t\tconst { request, cancel } = search({ type, query })\n\t\t\t\t\tthis.requests.push(cancel)\n\n\t\t\t\t\t// Fetch results\n\t\t\t\t\tconst { data } = await request()\n\n\t\t\t\t\t// Process results\n\t\t\t\t\tif (data.ocs.data.entries.length > 0) {\n\t\t\t\t\t\tthis.$set(this.results, type, data.ocs.data.entries)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.$delete(this.results, type)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Save cursor if any\n\t\t\t\t\tif (data.ocs.data.cursor) {\n\t\t\t\t\t\tthis.$set(this.cursors, type, data.ocs.data.cursor)\n\t\t\t\t\t} else if (!data.ocs.data.isPaginated) {\n\t\t\t\t\t// If no cursor and no pagination, we save the default amount\n\t\t\t\t\t// provided by server's initial state `defaultLimit`\n\t\t\t\t\t\tthis.$set(this.limits, type, this.defaultLimit)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Check if we reached end of pagination\n\t\t\t\t\tif (data.ocs.data.entries.length < this.defaultLimit) {\n\t\t\t\t\t\tthis.$set(this.reached, type, true)\n\t\t\t\t\t}\n\n\t\t\t\t\t// If none already focused, focus the first rendered result\n\t\t\t\t\tif (this.focused === null) {\n\t\t\t\t\t\tthis.focused = 0\n\t\t\t\t\t}\n\t\t\t\t\treturn REQUEST_OK\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthis.$delete(this.results, type)\n\n\t\t\t\t\t// If this is not a cancelled throw\n\t\t\t\t\tif (error.response && error.response.status) {\n\t\t\t\t\t\tthis.logger.error(`Error searching for ${this.typesMap[type]}`, error)\n\t\t\t\t\t\tshowError(this.t('core', 'An error occurred while searching for {type}', { type: this.typesMap[type] }))\n\t\t\t\t\t\treturn REQUEST_FAILED\n\t\t\t\t\t}\n\t\t\t\t\treturn REQUEST_CANCELED\n\t\t\t\t}\n\t\t\t})).then(results => {\n\t\t\t\t// Do not declare loading finished if the request have been cancelled\n\t\t\t\t// This means another search was triggered and we're therefore still loading\n\t\t\t\tif (results.some(result => result === REQUEST_CANCELED)) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\t// We finished all searches\n\t\t\t\tthis.loading = {}\n\t\t\t})\n\t\t},\n\t\tonInputDebounced: debounce(function(e) {\n\t\t\tthis.onInput(e)\n\t\t}, 200),\n\n\t\t/**\n\t\t * Load more results for the provided type\n\t\t *\n\t\t * @param {string} type type\n\t\t */\n\t\tasync loadMore(type) {\n\t\t\t// If already loading, ignore\n\t\t\tif (this.loading[type]) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this.cursors[type]) {\n\t\t\t\t// Init cancellable request\n\t\t\t\tconst { request, cancel } = search({ type, query: this.query, cursor: this.cursors[type] })\n\t\t\t\tthis.requests.push(cancel)\n\n\t\t\t\t// Fetch results\n\t\t\t\tconst { data } = await request()\n\n\t\t\t\t// Save cursor if any\n\t\t\t\tif (data.ocs.data.cursor) {\n\t\t\t\t\tthis.$set(this.cursors, type, data.ocs.data.cursor)\n\t\t\t\t}\n\n\t\t\t\t// Process results\n\t\t\t\tif (data.ocs.data.entries.length > 0) {\n\t\t\t\t\tthis.results[type].push(...data.ocs.data.entries)\n\t\t\t\t}\n\n\t\t\t\t// Check if we reached end of pagination\n\t\t\t\tif (data.ocs.data.entries.length < this.defaultLimit) {\n\t\t\t\t\tthis.$set(this.reached, type, true)\n\t\t\t\t}\n\t\t\t} else\n\n\t\t\t// If no cursor, we might have all the results already,\n\t\t\t// let's fake pagination and show the next xxx entries\n\t\t\tif (this.limits[type] && this.limits[type] >= 0) {\n\t\t\t\tthis.limits[type] += this.defaultLimit\n\n\t\t\t\t// Check if we reached end of pagination\n\t\t\t\tif (this.limits[type] >= this.results[type].length) {\n\t\t\t\t\tthis.$set(this.reached, type, true)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Focus result after render\n\t\t\tif (this.focused !== null) {\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tthis.focusIndex(this.focused)\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Return a subset of the array if the search provider\n\t\t * doesn't supports pagination\n\t\t *\n\t\t * @param {Array} list the results\n\t\t * @param {string} type the type\n\t\t * @return {Array}\n\t\t */\n\t\tlimitIfAny(list, type) {\n\t\t\tif (type in this.limits) {\n\t\t\t\treturn list.slice(0, this.limits[type])\n\t\t\t}\n\t\t\treturn list\n\t\t},\n\n\t\tgetResultsList() {\n\t\t\treturn this.$el.querySelectorAll('.unified-search__results .unified-search__result')\n\t\t},\n\n\t\t/**\n\t\t * Focus the first result if any\n\t\t *\n\t\t * @param {Event} event the keydown event\n\t\t */\n\t\tfocusFirst(event) {\n\t\t\tconst results = this.getResultsList()\n\t\t\tif (results && results.length > 0) {\n\t\t\t\tif (event) {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t}\n\t\t\t\tthis.focused = 0\n\t\t\t\tthis.focusIndex(this.focused)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Focus the next result if any\n\t\t *\n\t\t * @param {Event} event the keydown event\n\t\t */\n\t\tfocusNext(event) {\n\t\t\tif (this.focused === null) {\n\t\t\t\tthis.focusFirst(event)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst results = this.getResultsList()\n\t\t\t// If we're not focusing the last, focus the next one\n\t\t\tif (results && results.length > 0 && this.focused + 1 < results.length) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tthis.focused++\n\t\t\t\tthis.focusIndex(this.focused)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Focus the previous result if any\n\t\t *\n\t\t * @param {Event} event the keydown event\n\t\t */\n\t\tfocusPrev(event) {\n\t\t\tif (this.focused === null) {\n\t\t\t\tthis.focusFirst(event)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst results = this.getResultsList()\n\t\t\t// If we're not focusing the first, focus the previous one\n\t\t\tif (results && results.length > 0 && this.focused > 0) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tthis.focused--\n\t\t\t\tthis.focusIndex(this.focused)\n\t\t\t}\n\n\t\t},\n\n\t\t/**\n\t\t * Focus the specified result index if it exists\n\t\t *\n\t\t * @param {number} index the result index\n\t\t */\n\t\tfocusIndex(index) {\n\t\t\tconst results = this.getResultsList()\n\t\t\tif (results && results[index]) {\n\t\t\t\tresults[index].focus()\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Set the current focused element based on the target\n\t\t *\n\t\t * @param {Event} event the focus event\n\t\t */\n\t\tsetFocusedIndex(event) {\n\t\t\tconst entry = event.target\n\t\t\tconst results = this.getResultsList()\n\t\t\tconst index = [...results].findIndex(search => search === entry)\n\t\t\tif (index > -1) {\n\t\t\t\t// let's not use focusIndex as the entry is already focused\n\t\t\t\tthis.focused = index\n\t\t\t}\n\t\t},\n\n\t\tonClickFilter(filter) {\n\t\t\tthis.query = `${this.query} ${filter}`\n\t\t\t\t.replace(/ {2}/g, ' ')\n\t\t\t\t.trim()\n\t\t\tthis.onInput()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@use \"sass:math\";\n\n$margin: 10px;\n$input-height: 34px;\n$input-padding: 6px;\n\n.unified-search {\n\t&__trigger {\n\t\twidth: 20px;\n\t\theight: 20px;\n\t}\n\n\t&__input-wrapper {\n\t\tposition: sticky;\n\t\t// above search results\n\t\tz-index: 2;\n\t\ttop: 0;\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\twidth: 100%;\n\t\tbackground-color: var(--color-main-background);\n\t}\n\n\t&__filters {\n\t\tmargin: math.div($margin, 2) $margin;\n\t\tul {\n\t\t\tdisplay: inline-flex;\n\t\t\tjustify-content: space-between;\n\t\t}\n\t}\n\n\t&__form {\n\t\tposition: relative;\n\t\twidth: 100%;\n\t\tmargin: $margin;\n\n\t\t// Loading spinner\n\t\t&::after {\n\t\t\tright: $input-padding;\n\t\t\tleft: auto;\n\t\t}\n\n\t\t&-input,\n\t\t&-reset {\n\t\t\tmargin: math.div($input-padding, 2);\n\t\t}\n\n\t\t&-input {\n\t\t\twidth: 100%;\n\t\t\theight: $input-height;\n\t\t\tpadding: $input-padding;\n\n\t\t\t&,\n\t\t\t&[placeholder],\n\t\t\t&::placeholder {\n\t\t\t\toverflow: hidden;\n\t\t\t\twhite-space: nowrap;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t}\n\n\t\t\t// Hide webkit clear search\n\t\t\t&::-webkit-search-decoration,\n\t\t\t&::-webkit-search-cancel-button,\n\t\t\t&::-webkit-search-results-button,\n\t\t\t&::-webkit-search-results-decoration {\n\t\t\t\t-webkit-appearance: none;\n\t\t\t}\n\n\t\t\t// Ellipsis earlier if reset button is here\n\t\t\t.icon-loading-small &,\n\t\t\t&--with-reset {\n\t\t\t\tpadding-right: $input-height;\n\t\t\t}\n\t\t}\n\n\t\t&-reset {\n\t\t\tposition: absolute;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\twidth: $input-height - $input-padding;\n\t\t\theight: $input-height - $input-padding;\n\t\t\tpadding: 0;\n\t\t\topacity: .5;\n\t\t\tborder: none;\n\t\t\tbackground-color: transparent;\n\t\t\tmargin-right: 0;\n\n\t\t\t&:hover,\n\t\t\t&:focus,\n\t\t\t&:active {\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__filters {\n\t\tmargin-right: math.div($margin, 2);\n\t}\n\n\t&__results {\n\t\t&::before {\n\t\t\tdisplay: block;\n\t\t\tmargin: $margin;\n\t\t\tmargin-left: $margin + $input-padding;\n\t\t\tcontent: attr(aria-label);\n\t\t\tcolor: var(--color-primary-element);\n\t\t}\n\t}\n\n\t.unified-search__result-more::v-deep {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t.empty-content {\n\t\tmargin: 10vh 0;\n\n\t\t::v-deep .empty-content__title {\n\t\t\tfont-weight: normal;\n font-size: var(--default-font-size);\n\t\t\tpadding: 0 15px;\n\t\t\ttext-align: center;\n\t\t}\n\t}\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!./UnifiedSearch.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!./UnifiedSearch.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!./UnifiedSearch.vue?vue&type=style&index=0&id=59134936&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!./UnifiedSearch.vue?vue&type=style&index=0&id=59134936&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UnifiedSearch.vue?vue&type=template&id=59134936&scoped=true&\"\nimport script from \"./UnifiedSearch.vue?vue&type=script&lang=js&\"\nexport * from \"./UnifiedSearch.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UnifiedSearch.vue?vue&type=style&index=0&id=59134936&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 \"59134936\",\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('HeaderMenu',{staticClass:\"unified-search\",attrs:{\"id\":\"unified-search\",\"exclude-click-outside-classes\":\"popover\",\"open\":_vm.open,\"aria-label\":_vm.ariaLabel},on:{\"update:open\":function($event){_vm.open=$event},\"open\":_vm.onOpen,\"close\":_vm.onClose},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('Magnify',{staticClass:\"unified-search__trigger\",attrs:{\"size\":20,\"fill-color\":\"var(--color-primary-text)\"}})]},proxy:true}])},[_vm._v(\" \"),_c('div',{staticClass:\"unified-search__input-wrapper\"},[_c('form',{staticClass:\"unified-search__form\",class:{'icon-loading-small': _vm.isLoading},attrs:{\"role\":\"search\"},on:{\"submit\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onInputEnter.apply(null, arguments)},\"reset\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onReset.apply(null, arguments)}}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.query),expression:\"query\"}],ref:\"input\",staticClass:\"unified-search__form-input\",class:{'unified-search__form-input--with-reset': !!_vm.query},attrs:{\"type\":\"search\",\"placeholder\":_vm.t('core', 'Search {types} …', { types: _vm.typesNames.join(', ') })},domProps:{\"value\":(_vm.query)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.query=$event.target.value},_vm.onInputDebounced],\"keypress\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }$event.preventDefault();$event.stopPropagation();return _vm.onInputEnter.apply(null, arguments)}}}),_vm._v(\" \"),(!!_vm.query && !_vm.isLoading)?_c('input',{staticClass:\"unified-search__form-reset icon-close\",attrs:{\"type\":\"reset\",\"aria-label\":_vm.t('core','Reset search'),\"value\":\"\"}}):_vm._e()]),_vm._v(\" \"),(_vm.availableFilters.length > 1)?_c('Actions',{staticClass:\"unified-search__filters\",attrs:{\"placement\":\"bottom\"}},_vm._l((_vm.availableFilters),function(type){return _c('ActionButton',{key:type,attrs:{\"icon\":\"icon-filter\",\"title\":_vm.t('core', 'Search for {name} only', { name: _vm.typesMap[type] })},on:{\"click\":function($event){return _vm.onClickFilter((\"in:\" + type))}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s((\"in:\" + type))+\"\\n\\t\\t\\t\")])}),1):_vm._e()],1),_vm._v(\" \"),(!_vm.hasResults)?[(_vm.isLoading)?_c('SearchResultPlaceholders'):(_vm.isValidQuery)?_c('EmptyContent',{attrs:{\"icon\":\"icon-search\"}},[_c('Highlight',{attrs:{\"text\":_vm.t('core', 'No results for {query}', { query: _vm.query }),\"search\":_vm.query}})],1):(!_vm.isLoading || _vm.isShortQuery)?_c('EmptyContent',{attrs:{\"icon\":\"icon-search\"},scopedSlots:_vm._u([(_vm.isShortQuery)?{key:\"desc\",fn:function(){return [_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.n('core',\n\t\t\t\t\t'Please enter {minSearchLength} character or more to search',\n\t\t\t\t\t'Please enter {minSearchLength} characters or more to search',\n\t\t\t\t\t_vm.minSearchLength,\n\t\t\t\t\t{minSearchLength: _vm.minSearchLength}))+\"\\n\\t\\t\\t\")]},proxy:true}:null],null,true)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Start typing to search'))+\"\\n\\t\\t\\t\")]):_vm._e()]:_vm._l((_vm.orderedResults),function(ref,typesIndex){\n\t\t\t\t\tvar list = ref.list;\n\t\t\t\t\tvar type = ref.type;\nreturn _c('ul',{key:type,staticClass:\"unified-search__results\",class:(\"unified-search__results-\" + type),attrs:{\"aria-label\":_vm.typesMap[type]}},[_vm._l((_vm.limitIfAny(list, type)),function(result,index){return _c('li',{key:result.resourceUrl},[_c('SearchResult',_vm._b({attrs:{\"query\":_vm.query,\"focused\":_vm.focused === 0 && typesIndex === 0 && index === 0},on:{\"focus\":_vm.setFocusedIndex}},'SearchResult',result,false))],1)}),_vm._v(\" \"),_c('li',[(!_vm.reached[type])?_c('SearchResult',{staticClass:\"unified-search__result-more\",attrs:{\"title\":_vm.loading[type]\n\t\t\t\t\t\t? _vm.t('core', 'Loading more results …')\n\t\t\t\t\t\t: _vm.t('core', 'Load more results'),\"icon-class\":_vm.loading[type] ? 'icon-loading-small' : ''},on:{\"click\":function($event){$event.preventDefault();return _vm.loadMore(type)},\"focus\":_vm.setFocusedIndex}}):_vm._e()],1)],2)})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\nimport { getRequestToken } from '@nextcloud/auth'\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\nimport Vue from 'vue'\n\nimport UnifiedSearch from './views/UnifiedSearch.vue'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nconst logger = getLoggerBuilder()\n\t.setApp('unified-search')\n\t.detectUser()\n\t.build()\n\nVue.mixin({\n\tdata() {\n\t\treturn {\n\t\t\tlogger,\n\t\t}\n\t},\n\tmethods: {\n\t\tt,\n\t\tn,\n\t},\n})\n\nexport default new Vue({\n\tel: '#unified-search',\n\t// eslint-disable-next-line vue/match-component-file-name\n\tname: 'UnifiedSearchRoot',\n\trender: h => h(UnifiedSearch),\n})\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, \".notifications:not(:empty)~#unified-search[data-v-51f09a15]{order:-1}.notifications:not(:empty)~#unified-search .header-menu__carret[data-v-51f09a15]{right:175px}.header-menu__trigger[data-v-51f09a15]{display:flex;align-items:center;justify-content:center;width:50px;height:100%;margin:0;padding:0;cursor:pointer;opacity:.6}.header-menu--opened .header-menu__trigger[data-v-51f09a15],.header-menu__trigger[data-v-51f09a15]:hover,.header-menu__trigger[data-v-51f09a15]:focus,.header-menu__trigger[data-v-51f09a15]:active{opacity:1}.header-menu__wrapper[data-v-51f09a15]{position:fixed;z-index:2000;top:50px;right:0;box-sizing:border-box;margin:0;border-radius:0 0 var(--border-radius) var(--border-radius);background-color:var(--color-main-background);filter:drop-shadow(0 1px 5px var(--color-box-shadow))}.header-menu__carret[data-v-51f09a15]{position:absolute;right:128px;bottom:100%;width:0;height:0;content:\\\" \\\";pointer-events:none;border:10px solid rgba(0,0,0,0);border-bottom-color:var(--color-main-background)}.header-menu__content[data-v-51f09a15]{overflow:auto;width:350px;max-width:100vw;min-height:66px;max-height:calc(100vh - 100px)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/HeaderMenu.vue\"],\"names\":[],\"mappings\":\"AAoKA,4DACC,QAAA,CACA,iFACC,WAAA,CAID,uCACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CACA,WAAA,CACA,QAAA,CACA,SAAA,CACA,cAAA,CACA,UAAA,CAGD,oMAIC,SAAA,CAGD,uCACC,cAAA,CACA,YAAA,CACA,QAAA,CACA,OAAA,CACA,qBAAA,CACA,QAAA,CACA,2DAAA,CACA,6CAAA,CAEA,qDAAA,CAGD,sCACC,iBAAA,CACA,WAAA,CACA,WAAA,CACA,OAAA,CACA,QAAA,CACA,WAAA,CACA,mBAAA,CACA,+BAAA,CACA,gDAAA,CAGD,uCACC,aAAA,CACA,WAAA,CACA,eAAA,CACA,eAAA,CACA,8BAAA\",\"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.notifications:not(:empty) ~ #unified-search {\\n\\torder: -1;\\n\\t.header-menu__carret {\\n\\t\\tright: 175px;\\n\\t}\\n}\\n.header-menu {\\n\\t&__trigger {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: center;\\n\\t\\twidth: 50px;\\n\\t\\theight: 100%;\\n\\t\\tmargin: 0;\\n\\t\\tpadding: 0;\\n\\t\\tcursor: pointer;\\n\\t\\topacity: .6;\\n\\t}\\n\\n\\t&--opened &__trigger,\\n\\t&__trigger:hover,\\n\\t&__trigger:focus,\\n\\t&__trigger:active {\\n\\t\\topacity: 1;\\n\\t}\\n\\n\\t&__wrapper {\\n\\t\\tposition: fixed;\\n\\t\\tz-index: 2000;\\n\\t\\ttop: 50px;\\n\\t\\tright: 0;\\n\\t\\tbox-sizing: border-box;\\n\\t\\tmargin: 0;\\n\\t\\tborder-radius: 0 0 var(--border-radius) var(--border-radius);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\n\\t\\tfilter: drop-shadow(0 1px 5px var(--color-box-shadow));\\n\\t}\\n\\n\\t&__carret {\\n\\t\\tposition: absolute;\\n\\t\\tright: 128px;\\n\\t\\tbottom: 100%;\\n\\t\\twidth: 0;\\n\\t\\theight: 0;\\n\\t\\tcontent: ' ';\\n\\t\\tpointer-events: none;\\n\\t\\tborder: 10px solid transparent;\\n\\t\\tborder-bottom-color: var(--color-main-background);\\n\\t}\\n\\n\\t&__content {\\n\\t\\toverflow: auto;\\n\\t\\twidth: 350px;\\n\\t\\tmax-width: 100vw;\\n\\t\\tmin-height: calc(44px * 1.5);\\n\\t\\tmax-height: calc(100vh - 50px * 2);\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".unified-search__result[data-v-9dc2a344]{display:flex;height:44px;padding:10px;border-bottom:1px solid var(--color-border)}.unified-search__result[data-v-9dc2a344]:last-child{border-bottom:none}.unified-search__result--focused[data-v-9dc2a344],.unified-search__result[data-v-9dc2a344]:active,.unified-search__result[data-v-9dc2a344]:hover,.unified-search__result[data-v-9dc2a344]:focus{background-color:var(--color-background-hover)}.unified-search__result *[data-v-9dc2a344]{cursor:pointer}.unified-search__result-icon[data-v-9dc2a344]{overflow:hidden;width:44px;height:44px;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center center;background-size:32px}.unified-search__result-icon--rounded[data-v-9dc2a344]{border-radius:22px}.unified-search__result-icon--no-preview[data-v-9dc2a344]{background-size:32px}.unified-search__result-icon--with-thumbnail[data-v-9dc2a344]{background-size:cover}.unified-search__result-icon--with-thumbnail[data-v-9dc2a344]:not(.unified-search__result-icon--rounded){max-width:42px;max-height:42px;border:1px solid var(--color-border)}.unified-search__result-icon img[data-v-9dc2a344]{width:100%;height:100%;object-fit:cover;object-position:center}.unified-search__result-icon[data-v-9dc2a344],.unified-search__result-actions[data-v-9dc2a344]{flex:0 0 44px}.unified-search__result-content[data-v-9dc2a344]{display:flex;align-items:center;flex:1 1 100%;flex-wrap:wrap;min-width:0;padding-left:10px}.unified-search__result-line-one[data-v-9dc2a344],.unified-search__result-line-two[data-v-9dc2a344]{overflow:hidden;flex:1 1 100%;margin:1px 0;white-space:nowrap;text-overflow:ellipsis;color:inherit;font-size:inherit}.unified-search__result-line-two[data-v-9dc2a344]{opacity:.7;font-size:var(--default-font-size)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/UnifiedSearch/SearchResult.vue\"],\"names\":[],\"mappings\":\"AA0KA,yCACC,YAAA,CACA,WALgB,CAMhB,YALQ,CAMR,2CAAA,CAGA,oDACC,kBAAA,CAGD,gMAIC,8CAAA,CAGD,2CACC,cAAA,CAGD,8CACC,eAAA,CACA,UA3Be,CA4Bf,WA5Be,CA6Bf,kCAAA,CACA,2BAAA,CACA,iCAAA,CACA,oBAAA,CACA,uDACC,kBAAA,CAED,0DACC,oBAAA,CAED,8DACC,qBAAA,CAED,yGAEC,cAAA,CACA,eAAA,CACA,oCAAA,CAGD,kDAEC,UAAA,CACA,WAAA,CAEA,gBAAA,CACA,sBAAA,CAIF,+FAEC,aAAA,CAGD,iDACC,YAAA,CACA,kBAAA,CACA,aAAA,CACA,cAAA,CAEA,WAAA,CACA,iBAtEO,CAyER,oGAEC,eAAA,CACA,aAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA,CAEA,aAAA,CACA,iBAAA,CAED,kDACC,UAAA,CACA,kCAAA\",\"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@use \\\"sass:math\\\";\\n\\n$clickable-area: 44px;\\n$margin: 10px;\\n\\n.unified-search__result {\\n\\tdisplay: flex;\\n\\theight: $clickable-area;\\n\\tpadding: $margin;\\n\\tborder-bottom: 1px solid var(--color-border);\\n\\n\\t// Load more entry,\\n\\t&:last-child {\\n\\t\\tborder-bottom: none;\\n\\t}\\n\\n\\t&--focused,\\n\\t&:active,\\n\\t&:hover,\\n\\t&:focus {\\n\\t\\tbackground-color: var(--color-background-hover);\\n\\t}\\n\\n\\t* {\\n\\t\\tcursor: pointer;\\n\\t}\\n\\n\\t&-icon {\\n\\t\\toverflow: hidden;\\n\\t\\twidth: $clickable-area;\\n\\t\\theight: $clickable-area;\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\tbackground-position: center center;\\n\\t\\tbackground-size: 32px;\\n\\t\\t&--rounded {\\n\\t\\t\\tborder-radius: math.div($clickable-area, 2);\\n\\t\\t}\\n\\t\\t&--no-preview {\\n\\t\\t\\tbackground-size: 32px;\\n\\t\\t}\\n\\t\\t&--with-thumbnail {\\n\\t\\t\\tbackground-size: cover;\\n\\t\\t}\\n\\t\\t&--with-thumbnail:not(&--rounded) {\\n\\t\\t\\t// compensate for border\\n\\t\\t\\tmax-width: $clickable-area - 2px;\\n\\t\\t\\tmax-height: $clickable-area - 2px;\\n\\t\\t\\tborder: 1px solid var(--color-border);\\n\\t\\t}\\n\\n\\t\\timg {\\n\\t\\t\\t// Make sure to keep ratio\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\theight: 100%;\\n\\n\\t\\t\\tobject-fit: cover;\\n\\t\\t\\tobject-position: center;\\n\\t\\t}\\n\\t}\\n\\n\\t&-icon,\\n\\t&-actions {\\n\\t\\tflex: 0 0 $clickable-area;\\n\\t}\\n\\n\\t&-content {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tflex: 1 1 100%;\\n\\t\\tflex-wrap: wrap;\\n\\t\\t// Set to minimum and gro from it\\n\\t\\tmin-width: 0;\\n\\t\\tpadding-left: $margin;\\n\\t}\\n\\n\\t&-line-one,\\n\\t&-line-two {\\n\\t\\toverflow: hidden;\\n\\t\\tflex: 1 1 100%;\\n\\t\\tmargin: 1px 0;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\t// Use the same color as the `a`\\n\\t\\tcolor: inherit;\\n\\t\\tfont-size: inherit;\\n\\t}\\n\\t&-line-two {\\n\\t\\topacity: .7;\\n\\t\\tfont-size: var(--default-font-size);\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".unified-search__result-placeholder-gradient[data-v-9ed03c40]{position:fixed;height:0;width:0;z-index:-1}.unified-search__result-placeholder[data-v-9ed03c40]{width:calc(100% - 2 * 10px);height:44px;margin:10px}.unified-search__result-placeholder-icon[data-v-9ed03c40]{width:44px;height:44px;rx:var(--border-radius);ry:var(--border-radius)}.unified-search__result-placeholder-line-one[data-v-9ed03c40],.unified-search__result-placeholder-line-two[data-v-9ed03c40]{width:calc(100% - 54px);height:1em;x:54px}.unified-search__result-placeholder-line-one[data-v-9ed03c40]{y:5px}.unified-search__result-placeholder-line-two[data-v-9ed03c40]{y:25px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/UnifiedSearch/SearchResultPlaceholders.vue\"],\"names\":[],\"mappings\":\"AA+DA,8DACC,cAAA,CACA,QAAA,CACA,OAAA,CACA,UAAA,CAGD,qDACC,2BAAA,CACA,WAZgB,CAahB,WAZQ,CAcR,0DACC,UAhBe,CAiBf,WAjBe,CAkBf,uBAAA,CACA,uBAAA,CAGD,4HAEC,uBAAA,CACA,UAAA,CACA,MAAA,CAGD,8DACC,KAAA,CAGD,8DACC,MAAA\",\"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$clickable-area: 44px;\\n$margin: 10px;\\n\\n.unified-search__result-placeholder-gradient {\\n\\tposition: fixed;\\n\\theight: 0;\\n\\twidth: 0;\\n\\tz-index: -1;\\n}\\n\\n.unified-search__result-placeholder {\\n\\twidth: calc(100% - 2 * #{$margin});\\n\\theight: $clickable-area;\\n\\tmargin: $margin;\\n\\n\\t&-icon {\\n\\t\\twidth: $clickable-area;\\n\\t\\theight: $clickable-area;\\n\\t\\trx: var(--border-radius);\\n\\t\\try: var(--border-radius);\\n\\t}\\n\\n\\t&-line-one,\\n\\t&-line-two {\\n\\t\\twidth: calc(100% - #{$margin + $clickable-area});\\n\\t\\theight: 1em;\\n\\t\\tx: $margin + $clickable-area;\\n\\t}\\n\\n\\t&-line-one {\\n\\t\\ty: 5px;\\n\\t}\\n\\n\\t&-line-two {\\n\\t\\ty: 25px;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".unified-search__trigger[data-v-59134936]{width:20px;height:20px}.unified-search__input-wrapper[data-v-59134936]{position:sticky;z-index:2;top:0;display:inline-flex;align-items:center;width:100%;background-color:var(--color-main-background)}.unified-search__filters[data-v-59134936]{margin:5px 10px}.unified-search__filters ul[data-v-59134936]{display:inline-flex;justify-content:space-between}.unified-search__form[data-v-59134936]{position:relative;width:100%;margin:10px}.unified-search__form[data-v-59134936]::after{right:6px;left:auto}.unified-search__form-input[data-v-59134936],.unified-search__form-reset[data-v-59134936]{margin:3px}.unified-search__form-input[data-v-59134936]{width:100%;height:34px;padding:6px}.unified-search__form-input[data-v-59134936],.unified-search__form-input[placeholder][data-v-59134936],.unified-search__form-input[data-v-59134936]::placeholder{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.unified-search__form-input[data-v-59134936]::-webkit-search-decoration,.unified-search__form-input[data-v-59134936]::-webkit-search-cancel-button,.unified-search__form-input[data-v-59134936]::-webkit-search-results-button,.unified-search__form-input[data-v-59134936]::-webkit-search-results-decoration{-webkit-appearance:none}.icon-loading-small .unified-search__form-input[data-v-59134936],.unified-search__form-input--with-reset[data-v-59134936]{padding-right:34px}.unified-search__form-reset[data-v-59134936]{position:absolute;top:0;right:0;width:28px;height:28px;padding:0;opacity:.5;border:none;background-color:rgba(0,0,0,0);margin-right:0}.unified-search__form-reset[data-v-59134936]:hover,.unified-search__form-reset[data-v-59134936]:focus,.unified-search__form-reset[data-v-59134936]:active{opacity:1}.unified-search__filters[data-v-59134936]{margin-right:5px}.unified-search__results[data-v-59134936]::before{display:block;margin:10px;margin-left:16px;content:attr(aria-label);color:var(--color-primary-element)}.unified-search .unified-search__result-more[data-v-59134936]{color:var(--color-text-maxcontrast)}.unified-search .empty-content[data-v-59134936]{margin:10vh 0}.unified-search .empty-content[data-v-59134936] .empty-content__title{font-weight:normal;font-size:var(--default-font-size);padding:0 15px;text-align:center}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/UnifiedSearch.vue\"],\"names\":[],\"mappings\":\"AAspBC,0CACC,UAAA,CACA,WAAA,CAGD,gDACC,eAAA,CAEA,SAAA,CACA,KAAA,CACA,mBAAA,CACA,kBAAA,CACA,UAAA,CACA,6CAAA,CAGD,0CACC,eAAA,CACA,6CACC,mBAAA,CACA,6BAAA,CAIF,uCACC,iBAAA,CACA,UAAA,CACA,WAhCO,CAmCP,8CACC,SAlCa,CAmCb,SAAA,CAGD,0FAEC,UAAA,CAGD,6CACC,UAAA,CACA,WA9CY,CA+CZ,WA9Ca,CAgDb,iKAGC,eAAA,CACA,kBAAA,CACA,sBAAA,CAID,+SAIC,uBAAA,CAID,0HAEC,kBApEW,CAwEb,6CACC,iBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CACA,WAAA,CACA,SAAA,CACA,UAAA,CACA,WAAA,CACA,8BAAA,CACA,cAAA,CAEA,0JAGC,SAAA,CAKH,0CACC,gBAAA,CAIA,kDACC,aAAA,CACA,WApGM,CAqGN,gBAAA,CACA,wBAAA,CACA,kCAAA,CAIF,8DACC,mCAAA,CAGD,gDACC,aAAA,CAEA,uEACC,kBAAA,CACS,kCAAA,CACT,cAAA,CACA,iBAAA\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n@use \\\"sass:math\\\";\\n\\n$margin: 10px;\\n$input-height: 34px;\\n$input-padding: 6px;\\n\\n.unified-search {\\n\\t&__trigger {\\n\\t\\twidth: 20px;\\n\\t\\theight: 20px;\\n\\t}\\n\\n\\t&__input-wrapper {\\n\\t\\tposition: sticky;\\n\\t\\t// above search results\\n\\t\\tz-index: 2;\\n\\t\\ttop: 0;\\n\\t\\tdisplay: inline-flex;\\n\\t\\talign-items: center;\\n\\t\\twidth: 100%;\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t}\\n\\n\\t&__filters {\\n\\t\\tmargin: math.div($margin, 2) $margin;\\n\\t\\tul {\\n\\t\\t\\tdisplay: inline-flex;\\n\\t\\t\\tjustify-content: space-between;\\n\\t\\t}\\n\\t}\\n\\n\\t&__form {\\n\\t\\tposition: relative;\\n\\t\\twidth: 100%;\\n\\t\\tmargin: $margin;\\n\\n\\t\\t// Loading spinner\\n\\t\\t&::after {\\n\\t\\t\\tright: $input-padding;\\n\\t\\t\\tleft: auto;\\n\\t\\t}\\n\\n\\t\\t&-input,\\n\\t\\t&-reset {\\n\\t\\t\\tmargin: math.div($input-padding, 2);\\n\\t\\t}\\n\\n\\t\\t&-input {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\theight: $input-height;\\n\\t\\t\\tpadding: $input-padding;\\n\\n\\t\\t\\t&,\\n\\t\\t\\t&[placeholder],\\n\\t\\t\\t&::placeholder {\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Hide webkit clear search\\n\\t\\t\\t&::-webkit-search-decoration,\\n\\t\\t\\t&::-webkit-search-cancel-button,\\n\\t\\t\\t&::-webkit-search-results-button,\\n\\t\\t\\t&::-webkit-search-results-decoration {\\n\\t\\t\\t\\t-webkit-appearance: none;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Ellipsis earlier if reset button is here\\n\\t\\t\\t.icon-loading-small &,\\n\\t\\t\\t&--with-reset {\\n\\t\\t\\t\\tpadding-right: $input-height;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&-reset {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tright: 0;\\n\\t\\t\\twidth: $input-height - $input-padding;\\n\\t\\t\\theight: $input-height - $input-padding;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\topacity: .5;\\n\\t\\t\\tborder: none;\\n\\t\\t\\tbackground-color: transparent;\\n\\t\\t\\tmargin-right: 0;\\n\\n\\t\\t\\t&:hover,\\n\\t\\t\\t&:focus,\\n\\t\\t\\t&:active {\\n\\t\\t\\t\\topacity: 1;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__filters {\\n\\t\\tmargin-right: math.div($margin, 2);\\n\\t}\\n\\n\\t&__results {\\n\\t\\t&::before {\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tmargin: $margin;\\n\\t\\t\\tmargin-left: $margin + $input-padding;\\n\\t\\t\\tcontent: attr(aria-label);\\n\\t\\t\\tcolor: var(--color-primary-element);\\n\\t\\t}\\n\\t}\\n\\n\\t.unified-search__result-more::v-deep {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t.empty-content {\\n\\t\\tmargin: 10vh 0;\\n\\n\\t\\t::v-deep .empty-content__title {\\n\\t\\t\\tfont-weight: normal;\\n font-size: var(--default-font-size);\\n\\t\\t\\tpadding: 0 15px;\\n\\t\\t\\ttext-align: center;\\n\\t\\t}\\n\\t}\\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 = 9671;","__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\t9671: 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__(91231); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","defaultLimit","loadState","regexFilterIn","regexFilterNot","getTypes","axios","generateOcsUrl","params","from","window","location","pathname","replace","search","data","ocs","Array","isArray","length","console","error","type","query","cursor","cancelToken","request","token","term","cancel","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","component","_vm","this","_h","$createElement","_c","_self","directives","name","rawName","value","expression","staticClass","class","opened","attrs","id","ariaLabel","on","$event","preventDefault","toggleMenu","apply","arguments","_t","_v","_obj","focused","resourceUrl","reEmitEvent","rounded","hasValidThumbnail","loaded","icon","isIconUrl","style","backgroundImage","thumbnailUrl","onError","onLoad","_e","title","subline","_s","light","dark","_l","placeholder","key","width","randWidth","open","onOpen","onClose","scopedSlots","_u","fn","proxy","isLoading","stopPropagation","onInputEnter","onReset","ref","t","types","typesNames","join","domProps","target","composing","onInputDebounced","indexOf","_k","keyCode","availableFilters","typesMap","onClickFilter","hasResults","typesIndex","list","limitIfAny","result","index","_b","setFocusedIndex","reached","loading","loadMore","isShortQuery","n","minSearchLength","__webpack_nonce__","btoa","getRequestToken","logger","getLoggerBuilder","setApp","detectUser","build","Vue","methods","el","render","h","UnifiedSearch","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","__webpack_modules__","call","m","amdD","Error","amdO","O","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","Object","keys","every","splice","r","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"core-unified-search.js?v=b1321989251fbdc89827","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/services/UnifiedSearchService.js","webpack:///nextcloud/core/src/components/HeaderMenu.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/HeaderMenu.vue","webpack://nextcloud/./core/src/components/HeaderMenu.vue?c3a1","webpack://nextcloud/./core/src/components/HeaderMenu.vue?30e1","webpack:///nextcloud/core/src/components/HeaderMenu.vue?vue&type=template&id=51f09a15&scoped=true&","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResult.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResult.vue","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchResult.vue?e389","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchResult.vue?32d3","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResult.vue?vue&type=template&id=9dc2a344&scoped=true&","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResultPlaceholders.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResultPlaceholders.vue","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchResultPlaceholders.vue?c1bc","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchResultPlaceholders.vue?7f72","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResultPlaceholders.vue?vue&type=template&id=9ed03c40&scoped=true&","webpack:///nextcloud/core/src/views/UnifiedSearch.vue","webpack:///nextcloud/core/src/views/UnifiedSearch.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/views/UnifiedSearch.vue?802c","webpack://nextcloud/./core/src/views/UnifiedSearch.vue?1990","webpack:///nextcloud/core/src/views/UnifiedSearch.vue?vue&type=template&id=59134936&scoped=true&","webpack:///nextcloud/core/src/unified-search.js","webpack:///nextcloud/core/src/components/HeaderMenu.vue?vue&type=style&index=0&id=51f09a15&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResult.vue?vue&type=style&index=0&id=9dc2a344&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResultPlaceholders.vue?vue&type=style&index=0&id=9ed03c40&lang=scss&scoped=true&","webpack:///nextcloud/core/src/views/UnifiedSearch.vue?vue&type=style&index=0&id=59134936&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/runtime/nonce","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 2020, John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport axios from '@nextcloud/axios'\n\nexport const defaultLimit = loadState('unified-search', 'limit-default')\nexport const minSearchLength = 2\nexport const regexFilterIn = /[^-]in:([a-z_-]+)/ig\nexport const regexFilterNot = /-in:([a-z_-]+)/ig\n\n/**\n * Create a cancel token\n *\n * @return {import('axios').CancelTokenSource}\n */\nconst createCancelToken = () => axios.CancelToken.source()\n\n/**\n * Get the list of available search providers\n *\n * @return {Promise<Array>}\n */\nexport async function getTypes() {\n\ttry {\n\t\tconst { data } = await axios.get(generateOcsUrl('search/providers'), {\n\t\t\tparams: {\n\t\t\t\t// Sending which location we're currently at\n\t\t\t\tfrom: window.location.pathname.replace('/index.php', '') + window.location.search,\n\t\t\t},\n\t\t})\n\t\tif ('ocs' in data && 'data' in data.ocs && Array.isArray(data.ocs.data) && data.ocs.data.length > 0) {\n\t\t\t// Providers are sorted by the api based on their order key\n\t\t\treturn data.ocs.data\n\t\t}\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n\treturn []\n}\n\n/**\n * Get the list of available search providers\n *\n * @param {object} options destructuring object\n * @param {string} options.type the type to search\n * @param {string} options.query the search\n * @param {number|string|undefined} options.cursor the offset for paginated searches\n * @return {object} {request: Promise, cancel: Promise}\n */\nexport function search({ type, query, cursor }) {\n\t/**\n\t * Generate an axios cancel token\n\t */\n\tconst cancelToken = createCancelToken()\n\n\tconst request = async () => axios.get(generateOcsUrl('search/providers/{type}/search', { type }), {\n\t\tcancelToken: cancelToken.token,\n\t\tparams: {\n\t\t\tterm: query,\n\t\t\tcursor,\n\t\t\t// Sending which location we're currently at\n\t\t\tfrom: window.location.pathname.replace('/index.php', '') + window.location.search,\n\t\t},\n\t})\n\n\treturn {\n\t\trequest,\n\t\tcancel: cancelToken.cancel,\n\t}\n}\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeaderMenu.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!./HeaderMenu.vue?vue&type=script&lang=js&\""," <!--\n - @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n<template>\n\t<div :id=\"id\"\n\t\tv-click-outside=\"clickOutsideConfig\"\n\t\t:class=\"{ 'header-menu--opened': opened }\"\n\t\tclass=\"header-menu\">\n\t\t<a class=\"header-menu__trigger\"\n\t\t\thref=\"#\"\n\t\t\t:aria-label=\"ariaLabel\"\n\t\t\t:aria-controls=\"`header-menu-${id}`\"\n\t\t\t:aria-expanded=\"opened\"\n\t\t\taria-haspopup=\"menu\"\n\t\t\t@click.prevent=\"toggleMenu\">\n\t\t\t<slot name=\"trigger\" />\n\t\t</a>\n\t\t<div v-show=\"opened\"\n\t\t\t:id=\"`header-menu-${id}`\"\n\t\t\tclass=\"header-menu__wrapper\"\n\t\t\trole=\"menu\">\n\t\t\t<div class=\"header-menu__carret\" />\n\t\t\t<div class=\"header-menu__content\">\n\t\t\t\t<slot />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { directive as ClickOutside } from 'v-click-outside'\nimport excludeClickOutsideClasses from '@nextcloud/vue/dist/Mixins/excludeClickOutsideClasses'\n\nexport default {\n\tname: 'HeaderMenu',\n\n\tdirectives: {\n\t\tClickOutside,\n\t},\n\n\tmixins: [\n\t\texcludeClickOutsideClasses,\n\t],\n\n\tprops: {\n\t\tid: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tariaLabel: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\topen: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\topened: this.open,\n\t\t\tclickOutsideConfig: {\n\t\t\t\thandler: this.closeMenu,\n\t\t\t\tmiddleware: this.clickOutsideMiddleware,\n\t\t\t},\n\t\t}\n\t},\n\n\twatch: {\n\t\topen(newVal) {\n\t\t\tthis.opened = newVal\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tif (this.opened) {\n\t\t\t\t\tthis.openMenu()\n\t\t\t\t} else {\n\t\t\t\t\tthis.closeMenu()\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t},\n\n\tmounted() {\n\t\tdocument.addEventListener('keydown', this.onKeyDown)\n\t},\n\tbeforeDestroy() {\n\t\tdocument.removeEventListener('keydown', this.onKeyDown)\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Toggle the current menu open state\n\t\t */\n\t\ttoggleMenu() {\n\t\t\t// Toggling current state\n\t\t\tif (!this.opened) {\n\t\t\t\tthis.openMenu()\n\t\t\t} else {\n\t\t\t\tthis.closeMenu()\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Close the current menu\n\t\t */\n\t\tcloseMenu() {\n\t\t\tif (!this.opened) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.opened = false\n\t\t\tthis.$emit('close')\n\t\t\tthis.$emit('update:open', false)\n\t\t},\n\n\t\t/**\n\t\t * Open the current menu\n\t\t */\n\t\topenMenu() {\n\t\t\tif (this.opened) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.opened = true\n\t\t\tthis.$emit('open')\n\t\t\tthis.$emit('update:open', true)\n\t\t},\n\n\t\tonKeyDown(event) {\n\t\t\t// If opened and escape pressed, close\n\t\t\tif (event.key === 'Escape' && this.opened) {\n\t\t\t\tevent.preventDefault()\n\n\t\t\t\t/** user cancelled the menu by pressing escape */\n\t\t\t\tthis.$emit('cancel')\n\n\t\t\t\t/** we do NOT fire a close event to differentiate cancel and close */\n\t\t\t\tthis.opened = false\n\t\t\t\tthis.$emit('update:open', false)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.notifications:not(:empty) ~ #unified-search {\n\torder: -1;\n\t.header-menu__carret {\n\t\tright: 175px;\n\t}\n}\n.header-menu {\n\t&__trigger {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\twidth: 50px;\n\t\theight: 100%;\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\tcursor: pointer;\n\t\topacity: .6;\n\t}\n\n\t&--opened &__trigger,\n\t&__trigger:hover,\n\t&__trigger:focus,\n\t&__trigger:active {\n\t\topacity: 1;\n\t}\n\n\t&__wrapper {\n\t\tposition: fixed;\n\t\tz-index: 2000;\n\t\ttop: 50px;\n\t\tright: 0;\n\t\tbox-sizing: border-box;\n\t\tmargin: 0;\n\t\tborder-radius: 0 0 var(--border-radius) var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\n\t\tfilter: drop-shadow(0 1px 5px var(--color-box-shadow));\n\t}\n\n\t&__carret {\n\t\tposition: absolute;\n\t\tright: 128px;\n\t\tbottom: 100%;\n\t\twidth: 0;\n\t\theight: 0;\n\t\tcontent: ' ';\n\t\tpointer-events: none;\n\t\tborder: 10px solid transparent;\n\t\tborder-bottom-color: var(--color-main-background);\n\t}\n\n\t&__content {\n\t\toverflow: auto;\n\t\twidth: 350px;\n\t\tmax-width: 100vw;\n\t\tmin-height: calc(44px * 1.5);\n\t\tmax-height: calc(100vh - 50px * 2);\n\t}\n}\n\n</style>\n","\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!./HeaderMenu.vue?vue&type=style&index=0&id=51f09a15&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!./HeaderMenu.vue?vue&type=style&index=0&id=51f09a15&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./HeaderMenu.vue?vue&type=template&id=51f09a15&scoped=true&\"\nimport script from \"./HeaderMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./HeaderMenu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./HeaderMenu.vue?vue&type=style&index=0&id=51f09a15&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 \"51f09a15\",\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',{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:(_vm.clickOutsideConfig),expression:\"clickOutsideConfig\"}],staticClass:\"header-menu\",class:{ 'header-menu--opened': _vm.opened },attrs:{\"id\":_vm.id}},[_c('a',{staticClass:\"header-menu__trigger\",attrs:{\"href\":\"#\",\"aria-label\":_vm.ariaLabel,\"aria-controls\":(\"header-menu-\" + _vm.id),\"aria-expanded\":_vm.opened,\"aria-haspopup\":\"menu\"},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleMenu.apply(null, arguments)}}},[_vm._t(\"trigger\")],2),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.opened),expression:\"opened\"}],staticClass:\"header-menu__wrapper\",attrs:{\"id\":(\"header-menu-\" + _vm.id),\"role\":\"menu\"}},[_c('div',{staticClass:\"header-menu__carret\"}),_vm._v(\" \"),_c('div',{staticClass:\"header-menu__content\"},[_vm._t(\"default\")],2)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchResult.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!./SearchResult.vue?vue&type=script&lang=js&\""," <!--\n - @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n<template>\n\t<a :href=\"resourceUrl || '#'\"\n\t\tclass=\"unified-search__result\"\n\t\t:class=\"{\n\t\t\t'unified-search__result--focused': focused,\n\t\t}\"\n\t\t@click=\"reEmitEvent\"\n\t\t@focus=\"reEmitEvent\">\n\n\t\t<!-- Icon describing the result -->\n\t\t<div class=\"unified-search__result-icon\"\n\t\t\t:class=\"{\n\t\t\t\t'unified-search__result-icon--rounded': rounded,\n\t\t\t\t'unified-search__result-icon--no-preview': !hasValidThumbnail && !loaded,\n\t\t\t\t'unified-search__result-icon--with-thumbnail': hasValidThumbnail && loaded,\n\t\t\t\t[icon]: !loaded && !isIconUrl,\n\t\t\t}\"\n\t\t\t:style=\"{\n\t\t\t\tbackgroundImage: isIconUrl ? `url(${icon})` : '',\n\t\t\t}\"\n\t\t\trole=\"img\">\n\n\t\t\t<img v-if=\"hasValidThumbnail\"\n\t\t\t\tv-show=\"loaded\"\n\t\t\t\t:src=\"thumbnailUrl\"\n\t\t\t\talt=\"\"\n\t\t\t\t@error=\"onError\"\n\t\t\t\t@load=\"onLoad\">\n\t\t</div>\n\n\t\t<!-- Title and sub-title -->\n\t\t<span class=\"unified-search__result-content\">\n\t\t\t<h3 class=\"unified-search__result-line-one\" :title=\"title\">\n\t\t\t\t<Highlight :text=\"title\" :search=\"query\" />\n\t\t\t</h3>\n\t\t\t<h4 v-if=\"subline\" class=\"unified-search__result-line-two\" :title=\"subline\">{{ subline }}</h4>\n\t\t</span>\n\t</a>\n</template>\n\n<script>\nimport Highlight from '@nextcloud/vue/dist/Components/Highlight'\n\nexport default {\n\tname: 'SearchResult',\n\n\tcomponents: {\n\t\tHighlight,\n\t},\n\n\tprops: {\n\t\tthumbnailUrl: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsubline: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tresourceUrl: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\trounded: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tquery: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * Only used for the first result as a visual feedback\n\t\t * so we can keep the search input focused but pressing\n\t\t * enter still opens the first result\n\t\t */\n\t\tfocused: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\thasValidThumbnail: this.thumbnailUrl && this.thumbnailUrl.trim() !== '',\n\t\t\tloaded: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisIconUrl() {\n\t\t\t// If we're facing an absolute url\n\t\t\tif (this.icon.startsWith('/')) {\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\t// Otherwise, let's check if this is a valid url\n\t\t\ttry {\n\t\t\t\t// eslint-disable-next-line no-new\n\t\t\t\tnew URL(this.icon)\n\t\t\t} catch {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\t},\n\n\twatch: {\n\t\t// Make sure to reset state on change even when vue recycle the component\n\t\tthumbnailUrl() {\n\t\t\tthis.hasValidThumbnail = this.thumbnailUrl && this.thumbnailUrl.trim() !== ''\n\t\t\tthis.loaded = false\n\t\t},\n\t},\n\n\tmethods: {\n\t\treEmitEvent(e) {\n\t\t\tthis.$emit(e.type, e)\n\t\t},\n\n\t\t/**\n\t\t * If the image fails to load, fallback to iconClass\n\t\t */\n\t\tonError() {\n\t\t\tthis.hasValidThumbnail = false\n\t\t},\n\n\t\tonLoad() {\n\t\t\tthis.loaded = true\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@use \"sass:math\";\n\n$clickable-area: 44px;\n$margin: 10px;\n\n.unified-search__result {\n\tdisplay: flex;\n\theight: $clickable-area;\n\tpadding: $margin;\n\tborder-bottom: 1px solid var(--color-border);\n\n\t// Load more entry,\n\t&:last-child {\n\t\tborder-bottom: none;\n\t}\n\n\t&--focused,\n\t&:active,\n\t&:hover,\n\t&:focus {\n\t\tbackground-color: var(--color-background-hover);\n\t}\n\n\t* {\n\t\tcursor: pointer;\n\t}\n\n\t&-icon {\n\t\toverflow: hidden;\n\t\twidth: $clickable-area;\n\t\theight: $clickable-area;\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center center;\n\t\tbackground-size: 32px;\n\t\t&--rounded {\n\t\t\tborder-radius: math.div($clickable-area, 2);\n\t\t}\n\t\t&--no-preview {\n\t\t\tbackground-size: 32px;\n\t\t}\n\t\t&--with-thumbnail {\n\t\t\tbackground-size: cover;\n\t\t}\n\t\t&--with-thumbnail:not(&--rounded) {\n\t\t\t// compensate for border\n\t\t\tmax-width: $clickable-area - 2px;\n\t\t\tmax-height: $clickable-area - 2px;\n\t\t\tborder: 1px solid var(--color-border);\n\t\t}\n\n\t\timg {\n\t\t\t// Make sure to keep ratio\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\n\t\t\tobject-fit: cover;\n\t\t\tobject-position: center;\n\t\t}\n\t}\n\n\t&-icon,\n\t&-actions {\n\t\tflex: 0 0 $clickable-area;\n\t}\n\n\t&-content {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tflex: 1 1 100%;\n\t\tflex-wrap: wrap;\n\t\t// Set to minimum and gro from it\n\t\tmin-width: 0;\n\t\tpadding-left: $margin;\n\t}\n\n\t&-line-one,\n\t&-line-two {\n\t\toverflow: hidden;\n\t\tflex: 1 1 100%;\n\t\tmargin: 1px 0;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\t// Use the same color as the `a`\n\t\tcolor: inherit;\n\t\tfont-size: inherit;\n\t}\n\t&-line-two {\n\t\topacity: .7;\n\t\tfont-size: var(--default-font-size);\n\t}\n}\n\n</style>\n","\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!./SearchResult.vue?vue&type=style&index=0&id=9dc2a344&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!./SearchResult.vue?vue&type=style&index=0&id=9dc2a344&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SearchResult.vue?vue&type=template&id=9dc2a344&scoped=true&\"\nimport script from \"./SearchResult.vue?vue&type=script&lang=js&\"\nexport * from \"./SearchResult.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SearchResult.vue?vue&type=style&index=0&id=9dc2a344&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 \"9dc2a344\",\n null\n \n)\n\nexport default component.exports","var render = function () {\nvar _obj;\nvar _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{staticClass:\"unified-search__result\",class:{\n\t\t'unified-search__result--focused': _vm.focused,\n\t},attrs:{\"href\":_vm.resourceUrl || '#'},on:{\"click\":_vm.reEmitEvent,\"focus\":_vm.reEmitEvent}},[_c('div',{staticClass:\"unified-search__result-icon\",class:( _obj = {\n\t\t\t'unified-search__result-icon--rounded': _vm.rounded,\n\t\t\t'unified-search__result-icon--no-preview': !_vm.hasValidThumbnail && !_vm.loaded,\n\t\t\t'unified-search__result-icon--with-thumbnail': _vm.hasValidThumbnail && _vm.loaded\n\t\t}, _obj[_vm.icon] = !_vm.loaded && !_vm.isIconUrl, _obj ),style:({\n\t\t\tbackgroundImage: _vm.isIconUrl ? (\"url(\" + _vm.icon + \")\") : '',\n\t\t}),attrs:{\"role\":\"img\"}},[(_vm.hasValidThumbnail)?_c('img',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.loaded),expression:\"loaded\"}],attrs:{\"src\":_vm.thumbnailUrl,\"alt\":\"\"},on:{\"error\":_vm.onError,\"load\":_vm.onLoad}}):_vm._e()]),_vm._v(\" \"),_c('span',{staticClass:\"unified-search__result-content\"},[_c('h3',{staticClass:\"unified-search__result-line-one\",attrs:{\"title\":_vm.title}},[_c('Highlight',{attrs:{\"text\":_vm.title,\"search\":_vm.query}})],1),_vm._v(\" \"),(_vm.subline)?_c('h4',{staticClass:\"unified-search__result-line-two\",attrs:{\"title\":_vm.subline}},[_vm._v(_vm._s(_vm.subline))]):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchResultPlaceholders.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!./SearchResultPlaceholders.vue?vue&type=script&lang=js&\"","<template>\n\t<ul>\n\t\t<!-- Placeholder animation -->\n\t\t<svg class=\"unified-search__result-placeholder-gradient\">\n\t\t\t<defs>\n\t\t\t\t<linearGradient id=\"unified-search__result-placeholder-gradient\">\n\t\t\t\t\t<stop offset=\"0%\" :stop-color=\"light\">\n\t\t\t\t\t\t<animate attributeName=\"stop-color\"\n\t\t\t\t\t\t\t:values=\"`${light}; ${light}; ${dark}; ${dark}; ${light}`\"\n\t\t\t\t\t\t\tdur=\"2s\"\n\t\t\t\t\t\t\trepeatCount=\"indefinite\" />\n\t\t\t\t\t</stop>\n\t\t\t\t\t<stop offset=\"100%\" :stop-color=\"dark\">\n\t\t\t\t\t\t<animate attributeName=\"stop-color\"\n\t\t\t\t\t\t\t:values=\"`${dark}; ${light}; ${light}; ${dark}; ${dark}`\"\n\t\t\t\t\t\t\tdur=\"2s\"\n\t\t\t\t\t\t\trepeatCount=\"indefinite\" />\n\t\t\t\t\t</stop>\n\t\t\t\t</linearGradient>\n\t\t\t</defs>\n\t\t</svg>\n\n\t\t<!-- Placeholders -->\n\t\t<li v-for=\"placeholder in [1, 2, 3]\" :key=\"placeholder\">\n\t\t\t<svg class=\"unified-search__result-placeholder\"\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tfill=\"url(#unified-search__result-placeholder-gradient)\">\n\t\t\t\t<rect class=\"unified-search__result-placeholder-icon\" />\n\t\t\t\t<rect class=\"unified-search__result-placeholder-line-one\" />\n\t\t\t\t<rect class=\"unified-search__result-placeholder-line-two\" :style=\"{width: `calc(${randWidth()}%)`}\" />\n\t\t\t</svg>\n\t\t</li>\n\t</ul>\n</template>\n\n<script>\nexport default {\n\tname: 'SearchResultPlaceholders',\n\n\tdata() {\n\t\treturn {\n\t\t\tlight: null,\n\t\t\tdark: null,\n\t\t}\n\t},\n\tmounted() {\n\t\tconst styles = getComputedStyle(document.documentElement)\n\t\tthis.dark = styles.getPropertyValue('--color-placeholder-dark')\n\t\tthis.light = styles.getPropertyValue('--color-placeholder-light')\n\t},\n\n\tmethods: {\n\t\trandWidth() {\n\t\t\treturn Math.floor(Math.random() * 20) + 30\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n$clickable-area: 44px;\n$margin: 10px;\n\n.unified-search__result-placeholder-gradient {\n\tposition: fixed;\n\theight: 0;\n\twidth: 0;\n\tz-index: -1;\n}\n\n.unified-search__result-placeholder {\n\twidth: calc(100% - 2 * #{$margin});\n\theight: $clickable-area;\n\tmargin: $margin;\n\n\t&-icon {\n\t\twidth: $clickable-area;\n\t\theight: $clickable-area;\n\t\trx: var(--border-radius);\n\t\try: var(--border-radius);\n\t}\n\n\t&-line-one,\n\t&-line-two {\n\t\twidth: calc(100% - #{$margin + $clickable-area});\n\t\theight: 1em;\n\t\tx: $margin + $clickable-area;\n\t}\n\n\t&-line-one {\n\t\ty: 5px;\n\t}\n\n\t&-line-two {\n\t\ty: 25px;\n\t}\n}\n\n</style>\n","\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!./SearchResultPlaceholders.vue?vue&type=style&index=0&id=9ed03c40&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!./SearchResultPlaceholders.vue?vue&type=style&index=0&id=9ed03c40&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SearchResultPlaceholders.vue?vue&type=template&id=9ed03c40&scoped=true&\"\nimport script from \"./SearchResultPlaceholders.vue?vue&type=script&lang=js&\"\nexport * from \"./SearchResultPlaceholders.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SearchResultPlaceholders.vue?vue&type=style&index=0&id=9ed03c40&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 \"9ed03c40\",\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('ul',[_c('svg',{staticClass:\"unified-search__result-placeholder-gradient\"},[_c('defs',[_c('linearGradient',{attrs:{\"id\":\"unified-search__result-placeholder-gradient\"}},[_c('stop',{attrs:{\"offset\":\"0%\",\"stop-color\":_vm.light}},[_c('animate',{attrs:{\"attributeName\":\"stop-color\",\"values\":(_vm.light + \"; \" + _vm.light + \"; \" + _vm.dark + \"; \" + _vm.dark + \"; \" + _vm.light),\"dur\":\"2s\",\"repeatCount\":\"indefinite\"}})]),_vm._v(\" \"),_c('stop',{attrs:{\"offset\":\"100%\",\"stop-color\":_vm.dark}},[_c('animate',{attrs:{\"attributeName\":\"stop-color\",\"values\":(_vm.dark + \"; \" + _vm.light + \"; \" + _vm.light + \"; \" + _vm.dark + \"; \" + _vm.dark),\"dur\":\"2s\",\"repeatCount\":\"indefinite\"}})])],1)],1)]),_vm._v(\" \"),_vm._l(([1, 2, 3]),function(placeholder){return _c('li',{key:placeholder},[_c('svg',{staticClass:\"unified-search__result-placeholder\",attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"fill\":\"url(#unified-search__result-placeholder-gradient)\"}},[_c('rect',{staticClass:\"unified-search__result-placeholder-icon\"}),_vm._v(\" \"),_c('rect',{staticClass:\"unified-search__result-placeholder-line-one\"}),_vm._v(\" \"),_c('rect',{staticClass:\"unified-search__result-placeholder-line-two\",style:({width: (\"calc(\" + (_vm.randWidth()) + \"%)\")})})])])})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }"," <!--\n - @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n<template>\n\t<HeaderMenu id=\"unified-search\"\n\t\tclass=\"unified-search\"\n\t\texclude-click-outside-classes=\"popover\"\n\t\t:open.sync=\"open\"\n\t\t:aria-label=\"ariaLabel\"\n\t\t@open=\"onOpen\"\n\t\t@close=\"onClose\">\n\t\t<!-- Header icon -->\n\t\t<template #trigger>\n\t\t\t<Magnify class=\"unified-search__trigger\"\n\t\t\t\t:size=\"20\"\n\t\t\t\tfill-color=\"var(--color-primary-text)\" />\n\t\t</template>\n\n\t\t<!-- Search form & filters wrapper -->\n\t\t<div class=\"unified-search__input-wrapper\">\n\t\t\t<form class=\"unified-search__form\"\n\t\t\t\trole=\"search\"\n\t\t\t\t:class=\"{'icon-loading-small': isLoading}\"\n\t\t\t\t@submit.prevent.stop=\"onInputEnter\"\n\t\t\t\t@reset.prevent.stop=\"onReset\">\n\t\t\t\t<!-- Search input -->\n\t\t\t\t<input ref=\"input\"\n\t\t\t\t\tv-model=\"query\"\n\t\t\t\t\tclass=\"unified-search__form-input\"\n\t\t\t\t\ttype=\"search\"\n\t\t\t\t\t:class=\"{'unified-search__form-input--with-reset': !!query}\"\n\t\t\t\t\t:placeholder=\"t('core', 'Search {types} …', { types: typesNames.join(', ') })\"\n\t\t\t\t\t@input=\"onInputDebounced\"\n\t\t\t\t\t@keypress.enter.prevent.stop=\"onInputEnter\">\n\n\t\t\t\t<!-- Reset search button -->\n\t\t\t\t<input v-if=\"!!query && !isLoading\"\n\t\t\t\t\ttype=\"reset\"\n\t\t\t\t\tclass=\"unified-search__form-reset icon-close\"\n\t\t\t\t\t:aria-label=\"t('core','Reset search')\"\n\t\t\t\t\tvalue=\"\">\n\t\t\t</form>\n\n\t\t\t<!-- Search filters -->\n\t\t\t<Actions v-if=\"availableFilters.length > 1\" class=\"unified-search__filters\" placement=\"bottom\">\n\t\t\t\t<ActionButton v-for=\"type in availableFilters\"\n\t\t\t\t\t:key=\"type\"\n\t\t\t\t\ticon=\"icon-filter\"\n\t\t\t\t\t:title=\"t('core', 'Search for {name} only', { name: typesMap[type] })\"\n\t\t\t\t\t@click=\"onClickFilter(`in:${type}`)\">\n\t\t\t\t\t{{ `in:${type}` }}\n\t\t\t\t</ActionButton>\n\t\t\t</Actions>\n\t\t</div>\n\n\t\t<template v-if=\"!hasResults\">\n\t\t\t<!-- Loading placeholders -->\n\t\t\t<SearchResultPlaceholders v-if=\"isLoading\" />\n\n\t\t\t<EmptyContent v-else-if=\"isValidQuery\" icon=\"icon-search\">\n\t\t\t\t<Highlight :text=\"t('core', 'No results for {query}', { query })\" :search=\"query\" />\n\t\t\t</EmptyContent>\n\n\t\t\t<EmptyContent v-else-if=\"!isLoading || isShortQuery\" icon=\"icon-search\">\n\t\t\t\t{{ t('core', 'Start typing to search') }}\n\t\t\t\t<template v-if=\"isShortQuery\" #desc>\n\t\t\t\t\t{{ n('core',\n\t\t\t\t\t\t'Please enter {minSearchLength} character or more to search',\n\t\t\t\t\t\t'Please enter {minSearchLength} characters or more to search',\n\t\t\t\t\t\tminSearchLength,\n\t\t\t\t\t\t{minSearchLength}) }}\n\t\t\t\t</template>\n\t\t\t</EmptyContent>\n\t\t</template>\n\n\t\t<!-- Grouped search results -->\n\t\t<template v-else>\n\t\t\t<ul v-for=\"({list, type}, typesIndex) in orderedResults\"\n\t\t\t\t:key=\"type\"\n\t\t\t\tclass=\"unified-search__results\"\n\t\t\t\t:class=\"`unified-search__results-${type}`\"\n\t\t\t\t:aria-label=\"typesMap[type]\">\n\t\t\t\t<!-- Search results -->\n\t\t\t\t<li v-for=\"(result, index) in limitIfAny(list, type)\" :key=\"result.resourceUrl\">\n\t\t\t\t\t<SearchResult v-bind=\"result\"\n\t\t\t\t\t\t:query=\"query\"\n\t\t\t\t\t\t:focused=\"focused === 0 && typesIndex === 0 && index === 0\"\n\t\t\t\t\t\t@focus=\"setFocusedIndex\" />\n\t\t\t\t</li>\n\n\t\t\t\t<!-- Load more button -->\n\t\t\t\t<li>\n\t\t\t\t\t<SearchResult v-if=\"!reached[type]\"\n\t\t\t\t\t\tclass=\"unified-search__result-more\"\n\t\t\t\t\t\t:title=\"loading[type]\n\t\t\t\t\t\t\t? t('core', 'Loading more results …')\n\t\t\t\t\t\t\t: t('core', 'Load more results')\"\n\t\t\t\t\t\t:icon-class=\"loading[type] ? 'icon-loading-small' : ''\"\n\t\t\t\t\t\t@click.prevent=\"loadMore(type)\"\n\t\t\t\t\t\t@focus=\"setFocusedIndex\" />\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</template>\n\t</HeaderMenu>\n</template>\n\n<script>\nimport { emit } from '@nextcloud/event-bus'\nimport { minSearchLength, getTypes, search, defaultLimit, regexFilterIn, regexFilterNot } from '../services/UnifiedSearchService'\nimport { showError } from '@nextcloud/dialogs'\n\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport debounce from 'debounce'\nimport EmptyContent from '@nextcloud/vue/dist/Components/EmptyContent'\nimport Highlight from '@nextcloud/vue/dist/Components/Highlight'\nimport Magnify from 'vue-material-design-icons/Magnify'\n\nimport HeaderMenu from '../components/HeaderMenu'\nimport SearchResult from '../components/UnifiedSearch/SearchResult'\nimport SearchResultPlaceholders from '../components/UnifiedSearch/SearchResultPlaceholders'\n\nconst REQUEST_FAILED = 0\nconst REQUEST_OK = 1\nconst REQUEST_CANCELED = 2\n\nexport default {\n\tname: 'UnifiedSearch',\n\n\tcomponents: {\n\t\tActionButton,\n\t\tActions,\n\t\tEmptyContent,\n\t\tHeaderMenu,\n\t\tHighlight,\n\t\tMagnify,\n\t\tSearchResult,\n\t\tSearchResultPlaceholders,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\ttypes: [],\n\n\t\t\t// Cursors per types\n\t\t\tcursors: {},\n\t\t\t// Various search limits per types\n\t\t\tlimits: {},\n\t\t\t// Loading types\n\t\t\tloading: {},\n\t\t\t// Reached search types\n\t\t\treached: {},\n\t\t\t// Pending cancellable requests\n\t\t\trequests: [],\n\t\t\t// List of all results\n\t\t\tresults: {},\n\n\t\t\tquery: '',\n\t\t\tfocused: null,\n\n\t\t\tdefaultLimit,\n\t\t\tminSearchLength,\n\n\t\t\topen: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\ttypesIDs() {\n\t\t\treturn this.types.map(type => type.id)\n\t\t},\n\t\ttypesNames() {\n\t\t\treturn this.types.map(type => type.name)\n\t\t},\n\t\ttypesMap() {\n\t\t\treturn this.types.reduce((prev, curr) => {\n\t\t\t\tprev[curr.id] = curr.name\n\t\t\t\treturn prev\n\t\t\t}, {})\n\t\t},\n\n\t\tariaLabel() {\n\t\t\treturn t('core', 'Search')\n\t\t},\n\n\t\t/**\n\t\t * Is there any result to display\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasResults() {\n\t\t\treturn Object.keys(this.results).length !== 0\n\t\t},\n\n\t\t/**\n\t\t * Return ordered results\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\torderedResults() {\n\t\t\treturn this.typesIDs\n\t\t\t\t.filter(type => type in this.results)\n\t\t\t\t.map(type => ({\n\t\t\t\t\ttype,\n\t\t\t\t\tlist: this.results[type],\n\t\t\t\t}))\n\t\t},\n\n\t\t/**\n\t\t * Available filters\n\t\t * We only show filters that are available on the results\n\t\t *\n\t\t * @return {string[]}\n\t\t */\n\t\tavailableFilters() {\n\t\t\treturn Object.keys(this.results)\n\t\t},\n\n\t\t/**\n\t\t * Applied filters\n\t\t *\n\t\t * @return {string[]}\n\t\t */\n\t\tusedFiltersIn() {\n\t\t\tlet match\n\t\t\tconst filters = []\n\t\t\twhile ((match = regexFilterIn.exec(this.query)) !== null) {\n\t\t\t\tfilters.push(match[1])\n\t\t\t}\n\t\t\treturn filters\n\t\t},\n\n\t\t/**\n\t\t * Applied anti filters\n\t\t *\n\t\t * @return {string[]}\n\t\t */\n\t\tusedFiltersNot() {\n\t\t\tlet match\n\t\t\tconst filters = []\n\t\t\twhile ((match = regexFilterNot.exec(this.query)) !== null) {\n\t\t\t\tfilters.push(match[1])\n\t\t\t}\n\t\t\treturn filters\n\t\t},\n\n\t\t/**\n\t\t * Is the current search too short\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisShortQuery() {\n\t\t\treturn this.query && this.query.trim().length < minSearchLength\n\t\t},\n\n\t\t/**\n\t\t * Is the current search valid\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisValidQuery() {\n\t\t\treturn this.query && this.query.trim() !== '' && !this.isShortQuery\n\t\t},\n\n\t\t/**\n\t\t * Have we reached the end of all types searches\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisDoneSearching() {\n\t\t\treturn Object.values(this.reached).every(state => state === false)\n\t\t},\n\n\t\t/**\n\t\t * Is there any search in progress\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisLoading() {\n\t\t\treturn Object.values(this.loading).some(state => state === true)\n\t\t},\n\t},\n\n\tasync created() {\n\t\tthis.types = await getTypes()\n\t\tthis.logger.debug('Unified Search initialized with the following providers', this.types)\n\t},\n\n\tmounted() {\n\t\tdocument.addEventListener('keydown', (event) => {\n\t\t\t// if not already opened, allows us to trigger default browser on second keydown\n\t\t\tif (event.ctrlKey && event.key === 'f' && !this.open) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tthis.open = true\n\t\t\t\tthis.focusInput()\n\t\t\t}\n\n\t\t\t// https://www.w3.org/WAI/GL/wiki/Using_ARIA_menus\n\t\t\tif (this.open) {\n\t\t\t\t// If arrow down, focus next result\n\t\t\t\tif (event.key === 'ArrowDown') {\n\t\t\t\t\tthis.focusNext(event)\n\t\t\t\t}\n\n\t\t\t\t// If arrow up, focus prev result\n\t\t\t\tif (event.key === 'ArrowUp') {\n\t\t\t\t\tthis.focusPrev(event)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t},\n\n\tmethods: {\n\t\tasync onOpen() {\n\t\t\tthis.focusInput()\n\t\t\t// Update types list in the background\n\t\t\tthis.types = await getTypes()\n\t\t},\n\t\tonClose() {\n\t\t\temit('nextcloud:unified-search.close')\n\t\t},\n\n\t\t/**\n\t\t * Reset the search state\n\t\t */\n\t\tonReset() {\n\t\t\temit('nextcloud:unified-search.reset')\n\t\t\tthis.logger.debug('Search reset')\n\t\t\tthis.query = ''\n\t\t\tthis.resetState()\n\t\t\tthis.focusInput()\n\t\t},\n\t\tasync resetState() {\n\t\t\tthis.cursors = {}\n\t\t\tthis.limits = {}\n\t\t\tthis.reached = {}\n\t\t\tthis.results = {}\n\t\t\tthis.focused = null\n\t\t\tawait this.cancelPendingRequests()\n\t\t},\n\n\t\t/**\n\t\t * Cancel any ongoing searches\n\t\t */\n\t\tasync cancelPendingRequests() {\n\t\t\t// Cloning so we can keep processing other requests\n\t\t\tconst requests = this.requests.slice(0)\n\t\t\tthis.requests = []\n\n\t\t\t// Cancel all pending requests\n\t\t\tawait Promise.all(requests.map(cancel => cancel()))\n\t\t},\n\n\t\t/**\n\t\t * Focus the search input on next tick\n\t\t */\n\t\tfocusInput() {\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.$refs.input.focus()\n\t\t\t\tthis.$refs.input.select()\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * If we have results already, open first one\n\t\t * If not, trigger the search again\n\t\t */\n\t\tonInputEnter() {\n\t\t\tif (this.hasResults) {\n\t\t\t\tconst results = this.getResultsList()\n\t\t\t\tresults[0].click()\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.onInput()\n\t\t},\n\n\t\t/**\n\t\t * Start searching on input\n\t\t */\n\t\tasync onInput() {\n\t\t\t// emit the search query\n\t\t\temit('nextcloud:unified-search.search', { query: this.query })\n\n\t\t\t// Do not search if not long enough\n\t\t\tif (this.query.trim() === '' || this.isShortQuery) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tlet types = this.typesIDs\n\t\t\tlet query = this.query\n\n\t\t\t// Filter out types\n\t\t\tif (this.usedFiltersNot.length > 0) {\n\t\t\t\ttypes = this.typesIDs.filter(type => this.usedFiltersNot.indexOf(type) === -1)\n\t\t\t}\n\n\t\t\t// Only use those filters if any and check if they are valid\n\t\t\tif (this.usedFiltersIn.length > 0) {\n\t\t\t\ttypes = this.typesIDs.filter(type => this.usedFiltersIn.indexOf(type) > -1)\n\t\t\t}\n\n\t\t\t// Remove any filters from the query\n\t\t\tquery = query.replace(regexFilterIn, '').replace(regexFilterNot, '')\n\n\t\t\t// Reset search if the query changed\n\t\t\tawait this.resetState()\n\t\t\tthis.$set(this.loading, 'all', true)\n\t\t\tthis.logger.debug(`Searching ${query} in`, types)\n\n\t\t\tPromise.all(types.map(async type => {\n\t\t\t\ttry {\n\t\t\t\t\t// Init cancellable request\n\t\t\t\t\tconst { request, cancel } = search({ type, query })\n\t\t\t\t\tthis.requests.push(cancel)\n\n\t\t\t\t\t// Fetch results\n\t\t\t\t\tconst { data } = await request()\n\n\t\t\t\t\t// Process results\n\t\t\t\t\tif (data.ocs.data.entries.length > 0) {\n\t\t\t\t\t\tthis.$set(this.results, type, data.ocs.data.entries)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.$delete(this.results, type)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Save cursor if any\n\t\t\t\t\tif (data.ocs.data.cursor) {\n\t\t\t\t\t\tthis.$set(this.cursors, type, data.ocs.data.cursor)\n\t\t\t\t\t} else if (!data.ocs.data.isPaginated) {\n\t\t\t\t\t// If no cursor and no pagination, we save the default amount\n\t\t\t\t\t// provided by server's initial state `defaultLimit`\n\t\t\t\t\t\tthis.$set(this.limits, type, this.defaultLimit)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Check if we reached end of pagination\n\t\t\t\t\tif (data.ocs.data.entries.length < this.defaultLimit) {\n\t\t\t\t\t\tthis.$set(this.reached, type, true)\n\t\t\t\t\t}\n\n\t\t\t\t\t// If none already focused, focus the first rendered result\n\t\t\t\t\tif (this.focused === null) {\n\t\t\t\t\t\tthis.focused = 0\n\t\t\t\t\t}\n\t\t\t\t\treturn REQUEST_OK\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthis.$delete(this.results, type)\n\n\t\t\t\t\t// If this is not a cancelled throw\n\t\t\t\t\tif (error.response && error.response.status) {\n\t\t\t\t\t\tthis.logger.error(`Error searching for ${this.typesMap[type]}`, error)\n\t\t\t\t\t\tshowError(this.t('core', 'An error occurred while searching for {type}', { type: this.typesMap[type] }))\n\t\t\t\t\t\treturn REQUEST_FAILED\n\t\t\t\t\t}\n\t\t\t\t\treturn REQUEST_CANCELED\n\t\t\t\t}\n\t\t\t})).then(results => {\n\t\t\t\t// Do not declare loading finished if the request have been cancelled\n\t\t\t\t// This means another search was triggered and we're therefore still loading\n\t\t\t\tif (results.some(result => result === REQUEST_CANCELED)) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\t// We finished all searches\n\t\t\t\tthis.loading = {}\n\t\t\t})\n\t\t},\n\t\tonInputDebounced: debounce(function(e) {\n\t\t\tthis.onInput(e)\n\t\t}, 200),\n\n\t\t/**\n\t\t * Load more results for the provided type\n\t\t *\n\t\t * @param {string} type type\n\t\t */\n\t\tasync loadMore(type) {\n\t\t\t// If already loading, ignore\n\t\t\tif (this.loading[type]) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this.cursors[type]) {\n\t\t\t\t// Init cancellable request\n\t\t\t\tconst { request, cancel } = search({ type, query: this.query, cursor: this.cursors[type] })\n\t\t\t\tthis.requests.push(cancel)\n\n\t\t\t\t// Fetch results\n\t\t\t\tconst { data } = await request()\n\n\t\t\t\t// Save cursor if any\n\t\t\t\tif (data.ocs.data.cursor) {\n\t\t\t\t\tthis.$set(this.cursors, type, data.ocs.data.cursor)\n\t\t\t\t}\n\n\t\t\t\t// Process results\n\t\t\t\tif (data.ocs.data.entries.length > 0) {\n\t\t\t\t\tthis.results[type].push(...data.ocs.data.entries)\n\t\t\t\t}\n\n\t\t\t\t// Check if we reached end of pagination\n\t\t\t\tif (data.ocs.data.entries.length < this.defaultLimit) {\n\t\t\t\t\tthis.$set(this.reached, type, true)\n\t\t\t\t}\n\t\t\t} else\n\n\t\t\t// If no cursor, we might have all the results already,\n\t\t\t// let's fake pagination and show the next xxx entries\n\t\t\tif (this.limits[type] && this.limits[type] >= 0) {\n\t\t\t\tthis.limits[type] += this.defaultLimit\n\n\t\t\t\t// Check if we reached end of pagination\n\t\t\t\tif (this.limits[type] >= this.results[type].length) {\n\t\t\t\t\tthis.$set(this.reached, type, true)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Focus result after render\n\t\t\tif (this.focused !== null) {\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tthis.focusIndex(this.focused)\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Return a subset of the array if the search provider\n\t\t * doesn't supports pagination\n\t\t *\n\t\t * @param {Array} list the results\n\t\t * @param {string} type the type\n\t\t * @return {Array}\n\t\t */\n\t\tlimitIfAny(list, type) {\n\t\t\tif (type in this.limits) {\n\t\t\t\treturn list.slice(0, this.limits[type])\n\t\t\t}\n\t\t\treturn list\n\t\t},\n\n\t\tgetResultsList() {\n\t\t\treturn this.$el.querySelectorAll('.unified-search__results .unified-search__result')\n\t\t},\n\n\t\t/**\n\t\t * Focus the first result if any\n\t\t *\n\t\t * @param {Event} event the keydown event\n\t\t */\n\t\tfocusFirst(event) {\n\t\t\tconst results = this.getResultsList()\n\t\t\tif (results && results.length > 0) {\n\t\t\t\tif (event) {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t}\n\t\t\t\tthis.focused = 0\n\t\t\t\tthis.focusIndex(this.focused)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Focus the next result if any\n\t\t *\n\t\t * @param {Event} event the keydown event\n\t\t */\n\t\tfocusNext(event) {\n\t\t\tif (this.focused === null) {\n\t\t\t\tthis.focusFirst(event)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst results = this.getResultsList()\n\t\t\t// If we're not focusing the last, focus the next one\n\t\t\tif (results && results.length > 0 && this.focused + 1 < results.length) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tthis.focused++\n\t\t\t\tthis.focusIndex(this.focused)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Focus the previous result if any\n\t\t *\n\t\t * @param {Event} event the keydown event\n\t\t */\n\t\tfocusPrev(event) {\n\t\t\tif (this.focused === null) {\n\t\t\t\tthis.focusFirst(event)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst results = this.getResultsList()\n\t\t\t// If we're not focusing the first, focus the previous one\n\t\t\tif (results && results.length > 0 && this.focused > 0) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tthis.focused--\n\t\t\t\tthis.focusIndex(this.focused)\n\t\t\t}\n\n\t\t},\n\n\t\t/**\n\t\t * Focus the specified result index if it exists\n\t\t *\n\t\t * @param {number} index the result index\n\t\t */\n\t\tfocusIndex(index) {\n\t\t\tconst results = this.getResultsList()\n\t\t\tif (results && results[index]) {\n\t\t\t\tresults[index].focus()\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Set the current focused element based on the target\n\t\t *\n\t\t * @param {Event} event the focus event\n\t\t */\n\t\tsetFocusedIndex(event) {\n\t\t\tconst entry = event.target\n\t\t\tconst results = this.getResultsList()\n\t\t\tconst index = [...results].findIndex(search => search === entry)\n\t\t\tif (index > -1) {\n\t\t\t\t// let's not use focusIndex as the entry is already focused\n\t\t\t\tthis.focused = index\n\t\t\t}\n\t\t},\n\n\t\tonClickFilter(filter) {\n\t\t\tthis.query = `${this.query} ${filter}`\n\t\t\t\t.replace(/ {2}/g, ' ')\n\t\t\t\t.trim()\n\t\t\tthis.onInput()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@use \"sass:math\";\n\n$margin: 10px;\n$input-height: 34px;\n$input-padding: 6px;\n\n.unified-search {\n\t&__trigger {\n\t\twidth: 20px;\n\t\theight: 20px;\n\t}\n\n\t&__input-wrapper {\n\t\tposition: sticky;\n\t\t// above search results\n\t\tz-index: 2;\n\t\ttop: 0;\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\twidth: 100%;\n\t\tbackground-color: var(--color-main-background);\n\t}\n\n\t&__filters {\n\t\tmargin: math.div($margin, 2) $margin;\n\t\tul {\n\t\t\tdisplay: inline-flex;\n\t\t\tjustify-content: space-between;\n\t\t}\n\t}\n\n\t&__form {\n\t\tposition: relative;\n\t\twidth: 100%;\n\t\tmargin: $margin;\n\n\t\t// Loading spinner\n\t\t&::after {\n\t\t\tright: $input-padding;\n\t\t\tleft: auto;\n\t\t}\n\n\t\t&-input,\n\t\t&-reset {\n\t\t\tmargin: math.div($input-padding, 2);\n\t\t}\n\n\t\t&-input {\n\t\t\twidth: 100%;\n\t\t\theight: $input-height;\n\t\t\tpadding: $input-padding;\n\n\t\t\t&,\n\t\t\t&[placeholder],\n\t\t\t&::placeholder {\n\t\t\t\toverflow: hidden;\n\t\t\t\twhite-space: nowrap;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t}\n\n\t\t\t// Hide webkit clear search\n\t\t\t&::-webkit-search-decoration,\n\t\t\t&::-webkit-search-cancel-button,\n\t\t\t&::-webkit-search-results-button,\n\t\t\t&::-webkit-search-results-decoration {\n\t\t\t\t-webkit-appearance: none;\n\t\t\t}\n\n\t\t\t// Ellipsis earlier if reset button is here\n\t\t\t.icon-loading-small &,\n\t\t\t&--with-reset {\n\t\t\t\tpadding-right: $input-height;\n\t\t\t}\n\t\t}\n\n\t\t&-reset {\n\t\t\tposition: absolute;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\twidth: $input-height - $input-padding;\n\t\t\theight: $input-height - $input-padding;\n\t\t\tpadding: 0;\n\t\t\topacity: .5;\n\t\t\tborder: none;\n\t\t\tbackground-color: transparent;\n\t\t\tmargin-right: 0;\n\n\t\t\t&:hover,\n\t\t\t&:focus,\n\t\t\t&:active {\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__filters {\n\t\tmargin-right: math.div($margin, 2);\n\t}\n\n\t&__results {\n\t\t&::before {\n\t\t\tdisplay: block;\n\t\t\tmargin: $margin;\n\t\t\tmargin-left: $margin + $input-padding;\n\t\t\tcontent: attr(aria-label);\n\t\t\tcolor: var(--color-primary-element);\n\t\t}\n\t}\n\n\t.unified-search__result-more::v-deep {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t.empty-content {\n\t\tmargin: 10vh 0;\n\n\t\t::v-deep .empty-content__title {\n\t\t\tfont-weight: normal;\n font-size: var(--default-font-size);\n\t\t\tpadding: 0 15px;\n\t\t\ttext-align: center;\n\t\t}\n\t}\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!./UnifiedSearch.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!./UnifiedSearch.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!./UnifiedSearch.vue?vue&type=style&index=0&id=59134936&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!./UnifiedSearch.vue?vue&type=style&index=0&id=59134936&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UnifiedSearch.vue?vue&type=template&id=59134936&scoped=true&\"\nimport script from \"./UnifiedSearch.vue?vue&type=script&lang=js&\"\nexport * from \"./UnifiedSearch.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UnifiedSearch.vue?vue&type=style&index=0&id=59134936&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 \"59134936\",\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('HeaderMenu',{staticClass:\"unified-search\",attrs:{\"id\":\"unified-search\",\"exclude-click-outside-classes\":\"popover\",\"open\":_vm.open,\"aria-label\":_vm.ariaLabel},on:{\"update:open\":function($event){_vm.open=$event},\"open\":_vm.onOpen,\"close\":_vm.onClose},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('Magnify',{staticClass:\"unified-search__trigger\",attrs:{\"size\":20,\"fill-color\":\"var(--color-primary-text)\"}})]},proxy:true}])},[_vm._v(\" \"),_c('div',{staticClass:\"unified-search__input-wrapper\"},[_c('form',{staticClass:\"unified-search__form\",class:{'icon-loading-small': _vm.isLoading},attrs:{\"role\":\"search\"},on:{\"submit\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onInputEnter.apply(null, arguments)},\"reset\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onReset.apply(null, arguments)}}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.query),expression:\"query\"}],ref:\"input\",staticClass:\"unified-search__form-input\",class:{'unified-search__form-input--with-reset': !!_vm.query},attrs:{\"type\":\"search\",\"placeholder\":_vm.t('core', 'Search {types} …', { types: _vm.typesNames.join(', ') })},domProps:{\"value\":(_vm.query)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.query=$event.target.value},_vm.onInputDebounced],\"keypress\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }$event.preventDefault();$event.stopPropagation();return _vm.onInputEnter.apply(null, arguments)}}}),_vm._v(\" \"),(!!_vm.query && !_vm.isLoading)?_c('input',{staticClass:\"unified-search__form-reset icon-close\",attrs:{\"type\":\"reset\",\"aria-label\":_vm.t('core','Reset search'),\"value\":\"\"}}):_vm._e()]),_vm._v(\" \"),(_vm.availableFilters.length > 1)?_c('Actions',{staticClass:\"unified-search__filters\",attrs:{\"placement\":\"bottom\"}},_vm._l((_vm.availableFilters),function(type){return _c('ActionButton',{key:type,attrs:{\"icon\":\"icon-filter\",\"title\":_vm.t('core', 'Search for {name} only', { name: _vm.typesMap[type] })},on:{\"click\":function($event){return _vm.onClickFilter((\"in:\" + type))}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s((\"in:\" + type))+\"\\n\\t\\t\\t\")])}),1):_vm._e()],1),_vm._v(\" \"),(!_vm.hasResults)?[(_vm.isLoading)?_c('SearchResultPlaceholders'):(_vm.isValidQuery)?_c('EmptyContent',{attrs:{\"icon\":\"icon-search\"}},[_c('Highlight',{attrs:{\"text\":_vm.t('core', 'No results for {query}', { query: _vm.query }),\"search\":_vm.query}})],1):(!_vm.isLoading || _vm.isShortQuery)?_c('EmptyContent',{attrs:{\"icon\":\"icon-search\"},scopedSlots:_vm._u([(_vm.isShortQuery)?{key:\"desc\",fn:function(){return [_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.n('core',\n\t\t\t\t\t'Please enter {minSearchLength} character or more to search',\n\t\t\t\t\t'Please enter {minSearchLength} characters or more to search',\n\t\t\t\t\t_vm.minSearchLength,\n\t\t\t\t\t{minSearchLength: _vm.minSearchLength}))+\"\\n\\t\\t\\t\")]},proxy:true}:null],null,true)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Start typing to search'))+\"\\n\\t\\t\\t\")]):_vm._e()]:_vm._l((_vm.orderedResults),function(ref,typesIndex){\n\t\t\t\t\tvar list = ref.list;\n\t\t\t\t\tvar type = ref.type;\nreturn _c('ul',{key:type,staticClass:\"unified-search__results\",class:(\"unified-search__results-\" + type),attrs:{\"aria-label\":_vm.typesMap[type]}},[_vm._l((_vm.limitIfAny(list, type)),function(result,index){return _c('li',{key:result.resourceUrl},[_c('SearchResult',_vm._b({attrs:{\"query\":_vm.query,\"focused\":_vm.focused === 0 && typesIndex === 0 && index === 0},on:{\"focus\":_vm.setFocusedIndex}},'SearchResult',result,false))],1)}),_vm._v(\" \"),_c('li',[(!_vm.reached[type])?_c('SearchResult',{staticClass:\"unified-search__result-more\",attrs:{\"title\":_vm.loading[type]\n\t\t\t\t\t\t? _vm.t('core', 'Loading more results …')\n\t\t\t\t\t\t: _vm.t('core', 'Load more results'),\"icon-class\":_vm.loading[type] ? 'icon-loading-small' : ''},on:{\"click\":function($event){$event.preventDefault();return _vm.loadMore(type)},\"focus\":_vm.setFocusedIndex}}):_vm._e()],1)],2)})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\nimport { getRequestToken } from '@nextcloud/auth'\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\nimport Vue from 'vue'\n\nimport UnifiedSearch from './views/UnifiedSearch.vue'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nconst logger = getLoggerBuilder()\n\t.setApp('unified-search')\n\t.detectUser()\n\t.build()\n\nVue.mixin({\n\tdata() {\n\t\treturn {\n\t\t\tlogger,\n\t\t}\n\t},\n\tmethods: {\n\t\tt,\n\t\tn,\n\t},\n})\n\nexport default new Vue({\n\tel: '#unified-search',\n\t// eslint-disable-next-line vue/match-component-file-name\n\tname: 'UnifiedSearchRoot',\n\trender: h => h(UnifiedSearch),\n})\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, \".notifications:not(:empty)~#unified-search[data-v-51f09a15]{order:-1}.notifications:not(:empty)~#unified-search .header-menu__carret[data-v-51f09a15]{right:175px}.header-menu__trigger[data-v-51f09a15]{display:flex;align-items:center;justify-content:center;width:50px;height:100%;margin:0;padding:0;cursor:pointer;opacity:.6}.header-menu--opened .header-menu__trigger[data-v-51f09a15],.header-menu__trigger[data-v-51f09a15]:hover,.header-menu__trigger[data-v-51f09a15]:focus,.header-menu__trigger[data-v-51f09a15]:active{opacity:1}.header-menu__wrapper[data-v-51f09a15]{position:fixed;z-index:2000;top:50px;right:0;box-sizing:border-box;margin:0;border-radius:0 0 var(--border-radius) var(--border-radius);background-color:var(--color-main-background);filter:drop-shadow(0 1px 5px var(--color-box-shadow))}.header-menu__carret[data-v-51f09a15]{position:absolute;right:128px;bottom:100%;width:0;height:0;content:\\\" \\\";pointer-events:none;border:10px solid rgba(0,0,0,0);border-bottom-color:var(--color-main-background)}.header-menu__content[data-v-51f09a15]{overflow:auto;width:350px;max-width:100vw;min-height:66px;max-height:calc(100vh - 100px)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/HeaderMenu.vue\"],\"names\":[],\"mappings\":\"AAoKA,4DACC,QAAA,CACA,iFACC,WAAA,CAID,uCACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CACA,WAAA,CACA,QAAA,CACA,SAAA,CACA,cAAA,CACA,UAAA,CAGD,oMAIC,SAAA,CAGD,uCACC,cAAA,CACA,YAAA,CACA,QAAA,CACA,OAAA,CACA,qBAAA,CACA,QAAA,CACA,2DAAA,CACA,6CAAA,CAEA,qDAAA,CAGD,sCACC,iBAAA,CACA,WAAA,CACA,WAAA,CACA,OAAA,CACA,QAAA,CACA,WAAA,CACA,mBAAA,CACA,+BAAA,CACA,gDAAA,CAGD,uCACC,aAAA,CACA,WAAA,CACA,eAAA,CACA,eAAA,CACA,8BAAA\",\"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.notifications:not(:empty) ~ #unified-search {\\n\\torder: -1;\\n\\t.header-menu__carret {\\n\\t\\tright: 175px;\\n\\t}\\n}\\n.header-menu {\\n\\t&__trigger {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: center;\\n\\t\\twidth: 50px;\\n\\t\\theight: 100%;\\n\\t\\tmargin: 0;\\n\\t\\tpadding: 0;\\n\\t\\tcursor: pointer;\\n\\t\\topacity: .6;\\n\\t}\\n\\n\\t&--opened &__trigger,\\n\\t&__trigger:hover,\\n\\t&__trigger:focus,\\n\\t&__trigger:active {\\n\\t\\topacity: 1;\\n\\t}\\n\\n\\t&__wrapper {\\n\\t\\tposition: fixed;\\n\\t\\tz-index: 2000;\\n\\t\\ttop: 50px;\\n\\t\\tright: 0;\\n\\t\\tbox-sizing: border-box;\\n\\t\\tmargin: 0;\\n\\t\\tborder-radius: 0 0 var(--border-radius) var(--border-radius);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\n\\t\\tfilter: drop-shadow(0 1px 5px var(--color-box-shadow));\\n\\t}\\n\\n\\t&__carret {\\n\\t\\tposition: absolute;\\n\\t\\tright: 128px;\\n\\t\\tbottom: 100%;\\n\\t\\twidth: 0;\\n\\t\\theight: 0;\\n\\t\\tcontent: ' ';\\n\\t\\tpointer-events: none;\\n\\t\\tborder: 10px solid transparent;\\n\\t\\tborder-bottom-color: var(--color-main-background);\\n\\t}\\n\\n\\t&__content {\\n\\t\\toverflow: auto;\\n\\t\\twidth: 350px;\\n\\t\\tmax-width: 100vw;\\n\\t\\tmin-height: calc(44px * 1.5);\\n\\t\\tmax-height: calc(100vh - 50px * 2);\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".unified-search__result[data-v-9dc2a344]{display:flex;height:44px;padding:10px;border-bottom:1px solid var(--color-border)}.unified-search__result[data-v-9dc2a344]:last-child{border-bottom:none}.unified-search__result--focused[data-v-9dc2a344],.unified-search__result[data-v-9dc2a344]:active,.unified-search__result[data-v-9dc2a344]:hover,.unified-search__result[data-v-9dc2a344]:focus{background-color:var(--color-background-hover)}.unified-search__result *[data-v-9dc2a344]{cursor:pointer}.unified-search__result-icon[data-v-9dc2a344]{overflow:hidden;width:44px;height:44px;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center center;background-size:32px}.unified-search__result-icon--rounded[data-v-9dc2a344]{border-radius:22px}.unified-search__result-icon--no-preview[data-v-9dc2a344]{background-size:32px}.unified-search__result-icon--with-thumbnail[data-v-9dc2a344]{background-size:cover}.unified-search__result-icon--with-thumbnail[data-v-9dc2a344]:not(.unified-search__result-icon--rounded){max-width:42px;max-height:42px;border:1px solid var(--color-border)}.unified-search__result-icon img[data-v-9dc2a344]{width:100%;height:100%;object-fit:cover;object-position:center}.unified-search__result-icon[data-v-9dc2a344],.unified-search__result-actions[data-v-9dc2a344]{flex:0 0 44px}.unified-search__result-content[data-v-9dc2a344]{display:flex;align-items:center;flex:1 1 100%;flex-wrap:wrap;min-width:0;padding-left:10px}.unified-search__result-line-one[data-v-9dc2a344],.unified-search__result-line-two[data-v-9dc2a344]{overflow:hidden;flex:1 1 100%;margin:1px 0;white-space:nowrap;text-overflow:ellipsis;color:inherit;font-size:inherit}.unified-search__result-line-two[data-v-9dc2a344]{opacity:.7;font-size:var(--default-font-size)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/UnifiedSearch/SearchResult.vue\"],\"names\":[],\"mappings\":\"AA0KA,yCACC,YAAA,CACA,WALgB,CAMhB,YALQ,CAMR,2CAAA,CAGA,oDACC,kBAAA,CAGD,gMAIC,8CAAA,CAGD,2CACC,cAAA,CAGD,8CACC,eAAA,CACA,UA3Be,CA4Bf,WA5Be,CA6Bf,kCAAA,CACA,2BAAA,CACA,iCAAA,CACA,oBAAA,CACA,uDACC,kBAAA,CAED,0DACC,oBAAA,CAED,8DACC,qBAAA,CAED,yGAEC,cAAA,CACA,eAAA,CACA,oCAAA,CAGD,kDAEC,UAAA,CACA,WAAA,CAEA,gBAAA,CACA,sBAAA,CAIF,+FAEC,aAAA,CAGD,iDACC,YAAA,CACA,kBAAA,CACA,aAAA,CACA,cAAA,CAEA,WAAA,CACA,iBAtEO,CAyER,oGAEC,eAAA,CACA,aAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA,CAEA,aAAA,CACA,iBAAA,CAED,kDACC,UAAA,CACA,kCAAA\",\"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@use \\\"sass:math\\\";\\n\\n$clickable-area: 44px;\\n$margin: 10px;\\n\\n.unified-search__result {\\n\\tdisplay: flex;\\n\\theight: $clickable-area;\\n\\tpadding: $margin;\\n\\tborder-bottom: 1px solid var(--color-border);\\n\\n\\t// Load more entry,\\n\\t&:last-child {\\n\\t\\tborder-bottom: none;\\n\\t}\\n\\n\\t&--focused,\\n\\t&:active,\\n\\t&:hover,\\n\\t&:focus {\\n\\t\\tbackground-color: var(--color-background-hover);\\n\\t}\\n\\n\\t* {\\n\\t\\tcursor: pointer;\\n\\t}\\n\\n\\t&-icon {\\n\\t\\toverflow: hidden;\\n\\t\\twidth: $clickable-area;\\n\\t\\theight: $clickable-area;\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\tbackground-position: center center;\\n\\t\\tbackground-size: 32px;\\n\\t\\t&--rounded {\\n\\t\\t\\tborder-radius: math.div($clickable-area, 2);\\n\\t\\t}\\n\\t\\t&--no-preview {\\n\\t\\t\\tbackground-size: 32px;\\n\\t\\t}\\n\\t\\t&--with-thumbnail {\\n\\t\\t\\tbackground-size: cover;\\n\\t\\t}\\n\\t\\t&--with-thumbnail:not(&--rounded) {\\n\\t\\t\\t// compensate for border\\n\\t\\t\\tmax-width: $clickable-area - 2px;\\n\\t\\t\\tmax-height: $clickable-area - 2px;\\n\\t\\t\\tborder: 1px solid var(--color-border);\\n\\t\\t}\\n\\n\\t\\timg {\\n\\t\\t\\t// Make sure to keep ratio\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\theight: 100%;\\n\\n\\t\\t\\tobject-fit: cover;\\n\\t\\t\\tobject-position: center;\\n\\t\\t}\\n\\t}\\n\\n\\t&-icon,\\n\\t&-actions {\\n\\t\\tflex: 0 0 $clickable-area;\\n\\t}\\n\\n\\t&-content {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tflex: 1 1 100%;\\n\\t\\tflex-wrap: wrap;\\n\\t\\t// Set to minimum and gro from it\\n\\t\\tmin-width: 0;\\n\\t\\tpadding-left: $margin;\\n\\t}\\n\\n\\t&-line-one,\\n\\t&-line-two {\\n\\t\\toverflow: hidden;\\n\\t\\tflex: 1 1 100%;\\n\\t\\tmargin: 1px 0;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\t// Use the same color as the `a`\\n\\t\\tcolor: inherit;\\n\\t\\tfont-size: inherit;\\n\\t}\\n\\t&-line-two {\\n\\t\\topacity: .7;\\n\\t\\tfont-size: var(--default-font-size);\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".unified-search__result-placeholder-gradient[data-v-9ed03c40]{position:fixed;height:0;width:0;z-index:-1}.unified-search__result-placeholder[data-v-9ed03c40]{width:calc(100% - 2 * 10px);height:44px;margin:10px}.unified-search__result-placeholder-icon[data-v-9ed03c40]{width:44px;height:44px;rx:var(--border-radius);ry:var(--border-radius)}.unified-search__result-placeholder-line-one[data-v-9ed03c40],.unified-search__result-placeholder-line-two[data-v-9ed03c40]{width:calc(100% - 54px);height:1em;x:54px}.unified-search__result-placeholder-line-one[data-v-9ed03c40]{y:5px}.unified-search__result-placeholder-line-two[data-v-9ed03c40]{y:25px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/UnifiedSearch/SearchResultPlaceholders.vue\"],\"names\":[],\"mappings\":\"AA+DA,8DACC,cAAA,CACA,QAAA,CACA,OAAA,CACA,UAAA,CAGD,qDACC,2BAAA,CACA,WAZgB,CAahB,WAZQ,CAcR,0DACC,UAhBe,CAiBf,WAjBe,CAkBf,uBAAA,CACA,uBAAA,CAGD,4HAEC,uBAAA,CACA,UAAA,CACA,MAAA,CAGD,8DACC,KAAA,CAGD,8DACC,MAAA\",\"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$clickable-area: 44px;\\n$margin: 10px;\\n\\n.unified-search__result-placeholder-gradient {\\n\\tposition: fixed;\\n\\theight: 0;\\n\\twidth: 0;\\n\\tz-index: -1;\\n}\\n\\n.unified-search__result-placeholder {\\n\\twidth: calc(100% - 2 * #{$margin});\\n\\theight: $clickable-area;\\n\\tmargin: $margin;\\n\\n\\t&-icon {\\n\\t\\twidth: $clickable-area;\\n\\t\\theight: $clickable-area;\\n\\t\\trx: var(--border-radius);\\n\\t\\try: var(--border-radius);\\n\\t}\\n\\n\\t&-line-one,\\n\\t&-line-two {\\n\\t\\twidth: calc(100% - #{$margin + $clickable-area});\\n\\t\\theight: 1em;\\n\\t\\tx: $margin + $clickable-area;\\n\\t}\\n\\n\\t&-line-one {\\n\\t\\ty: 5px;\\n\\t}\\n\\n\\t&-line-two {\\n\\t\\ty: 25px;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".unified-search__trigger[data-v-59134936]{width:20px;height:20px}.unified-search__input-wrapper[data-v-59134936]{position:sticky;z-index:2;top:0;display:inline-flex;align-items:center;width:100%;background-color:var(--color-main-background)}.unified-search__filters[data-v-59134936]{margin:5px 10px}.unified-search__filters ul[data-v-59134936]{display:inline-flex;justify-content:space-between}.unified-search__form[data-v-59134936]{position:relative;width:100%;margin:10px}.unified-search__form[data-v-59134936]::after{right:6px;left:auto}.unified-search__form-input[data-v-59134936],.unified-search__form-reset[data-v-59134936]{margin:3px}.unified-search__form-input[data-v-59134936]{width:100%;height:34px;padding:6px}.unified-search__form-input[data-v-59134936],.unified-search__form-input[placeholder][data-v-59134936],.unified-search__form-input[data-v-59134936]::placeholder{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.unified-search__form-input[data-v-59134936]::-webkit-search-decoration,.unified-search__form-input[data-v-59134936]::-webkit-search-cancel-button,.unified-search__form-input[data-v-59134936]::-webkit-search-results-button,.unified-search__form-input[data-v-59134936]::-webkit-search-results-decoration{-webkit-appearance:none}.icon-loading-small .unified-search__form-input[data-v-59134936],.unified-search__form-input--with-reset[data-v-59134936]{padding-right:34px}.unified-search__form-reset[data-v-59134936]{position:absolute;top:0;right:0;width:28px;height:28px;padding:0;opacity:.5;border:none;background-color:rgba(0,0,0,0);margin-right:0}.unified-search__form-reset[data-v-59134936]:hover,.unified-search__form-reset[data-v-59134936]:focus,.unified-search__form-reset[data-v-59134936]:active{opacity:1}.unified-search__filters[data-v-59134936]{margin-right:5px}.unified-search__results[data-v-59134936]::before{display:block;margin:10px;margin-left:16px;content:attr(aria-label);color:var(--color-primary-element)}.unified-search .unified-search__result-more[data-v-59134936]{color:var(--color-text-maxcontrast)}.unified-search .empty-content[data-v-59134936]{margin:10vh 0}.unified-search .empty-content[data-v-59134936] .empty-content__title{font-weight:normal;font-size:var(--default-font-size);padding:0 15px;text-align:center}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/UnifiedSearch.vue\"],\"names\":[],\"mappings\":\"AAspBC,0CACC,UAAA,CACA,WAAA,CAGD,gDACC,eAAA,CAEA,SAAA,CACA,KAAA,CACA,mBAAA,CACA,kBAAA,CACA,UAAA,CACA,6CAAA,CAGD,0CACC,eAAA,CACA,6CACC,mBAAA,CACA,6BAAA,CAIF,uCACC,iBAAA,CACA,UAAA,CACA,WAhCO,CAmCP,8CACC,SAlCa,CAmCb,SAAA,CAGD,0FAEC,UAAA,CAGD,6CACC,UAAA,CACA,WA9CY,CA+CZ,WA9Ca,CAgDb,iKAGC,eAAA,CACA,kBAAA,CACA,sBAAA,CAID,+SAIC,uBAAA,CAID,0HAEC,kBApEW,CAwEb,6CACC,iBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CACA,WAAA,CACA,SAAA,CACA,UAAA,CACA,WAAA,CACA,8BAAA,CACA,cAAA,CAEA,0JAGC,SAAA,CAKH,0CACC,gBAAA,CAIA,kDACC,aAAA,CACA,WApGM,CAqGN,gBAAA,CACA,wBAAA,CACA,kCAAA,CAIF,8DACC,mCAAA,CAGD,gDACC,aAAA,CAEA,uEACC,kBAAA,CACS,kCAAA,CACT,cAAA,CACA,iBAAA\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n@use \\\"sass:math\\\";\\n\\n$margin: 10px;\\n$input-height: 34px;\\n$input-padding: 6px;\\n\\n.unified-search {\\n\\t&__trigger {\\n\\t\\twidth: 20px;\\n\\t\\theight: 20px;\\n\\t}\\n\\n\\t&__input-wrapper {\\n\\t\\tposition: sticky;\\n\\t\\t// above search results\\n\\t\\tz-index: 2;\\n\\t\\ttop: 0;\\n\\t\\tdisplay: inline-flex;\\n\\t\\talign-items: center;\\n\\t\\twidth: 100%;\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t}\\n\\n\\t&__filters {\\n\\t\\tmargin: math.div($margin, 2) $margin;\\n\\t\\tul {\\n\\t\\t\\tdisplay: inline-flex;\\n\\t\\t\\tjustify-content: space-between;\\n\\t\\t}\\n\\t}\\n\\n\\t&__form {\\n\\t\\tposition: relative;\\n\\t\\twidth: 100%;\\n\\t\\tmargin: $margin;\\n\\n\\t\\t// Loading spinner\\n\\t\\t&::after {\\n\\t\\t\\tright: $input-padding;\\n\\t\\t\\tleft: auto;\\n\\t\\t}\\n\\n\\t\\t&-input,\\n\\t\\t&-reset {\\n\\t\\t\\tmargin: math.div($input-padding, 2);\\n\\t\\t}\\n\\n\\t\\t&-input {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\theight: $input-height;\\n\\t\\t\\tpadding: $input-padding;\\n\\n\\t\\t\\t&,\\n\\t\\t\\t&[placeholder],\\n\\t\\t\\t&::placeholder {\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Hide webkit clear search\\n\\t\\t\\t&::-webkit-search-decoration,\\n\\t\\t\\t&::-webkit-search-cancel-button,\\n\\t\\t\\t&::-webkit-search-results-button,\\n\\t\\t\\t&::-webkit-search-results-decoration {\\n\\t\\t\\t\\t-webkit-appearance: none;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Ellipsis earlier if reset button is here\\n\\t\\t\\t.icon-loading-small &,\\n\\t\\t\\t&--with-reset {\\n\\t\\t\\t\\tpadding-right: $input-height;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&-reset {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tright: 0;\\n\\t\\t\\twidth: $input-height - $input-padding;\\n\\t\\t\\theight: $input-height - $input-padding;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\topacity: .5;\\n\\t\\t\\tborder: none;\\n\\t\\t\\tbackground-color: transparent;\\n\\t\\t\\tmargin-right: 0;\\n\\n\\t\\t\\t&:hover,\\n\\t\\t\\t&:focus,\\n\\t\\t\\t&:active {\\n\\t\\t\\t\\topacity: 1;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__filters {\\n\\t\\tmargin-right: math.div($margin, 2);\\n\\t}\\n\\n\\t&__results {\\n\\t\\t&::before {\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tmargin: $margin;\\n\\t\\t\\tmargin-left: $margin + $input-padding;\\n\\t\\t\\tcontent: attr(aria-label);\\n\\t\\t\\tcolor: var(--color-primary-element);\\n\\t\\t}\\n\\t}\\n\\n\\t.unified-search__result-more::v-deep {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t.empty-content {\\n\\t\\tmargin: 10vh 0;\\n\\n\\t\\t::v-deep .empty-content__title {\\n\\t\\t\\tfont-weight: normal;\\n font-size: var(--default-font-size);\\n\\t\\t\\tpadding: 0 15px;\\n\\t\\t\\ttext-align: center;\\n\\t\\t}\\n\\t}\\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 = 9671;","__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\t9671: 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));","__webpack_require__.nc = undefined;","// 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__(91231); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","defaultLimit","loadState","regexFilterIn","regexFilterNot","getTypes","axios","generateOcsUrl","params","from","window","location","pathname","replace","search","data","ocs","Array","isArray","length","console","error","type","query","cursor","cancelToken","request","token","term","cancel","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","component","_vm","this","_h","$createElement","_c","_self","directives","name","rawName","value","expression","staticClass","class","opened","attrs","id","ariaLabel","on","$event","preventDefault","toggleMenu","apply","arguments","_t","_v","_obj","focused","resourceUrl","reEmitEvent","rounded","hasValidThumbnail","loaded","icon","isIconUrl","style","backgroundImage","thumbnailUrl","onError","onLoad","_e","title","subline","_s","light","dark","_l","placeholder","key","width","randWidth","open","onOpen","onClose","scopedSlots","_u","fn","proxy","isLoading","stopPropagation","onInputEnter","onReset","ref","t","types","typesNames","join","domProps","target","composing","onInputDebounced","indexOf","_k","keyCode","availableFilters","typesMap","onClickFilter","hasResults","typesIndex","list","limitIfAny","result","index","_b","setFocusedIndex","reached","loading","loadMore","isShortQuery","n","minSearchLength","__webpack_nonce__","btoa","getRequestToken","logger","getLoggerBuilder","setApp","detectUser","build","Vue","methods","el","render","h","UnifiedSearch","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","__webpack_modules__","call","m","amdD","Error","amdO","O","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","Object","keys","every","splice","r","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/dashboard-main.js b/dist/dashboard-main.js
index 4dc0d7d01a8..1163240d3cf 100644
--- a/dist/dashboard-main.js
+++ b/dist/dashboard-main.js
@@ -1,3 +1,3 @@
/*! For license information please see dashboard-main.js.LICENSE.txt */
-!function(){"use strict";var n,e={30320:function(n,e,a){var o=a(20144),r=a(16453),i=a(22200),s=a(47450),d=a.n(s),c=a(9980),l=a.n(c),A=a(4820),u=a(79753),p={data:function(){return{isMobile:this._isMobile()}},beforeMount:function(){window.addEventListener("resize",this._onResize)},beforeDestroy:function(){window.removeEventListener("resize",this._onResize)},methods:{_onResize:function(){this.isMobile=this._isMobile()},_isMobile:function(){return document.documentElement.clientWidth<768}}},g=function(t){return(0,u.generateFilePath)("dashboard","","img/")+t},b=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return"default"===t?e&&"backgroundColor"!==e?(0,u.generateUrl)("/apps/theming/image/background")+"?v="+window.OCA.Theming.cacheBuster:window.OCA.Accessibility&&"dark"===window.OCA.Accessibility.theme?g("eduardo-neves-pedra-azul.jpg"):g("kamil-porembinski-clouds.jpg"):"custom"===t?(0,u.generateUrl)("/apps/dashboard/background")+"?v="+n:g(t)};function C(t,n,e,a,o,r,i){try{var s=t[r](i),d=s.value}catch(t){return void e(t)}s.done?n(d):Promise.resolve(d).then(a,o)}function h(t){return function(){var n=this,e=arguments;return new Promise((function(a,o){var r=t.apply(n,e);function i(t){C(r,a,o,i,s,"next",t)}function s(t){C(r,a,o,i,s,"throw",t)}i(void 0)}))}}var f=(0,r.loadState)("dashboard","shippedBackgrounds"),v={name:"BackgroundSettings",props:{background:{type:String,default:"default"},themingDefaultBackground:{type:String,default:""}},data:function(){return{backgroundImage:(0,u.generateUrl)("/apps/dashboard/background")+"?v="+Date.now(),loading:!1}},computed:{shippedBackgrounds:function(){return Object.keys(f).map((function(t){return{name:t,url:g(t),preview:g("previews/"+t),details:f[t]}}))}},methods:{update:function(t){var n=this;return h(regeneratorRuntime.mark((function e(){var a,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a="custom"===t.type||"default"===t.type?t.type:t.value,n.backgroundImage=b(a,t.version,n.themingDefaultBackground),"color"!==t.type&&("default"!==t.type||"backgroundColor"!==n.themingDefaultBackground)){e.next=6;break}return n.$emit("update:background",t),n.loading=!1,e.abrupt("return");case 6:(o=new Image).onload=function(){n.$emit("update:background",t),n.loading=!1},o.src=n.backgroundImage;case 9:case"end":return e.stop()}}),e)})))()},setDefault:function(){var t=this;return h(regeneratorRuntime.mark((function n(){var e;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return t.loading="default",n.next=3,A.default.post((0,u.generateUrl)("/apps/dashboard/background/default"));case 3:e=n.sent,t.update(e.data);case 5:case"end":return n.stop()}}),n)})))()},setShipped:function(t){var n=this;return h(regeneratorRuntime.mark((function e(){var a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.loading=t,e.next=3,A.default.post((0,u.generateUrl)("/apps/dashboard/background/shipped"),{value:t});case 3:a=e.sent,n.update(a.data);case 5:case"end":return e.stop()}}),e)})))()},setFile:function(t){var n=this;return h(regeneratorRuntime.mark((function e(){var a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.loading="custom",e.next=3,A.default.post((0,u.generateUrl)("/apps/dashboard/background/custom"),{value:t});case 3:a=e.sent,n.update(a.data);case 5:case"end":return e.stop()}}),e)})))()},pickColor:function(){var t=this;return h(regeneratorRuntime.mark((function n(){var e,a;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return t.loading="color",e=OCA&&OCA.Theming?OCA.Theming.color:"#0082c9",n.next=4,A.default.post((0,u.generateUrl)("/apps/dashboard/background/color"),{value:e});case 4:a=n.sent,t.update(a.data);case 6:case"end":return n.stop()}}),n)})))()},pickFile:function(){var n=this;window.OC.dialogs.filepicker(t("dashboard","Insert from {productName}",{productName:OC.theme.name}),(function(t,e){e===OC.dialogs.FILEPICKER_TYPE_CHOOSE&&n.setFile(t)}),!1,["image/png","image/gif","image/jpeg","image/svg"],!0,OC.dialogs.FILEPICKER_TYPE_CHOOSE)}}},m=v,k=a(93379),x=a.n(k),y=a(7795),w=a.n(y),_=a(90569),S=a.n(_),B=a(3565),D=a.n(B),O=a(19216),E=a.n(O),F=a(44589),G=a.n(F),I=a(56510),T={};T.styleTagTransform=G(),T.setAttributes=D(),T.insert=S().bind(null,"head"),T.domAPI=w(),T.insertStyleElement=E(),x()(I.Z,T),I.Z&&I.Z.locals&&I.Z.locals;var j=a(51900),z=(0,j.Z)(m,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{staticClass:"background-selector"},[e("button",{staticClass:"background filepicker",class:{active:"custom"===t.background},attrs:{tabindex:"0"},on:{click:t.pickFile}},[t._v("\n\t\t"+t._s(t.t("dashboard","Pick from Files"))+"\n\t")]),t._v(" "),e("button",{staticClass:"background default",class:{"icon-loading":"default"===t.loading,active:"default"===t.background},attrs:{tabindex:"0"},on:{click:t.setDefault}},[t._v("\n\t\t"+t._s(t.t("dashboard","Default images"))+"\n\t")]),t._v(" "),e("button",{staticClass:"background color",class:{active:"custom"===t.background},attrs:{tabindex:"0"},on:{click:t.pickColor}},[t._v("\n\t\t"+t._s(t.t("dashboard","Plain background"))+"\n\t")]),t._v(" "),t._l(t.shippedBackgrounds,(function(n){return e("button",{directives:[{name:"tooltip",rawName:"v-tooltip",value:n.details.attribution,expression:"shippedBackground.details.attribution"}],key:n.name,staticClass:"background",class:{"icon-loading":t.loading===n.name,active:t.background===n.name},style:{"background-image":"url("+n.preview+")"},attrs:{tabindex:"0"},on:{click:function(e){return t.setShipped(n.name)}}})}))],2)}),[],!1,null,"e4c3a7ca",null).exports,R=(0,r.loadState)("dashboard","panels"),P=(0,r.loadState)("dashboard","firstRun"),U=(0,r.loadState)("dashboard","background"),L=(0,r.loadState)("dashboard","themingDefaultBackground"),N=(0,r.loadState)("dashboard","version"),W=(0,r.loadState)("dashboard","shippedBackgrounds"),M={weather:{text:t("dashboard","Weather"),icon:"icon-weather-status"},status:{text:t("dashboard","Status"),icon:"icon-user-status-online"}},q={name:"App",components:{Modal:d(),Draggable:l(),BackgroundSettings:z},mixins:[p],data:function(){var t,n;return{isAdmin:(0,i.getCurrentUser)().isAdmin,timer:new Date,registeredStatus:[],callbacks:{},callbacksStatus:{},allCallbacksStatus:{},statusInfo:M,enabledStatuses:(0,r.loadState)("dashboard","statuses"),panels:R,firstRun:P,displayName:null===(t=(0,i.getCurrentUser)())||void 0===t?void 0:t.displayName,uid:null===(n=(0,i.getCurrentUser)())||void 0===n?void 0:n.uid,layout:(0,r.loadState)("dashboard","layout").filter((function(t){return R[t]})),modal:!1,appStoreUrl:(0,u.generateUrl)("/settings/apps/dashboard"),statuses:{},background:U,themingDefaultBackground:L,version:N}},computed:{backgroundImage:function(){return b(this.background,this.version,this.themingDefaultBackground)},backgroundStyle:function(){return"default"===this.background&&"backgroundColor"===this.themingDefaultBackground||this.background.match(/#[0-9A-Fa-f]{6}/g)?null:{backgroundImage:"url(".concat(this.backgroundImage,")")}},greeting:function(){var n,e=this.timer.getHours();n=e>=22||e<5?"night":e>=18?"evening":e>=12?"afternoon":"morning";var a={morning:{generic:t("dashboard","Good morning"),withName:t("dashboard","Good morning, {name}",{name:this.displayName},void 0,{escape:!1})},afternoon:{generic:t("dashboard","Good afternoon"),withName:t("dashboard","Good afternoon, {name}",{name:this.displayName},void 0,{escape:!1})},evening:{generic:t("dashboard","Good evening"),withName:t("dashboard","Good evening, {name}",{name:this.displayName},void 0,{escape:!1})},night:{generic:t("dashboard","Hello"),withName:t("dashboard","Hello, {name}",{name:this.displayName},void 0,{escape:!1})}};return{text:this.displayName&&this.uid!==this.displayName?a[n].withName:a[n].generic}},isActive:function(){var t=this;return function(n){return t.layout.indexOf(n.id)>-1}},isStatusActive:function(){var t=this;return function(n){return!(n in t.enabledStatuses)||t.enabledStatuses[n]}},sortedAllStatuses:function(){return Object.keys(this.allCallbacksStatus).slice().sort(this.sortStatuses)},sortedPanels:function(){var t=this;return Object.values(this.panels).sort((function(n,e){var a=t.layout.indexOf(n.id),o=t.layout.indexOf(e.id);return-1===a||-1===o?o-a||n.id-e.id:a-o||n.id-e.id}))},sortedRegisteredStatus:function(){return this.registeredStatus.slice().sort(this.sortStatuses)}},watch:{callbacks:function(){this.rerenderPanels()},callbacksStatus:function(){for(var t in this.callbacksStatus){var n=this.$refs["status-"+t];this.statuses[t]&&this.statuses[t].mounted||(n?(this.callbacksStatus[t](n[0]),o.default.set(this.statuses,t,{mounted:!0})):console.error("Failed to register panel in the frontend as no backend data was provided for "+t))}}},mounted:function(){var t=this;this.updateGlobalStyles(),this.updateSkipLink(),window.addEventListener("scroll",this.handleScroll),setInterval((function(){t.timer=new Date}),3e4),this.firstRun&&window.addEventListener("scroll",this.disableFirstrunHint)},destroyed:function(){window.removeEventListener("scroll",this.handleScroll)},methods:{register:function(t,n){o.default.set(this.callbacks,t,n)},registerStatus:function(t,n){var e=this;o.default.set(this.allCallbacksStatus,t,n),this.isStatusActive(t)&&(this.registeredStatus.push(t),this.$nextTick((function(){o.default.set(e.callbacksStatus,t,n)})))},rerenderPanels:function(){for(var t in this.callbacks){var n=this.$refs[t];-1!==this.layout.indexOf(t)&&(this.panels[t]&&this.panels[t].mounted||(n?(this.callbacks[t](n[0],{widget:this.panels[t]}),o.default.set(this.panels[t],"mounted",!0)):console.error("Failed to register panel in the frontend as no backend data was provided for "+t)))}},saveLayout:function(){A.default.post((0,u.generateUrl)("/apps/dashboard/layout"),{layout:this.layout.join(",")})},saveStatuses:function(){A.default.post((0,u.generateUrl)("/apps/dashboard/statuses"),{statuses:JSON.stringify(this.enabledStatuses)})},showModal:function(){this.modal=!0,this.firstRun=!1},closeModal:function(){this.modal=!1},updateCheckbox:function(t,n){var e=this,a=this.layout.indexOf(t.id);!n&&a>-1?this.layout.splice(a,1):this.layout.push(t.id),o.default.set(this.panels[t.id],"mounted",!1),this.saveLayout(),this.$nextTick((function(){return e.rerenderPanels()}))},disableFirstrunHint:function(){var t=this;window.removeEventListener("scroll",this.disableFirstrunHint),setTimeout((function(){t.firstRun=!1}),1e3)},updateBackground:function(t){this.background="custom"===t.type||"default"===t.type?t.type:t.value,this.version=t.version,this.updateGlobalStyles()},updateGlobalStyles:function(){document.body.setAttribute("data-dashboard-background",this.background),window.OCA.Theming.inverted&&document.body.classList.add("dashboard--inverted"),"dark"===(W[this.background]?W[this.background].theming:"light")?document.body.classList.add("dashboard--dark"):document.body.classList.remove("dashboard--dark")},updateSkipLink:function(){document.getElementsByClassName("skip-navigation")[0].setAttribute("href","#app-dashboard")},updateStatusCheckbox:function(t,n){n?this.enableStatus(t):this.disableStatus(t)},enableStatus:function(t){this.enabledStatuses[t]=!0,this.registerStatus(t,this.allCallbacksStatus[t]),this.saveStatuses()},disableStatus:function(t){var n=this;this.enabledStatuses[t]=!1;var e=this.registeredStatus.findIndex((function(n){return n===t}));-1!==e&&(this.registeredStatus.splice(e,1),o.default.set(this.statuses,t,{mounted:!1}),this.$nextTick((function(){o.default.delete(n.callbacksStatus,t)}))),this.saveStatuses()},sortStatuses:function(t,n){var e=t.toLowerCase(),a=n.toLowerCase();return e>a?1:e<a?-1:0},handleScroll:function(){window.scrollY>70?document.body.classList.add("dashboard--scrolled"):document.body.classList.remove("dashboard--scrolled")}}},Z=a(44326),H={};H.styleTagTransform=G(),H.setAttributes=D(),H.insert=S().bind(null,"head"),H.domAPI=w(),H.insertStyleElement=E(),x()(Z.Z,H),Z.Z&&Z.Z.locals&&Z.Z.locals;var Y=(0,j.Z)(q,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{style:t.backgroundStyle,attrs:{id:"app-dashboard"}},[e("h2",[t._v(t._s(t.greeting.text))]),t._v(" "),e("ul",{staticClass:"statuses"},t._l(t.sortedRegisteredStatus,(function(t){return e("div",{key:t,attrs:{id:"status-"+t}},[e("div",{ref:"status-"+t,refInFor:!0})])})),0),t._v(" "),e("Draggable",t._b({staticClass:"panels",attrs:{handle:".panel--header"},on:{end:t.saveLayout},model:{value:t.layout,callback:function(n){t.layout=n},expression:"layout"}},"Draggable",{swapThreshold:.3,delay:500,delayOnTouchOnly:!0,touchStartThreshold:3},!1),t._l(t.layout,(function(n){return e("div",{key:t.panels[n].id,staticClass:"panel"},[e("div",{staticClass:"panel--header"},[e("h2",{class:t.panels[n].iconClass},[t._v("\n\t\t\t\t\t"+t._s(t.panels[n].title)+"\n\t\t\t\t")])]),t._v(" "),e("div",{staticClass:"panel--content",class:{loading:!t.panels[n].mounted}},[e("div",{ref:t.panels[n].id,refInFor:!0,attrs:{"data-id":t.panels[n].id}})])])})),0),t._v(" "),e("div",{staticClass:"footer"},[e("a",{staticClass:"edit-panels icon-rename",attrs:{tabindex:"0"},on:{click:t.showModal,keyup:[function(n){return!n.type.indexOf("key")&&t._k(n.keyCode,"enter",13,n.key,"Enter")?null:t.showModal.apply(null,arguments)},function(n){return!n.type.indexOf("key")&&t._k(n.keyCode,"space",32,n.key,[" ","Spacebar"])?null:t.showModal.apply(null,arguments)}]}},[t._v(t._s(t.t("dashboard","Customize")))])]),t._v(" "),t.modal?e("Modal",{attrs:{size:"large"},on:{close:t.closeModal}},[e("div",{staticClass:"modal__content"},[e("h3",[t._v(t._s(t.t("dashboard","Edit widgets")))]),t._v(" "),e("ol",{staticClass:"panels"},t._l(t.sortedAllStatuses,(function(n){return e("li",{key:n},[e("input",{staticClass:"checkbox",attrs:{id:"status-checkbox-"+n,type:"checkbox"},domProps:{checked:t.isStatusActive(n)},on:{input:function(e){return t.updateStatusCheckbox(n,e.target.checked)}}}),t._v(" "),e("label",{class:t.statusInfo[n].icon,attrs:{for:"status-checkbox-"+n}},[t._v("\n\t\t\t\t\t\t"+t._s(t.statusInfo[n].text)+"\n\t\t\t\t\t")])])})),0),t._v(" "),e("Draggable",t._b({staticClass:"panels",attrs:{tag:"ol",handle:".draggable"},on:{end:t.saveLayout},model:{value:t.layout,callback:function(n){t.layout=n},expression:"layout"}},"Draggable",{swapThreshold:.3,delay:500,delayOnTouchOnly:!0,touchStartThreshold:3},!1),t._l(t.sortedPanels,(function(n){return e("li",{key:n.id},[e("input",{staticClass:"checkbox",attrs:{id:"panel-checkbox-"+n.id,type:"checkbox"},domProps:{checked:t.isActive(n)},on:{input:function(e){return t.updateCheckbox(n,e.target.checked)}}}),t._v(" "),e("label",{class:t.isActive(n)?"draggable "+n.iconClass:n.iconClass,attrs:{for:"panel-checkbox-"+n.id}},[t._v("\n\t\t\t\t\t\t"+t._s(n.title)+"\n\t\t\t\t\t")])])})),0),t._v(" "),t.isAdmin?e("a",{staticClass:"button",attrs:{href:t.appStoreUrl}},[t._v(t._s(t.t("dashboard","Get more widgets from the App Store")))]):t._e(),t._v(" "),e("h3",[t._v(t._s(t.t("dashboard","Change background image")))]),t._v(" "),e("BackgroundSettings",{attrs:{background:t.background,"theming-default-background":t.themingDefaultBackground},on:{"update:background":t.updateBackground}}),t._v(" "),e("h3",[t._v(t._s(t.t("dashboard","Weather service")))]),t._v(" "),e("p",[t._v("\n\t\t\t\t"+t._s(t.t("dashboard","For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information."))+"\n\t\t\t")]),t._v(" "),e("p",{staticClass:"credits--end"},[e("a",{attrs:{href:"https://api.met.no/doc/TermsOfService",target:"_blank",rel:"noopener"}},[t._v(t._s(t.t("dashboard","Weather data from Met.no")))]),t._v(",\n\t\t\t\t"),e("a",{attrs:{href:"https://wiki.osmfoundation.org/wiki/Privacy_Policy",target:"_blank",rel:"noopener"}},[t._v(t._s(t.t("dashboard","geocoding with Nominatim")))]),t._v(",\n\t\t\t\t"),e("a",{attrs:{href:"https://www.opentopodata.org/#public-api",target:"_blank",rel:"noopener"}},[t._v(t._s(t.t("dashboard","elevation data from OpenTopoData")))]),t._v(".\n\t\t\t")])],1)]):t._e()],1)}),[],!1,null,"af526754",null),$=Y.exports,K=a(9944),Q=a(15168),J=a.n(Q);a.nc=btoa((0,i.getRequestToken)()),o.default.directive("Tooltip",J()),o.default.prototype.t=K.translate,window.OCA.Files||(window.OCA.Files={}),Object.assign(window.OCA.Files,{App:{fileList:{filesClient:OC.Files.getClient()}}},window.OCA.Files);var V=new(o.default.extend($))({}).$mount("#app-content-vue");window.OCA.Dashboard={register:function(t,n){return V.register(t,n)},registerStatus:function(t,n){return V.registerStatus(t,n)}}},44326:function(t,n,e){var a=e(87537),o=e.n(a),r=e(23645),i=e.n(r)()(o());i.push([t.id,"#app-dashboard[data-v-af526754]{width:100%;min-height:100vh;background-size:cover;background-position:center center;background-repeat:no-repeat;background-attachment:fixed;background-color:var(--color-primary);--color-background-translucent: rgba(255, 255, 255, 0.8);--background-blur: blur(10px)}#body-user.theme--dark #app-dashboard[data-v-af526754]{background-color:var(--color-main-background);--color-background-translucent: rgba(24, 24, 24, 0.8)}#body-user.theme--highcontrast #app-dashboard[data-v-af526754]{background-color:var(--color-main-background);--color-background-translucent: var(--color-main-background)}#app-dashboard>h2[data-v-af526754]{color:var(--color-primary-text);text-align:center;font-size:32px;line-height:130%;padding:10vh 16px 0px}.panels[data-v-af526754]{width:auto;margin:auto;max-width:1500px;display:flex;justify-content:center;flex-direction:row;align-items:flex-start;flex-wrap:wrap}.panel[data-v-af526754],.panels>div[data-v-af526754]{width:320px;max-width:100%;margin:16px;background-color:var(--color-background-translucent);-webkit-backdrop-filter:var(--background-blur);backdrop-filter:var(--background-blur);border-radius:var(--border-radius-large)}#body-user.theme--highcontrast .panel[data-v-af526754],#body-user.theme--highcontrast .panels>div[data-v-af526754]{border:2px solid var(--color-border)}.panel.sortable-ghost[data-v-af526754],.panels>div.sortable-ghost[data-v-af526754]{opacity:.1}.panel>.panel--header[data-v-af526754],.panels>div>.panel--header[data-v-af526754]{display:flex;z-index:1;top:50px;padding:16px;cursor:grab}.panel>.panel--header[data-v-af526754],.panel>.panel--header[data-v-af526754] *,.panels>div>.panel--header[data-v-af526754],.panels>div>.panel--header[data-v-af526754] *{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.panel>.panel--header[data-v-af526754]:active,.panels>div>.panel--header[data-v-af526754]:active{cursor:grabbing}.panel>.panel--header a[data-v-af526754],.panels>div>.panel--header a[data-v-af526754]{flex-grow:1}.panel>.panel--header>h2[data-v-af526754],.panels>div>.panel--header>h2[data-v-af526754]{display:block;flex-grow:1;margin:0;font-size:20px;line-height:24px;font-weight:bold;background-size:32px;background-position:14px 12px;padding:16px 8px 16px 60px;height:56px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:grab}.panel>.panel--content[data-v-af526754],.panels>div>.panel--content[data-v-af526754]{margin:0 16px 16px 16px;height:420px;overflow:hidden}@media only screen and (max-width: 709px){.panel>.panel--content[data-v-af526754],.panels>div>.panel--content[data-v-af526754]{height:auto}}.footer[data-v-af526754]{text-align:center;transition:bottom var(--animation-slow) ease-in-out;bottom:0;padding:44px 0}.edit-panels[data-v-af526754]{display:inline-block;margin:auto;background-position:16px center;padding:12px 16px;padding-left:36px;border-radius:var(--border-radius-pill);max-width:200px;opacity:1;text-align:center}.edit-panels[data-v-af526754],.statuses[data-v-af526754] .action-item .action-item__menutoggle,.statuses[data-v-af526754] .action-item.action-item--open .action-item__menutoggle{background-color:var(--color-background-translucent);-webkit-backdrop-filter:var(--background-blur);backdrop-filter:var(--background-blur);opacity:1 !important}.edit-panels[data-v-af526754]:hover,.edit-panels[data-v-af526754]:focus,.edit-panels[data-v-af526754]:active,.statuses[data-v-af526754] .action-item .action-item__menutoggle:hover,.statuses[data-v-af526754] .action-item .action-item__menutoggle:focus,.statuses[data-v-af526754] .action-item .action-item__menutoggle:active,.statuses[data-v-af526754] .action-item.action-item--open .action-item__menutoggle:hover,.statuses[data-v-af526754] .action-item.action-item--open .action-item__menutoggle:focus,.statuses[data-v-af526754] .action-item.action-item--open .action-item__menutoggle:active{background-color:var(--color-background-hover) !important}.edit-panels[data-v-af526754]:focus-visible,.statuses[data-v-af526754] .action-item .action-item__menutoggle:focus-visible,.statuses[data-v-af526754] .action-item.action-item--open .action-item__menutoggle:focus-visible{border:2px solid var(--color-main-text) !important}.modal__content[data-v-af526754]{padding:32px 16px;text-align:center}.modal__content ol[data-v-af526754]{display:flex;flex-direction:row;justify-content:center;list-style-type:none;padding-bottom:16px}.modal__content li label[data-v-af526754]{position:relative;display:block;padding:48px 16px 14px 16px;margin:8px;width:140px;background-color:var(--color-background-hover);border:2px solid var(--color-main-background);border-radius:var(--border-radius-large);background-size:24px;background-position:16px 16px;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.modal__content li label[data-v-af526754]:hover{border-color:var(--color-primary)}.modal__content li input[type=checkbox].checkbox+label[data-v-af526754]:before{position:absolute;right:12px;top:16px}.modal__content li input:focus+label[data-v-af526754]{border-color:var(--color-primary)}.modal__content h3[data-v-af526754]{font-weight:bold}.modal__content h3[data-v-af526754]:not(:first-of-type){margin-top:64px}.modal__content .button[data-v-af526754]{display:inline-block;padding:10px 16px;margin:0}.modal__content p[data-v-af526754]{max-width:650px;margin:0 auto}.modal__content p a[data-v-af526754]:hover,.modal__content p a[data-v-af526754]:focus{border-bottom:2px solid var(--color-border)}.modal__content .credits--end[data-v-af526754]{padding-bottom:32px;color:var(--color-text-maxcontrast)}.modal__content .credits--end a[data-v-af526754]{color:var(--color-text-maxcontrast)}.flip-list-move[data-v-af526754]{transition:transform var(--animation-slow)}.statuses[data-v-af526754]{display:flex;flex-direction:row;justify-content:center;flex-wrap:wrap;margin-bottom:36px}.statuses>div[data-v-af526754]{margin:8px}","",{version:3,sources:["webpack://./apps/dashboard/src/App.vue"],names:[],mappings:"AAqZA,gCACC,UAAA,CACA,gBAAA,CACA,qBAAA,CACA,iCAAA,CACA,2BAAA,CACA,2BAAA,CACA,qCAAA,CACA,wDAAA,CACA,6BAAA,CAEA,uDACC,6CAAA,CACA,qDAAA,CAGD,+DACC,6CAAA,CACA,4DAAA,CAGD,mCACC,+BAAA,CACA,iBAAA,CACA,cAAA,CACA,gBAAA,CACA,qBAAA,CAIF,yBACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CACA,cAAA,CAGD,qDACC,WAAA,CACA,cAAA,CACA,WAAA,CACA,oDAAA,CACA,8CAAA,CACA,sCAAA,CACA,wCAAA,CAEA,mHACC,oCAAA,CAGD,mFACE,UAAA,CAGF,mFACC,YAAA,CACA,SAAA,CACA,QAAA,CACA,YAAA,CACA,WAAA,CAEA,4KACC,0BAAA,CACA,wBAAA,CACA,uBAAA,CACA,qBAAA,CACA,oBAAA,CACA,gBAAA,CAGD,iGACC,eAAA,CAGD,uFACC,WAAA,CAGD,yFACC,aAAA,CACA,WAAA,CACA,QAAA,CACA,cAAA,CACA,gBAAA,CACA,gBAAA,CACA,oBAAA,CACA,6BAAA,CACA,0BAAA,CACA,WAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CACA,WAAA,CAIF,qFACC,uBAAA,CACA,YAAA,CAEA,eAAA,CAID,0CACC,qFACC,WAAA,CAAA,CAKH,yBACC,iBAAA,CACA,mDAAA,CACA,QAAA,CACA,cAAA,CAGD,8BACC,oBAAA,CACA,WAAA,CACA,+BAAA,CACA,iBAAA,CACA,iBAAA,CACA,uCAAA,CACA,eAAA,CACA,SAAA,CACA,iBAAA,CAGD,oLAGC,oDAAA,CACA,8CAAA,CACA,sCAAA,CACA,oBAAA,CAEA,qlBAGC,yDAAA,CAED,8NACC,kDAAA,CAIF,iCACC,iBAAA,CACA,iBAAA,CAEA,oCACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,oBAAA,CACA,mBAAA,CAGA,0CACC,iBAAA,CACA,aAAA,CACA,2BAAA,CACA,UAAA,CACA,WAAA,CACA,8CAAA,CACA,6CAAA,CACA,wCAAA,CACA,oBAAA,CACA,6BAAA,CACA,eAAA,CACA,eAAA,CACA,sBAAA,CACA,kBAAA,CAEA,gDACC,iCAAA,CAIF,+EACC,iBAAA,CACA,UAAA,CACA,QAAA,CAGD,sDACC,iCAAA,CAIF,oCACC,gBAAA,CAEA,wDACC,eAAA,CAKF,yCACC,oBAAA,CACA,iBAAA,CACA,QAAA,CAGD,mCACC,eAAA,CACA,aAAA,CAEA,sFAEC,2CAAA,CAIF,+CACC,mBAAA,CACA,mCAAA,CAEA,iDACC,mCAAA,CAKH,iCACC,0CAAA,CAGD,2BACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,cAAA,CACA,kBAAA,CAEA,+BACC,UAAA",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n#app-dashboard {\n\twidth: 100%;\n\tmin-height: 100vh;\n\tbackground-size: cover;\n\tbackground-position: center center;\n\tbackground-repeat: no-repeat;\n\tbackground-attachment: fixed;\n\tbackground-color: var(--color-primary);\n\t--color-background-translucent: rgba(255, 255, 255, 0.8);\n\t--background-blur: blur(10px);\n\n\t#body-user.theme--dark & {\n\t\tbackground-color: var(--color-main-background);\n\t\t--color-background-translucent: rgba(24, 24, 24, 0.8);\n\t}\n\n\t#body-user.theme--highcontrast & {\n\t\tbackground-color: var(--color-main-background);\n\t\t--color-background-translucent: var(--color-main-background);\n\t}\n\n\t> h2 {\n\t\tcolor: var(--color-primary-text);\n\t\ttext-align: center;\n\t\tfont-size: 32px;\n\t\tline-height: 130%;\n\t\tpadding: 10vh 16px 0px;\n\t}\n}\n\n.panels {\n\twidth: auto;\n\tmargin: auto;\n\tmax-width: 1500px;\n\tdisplay: flex;\n\tjustify-content: center;\n\tflex-direction: row;\n\talign-items: flex-start;\n\tflex-wrap: wrap;\n}\n\n.panel, .panels > div {\n\twidth: 320px;\n\tmax-width: 100%;\n\tmargin: 16px;\n\tbackground-color: var(--color-background-translucent);\n\t-webkit-backdrop-filter: var(--background-blur);\n\tbackdrop-filter: var(--background-blur);\n\tborder-radius: var(--border-radius-large);\n\n\t#body-user.theme--highcontrast & {\n\t\tborder: 2px solid var(--color-border);\n\t}\n\n\t&.sortable-ghost {\n\t\t opacity: 0.1;\n\t}\n\n\t& > .panel--header {\n\t\tdisplay: flex;\n\t\tz-index: 1;\n\t\ttop: 50px;\n\t\tpadding: 16px;\n\t\tcursor: grab;\n\n\t\t&, ::v-deep * {\n\t\t\t-webkit-touch-callout: none;\n\t\t\t-webkit-user-select: none;\n\t\t\t-khtml-user-select: none;\n\t\t\t-moz-user-select: none;\n\t\t\t-ms-user-select: none;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&:active {\n\t\t\tcursor: grabbing;\n\t\t}\n\n\t\ta {\n\t\t\tflex-grow: 1;\n\t\t}\n\n\t\t> h2 {\n\t\t\tdisplay: block;\n\t\t\tflex-grow: 1;\n\t\t\tmargin: 0;\n\t\t\tfont-size: 20px;\n\t\t\tline-height: 24px;\n\t\t\tfont-weight: bold;\n\t\t\tbackground-size: 32px;\n\t\t\tbackground-position: 14px 12px;\n\t\t\tpadding: 16px 8px 16px 60px;\n\t\t\theight: 56px;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\tcursor: grab;\n\t\t}\n\t}\n\n\t& > .panel--content {\n\t\tmargin: 0 16px 16px 16px;\n\t\theight: 420px;\n\t\t// We specifically do not want scrollbars inside widgets\n\t\toverflow: hidden;\n\t}\n\n\t// No need to extend height of widgets if only one column is shown\n\t@media only screen and (max-width: 709px) {\n\t\t& > .panel--content {\n\t\t\theight: auto;\n\t\t}\n\t}\n}\n\n.footer {\n\ttext-align: center;\n\ttransition: bottom var(--animation-slow) ease-in-out;\n\tbottom: 0;\n\tpadding: 44px 0;\n}\n\n.edit-panels {\n\tdisplay: inline-block;\n\tmargin:auto;\n\tbackground-position: 16px center;\n\tpadding: 12px 16px;\n\tpadding-left: 36px;\n\tborder-radius: var(--border-radius-pill);\n\tmax-width: 200px;\n\topacity: 1;\n\ttext-align: center;\n}\n\n.edit-panels,\n.statuses ::v-deep .action-item .action-item__menutoggle,\n.statuses ::v-deep .action-item.action-item--open .action-item__menutoggle {\n\tbackground-color: var(--color-background-translucent);\n\t-webkit-backdrop-filter: var(--background-blur);\n\tbackdrop-filter: var(--background-blur);\n\topacity: 1 !important;\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbackground-color: var(--color-background-hover)!important;\n\t}\n\t&:focus-visible {\n\t\tborder: 2px solid var(--color-main-text)!important;\n\t}\n}\n\n.modal__content {\n\tpadding: 32px 16px;\n\ttext-align: center;\n\n\tol {\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\tjustify-content: center;\n\t\tlist-style-type: none;\n\t\tpadding-bottom: 16px;\n\t}\n\tli {\n\t\tlabel {\n\t\t\tposition: relative;\n\t\t\tdisplay: block;\n\t\t\tpadding: 48px 16px 14px 16px;\n\t\t\tmargin: 8px;\n\t\t\twidth: 140px;\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t\tborder: 2px solid var(--color-main-background);\n\t\t\tborder-radius: var(--border-radius-large);\n\t\t\tbackground-size: 24px;\n\t\t\tbackground-position: 16px 16px;\n\t\t\ttext-align: left;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\n\t\t\t&:hover {\n\t\t\t\tborder-color: var(--color-primary);\n\t\t\t}\n\t\t}\n\n\t\tinput[type='checkbox'].checkbox + label:before {\n\t\t\tposition: absolute;\n\t\t\tright: 12px;\n\t\t\ttop: 16px;\n\t\t}\n\n\t\tinput:focus + label {\n\t\t\tborder-color: var(--color-primary);\n\t\t}\n\t}\n\n\th3 {\n\t\tfont-weight: bold;\n\n\t\t&:not(:first-of-type) {\n\t\t\tmargin-top: 64px;\n\t\t}\n\t}\n\n\t// Adjust design of 'Get more widgets' button\n\t.button {\n\t\tdisplay: inline-block;\n\t\tpadding: 10px 16px;\n\t\tmargin: 0;\n\t}\n\n\tp {\n\t\tmax-width: 650px;\n\t\tmargin: 0 auto;\n\n\t\ta:hover,\n\t\ta:focus {\n\t\t\tborder-bottom: 2px solid var(--color-border);\n\t\t}\n\t}\n\n\t.credits--end {\n\t\tpadding-bottom: 32px;\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\ta {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n}\n\n.flip-list-move {\n\ttransition: transform var(--animation-slow);\n}\n\n.statuses {\n\tdisplay: flex;\n\tflex-direction: row;\n\tjustify-content: center;\n\tflex-wrap: wrap;\n\tmargin-bottom: 36px;\n\n\t& > div {\n\t\tmargin: 8px;\n\t}\n}\n"],sourceRoot:""}]),n.Z=i},56510:function(t,n,e){var a=e(87537),o=e.n(a),r=e(23645),i=e.n(r)()(o());i.push([t.id,'.background-selector[data-v-e4c3a7ca]{display:flex;flex-wrap:wrap;justify-content:center}.background-selector .background[data-v-e4c3a7ca]{width:176px;height:96px;margin:8px;background-size:cover;background-position:center center;text-align:center;border-radius:var(--border-radius-large);border:2px solid var(--color-main-background);overflow:hidden}.background-selector .background.current[data-v-e4c3a7ca]{background-image:var(--color-background-dark)}.background-selector .background.filepicker[data-v-e4c3a7ca],.background-selector .background.default[data-v-e4c3a7ca],.background-selector .background.color[data-v-e4c3a7ca]{border-color:var(--color-border)}.background-selector .background.color[data-v-e4c3a7ca]{background-color:var(--color-primary);color:var(--color-primary-text)}.background-selector .background.active[data-v-e4c3a7ca],.background-selector .background[data-v-e4c3a7ca]:hover,.background-selector .background[data-v-e4c3a7ca]:focus{border:2px solid var(--color-primary)}.background-selector .background.active[data-v-e4c3a7ca]:not(.icon-loading):after{background-image:var(--icon-checkmark-fff);background-repeat:no-repeat;background-position:center;background-size:44px;content:"";display:block;height:100%}body.theme--dark .background-selector .background.active[data-v-e4c3a7ca]:not(.icon-loading):after{background-image:var(--icon-checkmark-000)}',"",{version:3,sources:["webpack://./apps/dashboard/src/components/BackgroundSettings.vue"],names:[],mappings:"AA4IA,sCACC,YAAA,CACA,cAAA,CACA,sBAAA,CAEA,kDACC,WAAA,CACA,WAAA,CACA,UAAA,CACA,qBAAA,CACA,iCAAA,CACA,iBAAA,CACA,wCAAA,CACA,6CAAA,CACA,eAAA,CAEA,0DACC,6CAAA,CAGD,+KACC,gCAAA,CAGD,wDACC,qCAAA,CACA,+BAAA,CAGD,yKAGC,qCAAA,CAGD,kFACC,0CAAA,CACA,2BAAA,CACA,0BAAA,CACA,oBAAA,CACA,UAAA,CACA,aAAA,CACA,WAAA,CAEA,mGACC,0CAAA",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.background-selector {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tjustify-content: center;\n\n\t.background {\n\t\twidth: 176px;\n\t\theight: 96px;\n\t\tmargin: 8px;\n\t\tbackground-size: cover;\n\t\tbackground-position: center center;\n\t\ttext-align: center;\n\t\tborder-radius: var(--border-radius-large);\n\t\tborder: 2px solid var(--color-main-background);\n\t\toverflow: hidden;\n\n\t\t&.current {\n\t\t\tbackground-image: var(--color-background-dark);\n\t\t}\n\n\t\t&.filepicker, &.default, &.color {\n\t\t\tborder-color: var(--color-border);\n\t\t}\n\n\t\t&.color {\n\t\t\tbackground-color: var(--color-primary);\n\t\t\tcolor: var(--color-primary-text);\n\t\t}\n\n\t\t&.active,\n\t\t&:hover,\n\t\t&:focus {\n\t\t\tborder: 2px solid var(--color-primary);\n\t\t}\n\n\t\t&.active:not(.icon-loading):after {\n\t\t\tbackground-image: var(--icon-checkmark-fff);\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-position: center;\n\t\t\tbackground-size: 44px;\n\t\t\tcontent: '';\n\t\t\tdisplay: block;\n\t\t\theight: 100%;\n\n\t\t\tbody.theme--dark & {\n\t\t\t\tbackground-image: var(--icon-checkmark-000);\n\t\t\t}\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),n.Z=i}},a={};function o(t){var n=a[t];if(void 0!==n)return n.exports;var r=a[t]={id:t,loaded:!1,exports:{}};return e[t].call(r.exports,r,r.exports,o),r.loaded=!0,r.exports}o.m=e,o.amdD=function(){throw new Error("define cannot be used indirect")},o.amdO={},n=[],o.O=function(t,e,a,r){if(!e){var i=1/0;for(l=0;l<n.length;l++){e=n[l][0],a=n[l][1],r=n[l][2];for(var s=!0,d=0;d<e.length;d++)(!1&r||i>=r)&&Object.keys(o.O).every((function(t){return o.O[t](e[d])}))?e.splice(d--,1):(s=!1,r<i&&(i=r));if(s){n.splice(l--,1);var c=a();void 0!==c&&(t=c)}}return t}r=r||0;for(var l=n.length;l>0&&n[l-1][2]>r;l--)n[l]=n[l-1];n[l]=[e,a,r]},o.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(n,{a:n}),n},o.d=function(t,n){for(var e in n)o.o(n,e)&&!o.o(t,e)&&Object.defineProperty(t,e,{enumerable:!0,get:n[e]})},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),o.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},o.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},o.j=4773,function(){o.b=document.baseURI||self.location.href;var t={4773:0};o.O.j=function(n){return 0===t[n]};var n=function(n,e){var a,r,i=e[0],s=e[1],d=e[2],c=0;if(i.some((function(n){return 0!==t[n]}))){for(a in s)o.o(s,a)&&(o.m[a]=s[a]);if(d)var l=d(o)}for(n&&n(e);c<i.length;c++)r=i[c],o.o(t,r)&&t[r]&&t[r][0](),t[r]=0;return o.O(l)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(n.bind(null,0)),e.push=n.bind(null,e.push.bind(e))}();var r=o.O(void 0,[7874],(function(){return o(30320)}));r=o.O(r)}();
-//# sourceMappingURL=dashboard-main.js.map?v=8ffb30e23fd986745925 \ No newline at end of file
+!function(){"use strict";var n,e={30320:function(n,e,a){var o=a(20144),r=a(16453),i=a(22200),s=a(47450),d=a.n(s),c=a(9980),l=a.n(c),A=a(4820),u=a(79753),p={data:function(){return{isMobile:this._isMobile()}},beforeMount:function(){window.addEventListener("resize",this._onResize)},beforeDestroy:function(){window.removeEventListener("resize",this._onResize)},methods:{_onResize:function(){this.isMobile=this._isMobile()},_isMobile:function(){return document.documentElement.clientWidth<768}}},g=function(t){return(0,u.generateFilePath)("dashboard","","img/")+t},b=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return"default"===t?e&&"backgroundColor"!==e?(0,u.generateUrl)("/apps/theming/image/background")+"?v="+window.OCA.Theming.cacheBuster:window.OCA.Accessibility&&"dark"===window.OCA.Accessibility.theme?g("eduardo-neves-pedra-azul.jpg"):g("kamil-porembinski-clouds.jpg"):"custom"===t?(0,u.generateUrl)("/apps/dashboard/background")+"?v="+n:g(t)};function C(t,n,e,a,o,r,i){try{var s=t[r](i),d=s.value}catch(t){return void e(t)}s.done?n(d):Promise.resolve(d).then(a,o)}function h(t){return function(){var n=this,e=arguments;return new Promise((function(a,o){var r=t.apply(n,e);function i(t){C(r,a,o,i,s,"next",t)}function s(t){C(r,a,o,i,s,"throw",t)}i(void 0)}))}}var f=(0,r.loadState)("dashboard","shippedBackgrounds"),v={name:"BackgroundSettings",props:{background:{type:String,default:"default"},themingDefaultBackground:{type:String,default:""}},data:function(){return{backgroundImage:(0,u.generateUrl)("/apps/dashboard/background")+"?v="+Date.now(),loading:!1}},computed:{shippedBackgrounds:function(){return Object.keys(f).map((function(t){return{name:t,url:g(t),preview:g("previews/"+t),details:f[t]}}))}},methods:{update:function(t){var n=this;return h(regeneratorRuntime.mark((function e(){var a,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a="custom"===t.type||"default"===t.type?t.type:t.value,n.backgroundImage=b(a,t.version,n.themingDefaultBackground),"color"!==t.type&&("default"!==t.type||"backgroundColor"!==n.themingDefaultBackground)){e.next=6;break}return n.$emit("update:background",t),n.loading=!1,e.abrupt("return");case 6:(o=new Image).onload=function(){n.$emit("update:background",t),n.loading=!1},o.src=n.backgroundImage;case 9:case"end":return e.stop()}}),e)})))()},setDefault:function(){var t=this;return h(regeneratorRuntime.mark((function n(){var e;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return t.loading="default",n.next=3,A.default.post((0,u.generateUrl)("/apps/dashboard/background/default"));case 3:e=n.sent,t.update(e.data);case 5:case"end":return n.stop()}}),n)})))()},setShipped:function(t){var n=this;return h(regeneratorRuntime.mark((function e(){var a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.loading=t,e.next=3,A.default.post((0,u.generateUrl)("/apps/dashboard/background/shipped"),{value:t});case 3:a=e.sent,n.update(a.data);case 5:case"end":return e.stop()}}),e)})))()},setFile:function(t){var n=this;return h(regeneratorRuntime.mark((function e(){var a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.loading="custom",e.next=3,A.default.post((0,u.generateUrl)("/apps/dashboard/background/custom"),{value:t});case 3:a=e.sent,n.update(a.data);case 5:case"end":return e.stop()}}),e)})))()},pickColor:function(){var t=this;return h(regeneratorRuntime.mark((function n(){var e,a;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return t.loading="color",e=OCA&&OCA.Theming?OCA.Theming.color:"#0082c9",n.next=4,A.default.post((0,u.generateUrl)("/apps/dashboard/background/color"),{value:e});case 4:a=n.sent,t.update(a.data);case 6:case"end":return n.stop()}}),n)})))()},pickFile:function(){var n=this;window.OC.dialogs.filepicker(t("dashboard","Insert from {productName}",{productName:OC.theme.name}),(function(t,e){e===OC.dialogs.FILEPICKER_TYPE_CHOOSE&&n.setFile(t)}),!1,["image/png","image/gif","image/jpeg","image/svg"],!0,OC.dialogs.FILEPICKER_TYPE_CHOOSE)}}},m=v,k=a(93379),x=a.n(k),y=a(7795),w=a.n(y),_=a(90569),S=a.n(_),B=a(3565),D=a.n(B),O=a(19216),E=a.n(O),F=a(44589),G=a.n(F),I=a(56510),T={};T.styleTagTransform=G(),T.setAttributes=D(),T.insert=S().bind(null,"head"),T.domAPI=w(),T.insertStyleElement=E(),x()(I.Z,T),I.Z&&I.Z.locals&&I.Z.locals;var j=a(51900),z=(0,j.Z)(m,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{staticClass:"background-selector"},[e("button",{staticClass:"background filepicker",class:{active:"custom"===t.background},attrs:{tabindex:"0"},on:{click:t.pickFile}},[t._v("\n\t\t"+t._s(t.t("dashboard","Pick from Files"))+"\n\t")]),t._v(" "),e("button",{staticClass:"background default",class:{"icon-loading":"default"===t.loading,active:"default"===t.background},attrs:{tabindex:"0"},on:{click:t.setDefault}},[t._v("\n\t\t"+t._s(t.t("dashboard","Default images"))+"\n\t")]),t._v(" "),e("button",{staticClass:"background color",class:{active:"custom"===t.background},attrs:{tabindex:"0"},on:{click:t.pickColor}},[t._v("\n\t\t"+t._s(t.t("dashboard","Plain background"))+"\n\t")]),t._v(" "),t._l(t.shippedBackgrounds,(function(n){return e("button",{directives:[{name:"tooltip",rawName:"v-tooltip",value:n.details.attribution,expression:"shippedBackground.details.attribution"}],key:n.name,staticClass:"background",class:{"icon-loading":t.loading===n.name,active:t.background===n.name},style:{"background-image":"url("+n.preview+")"},attrs:{tabindex:"0"},on:{click:function(e){return t.setShipped(n.name)}}})}))],2)}),[],!1,null,"e4c3a7ca",null).exports,R=(0,r.loadState)("dashboard","panels"),P=(0,r.loadState)("dashboard","firstRun"),U=(0,r.loadState)("dashboard","background"),L=(0,r.loadState)("dashboard","themingDefaultBackground"),N=(0,r.loadState)("dashboard","version"),W=(0,r.loadState)("dashboard","shippedBackgrounds"),M={weather:{text:t("dashboard","Weather"),icon:"icon-weather-status"},status:{text:t("dashboard","Status"),icon:"icon-user-status-online"}},q={name:"App",components:{Modal:d(),Draggable:l(),BackgroundSettings:z},mixins:[p],data:function(){var t,n;return{isAdmin:(0,i.getCurrentUser)().isAdmin,timer:new Date,registeredStatus:[],callbacks:{},callbacksStatus:{},allCallbacksStatus:{},statusInfo:M,enabledStatuses:(0,r.loadState)("dashboard","statuses"),panels:R,firstRun:P,displayName:null===(t=(0,i.getCurrentUser)())||void 0===t?void 0:t.displayName,uid:null===(n=(0,i.getCurrentUser)())||void 0===n?void 0:n.uid,layout:(0,r.loadState)("dashboard","layout").filter((function(t){return R[t]})),modal:!1,appStoreUrl:(0,u.generateUrl)("/settings/apps/dashboard"),statuses:{},background:U,themingDefaultBackground:L,version:N}},computed:{backgroundImage:function(){return b(this.background,this.version,this.themingDefaultBackground)},backgroundStyle:function(){return"default"===this.background&&"backgroundColor"===this.themingDefaultBackground||this.background.match(/#[0-9A-Fa-f]{6}/g)?null:{backgroundImage:"url(".concat(this.backgroundImage,")")}},greeting:function(){var n,e=this.timer.getHours();n=e>=22||e<5?"night":e>=18?"evening":e>=12?"afternoon":"morning";var a={morning:{generic:t("dashboard","Good morning"),withName:t("dashboard","Good morning, {name}",{name:this.displayName},void 0,{escape:!1})},afternoon:{generic:t("dashboard","Good afternoon"),withName:t("dashboard","Good afternoon, {name}",{name:this.displayName},void 0,{escape:!1})},evening:{generic:t("dashboard","Good evening"),withName:t("dashboard","Good evening, {name}",{name:this.displayName},void 0,{escape:!1})},night:{generic:t("dashboard","Hello"),withName:t("dashboard","Hello, {name}",{name:this.displayName},void 0,{escape:!1})}};return{text:this.displayName&&this.uid!==this.displayName?a[n].withName:a[n].generic}},isActive:function(){var t=this;return function(n){return t.layout.indexOf(n.id)>-1}},isStatusActive:function(){var t=this;return function(n){return!(n in t.enabledStatuses)||t.enabledStatuses[n]}},sortedAllStatuses:function(){return Object.keys(this.allCallbacksStatus).slice().sort(this.sortStatuses)},sortedPanels:function(){var t=this;return Object.values(this.panels).sort((function(n,e){var a=t.layout.indexOf(n.id),o=t.layout.indexOf(e.id);return-1===a||-1===o?o-a||n.id-e.id:a-o||n.id-e.id}))},sortedRegisteredStatus:function(){return this.registeredStatus.slice().sort(this.sortStatuses)}},watch:{callbacks:function(){this.rerenderPanels()},callbacksStatus:function(){for(var t in this.callbacksStatus){var n=this.$refs["status-"+t];this.statuses[t]&&this.statuses[t].mounted||(n?(this.callbacksStatus[t](n[0]),o.default.set(this.statuses,t,{mounted:!0})):console.error("Failed to register panel in the frontend as no backend data was provided for "+t))}}},mounted:function(){var t=this;this.updateGlobalStyles(),this.updateSkipLink(),window.addEventListener("scroll",this.handleScroll),setInterval((function(){t.timer=new Date}),3e4),this.firstRun&&window.addEventListener("scroll",this.disableFirstrunHint)},destroyed:function(){window.removeEventListener("scroll",this.handleScroll)},methods:{register:function(t,n){o.default.set(this.callbacks,t,n)},registerStatus:function(t,n){var e=this;o.default.set(this.allCallbacksStatus,t,n),this.isStatusActive(t)&&(this.registeredStatus.push(t),this.$nextTick((function(){o.default.set(e.callbacksStatus,t,n)})))},rerenderPanels:function(){for(var t in this.callbacks){var n=this.$refs[t];-1!==this.layout.indexOf(t)&&(this.panels[t]&&this.panels[t].mounted||(n?(this.callbacks[t](n[0],{widget:this.panels[t]}),o.default.set(this.panels[t],"mounted",!0)):console.error("Failed to register panel in the frontend as no backend data was provided for "+t)))}},saveLayout:function(){A.default.post((0,u.generateUrl)("/apps/dashboard/layout"),{layout:this.layout.join(",")})},saveStatuses:function(){A.default.post((0,u.generateUrl)("/apps/dashboard/statuses"),{statuses:JSON.stringify(this.enabledStatuses)})},showModal:function(){this.modal=!0,this.firstRun=!1},closeModal:function(){this.modal=!1},updateCheckbox:function(t,n){var e=this,a=this.layout.indexOf(t.id);!n&&a>-1?this.layout.splice(a,1):this.layout.push(t.id),o.default.set(this.panels[t.id],"mounted",!1),this.saveLayout(),this.$nextTick((function(){return e.rerenderPanels()}))},disableFirstrunHint:function(){var t=this;window.removeEventListener("scroll",this.disableFirstrunHint),setTimeout((function(){t.firstRun=!1}),1e3)},updateBackground:function(t){this.background="custom"===t.type||"default"===t.type?t.type:t.value,this.version=t.version,this.updateGlobalStyles()},updateGlobalStyles:function(){document.body.setAttribute("data-dashboard-background",this.background),window.OCA.Theming.inverted&&document.body.classList.add("dashboard--inverted"),"dark"===(W[this.background]?W[this.background].theming:"light")?document.body.classList.add("dashboard--dark"):document.body.classList.remove("dashboard--dark")},updateSkipLink:function(){document.getElementsByClassName("skip-navigation")[0].setAttribute("href","#app-dashboard")},updateStatusCheckbox:function(t,n){n?this.enableStatus(t):this.disableStatus(t)},enableStatus:function(t){this.enabledStatuses[t]=!0,this.registerStatus(t,this.allCallbacksStatus[t]),this.saveStatuses()},disableStatus:function(t){var n=this;this.enabledStatuses[t]=!1;var e=this.registeredStatus.findIndex((function(n){return n===t}));-1!==e&&(this.registeredStatus.splice(e,1),o.default.set(this.statuses,t,{mounted:!1}),this.$nextTick((function(){o.default.delete(n.callbacksStatus,t)}))),this.saveStatuses()},sortStatuses:function(t,n){var e=t.toLowerCase(),a=n.toLowerCase();return e>a?1:e<a?-1:0},handleScroll:function(){window.scrollY>70?document.body.classList.add("dashboard--scrolled"):document.body.classList.remove("dashboard--scrolled")}}},Z=a(44326),H={};H.styleTagTransform=G(),H.setAttributes=D(),H.insert=S().bind(null,"head"),H.domAPI=w(),H.insertStyleElement=E(),x()(Z.Z,H),Z.Z&&Z.Z.locals&&Z.Z.locals;var Y=(0,j.Z)(q,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{style:t.backgroundStyle,attrs:{id:"app-dashboard"}},[e("h2",[t._v(t._s(t.greeting.text))]),t._v(" "),e("ul",{staticClass:"statuses"},t._l(t.sortedRegisteredStatus,(function(t){return e("div",{key:t,attrs:{id:"status-"+t}},[e("div",{ref:"status-"+t,refInFor:!0})])})),0),t._v(" "),e("Draggable",t._b({staticClass:"panels",attrs:{handle:".panel--header"},on:{end:t.saveLayout},model:{value:t.layout,callback:function(n){t.layout=n},expression:"layout"}},"Draggable",{swapThreshold:.3,delay:500,delayOnTouchOnly:!0,touchStartThreshold:3},!1),t._l(t.layout,(function(n){return e("div",{key:t.panels[n].id,staticClass:"panel"},[e("div",{staticClass:"panel--header"},[e("h2",{class:t.panels[n].iconClass},[t._v("\n\t\t\t\t\t"+t._s(t.panels[n].title)+"\n\t\t\t\t")])]),t._v(" "),e("div",{staticClass:"panel--content",class:{loading:!t.panels[n].mounted}},[e("div",{ref:t.panels[n].id,refInFor:!0,attrs:{"data-id":t.panels[n].id}})])])})),0),t._v(" "),e("div",{staticClass:"footer"},[e("a",{staticClass:"edit-panels icon-rename",attrs:{tabindex:"0"},on:{click:t.showModal,keyup:[function(n){return!n.type.indexOf("key")&&t._k(n.keyCode,"enter",13,n.key,"Enter")?null:t.showModal.apply(null,arguments)},function(n){return!n.type.indexOf("key")&&t._k(n.keyCode,"space",32,n.key,[" ","Spacebar"])?null:t.showModal.apply(null,arguments)}]}},[t._v(t._s(t.t("dashboard","Customize")))])]),t._v(" "),t.modal?e("Modal",{attrs:{size:"large"},on:{close:t.closeModal}},[e("div",{staticClass:"modal__content"},[e("h3",[t._v(t._s(t.t("dashboard","Edit widgets")))]),t._v(" "),e("ol",{staticClass:"panels"},t._l(t.sortedAllStatuses,(function(n){return e("li",{key:n},[e("input",{staticClass:"checkbox",attrs:{id:"status-checkbox-"+n,type:"checkbox"},domProps:{checked:t.isStatusActive(n)},on:{input:function(e){return t.updateStatusCheckbox(n,e.target.checked)}}}),t._v(" "),e("label",{class:t.statusInfo[n].icon,attrs:{for:"status-checkbox-"+n}},[t._v("\n\t\t\t\t\t\t"+t._s(t.statusInfo[n].text)+"\n\t\t\t\t\t")])])})),0),t._v(" "),e("Draggable",t._b({staticClass:"panels",attrs:{tag:"ol",handle:".draggable"},on:{end:t.saveLayout},model:{value:t.layout,callback:function(n){t.layout=n},expression:"layout"}},"Draggable",{swapThreshold:.3,delay:500,delayOnTouchOnly:!0,touchStartThreshold:3},!1),t._l(t.sortedPanels,(function(n){return e("li",{key:n.id},[e("input",{staticClass:"checkbox",attrs:{id:"panel-checkbox-"+n.id,type:"checkbox"},domProps:{checked:t.isActive(n)},on:{input:function(e){return t.updateCheckbox(n,e.target.checked)}}}),t._v(" "),e("label",{class:t.isActive(n)?"draggable "+n.iconClass:n.iconClass,attrs:{for:"panel-checkbox-"+n.id}},[t._v("\n\t\t\t\t\t\t"+t._s(n.title)+"\n\t\t\t\t\t")])])})),0),t._v(" "),t.isAdmin?e("a",{staticClass:"button",attrs:{href:t.appStoreUrl}},[t._v(t._s(t.t("dashboard","Get more widgets from the App Store")))]):t._e(),t._v(" "),e("h3",[t._v(t._s(t.t("dashboard","Change background image")))]),t._v(" "),e("BackgroundSettings",{attrs:{background:t.background,"theming-default-background":t.themingDefaultBackground},on:{"update:background":t.updateBackground}}),t._v(" "),e("h3",[t._v(t._s(t.t("dashboard","Weather service")))]),t._v(" "),e("p",[t._v("\n\t\t\t\t"+t._s(t.t("dashboard","For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information."))+"\n\t\t\t")]),t._v(" "),e("p",{staticClass:"credits--end"},[e("a",{attrs:{href:"https://api.met.no/doc/TermsOfService",target:"_blank",rel:"noopener"}},[t._v(t._s(t.t("dashboard","Weather data from Met.no")))]),t._v(",\n\t\t\t\t"),e("a",{attrs:{href:"https://wiki.osmfoundation.org/wiki/Privacy_Policy",target:"_blank",rel:"noopener"}},[t._v(t._s(t.t("dashboard","geocoding with Nominatim")))]),t._v(",\n\t\t\t\t"),e("a",{attrs:{href:"https://www.opentopodata.org/#public-api",target:"_blank",rel:"noopener"}},[t._v(t._s(t.t("dashboard","elevation data from OpenTopoData")))]),t._v(".\n\t\t\t")])],1)]):t._e()],1)}),[],!1,null,"af526754",null),$=Y.exports,K=a(9944),Q=a(15168),J=a.n(Q);a.nc=btoa((0,i.getRequestToken)()),o.default.directive("Tooltip",J()),o.default.prototype.t=K.translate,window.OCA.Files||(window.OCA.Files={}),Object.assign(window.OCA.Files,{App:{fileList:{filesClient:OC.Files.getClient()}}},window.OCA.Files);var V=new(o.default.extend($))({}).$mount("#app-content-vue");window.OCA.Dashboard={register:function(t,n){return V.register(t,n)},registerStatus:function(t,n){return V.registerStatus(t,n)}}},44326:function(t,n,e){var a=e(87537),o=e.n(a),r=e(23645),i=e.n(r)()(o());i.push([t.id,"#app-dashboard[data-v-af526754]{width:100%;min-height:100vh;background-size:cover;background-position:center center;background-repeat:no-repeat;background-attachment:fixed;background-color:var(--color-primary);--color-background-translucent: rgba(255, 255, 255, 0.8);--background-blur: blur(10px)}#body-user.theme--dark #app-dashboard[data-v-af526754]{background-color:var(--color-main-background);--color-background-translucent: rgba(24, 24, 24, 0.8)}#body-user.theme--highcontrast #app-dashboard[data-v-af526754]{background-color:var(--color-main-background);--color-background-translucent: var(--color-main-background)}#app-dashboard>h2[data-v-af526754]{color:var(--color-primary-text);text-align:center;font-size:32px;line-height:130%;padding:10vh 16px 0px}.panels[data-v-af526754]{width:auto;margin:auto;max-width:1500px;display:flex;justify-content:center;flex-direction:row;align-items:flex-start;flex-wrap:wrap}.panel[data-v-af526754],.panels>div[data-v-af526754]{width:320px;max-width:100%;margin:16px;background-color:var(--color-background-translucent);-webkit-backdrop-filter:var(--background-blur);backdrop-filter:var(--background-blur);border-radius:var(--border-radius-large)}#body-user.theme--highcontrast .panel[data-v-af526754],#body-user.theme--highcontrast .panels>div[data-v-af526754]{border:2px solid var(--color-border)}.panel.sortable-ghost[data-v-af526754],.panels>div.sortable-ghost[data-v-af526754]{opacity:.1}.panel>.panel--header[data-v-af526754],.panels>div>.panel--header[data-v-af526754]{display:flex;z-index:1;top:50px;padding:16px;cursor:grab}.panel>.panel--header[data-v-af526754],.panel>.panel--header[data-v-af526754] *,.panels>div>.panel--header[data-v-af526754],.panels>div>.panel--header[data-v-af526754] *{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.panel>.panel--header[data-v-af526754]:active,.panels>div>.panel--header[data-v-af526754]:active{cursor:grabbing}.panel>.panel--header a[data-v-af526754],.panels>div>.panel--header a[data-v-af526754]{flex-grow:1}.panel>.panel--header>h2[data-v-af526754],.panels>div>.panel--header>h2[data-v-af526754]{display:block;flex-grow:1;margin:0;font-size:20px;line-height:24px;font-weight:bold;background-size:32px;background-position:14px 12px;padding:16px 8px 16px 60px;height:56px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:grab}.panel>.panel--content[data-v-af526754],.panels>div>.panel--content[data-v-af526754]{margin:0 16px 16px 16px;height:420px;overflow:hidden}@media only screen and (max-width: 709px){.panel>.panel--content[data-v-af526754],.panels>div>.panel--content[data-v-af526754]{height:auto}}.footer[data-v-af526754]{text-align:center;transition:bottom var(--animation-slow) ease-in-out;bottom:0;padding:44px 0}.edit-panels[data-v-af526754]{display:inline-block;margin:auto;background-position:16px center;padding:12px 16px;padding-left:36px;border-radius:var(--border-radius-pill);max-width:200px;opacity:1;text-align:center}.edit-panels[data-v-af526754],.statuses[data-v-af526754] .action-item .action-item__menutoggle,.statuses[data-v-af526754] .action-item.action-item--open .action-item__menutoggle{background-color:var(--color-background-translucent);-webkit-backdrop-filter:var(--background-blur);backdrop-filter:var(--background-blur);opacity:1 !important}.edit-panels[data-v-af526754]:hover,.edit-panels[data-v-af526754]:focus,.edit-panels[data-v-af526754]:active,.statuses[data-v-af526754] .action-item .action-item__menutoggle:hover,.statuses[data-v-af526754] .action-item .action-item__menutoggle:focus,.statuses[data-v-af526754] .action-item .action-item__menutoggle:active,.statuses[data-v-af526754] .action-item.action-item--open .action-item__menutoggle:hover,.statuses[data-v-af526754] .action-item.action-item--open .action-item__menutoggle:focus,.statuses[data-v-af526754] .action-item.action-item--open .action-item__menutoggle:active{background-color:var(--color-background-hover) !important}.edit-panels[data-v-af526754]:focus-visible,.statuses[data-v-af526754] .action-item .action-item__menutoggle:focus-visible,.statuses[data-v-af526754] .action-item.action-item--open .action-item__menutoggle:focus-visible{border:2px solid var(--color-main-text) !important}.modal__content[data-v-af526754]{padding:32px 16px;text-align:center}.modal__content ol[data-v-af526754]{display:flex;flex-direction:row;justify-content:center;list-style-type:none;padding-bottom:16px}.modal__content li label[data-v-af526754]{position:relative;display:block;padding:48px 16px 14px 16px;margin:8px;width:140px;background-color:var(--color-background-hover);border:2px solid var(--color-main-background);border-radius:var(--border-radius-large);background-size:24px;background-position:16px 16px;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.modal__content li label[data-v-af526754]:hover{border-color:var(--color-primary)}.modal__content li input[type=checkbox].checkbox+label[data-v-af526754]:before{position:absolute;right:12px;top:16px}.modal__content li input:focus+label[data-v-af526754]{border-color:var(--color-primary)}.modal__content h3[data-v-af526754]{font-weight:bold}.modal__content h3[data-v-af526754]:not(:first-of-type){margin-top:64px}.modal__content .button[data-v-af526754]{display:inline-block;padding:10px 16px;margin:0}.modal__content p[data-v-af526754]{max-width:650px;margin:0 auto}.modal__content p a[data-v-af526754]:hover,.modal__content p a[data-v-af526754]:focus{border-bottom:2px solid var(--color-border)}.modal__content .credits--end[data-v-af526754]{padding-bottom:32px;color:var(--color-text-maxcontrast)}.modal__content .credits--end a[data-v-af526754]{color:var(--color-text-maxcontrast)}.flip-list-move[data-v-af526754]{transition:transform var(--animation-slow)}.statuses[data-v-af526754]{display:flex;flex-direction:row;justify-content:center;flex-wrap:wrap;margin-bottom:36px}.statuses>div[data-v-af526754]{margin:8px}","",{version:3,sources:["webpack://./apps/dashboard/src/App.vue"],names:[],mappings:"AAqZA,gCACC,UAAA,CACA,gBAAA,CACA,qBAAA,CACA,iCAAA,CACA,2BAAA,CACA,2BAAA,CACA,qCAAA,CACA,wDAAA,CACA,6BAAA,CAEA,uDACC,6CAAA,CACA,qDAAA,CAGD,+DACC,6CAAA,CACA,4DAAA,CAGD,mCACC,+BAAA,CACA,iBAAA,CACA,cAAA,CACA,gBAAA,CACA,qBAAA,CAIF,yBACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CACA,cAAA,CAGD,qDACC,WAAA,CACA,cAAA,CACA,WAAA,CACA,oDAAA,CACA,8CAAA,CACA,sCAAA,CACA,wCAAA,CAEA,mHACC,oCAAA,CAGD,mFACE,UAAA,CAGF,mFACC,YAAA,CACA,SAAA,CACA,QAAA,CACA,YAAA,CACA,WAAA,CAEA,4KACC,0BAAA,CACA,wBAAA,CACA,uBAAA,CACA,qBAAA,CACA,oBAAA,CACA,gBAAA,CAGD,iGACC,eAAA,CAGD,uFACC,WAAA,CAGD,yFACC,aAAA,CACA,WAAA,CACA,QAAA,CACA,cAAA,CACA,gBAAA,CACA,gBAAA,CACA,oBAAA,CACA,6BAAA,CACA,0BAAA,CACA,WAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CACA,WAAA,CAIF,qFACC,uBAAA,CACA,YAAA,CAEA,eAAA,CAID,0CACC,qFACC,WAAA,CAAA,CAKH,yBACC,iBAAA,CACA,mDAAA,CACA,QAAA,CACA,cAAA,CAGD,8BACC,oBAAA,CACA,WAAA,CACA,+BAAA,CACA,iBAAA,CACA,iBAAA,CACA,uCAAA,CACA,eAAA,CACA,SAAA,CACA,iBAAA,CAGD,oLAGC,oDAAA,CACA,8CAAA,CACA,sCAAA,CACA,oBAAA,CAEA,qlBAGC,yDAAA,CAED,8NACC,kDAAA,CAIF,iCACC,iBAAA,CACA,iBAAA,CAEA,oCACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,oBAAA,CACA,mBAAA,CAGA,0CACC,iBAAA,CACA,aAAA,CACA,2BAAA,CACA,UAAA,CACA,WAAA,CACA,8CAAA,CACA,6CAAA,CACA,wCAAA,CACA,oBAAA,CACA,6BAAA,CACA,eAAA,CACA,eAAA,CACA,sBAAA,CACA,kBAAA,CAEA,gDACC,iCAAA,CAIF,+EACC,iBAAA,CACA,UAAA,CACA,QAAA,CAGD,sDACC,iCAAA,CAIF,oCACC,gBAAA,CAEA,wDACC,eAAA,CAKF,yCACC,oBAAA,CACA,iBAAA,CACA,QAAA,CAGD,mCACC,eAAA,CACA,aAAA,CAEA,sFAEC,2CAAA,CAIF,+CACC,mBAAA,CACA,mCAAA,CAEA,iDACC,mCAAA,CAKH,iCACC,0CAAA,CAGD,2BACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,cAAA,CACA,kBAAA,CAEA,+BACC,UAAA",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n#app-dashboard {\n\twidth: 100%;\n\tmin-height: 100vh;\n\tbackground-size: cover;\n\tbackground-position: center center;\n\tbackground-repeat: no-repeat;\n\tbackground-attachment: fixed;\n\tbackground-color: var(--color-primary);\n\t--color-background-translucent: rgba(255, 255, 255, 0.8);\n\t--background-blur: blur(10px);\n\n\t#body-user.theme--dark & {\n\t\tbackground-color: var(--color-main-background);\n\t\t--color-background-translucent: rgba(24, 24, 24, 0.8);\n\t}\n\n\t#body-user.theme--highcontrast & {\n\t\tbackground-color: var(--color-main-background);\n\t\t--color-background-translucent: var(--color-main-background);\n\t}\n\n\t> h2 {\n\t\tcolor: var(--color-primary-text);\n\t\ttext-align: center;\n\t\tfont-size: 32px;\n\t\tline-height: 130%;\n\t\tpadding: 10vh 16px 0px;\n\t}\n}\n\n.panels {\n\twidth: auto;\n\tmargin: auto;\n\tmax-width: 1500px;\n\tdisplay: flex;\n\tjustify-content: center;\n\tflex-direction: row;\n\talign-items: flex-start;\n\tflex-wrap: wrap;\n}\n\n.panel, .panels > div {\n\twidth: 320px;\n\tmax-width: 100%;\n\tmargin: 16px;\n\tbackground-color: var(--color-background-translucent);\n\t-webkit-backdrop-filter: var(--background-blur);\n\tbackdrop-filter: var(--background-blur);\n\tborder-radius: var(--border-radius-large);\n\n\t#body-user.theme--highcontrast & {\n\t\tborder: 2px solid var(--color-border);\n\t}\n\n\t&.sortable-ghost {\n\t\t opacity: 0.1;\n\t}\n\n\t& > .panel--header {\n\t\tdisplay: flex;\n\t\tz-index: 1;\n\t\ttop: 50px;\n\t\tpadding: 16px;\n\t\tcursor: grab;\n\n\t\t&, ::v-deep * {\n\t\t\t-webkit-touch-callout: none;\n\t\t\t-webkit-user-select: none;\n\t\t\t-khtml-user-select: none;\n\t\t\t-moz-user-select: none;\n\t\t\t-ms-user-select: none;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&:active {\n\t\t\tcursor: grabbing;\n\t\t}\n\n\t\ta {\n\t\t\tflex-grow: 1;\n\t\t}\n\n\t\t> h2 {\n\t\t\tdisplay: block;\n\t\t\tflex-grow: 1;\n\t\t\tmargin: 0;\n\t\t\tfont-size: 20px;\n\t\t\tline-height: 24px;\n\t\t\tfont-weight: bold;\n\t\t\tbackground-size: 32px;\n\t\t\tbackground-position: 14px 12px;\n\t\t\tpadding: 16px 8px 16px 60px;\n\t\t\theight: 56px;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\tcursor: grab;\n\t\t}\n\t}\n\n\t& > .panel--content {\n\t\tmargin: 0 16px 16px 16px;\n\t\theight: 420px;\n\t\t// We specifically do not want scrollbars inside widgets\n\t\toverflow: hidden;\n\t}\n\n\t// No need to extend height of widgets if only one column is shown\n\t@media only screen and (max-width: 709px) {\n\t\t& > .panel--content {\n\t\t\theight: auto;\n\t\t}\n\t}\n}\n\n.footer {\n\ttext-align: center;\n\ttransition: bottom var(--animation-slow) ease-in-out;\n\tbottom: 0;\n\tpadding: 44px 0;\n}\n\n.edit-panels {\n\tdisplay: inline-block;\n\tmargin:auto;\n\tbackground-position: 16px center;\n\tpadding: 12px 16px;\n\tpadding-left: 36px;\n\tborder-radius: var(--border-radius-pill);\n\tmax-width: 200px;\n\topacity: 1;\n\ttext-align: center;\n}\n\n.edit-panels,\n.statuses ::v-deep .action-item .action-item__menutoggle,\n.statuses ::v-deep .action-item.action-item--open .action-item__menutoggle {\n\tbackground-color: var(--color-background-translucent);\n\t-webkit-backdrop-filter: var(--background-blur);\n\tbackdrop-filter: var(--background-blur);\n\topacity: 1 !important;\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbackground-color: var(--color-background-hover)!important;\n\t}\n\t&:focus-visible {\n\t\tborder: 2px solid var(--color-main-text)!important;\n\t}\n}\n\n.modal__content {\n\tpadding: 32px 16px;\n\ttext-align: center;\n\n\tol {\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\tjustify-content: center;\n\t\tlist-style-type: none;\n\t\tpadding-bottom: 16px;\n\t}\n\tli {\n\t\tlabel {\n\t\t\tposition: relative;\n\t\t\tdisplay: block;\n\t\t\tpadding: 48px 16px 14px 16px;\n\t\t\tmargin: 8px;\n\t\t\twidth: 140px;\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t\tborder: 2px solid var(--color-main-background);\n\t\t\tborder-radius: var(--border-radius-large);\n\t\t\tbackground-size: 24px;\n\t\t\tbackground-position: 16px 16px;\n\t\t\ttext-align: left;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\n\t\t\t&:hover {\n\t\t\t\tborder-color: var(--color-primary);\n\t\t\t}\n\t\t}\n\n\t\tinput[type='checkbox'].checkbox + label:before {\n\t\t\tposition: absolute;\n\t\t\tright: 12px;\n\t\t\ttop: 16px;\n\t\t}\n\n\t\tinput:focus + label {\n\t\t\tborder-color: var(--color-primary);\n\t\t}\n\t}\n\n\th3 {\n\t\tfont-weight: bold;\n\n\t\t&:not(:first-of-type) {\n\t\t\tmargin-top: 64px;\n\t\t}\n\t}\n\n\t// Adjust design of 'Get more widgets' button\n\t.button {\n\t\tdisplay: inline-block;\n\t\tpadding: 10px 16px;\n\t\tmargin: 0;\n\t}\n\n\tp {\n\t\tmax-width: 650px;\n\t\tmargin: 0 auto;\n\n\t\ta:hover,\n\t\ta:focus {\n\t\t\tborder-bottom: 2px solid var(--color-border);\n\t\t}\n\t}\n\n\t.credits--end {\n\t\tpadding-bottom: 32px;\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\ta {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n}\n\n.flip-list-move {\n\ttransition: transform var(--animation-slow);\n}\n\n.statuses {\n\tdisplay: flex;\n\tflex-direction: row;\n\tjustify-content: center;\n\tflex-wrap: wrap;\n\tmargin-bottom: 36px;\n\n\t& > div {\n\t\tmargin: 8px;\n\t}\n}\n"],sourceRoot:""}]),n.Z=i},56510:function(t,n,e){var a=e(87537),o=e.n(a),r=e(23645),i=e.n(r)()(o());i.push([t.id,'.background-selector[data-v-e4c3a7ca]{display:flex;flex-wrap:wrap;justify-content:center}.background-selector .background[data-v-e4c3a7ca]{width:176px;height:96px;margin:8px;background-size:cover;background-position:center center;text-align:center;border-radius:var(--border-radius-large);border:2px solid var(--color-main-background);overflow:hidden}.background-selector .background.current[data-v-e4c3a7ca]{background-image:var(--color-background-dark)}.background-selector .background.filepicker[data-v-e4c3a7ca],.background-selector .background.default[data-v-e4c3a7ca],.background-selector .background.color[data-v-e4c3a7ca]{border-color:var(--color-border)}.background-selector .background.color[data-v-e4c3a7ca]{background-color:var(--color-primary);color:var(--color-primary-text)}.background-selector .background.active[data-v-e4c3a7ca],.background-selector .background[data-v-e4c3a7ca]:hover,.background-selector .background[data-v-e4c3a7ca]:focus{border:2px solid var(--color-primary)}.background-selector .background.active[data-v-e4c3a7ca]:not(.icon-loading):after{background-image:var(--icon-checkmark-fff);background-repeat:no-repeat;background-position:center;background-size:44px;content:"";display:block;height:100%}body.theme--dark .background-selector .background.active[data-v-e4c3a7ca]:not(.icon-loading):after{background-image:var(--icon-checkmark-000)}',"",{version:3,sources:["webpack://./apps/dashboard/src/components/BackgroundSettings.vue"],names:[],mappings:"AA4IA,sCACC,YAAA,CACA,cAAA,CACA,sBAAA,CAEA,kDACC,WAAA,CACA,WAAA,CACA,UAAA,CACA,qBAAA,CACA,iCAAA,CACA,iBAAA,CACA,wCAAA,CACA,6CAAA,CACA,eAAA,CAEA,0DACC,6CAAA,CAGD,+KACC,gCAAA,CAGD,wDACC,qCAAA,CACA,+BAAA,CAGD,yKAGC,qCAAA,CAGD,kFACC,0CAAA,CACA,2BAAA,CACA,0BAAA,CACA,oBAAA,CACA,UAAA,CACA,aAAA,CACA,WAAA,CAEA,mGACC,0CAAA",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.background-selector {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tjustify-content: center;\n\n\t.background {\n\t\twidth: 176px;\n\t\theight: 96px;\n\t\tmargin: 8px;\n\t\tbackground-size: cover;\n\t\tbackground-position: center center;\n\t\ttext-align: center;\n\t\tborder-radius: var(--border-radius-large);\n\t\tborder: 2px solid var(--color-main-background);\n\t\toverflow: hidden;\n\n\t\t&.current {\n\t\t\tbackground-image: var(--color-background-dark);\n\t\t}\n\n\t\t&.filepicker, &.default, &.color {\n\t\t\tborder-color: var(--color-border);\n\t\t}\n\n\t\t&.color {\n\t\t\tbackground-color: var(--color-primary);\n\t\t\tcolor: var(--color-primary-text);\n\t\t}\n\n\t\t&.active,\n\t\t&:hover,\n\t\t&:focus {\n\t\t\tborder: 2px solid var(--color-primary);\n\t\t}\n\n\t\t&.active:not(.icon-loading):after {\n\t\t\tbackground-image: var(--icon-checkmark-fff);\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-position: center;\n\t\t\tbackground-size: 44px;\n\t\t\tcontent: '';\n\t\t\tdisplay: block;\n\t\t\theight: 100%;\n\n\t\t\tbody.theme--dark & {\n\t\t\t\tbackground-image: var(--icon-checkmark-000);\n\t\t\t}\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),n.Z=i}},a={};function o(t){var n=a[t];if(void 0!==n)return n.exports;var r=a[t]={id:t,loaded:!1,exports:{}};return e[t].call(r.exports,r,r.exports,o),r.loaded=!0,r.exports}o.m=e,o.amdD=function(){throw new Error("define cannot be used indirect")},o.amdO={},n=[],o.O=function(t,e,a,r){if(!e){var i=1/0;for(l=0;l<n.length;l++){e=n[l][0],a=n[l][1],r=n[l][2];for(var s=!0,d=0;d<e.length;d++)(!1&r||i>=r)&&Object.keys(o.O).every((function(t){return o.O[t](e[d])}))?e.splice(d--,1):(s=!1,r<i&&(i=r));if(s){n.splice(l--,1);var c=a();void 0!==c&&(t=c)}}return t}r=r||0;for(var l=n.length;l>0&&n[l-1][2]>r;l--)n[l]=n[l-1];n[l]=[e,a,r]},o.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(n,{a:n}),n},o.d=function(t,n){for(var e in n)o.o(n,e)&&!o.o(t,e)&&Object.defineProperty(t,e,{enumerable:!0,get:n[e]})},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),o.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},o.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},o.j=4773,function(){o.b=document.baseURI||self.location.href;var t={4773:0};o.O.j=function(n){return 0===t[n]};var n=function(n,e){var a,r,i=e[0],s=e[1],d=e[2],c=0;if(i.some((function(n){return 0!==t[n]}))){for(a in s)o.o(s,a)&&(o.m[a]=s[a]);if(d)var l=d(o)}for(n&&n(e);c<i.length;c++)r=i[c],o.o(t,r)&&t[r]&&t[r][0](),t[r]=0;return o.O(l)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(n.bind(null,0)),e.push=n.bind(null,e.push.bind(e))}(),o.nc=void 0;var r=o.O(void 0,[7874],(function(){return o(30320)}));r=o.O(r)}();
+//# sourceMappingURL=dashboard-main.js.map?v=8cc090cdfc8ebf9ddd49 \ No newline at end of file
diff --git a/dist/dashboard-main.js.map b/dist/dashboard-main.js.map
index b5f0b913fe6..540e62582ba 100644
--- a/dist/dashboard-main.js.map
+++ b/dist/dashboard-main.js.map
@@ -1 +1 @@
-{"version":3,"file":"dashboard-main.js?v=8ffb30e23fd986745925","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/dashboard/src/mixins/isMobile.js","webpack:///nextcloud/apps/dashboard/src/helpers/prefixWithBaseUrl.js","webpack:///nextcloud/apps/dashboard/src/helpers/getBackgroundUrl.js","webpack:///nextcloud/apps/dashboard/src/components/BackgroundSettings.vue","webpack:///nextcloud/apps/dashboard/src/components/BackgroundSettings.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/dashboard/src/components/BackgroundSettings.vue?8d16","webpack://nextcloud/./apps/dashboard/src/components/BackgroundSettings.vue?20a7","webpack:///nextcloud/apps/dashboard/src/components/BackgroundSettings.vue?vue&type=template&id=e4c3a7ca&scoped=true&","webpack:///nextcloud/apps/dashboard/src/App.vue","webpack:///nextcloud/apps/dashboard/src/App.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/dashboard/src/App.vue?1ed9","webpack://nextcloud/./apps/dashboard/src/App.vue?d9a5","webpack:///nextcloud/apps/dashboard/src/App.vue?vue&type=template&id=af526754&scoped=true&","webpack:///nextcloud/apps/dashboard/src/main.js","webpack:///nextcloud/apps/dashboard/src/App.vue?vue&type=style&index=0&id=af526754&lang=scss&scoped=true&","webpack:///nextcloud/apps/dashboard/src/components/BackgroundSettings.vue?vue&type=style&index=0&id=e4c3a7ca&scoped=true&lang=scss&","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 Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tisMobile: this._isMobile(),\n\t\t}\n\t},\n\tbeforeMount() {\n\t\twindow.addEventListener('resize', this._onResize)\n\t},\n\tbeforeDestroy() {\n\t\twindow.removeEventListener('resize', this._onResize)\n\t},\n\tmethods: {\n\t\t_onResize() {\n\t\t\t// Update mobile mode\n\t\t\tthis.isMobile = this._isMobile()\n\t\t},\n\t\t_isMobile() {\n\t\t\t// check if content width is under 768px\n\t\t\treturn document.documentElement.clientWidth < 768\n\t\t},\n\t},\n}\n","/**\n * @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nimport { generateFilePath } from '@nextcloud/router'\n\nexport default (url) => generateFilePath('dashboard', '', 'img/') + url\n","/**\n * @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n *\n * @author Avior <florian.bouillon@delta-wings.net>\n * @author Julien Veyssier <eneiluj@posteo.net>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nimport { generateUrl } from '@nextcloud/router'\nimport prefixWithBaseUrl from './prefixWithBaseUrl'\n\nexport default (background, time = 0, themingDefaultBackground = '') => {\n\tif (background === 'default') {\n\t\tif (themingDefaultBackground && themingDefaultBackground !== 'backgroundColor') {\n\t\t\treturn generateUrl('/apps/theming/image/background') + '?v=' + window.OCA.Theming.cacheBuster\n\t\t}\n\t\tif (window.OCA.Accessibility && window.OCA.Accessibility.theme === 'dark') {\n\t\t\treturn prefixWithBaseUrl('eduardo-neves-pedra-azul.jpg')\n\t\t}\n\t\treturn prefixWithBaseUrl('kamil-porembinski-clouds.jpg')\n\t} else if (background === 'custom') {\n\t\treturn generateUrl('/apps/dashboard/background') + '?v=' + time\n\t}\n\treturn prefixWithBaseUrl(background)\n}\n","<!--\n - @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<div class=\"background-selector\">\n\t\t<button class=\"background filepicker\"\n\t\t\t:class=\"{ active: background === 'custom' }\"\n\t\t\ttabindex=\"0\"\n\t\t\t@click=\"pickFile\">\n\t\t\t{{ t('dashboard', 'Pick from Files') }}\n\t\t</button>\n\t\t<button class=\"background default\"\n\t\t\ttabindex=\"0\"\n\t\t\t:class=\"{ 'icon-loading': loading === 'default', active: background === 'default' }\"\n\t\t\t@click=\"setDefault\">\n\t\t\t{{ t('dashboard', 'Default images') }}\n\t\t</button>\n\t\t<button class=\"background color\"\n\t\t\t:class=\"{ active: background === 'custom' }\"\n\t\t\ttabindex=\"0\"\n\t\t\t@click=\"pickColor\">\n\t\t\t{{ t('dashboard', 'Plain background') }}\n\t\t</button>\n\t\t<button v-for=\"shippedBackground in shippedBackgrounds\"\n\t\t\t:key=\"shippedBackground.name\"\n\t\t\tv-tooltip=\"shippedBackground.details.attribution\"\n\t\t\t:class=\"{ 'icon-loading': loading === shippedBackground.name, active: background === shippedBackground.name }\"\n\t\t\ttabindex=\"0\"\n\t\t\tclass=\"background\"\n\t\t\t:style=\"{ 'background-image': 'url(' + shippedBackground.preview + ')' }\"\n\t\t\t@click=\"setShipped(shippedBackground.name)\" />\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport getBackgroundUrl from './../helpers/getBackgroundUrl'\nimport prefixWithBaseUrl from './../helpers/prefixWithBaseUrl'\nconst shippedBackgroundList = loadState('dashboard', 'shippedBackgrounds')\n\nexport default {\n\tname: 'BackgroundSettings',\n\tprops: {\n\t\tbackground: {\n\t\t\ttype: String,\n\t\t\tdefault: 'default',\n\t\t},\n\t\tthemingDefaultBackground: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tbackgroundImage: generateUrl('/apps/dashboard/background') + '?v=' + Date.now(),\n\t\t\tloading: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tshippedBackgrounds() {\n\t\t\treturn Object.keys(shippedBackgroundList).map((item) => {\n\t\t\t\treturn {\n\t\t\t\t\tname: item,\n\t\t\t\t\turl: prefixWithBaseUrl(item),\n\t\t\t\t\tpreview: prefixWithBaseUrl('previews/' + item),\n\t\t\t\t\tdetails: shippedBackgroundList[item],\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t},\n\tmethods: {\n\t\tasync update(data) {\n\t\t\tconst background = data.type === 'custom' || data.type === 'default' ? data.type : data.value\n\t\t\tthis.backgroundImage = getBackgroundUrl(background, data.version, this.themingDefaultBackground)\n\t\t\tif (data.type === 'color' || (data.type === 'default' && this.themingDefaultBackground === 'backgroundColor')) {\n\t\t\t\tthis.$emit('update:background', data)\n\t\t\t\tthis.loading = false\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst image = new Image()\n\t\t\timage.onload = () => {\n\t\t\t\tthis.$emit('update:background', data)\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t\timage.src = this.backgroundImage\n\t\t},\n\t\tasync setDefault() {\n\t\t\tthis.loading = 'default'\n\t\t\tconst result = await axios.post(generateUrl('/apps/dashboard/background/default'))\n\t\t\tthis.update(result.data)\n\t\t},\n\t\tasync setShipped(shipped) {\n\t\t\tthis.loading = shipped\n\t\t\tconst result = await axios.post(generateUrl('/apps/dashboard/background/shipped'), { value: shipped })\n\t\t\tthis.update(result.data)\n\t\t},\n\t\tasync setFile(path) {\n\t\t\tthis.loading = 'custom'\n\t\t\tconst result = await axios.post(generateUrl('/apps/dashboard/background/custom'), { value: path })\n\t\t\tthis.update(result.data)\n\t\t},\n\t\tasync pickColor() {\n\t\t\tthis.loading = 'color'\n\t\t\tconst color = OCA && OCA.Theming ? OCA.Theming.color : '#0082c9'\n\t\t\tconst result = await axios.post(generateUrl('/apps/dashboard/background/color'), { value: color })\n\t\t\tthis.update(result.data)\n\t\t},\n\t\tpickFile() {\n\t\t\twindow.OC.dialogs.filepicker(t('dashboard', 'Insert from {productName}', { productName: OC.theme.name }), (path, type) => {\n\t\t\t\tif (type === OC.dialogs.FILEPICKER_TYPE_CHOOSE) {\n\t\t\t\t\tthis.setFile(path)\n\t\t\t\t}\n\t\t\t}, false, ['image/png', 'image/gif', 'image/jpeg', 'image/svg'], true, OC.dialogs.FILEPICKER_TYPE_CHOOSE)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.background-selector {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tjustify-content: center;\n\n\t.background {\n\t\twidth: 176px;\n\t\theight: 96px;\n\t\tmargin: 8px;\n\t\tbackground-size: cover;\n\t\tbackground-position: center center;\n\t\ttext-align: center;\n\t\tborder-radius: var(--border-radius-large);\n\t\tborder: 2px solid var(--color-main-background);\n\t\toverflow: hidden;\n\n\t\t&.current {\n\t\t\tbackground-image: var(--color-background-dark);\n\t\t}\n\n\t\t&.filepicker, &.default, &.color {\n\t\t\tborder-color: var(--color-border);\n\t\t}\n\n\t\t&.color {\n\t\t\tbackground-color: var(--color-primary);\n\t\t\tcolor: var(--color-primary-text);\n\t\t}\n\n\t\t&.active,\n\t\t&:hover,\n\t\t&:focus {\n\t\t\tborder: 2px solid var(--color-primary);\n\t\t}\n\n\t\t&.active:not(.icon-loading):after {\n\t\t\tbackground-image: var(--icon-checkmark-fff);\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-position: center;\n\t\t\tbackground-size: 44px;\n\t\t\tcontent: '';\n\t\t\tdisplay: block;\n\t\t\theight: 100%;\n\n\t\t\tbody.theme--dark & {\n\t\t\t\tbackground-image: var(--icon-checkmark-000);\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.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!./BackgroundSettings.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!./BackgroundSettings.vue?vue&type=style&index=0&id=e4c3a7ca&scoped=true&lang=scss&\";\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!./BackgroundSettings.vue?vue&type=style&index=0&id=e4c3a7ca&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./BackgroundSettings.vue?vue&type=template&id=e4c3a7ca&scoped=true&\"\nimport script from \"./BackgroundSettings.vue?vue&type=script&lang=js&\"\nexport * from \"./BackgroundSettings.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BackgroundSettings.vue?vue&type=style&index=0&id=e4c3a7ca&scoped=true&lang=scss&\"\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 \"e4c3a7ca\",\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:\"background-selector\"},[_c('button',{staticClass:\"background filepicker\",class:{ active: _vm.background === 'custom' },attrs:{\"tabindex\":\"0\"},on:{\"click\":_vm.pickFile}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('dashboard', 'Pick from Files'))+\"\\n\\t\")]),_vm._v(\" \"),_c('button',{staticClass:\"background default\",class:{ 'icon-loading': _vm.loading === 'default', active: _vm.background === 'default' },attrs:{\"tabindex\":\"0\"},on:{\"click\":_vm.setDefault}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('dashboard', 'Default images'))+\"\\n\\t\")]),_vm._v(\" \"),_c('button',{staticClass:\"background color\",class:{ active: _vm.background === 'custom' },attrs:{\"tabindex\":\"0\"},on:{\"click\":_vm.pickColor}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('dashboard', 'Plain background'))+\"\\n\\t\")]),_vm._v(\" \"),_vm._l((_vm.shippedBackgrounds),function(shippedBackground){return _c('button',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(shippedBackground.details.attribution),expression:\"shippedBackground.details.attribution\"}],key:shippedBackground.name,staticClass:\"background\",class:{ 'icon-loading': _vm.loading === shippedBackground.name, active: _vm.background === shippedBackground.name },style:({ 'background-image': 'url(' + shippedBackground.preview + ')' }),attrs:{\"tabindex\":\"0\"},on:{\"click\":function($event){return _vm.setShipped(shippedBackground.name)}}})})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<div id=\"app-dashboard\" :style=\"backgroundStyle\">\n\t\t<h2>{{ greeting.text }}</h2>\n\t\t<ul class=\"statuses\">\n\t\t\t<div v-for=\"status in sortedRegisteredStatus\"\n\t\t\t\t:id=\"'status-' + status\"\n\t\t\t\t:key=\"status\">\n\t\t\t\t<div :ref=\"'status-' + status\" />\n\t\t\t</div>\n\t\t</ul>\n\n\t\t<Draggable v-model=\"layout\"\n\t\t\tclass=\"panels\"\n\t\t\tv-bind=\"{swapThreshold: 0.30, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3}\"\n\t\t\thandle=\".panel--header\"\n\t\t\t@end=\"saveLayout\">\n\t\t\t<div v-for=\"panelId in layout\" :key=\"panels[panelId].id\" class=\"panel\">\n\t\t\t\t<div class=\"panel--header\">\n\t\t\t\t\t<h2 :class=\"panels[panelId].iconClass\">\n\t\t\t\t\t\t{{ panels[panelId].title }}\n\t\t\t\t\t</h2>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"panel--content\" :class=\"{ loading: !panels[panelId].mounted }\">\n\t\t\t\t\t<div :ref=\"panels[panelId].id\" :data-id=\"panels[panelId].id\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</Draggable>\n\n\t\t<div class=\"footer\">\n\t\t\t<a class=\"edit-panels icon-rename\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t\t@click=\"showModal\"\n\t\t\t\t@keyup.enter=\"showModal\"\n\t\t\t\t@keyup.space=\"showModal\">{{ t('dashboard', 'Customize') }}</a>\n\t\t</div>\n\n\t\t<Modal v-if=\"modal\" size=\"large\" @close=\"closeModal\">\n\t\t\t<div class=\"modal__content\">\n\t\t\t\t<h3>{{ t('dashboard', 'Edit widgets') }}</h3>\n\t\t\t\t<ol class=\"panels\">\n\t\t\t\t\t<li v-for=\"status in sortedAllStatuses\" :key=\"status\">\n\t\t\t\t\t\t<input :id=\"'status-checkbox-' + status\"\n\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\tclass=\"checkbox\"\n\t\t\t\t\t\t\t:checked=\"isStatusActive(status)\"\n\t\t\t\t\t\t\t@input=\"updateStatusCheckbox(status, $event.target.checked)\">\n\t\t\t\t\t\t<label :for=\"'status-checkbox-' + status\" :class=\"statusInfo[status].icon\">\n\t\t\t\t\t\t\t{{ statusInfo[status].text }}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t</li>\n\t\t\t\t</ol>\n\t\t\t\t<Draggable v-model=\"layout\"\n\t\t\t\t\tclass=\"panels\"\n\t\t\t\t\ttag=\"ol\"\n\t\t\t\t\tv-bind=\"{swapThreshold: 0.30, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3}\"\n\t\t\t\t\thandle=\".draggable\"\n\t\t\t\t\t@end=\"saveLayout\">\n\t\t\t\t\t<li v-for=\"panel in sortedPanels\" :key=\"panel.id\">\n\t\t\t\t\t\t<input :id=\"'panel-checkbox-' + panel.id\"\n\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\tclass=\"checkbox\"\n\t\t\t\t\t\t\t:checked=\"isActive(panel)\"\n\t\t\t\t\t\t\t@input=\"updateCheckbox(panel, $event.target.checked)\">\n\t\t\t\t\t\t<label :for=\"'panel-checkbox-' + panel.id\" :class=\"isActive(panel) ? 'draggable ' + panel.iconClass : panel.iconClass\">\n\t\t\t\t\t\t\t{{ panel.title }}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t</li>\n\t\t\t\t</Draggable>\n\n\t\t\t\t<a v-if=\"isAdmin\" :href=\"appStoreUrl\" class=\"button\">{{ t('dashboard', 'Get more widgets from the App Store') }}</a>\n\n\t\t\t\t<h3>{{ t('dashboard', 'Change background image') }}</h3>\n\t\t\t\t<BackgroundSettings :background=\"background\"\n\t\t\t\t\t:theming-default-background=\"themingDefaultBackground\"\n\t\t\t\t\t@update:background=\"updateBackground\" />\n\n\t\t\t\t<h3>{{ t('dashboard', 'Weather service') }}</h3>\n\t\t\t\t<p>\n\t\t\t\t\t{{ t('dashboard', 'For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information.') }}\n\t\t\t\t</p>\n\t\t\t\t<p class=\"credits--end\">\n\t\t\t\t\t<a href=\"https://api.met.no/doc/TermsOfService\" target=\"_blank\" rel=\"noopener\">{{ t('dashboard', 'Weather data from Met.no') }}</a>,\n\t\t\t\t\t<a href=\"https://wiki.osmfoundation.org/wiki/Privacy_Policy\" target=\"_blank\" rel=\"noopener\">{{ t('dashboard', 'geocoding with Nominatim') }}</a>,\n\t\t\t\t\t<a href=\"https://www.opentopodata.org/#public-api\" target=\"_blank\" rel=\"noopener\">{{ t('dashboard', 'elevation data from OpenTopoData') }}</a>.\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t</Modal>\n\t</div>\n</template>\n\n<script>\nimport Vue from 'vue'\nimport { loadState } from '@nextcloud/initial-state'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport Modal from '@nextcloud/vue/dist/Components/Modal'\nimport Draggable from 'vuedraggable'\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\nimport isMobile from './mixins/isMobile'\nimport BackgroundSettings from './components/BackgroundSettings'\nimport getBackgroundUrl from './helpers/getBackgroundUrl'\n\nconst panels = loadState('dashboard', 'panels')\nconst firstRun = loadState('dashboard', 'firstRun')\nconst background = loadState('dashboard', 'background')\nconst themingDefaultBackground = loadState('dashboard', 'themingDefaultBackground')\nconst version = loadState('dashboard', 'version')\nconst shippedBackgroundList = loadState('dashboard', 'shippedBackgrounds')\nconst statusInfo = {\n\tweather: {\n\t\ttext: t('dashboard', 'Weather'),\n\t\ticon: 'icon-weather-status',\n\t},\n\tstatus: {\n\t\ttext: t('dashboard', 'Status'),\n\t\ticon: 'icon-user-status-online',\n\t},\n}\n\nexport default {\n\tname: 'App',\n\tcomponents: {\n\t\tModal,\n\t\tDraggable,\n\t\tBackgroundSettings,\n\t},\n\tmixins: [\n\t\tisMobile,\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tisAdmin: getCurrentUser().isAdmin,\n\t\t\ttimer: new Date(),\n\t\t\tregisteredStatus: [],\n\t\t\tcallbacks: {},\n\t\t\tcallbacksStatus: {},\n\t\t\tallCallbacksStatus: {},\n\t\t\tstatusInfo,\n\t\t\tenabledStatuses: loadState('dashboard', 'statuses'),\n\t\t\tpanels,\n\t\t\tfirstRun,\n\t\t\tdisplayName: getCurrentUser()?.displayName,\n\t\t\tuid: getCurrentUser()?.uid,\n\t\t\tlayout: loadState('dashboard', 'layout').filter((panelId) => panels[panelId]),\n\t\t\tmodal: false,\n\t\t\tappStoreUrl: generateUrl('/settings/apps/dashboard'),\n\t\t\tstatuses: {},\n\t\t\tbackground,\n\t\t\tthemingDefaultBackground,\n\t\t\tversion,\n\t\t}\n\t},\n\tcomputed: {\n\t\tbackgroundImage() {\n\t\t\treturn getBackgroundUrl(this.background, this.version, this.themingDefaultBackground)\n\t\t},\n\t\tbackgroundStyle() {\n\t\t\tif ((this.background === 'default' && this.themingDefaultBackground === 'backgroundColor')\n\t\t\t\t|| this.background.match(/#[0-9A-Fa-f]{6}/g)) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tbackgroundImage: `url(${this.backgroundImage})`,\n\t\t\t}\n\t\t},\n\t\tgreeting() {\n\t\t\tconst time = this.timer.getHours()\n\n\t\t\t// Determine part of the day\n\t\t\tlet partOfDay\n\t\t\tif (time >= 22 || time < 5) {\n\t\t\t\tpartOfDay = 'night'\n\t\t\t} else if (time >= 18) {\n\t\t\t\tpartOfDay = 'evening'\n\t\t\t} else if (time >= 12) {\n\t\t\t\tpartOfDay = 'afternoon'\n\t\t\t} else {\n\t\t\t\tpartOfDay = 'morning'\n\t\t\t}\n\n\t\t\t// Define the greetings\n\t\t\tconst good = {\n\t\t\t\tmorning: {\n\t\t\t\t\tgeneric: t('dashboard', 'Good morning'),\n\t\t\t\t\twithName: t('dashboard', 'Good morning, {name}', { name: this.displayName }, undefined, { escape: false }),\n\t\t\t\t},\n\t\t\t\tafternoon: {\n\t\t\t\t\tgeneric: t('dashboard', 'Good afternoon'),\n\t\t\t\t\twithName: t('dashboard', 'Good afternoon, {name}', { name: this.displayName }, undefined, { escape: false }),\n\t\t\t\t},\n\t\t\t\tevening: {\n\t\t\t\t\tgeneric: t('dashboard', 'Good evening'),\n\t\t\t\t\twithName: t('dashboard', 'Good evening, {name}', { name: this.displayName }, undefined, { escape: false }),\n\t\t\t\t},\n\t\t\t\tnight: {\n\t\t\t\t\t// Don't use \"Good night\" as it's not a greeting\n\t\t\t\t\tgeneric: t('dashboard', 'Hello'),\n\t\t\t\t\twithName: t('dashboard', 'Hello, {name}', { name: this.displayName }, undefined, { escape: false }),\n\t\t\t\t},\n\t\t\t}\n\n\t\t\t// Figure out which greeting to show\n\t\t\tconst shouldShowName = this.displayName && this.uid !== this.displayName\n\t\t\treturn { text: shouldShowName ? good[partOfDay].withName : good[partOfDay].generic }\n\t\t},\n\t\tisActive() {\n\t\t\treturn (panel) => this.layout.indexOf(panel.id) > -1\n\t\t},\n\t\tisStatusActive() {\n\t\t\treturn (status) => !(status in this.enabledStatuses) || this.enabledStatuses[status]\n\t\t},\n\t\tsortedAllStatuses() {\n\t\t\treturn Object.keys(this.allCallbacksStatus).slice().sort(this.sortStatuses)\n\t\t},\n\t\tsortedPanels() {\n\t\t\treturn Object.values(this.panels).sort((a, b) => {\n\t\t\t\tconst indexA = this.layout.indexOf(a.id)\n\t\t\t\tconst indexB = this.layout.indexOf(b.id)\n\t\t\t\tif (indexA === -1 || indexB === -1) {\n\t\t\t\t\treturn indexB - indexA || a.id - b.id\n\t\t\t\t}\n\t\t\t\treturn indexA - indexB || a.id - b.id\n\t\t\t})\n\t\t},\n\t\tsortedRegisteredStatus() {\n\t\t\treturn this.registeredStatus.slice().sort(this.sortStatuses)\n\t\t},\n\t},\n\twatch: {\n\t\tcallbacks() {\n\t\t\tthis.rerenderPanels()\n\t\t},\n\t\tcallbacksStatus() {\n\t\t\tfor (const app in this.callbacksStatus) {\n\t\t\t\tconst element = this.$refs['status-' + app]\n\t\t\t\tif (this.statuses[app] && this.statuses[app].mounted) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (element) {\n\t\t\t\t\tthis.callbacksStatus[app](element[0])\n\t\t\t\t\tVue.set(this.statuses, app, { mounted: true })\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('Failed to register panel in the frontend as no backend data was provided for ' + app)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.updateGlobalStyles()\n\t\tthis.updateSkipLink()\n\t\twindow.addEventListener('scroll', this.handleScroll)\n\n\t\tsetInterval(() => {\n\t\t\tthis.timer = new Date()\n\t\t}, 30000)\n\n\t\tif (this.firstRun) {\n\t\t\twindow.addEventListener('scroll', this.disableFirstrunHint)\n\t\t}\n\t},\n\tdestroyed() {\n\t\twindow.removeEventListener('scroll', this.handleScroll)\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Method to register panels that will be called by the integrating apps\n\t\t *\n\t\t * @param {string} app The unique app id for the widget\n\t\t * @param {Function} callback The callback function to register a panel which gets the DOM element passed as parameter\n\t\t */\n\t\tregister(app, callback) {\n\t\t\tVue.set(this.callbacks, app, callback)\n\t\t},\n\t\tregisterStatus(app, callback) {\n\t\t\t// always save callbacks in case user enables the status later\n\t\t\tVue.set(this.allCallbacksStatus, app, callback)\n\t\t\t// register only if status is enabled or missing from config\n\t\t\tif (this.isStatusActive(app)) {\n\t\t\t\tthis.registeredStatus.push(app)\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tVue.set(this.callbacksStatus, app, callback)\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\t\trerenderPanels() {\n\t\t\tfor (const app in this.callbacks) {\n\t\t\t\tconst element = this.$refs[app]\n\t\t\t\tif (this.layout.indexOf(app) === -1) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (this.panels[app] && this.panels[app].mounted) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (element) {\n\t\t\t\t\tthis.callbacks[app](element[0], {\n\t\t\t\t\t\twidget: this.panels[app],\n\t\t\t\t\t})\n\t\t\t\t\tVue.set(this.panels[app], 'mounted', true)\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('Failed to register panel in the frontend as no backend data was provided for ' + app)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tsaveLayout() {\n\t\t\taxios.post(generateUrl('/apps/dashboard/layout'), {\n\t\t\t\tlayout: this.layout.join(','),\n\t\t\t})\n\t\t},\n\t\tsaveStatuses() {\n\t\t\taxios.post(generateUrl('/apps/dashboard/statuses'), {\n\t\t\t\tstatuses: JSON.stringify(this.enabledStatuses),\n\t\t\t})\n\t\t},\n\t\tshowModal() {\n\t\t\tthis.modal = true\n\t\t\tthis.firstRun = false\n\t\t},\n\t\tcloseModal() {\n\t\t\tthis.modal = false\n\t\t},\n\t\tupdateCheckbox(panel, currentValue) {\n\t\t\tconst index = this.layout.indexOf(panel.id)\n\t\t\tif (!currentValue && index > -1) {\n\t\t\t\tthis.layout.splice(index, 1)\n\n\t\t\t} else {\n\t\t\t\tthis.layout.push(panel.id)\n\t\t\t}\n\t\t\tVue.set(this.panels[panel.id], 'mounted', false)\n\t\t\tthis.saveLayout()\n\t\t\tthis.$nextTick(() => this.rerenderPanels())\n\t\t},\n\t\tdisableFirstrunHint() {\n\t\t\twindow.removeEventListener('scroll', this.disableFirstrunHint)\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.firstRun = false\n\t\t\t}, 1000)\n\t\t},\n\t\tupdateBackground(data) {\n\t\t\tthis.background = data.type === 'custom' || data.type === 'default' ? data.type : data.value\n\t\t\tthis.version = data.version\n\t\t\tthis.updateGlobalStyles()\n\t\t},\n\t\tupdateGlobalStyles() {\n\t\t\tdocument.body.setAttribute('data-dashboard-background', this.background)\n\t\t\tif (window.OCA.Theming.inverted) {\n\t\t\t\tdocument.body.classList.add('dashboard--inverted')\n\t\t\t}\n\n\t\t\tconst shippedBackgroundTheme = shippedBackgroundList[this.background] ? shippedBackgroundList[this.background].theming : 'light'\n\t\t\tif (shippedBackgroundTheme === 'dark') {\n\t\t\t\tdocument.body.classList.add('dashboard--dark')\n\t\t\t} else {\n\t\t\t\tdocument.body.classList.remove('dashboard--dark')\n\t\t\t}\n\t\t},\n\t\tupdateSkipLink() {\n\t\t\t// Make sure \"Skip to main content\" link points to the app content\n\t\t\tdocument.getElementsByClassName('skip-navigation')[0].setAttribute('href', '#app-dashboard')\n\t\t},\n\t\tupdateStatusCheckbox(app, checked) {\n\t\t\tif (checked) {\n\t\t\t\tthis.enableStatus(app)\n\t\t\t} else {\n\t\t\t\tthis.disableStatus(app)\n\t\t\t}\n\t\t},\n\t\tenableStatus(app) {\n\t\t\tthis.enabledStatuses[app] = true\n\t\t\tthis.registerStatus(app, this.allCallbacksStatus[app])\n\t\t\tthis.saveStatuses()\n\t\t},\n\t\tdisableStatus(app) {\n\t\t\tthis.enabledStatuses[app] = false\n\t\t\tconst i = this.registeredStatus.findIndex((s) => s === app)\n\t\t\tif (i !== -1) {\n\t\t\t\tthis.registeredStatus.splice(i, 1)\n\t\t\t\tVue.set(this.statuses, app, { mounted: false })\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tVue.delete(this.callbacksStatus, app)\n\t\t\t\t})\n\t\t\t}\n\t\t\tthis.saveStatuses()\n\t\t},\n\t\tsortStatuses(a, b) {\n\t\t\tconst al = a.toLowerCase()\n\t\t\tconst bl = b.toLowerCase()\n\t\t\treturn al > bl\n\t\t\t\t? 1\n\t\t\t\t: al < bl\n\t\t\t\t\t? -1\n\t\t\t\t\t: 0\n\t\t},\n\t\thandleScroll() {\n\t\t\tif (window.scrollY > 70) {\n\t\t\t\tdocument.body.classList.add('dashboard--scrolled')\n\t\t\t} else {\n\t\t\t\tdocument.body.classList.remove('dashboard--scrolled')\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n#app-dashboard {\n\twidth: 100%;\n\tmin-height: 100vh;\n\tbackground-size: cover;\n\tbackground-position: center center;\n\tbackground-repeat: no-repeat;\n\tbackground-attachment: fixed;\n\tbackground-color: var(--color-primary);\n\t--color-background-translucent: rgba(255, 255, 255, 0.8);\n\t--background-blur: blur(10px);\n\n\t#body-user.theme--dark & {\n\t\tbackground-color: var(--color-main-background);\n\t\t--color-background-translucent: rgba(24, 24, 24, 0.8);\n\t}\n\n\t#body-user.theme--highcontrast & {\n\t\tbackground-color: var(--color-main-background);\n\t\t--color-background-translucent: var(--color-main-background);\n\t}\n\n\t> h2 {\n\t\tcolor: var(--color-primary-text);\n\t\ttext-align: center;\n\t\tfont-size: 32px;\n\t\tline-height: 130%;\n\t\tpadding: 10vh 16px 0px;\n\t}\n}\n\n.panels {\n\twidth: auto;\n\tmargin: auto;\n\tmax-width: 1500px;\n\tdisplay: flex;\n\tjustify-content: center;\n\tflex-direction: row;\n\talign-items: flex-start;\n\tflex-wrap: wrap;\n}\n\n.panel, .panels > div {\n\twidth: 320px;\n\tmax-width: 100%;\n\tmargin: 16px;\n\tbackground-color: var(--color-background-translucent);\n\t-webkit-backdrop-filter: var(--background-blur);\n\tbackdrop-filter: var(--background-blur);\n\tborder-radius: var(--border-radius-large);\n\n\t#body-user.theme--highcontrast & {\n\t\tborder: 2px solid var(--color-border);\n\t}\n\n\t&.sortable-ghost {\n\t\t opacity: 0.1;\n\t}\n\n\t& > .panel--header {\n\t\tdisplay: flex;\n\t\tz-index: 1;\n\t\ttop: 50px;\n\t\tpadding: 16px;\n\t\tcursor: grab;\n\n\t\t&, ::v-deep * {\n\t\t\t-webkit-touch-callout: none;\n\t\t\t-webkit-user-select: none;\n\t\t\t-khtml-user-select: none;\n\t\t\t-moz-user-select: none;\n\t\t\t-ms-user-select: none;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&:active {\n\t\t\tcursor: grabbing;\n\t\t}\n\n\t\ta {\n\t\t\tflex-grow: 1;\n\t\t}\n\n\t\t> h2 {\n\t\t\tdisplay: block;\n\t\t\tflex-grow: 1;\n\t\t\tmargin: 0;\n\t\t\tfont-size: 20px;\n\t\t\tline-height: 24px;\n\t\t\tfont-weight: bold;\n\t\t\tbackground-size: 32px;\n\t\t\tbackground-position: 14px 12px;\n\t\t\tpadding: 16px 8px 16px 60px;\n\t\t\theight: 56px;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\tcursor: grab;\n\t\t}\n\t}\n\n\t& > .panel--content {\n\t\tmargin: 0 16px 16px 16px;\n\t\theight: 420px;\n\t\t// We specifically do not want scrollbars inside widgets\n\t\toverflow: hidden;\n\t}\n\n\t// No need to extend height of widgets if only one column is shown\n\t@media only screen and (max-width: 709px) {\n\t\t& > .panel--content {\n\t\t\theight: auto;\n\t\t}\n\t}\n}\n\n.footer {\n\ttext-align: center;\n\ttransition: bottom var(--animation-slow) ease-in-out;\n\tbottom: 0;\n\tpadding: 44px 0;\n}\n\n.edit-panels {\n\tdisplay: inline-block;\n\tmargin:auto;\n\tbackground-position: 16px center;\n\tpadding: 12px 16px;\n\tpadding-left: 36px;\n\tborder-radius: var(--border-radius-pill);\n\tmax-width: 200px;\n\topacity: 1;\n\ttext-align: center;\n}\n\n.edit-panels,\n.statuses ::v-deep .action-item .action-item__menutoggle,\n.statuses ::v-deep .action-item.action-item--open .action-item__menutoggle {\n\tbackground-color: var(--color-background-translucent);\n\t-webkit-backdrop-filter: var(--background-blur);\n\tbackdrop-filter: var(--background-blur);\n\topacity: 1 !important;\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbackground-color: var(--color-background-hover)!important;\n\t}\n\t&:focus-visible {\n\t\tborder: 2px solid var(--color-main-text)!important;\n\t}\n}\n\n.modal__content {\n\tpadding: 32px 16px;\n\ttext-align: center;\n\n\tol {\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\tjustify-content: center;\n\t\tlist-style-type: none;\n\t\tpadding-bottom: 16px;\n\t}\n\tli {\n\t\tlabel {\n\t\t\tposition: relative;\n\t\t\tdisplay: block;\n\t\t\tpadding: 48px 16px 14px 16px;\n\t\t\tmargin: 8px;\n\t\t\twidth: 140px;\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t\tborder: 2px solid var(--color-main-background);\n\t\t\tborder-radius: var(--border-radius-large);\n\t\t\tbackground-size: 24px;\n\t\t\tbackground-position: 16px 16px;\n\t\t\ttext-align: left;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\n\t\t\t&:hover {\n\t\t\t\tborder-color: var(--color-primary);\n\t\t\t}\n\t\t}\n\n\t\tinput[type='checkbox'].checkbox + label:before {\n\t\t\tposition: absolute;\n\t\t\tright: 12px;\n\t\t\ttop: 16px;\n\t\t}\n\n\t\tinput:focus + label {\n\t\t\tborder-color: var(--color-primary);\n\t\t}\n\t}\n\n\th3 {\n\t\tfont-weight: bold;\n\n\t\t&:not(:first-of-type) {\n\t\t\tmargin-top: 64px;\n\t\t}\n\t}\n\n\t// Adjust design of 'Get more widgets' button\n\t.button {\n\t\tdisplay: inline-block;\n\t\tpadding: 10px 16px;\n\t\tmargin: 0;\n\t}\n\n\tp {\n\t\tmax-width: 650px;\n\t\tmargin: 0 auto;\n\n\t\ta:hover,\n\t\ta:focus {\n\t\t\tborder-bottom: 2px solid var(--color-border);\n\t\t}\n\t}\n\n\t.credits--end {\n\t\tpadding-bottom: 32px;\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\ta {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n}\n\n.flip-list-move {\n\ttransition: transform var(--animation-slow);\n}\n\n.statuses {\n\tdisplay: flex;\n\tflex-direction: row;\n\tjustify-content: center;\n\tflex-wrap: wrap;\n\tmargin-bottom: 36px;\n\n\t& > div {\n\t\tmargin: 8px;\n\t}\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.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!./App.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!./App.vue?vue&type=style&index=0&id=af526754&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!./App.vue?vue&type=style&index=0&id=af526754&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=af526754&scoped=true&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=af526754&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 \"af526754\",\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',{style:(_vm.backgroundStyle),attrs:{\"id\":\"app-dashboard\"}},[_c('h2',[_vm._v(_vm._s(_vm.greeting.text))]),_vm._v(\" \"),_c('ul',{staticClass:\"statuses\"},_vm._l((_vm.sortedRegisteredStatus),function(status){return _c('div',{key:status,attrs:{\"id\":'status-' + status}},[_c('div',{ref:'status-' + status,refInFor:true})])}),0),_vm._v(\" \"),_c('Draggable',_vm._b({staticClass:\"panels\",attrs:{\"handle\":\".panel--header\"},on:{\"end\":_vm.saveLayout},model:{value:(_vm.layout),callback:function ($$v) {_vm.layout=$$v},expression:\"layout\"}},'Draggable',{swapThreshold: 0.30, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3},false),_vm._l((_vm.layout),function(panelId){return _c('div',{key:_vm.panels[panelId].id,staticClass:\"panel\"},[_c('div',{staticClass:\"panel--header\"},[_c('h2',{class:_vm.panels[panelId].iconClass},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.panels[panelId].title)+\"\\n\\t\\t\\t\\t\")])]),_vm._v(\" \"),_c('div',{staticClass:\"panel--content\",class:{ loading: !_vm.panels[panelId].mounted }},[_c('div',{ref:_vm.panels[panelId].id,refInFor:true,attrs:{\"data-id\":_vm.panels[panelId].id}})])])}),0),_vm._v(\" \"),_c('div',{staticClass:\"footer\"},[_c('a',{staticClass:\"edit-panels icon-rename\",attrs:{\"tabindex\":\"0\"},on:{\"click\":_vm.showModal,\"keyup\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.showModal.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"])){ return null; }return _vm.showModal.apply(null, arguments)}]}},[_vm._v(_vm._s(_vm.t('dashboard', 'Customize')))])]),_vm._v(\" \"),(_vm.modal)?_c('Modal',{attrs:{\"size\":\"large\"},on:{\"close\":_vm.closeModal}},[_c('div',{staticClass:\"modal__content\"},[_c('h3',[_vm._v(_vm._s(_vm.t('dashboard', 'Edit widgets')))]),_vm._v(\" \"),_c('ol',{staticClass:\"panels\"},_vm._l((_vm.sortedAllStatuses),function(status){return _c('li',{key:status},[_c('input',{staticClass:\"checkbox\",attrs:{\"id\":'status-checkbox-' + status,\"type\":\"checkbox\"},domProps:{\"checked\":_vm.isStatusActive(status)},on:{\"input\":function($event){return _vm.updateStatusCheckbox(status, $event.target.checked)}}}),_vm._v(\" \"),_c('label',{class:_vm.statusInfo[status].icon,attrs:{\"for\":'status-checkbox-' + status}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.statusInfo[status].text)+\"\\n\\t\\t\\t\\t\\t\")])])}),0),_vm._v(\" \"),_c('Draggable',_vm._b({staticClass:\"panels\",attrs:{\"tag\":\"ol\",\"handle\":\".draggable\"},on:{\"end\":_vm.saveLayout},model:{value:(_vm.layout),callback:function ($$v) {_vm.layout=$$v},expression:\"layout\"}},'Draggable',{swapThreshold: 0.30, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3},false),_vm._l((_vm.sortedPanels),function(panel){return _c('li',{key:panel.id},[_c('input',{staticClass:\"checkbox\",attrs:{\"id\":'panel-checkbox-' + panel.id,\"type\":\"checkbox\"},domProps:{\"checked\":_vm.isActive(panel)},on:{\"input\":function($event){return _vm.updateCheckbox(panel, $event.target.checked)}}}),_vm._v(\" \"),_c('label',{class:_vm.isActive(panel) ? 'draggable ' + panel.iconClass : panel.iconClass,attrs:{\"for\":'panel-checkbox-' + panel.id}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(panel.title)+\"\\n\\t\\t\\t\\t\\t\")])])}),0),_vm._v(\" \"),(_vm.isAdmin)?_c('a',{staticClass:\"button\",attrs:{\"href\":_vm.appStoreUrl}},[_vm._v(_vm._s(_vm.t('dashboard', 'Get more widgets from the App Store')))]):_vm._e(),_vm._v(\" \"),_c('h3',[_vm._v(_vm._s(_vm.t('dashboard', 'Change background image')))]),_vm._v(\" \"),_c('BackgroundSettings',{attrs:{\"background\":_vm.background,\"theming-default-background\":_vm.themingDefaultBackground},on:{\"update:background\":_vm.updateBackground}}),_vm._v(\" \"),_c('h3',[_vm._v(_vm._s(_vm.t('dashboard', 'Weather service')))]),_vm._v(\" \"),_c('p',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('dashboard', 'For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information.'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('p',{staticClass:\"credits--end\"},[_c('a',{attrs:{\"href\":\"https://api.met.no/doc/TermsOfService\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(_vm._s(_vm.t('dashboard', 'Weather data from Met.no')))]),_vm._v(\",\\n\\t\\t\\t\\t\"),_c('a',{attrs:{\"href\":\"https://wiki.osmfoundation.org/wiki/Privacy_Policy\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(_vm._s(_vm.t('dashboard', 'geocoding with Nominatim')))]),_vm._v(\",\\n\\t\\t\\t\\t\"),_c('a',{attrs:{\"href\":\"https://www.opentopodata.org/#public-api\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(_vm._s(_vm.t('dashboard', 'elevation data from OpenTopoData')))]),_vm._v(\".\\n\\t\\t\\t\")])],1)]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2016 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nimport Vue from 'vue'\nimport App from './App.vue'\nimport { translate as t } from '@nextcloud/l10n'\nimport VTooltip from '@nextcloud/vue/dist/Directives/Tooltip'\nimport { getRequestToken } from '@nextcloud/auth'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nVue.directive('Tooltip', VTooltip)\n\nVue.prototype.t = t\n\n// FIXME workaround to make the sidebar work\nif (!window.OCA.Files) {\n\twindow.OCA.Files = {}\n}\n\nObject.assign(window.OCA.Files, { App: { fileList: { filesClient: OC.Files.getClient() } } }, window.OCA.Files)\n\nconst Dashboard = Vue.extend(App)\nconst Instance = new Dashboard({}).$mount('#app-content-vue')\n\nwindow.OCA.Dashboard = {\n\tregister: (app, callback) => Instance.register(app, callback),\n\tregisterStatus: (app, callback) => Instance.registerStatus(app, callback),\n}\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, \"#app-dashboard[data-v-af526754]{width:100%;min-height:100vh;background-size:cover;background-position:center center;background-repeat:no-repeat;background-attachment:fixed;background-color:var(--color-primary);--color-background-translucent: rgba(255, 255, 255, 0.8);--background-blur: blur(10px)}#body-user.theme--dark #app-dashboard[data-v-af526754]{background-color:var(--color-main-background);--color-background-translucent: rgba(24, 24, 24, 0.8)}#body-user.theme--highcontrast #app-dashboard[data-v-af526754]{background-color:var(--color-main-background);--color-background-translucent: var(--color-main-background)}#app-dashboard>h2[data-v-af526754]{color:var(--color-primary-text);text-align:center;font-size:32px;line-height:130%;padding:10vh 16px 0px}.panels[data-v-af526754]{width:auto;margin:auto;max-width:1500px;display:flex;justify-content:center;flex-direction:row;align-items:flex-start;flex-wrap:wrap}.panel[data-v-af526754],.panels>div[data-v-af526754]{width:320px;max-width:100%;margin:16px;background-color:var(--color-background-translucent);-webkit-backdrop-filter:var(--background-blur);backdrop-filter:var(--background-blur);border-radius:var(--border-radius-large)}#body-user.theme--highcontrast .panel[data-v-af526754],#body-user.theme--highcontrast .panels>div[data-v-af526754]{border:2px solid var(--color-border)}.panel.sortable-ghost[data-v-af526754],.panels>div.sortable-ghost[data-v-af526754]{opacity:.1}.panel>.panel--header[data-v-af526754],.panels>div>.panel--header[data-v-af526754]{display:flex;z-index:1;top:50px;padding:16px;cursor:grab}.panel>.panel--header[data-v-af526754],.panel>.panel--header[data-v-af526754] *,.panels>div>.panel--header[data-v-af526754],.panels>div>.panel--header[data-v-af526754] *{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.panel>.panel--header[data-v-af526754]:active,.panels>div>.panel--header[data-v-af526754]:active{cursor:grabbing}.panel>.panel--header a[data-v-af526754],.panels>div>.panel--header a[data-v-af526754]{flex-grow:1}.panel>.panel--header>h2[data-v-af526754],.panels>div>.panel--header>h2[data-v-af526754]{display:block;flex-grow:1;margin:0;font-size:20px;line-height:24px;font-weight:bold;background-size:32px;background-position:14px 12px;padding:16px 8px 16px 60px;height:56px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:grab}.panel>.panel--content[data-v-af526754],.panels>div>.panel--content[data-v-af526754]{margin:0 16px 16px 16px;height:420px;overflow:hidden}@media only screen and (max-width: 709px){.panel>.panel--content[data-v-af526754],.panels>div>.panel--content[data-v-af526754]{height:auto}}.footer[data-v-af526754]{text-align:center;transition:bottom var(--animation-slow) ease-in-out;bottom:0;padding:44px 0}.edit-panels[data-v-af526754]{display:inline-block;margin:auto;background-position:16px center;padding:12px 16px;padding-left:36px;border-radius:var(--border-radius-pill);max-width:200px;opacity:1;text-align:center}.edit-panels[data-v-af526754],.statuses[data-v-af526754] .action-item .action-item__menutoggle,.statuses[data-v-af526754] .action-item.action-item--open .action-item__menutoggle{background-color:var(--color-background-translucent);-webkit-backdrop-filter:var(--background-blur);backdrop-filter:var(--background-blur);opacity:1 !important}.edit-panels[data-v-af526754]:hover,.edit-panels[data-v-af526754]:focus,.edit-panels[data-v-af526754]:active,.statuses[data-v-af526754] .action-item .action-item__menutoggle:hover,.statuses[data-v-af526754] .action-item .action-item__menutoggle:focus,.statuses[data-v-af526754] .action-item .action-item__menutoggle:active,.statuses[data-v-af526754] .action-item.action-item--open .action-item__menutoggle:hover,.statuses[data-v-af526754] .action-item.action-item--open .action-item__menutoggle:focus,.statuses[data-v-af526754] .action-item.action-item--open .action-item__menutoggle:active{background-color:var(--color-background-hover) !important}.edit-panels[data-v-af526754]:focus-visible,.statuses[data-v-af526754] .action-item .action-item__menutoggle:focus-visible,.statuses[data-v-af526754] .action-item.action-item--open .action-item__menutoggle:focus-visible{border:2px solid var(--color-main-text) !important}.modal__content[data-v-af526754]{padding:32px 16px;text-align:center}.modal__content ol[data-v-af526754]{display:flex;flex-direction:row;justify-content:center;list-style-type:none;padding-bottom:16px}.modal__content li label[data-v-af526754]{position:relative;display:block;padding:48px 16px 14px 16px;margin:8px;width:140px;background-color:var(--color-background-hover);border:2px solid var(--color-main-background);border-radius:var(--border-radius-large);background-size:24px;background-position:16px 16px;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.modal__content li label[data-v-af526754]:hover{border-color:var(--color-primary)}.modal__content li input[type=checkbox].checkbox+label[data-v-af526754]:before{position:absolute;right:12px;top:16px}.modal__content li input:focus+label[data-v-af526754]{border-color:var(--color-primary)}.modal__content h3[data-v-af526754]{font-weight:bold}.modal__content h3[data-v-af526754]:not(:first-of-type){margin-top:64px}.modal__content .button[data-v-af526754]{display:inline-block;padding:10px 16px;margin:0}.modal__content p[data-v-af526754]{max-width:650px;margin:0 auto}.modal__content p a[data-v-af526754]:hover,.modal__content p a[data-v-af526754]:focus{border-bottom:2px solid var(--color-border)}.modal__content .credits--end[data-v-af526754]{padding-bottom:32px;color:var(--color-text-maxcontrast)}.modal__content .credits--end a[data-v-af526754]{color:var(--color-text-maxcontrast)}.flip-list-move[data-v-af526754]{transition:transform var(--animation-slow)}.statuses[data-v-af526754]{display:flex;flex-direction:row;justify-content:center;flex-wrap:wrap;margin-bottom:36px}.statuses>div[data-v-af526754]{margin:8px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/dashboard/src/App.vue\"],\"names\":[],\"mappings\":\"AAqZA,gCACC,UAAA,CACA,gBAAA,CACA,qBAAA,CACA,iCAAA,CACA,2BAAA,CACA,2BAAA,CACA,qCAAA,CACA,wDAAA,CACA,6BAAA,CAEA,uDACC,6CAAA,CACA,qDAAA,CAGD,+DACC,6CAAA,CACA,4DAAA,CAGD,mCACC,+BAAA,CACA,iBAAA,CACA,cAAA,CACA,gBAAA,CACA,qBAAA,CAIF,yBACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CACA,cAAA,CAGD,qDACC,WAAA,CACA,cAAA,CACA,WAAA,CACA,oDAAA,CACA,8CAAA,CACA,sCAAA,CACA,wCAAA,CAEA,mHACC,oCAAA,CAGD,mFACE,UAAA,CAGF,mFACC,YAAA,CACA,SAAA,CACA,QAAA,CACA,YAAA,CACA,WAAA,CAEA,4KACC,0BAAA,CACA,wBAAA,CACA,uBAAA,CACA,qBAAA,CACA,oBAAA,CACA,gBAAA,CAGD,iGACC,eAAA,CAGD,uFACC,WAAA,CAGD,yFACC,aAAA,CACA,WAAA,CACA,QAAA,CACA,cAAA,CACA,gBAAA,CACA,gBAAA,CACA,oBAAA,CACA,6BAAA,CACA,0BAAA,CACA,WAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CACA,WAAA,CAIF,qFACC,uBAAA,CACA,YAAA,CAEA,eAAA,CAID,0CACC,qFACC,WAAA,CAAA,CAKH,yBACC,iBAAA,CACA,mDAAA,CACA,QAAA,CACA,cAAA,CAGD,8BACC,oBAAA,CACA,WAAA,CACA,+BAAA,CACA,iBAAA,CACA,iBAAA,CACA,uCAAA,CACA,eAAA,CACA,SAAA,CACA,iBAAA,CAGD,oLAGC,oDAAA,CACA,8CAAA,CACA,sCAAA,CACA,oBAAA,CAEA,qlBAGC,yDAAA,CAED,8NACC,kDAAA,CAIF,iCACC,iBAAA,CACA,iBAAA,CAEA,oCACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,oBAAA,CACA,mBAAA,CAGA,0CACC,iBAAA,CACA,aAAA,CACA,2BAAA,CACA,UAAA,CACA,WAAA,CACA,8CAAA,CACA,6CAAA,CACA,wCAAA,CACA,oBAAA,CACA,6BAAA,CACA,eAAA,CACA,eAAA,CACA,sBAAA,CACA,kBAAA,CAEA,gDACC,iCAAA,CAIF,+EACC,iBAAA,CACA,UAAA,CACA,QAAA,CAGD,sDACC,iCAAA,CAIF,oCACC,gBAAA,CAEA,wDACC,eAAA,CAKF,yCACC,oBAAA,CACA,iBAAA,CACA,QAAA,CAGD,mCACC,eAAA,CACA,aAAA,CAEA,sFAEC,2CAAA,CAIF,+CACC,mBAAA,CACA,mCAAA,CAEA,iDACC,mCAAA,CAKH,iCACC,0CAAA,CAGD,2BACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,cAAA,CACA,kBAAA,CAEA,+BACC,UAAA\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n#app-dashboard {\\n\\twidth: 100%;\\n\\tmin-height: 100vh;\\n\\tbackground-size: cover;\\n\\tbackground-position: center center;\\n\\tbackground-repeat: no-repeat;\\n\\tbackground-attachment: fixed;\\n\\tbackground-color: var(--color-primary);\\n\\t--color-background-translucent: rgba(255, 255, 255, 0.8);\\n\\t--background-blur: blur(10px);\\n\\n\\t#body-user.theme--dark & {\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t--color-background-translucent: rgba(24, 24, 24, 0.8);\\n\\t}\\n\\n\\t#body-user.theme--highcontrast & {\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t--color-background-translucent: var(--color-main-background);\\n\\t}\\n\\n\\t> h2 {\\n\\t\\tcolor: var(--color-primary-text);\\n\\t\\ttext-align: center;\\n\\t\\tfont-size: 32px;\\n\\t\\tline-height: 130%;\\n\\t\\tpadding: 10vh 16px 0px;\\n\\t}\\n}\\n\\n.panels {\\n\\twidth: auto;\\n\\tmargin: auto;\\n\\tmax-width: 1500px;\\n\\tdisplay: flex;\\n\\tjustify-content: center;\\n\\tflex-direction: row;\\n\\talign-items: flex-start;\\n\\tflex-wrap: wrap;\\n}\\n\\n.panel, .panels > div {\\n\\twidth: 320px;\\n\\tmax-width: 100%;\\n\\tmargin: 16px;\\n\\tbackground-color: var(--color-background-translucent);\\n\\t-webkit-backdrop-filter: var(--background-blur);\\n\\tbackdrop-filter: var(--background-blur);\\n\\tborder-radius: var(--border-radius-large);\\n\\n\\t#body-user.theme--highcontrast & {\\n\\t\\tborder: 2px solid var(--color-border);\\n\\t}\\n\\n\\t&.sortable-ghost {\\n\\t\\t opacity: 0.1;\\n\\t}\\n\\n\\t& > .panel--header {\\n\\t\\tdisplay: flex;\\n\\t\\tz-index: 1;\\n\\t\\ttop: 50px;\\n\\t\\tpadding: 16px;\\n\\t\\tcursor: grab;\\n\\n\\t\\t&, ::v-deep * {\\n\\t\\t\\t-webkit-touch-callout: none;\\n\\t\\t\\t-webkit-user-select: none;\\n\\t\\t\\t-khtml-user-select: none;\\n\\t\\t\\t-moz-user-select: none;\\n\\t\\t\\t-ms-user-select: none;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&:active {\\n\\t\\t\\tcursor: grabbing;\\n\\t\\t}\\n\\n\\t\\ta {\\n\\t\\t\\tflex-grow: 1;\\n\\t\\t}\\n\\n\\t\\t> h2 {\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tflex-grow: 1;\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tfont-size: 20px;\\n\\t\\t\\tline-height: 24px;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tbackground-size: 32px;\\n\\t\\t\\tbackground-position: 14px 12px;\\n\\t\\t\\tpadding: 16px 8px 16px 60px;\\n\\t\\t\\theight: 56px;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\tcursor: grab;\\n\\t\\t}\\n\\t}\\n\\n\\t& > .panel--content {\\n\\t\\tmargin: 0 16px 16px 16px;\\n\\t\\theight: 420px;\\n\\t\\t// We specifically do not want scrollbars inside widgets\\n\\t\\toverflow: hidden;\\n\\t}\\n\\n\\t// No need to extend height of widgets if only one column is shown\\n\\t@media only screen and (max-width: 709px) {\\n\\t\\t& > .panel--content {\\n\\t\\t\\theight: auto;\\n\\t\\t}\\n\\t}\\n}\\n\\n.footer {\\n\\ttext-align: center;\\n\\ttransition: bottom var(--animation-slow) ease-in-out;\\n\\tbottom: 0;\\n\\tpadding: 44px 0;\\n}\\n\\n.edit-panels {\\n\\tdisplay: inline-block;\\n\\tmargin:auto;\\n\\tbackground-position: 16px center;\\n\\tpadding: 12px 16px;\\n\\tpadding-left: 36px;\\n\\tborder-radius: var(--border-radius-pill);\\n\\tmax-width: 200px;\\n\\topacity: 1;\\n\\ttext-align: center;\\n}\\n\\n.edit-panels,\\n.statuses ::v-deep .action-item .action-item__menutoggle,\\n.statuses ::v-deep .action-item.action-item--open .action-item__menutoggle {\\n\\tbackground-color: var(--color-background-translucent);\\n\\t-webkit-backdrop-filter: var(--background-blur);\\n\\tbackdrop-filter: var(--background-blur);\\n\\topacity: 1 !important;\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\tbackground-color: var(--color-background-hover)!important;\\n\\t}\\n\\t&:focus-visible {\\n\\t\\tborder: 2px solid var(--color-main-text)!important;\\n\\t}\\n}\\n\\n.modal__content {\\n\\tpadding: 32px 16px;\\n\\ttext-align: center;\\n\\n\\tol {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: row;\\n\\t\\tjustify-content: center;\\n\\t\\tlist-style-type: none;\\n\\t\\tpadding-bottom: 16px;\\n\\t}\\n\\tli {\\n\\t\\tlabel {\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tpadding: 48px 16px 14px 16px;\\n\\t\\t\\tmargin: 8px;\\n\\t\\t\\twidth: 140px;\\n\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t\\tborder: 2px solid var(--color-main-background);\\n\\t\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\t\\tbackground-size: 24px;\\n\\t\\t\\tbackground-position: 16px 16px;\\n\\t\\t\\ttext-align: left;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\n\\t\\t\\t&:hover {\\n\\t\\t\\t\\tborder-color: var(--color-primary);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\tinput[type='checkbox'].checkbox + label:before {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tright: 12px;\\n\\t\\t\\ttop: 16px;\\n\\t\\t}\\n\\n\\t\\tinput:focus + label {\\n\\t\\t\\tborder-color: var(--color-primary);\\n\\t\\t}\\n\\t}\\n\\n\\th3 {\\n\\t\\tfont-weight: bold;\\n\\n\\t\\t&:not(:first-of-type) {\\n\\t\\t\\tmargin-top: 64px;\\n\\t\\t}\\n\\t}\\n\\n\\t// Adjust design of 'Get more widgets' button\\n\\t.button {\\n\\t\\tdisplay: inline-block;\\n\\t\\tpadding: 10px 16px;\\n\\t\\tmargin: 0;\\n\\t}\\n\\n\\tp {\\n\\t\\tmax-width: 650px;\\n\\t\\tmargin: 0 auto;\\n\\n\\t\\ta:hover,\\n\\t\\ta:focus {\\n\\t\\t\\tborder-bottom: 2px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t.credits--end {\\n\\t\\tpadding-bottom: 32px;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\n\\t\\ta {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n}\\n\\n.flip-list-move {\\n\\ttransition: transform var(--animation-slow);\\n}\\n\\n.statuses {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\tjustify-content: center;\\n\\tflex-wrap: wrap;\\n\\tmargin-bottom: 36px;\\n\\n\\t& > div {\\n\\t\\tmargin: 8px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".background-selector[data-v-e4c3a7ca]{display:flex;flex-wrap:wrap;justify-content:center}.background-selector .background[data-v-e4c3a7ca]{width:176px;height:96px;margin:8px;background-size:cover;background-position:center center;text-align:center;border-radius:var(--border-radius-large);border:2px solid var(--color-main-background);overflow:hidden}.background-selector .background.current[data-v-e4c3a7ca]{background-image:var(--color-background-dark)}.background-selector .background.filepicker[data-v-e4c3a7ca],.background-selector .background.default[data-v-e4c3a7ca],.background-selector .background.color[data-v-e4c3a7ca]{border-color:var(--color-border)}.background-selector .background.color[data-v-e4c3a7ca]{background-color:var(--color-primary);color:var(--color-primary-text)}.background-selector .background.active[data-v-e4c3a7ca],.background-selector .background[data-v-e4c3a7ca]:hover,.background-selector .background[data-v-e4c3a7ca]:focus{border:2px solid var(--color-primary)}.background-selector .background.active[data-v-e4c3a7ca]:not(.icon-loading):after{background-image:var(--icon-checkmark-fff);background-repeat:no-repeat;background-position:center;background-size:44px;content:\\\"\\\";display:block;height:100%}body.theme--dark .background-selector .background.active[data-v-e4c3a7ca]:not(.icon-loading):after{background-image:var(--icon-checkmark-000)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/dashboard/src/components/BackgroundSettings.vue\"],\"names\":[],\"mappings\":\"AA4IA,sCACC,YAAA,CACA,cAAA,CACA,sBAAA,CAEA,kDACC,WAAA,CACA,WAAA,CACA,UAAA,CACA,qBAAA,CACA,iCAAA,CACA,iBAAA,CACA,wCAAA,CACA,6CAAA,CACA,eAAA,CAEA,0DACC,6CAAA,CAGD,+KACC,gCAAA,CAGD,wDACC,qCAAA,CACA,+BAAA,CAGD,yKAGC,qCAAA,CAGD,kFACC,0CAAA,CACA,2BAAA,CACA,0BAAA,CACA,oBAAA,CACA,UAAA,CACA,aAAA,CACA,WAAA,CAEA,mGACC,0CAAA\",\"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.background-selector {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tjustify-content: center;\\n\\n\\t.background {\\n\\t\\twidth: 176px;\\n\\t\\theight: 96px;\\n\\t\\tmargin: 8px;\\n\\t\\tbackground-size: cover;\\n\\t\\tbackground-position: center center;\\n\\t\\ttext-align: center;\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\tborder: 2px solid var(--color-main-background);\\n\\t\\toverflow: hidden;\\n\\n\\t\\t&.current {\\n\\t\\t\\tbackground-image: var(--color-background-dark);\\n\\t\\t}\\n\\n\\t\\t&.filepicker, &.default, &.color {\\n\\t\\t\\tborder-color: var(--color-border);\\n\\t\\t}\\n\\n\\t\\t&.color {\\n\\t\\t\\tbackground-color: var(--color-primary);\\n\\t\\t\\tcolor: var(--color-primary-text);\\n\\t\\t}\\n\\n\\t\\t&.active,\\n\\t\\t&:hover,\\n\\t\\t&:focus {\\n\\t\\t\\tborder: 2px solid var(--color-primary);\\n\\t\\t}\\n\\n\\t\\t&.active:not(.icon-loading):after {\\n\\t\\t\\tbackground-image: var(--icon-checkmark-fff);\\n\\t\\t\\tbackground-repeat: no-repeat;\\n\\t\\t\\tbackground-position: center;\\n\\t\\t\\tbackground-size: 44px;\\n\\t\\t\\tcontent: '';\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\theight: 100%;\\n\\n\\t\\t\\tbody.theme--dark & {\\n\\t\\t\\t\\tbackground-image: var(--icon-checkmark-000);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\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 = 4773;","__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\t4773: 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__(30320); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","data","isMobile","this","_isMobile","beforeMount","window","addEventListener","_onResize","beforeDestroy","removeEventListener","methods","document","documentElement","clientWidth","url","generateFilePath","background","time","themingDefaultBackground","generateUrl","OCA","Theming","cacheBuster","Accessibility","theme","prefixWithBaseUrl","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_h","$createElement","_c","_self","staticClass","class","active","attrs","on","pickFile","_v","_s","t","loading","setDefault","pickColor","_l","shippedBackground","directives","name","rawName","value","details","expression","key","style","preview","$event","setShipped","greeting","text","status","ref","refInFor","_b","saveLayout","model","callback","$$v","layout","swapThreshold","delay","delayOnTouchOnly","touchStartThreshold","panelId","panels","id","iconClass","title","mounted","showModal","type","indexOf","_k","keyCode","apply","arguments","closeModal","domProps","isStatusActive","updateStatusCheckbox","target","checked","statusInfo","icon","panel","isActive","updateCheckbox","appStoreUrl","_e","updateBackground","__webpack_nonce__","btoa","getRequestToken","Vue","VTooltip","Files","Object","assign","App","fileList","filesClient","OC","getClient","Instance","$mount","Dashboard","register","app","registerStatus","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","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":"dashboard-main.js?v=8cc090cdfc8ebf9ddd49","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/dashboard/src/mixins/isMobile.js","webpack:///nextcloud/apps/dashboard/src/helpers/prefixWithBaseUrl.js","webpack:///nextcloud/apps/dashboard/src/helpers/getBackgroundUrl.js","webpack:///nextcloud/apps/dashboard/src/components/BackgroundSettings.vue","webpack:///nextcloud/apps/dashboard/src/components/BackgroundSettings.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/dashboard/src/components/BackgroundSettings.vue?8d16","webpack://nextcloud/./apps/dashboard/src/components/BackgroundSettings.vue?20a7","webpack:///nextcloud/apps/dashboard/src/components/BackgroundSettings.vue?vue&type=template&id=e4c3a7ca&scoped=true&","webpack:///nextcloud/apps/dashboard/src/App.vue","webpack:///nextcloud/apps/dashboard/src/App.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/dashboard/src/App.vue?1ed9","webpack://nextcloud/./apps/dashboard/src/App.vue?d9a5","webpack:///nextcloud/apps/dashboard/src/App.vue?vue&type=template&id=af526754&scoped=true&","webpack:///nextcloud/apps/dashboard/src/main.js","webpack:///nextcloud/apps/dashboard/src/App.vue?vue&type=style&index=0&id=af526754&lang=scss&scoped=true&","webpack:///nextcloud/apps/dashboard/src/components/BackgroundSettings.vue?vue&type=style&index=0&id=e4c3a7ca&scoped=true&lang=scss&","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/runtime/nonce","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 Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tisMobile: this._isMobile(),\n\t\t}\n\t},\n\tbeforeMount() {\n\t\twindow.addEventListener('resize', this._onResize)\n\t},\n\tbeforeDestroy() {\n\t\twindow.removeEventListener('resize', this._onResize)\n\t},\n\tmethods: {\n\t\t_onResize() {\n\t\t\t// Update mobile mode\n\t\t\tthis.isMobile = this._isMobile()\n\t\t},\n\t\t_isMobile() {\n\t\t\t// check if content width is under 768px\n\t\t\treturn document.documentElement.clientWidth < 768\n\t\t},\n\t},\n}\n","/**\n * @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nimport { generateFilePath } from '@nextcloud/router'\n\nexport default (url) => generateFilePath('dashboard', '', 'img/') + url\n","/**\n * @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n *\n * @author Avior <florian.bouillon@delta-wings.net>\n * @author Julien Veyssier <eneiluj@posteo.net>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nimport { generateUrl } from '@nextcloud/router'\nimport prefixWithBaseUrl from './prefixWithBaseUrl'\n\nexport default (background, time = 0, themingDefaultBackground = '') => {\n\tif (background === 'default') {\n\t\tif (themingDefaultBackground && themingDefaultBackground !== 'backgroundColor') {\n\t\t\treturn generateUrl('/apps/theming/image/background') + '?v=' + window.OCA.Theming.cacheBuster\n\t\t}\n\t\tif (window.OCA.Accessibility && window.OCA.Accessibility.theme === 'dark') {\n\t\t\treturn prefixWithBaseUrl('eduardo-neves-pedra-azul.jpg')\n\t\t}\n\t\treturn prefixWithBaseUrl('kamil-porembinski-clouds.jpg')\n\t} else if (background === 'custom') {\n\t\treturn generateUrl('/apps/dashboard/background') + '?v=' + time\n\t}\n\treturn prefixWithBaseUrl(background)\n}\n","<!--\n - @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<div class=\"background-selector\">\n\t\t<button class=\"background filepicker\"\n\t\t\t:class=\"{ active: background === 'custom' }\"\n\t\t\ttabindex=\"0\"\n\t\t\t@click=\"pickFile\">\n\t\t\t{{ t('dashboard', 'Pick from Files') }}\n\t\t</button>\n\t\t<button class=\"background default\"\n\t\t\ttabindex=\"0\"\n\t\t\t:class=\"{ 'icon-loading': loading === 'default', active: background === 'default' }\"\n\t\t\t@click=\"setDefault\">\n\t\t\t{{ t('dashboard', 'Default images') }}\n\t\t</button>\n\t\t<button class=\"background color\"\n\t\t\t:class=\"{ active: background === 'custom' }\"\n\t\t\ttabindex=\"0\"\n\t\t\t@click=\"pickColor\">\n\t\t\t{{ t('dashboard', 'Plain background') }}\n\t\t</button>\n\t\t<button v-for=\"shippedBackground in shippedBackgrounds\"\n\t\t\t:key=\"shippedBackground.name\"\n\t\t\tv-tooltip=\"shippedBackground.details.attribution\"\n\t\t\t:class=\"{ 'icon-loading': loading === shippedBackground.name, active: background === shippedBackground.name }\"\n\t\t\ttabindex=\"0\"\n\t\t\tclass=\"background\"\n\t\t\t:style=\"{ 'background-image': 'url(' + shippedBackground.preview + ')' }\"\n\t\t\t@click=\"setShipped(shippedBackground.name)\" />\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport getBackgroundUrl from './../helpers/getBackgroundUrl'\nimport prefixWithBaseUrl from './../helpers/prefixWithBaseUrl'\nconst shippedBackgroundList = loadState('dashboard', 'shippedBackgrounds')\n\nexport default {\n\tname: 'BackgroundSettings',\n\tprops: {\n\t\tbackground: {\n\t\t\ttype: String,\n\t\t\tdefault: 'default',\n\t\t},\n\t\tthemingDefaultBackground: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tbackgroundImage: generateUrl('/apps/dashboard/background') + '?v=' + Date.now(),\n\t\t\tloading: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tshippedBackgrounds() {\n\t\t\treturn Object.keys(shippedBackgroundList).map((item) => {\n\t\t\t\treturn {\n\t\t\t\t\tname: item,\n\t\t\t\t\turl: prefixWithBaseUrl(item),\n\t\t\t\t\tpreview: prefixWithBaseUrl('previews/' + item),\n\t\t\t\t\tdetails: shippedBackgroundList[item],\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t},\n\tmethods: {\n\t\tasync update(data) {\n\t\t\tconst background = data.type === 'custom' || data.type === 'default' ? data.type : data.value\n\t\t\tthis.backgroundImage = getBackgroundUrl(background, data.version, this.themingDefaultBackground)\n\t\t\tif (data.type === 'color' || (data.type === 'default' && this.themingDefaultBackground === 'backgroundColor')) {\n\t\t\t\tthis.$emit('update:background', data)\n\t\t\t\tthis.loading = false\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst image = new Image()\n\t\t\timage.onload = () => {\n\t\t\t\tthis.$emit('update:background', data)\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t\timage.src = this.backgroundImage\n\t\t},\n\t\tasync setDefault() {\n\t\t\tthis.loading = 'default'\n\t\t\tconst result = await axios.post(generateUrl('/apps/dashboard/background/default'))\n\t\t\tthis.update(result.data)\n\t\t},\n\t\tasync setShipped(shipped) {\n\t\t\tthis.loading = shipped\n\t\t\tconst result = await axios.post(generateUrl('/apps/dashboard/background/shipped'), { value: shipped })\n\t\t\tthis.update(result.data)\n\t\t},\n\t\tasync setFile(path) {\n\t\t\tthis.loading = 'custom'\n\t\t\tconst result = await axios.post(generateUrl('/apps/dashboard/background/custom'), { value: path })\n\t\t\tthis.update(result.data)\n\t\t},\n\t\tasync pickColor() {\n\t\t\tthis.loading = 'color'\n\t\t\tconst color = OCA && OCA.Theming ? OCA.Theming.color : '#0082c9'\n\t\t\tconst result = await axios.post(generateUrl('/apps/dashboard/background/color'), { value: color })\n\t\t\tthis.update(result.data)\n\t\t},\n\t\tpickFile() {\n\t\t\twindow.OC.dialogs.filepicker(t('dashboard', 'Insert from {productName}', { productName: OC.theme.name }), (path, type) => {\n\t\t\t\tif (type === OC.dialogs.FILEPICKER_TYPE_CHOOSE) {\n\t\t\t\t\tthis.setFile(path)\n\t\t\t\t}\n\t\t\t}, false, ['image/png', 'image/gif', 'image/jpeg', 'image/svg'], true, OC.dialogs.FILEPICKER_TYPE_CHOOSE)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.background-selector {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tjustify-content: center;\n\n\t.background {\n\t\twidth: 176px;\n\t\theight: 96px;\n\t\tmargin: 8px;\n\t\tbackground-size: cover;\n\t\tbackground-position: center center;\n\t\ttext-align: center;\n\t\tborder-radius: var(--border-radius-large);\n\t\tborder: 2px solid var(--color-main-background);\n\t\toverflow: hidden;\n\n\t\t&.current {\n\t\t\tbackground-image: var(--color-background-dark);\n\t\t}\n\n\t\t&.filepicker, &.default, &.color {\n\t\t\tborder-color: var(--color-border);\n\t\t}\n\n\t\t&.color {\n\t\t\tbackground-color: var(--color-primary);\n\t\t\tcolor: var(--color-primary-text);\n\t\t}\n\n\t\t&.active,\n\t\t&:hover,\n\t\t&:focus {\n\t\t\tborder: 2px solid var(--color-primary);\n\t\t}\n\n\t\t&.active:not(.icon-loading):after {\n\t\t\tbackground-image: var(--icon-checkmark-fff);\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-position: center;\n\t\t\tbackground-size: 44px;\n\t\t\tcontent: '';\n\t\t\tdisplay: block;\n\t\t\theight: 100%;\n\n\t\t\tbody.theme--dark & {\n\t\t\t\tbackground-image: var(--icon-checkmark-000);\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.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!./BackgroundSettings.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!./BackgroundSettings.vue?vue&type=style&index=0&id=e4c3a7ca&scoped=true&lang=scss&\";\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!./BackgroundSettings.vue?vue&type=style&index=0&id=e4c3a7ca&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./BackgroundSettings.vue?vue&type=template&id=e4c3a7ca&scoped=true&\"\nimport script from \"./BackgroundSettings.vue?vue&type=script&lang=js&\"\nexport * from \"./BackgroundSettings.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BackgroundSettings.vue?vue&type=style&index=0&id=e4c3a7ca&scoped=true&lang=scss&\"\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 \"e4c3a7ca\",\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:\"background-selector\"},[_c('button',{staticClass:\"background filepicker\",class:{ active: _vm.background === 'custom' },attrs:{\"tabindex\":\"0\"},on:{\"click\":_vm.pickFile}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('dashboard', 'Pick from Files'))+\"\\n\\t\")]),_vm._v(\" \"),_c('button',{staticClass:\"background default\",class:{ 'icon-loading': _vm.loading === 'default', active: _vm.background === 'default' },attrs:{\"tabindex\":\"0\"},on:{\"click\":_vm.setDefault}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('dashboard', 'Default images'))+\"\\n\\t\")]),_vm._v(\" \"),_c('button',{staticClass:\"background color\",class:{ active: _vm.background === 'custom' },attrs:{\"tabindex\":\"0\"},on:{\"click\":_vm.pickColor}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('dashboard', 'Plain background'))+\"\\n\\t\")]),_vm._v(\" \"),_vm._l((_vm.shippedBackgrounds),function(shippedBackground){return _c('button',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(shippedBackground.details.attribution),expression:\"shippedBackground.details.attribution\"}],key:shippedBackground.name,staticClass:\"background\",class:{ 'icon-loading': _vm.loading === shippedBackground.name, active: _vm.background === shippedBackground.name },style:({ 'background-image': 'url(' + shippedBackground.preview + ')' }),attrs:{\"tabindex\":\"0\"},on:{\"click\":function($event){return _vm.setShipped(shippedBackground.name)}}})})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<div id=\"app-dashboard\" :style=\"backgroundStyle\">\n\t\t<h2>{{ greeting.text }}</h2>\n\t\t<ul class=\"statuses\">\n\t\t\t<div v-for=\"status in sortedRegisteredStatus\"\n\t\t\t\t:id=\"'status-' + status\"\n\t\t\t\t:key=\"status\">\n\t\t\t\t<div :ref=\"'status-' + status\" />\n\t\t\t</div>\n\t\t</ul>\n\n\t\t<Draggable v-model=\"layout\"\n\t\t\tclass=\"panels\"\n\t\t\tv-bind=\"{swapThreshold: 0.30, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3}\"\n\t\t\thandle=\".panel--header\"\n\t\t\t@end=\"saveLayout\">\n\t\t\t<div v-for=\"panelId in layout\" :key=\"panels[panelId].id\" class=\"panel\">\n\t\t\t\t<div class=\"panel--header\">\n\t\t\t\t\t<h2 :class=\"panels[panelId].iconClass\">\n\t\t\t\t\t\t{{ panels[panelId].title }}\n\t\t\t\t\t</h2>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"panel--content\" :class=\"{ loading: !panels[panelId].mounted }\">\n\t\t\t\t\t<div :ref=\"panels[panelId].id\" :data-id=\"panels[panelId].id\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</Draggable>\n\n\t\t<div class=\"footer\">\n\t\t\t<a class=\"edit-panels icon-rename\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t\t@click=\"showModal\"\n\t\t\t\t@keyup.enter=\"showModal\"\n\t\t\t\t@keyup.space=\"showModal\">{{ t('dashboard', 'Customize') }}</a>\n\t\t</div>\n\n\t\t<Modal v-if=\"modal\" size=\"large\" @close=\"closeModal\">\n\t\t\t<div class=\"modal__content\">\n\t\t\t\t<h3>{{ t('dashboard', 'Edit widgets') }}</h3>\n\t\t\t\t<ol class=\"panels\">\n\t\t\t\t\t<li v-for=\"status in sortedAllStatuses\" :key=\"status\">\n\t\t\t\t\t\t<input :id=\"'status-checkbox-' + status\"\n\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\tclass=\"checkbox\"\n\t\t\t\t\t\t\t:checked=\"isStatusActive(status)\"\n\t\t\t\t\t\t\t@input=\"updateStatusCheckbox(status, $event.target.checked)\">\n\t\t\t\t\t\t<label :for=\"'status-checkbox-' + status\" :class=\"statusInfo[status].icon\">\n\t\t\t\t\t\t\t{{ statusInfo[status].text }}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t</li>\n\t\t\t\t</ol>\n\t\t\t\t<Draggable v-model=\"layout\"\n\t\t\t\t\tclass=\"panels\"\n\t\t\t\t\ttag=\"ol\"\n\t\t\t\t\tv-bind=\"{swapThreshold: 0.30, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3}\"\n\t\t\t\t\thandle=\".draggable\"\n\t\t\t\t\t@end=\"saveLayout\">\n\t\t\t\t\t<li v-for=\"panel in sortedPanels\" :key=\"panel.id\">\n\t\t\t\t\t\t<input :id=\"'panel-checkbox-' + panel.id\"\n\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\tclass=\"checkbox\"\n\t\t\t\t\t\t\t:checked=\"isActive(panel)\"\n\t\t\t\t\t\t\t@input=\"updateCheckbox(panel, $event.target.checked)\">\n\t\t\t\t\t\t<label :for=\"'panel-checkbox-' + panel.id\" :class=\"isActive(panel) ? 'draggable ' + panel.iconClass : panel.iconClass\">\n\t\t\t\t\t\t\t{{ panel.title }}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t</li>\n\t\t\t\t</Draggable>\n\n\t\t\t\t<a v-if=\"isAdmin\" :href=\"appStoreUrl\" class=\"button\">{{ t('dashboard', 'Get more widgets from the App Store') }}</a>\n\n\t\t\t\t<h3>{{ t('dashboard', 'Change background image') }}</h3>\n\t\t\t\t<BackgroundSettings :background=\"background\"\n\t\t\t\t\t:theming-default-background=\"themingDefaultBackground\"\n\t\t\t\t\t@update:background=\"updateBackground\" />\n\n\t\t\t\t<h3>{{ t('dashboard', 'Weather service') }}</h3>\n\t\t\t\t<p>\n\t\t\t\t\t{{ t('dashboard', 'For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information.') }}\n\t\t\t\t</p>\n\t\t\t\t<p class=\"credits--end\">\n\t\t\t\t\t<a href=\"https://api.met.no/doc/TermsOfService\" target=\"_blank\" rel=\"noopener\">{{ t('dashboard', 'Weather data from Met.no') }}</a>,\n\t\t\t\t\t<a href=\"https://wiki.osmfoundation.org/wiki/Privacy_Policy\" target=\"_blank\" rel=\"noopener\">{{ t('dashboard', 'geocoding with Nominatim') }}</a>,\n\t\t\t\t\t<a href=\"https://www.opentopodata.org/#public-api\" target=\"_blank\" rel=\"noopener\">{{ t('dashboard', 'elevation data from OpenTopoData') }}</a>.\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t</Modal>\n\t</div>\n</template>\n\n<script>\nimport Vue from 'vue'\nimport { loadState } from '@nextcloud/initial-state'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport Modal from '@nextcloud/vue/dist/Components/Modal'\nimport Draggable from 'vuedraggable'\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\nimport isMobile from './mixins/isMobile'\nimport BackgroundSettings from './components/BackgroundSettings'\nimport getBackgroundUrl from './helpers/getBackgroundUrl'\n\nconst panels = loadState('dashboard', 'panels')\nconst firstRun = loadState('dashboard', 'firstRun')\nconst background = loadState('dashboard', 'background')\nconst themingDefaultBackground = loadState('dashboard', 'themingDefaultBackground')\nconst version = loadState('dashboard', 'version')\nconst shippedBackgroundList = loadState('dashboard', 'shippedBackgrounds')\nconst statusInfo = {\n\tweather: {\n\t\ttext: t('dashboard', 'Weather'),\n\t\ticon: 'icon-weather-status',\n\t},\n\tstatus: {\n\t\ttext: t('dashboard', 'Status'),\n\t\ticon: 'icon-user-status-online',\n\t},\n}\n\nexport default {\n\tname: 'App',\n\tcomponents: {\n\t\tModal,\n\t\tDraggable,\n\t\tBackgroundSettings,\n\t},\n\tmixins: [\n\t\tisMobile,\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tisAdmin: getCurrentUser().isAdmin,\n\t\t\ttimer: new Date(),\n\t\t\tregisteredStatus: [],\n\t\t\tcallbacks: {},\n\t\t\tcallbacksStatus: {},\n\t\t\tallCallbacksStatus: {},\n\t\t\tstatusInfo,\n\t\t\tenabledStatuses: loadState('dashboard', 'statuses'),\n\t\t\tpanels,\n\t\t\tfirstRun,\n\t\t\tdisplayName: getCurrentUser()?.displayName,\n\t\t\tuid: getCurrentUser()?.uid,\n\t\t\tlayout: loadState('dashboard', 'layout').filter((panelId) => panels[panelId]),\n\t\t\tmodal: false,\n\t\t\tappStoreUrl: generateUrl('/settings/apps/dashboard'),\n\t\t\tstatuses: {},\n\t\t\tbackground,\n\t\t\tthemingDefaultBackground,\n\t\t\tversion,\n\t\t}\n\t},\n\tcomputed: {\n\t\tbackgroundImage() {\n\t\t\treturn getBackgroundUrl(this.background, this.version, this.themingDefaultBackground)\n\t\t},\n\t\tbackgroundStyle() {\n\t\t\tif ((this.background === 'default' && this.themingDefaultBackground === 'backgroundColor')\n\t\t\t\t|| this.background.match(/#[0-9A-Fa-f]{6}/g)) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tbackgroundImage: `url(${this.backgroundImage})`,\n\t\t\t}\n\t\t},\n\t\tgreeting() {\n\t\t\tconst time = this.timer.getHours()\n\n\t\t\t// Determine part of the day\n\t\t\tlet partOfDay\n\t\t\tif (time >= 22 || time < 5) {\n\t\t\t\tpartOfDay = 'night'\n\t\t\t} else if (time >= 18) {\n\t\t\t\tpartOfDay = 'evening'\n\t\t\t} else if (time >= 12) {\n\t\t\t\tpartOfDay = 'afternoon'\n\t\t\t} else {\n\t\t\t\tpartOfDay = 'morning'\n\t\t\t}\n\n\t\t\t// Define the greetings\n\t\t\tconst good = {\n\t\t\t\tmorning: {\n\t\t\t\t\tgeneric: t('dashboard', 'Good morning'),\n\t\t\t\t\twithName: t('dashboard', 'Good morning, {name}', { name: this.displayName }, undefined, { escape: false }),\n\t\t\t\t},\n\t\t\t\tafternoon: {\n\t\t\t\t\tgeneric: t('dashboard', 'Good afternoon'),\n\t\t\t\t\twithName: t('dashboard', 'Good afternoon, {name}', { name: this.displayName }, undefined, { escape: false }),\n\t\t\t\t},\n\t\t\t\tevening: {\n\t\t\t\t\tgeneric: t('dashboard', 'Good evening'),\n\t\t\t\t\twithName: t('dashboard', 'Good evening, {name}', { name: this.displayName }, undefined, { escape: false }),\n\t\t\t\t},\n\t\t\t\tnight: {\n\t\t\t\t\t// Don't use \"Good night\" as it's not a greeting\n\t\t\t\t\tgeneric: t('dashboard', 'Hello'),\n\t\t\t\t\twithName: t('dashboard', 'Hello, {name}', { name: this.displayName }, undefined, { escape: false }),\n\t\t\t\t},\n\t\t\t}\n\n\t\t\t// Figure out which greeting to show\n\t\t\tconst shouldShowName = this.displayName && this.uid !== this.displayName\n\t\t\treturn { text: shouldShowName ? good[partOfDay].withName : good[partOfDay].generic }\n\t\t},\n\t\tisActive() {\n\t\t\treturn (panel) => this.layout.indexOf(panel.id) > -1\n\t\t},\n\t\tisStatusActive() {\n\t\t\treturn (status) => !(status in this.enabledStatuses) || this.enabledStatuses[status]\n\t\t},\n\t\tsortedAllStatuses() {\n\t\t\treturn Object.keys(this.allCallbacksStatus).slice().sort(this.sortStatuses)\n\t\t},\n\t\tsortedPanels() {\n\t\t\treturn Object.values(this.panels).sort((a, b) => {\n\t\t\t\tconst indexA = this.layout.indexOf(a.id)\n\t\t\t\tconst indexB = this.layout.indexOf(b.id)\n\t\t\t\tif (indexA === -1 || indexB === -1) {\n\t\t\t\t\treturn indexB - indexA || a.id - b.id\n\t\t\t\t}\n\t\t\t\treturn indexA - indexB || a.id - b.id\n\t\t\t})\n\t\t},\n\t\tsortedRegisteredStatus() {\n\t\t\treturn this.registeredStatus.slice().sort(this.sortStatuses)\n\t\t},\n\t},\n\twatch: {\n\t\tcallbacks() {\n\t\t\tthis.rerenderPanels()\n\t\t},\n\t\tcallbacksStatus() {\n\t\t\tfor (const app in this.callbacksStatus) {\n\t\t\t\tconst element = this.$refs['status-' + app]\n\t\t\t\tif (this.statuses[app] && this.statuses[app].mounted) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (element) {\n\t\t\t\t\tthis.callbacksStatus[app](element[0])\n\t\t\t\t\tVue.set(this.statuses, app, { mounted: true })\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('Failed to register panel in the frontend as no backend data was provided for ' + app)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.updateGlobalStyles()\n\t\tthis.updateSkipLink()\n\t\twindow.addEventListener('scroll', this.handleScroll)\n\n\t\tsetInterval(() => {\n\t\t\tthis.timer = new Date()\n\t\t}, 30000)\n\n\t\tif (this.firstRun) {\n\t\t\twindow.addEventListener('scroll', this.disableFirstrunHint)\n\t\t}\n\t},\n\tdestroyed() {\n\t\twindow.removeEventListener('scroll', this.handleScroll)\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Method to register panels that will be called by the integrating apps\n\t\t *\n\t\t * @param {string} app The unique app id for the widget\n\t\t * @param {Function} callback The callback function to register a panel which gets the DOM element passed as parameter\n\t\t */\n\t\tregister(app, callback) {\n\t\t\tVue.set(this.callbacks, app, callback)\n\t\t},\n\t\tregisterStatus(app, callback) {\n\t\t\t// always save callbacks in case user enables the status later\n\t\t\tVue.set(this.allCallbacksStatus, app, callback)\n\t\t\t// register only if status is enabled or missing from config\n\t\t\tif (this.isStatusActive(app)) {\n\t\t\t\tthis.registeredStatus.push(app)\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tVue.set(this.callbacksStatus, app, callback)\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\t\trerenderPanels() {\n\t\t\tfor (const app in this.callbacks) {\n\t\t\t\tconst element = this.$refs[app]\n\t\t\t\tif (this.layout.indexOf(app) === -1) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (this.panels[app] && this.panels[app].mounted) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (element) {\n\t\t\t\t\tthis.callbacks[app](element[0], {\n\t\t\t\t\t\twidget: this.panels[app],\n\t\t\t\t\t})\n\t\t\t\t\tVue.set(this.panels[app], 'mounted', true)\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('Failed to register panel in the frontend as no backend data was provided for ' + app)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tsaveLayout() {\n\t\t\taxios.post(generateUrl('/apps/dashboard/layout'), {\n\t\t\t\tlayout: this.layout.join(','),\n\t\t\t})\n\t\t},\n\t\tsaveStatuses() {\n\t\t\taxios.post(generateUrl('/apps/dashboard/statuses'), {\n\t\t\t\tstatuses: JSON.stringify(this.enabledStatuses),\n\t\t\t})\n\t\t},\n\t\tshowModal() {\n\t\t\tthis.modal = true\n\t\t\tthis.firstRun = false\n\t\t},\n\t\tcloseModal() {\n\t\t\tthis.modal = false\n\t\t},\n\t\tupdateCheckbox(panel, currentValue) {\n\t\t\tconst index = this.layout.indexOf(panel.id)\n\t\t\tif (!currentValue && index > -1) {\n\t\t\t\tthis.layout.splice(index, 1)\n\n\t\t\t} else {\n\t\t\t\tthis.layout.push(panel.id)\n\t\t\t}\n\t\t\tVue.set(this.panels[panel.id], 'mounted', false)\n\t\t\tthis.saveLayout()\n\t\t\tthis.$nextTick(() => this.rerenderPanels())\n\t\t},\n\t\tdisableFirstrunHint() {\n\t\t\twindow.removeEventListener('scroll', this.disableFirstrunHint)\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.firstRun = false\n\t\t\t}, 1000)\n\t\t},\n\t\tupdateBackground(data) {\n\t\t\tthis.background = data.type === 'custom' || data.type === 'default' ? data.type : data.value\n\t\t\tthis.version = data.version\n\t\t\tthis.updateGlobalStyles()\n\t\t},\n\t\tupdateGlobalStyles() {\n\t\t\tdocument.body.setAttribute('data-dashboard-background', this.background)\n\t\t\tif (window.OCA.Theming.inverted) {\n\t\t\t\tdocument.body.classList.add('dashboard--inverted')\n\t\t\t}\n\n\t\t\tconst shippedBackgroundTheme = shippedBackgroundList[this.background] ? shippedBackgroundList[this.background].theming : 'light'\n\t\t\tif (shippedBackgroundTheme === 'dark') {\n\t\t\t\tdocument.body.classList.add('dashboard--dark')\n\t\t\t} else {\n\t\t\t\tdocument.body.classList.remove('dashboard--dark')\n\t\t\t}\n\t\t},\n\t\tupdateSkipLink() {\n\t\t\t// Make sure \"Skip to main content\" link points to the app content\n\t\t\tdocument.getElementsByClassName('skip-navigation')[0].setAttribute('href', '#app-dashboard')\n\t\t},\n\t\tupdateStatusCheckbox(app, checked) {\n\t\t\tif (checked) {\n\t\t\t\tthis.enableStatus(app)\n\t\t\t} else {\n\t\t\t\tthis.disableStatus(app)\n\t\t\t}\n\t\t},\n\t\tenableStatus(app) {\n\t\t\tthis.enabledStatuses[app] = true\n\t\t\tthis.registerStatus(app, this.allCallbacksStatus[app])\n\t\t\tthis.saveStatuses()\n\t\t},\n\t\tdisableStatus(app) {\n\t\t\tthis.enabledStatuses[app] = false\n\t\t\tconst i = this.registeredStatus.findIndex((s) => s === app)\n\t\t\tif (i !== -1) {\n\t\t\t\tthis.registeredStatus.splice(i, 1)\n\t\t\t\tVue.set(this.statuses, app, { mounted: false })\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tVue.delete(this.callbacksStatus, app)\n\t\t\t\t})\n\t\t\t}\n\t\t\tthis.saveStatuses()\n\t\t},\n\t\tsortStatuses(a, b) {\n\t\t\tconst al = a.toLowerCase()\n\t\t\tconst bl = b.toLowerCase()\n\t\t\treturn al > bl\n\t\t\t\t? 1\n\t\t\t\t: al < bl\n\t\t\t\t\t? -1\n\t\t\t\t\t: 0\n\t\t},\n\t\thandleScroll() {\n\t\t\tif (window.scrollY > 70) {\n\t\t\t\tdocument.body.classList.add('dashboard--scrolled')\n\t\t\t} else {\n\t\t\t\tdocument.body.classList.remove('dashboard--scrolled')\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n#app-dashboard {\n\twidth: 100%;\n\tmin-height: 100vh;\n\tbackground-size: cover;\n\tbackground-position: center center;\n\tbackground-repeat: no-repeat;\n\tbackground-attachment: fixed;\n\tbackground-color: var(--color-primary);\n\t--color-background-translucent: rgba(255, 255, 255, 0.8);\n\t--background-blur: blur(10px);\n\n\t#body-user.theme--dark & {\n\t\tbackground-color: var(--color-main-background);\n\t\t--color-background-translucent: rgba(24, 24, 24, 0.8);\n\t}\n\n\t#body-user.theme--highcontrast & {\n\t\tbackground-color: var(--color-main-background);\n\t\t--color-background-translucent: var(--color-main-background);\n\t}\n\n\t> h2 {\n\t\tcolor: var(--color-primary-text);\n\t\ttext-align: center;\n\t\tfont-size: 32px;\n\t\tline-height: 130%;\n\t\tpadding: 10vh 16px 0px;\n\t}\n}\n\n.panels {\n\twidth: auto;\n\tmargin: auto;\n\tmax-width: 1500px;\n\tdisplay: flex;\n\tjustify-content: center;\n\tflex-direction: row;\n\talign-items: flex-start;\n\tflex-wrap: wrap;\n}\n\n.panel, .panels > div {\n\twidth: 320px;\n\tmax-width: 100%;\n\tmargin: 16px;\n\tbackground-color: var(--color-background-translucent);\n\t-webkit-backdrop-filter: var(--background-blur);\n\tbackdrop-filter: var(--background-blur);\n\tborder-radius: var(--border-radius-large);\n\n\t#body-user.theme--highcontrast & {\n\t\tborder: 2px solid var(--color-border);\n\t}\n\n\t&.sortable-ghost {\n\t\t opacity: 0.1;\n\t}\n\n\t& > .panel--header {\n\t\tdisplay: flex;\n\t\tz-index: 1;\n\t\ttop: 50px;\n\t\tpadding: 16px;\n\t\tcursor: grab;\n\n\t\t&, ::v-deep * {\n\t\t\t-webkit-touch-callout: none;\n\t\t\t-webkit-user-select: none;\n\t\t\t-khtml-user-select: none;\n\t\t\t-moz-user-select: none;\n\t\t\t-ms-user-select: none;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&:active {\n\t\t\tcursor: grabbing;\n\t\t}\n\n\t\ta {\n\t\t\tflex-grow: 1;\n\t\t}\n\n\t\t> h2 {\n\t\t\tdisplay: block;\n\t\t\tflex-grow: 1;\n\t\t\tmargin: 0;\n\t\t\tfont-size: 20px;\n\t\t\tline-height: 24px;\n\t\t\tfont-weight: bold;\n\t\t\tbackground-size: 32px;\n\t\t\tbackground-position: 14px 12px;\n\t\t\tpadding: 16px 8px 16px 60px;\n\t\t\theight: 56px;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\tcursor: grab;\n\t\t}\n\t}\n\n\t& > .panel--content {\n\t\tmargin: 0 16px 16px 16px;\n\t\theight: 420px;\n\t\t// We specifically do not want scrollbars inside widgets\n\t\toverflow: hidden;\n\t}\n\n\t// No need to extend height of widgets if only one column is shown\n\t@media only screen and (max-width: 709px) {\n\t\t& > .panel--content {\n\t\t\theight: auto;\n\t\t}\n\t}\n}\n\n.footer {\n\ttext-align: center;\n\ttransition: bottom var(--animation-slow) ease-in-out;\n\tbottom: 0;\n\tpadding: 44px 0;\n}\n\n.edit-panels {\n\tdisplay: inline-block;\n\tmargin:auto;\n\tbackground-position: 16px center;\n\tpadding: 12px 16px;\n\tpadding-left: 36px;\n\tborder-radius: var(--border-radius-pill);\n\tmax-width: 200px;\n\topacity: 1;\n\ttext-align: center;\n}\n\n.edit-panels,\n.statuses ::v-deep .action-item .action-item__menutoggle,\n.statuses ::v-deep .action-item.action-item--open .action-item__menutoggle {\n\tbackground-color: var(--color-background-translucent);\n\t-webkit-backdrop-filter: var(--background-blur);\n\tbackdrop-filter: var(--background-blur);\n\topacity: 1 !important;\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbackground-color: var(--color-background-hover)!important;\n\t}\n\t&:focus-visible {\n\t\tborder: 2px solid var(--color-main-text)!important;\n\t}\n}\n\n.modal__content {\n\tpadding: 32px 16px;\n\ttext-align: center;\n\n\tol {\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\tjustify-content: center;\n\t\tlist-style-type: none;\n\t\tpadding-bottom: 16px;\n\t}\n\tli {\n\t\tlabel {\n\t\t\tposition: relative;\n\t\t\tdisplay: block;\n\t\t\tpadding: 48px 16px 14px 16px;\n\t\t\tmargin: 8px;\n\t\t\twidth: 140px;\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t\tborder: 2px solid var(--color-main-background);\n\t\t\tborder-radius: var(--border-radius-large);\n\t\t\tbackground-size: 24px;\n\t\t\tbackground-position: 16px 16px;\n\t\t\ttext-align: left;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\n\t\t\t&:hover {\n\t\t\t\tborder-color: var(--color-primary);\n\t\t\t}\n\t\t}\n\n\t\tinput[type='checkbox'].checkbox + label:before {\n\t\t\tposition: absolute;\n\t\t\tright: 12px;\n\t\t\ttop: 16px;\n\t\t}\n\n\t\tinput:focus + label {\n\t\t\tborder-color: var(--color-primary);\n\t\t}\n\t}\n\n\th3 {\n\t\tfont-weight: bold;\n\n\t\t&:not(:first-of-type) {\n\t\t\tmargin-top: 64px;\n\t\t}\n\t}\n\n\t// Adjust design of 'Get more widgets' button\n\t.button {\n\t\tdisplay: inline-block;\n\t\tpadding: 10px 16px;\n\t\tmargin: 0;\n\t}\n\n\tp {\n\t\tmax-width: 650px;\n\t\tmargin: 0 auto;\n\n\t\ta:hover,\n\t\ta:focus {\n\t\t\tborder-bottom: 2px solid var(--color-border);\n\t\t}\n\t}\n\n\t.credits--end {\n\t\tpadding-bottom: 32px;\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\ta {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n}\n\n.flip-list-move {\n\ttransition: transform var(--animation-slow);\n}\n\n.statuses {\n\tdisplay: flex;\n\tflex-direction: row;\n\tjustify-content: center;\n\tflex-wrap: wrap;\n\tmargin-bottom: 36px;\n\n\t& > div {\n\t\tmargin: 8px;\n\t}\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.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!./App.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!./App.vue?vue&type=style&index=0&id=af526754&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!./App.vue?vue&type=style&index=0&id=af526754&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=af526754&scoped=true&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=af526754&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 \"af526754\",\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',{style:(_vm.backgroundStyle),attrs:{\"id\":\"app-dashboard\"}},[_c('h2',[_vm._v(_vm._s(_vm.greeting.text))]),_vm._v(\" \"),_c('ul',{staticClass:\"statuses\"},_vm._l((_vm.sortedRegisteredStatus),function(status){return _c('div',{key:status,attrs:{\"id\":'status-' + status}},[_c('div',{ref:'status-' + status,refInFor:true})])}),0),_vm._v(\" \"),_c('Draggable',_vm._b({staticClass:\"panels\",attrs:{\"handle\":\".panel--header\"},on:{\"end\":_vm.saveLayout},model:{value:(_vm.layout),callback:function ($$v) {_vm.layout=$$v},expression:\"layout\"}},'Draggable',{swapThreshold: 0.30, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3},false),_vm._l((_vm.layout),function(panelId){return _c('div',{key:_vm.panels[panelId].id,staticClass:\"panel\"},[_c('div',{staticClass:\"panel--header\"},[_c('h2',{class:_vm.panels[panelId].iconClass},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.panels[panelId].title)+\"\\n\\t\\t\\t\\t\")])]),_vm._v(\" \"),_c('div',{staticClass:\"panel--content\",class:{ loading: !_vm.panels[panelId].mounted }},[_c('div',{ref:_vm.panels[panelId].id,refInFor:true,attrs:{\"data-id\":_vm.panels[panelId].id}})])])}),0),_vm._v(\" \"),_c('div',{staticClass:\"footer\"},[_c('a',{staticClass:\"edit-panels icon-rename\",attrs:{\"tabindex\":\"0\"},on:{\"click\":_vm.showModal,\"keyup\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.showModal.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"])){ return null; }return _vm.showModal.apply(null, arguments)}]}},[_vm._v(_vm._s(_vm.t('dashboard', 'Customize')))])]),_vm._v(\" \"),(_vm.modal)?_c('Modal',{attrs:{\"size\":\"large\"},on:{\"close\":_vm.closeModal}},[_c('div',{staticClass:\"modal__content\"},[_c('h3',[_vm._v(_vm._s(_vm.t('dashboard', 'Edit widgets')))]),_vm._v(\" \"),_c('ol',{staticClass:\"panels\"},_vm._l((_vm.sortedAllStatuses),function(status){return _c('li',{key:status},[_c('input',{staticClass:\"checkbox\",attrs:{\"id\":'status-checkbox-' + status,\"type\":\"checkbox\"},domProps:{\"checked\":_vm.isStatusActive(status)},on:{\"input\":function($event){return _vm.updateStatusCheckbox(status, $event.target.checked)}}}),_vm._v(\" \"),_c('label',{class:_vm.statusInfo[status].icon,attrs:{\"for\":'status-checkbox-' + status}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.statusInfo[status].text)+\"\\n\\t\\t\\t\\t\\t\")])])}),0),_vm._v(\" \"),_c('Draggable',_vm._b({staticClass:\"panels\",attrs:{\"tag\":\"ol\",\"handle\":\".draggable\"},on:{\"end\":_vm.saveLayout},model:{value:(_vm.layout),callback:function ($$v) {_vm.layout=$$v},expression:\"layout\"}},'Draggable',{swapThreshold: 0.30, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3},false),_vm._l((_vm.sortedPanels),function(panel){return _c('li',{key:panel.id},[_c('input',{staticClass:\"checkbox\",attrs:{\"id\":'panel-checkbox-' + panel.id,\"type\":\"checkbox\"},domProps:{\"checked\":_vm.isActive(panel)},on:{\"input\":function($event){return _vm.updateCheckbox(panel, $event.target.checked)}}}),_vm._v(\" \"),_c('label',{class:_vm.isActive(panel) ? 'draggable ' + panel.iconClass : panel.iconClass,attrs:{\"for\":'panel-checkbox-' + panel.id}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(panel.title)+\"\\n\\t\\t\\t\\t\\t\")])])}),0),_vm._v(\" \"),(_vm.isAdmin)?_c('a',{staticClass:\"button\",attrs:{\"href\":_vm.appStoreUrl}},[_vm._v(_vm._s(_vm.t('dashboard', 'Get more widgets from the App Store')))]):_vm._e(),_vm._v(\" \"),_c('h3',[_vm._v(_vm._s(_vm.t('dashboard', 'Change background image')))]),_vm._v(\" \"),_c('BackgroundSettings',{attrs:{\"background\":_vm.background,\"theming-default-background\":_vm.themingDefaultBackground},on:{\"update:background\":_vm.updateBackground}}),_vm._v(\" \"),_c('h3',[_vm._v(_vm._s(_vm.t('dashboard', 'Weather service')))]),_vm._v(\" \"),_c('p',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('dashboard', 'For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information.'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('p',{staticClass:\"credits--end\"},[_c('a',{attrs:{\"href\":\"https://api.met.no/doc/TermsOfService\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(_vm._s(_vm.t('dashboard', 'Weather data from Met.no')))]),_vm._v(\",\\n\\t\\t\\t\\t\"),_c('a',{attrs:{\"href\":\"https://wiki.osmfoundation.org/wiki/Privacy_Policy\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(_vm._s(_vm.t('dashboard', 'geocoding with Nominatim')))]),_vm._v(\",\\n\\t\\t\\t\\t\"),_c('a',{attrs:{\"href\":\"https://www.opentopodata.org/#public-api\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(_vm._s(_vm.t('dashboard', 'elevation data from OpenTopoData')))]),_vm._v(\".\\n\\t\\t\\t\")])],1)]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2016 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nimport Vue from 'vue'\nimport App from './App.vue'\nimport { translate as t } from '@nextcloud/l10n'\nimport VTooltip from '@nextcloud/vue/dist/Directives/Tooltip'\nimport { getRequestToken } from '@nextcloud/auth'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nVue.directive('Tooltip', VTooltip)\n\nVue.prototype.t = t\n\n// FIXME workaround to make the sidebar work\nif (!window.OCA.Files) {\n\twindow.OCA.Files = {}\n}\n\nObject.assign(window.OCA.Files, { App: { fileList: { filesClient: OC.Files.getClient() } } }, window.OCA.Files)\n\nconst Dashboard = Vue.extend(App)\nconst Instance = new Dashboard({}).$mount('#app-content-vue')\n\nwindow.OCA.Dashboard = {\n\tregister: (app, callback) => Instance.register(app, callback),\n\tregisterStatus: (app, callback) => Instance.registerStatus(app, callback),\n}\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, \"#app-dashboard[data-v-af526754]{width:100%;min-height:100vh;background-size:cover;background-position:center center;background-repeat:no-repeat;background-attachment:fixed;background-color:var(--color-primary);--color-background-translucent: rgba(255, 255, 255, 0.8);--background-blur: blur(10px)}#body-user.theme--dark #app-dashboard[data-v-af526754]{background-color:var(--color-main-background);--color-background-translucent: rgba(24, 24, 24, 0.8)}#body-user.theme--highcontrast #app-dashboard[data-v-af526754]{background-color:var(--color-main-background);--color-background-translucent: var(--color-main-background)}#app-dashboard>h2[data-v-af526754]{color:var(--color-primary-text);text-align:center;font-size:32px;line-height:130%;padding:10vh 16px 0px}.panels[data-v-af526754]{width:auto;margin:auto;max-width:1500px;display:flex;justify-content:center;flex-direction:row;align-items:flex-start;flex-wrap:wrap}.panel[data-v-af526754],.panels>div[data-v-af526754]{width:320px;max-width:100%;margin:16px;background-color:var(--color-background-translucent);-webkit-backdrop-filter:var(--background-blur);backdrop-filter:var(--background-blur);border-radius:var(--border-radius-large)}#body-user.theme--highcontrast .panel[data-v-af526754],#body-user.theme--highcontrast .panels>div[data-v-af526754]{border:2px solid var(--color-border)}.panel.sortable-ghost[data-v-af526754],.panels>div.sortable-ghost[data-v-af526754]{opacity:.1}.panel>.panel--header[data-v-af526754],.panels>div>.panel--header[data-v-af526754]{display:flex;z-index:1;top:50px;padding:16px;cursor:grab}.panel>.panel--header[data-v-af526754],.panel>.panel--header[data-v-af526754] *,.panels>div>.panel--header[data-v-af526754],.panels>div>.panel--header[data-v-af526754] *{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.panel>.panel--header[data-v-af526754]:active,.panels>div>.panel--header[data-v-af526754]:active{cursor:grabbing}.panel>.panel--header a[data-v-af526754],.panels>div>.panel--header a[data-v-af526754]{flex-grow:1}.panel>.panel--header>h2[data-v-af526754],.panels>div>.panel--header>h2[data-v-af526754]{display:block;flex-grow:1;margin:0;font-size:20px;line-height:24px;font-weight:bold;background-size:32px;background-position:14px 12px;padding:16px 8px 16px 60px;height:56px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:grab}.panel>.panel--content[data-v-af526754],.panels>div>.panel--content[data-v-af526754]{margin:0 16px 16px 16px;height:420px;overflow:hidden}@media only screen and (max-width: 709px){.panel>.panel--content[data-v-af526754],.panels>div>.panel--content[data-v-af526754]{height:auto}}.footer[data-v-af526754]{text-align:center;transition:bottom var(--animation-slow) ease-in-out;bottom:0;padding:44px 0}.edit-panels[data-v-af526754]{display:inline-block;margin:auto;background-position:16px center;padding:12px 16px;padding-left:36px;border-radius:var(--border-radius-pill);max-width:200px;opacity:1;text-align:center}.edit-panels[data-v-af526754],.statuses[data-v-af526754] .action-item .action-item__menutoggle,.statuses[data-v-af526754] .action-item.action-item--open .action-item__menutoggle{background-color:var(--color-background-translucent);-webkit-backdrop-filter:var(--background-blur);backdrop-filter:var(--background-blur);opacity:1 !important}.edit-panels[data-v-af526754]:hover,.edit-panels[data-v-af526754]:focus,.edit-panels[data-v-af526754]:active,.statuses[data-v-af526754] .action-item .action-item__menutoggle:hover,.statuses[data-v-af526754] .action-item .action-item__menutoggle:focus,.statuses[data-v-af526754] .action-item .action-item__menutoggle:active,.statuses[data-v-af526754] .action-item.action-item--open .action-item__menutoggle:hover,.statuses[data-v-af526754] .action-item.action-item--open .action-item__menutoggle:focus,.statuses[data-v-af526754] .action-item.action-item--open .action-item__menutoggle:active{background-color:var(--color-background-hover) !important}.edit-panels[data-v-af526754]:focus-visible,.statuses[data-v-af526754] .action-item .action-item__menutoggle:focus-visible,.statuses[data-v-af526754] .action-item.action-item--open .action-item__menutoggle:focus-visible{border:2px solid var(--color-main-text) !important}.modal__content[data-v-af526754]{padding:32px 16px;text-align:center}.modal__content ol[data-v-af526754]{display:flex;flex-direction:row;justify-content:center;list-style-type:none;padding-bottom:16px}.modal__content li label[data-v-af526754]{position:relative;display:block;padding:48px 16px 14px 16px;margin:8px;width:140px;background-color:var(--color-background-hover);border:2px solid var(--color-main-background);border-radius:var(--border-radius-large);background-size:24px;background-position:16px 16px;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.modal__content li label[data-v-af526754]:hover{border-color:var(--color-primary)}.modal__content li input[type=checkbox].checkbox+label[data-v-af526754]:before{position:absolute;right:12px;top:16px}.modal__content li input:focus+label[data-v-af526754]{border-color:var(--color-primary)}.modal__content h3[data-v-af526754]{font-weight:bold}.modal__content h3[data-v-af526754]:not(:first-of-type){margin-top:64px}.modal__content .button[data-v-af526754]{display:inline-block;padding:10px 16px;margin:0}.modal__content p[data-v-af526754]{max-width:650px;margin:0 auto}.modal__content p a[data-v-af526754]:hover,.modal__content p a[data-v-af526754]:focus{border-bottom:2px solid var(--color-border)}.modal__content .credits--end[data-v-af526754]{padding-bottom:32px;color:var(--color-text-maxcontrast)}.modal__content .credits--end a[data-v-af526754]{color:var(--color-text-maxcontrast)}.flip-list-move[data-v-af526754]{transition:transform var(--animation-slow)}.statuses[data-v-af526754]{display:flex;flex-direction:row;justify-content:center;flex-wrap:wrap;margin-bottom:36px}.statuses>div[data-v-af526754]{margin:8px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/dashboard/src/App.vue\"],\"names\":[],\"mappings\":\"AAqZA,gCACC,UAAA,CACA,gBAAA,CACA,qBAAA,CACA,iCAAA,CACA,2BAAA,CACA,2BAAA,CACA,qCAAA,CACA,wDAAA,CACA,6BAAA,CAEA,uDACC,6CAAA,CACA,qDAAA,CAGD,+DACC,6CAAA,CACA,4DAAA,CAGD,mCACC,+BAAA,CACA,iBAAA,CACA,cAAA,CACA,gBAAA,CACA,qBAAA,CAIF,yBACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CACA,cAAA,CAGD,qDACC,WAAA,CACA,cAAA,CACA,WAAA,CACA,oDAAA,CACA,8CAAA,CACA,sCAAA,CACA,wCAAA,CAEA,mHACC,oCAAA,CAGD,mFACE,UAAA,CAGF,mFACC,YAAA,CACA,SAAA,CACA,QAAA,CACA,YAAA,CACA,WAAA,CAEA,4KACC,0BAAA,CACA,wBAAA,CACA,uBAAA,CACA,qBAAA,CACA,oBAAA,CACA,gBAAA,CAGD,iGACC,eAAA,CAGD,uFACC,WAAA,CAGD,yFACC,aAAA,CACA,WAAA,CACA,QAAA,CACA,cAAA,CACA,gBAAA,CACA,gBAAA,CACA,oBAAA,CACA,6BAAA,CACA,0BAAA,CACA,WAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CACA,WAAA,CAIF,qFACC,uBAAA,CACA,YAAA,CAEA,eAAA,CAID,0CACC,qFACC,WAAA,CAAA,CAKH,yBACC,iBAAA,CACA,mDAAA,CACA,QAAA,CACA,cAAA,CAGD,8BACC,oBAAA,CACA,WAAA,CACA,+BAAA,CACA,iBAAA,CACA,iBAAA,CACA,uCAAA,CACA,eAAA,CACA,SAAA,CACA,iBAAA,CAGD,oLAGC,oDAAA,CACA,8CAAA,CACA,sCAAA,CACA,oBAAA,CAEA,qlBAGC,yDAAA,CAED,8NACC,kDAAA,CAIF,iCACC,iBAAA,CACA,iBAAA,CAEA,oCACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,oBAAA,CACA,mBAAA,CAGA,0CACC,iBAAA,CACA,aAAA,CACA,2BAAA,CACA,UAAA,CACA,WAAA,CACA,8CAAA,CACA,6CAAA,CACA,wCAAA,CACA,oBAAA,CACA,6BAAA,CACA,eAAA,CACA,eAAA,CACA,sBAAA,CACA,kBAAA,CAEA,gDACC,iCAAA,CAIF,+EACC,iBAAA,CACA,UAAA,CACA,QAAA,CAGD,sDACC,iCAAA,CAIF,oCACC,gBAAA,CAEA,wDACC,eAAA,CAKF,yCACC,oBAAA,CACA,iBAAA,CACA,QAAA,CAGD,mCACC,eAAA,CACA,aAAA,CAEA,sFAEC,2CAAA,CAIF,+CACC,mBAAA,CACA,mCAAA,CAEA,iDACC,mCAAA,CAKH,iCACC,0CAAA,CAGD,2BACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,cAAA,CACA,kBAAA,CAEA,+BACC,UAAA\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n#app-dashboard {\\n\\twidth: 100%;\\n\\tmin-height: 100vh;\\n\\tbackground-size: cover;\\n\\tbackground-position: center center;\\n\\tbackground-repeat: no-repeat;\\n\\tbackground-attachment: fixed;\\n\\tbackground-color: var(--color-primary);\\n\\t--color-background-translucent: rgba(255, 255, 255, 0.8);\\n\\t--background-blur: blur(10px);\\n\\n\\t#body-user.theme--dark & {\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t--color-background-translucent: rgba(24, 24, 24, 0.8);\\n\\t}\\n\\n\\t#body-user.theme--highcontrast & {\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t--color-background-translucent: var(--color-main-background);\\n\\t}\\n\\n\\t> h2 {\\n\\t\\tcolor: var(--color-primary-text);\\n\\t\\ttext-align: center;\\n\\t\\tfont-size: 32px;\\n\\t\\tline-height: 130%;\\n\\t\\tpadding: 10vh 16px 0px;\\n\\t}\\n}\\n\\n.panels {\\n\\twidth: auto;\\n\\tmargin: auto;\\n\\tmax-width: 1500px;\\n\\tdisplay: flex;\\n\\tjustify-content: center;\\n\\tflex-direction: row;\\n\\talign-items: flex-start;\\n\\tflex-wrap: wrap;\\n}\\n\\n.panel, .panels > div {\\n\\twidth: 320px;\\n\\tmax-width: 100%;\\n\\tmargin: 16px;\\n\\tbackground-color: var(--color-background-translucent);\\n\\t-webkit-backdrop-filter: var(--background-blur);\\n\\tbackdrop-filter: var(--background-blur);\\n\\tborder-radius: var(--border-radius-large);\\n\\n\\t#body-user.theme--highcontrast & {\\n\\t\\tborder: 2px solid var(--color-border);\\n\\t}\\n\\n\\t&.sortable-ghost {\\n\\t\\t opacity: 0.1;\\n\\t}\\n\\n\\t& > .panel--header {\\n\\t\\tdisplay: flex;\\n\\t\\tz-index: 1;\\n\\t\\ttop: 50px;\\n\\t\\tpadding: 16px;\\n\\t\\tcursor: grab;\\n\\n\\t\\t&, ::v-deep * {\\n\\t\\t\\t-webkit-touch-callout: none;\\n\\t\\t\\t-webkit-user-select: none;\\n\\t\\t\\t-khtml-user-select: none;\\n\\t\\t\\t-moz-user-select: none;\\n\\t\\t\\t-ms-user-select: none;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&:active {\\n\\t\\t\\tcursor: grabbing;\\n\\t\\t}\\n\\n\\t\\ta {\\n\\t\\t\\tflex-grow: 1;\\n\\t\\t}\\n\\n\\t\\t> h2 {\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tflex-grow: 1;\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tfont-size: 20px;\\n\\t\\t\\tline-height: 24px;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tbackground-size: 32px;\\n\\t\\t\\tbackground-position: 14px 12px;\\n\\t\\t\\tpadding: 16px 8px 16px 60px;\\n\\t\\t\\theight: 56px;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\tcursor: grab;\\n\\t\\t}\\n\\t}\\n\\n\\t& > .panel--content {\\n\\t\\tmargin: 0 16px 16px 16px;\\n\\t\\theight: 420px;\\n\\t\\t// We specifically do not want scrollbars inside widgets\\n\\t\\toverflow: hidden;\\n\\t}\\n\\n\\t// No need to extend height of widgets if only one column is shown\\n\\t@media only screen and (max-width: 709px) {\\n\\t\\t& > .panel--content {\\n\\t\\t\\theight: auto;\\n\\t\\t}\\n\\t}\\n}\\n\\n.footer {\\n\\ttext-align: center;\\n\\ttransition: bottom var(--animation-slow) ease-in-out;\\n\\tbottom: 0;\\n\\tpadding: 44px 0;\\n}\\n\\n.edit-panels {\\n\\tdisplay: inline-block;\\n\\tmargin:auto;\\n\\tbackground-position: 16px center;\\n\\tpadding: 12px 16px;\\n\\tpadding-left: 36px;\\n\\tborder-radius: var(--border-radius-pill);\\n\\tmax-width: 200px;\\n\\topacity: 1;\\n\\ttext-align: center;\\n}\\n\\n.edit-panels,\\n.statuses ::v-deep .action-item .action-item__menutoggle,\\n.statuses ::v-deep .action-item.action-item--open .action-item__menutoggle {\\n\\tbackground-color: var(--color-background-translucent);\\n\\t-webkit-backdrop-filter: var(--background-blur);\\n\\tbackdrop-filter: var(--background-blur);\\n\\topacity: 1 !important;\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\tbackground-color: var(--color-background-hover)!important;\\n\\t}\\n\\t&:focus-visible {\\n\\t\\tborder: 2px solid var(--color-main-text)!important;\\n\\t}\\n}\\n\\n.modal__content {\\n\\tpadding: 32px 16px;\\n\\ttext-align: center;\\n\\n\\tol {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: row;\\n\\t\\tjustify-content: center;\\n\\t\\tlist-style-type: none;\\n\\t\\tpadding-bottom: 16px;\\n\\t}\\n\\tli {\\n\\t\\tlabel {\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tpadding: 48px 16px 14px 16px;\\n\\t\\t\\tmargin: 8px;\\n\\t\\t\\twidth: 140px;\\n\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t\\tborder: 2px solid var(--color-main-background);\\n\\t\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\t\\tbackground-size: 24px;\\n\\t\\t\\tbackground-position: 16px 16px;\\n\\t\\t\\ttext-align: left;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\n\\t\\t\\t&:hover {\\n\\t\\t\\t\\tborder-color: var(--color-primary);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\tinput[type='checkbox'].checkbox + label:before {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tright: 12px;\\n\\t\\t\\ttop: 16px;\\n\\t\\t}\\n\\n\\t\\tinput:focus + label {\\n\\t\\t\\tborder-color: var(--color-primary);\\n\\t\\t}\\n\\t}\\n\\n\\th3 {\\n\\t\\tfont-weight: bold;\\n\\n\\t\\t&:not(:first-of-type) {\\n\\t\\t\\tmargin-top: 64px;\\n\\t\\t}\\n\\t}\\n\\n\\t// Adjust design of 'Get more widgets' button\\n\\t.button {\\n\\t\\tdisplay: inline-block;\\n\\t\\tpadding: 10px 16px;\\n\\t\\tmargin: 0;\\n\\t}\\n\\n\\tp {\\n\\t\\tmax-width: 650px;\\n\\t\\tmargin: 0 auto;\\n\\n\\t\\ta:hover,\\n\\t\\ta:focus {\\n\\t\\t\\tborder-bottom: 2px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t.credits--end {\\n\\t\\tpadding-bottom: 32px;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\n\\t\\ta {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n}\\n\\n.flip-list-move {\\n\\ttransition: transform var(--animation-slow);\\n}\\n\\n.statuses {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\tjustify-content: center;\\n\\tflex-wrap: wrap;\\n\\tmargin-bottom: 36px;\\n\\n\\t& > div {\\n\\t\\tmargin: 8px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".background-selector[data-v-e4c3a7ca]{display:flex;flex-wrap:wrap;justify-content:center}.background-selector .background[data-v-e4c3a7ca]{width:176px;height:96px;margin:8px;background-size:cover;background-position:center center;text-align:center;border-radius:var(--border-radius-large);border:2px solid var(--color-main-background);overflow:hidden}.background-selector .background.current[data-v-e4c3a7ca]{background-image:var(--color-background-dark)}.background-selector .background.filepicker[data-v-e4c3a7ca],.background-selector .background.default[data-v-e4c3a7ca],.background-selector .background.color[data-v-e4c3a7ca]{border-color:var(--color-border)}.background-selector .background.color[data-v-e4c3a7ca]{background-color:var(--color-primary);color:var(--color-primary-text)}.background-selector .background.active[data-v-e4c3a7ca],.background-selector .background[data-v-e4c3a7ca]:hover,.background-selector .background[data-v-e4c3a7ca]:focus{border:2px solid var(--color-primary)}.background-selector .background.active[data-v-e4c3a7ca]:not(.icon-loading):after{background-image:var(--icon-checkmark-fff);background-repeat:no-repeat;background-position:center;background-size:44px;content:\\\"\\\";display:block;height:100%}body.theme--dark .background-selector .background.active[data-v-e4c3a7ca]:not(.icon-loading):after{background-image:var(--icon-checkmark-000)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/dashboard/src/components/BackgroundSettings.vue\"],\"names\":[],\"mappings\":\"AA4IA,sCACC,YAAA,CACA,cAAA,CACA,sBAAA,CAEA,kDACC,WAAA,CACA,WAAA,CACA,UAAA,CACA,qBAAA,CACA,iCAAA,CACA,iBAAA,CACA,wCAAA,CACA,6CAAA,CACA,eAAA,CAEA,0DACC,6CAAA,CAGD,+KACC,gCAAA,CAGD,wDACC,qCAAA,CACA,+BAAA,CAGD,yKAGC,qCAAA,CAGD,kFACC,0CAAA,CACA,2BAAA,CACA,0BAAA,CACA,oBAAA,CACA,UAAA,CACA,aAAA,CACA,WAAA,CAEA,mGACC,0CAAA\",\"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.background-selector {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tjustify-content: center;\\n\\n\\t.background {\\n\\t\\twidth: 176px;\\n\\t\\theight: 96px;\\n\\t\\tmargin: 8px;\\n\\t\\tbackground-size: cover;\\n\\t\\tbackground-position: center center;\\n\\t\\ttext-align: center;\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\tborder: 2px solid var(--color-main-background);\\n\\t\\toverflow: hidden;\\n\\n\\t\\t&.current {\\n\\t\\t\\tbackground-image: var(--color-background-dark);\\n\\t\\t}\\n\\n\\t\\t&.filepicker, &.default, &.color {\\n\\t\\t\\tborder-color: var(--color-border);\\n\\t\\t}\\n\\n\\t\\t&.color {\\n\\t\\t\\tbackground-color: var(--color-primary);\\n\\t\\t\\tcolor: var(--color-primary-text);\\n\\t\\t}\\n\\n\\t\\t&.active,\\n\\t\\t&:hover,\\n\\t\\t&:focus {\\n\\t\\t\\tborder: 2px solid var(--color-primary);\\n\\t\\t}\\n\\n\\t\\t&.active:not(.icon-loading):after {\\n\\t\\t\\tbackground-image: var(--icon-checkmark-fff);\\n\\t\\t\\tbackground-repeat: no-repeat;\\n\\t\\t\\tbackground-position: center;\\n\\t\\t\\tbackground-size: 44px;\\n\\t\\t\\tcontent: '';\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\theight: 100%;\\n\\n\\t\\t\\tbody.theme--dark & {\\n\\t\\t\\t\\tbackground-image: var(--icon-checkmark-000);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\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 = 4773;","__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\t4773: 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));","__webpack_require__.nc = undefined;","// 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__(30320); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","data","isMobile","this","_isMobile","beforeMount","window","addEventListener","_onResize","beforeDestroy","removeEventListener","methods","document","documentElement","clientWidth","url","generateFilePath","background","time","themingDefaultBackground","generateUrl","OCA","Theming","cacheBuster","Accessibility","theme","prefixWithBaseUrl","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_h","$createElement","_c","_self","staticClass","class","active","attrs","on","pickFile","_v","_s","t","loading","setDefault","pickColor","_l","shippedBackground","directives","name","rawName","value","details","expression","key","style","preview","$event","setShipped","greeting","text","status","ref","refInFor","_b","saveLayout","model","callback","$$v","layout","swapThreshold","delay","delayOnTouchOnly","touchStartThreshold","panelId","panels","id","iconClass","title","mounted","showModal","type","indexOf","_k","keyCode","apply","arguments","closeModal","domProps","isStatusActive","updateStatusCheckbox","target","checked","statusInfo","icon","panel","isActive","updateCheckbox","appStoreUrl","_e","updateBackground","__webpack_nonce__","btoa","getRequestToken","Vue","VTooltip","Files","Object","assign","App","fileList","filesClient","OC","getClient","Instance","$mount","Dashboard","register","app","registerStatus","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/dav-settings-admin-caldav.js b/dist/dav-settings-admin-caldav.js
index 136dfe58cbd..1d6ae6b271a 100644
--- a/dist/dav-settings-admin-caldav.js
+++ b/dist/dav-settings-admin-caldav.js
@@ -1,2 +1,2 @@
-!function(){"use strict";var e,n={46976:function(e,n,t){var a=t(20144),r=t(16453),s=t(9944),d=t(4820),i=t(79753),o=(0,r.loadState)("dav","userSyncCalendarsDocUrl","#"),l={name:"CalDavSettings",computed:{hint:function(){return this.$t("dav","Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}.").replace("{calendarappstoreopen}",'<a target="_blank" href="../apps/office/calendar">').replace("{calendardocopen}",'<a target="_blank" href="'.concat(o,'" rel="noreferrer noopener">')).replace(/\{linkclose\}/g,"</a>")},sendInvitationsHelpText:function(){return this.$t("dav","Please make sure to properly set up {emailopen}the email server{linkclose}.").replace("{emailopen}",'<a href="../admin#mail_general_settings">').replace("{linkclose}","</a>")},sendEventRemindersHelpText:function(){return this.$t("dav","Please make sure to properly set up {emailopen}the email server{linkclose}.").replace("{emailopen}",'<a href="../admin#mail_general_settings">').replace("{linkclose}","</a>")}},watch:{generateBirthdayCalendar:function(e){var n=e?"/apps/dav/enableBirthdayCalendar":"/apps/dav/disableBirthdayCalendar";d.default.post((0,i.generateUrl)(n))},sendInvitations:function(e){OCP.AppConfig.setValue("dav","sendInvitations",e?"yes":"no")},sendEventReminders:function(e){OCP.AppConfig.setValue("dav","sendEventReminders",e?"yes":"no")},sendEventRemindersToSharedGroupMembers:function(e){OCP.AppConfig.setValue("dav","sendEventRemindersToSharedGroupMembers",e?"yes":"no")},sendEventRemindersPush:function(e){OCP.AppConfig.setValue("dav","sendEventRemindersPush",e?"yes":"no")}}},c=t(93379),v=t.n(c),u=t(7795),m=t.n(u),p=t(90569),h=t.n(p),f=t(3565),b=t.n(f),y=t(19216),_=t.n(y),g=t(44589),E=t.n(g),R=t(48885),k={};k.styleTagTransform=E(),k.setAttributes=b(),k.insert=h().bind(null,"head"),k.domAPI=m(),k.insertStyleElement=_(),v()(R.Z,k),R.Z&&R.Z.locals&&R.Z.locals;var C=(0,t(51900).Z)(l,(function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("div",{staticClass:"section"},[t("h2",[e._v(e._s(e.$t("dav","Calendar server")))]),e._v(" "),t("p",{staticClass:"settings-hint",domProps:{innerHTML:e._s(e.hint)}}),e._v(" "),t("p",[t("input",{directives:[{name:"model",rawName:"v-model",value:e.sendInvitations,expression:"sendInvitations"}],staticClass:"checkbox",attrs:{id:"caldavSendInvitations",type:"checkbox"},domProps:{checked:Array.isArray(e.sendInvitations)?e._i(e.sendInvitations,null)>-1:e.sendInvitations},on:{change:function(n){var t=e.sendInvitations,a=n.target,r=!!a.checked;if(Array.isArray(t)){var s=e._i(t,null);a.checked?s<0&&(e.sendInvitations=t.concat([null])):s>-1&&(e.sendInvitations=t.slice(0,s).concat(t.slice(s+1)))}else e.sendInvitations=r}}}),e._v(" "),t("label",{attrs:{for:"caldavSendInvitations"}},[e._v("\n\t\t\t"+e._s(e.$t("dav","Send invitations to attendees"))+"\n\t\t")]),e._v(" "),t("br"),e._v(" "),t("em",{domProps:{innerHTML:e._s(e.sendInvitationsHelpText)}})]),e._v(" "),t("p",[t("input",{directives:[{name:"model",rawName:"v-model",value:e.generateBirthdayCalendar,expression:"generateBirthdayCalendar"}],staticClass:"checkbox",attrs:{id:"caldavGenerateBirthdayCalendar",type:"checkbox"},domProps:{checked:Array.isArray(e.generateBirthdayCalendar)?e._i(e.generateBirthdayCalendar,null)>-1:e.generateBirthdayCalendar},on:{change:function(n){var t=e.generateBirthdayCalendar,a=n.target,r=!!a.checked;if(Array.isArray(t)){var s=e._i(t,null);a.checked?s<0&&(e.generateBirthdayCalendar=t.concat([null])):s>-1&&(e.generateBirthdayCalendar=t.slice(0,s).concat(t.slice(s+1)))}else e.generateBirthdayCalendar=r}}}),e._v(" "),t("label",{attrs:{for:"caldavGenerateBirthdayCalendar"}},[e._v("\n\t\t\t"+e._s(e.$t("dav","Automatically generate a birthday calendar"))+"\n\t\t")]),e._v(" "),t("br"),e._v(" "),t("em",[e._v("\n\t\t\t"+e._s(e.$t("dav","Birthday calendars will be generated by a background job."))+"\n\t\t")]),e._v(" "),t("br"),e._v(" "),t("em",[e._v("\n\t\t\t"+e._s(e.$t("dav","Hence they will not be available immediately after enabling but will show up after some time."))+"\n\t\t")])]),e._v(" "),t("p",[t("input",{directives:[{name:"model",rawName:"v-model",value:e.sendEventReminders,expression:"sendEventReminders"}],staticClass:"checkbox",attrs:{id:"caldavSendEventReminders",type:"checkbox"},domProps:{checked:Array.isArray(e.sendEventReminders)?e._i(e.sendEventReminders,null)>-1:e.sendEventReminders},on:{change:function(n){var t=e.sendEventReminders,a=n.target,r=!!a.checked;if(Array.isArray(t)){var s=e._i(t,null);a.checked?s<0&&(e.sendEventReminders=t.concat([null])):s>-1&&(e.sendEventReminders=t.slice(0,s).concat(t.slice(s+1)))}else e.sendEventReminders=r}}}),e._v(" "),t("label",{attrs:{for:"caldavSendEventReminders"}},[e._v("\n\t\t\t"+e._s(e.$t("dav","Send notifications for events"))+"\n\t\t")]),e._v(" "),t("br"),e._v(" "),t("em",{domProps:{innerHTML:e._s(e.sendEventRemindersHelpText)}}),e._v(" "),t("br"),e._v(" "),t("em",[e._v("\n\t\t\t"+e._s(e.$t("dav","Notifications are sent via background jobs, so these must occur often enough."))+"\n\t\t")])]),e._v(" "),t("p",{staticClass:"indented"},[t("input",{directives:[{name:"model",rawName:"v-model",value:e.sendEventRemindersToSharedGroupMembers,expression:"sendEventRemindersToSharedGroupMembers"}],staticClass:"checkbox",attrs:{id:"caldavSendEventRemindersToSharedGroupMembers",type:"checkbox",disabled:!e.sendEventReminders},domProps:{checked:Array.isArray(e.sendEventRemindersToSharedGroupMembers)?e._i(e.sendEventRemindersToSharedGroupMembers,null)>-1:e.sendEventRemindersToSharedGroupMembers},on:{change:function(n){var t=e.sendEventRemindersToSharedGroupMembers,a=n.target,r=!!a.checked;if(Array.isArray(t)){var s=e._i(t,null);a.checked?s<0&&(e.sendEventRemindersToSharedGroupMembers=t.concat([null])):s>-1&&(e.sendEventRemindersToSharedGroupMembers=t.slice(0,s).concat(t.slice(s+1)))}else e.sendEventRemindersToSharedGroupMembers=r}}}),e._v(" "),t("label",{attrs:{for:"caldavSendEventRemindersToSharedGroupMembers"}},[e._v("\n\t\t\t"+e._s(e.$t("dav","Send reminder notifications to calendar sharees as well"))+"\n\t\t")]),e._v(" "),t("br"),e._v(" "),t("em",[e._v("\n\t\t\t"+e._s(e.$t("dav","Reminders are always sent to organizers and attendees."))+"\n\t\t")])]),e._v(" "),t("p",{staticClass:"indented"},[t("input",{directives:[{name:"model",rawName:"v-model",value:e.sendEventRemindersPush,expression:"sendEventRemindersPush"}],staticClass:"checkbox",attrs:{id:"caldavSendEventRemindersPush",type:"checkbox",disabled:!e.sendEventReminders},domProps:{checked:Array.isArray(e.sendEventRemindersPush)?e._i(e.sendEventRemindersPush,null)>-1:e.sendEventRemindersPush},on:{change:function(n){var t=e.sendEventRemindersPush,a=n.target,r=!!a.checked;if(Array.isArray(t)){var s=e._i(t,null);a.checked?s<0&&(e.sendEventRemindersPush=t.concat([null])):s>-1&&(e.sendEventRemindersPush=t.slice(0,s).concat(t.slice(s+1)))}else e.sendEventRemindersPush=r}}}),e._v(" "),t("label",{attrs:{for:"caldavSendEventRemindersPush"}},[e._v("\n\t\t\t"+e._s(e.$t("dav","Enable notifications for events via push"))+"\n\t\t")])])])}),[],!1,null,"19a89582",null).exports;a.default.prototype.$t=s.translate,new(a.default.extend(C))({name:"CalDavSettingsView",data:function(){return{sendInvitations:(0,r.loadState)("dav","sendInvitations"),generateBirthdayCalendar:(0,r.loadState)("dav","generateBirthdayCalendar"),sendEventReminders:(0,r.loadState)("dav","sendEventReminders"),sendEventRemindersToSharedGroupMembers:(0,r.loadState)("dav","sendEventRemindersToSharedGroupMembers"),sendEventRemindersPush:(0,r.loadState)("dav","sendEventRemindersPush")}}}).$mount("#settings-admin-caldav")},48885:function(e,n,t){var a=t(87537),r=t.n(a),s=t(23645),d=t.n(s)()(r());d.push([e.id,".indented[data-v-19a89582]{padding-left:28px}","",{version:3,sources:["webpack://./apps/dav/src/views/CalDavSettings.vue"],names:[],mappings:"AAuFA,2BACC,iBAAA",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.indented {\n\tpadding-left: 28px;\n}\n"],sourceRoot:""}]),n.Z=d}},t={};function a(e){var r=t[e];if(void 0!==r)return r.exports;var s=t[e]={id:e,loaded:!1,exports:{}};return n[e].call(s.exports,s,s.exports,a),s.loaded=!0,s.exports}a.m=n,a.amdD=function(){throw new Error("define cannot be used indirect")},a.amdO={},e=[],a.O=function(n,t,r,s){if(!t){var d=1/0;for(c=0;c<e.length;c++){t=e[c][0],r=e[c][1],s=e[c][2];for(var i=!0,o=0;o<t.length;o++)(!1&s||d>=s)&&Object.keys(a.O).every((function(e){return a.O[e](t[o])}))?t.splice(o--,1):(i=!1,s<d&&(d=s));if(i){e.splice(c--,1);var l=r();void 0!==l&&(n=l)}}return n}s=s||0;for(var c=e.length;c>0&&e[c-1][2]>s;c--)e[c]=e[c-1];e[c]=[t,r,s]},a.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(n,{a:n}),n},a.d=function(e,n){for(var t in n)a.o(n,t)&&!a.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},a.j=2231,function(){a.b=document.baseURI||self.location.href;var e={2231:0};a.O.j=function(n){return 0===e[n]};var n=function(n,t){var r,s,d=t[0],i=t[1],o=t[2],l=0;if(d.some((function(n){return 0!==e[n]}))){for(r in i)a.o(i,r)&&(a.m[r]=i[r]);if(o)var c=o(a)}for(n&&n(t);l<d.length;l++)s=d[l],a.o(e,s)&&e[s]&&e[s][0](),e[s]=0;return a.O(c)},t=self.webpackChunknextcloud=self.webpackChunknextcloud||[];t.forEach(n.bind(null,0)),t.push=n.bind(null,t.push.bind(t))}();var r=a.O(void 0,[7874],(function(){return a(46976)}));r=a.O(r)}();
-//# sourceMappingURL=dav-settings-admin-caldav.js.map?v=61c319bf6e1cae626f58 \ No newline at end of file
+!function(){"use strict";var e,n={46976:function(e,n,t){var a=t(20144),r=t(16453),s=t(9944),d=t(4820),i=t(79753),o=(0,r.loadState)("dav","userSyncCalendarsDocUrl","#"),l={name:"CalDavSettings",computed:{hint:function(){return this.$t("dav","Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}.").replace("{calendarappstoreopen}",'<a target="_blank" href="../apps/office/calendar">').replace("{calendardocopen}",'<a target="_blank" href="'.concat(o,'" rel="noreferrer noopener">')).replace(/\{linkclose\}/g,"</a>")},sendInvitationsHelpText:function(){return this.$t("dav","Please make sure to properly set up {emailopen}the email server{linkclose}.").replace("{emailopen}",'<a href="../admin#mail_general_settings">').replace("{linkclose}","</a>")},sendEventRemindersHelpText:function(){return this.$t("dav","Please make sure to properly set up {emailopen}the email server{linkclose}.").replace("{emailopen}",'<a href="../admin#mail_general_settings">').replace("{linkclose}","</a>")}},watch:{generateBirthdayCalendar:function(e){var n=e?"/apps/dav/enableBirthdayCalendar":"/apps/dav/disableBirthdayCalendar";d.default.post((0,i.generateUrl)(n))},sendInvitations:function(e){OCP.AppConfig.setValue("dav","sendInvitations",e?"yes":"no")},sendEventReminders:function(e){OCP.AppConfig.setValue("dav","sendEventReminders",e?"yes":"no")},sendEventRemindersToSharedGroupMembers:function(e){OCP.AppConfig.setValue("dav","sendEventRemindersToSharedGroupMembers",e?"yes":"no")},sendEventRemindersPush:function(e){OCP.AppConfig.setValue("dav","sendEventRemindersPush",e?"yes":"no")}}},c=t(93379),v=t.n(c),u=t(7795),m=t.n(u),p=t(90569),h=t.n(p),f=t(3565),b=t.n(f),y=t(19216),_=t.n(y),g=t(44589),E=t.n(g),R=t(48885),k={};k.styleTagTransform=E(),k.setAttributes=b(),k.insert=h().bind(null,"head"),k.domAPI=m(),k.insertStyleElement=_(),v()(R.Z,k),R.Z&&R.Z.locals&&R.Z.locals;var C=(0,t(51900).Z)(l,(function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("div",{staticClass:"section"},[t("h2",[e._v(e._s(e.$t("dav","Calendar server")))]),e._v(" "),t("p",{staticClass:"settings-hint",domProps:{innerHTML:e._s(e.hint)}}),e._v(" "),t("p",[t("input",{directives:[{name:"model",rawName:"v-model",value:e.sendInvitations,expression:"sendInvitations"}],staticClass:"checkbox",attrs:{id:"caldavSendInvitations",type:"checkbox"},domProps:{checked:Array.isArray(e.sendInvitations)?e._i(e.sendInvitations,null)>-1:e.sendInvitations},on:{change:function(n){var t=e.sendInvitations,a=n.target,r=!!a.checked;if(Array.isArray(t)){var s=e._i(t,null);a.checked?s<0&&(e.sendInvitations=t.concat([null])):s>-1&&(e.sendInvitations=t.slice(0,s).concat(t.slice(s+1)))}else e.sendInvitations=r}}}),e._v(" "),t("label",{attrs:{for:"caldavSendInvitations"}},[e._v("\n\t\t\t"+e._s(e.$t("dav","Send invitations to attendees"))+"\n\t\t")]),e._v(" "),t("br"),e._v(" "),t("em",{domProps:{innerHTML:e._s(e.sendInvitationsHelpText)}})]),e._v(" "),t("p",[t("input",{directives:[{name:"model",rawName:"v-model",value:e.generateBirthdayCalendar,expression:"generateBirthdayCalendar"}],staticClass:"checkbox",attrs:{id:"caldavGenerateBirthdayCalendar",type:"checkbox"},domProps:{checked:Array.isArray(e.generateBirthdayCalendar)?e._i(e.generateBirthdayCalendar,null)>-1:e.generateBirthdayCalendar},on:{change:function(n){var t=e.generateBirthdayCalendar,a=n.target,r=!!a.checked;if(Array.isArray(t)){var s=e._i(t,null);a.checked?s<0&&(e.generateBirthdayCalendar=t.concat([null])):s>-1&&(e.generateBirthdayCalendar=t.slice(0,s).concat(t.slice(s+1)))}else e.generateBirthdayCalendar=r}}}),e._v(" "),t("label",{attrs:{for:"caldavGenerateBirthdayCalendar"}},[e._v("\n\t\t\t"+e._s(e.$t("dav","Automatically generate a birthday calendar"))+"\n\t\t")]),e._v(" "),t("br"),e._v(" "),t("em",[e._v("\n\t\t\t"+e._s(e.$t("dav","Birthday calendars will be generated by a background job."))+"\n\t\t")]),e._v(" "),t("br"),e._v(" "),t("em",[e._v("\n\t\t\t"+e._s(e.$t("dav","Hence they will not be available immediately after enabling but will show up after some time."))+"\n\t\t")])]),e._v(" "),t("p",[t("input",{directives:[{name:"model",rawName:"v-model",value:e.sendEventReminders,expression:"sendEventReminders"}],staticClass:"checkbox",attrs:{id:"caldavSendEventReminders",type:"checkbox"},domProps:{checked:Array.isArray(e.sendEventReminders)?e._i(e.sendEventReminders,null)>-1:e.sendEventReminders},on:{change:function(n){var t=e.sendEventReminders,a=n.target,r=!!a.checked;if(Array.isArray(t)){var s=e._i(t,null);a.checked?s<0&&(e.sendEventReminders=t.concat([null])):s>-1&&(e.sendEventReminders=t.slice(0,s).concat(t.slice(s+1)))}else e.sendEventReminders=r}}}),e._v(" "),t("label",{attrs:{for:"caldavSendEventReminders"}},[e._v("\n\t\t\t"+e._s(e.$t("dav","Send notifications for events"))+"\n\t\t")]),e._v(" "),t("br"),e._v(" "),t("em",{domProps:{innerHTML:e._s(e.sendEventRemindersHelpText)}}),e._v(" "),t("br"),e._v(" "),t("em",[e._v("\n\t\t\t"+e._s(e.$t("dav","Notifications are sent via background jobs, so these must occur often enough."))+"\n\t\t")])]),e._v(" "),t("p",{staticClass:"indented"},[t("input",{directives:[{name:"model",rawName:"v-model",value:e.sendEventRemindersToSharedGroupMembers,expression:"sendEventRemindersToSharedGroupMembers"}],staticClass:"checkbox",attrs:{id:"caldavSendEventRemindersToSharedGroupMembers",type:"checkbox",disabled:!e.sendEventReminders},domProps:{checked:Array.isArray(e.sendEventRemindersToSharedGroupMembers)?e._i(e.sendEventRemindersToSharedGroupMembers,null)>-1:e.sendEventRemindersToSharedGroupMembers},on:{change:function(n){var t=e.sendEventRemindersToSharedGroupMembers,a=n.target,r=!!a.checked;if(Array.isArray(t)){var s=e._i(t,null);a.checked?s<0&&(e.sendEventRemindersToSharedGroupMembers=t.concat([null])):s>-1&&(e.sendEventRemindersToSharedGroupMembers=t.slice(0,s).concat(t.slice(s+1)))}else e.sendEventRemindersToSharedGroupMembers=r}}}),e._v(" "),t("label",{attrs:{for:"caldavSendEventRemindersToSharedGroupMembers"}},[e._v("\n\t\t\t"+e._s(e.$t("dav","Send reminder notifications to calendar sharees as well"))+"\n\t\t")]),e._v(" "),t("br"),e._v(" "),t("em",[e._v("\n\t\t\t"+e._s(e.$t("dav","Reminders are always sent to organizers and attendees."))+"\n\t\t")])]),e._v(" "),t("p",{staticClass:"indented"},[t("input",{directives:[{name:"model",rawName:"v-model",value:e.sendEventRemindersPush,expression:"sendEventRemindersPush"}],staticClass:"checkbox",attrs:{id:"caldavSendEventRemindersPush",type:"checkbox",disabled:!e.sendEventReminders},domProps:{checked:Array.isArray(e.sendEventRemindersPush)?e._i(e.sendEventRemindersPush,null)>-1:e.sendEventRemindersPush},on:{change:function(n){var t=e.sendEventRemindersPush,a=n.target,r=!!a.checked;if(Array.isArray(t)){var s=e._i(t,null);a.checked?s<0&&(e.sendEventRemindersPush=t.concat([null])):s>-1&&(e.sendEventRemindersPush=t.slice(0,s).concat(t.slice(s+1)))}else e.sendEventRemindersPush=r}}}),e._v(" "),t("label",{attrs:{for:"caldavSendEventRemindersPush"}},[e._v("\n\t\t\t"+e._s(e.$t("dav","Enable notifications for events via push"))+"\n\t\t")])])])}),[],!1,null,"19a89582",null).exports;a.default.prototype.$t=s.translate,new(a.default.extend(C))({name:"CalDavSettingsView",data:function(){return{sendInvitations:(0,r.loadState)("dav","sendInvitations"),generateBirthdayCalendar:(0,r.loadState)("dav","generateBirthdayCalendar"),sendEventReminders:(0,r.loadState)("dav","sendEventReminders"),sendEventRemindersToSharedGroupMembers:(0,r.loadState)("dav","sendEventRemindersToSharedGroupMembers"),sendEventRemindersPush:(0,r.loadState)("dav","sendEventRemindersPush")}}}).$mount("#settings-admin-caldav")},48885:function(e,n,t){var a=t(87537),r=t.n(a),s=t(23645),d=t.n(s)()(r());d.push([e.id,".indented[data-v-19a89582]{padding-left:28px}","",{version:3,sources:["webpack://./apps/dav/src/views/CalDavSettings.vue"],names:[],mappings:"AAuFA,2BACC,iBAAA",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.indented {\n\tpadding-left: 28px;\n}\n"],sourceRoot:""}]),n.Z=d}},t={};function a(e){var r=t[e];if(void 0!==r)return r.exports;var s=t[e]={id:e,loaded:!1,exports:{}};return n[e].call(s.exports,s,s.exports,a),s.loaded=!0,s.exports}a.m=n,a.amdD=function(){throw new Error("define cannot be used indirect")},a.amdO={},e=[],a.O=function(n,t,r,s){if(!t){var d=1/0;for(c=0;c<e.length;c++){t=e[c][0],r=e[c][1],s=e[c][2];for(var i=!0,o=0;o<t.length;o++)(!1&s||d>=s)&&Object.keys(a.O).every((function(e){return a.O[e](t[o])}))?t.splice(o--,1):(i=!1,s<d&&(d=s));if(i){e.splice(c--,1);var l=r();void 0!==l&&(n=l)}}return n}s=s||0;for(var c=e.length;c>0&&e[c-1][2]>s;c--)e[c]=e[c-1];e[c]=[t,r,s]},a.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(n,{a:n}),n},a.d=function(e,n){for(var t in n)a.o(n,t)&&!a.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},a.j=2231,function(){a.b=document.baseURI||self.location.href;var e={2231:0};a.O.j=function(n){return 0===e[n]};var n=function(n,t){var r,s,d=t[0],i=t[1],o=t[2],l=0;if(d.some((function(n){return 0!==e[n]}))){for(r in i)a.o(i,r)&&(a.m[r]=i[r]);if(o)var c=o(a)}for(n&&n(t);l<d.length;l++)s=d[l],a.o(e,s)&&e[s]&&e[s][0](),e[s]=0;return a.O(c)},t=self.webpackChunknextcloud=self.webpackChunknextcloud||[];t.forEach(n.bind(null,0)),t.push=n.bind(null,t.push.bind(t))}(),a.nc=void 0;var r=a.O(void 0,[7874],(function(){return a(46976)}));r=a.O(r)}();
+//# sourceMappingURL=dav-settings-admin-caldav.js.map?v=8f7a35edc113372f821f \ No newline at end of file
diff --git a/dist/dav-settings-admin-caldav.js.map b/dist/dav-settings-admin-caldav.js.map
index c563738cbe3..9ed520fd2c3 100644
--- a/dist/dav-settings-admin-caldav.js.map
+++ b/dist/dav-settings-admin-caldav.js.map
@@ -1 +1 @@
-{"version":3,"file":"dav-settings-admin-caldav.js?v=61c319bf6e1cae626f58","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/dav/src/views/CalDavSettings.vue","webpack:///nextcloud/apps/dav/src/views/CalDavSettings.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/dav/src/views/CalDavSettings.vue?36c1","webpack://nextcloud/./apps/dav/src/views/CalDavSettings.vue?bad0","webpack:///nextcloud/apps/dav/src/views/CalDavSettings.vue?vue&type=template&id=19a89582&scoped=true&","webpack:///nextcloud/apps/dav/src/settings.js","webpack:///nextcloud/apps/dav/src/views/CalDavSettings.vue?vue&type=style&index=0&id=19a89582&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};","<template>\n\t<div class=\"section\">\n\t\t<h2>{{ $t('dav', 'Calendar server') }}</h2>\n\t\t<!-- Can use v-html as:\n\t\t\t- $t passes the translated string through DOMPurify.sanitize,\n\t\t\t- replacement strings are not user-controlled. -->\n\t\t<!-- eslint-disable-next-line vue/no-v-html -->\n\t\t<p class=\"settings-hint\" v-html=\"hint\" />\n\t\t<p>\n\t\t\t<input id=\"caldavSendInvitations\"\n\t\t\t\tv-model=\"sendInvitations\"\n\t\t\t\ttype=\"checkbox\"\n\t\t\t\tclass=\"checkbox\">\n\t\t\t<label for=\"caldavSendInvitations\">\n\t\t\t\t{{ $t('dav', 'Send invitations to attendees') }}\n\t\t\t</label>\n\t\t\t<br>\n\t\t\t<!-- Can use v-html as:\n\t\t\t\t- $t passes the translated string through DOMPurify.sanitize,\n\t\t\t\t- replacement strings are not user-controlled. -->\n\t\t\t<!-- eslint-disable-next-line vue/no-v-html -->\n\t\t\t<em v-html=\"sendInvitationsHelpText\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<input id=\"caldavGenerateBirthdayCalendar\"\n\t\t\t\tv-model=\"generateBirthdayCalendar\"\n\t\t\t\ttype=\"checkbox\"\n\t\t\t\tclass=\"checkbox\">\n\t\t\t<label for=\"caldavGenerateBirthdayCalendar\">\n\t\t\t\t{{ $t('dav', 'Automatically generate a birthday calendar') }}\n\t\t\t</label>\n\t\t\t<br>\n\t\t\t<em>\n\t\t\t\t{{ $t('dav', 'Birthday calendars will be generated by a background job.') }}\n\t\t\t</em>\n\t\t\t<br>\n\t\t\t<em>\n\t\t\t\t{{ $t('dav', 'Hence they will not be available immediately after enabling but will show up after some time.') }}\n\t\t\t</em>\n\t\t</p>\n\t\t<p>\n\t\t\t<input id=\"caldavSendEventReminders\"\n\t\t\t\tv-model=\"sendEventReminders\"\n\t\t\t\ttype=\"checkbox\"\n\t\t\t\tclass=\"checkbox\">\n\t\t\t<label for=\"caldavSendEventReminders\">\n\t\t\t\t{{ $t('dav', 'Send notifications for events') }}\n\t\t\t</label>\n\t\t\t<br>\n\t\t\t<!-- Can use v-html as:\n\t\t\t\t- $t passes the translated string through DOMPurify.sanitize,\n\t\t\t\t- replacement strings are not user-controlled. -->\n\t\t\t<!-- eslint-disable-next-line vue/no-v-html -->\n\t\t\t<em v-html=\"sendEventRemindersHelpText\" />\n\t\t\t<br>\n\t\t\t<em>\n\t\t\t\t{{ $t('dav', 'Notifications are sent via background jobs, so these must occur often enough.') }}\n\t\t\t</em>\n\t\t</p>\n\t\t<p class=\"indented\">\n\t\t\t<input id=\"caldavSendEventRemindersToSharedGroupMembers\"\n\t\t\t\tv-model=\"sendEventRemindersToSharedGroupMembers\"\n\t\t\t\ttype=\"checkbox\"\n\t\t\t\tclass=\"checkbox\"\n\t\t\t\t:disabled=\"!sendEventReminders\">\n\t\t\t<label for=\"caldavSendEventRemindersToSharedGroupMembers\">\n\t\t\t\t{{ $t('dav', 'Send reminder notifications to calendar sharees as well' ) }}\n\t\t\t</label>\n\t\t\t<br>\n\t\t\t<em>\n\t\t\t\t{{ $t('dav', 'Reminders are always sent to organizers and attendees.' ) }}\n\t\t\t</em>\n\t\t</p>\n\t\t<p class=\"indented\">\n\t\t\t<input id=\"caldavSendEventRemindersPush\"\n\t\t\t\tv-model=\"sendEventRemindersPush\"\n\t\t\t\ttype=\"checkbox\"\n\t\t\t\tclass=\"checkbox\"\n\t\t\t\t:disabled=\"!sendEventReminders\">\n\t\t\t<label for=\"caldavSendEventRemindersPush\">\n\t\t\t\t{{ $t('dav', 'Enable notifications for events via push') }}\n\t\t\t</label>\n\t\t</p>\n\t</div>\n</template>\n\n<style lang=\"scss\" scoped>\n\t.indented {\n\t\tpadding-left: 28px;\n\t}\n</style>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\n\nconst userSyncCalendarsDocUrl = loadState('dav', 'userSyncCalendarsDocUrl', '#')\n\nexport default {\n\tname: 'CalDavSettings',\n\tcomputed: {\n\t\thint() {\n\t\t\tconst translated = this.$t(\n\t\t\t\t'dav',\n\t\t\t\t'Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}.',\n\t\t\t)\n\t\t\treturn translated\n\t\t\t\t.replace('{calendarappstoreopen}', '<a target=\"_blank\" href=\"../apps/office/calendar\">')\n\t\t\t\t.replace('{calendardocopen}', `<a target=\"_blank\" href=\"${userSyncCalendarsDocUrl}\" rel=\"noreferrer noopener\">`)\n\t\t\t\t.replace(/\\{linkclose\\}/g, '</a>')\n\t\t},\n\t\tsendInvitationsHelpText() {\n\t\t\tconst translated = this.$t('dav', 'Please make sure to properly set up {emailopen}the email server{linkclose}.')\n\t\t\treturn translated\n\t\t\t\t.replace('{emailopen}', '<a href=\"../admin#mail_general_settings\">')\n\t\t\t\t.replace('{linkclose}', '</a>')\n\t\t},\n\t\tsendEventRemindersHelpText() {\n\t\t\tconst translated = this.$t('dav', 'Please make sure to properly set up {emailopen}the email server{linkclose}.')\n\t\t\treturn translated\n\t\t\t\t.replace('{emailopen}', '<a href=\"../admin#mail_general_settings\">')\n\t\t\t\t.replace('{linkclose}', '</a>')\n\t\t},\n\t},\n\twatch: {\n\t\tgenerateBirthdayCalendar(value) {\n\t\t\tconst baseUrl = value ? '/apps/dav/enableBirthdayCalendar' : '/apps/dav/disableBirthdayCalendar'\n\t\t\taxios.post(generateUrl(baseUrl))\n\t\t},\n\t\tsendInvitations(value) {\n\t\t\tOCP.AppConfig.setValue(\n\t\t\t\t'dav',\n\t\t\t\t'sendInvitations',\n\t\t\t\tvalue ? 'yes' : 'no'\n\t\t\t)\n\t\t},\n\t\tsendEventReminders(value) {\n\t\t\tOCP.AppConfig.setValue('dav', 'sendEventReminders', value ? 'yes' : 'no')\n\t\t},\n\t\tsendEventRemindersToSharedGroupMembers(value) {\n\t\t\tOCP.AppConfig.setValue(\n\t\t\t\t'dav',\n\t\t\t\t'sendEventRemindersToSharedGroupMembers',\n\t\t\t\tvalue ? 'yes' : 'no'\n\t\t\t)\n\t\t},\n\t\tsendEventRemindersPush(value) {\n\t\t\tOCP.AppConfig.setValue('dav', 'sendEventRemindersPush', value ? 'yes' : 'no')\n\t\t},\n\t},\n}\n</script>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CalDavSettings.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!./CalDavSettings.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!./CalDavSettings.vue?vue&type=style&index=0&id=19a89582&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!./CalDavSettings.vue?vue&type=style&index=0&id=19a89582&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./CalDavSettings.vue?vue&type=template&id=19a89582&scoped=true&\"\nimport script from \"./CalDavSettings.vue?vue&type=script&lang=js&\"\nexport * from \"./CalDavSettings.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CalDavSettings.vue?vue&type=style&index=0&id=19a89582&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 \"19a89582\",\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', 'Calendar server')))]),_vm._v(\" \"),_c('p',{staticClass:\"settings-hint\",domProps:{\"innerHTML\":_vm._s(_vm.hint)}}),_vm._v(\" \"),_c('p',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.sendInvitations),expression:\"sendInvitations\"}],staticClass:\"checkbox\",attrs:{\"id\":\"caldavSendInvitations\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.sendInvitations)?_vm._i(_vm.sendInvitations,null)>-1:(_vm.sendInvitations)},on:{\"change\":function($event){var $$a=_vm.sendInvitations,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.sendInvitations=$$a.concat([$$v]))}else{$$i>-1&&(_vm.sendInvitations=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.sendInvitations=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"caldavSendInvitations\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.$t('dav', 'Send invitations to attendees'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('em',{domProps:{\"innerHTML\":_vm._s(_vm.sendInvitationsHelpText)}})]),_vm._v(\" \"),_c('p',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.generateBirthdayCalendar),expression:\"generateBirthdayCalendar\"}],staticClass:\"checkbox\",attrs:{\"id\":\"caldavGenerateBirthdayCalendar\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.generateBirthdayCalendar)?_vm._i(_vm.generateBirthdayCalendar,null)>-1:(_vm.generateBirthdayCalendar)},on:{\"change\":function($event){var $$a=_vm.generateBirthdayCalendar,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.generateBirthdayCalendar=$$a.concat([$$v]))}else{$$i>-1&&(_vm.generateBirthdayCalendar=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.generateBirthdayCalendar=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"caldavGenerateBirthdayCalendar\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.$t('dav', 'Automatically generate a birthday calendar'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('em',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.$t('dav', 'Birthday calendars will be generated by a background job.'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('em',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.$t('dav', 'Hence they will not be available immediately after enabling but will show up after some time.'))+\"\\n\\t\\t\")])]),_vm._v(\" \"),_c('p',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.sendEventReminders),expression:\"sendEventReminders\"}],staticClass:\"checkbox\",attrs:{\"id\":\"caldavSendEventReminders\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.sendEventReminders)?_vm._i(_vm.sendEventReminders,null)>-1:(_vm.sendEventReminders)},on:{\"change\":function($event){var $$a=_vm.sendEventReminders,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.sendEventReminders=$$a.concat([$$v]))}else{$$i>-1&&(_vm.sendEventReminders=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.sendEventReminders=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"caldavSendEventReminders\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.$t('dav', 'Send notifications for events'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('em',{domProps:{\"innerHTML\":_vm._s(_vm.sendEventRemindersHelpText)}}),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('em',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.$t('dav', 'Notifications are sent via background jobs, so these must occur often enough.'))+\"\\n\\t\\t\")])]),_vm._v(\" \"),_c('p',{staticClass:\"indented\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.sendEventRemindersToSharedGroupMembers),expression:\"sendEventRemindersToSharedGroupMembers\"}],staticClass:\"checkbox\",attrs:{\"id\":\"caldavSendEventRemindersToSharedGroupMembers\",\"type\":\"checkbox\",\"disabled\":!_vm.sendEventReminders},domProps:{\"checked\":Array.isArray(_vm.sendEventRemindersToSharedGroupMembers)?_vm._i(_vm.sendEventRemindersToSharedGroupMembers,null)>-1:(_vm.sendEventRemindersToSharedGroupMembers)},on:{\"change\":function($event){var $$a=_vm.sendEventRemindersToSharedGroupMembers,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.sendEventRemindersToSharedGroupMembers=$$a.concat([$$v]))}else{$$i>-1&&(_vm.sendEventRemindersToSharedGroupMembers=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.sendEventRemindersToSharedGroupMembers=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"caldavSendEventRemindersToSharedGroupMembers\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.$t('dav', 'Send reminder notifications to calendar sharees as well' ))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('em',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.$t('dav', 'Reminders are always sent to organizers and attendees.' ))+\"\\n\\t\\t\")])]),_vm._v(\" \"),_c('p',{staticClass:\"indented\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.sendEventRemindersPush),expression:\"sendEventRemindersPush\"}],staticClass:\"checkbox\",attrs:{\"id\":\"caldavSendEventRemindersPush\",\"type\":\"checkbox\",\"disabled\":!_vm.sendEventReminders},domProps:{\"checked\":Array.isArray(_vm.sendEventRemindersPush)?_vm._i(_vm.sendEventRemindersPush,null)>-1:(_vm.sendEventRemindersPush)},on:{\"change\":function($event){var $$a=_vm.sendEventRemindersPush,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.sendEventRemindersPush=$$a.concat([$$v]))}else{$$i>-1&&(_vm.sendEventRemindersPush=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.sendEventRemindersPush=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"caldavSendEventRemindersPush\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.$t('dav', 'Enable notifications for events via push'))+\"\\n\\t\\t\")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue'\nimport { loadState } from '@nextcloud/initial-state'\nimport { translate } from '@nextcloud/l10n'\nimport CalDavSettings from './views/CalDavSettings'\n\nVue.prototype.$t = translate\n\nconst View = Vue.extend(CalDavSettings)\nconst CalDavSettingsView = new View({\n\tname: 'CalDavSettingsView',\n\tdata() {\n\t\treturn {\n\t\t\tsendInvitations: loadState('dav', 'sendInvitations'),\n\t\t\tgenerateBirthdayCalendar: loadState(\n\t\t\t\t'dav',\n\t\t\t\t'generateBirthdayCalendar'\n\t\t\t),\n\t\t\tsendEventReminders: loadState('dav', 'sendEventReminders'),\n\t\t\tsendEventRemindersToSharedGroupMembers: loadState(\n\t\t\t\t'dav',\n\t\t\t\t'sendEventRemindersToSharedGroupMembers'\n\t\t\t),\n\t\t\tsendEventRemindersPush: loadState('dav', 'sendEventRemindersPush'),\n\t\t}\n\t},\n})\n\nCalDavSettingsView.$mount('#settings-admin-caldav')\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, \".indented[data-v-19a89582]{padding-left:28px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/dav/src/views/CalDavSettings.vue\"],\"names\":[],\"mappings\":\"AAuFA,2BACC,iBAAA\",\"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.indented {\\n\\tpadding-left: 28px;\\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 = 2231;","__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\t2231: 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__(46976); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_c","_self","staticClass","_v","_s","$t","domProps","hint","directives","name","rawName","value","expression","attrs","Array","isArray","sendInvitations","_i","on","$event","$$a","$$el","target","$$c","checked","$$i","concat","slice","sendInvitationsHelpText","generateBirthdayCalendar","sendEventReminders","sendEventRemindersHelpText","sendEventRemindersToSharedGroupMembers","sendEventRemindersPush","Vue","translate","CalDavSettings","data","loadState","$mount","___CSS_LOADER_EXPORT___","push","module","id","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","window","obj","prop","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-admin-caldav.js?v=8f7a35edc113372f821f","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/dav/src/views/CalDavSettings.vue","webpack:///nextcloud/apps/dav/src/views/CalDavSettings.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/dav/src/views/CalDavSettings.vue?36c1","webpack://nextcloud/./apps/dav/src/views/CalDavSettings.vue?bad0","webpack:///nextcloud/apps/dav/src/views/CalDavSettings.vue?vue&type=template&id=19a89582&scoped=true&","webpack:///nextcloud/apps/dav/src/settings.js","webpack:///nextcloud/apps/dav/src/views/CalDavSettings.vue?vue&type=style&index=0&id=19a89582&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/runtime/nonce","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};","<template>\n\t<div class=\"section\">\n\t\t<h2>{{ $t('dav', 'Calendar server') }}</h2>\n\t\t<!-- Can use v-html as:\n\t\t\t- $t passes the translated string through DOMPurify.sanitize,\n\t\t\t- replacement strings are not user-controlled. -->\n\t\t<!-- eslint-disable-next-line vue/no-v-html -->\n\t\t<p class=\"settings-hint\" v-html=\"hint\" />\n\t\t<p>\n\t\t\t<input id=\"caldavSendInvitations\"\n\t\t\t\tv-model=\"sendInvitations\"\n\t\t\t\ttype=\"checkbox\"\n\t\t\t\tclass=\"checkbox\">\n\t\t\t<label for=\"caldavSendInvitations\">\n\t\t\t\t{{ $t('dav', 'Send invitations to attendees') }}\n\t\t\t</label>\n\t\t\t<br>\n\t\t\t<!-- Can use v-html as:\n\t\t\t\t- $t passes the translated string through DOMPurify.sanitize,\n\t\t\t\t- replacement strings are not user-controlled. -->\n\t\t\t<!-- eslint-disable-next-line vue/no-v-html -->\n\t\t\t<em v-html=\"sendInvitationsHelpText\" />\n\t\t</p>\n\t\t<p>\n\t\t\t<input id=\"caldavGenerateBirthdayCalendar\"\n\t\t\t\tv-model=\"generateBirthdayCalendar\"\n\t\t\t\ttype=\"checkbox\"\n\t\t\t\tclass=\"checkbox\">\n\t\t\t<label for=\"caldavGenerateBirthdayCalendar\">\n\t\t\t\t{{ $t('dav', 'Automatically generate a birthday calendar') }}\n\t\t\t</label>\n\t\t\t<br>\n\t\t\t<em>\n\t\t\t\t{{ $t('dav', 'Birthday calendars will be generated by a background job.') }}\n\t\t\t</em>\n\t\t\t<br>\n\t\t\t<em>\n\t\t\t\t{{ $t('dav', 'Hence they will not be available immediately after enabling but will show up after some time.') }}\n\t\t\t</em>\n\t\t</p>\n\t\t<p>\n\t\t\t<input id=\"caldavSendEventReminders\"\n\t\t\t\tv-model=\"sendEventReminders\"\n\t\t\t\ttype=\"checkbox\"\n\t\t\t\tclass=\"checkbox\">\n\t\t\t<label for=\"caldavSendEventReminders\">\n\t\t\t\t{{ $t('dav', 'Send notifications for events') }}\n\t\t\t</label>\n\t\t\t<br>\n\t\t\t<!-- Can use v-html as:\n\t\t\t\t- $t passes the translated string through DOMPurify.sanitize,\n\t\t\t\t- replacement strings are not user-controlled. -->\n\t\t\t<!-- eslint-disable-next-line vue/no-v-html -->\n\t\t\t<em v-html=\"sendEventRemindersHelpText\" />\n\t\t\t<br>\n\t\t\t<em>\n\t\t\t\t{{ $t('dav', 'Notifications are sent via background jobs, so these must occur often enough.') }}\n\t\t\t</em>\n\t\t</p>\n\t\t<p class=\"indented\">\n\t\t\t<input id=\"caldavSendEventRemindersToSharedGroupMembers\"\n\t\t\t\tv-model=\"sendEventRemindersToSharedGroupMembers\"\n\t\t\t\ttype=\"checkbox\"\n\t\t\t\tclass=\"checkbox\"\n\t\t\t\t:disabled=\"!sendEventReminders\">\n\t\t\t<label for=\"caldavSendEventRemindersToSharedGroupMembers\">\n\t\t\t\t{{ $t('dav', 'Send reminder notifications to calendar sharees as well' ) }}\n\t\t\t</label>\n\t\t\t<br>\n\t\t\t<em>\n\t\t\t\t{{ $t('dav', 'Reminders are always sent to organizers and attendees.' ) }}\n\t\t\t</em>\n\t\t</p>\n\t\t<p class=\"indented\">\n\t\t\t<input id=\"caldavSendEventRemindersPush\"\n\t\t\t\tv-model=\"sendEventRemindersPush\"\n\t\t\t\ttype=\"checkbox\"\n\t\t\t\tclass=\"checkbox\"\n\t\t\t\t:disabled=\"!sendEventReminders\">\n\t\t\t<label for=\"caldavSendEventRemindersPush\">\n\t\t\t\t{{ $t('dav', 'Enable notifications for events via push') }}\n\t\t\t</label>\n\t\t</p>\n\t</div>\n</template>\n\n<style lang=\"scss\" scoped>\n\t.indented {\n\t\tpadding-left: 28px;\n\t}\n</style>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\n\nconst userSyncCalendarsDocUrl = loadState('dav', 'userSyncCalendarsDocUrl', '#')\n\nexport default {\n\tname: 'CalDavSettings',\n\tcomputed: {\n\t\thint() {\n\t\t\tconst translated = this.$t(\n\t\t\t\t'dav',\n\t\t\t\t'Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}.',\n\t\t\t)\n\t\t\treturn translated\n\t\t\t\t.replace('{calendarappstoreopen}', '<a target=\"_blank\" href=\"../apps/office/calendar\">')\n\t\t\t\t.replace('{calendardocopen}', `<a target=\"_blank\" href=\"${userSyncCalendarsDocUrl}\" rel=\"noreferrer noopener\">`)\n\t\t\t\t.replace(/\\{linkclose\\}/g, '</a>')\n\t\t},\n\t\tsendInvitationsHelpText() {\n\t\t\tconst translated = this.$t('dav', 'Please make sure to properly set up {emailopen}the email server{linkclose}.')\n\t\t\treturn translated\n\t\t\t\t.replace('{emailopen}', '<a href=\"../admin#mail_general_settings\">')\n\t\t\t\t.replace('{linkclose}', '</a>')\n\t\t},\n\t\tsendEventRemindersHelpText() {\n\t\t\tconst translated = this.$t('dav', 'Please make sure to properly set up {emailopen}the email server{linkclose}.')\n\t\t\treturn translated\n\t\t\t\t.replace('{emailopen}', '<a href=\"../admin#mail_general_settings\">')\n\t\t\t\t.replace('{linkclose}', '</a>')\n\t\t},\n\t},\n\twatch: {\n\t\tgenerateBirthdayCalendar(value) {\n\t\t\tconst baseUrl = value ? '/apps/dav/enableBirthdayCalendar' : '/apps/dav/disableBirthdayCalendar'\n\t\t\taxios.post(generateUrl(baseUrl))\n\t\t},\n\t\tsendInvitations(value) {\n\t\t\tOCP.AppConfig.setValue(\n\t\t\t\t'dav',\n\t\t\t\t'sendInvitations',\n\t\t\t\tvalue ? 'yes' : 'no'\n\t\t\t)\n\t\t},\n\t\tsendEventReminders(value) {\n\t\t\tOCP.AppConfig.setValue('dav', 'sendEventReminders', value ? 'yes' : 'no')\n\t\t},\n\t\tsendEventRemindersToSharedGroupMembers(value) {\n\t\t\tOCP.AppConfig.setValue(\n\t\t\t\t'dav',\n\t\t\t\t'sendEventRemindersToSharedGroupMembers',\n\t\t\t\tvalue ? 'yes' : 'no'\n\t\t\t)\n\t\t},\n\t\tsendEventRemindersPush(value) {\n\t\t\tOCP.AppConfig.setValue('dav', 'sendEventRemindersPush', value ? 'yes' : 'no')\n\t\t},\n\t},\n}\n</script>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CalDavSettings.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!./CalDavSettings.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!./CalDavSettings.vue?vue&type=style&index=0&id=19a89582&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!./CalDavSettings.vue?vue&type=style&index=0&id=19a89582&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./CalDavSettings.vue?vue&type=template&id=19a89582&scoped=true&\"\nimport script from \"./CalDavSettings.vue?vue&type=script&lang=js&\"\nexport * from \"./CalDavSettings.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CalDavSettings.vue?vue&type=style&index=0&id=19a89582&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 \"19a89582\",\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', 'Calendar server')))]),_vm._v(\" \"),_c('p',{staticClass:\"settings-hint\",domProps:{\"innerHTML\":_vm._s(_vm.hint)}}),_vm._v(\" \"),_c('p',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.sendInvitations),expression:\"sendInvitations\"}],staticClass:\"checkbox\",attrs:{\"id\":\"caldavSendInvitations\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.sendInvitations)?_vm._i(_vm.sendInvitations,null)>-1:(_vm.sendInvitations)},on:{\"change\":function($event){var $$a=_vm.sendInvitations,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.sendInvitations=$$a.concat([$$v]))}else{$$i>-1&&(_vm.sendInvitations=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.sendInvitations=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"caldavSendInvitations\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.$t('dav', 'Send invitations to attendees'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('em',{domProps:{\"innerHTML\":_vm._s(_vm.sendInvitationsHelpText)}})]),_vm._v(\" \"),_c('p',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.generateBirthdayCalendar),expression:\"generateBirthdayCalendar\"}],staticClass:\"checkbox\",attrs:{\"id\":\"caldavGenerateBirthdayCalendar\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.generateBirthdayCalendar)?_vm._i(_vm.generateBirthdayCalendar,null)>-1:(_vm.generateBirthdayCalendar)},on:{\"change\":function($event){var $$a=_vm.generateBirthdayCalendar,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.generateBirthdayCalendar=$$a.concat([$$v]))}else{$$i>-1&&(_vm.generateBirthdayCalendar=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.generateBirthdayCalendar=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"caldavGenerateBirthdayCalendar\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.$t('dav', 'Automatically generate a birthday calendar'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('em',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.$t('dav', 'Birthday calendars will be generated by a background job.'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('em',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.$t('dav', 'Hence they will not be available immediately after enabling but will show up after some time.'))+\"\\n\\t\\t\")])]),_vm._v(\" \"),_c('p',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.sendEventReminders),expression:\"sendEventReminders\"}],staticClass:\"checkbox\",attrs:{\"id\":\"caldavSendEventReminders\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.sendEventReminders)?_vm._i(_vm.sendEventReminders,null)>-1:(_vm.sendEventReminders)},on:{\"change\":function($event){var $$a=_vm.sendEventReminders,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.sendEventReminders=$$a.concat([$$v]))}else{$$i>-1&&(_vm.sendEventReminders=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.sendEventReminders=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"caldavSendEventReminders\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.$t('dav', 'Send notifications for events'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('em',{domProps:{\"innerHTML\":_vm._s(_vm.sendEventRemindersHelpText)}}),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('em',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.$t('dav', 'Notifications are sent via background jobs, so these must occur often enough.'))+\"\\n\\t\\t\")])]),_vm._v(\" \"),_c('p',{staticClass:\"indented\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.sendEventRemindersToSharedGroupMembers),expression:\"sendEventRemindersToSharedGroupMembers\"}],staticClass:\"checkbox\",attrs:{\"id\":\"caldavSendEventRemindersToSharedGroupMembers\",\"type\":\"checkbox\",\"disabled\":!_vm.sendEventReminders},domProps:{\"checked\":Array.isArray(_vm.sendEventRemindersToSharedGroupMembers)?_vm._i(_vm.sendEventRemindersToSharedGroupMembers,null)>-1:(_vm.sendEventRemindersToSharedGroupMembers)},on:{\"change\":function($event){var $$a=_vm.sendEventRemindersToSharedGroupMembers,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.sendEventRemindersToSharedGroupMembers=$$a.concat([$$v]))}else{$$i>-1&&(_vm.sendEventRemindersToSharedGroupMembers=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.sendEventRemindersToSharedGroupMembers=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"caldavSendEventRemindersToSharedGroupMembers\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.$t('dav', 'Send reminder notifications to calendar sharees as well' ))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('em',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.$t('dav', 'Reminders are always sent to organizers and attendees.' ))+\"\\n\\t\\t\")])]),_vm._v(\" \"),_c('p',{staticClass:\"indented\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.sendEventRemindersPush),expression:\"sendEventRemindersPush\"}],staticClass:\"checkbox\",attrs:{\"id\":\"caldavSendEventRemindersPush\",\"type\":\"checkbox\",\"disabled\":!_vm.sendEventReminders},domProps:{\"checked\":Array.isArray(_vm.sendEventRemindersPush)?_vm._i(_vm.sendEventRemindersPush,null)>-1:(_vm.sendEventRemindersPush)},on:{\"change\":function($event){var $$a=_vm.sendEventRemindersPush,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.sendEventRemindersPush=$$a.concat([$$v]))}else{$$i>-1&&(_vm.sendEventRemindersPush=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.sendEventRemindersPush=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"caldavSendEventRemindersPush\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.$t('dav', 'Enable notifications for events via push'))+\"\\n\\t\\t\")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue'\nimport { loadState } from '@nextcloud/initial-state'\nimport { translate } from '@nextcloud/l10n'\nimport CalDavSettings from './views/CalDavSettings'\n\nVue.prototype.$t = translate\n\nconst View = Vue.extend(CalDavSettings)\nconst CalDavSettingsView = new View({\n\tname: 'CalDavSettingsView',\n\tdata() {\n\t\treturn {\n\t\t\tsendInvitations: loadState('dav', 'sendInvitations'),\n\t\t\tgenerateBirthdayCalendar: loadState(\n\t\t\t\t'dav',\n\t\t\t\t'generateBirthdayCalendar'\n\t\t\t),\n\t\t\tsendEventReminders: loadState('dav', 'sendEventReminders'),\n\t\t\tsendEventRemindersToSharedGroupMembers: loadState(\n\t\t\t\t'dav',\n\t\t\t\t'sendEventRemindersToSharedGroupMembers'\n\t\t\t),\n\t\t\tsendEventRemindersPush: loadState('dav', 'sendEventRemindersPush'),\n\t\t}\n\t},\n})\n\nCalDavSettingsView.$mount('#settings-admin-caldav')\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, \".indented[data-v-19a89582]{padding-left:28px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/dav/src/views/CalDavSettings.vue\"],\"names\":[],\"mappings\":\"AAuFA,2BACC,iBAAA\",\"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.indented {\\n\\tpadding-left: 28px;\\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 = 2231;","__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\t2231: 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));","__webpack_require__.nc = undefined;","// 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__(46976); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_c","_self","staticClass","_v","_s","$t","domProps","hint","directives","name","rawName","value","expression","attrs","Array","isArray","sendInvitations","_i","on","$event","$$a","$$el","target","$$c","checked","$$i","concat","slice","sendInvitationsHelpText","generateBirthdayCalendar","sendEventReminders","sendEventRemindersHelpText","sendEventRemindersToSharedGroupMembers","sendEventRemindersPush","Vue","translate","CalDavSettings","data","loadState","$mount","___CSS_LOADER_EXPORT___","push","module","id","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/dav-settings-personal-availability.js b/dist/dav-settings-personal-availability.js
index 73b761ed211..003644bc616 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,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))}(),r.nc=void 0;var a=r.O(void 0,[7874],(function(){return r(52984)}));a=r.O(a)}();
+//# sourceMappingURL=dav-settings-personal-availability.js.map?v=df7e5679940cf3bbb148 \ 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..70b110f4c4f 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=df7e5679940cf3bbb148","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/runtime/nonce","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));","__webpack_require__.nc = undefined;","// 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","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/files-main.js b/dist/files-main.js
index b2ff47334db..1c83dfa7b5d 100644
--- a/dist/files-main.js
+++ b/dist/files-main.js
@@ -1,3 +1,3 @@
/*! For license information please see files-main.js.LICENSE.txt */
-!function(){"use strict";var e,n={58949:function(e,n,i){var r=i(20144);function a(e,n){for(var t=0;t<n.length;t++){var i=n[t];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var o=function(){function e(){var n,t;!function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}(this,e),t=void 0,(n="_settings")in this?Object.defineProperty(this,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):this[n]=t,this._settings=[],console.debug("OCA.Files.Settings initialized")}var n,t;return n=e,(t=[{key:"register",value:function(e){return this._settings.filter((function(n){return n.name===e.name})).length>0?(console.error("A setting with the same name is already registered"),!1):(this._settings.push(e),!0)}},{key:"settings",get:function(){return this._settings}}])&&a(n.prototype,t),Object.defineProperty(n,"prototype",{writable:!1}),e}(),l={name:"Setting",props:{el:{type:Function,required:!0}},mounted:function(){this.$el.appendChild(this.el())}},s=i(51900),c={name:"Settings",components:{Setting:(0,s.Z)(l,(function(){var e=this.$createElement;return(this._self._c||e)("div")}),[],!1,null,null,null).exports},data:function(){return{settings:OCA.Files.Settings.settings}}},u=(0,s.Z)(c,(function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("div",{attrs:{id:"files-app-extra-settings"}},[e._l(e.settings,(function(e){return[t("Setting",{key:e.name,attrs:{el:e.el}})]}))],2)}),[],!1,null,"31c9bb4b",null).exports;function d(e,n){for(var t=0;t<n.length;t++){var i=n[t];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function p(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}var m=function(){function e(n,t){var i=t.el,r=t.open,a=t.close;!function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}(this,e),p(this,"_close",void 0),p(this,"_el",void 0),p(this,"_name",void 0),p(this,"_open",void 0),this._name=n,this._el=i,this._open=r,this._close=a,"function"!=typeof this._open&&(this._open=function(){}),"function"!=typeof this._close&&(this._close=function(){})}var n,t;return n=e,(t=[{key:"name",get:function(){return this._name}},{key:"el",get:function(){return this._el}},{key:"open",get:function(){return this._open}},{key:"close",get:function(){return this._close}}])&&d(n.prototype,t),Object.defineProperty(n,"prototype",{writable:!1}),e}();r.default.prototype.t=t,window.OCA.Files||(window.OCA.Files={}),Object.assign(window.OCA.Files,{Settings:new o}),Object.assign(window.OCA.Files.Settings,{Setting:m}),window.addEventListener("DOMContentLoaded",(function(){if(!window.TESTING){new r.default({el:"#files-app-settings",render:function(e){return e(u)}});var e=document.getElementById("app-settings-header");e&&e.addEventListener("click",(function(e){var n=e.currentTarget.children[0].classList.contains("opened");OCA.Files.Settings.settings.forEach((function(e){return n?e.close():e.open()}))}))}}));var f=i(17499),A=i(16453),v=i(9944),h=i(79753),g=i(22200),C=function(){var e,n,t,i,r=(null===(e=OCA)||void 0===e||null===(n=e.Files)||void 0===n||null===(t=n.App)||void 0===t||null===(i=t.currentFileList)||void 0===i?void 0:i.dirInfo)||{path:"/",name:""};return"".concat(r.path,"/").concat(r.name).replace(/\/\//gi,"/")},b=i(4820),w=i(62520),y=i(26932),_=i(97e3),k=i.n(_),x=i(47450),E=i.n(x);function P(e,n,t,i,r,a,o){try{var l=e[a](o),s=l.value}catch(e){return void t(e)}l.done?n(s):Promise.resolve(s).then(i,r)}function O(e){return function(){var n=this,t=arguments;return new Promise((function(i,r){var a=e.apply(n,t);function o(e){P(a,i,r,o,l,"next",e)}function l(e){P(a,i,r,o,l,"throw",e)}o(void 0)}))}}var T=function(){var e=O(regeneratorRuntime.mark((function e(){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,b.default.get((0,h.generateOcsUrl)("apps/files/api/v1/templates"));case 2:return n=e.sent,e.abrupt("return",n.data.ocs.data);case 4:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),F=function(){var e=O(regeneratorRuntime.mark((function e(n,t,i){var r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,b.default.post((0,h.generateOcsUrl)("apps/files/api/v1/templates/create"),{filePath:n,templatePath:t,templateType:i});case 2:return r=e.sent,e.abrupt("return",r.data.ocs.data);case 4:case"end":return e.stop()}}),e)})));return function(n,t,i){return e.apply(this,arguments)}}(),S=256,B={name:"TemplatePreview",inheritAttrs:!1,props:{basename:{type:String,required:!0},checked:{type:Boolean,default:!1},fileid:{type:[String,Number],required:!0},filename:{type:String,required:!0},previewUrl:{type:String,default:null},hasPreview:{type:Boolean,default:!0},mime:{type:String,required:!0},ratio:{type:Number,default:null}},data:function(){return{failedPreview:!1}},computed:{nameWithoutExt:function(){return this.basename.indexOf(".")>-1?this.basename.split(".").slice(0,-1).join("."):this.basename},id:function(){return"template-picker-".concat(this.fileid)},realPreviewUrl:function(){return this.failedPreview&&this.mimeIcon?this.mimeIcon:this.previewUrl?this.previewUrl:(0,g.getCurrentUser)()?(0,h.generateUrl)("/core/preview?fileId=".concat(this.fileid,"&x=").concat(S,"&y=").concat(S,"&a=1")):(0,h.generateUrl)("/apps/files_sharing/publicpreview/".concat(document.getElementById("sharingToken")&&document.getElementById("sharingToken").value,"?fileId=").concat(this.fileid,"&file=").concat(function(e){var n=(e.startsWith("/")?e:"/".concat(e)).split("/"),t="";return n.forEach((function(e){""!==e&&(t+="/"+encodeURIComponent(e))})),t}(this.filename),"&x=").concat(S,"&y=").concat(S,"&a=1"))},mimeIcon:function(){return OC.MimeType.getIconUrl(this.mime)}},methods:{onCheck:function(){this.$emit("check",this.fileid)},onFailure:function(){this.failedPreview=!0}}},j=B,I=i(93379),M=i.n(I),D=i(7795),U=i.n(D),R=i(90569),L=i.n(R),Z=i(3565),q=i.n(Z),W=i(19216),N=i.n(W),$=i(44589),z=i.n($),G=i(78299),Y={};Y.styleTagTransform=z(),Y.setAttributes=q(),Y.insert=L().bind(null,"head"),Y.domAPI=U(),Y.insertStyleElement=N(),M()(G.Z,Y),G.Z&&G.Z.locals&&G.Z.locals;var Q=(0,s.Z)(j,(function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("li",{staticClass:"template-picker__item"},[t("input",{staticClass:"radio",attrs:{id:e.id,type:"radio",name:"template-picker"},domProps:{checked:e.checked},on:{change:e.onCheck}}),e._v(" "),t("label",{staticClass:"template-picker__label",attrs:{for:e.id}},[t("div",{staticClass:"template-picker__preview",class:e.failedPreview?"template-picker__preview--failed":""},[t("img",{staticClass:"template-picker__image",attrs:{src:e.realPreviewUrl,alt:"",draggable:"false"},on:{error:e.onFailure}})]),e._v(" "),t("span",{staticClass:"template-picker__title"},[e._v("\n\t\t\t"+e._s(e.nameWithoutExt)+"\n\t\t")])])])}),[],!1,null,"440aea22",null).exports;function H(e,n,t,i,r,a,o){try{var l=e[a](o),s=l.value}catch(e){return void t(e)}l.done?n(s):Promise.resolve(s).then(i,r)}function K(e){return function(){var n=this,t=arguments;return new Promise((function(i,r){var a=e.apply(n,t);function o(e){H(a,i,r,o,l,"next",e)}function l(e){H(a,i,r,o,l,"throw",e)}o(void 0)}))}}var J={name:"TemplatePicker",components:{EmptyContent:k(),Modal:E(),TemplatePreview:Q},props:{logger:{type:Object,required:!0}},data:function(){return{checked:-1,loading:!1,name:null,opened:!1,provider:null}},computed:{nameWithoutExt:function(){return this.name.indexOf(".")>-1?this.name.split(".").slice(0,-1).join("."):this.name},emptyTemplate:function(){var e,n;return{basename:t("files","Blank"),fileid:-1,filename:this.t("files","Blank"),hasPreview:!1,mime:(null===(e=this.provider)||void 0===e?void 0:e.mimetypes[0])||(null===(n=this.provider)||void 0===n?void 0:n.mimetypes)}},selectedTemplate:function(){var e=this;return this.provider.templates.find((function(n){return n.fileid===e.checked}))},style:function(){return{"--margin":"8px","--width":"160px","--border":"2px","--fullwidth":"180px","--height":this.provider.ratio?Math.round(160/this.provider.ratio)+"px":null}}},methods:{open:function(e,n){var t=this;return K(regeneratorRuntime.mark((function i(){var r,a;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return t.checked=t.emptyTemplate.fileid,t.name=e,t.provider=n,i.next=5,T();case 5:if(r=i.sent,null!==(a=r.find((function(e){return e.app===n.app&&e.label===n.label})))){i.next=9;break}throw new Error("Failed to match provider in results");case 9:if(t.provider=a,0!==a.templates.length){i.next=13;break}return t.onSubmit(),i.abrupt("return");case 13:t.opened=!0;case 14:case"end":return i.stop()}}),i)})))()},close:function(){this.checked=this.emptyTemplate.fileid,this.loading=!1,this.name=null,this.opened=!1,this.provider=null},onCheck:function(e){this.checked=e},onSubmit:function(){var e=this;return K(regeneratorRuntime.mark((function n(){var t,i,r,a,o,l,s,c,u,d,p,m;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e.loading=!0,a=C(),o=null===(t=OCA)||void 0===t||null===(i=t.Files)||void 0===i||null===(r=i.App)||void 0===r?void 0:r.currentFileList,e.nameWithoutExt===e.name&&(e.logger.debug("Fixed invalid filename",{name:e.name,extension:null===(l=e.provider)||void 0===l?void 0:l.extension}),e.name=e.name+(null===(s=e.provider)||void 0===s?void 0:s.extension)),n.prev=4,n.next=7,F((0,w.normalize)("".concat(a,"/").concat(e.name)),null===(c=e.selectedTemplate)||void 0===c?void 0:c.filename,null===(u=e.selectedTemplate)||void 0===u?void 0:u.templateType);case 7:return d=n.sent,e.logger.debug("Created new file",d),n.next=11,null==o?void 0:o.addAndFetchFileInfo(e.name).then((function(e,n){return n}));case 11:p=n.sent,m=new OCA.Files.FileInfoModel(p,{filesClient:null==o?void 0:o.filesClient}),OCA.Files.fileActions.getDefaultFileAction(d.mime,"file",OC.PERMISSION_ALL).action(d.basename,{$file:null==o?void 0:o.findFileEl(e.name),dir:a,fileList:o,fileActions:null==o?void 0:o.fileActions,fileInfoModel:m}),e.close(),n.next=23;break;case 18:n.prev=18,n.t0=n.catch(4),e.logger.error("Error while creating the new file from template"),console.error(n.t0),(0,y.x2)(e.t("files","Unable to create new file from template"));case 23:return n.prev=23,e.loading=!1,n.finish(23);case 26:case"end":return n.stop()}}),n,null,[[4,18,23,26]])})))()}}},V=J,X=i(79097),ee={};ee.styleTagTransform=z(),ee.setAttributes=q(),ee.insert=L().bind(null,"head"),ee.domAPI=U(),ee.insertStyleElement=N(),M()(X.Z,ee),X.Z&&X.Z.locals&&X.Z.locals;var ne=(0,s.Z)(V,(function(){var e=this,n=e.$createElement,t=e._self._c||n;return e.opened?t("Modal",{staticClass:"templates-picker",attrs:{"clear-view-delay":-1,size:"normal"},on:{close:e.close}},[t("form",{staticClass:"templates-picker__form",style:e.style,on:{submit:function(n){return n.preventDefault(),n.stopPropagation(),e.onSubmit.apply(null,arguments)}}},[t("h2",[e._v(e._s(e.t("files","Pick a template for {name}",{name:e.nameWithoutExt})))]),e._v(" "),t("ul",{staticClass:"templates-picker__list"},[t("TemplatePreview",e._b({attrs:{checked:e.checked===e.emptyTemplate.fileid},on:{check:e.onCheck}},"TemplatePreview",e.emptyTemplate,!1)),e._v(" "),e._l(e.provider.templates,(function(n){return t("TemplatePreview",e._b({key:n.fileid,attrs:{checked:e.checked===n.fileid,ratio:e.provider.ratio},on:{check:e.onCheck}},"TemplatePreview",n,!1))}))],2),e._v(" "),t("div",{staticClass:"templates-picker__buttons"},[t("button",{on:{click:e.close}},[e._v("\n\t\t\t\t"+e._s(e.t("files","Cancel"))+"\n\t\t\t")]),e._v(" "),t("input",{staticClass:"primary",attrs:{type:"submit","aria-label":e.t("files","Create a new file with the selected template")},domProps:{value:e.t("files","Create")}})])]),e._v(" "),e.loading?t("EmptyContent",{staticClass:"templates-picker__loading",attrs:{icon:"icon-loading"}},[e._v("\n\t\t"+e._s(e.t("files","Creating file"))+"\n\t")]):e._e()],1):e._e()}),[],!1,null,"6784795c",null),te=ne.exports;function ie(e,n,t,i,r,a,o){try{var l=e[a](o),s=l.value}catch(e){return void t(e)}l.done?n(s):Promise.resolve(s).then(i,r)}var re=(0,f.IY)().setApp("files").detectUser().build();r.default.mixin({methods:{t:v.translate,n:v.translatePlural}});var ae=document.createElement("div");ae.id="template-picker",document.body.appendChild(ae);var oe=(0,A.loadState)("files","templates",[]),le=(0,A.loadState)("files","templates_path",!1);re.debug("Templates providers",oe),re.debug("Templates folder",{templatesPath:le});var se=new(r.default.extend(te))({name:"TemplatePicker",propsData:{logger:re}});se.$mount("#template-picker"),window.addEventListener("DOMContentLoaded",(function(){if(!le){re.debug("Templates folder not initialized");var e={attach:function(e){e.addMenuEntry({id:"template-init",displayName:(0,v.translate)("files","Set up templates folder"),templateName:(0,v.translate)("files","Templates"),iconClass:"icon-template-add",fileType:"file",actionHandler:function(n){ue(n),e.removeMenuEntry("template-init")}})}};OC.Plugins.register("OCA.Files.NewFileMenu",e)}})),oe.forEach((function(e,n){var t={attach:function(t){var i=t.fileList;"files"!==i.id&&"files.public"!==i.id||t.addMenuEntry({id:"template-new-".concat(e.app,"-").concat(n),displayName:e.label,templateName:e.label+e.extension,iconClass:e.iconClass||"icon-file",fileType:"file",actionHandler:function(n){se.open(n,e)}})}};OC.Plugins.register("OCA.Files.NewFileMenu",t)}));var ce,ue=function(){var e,n=(e=regeneratorRuntime.mark((function e(n){var t,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=(C()+"/".concat(n)).replace("//","/"),e.prev=1,re.debug("Initializing the templates directory",{templatePath:t}),e.next=5,b.default.post((0,h.generateOcsUrl)("apps/files/api/v1/templates/path"),{templatePath:t,copySystemTemplates:!0});case 5:i=e.sent,OCA.Files.App.currentFileList.changeDirectory(t,!0,!0),oe=i.data.ocs.data.templates,le=i.data.ocs.data.template_path,e.next=15;break;case 11:e.prev=11,e.t0=e.catch(1),re.error("Unable to initialize the templates directory"),(0,y.x2)((0,v.translate)("files","Unable to initialize the templates directory"));case 15:case"end":return e.stop()}}),e,null,[[1,11]])})),function(){var n=this,t=arguments;return new Promise((function(i,r){var a=e.apply(n,t);function o(e){ie(a,i,r,o,l,"next",e)}function l(e){ie(a,i,r,o,l,"throw",e)}o(void 0)}))});return function(e){return n.apply(this,arguments)}}(),de=i(74854);ce={attach:function(e){var n=this;(0,de.subscribe)("nextcloud:unified-search.search",(function(n){var t=n.query;e.setFilter(t)})),(0,de.subscribe)("nextcloud:unified-search.reset",(function(){n.query=null,e.setFilter("")}))}},window.OC.Plugins.register("OCA.Files.FileList",ce)},78299:function(e,n,t){var i=t(87537),r=t.n(i),a=t(23645),o=t.n(a)()(r());o.push([e.id,".template-picker__item[data-v-440aea22]{display:flex}.template-picker__label[data-v-440aea22]{display:flex;align-items:center;flex:1 1;flex-direction:column}.template-picker__label[data-v-440aea22],.template-picker__label *[data-v-440aea22]{cursor:pointer;user-select:none}.template-picker__label[data-v-440aea22]::before{display:none !important}.template-picker__preview[data-v-440aea22]{display:block;overflow:hidden;flex:1 1;width:var(--width);min-height:var(--height);max-height:var(--height);padding:0;border:var(--border) solid var(--color-border);border-radius:var(--border-radius-large)}input:checked+label>.template-picker__preview[data-v-440aea22]{border-color:var(--color-primary)}.template-picker__preview--failed[data-v-440aea22]{display:flex}.template-picker__image[data-v-440aea22]{max-width:100%;background-color:var(--color-main-background);object-fit:cover}.template-picker__preview--failed .template-picker__image[data-v-440aea22]{width:calc(var(--margin)*8);margin:auto;background-color:rgba(0,0,0,0) !important;object-fit:initial}.template-picker__title[data-v-440aea22]{overflow:hidden;max-width:calc(var(--width) + 4px);padding:var(--margin);white-space:nowrap;text-overflow:ellipsis}","",{version:3,sources:["webpack://./apps/files/src/components/TemplatePreview.vue"],names:[],mappings:"AAsJC,wCACC,YAAA,CAGD,yCACC,YAAA,CAEA,kBAAA,CACA,QAAA,CACA,qBAAA,CAEA,oFACC,cAAA,CACA,gBAAA,CAGD,iDACC,uBAAA,CAIF,2CACC,aAAA,CACA,eAAA,CAEA,QAAA,CACA,kBAAA,CACA,wBAAA,CACA,wBAAA,CACA,SAAA,CACA,8CAAA,CACA,wCAAA,CAEA,+DACC,iCAAA,CAGD,mDAEC,YAAA,CAIF,yCACC,cAAA,CACA,6CAAA,CAEA,gBAAA,CAID,2EACC,2BAAA,CAEA,WAAA,CACA,yCAAA,CAEA,kBAAA,CAGD,yCACC,eAAA,CAEA,kCAAA,CACA,qBAAA,CACA,kBAAA,CACA,sBAAA",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.template-picker {\n\t&__item {\n\t\tdisplay: flex;\n\t}\n\n\t&__label {\n\t\tdisplay: flex;\n\t\t// Align in the middle of the grid\n\t\talign-items: center;\n\t\tflex: 1 1;\n\t\tflex-direction: column;\n\n\t\t&, * {\n\t\t\tcursor: pointer;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&::before {\n\t\t\tdisplay: none !important;\n\t\t}\n\t}\n\n\t&__preview {\n\t\tdisplay: block;\n\t\toverflow: hidden;\n\t\t// Stretch so all entries are the same width\n\t\tflex: 1 1;\n\t\twidth: var(--width);\n\t\tmin-height: var(--height);\n\t\tmax-height: var(--height);\n\t\tpadding: 0;\n\t\tborder: var(--border) solid var(--color-border);\n\t\tborder-radius: var(--border-radius-large);\n\n\t\tinput:checked + label > & {\n\t\t\tborder-color: var(--color-primary);\n\t\t}\n\n\t\t&--failed {\n\t\t\t// Make sure to properly center fallback icon\n\t\t\tdisplay: flex;\n\t\t}\n\t}\n\n\t&__image {\n\t\tmax-width: 100%;\n\t\tbackground-color: var(--color-main-background);\n\n\t\tobject-fit: cover;\n\t}\n\n\t// Failed preview, fallback to mime icon\n\t&__preview--failed &__image {\n\t\twidth: calc(var(--margin) * 8);\n\t\t// Center mime icon\n\t\tmargin: auto;\n\t\tbackground-color: transparent !important;\n\n\t\tobject-fit: initial;\n\t}\n\n\t&__title {\n\t\toverflow: hidden;\n\t\t// also count preview border\n\t\tmax-width: calc(var(--width) + 2*2px);\n\t\tpadding: var(--margin);\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t}\n}\n\n"],sourceRoot:""}]),n.Z=o},79097:function(e,n,t){var i=t(87537),r=t.n(i),a=t(23645),o=t.n(a)()(r());o.push([e.id,".templates-picker__form[data-v-6784795c]{padding:calc(var(--margin)*2);padding-bottom:0}.templates-picker__form h2[data-v-6784795c]{text-align:center;font-weight:bold;margin:var(--margin) 0 calc(var(--margin)*2)}.templates-picker__list[data-v-6784795c]{display:grid;grid-gap:calc(var(--margin)*2);grid-auto-columns:1fr;max-width:calc(var(--fullwidth)*6);grid-template-columns:repeat(auto-fit, var(--fullwidth));grid-auto-rows:1fr;justify-content:center}.templates-picker__buttons[data-v-6784795c]{display:flex;justify-content:space-between;padding:calc(var(--margin)*2) var(--margin);position:sticky;bottom:0;background-image:linear-gradient(0, var(--gradient-main-background))}.templates-picker__buttons button[data-v-6784795c],.templates-picker__buttons input[type=submit][data-v-6784795c]{height:44px}.templates-picker[data-v-6784795c] .modal-container{position:relative}.templates-picker__loading[data-v-6784795c]{position:absolute;top:0;left:0;justify-content:center;width:100%;height:100%;margin:0;background-color:var(--color-main-background-translucent)}","",{version:3,sources:["webpack://./apps/files/src/views/TemplatePicker.vue"],names:[],mappings:"AAuPC,yCACC,6BAAA,CAEA,gBAAA,CAEA,4CACC,iBAAA,CACA,gBAAA,CACA,4CAAA,CAIF,yCACC,YAAA,CACA,8BAAA,CACA,qBAAA,CAEA,kCAAA,CACA,wDAAA,CAEA,kBAAA,CAEA,sBAAA,CAGD,4CACC,YAAA,CACA,6BAAA,CACA,2CAAA,CACA,eAAA,CACA,QAAA,CACA,oEAAA,CAEA,kHACC,WAAA,CAKF,qDACC,iBAAA,CAGD,4CACC,iBAAA,CACA,KAAA,CACA,MAAA,CACA,sBAAA,CACA,UAAA,CACA,WAAA,CACA,QAAA,CACA,yDAAA",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.templates-picker {\n\t&__form {\n\t\tpadding: calc(var(--margin) * 2);\n\t\t// Will be handled by the buttons\n\t\tpadding-bottom: 0;\n\n\t\th2 {\n\t\t\ttext-align: center;\n\t\t\tfont-weight: bold;\n\t\t\tmargin: var(--margin) 0 calc(var(--margin) * 2);\n\t\t}\n\t}\n\n\t&__list {\n\t\tdisplay: grid;\n\t\tgrid-gap: calc(var(--margin) * 2);\n\t\tgrid-auto-columns: 1fr;\n\t\t// We want maximum 5 columns. Putting 6 as we don't count the grid gap. So it will always be lower than 6\n\t\tmax-width: calc(var(--fullwidth) * 6);\n\t\tgrid-template-columns: repeat(auto-fit, var(--fullwidth));\n\t\t// Make sure all rows are the same height\n\t\tgrid-auto-rows: 1fr;\n\t\t// Center the columns set\n\t\tjustify-content: center;\n\t}\n\n\t&__buttons {\n\t\tdisplay: flex;\n\t\tjustify-content: space-between;\n\t\tpadding: calc(var(--margin) * 2) var(--margin);\n\t\tposition: sticky;\n\t\tbottom: 0;\n\t\tbackground-image: linear-gradient(0, var(--gradient-main-background));\n\n\t\tbutton, input[type='submit'] {\n\t\t\theight: 44px;\n\t\t}\n\t}\n\n\t// Make sure we're relative for the loading emptycontent on top\n\t::v-deep .modal-container {\n\t\tposition: relative;\n\t}\n\n\t&__loading {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tjustify-content: center;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tmargin: 0;\n\t\tbackground-color: var(--color-main-background-translucent);\n\t}\n}\n\n"],sourceRoot:""}]),n.Z=o}},i={};function r(e){var t=i[e];if(void 0!==t)return t.exports;var a=i[e]={id:e,loaded:!1,exports:{}};return n[e].call(a.exports,a,a.exports,r),a.loaded=!0,a.exports}r.m=n,r.amdD=function(){throw new Error("define cannot be used indirect")},r.amdO={},e=[],r.O=function(n,t,i,a){if(!t){var o=1/0;for(u=0;u<e.length;u++){t=e[u][0],i=e[u][1],a=e[u][2];for(var l=!0,s=0;s<t.length;s++)(!1&a||o>=a)&&Object.keys(r.O).every((function(e){return r.O[e](t[s])}))?t.splice(s--,1):(l=!1,a<o&&(o=a));if(l){e.splice(u--,1);var c=i();void 0!==c&&(n=c)}}return n}a=a||0;for(var u=e.length;u>0&&e[u-1][2]>a;u--)e[u]=e[u-1];e[u]=[t,i,a]},r.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(n,{a:n}),n},r.d=function(e,n){for(var t in n)r.o(n,t)&&!r.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},r.j=2181,function(){r.b=document.baseURI||self.location.href;var e={2181:0};r.O.j=function(n){return 0===e[n]};var n=function(n,t){var i,a,o=t[0],l=t[1],s=t[2],c=0;if(o.some((function(n){return 0!==e[n]}))){for(i in l)r.o(l,i)&&(r.m[i]=l[i]);if(s)var u=s(r)}for(n&&n(t);c<o.length;c++)a=o[c],r.o(e,a)&&e[a]&&e[a][0](),e[a]=0;return r.O(u)},t=self.webpackChunknextcloud=self.webpackChunknextcloud||[];t.forEach(n.bind(null,0)),t.push=n.bind(null,t.push.bind(t))}();var a=r.O(void 0,[7874],(function(){return r(58949)}));a=r.O(a)}();
-//# sourceMappingURL=files-main.js.map?v=efe38dd3d30fcb0b616d \ No newline at end of file
+!function(){"use strict";var e,n={58949:function(e,n,i){var r=i(20144);function a(e,n){for(var t=0;t<n.length;t++){var i=n[t];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var o=function(){function e(){var n,t;!function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}(this,e),t=void 0,(n="_settings")in this?Object.defineProperty(this,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):this[n]=t,this._settings=[],console.debug("OCA.Files.Settings initialized")}var n,t;return n=e,(t=[{key:"register",value:function(e){return this._settings.filter((function(n){return n.name===e.name})).length>0?(console.error("A setting with the same name is already registered"),!1):(this._settings.push(e),!0)}},{key:"settings",get:function(){return this._settings}}])&&a(n.prototype,t),Object.defineProperty(n,"prototype",{writable:!1}),e}(),l={name:"Setting",props:{el:{type:Function,required:!0}},mounted:function(){this.$el.appendChild(this.el())}},s=i(51900),c={name:"Settings",components:{Setting:(0,s.Z)(l,(function(){var e=this.$createElement;return(this._self._c||e)("div")}),[],!1,null,null,null).exports},data:function(){return{settings:OCA.Files.Settings.settings}}},u=(0,s.Z)(c,(function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("div",{attrs:{id:"files-app-extra-settings"}},[e._l(e.settings,(function(e){return[t("Setting",{key:e.name,attrs:{el:e.el}})]}))],2)}),[],!1,null,"31c9bb4b",null).exports;function d(e,n){for(var t=0;t<n.length;t++){var i=n[t];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function p(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}var m=function(){function e(n,t){var i=t.el,r=t.open,a=t.close;!function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}(this,e),p(this,"_close",void 0),p(this,"_el",void 0),p(this,"_name",void 0),p(this,"_open",void 0),this._name=n,this._el=i,this._open=r,this._close=a,"function"!=typeof this._open&&(this._open=function(){}),"function"!=typeof this._close&&(this._close=function(){})}var n,t;return n=e,(t=[{key:"name",get:function(){return this._name}},{key:"el",get:function(){return this._el}},{key:"open",get:function(){return this._open}},{key:"close",get:function(){return this._close}}])&&d(n.prototype,t),Object.defineProperty(n,"prototype",{writable:!1}),e}();r.default.prototype.t=t,window.OCA.Files||(window.OCA.Files={}),Object.assign(window.OCA.Files,{Settings:new o}),Object.assign(window.OCA.Files.Settings,{Setting:m}),window.addEventListener("DOMContentLoaded",(function(){if(!window.TESTING){new r.default({el:"#files-app-settings",render:function(e){return e(u)}});var e=document.getElementById("app-settings-header");e&&e.addEventListener("click",(function(e){var n=e.currentTarget.children[0].classList.contains("opened");OCA.Files.Settings.settings.forEach((function(e){return n?e.close():e.open()}))}))}}));var f=i(17499),A=i(16453),v=i(9944),h=i(79753),g=i(22200),C=function(){var e,n,t,i,r=(null===(e=OCA)||void 0===e||null===(n=e.Files)||void 0===n||null===(t=n.App)||void 0===t||null===(i=t.currentFileList)||void 0===i?void 0:i.dirInfo)||{path:"/",name:""};return"".concat(r.path,"/").concat(r.name).replace(/\/\//gi,"/")},b=i(4820),w=i(62520),y=i(26932),_=i(97e3),k=i.n(_),x=i(47450),E=i.n(x);function P(e,n,t,i,r,a,o){try{var l=e[a](o),s=l.value}catch(e){return void t(e)}l.done?n(s):Promise.resolve(s).then(i,r)}function O(e){return function(){var n=this,t=arguments;return new Promise((function(i,r){var a=e.apply(n,t);function o(e){P(a,i,r,o,l,"next",e)}function l(e){P(a,i,r,o,l,"throw",e)}o(void 0)}))}}var T=function(){var e=O(regeneratorRuntime.mark((function e(){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,b.default.get((0,h.generateOcsUrl)("apps/files/api/v1/templates"));case 2:return n=e.sent,e.abrupt("return",n.data.ocs.data);case 4:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),F=function(){var e=O(regeneratorRuntime.mark((function e(n,t,i){var r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,b.default.post((0,h.generateOcsUrl)("apps/files/api/v1/templates/create"),{filePath:n,templatePath:t,templateType:i});case 2:return r=e.sent,e.abrupt("return",r.data.ocs.data);case 4:case"end":return e.stop()}}),e)})));return function(n,t,i){return e.apply(this,arguments)}}(),S=256,B={name:"TemplatePreview",inheritAttrs:!1,props:{basename:{type:String,required:!0},checked:{type:Boolean,default:!1},fileid:{type:[String,Number],required:!0},filename:{type:String,required:!0},previewUrl:{type:String,default:null},hasPreview:{type:Boolean,default:!0},mime:{type:String,required:!0},ratio:{type:Number,default:null}},data:function(){return{failedPreview:!1}},computed:{nameWithoutExt:function(){return this.basename.indexOf(".")>-1?this.basename.split(".").slice(0,-1).join("."):this.basename},id:function(){return"template-picker-".concat(this.fileid)},realPreviewUrl:function(){return this.failedPreview&&this.mimeIcon?this.mimeIcon:this.previewUrl?this.previewUrl:(0,g.getCurrentUser)()?(0,h.generateUrl)("/core/preview?fileId=".concat(this.fileid,"&x=").concat(S,"&y=").concat(S,"&a=1")):(0,h.generateUrl)("/apps/files_sharing/publicpreview/".concat(document.getElementById("sharingToken")&&document.getElementById("sharingToken").value,"?fileId=").concat(this.fileid,"&file=").concat(function(e){var n=(e.startsWith("/")?e:"/".concat(e)).split("/"),t="";return n.forEach((function(e){""!==e&&(t+="/"+encodeURIComponent(e))})),t}(this.filename),"&x=").concat(S,"&y=").concat(S,"&a=1"))},mimeIcon:function(){return OC.MimeType.getIconUrl(this.mime)}},methods:{onCheck:function(){this.$emit("check",this.fileid)},onFailure:function(){this.failedPreview=!0}}},j=B,I=i(93379),M=i.n(I),D=i(7795),U=i.n(D),R=i(90569),L=i.n(R),Z=i(3565),q=i.n(Z),W=i(19216),N=i.n(W),$=i(44589),z=i.n($),G=i(78299),Y={};Y.styleTagTransform=z(),Y.setAttributes=q(),Y.insert=L().bind(null,"head"),Y.domAPI=U(),Y.insertStyleElement=N(),M()(G.Z,Y),G.Z&&G.Z.locals&&G.Z.locals;var Q=(0,s.Z)(j,(function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("li",{staticClass:"template-picker__item"},[t("input",{staticClass:"radio",attrs:{id:e.id,type:"radio",name:"template-picker"},domProps:{checked:e.checked},on:{change:e.onCheck}}),e._v(" "),t("label",{staticClass:"template-picker__label",attrs:{for:e.id}},[t("div",{staticClass:"template-picker__preview",class:e.failedPreview?"template-picker__preview--failed":""},[t("img",{staticClass:"template-picker__image",attrs:{src:e.realPreviewUrl,alt:"",draggable:"false"},on:{error:e.onFailure}})]),e._v(" "),t("span",{staticClass:"template-picker__title"},[e._v("\n\t\t\t"+e._s(e.nameWithoutExt)+"\n\t\t")])])])}),[],!1,null,"440aea22",null).exports;function H(e,n,t,i,r,a,o){try{var l=e[a](o),s=l.value}catch(e){return void t(e)}l.done?n(s):Promise.resolve(s).then(i,r)}function K(e){return function(){var n=this,t=arguments;return new Promise((function(i,r){var a=e.apply(n,t);function o(e){H(a,i,r,o,l,"next",e)}function l(e){H(a,i,r,o,l,"throw",e)}o(void 0)}))}}var J={name:"TemplatePicker",components:{EmptyContent:k(),Modal:E(),TemplatePreview:Q},props:{logger:{type:Object,required:!0}},data:function(){return{checked:-1,loading:!1,name:null,opened:!1,provider:null}},computed:{nameWithoutExt:function(){return this.name.indexOf(".")>-1?this.name.split(".").slice(0,-1).join("."):this.name},emptyTemplate:function(){var e,n;return{basename:t("files","Blank"),fileid:-1,filename:this.t("files","Blank"),hasPreview:!1,mime:(null===(e=this.provider)||void 0===e?void 0:e.mimetypes[0])||(null===(n=this.provider)||void 0===n?void 0:n.mimetypes)}},selectedTemplate:function(){var e=this;return this.provider.templates.find((function(n){return n.fileid===e.checked}))},style:function(){return{"--margin":"8px","--width":"160px","--border":"2px","--fullwidth":"180px","--height":this.provider.ratio?Math.round(160/this.provider.ratio)+"px":null}}},methods:{open:function(e,n){var t=this;return K(regeneratorRuntime.mark((function i(){var r,a;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return t.checked=t.emptyTemplate.fileid,t.name=e,t.provider=n,i.next=5,T();case 5:if(r=i.sent,null!==(a=r.find((function(e){return e.app===n.app&&e.label===n.label})))){i.next=9;break}throw new Error("Failed to match provider in results");case 9:if(t.provider=a,0!==a.templates.length){i.next=13;break}return t.onSubmit(),i.abrupt("return");case 13:t.opened=!0;case 14:case"end":return i.stop()}}),i)})))()},close:function(){this.checked=this.emptyTemplate.fileid,this.loading=!1,this.name=null,this.opened=!1,this.provider=null},onCheck:function(e){this.checked=e},onSubmit:function(){var e=this;return K(regeneratorRuntime.mark((function n(){var t,i,r,a,o,l,s,c,u,d,p,m;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e.loading=!0,a=C(),o=null===(t=OCA)||void 0===t||null===(i=t.Files)||void 0===i||null===(r=i.App)||void 0===r?void 0:r.currentFileList,e.nameWithoutExt===e.name&&(e.logger.debug("Fixed invalid filename",{name:e.name,extension:null===(l=e.provider)||void 0===l?void 0:l.extension}),e.name=e.name+(null===(s=e.provider)||void 0===s?void 0:s.extension)),n.prev=4,n.next=7,F((0,w.normalize)("".concat(a,"/").concat(e.name)),null===(c=e.selectedTemplate)||void 0===c?void 0:c.filename,null===(u=e.selectedTemplate)||void 0===u?void 0:u.templateType);case 7:return d=n.sent,e.logger.debug("Created new file",d),n.next=11,null==o?void 0:o.addAndFetchFileInfo(e.name).then((function(e,n){return n}));case 11:p=n.sent,m=new OCA.Files.FileInfoModel(p,{filesClient:null==o?void 0:o.filesClient}),OCA.Files.fileActions.getDefaultFileAction(d.mime,"file",OC.PERMISSION_ALL).action(d.basename,{$file:null==o?void 0:o.findFileEl(e.name),dir:a,fileList:o,fileActions:null==o?void 0:o.fileActions,fileInfoModel:m}),e.close(),n.next=23;break;case 18:n.prev=18,n.t0=n.catch(4),e.logger.error("Error while creating the new file from template"),console.error(n.t0),(0,y.x2)(e.t("files","Unable to create new file from template"));case 23:return n.prev=23,e.loading=!1,n.finish(23);case 26:case"end":return n.stop()}}),n,null,[[4,18,23,26]])})))()}}},V=J,X=i(79097),ee={};ee.styleTagTransform=z(),ee.setAttributes=q(),ee.insert=L().bind(null,"head"),ee.domAPI=U(),ee.insertStyleElement=N(),M()(X.Z,ee),X.Z&&X.Z.locals&&X.Z.locals;var ne=(0,s.Z)(V,(function(){var e=this,n=e.$createElement,t=e._self._c||n;return e.opened?t("Modal",{staticClass:"templates-picker",attrs:{"clear-view-delay":-1,size:"normal"},on:{close:e.close}},[t("form",{staticClass:"templates-picker__form",style:e.style,on:{submit:function(n){return n.preventDefault(),n.stopPropagation(),e.onSubmit.apply(null,arguments)}}},[t("h2",[e._v(e._s(e.t("files","Pick a template for {name}",{name:e.nameWithoutExt})))]),e._v(" "),t("ul",{staticClass:"templates-picker__list"},[t("TemplatePreview",e._b({attrs:{checked:e.checked===e.emptyTemplate.fileid},on:{check:e.onCheck}},"TemplatePreview",e.emptyTemplate,!1)),e._v(" "),e._l(e.provider.templates,(function(n){return t("TemplatePreview",e._b({key:n.fileid,attrs:{checked:e.checked===n.fileid,ratio:e.provider.ratio},on:{check:e.onCheck}},"TemplatePreview",n,!1))}))],2),e._v(" "),t("div",{staticClass:"templates-picker__buttons"},[t("button",{on:{click:e.close}},[e._v("\n\t\t\t\t"+e._s(e.t("files","Cancel"))+"\n\t\t\t")]),e._v(" "),t("input",{staticClass:"primary",attrs:{type:"submit","aria-label":e.t("files","Create a new file with the selected template")},domProps:{value:e.t("files","Create")}})])]),e._v(" "),e.loading?t("EmptyContent",{staticClass:"templates-picker__loading",attrs:{icon:"icon-loading"}},[e._v("\n\t\t"+e._s(e.t("files","Creating file"))+"\n\t")]):e._e()],1):e._e()}),[],!1,null,"6784795c",null),te=ne.exports;function ie(e,n,t,i,r,a,o){try{var l=e[a](o),s=l.value}catch(e){return void t(e)}l.done?n(s):Promise.resolve(s).then(i,r)}var re=(0,f.IY)().setApp("files").detectUser().build();r.default.mixin({methods:{t:v.translate,n:v.translatePlural}});var ae=document.createElement("div");ae.id="template-picker",document.body.appendChild(ae);var oe=(0,A.loadState)("files","templates",[]),le=(0,A.loadState)("files","templates_path",!1);re.debug("Templates providers",oe),re.debug("Templates folder",{templatesPath:le});var se=new(r.default.extend(te))({name:"TemplatePicker",propsData:{logger:re}});se.$mount("#template-picker"),window.addEventListener("DOMContentLoaded",(function(){if(!le){re.debug("Templates folder not initialized");var e={attach:function(e){e.addMenuEntry({id:"template-init",displayName:(0,v.translate)("files","Set up templates folder"),templateName:(0,v.translate)("files","Templates"),iconClass:"icon-template-add",fileType:"file",actionHandler:function(n){ue(n),e.removeMenuEntry("template-init")}})}};OC.Plugins.register("OCA.Files.NewFileMenu",e)}})),oe.forEach((function(e,n){var t={attach:function(t){var i=t.fileList;"files"!==i.id&&"files.public"!==i.id||t.addMenuEntry({id:"template-new-".concat(e.app,"-").concat(n),displayName:e.label,templateName:e.label+e.extension,iconClass:e.iconClass||"icon-file",fileType:"file",actionHandler:function(n){se.open(n,e)}})}};OC.Plugins.register("OCA.Files.NewFileMenu",t)}));var ce,ue=function(){var e,n=(e=regeneratorRuntime.mark((function e(n){var t,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=(C()+"/".concat(n)).replace("//","/"),e.prev=1,re.debug("Initializing the templates directory",{templatePath:t}),e.next=5,b.default.post((0,h.generateOcsUrl)("apps/files/api/v1/templates/path"),{templatePath:t,copySystemTemplates:!0});case 5:i=e.sent,OCA.Files.App.currentFileList.changeDirectory(t,!0,!0),oe=i.data.ocs.data.templates,le=i.data.ocs.data.template_path,e.next=15;break;case 11:e.prev=11,e.t0=e.catch(1),re.error("Unable to initialize the templates directory"),(0,y.x2)((0,v.translate)("files","Unable to initialize the templates directory"));case 15:case"end":return e.stop()}}),e,null,[[1,11]])})),function(){var n=this,t=arguments;return new Promise((function(i,r){var a=e.apply(n,t);function o(e){ie(a,i,r,o,l,"next",e)}function l(e){ie(a,i,r,o,l,"throw",e)}o(void 0)}))});return function(e){return n.apply(this,arguments)}}(),de=i(74854);ce={attach:function(e){var n=this;(0,de.subscribe)("nextcloud:unified-search.search",(function(n){var t=n.query;e.setFilter(t)})),(0,de.subscribe)("nextcloud:unified-search.reset",(function(){n.query=null,e.setFilter("")}))}},window.OC.Plugins.register("OCA.Files.FileList",ce)},78299:function(e,n,t){var i=t(87537),r=t.n(i),a=t(23645),o=t.n(a)()(r());o.push([e.id,".template-picker__item[data-v-440aea22]{display:flex}.template-picker__label[data-v-440aea22]{display:flex;align-items:center;flex:1 1;flex-direction:column}.template-picker__label[data-v-440aea22],.template-picker__label *[data-v-440aea22]{cursor:pointer;user-select:none}.template-picker__label[data-v-440aea22]::before{display:none !important}.template-picker__preview[data-v-440aea22]{display:block;overflow:hidden;flex:1 1;width:var(--width);min-height:var(--height);max-height:var(--height);padding:0;border:var(--border) solid var(--color-border);border-radius:var(--border-radius-large)}input:checked+label>.template-picker__preview[data-v-440aea22]{border-color:var(--color-primary)}.template-picker__preview--failed[data-v-440aea22]{display:flex}.template-picker__image[data-v-440aea22]{max-width:100%;background-color:var(--color-main-background);object-fit:cover}.template-picker__preview--failed .template-picker__image[data-v-440aea22]{width:calc(var(--margin)*8);margin:auto;background-color:rgba(0,0,0,0) !important;object-fit:initial}.template-picker__title[data-v-440aea22]{overflow:hidden;max-width:calc(var(--width) + 4px);padding:var(--margin);white-space:nowrap;text-overflow:ellipsis}","",{version:3,sources:["webpack://./apps/files/src/components/TemplatePreview.vue"],names:[],mappings:"AAsJC,wCACC,YAAA,CAGD,yCACC,YAAA,CAEA,kBAAA,CACA,QAAA,CACA,qBAAA,CAEA,oFACC,cAAA,CACA,gBAAA,CAGD,iDACC,uBAAA,CAIF,2CACC,aAAA,CACA,eAAA,CAEA,QAAA,CACA,kBAAA,CACA,wBAAA,CACA,wBAAA,CACA,SAAA,CACA,8CAAA,CACA,wCAAA,CAEA,+DACC,iCAAA,CAGD,mDAEC,YAAA,CAIF,yCACC,cAAA,CACA,6CAAA,CAEA,gBAAA,CAID,2EACC,2BAAA,CAEA,WAAA,CACA,yCAAA,CAEA,kBAAA,CAGD,yCACC,eAAA,CAEA,kCAAA,CACA,qBAAA,CACA,kBAAA,CACA,sBAAA",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.template-picker {\n\t&__item {\n\t\tdisplay: flex;\n\t}\n\n\t&__label {\n\t\tdisplay: flex;\n\t\t// Align in the middle of the grid\n\t\talign-items: center;\n\t\tflex: 1 1;\n\t\tflex-direction: column;\n\n\t\t&, * {\n\t\t\tcursor: pointer;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&::before {\n\t\t\tdisplay: none !important;\n\t\t}\n\t}\n\n\t&__preview {\n\t\tdisplay: block;\n\t\toverflow: hidden;\n\t\t// Stretch so all entries are the same width\n\t\tflex: 1 1;\n\t\twidth: var(--width);\n\t\tmin-height: var(--height);\n\t\tmax-height: var(--height);\n\t\tpadding: 0;\n\t\tborder: var(--border) solid var(--color-border);\n\t\tborder-radius: var(--border-radius-large);\n\n\t\tinput:checked + label > & {\n\t\t\tborder-color: var(--color-primary);\n\t\t}\n\n\t\t&--failed {\n\t\t\t// Make sure to properly center fallback icon\n\t\t\tdisplay: flex;\n\t\t}\n\t}\n\n\t&__image {\n\t\tmax-width: 100%;\n\t\tbackground-color: var(--color-main-background);\n\n\t\tobject-fit: cover;\n\t}\n\n\t// Failed preview, fallback to mime icon\n\t&__preview--failed &__image {\n\t\twidth: calc(var(--margin) * 8);\n\t\t// Center mime icon\n\t\tmargin: auto;\n\t\tbackground-color: transparent !important;\n\n\t\tobject-fit: initial;\n\t}\n\n\t&__title {\n\t\toverflow: hidden;\n\t\t// also count preview border\n\t\tmax-width: calc(var(--width) + 2*2px);\n\t\tpadding: var(--margin);\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t}\n}\n\n"],sourceRoot:""}]),n.Z=o},79097:function(e,n,t){var i=t(87537),r=t.n(i),a=t(23645),o=t.n(a)()(r());o.push([e.id,".templates-picker__form[data-v-6784795c]{padding:calc(var(--margin)*2);padding-bottom:0}.templates-picker__form h2[data-v-6784795c]{text-align:center;font-weight:bold;margin:var(--margin) 0 calc(var(--margin)*2)}.templates-picker__list[data-v-6784795c]{display:grid;grid-gap:calc(var(--margin)*2);grid-auto-columns:1fr;max-width:calc(var(--fullwidth)*6);grid-template-columns:repeat(auto-fit, var(--fullwidth));grid-auto-rows:1fr;justify-content:center}.templates-picker__buttons[data-v-6784795c]{display:flex;justify-content:space-between;padding:calc(var(--margin)*2) var(--margin);position:sticky;bottom:0;background-image:linear-gradient(0, var(--gradient-main-background))}.templates-picker__buttons button[data-v-6784795c],.templates-picker__buttons input[type=submit][data-v-6784795c]{height:44px}.templates-picker[data-v-6784795c] .modal-container{position:relative}.templates-picker__loading[data-v-6784795c]{position:absolute;top:0;left:0;justify-content:center;width:100%;height:100%;margin:0;background-color:var(--color-main-background-translucent)}","",{version:3,sources:["webpack://./apps/files/src/views/TemplatePicker.vue"],names:[],mappings:"AAuPC,yCACC,6BAAA,CAEA,gBAAA,CAEA,4CACC,iBAAA,CACA,gBAAA,CACA,4CAAA,CAIF,yCACC,YAAA,CACA,8BAAA,CACA,qBAAA,CAEA,kCAAA,CACA,wDAAA,CAEA,kBAAA,CAEA,sBAAA,CAGD,4CACC,YAAA,CACA,6BAAA,CACA,2CAAA,CACA,eAAA,CACA,QAAA,CACA,oEAAA,CAEA,kHACC,WAAA,CAKF,qDACC,iBAAA,CAGD,4CACC,iBAAA,CACA,KAAA,CACA,MAAA,CACA,sBAAA,CACA,UAAA,CACA,WAAA,CACA,QAAA,CACA,yDAAA",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.templates-picker {\n\t&__form {\n\t\tpadding: calc(var(--margin) * 2);\n\t\t// Will be handled by the buttons\n\t\tpadding-bottom: 0;\n\n\t\th2 {\n\t\t\ttext-align: center;\n\t\t\tfont-weight: bold;\n\t\t\tmargin: var(--margin) 0 calc(var(--margin) * 2);\n\t\t}\n\t}\n\n\t&__list {\n\t\tdisplay: grid;\n\t\tgrid-gap: calc(var(--margin) * 2);\n\t\tgrid-auto-columns: 1fr;\n\t\t// We want maximum 5 columns. Putting 6 as we don't count the grid gap. So it will always be lower than 6\n\t\tmax-width: calc(var(--fullwidth) * 6);\n\t\tgrid-template-columns: repeat(auto-fit, var(--fullwidth));\n\t\t// Make sure all rows are the same height\n\t\tgrid-auto-rows: 1fr;\n\t\t// Center the columns set\n\t\tjustify-content: center;\n\t}\n\n\t&__buttons {\n\t\tdisplay: flex;\n\t\tjustify-content: space-between;\n\t\tpadding: calc(var(--margin) * 2) var(--margin);\n\t\tposition: sticky;\n\t\tbottom: 0;\n\t\tbackground-image: linear-gradient(0, var(--gradient-main-background));\n\n\t\tbutton, input[type='submit'] {\n\t\t\theight: 44px;\n\t\t}\n\t}\n\n\t// Make sure we're relative for the loading emptycontent on top\n\t::v-deep .modal-container {\n\t\tposition: relative;\n\t}\n\n\t&__loading {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tjustify-content: center;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tmargin: 0;\n\t\tbackground-color: var(--color-main-background-translucent);\n\t}\n}\n\n"],sourceRoot:""}]),n.Z=o}},i={};function r(e){var t=i[e];if(void 0!==t)return t.exports;var a=i[e]={id:e,loaded:!1,exports:{}};return n[e].call(a.exports,a,a.exports,r),a.loaded=!0,a.exports}r.m=n,r.amdD=function(){throw new Error("define cannot be used indirect")},r.amdO={},e=[],r.O=function(n,t,i,a){if(!t){var o=1/0;for(u=0;u<e.length;u++){t=e[u][0],i=e[u][1],a=e[u][2];for(var l=!0,s=0;s<t.length;s++)(!1&a||o>=a)&&Object.keys(r.O).every((function(e){return r.O[e](t[s])}))?t.splice(s--,1):(l=!1,a<o&&(o=a));if(l){e.splice(u--,1);var c=i();void 0!==c&&(n=c)}}return n}a=a||0;for(var u=e.length;u>0&&e[u-1][2]>a;u--)e[u]=e[u-1];e[u]=[t,i,a]},r.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(n,{a:n}),n},r.d=function(e,n){for(var t in n)r.o(n,t)&&!r.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},r.j=2181,function(){r.b=document.baseURI||self.location.href;var e={2181:0};r.O.j=function(n){return 0===e[n]};var n=function(n,t){var i,a,o=t[0],l=t[1],s=t[2],c=0;if(o.some((function(n){return 0!==e[n]}))){for(i in l)r.o(l,i)&&(r.m[i]=l[i]);if(s)var u=s(r)}for(n&&n(t);c<o.length;c++)a=o[c],r.o(e,a)&&e[a]&&e[a][0](),e[a]=0;return r.O(u)},t=self.webpackChunknextcloud=self.webpackChunknextcloud||[];t.forEach(n.bind(null,0)),t.push=n.bind(null,t.push.bind(t))}(),r.nc=void 0;var a=r.O(void 0,[7874],(function(){return r(58949)}));a=r.O(a)}();
+//# sourceMappingURL=files-main.js.map?v=2e40bf6e7d09bc8e2e11 \ No newline at end of file
diff --git a/dist/files-main.js.map b/dist/files-main.js.map
index 566e0fed0e1..ad17ff0da7c 100644
--- a/dist/files-main.js.map
+++ b/dist/files-main.js.map
@@ -1 +1 @@
-{"version":3,"file":"files-main.js?v=efe38dd3d30fcb0b616d","mappings":";6BAAIA,oNCsBiBC,EAAAA,WAIpB,kHAAc,qIACbC,KAAKC,UAAY,GACjBC,QAAQC,MAAM,+EAUf,SAASC,GACR,OAAIJ,KAAKC,UAAUI,QAAO,SAAAC,GAAC,OAAIA,EAAEC,OAASH,EAAKG,QAAMC,OAAS,GAC7DN,QAAQO,MAAM,uDACP,IAERT,KAAKC,UAAUS,KAAKN,IACb,yBAQR,WACC,OAAOJ,KAAKC,qFA/BOF,GCtB+J,EC0BpL,CACA,eACA,OACA,IACA,cACA,cAGA,QARA,WASA,6CCnCqL,ECgCrL,CACA,gBACA,YACA,SC5BgB,OACd,GCRW,WAAa,IAAiBY,EAATX,KAAgBY,eAAuC,OAAvDZ,KAA0Ca,MAAMC,IAAIH,GAAa,SAC7E,IDUpB,EACA,KACA,KACA,MAI8B,SDmBhC,KALA,WAMA,OACA,wCGrBA,GAXgB,OACd,GCRW,WAAa,IAAII,EAAIf,KAASW,EAAGI,EAAIH,eAAmBE,EAAGC,EAAIF,MAAMC,IAAIH,EAAG,OAAOG,EAAG,MAAM,CAACE,MAAM,CAAC,GAAK,6BAA6B,CAACD,EAAIE,GAAIF,EAAY,UAAE,SAASG,GAAS,MAAO,CAACJ,EAAG,UAAU,CAACK,IAAID,EAAQX,KAAKS,MAAM,CAAC,GAAKE,EAAQE,WAAU,KAC3O,IDUpB,EACA,KACA,WACA,MAI8B,0SEKXC,EAAAA,WAiBpB,WAAYd,EAAZ,GAAuC,IAAnBa,EAAmB,EAAnBA,GAAIE,EAAe,EAAfA,KAAMC,EAAS,EAATA,mGAAS,oGACtCvB,KAAKwB,MAAQjB,EACbP,KAAKyB,IAAML,EACXpB,KAAK0B,MAAQJ,EACbtB,KAAK2B,OAASJ,EAEY,mBAAfvB,KAAK0B,QACf1B,KAAK0B,MAAQ,cAGa,mBAAhB1B,KAAK2B,SACf3B,KAAK2B,OAAS,qDAIhB,WACC,OAAO3B,KAAKwB,sBAGb,WACC,OAAOxB,KAAKyB,sBAGb,WACC,OAAOzB,KAAK0B,yBAGb,WACC,OAAO1B,KAAK2B,kFA7CON,GCMrBO,EAAAA,QAAAA,UAAAA,EAAkBC,EAGbC,OAAOC,IAAIC,QACfF,OAAOC,IAAIC,MAAQ,IAEpBC,OAAOC,OAAOJ,OAAOC,IAAIC,MAAO,CAAEjC,SAAU,IAAIA,IAChDkC,OAAOC,OAAOJ,OAAOC,IAAIC,MAAMjC,SAAU,CAAEsB,QAAAA,IAE3CS,OAAOK,iBAAiB,oBAAoB,WAC3C,IAAIL,OAAOM,QAAX,CAKA,IAAIR,EAAAA,QAAI,CACPR,GAAI,sBACJiB,OAAQ,SAAAC,GAAC,OAAIA,EAAEC,MAGhB,IAAMC,EAAoBC,SAASC,eAAe,uBAC9CF,GACHA,EAAkBL,iBAAiB,SAAS,SAAA7B,GAC3C,IAAMqC,EAASrC,EAAEsC,cAAcC,SAAS,GAAGC,UAAUC,SAAS,UAC9DhB,IAAIC,MAAMjC,SAASiD,SAASC,SAAQ,SAAA3C,GAAC,OAAIqC,EAASrC,EAAEiB,QAAUjB,EAAEgB,2ECPtD4B,EAAsB,WAAW,YACvCC,GAAoB,QAAH,EAAApB,WAAA,mBAAKC,aAAL,mBAAYoB,WAAZ,mBAAiBC,uBAAjB,eAAkCC,UACrD,CAAEC,KAAM,IAAKhD,KAAM,IAGvB,MAAO,UAAG4C,EAAeI,KAAlB,YAA0BJ,EAAe5C,MAAOiD,QAAQ,SAAU,yYC1BnE,IAAMC,EAAY,4CAAG,mHACJC,EAAAA,QAAAA,KAAUC,EAAAA,EAAAA,gBAAe,gCADrB,cACrBC,EADqB,yBAEpBA,EAASC,KAAKC,IAAID,MAFE,2CAAH,qDAYZE,EAAkB,4CAAG,WAAeC,EAAUC,EAAcC,GAAvC,sGACVR,EAAAA,QAAAA,MAAWC,EAAAA,EAAAA,gBAAe,sCAAuC,CACvFK,SAAAA,EACAC,aAAAA,EACAC,aAAAA,IAJgC,cAC3BN,EAD2B,yBAM1BA,EAASC,KAAKC,IAAID,MANQ,2CAAH,0DCiB/B,MAEA,GACA,uBACA,gBAEA,OACA,UACA,YACA,aAEA,SACA,aACA,YAEA,QACA,qBACA,aAEA,UACA,YACA,aAEA,YACA,YACA,cAEA,YACA,aACA,YAEA,MACA,YACA,aAEA,OACA,YACA,eAIA,KAvCA,WAwCA,OACA,mBAIA,UAMA,eANA,WAOA,mGAGA,GAVA,WAWA,8CAGA,eAdA,WAgBA,yCACA,cAGA,gBACA,iBFxFSM,EAAAA,EAAAA,mBE8FT,sGAFA,6DFxFQ1B,SAASC,eAAe,iBAAmBD,SAASC,eAAe,gBAAgB0B,MEwF3F,gDCxGuB,SAASb,GAC/B,IAAMc,GAAgBd,EAAKe,WAAW,KAAOf,EAAvB,WAAkCA,IAAQgB,MAAM,KAClEC,EAAe,GAMnB,OALAH,EAAapB,SAAQ,SAACwB,GACL,KAAZA,IACHD,GAAgB,IAAME,mBAAmBD,OAGpCD,EDgGR,0DAKA,SA9BA,WA+BA,2CAIA,SACA,QADA,WAEA,iCAEA,UAJA,WAKA,yBE7I4L,qICWxLG,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,OACd,GCTW,WAAa,IAAI5D,EAAIf,KAASW,EAAGI,EAAIH,eAAmBE,EAAGC,EAAIF,MAAMC,IAAIH,EAAG,OAAOG,EAAG,KAAK,CAACmE,YAAY,yBAAyB,CAACnE,EAAG,QAAQ,CAACmE,YAAY,QAAQjE,MAAM,CAAC,GAAKD,EAAImE,GAAG,KAAO,QAAQ,KAAO,mBAAmBC,SAAS,CAAC,QAAUpE,EAAIqE,SAASC,GAAG,CAAC,OAAStE,EAAIuE,WAAWvE,EAAIwE,GAAG,KAAKzE,EAAG,QAAQ,CAACmE,YAAY,yBAAyBjE,MAAM,CAAC,IAAMD,EAAImE,KAAK,CAACpE,EAAG,MAAM,CAACmE,YAAY,2BAA2BO,MAAMzE,EAAI0E,cAAgB,mCAAqC,IAAI,CAAC3E,EAAG,MAAM,CAACmE,YAAY,yBAAyBjE,MAAM,CAAC,IAAMD,EAAI2E,eAAe,IAAM,GAAG,UAAY,SAASL,GAAG,CAAC,MAAQtE,EAAI4E,eAAe5E,EAAIwE,GAAG,KAAKzE,EAAG,OAAO,CAACmE,YAAY,0BAA0B,CAAClE,EAAIwE,GAAG,WAAWxE,EAAI6E,GAAG7E,EAAI8E,gBAAgB,kBACltB,IDWpB,EACA,KACA,WACA,MAI8B,oUEwDhC,IAIA,GACA,sBAEA,YACA,iBACA,UACA,mBAGA,OACA,QACA,YACA,cAIA,KAhBA,WAiBA,OAEA,WACA,WACA,UACA,UACA,gBAIA,UAMA,eANA,WAOA,iCACA,2CACA,WAGA,cAZA,WAYA,QACA,OACA,4BACA,UACA,iCACA,cACA,+HAIA,iBAtBA,WAsBA,WACA,iFAQA,MA/BA,WAgCA,OACA,iBACA,kBACA,iBACA,sBACA,0CAlEA,IAkEA,kCAKA,SAOA,KAPA,SAOA,8JAEA,iCACA,SACA,aAJA,SAMA,IANA,UAMA,EANA,OAQA,QADA,kEAPA,sBASA,iDATA,UAWA,aAGA,uBAdA,wBAeA,aAfA,2BAoBA,YApBA,+CA0BA,MAjCA,WAkCA,uCACA,gBACA,eACA,eACA,oBAQA,QA9CA,SA8CA,GACA,gBAGA,SAlDA,WAkDA,6KACA,aACA,MACA,EAHA,UAGA,WAHA,iBAGA,eAHA,iBAGA,aAHA,aAGA,kBAGA,4BACA,sHACA,sEARA,kBAYA,GACA,gDADA,UAEA,0BAFA,aAEA,WAFA,UAGA,0BAHA,aAGA,gBAfA,cAYA,EAZA,OAiBA,qCAjBA,UAmBA,aAnBA,EAmBA,8DAnBA,QAmBA,EAnBA,OAqBA,iCACA,2CAGA,4EACA,mBACA,0CACA,MACA,WACA,yCACA,kBAGA,UAlCA,kDAoCA,kEACA,qBACA,gEAtCA,yBAwCA,aAxCA,kFCtM2L,eCWvL,GAAU,GAEd,GAAQjB,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,IAAS,IAKJ,KAAW,YAAiB,WALlD,ICbI,IAAY,OACd,GCTW,WAAa,IAAIjE,EAAIf,KAASW,EAAGI,EAAIH,eAAmBE,EAAGC,EAAIF,MAAMC,IAAIH,EAAG,OAAQI,EAAU,OAAED,EAAG,QAAQ,CAACmE,YAAY,mBAAmBjE,MAAM,CAAC,oBAAoB,EAAE,KAAO,UAAUqE,GAAG,CAAC,MAAQtE,EAAIQ,QAAQ,CAACT,EAAG,OAAO,CAACmE,YAAY,yBAAyBa,MAAO/E,EAAS,MAAEsE,GAAG,CAAC,OAAS,SAASU,GAAyD,OAAjDA,EAAOC,iBAAiBD,EAAOE,kBAAyBlF,EAAImF,SAASC,MAAM,KAAMC,cAAc,CAACtF,EAAG,KAAK,CAACC,EAAIwE,GAAGxE,EAAI6E,GAAG7E,EAAIc,EAAE,QAAS,6BAA8B,CAAEtB,KAAMQ,EAAI8E,qBAAsB9E,EAAIwE,GAAG,KAAKzE,EAAG,KAAK,CAACmE,YAAY,0BAA0B,CAACnE,EAAG,kBAAkBC,EAAIsF,GAAG,CAACrF,MAAM,CAAC,QAAUD,EAAIqE,UAAYrE,EAAIuF,cAAcC,QAAQlB,GAAG,CAAC,MAAQtE,EAAIuE,UAAU,kBAAkBvE,EAAIuF,eAAc,IAAQvF,EAAIwE,GAAG,KAAKxE,EAAIE,GAAIF,EAAIyF,SAAkB,WAAE,SAASC,GAAU,OAAO3F,EAAG,kBAAkBC,EAAIsF,GAAG,CAAClF,IAAIsF,EAASF,OAAOvF,MAAM,CAAC,QAAUD,EAAIqE,UAAYqB,EAASF,OAAO,MAAQxF,EAAIyF,SAASE,OAAOrB,GAAG,CAAC,MAAQtE,EAAIuE,UAAU,kBAAkBmB,GAAS,QAAW,GAAG1F,EAAIwE,GAAG,KAAKzE,EAAG,MAAM,CAACmE,YAAY,6BAA6B,CAACnE,EAAG,SAAS,CAACuE,GAAG,CAAC,MAAQtE,EAAIQ,QAAQ,CAACR,EAAIwE,GAAG,aAAaxE,EAAI6E,GAAG7E,EAAIc,EAAE,QAAS,WAAW,cAAcd,EAAIwE,GAAG,KAAKzE,EAAG,QAAQ,CAACmE,YAAY,UAAUjE,MAAM,CAAC,KAAO,SAAS,aAAaD,EAAIc,EAAE,QAAS,iDAAiDsD,SAAS,CAAC,MAAQpE,EAAIc,EAAE,QAAS,iBAAiBd,EAAIwE,GAAG,KAAMxE,EAAW,QAAED,EAAG,eAAe,CAACmE,YAAY,4BAA4BjE,MAAM,CAAC,KAAO,iBAAiB,CAACD,EAAIwE,GAAG,SAASxE,EAAI6E,GAAG7E,EAAIc,EAAE,QAAS,kBAAkB,UAAUd,EAAI4F,MAAM,GAAG5F,EAAI4F,OACrgD,IDWpB,EACA,KACA,WACA,MAIF,GAAe,GAAiB,kIEgBhC,IAAMC,IAASC,EAAAA,EAAAA,MACbC,OAAO,SACPC,aACAC,QAGFpF,EAAAA,QAAAA,MAAU,CACTqF,QAAS,CACRpF,EAAAA,EAAAA,UACAqF,EAAAA,EAAAA,mBAKF,IAAMC,GAAqB1E,SAAS2E,cAAc,OAClDD,GAAmBjC,GAAK,kBACxBzC,SAAS4E,KAAKC,YAAYH,IAG1B,IAAII,IAAYC,EAAAA,EAAAA,WAAU,QAAS,YAAa,IAC5CC,IAAgBD,EAAAA,EAAAA,WAAU,QAAS,kBAAkB,GACzDZ,GAAOzG,MAAM,sBAAuBoH,IACpCX,GAAOzG,MAAM,mBAAoB,CAAEsH,cAAAA,KAGnC,IACMC,GAAiB,IADV9F,EAAAA,QAAAA,OAAW+F,IACD,CAAS,CAC/BpH,KAAM,iBACNqH,UAAW,CACVhB,OAAAA,MAGFc,GAAeG,OAAO,oBAGtB/F,OAAOK,iBAAiB,oBAAoB,WAC3C,IAAKsF,GAAe,CACnBb,GAAOzG,MAAM,oCACb,IAAM2H,EAAsB,CAC3BC,OAD2B,SACpBC,GAENA,EAAKC,aAAa,CACjB/C,GAAI,gBACJgD,aAAarG,EAAAA,EAAAA,WAAE,QAAS,2BACxBsG,cAActG,EAAAA,EAAAA,WAAE,QAAS,aACzBuG,UAAW,oBACXC,SAAU,OACVC,cANiB,SAMH/H,GACbgI,GAAoBhI,GACpByH,EAAKQ,gBAAgB,sBAKzBC,GAAGC,QAAQC,SAAS,wBAAyBb,OAK/CP,GAAUtE,SAAQ,SAACuD,EAAUoC,GAC5B,IAAMC,EAAoB,CACzBd,OADyB,SAClBC,GACN,IAAMc,EAAWd,EAAKc,SAGF,UAAhBA,EAAS5D,IAAkC,iBAAhB4D,EAAS5D,IAKxC8C,EAAKC,aAAa,CACjB/C,GAAI,gBAAF,OAAkBsB,EAASuC,IAA3B,YAAkCH,GACpCV,YAAa1B,EAASwC,MACtBb,aAAc3B,EAASwC,MAAQxC,EAASyC,UACxCb,UAAW5B,EAAS4B,WAAa,YACjCC,SAAU,OACVC,cANiB,SAMH/H,GACbmH,GAAepG,KAAKf,EAAMiG,QAK9BiC,GAAGC,QAAQC,SAAS,wBAAyBE,MAQ9C,ICnGOK,GDmGDX,GAAmB,+CAAG,WAAehI,GAAf,+FACrB0D,GAAgBf,IAAwB,IAAL,OAAS3C,IAAQiD,QAAQ,KAAM,KAD7C,SAG1BoD,GAAOzG,MAAM,uCAAwC,CAAE8D,aAAAA,IAH7B,SAIHP,EAAAA,QAAAA,MAAWC,EAAAA,EAAAA,gBAAe,oCAAqC,CACrFM,aAAAA,EACAkF,qBAAqB,IANI,OAIpBvF,EAJoB,OAU1B7B,IAAIC,MAAMoB,IAAIC,gBAAgB+F,gBAAgBnF,GAAc,GAAM,GAElEsD,GAAY3D,EAASC,KAAKC,IAAID,KAAK0D,UACnCE,GAAgB7D,EAASC,KAAKC,IAAID,KAAKwF,cAbb,kDAe1BzC,GAAOnG,MAAM,iDACb6I,EAAAA,EAAAA,KAAUzH,EAAAA,EAAAA,WAAE,QAAS,iDAhBK,0OAAH,kECnGlBqH,GAAc,CACnBnB,OADmB,SACZe,GAAU,YAChBS,EAAAA,GAAAA,WAAU,mCAAmC,YAAe,IAAZC,EAAY,EAAZA,MAC/CV,EAASW,UAAUD,OAEpBD,EAAAA,GAAAA,WAAU,kCAAkC,WAC3C,EAAKC,MAAQ,KACbV,EAASW,UAAU,SAMtB3H,OAAO2G,GAAGC,QAAQC,SAAS,qBAAsBO,8DCpC9CQ,QAA0B,GAA4B,KAE1DA,EAAwBhJ,KAAK,CAACiJ,EAAOzE,GAAI,0rCAA2rC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,6DAA6D,MAAQ,GAAG,SAAW,wYAAwY,eAAiB,CAAC,gtDAAgtD,WAAa,MAEz8G,gECJIwE,QAA0B,GAA4B,KAE1DA,EAAwBhJ,KAAK,CAACiJ,EAAOzE,GAAI,0iCAA2iC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,uDAAuD,MAAQ,GAAG,SAAW,uVAAuV,eAAiB,CAAC,22DAA22D,WAAa,MAE75G,QCNI0E,EAA2B,GAG/B,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaE,QAGrB,IAAIN,EAASC,EAAyBE,GAAY,CACjD5E,GAAI4E,EACJI,QAAQ,EACRD,QAAS,IAUV,OANAE,EAAoBL,GAAUM,KAAKT,EAAOM,QAASN,EAAQA,EAAOM,QAASJ,GAG3EF,EAAOO,QAAS,EAGTP,EAAOM,QAIfJ,EAAoBQ,EAAIF,EC5BxBN,EAAoBS,KAAO,WAC1B,MAAM,IAAIC,MAAM,mCCDjBV,EAAoBW,KAAO,G/BAvB1K,EAAW,GACf+J,EAAoBY,EAAI,SAASC,EAAQC,EAAUC,EAAIC,GACtD,IAAGF,EAAH,CAMA,IAAIG,EAAeC,EAAAA,EACnB,IAASC,EAAI,EAAGA,EAAIlL,EAASU,OAAQwK,IAAK,CACrCL,EAAW7K,EAASkL,GAAG,GACvBJ,EAAK9K,EAASkL,GAAG,GACjBH,EAAW/K,EAASkL,GAAG,GAE3B,IAJA,IAGIC,GAAY,EACPC,EAAI,EAAGA,EAAIP,EAASnK,OAAQ0K,MACpB,EAAXL,GAAsBC,GAAgBD,IAAa5I,OAAOkJ,KAAKtB,EAAoBY,GAAGW,OAAM,SAASjK,GAAO,OAAO0I,EAAoBY,EAAEtJ,GAAKwJ,EAASO,OAC3JP,EAASU,OAAOH,IAAK,IAErBD,GAAY,EACTJ,EAAWC,IAAcA,EAAeD,IAG7C,GAAGI,EAAW,CACbnL,EAASuL,OAAOL,IAAK,GACrB,IAAIM,EAAIV,SACEZ,IAANsB,IAAiBZ,EAASY,IAGhC,OAAOZ,EAzBNG,EAAWA,GAAY,EACvB,IAAI,IAAIG,EAAIlL,EAASU,OAAQwK,EAAI,GAAKlL,EAASkL,EAAI,GAAG,GAAKH,EAAUG,IAAKlL,EAASkL,GAAKlL,EAASkL,EAAI,GACrGlL,EAASkL,GAAK,CAACL,EAAUC,EAAIC,IgCJ/BhB,EAAoB3C,EAAI,SAASyC,GAChC,IAAI4B,EAAS5B,GAAUA,EAAO6B,WAC7B,WAAa,OAAO7B,EAAgB,SACpC,WAAa,OAAOA,GAErB,OADAE,EAAoB4B,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,GCLR1B,EAAoB4B,EAAI,SAASxB,EAAS0B,GACzC,IAAI,IAAIxK,KAAOwK,EACX9B,EAAoB+B,EAAED,EAAYxK,KAAS0I,EAAoB+B,EAAE3B,EAAS9I,IAC5Ec,OAAO4J,eAAe5B,EAAS9I,EAAK,CAAE2K,YAAY,EAAMC,IAAKJ,EAAWxK,MCJ3E0I,EAAoBmC,EAAI,WACvB,GAA0B,iBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAOjM,MAAQ,IAAIkM,SAAS,cAAb,GACd,MAAO5L,GACR,GAAsB,iBAAXwB,OAAqB,OAAOA,QALjB,GCAxB+H,EAAoB+B,EAAI,SAASO,EAAKC,GAAQ,OAAOnK,OAAOoK,UAAUC,eAAelC,KAAK+B,EAAKC,ICC/FvC,EAAoByB,EAAI,SAASrB,GACX,oBAAXsC,QAA0BA,OAAOC,aAC1CvK,OAAO4J,eAAe5B,EAASsC,OAAOC,YAAa,CAAEpI,MAAO,WAE7DnC,OAAO4J,eAAe5B,EAAS,aAAc,CAAE7F,OAAO,KCLvDyF,EAAoB4C,IAAM,SAAS9C,GAGlC,OAFAA,EAAO+C,MAAQ,GACV/C,EAAO9G,WAAU8G,EAAO9G,SAAW,IACjC8G,GCHRE,EAAoBqB,EAAI,gBCAxBrB,EAAoB8C,EAAIlK,SAASmK,SAAWC,KAAKC,SAASC,KAK1D,IAAIC,EAAkB,CACrB,KAAM,GAaPnD,EAAoBY,EAAES,EAAI,SAAS+B,GAAW,OAAoC,IAA7BD,EAAgBC,IAGrE,IAAIC,EAAuB,SAASC,EAA4BtJ,GAC/D,IAKIiG,EAAUmD,EALVtC,EAAW9G,EAAK,GAChBuJ,EAAcvJ,EAAK,GACnBwJ,EAAUxJ,EAAK,GAGImH,EAAI,EAC3B,GAAGL,EAAS2C,MAAK,SAASpI,GAAM,OAA+B,IAAxB8H,EAAgB9H,MAAe,CACrE,IAAI4E,KAAYsD,EACZvD,EAAoB+B,EAAEwB,EAAatD,KACrCD,EAAoBQ,EAAEP,GAAYsD,EAAYtD,IAGhD,GAAGuD,EAAS,IAAI3C,EAAS2C,EAAQxD,GAGlC,IADGsD,GAA4BA,EAA2BtJ,GACrDmH,EAAIL,EAASnK,OAAQwK,IACzBiC,EAAUtC,EAASK,GAChBnB,EAAoB+B,EAAEoB,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBC,GAAW,EAE5B,OAAOpD,EAAoBY,EAAEC,IAG1B6C,EAAqBV,KAA4B,sBAAIA,KAA4B,uBAAK,GAC1FU,EAAmBtK,QAAQiK,EAAqBM,KAAK,KAAM,IAC3DD,EAAmB7M,KAAOwM,EAAqBM,KAAK,KAAMD,EAAmB7M,KAAK8M,KAAKD,OC/CvF,IAAIE,EAAsB5D,EAAoBY,OAAET,EAAW,CAAC,OAAO,WAAa,OAAOH,EAAoB,UAC3G4D,EAAsB5D,EAAoBY,EAAEgD","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/files/src/services/Settings.js","webpack:///nextcloud/apps/files/src/components/Setting.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files/src/components/Setting.vue","webpack:///nextcloud/apps/files/src/views/Settings.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files/src/views/Settings.vue","webpack://nextcloud/./apps/files/src/components/Setting.vue?98ea","webpack:///nextcloud/apps/files/src/components/Setting.vue?vue&type=template&id=47cd8aa6&","webpack://nextcloud/./apps/files/src/views/Settings.vue?b81b","webpack:///nextcloud/apps/files/src/views/Settings.vue?vue&type=template&id=31c9bb4b&scoped=true&","webpack:///nextcloud/apps/files/src/models/Setting.js","webpack:///nextcloud/apps/files/src/files-app-settings.js","webpack:///nextcloud/apps/files/src/utils/davUtils.js","webpack:///nextcloud/apps/files/src/services/Templates.js","webpack:///nextcloud/apps/files/src/components/TemplatePreview.vue","webpack:///nextcloud/apps/files/src/utils/fileUtils.js","webpack:///nextcloud/apps/files/src/components/TemplatePreview.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files/src/components/TemplatePreview.vue?ab98","webpack://nextcloud/./apps/files/src/components/TemplatePreview.vue?81db","webpack:///nextcloud/apps/files/src/components/TemplatePreview.vue?vue&type=template&id=440aea22&scoped=true&","webpack:///nextcloud/apps/files/src/views/TemplatePicker.vue","webpack:///nextcloud/apps/files/src/views/TemplatePicker.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files/src/views/TemplatePicker.vue?dc89","webpack://nextcloud/./apps/files/src/views/TemplatePicker.vue?afd8","webpack:///nextcloud/apps/files/src/views/TemplatePicker.vue?vue&type=template&id=6784795c&scoped=true&","webpack:///nextcloud/apps/files/src/templates.js","webpack:///nextcloud/apps/files/src/legacy/filelistSearch.js","webpack:///nextcloud/apps/files/src/components/TemplatePreview.vue?vue&type=style&index=0&id=440aea22&lang=scss&scoped=true&","webpack:///nextcloud/apps/files/src/views/TemplatePicker.vue?vue&type=style&index=0&id=6784795c&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 Copyright (c) 2019 Gary Kim <gary@garykim.dev>\n *\n * @author Gary Kim <gary@garykim.dev>\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 */\n\nexport default class Settings {\n\n\t_settings\n\n\tconstructor() {\n\t\tthis._settings = []\n\t\tconsole.debug('OCA.Files.Settings initialized')\n\t}\n\n\t/**\n\t * Register a new setting\n\t *\n\t * @since 19.0.0\n\t * @param {OCA.Files.Settings.Setting} view element to add to settings\n\t * @return {boolean} whether registering was successful\n\t */\n\tregister(view) {\n\t\tif (this._settings.filter(e => e.name === view.name).length > 0) {\n\t\t\tconsole.error('A setting with the same name is already registered')\n\t\t\treturn false\n\t\t}\n\t\tthis._settings.push(view)\n\t\treturn true\n\t}\n\n\t/**\n\t * All settings elements\n\t *\n\t * @return {OCA.Files.Settings.Setting[]} All currently registered settings\n\t */\n\tget settings() {\n\t\treturn this._settings\n\t}\n\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Setting.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!./Setting.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2020 Gary Kim <gary@garykim.dev>\n -\n - @author Gary Kim <gary@garykim.dev>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<div />\n</template>\n<script>\nexport default {\n\tname: 'Setting',\n\tprops: {\n\t\tel: {\n\t\t\ttype: Function,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.$el.appendChild(this.el())\n\t},\n}\n</script>\n<style>\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.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!./Settings.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 Gary Kim <gary@garykim.dev>\n -\n - @author Gary Kim <gary@garykim.dev>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n<template>\n\t<div id=\"files-app-extra-settings\">\n\t\t<template v-for=\"setting in settings\">\n\t\t\t<Setting :key=\"setting.name\" :el=\"setting.el\" />\n\t\t</template>\n\t</div>\n</template>\n\n<script>\nimport Setting from '../components/Setting'\n\nexport default {\n\tname: 'Settings',\n\tcomponents: {\n\t\tSetting,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tsettings: OCA.Files.Settings.settings,\n\t\t}\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\n</style>\n","import { render, staticRenderFns } from \"./Setting.vue?vue&type=template&id=47cd8aa6&\"\nimport script from \"./Setting.vue?vue&type=script&lang=js&\"\nexport * from \"./Setting.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div')}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./Settings.vue?vue&type=template&id=31c9bb4b&scoped=true&\"\nimport script from \"./Settings.vue?vue&type=script&lang=js&\"\nexport * from \"./Settings.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"31c9bb4b\",\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',{attrs:{\"id\":\"files-app-extra-settings\"}},[_vm._l((_vm.settings),function(setting){return [_c('Setting',{key:setting.name,attrs:{\"el\":setting.el}})]})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 Gary Kim <gary@garykim.dev>\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Gary Kim <gary@garykim.dev>\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 */\n\nexport default class Setting {\n\n\t_close\n\t_el\n\t_name\n\t_open\n\n\t/**\n\t * Create a new files app setting\n\t *\n\t * @since 19.0.0\n\t * @param {string} name the name of this setting\n\t * @param {object} component the component\n\t * @param {Function} component.el function that returns an unmounted dom element to be added\n\t * @param {Function} [component.open] callback for when setting is added\n\t * @param {Function} [component.close] callback for when setting is closed\n\t */\n\tconstructor(name, { el, open, close }) {\n\t\tthis._name = name\n\t\tthis._el = el\n\t\tthis._open = open\n\t\tthis._close = close\n\n\t\tif (typeof this._open !== 'function') {\n\t\t\tthis._open = () => {}\n\t\t}\n\n\t\tif (typeof this._close !== 'function') {\n\t\t\tthis._close = () => {}\n\t\t}\n\t}\n\n\tget name() {\n\t\treturn this._name\n\t}\n\n\tget el() {\n\t\treturn this._el\n\t}\n\n\tget open() {\n\t\treturn this._open\n\t}\n\n\tget close() {\n\t\treturn this._close\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 Gary Kim <gary@garykim.dev>\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Gary Kim <gary@garykim.dev>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport Vue from 'vue'\nimport Settings from './services/Settings'\nimport SettingsView from './views/Settings'\nimport Setting from './models/Setting'\n\nVue.prototype.t = t\n\n// Init Files App Settings Service\nif (!window.OCA.Files) {\n\twindow.OCA.Files = {}\n}\nObject.assign(window.OCA.Files, { Settings: new Settings() })\nObject.assign(window.OCA.Files.Settings, { Setting })\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\tif (window.TESTING) {\n\t\treturn\n\t}\n\t// Init Vue app\n\t// eslint-disable-next-line\n\tnew Vue({\n\t\tel: '#files-app-settings',\n\t\trender: h => h(SettingsView),\n\t})\n\n\tconst appSettingsHeader = document.getElementById('app-settings-header')\n\tif (appSettingsHeader) {\n\t\tappSettingsHeader.addEventListener('click', e => {\n\t\t\tconst opened = e.currentTarget.children[0].classList.contains('opened')\n\t\t\tOCA.Files.Settings.settings.forEach(e => opened ? e.close() : e.open())\n\t\t})\n\t}\n})\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport { generateRemoteUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\n\nexport const getRootPath = function() {\n\tif (getCurrentUser()) {\n\t\treturn generateRemoteUrl(`dav/files/${getCurrentUser().uid}`)\n\t} else {\n\t\treturn generateRemoteUrl('webdav').replace('/remote.php', '/public.php')\n\t}\n}\n\nexport const isPublic = function() {\n\treturn !getCurrentUser()\n}\n\nexport const getToken = function() {\n\treturn document.getElementById('sharingToken') && document.getElementById('sharingToken').value\n}\n\n/**\n * Return the current directory, fallback to root\n *\n * @return {string}\n */\nexport const getCurrentDirectory = function() {\n\tconst currentDirInfo = OCA?.Files?.App?.currentFileList?.dirInfo\n\t\t|| { path: '/', name: '' }\n\n\t// Make sure we don't have double slashes\n\treturn `${currentDirInfo.path}/${currentDirInfo.name}`.replace(/\\/\\//gi, '/')\n}\n","/**\n * @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport { generateOcsUrl } from '@nextcloud/router'\nimport axios from '@nextcloud/axios'\n\nexport const getTemplates = async function() {\n\tconst response = await axios.get(generateOcsUrl('apps/files/api/v1/templates'))\n\treturn response.data.ocs.data\n}\n\n/**\n * Create a new file from a specified template\n *\n * @param {string} filePath The new file destination path\n * @param {string} templatePath The template source path\n * @param {string} templateType The template type e.g 'user'\n */\nexport const createFromTemplate = async function(filePath, templatePath, templateType) {\n\tconst response = await axios.post(generateOcsUrl('apps/files/api/v1/templates/create'), {\n\t\tfilePath,\n\t\ttemplatePath,\n\t\ttemplateType,\n\t})\n\treturn response.data.ocs.data\n}\n","<!--\n - @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<li class=\"template-picker__item\">\n\t\t<input :id=\"id\"\n\t\t\t:checked=\"checked\"\n\t\t\ttype=\"radio\"\n\t\t\tclass=\"radio\"\n\t\t\tname=\"template-picker\"\n\t\t\t@change=\"onCheck\">\n\n\t\t<label :for=\"id\" class=\"template-picker__label\">\n\t\t\t<div class=\"template-picker__preview\"\n\t\t\t\t:class=\"failedPreview ? 'template-picker__preview--failed' : ''\">\n\t\t\t\t<img class=\"template-picker__image\"\n\t\t\t\t\t:src=\"realPreviewUrl\"\n\t\t\t\t\talt=\"\"\n\t\t\t\t\tdraggable=\"false\"\n\t\t\t\t\t@error=\"onFailure\">\n\t\t\t</div>\n\n\t\t\t<span class=\"template-picker__title\">\n\t\t\t\t{{ nameWithoutExt }}\n\t\t\t</span>\n\t\t</label>\n\t</li>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { encodeFilePath } from '../utils/fileUtils'\nimport { getToken, isPublic } from '../utils/davUtils'\n\n// preview width generation\nconst previewWidth = 256\n\nexport default {\n\tname: 'TemplatePreview',\n\tinheritAttrs: false,\n\n\tprops: {\n\t\tbasename: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tchecked: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tfileid: {\n\t\t\ttype: [String, Number],\n\t\t\trequired: true,\n\t\t},\n\t\tfilename: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tpreviewUrl: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\thasPreview: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tmime: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tratio: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tfailedPreview: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Strip away extension from name\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tnameWithoutExt() {\n\t\t\treturn this.basename.indexOf('.') > -1 ? this.basename.split('.').slice(0, -1).join('.') : this.basename\n\t\t},\n\n\t\tid() {\n\t\t\treturn `template-picker-${this.fileid}`\n\t\t},\n\n\t\trealPreviewUrl() {\n\t\t\t// If original preview failed, fallback to mime icon\n\t\t\tif (this.failedPreview && this.mimeIcon) {\n\t\t\t\treturn this.mimeIcon\n\t\t\t}\n\n\t\t\tif (this.previewUrl) {\n\t\t\t\treturn this.previewUrl\n\t\t\t}\n\t\t\t// TODO: find a nicer standard way of doing this?\n\t\t\tif (isPublic()) {\n\t\t\t\treturn generateUrl(`/apps/files_sharing/publicpreview/${getToken()}?fileId=${this.fileid}&file=${encodeFilePath(this.filename)}&x=${previewWidth}&y=${previewWidth}&a=1`)\n\t\t\t}\n\t\t\treturn generateUrl(`/core/preview?fileId=${this.fileid}&x=${previewWidth}&y=${previewWidth}&a=1`)\n\t\t},\n\n\t\tmimeIcon() {\n\t\t\treturn OC.MimeType.getIconUrl(this.mime)\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonCheck() {\n\t\t\tthis.$emit('check', this.fileid)\n\t\t},\n\t\tonFailure() {\n\t\t\tthis.failedPreview = true\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\n.template-picker {\n\t&__item {\n\t\tdisplay: flex;\n\t}\n\n\t&__label {\n\t\tdisplay: flex;\n\t\t// Align in the middle of the grid\n\t\talign-items: center;\n\t\tflex: 1 1;\n\t\tflex-direction: column;\n\n\t\t&, * {\n\t\t\tcursor: pointer;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&::before {\n\t\t\tdisplay: none !important;\n\t\t}\n\t}\n\n\t&__preview {\n\t\tdisplay: block;\n\t\toverflow: hidden;\n\t\t// Stretch so all entries are the same width\n\t\tflex: 1 1;\n\t\twidth: var(--width);\n\t\tmin-height: var(--height);\n\t\tmax-height: var(--height);\n\t\tpadding: 0;\n\t\tborder: var(--border) solid var(--color-border);\n\t\tborder-radius: var(--border-radius-large);\n\n\t\tinput:checked + label > & {\n\t\t\tborder-color: var(--color-primary);\n\t\t}\n\n\t\t&--failed {\n\t\t\t// Make sure to properly center fallback icon\n\t\t\tdisplay: flex;\n\t\t}\n\t}\n\n\t&__image {\n\t\tmax-width: 100%;\n\t\tbackground-color: var(--color-main-background);\n\n\t\tobject-fit: cover;\n\t}\n\n\t// Failed preview, fallback to mime icon\n\t&__preview--failed &__image {\n\t\twidth: calc(var(--margin) * 8);\n\t\t// Center mime icon\n\t\tmargin: auto;\n\t\tbackground-color: transparent !important;\n\n\t\tobject-fit: initial;\n\t}\n\n\t&__title {\n\t\toverflow: hidden;\n\t\t// also count preview border\n\t\tmax-width: calc(var(--width) + 2*2px);\n\t\tpadding: var(--margin);\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t}\n}\n\n</style>\n","/**\n * @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nconst encodeFilePath = function(path) {\n\tconst pathSections = (path.startsWith('/') ? path : `/${path}`).split('/')\n\tlet relativePath = ''\n\tpathSections.forEach((section) => {\n\t\tif (section !== '') {\n\t\t\trelativePath += '/' + encodeURIComponent(section)\n\t\t}\n\t})\n\treturn relativePath\n}\n\n/**\n * Extract dir and name from file path\n *\n * @param {string} path the full path\n * @return {string[]} [dirPath, fileName]\n */\nconst extractFilePaths = function(path) {\n\tconst pathSections = path.split('/')\n\tconst fileName = pathSections[pathSections.length - 1]\n\tconst dirPath = pathSections.slice(0, pathSections.length - 1).join('/')\n\treturn [dirPath, fileName]\n}\n\nexport { encodeFilePath, extractFilePaths }\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplatePreview.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!./TemplatePreview.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!./TemplatePreview.vue?vue&type=style&index=0&id=440aea22&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!./TemplatePreview.vue?vue&type=style&index=0&id=440aea22&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./TemplatePreview.vue?vue&type=template&id=440aea22&scoped=true&\"\nimport script from \"./TemplatePreview.vue?vue&type=script&lang=js&\"\nexport * from \"./TemplatePreview.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TemplatePreview.vue?vue&type=style&index=0&id=440aea22&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 \"440aea22\",\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('li',{staticClass:\"template-picker__item\"},[_c('input',{staticClass:\"radio\",attrs:{\"id\":_vm.id,\"type\":\"radio\",\"name\":\"template-picker\"},domProps:{\"checked\":_vm.checked},on:{\"change\":_vm.onCheck}}),_vm._v(\" \"),_c('label',{staticClass:\"template-picker__label\",attrs:{\"for\":_vm.id}},[_c('div',{staticClass:\"template-picker__preview\",class:_vm.failedPreview ? 'template-picker__preview--failed' : ''},[_c('img',{staticClass:\"template-picker__image\",attrs:{\"src\":_vm.realPreviewUrl,\"alt\":\"\",\"draggable\":\"false\"},on:{\"error\":_vm.onFailure}})]),_vm._v(\" \"),_c('span',{staticClass:\"template-picker__title\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.nameWithoutExt)+\"\\n\\t\\t\")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<Modal v-if=\"opened\"\n\t\t:clear-view-delay=\"-1\"\n\t\tclass=\"templates-picker\"\n\t\tsize=\"normal\"\n\t\t@close=\"close\">\n\t\t<form class=\"templates-picker__form\"\n\t\t\t:style=\"style\"\n\t\t\t@submit.prevent.stop=\"onSubmit\">\n\t\t\t<h2>{{ t('files', 'Pick a template for {name}', { name: nameWithoutExt }) }}</h2>\n\n\t\t\t<!-- Templates list -->\n\t\t\t<ul class=\"templates-picker__list\">\n\t\t\t\t<TemplatePreview v-bind=\"emptyTemplate\"\n\t\t\t\t\t:checked=\"checked === emptyTemplate.fileid\"\n\t\t\t\t\t@check=\"onCheck\" />\n\n\t\t\t\t<TemplatePreview v-for=\"template in provider.templates\"\n\t\t\t\t\t:key=\"template.fileid\"\n\t\t\t\t\tv-bind=\"template\"\n\t\t\t\t\t:checked=\"checked === template.fileid\"\n\t\t\t\t\t:ratio=\"provider.ratio\"\n\t\t\t\t\t@check=\"onCheck\" />\n\t\t\t</ul>\n\n\t\t\t<!-- Cancel and submit -->\n\t\t\t<div class=\"templates-picker__buttons\">\n\t\t\t\t<button @click=\"close\">\n\t\t\t\t\t{{ t('files', 'Cancel') }}\n\t\t\t\t</button>\n\t\t\t\t<input type=\"submit\"\n\t\t\t\t\tclass=\"primary\"\n\t\t\t\t\t:value=\"t('files', 'Create')\"\n\t\t\t\t\t:aria-label=\"t('files', 'Create a new file with the selected template')\">\n\t\t\t</div>\n\t\t</form>\n\n\t\t<EmptyContent v-if=\"loading\" class=\"templates-picker__loading\" icon=\"icon-loading\">\n\t\t\t{{ t('files', 'Creating file') }}\n\t\t</EmptyContent>\n\t</Modal>\n</template>\n\n<script>\nimport { normalize } from 'path'\nimport { showError } from '@nextcloud/dialogs'\nimport EmptyContent from '@nextcloud/vue/dist/Components/EmptyContent'\nimport Modal from '@nextcloud/vue/dist/Components/Modal'\n\nimport { getCurrentDirectory } from '../utils/davUtils'\nimport { createFromTemplate, getTemplates } from '../services/Templates'\nimport TemplatePreview from '../components/TemplatePreview'\n\nconst border = 2\nconst margin = 8\nconst width = margin * 20\n\nexport default {\n\tname: 'TemplatePicker',\n\n\tcomponents: {\n\t\tEmptyContent,\n\t\tModal,\n\t\tTemplatePreview,\n\t},\n\n\tprops: {\n\t\tlogger: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\t// Check empty template by default\n\t\t\tchecked: -1,\n\t\t\tloading: false,\n\t\t\tname: null,\n\t\t\topened: false,\n\t\t\tprovider: null,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Strip away extension from name\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tnameWithoutExt() {\n\t\t\treturn this.name.indexOf('.') > -1\n\t\t\t\t? this.name.split('.').slice(0, -1).join('.')\n\t\t\t\t: this.name\n\t\t},\n\n\t\temptyTemplate() {\n\t\t\treturn {\n\t\t\t\tbasename: t('files', 'Blank'),\n\t\t\t\tfileid: -1,\n\t\t\t\tfilename: this.t('files', 'Blank'),\n\t\t\t\thasPreview: false,\n\t\t\t\tmime: this.provider?.mimetypes[0] || this.provider?.mimetypes,\n\t\t\t}\n\t\t},\n\n\t\tselectedTemplate() {\n\t\t\treturn this.provider.templates.find(template => template.fileid === this.checked)\n\t\t},\n\n\t\t/**\n\t\t * Style css vars bin,d\n\t\t *\n\t\t * @return {object}\n\t\t */\n\t\tstyle() {\n\t\t\treturn {\n\t\t\t\t'--margin': margin + 'px',\n\t\t\t\t'--width': width + 'px',\n\t\t\t\t'--border': border + 'px',\n\t\t\t\t'--fullwidth': width + 2 * margin + 2 * border + 'px',\n\t\t\t\t'--height': this.provider.ratio ? Math.round(width / this.provider.ratio) + 'px' : null,\n\t\t\t}\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Open the picker\n\t\t *\n\t\t * @param {string} name the file name to create\n\t\t * @param {object} provider the template provider picked\n\t\t */\n\t\tasync open(name, provider) {\n\n\t\t\tthis.checked = this.emptyTemplate.fileid\n\t\t\tthis.name = name\n\t\t\tthis.provider = provider\n\n\t\t\tconst templates = await getTemplates()\n\t\t\tconst fetchedProvider = templates.find((fetchedProvider) => fetchedProvider.app === provider.app && fetchedProvider.label === provider.label)\n\t\t\tif (fetchedProvider === null) {\n\t\t\t\tthrow new Error('Failed to match provider in results')\n\t\t\t}\n\t\t\tthis.provider = fetchedProvider\n\n\t\t\t// If there is no templates available, just create an empty file\n\t\t\tif (fetchedProvider.templates.length === 0) {\n\t\t\t\tthis.onSubmit()\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Else, open the picker\n\t\t\tthis.opened = true\n\t\t},\n\n\t\t/**\n\t\t * Close the picker and reset variables\n\t\t */\n\t\tclose() {\n\t\t\tthis.checked = this.emptyTemplate.fileid\n\t\t\tthis.loading = false\n\t\t\tthis.name = null\n\t\t\tthis.opened = false\n\t\t\tthis.provider = null\n\t\t},\n\n\t\t/**\n\t\t * Manages the radio template picker change\n\t\t *\n\t\t * @param {number} fileid the selected template file id\n\t\t */\n\t\tonCheck(fileid) {\n\t\t\tthis.checked = fileid\n\t\t},\n\n\t\tasync onSubmit() {\n\t\t\tthis.loading = true\n\t\t\tconst currentDirectory = getCurrentDirectory()\n\t\t\tconst fileList = OCA?.Files?.App?.currentFileList\n\n\t\t\t// If the file doesn't have an extension, add the default one\n\t\t\tif (this.nameWithoutExt === this.name) {\n\t\t\t\tthis.logger.debug('Fixed invalid filename', { name: this.name, extension: this.provider?.extension })\n\t\t\t\tthis.name = this.name + this.provider?.extension\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst fileInfo = await createFromTemplate(\n\t\t\t\t\tnormalize(`${currentDirectory}/${this.name}`),\n\t\t\t\t\tthis.selectedTemplate?.filename,\n\t\t\t\t\tthis.selectedTemplate?.templateType,\n\t\t\t\t)\n\t\t\t\tthis.logger.debug('Created new file', fileInfo)\n\n\t\t\t\tconst data = await fileList?.addAndFetchFileInfo(this.name).then((status, data) => data)\n\n\t\t\t\tconst model = new OCA.Files.FileInfoModel(data, {\n\t\t\t\t\tfilesClient: fileList?.filesClient,\n\t\t\t\t})\n\t\t\t\t// Run default action\n\t\t\t\tconst fileAction = OCA.Files.fileActions.getDefaultFileAction(fileInfo.mime, 'file', OC.PERMISSION_ALL)\n\t\t\t\tfileAction.action(fileInfo.basename, {\n\t\t\t\t\t$file: fileList?.findFileEl(this.name),\n\t\t\t\t\tdir: currentDirectory,\n\t\t\t\t\tfileList,\n\t\t\t\t\tfileActions: fileList?.fileActions,\n\t\t\t\t\tfileInfoModel: model,\n\t\t\t\t})\n\n\t\t\t\tthis.close()\n\t\t\t} catch (error) {\n\t\t\t\tthis.logger.error('Error while creating the new file from template')\n\t\t\t\tconsole.error(error)\n\t\t\t\tshowError(this.t('files', 'Unable to create new file from template'))\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.templates-picker {\n\t&__form {\n\t\tpadding: calc(var(--margin) * 2);\n\t\t// Will be handled by the buttons\n\t\tpadding-bottom: 0;\n\n\t\th2 {\n\t\t\ttext-align: center;\n\t\t\tfont-weight: bold;\n\t\t\tmargin: var(--margin) 0 calc(var(--margin) * 2);\n\t\t}\n\t}\n\n\t&__list {\n\t\tdisplay: grid;\n\t\tgrid-gap: calc(var(--margin) * 2);\n\t\tgrid-auto-columns: 1fr;\n\t\t// We want maximum 5 columns. Putting 6 as we don't count the grid gap. So it will always be lower than 6\n\t\tmax-width: calc(var(--fullwidth) * 6);\n\t\tgrid-template-columns: repeat(auto-fit, var(--fullwidth));\n\t\t// Make sure all rows are the same height\n\t\tgrid-auto-rows: 1fr;\n\t\t// Center the columns set\n\t\tjustify-content: center;\n\t}\n\n\t&__buttons {\n\t\tdisplay: flex;\n\t\tjustify-content: space-between;\n\t\tpadding: calc(var(--margin) * 2) var(--margin);\n\t\tposition: sticky;\n\t\tbottom: 0;\n\t\tbackground-image: linear-gradient(0, var(--gradient-main-background));\n\n\t\tbutton, input[type='submit'] {\n\t\t\theight: 44px;\n\t\t}\n\t}\n\n\t// Make sure we're relative for the loading emptycontent on top\n\t::v-deep .modal-container {\n\t\tposition: relative;\n\t}\n\n\t&__loading {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tjustify-content: center;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tmargin: 0;\n\t\tbackground-color: var(--color-main-background-translucent);\n\t}\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!./TemplatePicker.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!./TemplatePicker.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!./TemplatePicker.vue?vue&type=style&index=0&id=6784795c&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!./TemplatePicker.vue?vue&type=style&index=0&id=6784795c&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./TemplatePicker.vue?vue&type=template&id=6784795c&scoped=true&\"\nimport script from \"./TemplatePicker.vue?vue&type=script&lang=js&\"\nexport * from \"./TemplatePicker.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TemplatePicker.vue?vue&type=style&index=0&id=6784795c&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 \"6784795c\",\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 (_vm.opened)?_c('Modal',{staticClass:\"templates-picker\",attrs:{\"clear-view-delay\":-1,\"size\":\"normal\"},on:{\"close\":_vm.close}},[_c('form',{staticClass:\"templates-picker__form\",style:(_vm.style),on:{\"submit\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onSubmit.apply(null, arguments)}}},[_c('h2',[_vm._v(_vm._s(_vm.t('files', 'Pick a template for {name}', { name: _vm.nameWithoutExt })))]),_vm._v(\" \"),_c('ul',{staticClass:\"templates-picker__list\"},[_c('TemplatePreview',_vm._b({attrs:{\"checked\":_vm.checked === _vm.emptyTemplate.fileid},on:{\"check\":_vm.onCheck}},'TemplatePreview',_vm.emptyTemplate,false)),_vm._v(\" \"),_vm._l((_vm.provider.templates),function(template){return _c('TemplatePreview',_vm._b({key:template.fileid,attrs:{\"checked\":_vm.checked === template.fileid,\"ratio\":_vm.provider.ratio},on:{\"check\":_vm.onCheck}},'TemplatePreview',template,false))})],2),_vm._v(\" \"),_c('div',{staticClass:\"templates-picker__buttons\"},[_c('button',{on:{\"click\":_vm.close}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Cancel'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('input',{staticClass:\"primary\",attrs:{\"type\":\"submit\",\"aria-label\":_vm.t('files', 'Create a new file with the selected template')},domProps:{\"value\":_vm.t('files', 'Create')}})])]),_vm._v(\" \"),(_vm.loading)?_c('EmptyContent',{staticClass:\"templates-picker__loading\",attrs:{\"icon\":\"icon-loading\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files', 'Creating file'))+\"\\n\\t\")]):_vm._e()],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\nimport { loadState } from '@nextcloud/initial-state'\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { getCurrentDirectory } from './utils/davUtils'\nimport axios from '@nextcloud/axios'\nimport Vue from 'vue'\n\nimport TemplatePickerView from './views/TemplatePicker'\nimport { showError } from '@nextcloud/dialogs'\n\n// Set up logger\nconst logger = getLoggerBuilder()\n\t.setApp('files')\n\t.detectUser()\n\t.build()\n\n// Add translates functions\nVue.mixin({\n\tmethods: {\n\t\tt,\n\t\tn,\n\t},\n})\n\n// Create document root\nconst TemplatePickerRoot = document.createElement('div')\nTemplatePickerRoot.id = 'template-picker'\ndocument.body.appendChild(TemplatePickerRoot)\n\n// Retrieve and init templates\nlet templates = loadState('files', 'templates', [])\nlet templatesPath = loadState('files', 'templates_path', false)\nlogger.debug('Templates providers', templates)\nlogger.debug('Templates folder', { templatesPath })\n\n// Init vue app\nconst View = Vue.extend(TemplatePickerView)\nconst TemplatePicker = new View({\n\tname: 'TemplatePicker',\n\tpropsData: {\n\t\tlogger,\n\t},\n})\nTemplatePicker.$mount('#template-picker')\n\n// Init template engine after load to make sure it's the last injected entry\nwindow.addEventListener('DOMContentLoaded', function() {\n\tif (!templatesPath) {\n\t\tlogger.debug('Templates folder not initialized')\n\t\tconst initTemplatesPlugin = {\n\t\t\tattach(menu) {\n\t\t\t\t// register the new menu entry\n\t\t\t\tmenu.addMenuEntry({\n\t\t\t\t\tid: 'template-init',\n\t\t\t\t\tdisplayName: t('files', 'Set up templates folder'),\n\t\t\t\t\ttemplateName: t('files', 'Templates'),\n\t\t\t\t\ticonClass: 'icon-template-add',\n\t\t\t\t\tfileType: 'file',\n\t\t\t\t\tactionHandler(name) {\n\t\t\t\t\t\tinitTemplatesFolder(name)\n\t\t\t\t\t\tmenu.removeMenuEntry('template-init')\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t},\n\t\t}\n\t\tOC.Plugins.register('OCA.Files.NewFileMenu', initTemplatesPlugin)\n\t}\n})\n\n// Init template files menu\ntemplates.forEach((provider, index) => {\n\tconst newTemplatePlugin = {\n\t\tattach(menu) {\n\t\t\tconst fileList = menu.fileList\n\n\t\t\t// only attach to main file list, public view is not supported yet\n\t\t\tif (fileList.id !== 'files' && fileList.id !== 'files.public') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// register the new menu entry\n\t\t\tmenu.addMenuEntry({\n\t\t\t\tid: `template-new-${provider.app}-${index}`,\n\t\t\t\tdisplayName: provider.label,\n\t\t\t\ttemplateName: provider.label + provider.extension,\n\t\t\t\ticonClass: provider.iconClass || 'icon-file',\n\t\t\t\tfileType: 'file',\n\t\t\t\tactionHandler(name) {\n\t\t\t\t\tTemplatePicker.open(name, provider)\n\t\t\t\t},\n\t\t\t})\n\t\t},\n\t}\n\tOC.Plugins.register('OCA.Files.NewFileMenu', newTemplatePlugin)\n})\n\n/**\n * Init the template directory\n *\n * @param {string} name the templates folder name\n */\nconst initTemplatesFolder = async function(name) {\n\tconst templatePath = (getCurrentDirectory() + `/${name}`).replace('//', '/')\n\ttry {\n\t\tlogger.debug('Initializing the templates directory', { templatePath })\n\t\tconst response = await axios.post(generateOcsUrl('apps/files/api/v1/templates/path'), {\n\t\t\ttemplatePath,\n\t\t\tcopySystemTemplates: true,\n\t\t})\n\n\t\t// Go to template directory\n\t\tOCA.Files.App.currentFileList.changeDirectory(templatePath, true, true)\n\n\t\ttemplates = response.data.ocs.data.templates\n\t\ttemplatesPath = response.data.ocs.data.template_path\n\t} catch (error) {\n\t\tlogger.error('Unable to initialize the templates directory')\n\t\tshowError(t('files', 'Unable to initialize the templates directory'))\n\t}\n}\n","/*\n * @copyright Copyright (c) 2021 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nimport { subscribe } from '@nextcloud/event-bus'\n\n(function() {\n\n\tconst FilesPlugin = {\n\t\tattach(fileList) {\n\t\t\tsubscribe('nextcloud:unified-search.search', ({ query }) => {\n\t\t\t\tfileList.setFilter(query)\n\t\t\t})\n\t\t\tsubscribe('nextcloud:unified-search.reset', () => {\n\t\t\t\tthis.query = null\n\t\t\t\tfileList.setFilter('')\n\t\t\t})\n\n\t\t},\n\t}\n\n\twindow.OC.Plugins.register('OCA.Files.FileList', FilesPlugin)\n\n})()\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, \".template-picker__item[data-v-440aea22]{display:flex}.template-picker__label[data-v-440aea22]{display:flex;align-items:center;flex:1 1;flex-direction:column}.template-picker__label[data-v-440aea22],.template-picker__label *[data-v-440aea22]{cursor:pointer;user-select:none}.template-picker__label[data-v-440aea22]::before{display:none !important}.template-picker__preview[data-v-440aea22]{display:block;overflow:hidden;flex:1 1;width:var(--width);min-height:var(--height);max-height:var(--height);padding:0;border:var(--border) solid var(--color-border);border-radius:var(--border-radius-large)}input:checked+label>.template-picker__preview[data-v-440aea22]{border-color:var(--color-primary)}.template-picker__preview--failed[data-v-440aea22]{display:flex}.template-picker__image[data-v-440aea22]{max-width:100%;background-color:var(--color-main-background);object-fit:cover}.template-picker__preview--failed .template-picker__image[data-v-440aea22]{width:calc(var(--margin)*8);margin:auto;background-color:rgba(0,0,0,0) !important;object-fit:initial}.template-picker__title[data-v-440aea22]{overflow:hidden;max-width:calc(var(--width) + 4px);padding:var(--margin);white-space:nowrap;text-overflow:ellipsis}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/TemplatePreview.vue\"],\"names\":[],\"mappings\":\"AAsJC,wCACC,YAAA,CAGD,yCACC,YAAA,CAEA,kBAAA,CACA,QAAA,CACA,qBAAA,CAEA,oFACC,cAAA,CACA,gBAAA,CAGD,iDACC,uBAAA,CAIF,2CACC,aAAA,CACA,eAAA,CAEA,QAAA,CACA,kBAAA,CACA,wBAAA,CACA,wBAAA,CACA,SAAA,CACA,8CAAA,CACA,wCAAA,CAEA,+DACC,iCAAA,CAGD,mDAEC,YAAA,CAIF,yCACC,cAAA,CACA,6CAAA,CAEA,gBAAA,CAID,2EACC,2BAAA,CAEA,WAAA,CACA,yCAAA,CAEA,kBAAA,CAGD,yCACC,eAAA,CAEA,kCAAA,CACA,qBAAA,CACA,kBAAA,CACA,sBAAA\",\"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.template-picker {\\n\\t&__item {\\n\\t\\tdisplay: flex;\\n\\t}\\n\\n\\t&__label {\\n\\t\\tdisplay: flex;\\n\\t\\t// Align in the middle of the grid\\n\\t\\talign-items: center;\\n\\t\\tflex: 1 1;\\n\\t\\tflex-direction: column;\\n\\n\\t\\t&, * {\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&::before {\\n\\t\\t\\tdisplay: none !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&__preview {\\n\\t\\tdisplay: block;\\n\\t\\toverflow: hidden;\\n\\t\\t// Stretch so all entries are the same width\\n\\t\\tflex: 1 1;\\n\\t\\twidth: var(--width);\\n\\t\\tmin-height: var(--height);\\n\\t\\tmax-height: var(--height);\\n\\t\\tpadding: 0;\\n\\t\\tborder: var(--border) solid var(--color-border);\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\n\\t\\tinput:checked + label > & {\\n\\t\\t\\tborder-color: var(--color-primary);\\n\\t\\t}\\n\\n\\t\\t&--failed {\\n\\t\\t\\t// Make sure to properly center fallback icon\\n\\t\\t\\tdisplay: flex;\\n\\t\\t}\\n\\t}\\n\\n\\t&__image {\\n\\t\\tmax-width: 100%;\\n\\t\\tbackground-color: var(--color-main-background);\\n\\n\\t\\tobject-fit: cover;\\n\\t}\\n\\n\\t// Failed preview, fallback to mime icon\\n\\t&__preview--failed &__image {\\n\\t\\twidth: calc(var(--margin) * 8);\\n\\t\\t// Center mime icon\\n\\t\\tmargin: auto;\\n\\t\\tbackground-color: transparent !important;\\n\\n\\t\\tobject-fit: initial;\\n\\t}\\n\\n\\t&__title {\\n\\t\\toverflow: hidden;\\n\\t\\t// also count preview border\\n\\t\\tmax-width: calc(var(--width) + 2*2px);\\n\\t\\tpadding: var(--margin);\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".templates-picker__form[data-v-6784795c]{padding:calc(var(--margin)*2);padding-bottom:0}.templates-picker__form h2[data-v-6784795c]{text-align:center;font-weight:bold;margin:var(--margin) 0 calc(var(--margin)*2)}.templates-picker__list[data-v-6784795c]{display:grid;grid-gap:calc(var(--margin)*2);grid-auto-columns:1fr;max-width:calc(var(--fullwidth)*6);grid-template-columns:repeat(auto-fit, var(--fullwidth));grid-auto-rows:1fr;justify-content:center}.templates-picker__buttons[data-v-6784795c]{display:flex;justify-content:space-between;padding:calc(var(--margin)*2) var(--margin);position:sticky;bottom:0;background-image:linear-gradient(0, var(--gradient-main-background))}.templates-picker__buttons button[data-v-6784795c],.templates-picker__buttons input[type=submit][data-v-6784795c]{height:44px}.templates-picker[data-v-6784795c] .modal-container{position:relative}.templates-picker__loading[data-v-6784795c]{position:absolute;top:0;left:0;justify-content:center;width:100%;height:100%;margin:0;background-color:var(--color-main-background-translucent)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/TemplatePicker.vue\"],\"names\":[],\"mappings\":\"AAuPC,yCACC,6BAAA,CAEA,gBAAA,CAEA,4CACC,iBAAA,CACA,gBAAA,CACA,4CAAA,CAIF,yCACC,YAAA,CACA,8BAAA,CACA,qBAAA,CAEA,kCAAA,CACA,wDAAA,CAEA,kBAAA,CAEA,sBAAA,CAGD,4CACC,YAAA,CACA,6BAAA,CACA,2CAAA,CACA,eAAA,CACA,QAAA,CACA,oEAAA,CAEA,kHACC,WAAA,CAKF,qDACC,iBAAA,CAGD,4CACC,iBAAA,CACA,KAAA,CACA,MAAA,CACA,sBAAA,CACA,UAAA,CACA,WAAA,CACA,QAAA,CACA,yDAAA\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.templates-picker {\\n\\t&__form {\\n\\t\\tpadding: calc(var(--margin) * 2);\\n\\t\\t// Will be handled by the buttons\\n\\t\\tpadding-bottom: 0;\\n\\n\\t\\th2 {\\n\\t\\t\\ttext-align: center;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tmargin: var(--margin) 0 calc(var(--margin) * 2);\\n\\t\\t}\\n\\t}\\n\\n\\t&__list {\\n\\t\\tdisplay: grid;\\n\\t\\tgrid-gap: calc(var(--margin) * 2);\\n\\t\\tgrid-auto-columns: 1fr;\\n\\t\\t// We want maximum 5 columns. Putting 6 as we don't count the grid gap. So it will always be lower than 6\\n\\t\\tmax-width: calc(var(--fullwidth) * 6);\\n\\t\\tgrid-template-columns: repeat(auto-fit, var(--fullwidth));\\n\\t\\t// Make sure all rows are the same height\\n\\t\\tgrid-auto-rows: 1fr;\\n\\t\\t// Center the columns set\\n\\t\\tjustify-content: center;\\n\\t}\\n\\n\\t&__buttons {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: space-between;\\n\\t\\tpadding: calc(var(--margin) * 2) var(--margin);\\n\\t\\tposition: sticky;\\n\\t\\tbottom: 0;\\n\\t\\tbackground-image: linear-gradient(0, var(--gradient-main-background));\\n\\n\\t\\tbutton, input[type='submit'] {\\n\\t\\t\\theight: 44px;\\n\\t\\t}\\n\\t}\\n\\n\\t// Make sure we're relative for the loading emptycontent on top\\n\\t::v-deep .modal-container {\\n\\t\\tposition: relative;\\n\\t}\\n\\n\\t&__loading {\\n\\t\\tposition: absolute;\\n\\t\\ttop: 0;\\n\\t\\tleft: 0;\\n\\t\\tjustify-content: center;\\n\\t\\twidth: 100%;\\n\\t\\theight: 100%;\\n\\t\\tmargin: 0;\\n\\t\\tbackground-color: var(--color-main-background-translucent);\\n\\t}\\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 = 2181;","__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\t2181: 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__(58949); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","Settings","this","_settings","console","debug","view","filter","e","name","length","error","push","_h","$createElement","_self","_c","_vm","attrs","_l","setting","key","el","Setting","open","close","_name","_el","_open","_close","Vue","t","window","OCA","Files","Object","assign","addEventListener","TESTING","render","h","SettingsView","appSettingsHeader","document","getElementById","opened","currentTarget","children","classList","contains","settings","forEach","getCurrentDirectory","currentDirInfo","App","currentFileList","dirInfo","path","replace","getTemplates","axios","generateOcsUrl","response","data","ocs","createFromTemplate","filePath","templatePath","templateType","getCurrentUser","value","pathSections","startsWith","split","relativePath","section","encodeURIComponent","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","staticClass","id","domProps","checked","on","onCheck","_v","class","failedPreview","realPreviewUrl","onFailure","_s","nameWithoutExt","style","$event","preventDefault","stopPropagation","onSubmit","apply","arguments","_b","emptyTemplate","fileid","provider","template","ratio","_e","logger","getLoggerBuilder","setApp","detectUser","build","methods","n","TemplatePickerRoot","createElement","body","appendChild","templates","loadState","templatesPath","TemplatePicker","TemplatePickerView","propsData","$mount","initTemplatesPlugin","attach","menu","addMenuEntry","displayName","templateName","iconClass","fileType","actionHandler","initTemplatesFolder","removeMenuEntry","OC","Plugins","register","index","newTemplatePlugin","fileList","app","label","extension","FilesPlugin","copySystemTemplates","changeDirectory","template_path","showError","subscribe","query","setFilter","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","keys","every","splice","r","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","b","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"files-main.js?v=2e40bf6e7d09bc8e2e11","mappings":";6BAAIA,oNCsBiBC,EAAAA,WAIpB,kHAAc,qIACbC,KAAKC,UAAY,GACjBC,QAAQC,MAAM,+EAUf,SAASC,GACR,OAAIJ,KAAKC,UAAUI,QAAO,SAAAC,GAAC,OAAIA,EAAEC,OAASH,EAAKG,QAAMC,OAAS,GAC7DN,QAAQO,MAAM,uDACP,IAERT,KAAKC,UAAUS,KAAKN,IACb,yBAQR,WACC,OAAOJ,KAAKC,qFA/BOF,GCtB+J,EC0BpL,CACA,eACA,OACA,IACA,cACA,cAGA,QARA,WASA,6CCnCqL,ECgCrL,CACA,gBACA,YACA,SC5BgB,OACd,GCRW,WAAa,IAAiBY,EAATX,KAAgBY,eAAuC,OAAvDZ,KAA0Ca,MAAMC,IAAIH,GAAa,SAC7E,IDUpB,EACA,KACA,KACA,MAI8B,SDmBhC,KALA,WAMA,OACA,wCGrBA,GAXgB,OACd,GCRW,WAAa,IAAII,EAAIf,KAASW,EAAGI,EAAIH,eAAmBE,EAAGC,EAAIF,MAAMC,IAAIH,EAAG,OAAOG,EAAG,MAAM,CAACE,MAAM,CAAC,GAAK,6BAA6B,CAACD,EAAIE,GAAIF,EAAY,UAAE,SAASG,GAAS,MAAO,CAACJ,EAAG,UAAU,CAACK,IAAID,EAAQX,KAAKS,MAAM,CAAC,GAAKE,EAAQE,WAAU,KAC3O,IDUpB,EACA,KACA,WACA,MAI8B,0SEKXC,EAAAA,WAiBpB,WAAYd,EAAZ,GAAuC,IAAnBa,EAAmB,EAAnBA,GAAIE,EAAe,EAAfA,KAAMC,EAAS,EAATA,mGAAS,oGACtCvB,KAAKwB,MAAQjB,EACbP,KAAKyB,IAAML,EACXpB,KAAK0B,MAAQJ,EACbtB,KAAK2B,OAASJ,EAEY,mBAAfvB,KAAK0B,QACf1B,KAAK0B,MAAQ,cAGa,mBAAhB1B,KAAK2B,SACf3B,KAAK2B,OAAS,qDAIhB,WACC,OAAO3B,KAAKwB,sBAGb,WACC,OAAOxB,KAAKyB,sBAGb,WACC,OAAOzB,KAAK0B,yBAGb,WACC,OAAO1B,KAAK2B,kFA7CON,GCMrBO,EAAAA,QAAAA,UAAAA,EAAkBC,EAGbC,OAAOC,IAAIC,QACfF,OAAOC,IAAIC,MAAQ,IAEpBC,OAAOC,OAAOJ,OAAOC,IAAIC,MAAO,CAAEjC,SAAU,IAAIA,IAChDkC,OAAOC,OAAOJ,OAAOC,IAAIC,MAAMjC,SAAU,CAAEsB,QAAAA,IAE3CS,OAAOK,iBAAiB,oBAAoB,WAC3C,IAAIL,OAAOM,QAAX,CAKA,IAAIR,EAAAA,QAAI,CACPR,GAAI,sBACJiB,OAAQ,SAAAC,GAAC,OAAIA,EAAEC,MAGhB,IAAMC,EAAoBC,SAASC,eAAe,uBAC9CF,GACHA,EAAkBL,iBAAiB,SAAS,SAAA7B,GAC3C,IAAMqC,EAASrC,EAAEsC,cAAcC,SAAS,GAAGC,UAAUC,SAAS,UAC9DhB,IAAIC,MAAMjC,SAASiD,SAASC,SAAQ,SAAA3C,GAAC,OAAIqC,EAASrC,EAAEiB,QAAUjB,EAAEgB,2ECPtD4B,EAAsB,WAAW,YACvCC,GAAoB,QAAH,EAAApB,WAAA,mBAAKC,aAAL,mBAAYoB,WAAZ,mBAAiBC,uBAAjB,eAAkCC,UACrD,CAAEC,KAAM,IAAKhD,KAAM,IAGvB,MAAO,UAAG4C,EAAeI,KAAlB,YAA0BJ,EAAe5C,MAAOiD,QAAQ,SAAU,yYC1BnE,IAAMC,EAAY,4CAAG,mHACJC,EAAAA,QAAAA,KAAUC,EAAAA,EAAAA,gBAAe,gCADrB,cACrBC,EADqB,yBAEpBA,EAASC,KAAKC,IAAID,MAFE,2CAAH,qDAYZE,EAAkB,4CAAG,WAAeC,EAAUC,EAAcC,GAAvC,sGACVR,EAAAA,QAAAA,MAAWC,EAAAA,EAAAA,gBAAe,sCAAuC,CACvFK,SAAAA,EACAC,aAAAA,EACAC,aAAAA,IAJgC,cAC3BN,EAD2B,yBAM1BA,EAASC,KAAKC,IAAID,MANQ,2CAAH,0DCiB/B,MAEA,GACA,uBACA,gBAEA,OACA,UACA,YACA,aAEA,SACA,aACA,YAEA,QACA,qBACA,aAEA,UACA,YACA,aAEA,YACA,YACA,cAEA,YACA,aACA,YAEA,MACA,YACA,aAEA,OACA,YACA,eAIA,KAvCA,WAwCA,OACA,mBAIA,UAMA,eANA,WAOA,mGAGA,GAVA,WAWA,8CAGA,eAdA,WAgBA,yCACA,cAGA,gBACA,iBFxFSM,EAAAA,EAAAA,mBE8FT,sGAFA,6DFxFQ1B,SAASC,eAAe,iBAAmBD,SAASC,eAAe,gBAAgB0B,MEwF3F,gDCxGuB,SAASb,GAC/B,IAAMc,GAAgBd,EAAKe,WAAW,KAAOf,EAAvB,WAAkCA,IAAQgB,MAAM,KAClEC,EAAe,GAMnB,OALAH,EAAapB,SAAQ,SAACwB,GACL,KAAZA,IACHD,GAAgB,IAAME,mBAAmBD,OAGpCD,EDgGR,0DAKA,SA9BA,WA+BA,2CAIA,SACA,QADA,WAEA,iCAEA,UAJA,WAKA,yBE7I4L,qICWxLG,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,OACd,GCTW,WAAa,IAAI5D,EAAIf,KAASW,EAAGI,EAAIH,eAAmBE,EAAGC,EAAIF,MAAMC,IAAIH,EAAG,OAAOG,EAAG,KAAK,CAACmE,YAAY,yBAAyB,CAACnE,EAAG,QAAQ,CAACmE,YAAY,QAAQjE,MAAM,CAAC,GAAKD,EAAImE,GAAG,KAAO,QAAQ,KAAO,mBAAmBC,SAAS,CAAC,QAAUpE,EAAIqE,SAASC,GAAG,CAAC,OAAStE,EAAIuE,WAAWvE,EAAIwE,GAAG,KAAKzE,EAAG,QAAQ,CAACmE,YAAY,yBAAyBjE,MAAM,CAAC,IAAMD,EAAImE,KAAK,CAACpE,EAAG,MAAM,CAACmE,YAAY,2BAA2BO,MAAMzE,EAAI0E,cAAgB,mCAAqC,IAAI,CAAC3E,EAAG,MAAM,CAACmE,YAAY,yBAAyBjE,MAAM,CAAC,IAAMD,EAAI2E,eAAe,IAAM,GAAG,UAAY,SAASL,GAAG,CAAC,MAAQtE,EAAI4E,eAAe5E,EAAIwE,GAAG,KAAKzE,EAAG,OAAO,CAACmE,YAAY,0BAA0B,CAAClE,EAAIwE,GAAG,WAAWxE,EAAI6E,GAAG7E,EAAI8E,gBAAgB,kBACltB,IDWpB,EACA,KACA,WACA,MAI8B,oUEwDhC,IAIA,GACA,sBAEA,YACA,iBACA,UACA,mBAGA,OACA,QACA,YACA,cAIA,KAhBA,WAiBA,OAEA,WACA,WACA,UACA,UACA,gBAIA,UAMA,eANA,WAOA,iCACA,2CACA,WAGA,cAZA,WAYA,QACA,OACA,4BACA,UACA,iCACA,cACA,+HAIA,iBAtBA,WAsBA,WACA,iFAQA,MA/BA,WAgCA,OACA,iBACA,kBACA,iBACA,sBACA,0CAlEA,IAkEA,kCAKA,SAOA,KAPA,SAOA,8JAEA,iCACA,SACA,aAJA,SAMA,IANA,UAMA,EANA,OAQA,QADA,kEAPA,sBASA,iDATA,UAWA,aAGA,uBAdA,wBAeA,aAfA,2BAoBA,YApBA,+CA0BA,MAjCA,WAkCA,uCACA,gBACA,eACA,eACA,oBAQA,QA9CA,SA8CA,GACA,gBAGA,SAlDA,WAkDA,6KACA,aACA,MACA,EAHA,UAGA,WAHA,iBAGA,eAHA,iBAGA,aAHA,aAGA,kBAGA,4BACA,sHACA,sEARA,kBAYA,GACA,gDADA,UAEA,0BAFA,aAEA,WAFA,UAGA,0BAHA,aAGA,gBAfA,cAYA,EAZA,OAiBA,qCAjBA,UAmBA,aAnBA,EAmBA,8DAnBA,QAmBA,EAnBA,OAqBA,iCACA,2CAGA,4EACA,mBACA,0CACA,MACA,WACA,yCACA,kBAGA,UAlCA,kDAoCA,kEACA,qBACA,gEAtCA,yBAwCA,aAxCA,kFCtM2L,eCWvL,GAAU,GAEd,GAAQjB,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,IAAS,IAKJ,KAAW,YAAiB,WALlD,ICbI,IAAY,OACd,GCTW,WAAa,IAAIjE,EAAIf,KAASW,EAAGI,EAAIH,eAAmBE,EAAGC,EAAIF,MAAMC,IAAIH,EAAG,OAAQI,EAAU,OAAED,EAAG,QAAQ,CAACmE,YAAY,mBAAmBjE,MAAM,CAAC,oBAAoB,EAAE,KAAO,UAAUqE,GAAG,CAAC,MAAQtE,EAAIQ,QAAQ,CAACT,EAAG,OAAO,CAACmE,YAAY,yBAAyBa,MAAO/E,EAAS,MAAEsE,GAAG,CAAC,OAAS,SAASU,GAAyD,OAAjDA,EAAOC,iBAAiBD,EAAOE,kBAAyBlF,EAAImF,SAASC,MAAM,KAAMC,cAAc,CAACtF,EAAG,KAAK,CAACC,EAAIwE,GAAGxE,EAAI6E,GAAG7E,EAAIc,EAAE,QAAS,6BAA8B,CAAEtB,KAAMQ,EAAI8E,qBAAsB9E,EAAIwE,GAAG,KAAKzE,EAAG,KAAK,CAACmE,YAAY,0BAA0B,CAACnE,EAAG,kBAAkBC,EAAIsF,GAAG,CAACrF,MAAM,CAAC,QAAUD,EAAIqE,UAAYrE,EAAIuF,cAAcC,QAAQlB,GAAG,CAAC,MAAQtE,EAAIuE,UAAU,kBAAkBvE,EAAIuF,eAAc,IAAQvF,EAAIwE,GAAG,KAAKxE,EAAIE,GAAIF,EAAIyF,SAAkB,WAAE,SAASC,GAAU,OAAO3F,EAAG,kBAAkBC,EAAIsF,GAAG,CAAClF,IAAIsF,EAASF,OAAOvF,MAAM,CAAC,QAAUD,EAAIqE,UAAYqB,EAASF,OAAO,MAAQxF,EAAIyF,SAASE,OAAOrB,GAAG,CAAC,MAAQtE,EAAIuE,UAAU,kBAAkBmB,GAAS,QAAW,GAAG1F,EAAIwE,GAAG,KAAKzE,EAAG,MAAM,CAACmE,YAAY,6BAA6B,CAACnE,EAAG,SAAS,CAACuE,GAAG,CAAC,MAAQtE,EAAIQ,QAAQ,CAACR,EAAIwE,GAAG,aAAaxE,EAAI6E,GAAG7E,EAAIc,EAAE,QAAS,WAAW,cAAcd,EAAIwE,GAAG,KAAKzE,EAAG,QAAQ,CAACmE,YAAY,UAAUjE,MAAM,CAAC,KAAO,SAAS,aAAaD,EAAIc,EAAE,QAAS,iDAAiDsD,SAAS,CAAC,MAAQpE,EAAIc,EAAE,QAAS,iBAAiBd,EAAIwE,GAAG,KAAMxE,EAAW,QAAED,EAAG,eAAe,CAACmE,YAAY,4BAA4BjE,MAAM,CAAC,KAAO,iBAAiB,CAACD,EAAIwE,GAAG,SAASxE,EAAI6E,GAAG7E,EAAIc,EAAE,QAAS,kBAAkB,UAAUd,EAAI4F,MAAM,GAAG5F,EAAI4F,OACrgD,IDWpB,EACA,KACA,WACA,MAIF,GAAe,GAAiB,kIEgBhC,IAAMC,IAASC,EAAAA,EAAAA,MACbC,OAAO,SACPC,aACAC,QAGFpF,EAAAA,QAAAA,MAAU,CACTqF,QAAS,CACRpF,EAAAA,EAAAA,UACAqF,EAAAA,EAAAA,mBAKF,IAAMC,GAAqB1E,SAAS2E,cAAc,OAClDD,GAAmBjC,GAAK,kBACxBzC,SAAS4E,KAAKC,YAAYH,IAG1B,IAAII,IAAYC,EAAAA,EAAAA,WAAU,QAAS,YAAa,IAC5CC,IAAgBD,EAAAA,EAAAA,WAAU,QAAS,kBAAkB,GACzDZ,GAAOzG,MAAM,sBAAuBoH,IACpCX,GAAOzG,MAAM,mBAAoB,CAAEsH,cAAAA,KAGnC,IACMC,GAAiB,IADV9F,EAAAA,QAAAA,OAAW+F,IACD,CAAS,CAC/BpH,KAAM,iBACNqH,UAAW,CACVhB,OAAAA,MAGFc,GAAeG,OAAO,oBAGtB/F,OAAOK,iBAAiB,oBAAoB,WAC3C,IAAKsF,GAAe,CACnBb,GAAOzG,MAAM,oCACb,IAAM2H,EAAsB,CAC3BC,OAD2B,SACpBC,GAENA,EAAKC,aAAa,CACjB/C,GAAI,gBACJgD,aAAarG,EAAAA,EAAAA,WAAE,QAAS,2BACxBsG,cAActG,EAAAA,EAAAA,WAAE,QAAS,aACzBuG,UAAW,oBACXC,SAAU,OACVC,cANiB,SAMH/H,GACbgI,GAAoBhI,GACpByH,EAAKQ,gBAAgB,sBAKzBC,GAAGC,QAAQC,SAAS,wBAAyBb,OAK/CP,GAAUtE,SAAQ,SAACuD,EAAUoC,GAC5B,IAAMC,EAAoB,CACzBd,OADyB,SAClBC,GACN,IAAMc,EAAWd,EAAKc,SAGF,UAAhBA,EAAS5D,IAAkC,iBAAhB4D,EAAS5D,IAKxC8C,EAAKC,aAAa,CACjB/C,GAAI,gBAAF,OAAkBsB,EAASuC,IAA3B,YAAkCH,GACpCV,YAAa1B,EAASwC,MACtBb,aAAc3B,EAASwC,MAAQxC,EAASyC,UACxCb,UAAW5B,EAAS4B,WAAa,YACjCC,SAAU,OACVC,cANiB,SAMH/H,GACbmH,GAAepG,KAAKf,EAAMiG,QAK9BiC,GAAGC,QAAQC,SAAS,wBAAyBE,MAQ9C,ICnGOK,GDmGDX,GAAmB,+CAAG,WAAehI,GAAf,+FACrB0D,GAAgBf,IAAwB,IAAL,OAAS3C,IAAQiD,QAAQ,KAAM,KAD7C,SAG1BoD,GAAOzG,MAAM,uCAAwC,CAAE8D,aAAAA,IAH7B,SAIHP,EAAAA,QAAAA,MAAWC,EAAAA,EAAAA,gBAAe,oCAAqC,CACrFM,aAAAA,EACAkF,qBAAqB,IANI,OAIpBvF,EAJoB,OAU1B7B,IAAIC,MAAMoB,IAAIC,gBAAgB+F,gBAAgBnF,GAAc,GAAM,GAElEsD,GAAY3D,EAASC,KAAKC,IAAID,KAAK0D,UACnCE,GAAgB7D,EAASC,KAAKC,IAAID,KAAKwF,cAbb,kDAe1BzC,GAAOnG,MAAM,iDACb6I,EAAAA,EAAAA,KAAUzH,EAAAA,EAAAA,WAAE,QAAS,iDAhBK,0OAAH,kECnGlBqH,GAAc,CACnBnB,OADmB,SACZe,GAAU,YAChBS,EAAAA,GAAAA,WAAU,mCAAmC,YAAe,IAAZC,EAAY,EAAZA,MAC/CV,EAASW,UAAUD,OAEpBD,EAAAA,GAAAA,WAAU,kCAAkC,WAC3C,EAAKC,MAAQ,KACbV,EAASW,UAAU,SAMtB3H,OAAO2G,GAAGC,QAAQC,SAAS,qBAAsBO,8DCpC9CQ,QAA0B,GAA4B,KAE1DA,EAAwBhJ,KAAK,CAACiJ,EAAOzE,GAAI,0rCAA2rC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,6DAA6D,MAAQ,GAAG,SAAW,wYAAwY,eAAiB,CAAC,gtDAAgtD,WAAa,MAEz8G,gECJIwE,QAA0B,GAA4B,KAE1DA,EAAwBhJ,KAAK,CAACiJ,EAAOzE,GAAI,0iCAA2iC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,uDAAuD,MAAQ,GAAG,SAAW,uVAAuV,eAAiB,CAAC,22DAA22D,WAAa,MAE75G,QCNI0E,EAA2B,GAG/B,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaE,QAGrB,IAAIN,EAASC,EAAyBE,GAAY,CACjD5E,GAAI4E,EACJI,QAAQ,EACRD,QAAS,IAUV,OANAE,EAAoBL,GAAUM,KAAKT,EAAOM,QAASN,EAAQA,EAAOM,QAASJ,GAG3EF,EAAOO,QAAS,EAGTP,EAAOM,QAIfJ,EAAoBQ,EAAIF,EC5BxBN,EAAoBS,KAAO,WAC1B,MAAM,IAAIC,MAAM,mCCDjBV,EAAoBW,KAAO,G/BAvB1K,EAAW,GACf+J,EAAoBY,EAAI,SAASC,EAAQC,EAAUC,EAAIC,GACtD,IAAGF,EAAH,CAMA,IAAIG,EAAeC,EAAAA,EACnB,IAASC,EAAI,EAAGA,EAAIlL,EAASU,OAAQwK,IAAK,CACrCL,EAAW7K,EAASkL,GAAG,GACvBJ,EAAK9K,EAASkL,GAAG,GACjBH,EAAW/K,EAASkL,GAAG,GAE3B,IAJA,IAGIC,GAAY,EACPC,EAAI,EAAGA,EAAIP,EAASnK,OAAQ0K,MACpB,EAAXL,GAAsBC,GAAgBD,IAAa5I,OAAOkJ,KAAKtB,EAAoBY,GAAGW,OAAM,SAASjK,GAAO,OAAO0I,EAAoBY,EAAEtJ,GAAKwJ,EAASO,OAC3JP,EAASU,OAAOH,IAAK,IAErBD,GAAY,EACTJ,EAAWC,IAAcA,EAAeD,IAG7C,GAAGI,EAAW,CACbnL,EAASuL,OAAOL,IAAK,GACrB,IAAIM,EAAIV,SACEZ,IAANsB,IAAiBZ,EAASY,IAGhC,OAAOZ,EAzBNG,EAAWA,GAAY,EACvB,IAAI,IAAIG,EAAIlL,EAASU,OAAQwK,EAAI,GAAKlL,EAASkL,EAAI,GAAG,GAAKH,EAAUG,IAAKlL,EAASkL,GAAKlL,EAASkL,EAAI,GACrGlL,EAASkL,GAAK,CAACL,EAAUC,EAAIC,IgCJ/BhB,EAAoB3C,EAAI,SAASyC,GAChC,IAAI4B,EAAS5B,GAAUA,EAAO6B,WAC7B,WAAa,OAAO7B,EAAgB,SACpC,WAAa,OAAOA,GAErB,OADAE,EAAoB4B,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,GCLR1B,EAAoB4B,EAAI,SAASxB,EAAS0B,GACzC,IAAI,IAAIxK,KAAOwK,EACX9B,EAAoB+B,EAAED,EAAYxK,KAAS0I,EAAoB+B,EAAE3B,EAAS9I,IAC5Ec,OAAO4J,eAAe5B,EAAS9I,EAAK,CAAE2K,YAAY,EAAMC,IAAKJ,EAAWxK,MCJ3E0I,EAAoBmC,EAAI,WACvB,GAA0B,iBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAOjM,MAAQ,IAAIkM,SAAS,cAAb,GACd,MAAO5L,GACR,GAAsB,iBAAXwB,OAAqB,OAAOA,QALjB,GCAxB+H,EAAoB+B,EAAI,SAASO,EAAKC,GAAQ,OAAOnK,OAAOoK,UAAUC,eAAelC,KAAK+B,EAAKC,ICC/FvC,EAAoByB,EAAI,SAASrB,GACX,oBAAXsC,QAA0BA,OAAOC,aAC1CvK,OAAO4J,eAAe5B,EAASsC,OAAOC,YAAa,CAAEpI,MAAO,WAE7DnC,OAAO4J,eAAe5B,EAAS,aAAc,CAAE7F,OAAO,KCLvDyF,EAAoB4C,IAAM,SAAS9C,GAGlC,OAFAA,EAAO+C,MAAQ,GACV/C,EAAO9G,WAAU8G,EAAO9G,SAAW,IACjC8G,GCHRE,EAAoBqB,EAAI,gBCAxBrB,EAAoB8C,EAAIlK,SAASmK,SAAWC,KAAKC,SAASC,KAK1D,IAAIC,EAAkB,CACrB,KAAM,GAaPnD,EAAoBY,EAAES,EAAI,SAAS+B,GAAW,OAAoC,IAA7BD,EAAgBC,IAGrE,IAAIC,EAAuB,SAASC,EAA4BtJ,GAC/D,IAKIiG,EAAUmD,EALVtC,EAAW9G,EAAK,GAChBuJ,EAAcvJ,EAAK,GACnBwJ,EAAUxJ,EAAK,GAGImH,EAAI,EAC3B,GAAGL,EAAS2C,MAAK,SAASpI,GAAM,OAA+B,IAAxB8H,EAAgB9H,MAAe,CACrE,IAAI4E,KAAYsD,EACZvD,EAAoB+B,EAAEwB,EAAatD,KACrCD,EAAoBQ,EAAEP,GAAYsD,EAAYtD,IAGhD,GAAGuD,EAAS,IAAI3C,EAAS2C,EAAQxD,GAGlC,IADGsD,GAA4BA,EAA2BtJ,GACrDmH,EAAIL,EAASnK,OAAQwK,IACzBiC,EAAUtC,EAASK,GAChBnB,EAAoB+B,EAAEoB,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBC,GAAW,EAE5B,OAAOpD,EAAoBY,EAAEC,IAG1B6C,EAAqBV,KAA4B,sBAAIA,KAA4B,uBAAK,GAC1FU,EAAmBtK,QAAQiK,EAAqBM,KAAK,KAAM,IAC3DD,EAAmB7M,KAAOwM,EAAqBM,KAAK,KAAMD,EAAmB7M,KAAK8M,KAAKD,OClDvF1D,EAAoB4D,QAAKzD,ECGzB,IAAI0D,EAAsB7D,EAAoBY,OAAET,EAAW,CAAC,OAAO,WAAa,OAAOH,EAAoB,UAC3G6D,EAAsB7D,EAAoBY,EAAEiD","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/files/src/services/Settings.js","webpack:///nextcloud/apps/files/src/components/Setting.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files/src/components/Setting.vue","webpack:///nextcloud/apps/files/src/views/Settings.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files/src/views/Settings.vue","webpack://nextcloud/./apps/files/src/components/Setting.vue?98ea","webpack:///nextcloud/apps/files/src/components/Setting.vue?vue&type=template&id=47cd8aa6&","webpack://nextcloud/./apps/files/src/views/Settings.vue?b81b","webpack:///nextcloud/apps/files/src/views/Settings.vue?vue&type=template&id=31c9bb4b&scoped=true&","webpack:///nextcloud/apps/files/src/models/Setting.js","webpack:///nextcloud/apps/files/src/files-app-settings.js","webpack:///nextcloud/apps/files/src/utils/davUtils.js","webpack:///nextcloud/apps/files/src/services/Templates.js","webpack:///nextcloud/apps/files/src/components/TemplatePreview.vue","webpack:///nextcloud/apps/files/src/utils/fileUtils.js","webpack:///nextcloud/apps/files/src/components/TemplatePreview.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files/src/components/TemplatePreview.vue?ab98","webpack://nextcloud/./apps/files/src/components/TemplatePreview.vue?81db","webpack:///nextcloud/apps/files/src/components/TemplatePreview.vue?vue&type=template&id=440aea22&scoped=true&","webpack:///nextcloud/apps/files/src/views/TemplatePicker.vue","webpack:///nextcloud/apps/files/src/views/TemplatePicker.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files/src/views/TemplatePicker.vue?dc89","webpack://nextcloud/./apps/files/src/views/TemplatePicker.vue?afd8","webpack:///nextcloud/apps/files/src/views/TemplatePicker.vue?vue&type=template&id=6784795c&scoped=true&","webpack:///nextcloud/apps/files/src/templates.js","webpack:///nextcloud/apps/files/src/legacy/filelistSearch.js","webpack:///nextcloud/apps/files/src/components/TemplatePreview.vue?vue&type=style&index=0&id=440aea22&lang=scss&scoped=true&","webpack:///nextcloud/apps/files/src/views/TemplatePicker.vue?vue&type=style&index=0&id=6784795c&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/runtime/nonce","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 Copyright (c) 2019 Gary Kim <gary@garykim.dev>\n *\n * @author Gary Kim <gary@garykim.dev>\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 */\n\nexport default class Settings {\n\n\t_settings\n\n\tconstructor() {\n\t\tthis._settings = []\n\t\tconsole.debug('OCA.Files.Settings initialized')\n\t}\n\n\t/**\n\t * Register a new setting\n\t *\n\t * @since 19.0.0\n\t * @param {OCA.Files.Settings.Setting} view element to add to settings\n\t * @return {boolean} whether registering was successful\n\t */\n\tregister(view) {\n\t\tif (this._settings.filter(e => e.name === view.name).length > 0) {\n\t\t\tconsole.error('A setting with the same name is already registered')\n\t\t\treturn false\n\t\t}\n\t\tthis._settings.push(view)\n\t\treturn true\n\t}\n\n\t/**\n\t * All settings elements\n\t *\n\t * @return {OCA.Files.Settings.Setting[]} All currently registered settings\n\t */\n\tget settings() {\n\t\treturn this._settings\n\t}\n\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Setting.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!./Setting.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2020 Gary Kim <gary@garykim.dev>\n -\n - @author Gary Kim <gary@garykim.dev>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<div />\n</template>\n<script>\nexport default {\n\tname: 'Setting',\n\tprops: {\n\t\tel: {\n\t\t\ttype: Function,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.$el.appendChild(this.el())\n\t},\n}\n</script>\n<style>\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.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!./Settings.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 Gary Kim <gary@garykim.dev>\n -\n - @author Gary Kim <gary@garykim.dev>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n<template>\n\t<div id=\"files-app-extra-settings\">\n\t\t<template v-for=\"setting in settings\">\n\t\t\t<Setting :key=\"setting.name\" :el=\"setting.el\" />\n\t\t</template>\n\t</div>\n</template>\n\n<script>\nimport Setting from '../components/Setting'\n\nexport default {\n\tname: 'Settings',\n\tcomponents: {\n\t\tSetting,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tsettings: OCA.Files.Settings.settings,\n\t\t}\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\n</style>\n","import { render, staticRenderFns } from \"./Setting.vue?vue&type=template&id=47cd8aa6&\"\nimport script from \"./Setting.vue?vue&type=script&lang=js&\"\nexport * from \"./Setting.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div')}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./Settings.vue?vue&type=template&id=31c9bb4b&scoped=true&\"\nimport script from \"./Settings.vue?vue&type=script&lang=js&\"\nexport * from \"./Settings.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"31c9bb4b\",\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',{attrs:{\"id\":\"files-app-extra-settings\"}},[_vm._l((_vm.settings),function(setting){return [_c('Setting',{key:setting.name,attrs:{\"el\":setting.el}})]})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 Gary Kim <gary@garykim.dev>\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Gary Kim <gary@garykim.dev>\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 */\n\nexport default class Setting {\n\n\t_close\n\t_el\n\t_name\n\t_open\n\n\t/**\n\t * Create a new files app setting\n\t *\n\t * @since 19.0.0\n\t * @param {string} name the name of this setting\n\t * @param {object} component the component\n\t * @param {Function} component.el function that returns an unmounted dom element to be added\n\t * @param {Function} [component.open] callback for when setting is added\n\t * @param {Function} [component.close] callback for when setting is closed\n\t */\n\tconstructor(name, { el, open, close }) {\n\t\tthis._name = name\n\t\tthis._el = el\n\t\tthis._open = open\n\t\tthis._close = close\n\n\t\tif (typeof this._open !== 'function') {\n\t\t\tthis._open = () => {}\n\t\t}\n\n\t\tif (typeof this._close !== 'function') {\n\t\t\tthis._close = () => {}\n\t\t}\n\t}\n\n\tget name() {\n\t\treturn this._name\n\t}\n\n\tget el() {\n\t\treturn this._el\n\t}\n\n\tget open() {\n\t\treturn this._open\n\t}\n\n\tget close() {\n\t\treturn this._close\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 Gary Kim <gary@garykim.dev>\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Gary Kim <gary@garykim.dev>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport Vue from 'vue'\nimport Settings from './services/Settings'\nimport SettingsView from './views/Settings'\nimport Setting from './models/Setting'\n\nVue.prototype.t = t\n\n// Init Files App Settings Service\nif (!window.OCA.Files) {\n\twindow.OCA.Files = {}\n}\nObject.assign(window.OCA.Files, { Settings: new Settings() })\nObject.assign(window.OCA.Files.Settings, { Setting })\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\tif (window.TESTING) {\n\t\treturn\n\t}\n\t// Init Vue app\n\t// eslint-disable-next-line\n\tnew Vue({\n\t\tel: '#files-app-settings',\n\t\trender: h => h(SettingsView),\n\t})\n\n\tconst appSettingsHeader = document.getElementById('app-settings-header')\n\tif (appSettingsHeader) {\n\t\tappSettingsHeader.addEventListener('click', e => {\n\t\t\tconst opened = e.currentTarget.children[0].classList.contains('opened')\n\t\t\tOCA.Files.Settings.settings.forEach(e => opened ? e.close() : e.open())\n\t\t})\n\t}\n})\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport { generateRemoteUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\n\nexport const getRootPath = function() {\n\tif (getCurrentUser()) {\n\t\treturn generateRemoteUrl(`dav/files/${getCurrentUser().uid}`)\n\t} else {\n\t\treturn generateRemoteUrl('webdav').replace('/remote.php', '/public.php')\n\t}\n}\n\nexport const isPublic = function() {\n\treturn !getCurrentUser()\n}\n\nexport const getToken = function() {\n\treturn document.getElementById('sharingToken') && document.getElementById('sharingToken').value\n}\n\n/**\n * Return the current directory, fallback to root\n *\n * @return {string}\n */\nexport const getCurrentDirectory = function() {\n\tconst currentDirInfo = OCA?.Files?.App?.currentFileList?.dirInfo\n\t\t|| { path: '/', name: '' }\n\n\t// Make sure we don't have double slashes\n\treturn `${currentDirInfo.path}/${currentDirInfo.name}`.replace(/\\/\\//gi, '/')\n}\n","/**\n * @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport { generateOcsUrl } from '@nextcloud/router'\nimport axios from '@nextcloud/axios'\n\nexport const getTemplates = async function() {\n\tconst response = await axios.get(generateOcsUrl('apps/files/api/v1/templates'))\n\treturn response.data.ocs.data\n}\n\n/**\n * Create a new file from a specified template\n *\n * @param {string} filePath The new file destination path\n * @param {string} templatePath The template source path\n * @param {string} templateType The template type e.g 'user'\n */\nexport const createFromTemplate = async function(filePath, templatePath, templateType) {\n\tconst response = await axios.post(generateOcsUrl('apps/files/api/v1/templates/create'), {\n\t\tfilePath,\n\t\ttemplatePath,\n\t\ttemplateType,\n\t})\n\treturn response.data.ocs.data\n}\n","<!--\n - @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<li class=\"template-picker__item\">\n\t\t<input :id=\"id\"\n\t\t\t:checked=\"checked\"\n\t\t\ttype=\"radio\"\n\t\t\tclass=\"radio\"\n\t\t\tname=\"template-picker\"\n\t\t\t@change=\"onCheck\">\n\n\t\t<label :for=\"id\" class=\"template-picker__label\">\n\t\t\t<div class=\"template-picker__preview\"\n\t\t\t\t:class=\"failedPreview ? 'template-picker__preview--failed' : ''\">\n\t\t\t\t<img class=\"template-picker__image\"\n\t\t\t\t\t:src=\"realPreviewUrl\"\n\t\t\t\t\talt=\"\"\n\t\t\t\t\tdraggable=\"false\"\n\t\t\t\t\t@error=\"onFailure\">\n\t\t\t</div>\n\n\t\t\t<span class=\"template-picker__title\">\n\t\t\t\t{{ nameWithoutExt }}\n\t\t\t</span>\n\t\t</label>\n\t</li>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { encodeFilePath } from '../utils/fileUtils'\nimport { getToken, isPublic } from '../utils/davUtils'\n\n// preview width generation\nconst previewWidth = 256\n\nexport default {\n\tname: 'TemplatePreview',\n\tinheritAttrs: false,\n\n\tprops: {\n\t\tbasename: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tchecked: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tfileid: {\n\t\t\ttype: [String, Number],\n\t\t\trequired: true,\n\t\t},\n\t\tfilename: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tpreviewUrl: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\thasPreview: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tmime: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tratio: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tfailedPreview: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Strip away extension from name\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tnameWithoutExt() {\n\t\t\treturn this.basename.indexOf('.') > -1 ? this.basename.split('.').slice(0, -1).join('.') : this.basename\n\t\t},\n\n\t\tid() {\n\t\t\treturn `template-picker-${this.fileid}`\n\t\t},\n\n\t\trealPreviewUrl() {\n\t\t\t// If original preview failed, fallback to mime icon\n\t\t\tif (this.failedPreview && this.mimeIcon) {\n\t\t\t\treturn this.mimeIcon\n\t\t\t}\n\n\t\t\tif (this.previewUrl) {\n\t\t\t\treturn this.previewUrl\n\t\t\t}\n\t\t\t// TODO: find a nicer standard way of doing this?\n\t\t\tif (isPublic()) {\n\t\t\t\treturn generateUrl(`/apps/files_sharing/publicpreview/${getToken()}?fileId=${this.fileid}&file=${encodeFilePath(this.filename)}&x=${previewWidth}&y=${previewWidth}&a=1`)\n\t\t\t}\n\t\t\treturn generateUrl(`/core/preview?fileId=${this.fileid}&x=${previewWidth}&y=${previewWidth}&a=1`)\n\t\t},\n\n\t\tmimeIcon() {\n\t\t\treturn OC.MimeType.getIconUrl(this.mime)\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonCheck() {\n\t\t\tthis.$emit('check', this.fileid)\n\t\t},\n\t\tonFailure() {\n\t\t\tthis.failedPreview = true\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\n.template-picker {\n\t&__item {\n\t\tdisplay: flex;\n\t}\n\n\t&__label {\n\t\tdisplay: flex;\n\t\t// Align in the middle of the grid\n\t\talign-items: center;\n\t\tflex: 1 1;\n\t\tflex-direction: column;\n\n\t\t&, * {\n\t\t\tcursor: pointer;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&::before {\n\t\t\tdisplay: none !important;\n\t\t}\n\t}\n\n\t&__preview {\n\t\tdisplay: block;\n\t\toverflow: hidden;\n\t\t// Stretch so all entries are the same width\n\t\tflex: 1 1;\n\t\twidth: var(--width);\n\t\tmin-height: var(--height);\n\t\tmax-height: var(--height);\n\t\tpadding: 0;\n\t\tborder: var(--border) solid var(--color-border);\n\t\tborder-radius: var(--border-radius-large);\n\n\t\tinput:checked + label > & {\n\t\t\tborder-color: var(--color-primary);\n\t\t}\n\n\t\t&--failed {\n\t\t\t// Make sure to properly center fallback icon\n\t\t\tdisplay: flex;\n\t\t}\n\t}\n\n\t&__image {\n\t\tmax-width: 100%;\n\t\tbackground-color: var(--color-main-background);\n\n\t\tobject-fit: cover;\n\t}\n\n\t// Failed preview, fallback to mime icon\n\t&__preview--failed &__image {\n\t\twidth: calc(var(--margin) * 8);\n\t\t// Center mime icon\n\t\tmargin: auto;\n\t\tbackground-color: transparent !important;\n\n\t\tobject-fit: initial;\n\t}\n\n\t&__title {\n\t\toverflow: hidden;\n\t\t// also count preview border\n\t\tmax-width: calc(var(--width) + 2*2px);\n\t\tpadding: var(--margin);\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t}\n}\n\n</style>\n","/**\n * @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nconst encodeFilePath = function(path) {\n\tconst pathSections = (path.startsWith('/') ? path : `/${path}`).split('/')\n\tlet relativePath = ''\n\tpathSections.forEach((section) => {\n\t\tif (section !== '') {\n\t\t\trelativePath += '/' + encodeURIComponent(section)\n\t\t}\n\t})\n\treturn relativePath\n}\n\n/**\n * Extract dir and name from file path\n *\n * @param {string} path the full path\n * @return {string[]} [dirPath, fileName]\n */\nconst extractFilePaths = function(path) {\n\tconst pathSections = path.split('/')\n\tconst fileName = pathSections[pathSections.length - 1]\n\tconst dirPath = pathSections.slice(0, pathSections.length - 1).join('/')\n\treturn [dirPath, fileName]\n}\n\nexport { encodeFilePath, extractFilePaths }\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplatePreview.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!./TemplatePreview.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!./TemplatePreview.vue?vue&type=style&index=0&id=440aea22&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!./TemplatePreview.vue?vue&type=style&index=0&id=440aea22&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./TemplatePreview.vue?vue&type=template&id=440aea22&scoped=true&\"\nimport script from \"./TemplatePreview.vue?vue&type=script&lang=js&\"\nexport * from \"./TemplatePreview.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TemplatePreview.vue?vue&type=style&index=0&id=440aea22&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 \"440aea22\",\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('li',{staticClass:\"template-picker__item\"},[_c('input',{staticClass:\"radio\",attrs:{\"id\":_vm.id,\"type\":\"radio\",\"name\":\"template-picker\"},domProps:{\"checked\":_vm.checked},on:{\"change\":_vm.onCheck}}),_vm._v(\" \"),_c('label',{staticClass:\"template-picker__label\",attrs:{\"for\":_vm.id}},[_c('div',{staticClass:\"template-picker__preview\",class:_vm.failedPreview ? 'template-picker__preview--failed' : ''},[_c('img',{staticClass:\"template-picker__image\",attrs:{\"src\":_vm.realPreviewUrl,\"alt\":\"\",\"draggable\":\"false\"},on:{\"error\":_vm.onFailure}})]),_vm._v(\" \"),_c('span',{staticClass:\"template-picker__title\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.nameWithoutExt)+\"\\n\\t\\t\")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<Modal v-if=\"opened\"\n\t\t:clear-view-delay=\"-1\"\n\t\tclass=\"templates-picker\"\n\t\tsize=\"normal\"\n\t\t@close=\"close\">\n\t\t<form class=\"templates-picker__form\"\n\t\t\t:style=\"style\"\n\t\t\t@submit.prevent.stop=\"onSubmit\">\n\t\t\t<h2>{{ t('files', 'Pick a template for {name}', { name: nameWithoutExt }) }}</h2>\n\n\t\t\t<!-- Templates list -->\n\t\t\t<ul class=\"templates-picker__list\">\n\t\t\t\t<TemplatePreview v-bind=\"emptyTemplate\"\n\t\t\t\t\t:checked=\"checked === emptyTemplate.fileid\"\n\t\t\t\t\t@check=\"onCheck\" />\n\n\t\t\t\t<TemplatePreview v-for=\"template in provider.templates\"\n\t\t\t\t\t:key=\"template.fileid\"\n\t\t\t\t\tv-bind=\"template\"\n\t\t\t\t\t:checked=\"checked === template.fileid\"\n\t\t\t\t\t:ratio=\"provider.ratio\"\n\t\t\t\t\t@check=\"onCheck\" />\n\t\t\t</ul>\n\n\t\t\t<!-- Cancel and submit -->\n\t\t\t<div class=\"templates-picker__buttons\">\n\t\t\t\t<button @click=\"close\">\n\t\t\t\t\t{{ t('files', 'Cancel') }}\n\t\t\t\t</button>\n\t\t\t\t<input type=\"submit\"\n\t\t\t\t\tclass=\"primary\"\n\t\t\t\t\t:value=\"t('files', 'Create')\"\n\t\t\t\t\t:aria-label=\"t('files', 'Create a new file with the selected template')\">\n\t\t\t</div>\n\t\t</form>\n\n\t\t<EmptyContent v-if=\"loading\" class=\"templates-picker__loading\" icon=\"icon-loading\">\n\t\t\t{{ t('files', 'Creating file') }}\n\t\t</EmptyContent>\n\t</Modal>\n</template>\n\n<script>\nimport { normalize } from 'path'\nimport { showError } from '@nextcloud/dialogs'\nimport EmptyContent from '@nextcloud/vue/dist/Components/EmptyContent'\nimport Modal from '@nextcloud/vue/dist/Components/Modal'\n\nimport { getCurrentDirectory } from '../utils/davUtils'\nimport { createFromTemplate, getTemplates } from '../services/Templates'\nimport TemplatePreview from '../components/TemplatePreview'\n\nconst border = 2\nconst margin = 8\nconst width = margin * 20\n\nexport default {\n\tname: 'TemplatePicker',\n\n\tcomponents: {\n\t\tEmptyContent,\n\t\tModal,\n\t\tTemplatePreview,\n\t},\n\n\tprops: {\n\t\tlogger: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\t// Check empty template by default\n\t\t\tchecked: -1,\n\t\t\tloading: false,\n\t\t\tname: null,\n\t\t\topened: false,\n\t\t\tprovider: null,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Strip away extension from name\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tnameWithoutExt() {\n\t\t\treturn this.name.indexOf('.') > -1\n\t\t\t\t? this.name.split('.').slice(0, -1).join('.')\n\t\t\t\t: this.name\n\t\t},\n\n\t\temptyTemplate() {\n\t\t\treturn {\n\t\t\t\tbasename: t('files', 'Blank'),\n\t\t\t\tfileid: -1,\n\t\t\t\tfilename: this.t('files', 'Blank'),\n\t\t\t\thasPreview: false,\n\t\t\t\tmime: this.provider?.mimetypes[0] || this.provider?.mimetypes,\n\t\t\t}\n\t\t},\n\n\t\tselectedTemplate() {\n\t\t\treturn this.provider.templates.find(template => template.fileid === this.checked)\n\t\t},\n\n\t\t/**\n\t\t * Style css vars bin,d\n\t\t *\n\t\t * @return {object}\n\t\t */\n\t\tstyle() {\n\t\t\treturn {\n\t\t\t\t'--margin': margin + 'px',\n\t\t\t\t'--width': width + 'px',\n\t\t\t\t'--border': border + 'px',\n\t\t\t\t'--fullwidth': width + 2 * margin + 2 * border + 'px',\n\t\t\t\t'--height': this.provider.ratio ? Math.round(width / this.provider.ratio) + 'px' : null,\n\t\t\t}\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Open the picker\n\t\t *\n\t\t * @param {string} name the file name to create\n\t\t * @param {object} provider the template provider picked\n\t\t */\n\t\tasync open(name, provider) {\n\n\t\t\tthis.checked = this.emptyTemplate.fileid\n\t\t\tthis.name = name\n\t\t\tthis.provider = provider\n\n\t\t\tconst templates = await getTemplates()\n\t\t\tconst fetchedProvider = templates.find((fetchedProvider) => fetchedProvider.app === provider.app && fetchedProvider.label === provider.label)\n\t\t\tif (fetchedProvider === null) {\n\t\t\t\tthrow new Error('Failed to match provider in results')\n\t\t\t}\n\t\t\tthis.provider = fetchedProvider\n\n\t\t\t// If there is no templates available, just create an empty file\n\t\t\tif (fetchedProvider.templates.length === 0) {\n\t\t\t\tthis.onSubmit()\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Else, open the picker\n\t\t\tthis.opened = true\n\t\t},\n\n\t\t/**\n\t\t * Close the picker and reset variables\n\t\t */\n\t\tclose() {\n\t\t\tthis.checked = this.emptyTemplate.fileid\n\t\t\tthis.loading = false\n\t\t\tthis.name = null\n\t\t\tthis.opened = false\n\t\t\tthis.provider = null\n\t\t},\n\n\t\t/**\n\t\t * Manages the radio template picker change\n\t\t *\n\t\t * @param {number} fileid the selected template file id\n\t\t */\n\t\tonCheck(fileid) {\n\t\t\tthis.checked = fileid\n\t\t},\n\n\t\tasync onSubmit() {\n\t\t\tthis.loading = true\n\t\t\tconst currentDirectory = getCurrentDirectory()\n\t\t\tconst fileList = OCA?.Files?.App?.currentFileList\n\n\t\t\t// If the file doesn't have an extension, add the default one\n\t\t\tif (this.nameWithoutExt === this.name) {\n\t\t\t\tthis.logger.debug('Fixed invalid filename', { name: this.name, extension: this.provider?.extension })\n\t\t\t\tthis.name = this.name + this.provider?.extension\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst fileInfo = await createFromTemplate(\n\t\t\t\t\tnormalize(`${currentDirectory}/${this.name}`),\n\t\t\t\t\tthis.selectedTemplate?.filename,\n\t\t\t\t\tthis.selectedTemplate?.templateType,\n\t\t\t\t)\n\t\t\t\tthis.logger.debug('Created new file', fileInfo)\n\n\t\t\t\tconst data = await fileList?.addAndFetchFileInfo(this.name).then((status, data) => data)\n\n\t\t\t\tconst model = new OCA.Files.FileInfoModel(data, {\n\t\t\t\t\tfilesClient: fileList?.filesClient,\n\t\t\t\t})\n\t\t\t\t// Run default action\n\t\t\t\tconst fileAction = OCA.Files.fileActions.getDefaultFileAction(fileInfo.mime, 'file', OC.PERMISSION_ALL)\n\t\t\t\tfileAction.action(fileInfo.basename, {\n\t\t\t\t\t$file: fileList?.findFileEl(this.name),\n\t\t\t\t\tdir: currentDirectory,\n\t\t\t\t\tfileList,\n\t\t\t\t\tfileActions: fileList?.fileActions,\n\t\t\t\t\tfileInfoModel: model,\n\t\t\t\t})\n\n\t\t\t\tthis.close()\n\t\t\t} catch (error) {\n\t\t\t\tthis.logger.error('Error while creating the new file from template')\n\t\t\t\tconsole.error(error)\n\t\t\t\tshowError(this.t('files', 'Unable to create new file from template'))\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.templates-picker {\n\t&__form {\n\t\tpadding: calc(var(--margin) * 2);\n\t\t// Will be handled by the buttons\n\t\tpadding-bottom: 0;\n\n\t\th2 {\n\t\t\ttext-align: center;\n\t\t\tfont-weight: bold;\n\t\t\tmargin: var(--margin) 0 calc(var(--margin) * 2);\n\t\t}\n\t}\n\n\t&__list {\n\t\tdisplay: grid;\n\t\tgrid-gap: calc(var(--margin) * 2);\n\t\tgrid-auto-columns: 1fr;\n\t\t// We want maximum 5 columns. Putting 6 as we don't count the grid gap. So it will always be lower than 6\n\t\tmax-width: calc(var(--fullwidth) * 6);\n\t\tgrid-template-columns: repeat(auto-fit, var(--fullwidth));\n\t\t// Make sure all rows are the same height\n\t\tgrid-auto-rows: 1fr;\n\t\t// Center the columns set\n\t\tjustify-content: center;\n\t}\n\n\t&__buttons {\n\t\tdisplay: flex;\n\t\tjustify-content: space-between;\n\t\tpadding: calc(var(--margin) * 2) var(--margin);\n\t\tposition: sticky;\n\t\tbottom: 0;\n\t\tbackground-image: linear-gradient(0, var(--gradient-main-background));\n\n\t\tbutton, input[type='submit'] {\n\t\t\theight: 44px;\n\t\t}\n\t}\n\n\t// Make sure we're relative for the loading emptycontent on top\n\t::v-deep .modal-container {\n\t\tposition: relative;\n\t}\n\n\t&__loading {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tjustify-content: center;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tmargin: 0;\n\t\tbackground-color: var(--color-main-background-translucent);\n\t}\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!./TemplatePicker.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!./TemplatePicker.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!./TemplatePicker.vue?vue&type=style&index=0&id=6784795c&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!./TemplatePicker.vue?vue&type=style&index=0&id=6784795c&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./TemplatePicker.vue?vue&type=template&id=6784795c&scoped=true&\"\nimport script from \"./TemplatePicker.vue?vue&type=script&lang=js&\"\nexport * from \"./TemplatePicker.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TemplatePicker.vue?vue&type=style&index=0&id=6784795c&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 \"6784795c\",\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 (_vm.opened)?_c('Modal',{staticClass:\"templates-picker\",attrs:{\"clear-view-delay\":-1,\"size\":\"normal\"},on:{\"close\":_vm.close}},[_c('form',{staticClass:\"templates-picker__form\",style:(_vm.style),on:{\"submit\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onSubmit.apply(null, arguments)}}},[_c('h2',[_vm._v(_vm._s(_vm.t('files', 'Pick a template for {name}', { name: _vm.nameWithoutExt })))]),_vm._v(\" \"),_c('ul',{staticClass:\"templates-picker__list\"},[_c('TemplatePreview',_vm._b({attrs:{\"checked\":_vm.checked === _vm.emptyTemplate.fileid},on:{\"check\":_vm.onCheck}},'TemplatePreview',_vm.emptyTemplate,false)),_vm._v(\" \"),_vm._l((_vm.provider.templates),function(template){return _c('TemplatePreview',_vm._b({key:template.fileid,attrs:{\"checked\":_vm.checked === template.fileid,\"ratio\":_vm.provider.ratio},on:{\"check\":_vm.onCheck}},'TemplatePreview',template,false))})],2),_vm._v(\" \"),_c('div',{staticClass:\"templates-picker__buttons\"},[_c('button',{on:{\"click\":_vm.close}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Cancel'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('input',{staticClass:\"primary\",attrs:{\"type\":\"submit\",\"aria-label\":_vm.t('files', 'Create a new file with the selected template')},domProps:{\"value\":_vm.t('files', 'Create')}})])]),_vm._v(\" \"),(_vm.loading)?_c('EmptyContent',{staticClass:\"templates-picker__loading\",attrs:{\"icon\":\"icon-loading\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files', 'Creating file'))+\"\\n\\t\")]):_vm._e()],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\nimport { loadState } from '@nextcloud/initial-state'\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { getCurrentDirectory } from './utils/davUtils'\nimport axios from '@nextcloud/axios'\nimport Vue from 'vue'\n\nimport TemplatePickerView from './views/TemplatePicker'\nimport { showError } from '@nextcloud/dialogs'\n\n// Set up logger\nconst logger = getLoggerBuilder()\n\t.setApp('files')\n\t.detectUser()\n\t.build()\n\n// Add translates functions\nVue.mixin({\n\tmethods: {\n\t\tt,\n\t\tn,\n\t},\n})\n\n// Create document root\nconst TemplatePickerRoot = document.createElement('div')\nTemplatePickerRoot.id = 'template-picker'\ndocument.body.appendChild(TemplatePickerRoot)\n\n// Retrieve and init templates\nlet templates = loadState('files', 'templates', [])\nlet templatesPath = loadState('files', 'templates_path', false)\nlogger.debug('Templates providers', templates)\nlogger.debug('Templates folder', { templatesPath })\n\n// Init vue app\nconst View = Vue.extend(TemplatePickerView)\nconst TemplatePicker = new View({\n\tname: 'TemplatePicker',\n\tpropsData: {\n\t\tlogger,\n\t},\n})\nTemplatePicker.$mount('#template-picker')\n\n// Init template engine after load to make sure it's the last injected entry\nwindow.addEventListener('DOMContentLoaded', function() {\n\tif (!templatesPath) {\n\t\tlogger.debug('Templates folder not initialized')\n\t\tconst initTemplatesPlugin = {\n\t\t\tattach(menu) {\n\t\t\t\t// register the new menu entry\n\t\t\t\tmenu.addMenuEntry({\n\t\t\t\t\tid: 'template-init',\n\t\t\t\t\tdisplayName: t('files', 'Set up templates folder'),\n\t\t\t\t\ttemplateName: t('files', 'Templates'),\n\t\t\t\t\ticonClass: 'icon-template-add',\n\t\t\t\t\tfileType: 'file',\n\t\t\t\t\tactionHandler(name) {\n\t\t\t\t\t\tinitTemplatesFolder(name)\n\t\t\t\t\t\tmenu.removeMenuEntry('template-init')\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t},\n\t\t}\n\t\tOC.Plugins.register('OCA.Files.NewFileMenu', initTemplatesPlugin)\n\t}\n})\n\n// Init template files menu\ntemplates.forEach((provider, index) => {\n\tconst newTemplatePlugin = {\n\t\tattach(menu) {\n\t\t\tconst fileList = menu.fileList\n\n\t\t\t// only attach to main file list, public view is not supported yet\n\t\t\tif (fileList.id !== 'files' && fileList.id !== 'files.public') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// register the new menu entry\n\t\t\tmenu.addMenuEntry({\n\t\t\t\tid: `template-new-${provider.app}-${index}`,\n\t\t\t\tdisplayName: provider.label,\n\t\t\t\ttemplateName: provider.label + provider.extension,\n\t\t\t\ticonClass: provider.iconClass || 'icon-file',\n\t\t\t\tfileType: 'file',\n\t\t\t\tactionHandler(name) {\n\t\t\t\t\tTemplatePicker.open(name, provider)\n\t\t\t\t},\n\t\t\t})\n\t\t},\n\t}\n\tOC.Plugins.register('OCA.Files.NewFileMenu', newTemplatePlugin)\n})\n\n/**\n * Init the template directory\n *\n * @param {string} name the templates folder name\n */\nconst initTemplatesFolder = async function(name) {\n\tconst templatePath = (getCurrentDirectory() + `/${name}`).replace('//', '/')\n\ttry {\n\t\tlogger.debug('Initializing the templates directory', { templatePath })\n\t\tconst response = await axios.post(generateOcsUrl('apps/files/api/v1/templates/path'), {\n\t\t\ttemplatePath,\n\t\t\tcopySystemTemplates: true,\n\t\t})\n\n\t\t// Go to template directory\n\t\tOCA.Files.App.currentFileList.changeDirectory(templatePath, true, true)\n\n\t\ttemplates = response.data.ocs.data.templates\n\t\ttemplatesPath = response.data.ocs.data.template_path\n\t} catch (error) {\n\t\tlogger.error('Unable to initialize the templates directory')\n\t\tshowError(t('files', 'Unable to initialize the templates directory'))\n\t}\n}\n","/*\n * @copyright Copyright (c) 2021 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nimport { subscribe } from '@nextcloud/event-bus'\n\n(function() {\n\n\tconst FilesPlugin = {\n\t\tattach(fileList) {\n\t\t\tsubscribe('nextcloud:unified-search.search', ({ query }) => {\n\t\t\t\tfileList.setFilter(query)\n\t\t\t})\n\t\t\tsubscribe('nextcloud:unified-search.reset', () => {\n\t\t\t\tthis.query = null\n\t\t\t\tfileList.setFilter('')\n\t\t\t})\n\n\t\t},\n\t}\n\n\twindow.OC.Plugins.register('OCA.Files.FileList', FilesPlugin)\n\n})()\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, \".template-picker__item[data-v-440aea22]{display:flex}.template-picker__label[data-v-440aea22]{display:flex;align-items:center;flex:1 1;flex-direction:column}.template-picker__label[data-v-440aea22],.template-picker__label *[data-v-440aea22]{cursor:pointer;user-select:none}.template-picker__label[data-v-440aea22]::before{display:none !important}.template-picker__preview[data-v-440aea22]{display:block;overflow:hidden;flex:1 1;width:var(--width);min-height:var(--height);max-height:var(--height);padding:0;border:var(--border) solid var(--color-border);border-radius:var(--border-radius-large)}input:checked+label>.template-picker__preview[data-v-440aea22]{border-color:var(--color-primary)}.template-picker__preview--failed[data-v-440aea22]{display:flex}.template-picker__image[data-v-440aea22]{max-width:100%;background-color:var(--color-main-background);object-fit:cover}.template-picker__preview--failed .template-picker__image[data-v-440aea22]{width:calc(var(--margin)*8);margin:auto;background-color:rgba(0,0,0,0) !important;object-fit:initial}.template-picker__title[data-v-440aea22]{overflow:hidden;max-width:calc(var(--width) + 4px);padding:var(--margin);white-space:nowrap;text-overflow:ellipsis}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/TemplatePreview.vue\"],\"names\":[],\"mappings\":\"AAsJC,wCACC,YAAA,CAGD,yCACC,YAAA,CAEA,kBAAA,CACA,QAAA,CACA,qBAAA,CAEA,oFACC,cAAA,CACA,gBAAA,CAGD,iDACC,uBAAA,CAIF,2CACC,aAAA,CACA,eAAA,CAEA,QAAA,CACA,kBAAA,CACA,wBAAA,CACA,wBAAA,CACA,SAAA,CACA,8CAAA,CACA,wCAAA,CAEA,+DACC,iCAAA,CAGD,mDAEC,YAAA,CAIF,yCACC,cAAA,CACA,6CAAA,CAEA,gBAAA,CAID,2EACC,2BAAA,CAEA,WAAA,CACA,yCAAA,CAEA,kBAAA,CAGD,yCACC,eAAA,CAEA,kCAAA,CACA,qBAAA,CACA,kBAAA,CACA,sBAAA\",\"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.template-picker {\\n\\t&__item {\\n\\t\\tdisplay: flex;\\n\\t}\\n\\n\\t&__label {\\n\\t\\tdisplay: flex;\\n\\t\\t// Align in the middle of the grid\\n\\t\\talign-items: center;\\n\\t\\tflex: 1 1;\\n\\t\\tflex-direction: column;\\n\\n\\t\\t&, * {\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&::before {\\n\\t\\t\\tdisplay: none !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&__preview {\\n\\t\\tdisplay: block;\\n\\t\\toverflow: hidden;\\n\\t\\t// Stretch so all entries are the same width\\n\\t\\tflex: 1 1;\\n\\t\\twidth: var(--width);\\n\\t\\tmin-height: var(--height);\\n\\t\\tmax-height: var(--height);\\n\\t\\tpadding: 0;\\n\\t\\tborder: var(--border) solid var(--color-border);\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\n\\t\\tinput:checked + label > & {\\n\\t\\t\\tborder-color: var(--color-primary);\\n\\t\\t}\\n\\n\\t\\t&--failed {\\n\\t\\t\\t// Make sure to properly center fallback icon\\n\\t\\t\\tdisplay: flex;\\n\\t\\t}\\n\\t}\\n\\n\\t&__image {\\n\\t\\tmax-width: 100%;\\n\\t\\tbackground-color: var(--color-main-background);\\n\\n\\t\\tobject-fit: cover;\\n\\t}\\n\\n\\t// Failed preview, fallback to mime icon\\n\\t&__preview--failed &__image {\\n\\t\\twidth: calc(var(--margin) * 8);\\n\\t\\t// Center mime icon\\n\\t\\tmargin: auto;\\n\\t\\tbackground-color: transparent !important;\\n\\n\\t\\tobject-fit: initial;\\n\\t}\\n\\n\\t&__title {\\n\\t\\toverflow: hidden;\\n\\t\\t// also count preview border\\n\\t\\tmax-width: calc(var(--width) + 2*2px);\\n\\t\\tpadding: var(--margin);\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".templates-picker__form[data-v-6784795c]{padding:calc(var(--margin)*2);padding-bottom:0}.templates-picker__form h2[data-v-6784795c]{text-align:center;font-weight:bold;margin:var(--margin) 0 calc(var(--margin)*2)}.templates-picker__list[data-v-6784795c]{display:grid;grid-gap:calc(var(--margin)*2);grid-auto-columns:1fr;max-width:calc(var(--fullwidth)*6);grid-template-columns:repeat(auto-fit, var(--fullwidth));grid-auto-rows:1fr;justify-content:center}.templates-picker__buttons[data-v-6784795c]{display:flex;justify-content:space-between;padding:calc(var(--margin)*2) var(--margin);position:sticky;bottom:0;background-image:linear-gradient(0, var(--gradient-main-background))}.templates-picker__buttons button[data-v-6784795c],.templates-picker__buttons input[type=submit][data-v-6784795c]{height:44px}.templates-picker[data-v-6784795c] .modal-container{position:relative}.templates-picker__loading[data-v-6784795c]{position:absolute;top:0;left:0;justify-content:center;width:100%;height:100%;margin:0;background-color:var(--color-main-background-translucent)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/TemplatePicker.vue\"],\"names\":[],\"mappings\":\"AAuPC,yCACC,6BAAA,CAEA,gBAAA,CAEA,4CACC,iBAAA,CACA,gBAAA,CACA,4CAAA,CAIF,yCACC,YAAA,CACA,8BAAA,CACA,qBAAA,CAEA,kCAAA,CACA,wDAAA,CAEA,kBAAA,CAEA,sBAAA,CAGD,4CACC,YAAA,CACA,6BAAA,CACA,2CAAA,CACA,eAAA,CACA,QAAA,CACA,oEAAA,CAEA,kHACC,WAAA,CAKF,qDACC,iBAAA,CAGD,4CACC,iBAAA,CACA,KAAA,CACA,MAAA,CACA,sBAAA,CACA,UAAA,CACA,WAAA,CACA,QAAA,CACA,yDAAA\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.templates-picker {\\n\\t&__form {\\n\\t\\tpadding: calc(var(--margin) * 2);\\n\\t\\t// Will be handled by the buttons\\n\\t\\tpadding-bottom: 0;\\n\\n\\t\\th2 {\\n\\t\\t\\ttext-align: center;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tmargin: var(--margin) 0 calc(var(--margin) * 2);\\n\\t\\t}\\n\\t}\\n\\n\\t&__list {\\n\\t\\tdisplay: grid;\\n\\t\\tgrid-gap: calc(var(--margin) * 2);\\n\\t\\tgrid-auto-columns: 1fr;\\n\\t\\t// We want maximum 5 columns. Putting 6 as we don't count the grid gap. So it will always be lower than 6\\n\\t\\tmax-width: calc(var(--fullwidth) * 6);\\n\\t\\tgrid-template-columns: repeat(auto-fit, var(--fullwidth));\\n\\t\\t// Make sure all rows are the same height\\n\\t\\tgrid-auto-rows: 1fr;\\n\\t\\t// Center the columns set\\n\\t\\tjustify-content: center;\\n\\t}\\n\\n\\t&__buttons {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: space-between;\\n\\t\\tpadding: calc(var(--margin) * 2) var(--margin);\\n\\t\\tposition: sticky;\\n\\t\\tbottom: 0;\\n\\t\\tbackground-image: linear-gradient(0, var(--gradient-main-background));\\n\\n\\t\\tbutton, input[type='submit'] {\\n\\t\\t\\theight: 44px;\\n\\t\\t}\\n\\t}\\n\\n\\t// Make sure we're relative for the loading emptycontent on top\\n\\t::v-deep .modal-container {\\n\\t\\tposition: relative;\\n\\t}\\n\\n\\t&__loading {\\n\\t\\tposition: absolute;\\n\\t\\ttop: 0;\\n\\t\\tleft: 0;\\n\\t\\tjustify-content: center;\\n\\t\\twidth: 100%;\\n\\t\\theight: 100%;\\n\\t\\tmargin: 0;\\n\\t\\tbackground-color: var(--color-main-background-translucent);\\n\\t}\\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 = 2181;","__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\t2181: 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));","__webpack_require__.nc = undefined;","// 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__(58949); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","Settings","this","_settings","console","debug","view","filter","e","name","length","error","push","_h","$createElement","_self","_c","_vm","attrs","_l","setting","key","el","Setting","open","close","_name","_el","_open","_close","Vue","t","window","OCA","Files","Object","assign","addEventListener","TESTING","render","h","SettingsView","appSettingsHeader","document","getElementById","opened","currentTarget","children","classList","contains","settings","forEach","getCurrentDirectory","currentDirInfo","App","currentFileList","dirInfo","path","replace","getTemplates","axios","generateOcsUrl","response","data","ocs","createFromTemplate","filePath","templatePath","templateType","getCurrentUser","value","pathSections","startsWith","split","relativePath","section","encodeURIComponent","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","staticClass","id","domProps","checked","on","onCheck","_v","class","failedPreview","realPreviewUrl","onFailure","_s","nameWithoutExt","style","$event","preventDefault","stopPropagation","onSubmit","apply","arguments","_b","emptyTemplate","fileid","provider","template","ratio","_e","logger","getLoggerBuilder","setApp","detectUser","build","methods","n","TemplatePickerRoot","createElement","body","appendChild","templates","loadState","templatesPath","TemplatePicker","TemplatePickerView","propsData","$mount","initTemplatesPlugin","attach","menu","addMenuEntry","displayName","templateName","iconClass","fileType","actionHandler","initTemplatesFolder","removeMenuEntry","OC","Plugins","register","index","newTemplatePlugin","fileList","app","label","extension","FilesPlugin","copySystemTemplates","changeDirectory","template_path","showError","subscribe","query","setFilter","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","keys","every","splice","r","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","b","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/files-personal-settings.js b/dist/files-personal-settings.js
index 13852445e2e..c3365d90c35 100644
--- a/dist/files-personal-settings.js
+++ b/dist/files-personal-settings.js
@@ -1,3 +1,3 @@
/*! For license information please see files-personal-settings.js.LICENSE.txt */
-!function(){"use strict";var n,e={36091:function(n,e,r){var s,i=r(20144),o=r(22200),a=r(4820),l=r(20296),u=r.n(l),c=r(79753),f=r(26932),d=r(7811),p=r.n(d),h=r(1412),g=r.n(h),v=r(17499),m=null===(s=(0,o.getCurrentUser)())?(0,v.IY)().setApp("files").build():(0,v.IY)().setApp("files").setUid(s.uid).build();function b(n,e,t,r,s,i,o){try{var a=n[i](o),l=a.value}catch(n){return void t(n)}a.done?e(l):Promise.resolve(l).then(r,s)}var w=(0,f.fn)(t("files","Choose a file or folder to transfer")).setMultiSelect(!1).setModal(!0).setType(1).allowDirectories().build(),A={name:"TransferOwnershipDialogue",components:{Multiselect:p(),Button:g()},data:function(){return{directory:void 0,directoryPickerError:void 0,submitError:void 0,loadingUsers:!1,selectedUser:null,userSuggestions:{},config:{minSearchStringLength:parseInt(OC.config["sharing.minSearchStringLength"],10)||0}}},computed:{canSubmit:function(){return!!this.directory&&!!this.selectedUser},formatedUserSuggestions:function(){var n=this;return Object.keys(this.userSuggestions).map((function(e){var t=n.userSuggestions[e];return{user:t.uid,displayName:t.displayName,icon:"icon-user"}}))},submitButtonText:function(){if(!this.canSubmit)return t("files","Transfer");var n=this.readableDirectory.split("/");return t("files","Transfer {path} to {userid}",{path:n[n.length-1],userid:this.selectedUser.displayName})},readableDirectory:function(){return this.directory?this.directory.substring(1):""}},created:function(){this.findUserDebounced=u()(this.findUser,300),this.findUser("")},methods:{start:function(){var n=this;this.directoryPickerError=void 0,w.pick().then((function(n){return""===n?"/":n})).then((function(e){if(m.debug("path ".concat(e," selected for transferring ownership")),!e.startsWith("/"))throw new Error(t("files","Invalid path selected"));n.directory=e})).catch((function(e){m.error("Selecting object for transfer aborted: ".concat(e.message||"Unknown error"),{error:e}),n.directoryPickerError=e.message||t("files","Unknown error")}))},findUser:function(n){var e,t=this;return(e=regeneratorRuntime.mark((function e(){var r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.query=n.trim(),!(n.length<t.config.minSearchStringLength)){e.next=3;break}return e.abrupt("return");case 3:return t.loadingUsers=!0,e.prev=4,e.next=7,a.default.get((0,c.generateOcsUrl)("apps/files_sharing/api/v1/sharees"),{params:{format:"json",itemType:"file",search:n,perPage:20,lookup:!1}});case 7:r=e.sent,t.userSuggestions={},r.data.ocs.data.exact.users.concat(r.data.ocs.data.users).forEach((function(n){i.default.set(t.userSuggestions,n.value.shareWith,{uid:n.value.shareWith,displayName:n.label})})),e.next=15;break;case 12:e.prev=12,e.t0=e.catch(4),m.error("could not fetch users",{error:e.t0});case 15:return e.prev=15,t.loadingUsers=!1,e.finish(15);case 18:case"end":return e.stop()}}),e,null,[[4,12,15,18]])})),function(){var n=this,t=arguments;return new Promise((function(r,s){var i=e.apply(n,t);function o(n){b(i,r,s,o,a,"next",n)}function a(n){b(i,r,s,o,a,"throw",n)}o(void 0)}))})()},submit:function(){var n=this;this.canSubmit||m.warn("ignoring form submit"),this.submitError=void 0;var e={path:this.directory,recipient:this.selectedUser.user};m.debug("submit transfer ownership form",e);var r=(0,c.generateOcsUrl)("apps/files/api/v1/transferownership");a.default.post(r,e).then((function(n){return n.data})).then((function(e){m.info("Transfer ownership request sent",{data:e}),n.directory=void 0,n.selectedUser=null,(0,f.s$)(t("files","Ownership transfer request sent"))})).catch((function(e){var r;m.error("Could not send ownership transfer request",{error:e}),403===(null==e||null===(r=e.response)||void 0===r?void 0:r.status)?n.submitError=t("files","Cannot transfer ownership of a file or folder you don't own"):n.submitError=e.message||t("files","Unknown error")}))}}},y=A,C=r(93379),x=r.n(C),_=r(7795),U=r.n(_),S=r(90569),k=r.n(S),O=r(3565),E=r.n(O),T=r(19216),D=r.n(T),P=r(44589),j=r.n(P),B=r(10811),I={};I.styleTagTransform=j(),I.setAttributes=E(),I.insert=k().bind(null,"head"),I.domAPI=U(),I.insertStyleElement=D(),x()(B.Z,I),B.Z&&B.Z.locals&&B.Z.locals;var M=r(51900),N=(0,M.Z)(y,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("div",[t("h3",[n._v(n._s(n.t("files","Transfer ownership of a file or folder"))+" ")]),n._v(" "),t("form",{on:{submit:function(e){return e.preventDefault(),n.submit.apply(null,arguments)}}},[t("p",{staticClass:"transfer-select-row"},[t("span",[n._v(n._s(n.readableDirectory))]),n._v(" "),void 0===n.directory?t("Button",{on:{click:function(e){return e.preventDefault(),n.start.apply(null,arguments)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files","Choose file or folder to transfer"))+"\n\t\t\t")]):t("Button",{on:{click:function(e){return e.preventDefault(),n.start.apply(null,arguments)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files","Change"))+"\n\t\t\t")]),n._v(" "),t("span",{staticClass:"error"},[n._v(n._s(n.directoryPickerError))])],1),n._v(" "),t("p",{staticClass:"new-owner-row"},[t("label",{attrs:{for:"targetUser"}},[t("span",[n._v(n._s(n.t("files","New owner")))])]),n._v(" "),t("Multiselect",{staticClass:"middle-align",attrs:{id:"targetUser",options:n.formatedUserSuggestions,multiple:!1,searchable:!0,placeholder:n.t("files","Search users"),"preselect-first":!0,"preserve-search":!0,loading:n.loadingUsers,"track-by":"user",label:"displayName","internal-search":!1,"clear-on-select":!1,"user-select":!0},on:{"search-change":n.findUserDebounced},model:{value:n.selectedUser,callback:function(e){n.selectedUser=e},expression:"selectedUser"}})],1),n._v(" "),t("p",[t("input",{staticClass:"primary",attrs:{type:"submit",disabled:!n.canSubmit},domProps:{value:n.submitButtonText}}),n._v(" "),t("span",{staticClass:"error"},[n._v(n._s(n.submitError))])])])])}),[],!1,null,"391e65b4",null),Z={name:"PersonalSettings",components:{TransferOwnershipDialogue:N.exports}},q=(0,M.Z)(Z,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("div",{staticClass:"section",attrs:{id:"files-personal-settings"}},[t("h2",[n._v(n._s(n.t("files","Files")))]),n._v(" "),t("TransferOwnershipDialogue")],1)}),[],!1,null,null,null).exports;r.nc=btoa((0,o.getRequestToken)()),i.default.prototype.t=t,window.TESTING||(new(i.default.extend(q))).$mount("#files-personal-settings")},10811:function(n,e,t){var r=t(87537),s=t.n(r),i=t(23645),o=t.n(i)()(s());o.push([n.id,".middle-align[data-v-391e65b4]{vertical-align:middle}p[data-v-391e65b4]{margin-top:12px;margin-bottom:12px}.new-owner-row[data-v-391e65b4]{display:flex}.new-owner-row label[data-v-391e65b4]{display:flex;align-items:center}.new-owner-row label span[data-v-391e65b4]{margin-right:8px}.new-owner-row .multiselect[data-v-391e65b4]{flex-grow:1;max-width:280px}.transfer-select-row span[data-v-391e65b4]{margin-right:8px}","",{version:3,sources:["webpack://./apps/files/src/components/TransferOwnershipDialogue.vue"],names:[],mappings:"AAkOA,+BACC,qBAAA,CAED,mBACC,eAAA,CACA,kBAAA,CAED,gCACC,YAAA,CAEA,sCACC,YAAA,CACA,kBAAA,CAEA,2CACC,gBAAA,CAIF,6CACC,WAAA,CACA,eAAA,CAID,2CACC,gBAAA",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.middle-align {\n\tvertical-align: middle;\n}\np {\n\tmargin-top: 12px;\n\tmargin-bottom: 12px;\n}\n.new-owner-row {\n\tdisplay: flex;\n\n\tlabel {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\n\t\tspan {\n\t\t\tmargin-right: 8px;\n\t\t}\n\t}\n\n\t.multiselect {\n\t\tflex-grow: 1;\n\t\tmax-width: 280px;\n\t}\n}\n.transfer-select-row {\n\tspan {\n\t\tmargin-right: 8px;\n\t}\n}\n"],sourceRoot:""}]),e.Z=o}},r={};function s(n){var t=r[n];if(void 0!==t)return t.exports;var i=r[n]={id:n,loaded:!1,exports:{}};return e[n].call(i.exports,i,i.exports,s),i.loaded=!0,i.exports}s.m=e,s.amdD=function(){throw new Error("define cannot be used indirect")},s.amdO={},n=[],s.O=function(e,t,r,i){if(!t){var o=1/0;for(c=0;c<n.length;c++){t=n[c][0],r=n[c][1],i=n[c][2];for(var a=!0,l=0;l<t.length;l++)(!1&i||o>=i)&&Object.keys(s.O).every((function(n){return s.O[n](t[l])}))?t.splice(l--,1):(a=!1,i<o&&(o=i));if(a){n.splice(c--,1);var u=r();void 0!==u&&(e=u)}}return e}i=i||0;for(var c=n.length;c>0&&n[c-1][2]>i;c--)n[c]=n[c-1];n[c]=[t,r,i]},s.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return s.d(e,{a:e}),e},s.d=function(n,e){for(var t in e)s.o(e,t)&&!s.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:e[t]})},s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),s.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},s.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},s.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n},s.j=1623,function(){s.b=document.baseURI||self.location.href;var n={1623:0};s.O.j=function(e){return 0===n[e]};var e=function(e,t){var r,i,o=t[0],a=t[1],l=t[2],u=0;if(o.some((function(e){return 0!==n[e]}))){for(r in a)s.o(a,r)&&(s.m[r]=a[r]);if(l)var c=l(s)}for(e&&e(t);u<o.length;u++)i=o[u],s.o(n,i)&&n[i]&&n[i][0](),n[i]=0;return s.O(c)},t=self.webpackChunknextcloud=self.webpackChunknextcloud||[];t.forEach(e.bind(null,0)),t.push=e.bind(null,t.push.bind(t))}();var i=s.O(void 0,[7874],(function(){return s(36091)}));i=s.O(i)}();
-//# sourceMappingURL=files-personal-settings.js.map?v=67b7592f9620e9e5051f \ No newline at end of file
+!function(){"use strict";var n,e={36091:function(n,e,r){var s,i=r(20144),o=r(22200),a=r(4820),l=r(20296),u=r.n(l),c=r(79753),f=r(26932),d=r(7811),p=r.n(d),h=r(1412),g=r.n(h),v=r(17499),m=null===(s=(0,o.getCurrentUser)())?(0,v.IY)().setApp("files").build():(0,v.IY)().setApp("files").setUid(s.uid).build();function b(n,e,t,r,s,i,o){try{var a=n[i](o),l=a.value}catch(n){return void t(n)}a.done?e(l):Promise.resolve(l).then(r,s)}var w=(0,f.fn)(t("files","Choose a file or folder to transfer")).setMultiSelect(!1).setModal(!0).setType(1).allowDirectories().build(),A={name:"TransferOwnershipDialogue",components:{Multiselect:p(),Button:g()},data:function(){return{directory:void 0,directoryPickerError:void 0,submitError:void 0,loadingUsers:!1,selectedUser:null,userSuggestions:{},config:{minSearchStringLength:parseInt(OC.config["sharing.minSearchStringLength"],10)||0}}},computed:{canSubmit:function(){return!!this.directory&&!!this.selectedUser},formatedUserSuggestions:function(){var n=this;return Object.keys(this.userSuggestions).map((function(e){var t=n.userSuggestions[e];return{user:t.uid,displayName:t.displayName,icon:"icon-user"}}))},submitButtonText:function(){if(!this.canSubmit)return t("files","Transfer");var n=this.readableDirectory.split("/");return t("files","Transfer {path} to {userid}",{path:n[n.length-1],userid:this.selectedUser.displayName})},readableDirectory:function(){return this.directory?this.directory.substring(1):""}},created:function(){this.findUserDebounced=u()(this.findUser,300),this.findUser("")},methods:{start:function(){var n=this;this.directoryPickerError=void 0,w.pick().then((function(n){return""===n?"/":n})).then((function(e){if(m.debug("path ".concat(e," selected for transferring ownership")),!e.startsWith("/"))throw new Error(t("files","Invalid path selected"));n.directory=e})).catch((function(e){m.error("Selecting object for transfer aborted: ".concat(e.message||"Unknown error"),{error:e}),n.directoryPickerError=e.message||t("files","Unknown error")}))},findUser:function(n){var e,t=this;return(e=regeneratorRuntime.mark((function e(){var r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.query=n.trim(),!(n.length<t.config.minSearchStringLength)){e.next=3;break}return e.abrupt("return");case 3:return t.loadingUsers=!0,e.prev=4,e.next=7,a.default.get((0,c.generateOcsUrl)("apps/files_sharing/api/v1/sharees"),{params:{format:"json",itemType:"file",search:n,perPage:20,lookup:!1}});case 7:r=e.sent,t.userSuggestions={},r.data.ocs.data.exact.users.concat(r.data.ocs.data.users).forEach((function(n){i.default.set(t.userSuggestions,n.value.shareWith,{uid:n.value.shareWith,displayName:n.label})})),e.next=15;break;case 12:e.prev=12,e.t0=e.catch(4),m.error("could not fetch users",{error:e.t0});case 15:return e.prev=15,t.loadingUsers=!1,e.finish(15);case 18:case"end":return e.stop()}}),e,null,[[4,12,15,18]])})),function(){var n=this,t=arguments;return new Promise((function(r,s){var i=e.apply(n,t);function o(n){b(i,r,s,o,a,"next",n)}function a(n){b(i,r,s,o,a,"throw",n)}o(void 0)}))})()},submit:function(){var n=this;this.canSubmit||m.warn("ignoring form submit"),this.submitError=void 0;var e={path:this.directory,recipient:this.selectedUser.user};m.debug("submit transfer ownership form",e);var r=(0,c.generateOcsUrl)("apps/files/api/v1/transferownership");a.default.post(r,e).then((function(n){return n.data})).then((function(e){m.info("Transfer ownership request sent",{data:e}),n.directory=void 0,n.selectedUser=null,(0,f.s$)(t("files","Ownership transfer request sent"))})).catch((function(e){var r;m.error("Could not send ownership transfer request",{error:e}),403===(null==e||null===(r=e.response)||void 0===r?void 0:r.status)?n.submitError=t("files","Cannot transfer ownership of a file or folder you don't own"):n.submitError=e.message||t("files","Unknown error")}))}}},y=A,C=r(93379),x=r.n(C),_=r(7795),U=r.n(_),S=r(90569),k=r.n(S),O=r(3565),E=r.n(O),T=r(19216),D=r.n(T),P=r(44589),j=r.n(P),B=r(10811),I={};I.styleTagTransform=j(),I.setAttributes=E(),I.insert=k().bind(null,"head"),I.domAPI=U(),I.insertStyleElement=D(),x()(B.Z,I),B.Z&&B.Z.locals&&B.Z.locals;var M=r(51900),N=(0,M.Z)(y,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("div",[t("h3",[n._v(n._s(n.t("files","Transfer ownership of a file or folder"))+" ")]),n._v(" "),t("form",{on:{submit:function(e){return e.preventDefault(),n.submit.apply(null,arguments)}}},[t("p",{staticClass:"transfer-select-row"},[t("span",[n._v(n._s(n.readableDirectory))]),n._v(" "),void 0===n.directory?t("Button",{on:{click:function(e){return e.preventDefault(),n.start.apply(null,arguments)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files","Choose file or folder to transfer"))+"\n\t\t\t")]):t("Button",{on:{click:function(e){return e.preventDefault(),n.start.apply(null,arguments)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files","Change"))+"\n\t\t\t")]),n._v(" "),t("span",{staticClass:"error"},[n._v(n._s(n.directoryPickerError))])],1),n._v(" "),t("p",{staticClass:"new-owner-row"},[t("label",{attrs:{for:"targetUser"}},[t("span",[n._v(n._s(n.t("files","New owner")))])]),n._v(" "),t("Multiselect",{staticClass:"middle-align",attrs:{id:"targetUser",options:n.formatedUserSuggestions,multiple:!1,searchable:!0,placeholder:n.t("files","Search users"),"preselect-first":!0,"preserve-search":!0,loading:n.loadingUsers,"track-by":"user",label:"displayName","internal-search":!1,"clear-on-select":!1,"user-select":!0},on:{"search-change":n.findUserDebounced},model:{value:n.selectedUser,callback:function(e){n.selectedUser=e},expression:"selectedUser"}})],1),n._v(" "),t("p",[t("input",{staticClass:"primary",attrs:{type:"submit",disabled:!n.canSubmit},domProps:{value:n.submitButtonText}}),n._v(" "),t("span",{staticClass:"error"},[n._v(n._s(n.submitError))])])])])}),[],!1,null,"391e65b4",null),Z={name:"PersonalSettings",components:{TransferOwnershipDialogue:N.exports}},q=(0,M.Z)(Z,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("div",{staticClass:"section",attrs:{id:"files-personal-settings"}},[t("h2",[n._v(n._s(n.t("files","Files")))]),n._v(" "),t("TransferOwnershipDialogue")],1)}),[],!1,null,null,null).exports;r.nc=btoa((0,o.getRequestToken)()),i.default.prototype.t=t,window.TESTING||(new(i.default.extend(q))).$mount("#files-personal-settings")},10811:function(n,e,t){var r=t(87537),s=t.n(r),i=t(23645),o=t.n(i)()(s());o.push([n.id,".middle-align[data-v-391e65b4]{vertical-align:middle}p[data-v-391e65b4]{margin-top:12px;margin-bottom:12px}.new-owner-row[data-v-391e65b4]{display:flex}.new-owner-row label[data-v-391e65b4]{display:flex;align-items:center}.new-owner-row label span[data-v-391e65b4]{margin-right:8px}.new-owner-row .multiselect[data-v-391e65b4]{flex-grow:1;max-width:280px}.transfer-select-row span[data-v-391e65b4]{margin-right:8px}","",{version:3,sources:["webpack://./apps/files/src/components/TransferOwnershipDialogue.vue"],names:[],mappings:"AAkOA,+BACC,qBAAA,CAED,mBACC,eAAA,CACA,kBAAA,CAED,gCACC,YAAA,CAEA,sCACC,YAAA,CACA,kBAAA,CAEA,2CACC,gBAAA,CAIF,6CACC,WAAA,CACA,eAAA,CAID,2CACC,gBAAA",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.middle-align {\n\tvertical-align: middle;\n}\np {\n\tmargin-top: 12px;\n\tmargin-bottom: 12px;\n}\n.new-owner-row {\n\tdisplay: flex;\n\n\tlabel {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\n\t\tspan {\n\t\t\tmargin-right: 8px;\n\t\t}\n\t}\n\n\t.multiselect {\n\t\tflex-grow: 1;\n\t\tmax-width: 280px;\n\t}\n}\n.transfer-select-row {\n\tspan {\n\t\tmargin-right: 8px;\n\t}\n}\n"],sourceRoot:""}]),e.Z=o}},r={};function s(n){var t=r[n];if(void 0!==t)return t.exports;var i=r[n]={id:n,loaded:!1,exports:{}};return e[n].call(i.exports,i,i.exports,s),i.loaded=!0,i.exports}s.m=e,s.amdD=function(){throw new Error("define cannot be used indirect")},s.amdO={},n=[],s.O=function(e,t,r,i){if(!t){var o=1/0;for(c=0;c<n.length;c++){t=n[c][0],r=n[c][1],i=n[c][2];for(var a=!0,l=0;l<t.length;l++)(!1&i||o>=i)&&Object.keys(s.O).every((function(n){return s.O[n](t[l])}))?t.splice(l--,1):(a=!1,i<o&&(o=i));if(a){n.splice(c--,1);var u=r();void 0!==u&&(e=u)}}return e}i=i||0;for(var c=n.length;c>0&&n[c-1][2]>i;c--)n[c]=n[c-1];n[c]=[t,r,i]},s.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return s.d(e,{a:e}),e},s.d=function(n,e){for(var t in e)s.o(e,t)&&!s.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:e[t]})},s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),s.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},s.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},s.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n},s.j=1623,function(){s.b=document.baseURI||self.location.href;var n={1623:0};s.O.j=function(e){return 0===n[e]};var e=function(e,t){var r,i,o=t[0],a=t[1],l=t[2],u=0;if(o.some((function(e){return 0!==n[e]}))){for(r in a)s.o(a,r)&&(s.m[r]=a[r]);if(l)var c=l(s)}for(e&&e(t);u<o.length;u++)i=o[u],s.o(n,i)&&n[i]&&n[i][0](),n[i]=0;return s.O(c)},t=self.webpackChunknextcloud=self.webpackChunknextcloud||[];t.forEach(e.bind(null,0)),t.push=e.bind(null,t.push.bind(t))}(),s.nc=void 0;var i=s.O(void 0,[7874],(function(){return s(36091)}));i=s.O(i)}();
+//# sourceMappingURL=files-personal-settings.js.map?v=df6aa8fc806f30efe219 \ No newline at end of file
diff --git a/dist/files-personal-settings.js.map b/dist/files-personal-settings.js.map
index 193a2656280..5587e182ba8 100644
--- a/dist/files-personal-settings.js.map
+++ b/dist/files-personal-settings.js.map
@@ -1 +1 @@
-{"version":3,"file":"files-personal-settings.js?v=67b7592f9620e9e5051f","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/files/src/logger.js","webpack:///nextcloud/apps/files/src/components/TransferOwnershipDialogue.vue","webpack:///nextcloud/apps/files/src/components/TransferOwnershipDialogue.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files/src/components/TransferOwnershipDialogue.vue?32f2","webpack://nextcloud/./apps/files/src/components/TransferOwnershipDialogue.vue?2a1f","webpack:///nextcloud/apps/files/src/components/TransferOwnershipDialogue.vue?vue&type=template&id=391e65b4&scoped=true&","webpack:///nextcloud/apps/files/src/components/PersonalSettings.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files/src/components/PersonalSettings.vue","webpack://nextcloud/./apps/files/src/components/PersonalSettings.vue?7d7e","webpack:///nextcloud/apps/files/src/components/PersonalSettings.vue?vue&type=template&id=cd18d6bc&","webpack:///nextcloud/apps/files/src/main-personal-settings.js","webpack:///nextcloud/apps/files/src/components/TransferOwnershipDialogue.vue?vue&type=style&index=0&id=391e65b4&scoped=true&lang=scss&","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 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nconst getLogger = user => {\n\tif (user === null) {\n\t\treturn getLoggerBuilder()\n\t\t\t.setApp('files')\n\t\t\t.build()\n\t}\n\treturn getLoggerBuilder()\n\t\t.setApp('files')\n\t\t.setUid(user.uid)\n\t\t.build()\n}\n\nexport default getLogger(getCurrentUser())\n","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\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\n<template>\n\t<div>\n\t\t<h3>{{ t('files', 'Transfer ownership of a file or folder') }} </h3>\n\t\t<form @submit.prevent=\"submit\">\n\t\t\t<p class=\"transfer-select-row\">\n\t\t\t\t<span>{{ readableDirectory }}</span>\n\t\t\t\t<Button v-if=\"directory === undefined\" @click.prevent=\"start\">\n\t\t\t\t\t{{ t('files', 'Choose file or folder to transfer') }}\n\t\t\t\t</Button>\n\t\t\t\t<Button v-else @click.prevent=\"start\">\n\t\t\t\t\t{{ t('files', 'Change') }}\n\t\t\t\t</Button>\n\t\t\t\t<span class=\"error\">{{ directoryPickerError }}</span>\n\t\t\t</p>\n\t\t\t<p class=\"new-owner-row\">\n\t\t\t\t<label for=\"targetUser\">\n\t\t\t\t\t<span>{{ t('files', 'New owner') }}</span>\n\t\t\t\t</label>\n\t\t\t\t<Multiselect id=\"targetUser\"\n\t\t\t\t\tv-model=\"selectedUser\"\n\t\t\t\t\t:options=\"formatedUserSuggestions\"\n\t\t\t\t\t:multiple=\"false\"\n\t\t\t\t\t:searchable=\"true\"\n\t\t\t\t\t:placeholder=\"t('files', 'Search users')\"\n\t\t\t\t\t:preselect-first=\"true\"\n\t\t\t\t\t:preserve-search=\"true\"\n\t\t\t\t\t:loading=\"loadingUsers\"\n\t\t\t\t\ttrack-by=\"user\"\n\t\t\t\t\tlabel=\"displayName\"\n\t\t\t\t\t:internal-search=\"false\"\n\t\t\t\t\t:clear-on-select=\"false\"\n\t\t\t\t\t:user-select=\"true\"\n\t\t\t\t\tclass=\"middle-align\"\n\t\t\t\t\t@search-change=\"findUserDebounced\" />\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<input type=\"submit\"\n\t\t\t\t\tclass=\"primary\"\n\t\t\t\t\t:value=\"submitButtonText\"\n\t\t\t\t\t:disabled=\"!canSubmit\">\n\t\t\t\t<span class=\"error\">{{ submitError }}</span>\n\t\t\t</p>\n\t\t</form>\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport debounce from 'debounce'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { getFilePickerBuilder, showSuccess } from '@nextcloud/dialogs'\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\nimport Vue from 'vue'\nimport Button from '@nextcloud/vue/dist/Components/Button'\n\nimport logger from '../logger'\n\nconst picker = getFilePickerBuilder(t('files', 'Choose a file or folder to transfer'))\n\t.setMultiSelect(false)\n\t.setModal(true)\n\t.setType(1)\n\t.allowDirectories()\n\t.build()\n\nexport default {\n\tname: 'TransferOwnershipDialogue',\n\tcomponents: {\n\t\tMultiselect,\n\t\tButton,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tdirectory: undefined,\n\t\t\tdirectoryPickerError: undefined,\n\t\t\tsubmitError: undefined,\n\t\t\tloadingUsers: false,\n\t\t\tselectedUser: null,\n\t\t\tuserSuggestions: {},\n\t\t\tconfig: {\n\t\t\t\tminSearchStringLength: parseInt(OC.config['sharing.minSearchStringLength'], 10) || 0,\n\t\t\t},\n\t\t}\n\t},\n\tcomputed: {\n\t\tcanSubmit() {\n\t\t\treturn !!this.directory && !!this.selectedUser\n\t\t},\n\t\tformatedUserSuggestions() {\n\t\t\treturn Object.keys(this.userSuggestions).map((uid) => {\n\t\t\t\tconst user = this.userSuggestions[uid]\n\t\t\t\treturn {\n\t\t\t\t\tuser: user.uid,\n\t\t\t\t\tdisplayName: user.displayName,\n\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t\tsubmitButtonText() {\n\t\t\tif (!this.canSubmit) {\n\t\t\t\treturn t('files', 'Transfer')\n\t\t\t}\n\t\t\tconst components = this.readableDirectory.split('/')\n\t\t\treturn t('files', 'Transfer {path} to {userid}', { path: components[components.length - 1], userid: this.selectedUser.displayName })\n\t\t},\n\t\treadableDirectory() {\n\t\t\tif (!this.directory) {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\treturn this.directory.substring(1)\n\t\t},\n\t},\n\tcreated() {\n\t\tthis.findUserDebounced = debounce(this.findUser, 300)\n\t\tthis.findUser('')\n\t},\n\tmethods: {\n\t\tstart() {\n\t\t\tthis.directoryPickerError = undefined\n\n\t\t\tpicker.pick()\n\t\t\t\t.then(dir => dir === '' ? '/' : dir)\n\t\t\t\t.then(dir => {\n\t\t\t\t\tlogger.debug(`path ${dir} selected for transferring ownership`)\n\t\t\t\t\tif (!dir.startsWith('/')) {\n\t\t\t\t\t\tthrow new Error(t('files', 'Invalid path selected'))\n\t\t\t\t\t}\n\t\t\t\t\t// /ocs/v2.php/apps/files/api/v1/transferownership\n\t\t\t\t\t// /ocs/v2.php/apps/files/api/v1/transferownership\n\t\t\t\t\tthis.directory = dir\n\t\t\t\t}).catch(error => {\n\t\t\t\t\tlogger.error(`Selecting object for transfer aborted: ${error.message || 'Unknown error'}`, { error })\n\n\t\t\t\t\tthis.directoryPickerError = error.message || t('files', 'Unknown error')\n\t\t\t\t})\n\t\t},\n\t\tasync findUser(query) {\n\t\t\tthis.query = query.trim()\n\n\t\t\tif (query.length < this.config.minSearchStringLength) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.loadingUsers = true\n\t\t\ttry {\n\t\t\t\tconst response = await axios.get(generateOcsUrl('apps/files_sharing/api/v1/sharees'), {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat: 'json',\n\t\t\t\t\t\titemType: 'file',\n\t\t\t\t\t\tsearch: query,\n\t\t\t\t\t\tperPage: 20,\n\t\t\t\t\t\tlookup: false,\n\t\t\t\t\t},\n\t\t\t\t})\n\n\t\t\t\tthis.userSuggestions = {}\n\t\t\t\tresponse.data.ocs.data.exact.users.concat(response.data.ocs.data.users).forEach(user => {\n\t\t\t\t\tVue.set(this.userSuggestions, user.value.shareWith, {\n\t\t\t\t\t\tuid: user.value.shareWith,\n\t\t\t\t\t\tdisplayName: user.label,\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error('could not fetch users', { error })\n\t\t\t} finally {\n\t\t\t\tthis.loadingUsers = false\n\t\t\t}\n\t\t},\n\t\tsubmit() {\n\t\t\tif (!this.canSubmit) {\n\t\t\t\tlogger.warn('ignoring form submit')\n\t\t\t}\n\n\t\t\tthis.submitError = undefined\n\t\t\tconst data = {\n\t\t\t\tpath: this.directory,\n\t\t\t\trecipient: this.selectedUser.user,\n\t\t\t}\n\t\t\tlogger.debug('submit transfer ownership form', data)\n\n\t\t\tconst url = generateOcsUrl('apps/files/api/v1/transferownership')\n\n\t\t\taxios.post(url, data)\n\t\t\t\t.then(resp => resp.data)\n\t\t\t\t.then(data => {\n\t\t\t\t\tlogger.info('Transfer ownership request sent', { data })\n\n\t\t\t\t\tthis.directory = undefined\n\t\t\t\t\tthis.selectedUser = null\n\t\t\t\t\tshowSuccess(t('files', 'Ownership transfer request sent'))\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tlogger.error('Could not send ownership transfer request', { error })\n\n\t\t\t\t\tif (error?.response?.status === 403) {\n\t\t\t\t\t\tthis.submitError = t('files', 'Cannot transfer ownership of a file or folder you don\\'t own')\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.submitError = error.message || t('files', 'Unknown error')\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.middle-align {\n\tvertical-align: middle;\n}\np {\n\tmargin-top: 12px;\n\tmargin-bottom: 12px;\n}\n.new-owner-row {\n\tdisplay: flex;\n\n\tlabel {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\n\t\tspan {\n\t\t\tmargin-right: 8px;\n\t\t}\n\t}\n\n\t.multiselect {\n\t\tflex-grow: 1;\n\t\tmax-width: 280px;\n\t}\n}\n.transfer-select-row {\n\tspan {\n\t\tmargin-right: 8px;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransferOwnershipDialogue.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!./TransferOwnershipDialogue.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!./TransferOwnershipDialogue.vue?vue&type=style&index=0&id=391e65b4&scoped=true&lang=scss&\";\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!./TransferOwnershipDialogue.vue?vue&type=style&index=0&id=391e65b4&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./TransferOwnershipDialogue.vue?vue&type=template&id=391e65b4&scoped=true&\"\nimport script from \"./TransferOwnershipDialogue.vue?vue&type=script&lang=js&\"\nexport * from \"./TransferOwnershipDialogue.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TransferOwnershipDialogue.vue?vue&type=style&index=0&id=391e65b4&scoped=true&lang=scss&\"\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 \"391e65b4\",\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',[_c('h3',[_vm._v(_vm._s(_vm.t('files', 'Transfer ownership of a file or folder'))+\" \")]),_vm._v(\" \"),_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('p',{staticClass:\"transfer-select-row\"},[_c('span',[_vm._v(_vm._s(_vm.readableDirectory))]),_vm._v(\" \"),(_vm.directory === undefined)?_c('Button',{on:{\"click\":function($event){$event.preventDefault();return _vm.start.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Choose file or folder to transfer'))+\"\\n\\t\\t\\t\")]):_c('Button',{on:{\"click\":function($event){$event.preventDefault();return _vm.start.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Change'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('span',{staticClass:\"error\"},[_vm._v(_vm._s(_vm.directoryPickerError))])],1),_vm._v(\" \"),_c('p',{staticClass:\"new-owner-row\"},[_c('label',{attrs:{\"for\":\"targetUser\"}},[_c('span',[_vm._v(_vm._s(_vm.t('files', 'New owner')))])]),_vm._v(\" \"),_c('Multiselect',{staticClass:\"middle-align\",attrs:{\"id\":\"targetUser\",\"options\":_vm.formatedUserSuggestions,\"multiple\":false,\"searchable\":true,\"placeholder\":_vm.t('files', 'Search users'),\"preselect-first\":true,\"preserve-search\":true,\"loading\":_vm.loadingUsers,\"track-by\":\"user\",\"label\":\"displayName\",\"internal-search\":false,\"clear-on-select\":false,\"user-select\":true},on:{\"search-change\":_vm.findUserDebounced},model:{value:(_vm.selectedUser),callback:function ($$v) {_vm.selectedUser=$$v},expression:\"selectedUser\"}})],1),_vm._v(\" \"),_c('p',[_c('input',{staticClass:\"primary\",attrs:{\"type\":\"submit\",\"disabled\":!_vm.canSubmit},domProps:{\"value\":_vm.submitButtonText}}),_vm._v(\" \"),_c('span',{staticClass:\"error\"},[_vm._v(_vm._s(_vm.submitError))])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PersonalSettings.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!./PersonalSettings.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\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\n<template>\n\t<div id=\"files-personal-settings\" class=\"section\">\n\t\t<h2>{{ t('files', 'Files') }}</h2>\n\t\t<TransferOwnershipDialogue />\n\t</div>\n</template>\n\n<script>\nimport TransferOwnershipDialogue from './TransferOwnershipDialogue'\n\nexport default {\n\tname: 'PersonalSettings',\n\tcomponents: {\n\t\tTransferOwnershipDialogue,\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./PersonalSettings.vue?vue&type=template&id=cd18d6bc&\"\nimport script from \"./PersonalSettings.vue?vue&type=script&lang=js&\"\nexport * from \"./PersonalSettings.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"section\",attrs:{\"id\":\"files-personal-settings\"}},[_c('h2',[_vm._v(_vm._s(_vm.t('files', 'Files')))]),_vm._v(\" \"),_c('TransferOwnershipDialogue')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport Vue from 'vue'\nimport { getRequestToken } from '@nextcloud/auth'\n\nimport PersonalSettings from './components/PersonalSettings'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nVue.prototype.t = t\n\nif (!window.TESTING) {\n\tconst View = Vue.extend(PersonalSettings)\n\tnew View().$mount('#files-personal-settings')\n}\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, \".middle-align[data-v-391e65b4]{vertical-align:middle}p[data-v-391e65b4]{margin-top:12px;margin-bottom:12px}.new-owner-row[data-v-391e65b4]{display:flex}.new-owner-row label[data-v-391e65b4]{display:flex;align-items:center}.new-owner-row label span[data-v-391e65b4]{margin-right:8px}.new-owner-row .multiselect[data-v-391e65b4]{flex-grow:1;max-width:280px}.transfer-select-row span[data-v-391e65b4]{margin-right:8px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/TransferOwnershipDialogue.vue\"],\"names\":[],\"mappings\":\"AAkOA,+BACC,qBAAA,CAED,mBACC,eAAA,CACA,kBAAA,CAED,gCACC,YAAA,CAEA,sCACC,YAAA,CACA,kBAAA,CAEA,2CACC,gBAAA,CAIF,6CACC,WAAA,CACA,eAAA,CAID,2CACC,gBAAA\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.middle-align {\\n\\tvertical-align: middle;\\n}\\np {\\n\\tmargin-top: 12px;\\n\\tmargin-bottom: 12px;\\n}\\n.new-owner-row {\\n\\tdisplay: flex;\\n\\n\\tlabel {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\n\\t\\tspan {\\n\\t\\t\\tmargin-right: 8px;\\n\\t\\t}\\n\\t}\\n\\n\\t.multiselect {\\n\\t\\tflex-grow: 1;\\n\\t\\tmax-width: 280px;\\n\\t}\\n}\\n.transfer-select-row {\\n\\tspan {\\n\\t\\tmargin-right: 8px;\\n\\t}\\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 = 1623;","__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\t1623: 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__(36091); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","user","getCurrentUser","getLoggerBuilder","setApp","build","setUid","uid","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","component","_vm","this","_h","$createElement","_c","_self","_v","_s","t","on","$event","preventDefault","submit","apply","arguments","staticClass","readableDirectory","undefined","directory","start","directoryPickerError","attrs","formatedUserSuggestions","loadingUsers","findUserDebounced","model","value","callback","$$v","selectedUser","expression","canSubmit","domProps","submitButtonText","submitError","__webpack_nonce__","btoa","getRequestToken","Vue","window","TESTING","PersonalSettings","$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","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"files-personal-settings.js?v=df6aa8fc806f30efe219","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/files/src/logger.js","webpack:///nextcloud/apps/files/src/components/TransferOwnershipDialogue.vue","webpack:///nextcloud/apps/files/src/components/TransferOwnershipDialogue.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files/src/components/TransferOwnershipDialogue.vue?32f2","webpack://nextcloud/./apps/files/src/components/TransferOwnershipDialogue.vue?2a1f","webpack:///nextcloud/apps/files/src/components/TransferOwnershipDialogue.vue?vue&type=template&id=391e65b4&scoped=true&","webpack:///nextcloud/apps/files/src/components/PersonalSettings.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files/src/components/PersonalSettings.vue","webpack://nextcloud/./apps/files/src/components/PersonalSettings.vue?7d7e","webpack:///nextcloud/apps/files/src/components/PersonalSettings.vue?vue&type=template&id=cd18d6bc&","webpack:///nextcloud/apps/files/src/main-personal-settings.js","webpack:///nextcloud/apps/files/src/components/TransferOwnershipDialogue.vue?vue&type=style&index=0&id=391e65b4&scoped=true&lang=scss&","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/runtime/nonce","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 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nconst getLogger = user => {\n\tif (user === null) {\n\t\treturn getLoggerBuilder()\n\t\t\t.setApp('files')\n\t\t\t.build()\n\t}\n\treturn getLoggerBuilder()\n\t\t.setApp('files')\n\t\t.setUid(user.uid)\n\t\t.build()\n}\n\nexport default getLogger(getCurrentUser())\n","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\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\n<template>\n\t<div>\n\t\t<h3>{{ t('files', 'Transfer ownership of a file or folder') }} </h3>\n\t\t<form @submit.prevent=\"submit\">\n\t\t\t<p class=\"transfer-select-row\">\n\t\t\t\t<span>{{ readableDirectory }}</span>\n\t\t\t\t<Button v-if=\"directory === undefined\" @click.prevent=\"start\">\n\t\t\t\t\t{{ t('files', 'Choose file or folder to transfer') }}\n\t\t\t\t</Button>\n\t\t\t\t<Button v-else @click.prevent=\"start\">\n\t\t\t\t\t{{ t('files', 'Change') }}\n\t\t\t\t</Button>\n\t\t\t\t<span class=\"error\">{{ directoryPickerError }}</span>\n\t\t\t</p>\n\t\t\t<p class=\"new-owner-row\">\n\t\t\t\t<label for=\"targetUser\">\n\t\t\t\t\t<span>{{ t('files', 'New owner') }}</span>\n\t\t\t\t</label>\n\t\t\t\t<Multiselect id=\"targetUser\"\n\t\t\t\t\tv-model=\"selectedUser\"\n\t\t\t\t\t:options=\"formatedUserSuggestions\"\n\t\t\t\t\t:multiple=\"false\"\n\t\t\t\t\t:searchable=\"true\"\n\t\t\t\t\t:placeholder=\"t('files', 'Search users')\"\n\t\t\t\t\t:preselect-first=\"true\"\n\t\t\t\t\t:preserve-search=\"true\"\n\t\t\t\t\t:loading=\"loadingUsers\"\n\t\t\t\t\ttrack-by=\"user\"\n\t\t\t\t\tlabel=\"displayName\"\n\t\t\t\t\t:internal-search=\"false\"\n\t\t\t\t\t:clear-on-select=\"false\"\n\t\t\t\t\t:user-select=\"true\"\n\t\t\t\t\tclass=\"middle-align\"\n\t\t\t\t\t@search-change=\"findUserDebounced\" />\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<input type=\"submit\"\n\t\t\t\t\tclass=\"primary\"\n\t\t\t\t\t:value=\"submitButtonText\"\n\t\t\t\t\t:disabled=\"!canSubmit\">\n\t\t\t\t<span class=\"error\">{{ submitError }}</span>\n\t\t\t</p>\n\t\t</form>\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport debounce from 'debounce'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { getFilePickerBuilder, showSuccess } from '@nextcloud/dialogs'\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\nimport Vue from 'vue'\nimport Button from '@nextcloud/vue/dist/Components/Button'\n\nimport logger from '../logger'\n\nconst picker = getFilePickerBuilder(t('files', 'Choose a file or folder to transfer'))\n\t.setMultiSelect(false)\n\t.setModal(true)\n\t.setType(1)\n\t.allowDirectories()\n\t.build()\n\nexport default {\n\tname: 'TransferOwnershipDialogue',\n\tcomponents: {\n\t\tMultiselect,\n\t\tButton,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tdirectory: undefined,\n\t\t\tdirectoryPickerError: undefined,\n\t\t\tsubmitError: undefined,\n\t\t\tloadingUsers: false,\n\t\t\tselectedUser: null,\n\t\t\tuserSuggestions: {},\n\t\t\tconfig: {\n\t\t\t\tminSearchStringLength: parseInt(OC.config['sharing.minSearchStringLength'], 10) || 0,\n\t\t\t},\n\t\t}\n\t},\n\tcomputed: {\n\t\tcanSubmit() {\n\t\t\treturn !!this.directory && !!this.selectedUser\n\t\t},\n\t\tformatedUserSuggestions() {\n\t\t\treturn Object.keys(this.userSuggestions).map((uid) => {\n\t\t\t\tconst user = this.userSuggestions[uid]\n\t\t\t\treturn {\n\t\t\t\t\tuser: user.uid,\n\t\t\t\t\tdisplayName: user.displayName,\n\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t\tsubmitButtonText() {\n\t\t\tif (!this.canSubmit) {\n\t\t\t\treturn t('files', 'Transfer')\n\t\t\t}\n\t\t\tconst components = this.readableDirectory.split('/')\n\t\t\treturn t('files', 'Transfer {path} to {userid}', { path: components[components.length - 1], userid: this.selectedUser.displayName })\n\t\t},\n\t\treadableDirectory() {\n\t\t\tif (!this.directory) {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\treturn this.directory.substring(1)\n\t\t},\n\t},\n\tcreated() {\n\t\tthis.findUserDebounced = debounce(this.findUser, 300)\n\t\tthis.findUser('')\n\t},\n\tmethods: {\n\t\tstart() {\n\t\t\tthis.directoryPickerError = undefined\n\n\t\t\tpicker.pick()\n\t\t\t\t.then(dir => dir === '' ? '/' : dir)\n\t\t\t\t.then(dir => {\n\t\t\t\t\tlogger.debug(`path ${dir} selected for transferring ownership`)\n\t\t\t\t\tif (!dir.startsWith('/')) {\n\t\t\t\t\t\tthrow new Error(t('files', 'Invalid path selected'))\n\t\t\t\t\t}\n\t\t\t\t\t// /ocs/v2.php/apps/files/api/v1/transferownership\n\t\t\t\t\t// /ocs/v2.php/apps/files/api/v1/transferownership\n\t\t\t\t\tthis.directory = dir\n\t\t\t\t}).catch(error => {\n\t\t\t\t\tlogger.error(`Selecting object for transfer aborted: ${error.message || 'Unknown error'}`, { error })\n\n\t\t\t\t\tthis.directoryPickerError = error.message || t('files', 'Unknown error')\n\t\t\t\t})\n\t\t},\n\t\tasync findUser(query) {\n\t\t\tthis.query = query.trim()\n\n\t\t\tif (query.length < this.config.minSearchStringLength) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.loadingUsers = true\n\t\t\ttry {\n\t\t\t\tconst response = await axios.get(generateOcsUrl('apps/files_sharing/api/v1/sharees'), {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat: 'json',\n\t\t\t\t\t\titemType: 'file',\n\t\t\t\t\t\tsearch: query,\n\t\t\t\t\t\tperPage: 20,\n\t\t\t\t\t\tlookup: false,\n\t\t\t\t\t},\n\t\t\t\t})\n\n\t\t\t\tthis.userSuggestions = {}\n\t\t\t\tresponse.data.ocs.data.exact.users.concat(response.data.ocs.data.users).forEach(user => {\n\t\t\t\t\tVue.set(this.userSuggestions, user.value.shareWith, {\n\t\t\t\t\t\tuid: user.value.shareWith,\n\t\t\t\t\t\tdisplayName: user.label,\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error('could not fetch users', { error })\n\t\t\t} finally {\n\t\t\t\tthis.loadingUsers = false\n\t\t\t}\n\t\t},\n\t\tsubmit() {\n\t\t\tif (!this.canSubmit) {\n\t\t\t\tlogger.warn('ignoring form submit')\n\t\t\t}\n\n\t\t\tthis.submitError = undefined\n\t\t\tconst data = {\n\t\t\t\tpath: this.directory,\n\t\t\t\trecipient: this.selectedUser.user,\n\t\t\t}\n\t\t\tlogger.debug('submit transfer ownership form', data)\n\n\t\t\tconst url = generateOcsUrl('apps/files/api/v1/transferownership')\n\n\t\t\taxios.post(url, data)\n\t\t\t\t.then(resp => resp.data)\n\t\t\t\t.then(data => {\n\t\t\t\t\tlogger.info('Transfer ownership request sent', { data })\n\n\t\t\t\t\tthis.directory = undefined\n\t\t\t\t\tthis.selectedUser = null\n\t\t\t\t\tshowSuccess(t('files', 'Ownership transfer request sent'))\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tlogger.error('Could not send ownership transfer request', { error })\n\n\t\t\t\t\tif (error?.response?.status === 403) {\n\t\t\t\t\t\tthis.submitError = t('files', 'Cannot transfer ownership of a file or folder you don\\'t own')\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.submitError = error.message || t('files', 'Unknown error')\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.middle-align {\n\tvertical-align: middle;\n}\np {\n\tmargin-top: 12px;\n\tmargin-bottom: 12px;\n}\n.new-owner-row {\n\tdisplay: flex;\n\n\tlabel {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\n\t\tspan {\n\t\t\tmargin-right: 8px;\n\t\t}\n\t}\n\n\t.multiselect {\n\t\tflex-grow: 1;\n\t\tmax-width: 280px;\n\t}\n}\n.transfer-select-row {\n\tspan {\n\t\tmargin-right: 8px;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransferOwnershipDialogue.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!./TransferOwnershipDialogue.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!./TransferOwnershipDialogue.vue?vue&type=style&index=0&id=391e65b4&scoped=true&lang=scss&\";\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!./TransferOwnershipDialogue.vue?vue&type=style&index=0&id=391e65b4&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./TransferOwnershipDialogue.vue?vue&type=template&id=391e65b4&scoped=true&\"\nimport script from \"./TransferOwnershipDialogue.vue?vue&type=script&lang=js&\"\nexport * from \"./TransferOwnershipDialogue.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TransferOwnershipDialogue.vue?vue&type=style&index=0&id=391e65b4&scoped=true&lang=scss&\"\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 \"391e65b4\",\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',[_c('h3',[_vm._v(_vm._s(_vm.t('files', 'Transfer ownership of a file or folder'))+\" \")]),_vm._v(\" \"),_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('p',{staticClass:\"transfer-select-row\"},[_c('span',[_vm._v(_vm._s(_vm.readableDirectory))]),_vm._v(\" \"),(_vm.directory === undefined)?_c('Button',{on:{\"click\":function($event){$event.preventDefault();return _vm.start.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Choose file or folder to transfer'))+\"\\n\\t\\t\\t\")]):_c('Button',{on:{\"click\":function($event){$event.preventDefault();return _vm.start.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Change'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('span',{staticClass:\"error\"},[_vm._v(_vm._s(_vm.directoryPickerError))])],1),_vm._v(\" \"),_c('p',{staticClass:\"new-owner-row\"},[_c('label',{attrs:{\"for\":\"targetUser\"}},[_c('span',[_vm._v(_vm._s(_vm.t('files', 'New owner')))])]),_vm._v(\" \"),_c('Multiselect',{staticClass:\"middle-align\",attrs:{\"id\":\"targetUser\",\"options\":_vm.formatedUserSuggestions,\"multiple\":false,\"searchable\":true,\"placeholder\":_vm.t('files', 'Search users'),\"preselect-first\":true,\"preserve-search\":true,\"loading\":_vm.loadingUsers,\"track-by\":\"user\",\"label\":\"displayName\",\"internal-search\":false,\"clear-on-select\":false,\"user-select\":true},on:{\"search-change\":_vm.findUserDebounced},model:{value:(_vm.selectedUser),callback:function ($$v) {_vm.selectedUser=$$v},expression:\"selectedUser\"}})],1),_vm._v(\" \"),_c('p',[_c('input',{staticClass:\"primary\",attrs:{\"type\":\"submit\",\"disabled\":!_vm.canSubmit},domProps:{\"value\":_vm.submitButtonText}}),_vm._v(\" \"),_c('span',{staticClass:\"error\"},[_vm._v(_vm._s(_vm.submitError))])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PersonalSettings.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!./PersonalSettings.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\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\n<template>\n\t<div id=\"files-personal-settings\" class=\"section\">\n\t\t<h2>{{ t('files', 'Files') }}</h2>\n\t\t<TransferOwnershipDialogue />\n\t</div>\n</template>\n\n<script>\nimport TransferOwnershipDialogue from './TransferOwnershipDialogue'\n\nexport default {\n\tname: 'PersonalSettings',\n\tcomponents: {\n\t\tTransferOwnershipDialogue,\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./PersonalSettings.vue?vue&type=template&id=cd18d6bc&\"\nimport script from \"./PersonalSettings.vue?vue&type=script&lang=js&\"\nexport * from \"./PersonalSettings.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"section\",attrs:{\"id\":\"files-personal-settings\"}},[_c('h2',[_vm._v(_vm._s(_vm.t('files', 'Files')))]),_vm._v(\" \"),_c('TransferOwnershipDialogue')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport Vue from 'vue'\nimport { getRequestToken } from '@nextcloud/auth'\n\nimport PersonalSettings from './components/PersonalSettings'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nVue.prototype.t = t\n\nif (!window.TESTING) {\n\tconst View = Vue.extend(PersonalSettings)\n\tnew View().$mount('#files-personal-settings')\n}\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, \".middle-align[data-v-391e65b4]{vertical-align:middle}p[data-v-391e65b4]{margin-top:12px;margin-bottom:12px}.new-owner-row[data-v-391e65b4]{display:flex}.new-owner-row label[data-v-391e65b4]{display:flex;align-items:center}.new-owner-row label span[data-v-391e65b4]{margin-right:8px}.new-owner-row .multiselect[data-v-391e65b4]{flex-grow:1;max-width:280px}.transfer-select-row span[data-v-391e65b4]{margin-right:8px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/TransferOwnershipDialogue.vue\"],\"names\":[],\"mappings\":\"AAkOA,+BACC,qBAAA,CAED,mBACC,eAAA,CACA,kBAAA,CAED,gCACC,YAAA,CAEA,sCACC,YAAA,CACA,kBAAA,CAEA,2CACC,gBAAA,CAIF,6CACC,WAAA,CACA,eAAA,CAID,2CACC,gBAAA\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.middle-align {\\n\\tvertical-align: middle;\\n}\\np {\\n\\tmargin-top: 12px;\\n\\tmargin-bottom: 12px;\\n}\\n.new-owner-row {\\n\\tdisplay: flex;\\n\\n\\tlabel {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\n\\t\\tspan {\\n\\t\\t\\tmargin-right: 8px;\\n\\t\\t}\\n\\t}\\n\\n\\t.multiselect {\\n\\t\\tflex-grow: 1;\\n\\t\\tmax-width: 280px;\\n\\t}\\n}\\n.transfer-select-row {\\n\\tspan {\\n\\t\\tmargin-right: 8px;\\n\\t}\\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 = 1623;","__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\t1623: 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));","__webpack_require__.nc = undefined;","// 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__(36091); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","user","getCurrentUser","getLoggerBuilder","setApp","build","setUid","uid","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","component","_vm","this","_h","$createElement","_c","_self","_v","_s","t","on","$event","preventDefault","submit","apply","arguments","staticClass","readableDirectory","undefined","directory","start","directoryPickerError","attrs","formatedUserSuggestions","loadingUsers","findUserDebounced","model","value","callback","$$v","selectedUser","expression","canSubmit","domProps","submitButtonText","submitError","__webpack_nonce__","btoa","getRequestToken","Vue","window","TESTING","PersonalSettings","$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","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/files-sidebar.js b/dist/files-sidebar.js
index f7c23f052ce..3c51ab180a3 100644
--- a/dist/files-sidebar.js
+++ b/dist/files-sidebar.js
@@ -1,3 +1,3 @@
/*! For license information please see files-sidebar.js.LICENSE.txt */
-!function(){var n,e={93365:function(n,e,t){var i={"./af":36026,"./af.js":36026,"./ar":28093,"./ar-dz":41943,"./ar-dz.js":41943,"./ar-kw":23969,"./ar-kw.js":23969,"./ar-ly":40594,"./ar-ly.js":40594,"./ar-ma":18369,"./ar-ma.js":18369,"./ar-sa":32579,"./ar-sa.js":32579,"./ar-tn":76442,"./ar-tn.js":76442,"./ar.js":28093,"./az":86425,"./az.js":86425,"./be":22004,"./be.js":22004,"./bg":42982,"./bg.js":42982,"./bm":21067,"./bm.js":21067,"./bn":8366,"./bn-bd":63837,"./bn-bd.js":63837,"./bn.js":8366,"./bo":95040,"./bo.js":95040,"./br":521,"./br.js":521,"./bs":83242,"./bs.js":83242,"./ca":73046,"./ca.js":73046,"./cs":25794,"./cs.js":25794,"./cv":28231,"./cv.js":28231,"./cy":10927,"./cy.js":10927,"./da":42832,"./da.js":42832,"./de":29415,"./de-at":3331,"./de-at.js":3331,"./de-ch":45524,"./de-ch.js":45524,"./de.js":29415,"./dv":44700,"./dv.js":44700,"./el":88752,"./el.js":88752,"./en-au":90444,"./en-au.js":90444,"./en-ca":65959,"./en-ca.js":65959,"./en-gb":62762,"./en-gb.js":62762,"./en-ie":40909,"./en-ie.js":40909,"./en-il":79909,"./en-il.js":79909,"./en-in":87942,"./en-in.js":87942,"./en-nz":75200,"./en-nz.js":75200,"./en-sg":21415,"./en-sg.js":21415,"./eo":27447,"./eo.js":27447,"./es":86756,"./es-do":47049,"./es-do.js":47049,"./es-mx":15915,"./es-mx.js":15915,"./es-us":57133,"./es-us.js":57133,"./es.js":86756,"./et":72182,"./et.js":72182,"./eu":14419,"./eu.js":14419,"./fa":2916,"./fa.js":2916,"./fi":49964,"./fi.js":49964,"./fil":16448,"./fil.js":16448,"./fo":26094,"./fo.js":26094,"./fr":35833,"./fr-ca":56994,"./fr-ca.js":56994,"./fr-ch":2740,"./fr-ch.js":2740,"./fr.js":35833,"./fy":69542,"./fy.js":69542,"./ga":93264,"./ga.js":93264,"./gd":77457,"./gd.js":77457,"./gl":83043,"./gl.js":83043,"./gom-deva":24034,"./gom-deva.js":24034,"./gom-latn":28379,"./gom-latn.js":28379,"./gu":406,"./gu.js":406,"./he":73219,"./he.js":73219,"./hi":99834,"./hi.js":99834,"./hr":28754,"./hr.js":28754,"./hu":93945,"./hu.js":93945,"./hy-am":81319,"./hy-am.js":81319,"./id":24875,"./id.js":24875,"./is":23724,"./is.js":23724,"./it":79906,"./it-ch":34303,"./it-ch.js":34303,"./it.js":79906,"./ja":77105,"./ja.js":77105,"./jv":15026,"./jv.js":15026,"./ka":67416,"./ka.js":67416,"./kk":79734,"./kk.js":79734,"./km":60757,"./km.js":60757,"./kn":58369,"./kn.js":58369,"./ko":77687,"./ko.js":77687,"./ku":95544,"./ku.js":95544,"./ky":85431,"./ky.js":85431,"./lb":13613,"./lb.js":13613,"./lo":34252,"./lo.js":34252,"./lt":84619,"./lt.js":84619,"./lv":93760,"./lv.js":93760,"./me":93393,"./me.js":93393,"./mi":12369,"./mi.js":12369,"./mk":48664,"./mk.js":48664,"./ml":23099,"./ml.js":23099,"./mn":98539,"./mn.js":98539,"./mr":778,"./mr.js":778,"./ms":39970,"./ms-my":82625,"./ms-my.js":82625,"./ms.js":39970,"./mt":15714,"./mt.js":15714,"./my":53055,"./my.js":53055,"./nb":73945,"./nb.js":73945,"./ne":63645,"./ne.js":63645,"./nl":4829,"./nl-be":12823,"./nl-be.js":12823,"./nl.js":4829,"./nn":23756,"./nn.js":23756,"./oc-lnc":41228,"./oc-lnc.js":41228,"./pa-in":97877,"./pa-in.js":97877,"./pl":53066,"./pl.js":53066,"./pt":28677,"./pt-br":81592,"./pt-br.js":81592,"./pt.js":28677,"./ro":32722,"./ro.js":32722,"./ru":59138,"./ru.js":59138,"./sd":32568,"./sd.js":32568,"./se":49753,"./se.js":49753,"./si":58024,"./si.js":58024,"./sk":31058,"./sk.js":31058,"./sl":43452,"./sl.js":43452,"./sq":2795,"./sq.js":2795,"./sr":26976,"./sr-cyrl":38819,"./sr-cyrl.js":38819,"./sr.js":26976,"./ss":7467,"./ss.js":7467,"./sv":42787,"./sv.js":42787,"./sw":80298,"./sw.js":80298,"./ta":57532,"./ta.js":57532,"./te":76076,"./te.js":76076,"./tet":40452,"./tet.js":40452,"./tg":64794,"./tg.js":64794,"./th":48245,"./th.js":48245,"./tk":8870,"./tk.js":8870,"./tl-ph":36056,"./tl-ph.js":36056,"./tlh":15249,"./tlh.js":15249,"./tr":22053,"./tr.js":22053,"./tzl":39871,"./tzl.js":39871,"./tzm":39574,"./tzm-latn":19210,"./tzm-latn.js":19210,"./tzm.js":39574,"./ug-cn":91532,"./ug-cn.js":91532,"./uk":11432,"./uk.js":11432,"./ur":88523,"./ur.js":88523,"./uz":54958,"./uz-latn":68735,"./uz-latn.js":68735,"./uz.js":54958,"./vi":83398,"./vi.js":83398,"./x-pseudo":56665,"./x-pseudo.js":56665,"./yo":11642,"./yo.js":11642,"./zh-cn":5462,"./zh-cn.js":5462,"./zh-hk":92530,"./zh-hk.js":92530,"./zh-mo":41650,"./zh-mo.js":41650,"./zh-tw":97333,"./zh-tw.js":97333};function r(n){var e=o(n);return t(e)}function o(n){if(!t.o(i,n)){var e=new Error("Cannot find module '"+n+"'");throw e.code="MODULE_NOT_FOUND",e}return i[n]}r.keys=function(){return Object.keys(i)},r.resolve=o,n.exports=r,r.id=93365},31504:function(n,e,i){"use strict";var r=i(20144),o=i(9944),s=i(76632),a=i(19755),l=i.n(a),c=i(4820),u=i(74854),d=i(80351),f=i.n(d),p=i(41922),h=i(27801),m=i.n(h),b=i(56286),v=i.n(b),g=i(97e3),y=i.n(g);function j(n,e,t,i,r,o,s){try{var a=n[o](s),l=a.value}catch(n){return void t(n)}a.done?e(l):Promise.resolve(l).then(i,r)}function w(n){return function(){var e=this,t=arguments;return new Promise((function(i,r){var o=n.apply(e,t);function s(n){j(o,i,r,s,a,"next",n)}function a(n){j(o,i,r,s,a,"throw",n)}s(void 0)}))}}function A(n){return O.apply(this,arguments)}function O(){return(O=w(regeneratorRuntime.mark((function n(e){var t,i,r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,(0,c.default)({method:"PROPFIND",url:e,data:'<?xml version="1.0"?>\n\t\t\t<d:propfind xmlns:d="DAV:"\n\t\t\t\txmlns:oc="http://owncloud.org/ns"\n\t\t\t\txmlns:nc="http://nextcloud.org/ns"\n\t\t\t\txmlns:ocs="http://open-collaboration-services.org/ns">\n\t\t\t<d:prop>\n\t\t\t\t<d:getlastmodified />\n\t\t\t\t<d:getetag />\n\t\t\t\t<d:getcontenttype />\n\t\t\t\t<d:resourcetype />\n\t\t\t\t<oc:fileid />\n\t\t\t\t<oc:permissions />\n\t\t\t\t<oc:size />\n\t\t\t\t<d:getcontentlength />\n\t\t\t\t<nc:has-preview />\n\t\t\t\t<nc:mount-type />\n\t\t\t\t<nc:is-encrypted />\n\t\t\t\t<ocs:share-permissions />\n\t\t\t\t<oc:tags />\n\t\t\t\t<oc:favorite />\n\t\t\t\t<oc:comments-unread />\n\t\t\t\t<oc:owner-id />\n\t\t\t\t<oc:owner-display-name />\n\t\t\t\t<oc:share-types />\n\t\t\t</d:prop>\n\t\t\t</d:propfind>'});case 2:return t=n.sent,i=OCA.Files.App.fileList.filesClient._client.parseMultiStatus(t.data),(r=OCA.Files.App.fileList.filesClient._parseFileInfo(i[0])).get=function(n){return r[n]},r.isDirectory=function(){return"httpd/unix-directory"===r.mimetype},n.abrupt("return",r);case 8:case"end":return n.stop()}}),n)})))).apply(this,arguments)}var _=i(47092);function C(n,e,t,i,r,o,s){try{var a=n[o](s),l=a.value}catch(n){return void t(n)}a.done?e(l):Promise.resolve(l).then(i,r)}function k(n){return function(){var e=this,t=arguments;return new Promise((function(i,r){var o=n.apply(e,t);function s(n){C(o,i,r,s,a,"next",n)}function a(n){C(o,i,r,s,a,"throw",n)}s(void 0)}))}}var T={name:"SidebarTab",components:{AppSidebarTab:i.n(_)(),EmptyContent:y()},props:{fileInfo:{type:Object,default:function(){},required:!0},id:{type:String,required:!0},name:{type:String,required:!0},icon:{type:String,required:!0},onMount:{type:Function,required:!0},onUpdate:{type:Function,required:!0},onDestroy:{type:Function,required:!0},onScrollBottomReached:{type:Function,default:function(){}}},data:function(){return{loading:!0}},computed:{activeTab:function(){return this.$parent.activeTab}},watch:{fileInfo:function(n,e){var t=this;return k(regeneratorRuntime.mark((function i(){return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(n.id===e.id){i.next=5;break}return t.loading=!0,i.next=4,t.onUpdate(t.fileInfo);case 4:t.loading=!1;case 5:case"end":return i.stop()}}),i)})))()}},mounted:function(){var n=this;return k(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.loading=!0,e.next=3,n.onMount(n.$refs.mount,n.fileInfo,n.$refs.tab);case 3:n.loading=!1;case 4:case"end":return e.stop()}}),e)})))()},beforeDestroy:function(){var n=this;return k(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,n.onDestroy();case 2:case"end":return e.stop()}}),e)})))()}},x=i(51900),I=(0,x.Z)(T,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("AppSidebarTab",{ref:"tab",attrs:{id:n.id,name:n.name,icon:n.icon},on:{bottomReached:n.onScrollBottomReached}},[n.loading?t("EmptyContent",{attrs:{icon:"icon-loading"}}):n._e(),n._v(" "),t("div",{ref:"mount"})],1)}),[],!1,null,null,null).exports,S={name:"LegacyView",props:{component:{type:Object,required:!0},fileInfo:{type:Object,default:function(){},required:!0}},watch:{fileInfo:function(n){this.setFileInfo(n)}},mounted:function(){this.component.$el.replaceAll(this.$el),this.setFileInfo(this.fileInfo)},methods:{setFileInfo:function(n){this.component.setFileInfo(new OCA.Files.FileInfoModel(n))}}},F=(0,x.Z)(S,(function(){var n=this.$createElement;return(this._self._c||n)("div")}),[],!1,null,null,null).exports;function E(n,e,t,i,r,o,s){try{var a=n[o](s),l=a.value}catch(n){return void t(n)}a.done?e(l):Promise.resolve(l).then(i,r)}function z(n){return function(){var e=this,t=arguments;return new Promise((function(i,r){var o=n.apply(e,t);function s(n){E(o,i,r,s,a,"next",n)}function a(n){E(o,i,r,s,a,"throw",n)}s(void 0)}))}}var P={name:"Sidebar",components:{ActionButton:v(),AppSidebar:m(),EmptyContent:y(),LegacyView:F,SidebarTab:I},data:function(){return{Sidebar:OCA.Files.Sidebar.state,error:null,loading:!0,fileInfo:null,starLoading:!1,isFullScreen:!1}},computed:{file:function(){return this.Sidebar.file},tabs:function(){return this.Sidebar.tabs},views:function(){return this.Sidebar.views},davPath:function(){var n=OC.getCurrentUser().uid;return OC.linkToRemote("dav/files/".concat(n).concat((0,s.Ec)(this.file)))},activeTab:function(){return this.Sidebar.activeTab},subtitle:function(){return"".concat(this.size,", ").concat(this.time)},time:function(){return OC.Util.relativeModifiedDate(this.fileInfo.mtime)},fullTime:function(){return f()(this.fileInfo.mtime).format("LLL")},size:function(){return OC.Util.humanFileSize(this.fileInfo.size)},background:function(){return this.getPreviewIfAny(this.fileInfo)},appSidebar:function(){return this.fileInfo?{"data-mimetype":this.fileInfo.mimetype,"star-loading":this.starLoading,active:this.activeTab,background:this.background,class:{"app-sidebar--has-preview":this.fileInfo.hasPreview&&!this.isFullScreen,"app-sidebar--full":this.isFullScreen},compact:!this.fileInfo.hasPreview||this.isFullScreen,loading:this.loading,starred:this.fileInfo.isFavourited,subtitle:this.subtitle,subtitleTooltip:this.fullTime,title:this.fileInfo.name,titleTooltip:this.fileInfo.name}:this.error?{key:"error",subtitle:"",title:""}:{loading:this.loading,subtitle:"",title:""}},defaultAction:function(){return this.fileInfo&&OCA.Files&&OCA.Files.App&&OCA.Files.App.fileList&&OCA.Files.App.fileList.fileActions&&OCA.Files.App.fileList.fileActions.getDefaultFileAction&&OCA.Files.App.fileList.fileActions.getDefaultFileAction(this.fileInfo.mimetype,this.fileInfo.type,OC.PERMISSION_READ)},defaultActionListener:function(){return this.defaultAction?"figure-click":null},isSystemTagsEnabled:function(){return OCA&&"SystemTags"in OCA}},methods:{canDisplay:function(n){return n.enabled(this.fileInfo)},resetData:function(){var n=this;this.error=null,this.fileInfo=null,this.$nextTick((function(){n.$refs.tabs&&n.$refs.tabs.updateTabs()}))},getPreviewIfAny:function(n){return n.hasPreview&&!this.isFullScreen?OC.generateUrl("/core/preview?fileId=".concat(n.id,"&x=").concat(screen.width,"&y=").concat(screen.height,"&a=true")):this.getIconUrl(n)},getIconUrl:function(n){var e=n.mimetype||"application/octet-stream";return"httpd/unix-directory"===e?"shared"===n.mountType||"shared-root"===n.mountType?OC.MimeType.getIconUrl("dir-shared"):"external-root"===n.mountType?OC.MimeType.getIconUrl("dir-external"):void 0!==n.mountType&&""!==n.mountType?OC.MimeType.getIconUrl("dir-"+n.mountType):n.shareTypes&&(n.shareTypes.indexOf(p.D.SHARE_TYPE_LINK)>-1||n.shareTypes.indexOf(p.D.SHARE_TYPE_EMAIL)>-1)?OC.MimeType.getIconUrl("dir-public"):n.shareTypes&&n.shareTypes.length>0?OC.MimeType.getIconUrl("dir-shared"):OC.MimeType.getIconUrl("dir"):OC.MimeType.getIconUrl(e)},setActiveTab:function(n){OCA.Files.Sidebar.setActiveTab(n)},toggleStarred:function(n){var e=this;return z(regeneratorRuntime.mark((function i(){return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.prev=0,e.starLoading=!0,i.next=4,(0,c.default)({method:"PROPPATCH",url:e.davPath,data:'<?xml version="1.0"?>\n\t\t\t\t\t\t<d:propertyupdate xmlns:d="DAV:" xmlns:oc="http://owncloud.org/ns">\n\t\t\t\t\t\t'.concat(n?"<d:set>":"<d:remove>","\n\t\t\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t\t\t<oc:favorite>1</oc:favorite>\n\t\t\t\t\t\t\t</d:prop>\n\t\t\t\t\t\t").concat(n?"</d:set>":"</d:remove>","\n\t\t\t\t\t\t</d:propertyupdate>")});case 4:OCA.Files&&OCA.Files.App&&OCA.Files.App.fileList&&OCA.Files.App.fileList.fileActions&&OCA.Files.App.fileList.fileActions.triggerAction("Favorite",OCA.Files.App.fileList.getModelForFile(e.fileInfo.name),OCA.Files.App.fileList),i.next=11;break;case 7:i.prev=7,i.t0=i.catch(0),OC.Notification.showTemporary(t("files","Unable to change the favourite state of the file")),console.error("Unable to change favourite state",i.t0);case 11:e.starLoading=!1;case 12:case"end":return i.stop()}}),i,null,[[0,7]])})))()},onDefaultAction:function(){this.defaultAction&&this.defaultAction.action(this.fileInfo.name,{fileInfo:this.fileInfo,dir:this.fileInfo.dir,fileList:OCA.Files.App.fileList,$file:l()("body")})},toggleTags:function(){OCA.SystemTags&&OCA.SystemTags.View&&OCA.SystemTags.View.toggle()},open:function(n){var e=this;return z(regeneratorRuntime.mark((function i(){return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(e.Sidebar.file=n,!n||""===n.trim()){i.next=21;break}return e.error=null,e.loading=!0,i.prev=4,i.next=7,A(e.davPath);case 7:e.fileInfo=i.sent,e.fileInfo.dir=e.file.split("/").slice(0,-1).join("/"),e.views.forEach((function(n){n.setFileInfo(e.fileInfo)})),e.$nextTick((function(){e.$refs.tabs&&e.$refs.tabs.updateTabs()})),i.next=18;break;case 13:throw i.prev=13,i.t0=i.catch(4),e.error=t("files","Error while loading the file data"),console.error("Error while loading the file data",i.t0),new Error(i.t0);case 18:return i.prev=18,e.loading=!1,i.finish(18);case 21:case"end":return i.stop()}}),i,null,[[4,13,18,21]])})))()},close:function(){this.Sidebar.file="",this.resetData()},setFullScreenMode:function(n){this.isFullScreen=n},handleOpening:function(){(0,u.emit)("files:sidebar:opening")},handleOpened:function(){(0,u.emit)("files:sidebar:opened")},handleClosing:function(){(0,u.emit)("files:sidebar:closing")},handleClosed:function(){(0,u.emit)("files:sidebar:closed")}}},R=i(93379),L=i.n(R),M=i(7795),D=i.n(M),U=i(90569),B=i.n(U),$=i(3565),q=i.n($),V=i(19216),Z=i.n(V),N=i(44589),H=i.n(N),K=i(97425),Y={};Y.styleTagTransform=H(),Y.setAttributes=q(),Y.insert=B().bind(null,"head"),Y.domAPI=D(),Y.insertStyleElement=Z(),L()(K.Z,Y),K.Z&&K.Z.locals&&K.Z.locals;var G=(0,x.Z)(P,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return n.file?t("AppSidebar",n._b({ref:"sidebar",attrs:{"force-menu":!0},on:n._d({close:n.close,"update:active":n.setActiveTab,"update:starred":n.toggleStarred,opening:n.handleOpening,opened:n.handleOpened,closing:n.handleClosing,closed:n.handleClosed},[n.defaultActionListener,function(e){return e.stopPropagation(),e.preventDefault(),n.onDefaultAction.apply(null,arguments)}]),scopedSlots:n._u([n.fileInfo?{key:"description",fn:function(){return n._l(n.views,(function(e){return t("LegacyView",{key:e.cid,attrs:{component:e,"file-info":n.fileInfo}})}))},proxy:!0}:null,n.fileInfo?{key:"secondary-actions",fn:function(){return[n.isSystemTagsEnabled?t("ActionButton",{attrs:{"close-after-click":!0,icon:"icon-tag"},on:{click:n.toggleTags}},[n._v("\n\t\t\t"+n._s(n.t("files","Tags"))+"\n\t\t")]):n._e()]},proxy:!0}:null],null,!0)},"AppSidebar",n.appSidebar,!1),[n._v(" "),n._v(" "),n.error?t("EmptyContent",{attrs:{icon:"icon-error"}},[n._v("\n\t\t"+n._s(n.error)+"\n\t")]):n.fileInfo?n._l(n.tabs,(function(e){return[e.enabled(n.fileInfo)?t("SidebarTab",{directives:[{name:"show",rawName:"v-show",value:!n.loading,expression:"!loading"}],key:e.id,attrs:{id:e.id,name:e.name,icon:e.icon,"on-mount":e.mount,"on-update":e.update,"on-destroy":e.destroy,"on-scroll-bottom-reached":e.scrollBottomReached,"file-info":n.fileInfo}}):n._e()]})):n._e()],2):n._e()}),[],!1,null,"780526c0",null),J=G.exports;function Q(n,e){for(var t=0;t<e.length;t++){var i=e[t];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(n,i.key,i)}}var W=function(){function n(){var e,t;!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),t=void 0,(e="_state")in this?Object.defineProperty(this,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):this[e]=t,this._state={},this._state.tabs=[],this._state.views=[],this._state.file="",this._state.activeTab="",console.debug("OCA.Files.Sidebar initialized")}var e,t;return e=n,(t=[{key:"state",get:function(){return this._state}},{key:"registerTab",value:function(n){return this._state.tabs.findIndex((function(e){return e.id===n.id}))>-1?(console.error("An tab with the same id ".concat(n.id," already exists"),n),!1):(this._state.tabs.push(n),!0)}},{key:"registerSecondaryView",value:function(n){return this._state.views.findIndex((function(e){return e.id===n.id}))>-1?(console.error("A similar view already exists",n),!1):(this._state.views.push(n),!0)}},{key:"file",get:function(){return this._state.file}},{key:"setActiveTab",value:function(n){this._state.activeTab=n}}])&&Q(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}();function X(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}function nn(n,e){for(var t=0;t<e.length;t++){var i=e[t];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(n,i.key,i)}}function en(n,e,t){return e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}var tn=function(){function n(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.id,i=e.name,r=e.icon,o=e.mount,s=e.update,a=e.destroy,l=e.enabled,c=e.scrollBottomReached;if(X(this,n),en(this,"_id",void 0),en(this,"_name",void 0),en(this,"_icon",void 0),en(this,"_mount",void 0),en(this,"_update",void 0),en(this,"_destroy",void 0),en(this,"_enabled",void 0),en(this,"_scrollBottomReached",void 0),void 0===l&&(l=function(){return!0}),void 0===c&&(c=function(){}),"string"!=typeof t||""===t.trim())throw new Error("The id argument is not a valid string");if("string"!=typeof i||""===i.trim())throw new Error("The name argument is not a valid string");if("string"!=typeof r||""===r.trim())throw new Error("The icon argument is not a valid string");if("function"!=typeof o)throw new Error("The mount argument should be a function");if("function"!=typeof s)throw new Error("The update argument should be a function");if("function"!=typeof a)throw new Error("The destroy argument should be a function");if("function"!=typeof l)throw new Error("The enabled argument should be a function");if("function"!=typeof c)throw new Error("The scrollBottomReached argument should be a function");this._id=t,this._name=i,this._icon=r,this._mount=o,this._update=s,this._destroy=a,this._enabled=l,this._scrollBottomReached=c}var e,t;return e=n,(t=[{key:"id",get:function(){return this._id}},{key:"name",get:function(){return this._name}},{key:"icon",get:function(){return this._icon}},{key:"mount",get:function(){return this._mount}},{key:"update",get:function(){return this._update}},{key:"destroy",get:function(){return this._destroy}},{key:"enabled",get:function(){return this._enabled}},{key:"scrollBottomReached",get:function(){return this._scrollBottomReached}}])&&nn(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}();r.default.prototype.t=o.translate,window.OCA.Files||(window.OCA.Files={}),Object.assign(window.OCA.Files,{Sidebar:new W}),Object.assign(window.OCA.Files.Sidebar,{Tab:tn}),console.debug("OCA.Files.Sidebar initialized"),window.addEventListener("DOMContentLoaded",(function(){var n=document.querySelector("body > .content")||document.querySelector("body > #content");if(n&&!document.getElementById("app-sidebar")){var e=document.createElement("div");e.id="app-sidebar",n.appendChild(e)}var t=new(r.default.extend(J))({name:"SidebarRoot"});t.$mount("#app-sidebar"),window.OCA.Files.Sidebar.open=t.open,window.OCA.Files.Sidebar.close=t.close,window.OCA.Files.Sidebar.setFullScreenMode=t.setFullScreenMode}))},97425:function(n,e,t){"use strict";var i=t(87537),r=t.n(i),o=t(23645),s=t.n(o)()(r());s.push([n.id,'.app-sidebar--has-preview[data-v-780526c0] .app-sidebar-header__figure{background-size:cover}.app-sidebar--has-preview[data-v-780526c0][data-mimetype="text/plain"] .app-sidebar-header__figure,.app-sidebar--has-preview[data-v-780526c0][data-mimetype="text/markdown"] .app-sidebar-header__figure{background-size:contain}.app-sidebar--full[data-v-780526c0]{position:fixed !important;z-index:2025 !important;top:0 !important;height:100% !important}',"",{version:3,sources:["webpack://./apps/files/src/views/Sidebar.vue"],names:[],mappings:"AAoeE,uEACC,qBAAA,CAKA,yMACC,uBAAA,CAKH,oCACC,yBAAA,CACA,uBAAA,CACA,gBAAA,CACA,sBAAA",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.app-sidebar {\n\t&--has-preview::v-deep {\n\t\t.app-sidebar-header__figure {\n\t\t\tbackground-size: cover;\n\t\t}\n\n\t\t&[data-mimetype="text/plain"],\n\t\t&[data-mimetype="text/markdown"] {\n\t\t\t.app-sidebar-header__figure {\n\t\t\t\tbackground-size: contain;\n\t\t\t}\n\t\t}\n\t}\n\n\t&--full {\n\t\tposition: fixed !important;\n\t\tz-index: 2025 !important;\n\t\ttop: 0 !important;\n\t\theight: 100% !important;\n\t}\n}\n'],sourceRoot:""}]),e.Z=s}},i={};function r(n){var t=i[n];if(void 0!==t)return t.exports;var o=i[n]={id:n,loaded:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.loaded=!0,o.exports}r.m=e,r.amdD=function(){throw new Error("define cannot be used indirect")},r.amdO={},n=[],r.O=function(e,t,i,o){if(!t){var s=1/0;for(u=0;u<n.length;u++){t=n[u][0],i=n[u][1],o=n[u][2];for(var a=!0,l=0;l<t.length;l++)(!1&o||s>=o)&&Object.keys(r.O).every((function(n){return r.O[n](t[l])}))?t.splice(l--,1):(a=!1,o<s&&(s=o));if(a){n.splice(u--,1);var c=i();void 0!==c&&(e=c)}}return e}o=o||0;for(var u=n.length;u>0&&n[u-1][2]>o;u--)n[u]=n[u-1];n[u]=[t,i,o]},r.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return r.d(e,{a:e}),e},r.d=function(n,e){for(var t in e)r.o(e,t)&&!r.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:e[t]})},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,e){return Object.prototype.hasOwnProperty.call(n,e)},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=4092,function(){r.b=document.baseURI||self.location.href;var n={4092:0};r.O.j=function(e){return 0===n[e]};var e=function(e,t){var i,o,s=t[0],a=t[1],l=t[2],c=0;if(s.some((function(e){return 0!==n[e]}))){for(i in a)r.o(a,i)&&(r.m[i]=a[i]);if(l)var u=l(r)}for(e&&e(t);c<s.length;c++)o=s[c],r.o(n,o)&&n[o]&&n[o][0](),n[o]=0;return r.O(u)},t=self.webpackChunknextcloud=self.webpackChunknextcloud||[];t.forEach(e.bind(null,0)),t.push=e.bind(null,t.push.bind(t))}();var o=r.O(void 0,[7874],(function(){return r(31504)}));o=r.O(o)}();
-//# sourceMappingURL=files-sidebar.js.map?v=2627134b3ccf1f9e0add \ No newline at end of file
+!function(){var n,e={93365:function(n,e,t){var i={"./af":36026,"./af.js":36026,"./ar":28093,"./ar-dz":41943,"./ar-dz.js":41943,"./ar-kw":23969,"./ar-kw.js":23969,"./ar-ly":40594,"./ar-ly.js":40594,"./ar-ma":18369,"./ar-ma.js":18369,"./ar-sa":32579,"./ar-sa.js":32579,"./ar-tn":76442,"./ar-tn.js":76442,"./ar.js":28093,"./az":86425,"./az.js":86425,"./be":22004,"./be.js":22004,"./bg":42982,"./bg.js":42982,"./bm":21067,"./bm.js":21067,"./bn":8366,"./bn-bd":63837,"./bn-bd.js":63837,"./bn.js":8366,"./bo":95040,"./bo.js":95040,"./br":521,"./br.js":521,"./bs":83242,"./bs.js":83242,"./ca":73046,"./ca.js":73046,"./cs":25794,"./cs.js":25794,"./cv":28231,"./cv.js":28231,"./cy":10927,"./cy.js":10927,"./da":42832,"./da.js":42832,"./de":29415,"./de-at":3331,"./de-at.js":3331,"./de-ch":45524,"./de-ch.js":45524,"./de.js":29415,"./dv":44700,"./dv.js":44700,"./el":88752,"./el.js":88752,"./en-au":90444,"./en-au.js":90444,"./en-ca":65959,"./en-ca.js":65959,"./en-gb":62762,"./en-gb.js":62762,"./en-ie":40909,"./en-ie.js":40909,"./en-il":79909,"./en-il.js":79909,"./en-in":87942,"./en-in.js":87942,"./en-nz":75200,"./en-nz.js":75200,"./en-sg":21415,"./en-sg.js":21415,"./eo":27447,"./eo.js":27447,"./es":86756,"./es-do":47049,"./es-do.js":47049,"./es-mx":15915,"./es-mx.js":15915,"./es-us":57133,"./es-us.js":57133,"./es.js":86756,"./et":72182,"./et.js":72182,"./eu":14419,"./eu.js":14419,"./fa":2916,"./fa.js":2916,"./fi":49964,"./fi.js":49964,"./fil":16448,"./fil.js":16448,"./fo":26094,"./fo.js":26094,"./fr":35833,"./fr-ca":56994,"./fr-ca.js":56994,"./fr-ch":2740,"./fr-ch.js":2740,"./fr.js":35833,"./fy":69542,"./fy.js":69542,"./ga":93264,"./ga.js":93264,"./gd":77457,"./gd.js":77457,"./gl":83043,"./gl.js":83043,"./gom-deva":24034,"./gom-deva.js":24034,"./gom-latn":28379,"./gom-latn.js":28379,"./gu":406,"./gu.js":406,"./he":73219,"./he.js":73219,"./hi":99834,"./hi.js":99834,"./hr":28754,"./hr.js":28754,"./hu":93945,"./hu.js":93945,"./hy-am":81319,"./hy-am.js":81319,"./id":24875,"./id.js":24875,"./is":23724,"./is.js":23724,"./it":79906,"./it-ch":34303,"./it-ch.js":34303,"./it.js":79906,"./ja":77105,"./ja.js":77105,"./jv":15026,"./jv.js":15026,"./ka":67416,"./ka.js":67416,"./kk":79734,"./kk.js":79734,"./km":60757,"./km.js":60757,"./kn":58369,"./kn.js":58369,"./ko":77687,"./ko.js":77687,"./ku":95544,"./ku.js":95544,"./ky":85431,"./ky.js":85431,"./lb":13613,"./lb.js":13613,"./lo":34252,"./lo.js":34252,"./lt":84619,"./lt.js":84619,"./lv":93760,"./lv.js":93760,"./me":93393,"./me.js":93393,"./mi":12369,"./mi.js":12369,"./mk":48664,"./mk.js":48664,"./ml":23099,"./ml.js":23099,"./mn":98539,"./mn.js":98539,"./mr":778,"./mr.js":778,"./ms":39970,"./ms-my":82625,"./ms-my.js":82625,"./ms.js":39970,"./mt":15714,"./mt.js":15714,"./my":53055,"./my.js":53055,"./nb":73945,"./nb.js":73945,"./ne":63645,"./ne.js":63645,"./nl":4829,"./nl-be":12823,"./nl-be.js":12823,"./nl.js":4829,"./nn":23756,"./nn.js":23756,"./oc-lnc":41228,"./oc-lnc.js":41228,"./pa-in":97877,"./pa-in.js":97877,"./pl":53066,"./pl.js":53066,"./pt":28677,"./pt-br":81592,"./pt-br.js":81592,"./pt.js":28677,"./ro":32722,"./ro.js":32722,"./ru":59138,"./ru.js":59138,"./sd":32568,"./sd.js":32568,"./se":49753,"./se.js":49753,"./si":58024,"./si.js":58024,"./sk":31058,"./sk.js":31058,"./sl":43452,"./sl.js":43452,"./sq":2795,"./sq.js":2795,"./sr":26976,"./sr-cyrl":38819,"./sr-cyrl.js":38819,"./sr.js":26976,"./ss":7467,"./ss.js":7467,"./sv":42787,"./sv.js":42787,"./sw":80298,"./sw.js":80298,"./ta":57532,"./ta.js":57532,"./te":76076,"./te.js":76076,"./tet":40452,"./tet.js":40452,"./tg":64794,"./tg.js":64794,"./th":48245,"./th.js":48245,"./tk":8870,"./tk.js":8870,"./tl-ph":36056,"./tl-ph.js":36056,"./tlh":15249,"./tlh.js":15249,"./tr":22053,"./tr.js":22053,"./tzl":39871,"./tzl.js":39871,"./tzm":39574,"./tzm-latn":19210,"./tzm-latn.js":19210,"./tzm.js":39574,"./ug-cn":91532,"./ug-cn.js":91532,"./uk":11432,"./uk.js":11432,"./ur":88523,"./ur.js":88523,"./uz":54958,"./uz-latn":68735,"./uz-latn.js":68735,"./uz.js":54958,"./vi":83398,"./vi.js":83398,"./x-pseudo":56665,"./x-pseudo.js":56665,"./yo":11642,"./yo.js":11642,"./zh-cn":5462,"./zh-cn.js":5462,"./zh-hk":92530,"./zh-hk.js":92530,"./zh-mo":41650,"./zh-mo.js":41650,"./zh-tw":97333,"./zh-tw.js":97333};function r(n){var e=o(n);return t(e)}function o(n){if(!t.o(i,n)){var e=new Error("Cannot find module '"+n+"'");throw e.code="MODULE_NOT_FOUND",e}return i[n]}r.keys=function(){return Object.keys(i)},r.resolve=o,n.exports=r,r.id=93365},31504:function(n,e,i){"use strict";var r=i(20144),o=i(9944),s=i(76632),a=i(19755),l=i.n(a),c=i(4820),u=i(74854),d=i(80351),f=i.n(d),p=i(41922),h=i(27801),m=i.n(h),b=i(56286),v=i.n(b),g=i(97e3),y=i.n(g);function j(n,e,t,i,r,o,s){try{var a=n[o](s),l=a.value}catch(n){return void t(n)}a.done?e(l):Promise.resolve(l).then(i,r)}function w(n){return function(){var e=this,t=arguments;return new Promise((function(i,r){var o=n.apply(e,t);function s(n){j(o,i,r,s,a,"next",n)}function a(n){j(o,i,r,s,a,"throw",n)}s(void 0)}))}}function A(n){return O.apply(this,arguments)}function O(){return(O=w(regeneratorRuntime.mark((function n(e){var t,i,r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,(0,c.default)({method:"PROPFIND",url:e,data:'<?xml version="1.0"?>\n\t\t\t<d:propfind xmlns:d="DAV:"\n\t\t\t\txmlns:oc="http://owncloud.org/ns"\n\t\t\t\txmlns:nc="http://nextcloud.org/ns"\n\t\t\t\txmlns:ocs="http://open-collaboration-services.org/ns">\n\t\t\t<d:prop>\n\t\t\t\t<d:getlastmodified />\n\t\t\t\t<d:getetag />\n\t\t\t\t<d:getcontenttype />\n\t\t\t\t<d:resourcetype />\n\t\t\t\t<oc:fileid />\n\t\t\t\t<oc:permissions />\n\t\t\t\t<oc:size />\n\t\t\t\t<d:getcontentlength />\n\t\t\t\t<nc:has-preview />\n\t\t\t\t<nc:mount-type />\n\t\t\t\t<nc:is-encrypted />\n\t\t\t\t<ocs:share-permissions />\n\t\t\t\t<oc:tags />\n\t\t\t\t<oc:favorite />\n\t\t\t\t<oc:comments-unread />\n\t\t\t\t<oc:owner-id />\n\t\t\t\t<oc:owner-display-name />\n\t\t\t\t<oc:share-types />\n\t\t\t</d:prop>\n\t\t\t</d:propfind>'});case 2:return t=n.sent,i=OCA.Files.App.fileList.filesClient._client.parseMultiStatus(t.data),(r=OCA.Files.App.fileList.filesClient._parseFileInfo(i[0])).get=function(n){return r[n]},r.isDirectory=function(){return"httpd/unix-directory"===r.mimetype},n.abrupt("return",r);case 8:case"end":return n.stop()}}),n)})))).apply(this,arguments)}var _=i(47092);function C(n,e,t,i,r,o,s){try{var a=n[o](s),l=a.value}catch(n){return void t(n)}a.done?e(l):Promise.resolve(l).then(i,r)}function k(n){return function(){var e=this,t=arguments;return new Promise((function(i,r){var o=n.apply(e,t);function s(n){C(o,i,r,s,a,"next",n)}function a(n){C(o,i,r,s,a,"throw",n)}s(void 0)}))}}var T={name:"SidebarTab",components:{AppSidebarTab:i.n(_)(),EmptyContent:y()},props:{fileInfo:{type:Object,default:function(){},required:!0},id:{type:String,required:!0},name:{type:String,required:!0},icon:{type:String,required:!0},onMount:{type:Function,required:!0},onUpdate:{type:Function,required:!0},onDestroy:{type:Function,required:!0},onScrollBottomReached:{type:Function,default:function(){}}},data:function(){return{loading:!0}},computed:{activeTab:function(){return this.$parent.activeTab}},watch:{fileInfo:function(n,e){var t=this;return k(regeneratorRuntime.mark((function i(){return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(n.id===e.id){i.next=5;break}return t.loading=!0,i.next=4,t.onUpdate(t.fileInfo);case 4:t.loading=!1;case 5:case"end":return i.stop()}}),i)})))()}},mounted:function(){var n=this;return k(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.loading=!0,e.next=3,n.onMount(n.$refs.mount,n.fileInfo,n.$refs.tab);case 3:n.loading=!1;case 4:case"end":return e.stop()}}),e)})))()},beforeDestroy:function(){var n=this;return k(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,n.onDestroy();case 2:case"end":return e.stop()}}),e)})))()}},x=i(51900),I=(0,x.Z)(T,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("AppSidebarTab",{ref:"tab",attrs:{id:n.id,name:n.name,icon:n.icon},on:{bottomReached:n.onScrollBottomReached}},[n.loading?t("EmptyContent",{attrs:{icon:"icon-loading"}}):n._e(),n._v(" "),t("div",{ref:"mount"})],1)}),[],!1,null,null,null).exports,S={name:"LegacyView",props:{component:{type:Object,required:!0},fileInfo:{type:Object,default:function(){},required:!0}},watch:{fileInfo:function(n){this.setFileInfo(n)}},mounted:function(){this.component.$el.replaceAll(this.$el),this.setFileInfo(this.fileInfo)},methods:{setFileInfo:function(n){this.component.setFileInfo(new OCA.Files.FileInfoModel(n))}}},F=(0,x.Z)(S,(function(){var n=this.$createElement;return(this._self._c||n)("div")}),[],!1,null,null,null).exports;function E(n,e,t,i,r,o,s){try{var a=n[o](s),l=a.value}catch(n){return void t(n)}a.done?e(l):Promise.resolve(l).then(i,r)}function z(n){return function(){var e=this,t=arguments;return new Promise((function(i,r){var o=n.apply(e,t);function s(n){E(o,i,r,s,a,"next",n)}function a(n){E(o,i,r,s,a,"throw",n)}s(void 0)}))}}var P={name:"Sidebar",components:{ActionButton:v(),AppSidebar:m(),EmptyContent:y(),LegacyView:F,SidebarTab:I},data:function(){return{Sidebar:OCA.Files.Sidebar.state,error:null,loading:!0,fileInfo:null,starLoading:!1,isFullScreen:!1}},computed:{file:function(){return this.Sidebar.file},tabs:function(){return this.Sidebar.tabs},views:function(){return this.Sidebar.views},davPath:function(){var n=OC.getCurrentUser().uid;return OC.linkToRemote("dav/files/".concat(n).concat((0,s.Ec)(this.file)))},activeTab:function(){return this.Sidebar.activeTab},subtitle:function(){return"".concat(this.size,", ").concat(this.time)},time:function(){return OC.Util.relativeModifiedDate(this.fileInfo.mtime)},fullTime:function(){return f()(this.fileInfo.mtime).format("LLL")},size:function(){return OC.Util.humanFileSize(this.fileInfo.size)},background:function(){return this.getPreviewIfAny(this.fileInfo)},appSidebar:function(){return this.fileInfo?{"data-mimetype":this.fileInfo.mimetype,"star-loading":this.starLoading,active:this.activeTab,background:this.background,class:{"app-sidebar--has-preview":this.fileInfo.hasPreview&&!this.isFullScreen,"app-sidebar--full":this.isFullScreen},compact:!this.fileInfo.hasPreview||this.isFullScreen,loading:this.loading,starred:this.fileInfo.isFavourited,subtitle:this.subtitle,subtitleTooltip:this.fullTime,title:this.fileInfo.name,titleTooltip:this.fileInfo.name}:this.error?{key:"error",subtitle:"",title:""}:{loading:this.loading,subtitle:"",title:""}},defaultAction:function(){return this.fileInfo&&OCA.Files&&OCA.Files.App&&OCA.Files.App.fileList&&OCA.Files.App.fileList.fileActions&&OCA.Files.App.fileList.fileActions.getDefaultFileAction&&OCA.Files.App.fileList.fileActions.getDefaultFileAction(this.fileInfo.mimetype,this.fileInfo.type,OC.PERMISSION_READ)},defaultActionListener:function(){return this.defaultAction?"figure-click":null},isSystemTagsEnabled:function(){return OCA&&"SystemTags"in OCA}},methods:{canDisplay:function(n){return n.enabled(this.fileInfo)},resetData:function(){var n=this;this.error=null,this.fileInfo=null,this.$nextTick((function(){n.$refs.tabs&&n.$refs.tabs.updateTabs()}))},getPreviewIfAny:function(n){return n.hasPreview&&!this.isFullScreen?OC.generateUrl("/core/preview?fileId=".concat(n.id,"&x=").concat(screen.width,"&y=").concat(screen.height,"&a=true")):this.getIconUrl(n)},getIconUrl:function(n){var e=n.mimetype||"application/octet-stream";return"httpd/unix-directory"===e?"shared"===n.mountType||"shared-root"===n.mountType?OC.MimeType.getIconUrl("dir-shared"):"external-root"===n.mountType?OC.MimeType.getIconUrl("dir-external"):void 0!==n.mountType&&""!==n.mountType?OC.MimeType.getIconUrl("dir-"+n.mountType):n.shareTypes&&(n.shareTypes.indexOf(p.D.SHARE_TYPE_LINK)>-1||n.shareTypes.indexOf(p.D.SHARE_TYPE_EMAIL)>-1)?OC.MimeType.getIconUrl("dir-public"):n.shareTypes&&n.shareTypes.length>0?OC.MimeType.getIconUrl("dir-shared"):OC.MimeType.getIconUrl("dir"):OC.MimeType.getIconUrl(e)},setActiveTab:function(n){OCA.Files.Sidebar.setActiveTab(n)},toggleStarred:function(n){var e=this;return z(regeneratorRuntime.mark((function i(){return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.prev=0,e.starLoading=!0,i.next=4,(0,c.default)({method:"PROPPATCH",url:e.davPath,data:'<?xml version="1.0"?>\n\t\t\t\t\t\t<d:propertyupdate xmlns:d="DAV:" xmlns:oc="http://owncloud.org/ns">\n\t\t\t\t\t\t'.concat(n?"<d:set>":"<d:remove>","\n\t\t\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t\t\t<oc:favorite>1</oc:favorite>\n\t\t\t\t\t\t\t</d:prop>\n\t\t\t\t\t\t").concat(n?"</d:set>":"</d:remove>","\n\t\t\t\t\t\t</d:propertyupdate>")});case 4:OCA.Files&&OCA.Files.App&&OCA.Files.App.fileList&&OCA.Files.App.fileList.fileActions&&OCA.Files.App.fileList.fileActions.triggerAction("Favorite",OCA.Files.App.fileList.getModelForFile(e.fileInfo.name),OCA.Files.App.fileList),i.next=11;break;case 7:i.prev=7,i.t0=i.catch(0),OC.Notification.showTemporary(t("files","Unable to change the favourite state of the file")),console.error("Unable to change favourite state",i.t0);case 11:e.starLoading=!1;case 12:case"end":return i.stop()}}),i,null,[[0,7]])})))()},onDefaultAction:function(){this.defaultAction&&this.defaultAction.action(this.fileInfo.name,{fileInfo:this.fileInfo,dir:this.fileInfo.dir,fileList:OCA.Files.App.fileList,$file:l()("body")})},toggleTags:function(){OCA.SystemTags&&OCA.SystemTags.View&&OCA.SystemTags.View.toggle()},open:function(n){var e=this;return z(regeneratorRuntime.mark((function i(){return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(e.Sidebar.file=n,!n||""===n.trim()){i.next=21;break}return e.error=null,e.loading=!0,i.prev=4,i.next=7,A(e.davPath);case 7:e.fileInfo=i.sent,e.fileInfo.dir=e.file.split("/").slice(0,-1).join("/"),e.views.forEach((function(n){n.setFileInfo(e.fileInfo)})),e.$nextTick((function(){e.$refs.tabs&&e.$refs.tabs.updateTabs()})),i.next=18;break;case 13:throw i.prev=13,i.t0=i.catch(4),e.error=t("files","Error while loading the file data"),console.error("Error while loading the file data",i.t0),new Error(i.t0);case 18:return i.prev=18,e.loading=!1,i.finish(18);case 21:case"end":return i.stop()}}),i,null,[[4,13,18,21]])})))()},close:function(){this.Sidebar.file="",this.resetData()},setFullScreenMode:function(n){this.isFullScreen=n},handleOpening:function(){(0,u.emit)("files:sidebar:opening")},handleOpened:function(){(0,u.emit)("files:sidebar:opened")},handleClosing:function(){(0,u.emit)("files:sidebar:closing")},handleClosed:function(){(0,u.emit)("files:sidebar:closed")}}},R=i(93379),L=i.n(R),M=i(7795),D=i.n(M),U=i(90569),B=i.n(U),$=i(3565),q=i.n($),V=i(19216),Z=i.n(V),N=i(44589),H=i.n(N),K=i(97425),Y={};Y.styleTagTransform=H(),Y.setAttributes=q(),Y.insert=B().bind(null,"head"),Y.domAPI=D(),Y.insertStyleElement=Z(),L()(K.Z,Y),K.Z&&K.Z.locals&&K.Z.locals;var G=(0,x.Z)(P,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return n.file?t("AppSidebar",n._b({ref:"sidebar",attrs:{"force-menu":!0},on:n._d({close:n.close,"update:active":n.setActiveTab,"update:starred":n.toggleStarred,opening:n.handleOpening,opened:n.handleOpened,closing:n.handleClosing,closed:n.handleClosed},[n.defaultActionListener,function(e){return e.stopPropagation(),e.preventDefault(),n.onDefaultAction.apply(null,arguments)}]),scopedSlots:n._u([n.fileInfo?{key:"description",fn:function(){return n._l(n.views,(function(e){return t("LegacyView",{key:e.cid,attrs:{component:e,"file-info":n.fileInfo}})}))},proxy:!0}:null,n.fileInfo?{key:"secondary-actions",fn:function(){return[n.isSystemTagsEnabled?t("ActionButton",{attrs:{"close-after-click":!0,icon:"icon-tag"},on:{click:n.toggleTags}},[n._v("\n\t\t\t"+n._s(n.t("files","Tags"))+"\n\t\t")]):n._e()]},proxy:!0}:null],null,!0)},"AppSidebar",n.appSidebar,!1),[n._v(" "),n._v(" "),n.error?t("EmptyContent",{attrs:{icon:"icon-error"}},[n._v("\n\t\t"+n._s(n.error)+"\n\t")]):n.fileInfo?n._l(n.tabs,(function(e){return[e.enabled(n.fileInfo)?t("SidebarTab",{directives:[{name:"show",rawName:"v-show",value:!n.loading,expression:"!loading"}],key:e.id,attrs:{id:e.id,name:e.name,icon:e.icon,"on-mount":e.mount,"on-update":e.update,"on-destroy":e.destroy,"on-scroll-bottom-reached":e.scrollBottomReached,"file-info":n.fileInfo}}):n._e()]})):n._e()],2):n._e()}),[],!1,null,"780526c0",null),J=G.exports;function Q(n,e){for(var t=0;t<e.length;t++){var i=e[t];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(n,i.key,i)}}var W=function(){function n(){var e,t;!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),t=void 0,(e="_state")in this?Object.defineProperty(this,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):this[e]=t,this._state={},this._state.tabs=[],this._state.views=[],this._state.file="",this._state.activeTab="",console.debug("OCA.Files.Sidebar initialized")}var e,t;return e=n,(t=[{key:"state",get:function(){return this._state}},{key:"registerTab",value:function(n){return this._state.tabs.findIndex((function(e){return e.id===n.id}))>-1?(console.error("An tab with the same id ".concat(n.id," already exists"),n),!1):(this._state.tabs.push(n),!0)}},{key:"registerSecondaryView",value:function(n){return this._state.views.findIndex((function(e){return e.id===n.id}))>-1?(console.error("A similar view already exists",n),!1):(this._state.views.push(n),!0)}},{key:"file",get:function(){return this._state.file}},{key:"setActiveTab",value:function(n){this._state.activeTab=n}}])&&Q(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}();function X(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}function nn(n,e){for(var t=0;t<e.length;t++){var i=e[t];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(n,i.key,i)}}function en(n,e,t){return e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}var tn=function(){function n(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.id,i=e.name,r=e.icon,o=e.mount,s=e.update,a=e.destroy,l=e.enabled,c=e.scrollBottomReached;if(X(this,n),en(this,"_id",void 0),en(this,"_name",void 0),en(this,"_icon",void 0),en(this,"_mount",void 0),en(this,"_update",void 0),en(this,"_destroy",void 0),en(this,"_enabled",void 0),en(this,"_scrollBottomReached",void 0),void 0===l&&(l=function(){return!0}),void 0===c&&(c=function(){}),"string"!=typeof t||""===t.trim())throw new Error("The id argument is not a valid string");if("string"!=typeof i||""===i.trim())throw new Error("The name argument is not a valid string");if("string"!=typeof r||""===r.trim())throw new Error("The icon argument is not a valid string");if("function"!=typeof o)throw new Error("The mount argument should be a function");if("function"!=typeof s)throw new Error("The update argument should be a function");if("function"!=typeof a)throw new Error("The destroy argument should be a function");if("function"!=typeof l)throw new Error("The enabled argument should be a function");if("function"!=typeof c)throw new Error("The scrollBottomReached argument should be a function");this._id=t,this._name=i,this._icon=r,this._mount=o,this._update=s,this._destroy=a,this._enabled=l,this._scrollBottomReached=c}var e,t;return e=n,(t=[{key:"id",get:function(){return this._id}},{key:"name",get:function(){return this._name}},{key:"icon",get:function(){return this._icon}},{key:"mount",get:function(){return this._mount}},{key:"update",get:function(){return this._update}},{key:"destroy",get:function(){return this._destroy}},{key:"enabled",get:function(){return this._enabled}},{key:"scrollBottomReached",get:function(){return this._scrollBottomReached}}])&&nn(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}();r.default.prototype.t=o.translate,window.OCA.Files||(window.OCA.Files={}),Object.assign(window.OCA.Files,{Sidebar:new W}),Object.assign(window.OCA.Files.Sidebar,{Tab:tn}),console.debug("OCA.Files.Sidebar initialized"),window.addEventListener("DOMContentLoaded",(function(){var n=document.querySelector("body > .content")||document.querySelector("body > #content");if(n&&!document.getElementById("app-sidebar")){var e=document.createElement("div");e.id="app-sidebar",n.appendChild(e)}var t=new(r.default.extend(J))({name:"SidebarRoot"});t.$mount("#app-sidebar"),window.OCA.Files.Sidebar.open=t.open,window.OCA.Files.Sidebar.close=t.close,window.OCA.Files.Sidebar.setFullScreenMode=t.setFullScreenMode}))},97425:function(n,e,t){"use strict";var i=t(87537),r=t.n(i),o=t(23645),s=t.n(o)()(r());s.push([n.id,'.app-sidebar--has-preview[data-v-780526c0] .app-sidebar-header__figure{background-size:cover}.app-sidebar--has-preview[data-v-780526c0][data-mimetype="text/plain"] .app-sidebar-header__figure,.app-sidebar--has-preview[data-v-780526c0][data-mimetype="text/markdown"] .app-sidebar-header__figure{background-size:contain}.app-sidebar--full[data-v-780526c0]{position:fixed !important;z-index:2025 !important;top:0 !important;height:100% !important}',"",{version:3,sources:["webpack://./apps/files/src/views/Sidebar.vue"],names:[],mappings:"AAoeE,uEACC,qBAAA,CAKA,yMACC,uBAAA,CAKH,oCACC,yBAAA,CACA,uBAAA,CACA,gBAAA,CACA,sBAAA",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.app-sidebar {\n\t&--has-preview::v-deep {\n\t\t.app-sidebar-header__figure {\n\t\t\tbackground-size: cover;\n\t\t}\n\n\t\t&[data-mimetype="text/plain"],\n\t\t&[data-mimetype="text/markdown"] {\n\t\t\t.app-sidebar-header__figure {\n\t\t\t\tbackground-size: contain;\n\t\t\t}\n\t\t}\n\t}\n\n\t&--full {\n\t\tposition: fixed !important;\n\t\tz-index: 2025 !important;\n\t\ttop: 0 !important;\n\t\theight: 100% !important;\n\t}\n}\n'],sourceRoot:""}]),e.Z=s}},i={};function r(n){var t=i[n];if(void 0!==t)return t.exports;var o=i[n]={id:n,loaded:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.loaded=!0,o.exports}r.m=e,r.amdD=function(){throw new Error("define cannot be used indirect")},r.amdO={},n=[],r.O=function(e,t,i,o){if(!t){var s=1/0;for(u=0;u<n.length;u++){t=n[u][0],i=n[u][1],o=n[u][2];for(var a=!0,l=0;l<t.length;l++)(!1&o||s>=o)&&Object.keys(r.O).every((function(n){return r.O[n](t[l])}))?t.splice(l--,1):(a=!1,o<s&&(s=o));if(a){n.splice(u--,1);var c=i();void 0!==c&&(e=c)}}return e}o=o||0;for(var u=n.length;u>0&&n[u-1][2]>o;u--)n[u]=n[u-1];n[u]=[t,i,o]},r.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return r.d(e,{a:e}),e},r.d=function(n,e){for(var t in e)r.o(e,t)&&!r.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:e[t]})},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,e){return Object.prototype.hasOwnProperty.call(n,e)},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=4092,function(){r.b=document.baseURI||self.location.href;var n={4092:0};r.O.j=function(e){return 0===n[e]};var e=function(e,t){var i,o,s=t[0],a=t[1],l=t[2],c=0;if(s.some((function(e){return 0!==n[e]}))){for(i in a)r.o(a,i)&&(r.m[i]=a[i]);if(l)var u=l(r)}for(e&&e(t);c<s.length;c++)o=s[c],r.o(n,o)&&n[o]&&n[o][0](),n[o]=0;return r.O(u)},t=self.webpackChunknextcloud=self.webpackChunknextcloud||[];t.forEach(e.bind(null,0)),t.push=e.bind(null,t.push.bind(t))}(),r.nc=void 0;var o=r.O(void 0,[7874],(function(){return r(31504)}));o=r.O(o)}();
+//# sourceMappingURL=files-sidebar.js.map?v=ff184c112ebaa4f58d94 \ No newline at end of file
diff --git a/dist/files-sidebar.js.map b/dist/files-sidebar.js.map
index d10e75687c5..0d42cbe23fb 100644
--- a/dist/files-sidebar.js.map
+++ b/dist/files-sidebar.js.map
@@ -1 +1 @@
-{"version":3,"file":"files-sidebar.js?v=2627134b3ccf1f9e0add","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/node_modules/@nextcloud/moment/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/apps/files/src/services/FileInfo.js","webpack:///nextcloud/apps/files/src/components/SidebarTab.vue?vue&type=template&id=695d5bae&","webpack:///nextcloud/apps/files/src/components/SidebarTab.vue","webpack:///nextcloud/apps/files/src/components/SidebarTab.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files/src/components/SidebarTab.vue?7aea","webpack:///nextcloud/apps/files/src/components/LegacyView.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files/src/components/LegacyView.vue","webpack://nextcloud/./apps/files/src/components/LegacyView.vue?a2e2","webpack:///nextcloud/apps/files/src/components/LegacyView.vue?vue&type=template&id=2245cbe7&","webpack:///nextcloud/apps/files/src/views/Sidebar.vue","webpack:///nextcloud/apps/files/src/views/Sidebar.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files/src/views/Sidebar.vue?70dd","webpack://nextcloud/./apps/files/src/views/Sidebar.vue?0b21","webpack:///nextcloud/apps/files/src/views/Sidebar.vue?vue&type=template&id=780526c0&scoped=true&","webpack:///nextcloud/apps/files/src/services/Sidebar.js","webpack:///nextcloud/apps/files/src/models/Tab.js","webpack:///nextcloud/apps/files/src/sidebar.js","webpack:///nextcloud/apps/files/src/views/Sidebar.vue?vue&type=style&index=0&id=780526c0&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};","var map = {\n\t\"./af\": 36026,\n\t\"./af.js\": 36026,\n\t\"./ar\": 28093,\n\t\"./ar-dz\": 41943,\n\t\"./ar-dz.js\": 41943,\n\t\"./ar-kw\": 23969,\n\t\"./ar-kw.js\": 23969,\n\t\"./ar-ly\": 40594,\n\t\"./ar-ly.js\": 40594,\n\t\"./ar-ma\": 18369,\n\t\"./ar-ma.js\": 18369,\n\t\"./ar-sa\": 32579,\n\t\"./ar-sa.js\": 32579,\n\t\"./ar-tn\": 76442,\n\t\"./ar-tn.js\": 76442,\n\t\"./ar.js\": 28093,\n\t\"./az\": 86425,\n\t\"./az.js\": 86425,\n\t\"./be\": 22004,\n\t\"./be.js\": 22004,\n\t\"./bg\": 42982,\n\t\"./bg.js\": 42982,\n\t\"./bm\": 21067,\n\t\"./bm.js\": 21067,\n\t\"./bn\": 8366,\n\t\"./bn-bd\": 63837,\n\t\"./bn-bd.js\": 63837,\n\t\"./bn.js\": 8366,\n\t\"./bo\": 95040,\n\t\"./bo.js\": 95040,\n\t\"./br\": 521,\n\t\"./br.js\": 521,\n\t\"./bs\": 83242,\n\t\"./bs.js\": 83242,\n\t\"./ca\": 73046,\n\t\"./ca.js\": 73046,\n\t\"./cs\": 25794,\n\t\"./cs.js\": 25794,\n\t\"./cv\": 28231,\n\t\"./cv.js\": 28231,\n\t\"./cy\": 10927,\n\t\"./cy.js\": 10927,\n\t\"./da\": 42832,\n\t\"./da.js\": 42832,\n\t\"./de\": 29415,\n\t\"./de-at\": 3331,\n\t\"./de-at.js\": 3331,\n\t\"./de-ch\": 45524,\n\t\"./de-ch.js\": 45524,\n\t\"./de.js\": 29415,\n\t\"./dv\": 44700,\n\t\"./dv.js\": 44700,\n\t\"./el\": 88752,\n\t\"./el.js\": 88752,\n\t\"./en-au\": 90444,\n\t\"./en-au.js\": 90444,\n\t\"./en-ca\": 65959,\n\t\"./en-ca.js\": 65959,\n\t\"./en-gb\": 62762,\n\t\"./en-gb.js\": 62762,\n\t\"./en-ie\": 40909,\n\t\"./en-ie.js\": 40909,\n\t\"./en-il\": 79909,\n\t\"./en-il.js\": 79909,\n\t\"./en-in\": 87942,\n\t\"./en-in.js\": 87942,\n\t\"./en-nz\": 75200,\n\t\"./en-nz.js\": 75200,\n\t\"./en-sg\": 21415,\n\t\"./en-sg.js\": 21415,\n\t\"./eo\": 27447,\n\t\"./eo.js\": 27447,\n\t\"./es\": 86756,\n\t\"./es-do\": 47049,\n\t\"./es-do.js\": 47049,\n\t\"./es-mx\": 15915,\n\t\"./es-mx.js\": 15915,\n\t\"./es-us\": 57133,\n\t\"./es-us.js\": 57133,\n\t\"./es.js\": 86756,\n\t\"./et\": 72182,\n\t\"./et.js\": 72182,\n\t\"./eu\": 14419,\n\t\"./eu.js\": 14419,\n\t\"./fa\": 2916,\n\t\"./fa.js\": 2916,\n\t\"./fi\": 49964,\n\t\"./fi.js\": 49964,\n\t\"./fil\": 16448,\n\t\"./fil.js\": 16448,\n\t\"./fo\": 26094,\n\t\"./fo.js\": 26094,\n\t\"./fr\": 35833,\n\t\"./fr-ca\": 56994,\n\t\"./fr-ca.js\": 56994,\n\t\"./fr-ch\": 2740,\n\t\"./fr-ch.js\": 2740,\n\t\"./fr.js\": 35833,\n\t\"./fy\": 69542,\n\t\"./fy.js\": 69542,\n\t\"./ga\": 93264,\n\t\"./ga.js\": 93264,\n\t\"./gd\": 77457,\n\t\"./gd.js\": 77457,\n\t\"./gl\": 83043,\n\t\"./gl.js\": 83043,\n\t\"./gom-deva\": 24034,\n\t\"./gom-deva.js\": 24034,\n\t\"./gom-latn\": 28379,\n\t\"./gom-latn.js\": 28379,\n\t\"./gu\": 406,\n\t\"./gu.js\": 406,\n\t\"./he\": 73219,\n\t\"./he.js\": 73219,\n\t\"./hi\": 99834,\n\t\"./hi.js\": 99834,\n\t\"./hr\": 28754,\n\t\"./hr.js\": 28754,\n\t\"./hu\": 93945,\n\t\"./hu.js\": 93945,\n\t\"./hy-am\": 81319,\n\t\"./hy-am.js\": 81319,\n\t\"./id\": 24875,\n\t\"./id.js\": 24875,\n\t\"./is\": 23724,\n\t\"./is.js\": 23724,\n\t\"./it\": 79906,\n\t\"./it-ch\": 34303,\n\t\"./it-ch.js\": 34303,\n\t\"./it.js\": 79906,\n\t\"./ja\": 77105,\n\t\"./ja.js\": 77105,\n\t\"./jv\": 15026,\n\t\"./jv.js\": 15026,\n\t\"./ka\": 67416,\n\t\"./ka.js\": 67416,\n\t\"./kk\": 79734,\n\t\"./kk.js\": 79734,\n\t\"./km\": 60757,\n\t\"./km.js\": 60757,\n\t\"./kn\": 58369,\n\t\"./kn.js\": 58369,\n\t\"./ko\": 77687,\n\t\"./ko.js\": 77687,\n\t\"./ku\": 95544,\n\t\"./ku.js\": 95544,\n\t\"./ky\": 85431,\n\t\"./ky.js\": 85431,\n\t\"./lb\": 13613,\n\t\"./lb.js\": 13613,\n\t\"./lo\": 34252,\n\t\"./lo.js\": 34252,\n\t\"./lt\": 84619,\n\t\"./lt.js\": 84619,\n\t\"./lv\": 93760,\n\t\"./lv.js\": 93760,\n\t\"./me\": 93393,\n\t\"./me.js\": 93393,\n\t\"./mi\": 12369,\n\t\"./mi.js\": 12369,\n\t\"./mk\": 48664,\n\t\"./mk.js\": 48664,\n\t\"./ml\": 23099,\n\t\"./ml.js\": 23099,\n\t\"./mn\": 98539,\n\t\"./mn.js\": 98539,\n\t\"./mr\": 778,\n\t\"./mr.js\": 778,\n\t\"./ms\": 39970,\n\t\"./ms-my\": 82625,\n\t\"./ms-my.js\": 82625,\n\t\"./ms.js\": 39970,\n\t\"./mt\": 15714,\n\t\"./mt.js\": 15714,\n\t\"./my\": 53055,\n\t\"./my.js\": 53055,\n\t\"./nb\": 73945,\n\t\"./nb.js\": 73945,\n\t\"./ne\": 63645,\n\t\"./ne.js\": 63645,\n\t\"./nl\": 4829,\n\t\"./nl-be\": 12823,\n\t\"./nl-be.js\": 12823,\n\t\"./nl.js\": 4829,\n\t\"./nn\": 23756,\n\t\"./nn.js\": 23756,\n\t\"./oc-lnc\": 41228,\n\t\"./oc-lnc.js\": 41228,\n\t\"./pa-in\": 97877,\n\t\"./pa-in.js\": 97877,\n\t\"./pl\": 53066,\n\t\"./pl.js\": 53066,\n\t\"./pt\": 28677,\n\t\"./pt-br\": 81592,\n\t\"./pt-br.js\": 81592,\n\t\"./pt.js\": 28677,\n\t\"./ro\": 32722,\n\t\"./ro.js\": 32722,\n\t\"./ru\": 59138,\n\t\"./ru.js\": 59138,\n\t\"./sd\": 32568,\n\t\"./sd.js\": 32568,\n\t\"./se\": 49753,\n\t\"./se.js\": 49753,\n\t\"./si\": 58024,\n\t\"./si.js\": 58024,\n\t\"./sk\": 31058,\n\t\"./sk.js\": 31058,\n\t\"./sl\": 43452,\n\t\"./sl.js\": 43452,\n\t\"./sq\": 2795,\n\t\"./sq.js\": 2795,\n\t\"./sr\": 26976,\n\t\"./sr-cyrl\": 38819,\n\t\"./sr-cyrl.js\": 38819,\n\t\"./sr.js\": 26976,\n\t\"./ss\": 7467,\n\t\"./ss.js\": 7467,\n\t\"./sv\": 42787,\n\t\"./sv.js\": 42787,\n\t\"./sw\": 80298,\n\t\"./sw.js\": 80298,\n\t\"./ta\": 57532,\n\t\"./ta.js\": 57532,\n\t\"./te\": 76076,\n\t\"./te.js\": 76076,\n\t\"./tet\": 40452,\n\t\"./tet.js\": 40452,\n\t\"./tg\": 64794,\n\t\"./tg.js\": 64794,\n\t\"./th\": 48245,\n\t\"./th.js\": 48245,\n\t\"./tk\": 8870,\n\t\"./tk.js\": 8870,\n\t\"./tl-ph\": 36056,\n\t\"./tl-ph.js\": 36056,\n\t\"./tlh\": 15249,\n\t\"./tlh.js\": 15249,\n\t\"./tr\": 22053,\n\t\"./tr.js\": 22053,\n\t\"./tzl\": 39871,\n\t\"./tzl.js\": 39871,\n\t\"./tzm\": 39574,\n\t\"./tzm-latn\": 19210,\n\t\"./tzm-latn.js\": 19210,\n\t\"./tzm.js\": 39574,\n\t\"./ug-cn\": 91532,\n\t\"./ug-cn.js\": 91532,\n\t\"./uk\": 11432,\n\t\"./uk.js\": 11432,\n\t\"./ur\": 88523,\n\t\"./ur.js\": 88523,\n\t\"./uz\": 54958,\n\t\"./uz-latn\": 68735,\n\t\"./uz-latn.js\": 68735,\n\t\"./uz.js\": 54958,\n\t\"./vi\": 83398,\n\t\"./vi.js\": 83398,\n\t\"./x-pseudo\": 56665,\n\t\"./x-pseudo.js\": 56665,\n\t\"./yo\": 11642,\n\t\"./yo.js\": 11642,\n\t\"./zh-cn\": 5462,\n\t\"./zh-cn.js\": 5462,\n\t\"./zh-hk\": 92530,\n\t\"./zh-hk.js\": 92530,\n\t\"./zh-mo\": 41650,\n\t\"./zh-mo.js\": 41650,\n\t\"./zh-tw\": 97333,\n\t\"./zh-tw.js\": 97333\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 93365;","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport axios from '@nextcloud/axios'\n\n/**\n * @param {any} url -\n */\nexport default async function(url) {\n\tconst response = await axios({\n\t\tmethod: 'PROPFIND',\n\t\turl,\n\t\tdata: `<?xml version=\"1.0\"?>\n\t\t\t<d:propfind xmlns:d=\"DAV:\"\n\t\t\t\txmlns:oc=\"http://owncloud.org/ns\"\n\t\t\t\txmlns:nc=\"http://nextcloud.org/ns\"\n\t\t\t\txmlns:ocs=\"http://open-collaboration-services.org/ns\">\n\t\t\t<d:prop>\n\t\t\t\t<d:getlastmodified />\n\t\t\t\t<d:getetag />\n\t\t\t\t<d:getcontenttype />\n\t\t\t\t<d:resourcetype />\n\t\t\t\t<oc:fileid />\n\t\t\t\t<oc:permissions />\n\t\t\t\t<oc:size />\n\t\t\t\t<d:getcontentlength />\n\t\t\t\t<nc:has-preview />\n\t\t\t\t<nc:mount-type />\n\t\t\t\t<nc:is-encrypted />\n\t\t\t\t<ocs:share-permissions />\n\t\t\t\t<oc:tags />\n\t\t\t\t<oc:favorite />\n\t\t\t\t<oc:comments-unread />\n\t\t\t\t<oc:owner-id />\n\t\t\t\t<oc:owner-display-name />\n\t\t\t\t<oc:share-types />\n\t\t\t</d:prop>\n\t\t\t</d:propfind>`,\n\t})\n\n\t// TODO: create new parser or use cdav-lib when available\n\tconst file = OCA.Files.App.fileList.filesClient._client.parseMultiStatus(response.data)\n\t// TODO: create new parser or use cdav-lib when available\n\tconst fileInfo = OCA.Files.App.fileList.filesClient._parseFileInfo(file[0])\n\n\t// TODO remove when no more legacy backbone is used\n\tfileInfo.get = (key) => fileInfo[key]\n\tfileInfo.isDirectory = () => fileInfo.mimetype === 'httpd/unix-directory'\n\n\treturn fileInfo\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('AppSidebarTab',{ref:\"tab\",attrs:{\"id\":_vm.id,\"name\":_vm.name,\"icon\":_vm.icon},on:{\"bottomReached\":_vm.onScrollBottomReached}},[(_vm.loading)?_c('EmptyContent',{attrs:{\"icon\":\"icon-loading\"}}):_vm._e(),_vm._v(\" \"),_c('div',{ref:\"mount\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n<template>\n\t<AppSidebarTab :id=\"id\"\n\t\tref=\"tab\"\n\t\t:name=\"name\"\n\t\t:icon=\"icon\"\n\t\t@bottomReached=\"onScrollBottomReached\">\n\t\t<!-- Fallback loading -->\n\t\t<EmptyContent v-if=\"loading\" icon=\"icon-loading\" />\n\n\t\t<!-- Using a dummy div as Vue mount replace the element directly\n\t\t\tIt does NOT append to the content -->\n\t\t<div ref=\"mount\" />\n\t</AppSidebarTab>\n</template>\n\n<script>\nimport AppSidebarTab from '@nextcloud/vue/dist/Components/AppSidebarTab'\nimport EmptyContent from '@nextcloud/vue/dist/Components/EmptyContent'\n\nexport default {\n\tname: 'SidebarTab',\n\n\tcomponents: {\n\t\tAppSidebarTab,\n\t\tEmptyContent,\n\t},\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tid: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\n\t\t/**\n\t\t * Lifecycle methods.\n\t\t * They are prefixed with `on` to avoid conflict with Vue\n\t\t * methods like this.destroy\n\t\t */\n\t\tonMount: {\n\t\t\ttype: Function,\n\t\t\trequired: true,\n\t\t},\n\t\tonUpdate: {\n\t\t\ttype: Function,\n\t\t\trequired: true,\n\t\t},\n\t\tonDestroy: {\n\t\t\ttype: Function,\n\t\t\trequired: true,\n\t\t},\n\t\tonScrollBottomReached: {\n\t\t\ttype: Function,\n\t\t\tdefault: () => {},\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: true,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t// TODO: implement a better way to force pass a prop from Sidebar\n\t\tactiveTab() {\n\t\t\treturn this.$parent.activeTab\n\t\t},\n\t},\n\n\twatch: {\n\t\tasync fileInfo(newFile, oldFile) {\n\t\t\t// Update fileInfo on change\n\t\t\tif (newFile.id !== oldFile.id) {\n\t\t\t\tthis.loading = true\n\t\t\t\tawait this.onUpdate(this.fileInfo)\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n\n\tasync mounted() {\n\t\tthis.loading = true\n\t\t// Mount the tab: mounting point, fileInfo, vue context\n\t\tawait this.onMount(this.$refs.mount, this.fileInfo, this.$refs.tab)\n\t\tthis.loading = false\n\t},\n\n\tasync beforeDestroy() {\n\t\t// unmount the tab\n\t\tawait this.onDestroy()\n\t},\n}\n</script>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarTab.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!./SidebarTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SidebarTab.vue?vue&type=template&id=695d5bae&\"\nimport script from \"./SidebarTab.vue?vue&type=script&lang=js&\"\nexport * from \"./SidebarTab.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LegacyView.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!./LegacyView.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<div />\n</template>\n<script>\nexport default {\n\tname: 'LegacyView',\n\tprops: {\n\t\tcomponent: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t},\n\twatch: {\n\t\tfileInfo(fileInfo) {\n\t\t\t// update the backbone model FileInfo\n\t\t\tthis.setFileInfo(fileInfo)\n\t\t},\n\t},\n\tmounted() {\n\t\t// append the backbone element and set the FileInfo\n\t\tthis.component.$el.replaceAll(this.$el)\n\t\tthis.setFileInfo(this.fileInfo)\n\t},\n\tmethods: {\n\t\tsetFileInfo(fileInfo) {\n\t\t\tthis.component.setFileInfo(new OCA.Files.FileInfoModel(fileInfo))\n\t\t},\n\t},\n}\n</script>\n<style>\n</style>\n","import { render, staticRenderFns } from \"./LegacyView.vue?vue&type=template&id=2245cbe7&\"\nimport script from \"./LegacyView.vue?vue&type=script&lang=js&\"\nexport * from \"./LegacyView.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div')}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<AppSidebar v-if=\"file\"\n\t\tref=\"sidebar\"\n\t\tv-bind=\"appSidebar\"\n\t\t:force-menu=\"true\"\n\t\t@close=\"close\"\n\t\t@update:active=\"setActiveTab\"\n\t\t@update:starred=\"toggleStarred\"\n\t\t@[defaultActionListener].stop.prevent=\"onDefaultAction\"\n\t\t@opening=\"handleOpening\"\n\t\t@opened=\"handleOpened\"\n\t\t@closing=\"handleClosing\"\n\t\t@closed=\"handleClosed\">\n\t\t<!-- TODO: create a standard to allow multiple elements here? -->\n\t\t<template v-if=\"fileInfo\" #description>\n\t\t\t<LegacyView v-for=\"view in views\"\n\t\t\t\t:key=\"view.cid\"\n\t\t\t\t:component=\"view\"\n\t\t\t\t:file-info=\"fileInfo\" />\n\t\t</template>\n\n\t\t<!-- Actions menu -->\n\t\t<template v-if=\"fileInfo\" #secondary-actions>\n\t\t\t<!-- TODO: create proper api for apps to register actions\n\t\t\tAnd inject themselves here. -->\n\t\t\t<ActionButton v-if=\"isSystemTagsEnabled\"\n\t\t\t\t:close-after-click=\"true\"\n\t\t\t\ticon=\"icon-tag\"\n\t\t\t\t@click=\"toggleTags\">\n\t\t\t\t{{ t('files', 'Tags') }}\n\t\t\t</ActionButton>\n\t\t</template>\n\n\t\t<!-- Error display -->\n\t\t<EmptyContent v-if=\"error\" icon=\"icon-error\">\n\t\t\t{{ error }}\n\t\t</EmptyContent>\n\n\t\t<!-- If fileInfo fetch is complete, render tabs -->\n\t\t<template v-for=\"tab in tabs\" v-else-if=\"fileInfo\">\n\t\t\t<!-- Hide them if we're loading another file but keep them mounted -->\n\t\t\t<SidebarTab v-if=\"tab.enabled(fileInfo)\"\n\t\t\t\tv-show=\"!loading\"\n\t\t\t\t:id=\"tab.id\"\n\t\t\t\t:key=\"tab.id\"\n\t\t\t\t:name=\"tab.name\"\n\t\t\t\t:icon=\"tab.icon\"\n\t\t\t\t:on-mount=\"tab.mount\"\n\t\t\t\t:on-update=\"tab.update\"\n\t\t\t\t:on-destroy=\"tab.destroy\"\n\t\t\t\t:on-scroll-bottom-reached=\"tab.scrollBottomReached\"\n\t\t\t\t:file-info=\"fileInfo\" />\n\t\t</template>\n\t</AppSidebar>\n</template>\n<script>\nimport { encodePath } from '@nextcloud/paths'\nimport $ from 'jquery'\nimport axios from '@nextcloud/axios'\nimport { emit } from '@nextcloud/event-bus'\nimport moment from '@nextcloud/moment'\nimport { Type as ShareTypes } from '@nextcloud/sharing'\n\nimport AppSidebar from '@nextcloud/vue/dist/Components/AppSidebar'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport EmptyContent from '@nextcloud/vue/dist/Components/EmptyContent'\n\nimport FileInfo from '../services/FileInfo'\nimport SidebarTab from '../components/SidebarTab'\nimport LegacyView from '../components/LegacyView'\n\nexport default {\n\tname: 'Sidebar',\n\n\tcomponents: {\n\t\tActionButton,\n\t\tAppSidebar,\n\t\tEmptyContent,\n\t\tLegacyView,\n\t\tSidebarTab,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\t// reactive state\n\t\t\tSidebar: OCA.Files.Sidebar.state,\n\t\t\terror: null,\n\t\t\tloading: true,\n\t\t\tfileInfo: null,\n\t\t\tstarLoading: false,\n\t\t\tisFullScreen: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Current filename\n\t\t * This is bound to the Sidebar service and\n\t\t * is used to load a new file\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tfile() {\n\t\t\treturn this.Sidebar.file\n\t\t},\n\n\t\t/**\n\t\t * List of all the registered tabs\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\ttabs() {\n\t\t\treturn this.Sidebar.tabs\n\t\t},\n\n\t\t/**\n\t\t * List of all the registered views\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\tviews() {\n\t\t\treturn this.Sidebar.views\n\t\t},\n\n\t\t/**\n\t\t * Current user dav root path\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tdavPath() {\n\t\t\tconst user = OC.getCurrentUser().uid\n\t\t\treturn OC.linkToRemote(`dav/files/${user}${encodePath(this.file)}`)\n\t\t},\n\n\t\t/**\n\t\t * Current active tab handler\n\t\t *\n\t\t * @param {string} id the tab id to set as active\n\t\t * @return {string} the current active tab\n\t\t */\n\t\tactiveTab() {\n\t\t\treturn this.Sidebar.activeTab\n\t\t},\n\n\t\t/**\n\t\t * Sidebar subtitle\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tsubtitle() {\n\t\t\treturn `${this.size}, ${this.time}`\n\t\t},\n\n\t\t/**\n\t\t * File last modified formatted string\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\ttime() {\n\t\t\treturn OC.Util.relativeModifiedDate(this.fileInfo.mtime)\n\t\t},\n\n\t\t/**\n\t\t * File last modified full string\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tfullTime() {\n\t\t\treturn moment(this.fileInfo.mtime).format('LLL')\n\t\t},\n\n\t\t/**\n\t\t * File size formatted string\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tsize() {\n\t\t\treturn OC.Util.humanFileSize(this.fileInfo.size)\n\t\t},\n\n\t\t/**\n\t\t * File background/figure to illustrate the sidebar header\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tbackground() {\n\t\t\treturn this.getPreviewIfAny(this.fileInfo)\n\t\t},\n\n\t\t/**\n\t\t * App sidebar v-binding object\n\t\t *\n\t\t * @return {object}\n\t\t */\n\t\tappSidebar() {\n\t\t\tif (this.fileInfo) {\n\t\t\t\treturn {\n\t\t\t\t\t'data-mimetype': this.fileInfo.mimetype,\n\t\t\t\t\t'star-loading': this.starLoading,\n\t\t\t\t\tactive: this.activeTab,\n\t\t\t\t\tbackground: this.background,\n\t\t\t\t\tclass: {\n\t\t\t\t\t\t'app-sidebar--has-preview': this.fileInfo.hasPreview && !this.isFullScreen,\n\t\t\t\t\t\t'app-sidebar--full': this.isFullScreen,\n\t\t\t\t\t},\n\t\t\t\t\tcompact: !this.fileInfo.hasPreview || this.isFullScreen,\n\t\t\t\t\tloading: this.loading,\n\t\t\t\t\tstarred: this.fileInfo.isFavourited,\n\t\t\t\t\tsubtitle: this.subtitle,\n\t\t\t\t\tsubtitleTooltip: this.fullTime,\n\t\t\t\t\ttitle: this.fileInfo.name,\n\t\t\t\t\ttitleTooltip: this.fileInfo.name,\n\t\t\t\t}\n\t\t\t} else if (this.error) {\n\t\t\t\treturn {\n\t\t\t\t\tkey: 'error', // force key to re-render\n\t\t\t\t\tsubtitle: '',\n\t\t\t\t\ttitle: '',\n\t\t\t\t}\n\t\t\t}\n\t\t\t// no fileInfo yet, showing empty data\n\t\t\treturn {\n\t\t\t\tloading: this.loading,\n\t\t\t\tsubtitle: '',\n\t\t\t\ttitle: '',\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Default action object for the current file\n\t\t *\n\t\t * @return {object}\n\t\t */\n\t\tdefaultAction() {\n\t\t\treturn this.fileInfo\n\t\t\t\t&& OCA.Files && OCA.Files.App && OCA.Files.App.fileList\n\t\t\t\t&& OCA.Files.App.fileList.fileActions\n\t\t\t\t&& OCA.Files.App.fileList.fileActions.getDefaultFileAction\n\t\t\t\t&& OCA.Files.App.fileList\n\t\t\t\t\t.fileActions.getDefaultFileAction(this.fileInfo.mimetype, this.fileInfo.type, OC.PERMISSION_READ)\n\n\t\t},\n\n\t\t/**\n\t\t * Dynamic header click listener to ensure\n\t\t * nothing is listening for a click if there\n\t\t * is no default action\n\t\t *\n\t\t * @return {string|null}\n\t\t */\n\t\tdefaultActionListener() {\n\t\t\treturn this.defaultAction ? 'figure-click' : null\n\t\t},\n\n\t\tisSystemTagsEnabled() {\n\t\t\treturn OCA && 'SystemTags' in OCA\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Can this tab be displayed ?\n\t\t *\n\t\t * @param {object} tab a registered tab\n\t\t * @return {boolean}\n\t\t */\n\t\tcanDisplay(tab) {\n\t\t\treturn tab.enabled(this.fileInfo)\n\t\t},\n\t\tresetData() {\n\t\t\tthis.error = null\n\t\t\tthis.fileInfo = null\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tif (this.$refs.tabs) {\n\t\t\t\t\tthis.$refs.tabs.updateTabs()\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\n\t\tgetPreviewIfAny(fileInfo) {\n\t\t\tif (fileInfo.hasPreview && !this.isFullScreen) {\n\t\t\t\treturn OC.generateUrl(`/core/preview?fileId=${fileInfo.id}&x=${screen.width}&y=${screen.height}&a=true`)\n\t\t\t}\n\t\t\treturn this.getIconUrl(fileInfo)\n\t\t},\n\n\t\t/**\n\t\t * Copied from https://github.com/nextcloud/server/blob/16e0887ec63591113ee3f476e0c5129e20180cde/apps/files/js/filelist.js#L1377\n\t\t * TODO: We also need this as a standalone library\n\t\t *\n\t\t * @param {object} fileInfo the fileinfo\n\t\t * @return {string} Url to the icon for mimeType\n\t\t */\n\t\tgetIconUrl(fileInfo) {\n\t\t\tconst mimeType = fileInfo.mimetype || 'application/octet-stream'\n\t\t\tif (mimeType === 'httpd/unix-directory') {\n\t\t\t\t// use default folder icon\n\t\t\t\tif (fileInfo.mountType === 'shared' || fileInfo.mountType === 'shared-root') {\n\t\t\t\t\treturn OC.MimeType.getIconUrl('dir-shared')\n\t\t\t\t} else if (fileInfo.mountType === 'external-root') {\n\t\t\t\t\treturn OC.MimeType.getIconUrl('dir-external')\n\t\t\t\t} else if (fileInfo.mountType !== undefined && fileInfo.mountType !== '') {\n\t\t\t\t\treturn OC.MimeType.getIconUrl('dir-' + fileInfo.mountType)\n\t\t\t\t} else if (fileInfo.shareTypes && (\n\t\t\t\t\tfileInfo.shareTypes.indexOf(ShareTypes.SHARE_TYPE_LINK) > -1\n\t\t\t\t\t|| fileInfo.shareTypes.indexOf(ShareTypes.SHARE_TYPE_EMAIL) > -1)\n\t\t\t\t) {\n\t\t\t\t\treturn OC.MimeType.getIconUrl('dir-public')\n\t\t\t\t} else if (fileInfo.shareTypes && fileInfo.shareTypes.length > 0) {\n\t\t\t\t\treturn OC.MimeType.getIconUrl('dir-shared')\n\t\t\t\t}\n\t\t\t\treturn OC.MimeType.getIconUrl('dir')\n\t\t\t}\n\t\t\treturn OC.MimeType.getIconUrl(mimeType)\n\t\t},\n\n\t\t/**\n\t\t * Set current active tab\n\t\t *\n\t\t * @param {string} id tab unique id\n\t\t */\n\t\tsetActiveTab(id) {\n\t\t\tOCA.Files.Sidebar.setActiveTab(id)\n\t\t},\n\n\t\t/**\n\t\t * Toggle favourite state\n\t\t * TODO: better implementation\n\t\t *\n\t\t * @param {boolean} state favourited or not\n\t\t */\n\t\tasync toggleStarred(state) {\n\t\t\ttry {\n\t\t\t\tthis.starLoading = true\n\t\t\t\tawait axios({\n\t\t\t\t\tmethod: 'PROPPATCH',\n\t\t\t\t\turl: this.davPath,\n\t\t\t\t\tdata: `<?xml version=\"1.0\"?>\n\t\t\t\t\t\t<d:propertyupdate xmlns:d=\"DAV:\" xmlns:oc=\"http://owncloud.org/ns\">\n\t\t\t\t\t\t${state ? '<d:set>' : '<d:remove>'}\n\t\t\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t\t\t<oc:favorite>1</oc:favorite>\n\t\t\t\t\t\t\t</d:prop>\n\t\t\t\t\t\t${state ? '</d:set>' : '</d:remove>'}\n\t\t\t\t\t\t</d:propertyupdate>`,\n\t\t\t\t})\n\n\t\t\t\t// TODO: Obliterate as soon as possible and use events with new files app\n\t\t\t\t// Terrible fallback for legacy files: toggle filelist as well\n\t\t\t\tif (OCA.Files && OCA.Files.App && OCA.Files.App.fileList && OCA.Files.App.fileList.fileActions) {\n\t\t\t\t\tOCA.Files.App.fileList.fileActions.triggerAction('Favorite', OCA.Files.App.fileList.getModelForFile(this.fileInfo.name), OCA.Files.App.fileList)\n\t\t\t\t}\n\n\t\t\t} catch (error) {\n\t\t\t\tOC.Notification.showTemporary(t('files', 'Unable to change the favourite state of the file'))\n\t\t\t\tconsole.error('Unable to change favourite state', error)\n\t\t\t}\n\t\t\tthis.starLoading = false\n\t\t},\n\n\t\tonDefaultAction() {\n\t\t\tif (this.defaultAction) {\n\t\t\t\t// generate fake context\n\t\t\t\tthis.defaultAction.action(this.fileInfo.name, {\n\t\t\t\t\tfileInfo: this.fileInfo,\n\t\t\t\t\tdir: this.fileInfo.dir,\n\t\t\t\t\tfileList: OCA.Files.App.fileList,\n\t\t\t\t\t$file: $('body'),\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Toggle the tags selector\n\t\t */\n\t\ttoggleTags() {\n\t\t\tif (OCA.SystemTags && OCA.SystemTags.View) {\n\t\t\t\tOCA.SystemTags.View.toggle()\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Open the sidebar for the given file\n\t\t *\n\t\t * @param {string} path the file path to load\n\t\t * @return {Promise}\n\t\t * @throws {Error} loading failure\n\t\t */\n\t\tasync open(path) {\n\t\t\t// update current opened file\n\t\t\tthis.Sidebar.file = path\n\n\t\t\tif (path && path.trim() !== '') {\n\t\t\t\t// reset data, keep old fileInfo to not reload all tabs and just hide them\n\t\t\t\tthis.error = null\n\t\t\t\tthis.loading = true\n\n\t\t\t\ttry {\n\t\t\t\t\tthis.fileInfo = await FileInfo(this.davPath)\n\t\t\t\t\t// adding this as fallback because other apps expect it\n\t\t\t\t\tthis.fileInfo.dir = this.file.split('/').slice(0, -1).join('/')\n\n\t\t\t\t\t// DEPRECATED legacy views\n\t\t\t\t\t// TODO: remove\n\t\t\t\t\tthis.views.forEach(view => {\n\t\t\t\t\t\tview.setFileInfo(this.fileInfo)\n\t\t\t\t\t})\n\n\t\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t\tif (this.$refs.tabs) {\n\t\t\t\t\t\t\tthis.$refs.tabs.updateTabs()\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthis.error = t('files', 'Error while loading the file data')\n\t\t\t\t\tconsole.error('Error while loading the file data', error)\n\n\t\t\t\t\tthrow new Error(error)\n\t\t\t\t} finally {\n\t\t\t\t\tthis.loading = false\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Close the sidebar\n\t\t */\n\t\tclose() {\n\t\t\tthis.Sidebar.file = ''\n\t\t\tthis.resetData()\n\t\t},\n\n\t\t/**\n\t\t * Allow to set the Sidebar as fullscreen from OCA.Files.Sidebar\n\t\t *\n\t\t * @param {boolean} isFullScreen - Wether or not to render the Sidebar in fullscreen.\n\t\t */\n\t\tsetFullScreenMode(isFullScreen) {\n\t\t\tthis.isFullScreen = isFullScreen\n\t\t},\n\n\t\t/**\n\t\t * Emit SideBar events.\n\t\t */\n\t\thandleOpening() {\n\t\t\temit('files:sidebar:opening')\n\t\t},\n\t\thandleOpened() {\n\t\t\temit('files:sidebar:opened')\n\t\t},\n\t\thandleClosing() {\n\t\t\temit('files:sidebar:closing')\n\t\t},\n\t\thandleClosed() {\n\t\t\temit('files:sidebar:closed')\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n.app-sidebar {\n\t&--has-preview::v-deep {\n\t\t.app-sidebar-header__figure {\n\t\t\tbackground-size: cover;\n\t\t}\n\n\t\t&[data-mimetype=\"text/plain\"],\n\t\t&[data-mimetype=\"text/markdown\"] {\n\t\t\t.app-sidebar-header__figure {\n\t\t\t\tbackground-size: contain;\n\t\t\t}\n\t\t}\n\t}\n\n\t&--full {\n\t\tposition: fixed !important;\n\t\tz-index: 2025 !important;\n\t\ttop: 0 !important;\n\t\theight: 100% !important;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Sidebar.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!./Sidebar.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!./Sidebar.vue?vue&type=style&index=0&id=780526c0&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!./Sidebar.vue?vue&type=style&index=0&id=780526c0&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Sidebar.vue?vue&type=template&id=780526c0&scoped=true&\"\nimport script from \"./Sidebar.vue?vue&type=script&lang=js&\"\nexport * from \"./Sidebar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Sidebar.vue?vue&type=style&index=0&id=780526c0&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 \"780526c0\",\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 (_vm.file)?_c('AppSidebar',_vm._b({ref:\"sidebar\",attrs:{\"force-menu\":true},on:_vm._d({\"close\":_vm.close,\"update:active\":_vm.setActiveTab,\"update:starred\":_vm.toggleStarred,\"opening\":_vm.handleOpening,\"opened\":_vm.handleOpened,\"closing\":_vm.handleClosing,\"closed\":_vm.handleClosed},[_vm.defaultActionListener,function($event){$event.stopPropagation();$event.preventDefault();return _vm.onDefaultAction.apply(null, arguments)}]),scopedSlots:_vm._u([(_vm.fileInfo)?{key:\"description\",fn:function(){return _vm._l((_vm.views),function(view){return _c('LegacyView',{key:view.cid,attrs:{\"component\":view,\"file-info\":_vm.fileInfo}})})},proxy:true}:null,(_vm.fileInfo)?{key:\"secondary-actions\",fn:function(){return [(_vm.isSystemTagsEnabled)?_c('ActionButton',{attrs:{\"close-after-click\":true,\"icon\":\"icon-tag\"},on:{\"click\":_vm.toggleTags}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'Tags'))+\"\\n\\t\\t\")]):_vm._e()]},proxy:true}:null],null,true)},'AppSidebar',_vm.appSidebar,false),[_vm._v(\" \"),_vm._v(\" \"),(_vm.error)?_c('EmptyContent',{attrs:{\"icon\":\"icon-error\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.error)+\"\\n\\t\")]):(_vm.fileInfo)?_vm._l((_vm.tabs),function(tab){return [(tab.enabled(_vm.fileInfo))?_c('SidebarTab',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.loading),expression:\"!loading\"}],key:tab.id,attrs:{\"id\":tab.id,\"name\":tab.name,\"icon\":tab.icon,\"on-mount\":tab.mount,\"on-update\":tab.update,\"on-destroy\":tab.destroy,\"on-scroll-bottom-reached\":tab.scrollBottomReached,\"file-info\":_vm.fileInfo}}):_vm._e()]}):_vm._e()],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nexport default class Sidebar {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.tabs = []\n\t\tthis._state.views = []\n\t\tthis._state.file = ''\n\t\tthis._state.activeTab = ''\n\t\tconsole.debug('OCA.Files.Sidebar initialized')\n\t}\n\n\t/**\n\t * Get the sidebar state\n\t *\n\t * @readonly\n\t * @memberof Sidebar\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new tab view\n\t *\n\t * @memberof Sidebar\n\t * @param {object} tab a new unregistered tab\n\t * @return {boolean}\n\t */\n\tregisterTab(tab) {\n\t\tconst hasDuplicate = this._state.tabs.findIndex(check => check.id === tab.id) > -1\n\t\tif (!hasDuplicate) {\n\t\t\tthis._state.tabs.push(tab)\n\t\t\treturn true\n\t\t}\n\t\tconsole.error(`An tab with the same id ${tab.id} already exists`, tab)\n\t\treturn false\n\t}\n\n\tregisterSecondaryView(view) {\n\t\tconst hasDuplicate = this._state.views.findIndex(check => check.id === view.id) > -1\n\t\tif (!hasDuplicate) {\n\t\t\tthis._state.views.push(view)\n\t\t\treturn true\n\t\t}\n\t\tconsole.error('A similar view already exists', view)\n\t\treturn false\n\t}\n\n\t/**\n\t * Return current opened file\n\t *\n\t * @memberof Sidebar\n\t * @return {string} the current opened file\n\t */\n\tget file() {\n\t\treturn this._state.file\n\t}\n\n\t/**\n\t * Set the current visible sidebar tab\n\t *\n\t * @memberof Sidebar\n\t * @param {string} id the tab unique id\n\t */\n\tsetActiveTab(id) {\n\t\tthis._state.activeTab = id\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nexport default class Tab {\n\n\t_id\n\t_name\n\t_icon\n\t_mount\n\t_update\n\t_destroy\n\t_enabled\n\t_scrollBottomReached\n\n\t/**\n\t * Create a new tab instance\n\t *\n\t * @param {object} options destructuring object\n\t * @param {string} options.id the unique id of this tab\n\t * @param {string} options.name the translated tab name\n\t * @param {string} options.icon the vue component\n\t * @param {Function} options.mount function to mount the tab\n\t * @param {Function} options.update function to update the tab\n\t * @param {Function} options.destroy function to destroy the tab\n\t * @param {Function} [options.enabled] define conditions whether this tab is active. Must returns a boolean\n\t * @param {Function} [options.scrollBottomReached] executed when the tab is scrolled to the bottom\n\t */\n\tconstructor({ id, name, icon, mount, update, destroy, enabled, scrollBottomReached } = {}) {\n\t\tif (enabled === undefined) {\n\t\t\tenabled = () => true\n\t\t}\n\t\tif (scrollBottomReached === undefined) {\n\t\t\tscrollBottomReached = () => {}\n\t\t}\n\n\t\t// Sanity checks\n\t\tif (typeof id !== 'string' || id.trim() === '') {\n\t\t\tthrow new Error('The id argument is not a valid string')\n\t\t}\n\t\tif (typeof name !== 'string' || name.trim() === '') {\n\t\t\tthrow new Error('The name argument is not a valid string')\n\t\t}\n\t\tif (typeof icon !== 'string' || icon.trim() === '') {\n\t\t\tthrow new Error('The icon argument is not a valid string')\n\t\t}\n\t\tif (typeof mount !== 'function') {\n\t\t\tthrow new Error('The mount argument should be a function')\n\t\t}\n\t\tif (typeof update !== 'function') {\n\t\t\tthrow new Error('The update argument should be a function')\n\t\t}\n\t\tif (typeof destroy !== 'function') {\n\t\t\tthrow new Error('The destroy argument should be a function')\n\t\t}\n\t\tif (typeof enabled !== 'function') {\n\t\t\tthrow new Error('The enabled argument should be a function')\n\t\t}\n\t\tif (typeof scrollBottomReached !== 'function') {\n\t\t\tthrow new Error('The scrollBottomReached argument should be a function')\n\t\t}\n\n\t\tthis._id = id\n\t\tthis._name = name\n\t\tthis._icon = icon\n\t\tthis._mount = mount\n\t\tthis._update = update\n\t\tthis._destroy = destroy\n\t\tthis._enabled = enabled\n\t\tthis._scrollBottomReached = scrollBottomReached\n\n\t}\n\n\tget id() {\n\t\treturn this._id\n\t}\n\n\tget name() {\n\t\treturn this._name\n\t}\n\n\tget icon() {\n\t\treturn this._icon\n\t}\n\n\tget mount() {\n\t\treturn this._mount\n\t}\n\n\tget update() {\n\t\treturn this._update\n\t}\n\n\tget destroy() {\n\t\treturn this._destroy\n\t}\n\n\tget enabled() {\n\t\treturn this._enabled\n\t}\n\n\tget scrollBottomReached() {\n\t\treturn this._scrollBottomReached\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport Vue from 'vue'\nimport { translate as t } from '@nextcloud/l10n'\n\nimport SidebarView from './views/Sidebar.vue'\nimport Sidebar from './services/Sidebar'\nimport Tab from './models/Tab'\n\nVue.prototype.t = t\n\n// Init Sidebar Service\nif (!window.OCA.Files) {\n\twindow.OCA.Files = {}\n}\nObject.assign(window.OCA.Files, { Sidebar: new Sidebar() })\nObject.assign(window.OCA.Files.Sidebar, { Tab })\n\nconsole.debug('OCA.Files.Sidebar initialized')\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\tconst contentElement = document.querySelector('body > .content')\n\t\t|| document.querySelector('body > #content')\n\n\t// Make sure we have a proper layout\n\tif (contentElement) {\n\t\t// Make sure we have a mountpoint\n\t\tif (!document.getElementById('app-sidebar')) {\n\t\t\tconst sidebarElement = document.createElement('div')\n\t\t\tsidebarElement.id = 'app-sidebar'\n\t\t\tcontentElement.appendChild(sidebarElement)\n\t\t}\n\t}\n\n\t// Init vue app\n\tconst View = Vue.extend(SidebarView)\n\tconst AppSidebar = new View({\n\t\tname: 'SidebarRoot',\n\t})\n\tAppSidebar.$mount('#app-sidebar')\n\twindow.OCA.Files.Sidebar.open = AppSidebar.open\n\twindow.OCA.Files.Sidebar.close = AppSidebar.close\n\twindow.OCA.Files.Sidebar.setFullScreenMode = AppSidebar.setFullScreenMode\n})\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, \".app-sidebar--has-preview[data-v-780526c0] .app-sidebar-header__figure{background-size:cover}.app-sidebar--has-preview[data-v-780526c0][data-mimetype=\\\"text/plain\\\"] .app-sidebar-header__figure,.app-sidebar--has-preview[data-v-780526c0][data-mimetype=\\\"text/markdown\\\"] .app-sidebar-header__figure{background-size:contain}.app-sidebar--full[data-v-780526c0]{position:fixed !important;z-index:2025 !important;top:0 !important;height:100% !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/Sidebar.vue\"],\"names\":[],\"mappings\":\"AAoeE,uEACC,qBAAA,CAKA,yMACC,uBAAA,CAKH,oCACC,yBAAA,CACA,uBAAA,CACA,gBAAA,CACA,sBAAA\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.app-sidebar {\\n\\t&--has-preview::v-deep {\\n\\t\\t.app-sidebar-header__figure {\\n\\t\\t\\tbackground-size: cover;\\n\\t\\t}\\n\\n\\t\\t&[data-mimetype=\\\"text/plain\\\"],\\n\\t\\t&[data-mimetype=\\\"text/markdown\\\"] {\\n\\t\\t\\t.app-sidebar-header__figure {\\n\\t\\t\\t\\tbackground-size: contain;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&--full {\\n\\t\\tposition: fixed !important;\\n\\t\\tz-index: 2025 !important;\\n\\t\\ttop: 0 !important;\\n\\t\\theight: 100% !important;\\n\\t}\\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 = 4092;","__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\t4092: 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__(31504); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","url","axios","method","data","response","file","OCA","Files","App","fileList","filesClient","_client","parseMultiStatus","fileInfo","_parseFileInfo","get","key","isDirectory","mimetype","_vm","this","_h","$createElement","_c","_self","ref","attrs","name","icon","on","onScrollBottomReached","_e","_v","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_b","_d","close","setActiveTab","toggleStarred","handleOpening","handleOpened","handleClosing","handleClosed","defaultActionListener","$event","stopPropagation","preventDefault","onDefaultAction","apply","arguments","scopedSlots","_u","fn","_l","view","cid","proxy","toggleTags","_s","t","appSidebar","error","tab","enabled","directives","rawName","value","loading","expression","mount","update","destroy","scrollBottomReached","Sidebar","_state","tabs","views","activeTab","console","debug","findIndex","check","push","Tab","undefined","trim","_id","_name","_icon","_mount","_update","_destroy","_enabled","_scrollBottomReached","Vue","window","assign","addEventListener","contentElement","document","querySelector","getElementById","sidebarElement","createElement","appendChild","AppSidebar","SidebarView","$mount","open","setFullScreenMode","___CSS_LOADER_EXPORT___","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","call","m","amdD","amdO","O","result","chunkIds","priority","notFulfilled","Infinity","i","length","fulfilled","j","every","splice","r","n","getter","__esModule","d","a","definition","defineProperty","enumerable","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","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":"files-sidebar.js?v=ff184c112ebaa4f58d94","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/node_modules/@nextcloud/moment/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/apps/files/src/services/FileInfo.js","webpack:///nextcloud/apps/files/src/components/SidebarTab.vue?vue&type=template&id=695d5bae&","webpack:///nextcloud/apps/files/src/components/SidebarTab.vue","webpack:///nextcloud/apps/files/src/components/SidebarTab.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files/src/components/SidebarTab.vue?7aea","webpack:///nextcloud/apps/files/src/components/LegacyView.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files/src/components/LegacyView.vue","webpack://nextcloud/./apps/files/src/components/LegacyView.vue?a2e2","webpack:///nextcloud/apps/files/src/components/LegacyView.vue?vue&type=template&id=2245cbe7&","webpack:///nextcloud/apps/files/src/views/Sidebar.vue","webpack:///nextcloud/apps/files/src/views/Sidebar.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files/src/views/Sidebar.vue?70dd","webpack://nextcloud/./apps/files/src/views/Sidebar.vue?0b21","webpack:///nextcloud/apps/files/src/views/Sidebar.vue?vue&type=template&id=780526c0&scoped=true&","webpack:///nextcloud/apps/files/src/services/Sidebar.js","webpack:///nextcloud/apps/files/src/models/Tab.js","webpack:///nextcloud/apps/files/src/sidebar.js","webpack:///nextcloud/apps/files/src/views/Sidebar.vue?vue&type=style&index=0&id=780526c0&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/runtime/nonce","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};","var map = {\n\t\"./af\": 36026,\n\t\"./af.js\": 36026,\n\t\"./ar\": 28093,\n\t\"./ar-dz\": 41943,\n\t\"./ar-dz.js\": 41943,\n\t\"./ar-kw\": 23969,\n\t\"./ar-kw.js\": 23969,\n\t\"./ar-ly\": 40594,\n\t\"./ar-ly.js\": 40594,\n\t\"./ar-ma\": 18369,\n\t\"./ar-ma.js\": 18369,\n\t\"./ar-sa\": 32579,\n\t\"./ar-sa.js\": 32579,\n\t\"./ar-tn\": 76442,\n\t\"./ar-tn.js\": 76442,\n\t\"./ar.js\": 28093,\n\t\"./az\": 86425,\n\t\"./az.js\": 86425,\n\t\"./be\": 22004,\n\t\"./be.js\": 22004,\n\t\"./bg\": 42982,\n\t\"./bg.js\": 42982,\n\t\"./bm\": 21067,\n\t\"./bm.js\": 21067,\n\t\"./bn\": 8366,\n\t\"./bn-bd\": 63837,\n\t\"./bn-bd.js\": 63837,\n\t\"./bn.js\": 8366,\n\t\"./bo\": 95040,\n\t\"./bo.js\": 95040,\n\t\"./br\": 521,\n\t\"./br.js\": 521,\n\t\"./bs\": 83242,\n\t\"./bs.js\": 83242,\n\t\"./ca\": 73046,\n\t\"./ca.js\": 73046,\n\t\"./cs\": 25794,\n\t\"./cs.js\": 25794,\n\t\"./cv\": 28231,\n\t\"./cv.js\": 28231,\n\t\"./cy\": 10927,\n\t\"./cy.js\": 10927,\n\t\"./da\": 42832,\n\t\"./da.js\": 42832,\n\t\"./de\": 29415,\n\t\"./de-at\": 3331,\n\t\"./de-at.js\": 3331,\n\t\"./de-ch\": 45524,\n\t\"./de-ch.js\": 45524,\n\t\"./de.js\": 29415,\n\t\"./dv\": 44700,\n\t\"./dv.js\": 44700,\n\t\"./el\": 88752,\n\t\"./el.js\": 88752,\n\t\"./en-au\": 90444,\n\t\"./en-au.js\": 90444,\n\t\"./en-ca\": 65959,\n\t\"./en-ca.js\": 65959,\n\t\"./en-gb\": 62762,\n\t\"./en-gb.js\": 62762,\n\t\"./en-ie\": 40909,\n\t\"./en-ie.js\": 40909,\n\t\"./en-il\": 79909,\n\t\"./en-il.js\": 79909,\n\t\"./en-in\": 87942,\n\t\"./en-in.js\": 87942,\n\t\"./en-nz\": 75200,\n\t\"./en-nz.js\": 75200,\n\t\"./en-sg\": 21415,\n\t\"./en-sg.js\": 21415,\n\t\"./eo\": 27447,\n\t\"./eo.js\": 27447,\n\t\"./es\": 86756,\n\t\"./es-do\": 47049,\n\t\"./es-do.js\": 47049,\n\t\"./es-mx\": 15915,\n\t\"./es-mx.js\": 15915,\n\t\"./es-us\": 57133,\n\t\"./es-us.js\": 57133,\n\t\"./es.js\": 86756,\n\t\"./et\": 72182,\n\t\"./et.js\": 72182,\n\t\"./eu\": 14419,\n\t\"./eu.js\": 14419,\n\t\"./fa\": 2916,\n\t\"./fa.js\": 2916,\n\t\"./fi\": 49964,\n\t\"./fi.js\": 49964,\n\t\"./fil\": 16448,\n\t\"./fil.js\": 16448,\n\t\"./fo\": 26094,\n\t\"./fo.js\": 26094,\n\t\"./fr\": 35833,\n\t\"./fr-ca\": 56994,\n\t\"./fr-ca.js\": 56994,\n\t\"./fr-ch\": 2740,\n\t\"./fr-ch.js\": 2740,\n\t\"./fr.js\": 35833,\n\t\"./fy\": 69542,\n\t\"./fy.js\": 69542,\n\t\"./ga\": 93264,\n\t\"./ga.js\": 93264,\n\t\"./gd\": 77457,\n\t\"./gd.js\": 77457,\n\t\"./gl\": 83043,\n\t\"./gl.js\": 83043,\n\t\"./gom-deva\": 24034,\n\t\"./gom-deva.js\": 24034,\n\t\"./gom-latn\": 28379,\n\t\"./gom-latn.js\": 28379,\n\t\"./gu\": 406,\n\t\"./gu.js\": 406,\n\t\"./he\": 73219,\n\t\"./he.js\": 73219,\n\t\"./hi\": 99834,\n\t\"./hi.js\": 99834,\n\t\"./hr\": 28754,\n\t\"./hr.js\": 28754,\n\t\"./hu\": 93945,\n\t\"./hu.js\": 93945,\n\t\"./hy-am\": 81319,\n\t\"./hy-am.js\": 81319,\n\t\"./id\": 24875,\n\t\"./id.js\": 24875,\n\t\"./is\": 23724,\n\t\"./is.js\": 23724,\n\t\"./it\": 79906,\n\t\"./it-ch\": 34303,\n\t\"./it-ch.js\": 34303,\n\t\"./it.js\": 79906,\n\t\"./ja\": 77105,\n\t\"./ja.js\": 77105,\n\t\"./jv\": 15026,\n\t\"./jv.js\": 15026,\n\t\"./ka\": 67416,\n\t\"./ka.js\": 67416,\n\t\"./kk\": 79734,\n\t\"./kk.js\": 79734,\n\t\"./km\": 60757,\n\t\"./km.js\": 60757,\n\t\"./kn\": 58369,\n\t\"./kn.js\": 58369,\n\t\"./ko\": 77687,\n\t\"./ko.js\": 77687,\n\t\"./ku\": 95544,\n\t\"./ku.js\": 95544,\n\t\"./ky\": 85431,\n\t\"./ky.js\": 85431,\n\t\"./lb\": 13613,\n\t\"./lb.js\": 13613,\n\t\"./lo\": 34252,\n\t\"./lo.js\": 34252,\n\t\"./lt\": 84619,\n\t\"./lt.js\": 84619,\n\t\"./lv\": 93760,\n\t\"./lv.js\": 93760,\n\t\"./me\": 93393,\n\t\"./me.js\": 93393,\n\t\"./mi\": 12369,\n\t\"./mi.js\": 12369,\n\t\"./mk\": 48664,\n\t\"./mk.js\": 48664,\n\t\"./ml\": 23099,\n\t\"./ml.js\": 23099,\n\t\"./mn\": 98539,\n\t\"./mn.js\": 98539,\n\t\"./mr\": 778,\n\t\"./mr.js\": 778,\n\t\"./ms\": 39970,\n\t\"./ms-my\": 82625,\n\t\"./ms-my.js\": 82625,\n\t\"./ms.js\": 39970,\n\t\"./mt\": 15714,\n\t\"./mt.js\": 15714,\n\t\"./my\": 53055,\n\t\"./my.js\": 53055,\n\t\"./nb\": 73945,\n\t\"./nb.js\": 73945,\n\t\"./ne\": 63645,\n\t\"./ne.js\": 63645,\n\t\"./nl\": 4829,\n\t\"./nl-be\": 12823,\n\t\"./nl-be.js\": 12823,\n\t\"./nl.js\": 4829,\n\t\"./nn\": 23756,\n\t\"./nn.js\": 23756,\n\t\"./oc-lnc\": 41228,\n\t\"./oc-lnc.js\": 41228,\n\t\"./pa-in\": 97877,\n\t\"./pa-in.js\": 97877,\n\t\"./pl\": 53066,\n\t\"./pl.js\": 53066,\n\t\"./pt\": 28677,\n\t\"./pt-br\": 81592,\n\t\"./pt-br.js\": 81592,\n\t\"./pt.js\": 28677,\n\t\"./ro\": 32722,\n\t\"./ro.js\": 32722,\n\t\"./ru\": 59138,\n\t\"./ru.js\": 59138,\n\t\"./sd\": 32568,\n\t\"./sd.js\": 32568,\n\t\"./se\": 49753,\n\t\"./se.js\": 49753,\n\t\"./si\": 58024,\n\t\"./si.js\": 58024,\n\t\"./sk\": 31058,\n\t\"./sk.js\": 31058,\n\t\"./sl\": 43452,\n\t\"./sl.js\": 43452,\n\t\"./sq\": 2795,\n\t\"./sq.js\": 2795,\n\t\"./sr\": 26976,\n\t\"./sr-cyrl\": 38819,\n\t\"./sr-cyrl.js\": 38819,\n\t\"./sr.js\": 26976,\n\t\"./ss\": 7467,\n\t\"./ss.js\": 7467,\n\t\"./sv\": 42787,\n\t\"./sv.js\": 42787,\n\t\"./sw\": 80298,\n\t\"./sw.js\": 80298,\n\t\"./ta\": 57532,\n\t\"./ta.js\": 57532,\n\t\"./te\": 76076,\n\t\"./te.js\": 76076,\n\t\"./tet\": 40452,\n\t\"./tet.js\": 40452,\n\t\"./tg\": 64794,\n\t\"./tg.js\": 64794,\n\t\"./th\": 48245,\n\t\"./th.js\": 48245,\n\t\"./tk\": 8870,\n\t\"./tk.js\": 8870,\n\t\"./tl-ph\": 36056,\n\t\"./tl-ph.js\": 36056,\n\t\"./tlh\": 15249,\n\t\"./tlh.js\": 15249,\n\t\"./tr\": 22053,\n\t\"./tr.js\": 22053,\n\t\"./tzl\": 39871,\n\t\"./tzl.js\": 39871,\n\t\"./tzm\": 39574,\n\t\"./tzm-latn\": 19210,\n\t\"./tzm-latn.js\": 19210,\n\t\"./tzm.js\": 39574,\n\t\"./ug-cn\": 91532,\n\t\"./ug-cn.js\": 91532,\n\t\"./uk\": 11432,\n\t\"./uk.js\": 11432,\n\t\"./ur\": 88523,\n\t\"./ur.js\": 88523,\n\t\"./uz\": 54958,\n\t\"./uz-latn\": 68735,\n\t\"./uz-latn.js\": 68735,\n\t\"./uz.js\": 54958,\n\t\"./vi\": 83398,\n\t\"./vi.js\": 83398,\n\t\"./x-pseudo\": 56665,\n\t\"./x-pseudo.js\": 56665,\n\t\"./yo\": 11642,\n\t\"./yo.js\": 11642,\n\t\"./zh-cn\": 5462,\n\t\"./zh-cn.js\": 5462,\n\t\"./zh-hk\": 92530,\n\t\"./zh-hk.js\": 92530,\n\t\"./zh-mo\": 41650,\n\t\"./zh-mo.js\": 41650,\n\t\"./zh-tw\": 97333,\n\t\"./zh-tw.js\": 97333\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 93365;","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport axios from '@nextcloud/axios'\n\n/**\n * @param {any} url -\n */\nexport default async function(url) {\n\tconst response = await axios({\n\t\tmethod: 'PROPFIND',\n\t\turl,\n\t\tdata: `<?xml version=\"1.0\"?>\n\t\t\t<d:propfind xmlns:d=\"DAV:\"\n\t\t\t\txmlns:oc=\"http://owncloud.org/ns\"\n\t\t\t\txmlns:nc=\"http://nextcloud.org/ns\"\n\t\t\t\txmlns:ocs=\"http://open-collaboration-services.org/ns\">\n\t\t\t<d:prop>\n\t\t\t\t<d:getlastmodified />\n\t\t\t\t<d:getetag />\n\t\t\t\t<d:getcontenttype />\n\t\t\t\t<d:resourcetype />\n\t\t\t\t<oc:fileid />\n\t\t\t\t<oc:permissions />\n\t\t\t\t<oc:size />\n\t\t\t\t<d:getcontentlength />\n\t\t\t\t<nc:has-preview />\n\t\t\t\t<nc:mount-type />\n\t\t\t\t<nc:is-encrypted />\n\t\t\t\t<ocs:share-permissions />\n\t\t\t\t<oc:tags />\n\t\t\t\t<oc:favorite />\n\t\t\t\t<oc:comments-unread />\n\t\t\t\t<oc:owner-id />\n\t\t\t\t<oc:owner-display-name />\n\t\t\t\t<oc:share-types />\n\t\t\t</d:prop>\n\t\t\t</d:propfind>`,\n\t})\n\n\t// TODO: create new parser or use cdav-lib when available\n\tconst file = OCA.Files.App.fileList.filesClient._client.parseMultiStatus(response.data)\n\t// TODO: create new parser or use cdav-lib when available\n\tconst fileInfo = OCA.Files.App.fileList.filesClient._parseFileInfo(file[0])\n\n\t// TODO remove when no more legacy backbone is used\n\tfileInfo.get = (key) => fileInfo[key]\n\tfileInfo.isDirectory = () => fileInfo.mimetype === 'httpd/unix-directory'\n\n\treturn fileInfo\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('AppSidebarTab',{ref:\"tab\",attrs:{\"id\":_vm.id,\"name\":_vm.name,\"icon\":_vm.icon},on:{\"bottomReached\":_vm.onScrollBottomReached}},[(_vm.loading)?_c('EmptyContent',{attrs:{\"icon\":\"icon-loading\"}}):_vm._e(),_vm._v(\" \"),_c('div',{ref:\"mount\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n<template>\n\t<AppSidebarTab :id=\"id\"\n\t\tref=\"tab\"\n\t\t:name=\"name\"\n\t\t:icon=\"icon\"\n\t\t@bottomReached=\"onScrollBottomReached\">\n\t\t<!-- Fallback loading -->\n\t\t<EmptyContent v-if=\"loading\" icon=\"icon-loading\" />\n\n\t\t<!-- Using a dummy div as Vue mount replace the element directly\n\t\t\tIt does NOT append to the content -->\n\t\t<div ref=\"mount\" />\n\t</AppSidebarTab>\n</template>\n\n<script>\nimport AppSidebarTab from '@nextcloud/vue/dist/Components/AppSidebarTab'\nimport EmptyContent from '@nextcloud/vue/dist/Components/EmptyContent'\n\nexport default {\n\tname: 'SidebarTab',\n\n\tcomponents: {\n\t\tAppSidebarTab,\n\t\tEmptyContent,\n\t},\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tid: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\n\t\t/**\n\t\t * Lifecycle methods.\n\t\t * They are prefixed with `on` to avoid conflict with Vue\n\t\t * methods like this.destroy\n\t\t */\n\t\tonMount: {\n\t\t\ttype: Function,\n\t\t\trequired: true,\n\t\t},\n\t\tonUpdate: {\n\t\t\ttype: Function,\n\t\t\trequired: true,\n\t\t},\n\t\tonDestroy: {\n\t\t\ttype: Function,\n\t\t\trequired: true,\n\t\t},\n\t\tonScrollBottomReached: {\n\t\t\ttype: Function,\n\t\t\tdefault: () => {},\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: true,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t// TODO: implement a better way to force pass a prop from Sidebar\n\t\tactiveTab() {\n\t\t\treturn this.$parent.activeTab\n\t\t},\n\t},\n\n\twatch: {\n\t\tasync fileInfo(newFile, oldFile) {\n\t\t\t// Update fileInfo on change\n\t\t\tif (newFile.id !== oldFile.id) {\n\t\t\t\tthis.loading = true\n\t\t\t\tawait this.onUpdate(this.fileInfo)\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n\n\tasync mounted() {\n\t\tthis.loading = true\n\t\t// Mount the tab: mounting point, fileInfo, vue context\n\t\tawait this.onMount(this.$refs.mount, this.fileInfo, this.$refs.tab)\n\t\tthis.loading = false\n\t},\n\n\tasync beforeDestroy() {\n\t\t// unmount the tab\n\t\tawait this.onDestroy()\n\t},\n}\n</script>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarTab.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!./SidebarTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SidebarTab.vue?vue&type=template&id=695d5bae&\"\nimport script from \"./SidebarTab.vue?vue&type=script&lang=js&\"\nexport * from \"./SidebarTab.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LegacyView.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!./LegacyView.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<div />\n</template>\n<script>\nexport default {\n\tname: 'LegacyView',\n\tprops: {\n\t\tcomponent: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t},\n\twatch: {\n\t\tfileInfo(fileInfo) {\n\t\t\t// update the backbone model FileInfo\n\t\t\tthis.setFileInfo(fileInfo)\n\t\t},\n\t},\n\tmounted() {\n\t\t// append the backbone element and set the FileInfo\n\t\tthis.component.$el.replaceAll(this.$el)\n\t\tthis.setFileInfo(this.fileInfo)\n\t},\n\tmethods: {\n\t\tsetFileInfo(fileInfo) {\n\t\t\tthis.component.setFileInfo(new OCA.Files.FileInfoModel(fileInfo))\n\t\t},\n\t},\n}\n</script>\n<style>\n</style>\n","import { render, staticRenderFns } from \"./LegacyView.vue?vue&type=template&id=2245cbe7&\"\nimport script from \"./LegacyView.vue?vue&type=script&lang=js&\"\nexport * from \"./LegacyView.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div')}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<AppSidebar v-if=\"file\"\n\t\tref=\"sidebar\"\n\t\tv-bind=\"appSidebar\"\n\t\t:force-menu=\"true\"\n\t\t@close=\"close\"\n\t\t@update:active=\"setActiveTab\"\n\t\t@update:starred=\"toggleStarred\"\n\t\t@[defaultActionListener].stop.prevent=\"onDefaultAction\"\n\t\t@opening=\"handleOpening\"\n\t\t@opened=\"handleOpened\"\n\t\t@closing=\"handleClosing\"\n\t\t@closed=\"handleClosed\">\n\t\t<!-- TODO: create a standard to allow multiple elements here? -->\n\t\t<template v-if=\"fileInfo\" #description>\n\t\t\t<LegacyView v-for=\"view in views\"\n\t\t\t\t:key=\"view.cid\"\n\t\t\t\t:component=\"view\"\n\t\t\t\t:file-info=\"fileInfo\" />\n\t\t</template>\n\n\t\t<!-- Actions menu -->\n\t\t<template v-if=\"fileInfo\" #secondary-actions>\n\t\t\t<!-- TODO: create proper api for apps to register actions\n\t\t\tAnd inject themselves here. -->\n\t\t\t<ActionButton v-if=\"isSystemTagsEnabled\"\n\t\t\t\t:close-after-click=\"true\"\n\t\t\t\ticon=\"icon-tag\"\n\t\t\t\t@click=\"toggleTags\">\n\t\t\t\t{{ t('files', 'Tags') }}\n\t\t\t</ActionButton>\n\t\t</template>\n\n\t\t<!-- Error display -->\n\t\t<EmptyContent v-if=\"error\" icon=\"icon-error\">\n\t\t\t{{ error }}\n\t\t</EmptyContent>\n\n\t\t<!-- If fileInfo fetch is complete, render tabs -->\n\t\t<template v-for=\"tab in tabs\" v-else-if=\"fileInfo\">\n\t\t\t<!-- Hide them if we're loading another file but keep them mounted -->\n\t\t\t<SidebarTab v-if=\"tab.enabled(fileInfo)\"\n\t\t\t\tv-show=\"!loading\"\n\t\t\t\t:id=\"tab.id\"\n\t\t\t\t:key=\"tab.id\"\n\t\t\t\t:name=\"tab.name\"\n\t\t\t\t:icon=\"tab.icon\"\n\t\t\t\t:on-mount=\"tab.mount\"\n\t\t\t\t:on-update=\"tab.update\"\n\t\t\t\t:on-destroy=\"tab.destroy\"\n\t\t\t\t:on-scroll-bottom-reached=\"tab.scrollBottomReached\"\n\t\t\t\t:file-info=\"fileInfo\" />\n\t\t</template>\n\t</AppSidebar>\n</template>\n<script>\nimport { encodePath } from '@nextcloud/paths'\nimport $ from 'jquery'\nimport axios from '@nextcloud/axios'\nimport { emit } from '@nextcloud/event-bus'\nimport moment from '@nextcloud/moment'\nimport { Type as ShareTypes } from '@nextcloud/sharing'\n\nimport AppSidebar from '@nextcloud/vue/dist/Components/AppSidebar'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport EmptyContent from '@nextcloud/vue/dist/Components/EmptyContent'\n\nimport FileInfo from '../services/FileInfo'\nimport SidebarTab from '../components/SidebarTab'\nimport LegacyView from '../components/LegacyView'\n\nexport default {\n\tname: 'Sidebar',\n\n\tcomponents: {\n\t\tActionButton,\n\t\tAppSidebar,\n\t\tEmptyContent,\n\t\tLegacyView,\n\t\tSidebarTab,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\t// reactive state\n\t\t\tSidebar: OCA.Files.Sidebar.state,\n\t\t\terror: null,\n\t\t\tloading: true,\n\t\t\tfileInfo: null,\n\t\t\tstarLoading: false,\n\t\t\tisFullScreen: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Current filename\n\t\t * This is bound to the Sidebar service and\n\t\t * is used to load a new file\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tfile() {\n\t\t\treturn this.Sidebar.file\n\t\t},\n\n\t\t/**\n\t\t * List of all the registered tabs\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\ttabs() {\n\t\t\treturn this.Sidebar.tabs\n\t\t},\n\n\t\t/**\n\t\t * List of all the registered views\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\tviews() {\n\t\t\treturn this.Sidebar.views\n\t\t},\n\n\t\t/**\n\t\t * Current user dav root path\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tdavPath() {\n\t\t\tconst user = OC.getCurrentUser().uid\n\t\t\treturn OC.linkToRemote(`dav/files/${user}${encodePath(this.file)}`)\n\t\t},\n\n\t\t/**\n\t\t * Current active tab handler\n\t\t *\n\t\t * @param {string} id the tab id to set as active\n\t\t * @return {string} the current active tab\n\t\t */\n\t\tactiveTab() {\n\t\t\treturn this.Sidebar.activeTab\n\t\t},\n\n\t\t/**\n\t\t * Sidebar subtitle\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tsubtitle() {\n\t\t\treturn `${this.size}, ${this.time}`\n\t\t},\n\n\t\t/**\n\t\t * File last modified formatted string\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\ttime() {\n\t\t\treturn OC.Util.relativeModifiedDate(this.fileInfo.mtime)\n\t\t},\n\n\t\t/**\n\t\t * File last modified full string\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tfullTime() {\n\t\t\treturn moment(this.fileInfo.mtime).format('LLL')\n\t\t},\n\n\t\t/**\n\t\t * File size formatted string\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tsize() {\n\t\t\treturn OC.Util.humanFileSize(this.fileInfo.size)\n\t\t},\n\n\t\t/**\n\t\t * File background/figure to illustrate the sidebar header\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tbackground() {\n\t\t\treturn this.getPreviewIfAny(this.fileInfo)\n\t\t},\n\n\t\t/**\n\t\t * App sidebar v-binding object\n\t\t *\n\t\t * @return {object}\n\t\t */\n\t\tappSidebar() {\n\t\t\tif (this.fileInfo) {\n\t\t\t\treturn {\n\t\t\t\t\t'data-mimetype': this.fileInfo.mimetype,\n\t\t\t\t\t'star-loading': this.starLoading,\n\t\t\t\t\tactive: this.activeTab,\n\t\t\t\t\tbackground: this.background,\n\t\t\t\t\tclass: {\n\t\t\t\t\t\t'app-sidebar--has-preview': this.fileInfo.hasPreview && !this.isFullScreen,\n\t\t\t\t\t\t'app-sidebar--full': this.isFullScreen,\n\t\t\t\t\t},\n\t\t\t\t\tcompact: !this.fileInfo.hasPreview || this.isFullScreen,\n\t\t\t\t\tloading: this.loading,\n\t\t\t\t\tstarred: this.fileInfo.isFavourited,\n\t\t\t\t\tsubtitle: this.subtitle,\n\t\t\t\t\tsubtitleTooltip: this.fullTime,\n\t\t\t\t\ttitle: this.fileInfo.name,\n\t\t\t\t\ttitleTooltip: this.fileInfo.name,\n\t\t\t\t}\n\t\t\t} else if (this.error) {\n\t\t\t\treturn {\n\t\t\t\t\tkey: 'error', // force key to re-render\n\t\t\t\t\tsubtitle: '',\n\t\t\t\t\ttitle: '',\n\t\t\t\t}\n\t\t\t}\n\t\t\t// no fileInfo yet, showing empty data\n\t\t\treturn {\n\t\t\t\tloading: this.loading,\n\t\t\t\tsubtitle: '',\n\t\t\t\ttitle: '',\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Default action object for the current file\n\t\t *\n\t\t * @return {object}\n\t\t */\n\t\tdefaultAction() {\n\t\t\treturn this.fileInfo\n\t\t\t\t&& OCA.Files && OCA.Files.App && OCA.Files.App.fileList\n\t\t\t\t&& OCA.Files.App.fileList.fileActions\n\t\t\t\t&& OCA.Files.App.fileList.fileActions.getDefaultFileAction\n\t\t\t\t&& OCA.Files.App.fileList\n\t\t\t\t\t.fileActions.getDefaultFileAction(this.fileInfo.mimetype, this.fileInfo.type, OC.PERMISSION_READ)\n\n\t\t},\n\n\t\t/**\n\t\t * Dynamic header click listener to ensure\n\t\t * nothing is listening for a click if there\n\t\t * is no default action\n\t\t *\n\t\t * @return {string|null}\n\t\t */\n\t\tdefaultActionListener() {\n\t\t\treturn this.defaultAction ? 'figure-click' : null\n\t\t},\n\n\t\tisSystemTagsEnabled() {\n\t\t\treturn OCA && 'SystemTags' in OCA\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Can this tab be displayed ?\n\t\t *\n\t\t * @param {object} tab a registered tab\n\t\t * @return {boolean}\n\t\t */\n\t\tcanDisplay(tab) {\n\t\t\treturn tab.enabled(this.fileInfo)\n\t\t},\n\t\tresetData() {\n\t\t\tthis.error = null\n\t\t\tthis.fileInfo = null\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tif (this.$refs.tabs) {\n\t\t\t\t\tthis.$refs.tabs.updateTabs()\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\n\t\tgetPreviewIfAny(fileInfo) {\n\t\t\tif (fileInfo.hasPreview && !this.isFullScreen) {\n\t\t\t\treturn OC.generateUrl(`/core/preview?fileId=${fileInfo.id}&x=${screen.width}&y=${screen.height}&a=true`)\n\t\t\t}\n\t\t\treturn this.getIconUrl(fileInfo)\n\t\t},\n\n\t\t/**\n\t\t * Copied from https://github.com/nextcloud/server/blob/16e0887ec63591113ee3f476e0c5129e20180cde/apps/files/js/filelist.js#L1377\n\t\t * TODO: We also need this as a standalone library\n\t\t *\n\t\t * @param {object} fileInfo the fileinfo\n\t\t * @return {string} Url to the icon for mimeType\n\t\t */\n\t\tgetIconUrl(fileInfo) {\n\t\t\tconst mimeType = fileInfo.mimetype || 'application/octet-stream'\n\t\t\tif (mimeType === 'httpd/unix-directory') {\n\t\t\t\t// use default folder icon\n\t\t\t\tif (fileInfo.mountType === 'shared' || fileInfo.mountType === 'shared-root') {\n\t\t\t\t\treturn OC.MimeType.getIconUrl('dir-shared')\n\t\t\t\t} else if (fileInfo.mountType === 'external-root') {\n\t\t\t\t\treturn OC.MimeType.getIconUrl('dir-external')\n\t\t\t\t} else if (fileInfo.mountType !== undefined && fileInfo.mountType !== '') {\n\t\t\t\t\treturn OC.MimeType.getIconUrl('dir-' + fileInfo.mountType)\n\t\t\t\t} else if (fileInfo.shareTypes && (\n\t\t\t\t\tfileInfo.shareTypes.indexOf(ShareTypes.SHARE_TYPE_LINK) > -1\n\t\t\t\t\t|| fileInfo.shareTypes.indexOf(ShareTypes.SHARE_TYPE_EMAIL) > -1)\n\t\t\t\t) {\n\t\t\t\t\treturn OC.MimeType.getIconUrl('dir-public')\n\t\t\t\t} else if (fileInfo.shareTypes && fileInfo.shareTypes.length > 0) {\n\t\t\t\t\treturn OC.MimeType.getIconUrl('dir-shared')\n\t\t\t\t}\n\t\t\t\treturn OC.MimeType.getIconUrl('dir')\n\t\t\t}\n\t\t\treturn OC.MimeType.getIconUrl(mimeType)\n\t\t},\n\n\t\t/**\n\t\t * Set current active tab\n\t\t *\n\t\t * @param {string} id tab unique id\n\t\t */\n\t\tsetActiveTab(id) {\n\t\t\tOCA.Files.Sidebar.setActiveTab(id)\n\t\t},\n\n\t\t/**\n\t\t * Toggle favourite state\n\t\t * TODO: better implementation\n\t\t *\n\t\t * @param {boolean} state favourited or not\n\t\t */\n\t\tasync toggleStarred(state) {\n\t\t\ttry {\n\t\t\t\tthis.starLoading = true\n\t\t\t\tawait axios({\n\t\t\t\t\tmethod: 'PROPPATCH',\n\t\t\t\t\turl: this.davPath,\n\t\t\t\t\tdata: `<?xml version=\"1.0\"?>\n\t\t\t\t\t\t<d:propertyupdate xmlns:d=\"DAV:\" xmlns:oc=\"http://owncloud.org/ns\">\n\t\t\t\t\t\t${state ? '<d:set>' : '<d:remove>'}\n\t\t\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t\t\t<oc:favorite>1</oc:favorite>\n\t\t\t\t\t\t\t</d:prop>\n\t\t\t\t\t\t${state ? '</d:set>' : '</d:remove>'}\n\t\t\t\t\t\t</d:propertyupdate>`,\n\t\t\t\t})\n\n\t\t\t\t// TODO: Obliterate as soon as possible and use events with new files app\n\t\t\t\t// Terrible fallback for legacy files: toggle filelist as well\n\t\t\t\tif (OCA.Files && OCA.Files.App && OCA.Files.App.fileList && OCA.Files.App.fileList.fileActions) {\n\t\t\t\t\tOCA.Files.App.fileList.fileActions.triggerAction('Favorite', OCA.Files.App.fileList.getModelForFile(this.fileInfo.name), OCA.Files.App.fileList)\n\t\t\t\t}\n\n\t\t\t} catch (error) {\n\t\t\t\tOC.Notification.showTemporary(t('files', 'Unable to change the favourite state of the file'))\n\t\t\t\tconsole.error('Unable to change favourite state', error)\n\t\t\t}\n\t\t\tthis.starLoading = false\n\t\t},\n\n\t\tonDefaultAction() {\n\t\t\tif (this.defaultAction) {\n\t\t\t\t// generate fake context\n\t\t\t\tthis.defaultAction.action(this.fileInfo.name, {\n\t\t\t\t\tfileInfo: this.fileInfo,\n\t\t\t\t\tdir: this.fileInfo.dir,\n\t\t\t\t\tfileList: OCA.Files.App.fileList,\n\t\t\t\t\t$file: $('body'),\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Toggle the tags selector\n\t\t */\n\t\ttoggleTags() {\n\t\t\tif (OCA.SystemTags && OCA.SystemTags.View) {\n\t\t\t\tOCA.SystemTags.View.toggle()\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Open the sidebar for the given file\n\t\t *\n\t\t * @param {string} path the file path to load\n\t\t * @return {Promise}\n\t\t * @throws {Error} loading failure\n\t\t */\n\t\tasync open(path) {\n\t\t\t// update current opened file\n\t\t\tthis.Sidebar.file = path\n\n\t\t\tif (path && path.trim() !== '') {\n\t\t\t\t// reset data, keep old fileInfo to not reload all tabs and just hide them\n\t\t\t\tthis.error = null\n\t\t\t\tthis.loading = true\n\n\t\t\t\ttry {\n\t\t\t\t\tthis.fileInfo = await FileInfo(this.davPath)\n\t\t\t\t\t// adding this as fallback because other apps expect it\n\t\t\t\t\tthis.fileInfo.dir = this.file.split('/').slice(0, -1).join('/')\n\n\t\t\t\t\t// DEPRECATED legacy views\n\t\t\t\t\t// TODO: remove\n\t\t\t\t\tthis.views.forEach(view => {\n\t\t\t\t\t\tview.setFileInfo(this.fileInfo)\n\t\t\t\t\t})\n\n\t\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t\tif (this.$refs.tabs) {\n\t\t\t\t\t\t\tthis.$refs.tabs.updateTabs()\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthis.error = t('files', 'Error while loading the file data')\n\t\t\t\t\tconsole.error('Error while loading the file data', error)\n\n\t\t\t\t\tthrow new Error(error)\n\t\t\t\t} finally {\n\t\t\t\t\tthis.loading = false\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Close the sidebar\n\t\t */\n\t\tclose() {\n\t\t\tthis.Sidebar.file = ''\n\t\t\tthis.resetData()\n\t\t},\n\n\t\t/**\n\t\t * Allow to set the Sidebar as fullscreen from OCA.Files.Sidebar\n\t\t *\n\t\t * @param {boolean} isFullScreen - Wether or not to render the Sidebar in fullscreen.\n\t\t */\n\t\tsetFullScreenMode(isFullScreen) {\n\t\t\tthis.isFullScreen = isFullScreen\n\t\t},\n\n\t\t/**\n\t\t * Emit SideBar events.\n\t\t */\n\t\thandleOpening() {\n\t\t\temit('files:sidebar:opening')\n\t\t},\n\t\thandleOpened() {\n\t\t\temit('files:sidebar:opened')\n\t\t},\n\t\thandleClosing() {\n\t\t\temit('files:sidebar:closing')\n\t\t},\n\t\thandleClosed() {\n\t\t\temit('files:sidebar:closed')\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n.app-sidebar {\n\t&--has-preview::v-deep {\n\t\t.app-sidebar-header__figure {\n\t\t\tbackground-size: cover;\n\t\t}\n\n\t\t&[data-mimetype=\"text/plain\"],\n\t\t&[data-mimetype=\"text/markdown\"] {\n\t\t\t.app-sidebar-header__figure {\n\t\t\t\tbackground-size: contain;\n\t\t\t}\n\t\t}\n\t}\n\n\t&--full {\n\t\tposition: fixed !important;\n\t\tz-index: 2025 !important;\n\t\ttop: 0 !important;\n\t\theight: 100% !important;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Sidebar.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!./Sidebar.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!./Sidebar.vue?vue&type=style&index=0&id=780526c0&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!./Sidebar.vue?vue&type=style&index=0&id=780526c0&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Sidebar.vue?vue&type=template&id=780526c0&scoped=true&\"\nimport script from \"./Sidebar.vue?vue&type=script&lang=js&\"\nexport * from \"./Sidebar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Sidebar.vue?vue&type=style&index=0&id=780526c0&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 \"780526c0\",\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 (_vm.file)?_c('AppSidebar',_vm._b({ref:\"sidebar\",attrs:{\"force-menu\":true},on:_vm._d({\"close\":_vm.close,\"update:active\":_vm.setActiveTab,\"update:starred\":_vm.toggleStarred,\"opening\":_vm.handleOpening,\"opened\":_vm.handleOpened,\"closing\":_vm.handleClosing,\"closed\":_vm.handleClosed},[_vm.defaultActionListener,function($event){$event.stopPropagation();$event.preventDefault();return _vm.onDefaultAction.apply(null, arguments)}]),scopedSlots:_vm._u([(_vm.fileInfo)?{key:\"description\",fn:function(){return _vm._l((_vm.views),function(view){return _c('LegacyView',{key:view.cid,attrs:{\"component\":view,\"file-info\":_vm.fileInfo}})})},proxy:true}:null,(_vm.fileInfo)?{key:\"secondary-actions\",fn:function(){return [(_vm.isSystemTagsEnabled)?_c('ActionButton',{attrs:{\"close-after-click\":true,\"icon\":\"icon-tag\"},on:{\"click\":_vm.toggleTags}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'Tags'))+\"\\n\\t\\t\")]):_vm._e()]},proxy:true}:null],null,true)},'AppSidebar',_vm.appSidebar,false),[_vm._v(\" \"),_vm._v(\" \"),(_vm.error)?_c('EmptyContent',{attrs:{\"icon\":\"icon-error\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.error)+\"\\n\\t\")]):(_vm.fileInfo)?_vm._l((_vm.tabs),function(tab){return [(tab.enabled(_vm.fileInfo))?_c('SidebarTab',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.loading),expression:\"!loading\"}],key:tab.id,attrs:{\"id\":tab.id,\"name\":tab.name,\"icon\":tab.icon,\"on-mount\":tab.mount,\"on-update\":tab.update,\"on-destroy\":tab.destroy,\"on-scroll-bottom-reached\":tab.scrollBottomReached,\"file-info\":_vm.fileInfo}}):_vm._e()]}):_vm._e()],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nexport default class Sidebar {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.tabs = []\n\t\tthis._state.views = []\n\t\tthis._state.file = ''\n\t\tthis._state.activeTab = ''\n\t\tconsole.debug('OCA.Files.Sidebar initialized')\n\t}\n\n\t/**\n\t * Get the sidebar state\n\t *\n\t * @readonly\n\t * @memberof Sidebar\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new tab view\n\t *\n\t * @memberof Sidebar\n\t * @param {object} tab a new unregistered tab\n\t * @return {boolean}\n\t */\n\tregisterTab(tab) {\n\t\tconst hasDuplicate = this._state.tabs.findIndex(check => check.id === tab.id) > -1\n\t\tif (!hasDuplicate) {\n\t\t\tthis._state.tabs.push(tab)\n\t\t\treturn true\n\t\t}\n\t\tconsole.error(`An tab with the same id ${tab.id} already exists`, tab)\n\t\treturn false\n\t}\n\n\tregisterSecondaryView(view) {\n\t\tconst hasDuplicate = this._state.views.findIndex(check => check.id === view.id) > -1\n\t\tif (!hasDuplicate) {\n\t\t\tthis._state.views.push(view)\n\t\t\treturn true\n\t\t}\n\t\tconsole.error('A similar view already exists', view)\n\t\treturn false\n\t}\n\n\t/**\n\t * Return current opened file\n\t *\n\t * @memberof Sidebar\n\t * @return {string} the current opened file\n\t */\n\tget file() {\n\t\treturn this._state.file\n\t}\n\n\t/**\n\t * Set the current visible sidebar tab\n\t *\n\t * @memberof Sidebar\n\t * @param {string} id the tab unique id\n\t */\n\tsetActiveTab(id) {\n\t\tthis._state.activeTab = id\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nexport default class Tab {\n\n\t_id\n\t_name\n\t_icon\n\t_mount\n\t_update\n\t_destroy\n\t_enabled\n\t_scrollBottomReached\n\n\t/**\n\t * Create a new tab instance\n\t *\n\t * @param {object} options destructuring object\n\t * @param {string} options.id the unique id of this tab\n\t * @param {string} options.name the translated tab name\n\t * @param {string} options.icon the vue component\n\t * @param {Function} options.mount function to mount the tab\n\t * @param {Function} options.update function to update the tab\n\t * @param {Function} options.destroy function to destroy the tab\n\t * @param {Function} [options.enabled] define conditions whether this tab is active. Must returns a boolean\n\t * @param {Function} [options.scrollBottomReached] executed when the tab is scrolled to the bottom\n\t */\n\tconstructor({ id, name, icon, mount, update, destroy, enabled, scrollBottomReached } = {}) {\n\t\tif (enabled === undefined) {\n\t\t\tenabled = () => true\n\t\t}\n\t\tif (scrollBottomReached === undefined) {\n\t\t\tscrollBottomReached = () => {}\n\t\t}\n\n\t\t// Sanity checks\n\t\tif (typeof id !== 'string' || id.trim() === '') {\n\t\t\tthrow new Error('The id argument is not a valid string')\n\t\t}\n\t\tif (typeof name !== 'string' || name.trim() === '') {\n\t\t\tthrow new Error('The name argument is not a valid string')\n\t\t}\n\t\tif (typeof icon !== 'string' || icon.trim() === '') {\n\t\t\tthrow new Error('The icon argument is not a valid string')\n\t\t}\n\t\tif (typeof mount !== 'function') {\n\t\t\tthrow new Error('The mount argument should be a function')\n\t\t}\n\t\tif (typeof update !== 'function') {\n\t\t\tthrow new Error('The update argument should be a function')\n\t\t}\n\t\tif (typeof destroy !== 'function') {\n\t\t\tthrow new Error('The destroy argument should be a function')\n\t\t}\n\t\tif (typeof enabled !== 'function') {\n\t\t\tthrow new Error('The enabled argument should be a function')\n\t\t}\n\t\tif (typeof scrollBottomReached !== 'function') {\n\t\t\tthrow new Error('The scrollBottomReached argument should be a function')\n\t\t}\n\n\t\tthis._id = id\n\t\tthis._name = name\n\t\tthis._icon = icon\n\t\tthis._mount = mount\n\t\tthis._update = update\n\t\tthis._destroy = destroy\n\t\tthis._enabled = enabled\n\t\tthis._scrollBottomReached = scrollBottomReached\n\n\t}\n\n\tget id() {\n\t\treturn this._id\n\t}\n\n\tget name() {\n\t\treturn this._name\n\t}\n\n\tget icon() {\n\t\treturn this._icon\n\t}\n\n\tget mount() {\n\t\treturn this._mount\n\t}\n\n\tget update() {\n\t\treturn this._update\n\t}\n\n\tget destroy() {\n\t\treturn this._destroy\n\t}\n\n\tget enabled() {\n\t\treturn this._enabled\n\t}\n\n\tget scrollBottomReached() {\n\t\treturn this._scrollBottomReached\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport Vue from 'vue'\nimport { translate as t } from '@nextcloud/l10n'\n\nimport SidebarView from './views/Sidebar.vue'\nimport Sidebar from './services/Sidebar'\nimport Tab from './models/Tab'\n\nVue.prototype.t = t\n\n// Init Sidebar Service\nif (!window.OCA.Files) {\n\twindow.OCA.Files = {}\n}\nObject.assign(window.OCA.Files, { Sidebar: new Sidebar() })\nObject.assign(window.OCA.Files.Sidebar, { Tab })\n\nconsole.debug('OCA.Files.Sidebar initialized')\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\tconst contentElement = document.querySelector('body > .content')\n\t\t|| document.querySelector('body > #content')\n\n\t// Make sure we have a proper layout\n\tif (contentElement) {\n\t\t// Make sure we have a mountpoint\n\t\tif (!document.getElementById('app-sidebar')) {\n\t\t\tconst sidebarElement = document.createElement('div')\n\t\t\tsidebarElement.id = 'app-sidebar'\n\t\t\tcontentElement.appendChild(sidebarElement)\n\t\t}\n\t}\n\n\t// Init vue app\n\tconst View = Vue.extend(SidebarView)\n\tconst AppSidebar = new View({\n\t\tname: 'SidebarRoot',\n\t})\n\tAppSidebar.$mount('#app-sidebar')\n\twindow.OCA.Files.Sidebar.open = AppSidebar.open\n\twindow.OCA.Files.Sidebar.close = AppSidebar.close\n\twindow.OCA.Files.Sidebar.setFullScreenMode = AppSidebar.setFullScreenMode\n})\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, \".app-sidebar--has-preview[data-v-780526c0] .app-sidebar-header__figure{background-size:cover}.app-sidebar--has-preview[data-v-780526c0][data-mimetype=\\\"text/plain\\\"] .app-sidebar-header__figure,.app-sidebar--has-preview[data-v-780526c0][data-mimetype=\\\"text/markdown\\\"] .app-sidebar-header__figure{background-size:contain}.app-sidebar--full[data-v-780526c0]{position:fixed !important;z-index:2025 !important;top:0 !important;height:100% !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/Sidebar.vue\"],\"names\":[],\"mappings\":\"AAoeE,uEACC,qBAAA,CAKA,yMACC,uBAAA,CAKH,oCACC,yBAAA,CACA,uBAAA,CACA,gBAAA,CACA,sBAAA\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.app-sidebar {\\n\\t&--has-preview::v-deep {\\n\\t\\t.app-sidebar-header__figure {\\n\\t\\t\\tbackground-size: cover;\\n\\t\\t}\\n\\n\\t\\t&[data-mimetype=\\\"text/plain\\\"],\\n\\t\\t&[data-mimetype=\\\"text/markdown\\\"] {\\n\\t\\t\\t.app-sidebar-header__figure {\\n\\t\\t\\t\\tbackground-size: contain;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&--full {\\n\\t\\tposition: fixed !important;\\n\\t\\tz-index: 2025 !important;\\n\\t\\ttop: 0 !important;\\n\\t\\theight: 100% !important;\\n\\t}\\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 = 4092;","__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\t4092: 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));","__webpack_require__.nc = undefined;","// 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__(31504); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","url","axios","method","data","response","file","OCA","Files","App","fileList","filesClient","_client","parseMultiStatus","fileInfo","_parseFileInfo","get","key","isDirectory","mimetype","_vm","this","_h","$createElement","_c","_self","ref","attrs","name","icon","on","onScrollBottomReached","_e","_v","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_b","_d","close","setActiveTab","toggleStarred","handleOpening","handleOpened","handleClosing","handleClosed","defaultActionListener","$event","stopPropagation","preventDefault","onDefaultAction","apply","arguments","scopedSlots","_u","fn","_l","view","cid","proxy","toggleTags","_s","t","appSidebar","error","tab","enabled","directives","rawName","value","loading","expression","mount","update","destroy","scrollBottomReached","Sidebar","_state","tabs","views","activeTab","console","debug","findIndex","check","push","Tab","undefined","trim","_id","_name","_icon","_mount","_update","_destroy","_enabled","_scrollBottomReached","Vue","window","assign","addEventListener","contentElement","document","querySelector","getElementById","sidebarElement","createElement","appendChild","AppSidebar","SidebarView","$mount","open","setFullScreenMode","___CSS_LOADER_EXPORT___","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","call","m","amdD","amdO","O","result","chunkIds","priority","notFulfilled","Infinity","i","length","fulfilled","j","every","splice","r","n","getter","__esModule","d","a","definition","defineProperty","enumerable","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/files_sharing-additionalScripts.js b/dist/files_sharing-additionalScripts.js
index e4d11a87d85..86ce2c01b1b 100644
--- a/dist/files_sharing-additionalScripts.js
+++ b/dist/files_sharing-additionalScripts.js
@@ -1,3 +1,3 @@
/*! For license information please see files_sharing-additionalScripts.js.LICENSE.txt */
-!function(){var e,a={5972:function(e,a,r){"use strict";var i,n=r(95573),s=r.n(n),o=r(41922),l=r(42515);_.extend(OC.Files.Client,{PROPERTY_SHARE_TYPES:"{"+OC.Files.Client.NS_OWNCLOUD+"}share-types",PROPERTY_OWNER_ID:"{"+OC.Files.Client.NS_OWNCLOUD+"}owner-id",PROPERTY_OWNER_DISPLAY_NAME:"{"+OC.Files.Client.NS_OWNCLOUD+"}owner-display-name"}),OCA.Sharing||(OCA.Sharing={}),OCA.Sharing.Util={_REMOTE_OWNER_REGEXP:new RegExp("^(([^@]*)@(([^@^/\\s]*)@)?)((https://)?[^[\\s/]*)([/](.*))?$"),attach:function(e){var a;if(null!==(a=(0,l.getCapabilities)().files_sharing)&&void 0!==a&&a.api_enabled&&"trashbin"!==e.id&&"files.public"!==e.id){var r=e.fileActions,i=e._createRow;e._createRow=function(e){var a=i.apply(this,arguments),t=OCA.Sharing.Util.getSharePermissions(e);return 0===e.permissions&&(delete r.actions.all.Comment,delete r.actions.all.Details,delete r.actions.all.Goto),a.attr("data-share-permissions",t),e.shareOwner&&(a.attr("data-share-owner",e.shareOwner),a.attr("data-share-owner-id",e.shareOwnerId),"shared-root"===e.mountType&&a.attr("data-permissions",e.permissions|OC.PERMISSION_UPDATE)),e.recipientData&&!_.isEmpty(e.recipientData)&&a.attr("data-share-recipient-data",JSON.stringify(e.recipientData)),e.shareTypes&&a.attr("data-share-types",e.shareTypes.join(",")),a};var n=e.elementToFile;e.elementToFile=function(e){var a=n.apply(this,arguments);if(a.sharePermissions=e.attr("data-share-permissions")||void 0,a.shareOwner=e.attr("data-share-owner")||void 0,a.shareOwnerId=e.attr("data-share-owner-id")||void 0,e.attr("data-share-types")&&(a.shareTypes=e.attr("data-share-types").split(",")),e.attr("data-expiration")){var t=parseInt(e.attr("data-expiration"));a.shares=[],a.shares.push({expiration:t})}return a};var s=e._getWebdavProperties;e._getWebdavProperties=function(){var e=s.apply(this,arguments);return e.push(OC.Files.Client.PROPERTY_OWNER_ID),e.push(OC.Files.Client.PROPERTY_OWNER_DISPLAY_NAME),e.push(OC.Files.Client.PROPERTY_SHARE_TYPES),e},e.filesClient.addFileInfoParser((function(e){var a={},t=e.propStat[0].properties,r=t[OC.Files.Client.PROPERTY_PERMISSIONS];r&&r.indexOf("S")>=0&&(a.shareOwner=t[OC.Files.Client.PROPERTY_OWNER_DISPLAY_NAME],a.shareOwnerId=t[OC.Files.Client.PROPERTY_OWNER_ID]);var i=t[OC.Files.Client.PROPERTY_SHARE_TYPES];return i&&(a.shareTypes=_.chain(i).filter((function(e){return e.namespaceURI===OC.Files.Client.NS_OWNCLOUD&&"share-type"===e.nodeName.split(":")[1]})).map((function(e){return parseInt(e.textContent||e.text,10)})).value()),a})),e.$el.on("fileActionsReady",(function(e){var a=e.$files;_.each(a,(function(e){var a=$(e),t=a.attr("data-share-types")||"",r=a.attr("data-share-owner");if(t||r){var i=!1,n=!1;_.each(t.split(",")||[],(function(e){var a=parseInt(e,10);a===o.D.SHARE_TYPE_LINK||a===o.D.SHARE_TYPE_EMAIL?i=!0:(a===o.D.SHARE_TYPE_USER||a===o.D.SHARE_TYPE_GROUP||a===o.D.SHARE_TYPE_REMOTE||a===o.D.SHARE_TYPE_REMOTE_GROUP||a===o.D.SHARE_TYPE_CIRCLE||a===o.D.SHARE_TYPE_ROOM||a===o.D.SHARE_TYPE_DECK)&&(n=!0)})),OCA.Sharing.Util._updateFileActionIcon(a,n,i)}}))})),e.$el.on("changeDirectory",(function(){OCA.Sharing.sharesLoaded=!1})),r.registerAction({name:"Share",displayName:function(e){if(e&&e.$file){var a=parseInt(e.$file.data("share-types"),10),r=e.$file.data("share-owner-id");if(a>=0||r)return t("files_sharing","Shared")}return t("files_sharing","Share")},altText:t("files_sharing","Share"),mime:"all",order:-150,permissions:OC.PERMISSION_ALL,iconClass:function(e,a){var t=parseInt(a.$file.data("share-types"),10);return t===o.D.SHARE_TYPE_EMAIL||t===o.D.SHARE_TYPE_LINK?"icon-public":"icon-shared"},icon:function(e,a){var t=a.$file.data("share-owner-id");if(t)return OC.generateUrl("/avatar/".concat(t,"/32"))},type:OCA.Files.FileActions.TYPE_INLINE,actionHandler:function(a,t){if(e._detailsView){var r=parseInt(t.$file.data("share-permissions"),10);(isNaN(r)||r>0)&&e.showDetailsView(a,"sharing")}},render:function(e,a,t){return 0!=(parseInt(t.$file.data("permissions"),10)&OC.PERMISSION_SHARE)||t.$file.attr("data-share-owner")?r._defaultRenderAction.call(r,e,a,t):null}});var d=new OCA.Sharing.ShareBreadCrumbView;e.registerBreadCrumbDetailView(d)}},_updateFileListDataAttributes:function(e,a,t){if("files"!==e.id)if(_.pluck(t.get("shares"),"share_with_displayname").length){var r=_.mapObject(t.get("shares"),(function(e){return{shareWith:e.share_with,shareWithDisplayName:e.share_with_displayname}}));a.attr("data-share-recipient-data",JSON.stringify(r))}else a.removeAttr("data-share-recipient-data")},_updateFileActionIcon:function(e,a,t){return!!(a||t||e.attr("data-share-recipient-data")||e.attr("data-share-owner"))&&(OCA.Sharing.Util._markFileAsShared(e,!0,t),!0)},_markFileAsShared:function(e,a,r){var i,n,s,o,l=e.find('.fileactions .action[data-action="Share"]'),d=e.data("type"),h=l.find(".icon"),c=e.attr("data-share-owner-id"),p=e.attr("data-share-owner"),u=e.attr("data-mounttype"),f="icon-shared";l.removeClass("shared-style"),"dir"===d&&(a||r||c)?(o=void 0!==u&&"shared-root"!==u&&"shared"!==u?OC.MimeType.getIconUrl("dir-"+u):r?OC.MimeType.getIconUrl("dir-public"):OC.MimeType.getIconUrl("dir-shared"),e.find(".filename .thumbnail").css("background-image","url("+o+")"),e.attr("data-icon",o)):"dir"===d&&("true"===e.attr("data-e2eencrypted")?(o=OC.MimeType.getIconUrl("dir-encrypted"),e.attr("data-icon",o)):u&&0===u.indexOf("external")?(o=OC.MimeType.getIconUrl("dir-external"),e.attr("data-icon",o)):(o=OC.MimeType.getIconUrl("dir"),e.removeAttr("data-icon")),e.find(".filename .thumbnail").css("background-image","url("+o+")")),a||c?(n=e.data("share-recipient-data"),l.addClass("shared-style"),s="<span>"+t("files_sharing","Shared")+"</span>",c?(i=t("files_sharing","Shared by"),s=OCA.Sharing.Util._formatRemoteShare(c,p,i)):n&&(s=OCA.Sharing.Util._formatShareList(n)),l.html(s).prepend(h),(c||n)&&(l.find(".avatar").each((function(){$(this).avatar($(this).data("username"),32)})),l.find("span[title]").tooltip({placement:"top"}))):l.html('<span class="hidden-visually">'+t("files_sharing","Shared")+"</span>").prepend(h),r&&(f="icon-public"),h.removeClass("icon-shared icon-public").addClass(f)},_formatRemoteShare:function(e,a,t){var r=OCA.Sharing.Util._REMOTE_OWNER_REGEXP.exec(e);if(!r||!r[7])return'<span class="avatar" data-username="'+s()(e)+'" title="'+t+" "+s()(a)+'"></span><span class="hidden-visually">'+t+" "+s()(a)+"</span> ";var i=r[2],n=r[4],o=r[5],l=r[6],d=r[8]?r[7]:"",h=t+" "+i;n&&(h+="@"+n),o&&(h+="@"+o.replace(l,"")+d);var c='<span class="remoteAddress" title="'+s()(h)+'">';return c+='<span class="username">'+s()(i)+"</span>",n&&(c+='<span class="userDomain">@'+s()(n)+"</span>"),c+"</span> "},_formatShareList:function(e){var a=this;return(e=_.toArray(e)).sort((function(e,a){return e.shareWithDisplayName.localeCompare(a.shareWithDisplayName)})),$.map(e,(function(e){return a._formatRemoteShare(e.shareWith,e.shareWithDisplayName,t("files_sharing","Shared with"))}))},markFileAsShared:function(e,a,r){var i,n,s,o,l=e.find('.fileactions .action[data-action="Share"]'),d=e.data("type"),h=l.find(".icon"),c=e.attr("data-share-owner-id"),p=e.attr("data-share-owner"),u=e.attr("data-mounttype"),f="icon-shared";l.removeClass("shared-style"),"dir"===d&&(a||r||c)?(o=void 0!==u&&"shared-root"!==u&&"shared"!==u?OC.MimeType.getIconUrl("dir-"+u):r?OC.MimeType.getIconUrl("dir-public"):OC.MimeType.getIconUrl("dir-shared"),e.find(".filename .thumbnail").css("background-image","url("+o+")"),e.attr("data-icon",o)):"dir"===d&&("true"===e.attr("data-e2eencrypted")?(o=OC.MimeType.getIconUrl("dir-encrypted"),e.attr("data-icon",o)):u&&0===u.indexOf("external")?(o=OC.MimeType.getIconUrl("dir-external"),e.attr("data-icon",o)):(o=OC.MimeType.getIconUrl("dir"),e.removeAttr("data-icon")),e.find(".filename .thumbnail").css("background-image","url("+o+")")),a||c?(n=e.data("share-recipient-data"),l.addClass("shared-style"),s="<span>"+t("files_sharing","Shared")+"</span>",c?(i=t("files_sharing","Shared by"),s=this._formatRemoteShare(c,p,i)):n&&(s=this._formatShareList(n)),l.html(s).prepend(h),(c||n)&&(l.find(".avatar").each((function(){$(this).avatar($(this).data("username"),32)})),l.find("span[title]").tooltip({placement:"top"}))):l.html('<span class="hidden-visually">'+t("files_sharing","Shared")+"</span>").prepend(h),r&&(f="icon-public"),h.removeClass("icon-shared icon-public").addClass(f)},getSharePermissions:function(e){return e.sharePermissions}},OC.Plugins.register("OCA.Files.FileList",OCA.Sharing.Util),i=OC.Backbone.View.extend({tagName:"span",events:{click:"_onClick"},_dirInfo:void 0,render:function(e){if(this._dirInfo=e.dirInfo||null,null===this._dirInfo||"/"===this._dirInfo.path&&""===this._dirInfo.name)this.$el.removeClass("shared icon-public icon-shared"),this.$el.hide();else{var a=e.dirInfo&&e.dirInfo.shareTypes&&e.dirInfo.shareTypes.length>0;this.$el.removeClass("shared icon-public icon-shared"),a?(this.$el.addClass("shared"),-1!==e.dirInfo.shareTypes.indexOf(o.D.SHARE_TYPE_LINK)?this.$el.addClass("icon-public"):this.$el.addClass("icon-shared")):this.$el.addClass("icon-shared"),this.$el.show(),this.delegateEvents()}return this},_onClick:function(e){e.preventDefault(),e.stopPropagation();var a=new OCA.Files.FileInfoModel(this._dirInfo),t=this;a.on("change",(function(){t.render({dirInfo:t._dirInfo})}));var r=a.attributes.path+"/"+a.attributes.name;OCA.Files.Sidebar.open(r),OCA.Files.Sidebar.setActiveTab("sharing")}}),OCA.Sharing.ShareBreadCrumbView=i;var d=r(93379),h=r.n(d),c=r(7795),p=r.n(c),u=r(90569),f=r.n(u),m=r(3565),O=r.n(m),C=r(19216),g=r.n(C),A=r(44589),v=r.n(A),y=r(89216),S={};S.styleTagTransform=v(),S.setAttributes=O(),S.insert=f().bind(null,"head"),S.domAPI=p(),S.insertStyleElement=g(),h()(y.Z,S),y.Z&&y.Z.locals&&y.Z.locals,r(18730),r.nc=btoa(OC.requestToken),window.OCA.Sharing=OCA.Sharing},18730:function(e,a,r){r.nc=btoa(OC.requestToken),window.OCP.Collaboration.registerType("file",{action:function(){return new Promise((function(e,a){OC.dialogs.filepicker(t("files_sharing","Link to a file"),(function(t){OC.Files.getClient().getFileInfo(t).then((function(a,t){e(t.id)})).fail((function(){a(new Error("Cannot get fileinfo"))}))}),!1,null,!1,OC.dialogs.FILEPICKER_TYPE_CHOOSE,"",{allowDirectoryChooser:!0})}))},typeString:t("files_sharing","Link to a file"),typeIconClass:"icon-files-dark"})},89216:function(e,a,t){"use strict";var r=t(87537),i=t.n(r),n=t(23645),s=t.n(n)()(i());s.push([e.id,"div.crumb span.icon-shared,div.crumb span.icon-public{display:inline-block;cursor:pointer;opacity:.2;margin-right:6px}div.crumb span.icon-shared.shared,div.crumb span.icon-public.shared{opacity:.7}","",{version:3,sources:["webpack://./apps/files_sharing/src/style/sharebreadcrumb.scss"],names:[],mappings:"AAsBA,sDAEC,oBAAA,CACA,cAAA,CACA,UAAA,CACA,gBAAA,CAGD,oEAEC,UAAA",sourcesContent:["/**\n * @copyright 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license GNU AGPL version 3 or any later version\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 */\n\ndiv.crumb span.icon-shared,\ndiv.crumb span.icon-public {\n\tdisplay: inline-block;\n\tcursor: pointer;\n\topacity: 0.2;\n\tmargin-right: 6px;\n}\n\ndiv.crumb span.icon-shared.shared,\ndiv.crumb span.icon-public.shared {\n\topacity: 0.7;\n}\n"],sourceRoot:""}]),a.Z=s}},r={};function i(e){var t=r[e];if(void 0!==t)return t.exports;var n=r[e]={id:e,loaded:!1,exports:{}};return a[e].call(n.exports,n,n.exports,i),n.loaded=!0,n.exports}i.m=a,i.amdD=function(){throw new Error("define cannot be used indirect")},i.amdO={},e=[],i.O=function(a,t,r,n){if(!t){var s=1/0;for(h=0;h<e.length;h++){t=e[h][0],r=e[h][1],n=e[h][2];for(var o=!0,l=0;l<t.length;l++)(!1&n||s>=n)&&Object.keys(i.O).every((function(e){return i.O[e](t[l])}))?t.splice(l--,1):(o=!1,n<s&&(s=n));if(o){e.splice(h--,1);var d=r();void 0!==d&&(a=d)}}return a}n=n||0;for(var h=e.length;h>0&&e[h-1][2]>n;h--)e[h]=e[h-1];e[h]=[t,r,n]},i.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(a,{a:a}),a},i.d=function(e,a){for(var t in a)i.o(a,t)&&!i.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:a[t]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},i.j=6200,function(){i.b=document.baseURI||self.location.href;var e={6200:0,5438:0};i.O.j=function(a){return 0===e[a]};var a=function(a,t){var r,n,s=t[0],o=t[1],l=t[2],d=0;if(s.some((function(a){return 0!==e[a]}))){for(r in o)i.o(o,r)&&(i.m[r]=o[r]);if(l)var h=l(i)}for(a&&a(t);d<s.length;d++)n=s[d],i.o(e,n)&&e[n]&&e[n][0](),e[n]=0;return i.O(h)},t=self.webpackChunknextcloud=self.webpackChunknextcloud||[];t.forEach(a.bind(null,0)),t.push=a.bind(null,t.push.bind(t))}();var n=i.O(void 0,[7874],(function(){return i(5972)}));n=i.O(n)}();
-//# sourceMappingURL=files_sharing-additionalScripts.js.map?v=26cb2733208f96252cdc \ No newline at end of file
+!function(){var e,a={5972:function(e,a,r){"use strict";var i,n=r(95573),s=r.n(n),o=r(41922),l=r(42515);_.extend(OC.Files.Client,{PROPERTY_SHARE_TYPES:"{"+OC.Files.Client.NS_OWNCLOUD+"}share-types",PROPERTY_OWNER_ID:"{"+OC.Files.Client.NS_OWNCLOUD+"}owner-id",PROPERTY_OWNER_DISPLAY_NAME:"{"+OC.Files.Client.NS_OWNCLOUD+"}owner-display-name"}),OCA.Sharing||(OCA.Sharing={}),OCA.Sharing.Util={_REMOTE_OWNER_REGEXP:new RegExp("^(([^@]*)@(([^@^/\\s]*)@)?)((https://)?[^[\\s/]*)([/](.*))?$"),attach:function(e){var a;if(null!==(a=(0,l.getCapabilities)().files_sharing)&&void 0!==a&&a.api_enabled&&"trashbin"!==e.id&&"files.public"!==e.id){var r=e.fileActions,i=e._createRow;e._createRow=function(e){var a=i.apply(this,arguments),t=OCA.Sharing.Util.getSharePermissions(e);return 0===e.permissions&&(delete r.actions.all.Comment,delete r.actions.all.Details,delete r.actions.all.Goto),a.attr("data-share-permissions",t),e.shareOwner&&(a.attr("data-share-owner",e.shareOwner),a.attr("data-share-owner-id",e.shareOwnerId),"shared-root"===e.mountType&&a.attr("data-permissions",e.permissions|OC.PERMISSION_UPDATE)),e.recipientData&&!_.isEmpty(e.recipientData)&&a.attr("data-share-recipient-data",JSON.stringify(e.recipientData)),e.shareTypes&&a.attr("data-share-types",e.shareTypes.join(",")),a};var n=e.elementToFile;e.elementToFile=function(e){var a=n.apply(this,arguments);if(a.sharePermissions=e.attr("data-share-permissions")||void 0,a.shareOwner=e.attr("data-share-owner")||void 0,a.shareOwnerId=e.attr("data-share-owner-id")||void 0,e.attr("data-share-types")&&(a.shareTypes=e.attr("data-share-types").split(",")),e.attr("data-expiration")){var t=parseInt(e.attr("data-expiration"));a.shares=[],a.shares.push({expiration:t})}return a};var s=e._getWebdavProperties;e._getWebdavProperties=function(){var e=s.apply(this,arguments);return e.push(OC.Files.Client.PROPERTY_OWNER_ID),e.push(OC.Files.Client.PROPERTY_OWNER_DISPLAY_NAME),e.push(OC.Files.Client.PROPERTY_SHARE_TYPES),e},e.filesClient.addFileInfoParser((function(e){var a={},t=e.propStat[0].properties,r=t[OC.Files.Client.PROPERTY_PERMISSIONS];r&&r.indexOf("S")>=0&&(a.shareOwner=t[OC.Files.Client.PROPERTY_OWNER_DISPLAY_NAME],a.shareOwnerId=t[OC.Files.Client.PROPERTY_OWNER_ID]);var i=t[OC.Files.Client.PROPERTY_SHARE_TYPES];return i&&(a.shareTypes=_.chain(i).filter((function(e){return e.namespaceURI===OC.Files.Client.NS_OWNCLOUD&&"share-type"===e.nodeName.split(":")[1]})).map((function(e){return parseInt(e.textContent||e.text,10)})).value()),a})),e.$el.on("fileActionsReady",(function(e){var a=e.$files;_.each(a,(function(e){var a=$(e),t=a.attr("data-share-types")||"",r=a.attr("data-share-owner");if(t||r){var i=!1,n=!1;_.each(t.split(",")||[],(function(e){var a=parseInt(e,10);a===o.D.SHARE_TYPE_LINK||a===o.D.SHARE_TYPE_EMAIL?i=!0:(a===o.D.SHARE_TYPE_USER||a===o.D.SHARE_TYPE_GROUP||a===o.D.SHARE_TYPE_REMOTE||a===o.D.SHARE_TYPE_REMOTE_GROUP||a===o.D.SHARE_TYPE_CIRCLE||a===o.D.SHARE_TYPE_ROOM||a===o.D.SHARE_TYPE_DECK)&&(n=!0)})),OCA.Sharing.Util._updateFileActionIcon(a,n,i)}}))})),e.$el.on("changeDirectory",(function(){OCA.Sharing.sharesLoaded=!1})),r.registerAction({name:"Share",displayName:function(e){if(e&&e.$file){var a=parseInt(e.$file.data("share-types"),10),r=e.$file.data("share-owner-id");if(a>=0||r)return t("files_sharing","Shared")}return t("files_sharing","Share")},altText:t("files_sharing","Share"),mime:"all",order:-150,permissions:OC.PERMISSION_ALL,iconClass:function(e,a){var t=parseInt(a.$file.data("share-types"),10);return t===o.D.SHARE_TYPE_EMAIL||t===o.D.SHARE_TYPE_LINK?"icon-public":"icon-shared"},icon:function(e,a){var t=a.$file.data("share-owner-id");if(t)return OC.generateUrl("/avatar/".concat(t,"/32"))},type:OCA.Files.FileActions.TYPE_INLINE,actionHandler:function(a,t){if(e._detailsView){var r=parseInt(t.$file.data("share-permissions"),10);(isNaN(r)||r>0)&&e.showDetailsView(a,"sharing")}},render:function(e,a,t){return 0!=(parseInt(t.$file.data("permissions"),10)&OC.PERMISSION_SHARE)||t.$file.attr("data-share-owner")?r._defaultRenderAction.call(r,e,a,t):null}});var d=new OCA.Sharing.ShareBreadCrumbView;e.registerBreadCrumbDetailView(d)}},_updateFileListDataAttributes:function(e,a,t){if("files"!==e.id)if(_.pluck(t.get("shares"),"share_with_displayname").length){var r=_.mapObject(t.get("shares"),(function(e){return{shareWith:e.share_with,shareWithDisplayName:e.share_with_displayname}}));a.attr("data-share-recipient-data",JSON.stringify(r))}else a.removeAttr("data-share-recipient-data")},_updateFileActionIcon:function(e,a,t){return!!(a||t||e.attr("data-share-recipient-data")||e.attr("data-share-owner"))&&(OCA.Sharing.Util._markFileAsShared(e,!0,t),!0)},_markFileAsShared:function(e,a,r){var i,n,s,o,l=e.find('.fileactions .action[data-action="Share"]'),d=e.data("type"),h=l.find(".icon"),c=e.attr("data-share-owner-id"),p=e.attr("data-share-owner"),u=e.attr("data-mounttype"),f="icon-shared";l.removeClass("shared-style"),"dir"===d&&(a||r||c)?(o=void 0!==u&&"shared-root"!==u&&"shared"!==u?OC.MimeType.getIconUrl("dir-"+u):r?OC.MimeType.getIconUrl("dir-public"):OC.MimeType.getIconUrl("dir-shared"),e.find(".filename .thumbnail").css("background-image","url("+o+")"),e.attr("data-icon",o)):"dir"===d&&("true"===e.attr("data-e2eencrypted")?(o=OC.MimeType.getIconUrl("dir-encrypted"),e.attr("data-icon",o)):u&&0===u.indexOf("external")?(o=OC.MimeType.getIconUrl("dir-external"),e.attr("data-icon",o)):(o=OC.MimeType.getIconUrl("dir"),e.removeAttr("data-icon")),e.find(".filename .thumbnail").css("background-image","url("+o+")")),a||c?(n=e.data("share-recipient-data"),l.addClass("shared-style"),s="<span>"+t("files_sharing","Shared")+"</span>",c?(i=t("files_sharing","Shared by"),s=OCA.Sharing.Util._formatRemoteShare(c,p,i)):n&&(s=OCA.Sharing.Util._formatShareList(n)),l.html(s).prepend(h),(c||n)&&(l.find(".avatar").each((function(){$(this).avatar($(this).data("username"),32)})),l.find("span[title]").tooltip({placement:"top"}))):l.html('<span class="hidden-visually">'+t("files_sharing","Shared")+"</span>").prepend(h),r&&(f="icon-public"),h.removeClass("icon-shared icon-public").addClass(f)},_formatRemoteShare:function(e,a,t){var r=OCA.Sharing.Util._REMOTE_OWNER_REGEXP.exec(e);if(!r||!r[7])return'<span class="avatar" data-username="'+s()(e)+'" title="'+t+" "+s()(a)+'"></span><span class="hidden-visually">'+t+" "+s()(a)+"</span> ";var i=r[2],n=r[4],o=r[5],l=r[6],d=r[8]?r[7]:"",h=t+" "+i;n&&(h+="@"+n),o&&(h+="@"+o.replace(l,"")+d);var c='<span class="remoteAddress" title="'+s()(h)+'">';return c+='<span class="username">'+s()(i)+"</span>",n&&(c+='<span class="userDomain">@'+s()(n)+"</span>"),c+"</span> "},_formatShareList:function(e){var a=this;return(e=_.toArray(e)).sort((function(e,a){return e.shareWithDisplayName.localeCompare(a.shareWithDisplayName)})),$.map(e,(function(e){return a._formatRemoteShare(e.shareWith,e.shareWithDisplayName,t("files_sharing","Shared with"))}))},markFileAsShared:function(e,a,r){var i,n,s,o,l=e.find('.fileactions .action[data-action="Share"]'),d=e.data("type"),h=l.find(".icon"),c=e.attr("data-share-owner-id"),p=e.attr("data-share-owner"),u=e.attr("data-mounttype"),f="icon-shared";l.removeClass("shared-style"),"dir"===d&&(a||r||c)?(o=void 0!==u&&"shared-root"!==u&&"shared"!==u?OC.MimeType.getIconUrl("dir-"+u):r?OC.MimeType.getIconUrl("dir-public"):OC.MimeType.getIconUrl("dir-shared"),e.find(".filename .thumbnail").css("background-image","url("+o+")"),e.attr("data-icon",o)):"dir"===d&&("true"===e.attr("data-e2eencrypted")?(o=OC.MimeType.getIconUrl("dir-encrypted"),e.attr("data-icon",o)):u&&0===u.indexOf("external")?(o=OC.MimeType.getIconUrl("dir-external"),e.attr("data-icon",o)):(o=OC.MimeType.getIconUrl("dir"),e.removeAttr("data-icon")),e.find(".filename .thumbnail").css("background-image","url("+o+")")),a||c?(n=e.data("share-recipient-data"),l.addClass("shared-style"),s="<span>"+t("files_sharing","Shared")+"</span>",c?(i=t("files_sharing","Shared by"),s=this._formatRemoteShare(c,p,i)):n&&(s=this._formatShareList(n)),l.html(s).prepend(h),(c||n)&&(l.find(".avatar").each((function(){$(this).avatar($(this).data("username"),32)})),l.find("span[title]").tooltip({placement:"top"}))):l.html('<span class="hidden-visually">'+t("files_sharing","Shared")+"</span>").prepend(h),r&&(f="icon-public"),h.removeClass("icon-shared icon-public").addClass(f)},getSharePermissions:function(e){return e.sharePermissions}},OC.Plugins.register("OCA.Files.FileList",OCA.Sharing.Util),i=OC.Backbone.View.extend({tagName:"span",events:{click:"_onClick"},_dirInfo:void 0,render:function(e){if(this._dirInfo=e.dirInfo||null,null===this._dirInfo||"/"===this._dirInfo.path&&""===this._dirInfo.name)this.$el.removeClass("shared icon-public icon-shared"),this.$el.hide();else{var a=e.dirInfo&&e.dirInfo.shareTypes&&e.dirInfo.shareTypes.length>0;this.$el.removeClass("shared icon-public icon-shared"),a?(this.$el.addClass("shared"),-1!==e.dirInfo.shareTypes.indexOf(o.D.SHARE_TYPE_LINK)?this.$el.addClass("icon-public"):this.$el.addClass("icon-shared")):this.$el.addClass("icon-shared"),this.$el.show(),this.delegateEvents()}return this},_onClick:function(e){e.preventDefault(),e.stopPropagation();var a=new OCA.Files.FileInfoModel(this._dirInfo),t=this;a.on("change",(function(){t.render({dirInfo:t._dirInfo})}));var r=a.attributes.path+"/"+a.attributes.name;OCA.Files.Sidebar.open(r),OCA.Files.Sidebar.setActiveTab("sharing")}}),OCA.Sharing.ShareBreadCrumbView=i;var d=r(93379),h=r.n(d),c=r(7795),p=r.n(c),u=r(90569),f=r.n(u),m=r(3565),O=r.n(m),C=r(19216),g=r.n(C),A=r(44589),v=r.n(A),y=r(89216),S={};S.styleTagTransform=v(),S.setAttributes=O(),S.insert=f().bind(null,"head"),S.domAPI=p(),S.insertStyleElement=g(),h()(y.Z,S),y.Z&&y.Z.locals&&y.Z.locals,r(18730),r.nc=btoa(OC.requestToken),window.OCA.Sharing=OCA.Sharing},18730:function(e,a,r){r.nc=btoa(OC.requestToken),window.OCP.Collaboration.registerType("file",{action:function(){return new Promise((function(e,a){OC.dialogs.filepicker(t("files_sharing","Link to a file"),(function(t){OC.Files.getClient().getFileInfo(t).then((function(a,t){e(t.id)})).fail((function(){a(new Error("Cannot get fileinfo"))}))}),!1,null,!1,OC.dialogs.FILEPICKER_TYPE_CHOOSE,"",{allowDirectoryChooser:!0})}))},typeString:t("files_sharing","Link to a file"),typeIconClass:"icon-files-dark"})},89216:function(e,a,t){"use strict";var r=t(87537),i=t.n(r),n=t(23645),s=t.n(n)()(i());s.push([e.id,"div.crumb span.icon-shared,div.crumb span.icon-public{display:inline-block;cursor:pointer;opacity:.2;margin-right:6px}div.crumb span.icon-shared.shared,div.crumb span.icon-public.shared{opacity:.7}","",{version:3,sources:["webpack://./apps/files_sharing/src/style/sharebreadcrumb.scss"],names:[],mappings:"AAsBA,sDAEC,oBAAA,CACA,cAAA,CACA,UAAA,CACA,gBAAA,CAGD,oEAEC,UAAA",sourcesContent:["/**\n * @copyright 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license GNU AGPL version 3 or any later version\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 */\n\ndiv.crumb span.icon-shared,\ndiv.crumb span.icon-public {\n\tdisplay: inline-block;\n\tcursor: pointer;\n\topacity: 0.2;\n\tmargin-right: 6px;\n}\n\ndiv.crumb span.icon-shared.shared,\ndiv.crumb span.icon-public.shared {\n\topacity: 0.7;\n}\n"],sourceRoot:""}]),a.Z=s}},r={};function i(e){var t=r[e];if(void 0!==t)return t.exports;var n=r[e]={id:e,loaded:!1,exports:{}};return a[e].call(n.exports,n,n.exports,i),n.loaded=!0,n.exports}i.m=a,i.amdD=function(){throw new Error("define cannot be used indirect")},i.amdO={},e=[],i.O=function(a,t,r,n){if(!t){var s=1/0;for(h=0;h<e.length;h++){t=e[h][0],r=e[h][1],n=e[h][2];for(var o=!0,l=0;l<t.length;l++)(!1&n||s>=n)&&Object.keys(i.O).every((function(e){return i.O[e](t[l])}))?t.splice(l--,1):(o=!1,n<s&&(s=n));if(o){e.splice(h--,1);var d=r();void 0!==d&&(a=d)}}return a}n=n||0;for(var h=e.length;h>0&&e[h-1][2]>n;h--)e[h]=e[h-1];e[h]=[t,r,n]},i.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(a,{a:a}),a},i.d=function(e,a){for(var t in a)i.o(a,t)&&!i.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:a[t]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},i.j=6200,function(){i.b=document.baseURI||self.location.href;var e={6200:0,5438:0};i.O.j=function(a){return 0===e[a]};var a=function(a,t){var r,n,s=t[0],o=t[1],l=t[2],d=0;if(s.some((function(a){return 0!==e[a]}))){for(r in o)i.o(o,r)&&(i.m[r]=o[r]);if(l)var h=l(i)}for(a&&a(t);d<s.length;d++)n=s[d],i.o(e,n)&&e[n]&&e[n][0](),e[n]=0;return i.O(h)},t=self.webpackChunknextcloud=self.webpackChunknextcloud||[];t.forEach(a.bind(null,0)),t.push=a.bind(null,t.push.bind(t))}(),i.nc=void 0;var n=i.O(void 0,[7874],(function(){return i(5972)}));n=i.O(n)}();
+//# sourceMappingURL=files_sharing-additionalScripts.js.map?v=9f521bfd06189d7dad1d \ No newline at end of file
diff --git a/dist/files_sharing-additionalScripts.js.map b/dist/files_sharing-additionalScripts.js.map
index f3df3c0d64a..15d33d53b90 100644
--- a/dist/files_sharing-additionalScripts.js.map
+++ b/dist/files_sharing-additionalScripts.js.map
@@ -1 +1 @@
-{"version":3,"file":"files_sharing-additionalScripts.js?v=26cb2733208f96252cdc","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/files_sharing/src/sharebreadcrumbview.js","webpack:///nextcloud/apps/files_sharing/src/share.js","webpack://nextcloud/./apps/files_sharing/src/style/sharebreadcrumb.scss?a9a3","webpack:///nextcloud/apps/files_sharing/src/additionalScripts.js","webpack:///nextcloud/apps/files_sharing/src/collaborationresourceshandler.js","webpack:///nextcloud/apps/files_sharing/src/style/sharebreadcrumb.scss","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 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport { Type as ShareTypes } from '@nextcloud/sharing'\n\n(function() {\n\t'use strict'\n\n\tconst BreadCrumbView = OC.Backbone.View.extend({\n\t\ttagName: 'span',\n\t\tevents: {\n\t\t\tclick: '_onClick',\n\t\t},\n\t\t_dirInfo: undefined,\n\n\t\trender(data) {\n\t\t\tthis._dirInfo = data.dirInfo || null\n\n\t\t\tif (this._dirInfo !== null && (this._dirInfo.path !== '/' || this._dirInfo.name !== '')) {\n\t\t\t\tconst isShared = data.dirInfo && data.dirInfo.shareTypes && data.dirInfo.shareTypes.length > 0\n\t\t\t\tthis.$el.removeClass('shared icon-public icon-shared')\n\t\t\t\tif (isShared) {\n\t\t\t\t\tthis.$el.addClass('shared')\n\t\t\t\t\tif (data.dirInfo.shareTypes.indexOf(ShareTypes.SHARE_TYPE_LINK) !== -1) {\n\t\t\t\t\t\tthis.$el.addClass('icon-public')\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.$el.addClass('icon-shared')\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.$el.addClass('icon-shared')\n\t\t\t\t}\n\t\t\t\tthis.$el.show()\n\t\t\t\tthis.delegateEvents()\n\t\t\t} else {\n\t\t\t\tthis.$el.removeClass('shared icon-public icon-shared')\n\t\t\t\tthis.$el.hide()\n\t\t\t}\n\n\t\t\treturn this\n\t\t},\n\t\t_onClick(e) {\n\t\t\te.preventDefault()\n\t\t\te.stopPropagation()\n\n\t\t\tconst fileInfoModel = new OCA.Files.FileInfoModel(this._dirInfo)\n\t\t\tconst self = this\n\t\t\tfileInfoModel.on('change', function() {\n\t\t\t\tself.render({\n\t\t\t\t\tdirInfo: self._dirInfo,\n\t\t\t\t})\n\t\t\t})\n\n\t\t\tconst path = fileInfoModel.attributes.path + '/' + fileInfoModel.attributes.name\n\t\t\tOCA.Files.Sidebar.open(path)\n\t\t\tOCA.Files.Sidebar.setActiveTab('sharing')\n\t\t},\n\t})\n\n\tOCA.Sharing.ShareBreadCrumbView = BreadCrumbView\n})()\n","/**\n * Copyright (c) 2014\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Maxence Lange <maxence@nextcloud.com>\n * @author Michael Jobst <mjobst+github@tecratech.de>\n * @author Michael Jobst <mjobst@necls.com>\n * @author Morris Jobke <hey@morrisjobke.de>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Samuel <faust64@gmail.com>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n/* eslint-disable */\nimport escapeHTML from 'escape-html'\n\nimport { Type as ShareTypes } from '@nextcloud/sharing'\nimport { getCapabilities } from '@nextcloud/capabilities'\n\n(function() {\n\n\t_.extend(OC.Files.Client, {\n\t\tPROPERTY_SHARE_TYPES:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}share-types',\n\t\tPROPERTY_OWNER_ID:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}owner-id',\n\t\tPROPERTY_OWNER_DISPLAY_NAME:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}owner-display-name'\n\t})\n\n\tif (!OCA.Sharing) {\n\t\tOCA.Sharing = {}\n\t}\n\n\t/**\n\t * @namespace\n\t */\n\tOCA.Sharing.Util = {\n\n\t\t/**\n\t\t * Regular expression for splitting parts of remote share owners:\n\t\t * \"user@example.com/\"\n\t\t * \"user@example.com/path/to/owncloud\"\n\t\t * \"user@anotherexample.com@example.com/path/to/owncloud\n\t\t */\n\t\t_REMOTE_OWNER_REGEXP: new RegExp('^(([^@]*)@(([^@^/\\\\s]*)@)?)((https://)?[^[\\\\s/]*)([/](.*))?$'),\n\n\t\t/**\n\t\t * Initialize the sharing plugin.\n\t\t *\n\t\t * Registers the \"Share\" file action and adds additional\n\t\t * DOM attributes for the sharing file info.\n\t\t *\n\t\t * @param {OCA.Files.FileList} fileList file list to be extended\n\t\t */\n\t\tattach: function(fileList) {\n\t\t\t// core sharing is disabled/not loaded\n\t\t\tif (!getCapabilities().files_sharing?.api_enabled) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (fileList.id === 'trashbin' || fileList.id === 'files.public') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tvar fileActions = fileList.fileActions\n\t\t\tvar oldCreateRow = fileList._createRow\n\t\t\tfileList._createRow = function(fileData) {\n\n\t\t\t\tvar tr = oldCreateRow.apply(this, arguments)\n\t\t\t\tvar sharePermissions = OCA.Sharing.Util.getSharePermissions(fileData)\n\n\t\t\t\tif (fileData.permissions === 0) {\n\t\t\t\t\t// no permission, disabling sidebar\n\t\t\t\t\tdelete fileActions.actions.all.Comment\n\t\t\t\t\tdelete fileActions.actions.all.Details\n\t\t\t\t\tdelete fileActions.actions.all.Goto\n\t\t\t\t}\n\t\t\t\ttr.attr('data-share-permissions', sharePermissions)\n\t\t\t\tif (fileData.shareOwner) {\n\t\t\t\t\ttr.attr('data-share-owner', fileData.shareOwner)\n\t\t\t\t\ttr.attr('data-share-owner-id', fileData.shareOwnerId)\n\t\t\t\t\t// user should always be able to rename a mount point\n\t\t\t\t\tif (fileData.mountType === 'shared-root') {\n\t\t\t\t\t\ttr.attr('data-permissions', fileData.permissions | OC.PERMISSION_UPDATE)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (fileData.recipientData && !_.isEmpty(fileData.recipientData)) {\n\t\t\t\t\ttr.attr('data-share-recipient-data', JSON.stringify(fileData.recipientData))\n\t\t\t\t}\n\t\t\t\tif (fileData.shareTypes) {\n\t\t\t\t\ttr.attr('data-share-types', fileData.shareTypes.join(','))\n\t\t\t\t}\n\t\t\t\treturn tr\n\t\t\t}\n\n\t\t\tvar oldElementToFile = fileList.elementToFile\n\t\t\tfileList.elementToFile = function($el) {\n\t\t\t\tvar fileInfo = oldElementToFile.apply(this, arguments)\n\t\t\t\tfileInfo.sharePermissions = $el.attr('data-share-permissions') || undefined\n\t\t\t\tfileInfo.shareOwner = $el.attr('data-share-owner') || undefined\n\t\t\t\tfileInfo.shareOwnerId = $el.attr('data-share-owner-id') || undefined\n\n\t\t\t\tif ($el.attr('data-share-types')) {\n\t\t\t\t\tfileInfo.shareTypes = $el.attr('data-share-types').split(',')\n\t\t\t\t}\n\n\t\t\t\tif ($el.attr('data-expiration')) {\n\t\t\t\t\tvar expirationTimestamp = parseInt($el.attr('data-expiration'))\n\t\t\t\t\tfileInfo.shares = []\n\t\t\t\t\tfileInfo.shares.push({ expiration: expirationTimestamp })\n\t\t\t\t}\n\n\t\t\t\treturn fileInfo\n\t\t\t}\n\n\t\t\tvar oldGetWebdavProperties = fileList._getWebdavProperties\n\t\t\tfileList._getWebdavProperties = function() {\n\t\t\t\tvar props = oldGetWebdavProperties.apply(this, arguments)\n\t\t\t\tprops.push(OC.Files.Client.PROPERTY_OWNER_ID)\n\t\t\t\tprops.push(OC.Files.Client.PROPERTY_OWNER_DISPLAY_NAME)\n\t\t\t\tprops.push(OC.Files.Client.PROPERTY_SHARE_TYPES)\n\t\t\t\treturn props\n\t\t\t}\n\n\t\t\tfileList.filesClient.addFileInfoParser(function(response) {\n\t\t\t\tvar data = {}\n\t\t\t\tvar props = response.propStat[0].properties\n\t\t\t\tvar permissionsProp = props[OC.Files.Client.PROPERTY_PERMISSIONS]\n\n\t\t\t\tif (permissionsProp && permissionsProp.indexOf('S') >= 0) {\n\t\t\t\t\tdata.shareOwner = props[OC.Files.Client.PROPERTY_OWNER_DISPLAY_NAME]\n\t\t\t\t\tdata.shareOwnerId = props[OC.Files.Client.PROPERTY_OWNER_ID]\n\t\t\t\t}\n\n\t\t\t\tvar shareTypesProp = props[OC.Files.Client.PROPERTY_SHARE_TYPES]\n\t\t\t\tif (shareTypesProp) {\n\t\t\t\t\tdata.shareTypes = _.chain(shareTypesProp).filter(function(xmlvalue) {\n\t\t\t\t\t\treturn (xmlvalue.namespaceURI === OC.Files.Client.NS_OWNCLOUD && xmlvalue.nodeName.split(':')[1] === 'share-type')\n\t\t\t\t\t}).map(function(xmlvalue) {\n\t\t\t\t\t\treturn parseInt(xmlvalue.textContent || xmlvalue.text, 10)\n\t\t\t\t\t}).value()\n\t\t\t\t}\n\n\t\t\t\treturn data\n\t\t\t})\n\n\t\t\t// use delegate to catch the case with multiple file lists\n\t\t\tfileList.$el.on('fileActionsReady', function(ev) {\n\t\t\t\tvar $files = ev.$files\n\n\t\t\t\t_.each($files, function(file) {\n\t\t\t\t\tvar $tr = $(file)\n\t\t\t\t\tvar shareTypesStr = $tr.attr('data-share-types') || ''\n\t\t\t\t\tvar shareOwner = $tr.attr('data-share-owner')\n\t\t\t\t\tif (shareTypesStr || shareOwner) {\n\t\t\t\t\t\tvar hasLink = false\n\t\t\t\t\t\tvar hasShares = false\n\t\t\t\t\t\t_.each(shareTypesStr.split(',') || [], function(shareTypeStr) {\n\t\t\t\t\t\t\tlet shareType = parseInt(shareTypeStr, 10)\n\t\t\t\t\t\t\tif (shareType === ShareTypes.SHARE_TYPE_LINK) {\n\t\t\t\t\t\t\t\thasLink = true\n\t\t\t\t\t\t\t} else if (shareType === ShareTypes.SHARE_TYPE_EMAIL) {\n\t\t\t\t\t\t\t\thasLink = true\n\t\t\t\t\t\t\t} else if (shareType === ShareTypes.SHARE_TYPE_USER) {\n\t\t\t\t\t\t\t\thasShares = true\n\t\t\t\t\t\t\t} else if (shareType === ShareTypes.SHARE_TYPE_GROUP) {\n\t\t\t\t\t\t\t\thasShares = true\n\t\t\t\t\t\t\t} else if (shareType === ShareTypes.SHARE_TYPE_REMOTE) {\n\t\t\t\t\t\t\t\thasShares = true\n\t\t\t\t\t\t\t} else if (shareType === ShareTypes.SHARE_TYPE_REMOTE_GROUP) {\n\t\t\t\t\t\t\t\thasShares = true\n\t\t\t\t\t\t\t} else if (shareType === ShareTypes.SHARE_TYPE_CIRCLE) {\n\t\t\t\t\t\t\t\thasShares = true\n\t\t\t\t\t\t\t} else if (shareType === ShareTypes.SHARE_TYPE_ROOM) {\n\t\t\t\t\t\t\t\thasShares = true\n\t\t\t\t\t\t\t} else if (shareType === ShareTypes.SHARE_TYPE_DECK) {\n\t\t\t\t\t\t\t\thasShares = true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\tOCA.Sharing.Util._updateFileActionIcon($tr, hasShares, hasLink)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\n\t\t\tfileList.$el.on('changeDirectory', function() {\n\t\t\t\tOCA.Sharing.sharesLoaded = false\n\t\t\t})\n\n\t\t\tfileActions.registerAction({\n\t\t\t\tname: 'Share',\n\t\t\t\tdisplayName: function(context) {\n\t\t\t\t\tif (context && context.$file) {\n\t\t\t\t\t\tvar shareType = parseInt(context.$file.data('share-types'), 10)\n\t\t\t\t\t\tvar shareOwner = context.$file.data('share-owner-id')\n\t\t\t\t\t\tif (shareType >= 0 || shareOwner) {\n\t\t\t\t\t\t\treturn t('files_sharing', 'Shared')\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn t('files_sharing', 'Share')\n\t\t\t\t},\n\t\t\t\taltText: t('files_sharing', 'Share'),\n\t\t\t\tmime: 'all',\n\t\t\t\torder: -150,\n\t\t\t\tpermissions: OC.PERMISSION_ALL,\n\t\t\t\ticonClass: function(fileName, context) {\n\t\t\t\t\tvar shareType = parseInt(context.$file.data('share-types'), 10)\n\t\t\t\t\tif (shareType === ShareTypes.SHARE_TYPE_EMAIL\n\t\t\t\t\t\t|| shareType === ShareTypes.SHARE_TYPE_LINK) {\n\t\t\t\t\t\treturn 'icon-public'\n\t\t\t\t\t}\n\t\t\t\t\treturn 'icon-shared'\n\t\t\t\t},\n\t\t\t\ticon: function(fileName, context) {\n\t\t\t\t\tvar shareOwner = context.$file.data('share-owner-id')\n\t\t\t\t\tif (shareOwner) {\n\t\t\t\t\t\treturn OC.generateUrl(`/avatar/${shareOwner}/32`)\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\ttype: OCA.Files.FileActions.TYPE_INLINE,\n\t\t\t\tactionHandler: function(fileName, context) {\n\t\t\t\t\t// details view disabled in some share lists\n\t\t\t\t\tif (!fileList._detailsView) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\t// do not open sidebar if permission is set and equal to 0\n\t\t\t\t\tvar permissions = parseInt(context.$file.data('share-permissions'), 10)\n\t\t\t\t\tif (isNaN(permissions) || permissions > 0) {\n\t\t\t\t\t\tfileList.showDetailsView(fileName, 'sharing')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\trender: function(actionSpec, isDefault, context) {\n\t\t\t\t\tvar permissions = parseInt(context.$file.data('permissions'), 10)\n\t\t\t\t\t// if no share permissions but share owner exists, still show the link\n\t\t\t\t\tif ((permissions & OC.PERMISSION_SHARE) !== 0 || context.$file.attr('data-share-owner')) {\n\t\t\t\t\t\treturn fileActions._defaultRenderAction.call(fileActions, actionSpec, isDefault, context)\n\t\t\t\t\t}\n\t\t\t\t\t// don't render anything\n\t\t\t\t\treturn null\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t// register share breadcrumbs component\n\t\t\tvar breadCrumbSharingDetailView = new OCA.Sharing.ShareBreadCrumbView()\n\t\t\tfileList.registerBreadCrumbDetailView(breadCrumbSharingDetailView)\n\t\t},\n\n\t\t/**\n\t\t * Update file list data attributes\n\t\t */\n\t\t_updateFileListDataAttributes: function(fileList, $tr, shareModel) {\n\t\t\t// files app current cannot show recipients on load, so we don't update the\n\t\t\t// icon when changed for consistency\n\t\t\tif (fileList.id === 'files') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tvar recipients = _.pluck(shareModel.get('shares'), 'share_with_displayname')\n\t\t\t// note: we only update the data attribute because updateIcon()\n\t\t\tif (recipients.length) {\n\t\t\t\tvar recipientData = _.mapObject(shareModel.get('shares'), function(share) {\n\t\t\t\t\treturn { shareWith: share.share_with, shareWithDisplayName: share.share_with_displayname }\n\t\t\t\t})\n\t\t\t\t$tr.attr('data-share-recipient-data', JSON.stringify(recipientData))\n\t\t\t} else {\n\t\t\t\t$tr.removeAttr('data-share-recipient-data')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Update the file action share icon for the given file\n\t\t *\n\t\t * @param $tr file element of the file to update\n\t\t * @param {boolean} hasUserShares true if a user share exists\n\t\t * @param {boolean} hasLinkShares true if a link share exists\n\t\t *\n\t\t * @returns {boolean} true if the icon was set, false otherwise\n\t\t */\n\t\t_updateFileActionIcon: function($tr, hasUserShares, hasLinkShares) {\n\t\t\t// if the statuses are loaded already, use them for the icon\n\t\t\t// (needed when scrolling to the next page)\n\t\t\tif (hasUserShares || hasLinkShares || $tr.attr('data-share-recipient-data') || $tr.attr('data-share-owner')) {\n\t\t\t\tOCA.Sharing.Util._markFileAsShared($tr, true, hasLinkShares)\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\n\t\t/**\n\t\t * Marks/unmarks a given file as shared by changing its action icon\n\t\t * and folder icon.\n\t\t *\n\t\t * @param $tr file element to mark as shared\n\t\t * @param hasShares whether shares are available\n\t\t * @param hasLink whether link share is available\n\t\t */\n\t\t_markFileAsShared: function($tr, hasShares, hasLink) {\n\t\t\tvar action = $tr.find('.fileactions .action[data-action=\"Share\"]')\n\t\t\tvar type = $tr.data('type')\n\t\t\tvar icon = action.find('.icon')\n\t\t\tvar message, recipients, avatars\n\t\t\tvar ownerId = $tr.attr('data-share-owner-id')\n\t\t\tvar owner = $tr.attr('data-share-owner')\n\t\t\tvar mountType = $tr.attr('data-mounttype')\n\t\t\tvar shareFolderIcon\n\t\t\tvar iconClass = 'icon-shared'\n\t\t\taction.removeClass('shared-style')\n\t\t\t// update folder icon\n\t\t\tif (type === 'dir' && (hasShares || hasLink || ownerId)) {\n\t\t\t\tif (typeof mountType !== 'undefined' && mountType !== 'shared-root' && mountType !== 'shared') {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-' + mountType)\n\t\t\t\t} else if (hasLink) {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-public')\n\t\t\t\t} else {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-shared')\n\t\t\t\t}\n\t\t\t\t$tr.find('.filename .thumbnail').css('background-image', 'url(' + shareFolderIcon + ')')\n\t\t\t\t$tr.attr('data-icon', shareFolderIcon)\n\t\t\t} else if (type === 'dir') {\n\t\t\t\tvar isEncrypted = $tr.attr('data-e2eencrypted')\n\t\t\t\t// FIXME: duplicate of FileList._createRow logic for external folder,\n\t\t\t\t// need to refactor the icon logic into a single code path eventually\n\t\t\t\tif (isEncrypted === 'true') {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-encrypted')\n\t\t\t\t\t$tr.attr('data-icon', shareFolderIcon)\n\t\t\t\t} else if (mountType && mountType.indexOf('external') === 0) {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-external')\n\t\t\t\t\t$tr.attr('data-icon', shareFolderIcon)\n\t\t\t\t} else {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir')\n\t\t\t\t\t// back to default\n\t\t\t\t\t$tr.removeAttr('data-icon')\n\t\t\t\t}\n\t\t\t\t$tr.find('.filename .thumbnail').css('background-image', 'url(' + shareFolderIcon + ')')\n\t\t\t}\n\t\t\t// update share action text / icon\n\t\t\tif (hasShares || ownerId) {\n\t\t\t\trecipients = $tr.data('share-recipient-data')\n\t\t\t\taction.addClass('shared-style')\n\n\t\t\t\tavatars = '<span>' + t('files_sharing', 'Shared') + '</span>'\n\t\t\t\t// even if reshared, only show \"Shared by\"\n\t\t\t\tif (ownerId) {\n\t\t\t\t\tmessage = t('files_sharing', 'Shared by')\n\t\t\t\t\tavatars = OCA.Sharing.Util._formatRemoteShare(ownerId, owner, message)\n\t\t\t\t} else if (recipients) {\n\t\t\t\t\tavatars = OCA.Sharing.Util._formatShareList(recipients)\n\t\t\t\t}\n\t\t\t\taction.html(avatars).prepend(icon)\n\n\t\t\t\tif (ownerId || recipients) {\n\t\t\t\t\tvar avatarElement = action.find('.avatar')\n\t\t\t\t\tavatarElement.each(function() {\n\t\t\t\t\t\t$(this).avatar($(this).data('username'), 32)\n\t\t\t\t\t})\n\t\t\t\t\taction.find('span[title]').tooltip({ placement: 'top' })\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\taction.html('<span class=\"hidden-visually\">' + t('files_sharing', 'Shared') + '</span>').prepend(icon)\n\t\t\t}\n\t\t\tif (hasLink) {\n\t\t\t\ticonClass = 'icon-public'\n\t\t\t}\n\t\t\ticon.removeClass('icon-shared icon-public').addClass(iconClass)\n\t\t},\n\t\t/**\n\t\t * Format a remote address\n\t\t *\n\t\t * @param {String} shareWith userid, full remote share, or whatever\n\t\t * @param {String} shareWithDisplayName\n\t\t * @param {String} message\n\t\t * @returns {String} HTML code to display\n\t\t */\n\t\t_formatRemoteShare: function(shareWith, shareWithDisplayName, message) {\n\t\t\tvar parts = OCA.Sharing.Util._REMOTE_OWNER_REGEXP.exec(shareWith)\n\t\t\tif (!parts || !parts[7]) {\n\t\t\t\t// display avatar of the user\n\t\t\t\tvar avatar = '<span class=\"avatar\" data-username=\"' + escapeHTML(shareWith) + '\" title=\"' + message + ' ' + escapeHTML(shareWithDisplayName) + '\"></span>'\n\t\t\t\tvar hidden = '<span class=\"hidden-visually\">' + message + ' ' + escapeHTML(shareWithDisplayName) + '</span> '\n\t\t\t\treturn avatar + hidden\n\t\t\t}\n\n\t\t\tvar userName = parts[2]\n\t\t\tvar userDomain = parts[4]\n\t\t\tvar server = parts[5]\n\t\t\tvar protocol = parts[6]\n\t\t\tvar serverPath = parts[8] ? parts[7] : ''; // no trailing slash on root\n\n\t\t\tvar tooltip = message + ' ' + userName\n\t\t\tif (userDomain) {\n\t\t\t\ttooltip += '@' + userDomain\n\t\t\t}\n\t\t\tif (server) {\n\t\t\t\ttooltip += '@' + server.replace(protocol, '') + serverPath\n\t\t\t}\n\n\t\t\tvar html = '<span class=\"remoteAddress\" title=\"' + escapeHTML(tooltip) + '\">'\n\t\t\thtml += '<span class=\"username\">' + escapeHTML(userName) + '</span>'\n\t\t\tif (userDomain) {\n\t\t\t\thtml += '<span class=\"userDomain\">@' + escapeHTML(userDomain) + '</span>'\n\t\t\t}\n\t\t\thtml += '</span> '\n\t\t\treturn html\n\t\t},\n\t\t/**\n\t\t * Loop over all recipients in the list and format them using\n\t\t * all kind of fancy magic.\n\t\t *\n\t\t* @param {Object} recipients array of all the recipients\n\t\t* @returns {String[]} modified list of recipients\n\t\t*/\n\t\t_formatShareList: function(recipients) {\n\t\t\tvar _parent = this\n\t\t\trecipients = _.toArray(recipients)\n\t\t\trecipients.sort(function(a, b) {\n\t\t\t\treturn a.shareWithDisplayName.localeCompare(b.shareWithDisplayName)\n\t\t\t})\n\t\t\treturn $.map(recipients, function(recipient) {\n\t\t\t\treturn _parent._formatRemoteShare(recipient.shareWith, recipient.shareWithDisplayName, t('files_sharing', 'Shared with'))\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Marks/unmarks a given file as shared by changing its action icon\n\t\t * and folder icon.\n\t\t *\n\t\t* @param $tr file element to mark as shared\n\t\t* @param hasShares whether shares are available\n\t\t* @param hasLink whether link share is available\n\t\t*/\n\t\tmarkFileAsShared: function($tr, hasShares, hasLink) {\n\t\t\tvar action = $tr.find('.fileactions .action[data-action=\"Share\"]')\n\t\t\tvar type = $tr.data('type')\n\t\t\tvar icon = action.find('.icon')\n\t\t\tvar message, recipients, avatars\n\t\t\tvar ownerId = $tr.attr('data-share-owner-id')\n\t\t\tvar owner = $tr.attr('data-share-owner')\n\t\t\tvar mountType = $tr.attr('data-mounttype')\n\t\t\tvar shareFolderIcon\n\t\t\tvar iconClass = 'icon-shared'\n\t\t\taction.removeClass('shared-style')\n\t\t\t// update folder icon\n\t\t\tif (type === 'dir' && (hasShares || hasLink || ownerId)) {\n\t\t\t\tif (typeof mountType !== 'undefined' && mountType !== 'shared-root' && mountType !== 'shared') {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-' + mountType)\n\t\t\t\t} else if (hasLink) {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-public')\n\t\t\t\t} else {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-shared')\n\t\t\t\t}\n\t\t\t\t$tr.find('.filename .thumbnail').css('background-image', 'url(' + shareFolderIcon + ')')\n\t\t\t\t$tr.attr('data-icon', shareFolderIcon)\n\t\t\t} else if (type === 'dir') {\n\t\t\t\tvar isEncrypted = $tr.attr('data-e2eencrypted')\n\t\t\t\t// FIXME: duplicate of FileList._createRow logic for external folder,\n\t\t\t\t// need to refactor the icon logic into a single code path eventually\n\t\t\t\tif (isEncrypted === 'true') {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-encrypted')\n\t\t\t\t\t$tr.attr('data-icon', shareFolderIcon)\n\t\t\t\t} else if (mountType && mountType.indexOf('external') === 0) {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-external')\n\t\t\t\t\t$tr.attr('data-icon', shareFolderIcon)\n\t\t\t\t} else {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir')\n\t\t\t\t\t// back to default\n\t\t\t\t\t$tr.removeAttr('data-icon')\n\t\t\t\t}\n\t\t\t\t$tr.find('.filename .thumbnail').css('background-image', 'url(' + shareFolderIcon + ')')\n\t\t\t}\n\t\t\t// update share action text / icon\n\t\t\tif (hasShares || ownerId) {\n\t\t\t\trecipients = $tr.data('share-recipient-data')\n\t\t\t\taction.addClass('shared-style')\n\n\t\t\t\tavatars = '<span>' + t('files_sharing', 'Shared') + '</span>'\n\t\t\t\t// even if reshared, only show \"Shared by\"\n\t\t\t\tif (ownerId) {\n\t\t\t\t\tmessage = t('files_sharing', 'Shared by')\n\t\t\t\t\tavatars = this._formatRemoteShare(ownerId, owner, message)\n\t\t\t\t} else if (recipients) {\n\t\t\t\t\tavatars = this._formatShareList(recipients)\n\t\t\t\t}\n\t\t\t\taction.html(avatars).prepend(icon)\n\n\t\t\t\tif (ownerId || recipients) {\n\t\t\t\t\tvar avatarElement = action.find('.avatar')\n\t\t\t\t\tavatarElement.each(function() {\n\t\t\t\t\t\t$(this).avatar($(this).data('username'), 32)\n\t\t\t\t\t})\n\t\t\t\t\taction.find('span[title]').tooltip({ placement: 'top' })\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\taction.html('<span class=\"hidden-visually\">' + t('files_sharing', 'Shared') + '</span>').prepend(icon)\n\t\t\t}\n\t\t\tif (hasLink) {\n\t\t\t\ticonClass = 'icon-public'\n\t\t\t}\n\t\t\ticon.removeClass('icon-shared icon-public').addClass(iconClass)\n\t\t},\n\n\t\t/**\n\t\t * @param {Array} fileData\n\t\t * @returns {String}\n\t\t */\n\t\tgetSharePermissions: function(fileData) {\n\t\t\treturn fileData.sharePermissions\n\t\t}\n\t}\n})()\n\nOC.Plugins.register('OCA.Files.FileList', OCA.Sharing.Util)\n","\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/sass-loader/dist/cjs.js!./sharebreadcrumb.scss\";\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/sass-loader/dist/cjs.js!./sharebreadcrumb.scss\";\n export default content && content.locals ? content.locals : undefined;\n","/**\n * @copyright Copyright (c) 2016 Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport './share'\nimport './sharebreadcrumbview'\nimport './style/sharebreadcrumb.scss'\nimport './collaborationresourceshandler.js'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(OC.requestToken)\n\nwindow.OCA.Sharing = OCA.Sharing\n","/**\n * @copyright Copyright (c) 2016 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(OC.requestToken)\n\nwindow.OCP.Collaboration.registerType('file', {\n\taction: () => {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tOC.dialogs.filepicker(t('files_sharing', 'Link to a file'), function(f) {\n\t\t\t\tconst client = OC.Files.getClient()\n\t\t\t\tclient.getFileInfo(f).then((status, fileInfo) => {\n\t\t\t\t\tresolve(fileInfo.id)\n\t\t\t\t}).fail(() => {\n\t\t\t\t\treject(new Error('Cannot get fileinfo'))\n\t\t\t\t})\n\t\t\t}, false, null, false, OC.dialogs.FILEPICKER_TYPE_CHOOSE, '', { allowDirectoryChooser: true })\n\t\t})\n\t},\n\ttypeString: t('files_sharing', 'Link to a file'),\n\ttypeIconClass: 'icon-files-dark',\n})\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, \"div.crumb span.icon-shared,div.crumb span.icon-public{display:inline-block;cursor:pointer;opacity:.2;margin-right:6px}div.crumb span.icon-shared.shared,div.crumb span.icon-public.shared{opacity:.7}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/style/sharebreadcrumb.scss\"],\"names\":[],\"mappings\":\"AAsBA,sDAEC,oBAAA,CACA,cAAA,CACA,UAAA,CACA,gBAAA,CAGD,oEAEC,UAAA\",\"sourcesContent\":[\"/**\\n * @copyright 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\\n *\\n * @author 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\\n *\\n * @license GNU AGPL version 3 or any later version\\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 */\\n\\ndiv.crumb span.icon-shared,\\ndiv.crumb span.icon-public {\\n\\tdisplay: inline-block;\\n\\tcursor: pointer;\\n\\topacity: 0.2;\\n\\tmargin-right: 6px;\\n}\\n\\ndiv.crumb span.icon-shared.shared,\\ndiv.crumb span.icon-public.shared {\\n\\topacity: 0.7;\\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 = 6200;","__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\t6200: 0,\n\t5438: 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__(5972); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","BreadCrumbView","_","extend","OC","Files","Client","PROPERTY_SHARE_TYPES","NS_OWNCLOUD","PROPERTY_OWNER_ID","PROPERTY_OWNER_DISPLAY_NAME","OCA","Sharing","Util","_REMOTE_OWNER_REGEXP","RegExp","attach","fileList","getCapabilities","files_sharing","api_enabled","id","fileActions","oldCreateRow","_createRow","fileData","tr","apply","this","arguments","sharePermissions","getSharePermissions","permissions","actions","all","Comment","Details","Goto","attr","shareOwner","shareOwnerId","mountType","PERMISSION_UPDATE","recipientData","isEmpty","JSON","stringify","shareTypes","join","oldElementToFile","elementToFile","$el","fileInfo","undefined","split","expirationTimestamp","parseInt","shares","push","expiration","oldGetWebdavProperties","_getWebdavProperties","props","filesClient","addFileInfoParser","response","data","propStat","properties","permissionsProp","PROPERTY_PERMISSIONS","indexOf","shareTypesProp","chain","filter","xmlvalue","namespaceURI","nodeName","map","textContent","text","value","on","ev","$files","each","file","$tr","$","shareTypesStr","hasLink","hasShares","shareTypeStr","shareType","ShareTypes","_updateFileActionIcon","sharesLoaded","registerAction","name","displayName","context","$file","t","altText","mime","order","PERMISSION_ALL","iconClass","fileName","icon","generateUrl","type","FileActions","TYPE_INLINE","actionHandler","_detailsView","isNaN","showDetailsView","render","actionSpec","isDefault","PERMISSION_SHARE","_defaultRenderAction","call","breadCrumbSharingDetailView","ShareBreadCrumbView","registerBreadCrumbDetailView","_updateFileListDataAttributes","shareModel","pluck","get","length","mapObject","share","shareWith","share_with","shareWithDisplayName","share_with_displayname","removeAttr","hasUserShares","hasLinkShares","_markFileAsShared","message","recipients","avatars","shareFolderIcon","action","find","ownerId","owner","removeClass","MimeType","getIconUrl","css","addClass","_formatRemoteShare","_formatShareList","html","prepend","avatar","tooltip","placement","parts","exec","escapeHTML","userName","userDomain","server","protocol","serverPath","replace","_parent","toArray","sort","a","b","localeCompare","recipient","markFileAsShared","Plugins","register","Backbone","View","tagName","events","click","_dirInfo","dirInfo","path","hide","isShared","show","delegateEvents","_onClick","e","preventDefault","stopPropagation","fileInfoModel","FileInfoModel","self","attributes","Sidebar","open","setActiveTab","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","__webpack_nonce__","btoa","requestToken","window","OCP","Collaboration","registerType","Promise","resolve","reject","dialogs","filepicker","f","getClient","getFileInfo","then","status","fail","Error","FILEPICKER_TYPE_CHOOSE","allowDirectoryChooser","typeString","typeIconClass","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","m","amdD","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","definition","o","defineProperty","enumerable","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","document","baseURI","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"files_sharing-additionalScripts.js?v=9f521bfd06189d7dad1d","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/files_sharing/src/sharebreadcrumbview.js","webpack:///nextcloud/apps/files_sharing/src/share.js","webpack://nextcloud/./apps/files_sharing/src/style/sharebreadcrumb.scss?a9a3","webpack:///nextcloud/apps/files_sharing/src/additionalScripts.js","webpack:///nextcloud/apps/files_sharing/src/collaborationresourceshandler.js","webpack:///nextcloud/apps/files_sharing/src/style/sharebreadcrumb.scss","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/runtime/nonce","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 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport { Type as ShareTypes } from '@nextcloud/sharing'\n\n(function() {\n\t'use strict'\n\n\tconst BreadCrumbView = OC.Backbone.View.extend({\n\t\ttagName: 'span',\n\t\tevents: {\n\t\t\tclick: '_onClick',\n\t\t},\n\t\t_dirInfo: undefined,\n\n\t\trender(data) {\n\t\t\tthis._dirInfo = data.dirInfo || null\n\n\t\t\tif (this._dirInfo !== null && (this._dirInfo.path !== '/' || this._dirInfo.name !== '')) {\n\t\t\t\tconst isShared = data.dirInfo && data.dirInfo.shareTypes && data.dirInfo.shareTypes.length > 0\n\t\t\t\tthis.$el.removeClass('shared icon-public icon-shared')\n\t\t\t\tif (isShared) {\n\t\t\t\t\tthis.$el.addClass('shared')\n\t\t\t\t\tif (data.dirInfo.shareTypes.indexOf(ShareTypes.SHARE_TYPE_LINK) !== -1) {\n\t\t\t\t\t\tthis.$el.addClass('icon-public')\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.$el.addClass('icon-shared')\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.$el.addClass('icon-shared')\n\t\t\t\t}\n\t\t\t\tthis.$el.show()\n\t\t\t\tthis.delegateEvents()\n\t\t\t} else {\n\t\t\t\tthis.$el.removeClass('shared icon-public icon-shared')\n\t\t\t\tthis.$el.hide()\n\t\t\t}\n\n\t\t\treturn this\n\t\t},\n\t\t_onClick(e) {\n\t\t\te.preventDefault()\n\t\t\te.stopPropagation()\n\n\t\t\tconst fileInfoModel = new OCA.Files.FileInfoModel(this._dirInfo)\n\t\t\tconst self = this\n\t\t\tfileInfoModel.on('change', function() {\n\t\t\t\tself.render({\n\t\t\t\t\tdirInfo: self._dirInfo,\n\t\t\t\t})\n\t\t\t})\n\n\t\t\tconst path = fileInfoModel.attributes.path + '/' + fileInfoModel.attributes.name\n\t\t\tOCA.Files.Sidebar.open(path)\n\t\t\tOCA.Files.Sidebar.setActiveTab('sharing')\n\t\t},\n\t})\n\n\tOCA.Sharing.ShareBreadCrumbView = BreadCrumbView\n})()\n","/**\n * Copyright (c) 2014\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Maxence Lange <maxence@nextcloud.com>\n * @author Michael Jobst <mjobst+github@tecratech.de>\n * @author Michael Jobst <mjobst@necls.com>\n * @author Morris Jobke <hey@morrisjobke.de>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Samuel <faust64@gmail.com>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n/* eslint-disable */\nimport escapeHTML from 'escape-html'\n\nimport { Type as ShareTypes } from '@nextcloud/sharing'\nimport { getCapabilities } from '@nextcloud/capabilities'\n\n(function() {\n\n\t_.extend(OC.Files.Client, {\n\t\tPROPERTY_SHARE_TYPES:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}share-types',\n\t\tPROPERTY_OWNER_ID:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}owner-id',\n\t\tPROPERTY_OWNER_DISPLAY_NAME:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}owner-display-name'\n\t})\n\n\tif (!OCA.Sharing) {\n\t\tOCA.Sharing = {}\n\t}\n\n\t/**\n\t * @namespace\n\t */\n\tOCA.Sharing.Util = {\n\n\t\t/**\n\t\t * Regular expression for splitting parts of remote share owners:\n\t\t * \"user@example.com/\"\n\t\t * \"user@example.com/path/to/owncloud\"\n\t\t * \"user@anotherexample.com@example.com/path/to/owncloud\n\t\t */\n\t\t_REMOTE_OWNER_REGEXP: new RegExp('^(([^@]*)@(([^@^/\\\\s]*)@)?)((https://)?[^[\\\\s/]*)([/](.*))?$'),\n\n\t\t/**\n\t\t * Initialize the sharing plugin.\n\t\t *\n\t\t * Registers the \"Share\" file action and adds additional\n\t\t * DOM attributes for the sharing file info.\n\t\t *\n\t\t * @param {OCA.Files.FileList} fileList file list to be extended\n\t\t */\n\t\tattach: function(fileList) {\n\t\t\t// core sharing is disabled/not loaded\n\t\t\tif (!getCapabilities().files_sharing?.api_enabled) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (fileList.id === 'trashbin' || fileList.id === 'files.public') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tvar fileActions = fileList.fileActions\n\t\t\tvar oldCreateRow = fileList._createRow\n\t\t\tfileList._createRow = function(fileData) {\n\n\t\t\t\tvar tr = oldCreateRow.apply(this, arguments)\n\t\t\t\tvar sharePermissions = OCA.Sharing.Util.getSharePermissions(fileData)\n\n\t\t\t\tif (fileData.permissions === 0) {\n\t\t\t\t\t// no permission, disabling sidebar\n\t\t\t\t\tdelete fileActions.actions.all.Comment\n\t\t\t\t\tdelete fileActions.actions.all.Details\n\t\t\t\t\tdelete fileActions.actions.all.Goto\n\t\t\t\t}\n\t\t\t\ttr.attr('data-share-permissions', sharePermissions)\n\t\t\t\tif (fileData.shareOwner) {\n\t\t\t\t\ttr.attr('data-share-owner', fileData.shareOwner)\n\t\t\t\t\ttr.attr('data-share-owner-id', fileData.shareOwnerId)\n\t\t\t\t\t// user should always be able to rename a mount point\n\t\t\t\t\tif (fileData.mountType === 'shared-root') {\n\t\t\t\t\t\ttr.attr('data-permissions', fileData.permissions | OC.PERMISSION_UPDATE)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (fileData.recipientData && !_.isEmpty(fileData.recipientData)) {\n\t\t\t\t\ttr.attr('data-share-recipient-data', JSON.stringify(fileData.recipientData))\n\t\t\t\t}\n\t\t\t\tif (fileData.shareTypes) {\n\t\t\t\t\ttr.attr('data-share-types', fileData.shareTypes.join(','))\n\t\t\t\t}\n\t\t\t\treturn tr\n\t\t\t}\n\n\t\t\tvar oldElementToFile = fileList.elementToFile\n\t\t\tfileList.elementToFile = function($el) {\n\t\t\t\tvar fileInfo = oldElementToFile.apply(this, arguments)\n\t\t\t\tfileInfo.sharePermissions = $el.attr('data-share-permissions') || undefined\n\t\t\t\tfileInfo.shareOwner = $el.attr('data-share-owner') || undefined\n\t\t\t\tfileInfo.shareOwnerId = $el.attr('data-share-owner-id') || undefined\n\n\t\t\t\tif ($el.attr('data-share-types')) {\n\t\t\t\t\tfileInfo.shareTypes = $el.attr('data-share-types').split(',')\n\t\t\t\t}\n\n\t\t\t\tif ($el.attr('data-expiration')) {\n\t\t\t\t\tvar expirationTimestamp = parseInt($el.attr('data-expiration'))\n\t\t\t\t\tfileInfo.shares = []\n\t\t\t\t\tfileInfo.shares.push({ expiration: expirationTimestamp })\n\t\t\t\t}\n\n\t\t\t\treturn fileInfo\n\t\t\t}\n\n\t\t\tvar oldGetWebdavProperties = fileList._getWebdavProperties\n\t\t\tfileList._getWebdavProperties = function() {\n\t\t\t\tvar props = oldGetWebdavProperties.apply(this, arguments)\n\t\t\t\tprops.push(OC.Files.Client.PROPERTY_OWNER_ID)\n\t\t\t\tprops.push(OC.Files.Client.PROPERTY_OWNER_DISPLAY_NAME)\n\t\t\t\tprops.push(OC.Files.Client.PROPERTY_SHARE_TYPES)\n\t\t\t\treturn props\n\t\t\t}\n\n\t\t\tfileList.filesClient.addFileInfoParser(function(response) {\n\t\t\t\tvar data = {}\n\t\t\t\tvar props = response.propStat[0].properties\n\t\t\t\tvar permissionsProp = props[OC.Files.Client.PROPERTY_PERMISSIONS]\n\n\t\t\t\tif (permissionsProp && permissionsProp.indexOf('S') >= 0) {\n\t\t\t\t\tdata.shareOwner = props[OC.Files.Client.PROPERTY_OWNER_DISPLAY_NAME]\n\t\t\t\t\tdata.shareOwnerId = props[OC.Files.Client.PROPERTY_OWNER_ID]\n\t\t\t\t}\n\n\t\t\t\tvar shareTypesProp = props[OC.Files.Client.PROPERTY_SHARE_TYPES]\n\t\t\t\tif (shareTypesProp) {\n\t\t\t\t\tdata.shareTypes = _.chain(shareTypesProp).filter(function(xmlvalue) {\n\t\t\t\t\t\treturn (xmlvalue.namespaceURI === OC.Files.Client.NS_OWNCLOUD && xmlvalue.nodeName.split(':')[1] === 'share-type')\n\t\t\t\t\t}).map(function(xmlvalue) {\n\t\t\t\t\t\treturn parseInt(xmlvalue.textContent || xmlvalue.text, 10)\n\t\t\t\t\t}).value()\n\t\t\t\t}\n\n\t\t\t\treturn data\n\t\t\t})\n\n\t\t\t// use delegate to catch the case with multiple file lists\n\t\t\tfileList.$el.on('fileActionsReady', function(ev) {\n\t\t\t\tvar $files = ev.$files\n\n\t\t\t\t_.each($files, function(file) {\n\t\t\t\t\tvar $tr = $(file)\n\t\t\t\t\tvar shareTypesStr = $tr.attr('data-share-types') || ''\n\t\t\t\t\tvar shareOwner = $tr.attr('data-share-owner')\n\t\t\t\t\tif (shareTypesStr || shareOwner) {\n\t\t\t\t\t\tvar hasLink = false\n\t\t\t\t\t\tvar hasShares = false\n\t\t\t\t\t\t_.each(shareTypesStr.split(',') || [], function(shareTypeStr) {\n\t\t\t\t\t\t\tlet shareType = parseInt(shareTypeStr, 10)\n\t\t\t\t\t\t\tif (shareType === ShareTypes.SHARE_TYPE_LINK) {\n\t\t\t\t\t\t\t\thasLink = true\n\t\t\t\t\t\t\t} else if (shareType === ShareTypes.SHARE_TYPE_EMAIL) {\n\t\t\t\t\t\t\t\thasLink = true\n\t\t\t\t\t\t\t} else if (shareType === ShareTypes.SHARE_TYPE_USER) {\n\t\t\t\t\t\t\t\thasShares = true\n\t\t\t\t\t\t\t} else if (shareType === ShareTypes.SHARE_TYPE_GROUP) {\n\t\t\t\t\t\t\t\thasShares = true\n\t\t\t\t\t\t\t} else if (shareType === ShareTypes.SHARE_TYPE_REMOTE) {\n\t\t\t\t\t\t\t\thasShares = true\n\t\t\t\t\t\t\t} else if (shareType === ShareTypes.SHARE_TYPE_REMOTE_GROUP) {\n\t\t\t\t\t\t\t\thasShares = true\n\t\t\t\t\t\t\t} else if (shareType === ShareTypes.SHARE_TYPE_CIRCLE) {\n\t\t\t\t\t\t\t\thasShares = true\n\t\t\t\t\t\t\t} else if (shareType === ShareTypes.SHARE_TYPE_ROOM) {\n\t\t\t\t\t\t\t\thasShares = true\n\t\t\t\t\t\t\t} else if (shareType === ShareTypes.SHARE_TYPE_DECK) {\n\t\t\t\t\t\t\t\thasShares = true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\tOCA.Sharing.Util._updateFileActionIcon($tr, hasShares, hasLink)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\n\t\t\tfileList.$el.on('changeDirectory', function() {\n\t\t\t\tOCA.Sharing.sharesLoaded = false\n\t\t\t})\n\n\t\t\tfileActions.registerAction({\n\t\t\t\tname: 'Share',\n\t\t\t\tdisplayName: function(context) {\n\t\t\t\t\tif (context && context.$file) {\n\t\t\t\t\t\tvar shareType = parseInt(context.$file.data('share-types'), 10)\n\t\t\t\t\t\tvar shareOwner = context.$file.data('share-owner-id')\n\t\t\t\t\t\tif (shareType >= 0 || shareOwner) {\n\t\t\t\t\t\t\treturn t('files_sharing', 'Shared')\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn t('files_sharing', 'Share')\n\t\t\t\t},\n\t\t\t\taltText: t('files_sharing', 'Share'),\n\t\t\t\tmime: 'all',\n\t\t\t\torder: -150,\n\t\t\t\tpermissions: OC.PERMISSION_ALL,\n\t\t\t\ticonClass: function(fileName, context) {\n\t\t\t\t\tvar shareType = parseInt(context.$file.data('share-types'), 10)\n\t\t\t\t\tif (shareType === ShareTypes.SHARE_TYPE_EMAIL\n\t\t\t\t\t\t|| shareType === ShareTypes.SHARE_TYPE_LINK) {\n\t\t\t\t\t\treturn 'icon-public'\n\t\t\t\t\t}\n\t\t\t\t\treturn 'icon-shared'\n\t\t\t\t},\n\t\t\t\ticon: function(fileName, context) {\n\t\t\t\t\tvar shareOwner = context.$file.data('share-owner-id')\n\t\t\t\t\tif (shareOwner) {\n\t\t\t\t\t\treturn OC.generateUrl(`/avatar/${shareOwner}/32`)\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\ttype: OCA.Files.FileActions.TYPE_INLINE,\n\t\t\t\tactionHandler: function(fileName, context) {\n\t\t\t\t\t// details view disabled in some share lists\n\t\t\t\t\tif (!fileList._detailsView) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\t// do not open sidebar if permission is set and equal to 0\n\t\t\t\t\tvar permissions = parseInt(context.$file.data('share-permissions'), 10)\n\t\t\t\t\tif (isNaN(permissions) || permissions > 0) {\n\t\t\t\t\t\tfileList.showDetailsView(fileName, 'sharing')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\trender: function(actionSpec, isDefault, context) {\n\t\t\t\t\tvar permissions = parseInt(context.$file.data('permissions'), 10)\n\t\t\t\t\t// if no share permissions but share owner exists, still show the link\n\t\t\t\t\tif ((permissions & OC.PERMISSION_SHARE) !== 0 || context.$file.attr('data-share-owner')) {\n\t\t\t\t\t\treturn fileActions._defaultRenderAction.call(fileActions, actionSpec, isDefault, context)\n\t\t\t\t\t}\n\t\t\t\t\t// don't render anything\n\t\t\t\t\treturn null\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t// register share breadcrumbs component\n\t\t\tvar breadCrumbSharingDetailView = new OCA.Sharing.ShareBreadCrumbView()\n\t\t\tfileList.registerBreadCrumbDetailView(breadCrumbSharingDetailView)\n\t\t},\n\n\t\t/**\n\t\t * Update file list data attributes\n\t\t */\n\t\t_updateFileListDataAttributes: function(fileList, $tr, shareModel) {\n\t\t\t// files app current cannot show recipients on load, so we don't update the\n\t\t\t// icon when changed for consistency\n\t\t\tif (fileList.id === 'files') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tvar recipients = _.pluck(shareModel.get('shares'), 'share_with_displayname')\n\t\t\t// note: we only update the data attribute because updateIcon()\n\t\t\tif (recipients.length) {\n\t\t\t\tvar recipientData = _.mapObject(shareModel.get('shares'), function(share) {\n\t\t\t\t\treturn { shareWith: share.share_with, shareWithDisplayName: share.share_with_displayname }\n\t\t\t\t})\n\t\t\t\t$tr.attr('data-share-recipient-data', JSON.stringify(recipientData))\n\t\t\t} else {\n\t\t\t\t$tr.removeAttr('data-share-recipient-data')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Update the file action share icon for the given file\n\t\t *\n\t\t * @param $tr file element of the file to update\n\t\t * @param {boolean} hasUserShares true if a user share exists\n\t\t * @param {boolean} hasLinkShares true if a link share exists\n\t\t *\n\t\t * @returns {boolean} true if the icon was set, false otherwise\n\t\t */\n\t\t_updateFileActionIcon: function($tr, hasUserShares, hasLinkShares) {\n\t\t\t// if the statuses are loaded already, use them for the icon\n\t\t\t// (needed when scrolling to the next page)\n\t\t\tif (hasUserShares || hasLinkShares || $tr.attr('data-share-recipient-data') || $tr.attr('data-share-owner')) {\n\t\t\t\tOCA.Sharing.Util._markFileAsShared($tr, true, hasLinkShares)\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\n\t\t/**\n\t\t * Marks/unmarks a given file as shared by changing its action icon\n\t\t * and folder icon.\n\t\t *\n\t\t * @param $tr file element to mark as shared\n\t\t * @param hasShares whether shares are available\n\t\t * @param hasLink whether link share is available\n\t\t */\n\t\t_markFileAsShared: function($tr, hasShares, hasLink) {\n\t\t\tvar action = $tr.find('.fileactions .action[data-action=\"Share\"]')\n\t\t\tvar type = $tr.data('type')\n\t\t\tvar icon = action.find('.icon')\n\t\t\tvar message, recipients, avatars\n\t\t\tvar ownerId = $tr.attr('data-share-owner-id')\n\t\t\tvar owner = $tr.attr('data-share-owner')\n\t\t\tvar mountType = $tr.attr('data-mounttype')\n\t\t\tvar shareFolderIcon\n\t\t\tvar iconClass = 'icon-shared'\n\t\t\taction.removeClass('shared-style')\n\t\t\t// update folder icon\n\t\t\tif (type === 'dir' && (hasShares || hasLink || ownerId)) {\n\t\t\t\tif (typeof mountType !== 'undefined' && mountType !== 'shared-root' && mountType !== 'shared') {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-' + mountType)\n\t\t\t\t} else if (hasLink) {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-public')\n\t\t\t\t} else {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-shared')\n\t\t\t\t}\n\t\t\t\t$tr.find('.filename .thumbnail').css('background-image', 'url(' + shareFolderIcon + ')')\n\t\t\t\t$tr.attr('data-icon', shareFolderIcon)\n\t\t\t} else if (type === 'dir') {\n\t\t\t\tvar isEncrypted = $tr.attr('data-e2eencrypted')\n\t\t\t\t// FIXME: duplicate of FileList._createRow logic for external folder,\n\t\t\t\t// need to refactor the icon logic into a single code path eventually\n\t\t\t\tif (isEncrypted === 'true') {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-encrypted')\n\t\t\t\t\t$tr.attr('data-icon', shareFolderIcon)\n\t\t\t\t} else if (mountType && mountType.indexOf('external') === 0) {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-external')\n\t\t\t\t\t$tr.attr('data-icon', shareFolderIcon)\n\t\t\t\t} else {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir')\n\t\t\t\t\t// back to default\n\t\t\t\t\t$tr.removeAttr('data-icon')\n\t\t\t\t}\n\t\t\t\t$tr.find('.filename .thumbnail').css('background-image', 'url(' + shareFolderIcon + ')')\n\t\t\t}\n\t\t\t// update share action text / icon\n\t\t\tif (hasShares || ownerId) {\n\t\t\t\trecipients = $tr.data('share-recipient-data')\n\t\t\t\taction.addClass('shared-style')\n\n\t\t\t\tavatars = '<span>' + t('files_sharing', 'Shared') + '</span>'\n\t\t\t\t// even if reshared, only show \"Shared by\"\n\t\t\t\tif (ownerId) {\n\t\t\t\t\tmessage = t('files_sharing', 'Shared by')\n\t\t\t\t\tavatars = OCA.Sharing.Util._formatRemoteShare(ownerId, owner, message)\n\t\t\t\t} else if (recipients) {\n\t\t\t\t\tavatars = OCA.Sharing.Util._formatShareList(recipients)\n\t\t\t\t}\n\t\t\t\taction.html(avatars).prepend(icon)\n\n\t\t\t\tif (ownerId || recipients) {\n\t\t\t\t\tvar avatarElement = action.find('.avatar')\n\t\t\t\t\tavatarElement.each(function() {\n\t\t\t\t\t\t$(this).avatar($(this).data('username'), 32)\n\t\t\t\t\t})\n\t\t\t\t\taction.find('span[title]').tooltip({ placement: 'top' })\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\taction.html('<span class=\"hidden-visually\">' + t('files_sharing', 'Shared') + '</span>').prepend(icon)\n\t\t\t}\n\t\t\tif (hasLink) {\n\t\t\t\ticonClass = 'icon-public'\n\t\t\t}\n\t\t\ticon.removeClass('icon-shared icon-public').addClass(iconClass)\n\t\t},\n\t\t/**\n\t\t * Format a remote address\n\t\t *\n\t\t * @param {String} shareWith userid, full remote share, or whatever\n\t\t * @param {String} shareWithDisplayName\n\t\t * @param {String} message\n\t\t * @returns {String} HTML code to display\n\t\t */\n\t\t_formatRemoteShare: function(shareWith, shareWithDisplayName, message) {\n\t\t\tvar parts = OCA.Sharing.Util._REMOTE_OWNER_REGEXP.exec(shareWith)\n\t\t\tif (!parts || !parts[7]) {\n\t\t\t\t// display avatar of the user\n\t\t\t\tvar avatar = '<span class=\"avatar\" data-username=\"' + escapeHTML(shareWith) + '\" title=\"' + message + ' ' + escapeHTML(shareWithDisplayName) + '\"></span>'\n\t\t\t\tvar hidden = '<span class=\"hidden-visually\">' + message + ' ' + escapeHTML(shareWithDisplayName) + '</span> '\n\t\t\t\treturn avatar + hidden\n\t\t\t}\n\n\t\t\tvar userName = parts[2]\n\t\t\tvar userDomain = parts[4]\n\t\t\tvar server = parts[5]\n\t\t\tvar protocol = parts[6]\n\t\t\tvar serverPath = parts[8] ? parts[7] : ''; // no trailing slash on root\n\n\t\t\tvar tooltip = message + ' ' + userName\n\t\t\tif (userDomain) {\n\t\t\t\ttooltip += '@' + userDomain\n\t\t\t}\n\t\t\tif (server) {\n\t\t\t\ttooltip += '@' + server.replace(protocol, '') + serverPath\n\t\t\t}\n\n\t\t\tvar html = '<span class=\"remoteAddress\" title=\"' + escapeHTML(tooltip) + '\">'\n\t\t\thtml += '<span class=\"username\">' + escapeHTML(userName) + '</span>'\n\t\t\tif (userDomain) {\n\t\t\t\thtml += '<span class=\"userDomain\">@' + escapeHTML(userDomain) + '</span>'\n\t\t\t}\n\t\t\thtml += '</span> '\n\t\t\treturn html\n\t\t},\n\t\t/**\n\t\t * Loop over all recipients in the list and format them using\n\t\t * all kind of fancy magic.\n\t\t *\n\t\t* @param {Object} recipients array of all the recipients\n\t\t* @returns {String[]} modified list of recipients\n\t\t*/\n\t\t_formatShareList: function(recipients) {\n\t\t\tvar _parent = this\n\t\t\trecipients = _.toArray(recipients)\n\t\t\trecipients.sort(function(a, b) {\n\t\t\t\treturn a.shareWithDisplayName.localeCompare(b.shareWithDisplayName)\n\t\t\t})\n\t\t\treturn $.map(recipients, function(recipient) {\n\t\t\t\treturn _parent._formatRemoteShare(recipient.shareWith, recipient.shareWithDisplayName, t('files_sharing', 'Shared with'))\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Marks/unmarks a given file as shared by changing its action icon\n\t\t * and folder icon.\n\t\t *\n\t\t* @param $tr file element to mark as shared\n\t\t* @param hasShares whether shares are available\n\t\t* @param hasLink whether link share is available\n\t\t*/\n\t\tmarkFileAsShared: function($tr, hasShares, hasLink) {\n\t\t\tvar action = $tr.find('.fileactions .action[data-action=\"Share\"]')\n\t\t\tvar type = $tr.data('type')\n\t\t\tvar icon = action.find('.icon')\n\t\t\tvar message, recipients, avatars\n\t\t\tvar ownerId = $tr.attr('data-share-owner-id')\n\t\t\tvar owner = $tr.attr('data-share-owner')\n\t\t\tvar mountType = $tr.attr('data-mounttype')\n\t\t\tvar shareFolderIcon\n\t\t\tvar iconClass = 'icon-shared'\n\t\t\taction.removeClass('shared-style')\n\t\t\t// update folder icon\n\t\t\tif (type === 'dir' && (hasShares || hasLink || ownerId)) {\n\t\t\t\tif (typeof mountType !== 'undefined' && mountType !== 'shared-root' && mountType !== 'shared') {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-' + mountType)\n\t\t\t\t} else if (hasLink) {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-public')\n\t\t\t\t} else {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-shared')\n\t\t\t\t}\n\t\t\t\t$tr.find('.filename .thumbnail').css('background-image', 'url(' + shareFolderIcon + ')')\n\t\t\t\t$tr.attr('data-icon', shareFolderIcon)\n\t\t\t} else if (type === 'dir') {\n\t\t\t\tvar isEncrypted = $tr.attr('data-e2eencrypted')\n\t\t\t\t// FIXME: duplicate of FileList._createRow logic for external folder,\n\t\t\t\t// need to refactor the icon logic into a single code path eventually\n\t\t\t\tif (isEncrypted === 'true') {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-encrypted')\n\t\t\t\t\t$tr.attr('data-icon', shareFolderIcon)\n\t\t\t\t} else if (mountType && mountType.indexOf('external') === 0) {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-external')\n\t\t\t\t\t$tr.attr('data-icon', shareFolderIcon)\n\t\t\t\t} else {\n\t\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir')\n\t\t\t\t\t// back to default\n\t\t\t\t\t$tr.removeAttr('data-icon')\n\t\t\t\t}\n\t\t\t\t$tr.find('.filename .thumbnail').css('background-image', 'url(' + shareFolderIcon + ')')\n\t\t\t}\n\t\t\t// update share action text / icon\n\t\t\tif (hasShares || ownerId) {\n\t\t\t\trecipients = $tr.data('share-recipient-data')\n\t\t\t\taction.addClass('shared-style')\n\n\t\t\t\tavatars = '<span>' + t('files_sharing', 'Shared') + '</span>'\n\t\t\t\t// even if reshared, only show \"Shared by\"\n\t\t\t\tif (ownerId) {\n\t\t\t\t\tmessage = t('files_sharing', 'Shared by')\n\t\t\t\t\tavatars = this._formatRemoteShare(ownerId, owner, message)\n\t\t\t\t} else if (recipients) {\n\t\t\t\t\tavatars = this._formatShareList(recipients)\n\t\t\t\t}\n\t\t\t\taction.html(avatars).prepend(icon)\n\n\t\t\t\tif (ownerId || recipients) {\n\t\t\t\t\tvar avatarElement = action.find('.avatar')\n\t\t\t\t\tavatarElement.each(function() {\n\t\t\t\t\t\t$(this).avatar($(this).data('username'), 32)\n\t\t\t\t\t})\n\t\t\t\t\taction.find('span[title]').tooltip({ placement: 'top' })\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\taction.html('<span class=\"hidden-visually\">' + t('files_sharing', 'Shared') + '</span>').prepend(icon)\n\t\t\t}\n\t\t\tif (hasLink) {\n\t\t\t\ticonClass = 'icon-public'\n\t\t\t}\n\t\t\ticon.removeClass('icon-shared icon-public').addClass(iconClass)\n\t\t},\n\n\t\t/**\n\t\t * @param {Array} fileData\n\t\t * @returns {String}\n\t\t */\n\t\tgetSharePermissions: function(fileData) {\n\t\t\treturn fileData.sharePermissions\n\t\t}\n\t}\n})()\n\nOC.Plugins.register('OCA.Files.FileList', OCA.Sharing.Util)\n","\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/sass-loader/dist/cjs.js!./sharebreadcrumb.scss\";\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/sass-loader/dist/cjs.js!./sharebreadcrumb.scss\";\n export default content && content.locals ? content.locals : undefined;\n","/**\n * @copyright Copyright (c) 2016 Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport './share'\nimport './sharebreadcrumbview'\nimport './style/sharebreadcrumb.scss'\nimport './collaborationresourceshandler.js'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(OC.requestToken)\n\nwindow.OCA.Sharing = OCA.Sharing\n","/**\n * @copyright Copyright (c) 2016 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(OC.requestToken)\n\nwindow.OCP.Collaboration.registerType('file', {\n\taction: () => {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tOC.dialogs.filepicker(t('files_sharing', 'Link to a file'), function(f) {\n\t\t\t\tconst client = OC.Files.getClient()\n\t\t\t\tclient.getFileInfo(f).then((status, fileInfo) => {\n\t\t\t\t\tresolve(fileInfo.id)\n\t\t\t\t}).fail(() => {\n\t\t\t\t\treject(new Error('Cannot get fileinfo'))\n\t\t\t\t})\n\t\t\t}, false, null, false, OC.dialogs.FILEPICKER_TYPE_CHOOSE, '', { allowDirectoryChooser: true })\n\t\t})\n\t},\n\ttypeString: t('files_sharing', 'Link to a file'),\n\ttypeIconClass: 'icon-files-dark',\n})\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, \"div.crumb span.icon-shared,div.crumb span.icon-public{display:inline-block;cursor:pointer;opacity:.2;margin-right:6px}div.crumb span.icon-shared.shared,div.crumb span.icon-public.shared{opacity:.7}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/style/sharebreadcrumb.scss\"],\"names\":[],\"mappings\":\"AAsBA,sDAEC,oBAAA,CACA,cAAA,CACA,UAAA,CACA,gBAAA,CAGD,oEAEC,UAAA\",\"sourcesContent\":[\"/**\\n * @copyright 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\\n *\\n * @author 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\\n *\\n * @license GNU AGPL version 3 or any later version\\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 */\\n\\ndiv.crumb span.icon-shared,\\ndiv.crumb span.icon-public {\\n\\tdisplay: inline-block;\\n\\tcursor: pointer;\\n\\topacity: 0.2;\\n\\tmargin-right: 6px;\\n}\\n\\ndiv.crumb span.icon-shared.shared,\\ndiv.crumb span.icon-public.shared {\\n\\topacity: 0.7;\\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 = 6200;","__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\t6200: 0,\n\t5438: 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));","__webpack_require__.nc = undefined;","// 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__(5972); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","BreadCrumbView","_","extend","OC","Files","Client","PROPERTY_SHARE_TYPES","NS_OWNCLOUD","PROPERTY_OWNER_ID","PROPERTY_OWNER_DISPLAY_NAME","OCA","Sharing","Util","_REMOTE_OWNER_REGEXP","RegExp","attach","fileList","getCapabilities","files_sharing","api_enabled","id","fileActions","oldCreateRow","_createRow","fileData","tr","apply","this","arguments","sharePermissions","getSharePermissions","permissions","actions","all","Comment","Details","Goto","attr","shareOwner","shareOwnerId","mountType","PERMISSION_UPDATE","recipientData","isEmpty","JSON","stringify","shareTypes","join","oldElementToFile","elementToFile","$el","fileInfo","undefined","split","expirationTimestamp","parseInt","shares","push","expiration","oldGetWebdavProperties","_getWebdavProperties","props","filesClient","addFileInfoParser","response","data","propStat","properties","permissionsProp","PROPERTY_PERMISSIONS","indexOf","shareTypesProp","chain","filter","xmlvalue","namespaceURI","nodeName","map","textContent","text","value","on","ev","$files","each","file","$tr","$","shareTypesStr","hasLink","hasShares","shareTypeStr","shareType","ShareTypes","_updateFileActionIcon","sharesLoaded","registerAction","name","displayName","context","$file","t","altText","mime","order","PERMISSION_ALL","iconClass","fileName","icon","generateUrl","type","FileActions","TYPE_INLINE","actionHandler","_detailsView","isNaN","showDetailsView","render","actionSpec","isDefault","PERMISSION_SHARE","_defaultRenderAction","call","breadCrumbSharingDetailView","ShareBreadCrumbView","registerBreadCrumbDetailView","_updateFileListDataAttributes","shareModel","pluck","get","length","mapObject","share","shareWith","share_with","shareWithDisplayName","share_with_displayname","removeAttr","hasUserShares","hasLinkShares","_markFileAsShared","message","recipients","avatars","shareFolderIcon","action","find","ownerId","owner","removeClass","MimeType","getIconUrl","css","addClass","_formatRemoteShare","_formatShareList","html","prepend","avatar","tooltip","placement","parts","exec","escapeHTML","userName","userDomain","server","protocol","serverPath","replace","_parent","toArray","sort","a","b","localeCompare","recipient","markFileAsShared","Plugins","register","Backbone","View","tagName","events","click","_dirInfo","dirInfo","path","hide","isShared","show","delegateEvents","_onClick","e","preventDefault","stopPropagation","fileInfoModel","FileInfoModel","self","attributes","Sidebar","open","setActiveTab","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","__webpack_nonce__","btoa","requestToken","window","OCP","Collaboration","registerType","Promise","resolve","reject","dialogs","filepicker","f","getClient","getFileInfo","then","status","fail","Error","FILEPICKER_TYPE_CHOOSE","allowDirectoryChooser","typeString","typeIconClass","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","m","amdD","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","definition","o","defineProperty","enumerable","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","document","baseURI","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/files_sharing-files_sharing_tab.js b/dist/files_sharing-files_sharing_tab.js
index 3a8362d2ca9..4ff8a80f295 100644
--- a/dist/files_sharing-files_sharing_tab.js
+++ b/dist/files_sharing-files_sharing_tab.js
@@ -1,3 +1,3 @@
/*! For license information please see files_sharing-files_sharing_tab.js.LICENSE.txt */
-!function(){"use strict";var n,e={13610:function(n,e,r){var i=r(20144),a=r(72268),s=r.n(a),o=r(9944),c=r(1794),l=r(79753),u=r(28017),h=r.n(u),d=r(4820);function f(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var p=function(){function n(){!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n)}var e,t;return e=n,(t=[{key:"isPublicUploadEnabled",get:function(){return document.getElementById("filestable")&&"yes"===document.getElementById("filestable").dataset.allowPublicUpload}},{key:"isShareWithLinkAllowed",get:function(){return document.getElementById("allowShareWithLink")&&"yes"===document.getElementById("allowShareWithLink").value}},{key:"federatedShareDocLink",get:function(){return OC.appConfig.core.federatedCloudShareDoc}},{key:"defaultExpirationDateString",get:function(){var n="";if(this.isDefaultExpireDateEnabled){var e=window.moment.utc(),t=this.defaultExpireDate;e.add(t,"days"),n=e.format("YYYY-MM-DD")}return n}},{key:"defaultInternalExpirationDateString",get:function(){var n="";if(this.isDefaultInternalExpireDateEnabled){var e=window.moment.utc(),t=this.defaultInternalExpireDate;e.add(t,"days"),n=e.format("YYYY-MM-DD")}return n}},{key:"defaultRemoteExpirationDateString",get:function(){var n="";if(this.isDefaultRemoteExpireDateEnabled){var e=window.moment.utc(),t=this.defaultRemoteExpireDate;e.add(t,"days"),n=e.format("YYYY-MM-DD")}return n}},{key:"enforcePasswordForPublicLink",get:function(){return!0===OC.appConfig.core.enforcePasswordForPublicLink}},{key:"enableLinkPasswordByDefault",get:function(){return!0===OC.appConfig.core.enableLinkPasswordByDefault}},{key:"isDefaultExpireDateEnforced",get:function(){return!0===OC.appConfig.core.defaultExpireDateEnforced}},{key:"isDefaultExpireDateEnabled",get:function(){return!0===OC.appConfig.core.defaultExpireDateEnabled}},{key:"isDefaultInternalExpireDateEnforced",get:function(){return!0===OC.appConfig.core.defaultInternalExpireDateEnforced}},{key:"isDefaultRemoteExpireDateEnforced",get:function(){return!0===OC.appConfig.core.defaultRemoteExpireDateEnforced}},{key:"isDefaultInternalExpireDateEnabled",get:function(){return!0===OC.appConfig.core.defaultInternalExpireDateEnabled}},{key:"isRemoteShareAllowed",get:function(){return!0===OC.appConfig.core.remoteShareAllowed}},{key:"isMailShareAllowed",get:function(){var n,e,t,r=OC.getCapabilities();return void 0!==(null==r||null===(n=r.files_sharing)||void 0===n?void 0:n.sharebymail)&&!0===(null==r||null===(e=r.files_sharing)||void 0===e||null===(t=e.public)||void 0===t?void 0:t.enabled)}},{key:"defaultExpireDate",get:function(){return OC.appConfig.core.defaultExpireDate}},{key:"defaultInternalExpireDate",get:function(){return OC.appConfig.core.defaultInternalExpireDate}},{key:"defaultRemoteExpireDate",get:function(){return OC.appConfig.core.defaultRemoteExpireDate}},{key:"isResharingAllowed",get:function(){return!0===OC.appConfig.core.resharingAllowed}},{key:"isPasswordForMailSharesRequired",get:function(){return void 0!==OC.getCapabilities().files_sharing.sharebymail&&OC.getCapabilities().files_sharing.sharebymail.password.enforced}},{key:"shouldAlwaysShowUnique",get:function(){var n,e;return!0===(null===(n=OC.getCapabilities().files_sharing)||void 0===n||null===(e=n.sharee)||void 0===e?void 0:e.always_show_unique)}},{key:"allowGroupSharing",get:function(){return!0===OC.appConfig.core.allowGroupSharing}},{key:"maxAutocompleteResults",get:function(){return parseInt(OC.config["sharing.maxAutocompleteResults"],10)||25}},{key:"minSearchStringLength",get:function(){return parseInt(OC.config["sharing.minSearchStringLength"],10)||0}},{key:"passwordPolicy",get:function(){var n=OC.getCapabilities();return n.password_policy?n.password_policy:{}}}])&&f(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}(),g=r(41922);function m(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var v=function(){function n(e){var t,r;!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),r=void 0,(t="_share")in this?Object.defineProperty(this,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):this[t]=r,e.ocs&&e.ocs.data&&e.ocs.data[0]&&(e=e.ocs.data[0]),e.hide_download=!!e.hide_download,e.mail_send=!!e.mail_send,this._share=e}var e,t;return e=n,(t=[{key:"state",get:function(){return this._share}},{key:"id",get:function(){return this._share.id}},{key:"type",get:function(){return this._share.share_type}},{key:"permissions",get:function(){return this._share.permissions},set:function(n){this._share.permissions=n}},{key:"owner",get:function(){return this._share.uid_owner}},{key:"ownerDisplayName",get:function(){return this._share.displayname_owner}},{key:"shareWith",get:function(){return this._share.share_with}},{key:"shareWithDisplayName",get:function(){return this._share.share_with_displayname||this._share.share_with}},{key:"shareWithDisplayNameUnique",get:function(){return this._share.share_with_displayname_unique||this._share.share_with}},{key:"shareWithLink",get:function(){return this._share.share_with_link}},{key:"shareWithAvatar",get:function(){return this._share.share_with_avatar}},{key:"uidFileOwner",get:function(){return this._share.uid_file_owner}},{key:"displaynameFileOwner",get:function(){return this._share.displayname_file_owner||this._share.uid_file_owner}},{key:"createdTime",get:function(){return this._share.stime}},{key:"expireDate",get:function(){return this._share.expiration},set:function(n){this._share.expiration=n}},{key:"token",get:function(){return this._share.token}},{key:"note",get:function(){return this._share.note},set:function(n){this._share.note=n}},{key:"label",get:function(){return this._share.label},set:function(n){this._share.label=n}},{key:"mailSend",get:function(){return!0===this._share.mail_send}},{key:"hideDownload",get:function(){return!0===this._share.hide_download},set:function(n){this._share.hide_download=!0===n}},{key:"password",get:function(){return this._share.password},set:function(n){this._share.password=n}},{key:"passwordExpirationTime",get:function(){return this._share.password_expiration_time},set:function(n){this._share.password_expiration_time=n}},{key:"sendPasswordByTalk",get:function(){return this._share.send_password_by_talk},set:function(n){this._share.send_password_by_talk=n}},{key:"path",get:function(){return this._share.path}},{key:"itemType",get:function(){return this._share.item_type}},{key:"mimetype",get:function(){return this._share.mimetype}},{key:"fileSource",get:function(){return this._share.file_source}},{key:"fileTarget",get:function(){return this._share.file_target}},{key:"fileParent",get:function(){return this._share.file_parent}},{key:"hasReadPermission",get:function(){return!!(this.permissions&OC.PERMISSION_READ)}},{key:"hasCreatePermission",get:function(){return!!(this.permissions&OC.PERMISSION_CREATE)}},{key:"hasDeletePermission",get:function(){return!!(this.permissions&OC.PERMISSION_DELETE)}},{key:"hasUpdatePermission",get:function(){return!!(this.permissions&OC.PERMISSION_UPDATE)}},{key:"hasSharePermission",get:function(){return!!(this.permissions&OC.PERMISSION_SHARE)}},{key:"canEdit",get:function(){return!0===this._share.can_edit}},{key:"canDelete",get:function(){return!0===this._share.can_delete}},{key:"viaFileid",get:function(){return this._share.via_fileid}},{key:"viaPath",get:function(){return this._share.via_path}},{key:"parent",get:function(){return this._share.parent}},{key:"storageId",get:function(){return this._share.storage_id}},{key:"storage",get:function(){return this._share.storage}},{key:"itemSource",get:function(){return this._share.item_source}},{key:"status",get:function(){return this._share.status}}])&&m(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}(),_={data:function(){return{SHARE_TYPES:g.D}}},A=r(74466),y=r.n(A),E=r(79440),w=r.n(E),b=r(15168),S=r.n(b),C={name:"SharingEntrySimple",components:{Actions:w()},directives:{Tooltip:S()},props:{title:{type:String,default:"",required:!0},tooltip:{type:String,default:""},subtitle:{type:String,default:""},isUnique:{type:Boolean,default:!0}}},x=r(93379),k=r.n(x),P=r(7795),T=r.n(P),D=r(90569),R=r.n(D),O=r(3565),I=r.n(O),L=r(19216),N=r.n(L),Y=r(44589),H=r.n(Y),U=r(35917),M={};M.styleTagTransform=H(),M.setAttributes=I(),M.insert=R().bind(null,"head"),M.domAPI=T(),M.insertStyleElement=N(),k()(U.Z,M),U.Z&&U.Z.locals&&U.Z.locals;var B=r(51900),j=(0,B.Z)(C,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("li",{staticClass:"sharing-entry"},[n._t("avatar"),n._v(" "),t("div",{directives:[{name:"tooltip",rawName:"v-tooltip",value:n.tooltip,expression:"tooltip"}],staticClass:"sharing-entry__desc"},[t("h5",[n._v(n._s(n.title))]),n._v(" "),n.subtitle?t("p",[n._v("\n\t\t\t"+n._s(n.subtitle)+"\n\t\t")]):n._e()]),n._v(" "),n.$slots.default?t("Actions",{staticClass:"sharing-entry__actions",attrs:{"menu-align":"right"}},[n._t("default")],2):n._e()],2)}),[],!1,null,"1436bf4a",null).exports;function W(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}var q={name:"SharingEntryInternal",components:{ActionLink:y(),SharingEntrySimple:j},props:{fileInfo:{type:Object,default:function(){},required:!0}},data:function(){return{copied:!1,copySuccess:!1}},computed:{internalLink:function(){return window.location.protocol+"//"+window.location.host+(0,l.generateUrl)("/f/")+this.fileInfo.id},clipboardTooltip:function(){return this.copied?this.copySuccess?t("files_sharing","Link copied"):t("files_sharing","Cannot copy, please copy the link manually"):t("files_sharing","Copy to clipboard")},internalLinkSubtitle:function(){return"dir"===this.fileInfo.type?t("files_sharing","Only works for users with access to this folder"):t("files_sharing","Only works for users with access to this file")}},methods:{copyLink:function(){var n,e=this;return(n=regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,e.$copyText(e.internalLink);case 3:e.$refs.copyButton.$el.focus(),e.copySuccess=!0,e.copied=!0,n.next=13;break;case 8:n.prev=8,n.t0=n.catch(0),e.copySuccess=!1,e.copied=!0,console.error(n.t0);case 13:return n.prev=13,setTimeout((function(){e.copySuccess=!1,e.copied=!1}),4e3),n.finish(13);case 16:case"end":return n.stop()}}),n,null,[[0,8,13,16]])})),function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){W(a,r,i,s,o,"next",n)}function o(n){W(a,r,i,s,o,"throw",n)}s(void 0)}))})()}}},F=q,$=r(52475),Z={};Z.styleTagTransform=H(),Z.setAttributes=I(),Z.insert=R().bind(null,"head"),Z.domAPI=T(),Z.insertStyleElement=N(),k()($.Z,Z),$.Z&&$.Z.locals&&$.Z.locals;var G=(0,B.Z)(F,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("SharingEntrySimple",{staticClass:"sharing-entry__internal",attrs:{title:n.t("files_sharing","Internal link"),subtitle:n.internalLinkSubtitle},scopedSlots:n._u([{key:"avatar",fn:function(){return[t("div",{staticClass:"avatar-external icon-external-white"})]},proxy:!0}])},[n._v(" "),t("ActionLink",{ref:"copyButton",attrs:{href:n.internalLink,target:"_blank",icon:n.copied&&n.copySuccess?"icon-checkmark-color":"icon-clippy"},on:{click:function(e){return e.preventDefault(),n.copyLink.apply(null,arguments)}}},[n._v("\n\t\t"+n._s(n.clipboardTooltip)+"\n\t")])],1)}),[],!1,null,"854dc2c6",null),K=G.exports,V=r(22200),Q=r(20296),z=r.n(Q),J=r(7811),X=r.n(J);function nn(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function en(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){nn(a,r,i,s,o,"next",n)}function o(n){nn(a,r,i,s,o,"throw",n)}s(void 0)}))}}var tn=new p,rn="abcdefgijkmnopqrstwxyzABCDEFGHJKLMNPQRSTWXYZ23456789";function an(){return sn.apply(this,arguments)}function sn(){return(sn=en(regeneratorRuntime.mark((function n(){var e;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!tn.passwordPolicy.api||!tn.passwordPolicy.api.generate){n.next=12;break}return n.prev=1,n.next=4,d.default.get(tn.passwordPolicy.api.generate);case 4:if(!(e=n.sent).data.ocs.data.password){n.next=7;break}return n.abrupt("return",e.data.ocs.data.password);case 7:n.next=12;break;case 9:n.prev=9,n.t0=n.catch(1),console.info("Error generating password from password_policy",n.t0);case 12:return n.abrupt("return",Array(10).fill(0).reduce((function(n,e){return n+rn.charAt(Math.floor(Math.random()*rn.length))}),""));case 13:case"end":return n.stop()}}),n,null,[[1,9]])})))).apply(this,arguments)}function on(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function cn(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){on(a,r,i,s,o,"next",n)}function o(n){on(a,r,i,s,o,"throw",n)}s(void 0)}))}}r(35449);var ln=(0,l.generateOcsUrl)("apps/files_sharing/api/v1/shares"),un={methods:{createShare:function(n){return cn(regeneratorRuntime.mark((function e(){var r,i,a,s,o,c,l,u,h,f,p,g,m,_,A,y;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=n.path,i=n.permissions,a=n.shareType,s=n.shareWith,o=n.publicUpload,c=n.password,l=n.sendPasswordByTalk,u=n.expireDate,h=n.label,e.prev=1,e.next=4,d.default.post(ln,{path:r,permissions:i,shareType:a,shareWith:s,publicUpload:o,password:c,sendPasswordByTalk:l,expireDate:u,label:h});case 4:if(null!=(p=e.sent)&&null!==(f=p.data)&&void 0!==f&&f.ocs){e.next=7;break}throw p;case 7:return e.abrupt("return",new v(p.data.ocs.data));case 10:throw e.prev=10,e.t0=e.catch(1),console.error("Error while creating share",e.t0),y=null===e.t0||void 0===e.t0||null===(g=e.t0.response)||void 0===g||null===(m=g.data)||void 0===m||null===(_=m.ocs)||void 0===_||null===(A=_.meta)||void 0===A?void 0:A.message,OC.Notification.showTemporary(y?t("files_sharing","Error creating the share: {errorMessage}",{errorMessage:y}):t("files_sharing","Error creating the share"),{type:"error"}),e.t0;case 16:case"end":return e.stop()}}),e,null,[[1,10]])})))()},deleteShare:function(n){return cn(regeneratorRuntime.mark((function e(){var r,i,a,s,o,c,l;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,d.default.delete(ln+"/".concat(n));case 3:if(null!=(i=e.sent)&&null!==(r=i.data)&&void 0!==r&&r.ocs){e.next=6;break}throw i;case 6:return e.abrupt("return",!0);case 9:throw e.prev=9,e.t0=e.catch(0),console.error("Error while deleting share",e.t0),l=null===e.t0||void 0===e.t0||null===(a=e.t0.response)||void 0===a||null===(s=a.data)||void 0===s||null===(o=s.ocs)||void 0===o||null===(c=o.meta)||void 0===c?void 0:c.message,OC.Notification.showTemporary(l?t("files_sharing","Error deleting the share: {errorMessage}",{errorMessage:l}):t("files_sharing","Error deleting the share"),{type:"error"}),e.t0;case 15:case"end":return e.stop()}}),e,null,[[0,9]])})))()},updateShare:function(n,e){return cn(regeneratorRuntime.mark((function r(){var i,a,s,o,c,l,u,h;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.prev=0,r.next=3,d.default.put(ln+"/".concat(n),e);case 3:if(null!=(a=r.sent)&&null!==(i=a.data)&&void 0!==i&&i.ocs){r.next=8;break}throw a;case 8:return r.abrupt("return",a.data.ocs.data);case 9:r.next=17;break;case 11:throw r.prev=11,r.t0=r.catch(0),console.error("Error while updating share",r.t0),400!==r.t0.response.status&&(u=null===r.t0||void 0===r.t0||null===(s=r.t0.response)||void 0===s||null===(o=s.data)||void 0===o||null===(c=o.ocs)||void 0===c||null===(l=c.meta)||void 0===l?void 0:l.message,OC.Notification.showTemporary(u?t("files_sharing","Error updating the share: {errorMessage}",{errorMessage:u}):t("files_sharing","Error updating the share"),{type:"error"})),h=r.t0.response.data.ocs.meta.message,new Error(h);case 17:case"end":return r.stop()}}),r,null,[[0,11]])})))()}}};function hn(n){return hn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},hn(n)}function dn(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(n);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),t.push.apply(t,r)}return t}function fn(n){for(var e=1;e<arguments.length;e++){var t=null!=arguments[e]?arguments[e]:{};e%2?dn(Object(t),!0).forEach((function(e){pn(n,e,t[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):dn(Object(t)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(t,e))}))}return n}function pn(n,e,t){return e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function gn(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function mn(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){gn(a,r,i,s,o,"next",n)}function o(n){gn(a,r,i,s,o,"throw",n)}s(void 0)}))}}var vn={name:"SharingInput",components:{Multiselect:X()},mixins:[_,un],props:{shares:{type:Array,default:function(){return[]},required:!0},linkShares:{type:Array,default:function(){return[]},required:!0},fileInfo:{type:Object,default:function(){},required:!0},reshare:{type:v,default:null},canReshare:{type:Boolean,required:!0}},data:function(){return{config:new p,loading:!1,query:"",recommendations:[],ShareSearch:OCA.Sharing.ShareSearch.state,suggestions:[]}},computed:{externalResults:function(){return this.ShareSearch.results},inputPlaceholder:function(){var n=this.config.isRemoteShareAllowed;return this.canReshare?n?t("files_sharing","Name, email, or Federated Cloud ID …"):t("files_sharing","Name or email …"):t("files_sharing","Resharing is not allowed")},isValidQuery:function(){return this.query&&""!==this.query.trim()&&this.query.length>this.config.minSearchStringLength},options:function(){return this.isValidQuery?this.suggestions:this.recommendations},noResultText:function(){return this.loading?t("files_sharing","Searching …"):t("files_sharing","No elements found.")}},mounted:function(){this.getRecommendations()},methods:{asyncFind:function(n,e){var t=this;return mn(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.query=n.trim(),!t.isValidQuery){e.next=5;break}return t.loading=!0,e.next=5,t.debounceGetSuggestions(n);case 5:case"end":return e.stop()}}),e)})))()},getSuggestions:function(n){var e=arguments,r=this;return mn(regeneratorRuntime.mark((function i(){var a,s,o,c,u,h,f,p,g,m,v,_,A;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return a=e.length>1&&void 0!==e[1]&&e[1],r.loading=!0,!0===OC.getCapabilities().files_sharing.sharee.query_lookup_default&&(a=!0),s=[r.SHARE_TYPES.SHARE_TYPE_USER,r.SHARE_TYPES.SHARE_TYPE_GROUP,r.SHARE_TYPES.SHARE_TYPE_REMOTE,r.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP,r.SHARE_TYPES.SHARE_TYPE_CIRCLE,r.SHARE_TYPES.SHARE_TYPE_ROOM,r.SHARE_TYPES.SHARE_TYPE_GUEST,r.SHARE_TYPES.SHARE_TYPE_DECK],!0===OC.getCapabilities().files_sharing.public.enabled&&s.push(r.SHARE_TYPES.SHARE_TYPE_EMAIL),o=null,i.prev=6,i.next=9,d.default.get((0,l.generateOcsUrl)("apps/files_sharing/api/v1/sharees"),{params:{format:"json",itemType:"dir"===r.fileInfo.type?"folder":"file",search:n,lookup:a,perPage:r.config.maxAutocompleteResults,shareType:s}});case 9:o=i.sent,i.next=16;break;case 12:return i.prev=12,i.t0=i.catch(6),console.error("Error fetching suggestions",i.t0),i.abrupt("return");case 16:c=o.data.ocs.data,u=o.data.ocs.data.exact,c.exact=[],h=Object.values(u).reduce((function(n,e){return n.concat(e)}),[]),f=Object.values(c).reduce((function(n,e){return n.concat(e)}),[]),p=r.filterOutExistingShares(h).map((function(n){return r.formatForMultiselect(n)})).sort((function(n,e){return n.shareType-e.shareType})),g=r.filterOutExistingShares(f).map((function(n){return r.formatForMultiselect(n)})).sort((function(n,e){return n.shareType-e.shareType})),m=[],c.lookupEnabled&&!a&&m.push({id:"global-lookup",isNoUser:!0,displayName:t("files_sharing","Search globally"),lookup:!0}),v=r.externalResults.filter((function(n){return!n.condition||n.condition(r)})),_=p.concat(g).concat(v).concat(m),A=_.reduce((function(n,e){return e.displayName?(n[e.displayName]||(n[e.displayName]=0),n[e.displayName]++,n):n}),{}),r.suggestions=_.map((function(n){return A[n.displayName]>1&&!n.desc?fn(fn({},n),{},{desc:n.shareWithDisplayNameUnique}):n})),r.loading=!1,console.info("suggestions",r.suggestions);case 31:case"end":return i.stop()}}),i,null,[[6,12]])})))()},debounceGetSuggestions:z()((function(){this.getSuggestions.apply(this,arguments)}),300),getRecommendations:function(){var n=this;return mn(regeneratorRuntime.mark((function e(){var t,r,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.loading=!0,t=null,e.prev=2,e.next=5,d.default.get((0,l.generateOcsUrl)("apps/files_sharing/api/v1/sharees_recommended"),{params:{format:"json",itemType:n.fileInfo.type}});case 5:t=e.sent,e.next=12;break;case 8:return e.prev=8,e.t0=e.catch(2),console.error("Error fetching recommendations",e.t0),e.abrupt("return");case 12:r=n.externalResults.filter((function(e){return!e.condition||e.condition(n)})),i=Object.values(t.data.ocs.data.exact).reduce((function(n,e){return n.concat(e)}),[]),n.recommendations=n.filterOutExistingShares(i).map((function(e){return n.formatForMultiselect(e)})).concat(r),n.loading=!1,console.info("recommendations",n.recommendations);case 17:case"end":return e.stop()}}),e,null,[[2,8]])})))()},filterOutExistingShares:function(n){var e=this;return n.reduce((function(n,t){if("object"!==hn(t))return n;try{if(t.value.shareType===e.SHARE_TYPES.SHARE_TYPE_USER){if(t.value.shareWith===(0,V.getCurrentUser)().uid)return n;if(e.reshare&&t.value.shareWith===e.reshare.owner)return n}if(t.value.shareType===e.SHARE_TYPES.SHARE_TYPE_EMAIL){if(-1!==e.linkShares.map((function(n){return n.shareWith})).indexOf(t.value.shareWith.trim()))return n}else{var r=e.shares.reduce((function(n,e){return n[e.shareWith]=e.type,n}),{}),i=t.value.shareWith.trim();if(i in r&&r[i]===t.value.shareType)return n}n.push(t)}catch(e){return n}return n}),[])},shareTypeToIcon:function(n){switch(n){case this.SHARE_TYPES.SHARE_TYPE_GUEST:return"icon-user";case this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:case this.SHARE_TYPES.SHARE_TYPE_GROUP:return"icon-group";case this.SHARE_TYPES.SHARE_TYPE_EMAIL:return"icon-mail";case this.SHARE_TYPES.SHARE_TYPE_CIRCLE:return"icon-circle";case this.SHARE_TYPES.SHARE_TYPE_ROOM:return"icon-room";case this.SHARE_TYPES.SHARE_TYPE_DECK:return"icon-deck";default:return""}},formatForMultiselect:function(n){var e,r;if(n.value.shareType===this.SHARE_TYPES.SHARE_TYPE_USER&&this.config.shouldAlwaysShowUnique)e=null!==(r=n.shareWithDisplayNameUnique)&&void 0!==r?r:"";else if(n.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_REMOTE&&n.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP||!n.value.server)if(n.value.shareType===this.SHARE_TYPES.SHARE_TYPE_EMAIL)e=n.value.shareWith;else{var i;e=null!==(i=n.shareWithDescription)&&void 0!==i?i:""}else e=t("files_sharing","on {server}",{server:n.value.server});return{id:"".concat(n.value.shareType,"-").concat(n.value.shareWith),shareWith:n.value.shareWith,shareType:n.value.shareType,user:n.uuid||n.value.shareWith,isNoUser:n.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_USER,displayName:n.name||n.label,subtitle:e,shareWithDisplayNameUnique:n.shareWithDisplayNameUnique||"",icon:this.shareTypeToIcon(n.value.shareType)}},addShare:function(n){var e=this;return mn(regeneratorRuntime.mark((function t(){var r,i,a,s,o,c,l,u;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!n.lookup){t.next=5;break}return t.next=3,e.getSuggestions(e.query,!0);case 3:return e.$nextTick((function(){e.$refs.multiselect.$el.querySelector(".multiselect__input").focus()})),t.abrupt("return",!0);case 5:if(!n.handler){t.next=11;break}return t.next=8,n.handler(e);case 8:return r=t.sent,e.$emit("add:share",new v(r)),t.abrupt("return",!0);case 11:if(e.loading=!0,console.debug("Adding a new share from the input for",n),t.prev=13,o=null,!e.config.enforcePasswordForPublicLink||n.shareType!==e.SHARE_TYPES.SHARE_TYPE_EMAIL){t.next=19;break}return t.next=18,an();case 18:o=t.sent;case 19:return c=(e.fileInfo.path+"/"+e.fileInfo.name).replace("//","/"),t.next=22,e.createShare({path:c,shareType:n.shareType,shareWith:n.shareWith,password:o,permissions:e.fileInfo.sharePermissions&OC.getCapabilities().files_sharing.default_permissions});case 22:if(l=t.sent,!o){t.next=31;break}return l.newPassword=o,t.next=27,new Promise((function(n){e.$emit("add:share",l,n)}));case 27:t.sent.open=!0,t.next=32;break;case 31:e.$emit("add:share",l);case 32:return null!==(i=e.$refs.multiselect)&&void 0!==i&&null!==(a=i.$refs)&&void 0!==a&&null!==(s=a.VueMultiselect)&&void 0!==s&&s.search&&(e.$refs.multiselect.$refs.VueMultiselect.search=""),t.next=35,e.getRecommendations();case 35:t.next=43;break;case 37:t.prev=37,t.t0=t.catch(13),(u=e.$refs.multiselect.$el.querySelector("input"))&&u.focus(),e.query=n.shareWith,console.error("Error while adding new share",t.t0);case 43:return t.prev=43,e.loading=!1,t.finish(43);case 46:case"end":return t.stop()}}),t,null,[[13,37,43,46]])})))()}}},_n=vn,An=r(84721),yn={};yn.styleTagTransform=H(),yn.setAttributes=I(),yn.insert=R().bind(null,"head"),yn.domAPI=T(),yn.insertStyleElement=N(),k()(An.Z,yn),An.Z&&An.Z.locals&&An.Z.locals;var En=(0,B.Z)(_n,(function(){var n=this,e=n.$createElement;return(n._self._c||e)("Multiselect",{ref:"multiselect",staticClass:"sharing-input",attrs:{"clear-on-select":!0,disabled:!n.canReshare,"hide-selected":!0,"internal-search":!1,loading:n.loading,options:n.options,placeholder:n.inputPlaceholder,"preselect-first":!0,"preserve-search":!0,searchable:!0,"user-select":!0,"open-direction":"below",label:"displayName","track-by":"id"},on:{"search-change":n.asyncFind,select:n.addShare},scopedSlots:n._u([{key:"noOptions",fn:function(){return[n._v("\n\t\t"+n._s(n.t("files_sharing","No recommendations. Start typing."))+"\n\t")]},proxy:!0},{key:"noResult",fn:function(){return[n._v("\n\t\t"+n._s(n.noResultText)+"\n\t")]},proxy:!0}])})}),[],!1,null,null,null).exports,wn=r(56286),bn=r.n(wn),Sn=r(76632),Cn=r(41009),xn=r.n(Cn),kn=r(25746);function Pn(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function Tn(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){Pn(a,r,i,s,o,"next",n)}function o(n){Pn(a,r,i,s,o,"throw",n)}s(void 0)}))}}var Dn={mixins:[un,_],props:{fileInfo:{type:Object,default:function(){},required:!0},share:{type:v,default:null},isUnique:{type:Boolean,default:!0}},data:function(){var n;return{config:new p,errors:{},loading:!1,saving:!1,open:!1,updateQueue:new kn.Z({concurrency:1}),reactiveState:null===(n=this.share)||void 0===n?void 0:n.state}},computed:{hasNote:{get:function(){return""!==this.share.note},set:function(n){this.share.note=n?null:""}},dateTomorrow:function(){return moment().add(1,"days")},lang:function(){var n=window.dayNamesShort?window.dayNamesShort:["Sun.","Mon.","Tue.","Wed.","Thu.","Fri.","Sat."],e=window.monthNamesShort?window.monthNamesShort:["Jan.","Feb.","Mar.","Apr.","May.","Jun.","Jul.","Aug.","Sep.","Oct.","Nov.","Dec."];return{formatLocale:{firstDayOfWeek:window.firstDay?window.firstDay:0,monthsShort:e,weekdaysMin:n,weekdaysShort:n},monthFormat:"MMM"}},isShareOwner:function(){return this.share&&this.share.owner===(0,V.getCurrentUser)().uid}},methods:{checkShare:function(n){return(!n.password||"string"==typeof n.password&&""!==n.password.trim())&&!(n.expirationDate&&!moment(n.expirationDate).isValid())},onExpirationChange:function(n){var e=moment(n).format("YYYY-MM-DD");this.share.expireDate=e,this.queueUpdate("expireDate")},onExpirationDisable:function(){this.share.expireDate="",this.queueUpdate("expireDate")},onNoteChange:function(n){this.$set(this.share,"newNote",n.trim())},onNoteSubmit:function(){this.share.newNote&&(this.share.note=this.share.newNote,this.$delete(this.share,"newNote"),this.queueUpdate("note"))},onDelete:function(){var n=this;return Tn(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,n.loading=!0,n.open=!1,e.next=5,n.deleteShare(n.share.id);case 5:console.debug("Share deleted",n.share.id),n.$emit("remove:share",n.share),e.next=12;break;case 9:e.prev=9,e.t0=e.catch(0),n.open=!0;case 12:return e.prev=12,n.loading=!1,e.finish(12);case 15:case"end":return e.stop()}}),e,null,[[0,9,12,15]])})))()},queueUpdate:function(){for(var n=this,e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];if(0!==t.length)if(this.share.id){var i={};t.map((function(e){return i[e]=n.share[e].toString()})),this.updateQueue.add(Tn(regeneratorRuntime.mark((function e(){var r,a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.saving=!0,n.errors={},e.prev=2,e.next=5,n.updateShare(n.share.id,i);case 5:r=e.sent,t.indexOf("password")>=0&&(n.$delete(n.share,"newPassword"),n.share.passwordExpirationTime=r.password_expiration_time),n.$delete(n.errors,t[0]),e.next=14;break;case 10:e.prev=10,e.t0=e.catch(2),(a=e.t0.message)&&""!==a&&n.onSyncError(t[0],a);case 14:return e.prev=14,n.saving=!1,e.finish(14);case 17:case"end":return e.stop()}}),e,null,[[2,10,14,17]])}))))}else console.error("Cannot update share.",this.share,"No valid id")},onSyncError:function(n,e){switch(this.open=!0,n){case"password":case"pending":case"expireDate":case"label":case"note":this.$set(this.errors,n,e);var t=this.$refs[n];if(t){t.$el&&(t=t.$el);var r=t.querySelector(".focusable");r&&r.focus()}break;case"sendPasswordByTalk":this.$set(this.errors,n,e),this.share.sendPasswordByTalk=!this.share.sendPasswordByTalk}},debounceQueueUpdate:z()((function(n){this.queueUpdate(n)}),500),disabledDate:function(n){var e=moment(n);return this.dateTomorrow&&e.isBefore(this.dateTomorrow,"day")||this.dateMaxEnforced&&e.isSameOrAfter(this.dateMaxEnforced,"day")}}},Rn={name:"SharingEntryInherited",components:{ActionButton:bn(),ActionLink:y(),ActionText:xn(),Avatar:h(),SharingEntrySimple:j},mixins:[Dn],props:{share:{type:v,required:!0}},computed:{viaFileTargetUrl:function(){return(0,l.generateUrl)("/f/{fileid}",{fileid:this.share.viaFileid})},viaFolderName:function(){return(0,Sn.EZ)(this.share.viaPath)}}},On=r(71296),In={};In.styleTagTransform=H(),In.setAttributes=I(),In.insert=R().bind(null,"head"),In.domAPI=T(),In.insertStyleElement=N(),k()(On.Z,In),On.Z&&On.Z.locals&&On.Z.locals;var Ln=(0,B.Z)(Rn,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("SharingEntrySimple",{key:n.share.id,staticClass:"sharing-entry__inherited",attrs:{title:n.share.shareWithDisplayName},scopedSlots:n._u([{key:"avatar",fn:function(){return[t("Avatar",{staticClass:"sharing-entry__avatar",attrs:{user:n.share.shareWith,"display-name":n.share.shareWithDisplayName,"tooltip-message":""}})]},proxy:!0}])},[n._v(" "),t("ActionText",{attrs:{icon:"icon-user"}},[n._v("\n\t\t"+n._s(n.t("files_sharing","Added by {initiator}",{initiator:n.share.ownerDisplayName}))+"\n\t")]),n._v(" "),n.share.viaPath&&n.share.viaFileid?t("ActionLink",{attrs:{icon:"icon-folder",href:n.viaFileTargetUrl}},[n._v("\n\t\t"+n._s(n.t("files_sharing","Via “{folder}”",{folder:n.viaFolderName}))+"\n\t")]):n._e(),n._v(" "),n.share.canDelete?t("ActionButton",{attrs:{icon:"icon-close"},on:{click:function(e){return e.preventDefault(),n.onDelete.apply(null,arguments)}}},[n._v("\n\t\t"+n._s(n.t("files_sharing","Unshare"))+"\n\t")]):n._e()],1)}),[],!1,null,"29845767",null),Nn=Ln.exports;function Yn(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}var Hn={name:"SharingInherited",components:{ActionButton:bn(),SharingEntryInherited:Nn,SharingEntrySimple:j},props:{fileInfo:{type:Object,default:function(){},required:!0}},data:function(){return{loaded:!1,loading:!1,showInheritedShares:!1,shares:[]}},computed:{showInheritedSharesIcon:function(){return this.loading?"icon-loading-small":this.showInheritedShares?"icon-triangle-n":"icon-triangle-s"},mainTitle:function(){return t("files_sharing","Others with access")},subTitle:function(){return this.showInheritedShares&&0===this.shares.length?t("files_sharing","No other users with access found"):""},toggleTooltip:function(){return"dir"===this.fileInfo.type?t("files_sharing","Toggle list of others with access to this directory"):t("files_sharing","Toggle list of others with access to this file")},fullPath:function(){return"".concat(this.fileInfo.path,"/").concat(this.fileInfo.name).replace("//","/")}},watch:{fileInfo:function(){this.resetState()}},methods:{toggleInheritedShares:function(){this.showInheritedShares=!this.showInheritedShares,this.showInheritedShares?this.fetchInheritedShares():this.resetState()},fetchInheritedShares:function(){var n,e=this;return(n=regeneratorRuntime.mark((function n(){var r,i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e.loading=!0,n.prev=1,r=(0,l.generateOcsUrl)("apps/files_sharing/api/v1/shares/inherited?format=json&path={path}",{path:e.fullPath}),n.next=5,d.default.get(r);case 5:i=n.sent,e.shares=i.data.ocs.data.map((function(n){return new v(n)})).sort((function(n,e){return e.createdTime-n.createdTime})),console.info(e.shares),e.loaded=!0,n.next=14;break;case 11:n.prev=11,n.t0=n.catch(1),OC.Notification.showTemporary(t("files_sharing","Unable to fetch inherited shares"),{type:"error"});case 14:return n.prev=14,e.loading=!1,n.finish(14);case 17:case"end":return n.stop()}}),n,null,[[1,11,14,17]])})),function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){Yn(a,r,i,s,o,"next",n)}function o(n){Yn(a,r,i,s,o,"throw",n)}s(void 0)}))})()},resetState:function(){this.loaded=!1,this.loading=!1,this.showInheritedShares=!1,this.shares=[]}}},Un=Hn,Mn=r(93591),Bn={};Bn.styleTagTransform=H(),Bn.setAttributes=I(),Bn.insert=R().bind(null,"head"),Bn.domAPI=T(),Bn.insertStyleElement=N(),k()(Mn.Z,Bn),Mn.Z&&Mn.Z.locals&&Mn.Z.locals;var jn=(0,B.Z)(Un,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("ul",{attrs:{id:"sharing-inherited-shares"}},[t("SharingEntrySimple",{staticClass:"sharing-entry__inherited",attrs:{title:n.mainTitle,subtitle:n.subTitle},scopedSlots:n._u([{key:"avatar",fn:function(){return[t("div",{staticClass:"avatar-shared icon-more-white"})]},proxy:!0}])},[n._v(" "),t("ActionButton",{attrs:{icon:n.showInheritedSharesIcon},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),n.toggleInheritedShares.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.toggleTooltip)+"\n\t\t")])],1),n._v(" "),n._l(n.shares,(function(e){return t("SharingEntryInherited",{key:e.id,attrs:{"file-info":n.fileInfo,share:e}})}))],2)}),[],!1,null,"49ffd834",null),Wn=jn.exports,qn=r(83779),Fn=r.n(qn),$n=r(88408),Zn=r.n($n),Gn=r(33521),Kn=r.n(Gn),Vn=r(97654),Qn=r.n(Vn),zn={name:"ExternalShareAction",props:{id:{type:String,required:!0},action:{type:Object,default:function(){return{}}},fileInfo:{type:Object,default:function(){},required:!0},share:{type:v,default:null}},computed:{data:function(){return this.action.data(this)}}},Jn=(0,B.Z)(zn,(function(){var n=this,e=n.$createElement;return(n._self._c||e)(n.data.is,n._g(n._b({tag:"Component"},"Component",n.data,!1),n.action.handlers),[n._v("\n\t"+n._s(n.data.text)+"\n")])}),[],!1,null,null,null).exports,Xn=r(10949),ne=r.n(Xn),ee={NONE:0,READ:1,UPDATE:2,CREATE:4,DELETE:8,SHARE:16},te={READ_ONLY:ee.READ,UPLOAD_AND_UPDATE:ee.READ|ee.UPDATE|ee.CREATE|ee.DELETE,FILE_DROP:ee.CREATE,ALL:ee.UPDATE|ee.CREATE|ee.READ|ee.DELETE|ee.SHARE};function re(n,e){return n!==ee.NONE&&(n&e)===e}function ie(n){return!(!re(n,ee.READ)&&!re(n,ee.CREATE)||!re(n,ee.READ)&&(re(n,ee.UPDATE)||re(n,ee.DELETE)))}function ae(n,e){return re(n,e)?function(n,e){return n&~e}(n,e):function(n,e){return n|e}(n,e)}var se=r(26937),oe=r(91889),ce={name:"SharePermissionsEditor",components:{ActionButton:bn(),ActionCheckbox:Fn(),ActionRadio:ne(),Tune:se.Z,ChevronLeft:oe.default},mixins:[Dn],data:function(){return{randomFormName:Math.random().toString(27).substring(2),showCustomPermissionsForm:!1,atomicPermissions:ee,bundledPermissions:te}},computed:{sharePermissionsSummary:function(){var n=this;return Object.values(this.atomicPermissions).filter((function(e){return n.shareHasPermissions(e)})).map((function(e){switch(e){case n.atomicPermissions.CREATE:return n.t("files_sharing","Upload");case n.atomicPermissions.READ:return n.t("files_sharing","Read");case n.atomicPermissions.UPDATE:return n.t("files_sharing","Edit");case n.atomicPermissions.DELETE:return n.t("files_sharing","Delete");default:return null}})).filter((function(n){return null!==n})).join(", ")},sharePermissionsIsBundle:function(){var n=this;return Object.values(te).map((function(e){return n.sharePermissionEqual(e)})).filter((function(n){return n})).length>0},sharePermissionsSetIsValid:function(){return ie(this.share.permissions)},isFolder:function(){return"dir"===this.fileInfo.type},fileHasCreatePermission:function(){return!!(this.fileInfo.permissions&ee.CREATE)}},mounted:function(){this.showCustomPermissionsForm=!this.sharePermissionsIsBundle},methods:{sharePermissionEqual:function(n){return(this.share.permissions&~ee.SHARE)===n},shareHasPermissions:function(n){return re(this.share.permissions,n)},setSharePermissions:function(n){this.share.permissions=n,this.queueUpdate("permissions")},canToggleSharePermissions:function(n){return function(n,e){return ie(ae(n,e))}(this.share.permissions,n)},toggleSharePermissions:function(n){this.share.permissions=ae(this.share.permissions,n),ie(this.share.permissions)&&this.queueUpdate("permissions")}}},le=r(32016),ue={};ue.styleTagTransform=H(),ue.setAttributes=I(),ue.insert=R().bind(null,"head"),ue.domAPI=T(),ue.insertStyleElement=N(),k()(le.Z,ue),le.Z&&le.Z.locals&&le.Z.locals;var he=(0,B.Z)(ce,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("span",[n.isFolder?n._e():t("ActionCheckbox",{attrs:{checked:n.shareHasPermissions(n.atomicPermissions.UPDATE),disabled:n.saving},on:{"update:checked":function(e){return n.toggleSharePermissions(n.atomicPermissions.UPDATE)}}},[n._v("\n\t\t"+n._s(n.t("files_sharing","Allow editing"))+"\n\t")]),n._v(" "),n.isFolder&&n.fileHasCreatePermission&&n.config.isPublicUploadEnabled?[n.showCustomPermissionsForm?t("span",{class:{error:!n.sharePermissionsSetIsValid}},[t("ActionCheckbox",{attrs:{checked:n.shareHasPermissions(n.atomicPermissions.READ),disabled:n.saving||!n.canToggleSharePermissions(n.atomicPermissions.READ)},on:{"update:checked":function(e){return n.toggleSharePermissions(n.atomicPermissions.READ)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Read"))+"\n\t\t\t")]),n._v(" "),t("ActionCheckbox",{attrs:{checked:n.shareHasPermissions(n.atomicPermissions.CREATE),disabled:n.saving||!n.canToggleSharePermissions(n.atomicPermissions.CREATE)},on:{"update:checked":function(e){return n.toggleSharePermissions(n.atomicPermissions.CREATE)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Upload"))+"\n\t\t\t")]),n._v(" "),t("ActionCheckbox",{attrs:{checked:n.shareHasPermissions(n.atomicPermissions.UPDATE),disabled:n.saving||!n.canToggleSharePermissions(n.atomicPermissions.UPDATE)},on:{"update:checked":function(e){return n.toggleSharePermissions(n.atomicPermissions.UPDATE)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Edit"))+"\n\t\t\t")]),n._v(" "),t("ActionCheckbox",{attrs:{checked:n.shareHasPermissions(n.atomicPermissions.DELETE),disabled:n.saving||!n.canToggleSharePermissions(n.atomicPermissions.DELETE)},on:{"update:checked":function(e){return n.toggleSharePermissions(n.atomicPermissions.DELETE)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Delete"))+"\n\t\t\t")]),n._v(" "),t("ActionButton",{on:{click:function(e){n.showCustomPermissionsForm=!1}},scopedSlots:n._u([{key:"icon",fn:function(){return[t("ChevronLeft")]},proxy:!0}],null,!1,1018742195)},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Bundled permissions"))+"\n\t\t\t")])],1):[t("ActionRadio",{attrs:{checked:n.sharePermissionEqual(n.bundledPermissions.READ_ONLY),value:n.bundledPermissions.READ_ONLY,name:n.randomFormName,disabled:n.saving},on:{change:function(e){return n.setSharePermissions(n.bundledPermissions.READ_ONLY)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Read only"))+"\n\t\t\t")]),n._v(" "),t("ActionRadio",{attrs:{checked:n.sharePermissionEqual(n.bundledPermissions.UPLOAD_AND_UPDATE),value:n.bundledPermissions.UPLOAD_AND_UPDATE,disabled:n.saving,name:n.randomFormName},on:{change:function(e){return n.setSharePermissions(n.bundledPermissions.UPLOAD_AND_UPDATE)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Allow upload and editing"))+"\n\t\t\t")]),n._v(" "),t("ActionRadio",{staticClass:"sharing-entry__action--public-upload",attrs:{checked:n.sharePermissionEqual(n.bundledPermissions.FILE_DROP),value:n.bundledPermissions.FILE_DROP,disabled:n.saving,name:n.randomFormName},on:{change:function(e){return n.setSharePermissions(n.bundledPermissions.FILE_DROP)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","File drop (upload only)"))+"\n\t\t\t")]),n._v(" "),t("ActionButton",{attrs:{title:n.t("files_sharing","Custom permissions")},on:{click:function(e){n.showCustomPermissionsForm=!0}},scopedSlots:n._u([{key:"icon",fn:function(){return[t("Tune")]},proxy:!0}],null,!1,961531849)},[n._v("\n\t\t\t\t"+n._s(n.sharePermissionsIsBundle?"":n.sharePermissionsSummary)+"\n\t\t\t")])]]:n._e()],2)}),[],!1,null,"3d9cb67e",null).exports;function de(n){return de="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},de(n)}function fe(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function pe(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){fe(a,r,i,s,o,"next",n)}function o(n){fe(a,r,i,s,o,"throw",n)}s(void 0)}))}}var ge={name:"SharingEntryLink",components:{Actions:w(),ActionButton:bn(),ActionCheckbox:Fn(),ActionInput:Zn(),ActionLink:y(),ActionText:xn(),ActionTextEditable:Qn(),ActionSeparator:Kn(),Avatar:h(),ExternalShareAction:Jn,SharePermissionsEditor:he},directives:{Tooltip:S()},mixins:[Dn],props:{canReshare:{type:Boolean,default:!0}},data:function(){return{copySuccess:!0,copied:!1,pending:!1,ExternalLegacyLinkActions:OCA.Sharing.ExternalLinkActions.state,ExternalShareActions:OCA.Sharing.ExternalShareActions.state}},computed:{title:function(){if(this.share&&this.share.id){if(!this.isShareOwner&&this.share.ownerDisplayName)return this.isEmailShareType?t("files_sharing","{shareWith} by {initiator}",{shareWith:this.share.shareWith,initiator:this.share.ownerDisplayName}):t("files_sharing","Shared via link by {initiator}",{initiator:this.share.ownerDisplayName});if(this.share.label&&""!==this.share.label.trim())return this.isEmailShareType?t("files_sharing","Mail share ({label})",{label:this.share.label.trim()}):t("files_sharing","Share link ({label})",{label:this.share.label.trim()});if(this.isEmailShareType)return this.share.shareWith}return t("files_sharing","Share link")},subtitle:function(){return this.isEmailShareType&&this.title!==this.share.shareWith?this.share.shareWith:null},hasExpirationDate:{get:function(){return this.config.isDefaultExpireDateEnforced||!!this.share.expireDate},set:function(n){var e=moment(this.config.defaultExpirationDateString);e.isValid()||(e=moment()),this.share.state.expiration=n?e.format("YYYY-MM-DD"):"",console.debug("Expiration date status",n,this.share.expireDate)}},dateMaxEnforced:function(){return this.config.isDefaultExpireDateEnforced&&moment().add(1+this.config.defaultExpireDate,"days")},isPasswordProtected:{get:function(){return this.config.enforcePasswordForPublicLink||!!this.share.password},set:function(n){var e=this;return pe(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(t.t0=i.default,t.t1=e.share,!n){t.next=8;break}return t.next=5,an();case 5:t.t2=t.sent,t.next=9;break;case 8:t.t2="";case 9:t.t3=t.t2,t.t0.set.call(t.t0,t.t1,"password",t.t3),i.default.set(e.share,"newPassword",e.share.password);case 12:case"end":return t.stop()}}),t)})))()}},passwordExpirationTime:function(){if(null===this.share.passwordExpirationTime)return null;var n=moment(this.share.passwordExpirationTime);return!(n.diff(moment())<0)&&n.fromNow()},isTalkEnabled:function(){return void 0!==OC.appswebroots.spreed},isPasswordProtectedByTalkAvailable:function(){return this.isPasswordProtected&&this.isTalkEnabled},isPasswordProtectedByTalk:{get:function(){return this.share.sendPasswordByTalk},set:function(n){var e=this;return pe(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:e.share.sendPasswordByTalk=n;case 1:case"end":return t.stop()}}),t)})))()}},isEmailShareType:function(){return!!this.share&&this.share.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL},canTogglePasswordProtectedByTalkAvailable:function(){return!(!this.isPasswordProtected||this.isEmailShareType&&!this.hasUnsavedPassword)},pendingPassword:function(){return this.config.enforcePasswordForPublicLink&&this.share&&!this.share.id},pendingExpirationDate:function(){return this.config.isDefaultExpireDateEnforced&&this.share&&!this.share.id},hasUnsavedPassword:function(){return void 0!==this.share.newPassword},shareLink:function(){return window.location.protocol+"//"+window.location.host+(0,l.generateUrl)("/s/")+this.share.token},clipboardTooltip:function(){return this.copied?this.copySuccess?t("files_sharing","Link copied"):t("files_sharing","Cannot copy, please copy the link manually"):t("files_sharing","Copy to clipboard")},externalLegacyLinkActions:function(){return this.ExternalLegacyLinkActions.actions},externalLinkActions:function(){return this.ExternalShareActions.actions.filter((function(n){return n.shareType.includes(g.D.SHARE_TYPE_LINK)||n.shareType.includes(g.D.SHARE_TYPE_EMAIL)}))},isPasswordPolicyEnabled:function(){return"object"===de(this.config.passwordPolicy)}},methods:{onNewLinkShare:function(){var n=this;return pe(regeneratorRuntime.mark((function e(){var r,i,a,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!n.loading){e.next=2;break}return e.abrupt("return");case 2:if(r={share_type:g.D.SHARE_TYPE_LINK},n.config.isDefaultExpireDateEnforced&&(r.expiration=n.config.defaultExpirationDateString),!n.config.enableLinkPasswordByDefault){e.next=8;break}return e.next=7,an();case 7:r.password=e.sent;case 8:if(!n.config.enforcePasswordForPublicLink&&!n.config.isDefaultExpireDateEnforced){e.next=33;break}if(n.pending=!0,!n.share||n.share.id){e.next=20;break}if(!n.checkShare(n.share)){e.next=17;break}return e.next=14,n.pushNewLinkShare(n.share,!0);case 14:return e.abrupt("return",!0);case 17:return n.open=!0,OC.Notification.showTemporary(t("files_sharing","Error, please enter proper password and/or expiration date")),e.abrupt("return",!1);case 20:if(!n.config.enforcePasswordForPublicLink){e.next=24;break}return e.next=23,an();case 23:r.password=e.sent;case 24:return i=new v(r),e.next=27,new Promise((function(e){n.$emit("add:share",i,e)}));case 27:a=e.sent,n.open=!1,n.pending=!1,a.open=!0,e.next=36;break;case 33:return s=new v(r),e.next=36,n.pushNewLinkShare(s);case 36:case"end":return e.stop()}}),e)})))()},pushNewLinkShare:function(n,e){var t=this;return pe(regeneratorRuntime.mark((function r(){var i,a,s,o,c;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(r.prev=0,!t.loading){r.next=3;break}return r.abrupt("return",!0);case 3:return t.loading=!0,t.errors={},i=(t.fileInfo.path+"/"+t.fileInfo.name).replace("//","/"),r.next=8,t.createShare({path:i,shareType:g.D.SHARE_TYPE_LINK,password:n.password,expireDate:n.expireDate});case 8:if(a=r.sent,t.open=!1,console.debug("Link share created",a),!e){r.next=17;break}return r.next=14,new Promise((function(n){t.$emit("update:share",a,n)}));case 14:s=r.sent,r.next=20;break;case 17:return r.next=19,new Promise((function(n){t.$emit("add:share",a,n)}));case 19:s=r.sent;case 20:t.config.enforcePasswordForPublicLink||s.copyLink(),r.next=28;break;case 23:r.prev=23,r.t0=r.catch(0),o=r.t0.response,(c=o.data.ocs.meta.message).match(/password/i)?t.onSyncError("password",c):c.match(/date/i)?t.onSyncError("expireDate",c):t.onSyncError("pending",c);case 28:return r.prev=28,t.loading=!1,r.finish(28);case 31:case"end":return r.stop()}}),r,null,[[0,23,28,31]])})))()},onLabelChange:function(n){this.$set(this.share,"newLabel",n.trim())},onLabelSubmit:function(){"string"==typeof this.share.newLabel&&(this.share.label=this.share.newLabel,this.$delete(this.share,"newLabel"),this.queueUpdate("label"))},copyLink:function(){var n=this;return pe(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,n.$copyText(n.shareLink);case 3:n.$refs.copyButton.$el.focus(),n.copySuccess=!0,n.copied=!0,e.next=13;break;case 8:e.prev=8,e.t0=e.catch(0),n.copySuccess=!1,n.copied=!0,console.error(e.t0);case 13:return e.prev=13,setTimeout((function(){n.copySuccess=!1,n.copied=!1}),4e3),e.finish(13);case 16:case"end":return e.stop()}}),e,null,[[0,8,13,16]])})))()},onPasswordChange:function(n){this.$set(this.share,"newPassword",n)},onPasswordDisable:function(){this.share.password="",this.$delete(this.share,"newPassword"),this.share.id&&this.queueUpdate("password")},onPasswordSubmit:function(){this.hasUnsavedPassword&&(this.share.password=this.share.newPassword.trim(),this.queueUpdate("password"))},onPasswordProtectedByTalkChange:function(){this.hasUnsavedPassword&&(this.share.password=this.share.newPassword.trim()),this.queueUpdate("sendPasswordByTalk","password")},onMenuClose:function(){this.onPasswordSubmit(),this.onNoteSubmit()},onCancel:function(){this.$emit("remove:share",this.share)}}},me=r(53075),ve={};ve.styleTagTransform=H(),ve.setAttributes=I(),ve.insert=R().bind(null,"head"),ve.domAPI=T(),ve.insertStyleElement=N(),k()(me.Z,ve),me.Z&&me.Z.locals&&me.Z.locals;var _e=(0,B.Z)(ge,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("li",{staticClass:"sharing-entry sharing-entry__link",class:{"sharing-entry--share":n.share}},[t("Avatar",{staticClass:"sharing-entry__avatar",attrs:{"is-no-user":!0,"icon-class":n.isEmailShareType?"avatar-link-share icon-mail-white":"avatar-link-share icon-public-white"}}),n._v(" "),t("div",{staticClass:"sharing-entry__desc"},[t("h5",{attrs:{title:n.title}},[n._v("\n\t\t\t"+n._s(n.title)+"\n\t\t")]),n._v(" "),n.subtitle?t("p",[n._v("\n\t\t\t"+n._s(n.subtitle)+"\n\t\t")]):n._e()]),n._v(" "),n.share&&!n.isEmailShareType&&n.share.token?t("Actions",{ref:"copyButton",staticClass:"sharing-entry__copy"},[t("ActionLink",{attrs:{href:n.shareLink,target:"_blank",icon:n.copied&&n.copySuccess?"icon-checkmark-color":"icon-clippy"},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),n.copyLink.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.clipboardTooltip)+"\n\t\t")])],1):n._e(),n._v(" "),n.pending||!n.pendingPassword&&!n.pendingExpirationDate?n.loading?t("div",{staticClass:"icon-loading-small sharing-entry__loading"}):t("Actions",{staticClass:"sharing-entry__actions",attrs:{"menu-align":"right",open:n.open},on:{"update:open":function(e){n.open=e},close:n.onMenuClose}},[n.share?[n.share.canEdit&&n.canReshare?[t("ActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.label,show:n.errors.label,trigger:"manual",defaultContainer:".app-sidebar"},expression:"{\n\t\t\t\t\t\tcontent: errors.label,\n\t\t\t\t\t\tshow: errors.label,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '.app-sidebar'\n\t\t\t\t\t}",modifiers:{auto:!0}}],ref:"label",class:{error:n.errors.label},attrs:{disabled:n.saving,"aria-label":n.t("files_sharing","Share label"),value:void 0!==n.share.newLabel?n.share.newLabel:n.share.label,icon:"icon-edit",maxlength:"255"},on:{"update:value":n.onLabelChange,submit:n.onLabelSubmit}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Share label"))+"\n\t\t\t\t")]),n._v(" "),t("SharePermissionsEditor",{attrs:{"can-reshare":n.canReshare,share:n.share,"file-info":n.fileInfo},on:{"update:share":function(e){n.share=e}}}),n._v(" "),t("ActionSeparator"),n._v(" "),t("ActionCheckbox",{attrs:{checked:n.share.hideDownload,disabled:n.saving},on:{"update:checked":function(e){return n.$set(n.share,"hideDownload",e)},change:function(e){return n.queueUpdate("hideDownload")}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Hide download"))+"\n\t\t\t\t")]),n._v(" "),t("ActionCheckbox",{staticClass:"share-link-password-checkbox",attrs:{checked:n.isPasswordProtected,disabled:n.config.enforcePasswordForPublicLink||n.saving},on:{"update:checked":function(e){n.isPasswordProtected=e},uncheck:n.onPasswordDisable}},[n._v("\n\t\t\t\t\t"+n._s(n.config.enforcePasswordForPublicLink?n.t("files_sharing","Password protection (enforced)"):n.t("files_sharing","Password protect"))+"\n\t\t\t\t")]),n._v(" "),n.isPasswordProtected?t("ActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.password,show:n.errors.password,trigger:"manual",defaultContainer:"#app-sidebar"},expression:"{\n\t\t\t\t\t\tcontent: errors.password,\n\t\t\t\t\t\tshow: errors.password,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}",modifiers:{auto:!0}}],ref:"password",staticClass:"share-link-password",class:{error:n.errors.password},attrs:{disabled:n.saving,required:n.config.enforcePasswordForPublicLink,value:n.hasUnsavedPassword?n.share.newPassword:"***************",icon:"icon-password",autocomplete:"new-password",type:n.hasUnsavedPassword?"text":"password"},on:{"update:value":n.onPasswordChange,submit:n.onPasswordSubmit}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Enter a password"))+"\n\t\t\t\t")]):n._e(),n._v(" "),n.isEmailShareType&&n.passwordExpirationTime?t("ActionText",{attrs:{icon:"icon-info"}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Password expires {passwordExpirationTime}",{passwordExpirationTime:n.passwordExpirationTime}))+"\n\t\t\t\t")]):n.isEmailShareType&&null!==n.passwordExpirationTime?t("ActionText",{attrs:{icon:"icon-error"}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Password expired"))+"\n\t\t\t\t")]):n._e(),n._v(" "),n.isPasswordProtectedByTalkAvailable?t("ActionCheckbox",{staticClass:"share-link-password-talk-checkbox",attrs:{checked:n.isPasswordProtectedByTalk,disabled:!n.canTogglePasswordProtectedByTalkAvailable||n.saving},on:{"update:checked":function(e){n.isPasswordProtectedByTalk=e},change:n.onPasswordProtectedByTalkChange}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Video verification"))+"\n\t\t\t\t")]):n._e(),n._v(" "),t("ActionCheckbox",{staticClass:"share-link-expire-date-checkbox",attrs:{checked:n.hasExpirationDate,disabled:n.config.isDefaultExpireDateEnforced||n.saving},on:{"update:checked":function(e){n.hasExpirationDate=e},uncheck:n.onExpirationDisable}},[n._v("\n\t\t\t\t\t"+n._s(n.config.isDefaultExpireDateEnforced?n.t("files_sharing","Expiration date (enforced)"):n.t("files_sharing","Set expiration date"))+"\n\t\t\t\t")]),n._v(" "),n.hasExpirationDate?t("ActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.expireDate,show:n.errors.expireDate,trigger:"manual",defaultContainer:"#app-sidebar"},expression:"{\n\t\t\t\t\t\tcontent: errors.expireDate,\n\t\t\t\t\t\tshow: errors.expireDate,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}",modifiers:{auto:!0}}],ref:"expireDate",staticClass:"share-link-expire-date",class:{error:n.errors.expireDate},attrs:{disabled:n.saving,lang:n.lang,value:n.share.expireDate,"value-type":"format",icon:"icon-calendar-dark",type:"date","disabled-date":n.disabledDate},on:{"update:value":n.onExpirationChange}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Enter a date"))+"\n\t\t\t\t")]):n._e(),n._v(" "),t("ActionCheckbox",{attrs:{checked:n.hasNote,disabled:n.saving},on:{"update:checked":function(e){n.hasNote=e},uncheck:function(e){return n.queueUpdate("note")}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Note to recipient"))+"\n\t\t\t\t")]),n._v(" "),n.hasNote?t("ActionTextEditable",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.note,show:n.errors.note,trigger:"manual",defaultContainer:"#app-sidebar"},expression:"{\n\t\t\t\t\t\tcontent: errors.note,\n\t\t\t\t\t\tshow: errors.note,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}",modifiers:{auto:!0}}],ref:"note",class:{error:n.errors.note},attrs:{disabled:n.saving,placeholder:n.t("files_sharing","Enter a note for the share recipient"),value:n.share.newNote||n.share.note,icon:"icon-edit"},on:{"update:value":n.onNoteChange,submit:n.onNoteSubmit}}):n._e()]:n._e(),n._v(" "),t("ActionSeparator"),n._v(" "),n._l(n.externalLinkActions,(function(e){return t("ExternalShareAction",{key:e.id,attrs:{id:e.id,action:e,"file-info":n.fileInfo,share:n.share}})})),n._v(" "),n._l(n.externalLegacyLinkActions,(function(e,r){var i=e.icon,a=e.url,s=e.name;return t("ActionLink",{key:r,attrs:{href:a(n.shareLink),icon:i,target:"_blank"}},[n._v("\n\t\t\t\t"+n._s(s)+"\n\t\t\t")])})),n._v(" "),n.share.canDelete?t("ActionButton",{attrs:{icon:"icon-close",disabled:n.saving},on:{click:function(e){return e.preventDefault(),n.onDelete.apply(null,arguments)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Unshare"))+"\n\t\t\t")]):n._e(),n._v(" "),!n.isEmailShareType&&n.canReshare?t("ActionButton",{staticClass:"new-share-link",attrs:{icon:"icon-add"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),n.onNewLinkShare.apply(null,arguments)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Add another link"))+"\n\t\t\t")]):n._e()]:n.canReshare?t("ActionButton",{staticClass:"new-share-link",attrs:{icon:n.loading?"icon-loading-small":"icon-add"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),n.onNewLinkShare.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Create a new share link"))+"\n\t\t")]):n._e()],2):t("Actions",{staticClass:"sharing-entry__actions",attrs:{"menu-align":"right",open:n.open},on:{"update:open":function(e){n.open=e},close:n.onNewLinkShare}},[n.errors.pending?t("ActionText",{class:{error:n.errors.pending},attrs:{icon:"icon-error"}},[n._v("\n\t\t\t"+n._s(n.errors.pending)+"\n\t\t")]):t("ActionText",{attrs:{icon:"icon-info"}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Please enter the following required information before creating the share"))+"\n\t\t")]),n._v(" "),n.pendingPassword?t("ActionText",{attrs:{icon:"icon-password"}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Password protection (enforced)"))+"\n\t\t")]):n.config.enableLinkPasswordByDefault?t("ActionCheckbox",{staticClass:"share-link-password-checkbox",attrs:{checked:n.isPasswordProtected,disabled:n.config.enforcePasswordForPublicLink||n.saving},on:{"update:checked":function(e){n.isPasswordProtected=e},uncheck:n.onPasswordDisable}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Password protection"))+"\n\t\t")]):n._e(),n._v(" "),n.pendingPassword||n.share.password?t("ActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.password,show:n.errors.password,trigger:"manual",defaultContainer:"#app-sidebar"},expression:"{\n\t\t\t\tcontent: errors.password,\n\t\t\t\tshow: errors.password,\n\t\t\t\ttrigger: 'manual',\n\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t}",modifiers:{auto:!0}}],staticClass:"share-link-password",attrs:{value:n.share.password,disabled:n.saving,required:n.config.enableLinkPasswordByDefault||n.config.enforcePasswordForPublicLink,minlength:n.isPasswordPolicyEnabled&&n.config.passwordPolicy.minLength,icon:"",autocomplete:"new-password"},on:{"update:value":function(e){return n.$set(n.share,"password",e)},submit:n.onNewLinkShare}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Enter a password"))+"\n\t\t")]):n._e(),n._v(" "),n.pendingExpirationDate?t("ActionText",{attrs:{icon:"icon-calendar-dark"}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Expiration date (enforced)"))+"\n\t\t")]):n._e(),n._v(" "),n.pendingExpirationDate?t("ActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.expireDate,show:n.errors.expireDate,trigger:"manual",defaultContainer:"#app-sidebar"},expression:"{\n\t\t\t\tcontent: errors.expireDate,\n\t\t\t\tshow: errors.expireDate,\n\t\t\t\ttrigger: 'manual',\n\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t}",modifiers:{auto:!0}}],staticClass:"share-link-expire-date",attrs:{disabled:n.saving,lang:n.lang,icon:"",type:"date","value-type":"format","disabled-date":n.disabledDate},model:{value:n.share.expireDate,callback:function(e){n.$set(n.share,"expireDate",e)},expression:"share.expireDate"}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Enter a date"))+"\n\t\t")]):n._e(),n._v(" "),t("ActionButton",{attrs:{icon:"icon-checkmark"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),n.onNewLinkShare.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Create share"))+"\n\t\t")]),n._v(" "),t("ActionButton",{attrs:{icon:"icon-close"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),n.onCancel.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Cancel"))+"\n\t\t")])],1)],1)}),[],!1,null,"a63eeae4",null),Ae={name:"SharingLinkList",components:{SharingEntryLink:_e.exports},mixins:[_],props:{fileInfo:{type:Object,default:function(){},required:!0},shares:{type:Array,default:function(){return[]},required:!0},canReshare:{type:Boolean,required:!0}},data:function(){return{canLinkShare:OC.getCapabilities().files_sharing.public.enabled}},computed:{hasLinkShares:function(){var n=this;return this.shares.filter((function(e){return e.type===n.SHARE_TYPES.SHARE_TYPE_LINK})).length>0},hasShares:function(){return this.shares.length>0}},methods:{addShare:function(n,e){this.shares.unshift(n),this.awaitForShare(n,e)},awaitForShare:function(n,e){var t=this;this.$nextTick((function(){var r=t.$children.find((function(e){return e.share===n}));r&&e(r)}))},removeShare:function(n){var e=this.shares.findIndex((function(e){return e===n}));this.shares.splice(e,1)}}},ye=(0,B.Z)(Ae,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return n.canLinkShare?t("ul",{staticClass:"sharing-link-list"},[!n.hasLinkShares&&n.canReshare?t("SharingEntryLink",{attrs:{"can-reshare":n.canReshare,"file-info":n.fileInfo},on:{"add:share":n.addShare}}):n._e(),n._v(" "),n.hasShares?n._l(n.shares,(function(e,r){return t("SharingEntryLink",{key:e.id,attrs:{"can-reshare":n.canReshare,share:n.shares[r],"file-info":n.fileInfo},on:{"update:share":[function(e){return n.$set(n.shares,r,e)},function(e){return n.awaitForShare.apply(void 0,arguments)}],"add:share":function(e){return n.addShare.apply(void 0,arguments)},"remove:share":n.removeShare}})})):n._e()],2):n._e()}),[],!1,null,null,null),Ee=ye.exports;function we(n){return we="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},we(n)}var be={name:"SharingEntry",components:{Actions:w(),ActionButton:bn(),ActionCheckbox:Fn(),ActionInput:Zn(),ActionTextEditable:Qn(),Avatar:h()},directives:{Tooltip:S()},mixins:[Dn],data:function(){return{permissionsEdit:OC.PERMISSION_UPDATE,permissionsCreate:OC.PERMISSION_CREATE,permissionsDelete:OC.PERMISSION_DELETE,permissionsRead:OC.PERMISSION_READ,permissionsShare:OC.PERMISSION_SHARE}},computed:{title:function(){var n=this.share.shareWithDisplayName;return this.share.type===this.SHARE_TYPES.SHARE_TYPE_GROUP?n+=" (".concat(t("files_sharing","group"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_ROOM?n+=" (".concat(t("files_sharing","conversation"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE?n+=" (".concat(t("files_sharing","remote"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP?n+=" (".concat(t("files_sharing","remote group"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_GUEST&&(n+=" (".concat(t("files_sharing","guest"),")")),n},tooltip:function(){if(this.share.owner!==this.share.uidFileOwner){var n={user:this.share.shareWithDisplayName,owner:this.share.ownerDisplayName};return this.share.type===this.SHARE_TYPES.SHARE_TYPE_GROUP?t("files_sharing","Shared with the group {user} by {owner}",n):this.share.type===this.SHARE_TYPES.SHARE_TYPE_ROOM?t("files_sharing","Shared with the conversation {user} by {owner}",n):t("files_sharing","Shared with {user} by {owner}",n)}return null},canHaveNote:function(){return!this.isRemote},isRemote:function(){return this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE||this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP},canSetEdit:function(){return this.fileInfo.sharePermissions&OC.PERMISSION_UPDATE||this.canEdit},canSetCreate:function(){return this.fileInfo.sharePermissions&OC.PERMISSION_CREATE||this.canCreate},canSetDelete:function(){return this.fileInfo.sharePermissions&OC.PERMISSION_DELETE||this.canDelete},canSetReshare:function(){return this.fileInfo.sharePermissions&OC.PERMISSION_SHARE||this.canReshare},canEdit:{get:function(){return this.share.hasUpdatePermission},set:function(n){this.updatePermissions({isEditChecked:n})}},canCreate:{get:function(){return this.share.hasCreatePermission},set:function(n){this.updatePermissions({isCreateChecked:n})}},canDelete:{get:function(){return this.share.hasDeletePermission},set:function(n){this.updatePermissions({isDeleteChecked:n})}},canReshare:{get:function(){return this.share.hasSharePermission},set:function(n){this.updatePermissions({isReshareChecked:n})}},hasRead:{get:function(){return this.share.hasReadPermission}},isFolder:function(){return"dir"===this.fileInfo.type},hasExpirationDate:{get:function(){return this.config.isDefaultInternalExpireDateEnforced||!!this.share.expireDate},set:function(n){this.share.expireDate=n?""!==this.config.defaultInternalExpirationDateString?this.config.defaultInternalExpirationDateString:moment().format("YYYY-MM-DD"):""}},dateMaxEnforced:function(){return this.isRemote?this.config.isDefaultRemoteExpireDateEnforced&&moment().add(1+this.config.defaultRemoteExpireDate,"days"):this.config.isDefaultInternalExpireDateEnforced&&moment().add(1+this.config.defaultInternalExpireDate,"days")},hasStatus:function(){return this.share.type===this.SHARE_TYPES.SHARE_TYPE_USER&&"object"===we(this.share.status)&&!Array.isArray(this.share.status)}},methods:{updatePermissions:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=n.isEditChecked,t=void 0===e?this.canEdit:e,r=n.isCreateChecked,i=void 0===r?this.canCreate:r,a=n.isDeleteChecked,s=void 0===a?this.canDelete:a,o=n.isReshareChecked,c=void 0===o?this.canReshare:o,l=0|(this.hasRead?this.permissionsRead:0)|(i?this.permissionsCreate:0)|(s?this.permissionsDelete:0)|(t?this.permissionsEdit:0)|(c?this.permissionsShare:0);this.share.permissions=l,this.queueUpdate("permissions")},onMenuClose:function(){this.onNoteSubmit()}}},Se=be,Ce=r(4623),xe={};xe.styleTagTransform=H(),xe.setAttributes=I(),xe.insert=R().bind(null,"head"),xe.domAPI=T(),xe.insertStyleElement=N(),k()(Ce.Z,xe),Ce.Z&&Ce.Z.locals&&Ce.Z.locals;var ke=(0,B.Z)(Se,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("li",{staticClass:"sharing-entry"},[t("Avatar",{staticClass:"sharing-entry__avatar",attrs:{"is-no-user":n.share.type!==n.SHARE_TYPES.SHARE_TYPE_USER,user:n.share.shareWith,"display-name":n.share.shareWithDisplayName,"tooltip-message":n.share.type===n.SHARE_TYPES.SHARE_TYPE_USER?n.share.shareWith:"","menu-position":"left",url:n.share.shareWithAvatar}}),n._v(" "),t(n.share.shareWithLink?"a":"div",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:n.tooltip,expression:"tooltip",modifiers:{auto:!0}}],tag:"component",staticClass:"sharing-entry__desc",attrs:{href:n.share.shareWithLink}},[t("h5",[n._v(n._s(n.title)),n.isUnique?n._e():t("span",{staticClass:"sharing-entry__desc-unique"},[n._v(" ("+n._s(n.share.shareWithDisplayNameUnique)+")")])]),n._v(" "),n.hasStatus?t("p",[t("span",[n._v(n._s(n.share.status.icon||""))]),n._v(" "),t("span",[n._v(n._s(n.share.status.message||""))])]):n._e()]),n._v(" "),t("Actions",{staticClass:"sharing-entry__actions",attrs:{"menu-align":"right"},on:{close:n.onMenuClose}},[n.share.canEdit?[t("ActionCheckbox",{ref:"canEdit",attrs:{checked:n.canEdit,value:n.permissionsEdit,disabled:n.saving||!n.canSetEdit},on:{"update:checked":function(e){n.canEdit=e}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Allow editing"))+"\n\t\t\t")]),n._v(" "),n.isFolder?t("ActionCheckbox",{ref:"canCreate",attrs:{checked:n.canCreate,value:n.permissionsCreate,disabled:n.saving||!n.canSetCreate},on:{"update:checked":function(e){n.canCreate=e}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Allow creating"))+"\n\t\t\t")]):n._e(),n._v(" "),n.isFolder?t("ActionCheckbox",{ref:"canDelete",attrs:{checked:n.canDelete,value:n.permissionsDelete,disabled:n.saving||!n.canSetDelete},on:{"update:checked":function(e){n.canDelete=e}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Allow deleting"))+"\n\t\t\t")]):n._e(),n._v(" "),n.config.isResharingAllowed?t("ActionCheckbox",{ref:"canReshare",attrs:{checked:n.canReshare,value:n.permissionsShare,disabled:n.saving||!n.canSetReshare},on:{"update:checked":function(e){n.canReshare=e}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Allow resharing"))+"\n\t\t\t")]):n._e(),n._v(" "),t("ActionCheckbox",{attrs:{checked:n.hasExpirationDate,disabled:n.config.isDefaultInternalExpireDateEnforced||n.saving},on:{"update:checked":function(e){n.hasExpirationDate=e},uncheck:n.onExpirationDisable}},[n._v("\n\t\t\t\t"+n._s(n.config.isDefaultInternalExpireDateEnforced?n.t("files_sharing","Expiration date enforced"):n.t("files_sharing","Set expiration date"))+"\n\t\t\t")]),n._v(" "),n.hasExpirationDate?t("ActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.expireDate,show:n.errors.expireDate,trigger:"manual"},expression:"{\n\t\t\t\t\tcontent: errors.expireDate,\n\t\t\t\t\tshow: errors.expireDate,\n\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t}",modifiers:{auto:!0}}],ref:"expireDate",class:{error:n.errors.expireDate},attrs:{disabled:n.saving,lang:n.lang,value:n.share.expireDate,"value-type":"format",icon:"icon-calendar-dark",type:"date","disabled-date":n.disabledDate},on:{"update:value":n.onExpirationChange}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Enter a date"))+"\n\t\t\t")]):n._e(),n._v(" "),n.canHaveNote?[t("ActionCheckbox",{attrs:{checked:n.hasNote,disabled:n.saving},on:{"update:checked":function(e){n.hasNote=e},uncheck:function(e){return n.queueUpdate("note")}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Note to recipient"))+"\n\t\t\t\t")]),n._v(" "),n.hasNote?t("ActionTextEditable",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.note,show:n.errors.note,trigger:"manual"},expression:"{\n\t\t\t\t\t\tcontent: errors.note,\n\t\t\t\t\t\tshow: errors.note,\n\t\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t\t}",modifiers:{auto:!0}}],ref:"note",class:{error:n.errors.note},attrs:{disabled:n.saving,value:n.share.newNote||n.share.note,icon:"icon-edit"},on:{"update:value":n.onNoteChange,submit:n.onNoteSubmit}}):n._e()]:n._e()]:n._e(),n._v(" "),n.share.canDelete?t("ActionButton",{attrs:{icon:"icon-close",disabled:n.saving},on:{click:function(e){return e.preventDefault(),n.onDelete.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Unshare"))+"\n\t\t")]):n._e()],2)],1)}),[],!1,null,"11f6b64f",null);function Pe(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=new Array(e);t<e;t++)r[t]=n[t];return r}var Te={name:"SharingList",components:{SharingEntry:ke.exports},mixins:[_],props:{fileInfo:{type:Object,default:function(){},required:!0},shares:{type:Array,default:function(){return[]},required:!0}},computed:{hasShares:function(){return 0===this.shares.length},isUnique:function(){var n=this;return function(e){return(t=n.shares,function(n){if(Array.isArray(n))return Pe(n)}(t)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(t)||function(n,e){if(n){if("string"==typeof n)return Pe(n,e);var t=Object.prototype.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?Pe(n,e):void 0}}(t)||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.")}()).filter((function(t){return e.type===n.SHARE_TYPES.SHARE_TYPE_USER&&e.shareWithDisplayName===t.shareWithDisplayName})).length<=1;var t}}},methods:{removeShare:function(n){var e=this.shares.findIndex((function(e){return e===n}));this.shares.splice(e,1)}}},De=(0,B.Z)(Te,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("ul",{staticClass:"sharing-sharee-list"},n._l(n.shares,(function(e){return t("SharingEntry",{key:e.id,attrs:{"file-info":n.fileInfo,share:e,"is-unique":n.isUnique(e)},on:{"remove:share":n.removeShare}})})),1)}),[],!1,null,null,null).exports;function Re(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=new Array(e);t<e;t++)r[t]=n[t];return r}function Oe(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function Ie(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){Oe(a,r,i,s,o,"next",n)}function o(n){Oe(a,r,i,s,o,"throw",n)}s(void 0)}))}}var Le={name:"SharingTab",components:{Avatar:h(),CollectionList:c.G,SharingEntryInternal:K,SharingEntrySimple:j,SharingInherited:Wn,SharingInput:En,SharingLinkList:Ee,SharingList:De},mixins:[_],data:function(){return{config:new p,error:"",expirationInterval:null,loading:!0,fileInfo:null,reshare:null,sharedWithMe:{},shares:[],linkShares:[],sections:OCA.Sharing.ShareTabSections.getSections()}},computed:{isSharedWithMe:function(){return Object.keys(this.sharedWithMe).length>0},canReshare:function(){return!!(this.fileInfo.permissions&OC.PERMISSION_SHARE)||!!(this.reshare&&this.reshare.hasSharePermission&&this.config.isResharingAllowed)}},methods:{update:function(n){var e=this;return Ie(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:e.fileInfo=n,e.resetState(),e.getShares();case 3:case"end":return t.stop()}}),t)})))()},getShares:function(){var n=this;return Ie(regeneratorRuntime.mark((function e(){var r,i,a,s,o,c,u,h,f;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,n.loading=!0,r=(0,l.generateOcsUrl)("apps/files_sharing/api/v1/shares"),i="json",a=(n.fileInfo.path+"/"+n.fileInfo.name).replace("//","/"),s=d.default.get(r,{params:{format:i,path:a,reshares:!0}}),o=d.default.get(r,{params:{format:i,path:a,shared_with_me:!0}}),e.next=9,Promise.all([s,o]);case 9:c=e.sent,g=2,u=function(n){if(Array.isArray(n))return n}(p=c)||function(n,e){var t=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=t){var r,i,a=[],s=!0,o=!1;try{for(t=t.call(n);!(s=(r=t.next()).done)&&(a.push(r.value),!e||a.length!==e);s=!0);}catch(n){o=!0,i=n}finally{try{s||null==t.return||t.return()}finally{if(o)throw i}}return a}}(p,g)||function(n,e){if(n){if("string"==typeof n)return Re(n,e);var t=Object.prototype.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?Re(n,e):void 0}}(p,g)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),h=u[0],f=u[1],n.loading=!1,n.processSharedWithMe(f),n.processShares(h),e.next=23;break;case 18:e.prev=18,e.t0=e.catch(0),n.error=t("files_sharing","Unable to load the shares list"),n.loading=!1,console.error("Error loading the shares list",e.t0);case 23:case"end":return e.stop()}var p,g}),e,null,[[0,18]])})))()},resetState:function(){clearInterval(this.expirationInterval),this.loading=!0,this.error="",this.sharedWithMe={},this.shares=[],this.linkShares=[]},updateExpirationSubtitle:function(n){var e=moment(n.expireDate).unix();this.$set(this.sharedWithMe,"subtitle",t("files_sharing","Expires {relativetime}",{relativetime:OC.Util.relativeModifiedDate(1e3*e)})),moment().unix()>e&&(clearInterval(this.expirationInterval),this.$set(this.sharedWithMe,"subtitle",t("files_sharing","this share just expired.")))},processShares:function(n){var e=this,t=n.data;if(t.ocs&&t.ocs.data&&t.ocs.data.length>0){var r=t.ocs.data.map((function(n){return new v(n)})).sort((function(n,e){return e.createdTime-n.createdTime}));this.linkShares=r.filter((function(n){return n.type===e.SHARE_TYPES.SHARE_TYPE_LINK||n.type===e.SHARE_TYPES.SHARE_TYPE_EMAIL})),this.shares=r.filter((function(n){return n.type!==e.SHARE_TYPES.SHARE_TYPE_LINK&&n.type!==e.SHARE_TYPES.SHARE_TYPE_EMAIL})),console.debug("Processed",this.linkShares.length,"link share(s)"),console.debug("Processed",this.shares.length,"share(s)")}},processSharedWithMe:function(n){var e=n.data;if(e.ocs&&e.ocs.data&&e.ocs.data[0]){var r=new v(e),i=function(n){return n.type===g.D.SHARE_TYPE_GROUP?t("files_sharing","Shared with you and the group {group} by {owner}",{group:n.shareWithDisplayName,owner:n.ownerDisplayName},void 0,{escape:!1}):n.type===g.D.SHARE_TYPE_CIRCLE?t("files_sharing","Shared with you and {circle} by {owner}",{circle:n.shareWithDisplayName,owner:n.ownerDisplayName},void 0,{escape:!1}):n.type===g.D.SHARE_TYPE_ROOM?n.shareWithDisplayName?t("files_sharing","Shared with you and the conversation {conversation} by {owner}",{conversation:n.shareWithDisplayName,owner:n.ownerDisplayName},void 0,{escape:!1}):t("files_sharing","Shared with you in a conversation by {owner}",{owner:n.ownerDisplayName},void 0,{escape:!1}):t("files_sharing","Shared with you by {owner}",{owner:n.ownerDisplayName},void 0,{escape:!1})}(r),a=r.ownerDisplayName,s=r.owner;this.sharedWithMe={displayName:a,title:i,user:s},this.reshare=r,r.expireDate&&moment(r.expireDate).unix()>moment().unix()&&(this.updateExpirationSubtitle(r),this.expirationInterval=setInterval(this.updateExpirationSubtitle,1e4,r))}else this.fileInfo&&void 0!==this.fileInfo.shareOwnerId&&this.fileInfo.shareOwnerId!==OC.currentUser&&(this.sharedWithMe={displayName:this.fileInfo.shareOwner,title:t("files_sharing","Shared with you by {owner}",{owner:this.fileInfo.shareOwner},void 0,{escape:!1}),user:this.fileInfo.shareOwnerId})},addShare:function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){};n.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL?this.linkShares.unshift(n):this.shares.unshift(n),this.awaitForShare(n,e)},awaitForShare:function(n,e){var t=this.$refs.shareList;n.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL&&(t=this.$refs.linkShareList),this.$nextTick((function(){var r=t.$children.find((function(e){return e.share===n}));r&&e(r)}))}}},Ne=Le,Ye=(0,B.Z)(Ne,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("div",{class:{"icon-loading":n.loading}},[n.error?t("div",{staticClass:"emptycontent"},[t("div",{staticClass:"icon icon-error"}),n._v(" "),t("h2",[n._v(n._s(n.error))])]):[n.isSharedWithMe?t("SharingEntrySimple",n._b({staticClass:"sharing-entry__reshare",scopedSlots:n._u([{key:"avatar",fn:function(){return[t("Avatar",{staticClass:"sharing-entry__avatar",attrs:{user:n.sharedWithMe.user,"display-name":n.sharedWithMe.displayName,"tooltip-message":""}})]},proxy:!0}],null,!1,1643724538)},"SharingEntrySimple",n.sharedWithMe,!1)):n._e(),n._v(" "),n.loading?n._e():t("SharingInput",{attrs:{"can-reshare":n.canReshare,"file-info":n.fileInfo,"link-shares":n.linkShares,reshare:n.reshare,shares:n.shares},on:{"add:share":n.addShare}}),n._v(" "),n.loading?n._e():t("SharingLinkList",{ref:"linkShareList",attrs:{"can-reshare":n.canReshare,"file-info":n.fileInfo,shares:n.linkShares}}),n._v(" "),n.loading?n._e():t("SharingList",{ref:"shareList",attrs:{shares:n.shares,"file-info":n.fileInfo}}),n._v(" "),n.canReshare&&!n.loading?t("SharingInherited",{attrs:{"file-info":n.fileInfo}}):n._e(),n._v(" "),t("SharingEntryInternal",{attrs:{"file-info":n.fileInfo}}),n._v(" "),n.fileInfo?t("CollectionList",{attrs:{id:""+n.fileInfo.id,type:"file",name:n.fileInfo.name}}):n._e(),n._v(" "),n._l(n.sections,(function(e,r){return t("div",{key:r,ref:"section-"+r,refInFor:!0,staticClass:"sharingTab__additionalContent"},[t(e(n.$refs["section-"+r],n.fileInfo),{tag:"component",attrs:{"file-info":n.fileInfo}})],1)}))]],2)}),[],!1,null,null,null).exports;function He(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var Ue=function(){function n(){var e,t;!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),t=void 0,(e="_state")in this?Object.defineProperty(this,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):this[e]=t,this._state={},this._state.results=[],console.debug("OCA.Sharing.ShareSearch initialized")}var e,t;return e=n,(t=[{key:"state",get:function(){return this._state}},{key:"addNewResult",value:function(n){return""!==n.displayName.trim()&&"function"==typeof n.handler?(this._state.results.push(n),!0):(console.error("Invalid search result provided",n),!1)}}])&&He(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}();function Me(n){return Me="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},Me(n)}function Be(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var je=function(){function n(){var e,t;!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),t=void 0,(e="_state")in this?Object.defineProperty(this,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):this[e]=t,this._state={},this._state.actions=[],console.debug("OCA.Sharing.ExternalLinkActions initialized")}var e,t;return e=n,(t=[{key:"state",get:function(){return this._state}},{key:"registerAction",value:function(n){return console.warn("OCA.Sharing.ExternalLinkActions is deprecated, use OCA.Sharing.ExternalShareAction instead"),"object"===Me(n)&&n.icon&&n.name&&n.url?(this._state.actions.push(n),!0):(console.error("Invalid action provided",n),!1)}}])&&Be(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}();function We(n){return We="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},We(n)}function qe(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var Fe=function(){function n(){var e,t;!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),t=void 0,(e="_state")in this?Object.defineProperty(this,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):this[e]=t,this._state={},this._state.actions=[],console.debug("OCA.Sharing.ExternalShareActions initialized")}var e,t;return e=n,(t=[{key:"state",get:function(){return this._state}},{key:"registerAction",value:function(n){return"object"===We(n)&&"string"==typeof n.id&&"function"==typeof n.data&&Array.isArray(n.shareType)&&"object"===We(n.handlers)&&Object.values(n.handlers).every((function(n){return"function"==typeof n}))?this._state.actions.findIndex((function(e){return e.id===n.id}))>-1?(console.error("An action with the same id ".concat(n.id," already exists"),n),!1):(this._state.actions.push(n),!0):(console.error("Invalid action provided",n),!1)}}])&&qe(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}();function $e(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var Ze=function(){function n(){var e,t;!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),t=void 0,(e="_sections")in this?Object.defineProperty(this,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):this[e]=t,this._sections=[]}var e,t;return e=n,(t=[{key:"registerSection",value:function(n){this._sections.push(n)}},{key:"getSections",value:function(){return this._sections}}])&&$e(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}();function Ge(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}window.OCA.Sharing||(window.OCA.Sharing={}),Object.assign(window.OCA.Sharing,{ShareSearch:new Ue}),Object.assign(window.OCA.Sharing,{ExternalLinkActions:new je}),Object.assign(window.OCA.Sharing,{ExternalShareActions:new Fe}),Object.assign(window.OCA.Sharing,{ShareTabSections:new Ze}),i.default.prototype.t=o.translate,i.default.prototype.n=o.translatePlural,i.default.use(s());var Ke=i.default.extend(Ye),Ve=null;window.addEventListener("DOMContentLoaded",(function(){OCA.Files&&OCA.Files.Sidebar&&OCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({id:"sharing",name:(0,o.translate)("files_sharing","Sharing"),icon:"icon-share",mount:function(n,e,t){return(r=regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return Ve&&Ve.$destroy(),Ve=new Ke({parent:t}),r.next=4,Ve.update(e);case 4:Ve.$mount(n);case 5:case"end":return r.stop()}}),r)})),function(){var n=this,e=arguments;return new Promise((function(t,i){var a=r.apply(n,e);function s(n){Ge(a,t,i,s,o,"next",n)}function o(n){Ge(a,t,i,s,o,"throw",n)}s(void 0)}))})();var r},update:function(n){Ve.update(n)},destroy:function(){Ve.$destroy(),Ve=null}}))}))},32016:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".error[data-v-3d9cb67e] .action-checkbox__label:before{border:1px solid var(--color-error)}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharePermissionsEditor.vue"],names:[],mappings:"AA+RC,wDACC,mCAAA",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.error {\n\t::v-deep .action-checkbox__label:before {\n\t\tborder: 1px solid var(--color-error);\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},4623:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry[data-v-11f6b64f]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-11f6b64f]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-11f6b64f]{color:var(--color-text-maxcontrast)}.sharing-entry__desc-unique[data-v-11f6b64f]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-11f6b64f]{margin-left:auto}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntry.vue"],names:[],mappings:"AAsZA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAED,6CACC,mCAAA,CAGF,yCACC,gBAAA",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t\t&-unique {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},71296:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry[data-v-29845767]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-29845767]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-29845767]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-29845767]{margin-left:auto}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryInherited.vue"],names:[],mappings:"AAgGA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAGF,yCACC,gBAAA",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.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},52475:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry__internal .avatar-external[data-v-854dc2c6]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}.sharing-entry__internal .icon-checkmark-color[data-v-854dc2c6]{opacity:1}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryInternal.vue"],names:[],mappings:"AAwGC,2DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA,CAED,gEACC,SAAA",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.sharing-entry__internal {\n\t.avatar-external {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},53075:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry[data-v-a63eeae4]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-a63eeae4]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em;overflow:hidden}.sharing-entry__desc h5[data-v-a63eeae4]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.sharing-entry__desc p[data-v-a63eeae4]{color:var(--color-text-maxcontrast)}.sharing-entry:not(.sharing-entry--share) .sharing-entry__actions .new-share-link[data-v-a63eeae4]{border-top:1px solid var(--color-border)}.sharing-entry[data-v-a63eeae4] .avatar-link-share{background-color:var(--color-primary)}.sharing-entry .sharing-entry__action--public-upload[data-v-a63eeae4]{border-bottom:1px solid var(--color-border)}.sharing-entry__loading[data-v-a63eeae4]{width:44px;height:44px;margin:0;padding:14px;margin-left:auto}.sharing-entry .action-item[data-v-a63eeae4]{margin-left:auto}.sharing-entry .action-item~.action-item[data-v-a63eeae4],.sharing-entry .action-item~.sharing-entry__loading[data-v-a63eeae4]{margin-left:0}.sharing-entry .icon-checkmark-color[data-v-a63eeae4]{opacity:1}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryLink.vue"],names:[],mappings:"AAy2BA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,eAAA,CAEA,yCACC,sBAAA,CACA,eAAA,CACA,kBAAA,CAED,wCACC,mCAAA,CAKD,mGACC,wCAAA,CAIF,oDACC,qCAAA,CAGD,sEACC,2CAAA,CAGD,yCACC,UAAA,CACA,WAAA,CACA,QAAA,CACA,YAAA,CACA,gBAAA,CAKD,6CACC,gBAAA,CACA,+HAEC,aAAA,CAIF,sDACC,SAAA",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\toverflow: hidden;\n\n\t\th5 {\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow: hidden;\n\t\t\twhite-space: nowrap;\n\t\t}\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\n\t&:not(.sharing-entry--share) &__actions {\n\t\t.new-share-link {\n\t\t\tborder-top: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t::v-deep .avatar-link-share {\n\t\tbackground-color: var(--color-primary);\n\t}\n\n\t.sharing-entry__action--public-upload {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\n\t&__loading {\n\t\twidth: 44px;\n\t\theight: 44px;\n\t\tmargin: 0;\n\t\tpadding: 14px;\n\t\tmargin-left: auto;\n\t}\n\n\t// put menus to the left\n\t// but only the first one\n\t.action-item {\n\t\tmargin-left: auto;\n\t\t~ .action-item,\n\t\t~ .sharing-entry__loading {\n\t\t\tmargin-left: 0;\n\t\t}\n\t}\n\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},35917:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry[data-v-1436bf4a]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-1436bf4a]{padding:8px;line-height:1.2em;position:relative;flex:1 1;min-width:0}.sharing-entry__desc h5[data-v-1436bf4a]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:inherit}.sharing-entry__desc p[data-v-1436bf4a]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-1436bf4a]{margin-left:auto !important}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntrySimple.vue"],names:[],mappings:"AA4EA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,WAAA,CACA,iBAAA,CACA,iBAAA,CACA,QAAA,CACA,WAAA,CACA,yCACC,kBAAA,CACA,sBAAA,CACA,eAAA,CACA,iBAAA,CAED,wCACC,mCAAA,CAGF,yCACC,2BAAA",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.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tposition: relative;\n\t\tflex: 1 1;\n\t\tmin-width: 0;\n\t\th5 {\n\t\t\twhite-space: nowrap;\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow: hidden;\n\t\t\tmax-width: inherit;\n\t\t}\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto !important;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},84721:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-input{width:100%;margin:10px 0}.sharing-input .multiselect__option span[lookup] .avatardiv{background-image:var(--icon-search-fff);background-repeat:no-repeat;background-position:center;background-color:var(--color-text-maxcontrast) !important}.sharing-input .multiselect__option span[lookup] .avatardiv div{display:none}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingInput.vue"],names:[],mappings:"AA0gBA,eACC,UAAA,CACA,aAAA,CAKE,4DACC,uCAAA,CACA,2BAAA,CACA,0BAAA,CACA,yDAAA,CACA,gEACC,YAAA",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-input {\n\twidth: 100%;\n\tmargin: 10px 0;\n\n\t// properly style the lookup entry\n\t.multiselect__option {\n\t\tspan[lookup] {\n\t\t\t.avatardiv {\n\t\t\t\tbackground-image: var(--icon-search-fff);\n\t\t\t\tbackground-repeat: no-repeat;\n\t\t\t\tbackground-position: center;\n\t\t\t\tbackground-color: var(--color-text-maxcontrast) !important;\n\t\t\t\tdiv {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},93591:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry__inherited .avatar-shared[data-v-49ffd834]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}","",{version:3,sources:["webpack://./apps/files_sharing/src/views/SharingInherited.vue"],names:[],mappings:"AA6JC,0DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA",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.sharing-entry__inherited {\n\t.avatar-shared {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s}},r={};function i(n){var t=r[n];if(void 0!==t)return t.exports;var a=r[n]={id:n,loaded:!1,exports:{}};return e[n].call(a.exports,a,a.exports,i),a.loaded=!0,a.exports}i.m=e,i.amdD=function(){throw new Error("define cannot be used indirect")},i.amdO={},n=[],i.O=function(e,t,r,a){if(!t){var s=1/0;for(u=0;u<n.length;u++){t=n[u][0],r=n[u][1],a=n[u][2];for(var o=!0,c=0;c<t.length;c++)(!1&a||s>=a)&&Object.keys(i.O).every((function(n){return i.O[n](t[c])}))?t.splice(c--,1):(o=!1,a<s&&(s=a));if(o){n.splice(u--,1);var l=r();void 0!==l&&(e=l)}}return e}a=a||0;for(var u=n.length;u>0&&n[u-1][2]>a;u--)n[u]=n[u-1];n[u]=[t,r,a]},i.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return i.d(e,{a:e}),e},i.d=function(n,e){for(var t in e)i.o(e,t)&&!i.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:e[t]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),i.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},i.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},i.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n},i.j=7870,function(){i.b=document.baseURI||self.location.href;var n={7870:0};i.O.j=function(e){return 0===n[e]};var e=function(e,t){var r,a,s=t[0],o=t[1],c=t[2],l=0;if(s.some((function(e){return 0!==n[e]}))){for(r in o)i.o(o,r)&&(i.m[r]=o[r]);if(c)var u=c(i)}for(e&&e(t);l<s.length;l++)a=s[l],i.o(n,a)&&n[a]&&n[a][0](),n[a]=0;return i.O(u)},t=self.webpackChunknextcloud=self.webpackChunknextcloud||[];t.forEach(e.bind(null,0)),t.push=e.bind(null,t.push.bind(t))}();var a=i.O(void 0,[7874],(function(){return i(13610)}));a=i.O(a)}();
-//# sourceMappingURL=files_sharing-files_sharing_tab.js.map?v=e2141f7c5adfd38162b4 \ No newline at end of file
+!function(){"use strict";var n,e={13610:function(n,e,r){var i=r(20144),a=r(72268),s=r.n(a),o=r(9944),c=r(1794),l=r(79753),u=r(28017),h=r.n(u),d=r(4820);function f(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var p=function(){function n(){!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n)}var e,t;return e=n,(t=[{key:"isPublicUploadEnabled",get:function(){return document.getElementById("filestable")&&"yes"===document.getElementById("filestable").dataset.allowPublicUpload}},{key:"isShareWithLinkAllowed",get:function(){return document.getElementById("allowShareWithLink")&&"yes"===document.getElementById("allowShareWithLink").value}},{key:"federatedShareDocLink",get:function(){return OC.appConfig.core.federatedCloudShareDoc}},{key:"defaultExpirationDateString",get:function(){var n="";if(this.isDefaultExpireDateEnabled){var e=window.moment.utc(),t=this.defaultExpireDate;e.add(t,"days"),n=e.format("YYYY-MM-DD")}return n}},{key:"defaultInternalExpirationDateString",get:function(){var n="";if(this.isDefaultInternalExpireDateEnabled){var e=window.moment.utc(),t=this.defaultInternalExpireDate;e.add(t,"days"),n=e.format("YYYY-MM-DD")}return n}},{key:"defaultRemoteExpirationDateString",get:function(){var n="";if(this.isDefaultRemoteExpireDateEnabled){var e=window.moment.utc(),t=this.defaultRemoteExpireDate;e.add(t,"days"),n=e.format("YYYY-MM-DD")}return n}},{key:"enforcePasswordForPublicLink",get:function(){return!0===OC.appConfig.core.enforcePasswordForPublicLink}},{key:"enableLinkPasswordByDefault",get:function(){return!0===OC.appConfig.core.enableLinkPasswordByDefault}},{key:"isDefaultExpireDateEnforced",get:function(){return!0===OC.appConfig.core.defaultExpireDateEnforced}},{key:"isDefaultExpireDateEnabled",get:function(){return!0===OC.appConfig.core.defaultExpireDateEnabled}},{key:"isDefaultInternalExpireDateEnforced",get:function(){return!0===OC.appConfig.core.defaultInternalExpireDateEnforced}},{key:"isDefaultRemoteExpireDateEnforced",get:function(){return!0===OC.appConfig.core.defaultRemoteExpireDateEnforced}},{key:"isDefaultInternalExpireDateEnabled",get:function(){return!0===OC.appConfig.core.defaultInternalExpireDateEnabled}},{key:"isRemoteShareAllowed",get:function(){return!0===OC.appConfig.core.remoteShareAllowed}},{key:"isMailShareAllowed",get:function(){var n,e,t,r=OC.getCapabilities();return void 0!==(null==r||null===(n=r.files_sharing)||void 0===n?void 0:n.sharebymail)&&!0===(null==r||null===(e=r.files_sharing)||void 0===e||null===(t=e.public)||void 0===t?void 0:t.enabled)}},{key:"defaultExpireDate",get:function(){return OC.appConfig.core.defaultExpireDate}},{key:"defaultInternalExpireDate",get:function(){return OC.appConfig.core.defaultInternalExpireDate}},{key:"defaultRemoteExpireDate",get:function(){return OC.appConfig.core.defaultRemoteExpireDate}},{key:"isResharingAllowed",get:function(){return!0===OC.appConfig.core.resharingAllowed}},{key:"isPasswordForMailSharesRequired",get:function(){return void 0!==OC.getCapabilities().files_sharing.sharebymail&&OC.getCapabilities().files_sharing.sharebymail.password.enforced}},{key:"shouldAlwaysShowUnique",get:function(){var n,e;return!0===(null===(n=OC.getCapabilities().files_sharing)||void 0===n||null===(e=n.sharee)||void 0===e?void 0:e.always_show_unique)}},{key:"allowGroupSharing",get:function(){return!0===OC.appConfig.core.allowGroupSharing}},{key:"maxAutocompleteResults",get:function(){return parseInt(OC.config["sharing.maxAutocompleteResults"],10)||25}},{key:"minSearchStringLength",get:function(){return parseInt(OC.config["sharing.minSearchStringLength"],10)||0}},{key:"passwordPolicy",get:function(){var n=OC.getCapabilities();return n.password_policy?n.password_policy:{}}}])&&f(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}(),g=r(41922);function m(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var v=function(){function n(e){var t,r;!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),r=void 0,(t="_share")in this?Object.defineProperty(this,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):this[t]=r,e.ocs&&e.ocs.data&&e.ocs.data[0]&&(e=e.ocs.data[0]),e.hide_download=!!e.hide_download,e.mail_send=!!e.mail_send,this._share=e}var e,t;return e=n,(t=[{key:"state",get:function(){return this._share}},{key:"id",get:function(){return this._share.id}},{key:"type",get:function(){return this._share.share_type}},{key:"permissions",get:function(){return this._share.permissions},set:function(n){this._share.permissions=n}},{key:"owner",get:function(){return this._share.uid_owner}},{key:"ownerDisplayName",get:function(){return this._share.displayname_owner}},{key:"shareWith",get:function(){return this._share.share_with}},{key:"shareWithDisplayName",get:function(){return this._share.share_with_displayname||this._share.share_with}},{key:"shareWithDisplayNameUnique",get:function(){return this._share.share_with_displayname_unique||this._share.share_with}},{key:"shareWithLink",get:function(){return this._share.share_with_link}},{key:"shareWithAvatar",get:function(){return this._share.share_with_avatar}},{key:"uidFileOwner",get:function(){return this._share.uid_file_owner}},{key:"displaynameFileOwner",get:function(){return this._share.displayname_file_owner||this._share.uid_file_owner}},{key:"createdTime",get:function(){return this._share.stime}},{key:"expireDate",get:function(){return this._share.expiration},set:function(n){this._share.expiration=n}},{key:"token",get:function(){return this._share.token}},{key:"note",get:function(){return this._share.note},set:function(n){this._share.note=n}},{key:"label",get:function(){return this._share.label},set:function(n){this._share.label=n}},{key:"mailSend",get:function(){return!0===this._share.mail_send}},{key:"hideDownload",get:function(){return!0===this._share.hide_download},set:function(n){this._share.hide_download=!0===n}},{key:"password",get:function(){return this._share.password},set:function(n){this._share.password=n}},{key:"passwordExpirationTime",get:function(){return this._share.password_expiration_time},set:function(n){this._share.password_expiration_time=n}},{key:"sendPasswordByTalk",get:function(){return this._share.send_password_by_talk},set:function(n){this._share.send_password_by_talk=n}},{key:"path",get:function(){return this._share.path}},{key:"itemType",get:function(){return this._share.item_type}},{key:"mimetype",get:function(){return this._share.mimetype}},{key:"fileSource",get:function(){return this._share.file_source}},{key:"fileTarget",get:function(){return this._share.file_target}},{key:"fileParent",get:function(){return this._share.file_parent}},{key:"hasReadPermission",get:function(){return!!(this.permissions&OC.PERMISSION_READ)}},{key:"hasCreatePermission",get:function(){return!!(this.permissions&OC.PERMISSION_CREATE)}},{key:"hasDeletePermission",get:function(){return!!(this.permissions&OC.PERMISSION_DELETE)}},{key:"hasUpdatePermission",get:function(){return!!(this.permissions&OC.PERMISSION_UPDATE)}},{key:"hasSharePermission",get:function(){return!!(this.permissions&OC.PERMISSION_SHARE)}},{key:"canEdit",get:function(){return!0===this._share.can_edit}},{key:"canDelete",get:function(){return!0===this._share.can_delete}},{key:"viaFileid",get:function(){return this._share.via_fileid}},{key:"viaPath",get:function(){return this._share.via_path}},{key:"parent",get:function(){return this._share.parent}},{key:"storageId",get:function(){return this._share.storage_id}},{key:"storage",get:function(){return this._share.storage}},{key:"itemSource",get:function(){return this._share.item_source}},{key:"status",get:function(){return this._share.status}}])&&m(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}(),_={data:function(){return{SHARE_TYPES:g.D}}},A=r(74466),y=r.n(A),E=r(79440),w=r.n(E),b=r(15168),S=r.n(b),C={name:"SharingEntrySimple",components:{Actions:w()},directives:{Tooltip:S()},props:{title:{type:String,default:"",required:!0},tooltip:{type:String,default:""},subtitle:{type:String,default:""},isUnique:{type:Boolean,default:!0}}},x=r(93379),k=r.n(x),P=r(7795),T=r.n(P),D=r(90569),R=r.n(D),O=r(3565),I=r.n(O),L=r(19216),N=r.n(L),Y=r(44589),H=r.n(Y),U=r(35917),M={};M.styleTagTransform=H(),M.setAttributes=I(),M.insert=R().bind(null,"head"),M.domAPI=T(),M.insertStyleElement=N(),k()(U.Z,M),U.Z&&U.Z.locals&&U.Z.locals;var B=r(51900),j=(0,B.Z)(C,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("li",{staticClass:"sharing-entry"},[n._t("avatar"),n._v(" "),t("div",{directives:[{name:"tooltip",rawName:"v-tooltip",value:n.tooltip,expression:"tooltip"}],staticClass:"sharing-entry__desc"},[t("h5",[n._v(n._s(n.title))]),n._v(" "),n.subtitle?t("p",[n._v("\n\t\t\t"+n._s(n.subtitle)+"\n\t\t")]):n._e()]),n._v(" "),n.$slots.default?t("Actions",{staticClass:"sharing-entry__actions",attrs:{"menu-align":"right"}},[n._t("default")],2):n._e()],2)}),[],!1,null,"1436bf4a",null).exports;function W(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}var q={name:"SharingEntryInternal",components:{ActionLink:y(),SharingEntrySimple:j},props:{fileInfo:{type:Object,default:function(){},required:!0}},data:function(){return{copied:!1,copySuccess:!1}},computed:{internalLink:function(){return window.location.protocol+"//"+window.location.host+(0,l.generateUrl)("/f/")+this.fileInfo.id},clipboardTooltip:function(){return this.copied?this.copySuccess?t("files_sharing","Link copied"):t("files_sharing","Cannot copy, please copy the link manually"):t("files_sharing","Copy to clipboard")},internalLinkSubtitle:function(){return"dir"===this.fileInfo.type?t("files_sharing","Only works for users with access to this folder"):t("files_sharing","Only works for users with access to this file")}},methods:{copyLink:function(){var n,e=this;return(n=regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,e.$copyText(e.internalLink);case 3:e.$refs.copyButton.$el.focus(),e.copySuccess=!0,e.copied=!0,n.next=13;break;case 8:n.prev=8,n.t0=n.catch(0),e.copySuccess=!1,e.copied=!0,console.error(n.t0);case 13:return n.prev=13,setTimeout((function(){e.copySuccess=!1,e.copied=!1}),4e3),n.finish(13);case 16:case"end":return n.stop()}}),n,null,[[0,8,13,16]])})),function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){W(a,r,i,s,o,"next",n)}function o(n){W(a,r,i,s,o,"throw",n)}s(void 0)}))})()}}},F=q,$=r(52475),Z={};Z.styleTagTransform=H(),Z.setAttributes=I(),Z.insert=R().bind(null,"head"),Z.domAPI=T(),Z.insertStyleElement=N(),k()($.Z,Z),$.Z&&$.Z.locals&&$.Z.locals;var G=(0,B.Z)(F,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("SharingEntrySimple",{staticClass:"sharing-entry__internal",attrs:{title:n.t("files_sharing","Internal link"),subtitle:n.internalLinkSubtitle},scopedSlots:n._u([{key:"avatar",fn:function(){return[t("div",{staticClass:"avatar-external icon-external-white"})]},proxy:!0}])},[n._v(" "),t("ActionLink",{ref:"copyButton",attrs:{href:n.internalLink,target:"_blank",icon:n.copied&&n.copySuccess?"icon-checkmark-color":"icon-clippy"},on:{click:function(e){return e.preventDefault(),n.copyLink.apply(null,arguments)}}},[n._v("\n\t\t"+n._s(n.clipboardTooltip)+"\n\t")])],1)}),[],!1,null,"854dc2c6",null),K=G.exports,V=r(22200),Q=r(20296),z=r.n(Q),J=r(7811),X=r.n(J);function nn(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function en(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){nn(a,r,i,s,o,"next",n)}function o(n){nn(a,r,i,s,o,"throw",n)}s(void 0)}))}}var tn=new p,rn="abcdefgijkmnopqrstwxyzABCDEFGHJKLMNPQRSTWXYZ23456789";function an(){return sn.apply(this,arguments)}function sn(){return(sn=en(regeneratorRuntime.mark((function n(){var e;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!tn.passwordPolicy.api||!tn.passwordPolicy.api.generate){n.next=12;break}return n.prev=1,n.next=4,d.default.get(tn.passwordPolicy.api.generate);case 4:if(!(e=n.sent).data.ocs.data.password){n.next=7;break}return n.abrupt("return",e.data.ocs.data.password);case 7:n.next=12;break;case 9:n.prev=9,n.t0=n.catch(1),console.info("Error generating password from password_policy",n.t0);case 12:return n.abrupt("return",Array(10).fill(0).reduce((function(n,e){return n+rn.charAt(Math.floor(Math.random()*rn.length))}),""));case 13:case"end":return n.stop()}}),n,null,[[1,9]])})))).apply(this,arguments)}function on(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function cn(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){on(a,r,i,s,o,"next",n)}function o(n){on(a,r,i,s,o,"throw",n)}s(void 0)}))}}r(35449);var ln=(0,l.generateOcsUrl)("apps/files_sharing/api/v1/shares"),un={methods:{createShare:function(n){return cn(regeneratorRuntime.mark((function e(){var r,i,a,s,o,c,l,u,h,f,p,g,m,_,A,y;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=n.path,i=n.permissions,a=n.shareType,s=n.shareWith,o=n.publicUpload,c=n.password,l=n.sendPasswordByTalk,u=n.expireDate,h=n.label,e.prev=1,e.next=4,d.default.post(ln,{path:r,permissions:i,shareType:a,shareWith:s,publicUpload:o,password:c,sendPasswordByTalk:l,expireDate:u,label:h});case 4:if(null!=(p=e.sent)&&null!==(f=p.data)&&void 0!==f&&f.ocs){e.next=7;break}throw p;case 7:return e.abrupt("return",new v(p.data.ocs.data));case 10:throw e.prev=10,e.t0=e.catch(1),console.error("Error while creating share",e.t0),y=null===e.t0||void 0===e.t0||null===(g=e.t0.response)||void 0===g||null===(m=g.data)||void 0===m||null===(_=m.ocs)||void 0===_||null===(A=_.meta)||void 0===A?void 0:A.message,OC.Notification.showTemporary(y?t("files_sharing","Error creating the share: {errorMessage}",{errorMessage:y}):t("files_sharing","Error creating the share"),{type:"error"}),e.t0;case 16:case"end":return e.stop()}}),e,null,[[1,10]])})))()},deleteShare:function(n){return cn(regeneratorRuntime.mark((function e(){var r,i,a,s,o,c,l;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,d.default.delete(ln+"/".concat(n));case 3:if(null!=(i=e.sent)&&null!==(r=i.data)&&void 0!==r&&r.ocs){e.next=6;break}throw i;case 6:return e.abrupt("return",!0);case 9:throw e.prev=9,e.t0=e.catch(0),console.error("Error while deleting share",e.t0),l=null===e.t0||void 0===e.t0||null===(a=e.t0.response)||void 0===a||null===(s=a.data)||void 0===s||null===(o=s.ocs)||void 0===o||null===(c=o.meta)||void 0===c?void 0:c.message,OC.Notification.showTemporary(l?t("files_sharing","Error deleting the share: {errorMessage}",{errorMessage:l}):t("files_sharing","Error deleting the share"),{type:"error"}),e.t0;case 15:case"end":return e.stop()}}),e,null,[[0,9]])})))()},updateShare:function(n,e){return cn(regeneratorRuntime.mark((function r(){var i,a,s,o,c,l,u,h;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.prev=0,r.next=3,d.default.put(ln+"/".concat(n),e);case 3:if(null!=(a=r.sent)&&null!==(i=a.data)&&void 0!==i&&i.ocs){r.next=8;break}throw a;case 8:return r.abrupt("return",a.data.ocs.data);case 9:r.next=17;break;case 11:throw r.prev=11,r.t0=r.catch(0),console.error("Error while updating share",r.t0),400!==r.t0.response.status&&(u=null===r.t0||void 0===r.t0||null===(s=r.t0.response)||void 0===s||null===(o=s.data)||void 0===o||null===(c=o.ocs)||void 0===c||null===(l=c.meta)||void 0===l?void 0:l.message,OC.Notification.showTemporary(u?t("files_sharing","Error updating the share: {errorMessage}",{errorMessage:u}):t("files_sharing","Error updating the share"),{type:"error"})),h=r.t0.response.data.ocs.meta.message,new Error(h);case 17:case"end":return r.stop()}}),r,null,[[0,11]])})))()}}};function hn(n){return hn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},hn(n)}function dn(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(n);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),t.push.apply(t,r)}return t}function fn(n){for(var e=1;e<arguments.length;e++){var t=null!=arguments[e]?arguments[e]:{};e%2?dn(Object(t),!0).forEach((function(e){pn(n,e,t[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):dn(Object(t)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(t,e))}))}return n}function pn(n,e,t){return e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function gn(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function mn(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){gn(a,r,i,s,o,"next",n)}function o(n){gn(a,r,i,s,o,"throw",n)}s(void 0)}))}}var vn={name:"SharingInput",components:{Multiselect:X()},mixins:[_,un],props:{shares:{type:Array,default:function(){return[]},required:!0},linkShares:{type:Array,default:function(){return[]},required:!0},fileInfo:{type:Object,default:function(){},required:!0},reshare:{type:v,default:null},canReshare:{type:Boolean,required:!0}},data:function(){return{config:new p,loading:!1,query:"",recommendations:[],ShareSearch:OCA.Sharing.ShareSearch.state,suggestions:[]}},computed:{externalResults:function(){return this.ShareSearch.results},inputPlaceholder:function(){var n=this.config.isRemoteShareAllowed;return this.canReshare?n?t("files_sharing","Name, email, or Federated Cloud ID …"):t("files_sharing","Name or email …"):t("files_sharing","Resharing is not allowed")},isValidQuery:function(){return this.query&&""!==this.query.trim()&&this.query.length>this.config.minSearchStringLength},options:function(){return this.isValidQuery?this.suggestions:this.recommendations},noResultText:function(){return this.loading?t("files_sharing","Searching …"):t("files_sharing","No elements found.")}},mounted:function(){this.getRecommendations()},methods:{asyncFind:function(n,e){var t=this;return mn(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.query=n.trim(),!t.isValidQuery){e.next=5;break}return t.loading=!0,e.next=5,t.debounceGetSuggestions(n);case 5:case"end":return e.stop()}}),e)})))()},getSuggestions:function(n){var e=arguments,r=this;return mn(regeneratorRuntime.mark((function i(){var a,s,o,c,u,h,f,p,g,m,v,_,A;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return a=e.length>1&&void 0!==e[1]&&e[1],r.loading=!0,!0===OC.getCapabilities().files_sharing.sharee.query_lookup_default&&(a=!0),s=[r.SHARE_TYPES.SHARE_TYPE_USER,r.SHARE_TYPES.SHARE_TYPE_GROUP,r.SHARE_TYPES.SHARE_TYPE_REMOTE,r.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP,r.SHARE_TYPES.SHARE_TYPE_CIRCLE,r.SHARE_TYPES.SHARE_TYPE_ROOM,r.SHARE_TYPES.SHARE_TYPE_GUEST,r.SHARE_TYPES.SHARE_TYPE_DECK],!0===OC.getCapabilities().files_sharing.public.enabled&&s.push(r.SHARE_TYPES.SHARE_TYPE_EMAIL),o=null,i.prev=6,i.next=9,d.default.get((0,l.generateOcsUrl)("apps/files_sharing/api/v1/sharees"),{params:{format:"json",itemType:"dir"===r.fileInfo.type?"folder":"file",search:n,lookup:a,perPage:r.config.maxAutocompleteResults,shareType:s}});case 9:o=i.sent,i.next=16;break;case 12:return i.prev=12,i.t0=i.catch(6),console.error("Error fetching suggestions",i.t0),i.abrupt("return");case 16:c=o.data.ocs.data,u=o.data.ocs.data.exact,c.exact=[],h=Object.values(u).reduce((function(n,e){return n.concat(e)}),[]),f=Object.values(c).reduce((function(n,e){return n.concat(e)}),[]),p=r.filterOutExistingShares(h).map((function(n){return r.formatForMultiselect(n)})).sort((function(n,e){return n.shareType-e.shareType})),g=r.filterOutExistingShares(f).map((function(n){return r.formatForMultiselect(n)})).sort((function(n,e){return n.shareType-e.shareType})),m=[],c.lookupEnabled&&!a&&m.push({id:"global-lookup",isNoUser:!0,displayName:t("files_sharing","Search globally"),lookup:!0}),v=r.externalResults.filter((function(n){return!n.condition||n.condition(r)})),_=p.concat(g).concat(v).concat(m),A=_.reduce((function(n,e){return e.displayName?(n[e.displayName]||(n[e.displayName]=0),n[e.displayName]++,n):n}),{}),r.suggestions=_.map((function(n){return A[n.displayName]>1&&!n.desc?fn(fn({},n),{},{desc:n.shareWithDisplayNameUnique}):n})),r.loading=!1,console.info("suggestions",r.suggestions);case 31:case"end":return i.stop()}}),i,null,[[6,12]])})))()},debounceGetSuggestions:z()((function(){this.getSuggestions.apply(this,arguments)}),300),getRecommendations:function(){var n=this;return mn(regeneratorRuntime.mark((function e(){var t,r,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.loading=!0,t=null,e.prev=2,e.next=5,d.default.get((0,l.generateOcsUrl)("apps/files_sharing/api/v1/sharees_recommended"),{params:{format:"json",itemType:n.fileInfo.type}});case 5:t=e.sent,e.next=12;break;case 8:return e.prev=8,e.t0=e.catch(2),console.error("Error fetching recommendations",e.t0),e.abrupt("return");case 12:r=n.externalResults.filter((function(e){return!e.condition||e.condition(n)})),i=Object.values(t.data.ocs.data.exact).reduce((function(n,e){return n.concat(e)}),[]),n.recommendations=n.filterOutExistingShares(i).map((function(e){return n.formatForMultiselect(e)})).concat(r),n.loading=!1,console.info("recommendations",n.recommendations);case 17:case"end":return e.stop()}}),e,null,[[2,8]])})))()},filterOutExistingShares:function(n){var e=this;return n.reduce((function(n,t){if("object"!==hn(t))return n;try{if(t.value.shareType===e.SHARE_TYPES.SHARE_TYPE_USER){if(t.value.shareWith===(0,V.getCurrentUser)().uid)return n;if(e.reshare&&t.value.shareWith===e.reshare.owner)return n}if(t.value.shareType===e.SHARE_TYPES.SHARE_TYPE_EMAIL){if(-1!==e.linkShares.map((function(n){return n.shareWith})).indexOf(t.value.shareWith.trim()))return n}else{var r=e.shares.reduce((function(n,e){return n[e.shareWith]=e.type,n}),{}),i=t.value.shareWith.trim();if(i in r&&r[i]===t.value.shareType)return n}n.push(t)}catch(e){return n}return n}),[])},shareTypeToIcon:function(n){switch(n){case this.SHARE_TYPES.SHARE_TYPE_GUEST:return"icon-user";case this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:case this.SHARE_TYPES.SHARE_TYPE_GROUP:return"icon-group";case this.SHARE_TYPES.SHARE_TYPE_EMAIL:return"icon-mail";case this.SHARE_TYPES.SHARE_TYPE_CIRCLE:return"icon-circle";case this.SHARE_TYPES.SHARE_TYPE_ROOM:return"icon-room";case this.SHARE_TYPES.SHARE_TYPE_DECK:return"icon-deck";default:return""}},formatForMultiselect:function(n){var e,r;if(n.value.shareType===this.SHARE_TYPES.SHARE_TYPE_USER&&this.config.shouldAlwaysShowUnique)e=null!==(r=n.shareWithDisplayNameUnique)&&void 0!==r?r:"";else if(n.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_REMOTE&&n.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP||!n.value.server)if(n.value.shareType===this.SHARE_TYPES.SHARE_TYPE_EMAIL)e=n.value.shareWith;else{var i;e=null!==(i=n.shareWithDescription)&&void 0!==i?i:""}else e=t("files_sharing","on {server}",{server:n.value.server});return{id:"".concat(n.value.shareType,"-").concat(n.value.shareWith),shareWith:n.value.shareWith,shareType:n.value.shareType,user:n.uuid||n.value.shareWith,isNoUser:n.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_USER,displayName:n.name||n.label,subtitle:e,shareWithDisplayNameUnique:n.shareWithDisplayNameUnique||"",icon:this.shareTypeToIcon(n.value.shareType)}},addShare:function(n){var e=this;return mn(regeneratorRuntime.mark((function t(){var r,i,a,s,o,c,l,u;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!n.lookup){t.next=5;break}return t.next=3,e.getSuggestions(e.query,!0);case 3:return e.$nextTick((function(){e.$refs.multiselect.$el.querySelector(".multiselect__input").focus()})),t.abrupt("return",!0);case 5:if(!n.handler){t.next=11;break}return t.next=8,n.handler(e);case 8:return r=t.sent,e.$emit("add:share",new v(r)),t.abrupt("return",!0);case 11:if(e.loading=!0,console.debug("Adding a new share from the input for",n),t.prev=13,o=null,!e.config.enforcePasswordForPublicLink||n.shareType!==e.SHARE_TYPES.SHARE_TYPE_EMAIL){t.next=19;break}return t.next=18,an();case 18:o=t.sent;case 19:return c=(e.fileInfo.path+"/"+e.fileInfo.name).replace("//","/"),t.next=22,e.createShare({path:c,shareType:n.shareType,shareWith:n.shareWith,password:o,permissions:e.fileInfo.sharePermissions&OC.getCapabilities().files_sharing.default_permissions});case 22:if(l=t.sent,!o){t.next=31;break}return l.newPassword=o,t.next=27,new Promise((function(n){e.$emit("add:share",l,n)}));case 27:t.sent.open=!0,t.next=32;break;case 31:e.$emit("add:share",l);case 32:return null!==(i=e.$refs.multiselect)&&void 0!==i&&null!==(a=i.$refs)&&void 0!==a&&null!==(s=a.VueMultiselect)&&void 0!==s&&s.search&&(e.$refs.multiselect.$refs.VueMultiselect.search=""),t.next=35,e.getRecommendations();case 35:t.next=43;break;case 37:t.prev=37,t.t0=t.catch(13),(u=e.$refs.multiselect.$el.querySelector("input"))&&u.focus(),e.query=n.shareWith,console.error("Error while adding new share",t.t0);case 43:return t.prev=43,e.loading=!1,t.finish(43);case 46:case"end":return t.stop()}}),t,null,[[13,37,43,46]])})))()}}},_n=vn,An=r(84721),yn={};yn.styleTagTransform=H(),yn.setAttributes=I(),yn.insert=R().bind(null,"head"),yn.domAPI=T(),yn.insertStyleElement=N(),k()(An.Z,yn),An.Z&&An.Z.locals&&An.Z.locals;var En=(0,B.Z)(_n,(function(){var n=this,e=n.$createElement;return(n._self._c||e)("Multiselect",{ref:"multiselect",staticClass:"sharing-input",attrs:{"clear-on-select":!0,disabled:!n.canReshare,"hide-selected":!0,"internal-search":!1,loading:n.loading,options:n.options,placeholder:n.inputPlaceholder,"preselect-first":!0,"preserve-search":!0,searchable:!0,"user-select":!0,"open-direction":"below",label:"displayName","track-by":"id"},on:{"search-change":n.asyncFind,select:n.addShare},scopedSlots:n._u([{key:"noOptions",fn:function(){return[n._v("\n\t\t"+n._s(n.t("files_sharing","No recommendations. Start typing."))+"\n\t")]},proxy:!0},{key:"noResult",fn:function(){return[n._v("\n\t\t"+n._s(n.noResultText)+"\n\t")]},proxy:!0}])})}),[],!1,null,null,null).exports,wn=r(56286),bn=r.n(wn),Sn=r(76632),Cn=r(41009),xn=r.n(Cn),kn=r(25746);function Pn(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function Tn(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){Pn(a,r,i,s,o,"next",n)}function o(n){Pn(a,r,i,s,o,"throw",n)}s(void 0)}))}}var Dn={mixins:[un,_],props:{fileInfo:{type:Object,default:function(){},required:!0},share:{type:v,default:null},isUnique:{type:Boolean,default:!0}},data:function(){var n;return{config:new p,errors:{},loading:!1,saving:!1,open:!1,updateQueue:new kn.Z({concurrency:1}),reactiveState:null===(n=this.share)||void 0===n?void 0:n.state}},computed:{hasNote:{get:function(){return""!==this.share.note},set:function(n){this.share.note=n?null:""}},dateTomorrow:function(){return moment().add(1,"days")},lang:function(){var n=window.dayNamesShort?window.dayNamesShort:["Sun.","Mon.","Tue.","Wed.","Thu.","Fri.","Sat."],e=window.monthNamesShort?window.monthNamesShort:["Jan.","Feb.","Mar.","Apr.","May.","Jun.","Jul.","Aug.","Sep.","Oct.","Nov.","Dec."];return{formatLocale:{firstDayOfWeek:window.firstDay?window.firstDay:0,monthsShort:e,weekdaysMin:n,weekdaysShort:n},monthFormat:"MMM"}},isShareOwner:function(){return this.share&&this.share.owner===(0,V.getCurrentUser)().uid}},methods:{checkShare:function(n){return(!n.password||"string"==typeof n.password&&""!==n.password.trim())&&!(n.expirationDate&&!moment(n.expirationDate).isValid())},onExpirationChange:function(n){var e=moment(n).format("YYYY-MM-DD");this.share.expireDate=e,this.queueUpdate("expireDate")},onExpirationDisable:function(){this.share.expireDate="",this.queueUpdate("expireDate")},onNoteChange:function(n){this.$set(this.share,"newNote",n.trim())},onNoteSubmit:function(){this.share.newNote&&(this.share.note=this.share.newNote,this.$delete(this.share,"newNote"),this.queueUpdate("note"))},onDelete:function(){var n=this;return Tn(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,n.loading=!0,n.open=!1,e.next=5,n.deleteShare(n.share.id);case 5:console.debug("Share deleted",n.share.id),n.$emit("remove:share",n.share),e.next=12;break;case 9:e.prev=9,e.t0=e.catch(0),n.open=!0;case 12:return e.prev=12,n.loading=!1,e.finish(12);case 15:case"end":return e.stop()}}),e,null,[[0,9,12,15]])})))()},queueUpdate:function(){for(var n=this,e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];if(0!==t.length)if(this.share.id){var i={};t.map((function(e){return i[e]=n.share[e].toString()})),this.updateQueue.add(Tn(regeneratorRuntime.mark((function e(){var r,a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.saving=!0,n.errors={},e.prev=2,e.next=5,n.updateShare(n.share.id,i);case 5:r=e.sent,t.indexOf("password")>=0&&(n.$delete(n.share,"newPassword"),n.share.passwordExpirationTime=r.password_expiration_time),n.$delete(n.errors,t[0]),e.next=14;break;case 10:e.prev=10,e.t0=e.catch(2),(a=e.t0.message)&&""!==a&&n.onSyncError(t[0],a);case 14:return e.prev=14,n.saving=!1,e.finish(14);case 17:case"end":return e.stop()}}),e,null,[[2,10,14,17]])}))))}else console.error("Cannot update share.",this.share,"No valid id")},onSyncError:function(n,e){switch(this.open=!0,n){case"password":case"pending":case"expireDate":case"label":case"note":this.$set(this.errors,n,e);var t=this.$refs[n];if(t){t.$el&&(t=t.$el);var r=t.querySelector(".focusable");r&&r.focus()}break;case"sendPasswordByTalk":this.$set(this.errors,n,e),this.share.sendPasswordByTalk=!this.share.sendPasswordByTalk}},debounceQueueUpdate:z()((function(n){this.queueUpdate(n)}),500),disabledDate:function(n){var e=moment(n);return this.dateTomorrow&&e.isBefore(this.dateTomorrow,"day")||this.dateMaxEnforced&&e.isSameOrAfter(this.dateMaxEnforced,"day")}}},Rn={name:"SharingEntryInherited",components:{ActionButton:bn(),ActionLink:y(),ActionText:xn(),Avatar:h(),SharingEntrySimple:j},mixins:[Dn],props:{share:{type:v,required:!0}},computed:{viaFileTargetUrl:function(){return(0,l.generateUrl)("/f/{fileid}",{fileid:this.share.viaFileid})},viaFolderName:function(){return(0,Sn.EZ)(this.share.viaPath)}}},On=r(71296),In={};In.styleTagTransform=H(),In.setAttributes=I(),In.insert=R().bind(null,"head"),In.domAPI=T(),In.insertStyleElement=N(),k()(On.Z,In),On.Z&&On.Z.locals&&On.Z.locals;var Ln=(0,B.Z)(Rn,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("SharingEntrySimple",{key:n.share.id,staticClass:"sharing-entry__inherited",attrs:{title:n.share.shareWithDisplayName},scopedSlots:n._u([{key:"avatar",fn:function(){return[t("Avatar",{staticClass:"sharing-entry__avatar",attrs:{user:n.share.shareWith,"display-name":n.share.shareWithDisplayName,"tooltip-message":""}})]},proxy:!0}])},[n._v(" "),t("ActionText",{attrs:{icon:"icon-user"}},[n._v("\n\t\t"+n._s(n.t("files_sharing","Added by {initiator}",{initiator:n.share.ownerDisplayName}))+"\n\t")]),n._v(" "),n.share.viaPath&&n.share.viaFileid?t("ActionLink",{attrs:{icon:"icon-folder",href:n.viaFileTargetUrl}},[n._v("\n\t\t"+n._s(n.t("files_sharing","Via “{folder}”",{folder:n.viaFolderName}))+"\n\t")]):n._e(),n._v(" "),n.share.canDelete?t("ActionButton",{attrs:{icon:"icon-close"},on:{click:function(e){return e.preventDefault(),n.onDelete.apply(null,arguments)}}},[n._v("\n\t\t"+n._s(n.t("files_sharing","Unshare"))+"\n\t")]):n._e()],1)}),[],!1,null,"29845767",null),Nn=Ln.exports;function Yn(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}var Hn={name:"SharingInherited",components:{ActionButton:bn(),SharingEntryInherited:Nn,SharingEntrySimple:j},props:{fileInfo:{type:Object,default:function(){},required:!0}},data:function(){return{loaded:!1,loading:!1,showInheritedShares:!1,shares:[]}},computed:{showInheritedSharesIcon:function(){return this.loading?"icon-loading-small":this.showInheritedShares?"icon-triangle-n":"icon-triangle-s"},mainTitle:function(){return t("files_sharing","Others with access")},subTitle:function(){return this.showInheritedShares&&0===this.shares.length?t("files_sharing","No other users with access found"):""},toggleTooltip:function(){return"dir"===this.fileInfo.type?t("files_sharing","Toggle list of others with access to this directory"):t("files_sharing","Toggle list of others with access to this file")},fullPath:function(){return"".concat(this.fileInfo.path,"/").concat(this.fileInfo.name).replace("//","/")}},watch:{fileInfo:function(){this.resetState()}},methods:{toggleInheritedShares:function(){this.showInheritedShares=!this.showInheritedShares,this.showInheritedShares?this.fetchInheritedShares():this.resetState()},fetchInheritedShares:function(){var n,e=this;return(n=regeneratorRuntime.mark((function n(){var r,i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e.loading=!0,n.prev=1,r=(0,l.generateOcsUrl)("apps/files_sharing/api/v1/shares/inherited?format=json&path={path}",{path:e.fullPath}),n.next=5,d.default.get(r);case 5:i=n.sent,e.shares=i.data.ocs.data.map((function(n){return new v(n)})).sort((function(n,e){return e.createdTime-n.createdTime})),console.info(e.shares),e.loaded=!0,n.next=14;break;case 11:n.prev=11,n.t0=n.catch(1),OC.Notification.showTemporary(t("files_sharing","Unable to fetch inherited shares"),{type:"error"});case 14:return n.prev=14,e.loading=!1,n.finish(14);case 17:case"end":return n.stop()}}),n,null,[[1,11,14,17]])})),function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){Yn(a,r,i,s,o,"next",n)}function o(n){Yn(a,r,i,s,o,"throw",n)}s(void 0)}))})()},resetState:function(){this.loaded=!1,this.loading=!1,this.showInheritedShares=!1,this.shares=[]}}},Un=Hn,Mn=r(93591),Bn={};Bn.styleTagTransform=H(),Bn.setAttributes=I(),Bn.insert=R().bind(null,"head"),Bn.domAPI=T(),Bn.insertStyleElement=N(),k()(Mn.Z,Bn),Mn.Z&&Mn.Z.locals&&Mn.Z.locals;var jn=(0,B.Z)(Un,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("ul",{attrs:{id:"sharing-inherited-shares"}},[t("SharingEntrySimple",{staticClass:"sharing-entry__inherited",attrs:{title:n.mainTitle,subtitle:n.subTitle},scopedSlots:n._u([{key:"avatar",fn:function(){return[t("div",{staticClass:"avatar-shared icon-more-white"})]},proxy:!0}])},[n._v(" "),t("ActionButton",{attrs:{icon:n.showInheritedSharesIcon},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),n.toggleInheritedShares.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.toggleTooltip)+"\n\t\t")])],1),n._v(" "),n._l(n.shares,(function(e){return t("SharingEntryInherited",{key:e.id,attrs:{"file-info":n.fileInfo,share:e}})}))],2)}),[],!1,null,"49ffd834",null),Wn=jn.exports,qn=r(83779),Fn=r.n(qn),$n=r(88408),Zn=r.n($n),Gn=r(33521),Kn=r.n(Gn),Vn=r(97654),Qn=r.n(Vn),zn={name:"ExternalShareAction",props:{id:{type:String,required:!0},action:{type:Object,default:function(){return{}}},fileInfo:{type:Object,default:function(){},required:!0},share:{type:v,default:null}},computed:{data:function(){return this.action.data(this)}}},Jn=(0,B.Z)(zn,(function(){var n=this,e=n.$createElement;return(n._self._c||e)(n.data.is,n._g(n._b({tag:"Component"},"Component",n.data,!1),n.action.handlers),[n._v("\n\t"+n._s(n.data.text)+"\n")])}),[],!1,null,null,null).exports,Xn=r(10949),ne=r.n(Xn),ee={NONE:0,READ:1,UPDATE:2,CREATE:4,DELETE:8,SHARE:16},te={READ_ONLY:ee.READ,UPLOAD_AND_UPDATE:ee.READ|ee.UPDATE|ee.CREATE|ee.DELETE,FILE_DROP:ee.CREATE,ALL:ee.UPDATE|ee.CREATE|ee.READ|ee.DELETE|ee.SHARE};function re(n,e){return n!==ee.NONE&&(n&e)===e}function ie(n){return!(!re(n,ee.READ)&&!re(n,ee.CREATE)||!re(n,ee.READ)&&(re(n,ee.UPDATE)||re(n,ee.DELETE)))}function ae(n,e){return re(n,e)?function(n,e){return n&~e}(n,e):function(n,e){return n|e}(n,e)}var se=r(26937),oe=r(91889),ce={name:"SharePermissionsEditor",components:{ActionButton:bn(),ActionCheckbox:Fn(),ActionRadio:ne(),Tune:se.Z,ChevronLeft:oe.default},mixins:[Dn],data:function(){return{randomFormName:Math.random().toString(27).substring(2),showCustomPermissionsForm:!1,atomicPermissions:ee,bundledPermissions:te}},computed:{sharePermissionsSummary:function(){var n=this;return Object.values(this.atomicPermissions).filter((function(e){return n.shareHasPermissions(e)})).map((function(e){switch(e){case n.atomicPermissions.CREATE:return n.t("files_sharing","Upload");case n.atomicPermissions.READ:return n.t("files_sharing","Read");case n.atomicPermissions.UPDATE:return n.t("files_sharing","Edit");case n.atomicPermissions.DELETE:return n.t("files_sharing","Delete");default:return null}})).filter((function(n){return null!==n})).join(", ")},sharePermissionsIsBundle:function(){var n=this;return Object.values(te).map((function(e){return n.sharePermissionEqual(e)})).filter((function(n){return n})).length>0},sharePermissionsSetIsValid:function(){return ie(this.share.permissions)},isFolder:function(){return"dir"===this.fileInfo.type},fileHasCreatePermission:function(){return!!(this.fileInfo.permissions&ee.CREATE)}},mounted:function(){this.showCustomPermissionsForm=!this.sharePermissionsIsBundle},methods:{sharePermissionEqual:function(n){return(this.share.permissions&~ee.SHARE)===n},shareHasPermissions:function(n){return re(this.share.permissions,n)},setSharePermissions:function(n){this.share.permissions=n,this.queueUpdate("permissions")},canToggleSharePermissions:function(n){return function(n,e){return ie(ae(n,e))}(this.share.permissions,n)},toggleSharePermissions:function(n){this.share.permissions=ae(this.share.permissions,n),ie(this.share.permissions)&&this.queueUpdate("permissions")}}},le=r(32016),ue={};ue.styleTagTransform=H(),ue.setAttributes=I(),ue.insert=R().bind(null,"head"),ue.domAPI=T(),ue.insertStyleElement=N(),k()(le.Z,ue),le.Z&&le.Z.locals&&le.Z.locals;var he=(0,B.Z)(ce,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("span",[n.isFolder?n._e():t("ActionCheckbox",{attrs:{checked:n.shareHasPermissions(n.atomicPermissions.UPDATE),disabled:n.saving},on:{"update:checked":function(e){return n.toggleSharePermissions(n.atomicPermissions.UPDATE)}}},[n._v("\n\t\t"+n._s(n.t("files_sharing","Allow editing"))+"\n\t")]),n._v(" "),n.isFolder&&n.fileHasCreatePermission&&n.config.isPublicUploadEnabled?[n.showCustomPermissionsForm?t("span",{class:{error:!n.sharePermissionsSetIsValid}},[t("ActionCheckbox",{attrs:{checked:n.shareHasPermissions(n.atomicPermissions.READ),disabled:n.saving||!n.canToggleSharePermissions(n.atomicPermissions.READ)},on:{"update:checked":function(e){return n.toggleSharePermissions(n.atomicPermissions.READ)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Read"))+"\n\t\t\t")]),n._v(" "),t("ActionCheckbox",{attrs:{checked:n.shareHasPermissions(n.atomicPermissions.CREATE),disabled:n.saving||!n.canToggleSharePermissions(n.atomicPermissions.CREATE)},on:{"update:checked":function(e){return n.toggleSharePermissions(n.atomicPermissions.CREATE)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Upload"))+"\n\t\t\t")]),n._v(" "),t("ActionCheckbox",{attrs:{checked:n.shareHasPermissions(n.atomicPermissions.UPDATE),disabled:n.saving||!n.canToggleSharePermissions(n.atomicPermissions.UPDATE)},on:{"update:checked":function(e){return n.toggleSharePermissions(n.atomicPermissions.UPDATE)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Edit"))+"\n\t\t\t")]),n._v(" "),t("ActionCheckbox",{attrs:{checked:n.shareHasPermissions(n.atomicPermissions.DELETE),disabled:n.saving||!n.canToggleSharePermissions(n.atomicPermissions.DELETE)},on:{"update:checked":function(e){return n.toggleSharePermissions(n.atomicPermissions.DELETE)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Delete"))+"\n\t\t\t")]),n._v(" "),t("ActionButton",{on:{click:function(e){n.showCustomPermissionsForm=!1}},scopedSlots:n._u([{key:"icon",fn:function(){return[t("ChevronLeft")]},proxy:!0}],null,!1,1018742195)},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Bundled permissions"))+"\n\t\t\t")])],1):[t("ActionRadio",{attrs:{checked:n.sharePermissionEqual(n.bundledPermissions.READ_ONLY),value:n.bundledPermissions.READ_ONLY,name:n.randomFormName,disabled:n.saving},on:{change:function(e){return n.setSharePermissions(n.bundledPermissions.READ_ONLY)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Read only"))+"\n\t\t\t")]),n._v(" "),t("ActionRadio",{attrs:{checked:n.sharePermissionEqual(n.bundledPermissions.UPLOAD_AND_UPDATE),value:n.bundledPermissions.UPLOAD_AND_UPDATE,disabled:n.saving,name:n.randomFormName},on:{change:function(e){return n.setSharePermissions(n.bundledPermissions.UPLOAD_AND_UPDATE)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Allow upload and editing"))+"\n\t\t\t")]),n._v(" "),t("ActionRadio",{staticClass:"sharing-entry__action--public-upload",attrs:{checked:n.sharePermissionEqual(n.bundledPermissions.FILE_DROP),value:n.bundledPermissions.FILE_DROP,disabled:n.saving,name:n.randomFormName},on:{change:function(e){return n.setSharePermissions(n.bundledPermissions.FILE_DROP)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","File drop (upload only)"))+"\n\t\t\t")]),n._v(" "),t("ActionButton",{attrs:{title:n.t("files_sharing","Custom permissions")},on:{click:function(e){n.showCustomPermissionsForm=!0}},scopedSlots:n._u([{key:"icon",fn:function(){return[t("Tune")]},proxy:!0}],null,!1,961531849)},[n._v("\n\t\t\t\t"+n._s(n.sharePermissionsIsBundle?"":n.sharePermissionsSummary)+"\n\t\t\t")])]]:n._e()],2)}),[],!1,null,"3d9cb67e",null).exports;function de(n){return de="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},de(n)}function fe(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function pe(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){fe(a,r,i,s,o,"next",n)}function o(n){fe(a,r,i,s,o,"throw",n)}s(void 0)}))}}var ge={name:"SharingEntryLink",components:{Actions:w(),ActionButton:bn(),ActionCheckbox:Fn(),ActionInput:Zn(),ActionLink:y(),ActionText:xn(),ActionTextEditable:Qn(),ActionSeparator:Kn(),Avatar:h(),ExternalShareAction:Jn,SharePermissionsEditor:he},directives:{Tooltip:S()},mixins:[Dn],props:{canReshare:{type:Boolean,default:!0}},data:function(){return{copySuccess:!0,copied:!1,pending:!1,ExternalLegacyLinkActions:OCA.Sharing.ExternalLinkActions.state,ExternalShareActions:OCA.Sharing.ExternalShareActions.state}},computed:{title:function(){if(this.share&&this.share.id){if(!this.isShareOwner&&this.share.ownerDisplayName)return this.isEmailShareType?t("files_sharing","{shareWith} by {initiator}",{shareWith:this.share.shareWith,initiator:this.share.ownerDisplayName}):t("files_sharing","Shared via link by {initiator}",{initiator:this.share.ownerDisplayName});if(this.share.label&&""!==this.share.label.trim())return this.isEmailShareType?t("files_sharing","Mail share ({label})",{label:this.share.label.trim()}):t("files_sharing","Share link ({label})",{label:this.share.label.trim()});if(this.isEmailShareType)return this.share.shareWith}return t("files_sharing","Share link")},subtitle:function(){return this.isEmailShareType&&this.title!==this.share.shareWith?this.share.shareWith:null},hasExpirationDate:{get:function(){return this.config.isDefaultExpireDateEnforced||!!this.share.expireDate},set:function(n){var e=moment(this.config.defaultExpirationDateString);e.isValid()||(e=moment()),this.share.state.expiration=n?e.format("YYYY-MM-DD"):"",console.debug("Expiration date status",n,this.share.expireDate)}},dateMaxEnforced:function(){return this.config.isDefaultExpireDateEnforced&&moment().add(1+this.config.defaultExpireDate,"days")},isPasswordProtected:{get:function(){return this.config.enforcePasswordForPublicLink||!!this.share.password},set:function(n){var e=this;return pe(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(t.t0=i.default,t.t1=e.share,!n){t.next=8;break}return t.next=5,an();case 5:t.t2=t.sent,t.next=9;break;case 8:t.t2="";case 9:t.t3=t.t2,t.t0.set.call(t.t0,t.t1,"password",t.t3),i.default.set(e.share,"newPassword",e.share.password);case 12:case"end":return t.stop()}}),t)})))()}},passwordExpirationTime:function(){if(null===this.share.passwordExpirationTime)return null;var n=moment(this.share.passwordExpirationTime);return!(n.diff(moment())<0)&&n.fromNow()},isTalkEnabled:function(){return void 0!==OC.appswebroots.spreed},isPasswordProtectedByTalkAvailable:function(){return this.isPasswordProtected&&this.isTalkEnabled},isPasswordProtectedByTalk:{get:function(){return this.share.sendPasswordByTalk},set:function(n){var e=this;return pe(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:e.share.sendPasswordByTalk=n;case 1:case"end":return t.stop()}}),t)})))()}},isEmailShareType:function(){return!!this.share&&this.share.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL},canTogglePasswordProtectedByTalkAvailable:function(){return!(!this.isPasswordProtected||this.isEmailShareType&&!this.hasUnsavedPassword)},pendingPassword:function(){return this.config.enforcePasswordForPublicLink&&this.share&&!this.share.id},pendingExpirationDate:function(){return this.config.isDefaultExpireDateEnforced&&this.share&&!this.share.id},hasUnsavedPassword:function(){return void 0!==this.share.newPassword},shareLink:function(){return window.location.protocol+"//"+window.location.host+(0,l.generateUrl)("/s/")+this.share.token},clipboardTooltip:function(){return this.copied?this.copySuccess?t("files_sharing","Link copied"):t("files_sharing","Cannot copy, please copy the link manually"):t("files_sharing","Copy to clipboard")},externalLegacyLinkActions:function(){return this.ExternalLegacyLinkActions.actions},externalLinkActions:function(){return this.ExternalShareActions.actions.filter((function(n){return n.shareType.includes(g.D.SHARE_TYPE_LINK)||n.shareType.includes(g.D.SHARE_TYPE_EMAIL)}))},isPasswordPolicyEnabled:function(){return"object"===de(this.config.passwordPolicy)}},methods:{onNewLinkShare:function(){var n=this;return pe(regeneratorRuntime.mark((function e(){var r,i,a,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!n.loading){e.next=2;break}return e.abrupt("return");case 2:if(r={share_type:g.D.SHARE_TYPE_LINK},n.config.isDefaultExpireDateEnforced&&(r.expiration=n.config.defaultExpirationDateString),!n.config.enableLinkPasswordByDefault){e.next=8;break}return e.next=7,an();case 7:r.password=e.sent;case 8:if(!n.config.enforcePasswordForPublicLink&&!n.config.isDefaultExpireDateEnforced){e.next=33;break}if(n.pending=!0,!n.share||n.share.id){e.next=20;break}if(!n.checkShare(n.share)){e.next=17;break}return e.next=14,n.pushNewLinkShare(n.share,!0);case 14:return e.abrupt("return",!0);case 17:return n.open=!0,OC.Notification.showTemporary(t("files_sharing","Error, please enter proper password and/or expiration date")),e.abrupt("return",!1);case 20:if(!n.config.enforcePasswordForPublicLink){e.next=24;break}return e.next=23,an();case 23:r.password=e.sent;case 24:return i=new v(r),e.next=27,new Promise((function(e){n.$emit("add:share",i,e)}));case 27:a=e.sent,n.open=!1,n.pending=!1,a.open=!0,e.next=36;break;case 33:return s=new v(r),e.next=36,n.pushNewLinkShare(s);case 36:case"end":return e.stop()}}),e)})))()},pushNewLinkShare:function(n,e){var t=this;return pe(regeneratorRuntime.mark((function r(){var i,a,s,o,c;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(r.prev=0,!t.loading){r.next=3;break}return r.abrupt("return",!0);case 3:return t.loading=!0,t.errors={},i=(t.fileInfo.path+"/"+t.fileInfo.name).replace("//","/"),r.next=8,t.createShare({path:i,shareType:g.D.SHARE_TYPE_LINK,password:n.password,expireDate:n.expireDate});case 8:if(a=r.sent,t.open=!1,console.debug("Link share created",a),!e){r.next=17;break}return r.next=14,new Promise((function(n){t.$emit("update:share",a,n)}));case 14:s=r.sent,r.next=20;break;case 17:return r.next=19,new Promise((function(n){t.$emit("add:share",a,n)}));case 19:s=r.sent;case 20:t.config.enforcePasswordForPublicLink||s.copyLink(),r.next=28;break;case 23:r.prev=23,r.t0=r.catch(0),o=r.t0.response,(c=o.data.ocs.meta.message).match(/password/i)?t.onSyncError("password",c):c.match(/date/i)?t.onSyncError("expireDate",c):t.onSyncError("pending",c);case 28:return r.prev=28,t.loading=!1,r.finish(28);case 31:case"end":return r.stop()}}),r,null,[[0,23,28,31]])})))()},onLabelChange:function(n){this.$set(this.share,"newLabel",n.trim())},onLabelSubmit:function(){"string"==typeof this.share.newLabel&&(this.share.label=this.share.newLabel,this.$delete(this.share,"newLabel"),this.queueUpdate("label"))},copyLink:function(){var n=this;return pe(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,n.$copyText(n.shareLink);case 3:n.$refs.copyButton.$el.focus(),n.copySuccess=!0,n.copied=!0,e.next=13;break;case 8:e.prev=8,e.t0=e.catch(0),n.copySuccess=!1,n.copied=!0,console.error(e.t0);case 13:return e.prev=13,setTimeout((function(){n.copySuccess=!1,n.copied=!1}),4e3),e.finish(13);case 16:case"end":return e.stop()}}),e,null,[[0,8,13,16]])})))()},onPasswordChange:function(n){this.$set(this.share,"newPassword",n)},onPasswordDisable:function(){this.share.password="",this.$delete(this.share,"newPassword"),this.share.id&&this.queueUpdate("password")},onPasswordSubmit:function(){this.hasUnsavedPassword&&(this.share.password=this.share.newPassword.trim(),this.queueUpdate("password"))},onPasswordProtectedByTalkChange:function(){this.hasUnsavedPassword&&(this.share.password=this.share.newPassword.trim()),this.queueUpdate("sendPasswordByTalk","password")},onMenuClose:function(){this.onPasswordSubmit(),this.onNoteSubmit()},onCancel:function(){this.$emit("remove:share",this.share)}}},me=r(53075),ve={};ve.styleTagTransform=H(),ve.setAttributes=I(),ve.insert=R().bind(null,"head"),ve.domAPI=T(),ve.insertStyleElement=N(),k()(me.Z,ve),me.Z&&me.Z.locals&&me.Z.locals;var _e=(0,B.Z)(ge,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("li",{staticClass:"sharing-entry sharing-entry__link",class:{"sharing-entry--share":n.share}},[t("Avatar",{staticClass:"sharing-entry__avatar",attrs:{"is-no-user":!0,"icon-class":n.isEmailShareType?"avatar-link-share icon-mail-white":"avatar-link-share icon-public-white"}}),n._v(" "),t("div",{staticClass:"sharing-entry__desc"},[t("h5",{attrs:{title:n.title}},[n._v("\n\t\t\t"+n._s(n.title)+"\n\t\t")]),n._v(" "),n.subtitle?t("p",[n._v("\n\t\t\t"+n._s(n.subtitle)+"\n\t\t")]):n._e()]),n._v(" "),n.share&&!n.isEmailShareType&&n.share.token?t("Actions",{ref:"copyButton",staticClass:"sharing-entry__copy"},[t("ActionLink",{attrs:{href:n.shareLink,target:"_blank",icon:n.copied&&n.copySuccess?"icon-checkmark-color":"icon-clippy"},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),n.copyLink.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.clipboardTooltip)+"\n\t\t")])],1):n._e(),n._v(" "),n.pending||!n.pendingPassword&&!n.pendingExpirationDate?n.loading?t("div",{staticClass:"icon-loading-small sharing-entry__loading"}):t("Actions",{staticClass:"sharing-entry__actions",attrs:{"menu-align":"right",open:n.open},on:{"update:open":function(e){n.open=e},close:n.onMenuClose}},[n.share?[n.share.canEdit&&n.canReshare?[t("ActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.label,show:n.errors.label,trigger:"manual",defaultContainer:".app-sidebar"},expression:"{\n\t\t\t\t\t\tcontent: errors.label,\n\t\t\t\t\t\tshow: errors.label,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '.app-sidebar'\n\t\t\t\t\t}",modifiers:{auto:!0}}],ref:"label",class:{error:n.errors.label},attrs:{disabled:n.saving,"aria-label":n.t("files_sharing","Share label"),value:void 0!==n.share.newLabel?n.share.newLabel:n.share.label,icon:"icon-edit",maxlength:"255"},on:{"update:value":n.onLabelChange,submit:n.onLabelSubmit}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Share label"))+"\n\t\t\t\t")]),n._v(" "),t("SharePermissionsEditor",{attrs:{"can-reshare":n.canReshare,share:n.share,"file-info":n.fileInfo},on:{"update:share":function(e){n.share=e}}}),n._v(" "),t("ActionSeparator"),n._v(" "),t("ActionCheckbox",{attrs:{checked:n.share.hideDownload,disabled:n.saving},on:{"update:checked":function(e){return n.$set(n.share,"hideDownload",e)},change:function(e){return n.queueUpdate("hideDownload")}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Hide download"))+"\n\t\t\t\t")]),n._v(" "),t("ActionCheckbox",{staticClass:"share-link-password-checkbox",attrs:{checked:n.isPasswordProtected,disabled:n.config.enforcePasswordForPublicLink||n.saving},on:{"update:checked":function(e){n.isPasswordProtected=e},uncheck:n.onPasswordDisable}},[n._v("\n\t\t\t\t\t"+n._s(n.config.enforcePasswordForPublicLink?n.t("files_sharing","Password protection (enforced)"):n.t("files_sharing","Password protect"))+"\n\t\t\t\t")]),n._v(" "),n.isPasswordProtected?t("ActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.password,show:n.errors.password,trigger:"manual",defaultContainer:"#app-sidebar"},expression:"{\n\t\t\t\t\t\tcontent: errors.password,\n\t\t\t\t\t\tshow: errors.password,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}",modifiers:{auto:!0}}],ref:"password",staticClass:"share-link-password",class:{error:n.errors.password},attrs:{disabled:n.saving,required:n.config.enforcePasswordForPublicLink,value:n.hasUnsavedPassword?n.share.newPassword:"***************",icon:"icon-password",autocomplete:"new-password",type:n.hasUnsavedPassword?"text":"password"},on:{"update:value":n.onPasswordChange,submit:n.onPasswordSubmit}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Enter a password"))+"\n\t\t\t\t")]):n._e(),n._v(" "),n.isEmailShareType&&n.passwordExpirationTime?t("ActionText",{attrs:{icon:"icon-info"}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Password expires {passwordExpirationTime}",{passwordExpirationTime:n.passwordExpirationTime}))+"\n\t\t\t\t")]):n.isEmailShareType&&null!==n.passwordExpirationTime?t("ActionText",{attrs:{icon:"icon-error"}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Password expired"))+"\n\t\t\t\t")]):n._e(),n._v(" "),n.isPasswordProtectedByTalkAvailable?t("ActionCheckbox",{staticClass:"share-link-password-talk-checkbox",attrs:{checked:n.isPasswordProtectedByTalk,disabled:!n.canTogglePasswordProtectedByTalkAvailable||n.saving},on:{"update:checked":function(e){n.isPasswordProtectedByTalk=e},change:n.onPasswordProtectedByTalkChange}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Video verification"))+"\n\t\t\t\t")]):n._e(),n._v(" "),t("ActionCheckbox",{staticClass:"share-link-expire-date-checkbox",attrs:{checked:n.hasExpirationDate,disabled:n.config.isDefaultExpireDateEnforced||n.saving},on:{"update:checked":function(e){n.hasExpirationDate=e},uncheck:n.onExpirationDisable}},[n._v("\n\t\t\t\t\t"+n._s(n.config.isDefaultExpireDateEnforced?n.t("files_sharing","Expiration date (enforced)"):n.t("files_sharing","Set expiration date"))+"\n\t\t\t\t")]),n._v(" "),n.hasExpirationDate?t("ActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.expireDate,show:n.errors.expireDate,trigger:"manual",defaultContainer:"#app-sidebar"},expression:"{\n\t\t\t\t\t\tcontent: errors.expireDate,\n\t\t\t\t\t\tshow: errors.expireDate,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}",modifiers:{auto:!0}}],ref:"expireDate",staticClass:"share-link-expire-date",class:{error:n.errors.expireDate},attrs:{disabled:n.saving,lang:n.lang,value:n.share.expireDate,"value-type":"format",icon:"icon-calendar-dark",type:"date","disabled-date":n.disabledDate},on:{"update:value":n.onExpirationChange}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Enter a date"))+"\n\t\t\t\t")]):n._e(),n._v(" "),t("ActionCheckbox",{attrs:{checked:n.hasNote,disabled:n.saving},on:{"update:checked":function(e){n.hasNote=e},uncheck:function(e){return n.queueUpdate("note")}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Note to recipient"))+"\n\t\t\t\t")]),n._v(" "),n.hasNote?t("ActionTextEditable",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.note,show:n.errors.note,trigger:"manual",defaultContainer:"#app-sidebar"},expression:"{\n\t\t\t\t\t\tcontent: errors.note,\n\t\t\t\t\t\tshow: errors.note,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}",modifiers:{auto:!0}}],ref:"note",class:{error:n.errors.note},attrs:{disabled:n.saving,placeholder:n.t("files_sharing","Enter a note for the share recipient"),value:n.share.newNote||n.share.note,icon:"icon-edit"},on:{"update:value":n.onNoteChange,submit:n.onNoteSubmit}}):n._e()]:n._e(),n._v(" "),t("ActionSeparator"),n._v(" "),n._l(n.externalLinkActions,(function(e){return t("ExternalShareAction",{key:e.id,attrs:{id:e.id,action:e,"file-info":n.fileInfo,share:n.share}})})),n._v(" "),n._l(n.externalLegacyLinkActions,(function(e,r){var i=e.icon,a=e.url,s=e.name;return t("ActionLink",{key:r,attrs:{href:a(n.shareLink),icon:i,target:"_blank"}},[n._v("\n\t\t\t\t"+n._s(s)+"\n\t\t\t")])})),n._v(" "),n.share.canDelete?t("ActionButton",{attrs:{icon:"icon-close",disabled:n.saving},on:{click:function(e){return e.preventDefault(),n.onDelete.apply(null,arguments)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Unshare"))+"\n\t\t\t")]):n._e(),n._v(" "),!n.isEmailShareType&&n.canReshare?t("ActionButton",{staticClass:"new-share-link",attrs:{icon:"icon-add"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),n.onNewLinkShare.apply(null,arguments)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Add another link"))+"\n\t\t\t")]):n._e()]:n.canReshare?t("ActionButton",{staticClass:"new-share-link",attrs:{icon:n.loading?"icon-loading-small":"icon-add"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),n.onNewLinkShare.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Create a new share link"))+"\n\t\t")]):n._e()],2):t("Actions",{staticClass:"sharing-entry__actions",attrs:{"menu-align":"right",open:n.open},on:{"update:open":function(e){n.open=e},close:n.onNewLinkShare}},[n.errors.pending?t("ActionText",{class:{error:n.errors.pending},attrs:{icon:"icon-error"}},[n._v("\n\t\t\t"+n._s(n.errors.pending)+"\n\t\t")]):t("ActionText",{attrs:{icon:"icon-info"}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Please enter the following required information before creating the share"))+"\n\t\t")]),n._v(" "),n.pendingPassword?t("ActionText",{attrs:{icon:"icon-password"}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Password protection (enforced)"))+"\n\t\t")]):n.config.enableLinkPasswordByDefault?t("ActionCheckbox",{staticClass:"share-link-password-checkbox",attrs:{checked:n.isPasswordProtected,disabled:n.config.enforcePasswordForPublicLink||n.saving},on:{"update:checked":function(e){n.isPasswordProtected=e},uncheck:n.onPasswordDisable}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Password protection"))+"\n\t\t")]):n._e(),n._v(" "),n.pendingPassword||n.share.password?t("ActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.password,show:n.errors.password,trigger:"manual",defaultContainer:"#app-sidebar"},expression:"{\n\t\t\t\tcontent: errors.password,\n\t\t\t\tshow: errors.password,\n\t\t\t\ttrigger: 'manual',\n\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t}",modifiers:{auto:!0}}],staticClass:"share-link-password",attrs:{value:n.share.password,disabled:n.saving,required:n.config.enableLinkPasswordByDefault||n.config.enforcePasswordForPublicLink,minlength:n.isPasswordPolicyEnabled&&n.config.passwordPolicy.minLength,icon:"",autocomplete:"new-password"},on:{"update:value":function(e){return n.$set(n.share,"password",e)},submit:n.onNewLinkShare}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Enter a password"))+"\n\t\t")]):n._e(),n._v(" "),n.pendingExpirationDate?t("ActionText",{attrs:{icon:"icon-calendar-dark"}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Expiration date (enforced)"))+"\n\t\t")]):n._e(),n._v(" "),n.pendingExpirationDate?t("ActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.expireDate,show:n.errors.expireDate,trigger:"manual",defaultContainer:"#app-sidebar"},expression:"{\n\t\t\t\tcontent: errors.expireDate,\n\t\t\t\tshow: errors.expireDate,\n\t\t\t\ttrigger: 'manual',\n\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t}",modifiers:{auto:!0}}],staticClass:"share-link-expire-date",attrs:{disabled:n.saving,lang:n.lang,icon:"",type:"date","value-type":"format","disabled-date":n.disabledDate},model:{value:n.share.expireDate,callback:function(e){n.$set(n.share,"expireDate",e)},expression:"share.expireDate"}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Enter a date"))+"\n\t\t")]):n._e(),n._v(" "),t("ActionButton",{attrs:{icon:"icon-checkmark"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),n.onNewLinkShare.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Create share"))+"\n\t\t")]),n._v(" "),t("ActionButton",{attrs:{icon:"icon-close"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),n.onCancel.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Cancel"))+"\n\t\t")])],1)],1)}),[],!1,null,"a63eeae4",null),Ae={name:"SharingLinkList",components:{SharingEntryLink:_e.exports},mixins:[_],props:{fileInfo:{type:Object,default:function(){},required:!0},shares:{type:Array,default:function(){return[]},required:!0},canReshare:{type:Boolean,required:!0}},data:function(){return{canLinkShare:OC.getCapabilities().files_sharing.public.enabled}},computed:{hasLinkShares:function(){var n=this;return this.shares.filter((function(e){return e.type===n.SHARE_TYPES.SHARE_TYPE_LINK})).length>0},hasShares:function(){return this.shares.length>0}},methods:{addShare:function(n,e){this.shares.unshift(n),this.awaitForShare(n,e)},awaitForShare:function(n,e){var t=this;this.$nextTick((function(){var r=t.$children.find((function(e){return e.share===n}));r&&e(r)}))},removeShare:function(n){var e=this.shares.findIndex((function(e){return e===n}));this.shares.splice(e,1)}}},ye=(0,B.Z)(Ae,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return n.canLinkShare?t("ul",{staticClass:"sharing-link-list"},[!n.hasLinkShares&&n.canReshare?t("SharingEntryLink",{attrs:{"can-reshare":n.canReshare,"file-info":n.fileInfo},on:{"add:share":n.addShare}}):n._e(),n._v(" "),n.hasShares?n._l(n.shares,(function(e,r){return t("SharingEntryLink",{key:e.id,attrs:{"can-reshare":n.canReshare,share:n.shares[r],"file-info":n.fileInfo},on:{"update:share":[function(e){return n.$set(n.shares,r,e)},function(e){return n.awaitForShare.apply(void 0,arguments)}],"add:share":function(e){return n.addShare.apply(void 0,arguments)},"remove:share":n.removeShare}})})):n._e()],2):n._e()}),[],!1,null,null,null),Ee=ye.exports;function we(n){return we="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},we(n)}var be={name:"SharingEntry",components:{Actions:w(),ActionButton:bn(),ActionCheckbox:Fn(),ActionInput:Zn(),ActionTextEditable:Qn(),Avatar:h()},directives:{Tooltip:S()},mixins:[Dn],data:function(){return{permissionsEdit:OC.PERMISSION_UPDATE,permissionsCreate:OC.PERMISSION_CREATE,permissionsDelete:OC.PERMISSION_DELETE,permissionsRead:OC.PERMISSION_READ,permissionsShare:OC.PERMISSION_SHARE}},computed:{title:function(){var n=this.share.shareWithDisplayName;return this.share.type===this.SHARE_TYPES.SHARE_TYPE_GROUP?n+=" (".concat(t("files_sharing","group"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_ROOM?n+=" (".concat(t("files_sharing","conversation"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE?n+=" (".concat(t("files_sharing","remote"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP?n+=" (".concat(t("files_sharing","remote group"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_GUEST&&(n+=" (".concat(t("files_sharing","guest"),")")),n},tooltip:function(){if(this.share.owner!==this.share.uidFileOwner){var n={user:this.share.shareWithDisplayName,owner:this.share.ownerDisplayName};return this.share.type===this.SHARE_TYPES.SHARE_TYPE_GROUP?t("files_sharing","Shared with the group {user} by {owner}",n):this.share.type===this.SHARE_TYPES.SHARE_TYPE_ROOM?t("files_sharing","Shared with the conversation {user} by {owner}",n):t("files_sharing","Shared with {user} by {owner}",n)}return null},canHaveNote:function(){return!this.isRemote},isRemote:function(){return this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE||this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP},canSetEdit:function(){return this.fileInfo.sharePermissions&OC.PERMISSION_UPDATE||this.canEdit},canSetCreate:function(){return this.fileInfo.sharePermissions&OC.PERMISSION_CREATE||this.canCreate},canSetDelete:function(){return this.fileInfo.sharePermissions&OC.PERMISSION_DELETE||this.canDelete},canSetReshare:function(){return this.fileInfo.sharePermissions&OC.PERMISSION_SHARE||this.canReshare},canEdit:{get:function(){return this.share.hasUpdatePermission},set:function(n){this.updatePermissions({isEditChecked:n})}},canCreate:{get:function(){return this.share.hasCreatePermission},set:function(n){this.updatePermissions({isCreateChecked:n})}},canDelete:{get:function(){return this.share.hasDeletePermission},set:function(n){this.updatePermissions({isDeleteChecked:n})}},canReshare:{get:function(){return this.share.hasSharePermission},set:function(n){this.updatePermissions({isReshareChecked:n})}},hasRead:{get:function(){return this.share.hasReadPermission}},isFolder:function(){return"dir"===this.fileInfo.type},hasExpirationDate:{get:function(){return this.config.isDefaultInternalExpireDateEnforced||!!this.share.expireDate},set:function(n){this.share.expireDate=n?""!==this.config.defaultInternalExpirationDateString?this.config.defaultInternalExpirationDateString:moment().format("YYYY-MM-DD"):""}},dateMaxEnforced:function(){return this.isRemote?this.config.isDefaultRemoteExpireDateEnforced&&moment().add(1+this.config.defaultRemoteExpireDate,"days"):this.config.isDefaultInternalExpireDateEnforced&&moment().add(1+this.config.defaultInternalExpireDate,"days")},hasStatus:function(){return this.share.type===this.SHARE_TYPES.SHARE_TYPE_USER&&"object"===we(this.share.status)&&!Array.isArray(this.share.status)}},methods:{updatePermissions:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=n.isEditChecked,t=void 0===e?this.canEdit:e,r=n.isCreateChecked,i=void 0===r?this.canCreate:r,a=n.isDeleteChecked,s=void 0===a?this.canDelete:a,o=n.isReshareChecked,c=void 0===o?this.canReshare:o,l=0|(this.hasRead?this.permissionsRead:0)|(i?this.permissionsCreate:0)|(s?this.permissionsDelete:0)|(t?this.permissionsEdit:0)|(c?this.permissionsShare:0);this.share.permissions=l,this.queueUpdate("permissions")},onMenuClose:function(){this.onNoteSubmit()}}},Se=be,Ce=r(4623),xe={};xe.styleTagTransform=H(),xe.setAttributes=I(),xe.insert=R().bind(null,"head"),xe.domAPI=T(),xe.insertStyleElement=N(),k()(Ce.Z,xe),Ce.Z&&Ce.Z.locals&&Ce.Z.locals;var ke=(0,B.Z)(Se,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("li",{staticClass:"sharing-entry"},[t("Avatar",{staticClass:"sharing-entry__avatar",attrs:{"is-no-user":n.share.type!==n.SHARE_TYPES.SHARE_TYPE_USER,user:n.share.shareWith,"display-name":n.share.shareWithDisplayName,"tooltip-message":n.share.type===n.SHARE_TYPES.SHARE_TYPE_USER?n.share.shareWith:"","menu-position":"left",url:n.share.shareWithAvatar}}),n._v(" "),t(n.share.shareWithLink?"a":"div",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:n.tooltip,expression:"tooltip",modifiers:{auto:!0}}],tag:"component",staticClass:"sharing-entry__desc",attrs:{href:n.share.shareWithLink}},[t("h5",[n._v(n._s(n.title)),n.isUnique?n._e():t("span",{staticClass:"sharing-entry__desc-unique"},[n._v(" ("+n._s(n.share.shareWithDisplayNameUnique)+")")])]),n._v(" "),n.hasStatus?t("p",[t("span",[n._v(n._s(n.share.status.icon||""))]),n._v(" "),t("span",[n._v(n._s(n.share.status.message||""))])]):n._e()]),n._v(" "),t("Actions",{staticClass:"sharing-entry__actions",attrs:{"menu-align":"right"},on:{close:n.onMenuClose}},[n.share.canEdit?[t("ActionCheckbox",{ref:"canEdit",attrs:{checked:n.canEdit,value:n.permissionsEdit,disabled:n.saving||!n.canSetEdit},on:{"update:checked":function(e){n.canEdit=e}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Allow editing"))+"\n\t\t\t")]),n._v(" "),n.isFolder?t("ActionCheckbox",{ref:"canCreate",attrs:{checked:n.canCreate,value:n.permissionsCreate,disabled:n.saving||!n.canSetCreate},on:{"update:checked":function(e){n.canCreate=e}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Allow creating"))+"\n\t\t\t")]):n._e(),n._v(" "),n.isFolder?t("ActionCheckbox",{ref:"canDelete",attrs:{checked:n.canDelete,value:n.permissionsDelete,disabled:n.saving||!n.canSetDelete},on:{"update:checked":function(e){n.canDelete=e}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Allow deleting"))+"\n\t\t\t")]):n._e(),n._v(" "),n.config.isResharingAllowed?t("ActionCheckbox",{ref:"canReshare",attrs:{checked:n.canReshare,value:n.permissionsShare,disabled:n.saving||!n.canSetReshare},on:{"update:checked":function(e){n.canReshare=e}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Allow resharing"))+"\n\t\t\t")]):n._e(),n._v(" "),t("ActionCheckbox",{attrs:{checked:n.hasExpirationDate,disabled:n.config.isDefaultInternalExpireDateEnforced||n.saving},on:{"update:checked":function(e){n.hasExpirationDate=e},uncheck:n.onExpirationDisable}},[n._v("\n\t\t\t\t"+n._s(n.config.isDefaultInternalExpireDateEnforced?n.t("files_sharing","Expiration date enforced"):n.t("files_sharing","Set expiration date"))+"\n\t\t\t")]),n._v(" "),n.hasExpirationDate?t("ActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.expireDate,show:n.errors.expireDate,trigger:"manual"},expression:"{\n\t\t\t\t\tcontent: errors.expireDate,\n\t\t\t\t\tshow: errors.expireDate,\n\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t}",modifiers:{auto:!0}}],ref:"expireDate",class:{error:n.errors.expireDate},attrs:{disabled:n.saving,lang:n.lang,value:n.share.expireDate,"value-type":"format",icon:"icon-calendar-dark",type:"date","disabled-date":n.disabledDate},on:{"update:value":n.onExpirationChange}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Enter a date"))+"\n\t\t\t")]):n._e(),n._v(" "),n.canHaveNote?[t("ActionCheckbox",{attrs:{checked:n.hasNote,disabled:n.saving},on:{"update:checked":function(e){n.hasNote=e},uncheck:function(e){return n.queueUpdate("note")}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Note to recipient"))+"\n\t\t\t\t")]),n._v(" "),n.hasNote?t("ActionTextEditable",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.note,show:n.errors.note,trigger:"manual"},expression:"{\n\t\t\t\t\t\tcontent: errors.note,\n\t\t\t\t\t\tshow: errors.note,\n\t\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t\t}",modifiers:{auto:!0}}],ref:"note",class:{error:n.errors.note},attrs:{disabled:n.saving,value:n.share.newNote||n.share.note,icon:"icon-edit"},on:{"update:value":n.onNoteChange,submit:n.onNoteSubmit}}):n._e()]:n._e()]:n._e(),n._v(" "),n.share.canDelete?t("ActionButton",{attrs:{icon:"icon-close",disabled:n.saving},on:{click:function(e){return e.preventDefault(),n.onDelete.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Unshare"))+"\n\t\t")]):n._e()],2)],1)}),[],!1,null,"11f6b64f",null);function Pe(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=new Array(e);t<e;t++)r[t]=n[t];return r}var Te={name:"SharingList",components:{SharingEntry:ke.exports},mixins:[_],props:{fileInfo:{type:Object,default:function(){},required:!0},shares:{type:Array,default:function(){return[]},required:!0}},computed:{hasShares:function(){return 0===this.shares.length},isUnique:function(){var n=this;return function(e){return(t=n.shares,function(n){if(Array.isArray(n))return Pe(n)}(t)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(t)||function(n,e){if(n){if("string"==typeof n)return Pe(n,e);var t=Object.prototype.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?Pe(n,e):void 0}}(t)||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.")}()).filter((function(t){return e.type===n.SHARE_TYPES.SHARE_TYPE_USER&&e.shareWithDisplayName===t.shareWithDisplayName})).length<=1;var t}}},methods:{removeShare:function(n){var e=this.shares.findIndex((function(e){return e===n}));this.shares.splice(e,1)}}},De=(0,B.Z)(Te,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("ul",{staticClass:"sharing-sharee-list"},n._l(n.shares,(function(e){return t("SharingEntry",{key:e.id,attrs:{"file-info":n.fileInfo,share:e,"is-unique":n.isUnique(e)},on:{"remove:share":n.removeShare}})})),1)}),[],!1,null,null,null).exports;function Re(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=new Array(e);t<e;t++)r[t]=n[t];return r}function Oe(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function Ie(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){Oe(a,r,i,s,o,"next",n)}function o(n){Oe(a,r,i,s,o,"throw",n)}s(void 0)}))}}var Le={name:"SharingTab",components:{Avatar:h(),CollectionList:c.G,SharingEntryInternal:K,SharingEntrySimple:j,SharingInherited:Wn,SharingInput:En,SharingLinkList:Ee,SharingList:De},mixins:[_],data:function(){return{config:new p,error:"",expirationInterval:null,loading:!0,fileInfo:null,reshare:null,sharedWithMe:{},shares:[],linkShares:[],sections:OCA.Sharing.ShareTabSections.getSections()}},computed:{isSharedWithMe:function(){return Object.keys(this.sharedWithMe).length>0},canReshare:function(){return!!(this.fileInfo.permissions&OC.PERMISSION_SHARE)||!!(this.reshare&&this.reshare.hasSharePermission&&this.config.isResharingAllowed)}},methods:{update:function(n){var e=this;return Ie(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:e.fileInfo=n,e.resetState(),e.getShares();case 3:case"end":return t.stop()}}),t)})))()},getShares:function(){var n=this;return Ie(regeneratorRuntime.mark((function e(){var r,i,a,s,o,c,u,h,f;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,n.loading=!0,r=(0,l.generateOcsUrl)("apps/files_sharing/api/v1/shares"),i="json",a=(n.fileInfo.path+"/"+n.fileInfo.name).replace("//","/"),s=d.default.get(r,{params:{format:i,path:a,reshares:!0}}),o=d.default.get(r,{params:{format:i,path:a,shared_with_me:!0}}),e.next=9,Promise.all([s,o]);case 9:c=e.sent,g=2,u=function(n){if(Array.isArray(n))return n}(p=c)||function(n,e){var t=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=t){var r,i,a=[],s=!0,o=!1;try{for(t=t.call(n);!(s=(r=t.next()).done)&&(a.push(r.value),!e||a.length!==e);s=!0);}catch(n){o=!0,i=n}finally{try{s||null==t.return||t.return()}finally{if(o)throw i}}return a}}(p,g)||function(n,e){if(n){if("string"==typeof n)return Re(n,e);var t=Object.prototype.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?Re(n,e):void 0}}(p,g)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),h=u[0],f=u[1],n.loading=!1,n.processSharedWithMe(f),n.processShares(h),e.next=23;break;case 18:e.prev=18,e.t0=e.catch(0),n.error=t("files_sharing","Unable to load the shares list"),n.loading=!1,console.error("Error loading the shares list",e.t0);case 23:case"end":return e.stop()}var p,g}),e,null,[[0,18]])})))()},resetState:function(){clearInterval(this.expirationInterval),this.loading=!0,this.error="",this.sharedWithMe={},this.shares=[],this.linkShares=[]},updateExpirationSubtitle:function(n){var e=moment(n.expireDate).unix();this.$set(this.sharedWithMe,"subtitle",t("files_sharing","Expires {relativetime}",{relativetime:OC.Util.relativeModifiedDate(1e3*e)})),moment().unix()>e&&(clearInterval(this.expirationInterval),this.$set(this.sharedWithMe,"subtitle",t("files_sharing","this share just expired.")))},processShares:function(n){var e=this,t=n.data;if(t.ocs&&t.ocs.data&&t.ocs.data.length>0){var r=t.ocs.data.map((function(n){return new v(n)})).sort((function(n,e){return e.createdTime-n.createdTime}));this.linkShares=r.filter((function(n){return n.type===e.SHARE_TYPES.SHARE_TYPE_LINK||n.type===e.SHARE_TYPES.SHARE_TYPE_EMAIL})),this.shares=r.filter((function(n){return n.type!==e.SHARE_TYPES.SHARE_TYPE_LINK&&n.type!==e.SHARE_TYPES.SHARE_TYPE_EMAIL})),console.debug("Processed",this.linkShares.length,"link share(s)"),console.debug("Processed",this.shares.length,"share(s)")}},processSharedWithMe:function(n){var e=n.data;if(e.ocs&&e.ocs.data&&e.ocs.data[0]){var r=new v(e),i=function(n){return n.type===g.D.SHARE_TYPE_GROUP?t("files_sharing","Shared with you and the group {group} by {owner}",{group:n.shareWithDisplayName,owner:n.ownerDisplayName},void 0,{escape:!1}):n.type===g.D.SHARE_TYPE_CIRCLE?t("files_sharing","Shared with you and {circle} by {owner}",{circle:n.shareWithDisplayName,owner:n.ownerDisplayName},void 0,{escape:!1}):n.type===g.D.SHARE_TYPE_ROOM?n.shareWithDisplayName?t("files_sharing","Shared with you and the conversation {conversation} by {owner}",{conversation:n.shareWithDisplayName,owner:n.ownerDisplayName},void 0,{escape:!1}):t("files_sharing","Shared with you in a conversation by {owner}",{owner:n.ownerDisplayName},void 0,{escape:!1}):t("files_sharing","Shared with you by {owner}",{owner:n.ownerDisplayName},void 0,{escape:!1})}(r),a=r.ownerDisplayName,s=r.owner;this.sharedWithMe={displayName:a,title:i,user:s},this.reshare=r,r.expireDate&&moment(r.expireDate).unix()>moment().unix()&&(this.updateExpirationSubtitle(r),this.expirationInterval=setInterval(this.updateExpirationSubtitle,1e4,r))}else this.fileInfo&&void 0!==this.fileInfo.shareOwnerId&&this.fileInfo.shareOwnerId!==OC.currentUser&&(this.sharedWithMe={displayName:this.fileInfo.shareOwner,title:t("files_sharing","Shared with you by {owner}",{owner:this.fileInfo.shareOwner},void 0,{escape:!1}),user:this.fileInfo.shareOwnerId})},addShare:function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){};n.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL?this.linkShares.unshift(n):this.shares.unshift(n),this.awaitForShare(n,e)},awaitForShare:function(n,e){var t=this.$refs.shareList;n.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL&&(t=this.$refs.linkShareList),this.$nextTick((function(){var r=t.$children.find((function(e){return e.share===n}));r&&e(r)}))}}},Ne=Le,Ye=(0,B.Z)(Ne,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("div",{class:{"icon-loading":n.loading}},[n.error?t("div",{staticClass:"emptycontent"},[t("div",{staticClass:"icon icon-error"}),n._v(" "),t("h2",[n._v(n._s(n.error))])]):[n.isSharedWithMe?t("SharingEntrySimple",n._b({staticClass:"sharing-entry__reshare",scopedSlots:n._u([{key:"avatar",fn:function(){return[t("Avatar",{staticClass:"sharing-entry__avatar",attrs:{user:n.sharedWithMe.user,"display-name":n.sharedWithMe.displayName,"tooltip-message":""}})]},proxy:!0}],null,!1,1643724538)},"SharingEntrySimple",n.sharedWithMe,!1)):n._e(),n._v(" "),n.loading?n._e():t("SharingInput",{attrs:{"can-reshare":n.canReshare,"file-info":n.fileInfo,"link-shares":n.linkShares,reshare:n.reshare,shares:n.shares},on:{"add:share":n.addShare}}),n._v(" "),n.loading?n._e():t("SharingLinkList",{ref:"linkShareList",attrs:{"can-reshare":n.canReshare,"file-info":n.fileInfo,shares:n.linkShares}}),n._v(" "),n.loading?n._e():t("SharingList",{ref:"shareList",attrs:{shares:n.shares,"file-info":n.fileInfo}}),n._v(" "),n.canReshare&&!n.loading?t("SharingInherited",{attrs:{"file-info":n.fileInfo}}):n._e(),n._v(" "),t("SharingEntryInternal",{attrs:{"file-info":n.fileInfo}}),n._v(" "),n.fileInfo?t("CollectionList",{attrs:{id:""+n.fileInfo.id,type:"file",name:n.fileInfo.name}}):n._e(),n._v(" "),n._l(n.sections,(function(e,r){return t("div",{key:r,ref:"section-"+r,refInFor:!0,staticClass:"sharingTab__additionalContent"},[t(e(n.$refs["section-"+r],n.fileInfo),{tag:"component",attrs:{"file-info":n.fileInfo}})],1)}))]],2)}),[],!1,null,null,null).exports;function He(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var Ue=function(){function n(){var e,t;!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),t=void 0,(e="_state")in this?Object.defineProperty(this,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):this[e]=t,this._state={},this._state.results=[],console.debug("OCA.Sharing.ShareSearch initialized")}var e,t;return e=n,(t=[{key:"state",get:function(){return this._state}},{key:"addNewResult",value:function(n){return""!==n.displayName.trim()&&"function"==typeof n.handler?(this._state.results.push(n),!0):(console.error("Invalid search result provided",n),!1)}}])&&He(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}();function Me(n){return Me="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},Me(n)}function Be(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var je=function(){function n(){var e,t;!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),t=void 0,(e="_state")in this?Object.defineProperty(this,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):this[e]=t,this._state={},this._state.actions=[],console.debug("OCA.Sharing.ExternalLinkActions initialized")}var e,t;return e=n,(t=[{key:"state",get:function(){return this._state}},{key:"registerAction",value:function(n){return console.warn("OCA.Sharing.ExternalLinkActions is deprecated, use OCA.Sharing.ExternalShareAction instead"),"object"===Me(n)&&n.icon&&n.name&&n.url?(this._state.actions.push(n),!0):(console.error("Invalid action provided",n),!1)}}])&&Be(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}();function We(n){return We="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},We(n)}function qe(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var Fe=function(){function n(){var e,t;!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),t=void 0,(e="_state")in this?Object.defineProperty(this,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):this[e]=t,this._state={},this._state.actions=[],console.debug("OCA.Sharing.ExternalShareActions initialized")}var e,t;return e=n,(t=[{key:"state",get:function(){return this._state}},{key:"registerAction",value:function(n){return"object"===We(n)&&"string"==typeof n.id&&"function"==typeof n.data&&Array.isArray(n.shareType)&&"object"===We(n.handlers)&&Object.values(n.handlers).every((function(n){return"function"==typeof n}))?this._state.actions.findIndex((function(e){return e.id===n.id}))>-1?(console.error("An action with the same id ".concat(n.id," already exists"),n),!1):(this._state.actions.push(n),!0):(console.error("Invalid action provided",n),!1)}}])&&qe(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}();function $e(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var Ze=function(){function n(){var e,t;!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),t=void 0,(e="_sections")in this?Object.defineProperty(this,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):this[e]=t,this._sections=[]}var e,t;return e=n,(t=[{key:"registerSection",value:function(n){this._sections.push(n)}},{key:"getSections",value:function(){return this._sections}}])&&$e(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}();function Ge(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}window.OCA.Sharing||(window.OCA.Sharing={}),Object.assign(window.OCA.Sharing,{ShareSearch:new Ue}),Object.assign(window.OCA.Sharing,{ExternalLinkActions:new je}),Object.assign(window.OCA.Sharing,{ExternalShareActions:new Fe}),Object.assign(window.OCA.Sharing,{ShareTabSections:new Ze}),i.default.prototype.t=o.translate,i.default.prototype.n=o.translatePlural,i.default.use(s());var Ke=i.default.extend(Ye),Ve=null;window.addEventListener("DOMContentLoaded",(function(){OCA.Files&&OCA.Files.Sidebar&&OCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({id:"sharing",name:(0,o.translate)("files_sharing","Sharing"),icon:"icon-share",mount:function(n,e,t){return(r=regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return Ve&&Ve.$destroy(),Ve=new Ke({parent:t}),r.next=4,Ve.update(e);case 4:Ve.$mount(n);case 5:case"end":return r.stop()}}),r)})),function(){var n=this,e=arguments;return new Promise((function(t,i){var a=r.apply(n,e);function s(n){Ge(a,t,i,s,o,"next",n)}function o(n){Ge(a,t,i,s,o,"throw",n)}s(void 0)}))})();var r},update:function(n){Ve.update(n)},destroy:function(){Ve.$destroy(),Ve=null}}))}))},32016:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".error[data-v-3d9cb67e] .action-checkbox__label:before{border:1px solid var(--color-error)}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharePermissionsEditor.vue"],names:[],mappings:"AA+RC,wDACC,mCAAA",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.error {\n\t::v-deep .action-checkbox__label:before {\n\t\tborder: 1px solid var(--color-error);\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},4623:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry[data-v-11f6b64f]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-11f6b64f]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-11f6b64f]{color:var(--color-text-maxcontrast)}.sharing-entry__desc-unique[data-v-11f6b64f]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-11f6b64f]{margin-left:auto}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntry.vue"],names:[],mappings:"AAsZA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAED,6CACC,mCAAA,CAGF,yCACC,gBAAA",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t\t&-unique {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},71296:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry[data-v-29845767]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-29845767]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-29845767]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-29845767]{margin-left:auto}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryInherited.vue"],names:[],mappings:"AAgGA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAGF,yCACC,gBAAA",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.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},52475:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry__internal .avatar-external[data-v-854dc2c6]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}.sharing-entry__internal .icon-checkmark-color[data-v-854dc2c6]{opacity:1}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryInternal.vue"],names:[],mappings:"AAwGC,2DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA,CAED,gEACC,SAAA",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.sharing-entry__internal {\n\t.avatar-external {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},53075:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry[data-v-a63eeae4]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-a63eeae4]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em;overflow:hidden}.sharing-entry__desc h5[data-v-a63eeae4]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.sharing-entry__desc p[data-v-a63eeae4]{color:var(--color-text-maxcontrast)}.sharing-entry:not(.sharing-entry--share) .sharing-entry__actions .new-share-link[data-v-a63eeae4]{border-top:1px solid var(--color-border)}.sharing-entry[data-v-a63eeae4] .avatar-link-share{background-color:var(--color-primary)}.sharing-entry .sharing-entry__action--public-upload[data-v-a63eeae4]{border-bottom:1px solid var(--color-border)}.sharing-entry__loading[data-v-a63eeae4]{width:44px;height:44px;margin:0;padding:14px;margin-left:auto}.sharing-entry .action-item[data-v-a63eeae4]{margin-left:auto}.sharing-entry .action-item~.action-item[data-v-a63eeae4],.sharing-entry .action-item~.sharing-entry__loading[data-v-a63eeae4]{margin-left:0}.sharing-entry .icon-checkmark-color[data-v-a63eeae4]{opacity:1}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryLink.vue"],names:[],mappings:"AAy2BA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,eAAA,CAEA,yCACC,sBAAA,CACA,eAAA,CACA,kBAAA,CAED,wCACC,mCAAA,CAKD,mGACC,wCAAA,CAIF,oDACC,qCAAA,CAGD,sEACC,2CAAA,CAGD,yCACC,UAAA,CACA,WAAA,CACA,QAAA,CACA,YAAA,CACA,gBAAA,CAKD,6CACC,gBAAA,CACA,+HAEC,aAAA,CAIF,sDACC,SAAA",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\toverflow: hidden;\n\n\t\th5 {\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow: hidden;\n\t\t\twhite-space: nowrap;\n\t\t}\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\n\t&:not(.sharing-entry--share) &__actions {\n\t\t.new-share-link {\n\t\t\tborder-top: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t::v-deep .avatar-link-share {\n\t\tbackground-color: var(--color-primary);\n\t}\n\n\t.sharing-entry__action--public-upload {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\n\t&__loading {\n\t\twidth: 44px;\n\t\theight: 44px;\n\t\tmargin: 0;\n\t\tpadding: 14px;\n\t\tmargin-left: auto;\n\t}\n\n\t// put menus to the left\n\t// but only the first one\n\t.action-item {\n\t\tmargin-left: auto;\n\t\t~ .action-item,\n\t\t~ .sharing-entry__loading {\n\t\t\tmargin-left: 0;\n\t\t}\n\t}\n\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},35917:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry[data-v-1436bf4a]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-1436bf4a]{padding:8px;line-height:1.2em;position:relative;flex:1 1;min-width:0}.sharing-entry__desc h5[data-v-1436bf4a]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:inherit}.sharing-entry__desc p[data-v-1436bf4a]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-1436bf4a]{margin-left:auto !important}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntrySimple.vue"],names:[],mappings:"AA4EA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,WAAA,CACA,iBAAA,CACA,iBAAA,CACA,QAAA,CACA,WAAA,CACA,yCACC,kBAAA,CACA,sBAAA,CACA,eAAA,CACA,iBAAA,CAED,wCACC,mCAAA,CAGF,yCACC,2BAAA",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.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tposition: relative;\n\t\tflex: 1 1;\n\t\tmin-width: 0;\n\t\th5 {\n\t\t\twhite-space: nowrap;\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow: hidden;\n\t\t\tmax-width: inherit;\n\t\t}\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto !important;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},84721:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-input{width:100%;margin:10px 0}.sharing-input .multiselect__option span[lookup] .avatardiv{background-image:var(--icon-search-fff);background-repeat:no-repeat;background-position:center;background-color:var(--color-text-maxcontrast) !important}.sharing-input .multiselect__option span[lookup] .avatardiv div{display:none}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingInput.vue"],names:[],mappings:"AA0gBA,eACC,UAAA,CACA,aAAA,CAKE,4DACC,uCAAA,CACA,2BAAA,CACA,0BAAA,CACA,yDAAA,CACA,gEACC,YAAA",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-input {\n\twidth: 100%;\n\tmargin: 10px 0;\n\n\t// properly style the lookup entry\n\t.multiselect__option {\n\t\tspan[lookup] {\n\t\t\t.avatardiv {\n\t\t\t\tbackground-image: var(--icon-search-fff);\n\t\t\t\tbackground-repeat: no-repeat;\n\t\t\t\tbackground-position: center;\n\t\t\t\tbackground-color: var(--color-text-maxcontrast) !important;\n\t\t\t\tdiv {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},93591:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry__inherited .avatar-shared[data-v-49ffd834]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}","",{version:3,sources:["webpack://./apps/files_sharing/src/views/SharingInherited.vue"],names:[],mappings:"AA6JC,0DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA",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.sharing-entry__inherited {\n\t.avatar-shared {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s}},r={};function i(n){var t=r[n];if(void 0!==t)return t.exports;var a=r[n]={id:n,loaded:!1,exports:{}};return e[n].call(a.exports,a,a.exports,i),a.loaded=!0,a.exports}i.m=e,i.amdD=function(){throw new Error("define cannot be used indirect")},i.amdO={},n=[],i.O=function(e,t,r,a){if(!t){var s=1/0;for(u=0;u<n.length;u++){t=n[u][0],r=n[u][1],a=n[u][2];for(var o=!0,c=0;c<t.length;c++)(!1&a||s>=a)&&Object.keys(i.O).every((function(n){return i.O[n](t[c])}))?t.splice(c--,1):(o=!1,a<s&&(s=a));if(o){n.splice(u--,1);var l=r();void 0!==l&&(e=l)}}return e}a=a||0;for(var u=n.length;u>0&&n[u-1][2]>a;u--)n[u]=n[u-1];n[u]=[t,r,a]},i.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return i.d(e,{a:e}),e},i.d=function(n,e){for(var t in e)i.o(e,t)&&!i.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:e[t]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),i.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},i.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},i.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n},i.j=7870,function(){i.b=document.baseURI||self.location.href;var n={7870:0};i.O.j=function(e){return 0===n[e]};var e=function(e,t){var r,a,s=t[0],o=t[1],c=t[2],l=0;if(s.some((function(e){return 0!==n[e]}))){for(r in o)i.o(o,r)&&(i.m[r]=o[r]);if(c)var u=c(i)}for(e&&e(t);l<s.length;l++)a=s[l],i.o(n,a)&&n[a]&&n[a][0](),n[a]=0;return i.O(u)},t=self.webpackChunknextcloud=self.webpackChunknextcloud||[];t.forEach(e.bind(null,0)),t.push=e.bind(null,t.push.bind(t))}(),i.nc=void 0;var a=i.O(void 0,[7874],(function(){return i(13610)}));a=i.O(a)}();
+//# sourceMappingURL=files_sharing-files_sharing_tab.js.map?v=de45dd2340780990f033 \ No newline at end of file
diff --git a/dist/files_sharing-files_sharing_tab.js.map b/dist/files_sharing-files_sharing_tab.js.map
index 10095c54c4c..a27761095d7 100644
--- a/dist/files_sharing-files_sharing_tab.js.map
+++ b/dist/files_sharing-files_sharing_tab.js.map
@@ -1 +1 @@
-{"version":3,"file":"files_sharing-files_sharing_tab.js?v=e2141f7c5adfd38162b4","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/files_sharing/src/services/ConfigService.js","webpack:///nextcloud/apps/files_sharing/src/models/Share.js","webpack:///nextcloud/apps/files_sharing/src/mixins/ShareTypes.js","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntrySimple.vue?924c","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntrySimple.vue?cb12","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=template&id=1436bf4a&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?d9e2","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?4c20","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue?vue&type=template&id=854dc2c6&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/utils/GeneratePassword.js","webpack:///nextcloud/apps/files_sharing/src/mixins/ShareRequests.js","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingInput.vue?1f8b","webpack://nextcloud/./apps/files_sharing/src/components/SharingInput.vue?3d7c","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=template&id=6c96bdca&","webpack:///nextcloud/apps/files_sharing/src/mixins/SharesMixin.js","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInherited.vue?b36f","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInherited.vue?0e5a","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue?vue&type=template&id=29845767&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/views/SharingInherited.vue?ec0b","webpack://nextcloud/./apps/files_sharing/src/views/SharingInherited.vue?1677","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue?vue&type=template&id=49ffd834&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/ExternalShareAction.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/components/ExternalShareAction.vue","webpack://nextcloud/./apps/files_sharing/src/components/ExternalShareAction.vue?9bf3","webpack:///nextcloud/apps/files_sharing/src/components/ExternalShareAction.vue?vue&type=template&id=29f555e7&","webpack:///nextcloud/apps/files_sharing/src/lib/SharePermissionsToolBox.js","webpack:///nextcloud/apps/files_sharing/src/components/SharePermissionsEditor.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/components/SharePermissionsEditor.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharePermissionsEditor.vue?dc54","webpack://nextcloud/./apps/files_sharing/src/components/SharePermissionsEditor.vue?f133","webpack:///nextcloud/apps/files_sharing/src/components/SharePermissionsEditor.vue?vue&type=template&id=3d9cb67e&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryLink.vue?e9b7","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryLink.vue?af90","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue?vue&type=template&id=a63eeae4&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/views/SharingLinkList.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/views/SharingLinkList.vue","webpack://nextcloud/./apps/files_sharing/src/views/SharingLinkList.vue?a70b","webpack:///nextcloud/apps/files_sharing/src/views/SharingLinkList.vue?vue&type=template&id=8be1a6a2&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntry.vue?66a9","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntry.vue?10a7","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue?vue&type=template&id=11f6b64f&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/views/SharingList.vue","webpack:///nextcloud/apps/files_sharing/src/views/SharingList.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/views/SharingList.vue?9f9c","webpack:///nextcloud/apps/files_sharing/src/views/SharingList.vue?vue&type=template&id=0b29d4c0&","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue","webpack:///nextcloud/apps/files_sharing/src/utils/SharedWithMe.js","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/views/SharingTab.vue?6997","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue?vue&type=template&id=6b75002c&","webpack:///nextcloud/apps/files_sharing/src/services/ShareSearch.js","webpack:///nextcloud/apps/files_sharing/src/services/ExternalLinkActions.js","webpack:///nextcloud/apps/files_sharing/src/services/ExternalShareActions.js","webpack:///nextcloud/apps/files_sharing/src/services/TabSections.js","webpack:///nextcloud/apps/files_sharing/src/files_sharing_tab.js","webpack:///nextcloud/apps/files_sharing/src/components/SharePermissionsEditor.vue?vue&type=style&index=0&id=3d9cb67e&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue?vue&type=style&index=0&id=11f6b64f&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue?vue&type=style&index=0&id=29845767&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue?vue&type=style&index=0&id=854dc2c6&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue?vue&type=style&index=0&id=a63eeae4&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=style&index=0&id=1436bf4a&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=style&index=0&lang=scss&","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue?vue&type=style&index=0&id=49ffd834&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 Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nexport default class Config {\n\n\t/**\n\t * Is public upload allowed on link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isPublicUploadEnabled() {\n\t\treturn document.getElementById('filestable')\n\t\t\t&& document.getElementById('filestable').dataset.allowPublicUpload === 'yes'\n\t}\n\n\t/**\n\t * Are link share allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isShareWithLinkAllowed() {\n\t\treturn document.getElementById('allowShareWithLink')\n\t\t\t&& document.getElementById('allowShareWithLink').value === 'yes'\n\t}\n\n\t/**\n\t * Get the federated sharing documentation link\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget federatedShareDocLink() {\n\t\treturn OC.appConfig.core.federatedCloudShareDoc\n\t}\n\n\t/**\n\t * Get the default link share expiration date as string\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultExpirationDateString() {\n\t\tlet expireDateString = ''\n\t\tif (this.isDefaultExpireDateEnabled) {\n\t\t\tconst date = window.moment.utc()\n\t\t\tconst expireAfterDays = this.defaultExpireDate\n\t\t\tdate.add(expireAfterDays, 'days')\n\t\t\texpireDateString = date.format('YYYY-MM-DD')\n\t\t}\n\t\treturn expireDateString\n\t}\n\n\t/**\n\t * Get the default internal expiration date as string\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultInternalExpirationDateString() {\n\t\tlet expireDateString = ''\n\t\tif (this.isDefaultInternalExpireDateEnabled) {\n\t\t\tconst date = window.moment.utc()\n\t\t\tconst expireAfterDays = this.defaultInternalExpireDate\n\t\t\tdate.add(expireAfterDays, 'days')\n\t\t\texpireDateString = date.format('YYYY-MM-DD')\n\t\t}\n\t\treturn expireDateString\n\t}\n\n\t/**\n\t * Get the default remote expiration date as string\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultRemoteExpirationDateString() {\n\t\tlet expireDateString = ''\n\t\tif (this.isDefaultRemoteExpireDateEnabled) {\n\t\t\tconst date = window.moment.utc()\n\t\t\tconst expireAfterDays = this.defaultRemoteExpireDate\n\t\t\tdate.add(expireAfterDays, 'days')\n\t\t\texpireDateString = date.format('YYYY-MM-DD')\n\t\t}\n\t\treturn expireDateString\n\t}\n\n\t/**\n\t * Are link shares password-enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget enforcePasswordForPublicLink() {\n\t\treturn OC.appConfig.core.enforcePasswordForPublicLink === true\n\t}\n\n\t/**\n\t * Is password asked by default on link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget enableLinkPasswordByDefault() {\n\t\treturn OC.appConfig.core.enableLinkPasswordByDefault === true\n\t}\n\n\t/**\n\t * Is link shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is there a default expiration date for new link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultExpireDateEnabled() {\n\t\treturn OC.appConfig.core.defaultExpireDateEnabled === true\n\t}\n\n\t/**\n\t * Is internal shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultInternalExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is remote shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultRemoteExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultRemoteExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is there a default expiration date for new internal shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultInternalExpireDateEnabled() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDateEnabled === true\n\t}\n\n\t/**\n\t * Are users on this server allowed to send shares to other servers ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isRemoteShareAllowed() {\n\t\treturn OC.appConfig.core.remoteShareAllowed === true\n\t}\n\n\t/**\n\t * Is sharing my mail (link share) enabled ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isMailShareAllowed() {\n\t\tconst capabilities = OC.getCapabilities()\n\t\t// eslint-disable-next-line camelcase\n\t\treturn capabilities?.files_sharing?.sharebymail !== undefined\n\t\t\t// eslint-disable-next-line camelcase\n\t\t\t&& capabilities?.files_sharing?.public?.enabled === true\n\t}\n\n\t/**\n\t * Get the default days to link shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultExpireDate() {\n\t\treturn OC.appConfig.core.defaultExpireDate\n\t}\n\n\t/**\n\t * Get the default days to internal shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultInternalExpireDate() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDate\n\t}\n\n\t/**\n\t * Get the default days to remote shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultRemoteExpireDate() {\n\t\treturn OC.appConfig.core.defaultRemoteExpireDate\n\t}\n\n\t/**\n\t * Is resharing allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isResharingAllowed() {\n\t\treturn OC.appConfig.core.resharingAllowed === true\n\t}\n\n\t/**\n\t * Is password enforced for mail shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isPasswordForMailSharesRequired() {\n\t\treturn (OC.getCapabilities().files_sharing.sharebymail === undefined) ? false : OC.getCapabilities().files_sharing.sharebymail.password.enforced\n\t}\n\n\t/**\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget shouldAlwaysShowUnique() {\n\t\treturn (OC.getCapabilities().files_sharing?.sharee?.always_show_unique === true)\n\t}\n\n\t/**\n\t * Is sharing with groups allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget allowGroupSharing() {\n\t\treturn OC.appConfig.core.allowGroupSharing === true\n\t}\n\n\t/**\n\t * Get the maximum results of a share search\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget maxAutocompleteResults() {\n\t\treturn parseInt(OC.config['sharing.maxAutocompleteResults'], 10) || 25\n\t}\n\n\t/**\n\t * Get the minimal string length\n\t * to initiate a share search\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget minSearchStringLength() {\n\t\treturn parseInt(OC.config['sharing.minSearchStringLength'], 10) || 0\n\t}\n\n\t/**\n\t * Get the password policy config\n\t *\n\t * @return {object}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget passwordPolicy() {\n\t\tconst capabilities = OC.getCapabilities()\n\t\treturn capabilities.password_policy ? capabilities.password_policy : {}\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Gary Kim <gary@garykim.dev>\n * @author Georg Ehrke <oc.list@georgehrke.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nexport default class Share {\n\n\t_share\n\n\t/**\n\t * Create the share object\n\t *\n\t * @param {object} ocsData ocs request response\n\t */\n\tconstructor(ocsData) {\n\t\tif (ocsData.ocs && ocsData.ocs.data && ocsData.ocs.data[0]) {\n\t\t\tocsData = ocsData.ocs.data[0]\n\t\t}\n\n\t\t// convert int into boolean\n\t\tocsData.hide_download = !!ocsData.hide_download\n\t\tocsData.mail_send = !!ocsData.mail_send\n\n\t\t// store state\n\t\tthis._share = ocsData\n\t}\n\n\t/**\n\t * Get the share state\n\t * ! used for reactivity purpose\n\t * Do not remove. It allow vuejs to\n\t * inject its watchers into the #share\n\t * state and make the whole class reactive\n\t *\n\t * @return {object} the share raw state\n\t * @readonly\n\t * @memberof Sidebar\n\t */\n\tget state() {\n\t\treturn this._share\n\t}\n\n\t/**\n\t * get the share id\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget id() {\n\t\treturn this._share.id\n\t}\n\n\t/**\n\t * Get the share type\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget type() {\n\t\treturn this._share.share_type\n\t}\n\n\t/**\n\t * Get the share permissions\n\t * See OC.PERMISSION_* variables\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget permissions() {\n\t\treturn this._share.permissions\n\t}\n\n\t/**\n\t * Set the share permissions\n\t * See OC.PERMISSION_* variables\n\t *\n\t * @param {number} permissions valid permission, See OC.PERMISSION_* variables\n\t * @memberof Share\n\t */\n\tset permissions(permissions) {\n\t\tthis._share.permissions = permissions\n\t}\n\n\t// SHARE OWNER --------------------------------------------------\n\t/**\n\t * Get the share owner uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget owner() {\n\t\treturn this._share.uid_owner\n\t}\n\n\t/**\n\t * Get the share owner's display name\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget ownerDisplayName() {\n\t\treturn this._share.displayname_owner\n\t}\n\n\t// SHARED WITH --------------------------------------------------\n\t/**\n\t * Get the share with entity uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWith() {\n\t\treturn this._share.share_with\n\t}\n\n\t/**\n\t * Get the share with entity display name\n\t * fallback to its uid if none\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithDisplayName() {\n\t\treturn this._share.share_with_displayname\n\t\t\t|| this._share.share_with\n\t}\n\n\t/**\n\t * Unique display name in case of multiple\n\t * duplicates results with the same name.\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithDisplayNameUnique() {\n\t\treturn this._share.share_with_displayname_unique\n\t\t\t|| this._share.share_with\n\t}\n\n\t/**\n\t * Get the share with entity link\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithLink() {\n\t\treturn this._share.share_with_link\n\t}\n\n\t/**\n\t * Get the share with avatar if any\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithAvatar() {\n\t\treturn this._share.share_with_avatar\n\t}\n\n\t// SHARED FILE OR FOLDER OWNER ----------------------------------\n\t/**\n\t * Get the shared item owner uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget uidFileOwner() {\n\t\treturn this._share.uid_file_owner\n\t}\n\n\t/**\n\t * Get the shared item display name\n\t * fallback to its uid if none\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget displaynameFileOwner() {\n\t\treturn this._share.displayname_file_owner\n\t\t\t|| this._share.uid_file_owner\n\t}\n\n\t// TIME DATA ----------------------------------------------------\n\t/**\n\t * Get the share creation timestamp\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget createdTime() {\n\t\treturn this._share.stime\n\t}\n\n\t/**\n\t * Get the expiration date as a string format\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget expireDate() {\n\t\treturn this._share.expiration\n\t}\n\n\t/**\n\t * Set the expiration date as a string format\n\t * e.g. YYYY-MM-DD\n\t *\n\t * @param {string} date the share expiration date\n\t * @memberof Share\n\t */\n\tset expireDate(date) {\n\t\tthis._share.expiration = date\n\t}\n\n\t// EXTRA DATA ---------------------------------------------------\n\t/**\n\t * Get the public share token\n\t *\n\t * @return {string} the token\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget token() {\n\t\treturn this._share.token\n\t}\n\n\t/**\n\t * Get the share note if any\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget note() {\n\t\treturn this._share.note\n\t}\n\n\t/**\n\t * Set the share note if any\n\t *\n\t * @param {string} note the note\n\t * @memberof Share\n\t */\n\tset note(note) {\n\t\tthis._share.note = note\n\t}\n\n\t/**\n\t * Get the share label if any\n\t * Should only exist on link shares\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget label() {\n\t\treturn this._share.label\n\t}\n\n\t/**\n\t * Set the share label if any\n\t * Should only be set on link shares\n\t *\n\t * @param {string} label the label\n\t * @memberof Share\n\t */\n\tset label(label) {\n\t\tthis._share.label = label\n\t}\n\n\t/**\n\t * Have a mail been sent\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget mailSend() {\n\t\treturn this._share.mail_send === true\n\t}\n\n\t/**\n\t * Hide the download button on public page\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hideDownload() {\n\t\treturn this._share.hide_download === true\n\t}\n\n\t/**\n\t * Hide the download button on public page\n\t *\n\t * @param {boolean} state hide the button ?\n\t * @memberof Share\n\t */\n\tset hideDownload(state) {\n\t\tthis._share.hide_download = state === true\n\t}\n\n\t/**\n\t * Password protection of the share\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget password() {\n\t\treturn this._share.password\n\t}\n\n\t/**\n\t * Password protection of the share\n\t *\n\t * @param {string} password the share password\n\t * @memberof Share\n\t */\n\tset password(password) {\n\t\tthis._share.password = password\n\t}\n\n\t/**\n\t * Password expiration time\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget passwordExpirationTime() {\n\t\treturn this._share.password_expiration_time\n\t}\n\n\t/**\n\t * Password expiration time\n\t *\n\t * @param {string} password exipration time\n\t * @memberof Share\n\t */\n\tset passwordExpirationTime(passwordExpirationTime) {\n\t\tthis._share.password_expiration_time = passwordExpirationTime\n\t}\n\n\t/**\n\t * Password protection by Talk of the share\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget sendPasswordByTalk() {\n\t\treturn this._share.send_password_by_talk\n\t}\n\n\t/**\n\t * Password protection by Talk of the share\n\t *\n\t * @param {boolean} sendPasswordByTalk whether to send the password by Talk\n\t * or not\n\t * @memberof Share\n\t */\n\tset sendPasswordByTalk(sendPasswordByTalk) {\n\t\tthis._share.send_password_by_talk = sendPasswordByTalk\n\t}\n\n\t// SHARED ITEM DATA ---------------------------------------------\n\t/**\n\t * Get the shared item absolute full path\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget path() {\n\t\treturn this._share.path\n\t}\n\n\t/**\n\t * Return the item type: file or folder\n\t *\n\t * @return {string} 'folder' or 'file'\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget itemType() {\n\t\treturn this._share.item_type\n\t}\n\n\t/**\n\t * Get the shared item mimetype\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget mimetype() {\n\t\treturn this._share.mimetype\n\t}\n\n\t/**\n\t * Get the shared item id\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileSource() {\n\t\treturn this._share.file_source\n\t}\n\n\t/**\n\t * Get the target path on the receiving end\n\t * e.g the file /xxx/aaa will be shared in\n\t * the receiving root as /aaa, the fileTarget is /aaa\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileTarget() {\n\t\treturn this._share.file_target\n\t}\n\n\t/**\n\t * Get the parent folder id if any\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileParent() {\n\t\treturn this._share.file_parent\n\t}\n\n\t// PERMISSIONS Shortcuts\n\n\t/**\n\t * Does this share have READ permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasReadPermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_READ))\n\t}\n\n\t/**\n\t * Does this share have CREATE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasCreatePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_CREATE))\n\t}\n\n\t/**\n\t * Does this share have DELETE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasDeletePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_DELETE))\n\t}\n\n\t/**\n\t * Does this share have UPDATE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasUpdatePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_UPDATE))\n\t}\n\n\t/**\n\t * Does this share have SHARE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasSharePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_SHARE))\n\t}\n\n\t// PERMISSIONS Shortcuts for the CURRENT USER\n\t// ! the permissions above are the share settings,\n\t// ! meaning the permissions for the recipient\n\t/**\n\t * Can the current user EDIT this share ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget canEdit() {\n\t\treturn this._share.can_edit === true\n\t}\n\n\t/**\n\t * Can the current user DELETE this share ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget canDelete() {\n\t\treturn this._share.can_delete === true\n\t}\n\n\t/**\n\t * Top level accessible shared folder fileid for the current user\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget viaFileid() {\n\t\treturn this._share.via_fileid\n\t}\n\n\t/**\n\t * Top level accessible shared folder path for the current user\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget viaPath() {\n\t\treturn this._share.via_path\n\t}\n\n\t// TODO: SORT THOSE PROPERTIES\n\n\tget parent() {\n\t\treturn this._share.parent\n\t}\n\n\tget storageId() {\n\t\treturn this._share.storage_id\n\t}\n\n\tget storage() {\n\t\treturn this._share.storage\n\t}\n\n\tget itemSource() {\n\t\treturn this._share.item_source\n\t}\n\n\tget status() {\n\t\treturn this._share.status\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nimport { Type as ShareTypes } from '@nextcloud/sharing'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tSHARE_TYPES: ShareTypes,\n\t\t}\n\t},\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.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!./SharingEntrySimple.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<li class=\"sharing-entry\">\n\t\t<slot name=\"avatar\" />\n\t\t<div v-tooltip=\"tooltip\" class=\"sharing-entry__desc\">\n\t\t\t<h5>{{ title }}</h5>\n\t\t\t<p v-if=\"subtitle\">\n\t\t\t\t{{ subtitle }}\n\t\t\t</p>\n\t\t</div>\n\t\t<Actions v-if=\"$slots['default']\" menu-align=\"right\" class=\"sharing-entry__actions\">\n\t\t\t<slot />\n\t\t</Actions>\n\t</li>\n</template>\n\n<script>\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'\n\nexport default {\n\tname: 'SharingEntrySimple',\n\n\tcomponents: {\n\t\tActions,\n\t},\n\n\tdirectives: {\n\t\tTooltip,\n\t},\n\n\tprops: {\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true,\n\t\t},\n\t\ttooltip: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tsubtitle: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tisUnique: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tposition: relative;\n\t\tflex: 1 1;\n\t\tmin-width: 0;\n\t\th5 {\n\t\t\twhite-space: nowrap;\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow: hidden;\n\t\t\tmax-width: inherit;\n\t\t}\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto !important;\n\t}\n}\n</style>\n","\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!./SharingEntrySimple.vue?vue&type=style&index=0&id=1436bf4a&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!./SharingEntrySimple.vue?vue&type=style&index=0&id=1436bf4a&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntrySimple.vue?vue&type=template&id=1436bf4a&scoped=true&\"\nimport script from \"./SharingEntrySimple.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntrySimple.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntrySimple.vue?vue&type=style&index=0&id=1436bf4a&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 \"1436bf4a\",\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('li',{staticClass:\"sharing-entry\"},[_vm._t(\"avatar\"),_vm._v(\" \"),_c('div',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(_vm.tooltip),expression:\"tooltip\"}],staticClass:\"sharing-entry__desc\"},[_c('h5',[_vm._v(_vm._s(_vm.title))]),_vm._v(\" \"),(_vm.subtitle)?_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.subtitle)+\"\\n\\t\\t\")]):_vm._e()]),_vm._v(\" \"),(_vm.$slots['default'])?_c('Actions',{staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\"}},[_vm._t(\"default\")],2):_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n<template>\n\t<SharingEntrySimple class=\"sharing-entry__internal\"\n\t\t:title=\"t('files_sharing', 'Internal link')\"\n\t\t:subtitle=\"internalLinkSubtitle\">\n\t\t<template #avatar>\n\t\t\t<div class=\"avatar-external icon-external-white\" />\n\t\t</template>\n\n\t\t<ActionLink ref=\"copyButton\"\n\t\t\t:href=\"internalLink\"\n\t\t\ttarget=\"_blank\"\n\t\t\t:icon=\"copied && copySuccess ? 'icon-checkmark-color' : 'icon-clippy'\"\n\t\t\t@click.prevent=\"copyLink\">\n\t\t\t{{ clipboardTooltip }}\n\t\t</ActionLink>\n\t</SharingEntrySimple>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport ActionLink from '@nextcloud/vue/dist/Components/ActionLink'\nimport SharingEntrySimple from './SharingEntrySimple'\n\nexport default {\n\tname: 'SharingEntryInternal',\n\n\tcomponents: {\n\t\tActionLink,\n\t\tSharingEntrySimple,\n\t},\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tcopied: false,\n\t\t\tcopySuccess: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Get the internal link to this file id\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tinternalLink() {\n\t\t\treturn window.location.protocol + '//' + window.location.host + generateUrl('/f/') + this.fileInfo.id\n\t\t},\n\n\t\t/**\n\t\t * Clipboard v-tooltip message\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tclipboardTooltip() {\n\t\t\tif (this.copied) {\n\t\t\t\treturn this.copySuccess\n\t\t\t\t\t? t('files_sharing', 'Link copied')\n\t\t\t\t\t: t('files_sharing', 'Cannot copy, please copy the link manually')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Copy to clipboard')\n\t\t},\n\n\t\tinternalLinkSubtitle() {\n\t\t\tif (this.fileInfo.type === 'dir') {\n\t\t\t\treturn t('files_sharing', 'Only works for users with access to this folder')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Only works for users with access to this file')\n\t\t},\n\t},\n\n\tmethods: {\n\t\tasync copyLink() {\n\t\t\ttry {\n\t\t\t\tawait this.$copyText(this.internalLink)\n\t\t\t\t// focus and show the tooltip\n\t\t\t\tthis.$refs.copyButton.$el.focus()\n\t\t\t\tthis.copySuccess = true\n\t\t\t\tthis.copied = true\n\t\t\t} catch (error) {\n\t\t\t\tthis.copySuccess = false\n\t\t\t\tthis.copied = true\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.copySuccess = false\n\t\t\t\t\tthis.copied = false\n\t\t\t\t}, 4000)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry__internal {\n\t.avatar-external {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.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!./SharingEntryInternal.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!./SharingEntryInternal.vue?vue&type=style&index=0&id=854dc2c6&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!./SharingEntryInternal.vue?vue&type=style&index=0&id=854dc2c6&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryInternal.vue?vue&type=template&id=854dc2c6&scoped=true&\"\nimport script from \"./SharingEntryInternal.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntryInternal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntryInternal.vue?vue&type=style&index=0&id=854dc2c6&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 \"854dc2c6\",\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('SharingEntrySimple',{staticClass:\"sharing-entry__internal\",attrs:{\"title\":_vm.t('files_sharing', 'Internal link'),\"subtitle\":_vm.internalLinkSubtitle},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('div',{staticClass:\"avatar-external icon-external-white\"})]},proxy:true}])},[_vm._v(\" \"),_c('ActionLink',{ref:\"copyButton\",attrs:{\"href\":_vm.internalLink,\"target\":\"_blank\",\"icon\":_vm.copied && _vm.copySuccess ? 'icon-checkmark-color' : 'icon-clippy'},on:{\"click\":function($event){$event.preventDefault();return _vm.copyLink.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.clipboardTooltip)+\"\\n\\t\")])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport axios from '@nextcloud/axios'\nimport Config from '../services/ConfigService'\n\nconst config = new Config()\nconst passwordSet = 'abcdefgijkmnopqrstwxyzABCDEFGHJKLMNPQRSTWXYZ23456789'\n\n/**\n * Generate a valid policy password or\n * request a valid password if password_policy\n * is enabled\n *\n * @return {string} a valid password\n */\nexport default async function() {\n\t// password policy is enabled, let's request a pass\n\tif (config.passwordPolicy.api && config.passwordPolicy.api.generate) {\n\t\ttry {\n\t\t\tconst request = await axios.get(config.passwordPolicy.api.generate)\n\t\t\tif (request.data.ocs.data.password) {\n\t\t\t\treturn request.data.ocs.data.password\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.info('Error generating password from password_policy', error)\n\t\t}\n\t}\n\n\t// generate password of 10 length based on passwordSet\n\treturn Array(10).fill(0)\n\t\t.reduce((prev, curr) => {\n\t\t\tprev += passwordSet.charAt(Math.floor(Math.random() * passwordSet.length))\n\t\t\treturn prev\n\t\t}, '')\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\n// TODO: remove when ie not supported\nimport 'url-search-params-polyfill'\n\nimport { generateOcsUrl } from '@nextcloud/router'\nimport axios from '@nextcloud/axios'\nimport Share from '../models/Share'\n\nconst shareUrl = generateOcsUrl('apps/files_sharing/api/v1/shares')\n\nexport default {\n\tmethods: {\n\t\t/**\n\t\t * Create a new share\n\t\t *\n\t\t * @param {object} data destructuring object\n\t\t * @param {string} data.path path to the file/folder which should be shared\n\t\t * @param {number} data.shareType 0 = user; 1 = group; 3 = public link; 6 = federated cloud share\n\t\t * @param {string} data.shareWith user/group id with which the file should be shared (optional for shareType > 1)\n\t\t * @param {boolean} [data.publicUpload=false] allow public upload to a public shared folder\n\t\t * @param {string} [data.password] password to protect public link Share with\n\t\t * @param {number} [data.permissions=31] 1 = read; 2 = update; 4 = create; 8 = delete; 16 = share; 31 = all (default: 31, for public shares: 1)\n\t\t * @param {boolean} [data.sendPasswordByTalk=false] send the password via a talk conversation\n\t\t * @param {string} [data.expireDate=''] expire the shareautomatically after\n\t\t * @param {string} [data.label=''] custom label\n\t\t * @return {Share} the new share\n\t\t * @throws {Error}\n\t\t */\n\t\tasync createShare({ path, permissions, shareType, shareWith, publicUpload, password, sendPasswordByTalk, expireDate, label }) {\n\t\t\ttry {\n\t\t\t\tconst request = await axios.post(shareUrl, { path, permissions, shareType, shareWith, publicUpload, password, sendPasswordByTalk, expireDate, label })\n\t\t\t\tif (!request?.data?.ocs) {\n\t\t\t\t\tthrow request\n\t\t\t\t}\n\t\t\t\treturn new Share(request.data.ocs.data)\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error while creating share', error)\n\t\t\t\tconst errorMessage = error?.response?.data?.ocs?.meta?.message\n\t\t\t\tOC.Notification.showTemporary(\n\t\t\t\t\terrorMessage ? t('files_sharing', 'Error creating the share: {errorMessage}', { errorMessage }) : t('files_sharing', 'Error creating the share'),\n\t\t\t\t\t{ type: 'error' }\n\t\t\t\t)\n\t\t\t\tthrow error\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Delete a share\n\t\t *\n\t\t * @param {number} id share id\n\t\t * @throws {Error}\n\t\t */\n\t\tasync deleteShare(id) {\n\t\t\ttry {\n\t\t\t\tconst request = await axios.delete(shareUrl + `/${id}`)\n\t\t\t\tif (!request?.data?.ocs) {\n\t\t\t\t\tthrow request\n\t\t\t\t}\n\t\t\t\treturn true\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error while deleting share', error)\n\t\t\t\tconst errorMessage = error?.response?.data?.ocs?.meta?.message\n\t\t\t\tOC.Notification.showTemporary(\n\t\t\t\t\terrorMessage ? t('files_sharing', 'Error deleting the share: {errorMessage}', { errorMessage }) : t('files_sharing', 'Error deleting the share'),\n\t\t\t\t\t{ type: 'error' }\n\t\t\t\t)\n\t\t\t\tthrow error\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Update a share\n\t\t *\n\t\t * @param {number} id share id\n\t\t * @param {object} properties key-value object of the properties to update\n\t\t */\n\t\tasync updateShare(id, properties) {\n\t\t\ttry {\n\t\t\t\tconst request = await axios.put(shareUrl + `/${id}`, properties)\n\t\t\t\tif (!request?.data?.ocs) {\n\t\t\t\t\tthrow request\n\t\t\t\t} else {\n\t\t\t\t\treturn request.data.ocs.data\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error while updating share', error)\n\t\t\t\tif (error.response.status !== 400) {\n\t\t\t\t\tconst errorMessage = error?.response?.data?.ocs?.meta?.message\n\t\t\t\t\tOC.Notification.showTemporary(\n\t\t\t\t\t\terrorMessage ? t('files_sharing', 'Error updating the share: {errorMessage}', { errorMessage }) : t('files_sharing', 'Error updating the share'),\n\t\t\t\t\t\t{ type: 'error' }\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tconst message = error.response.data.ocs.meta.message\n\t\t\t\tthrow new Error(message)\n\t\t\t}\n\t\t},\n\t},\n}\n","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<Multiselect ref=\"multiselect\"\n\t\tclass=\"sharing-input\"\n\t\t:clear-on-select=\"true\"\n\t\t:disabled=\"!canReshare\"\n\t\t:hide-selected=\"true\"\n\t\t:internal-search=\"false\"\n\t\t:loading=\"loading\"\n\t\t:options=\"options\"\n\t\t:placeholder=\"inputPlaceholder\"\n\t\t:preselect-first=\"true\"\n\t\t:preserve-search=\"true\"\n\t\t:searchable=\"true\"\n\t\t:user-select=\"true\"\n\t\topen-direction=\"below\"\n\t\tlabel=\"displayName\"\n\t\ttrack-by=\"id\"\n\t\t@search-change=\"asyncFind\"\n\t\t@select=\"addShare\">\n\t\t<template #noOptions>\n\t\t\t{{ t('files_sharing', 'No recommendations. Start typing.') }}\n\t\t</template>\n\t\t<template #noResult>\n\t\t\t{{ noResultText }}\n\t\t</template>\n\t</Multiselect>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport debounce from 'debounce'\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\n\nimport Config from '../services/ConfigService'\nimport GeneratePassword from '../utils/GeneratePassword'\nimport Share from '../models/Share'\nimport ShareRequests from '../mixins/ShareRequests'\nimport ShareTypes from '../mixins/ShareTypes'\n\nexport default {\n\tname: 'SharingInput',\n\n\tcomponents: {\n\t\tMultiselect,\n\t},\n\n\tmixins: [ShareTypes, ShareRequests],\n\n\tprops: {\n\t\tshares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t\tlinkShares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\treshare: {\n\t\t\ttype: Share,\n\t\t\tdefault: null,\n\t\t},\n\t\tcanReshare: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\t\t\tloading: false,\n\t\t\tquery: '',\n\t\t\trecommendations: [],\n\t\t\tShareSearch: OCA.Sharing.ShareSearch.state,\n\t\t\tsuggestions: [],\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Implement ShareSearch\n\t\t * allows external appas to inject new\n\t\t * results into the autocomplete dropdown\n\t\t * Used for the guests app\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\texternalResults() {\n\t\t\treturn this.ShareSearch.results\n\t\t},\n\t\tinputPlaceholder() {\n\t\t\tconst allowRemoteSharing = this.config.isRemoteShareAllowed\n\n\t\t\tif (!this.canReshare) {\n\t\t\t\treturn t('files_sharing', 'Resharing is not allowed')\n\t\t\t}\n\t\t\t// We can always search with email addresses for users too\n\t\t\tif (!allowRemoteSharing) {\n\t\t\t\treturn t('files_sharing', 'Name or email …')\n\t\t\t}\n\n\t\t\treturn t('files_sharing', 'Name, email, or Federated Cloud ID …')\n\t\t},\n\n\t\tisValidQuery() {\n\t\t\treturn this.query && this.query.trim() !== '' && this.query.length > this.config.minSearchStringLength\n\t\t},\n\n\t\toptions() {\n\t\t\tif (this.isValidQuery) {\n\t\t\t\treturn this.suggestions\n\t\t\t}\n\t\t\treturn this.recommendations\n\t\t},\n\n\t\tnoResultText() {\n\t\t\tif (this.loading) {\n\t\t\t\treturn t('files_sharing', 'Searching …')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'No elements found.')\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.getRecommendations()\n\t},\n\n\tmethods: {\n\t\tasync asyncFind(query, id) {\n\t\t\t// save current query to check if we display\n\t\t\t// recommendations or search results\n\t\t\tthis.query = query.trim()\n\t\t\tif (this.isValidQuery) {\n\t\t\t\t// start loading now to have proper ux feedback\n\t\t\t\t// during the debounce\n\t\t\t\tthis.loading = true\n\t\t\t\tawait this.debounceGetSuggestions(query)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Get suggestions\n\t\t *\n\t\t * @param {string} search the search query\n\t\t * @param {boolean} [lookup=false] search on lookup server\n\t\t */\n\t\tasync getSuggestions(search, lookup = false) {\n\t\t\tthis.loading = true\n\n\t\t\tif (OC.getCapabilities().files_sharing.sharee.query_lookup_default === true) {\n\t\t\t\tlookup = true\n\t\t\t}\n\n\t\t\tconst shareType = [\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_USER,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_GROUP,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_REMOTE,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_CIRCLE,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_ROOM,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_GUEST,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_DECK,\n\t\t\t]\n\n\t\t\tif (OC.getCapabilities().files_sharing.public.enabled === true) {\n\t\t\t\tshareType.push(this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\t\t\t}\n\n\t\t\tlet request = null\n\t\t\ttry {\n\t\t\t\trequest = await axios.get(generateOcsUrl('apps/files_sharing/api/v1/sharees'), {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat: 'json',\n\t\t\t\t\t\titemType: this.fileInfo.type === 'dir' ? 'folder' : 'file',\n\t\t\t\t\t\tsearch,\n\t\t\t\t\t\tlookup,\n\t\t\t\t\t\tperPage: this.config.maxAutocompleteResults,\n\t\t\t\t\t\tshareType,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error fetching suggestions', error)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst data = request.data.ocs.data\n\t\t\tconst exact = request.data.ocs.data.exact\n\t\t\tdata.exact = [] // removing exact from general results\n\n\t\t\t// flatten array of arrays\n\t\t\tconst rawExactSuggestions = Object.values(exact).reduce((arr, elem) => arr.concat(elem), [])\n\t\t\tconst rawSuggestions = Object.values(data).reduce((arr, elem) => arr.concat(elem), [])\n\n\t\t\t// remove invalid data and format to user-select layout\n\t\t\tconst exactSuggestions = this.filterOutExistingShares(rawExactSuggestions)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t// sort by type so we can get user&groups first...\n\t\t\t\t.sort((a, b) => a.shareType - b.shareType)\n\t\t\tconst suggestions = this.filterOutExistingShares(rawSuggestions)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t// sort by type so we can get user&groups first...\n\t\t\t\t.sort((a, b) => a.shareType - b.shareType)\n\n\t\t\t// lookup clickable entry\n\t\t\t// show if enabled and not already requested\n\t\t\tconst lookupEntry = []\n\t\t\tif (data.lookupEnabled && !lookup) {\n\t\t\t\tlookupEntry.push({\n\t\t\t\t\tid: 'global-lookup',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\tdisplayName: t('files_sharing', 'Search globally'),\n\t\t\t\t\tlookup: true,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\t// if there is a condition specified, filter it\n\t\t\tconst externalResults = this.externalResults.filter(result => !result.condition || result.condition(this))\n\n\t\t\tconst allSuggestions = exactSuggestions.concat(suggestions).concat(externalResults).concat(lookupEntry)\n\n\t\t\t// Count occurances of display names in order to provide a distinguishable description if needed\n\t\t\tconst nameCounts = allSuggestions.reduce((nameCounts, result) => {\n\t\t\t\tif (!result.displayName) {\n\t\t\t\t\treturn nameCounts\n\t\t\t\t}\n\t\t\t\tif (!nameCounts[result.displayName]) {\n\t\t\t\t\tnameCounts[result.displayName] = 0\n\t\t\t\t}\n\t\t\t\tnameCounts[result.displayName]++\n\t\t\t\treturn nameCounts\n\t\t\t}, {})\n\n\t\t\tthis.suggestions = allSuggestions.map(item => {\n\t\t\t\t// Make sure that items with duplicate displayName get the shareWith applied as a description\n\t\t\t\tif (nameCounts[item.displayName] > 1 && !item.desc) {\n\t\t\t\t\treturn { ...item, desc: item.shareWithDisplayNameUnique }\n\t\t\t\t}\n\t\t\t\treturn item\n\t\t\t})\n\n\t\t\tthis.loading = false\n\t\t\tconsole.info('suggestions', this.suggestions)\n\t\t},\n\n\t\t/**\n\t\t * Debounce getSuggestions\n\t\t *\n\t\t * @param {...*} args the arguments\n\t\t */\n\t\tdebounceGetSuggestions: debounce(function(...args) {\n\t\t\tthis.getSuggestions(...args)\n\t\t}, 300),\n\n\t\t/**\n\t\t * Get the sharing recommendations\n\t\t */\n\t\tasync getRecommendations() {\n\t\t\tthis.loading = true\n\n\t\t\tlet request = null\n\t\t\ttry {\n\t\t\t\trequest = await axios.get(generateOcsUrl('apps/files_sharing/api/v1/sharees_recommended'), {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat: 'json',\n\t\t\t\t\t\titemType: this.fileInfo.type,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error fetching recommendations', error)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Add external results from the OCA.Sharing.ShareSearch api\n\t\t\tconst externalResults = this.externalResults.filter(result => !result.condition || result.condition(this))\n\n\t\t\t// flatten array of arrays\n\t\t\tconst rawRecommendations = Object.values(request.data.ocs.data.exact)\n\t\t\t\t.reduce((arr, elem) => arr.concat(elem), [])\n\n\t\t\t// remove invalid data and format to user-select layout\n\t\t\tthis.recommendations = this.filterOutExistingShares(rawRecommendations)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t.concat(externalResults)\n\n\t\t\tthis.loading = false\n\t\t\tconsole.info('recommendations', this.recommendations)\n\t\t},\n\n\t\t/**\n\t\t * Filter out existing shares from\n\t\t * the provided shares search results\n\t\t *\n\t\t * @param {object[]} shares the array of shares object\n\t\t * @return {object[]}\n\t\t */\n\t\tfilterOutExistingShares(shares) {\n\t\t\treturn shares.reduce((arr, share) => {\n\t\t\t\t// only check proper objects\n\t\t\t\tif (typeof share !== 'object') {\n\t\t\t\t\treturn arr\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tif (share.value.shareType === this.SHARE_TYPES.SHARE_TYPE_USER) {\n\t\t\t\t\t\t// filter out current user\n\t\t\t\t\t\tif (share.value.shareWith === getCurrentUser().uid) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// filter out the owner of the share\n\t\t\t\t\t\tif (this.reshare && share.value.shareWith === this.reshare.owner) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// filter out existing mail shares\n\t\t\t\t\tif (share.value.shareType === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\t\t\tconst emails = this.linkShares.map(elem => elem.shareWith)\n\t\t\t\t\t\tif (emails.indexOf(share.value.shareWith.trim()) !== -1) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t} else { // filter out existing shares\n\t\t\t\t\t\t// creating an object of uid => type\n\t\t\t\t\t\tconst sharesObj = this.shares.reduce((obj, elem) => {\n\t\t\t\t\t\t\tobj[elem.shareWith] = elem.type\n\t\t\t\t\t\t\treturn obj\n\t\t\t\t\t\t}, {})\n\n\t\t\t\t\t\t// if shareWith is the same and the share type too, ignore it\n\t\t\t\t\t\tconst key = share.value.shareWith.trim()\n\t\t\t\t\t\tif (key in sharesObj\n\t\t\t\t\t\t\t&& sharesObj[key] === share.value.shareType) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// ALL GOOD\n\t\t\t\t\t// let's add the suggestion\n\t\t\t\t\tarr.push(share)\n\t\t\t\t} catch {\n\t\t\t\t\treturn arr\n\t\t\t\t}\n\t\t\t\treturn arr\n\t\t\t}, [])\n\t\t},\n\n\t\t/**\n\t\t * Get the icon based on the share type\n\t\t *\n\t\t * @param {number} type the share type\n\t\t * @return {string} the icon class\n\t\t */\n\t\tshareTypeToIcon(type) {\n\t\t\tswitch (type) {\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_GUEST:\n\t\t\t\t// default is a user, other icons are here to differenciate\n\t\t\t\t// themselves from it, so let's not display the user icon\n\t\t\t\t// case this.SHARE_TYPES.SHARE_TYPE_REMOTE:\n\t\t\t\t// case this.SHARE_TYPES.SHARE_TYPE_USER:\n\t\t\t\treturn 'icon-user'\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_GROUP:\n\t\t\t\treturn 'icon-group'\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_EMAIL:\n\t\t\t\treturn 'icon-mail'\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_CIRCLE:\n\t\t\t\treturn 'icon-circle'\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_ROOM:\n\t\t\t\treturn 'icon-room'\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_DECK:\n\t\t\t\treturn 'icon-deck'\n\n\t\t\tdefault:\n\t\t\t\treturn ''\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Format shares for the multiselect options\n\t\t *\n\t\t * @param {object} result select entry item\n\t\t * @return {object}\n\t\t */\n\t\tformatForMultiselect(result) {\n\t\t\tlet subtitle\n\t\t\tif (result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_USER && this.config.shouldAlwaysShowUnique) {\n\t\t\t\tsubtitle = result.shareWithDisplayNameUnique ?? ''\n\t\t\t} else if ((result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_REMOTE\n\t\t\t\t\t|| result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP\n\t\t\t) && result.value.server) {\n\t\t\t\tsubtitle = t('files_sharing', 'on {server}', { server: result.value.server })\n\t\t\t} else if (result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\tsubtitle = result.value.shareWith\n\t\t\t} else {\n\t\t\t\tsubtitle = result.shareWithDescription ?? ''\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tid: `${result.value.shareType}-${result.value.shareWith}`,\n\t\t\t\tshareWith: result.value.shareWith,\n\t\t\t\tshareType: result.value.shareType,\n\t\t\t\tuser: result.uuid || result.value.shareWith,\n\t\t\t\tisNoUser: result.value.shareType !== this.SHARE_TYPES.SHARE_TYPE_USER,\n\t\t\t\tdisplayName: result.name || result.label,\n\t\t\t\tsubtitle,\n\t\t\t\tshareWithDisplayNameUnique: result.shareWithDisplayNameUnique || '',\n\t\t\t\ticon: this.shareTypeToIcon(result.value.shareType),\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Process the new share request\n\t\t *\n\t\t * @param {object} value the multiselect option\n\t\t */\n\t\tasync addShare(value) {\n\t\t\tif (value.lookup) {\n\t\t\t\tawait this.getSuggestions(this.query, true)\n\n\t\t\t\t// focus the input again\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tthis.$refs.multiselect.$el.querySelector('.multiselect__input').focus()\n\t\t\t\t})\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\t// handle externalResults from OCA.Sharing.ShareSearch\n\t\t\tif (value.handler) {\n\t\t\t\tconst share = await value.handler(this)\n\t\t\t\tthis.$emit('add:share', new Share(share))\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\tthis.loading = true\n\t\t\tconsole.debug('Adding a new share from the input for', value)\n\t\t\ttry {\n\t\t\t\tlet password = null\n\n\t\t\t\tif (this.config.enforcePasswordForPublicLink\n\t\t\t\t\t&& value.shareType === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\t\tpassword = await GeneratePassword()\n\t\t\t\t}\n\n\t\t\t\tconst path = (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')\n\t\t\t\tconst share = await this.createShare({\n\t\t\t\t\tpath,\n\t\t\t\t\tshareType: value.shareType,\n\t\t\t\t\tshareWith: value.shareWith,\n\t\t\t\t\tpassword,\n\t\t\t\t\tpermissions: this.fileInfo.sharePermissions & OC.getCapabilities().files_sharing.default_permissions,\n\t\t\t\t})\n\n\t\t\t\t// If we had a password, we need to show it to the user as it was generated\n\t\t\t\tif (password) {\n\t\t\t\t\tshare.newPassword = password\n\t\t\t\t\t// Wait for the newly added share\n\t\t\t\t\tconst component = await new Promise(resolve => {\n\t\t\t\t\t\tthis.$emit('add:share', share, resolve)\n\t\t\t\t\t})\n\n\t\t\t\t\t// open the menu on the\n\t\t\t\t\t// freshly created share component\n\t\t\t\t\tcomponent.open = true\n\t\t\t\t} else {\n\t\t\t\t\t// Else we just add it normally\n\t\t\t\t\tthis.$emit('add:share', share)\n\t\t\t\t}\n\n\t\t\t\t// reset the search string when done\n\t\t\t\t// FIXME: https://github.com/shentao/vue-multiselect/issues/633\n\t\t\t\tif (this.$refs.multiselect?.$refs?.VueMultiselect?.search) {\n\t\t\t\t\tthis.$refs.multiselect.$refs.VueMultiselect.search = ''\n\t\t\t\t}\n\n\t\t\t\tawait this.getRecommendations()\n\t\t\t} catch (error) {\n\t\t\t\t// focus back if any error\n\t\t\t\tconst input = this.$refs.multiselect.$el.querySelector('input')\n\t\t\t\tif (input) {\n\t\t\t\t\tinput.focus()\n\t\t\t\t}\n\t\t\t\tthis.query = value.shareWith\n\t\t\t\tconsole.error('Error while adding new share', error)\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n.sharing-input {\n\twidth: 100%;\n\tmargin: 10px 0;\n\n\t// properly style the lookup entry\n\t.multiselect__option {\n\t\tspan[lookup] {\n\t\t\t.avatardiv {\n\t\t\t\tbackground-image: var(--icon-search-fff);\n\t\t\t\tbackground-repeat: no-repeat;\n\t\t\t\tbackground-position: center;\n\t\t\t\tbackground-color: var(--color-text-maxcontrast) !important;\n\t\t\t\tdiv {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.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!./SharingInput.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!./SharingInput.vue?vue&type=style&index=0&lang=scss&\";\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!./SharingInput.vue?vue&type=style&index=0&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingInput.vue?vue&type=template&id=6c96bdca&\"\nimport script from \"./SharingInput.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingInput.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Multiselect',{ref:\"multiselect\",staticClass:\"sharing-input\",attrs:{\"clear-on-select\":true,\"disabled\":!_vm.canReshare,\"hide-selected\":true,\"internal-search\":false,\"loading\":_vm.loading,\"options\":_vm.options,\"placeholder\":_vm.inputPlaceholder,\"preselect-first\":true,\"preserve-search\":true,\"searchable\":true,\"user-select\":true,\"open-direction\":\"below\",\"label\":\"displayName\",\"track-by\":\"id\"},on:{\"search-change\":_vm.asyncFind,\"select\":_vm.addShare},scopedSlots:_vm._u([{key:\"noOptions\",fn:function(){return [_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'No recommendations. Start typing.'))+\"\\n\\t\")]},proxy:true},{key:\"noResult\",fn:function(){return [_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.noResultText)+\"\\n\\t\")]},proxy:true}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Gary Kim <gary@garykim.dev>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n// eslint-disable-next-line import/no-unresolved, node/no-missing-import\nimport PQueue from 'p-queue'\nimport debounce from 'debounce'\n\nimport Share from '../models/Share'\nimport SharesRequests from './ShareRequests'\nimport ShareTypes from './ShareTypes'\nimport Config from '../services/ConfigService'\nimport { getCurrentUser } from '@nextcloud/auth'\n\nexport default {\n\tmixins: [SharesRequests, ShareTypes],\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshare: {\n\t\t\ttype: Share,\n\t\t\tdefault: null,\n\t\t},\n\t\tisUnique: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\n\t\t\t// errors helpers\n\t\t\terrors: {},\n\n\t\t\t// component status toggles\n\t\t\tloading: false,\n\t\t\tsaving: false,\n\t\t\topen: false,\n\n\t\t\t// concurrency management queue\n\t\t\t// we want one queue per share\n\t\t\tupdateQueue: new PQueue({ concurrency: 1 }),\n\n\t\t\t/**\n\t\t\t * ! This allow vue to make the Share class state reactive\n\t\t\t * ! do not remove it ot you'll lose all reactivity here\n\t\t\t */\n\t\t\treactiveState: this.share?.state,\n\t\t}\n\t},\n\n\tcomputed: {\n\n\t\t/**\n\t\t * Does the current share have a note\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasNote: {\n\t\t\tget() {\n\t\t\t\treturn this.share.note !== ''\n\t\t\t},\n\t\t\tset(enabled) {\n\t\t\t\tthis.share.note = enabled\n\t\t\t\t\t? null // enabled but user did not changed the content yet\n\t\t\t\t\t: '' // empty = no note = disabled\n\t\t\t},\n\t\t},\n\n\t\tdateTomorrow() {\n\t\t\treturn moment().add(1, 'days')\n\t\t},\n\n\t\t// Datepicker language\n\t\tlang() {\n\t\t\tconst weekdaysShort = window.dayNamesShort\n\t\t\t\t? window.dayNamesShort // provided by nextcloud\n\t\t\t\t: ['Sun.', 'Mon.', 'Tue.', 'Wed.', 'Thu.', 'Fri.', 'Sat.']\n\t\t\tconst monthsShort = window.monthNamesShort\n\t\t\t\t? window.monthNamesShort // provided by nextcloud\n\t\t\t\t: ['Jan.', 'Feb.', 'Mar.', 'Apr.', 'May.', 'Jun.', 'Jul.', 'Aug.', 'Sep.', 'Oct.', 'Nov.', 'Dec.']\n\t\t\tconst firstDayOfWeek = window.firstDay ? window.firstDay : 0\n\n\t\t\treturn {\n\t\t\t\tformatLocale: {\n\t\t\t\t\tfirstDayOfWeek,\n\t\t\t\t\tmonthsShort,\n\t\t\t\t\tweekdaysMin: weekdaysShort,\n\t\t\t\t\tweekdaysShort,\n\t\t\t\t},\n\t\t\t\tmonthFormat: 'MMM',\n\t\t\t}\n\t\t},\n\n\t\tisShareOwner() {\n\t\t\treturn this.share && this.share.owner === getCurrentUser().uid\n\t\t},\n\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Check if a share is valid before\n\t\t * firing the request\n\t\t *\n\t\t * @param {Share} share the share to check\n\t\t * @return {boolean}\n\t\t */\n\t\tcheckShare(share) {\n\t\t\tif (share.password) {\n\t\t\t\tif (typeof share.password !== 'string' || share.password.trim() === '') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (share.expirationDate) {\n\t\t\t\tconst date = moment(share.expirationDate)\n\t\t\t\tif (!date.isValid()) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\n\t\t/**\n\t\t * ActionInput can be a little tricky to work with.\n\t\t * Since we expect a string and not a Date,\n\t\t * we need to process the value here\n\t\t *\n\t\t * @param {Date} date js date to be parsed by moment.js\n\t\t */\n\t\tonExpirationChange(date) {\n\t\t\t// format to YYYY-MM-DD\n\t\t\tconst value = moment(date).format('YYYY-MM-DD')\n\t\t\tthis.share.expireDate = value\n\t\t\tthis.queueUpdate('expireDate')\n\t\t},\n\n\t\t/**\n\t\t * Uncheck expire date\n\t\t * We need this method because @update:checked\n\t\t * is ran simultaneously as @uncheck, so\n\t\t * so we cannot ensure data is up-to-date\n\t\t */\n\t\tonExpirationDisable() {\n\t\t\tthis.share.expireDate = ''\n\t\t\tthis.queueUpdate('expireDate')\n\t\t},\n\n\t\t/**\n\t\t * Note changed, let's save it to a different key\n\t\t *\n\t\t * @param {string} note the share note\n\t\t */\n\t\tonNoteChange(note) {\n\t\t\tthis.$set(this.share, 'newNote', note.trim())\n\t\t},\n\n\t\t/**\n\t\t * When the note change, we trim, save and dispatch\n\t\t *\n\t\t */\n\t\tonNoteSubmit() {\n\t\t\tif (this.share.newNote) {\n\t\t\t\tthis.share.note = this.share.newNote\n\t\t\t\tthis.$delete(this.share, 'newNote')\n\t\t\t\tthis.queueUpdate('note')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Delete share button handler\n\t\t */\n\t\tasync onDelete() {\n\t\t\ttry {\n\t\t\t\tthis.loading = true\n\t\t\t\tthis.open = false\n\t\t\t\tawait this.deleteShare(this.share.id)\n\t\t\t\tconsole.debug('Share deleted', this.share.id)\n\t\t\t\tthis.$emit('remove:share', this.share)\n\t\t\t} catch (error) {\n\t\t\t\t// re-open menu if error\n\t\t\t\tthis.open = true\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Send an update of the share to the queue\n\t\t *\n\t\t * @param {Array<string>} propertyNames the properties to sync\n\t\t */\n\t\tqueueUpdate(...propertyNames) {\n\t\t\tif (propertyNames.length === 0) {\n\t\t\t\t// Nothing to update\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this.share.id) {\n\t\t\t\tconst properties = {}\n\t\t\t\t// force value to string because that is what our\n\t\t\t\t// share api controller accepts\n\t\t\t\tpropertyNames.map(p => (properties[p] = this.share[p].toString()))\n\n\t\t\t\tthis.updateQueue.add(async () => {\n\t\t\t\t\tthis.saving = true\n\t\t\t\t\tthis.errors = {}\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst updatedShare = await this.updateShare(this.share.id, properties)\n\n\t\t\t\t\t\tif (propertyNames.indexOf('password') >= 0) {\n\t\t\t\t\t\t\t// reset password state after sync\n\t\t\t\t\t\t\tthis.$delete(this.share, 'newPassword')\n\n\t\t\t\t\t\t\t// updates password expiration time after sync\n\t\t\t\t\t\t\tthis.share.passwordExpirationTime = updatedShare.password_expiration_time\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// clear any previous errors\n\t\t\t\t\t\tthis.$delete(this.errors, propertyNames[0])\n\n\t\t\t\t\t} catch ({ message }) {\n\t\t\t\t\t\tif (message && message !== '') {\n\t\t\t\t\t\t\tthis.onSyncError(propertyNames[0], message)\n\t\t\t\t\t\t}\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tthis.saving = false\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tconsole.error('Cannot update share.', this.share, 'No valid id')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Manage sync errors\n\t\t *\n\t\t * @param {string} property the errored property, e.g. 'password'\n\t\t * @param {string} message the error message\n\t\t */\n\t\tonSyncError(property, message) {\n\t\t\t// re-open menu if closed\n\t\t\tthis.open = true\n\t\t\tswitch (property) {\n\t\t\tcase 'password':\n\t\t\tcase 'pending':\n\t\t\tcase 'expireDate':\n\t\t\tcase 'label':\n\t\t\tcase 'note': {\n\t\t\t\t// show error\n\t\t\t\tthis.$set(this.errors, property, message)\n\n\t\t\t\tlet propertyEl = this.$refs[property]\n\t\t\t\tif (propertyEl) {\n\t\t\t\t\tif (propertyEl.$el) {\n\t\t\t\t\t\tpropertyEl = propertyEl.$el\n\t\t\t\t\t}\n\t\t\t\t\t// focus if there is a focusable action element\n\t\t\t\t\tconst focusable = propertyEl.querySelector('.focusable')\n\t\t\t\t\tif (focusable) {\n\t\t\t\t\t\tfocusable.focus()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'sendPasswordByTalk': {\n\t\t\t\t// show error\n\t\t\t\tthis.$set(this.errors, property, message)\n\n\t\t\t\t// Restore previous state\n\t\t\t\tthis.share.sendPasswordByTalk = !this.share.sendPasswordByTalk\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Debounce queueUpdate to avoid requests spamming\n\t\t * more importantly for text data\n\t\t *\n\t\t * @param {string} property the property to sync\n\t\t */\n\t\tdebounceQueueUpdate: debounce(function(property) {\n\t\t\tthis.queueUpdate(property)\n\t\t}, 500),\n\n\t\t/**\n\t\t * Returns which dates are disabled for the datepicker\n\t\t *\n\t\t * @param {Date} date date to check\n\t\t * @return {boolean}\n\t\t */\n\t\tdisabledDate(date) {\n\t\t\tconst dateMoment = moment(date)\n\t\t\treturn (this.dateTomorrow && dateMoment.isBefore(this.dateTomorrow, 'day'))\n\t\t\t\t|| (this.dateMaxEnforced && dateMoment.isSameOrAfter(this.dateMaxEnforced, 'day'))\n\t\t},\n\t},\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInherited.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!./SharingEntryInherited.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<SharingEntrySimple :key=\"share.id\"\n\t\tclass=\"sharing-entry__inherited\"\n\t\t:title=\"share.shareWithDisplayName\">\n\t\t<template #avatar>\n\t\t\t<Avatar :user=\"share.shareWith\"\n\t\t\t\t:display-name=\"share.shareWithDisplayName\"\n\t\t\t\tclass=\"sharing-entry__avatar\"\n\t\t\t\ttooltip-message=\"\" />\n\t\t</template>\n\t\t<ActionText icon=\"icon-user\">\n\t\t\t{{ t('files_sharing', 'Added by {initiator}', { initiator: share.ownerDisplayName }) }}\n\t\t</ActionText>\n\t\t<ActionLink v-if=\"share.viaPath && share.viaFileid\"\n\t\t\ticon=\"icon-folder\"\n\t\t\t:href=\"viaFileTargetUrl\">\n\t\t\t{{ t('files_sharing', 'Via “{folder}”', {folder: viaFolderName} ) }}\n\t\t</ActionLink>\n\t\t<ActionButton v-if=\"share.canDelete\"\n\t\t\ticon=\"icon-close\"\n\t\t\t@click.prevent=\"onDelete\">\n\t\t\t{{ t('files_sharing', 'Unshare') }}\n\t\t</actionbutton>\n\t</SharingEntrySimple>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { basename } from '@nextcloud/paths'\nimport Avatar from '@nextcloud/vue/dist/Components/Avatar'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport ActionLink from '@nextcloud/vue/dist/Components/ActionLink'\nimport ActionText from '@nextcloud/vue/dist/Components/ActionText'\n\n// eslint-disable-next-line no-unused-vars\nimport Share from '../models/Share'\nimport SharesMixin from '../mixins/SharesMixin'\nimport SharingEntrySimple from '../components/SharingEntrySimple'\n\nexport default {\n\tname: 'SharingEntryInherited',\n\n\tcomponents: {\n\t\tActionButton,\n\t\tActionLink,\n\t\tActionText,\n\t\tAvatar,\n\t\tSharingEntrySimple,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tprops: {\n\t\tshare: {\n\t\t\ttype: Share,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tviaFileTargetUrl() {\n\t\t\treturn generateUrl('/f/{fileid}', {\n\t\t\t\tfileid: this.share.viaFileid,\n\t\t\t})\n\t\t},\n\n\t\tviaFolderName() {\n\t\t\treturn basename(this.share.viaPath)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\n\t}\n}\n</style>\n","\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!./SharingEntryInherited.vue?vue&type=style&index=0&id=29845767&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!./SharingEntryInherited.vue?vue&type=style&index=0&id=29845767&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryInherited.vue?vue&type=template&id=29845767&scoped=true&\"\nimport script from \"./SharingEntryInherited.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntryInherited.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntryInherited.vue?vue&type=style&index=0&id=29845767&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 \"29845767\",\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('SharingEntrySimple',{key:_vm.share.id,staticClass:\"sharing-entry__inherited\",attrs:{\"title\":_vm.share.shareWithDisplayName},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('Avatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"user\":_vm.share.shareWith,\"display-name\":_vm.share.shareWithDisplayName,\"tooltip-message\":\"\"}})]},proxy:true}])},[_vm._v(\" \"),_c('ActionText',{attrs:{\"icon\":\"icon-user\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Added by {initiator}', { initiator: _vm.share.ownerDisplayName }))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.share.viaPath && _vm.share.viaFileid)?_c('ActionLink',{attrs:{\"icon\":\"icon-folder\",\"href\":_vm.viaFileTargetUrl}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Via “{folder}”', {folder: _vm.viaFolderName} ))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.share.canDelete)?_c('ActionButton',{attrs:{\"icon\":\"icon-close\"},on:{\"click\":function($event){$event.preventDefault();return _vm.onDelete.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Unshare'))+\"\\n\\t\")]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<ul id=\"sharing-inherited-shares\">\n\t\t<!-- Main collapsible entry -->\n\t\t<SharingEntrySimple class=\"sharing-entry__inherited\"\n\t\t\t:title=\"mainTitle\"\n\t\t\t:subtitle=\"subTitle\">\n\t\t\t<template #avatar>\n\t\t\t\t<div class=\"avatar-shared icon-more-white\" />\n\t\t\t</template>\n\t\t\t<ActionButton :icon=\"showInheritedSharesIcon\" @click.prevent.stop=\"toggleInheritedShares\">\n\t\t\t\t{{ toggleTooltip }}\n\t\t\t</ActionButton>\n\t\t</SharingEntrySimple>\n\n\t\t<!-- Inherited shares list -->\n\t\t<SharingEntryInherited v-for=\"share in shares\"\n\t\t\t:key=\"share.id\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t:share=\"share\" />\n\t</ul>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport axios from '@nextcloud/axios'\n\nimport Share from '../models/Share'\nimport SharingEntryInherited from '../components/SharingEntryInherited'\nimport SharingEntrySimple from '../components/SharingEntrySimple'\n\nexport default {\n\tname: 'SharingInherited',\n\n\tcomponents: {\n\t\tActionButton,\n\t\tSharingEntryInherited,\n\t\tSharingEntrySimple,\n\t},\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloaded: false,\n\t\t\tloading: false,\n\t\t\tshowInheritedShares: false,\n\t\t\tshares: [],\n\t\t}\n\t},\n\tcomputed: {\n\t\tshowInheritedSharesIcon() {\n\t\t\tif (this.loading) {\n\t\t\t\treturn 'icon-loading-small'\n\t\t\t}\n\t\t\tif (this.showInheritedShares) {\n\t\t\t\treturn 'icon-triangle-n'\n\t\t\t}\n\t\t\treturn 'icon-triangle-s'\n\t\t},\n\t\tmainTitle() {\n\t\t\treturn t('files_sharing', 'Others with access')\n\t\t},\n\t\tsubTitle() {\n\t\t\treturn (this.showInheritedShares && this.shares.length === 0)\n\t\t\t\t? t('files_sharing', 'No other users with access found')\n\t\t\t\t: ''\n\t\t},\n\t\ttoggleTooltip() {\n\t\t\treturn this.fileInfo.type === 'dir'\n\t\t\t\t? t('files_sharing', 'Toggle list of others with access to this directory')\n\t\t\t\t: t('files_sharing', 'Toggle list of others with access to this file')\n\t\t},\n\t\tfullPath() {\n\t\t\tconst path = `${this.fileInfo.path}/${this.fileInfo.name}`\n\t\t\treturn path.replace('//', '/')\n\t\t},\n\t},\n\twatch: {\n\t\tfileInfo() {\n\t\t\tthis.resetState()\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Toggle the list view and fetch/reset the state\n\t\t */\n\t\ttoggleInheritedShares() {\n\t\t\tthis.showInheritedShares = !this.showInheritedShares\n\t\t\tif (this.showInheritedShares) {\n\t\t\t\tthis.fetchInheritedShares()\n\t\t\t} else {\n\t\t\t\tthis.resetState()\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Fetch the Inherited Shares array\n\t\t */\n\t\tasync fetchInheritedShares() {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tconst url = generateOcsUrl('apps/files_sharing/api/v1/shares/inherited?format=json&path={path}', { path: this.fullPath })\n\t\t\t\tconst shares = await axios.get(url)\n\t\t\t\tthis.shares = shares.data.ocs.data\n\t\t\t\t\t.map(share => new Share(share))\n\t\t\t\t\t.sort((a, b) => b.createdTime - a.createdTime)\n\t\t\t\tconsole.info(this.shares)\n\t\t\t\tthis.loaded = true\n\t\t\t} catch (error) {\n\t\t\t\tOC.Notification.showTemporary(t('files_sharing', 'Unable to fetch inherited shares'), { type: 'error' })\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Reset current component state\n\t\t */\n\t\tresetState() {\n\t\t\tthis.loaded = false\n\t\t\tthis.loading = false\n\t\t\tthis.showInheritedShares = false\n\t\t\tthis.shares = []\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry__inherited {\n\t.avatar-shared {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.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!./SharingInherited.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!./SharingInherited.vue?vue&type=style&index=0&id=49ffd834&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!./SharingInherited.vue?vue&type=style&index=0&id=49ffd834&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingInherited.vue?vue&type=template&id=49ffd834&scoped=true&\"\nimport script from \"./SharingInherited.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingInherited.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingInherited.vue?vue&type=style&index=0&id=49ffd834&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 \"49ffd834\",\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('ul',{attrs:{\"id\":\"sharing-inherited-shares\"}},[_c('SharingEntrySimple',{staticClass:\"sharing-entry__inherited\",attrs:{\"title\":_vm.mainTitle,\"subtitle\":_vm.subTitle},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('div',{staticClass:\"avatar-shared icon-more-white\"})]},proxy:true}])},[_vm._v(\" \"),_c('ActionButton',{attrs:{\"icon\":_vm.showInheritedSharesIcon},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.toggleInheritedShares.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.toggleTooltip)+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_vm._l((_vm.shares),function(share){return _c('SharingEntryInherited',{key:share.id,attrs:{\"file-info\":_vm.fileInfo,\"share\":share}})})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExternalShareAction.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!./ExternalShareAction.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<Component :is=\"data.is\"\n\t\tv-bind=\"data\"\n\t\tv-on=\"action.handlers\">\n\t\t{{ data.text }}\n\t</Component>\n</template>\n\n<script>\nimport Share from '../models/Share'\n\nexport default {\n\tname: 'ExternalShareAction',\n\n\tprops: {\n\t\tid: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\taction: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({}),\n\t\t},\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshare: {\n\t\t\ttype: Share,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tdata() {\n\t\t\treturn this.action.data(this)\n\t\t},\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./ExternalShareAction.vue?vue&type=template&id=29f555e7&\"\nimport script from \"./ExternalShareAction.vue?vue&type=script&lang=js&\"\nexport * from \"./ExternalShareAction.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(_vm.data.is,_vm._g(_vm._b({tag:\"Component\"},'Component',_vm.data,false),_vm.action.handlers),[_vm._v(\"\\n\\t\"+_vm._s(_vm.data.text)+\"\\n\")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2022 Louis Chmn <louis@chmn.me>\n *\n * @author Louis Chmn <louis@chmn.me>\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 */\n\nexport const ATOMIC_PERMISSIONS = {\n\tNONE: 0,\n\tREAD: 1,\n\tUPDATE: 2,\n\tCREATE: 4,\n\tDELETE: 8,\n\tSHARE: 16,\n}\n\nexport const BUNDLED_PERMISSIONS = {\n\tREAD_ONLY: ATOMIC_PERMISSIONS.READ,\n\tUPLOAD_AND_UPDATE: ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.DELETE,\n\tFILE_DROP: ATOMIC_PERMISSIONS.CREATE,\n\tALL: ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.DELETE | ATOMIC_PERMISSIONS.SHARE,\n}\n\n/**\n * Return whether a given permissions set contains some permissions.\n *\n * @param {number} initialPermissionSet - the permissions set.\n * @param {number} permissionsToCheck - the permissions to check.\n * @return {boolean}\n */\nexport function hasPermissions(initialPermissionSet, permissionsToCheck) {\n\treturn initialPermissionSet !== ATOMIC_PERMISSIONS.NONE && (initialPermissionSet & permissionsToCheck) === permissionsToCheck\n}\n\n/**\n * Return whether a given permissions set is valid.\n *\n * @param {number} permissionsSet - the permissions set.\n *\n * @return {boolean}\n */\nexport function permissionsSetIsValid(permissionsSet) {\n\t// Must have at least READ or CREATE permission.\n\tif (!hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.READ) && !hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.CREATE)) {\n\t\treturn false\n\t}\n\n\t// Must have READ permission if have UPDATE or DELETE.\n\tif (!hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.READ) && (\n\t\thasPermissions(permissionsSet, ATOMIC_PERMISSIONS.UPDATE) || hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.DELETE)\n\t)) {\n\t\treturn false\n\t}\n\n\treturn true\n}\n\n/**\n * Add some permissions to an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the initial permissions.\n * @param {number} permissionsToAdd - the permissions to add.\n *\n * @return {number}\n */\nexport function addPermissions(initialPermissionSet, permissionsToAdd) {\n\treturn initialPermissionSet | permissionsToAdd\n}\n\n/**\n * Remove some permissions from an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the initial permissions.\n * @param {number} permissionsToSubtract - the permissions to remove.\n *\n * @return {number}\n */\nexport function subtractPermissions(initialPermissionSet, permissionsToSubtract) {\n\treturn initialPermissionSet & ~permissionsToSubtract\n}\n\n/**\n * Toggle some permissions from an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the permissions set.\n * @param {number} permissionsToToggle - the permissions to toggle.\n *\n * @return {number}\n */\nexport function togglePermissions(initialPermissionSet, permissionsToToggle) {\n\tif (hasPermissions(initialPermissionSet, permissionsToToggle)) {\n\t\treturn subtractPermissions(initialPermissionSet, permissionsToToggle)\n\t} else {\n\t\treturn addPermissions(initialPermissionSet, permissionsToToggle)\n\t}\n}\n\n/**\n * Return whether some given permissions can be toggled from a permission set.\n *\n * @param {number} permissionSet - the initial permissions set.\n * @param {number} permissionsToToggle - the permissions to toggle.\n *\n * @return {boolean}\n */\nexport function canTogglePermissions(permissionSet, permissionsToToggle) {\n\treturn permissionsSetIsValid(togglePermissions(permissionSet, permissionsToToggle))\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharePermissionsEditor.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!./SharePermissionsEditor.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2022 Louis Chmn <louis@chmn.me>\n -\n - @author Louis Chmn <louis@chmn.me>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<span>\n\t\t<!-- file -->\n\t\t<ActionCheckbox v-if=\"!isFolder\"\n\t\t\t:checked=\"shareHasPermissions(atomicPermissions.UPDATE)\"\n\t\t\t:disabled=\"saving\"\n\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.UPDATE)\">\n\t\t\t{{ t('files_sharing', 'Allow editing') }}\n\t\t</ActionCheckbox>\n\n\t\t<!-- folder -->\n\t\t<template v-if=\"isFolder && fileHasCreatePermission && config.isPublicUploadEnabled\">\n\t\t\t<template v-if=\"!showCustomPermissionsForm\">\n\t\t\t\t<ActionRadio :checked=\"sharePermissionEqual(bundledPermissions.READ_ONLY)\"\n\t\t\t\t\t:value=\"bundledPermissions.READ_ONLY\"\n\t\t\t\t\t:name=\"randomFormName\"\n\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t@change=\"setSharePermissions(bundledPermissions.READ_ONLY)\">\n\t\t\t\t\t{{ t('files_sharing', 'Read only') }}\n\t\t\t\t</ActionRadio>\n\n\t\t\t\t<ActionRadio :checked=\"sharePermissionEqual(bundledPermissions.UPLOAD_AND_UPDATE)\"\n\t\t\t\t\t:value=\"bundledPermissions.UPLOAD_AND_UPDATE\"\n\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t:name=\"randomFormName\"\n\t\t\t\t\t@change=\"setSharePermissions(bundledPermissions.UPLOAD_AND_UPDATE)\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow upload and editing') }}\n\t\t\t\t</ActionRadio>\n\t\t\t\t<ActionRadio :checked=\"sharePermissionEqual(bundledPermissions.FILE_DROP)\"\n\t\t\t\t\t:value=\"bundledPermissions.FILE_DROP\"\n\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t:name=\"randomFormName\"\n\t\t\t\t\tclass=\"sharing-entry__action--public-upload\"\n\t\t\t\t\t@change=\"setSharePermissions(bundledPermissions.FILE_DROP)\">\n\t\t\t\t\t{{ t('files_sharing', 'File drop (upload only)') }}\n\t\t\t\t</ActionRadio>\n\n\t\t\t\t<!-- custom permissions button -->\n\t\t\t\t<ActionButton :title=\"t('files_sharing', 'Custom permissions')\"\n\t\t\t\t\t@click=\"showCustomPermissionsForm = true\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<Tune />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ sharePermissionsIsBundle ? \"\" : sharePermissionsSummary }}\n\t\t\t\t</ActionButton>\n\t\t\t</template>\n\n\t\t\t<!-- custom permissions -->\n\t\t\t<span v-else :class=\"{error: !sharePermissionsSetIsValid}\">\n\t\t\t\t<ActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.READ)\"\n\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.READ)\"\n\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.READ)\">\n\t\t\t\t\t{{ t('files_sharing', 'Read') }}\n\t\t\t\t</ActionCheckbox>\n\t\t\t\t<ActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.CREATE)\"\n\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.CREATE)\"\n\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.CREATE)\">\n\t\t\t\t\t{{ t('files_sharing', 'Upload') }}\n\t\t\t\t</ActionCheckbox>\n\t\t\t\t<ActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.UPDATE)\"\n\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.UPDATE)\"\n\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.UPDATE)\">\n\t\t\t\t\t{{ t('files_sharing', 'Edit') }}\n\t\t\t\t</ActionCheckbox>\n\t\t\t\t<ActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.DELETE)\"\n\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.DELETE)\"\n\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.DELETE)\">\n\t\t\t\t\t{{ t('files_sharing', 'Delete') }}\n\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t<ActionButton @click=\"showCustomPermissionsForm = false\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<ChevronLeft />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('files_sharing', 'Bundled permissions') }}\n\t\t\t\t</ActionButton>\n\t\t\t</span>\n\t\t</template>\n\t</span>\n</template>\n\n<script>\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport ActionRadio from '@nextcloud/vue/dist/Components/ActionRadio'\nimport ActionCheckbox from '@nextcloud/vue/dist/Components/ActionCheckbox'\n\nimport SharesMixin from '../mixins/SharesMixin'\nimport {\n\tATOMIC_PERMISSIONS,\n\tBUNDLED_PERMISSIONS,\n\thasPermissions,\n\tpermissionsSetIsValid,\n\ttogglePermissions,\n\tcanTogglePermissions,\n} from '../lib/SharePermissionsToolBox'\n\nimport Tune from 'vue-material-design-icons/Tune'\nimport ChevronLeft from 'vue-material-design-icons/ChevronLeft'\n\nexport default {\n\tname: 'SharePermissionsEditor',\n\n\tcomponents: {\n\t\tActionButton,\n\t\tActionCheckbox,\n\t\tActionRadio,\n\t\tTune,\n\t\tChevronLeft,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tdata() {\n\t\treturn {\n\t\t\trandomFormName: Math.random().toString(27).substring(2),\n\n\t\t\tshowCustomPermissionsForm: false,\n\n\t\t\tatomicPermissions: ATOMIC_PERMISSIONS,\n\t\t\tbundledPermissions: BUNDLED_PERMISSIONS,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Return the summary of custom checked permissions.\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tsharePermissionsSummary() {\n\t\t\treturn Object.values(this.atomicPermissions)\n\t\t\t\t.filter(permission => this.shareHasPermissions(permission))\n\t\t\t\t.map(permission => {\n\t\t\t\t\tswitch (permission) {\n\t\t\t\t\tcase this.atomicPermissions.CREATE:\n\t\t\t\t\t\treturn this.t('files_sharing', 'Upload')\n\t\t\t\t\tcase this.atomicPermissions.READ:\n\t\t\t\t\t\treturn this.t('files_sharing', 'Read')\n\t\t\t\t\tcase this.atomicPermissions.UPDATE:\n\t\t\t\t\t\treturn this.t('files_sharing', 'Edit')\n\t\t\t\t\tcase this.atomicPermissions.DELETE:\n\t\t\t\t\t\treturn this.t('files_sharing', 'Delete')\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn null\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.filter(permissionLabel => permissionLabel !== null)\n\t\t\t\t.join(', ')\n\t\t},\n\n\t\t/**\n\t\t * Return whether the share's permission is a bundle.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tsharePermissionsIsBundle() {\n\t\t\treturn Object.values(BUNDLED_PERMISSIONS)\n\t\t\t\t.map(bundle => this.sharePermissionEqual(bundle))\n\t\t\t\t.filter(isBundle => isBundle)\n\t\t\t\t.length > 0\n\t\t},\n\n\t\t/**\n\t\t * Return whether the share's permission is valid.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tsharePermissionsSetIsValid() {\n\t\t\treturn permissionsSetIsValid(this.share.permissions)\n\t\t},\n\n\t\t/**\n\t\t * Is the current share a folder ?\n\t\t * TODO: move to a proper FileInfo model?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisFolder() {\n\t\t\treturn this.fileInfo.type === 'dir'\n\t\t},\n\n\t\t/**\n\t\t * Does the current file/folder have create permissions.\n\t\t * TODO: move to a proper FileInfo model?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tfileHasCreatePermission() {\n\t\t\treturn !!(this.fileInfo.permissions & ATOMIC_PERMISSIONS.CREATE)\n\t\t},\n\t},\n\n\tmounted() {\n\t\t// Show the Custom Permissions view on open if the permissions set is not a bundle.\n\t\tthis.showCustomPermissionsForm = !this.sharePermissionsIsBundle\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Return whether the share has the exact given permissions.\n\t\t *\n\t\t * @param {number} permissions - the permissions to check.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tsharePermissionEqual(permissions) {\n\t\t\t// We use the share's permission without PERMISSION_SHARE as it is not relevant here.\n\t\t\treturn (this.share.permissions & ~ATOMIC_PERMISSIONS.SHARE) === permissions\n\t\t},\n\n\t\t/**\n\t\t * Return whether the share has the given permissions.\n\t\t *\n\t\t * @param {number} permissions - the permissions to check.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tshareHasPermissions(permissions) {\n\t\t\treturn hasPermissions(this.share.permissions, permissions)\n\t\t},\n\n\t\t/**\n\t\t * Set the share permissions to the given permissions.\n\t\t *\n\t\t * @param {number} permissions - the permissions to set.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\tsetSharePermissions(permissions) {\n\t\t\tthis.share.permissions = permissions\n\t\t\tthis.queueUpdate('permissions')\n\t\t},\n\n\t\t/**\n\t\t * Return whether some given permissions can be toggled.\n\t\t *\n\t\t * @param {number} permissionsToToggle - the permissions to toggle.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanToggleSharePermissions(permissionsToToggle) {\n\t\t\treturn canTogglePermissions(this.share.permissions, permissionsToToggle)\n\t\t},\n\n\t\t/**\n\t\t * Toggle a given permission.\n\t\t *\n\t\t * @param {number} permissions - the permissions to toggle.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\ttoggleSharePermissions(permissions) {\n\t\t\tthis.share.permissions = togglePermissions(this.share.permissions, permissions)\n\n\t\t\tif (!permissionsSetIsValid(this.share.permissions)) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.queueUpdate('permissions')\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n.error {\n\t::v-deep .action-checkbox__label:before {\n\t\tborder: 1px solid var(--color-error);\n\t}\n}\n</style>\n","\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!./SharePermissionsEditor.vue?vue&type=style&index=0&id=3d9cb67e&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!./SharePermissionsEditor.vue?vue&type=style&index=0&id=3d9cb67e&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharePermissionsEditor.vue?vue&type=template&id=3d9cb67e&scoped=true&\"\nimport script from \"./SharePermissionsEditor.vue?vue&type=script&lang=js&\"\nexport * from \"./SharePermissionsEditor.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharePermissionsEditor.vue?vue&type=style&index=0&id=3d9cb67e&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 \"3d9cb67e\",\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('span',[(!_vm.isFolder)?_c('ActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.UPDATE),\"disabled\":_vm.saving},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.UPDATE)}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow editing'))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isFolder && _vm.fileHasCreatePermission && _vm.config.isPublicUploadEnabled)?[(!_vm.showCustomPermissionsForm)?[_c('ActionRadio',{attrs:{\"checked\":_vm.sharePermissionEqual(_vm.bundledPermissions.READ_ONLY),\"value\":_vm.bundledPermissions.READ_ONLY,\"name\":_vm.randomFormName,\"disabled\":_vm.saving},on:{\"change\":function($event){return _vm.setSharePermissions(_vm.bundledPermissions.READ_ONLY)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Read only'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionRadio',{attrs:{\"checked\":_vm.sharePermissionEqual(_vm.bundledPermissions.UPLOAD_AND_UPDATE),\"value\":_vm.bundledPermissions.UPLOAD_AND_UPDATE,\"disabled\":_vm.saving,\"name\":_vm.randomFormName},on:{\"change\":function($event){return _vm.setSharePermissions(_vm.bundledPermissions.UPLOAD_AND_UPDATE)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow upload and editing'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionRadio',{staticClass:\"sharing-entry__action--public-upload\",attrs:{\"checked\":_vm.sharePermissionEqual(_vm.bundledPermissions.FILE_DROP),\"value\":_vm.bundledPermissions.FILE_DROP,\"disabled\":_vm.saving,\"name\":_vm.randomFormName},on:{\"change\":function($event){return _vm.setSharePermissions(_vm.bundledPermissions.FILE_DROP)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'File drop (upload only)'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionButton',{attrs:{\"title\":_vm.t('files_sharing', 'Custom permissions')},on:{\"click\":function($event){_vm.showCustomPermissionsForm = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Tune')]},proxy:true}],null,false,961531849)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.sharePermissionsIsBundle ? \"\" : _vm.sharePermissionsSummary)+\"\\n\\t\\t\\t\")])]:_c('span',{class:{error: !_vm.sharePermissionsSetIsValid}},[_c('ActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.READ),\"disabled\":_vm.saving || !_vm.canToggleSharePermissions(_vm.atomicPermissions.READ)},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.READ)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Read'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.CREATE),\"disabled\":_vm.saving || !_vm.canToggleSharePermissions(_vm.atomicPermissions.CREATE)},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.CREATE)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Upload'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.UPDATE),\"disabled\":_vm.saving || !_vm.canToggleSharePermissions(_vm.atomicPermissions.UPDATE)},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.UPDATE)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Edit'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.DELETE),\"disabled\":_vm.saving || !_vm.canToggleSharePermissions(_vm.atomicPermissions.DELETE)},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.DELETE)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Delete'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionButton',{on:{\"click\":function($event){_vm.showCustomPermissionsForm = false}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ChevronLeft')]},proxy:true}],null,false,1018742195)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Bundled permissions'))+\"\\n\\t\\t\\t\")])],1)]:_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<li :class=\"{'sharing-entry--share': share}\" class=\"sharing-entry sharing-entry__link\">\n\t\t<Avatar :is-no-user=\"true\"\n\t\t\t:icon-class=\"isEmailShareType ? 'avatar-link-share icon-mail-white' : 'avatar-link-share icon-public-white'\"\n\t\t\tclass=\"sharing-entry__avatar\" />\n\t\t<div class=\"sharing-entry__desc\">\n\t\t\t<h5 :title=\"title\">\n\t\t\t\t{{ title }}\n\t\t\t</h5>\n\t\t\t<p v-if=\"subtitle\">\n\t\t\t\t{{ subtitle }}\n\t\t\t</p>\n\t\t</div>\n\n\t\t<!-- clipboard -->\n\t\t<Actions v-if=\"share && !isEmailShareType && share.token\"\n\t\t\tref=\"copyButton\"\n\t\t\tclass=\"sharing-entry__copy\">\n\t\t\t<ActionLink :href=\"shareLink\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\t:icon=\"copied && copySuccess ? 'icon-checkmark-color' : 'icon-clippy'\"\n\t\t\t\t@click.stop.prevent=\"copyLink\">\n\t\t\t\t{{ clipboardTooltip }}\n\t\t\t</ActionLink>\n\t\t</Actions>\n\n\t\t<!-- pending actions -->\n\t\t<Actions v-if=\"!pending && (pendingPassword || pendingExpirationDate)\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\tmenu-align=\"right\"\n\t\t\t:open.sync=\"open\"\n\t\t\t@close=\"onNewLinkShare\">\n\t\t\t<!-- pending data menu -->\n\t\t\t<ActionText v-if=\"errors.pending\"\n\t\t\t\ticon=\"icon-error\"\n\t\t\t\t:class=\"{ error: errors.pending}\">\n\t\t\t\t{{ errors.pending }}\n\t\t\t</ActionText>\n\t\t\t<ActionText v-else icon=\"icon-info\">\n\t\t\t\t{{ t('files_sharing', 'Please enter the following required information before creating the share') }}\n\t\t\t</ActionText>\n\n\t\t\t<!-- password -->\n\t\t\t<ActionText v-if=\"pendingPassword\" icon=\"icon-password\">\n\t\t\t\t{{ t('files_sharing', 'Password protection (enforced)') }}\n\t\t\t</ActionText>\n\t\t\t<ActionCheckbox v-else-if=\"config.enableLinkPasswordByDefault\"\n\t\t\t\t:checked.sync=\"isPasswordProtected\"\n\t\t\t\t:disabled=\"config.enforcePasswordForPublicLink || saving\"\n\t\t\t\tclass=\"share-link-password-checkbox\"\n\t\t\t\t@uncheck=\"onPasswordDisable\">\n\t\t\t\t{{ t('files_sharing', 'Password protection') }}\n\t\t\t</ActionCheckbox>\n\t\t\t<ActionInput v-if=\"pendingPassword || share.password\"\n\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\tcontent: errors.password,\n\t\t\t\t\tshow: errors.password,\n\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t}\"\n\t\t\t\tclass=\"share-link-password\"\n\t\t\t\t:value.sync=\"share.password\"\n\t\t\t\t:disabled=\"saving\"\n\t\t\t\t:required=\"config.enableLinkPasswordByDefault || config.enforcePasswordForPublicLink\"\n\t\t\t\t:minlength=\"isPasswordPolicyEnabled && config.passwordPolicy.minLength\"\n\t\t\t\ticon=\"\"\n\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t@submit=\"onNewLinkShare\">\n\t\t\t\t{{ t('files_sharing', 'Enter a password') }}\n\t\t\t</ActionInput>\n\n\t\t\t<!-- expiration date -->\n\t\t\t<ActionText v-if=\"pendingExpirationDate\" icon=\"icon-calendar-dark\">\n\t\t\t\t{{ t('files_sharing', 'Expiration date (enforced)') }}\n\t\t\t</ActionText>\n\t\t\t<ActionInput v-if=\"pendingExpirationDate\"\n\t\t\t\tv-model=\"share.expireDate\"\n\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\tcontent: errors.expireDate,\n\t\t\t\t\tshow: errors.expireDate,\n\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t}\"\n\t\t\t\tclass=\"share-link-expire-date\"\n\t\t\t\t:disabled=\"saving\"\n\n\t\t\t\t:lang=\"lang\"\n\t\t\t\ticon=\"\"\n\t\t\t\ttype=\"date\"\n\t\t\t\tvalue-type=\"format\"\n\t\t\t\t:disabled-date=\"disabledDate\">\n\t\t\t\t<!-- let's not submit when picked, the user\n\t\t\t\t\tmight want to still edit or copy the password -->\n\t\t\t\t{{ t('files_sharing', 'Enter a date') }}\n\t\t\t</ActionInput>\n\n\t\t\t<ActionButton icon=\"icon-checkmark\" @click.prevent.stop=\"onNewLinkShare\">\n\t\t\t\t{{ t('files_sharing', 'Create share') }}\n\t\t\t</ActionButton>\n\t\t\t<ActionButton icon=\"icon-close\" @click.prevent.stop=\"onCancel\">\n\t\t\t\t{{ t('files_sharing', 'Cancel') }}\n\t\t\t</ActionButton>\n\t\t</Actions>\n\n\t\t<!-- actions -->\n\t\t<Actions v-else-if=\"!loading\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\tmenu-align=\"right\"\n\t\t\t:open.sync=\"open\"\n\t\t\t@close=\"onMenuClose\">\n\t\t\t<template v-if=\"share\">\n\t\t\t\t<template v-if=\"share.canEdit && canReshare\">\n\t\t\t\t\t<!-- Custom Label -->\n\t\t\t\t\t<ActionInput ref=\"label\"\n\t\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\t\tcontent: errors.label,\n\t\t\t\t\t\t\tshow: errors.label,\n\t\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t\tdefaultContainer: '.app-sidebar'\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\t:class=\"{ error: errors.label }\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:aria-label=\"t('files_sharing', 'Share label')\"\n\t\t\t\t\t\t:value=\"share.newLabel !== undefined ? share.newLabel : share.label\"\n\t\t\t\t\t\ticon=\"icon-edit\"\n\t\t\t\t\t\tmaxlength=\"255\"\n\t\t\t\t\t\t@update:value=\"onLabelChange\"\n\t\t\t\t\t\t@submit=\"onLabelSubmit\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Share label') }}\n\t\t\t\t\t</ActionInput>\n\n\t\t\t\t\t<SharePermissionsEditor :can-reshare=\"canReshare\"\n\t\t\t\t\t\t:share.sync=\"share\"\n\t\t\t\t\t\t:file-info=\"fileInfo\" />\n\n\t\t\t\t\t<ActionSeparator />\n\n\t\t\t\t\t<ActionCheckbox :checked.sync=\"share.hideDownload\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t@change=\"queueUpdate('hideDownload')\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Hide download') }}\n\t\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t\t<!-- password -->\n\t\t\t\t\t<ActionCheckbox :checked.sync=\"isPasswordProtected\"\n\t\t\t\t\t\t:disabled=\"config.enforcePasswordForPublicLink || saving\"\n\t\t\t\t\t\tclass=\"share-link-password-checkbox\"\n\t\t\t\t\t\t@uncheck=\"onPasswordDisable\">\n\t\t\t\t\t\t{{ config.enforcePasswordForPublicLink\n\t\t\t\t\t\t\t? t('files_sharing', 'Password protection (enforced)')\n\t\t\t\t\t\t\t: t('files_sharing', 'Password protect') }}\n\t\t\t\t\t</ActionCheckbox>\n\t\t\t\t\t<ActionInput v-if=\"isPasswordProtected\"\n\t\t\t\t\t\tref=\"password\"\n\t\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\t\tcontent: errors.password,\n\t\t\t\t\t\t\tshow: errors.password,\n\t\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\tclass=\"share-link-password\"\n\t\t\t\t\t\t:class=\"{ error: errors.password}\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:required=\"config.enforcePasswordForPublicLink\"\n\t\t\t\t\t\t:value=\"hasUnsavedPassword ? share.newPassword : '***************'\"\n\t\t\t\t\t\ticon=\"icon-password\"\n\t\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\t\t:type=\"hasUnsavedPassword ? 'text': 'password'\"\n\t\t\t\t\t\t@update:value=\"onPasswordChange\"\n\t\t\t\t\t\t@submit=\"onPasswordSubmit\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Enter a password') }}\n\t\t\t\t\t</ActionInput>\n\t\t\t\t\t<ActionText v-if=\"isEmailShareType && passwordExpirationTime\" icon=\"icon-info\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Password expires {passwordExpirationTime}', {passwordExpirationTime}) }}\n\t\t\t\t\t</ActionText>\n\t\t\t\t\t<ActionText v-else-if=\"isEmailShareType && passwordExpirationTime !== null\" icon=\"icon-error\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Password expired') }}\n\t\t\t\t\t</ActionText>\n\n\t\t\t\t\t<!-- password protected by Talk -->\n\t\t\t\t\t<ActionCheckbox v-if=\"isPasswordProtectedByTalkAvailable\"\n\t\t\t\t\t\t:checked.sync=\"isPasswordProtectedByTalk\"\n\t\t\t\t\t\t:disabled=\"!canTogglePasswordProtectedByTalkAvailable || saving\"\n\t\t\t\t\t\tclass=\"share-link-password-talk-checkbox\"\n\t\t\t\t\t\t@change=\"onPasswordProtectedByTalkChange\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Video verification') }}\n\t\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t\t<!-- expiration date -->\n\t\t\t\t\t<ActionCheckbox :checked.sync=\"hasExpirationDate\"\n\t\t\t\t\t\t:disabled=\"config.isDefaultExpireDateEnforced || saving\"\n\t\t\t\t\t\tclass=\"share-link-expire-date-checkbox\"\n\t\t\t\t\t\t@uncheck=\"onExpirationDisable\">\n\t\t\t\t\t\t{{ config.isDefaultExpireDateEnforced\n\t\t\t\t\t\t\t? t('files_sharing', 'Expiration date (enforced)')\n\t\t\t\t\t\t\t: t('files_sharing', 'Set expiration date') }}\n\t\t\t\t\t</ActionCheckbox>\n\t\t\t\t\t<ActionInput v-if=\"hasExpirationDate\"\n\t\t\t\t\t\tref=\"expireDate\"\n\t\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\t\tcontent: errors.expireDate,\n\t\t\t\t\t\t\tshow: errors.expireDate,\n\t\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\tclass=\"share-link-expire-date\"\n\t\t\t\t\t\t:class=\"{ error: errors.expireDate}\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:lang=\"lang\"\n\t\t\t\t\t\t:value=\"share.expireDate\"\n\t\t\t\t\t\tvalue-type=\"format\"\n\t\t\t\t\t\ticon=\"icon-calendar-dark\"\n\t\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t\t:disabled-date=\"disabledDate\"\n\t\t\t\t\t\t@update:value=\"onExpirationChange\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Enter a date') }}\n\t\t\t\t\t</ActionInput>\n\n\t\t\t\t\t<!-- note -->\n\t\t\t\t\t<ActionCheckbox :checked.sync=\"hasNote\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t@uncheck=\"queueUpdate('note')\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Note to recipient') }}\n\t\t\t\t\t</ActionCheckbox>\n\t\t\t\t\t<ActionTextEditable v-if=\"hasNote\"\n\t\t\t\t\t\tref=\"note\"\n\t\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\t\tcontent: errors.note,\n\t\t\t\t\t\t\tshow: errors.note,\n\t\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\t:class=\"{ error: errors.note}\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:placeholder=\"t('files_sharing', 'Enter a note for the share recipient')\"\n\t\t\t\t\t\t:value=\"share.newNote || share.note\"\n\t\t\t\t\t\ticon=\"icon-edit\"\n\t\t\t\t\t\t@update:value=\"onNoteChange\"\n\t\t\t\t\t\t@submit=\"onNoteSubmit\" />\n\t\t\t\t</template>\n\n\t\t\t\t<ActionSeparator />\n\n\t\t\t\t<!-- external actions -->\n\t\t\t\t<ExternalShareAction v-for=\"action in externalLinkActions\"\n\t\t\t\t\t:id=\"action.id\"\n\t\t\t\t\t:key=\"action.id\"\n\t\t\t\t\t:action=\"action\"\n\t\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t\t:share=\"share\" />\n\n\t\t\t\t<!-- external legacy sharing via url (social...) -->\n\t\t\t\t<ActionLink v-for=\"({icon, url, name}, index) in externalLegacyLinkActions\"\n\t\t\t\t\t:key=\"index\"\n\t\t\t\t\t:href=\"url(shareLink)\"\n\t\t\t\t\t:icon=\"icon\"\n\t\t\t\t\ttarget=\"_blank\">\n\t\t\t\t\t{{ name }}\n\t\t\t\t</ActionLink>\n\n\t\t\t\t<ActionButton v-if=\"share.canDelete\"\n\t\t\t\t\ticon=\"icon-close\"\n\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t@click.prevent=\"onDelete\">\n\t\t\t\t\t{{ t('files_sharing', 'Unshare') }}\n\t\t\t\t</ActionButton>\n\t\t\t\t<ActionButton v-if=\"!isEmailShareType && canReshare\"\n\t\t\t\t\tclass=\"new-share-link\"\n\t\t\t\t\ticon=\"icon-add\"\n\t\t\t\t\t@click.prevent.stop=\"onNewLinkShare\">\n\t\t\t\t\t{{ t('files_sharing', 'Add another link') }}\n\t\t\t\t</ActionButton>\n\t\t\t</template>\n\n\t\t\t<!-- Create new share -->\n\t\t\t<ActionButton v-else-if=\"canReshare\"\n\t\t\t\tclass=\"new-share-link\"\n\t\t\t\t:icon=\"loading ? 'icon-loading-small' : 'icon-add'\"\n\t\t\t\t@click.prevent.stop=\"onNewLinkShare\">\n\t\t\t\t{{ t('files_sharing', 'Create a new share link') }}\n\t\t\t</ActionButton>\n\t\t</Actions>\n\n\t\t<!-- loading indicator to replace the menu -->\n\t\t<div v-else class=\"icon-loading-small sharing-entry__loading\" />\n\t</li>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { Type as ShareTypes } from '@nextcloud/sharing'\nimport Vue from 'vue'\n\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport ActionCheckbox from '@nextcloud/vue/dist/Components/ActionCheckbox'\nimport ActionInput from '@nextcloud/vue/dist/Components/ActionInput'\nimport ActionLink from '@nextcloud/vue/dist/Components/ActionLink'\nimport ActionText from '@nextcloud/vue/dist/Components/ActionText'\nimport ActionSeparator from '@nextcloud/vue/dist/Components/ActionSeparator'\nimport ActionTextEditable from '@nextcloud/vue/dist/Components/ActionTextEditable'\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport Avatar from '@nextcloud/vue/dist/Components/Avatar'\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'\n\nimport ExternalShareAction from './ExternalShareAction'\nimport SharePermissionsEditor from './SharePermissionsEditor'\nimport GeneratePassword from '../utils/GeneratePassword'\nimport Share from '../models/Share'\nimport SharesMixin from '../mixins/SharesMixin'\n\nexport default {\n\tname: 'SharingEntryLink',\n\n\tcomponents: {\n\t\tActions,\n\t\tActionButton,\n\t\tActionCheckbox,\n\t\tActionInput,\n\t\tActionLink,\n\t\tActionText,\n\t\tActionTextEditable,\n\t\tActionSeparator,\n\t\tAvatar,\n\t\tExternalShareAction,\n\t\tSharePermissionsEditor,\n\t},\n\n\tdirectives: {\n\t\tTooltip,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tprops: {\n\t\tcanReshare: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tcopySuccess: true,\n\t\t\tcopied: false,\n\n\t\t\t// Are we waiting for password/expiration date\n\t\t\tpending: false,\n\n\t\t\tExternalLegacyLinkActions: OCA.Sharing.ExternalLinkActions.state,\n\t\t\tExternalShareActions: OCA.Sharing.ExternalShareActions.state,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Link share label\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\ttitle() {\n\t\t\t// if we have a valid existing share (not pending)\n\t\t\tif (this.share && this.share.id) {\n\t\t\t\tif (!this.isShareOwner && this.share.ownerDisplayName) {\n\t\t\t\t\tif (this.isEmailShareType) {\n\t\t\t\t\t\treturn t('files_sharing', '{shareWith} by {initiator}', {\n\t\t\t\t\t\t\tshareWith: this.share.shareWith,\n\t\t\t\t\t\t\tinitiator: this.share.ownerDisplayName,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\treturn t('files_sharing', 'Shared via link by {initiator}', {\n\t\t\t\t\t\tinitiator: this.share.ownerDisplayName,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (this.share.label && this.share.label.trim() !== '') {\n\t\t\t\t\tif (this.isEmailShareType) {\n\t\t\t\t\t\treturn t('files_sharing', 'Mail share ({label})', {\n\t\t\t\t\t\t\tlabel: this.share.label.trim(),\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\treturn t('files_sharing', 'Share link ({label})', {\n\t\t\t\t\t\tlabel: this.share.label.trim(),\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (this.isEmailShareType) {\n\t\t\t\t\treturn this.share.shareWith\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Share link')\n\t\t},\n\n\t\t/**\n\t\t * Show the email on a second line if a label is set for mail shares\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tsubtitle() {\n\t\t\tif (this.isEmailShareType\n\t\t\t\t&& this.title !== this.share.shareWith) {\n\t\t\t\treturn this.share.shareWith\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\t/**\n\t\t * Does the current share have an expiration date\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasExpirationDate: {\n\t\t\tget() {\n\t\t\t\treturn this.config.isDefaultExpireDateEnforced\n\t\t\t\t\t|| !!this.share.expireDate\n\t\t\t},\n\t\t\tset(enabled) {\n\t\t\t\tlet dateString = moment(this.config.defaultExpirationDateString)\n\t\t\t\tif (!dateString.isValid()) {\n\t\t\t\t\tdateString = moment()\n\t\t\t\t}\n\t\t\t\tthis.share.state.expiration = enabled\n\t\t\t\t\t? dateString.format('YYYY-MM-DD')\n\t\t\t\t\t: ''\n\t\t\t\tconsole.debug('Expiration date status', enabled, this.share.expireDate)\n\t\t\t},\n\t\t},\n\n\t\tdateMaxEnforced() {\n\t\t\treturn this.config.isDefaultExpireDateEnforced\n\t\t\t\t&& moment().add(1 + this.config.defaultExpireDate, 'days')\n\t\t},\n\n\t\t/**\n\t\t * Is the current share password protected ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtected: {\n\t\t\tget() {\n\t\t\t\treturn this.config.enforcePasswordForPublicLink\n\t\t\t\t\t|| !!this.share.password\n\t\t\t},\n\t\t\tasync set(enabled) {\n\t\t\t\t// TODO: directly save after generation to make sure the share is always protected\n\t\t\t\tVue.set(this.share, 'password', enabled ? await GeneratePassword() : '')\n\t\t\t\tVue.set(this.share, 'newPassword', this.share.password)\n\t\t\t},\n\t\t},\n\n\t\tpasswordExpirationTime() {\n\t\t\tif (this.share.passwordExpirationTime === null) {\n\t\t\t\treturn null\n\t\t\t}\n\n\t\t\tconst expirationTime = moment(this.share.passwordExpirationTime)\n\n\t\t\tif (expirationTime.diff(moment()) < 0) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\treturn expirationTime.fromNow()\n\t\t},\n\n\t\t/**\n\t\t * Is Talk enabled?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisTalkEnabled() {\n\t\t\treturn OC.appswebroots.spreed !== undefined\n\t\t},\n\n\t\t/**\n\t\t * Is it possible to protect the password by Talk?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtectedByTalkAvailable() {\n\t\t\treturn this.isPasswordProtected && this.isTalkEnabled\n\t\t},\n\n\t\t/**\n\t\t * Is the current share password protected by Talk?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtectedByTalk: {\n\t\t\tget() {\n\t\t\t\treturn this.share.sendPasswordByTalk\n\t\t\t},\n\t\t\tasync set(enabled) {\n\t\t\t\tthis.share.sendPasswordByTalk = enabled\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Is the current share an email share ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisEmailShareType() {\n\t\t\treturn this.share\n\t\t\t\t? this.share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL\n\t\t\t\t: false\n\t\t},\n\n\t\tcanTogglePasswordProtectedByTalkAvailable() {\n\t\t\tif (!this.isPasswordProtected) {\n\t\t\t\t// Makes no sense\n\t\t\t\treturn false\n\t\t\t} else if (this.isEmailShareType && !this.hasUnsavedPassword) {\n\t\t\t\t// For email shares we need a new password in order to enable or\n\t\t\t\t// disable\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t// Anything else should be fine\n\t\t\treturn true\n\t\t},\n\n\t\t/**\n\t\t * Pending data.\n\t\t * If the share still doesn't have an id, it is not synced\n\t\t * Therefore this is still not valid and requires user input\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tpendingPassword() {\n\t\t\treturn this.config.enforcePasswordForPublicLink && this.share && !this.share.id\n\t\t},\n\t\tpendingExpirationDate() {\n\t\t\treturn this.config.isDefaultExpireDateEnforced && this.share && !this.share.id\n\t\t},\n\n\t\t// if newPassword exists, but is empty, it means\n\t\t// the user deleted the original password\n\t\thasUnsavedPassword() {\n\t\t\treturn this.share.newPassword !== undefined\n\t\t},\n\n\t\t/**\n\t\t * Return the public share link\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tshareLink() {\n\t\t\treturn window.location.protocol + '//' + window.location.host + generateUrl('/s/') + this.share.token\n\t\t},\n\n\t\t/**\n\t\t * Clipboard v-tooltip message\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tclipboardTooltip() {\n\t\t\tif (this.copied) {\n\t\t\t\treturn this.copySuccess\n\t\t\t\t\t? t('files_sharing', 'Link copied')\n\t\t\t\t\t: t('files_sharing', 'Cannot copy, please copy the link manually')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Copy to clipboard')\n\t\t},\n\n\t\t/**\n\t\t * External additionnai actions for the menu\n\t\t *\n\t\t * @deprecated use OCA.Sharing.ExternalShareActions\n\t\t * @return {Array}\n\t\t */\n\t\texternalLegacyLinkActions() {\n\t\t\treturn this.ExternalLegacyLinkActions.actions\n\t\t},\n\n\t\t/**\n\t\t * Additional actions for the menu\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\texternalLinkActions() {\n\t\t\t// filter only the registered actions for said link\n\t\t\treturn this.ExternalShareActions.actions\n\t\t\t\t.filter(action => action.shareType.includes(ShareTypes.SHARE_TYPE_LINK)\n\t\t\t\t\t|| action.shareType.includes(ShareTypes.SHARE_TYPE_EMAIL))\n\t\t},\n\n\t\tisPasswordPolicyEnabled() {\n\t\t\treturn typeof this.config.passwordPolicy === 'object'\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Create a new share link and append it to the list\n\t\t */\n\t\tasync onNewLinkShare() {\n\t\t\t// do not run again if already loading\n\t\t\tif (this.loading) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst shareDefaults = {\n\t\t\t\tshare_type: ShareTypes.SHARE_TYPE_LINK,\n\t\t\t}\n\t\t\tif (this.config.isDefaultExpireDateEnforced) {\n\t\t\t\t// default is empty string if not set\n\t\t\t\t// expiration is the share object key, not expireDate\n\t\t\t\tshareDefaults.expiration = this.config.defaultExpirationDateString\n\t\t\t}\n\t\t\tif (this.config.enableLinkPasswordByDefault) {\n\t\t\t\tshareDefaults.password = await GeneratePassword()\n\t\t\t}\n\n\t\t\t// do not push yet if we need a password or an expiration date: show pending menu\n\t\t\tif (this.config.enforcePasswordForPublicLink || this.config.isDefaultExpireDateEnforced) {\n\t\t\t\tthis.pending = true\n\n\t\t\t\t// if a share already exists, pushing it\n\t\t\t\tif (this.share && !this.share.id) {\n\t\t\t\t\t// if the share is valid, create it on the server\n\t\t\t\t\tif (this.checkShare(this.share)) {\n\t\t\t\t\t\tawait this.pushNewLinkShare(this.share, true)\n\t\t\t\t\t\treturn true\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.open = true\n\t\t\t\t\t\tOC.Notification.showTemporary(t('files_sharing', 'Error, please enter proper password and/or expiration date'))\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// ELSE, show the pending popovermenu\n\t\t\t\t// if password enforced, pre-fill with random one\n\t\t\t\tif (this.config.enforcePasswordForPublicLink) {\n\t\t\t\t\tshareDefaults.password = await GeneratePassword()\n\t\t\t\t}\n\n\t\t\t\t// create share & close menu\n\t\t\t\tconst share = new Share(shareDefaults)\n\t\t\t\tconst component = await new Promise(resolve => {\n\t\t\t\t\tthis.$emit('add:share', share, resolve)\n\t\t\t\t})\n\n\t\t\t\t// open the menu on the\n\t\t\t\t// freshly created share component\n\t\t\t\tthis.open = false\n\t\t\t\tthis.pending = false\n\t\t\t\tcomponent.open = true\n\n\t\t\t// Nothing is enforced, creating share directly\n\t\t\t} else {\n\t\t\t\tconst share = new Share(shareDefaults)\n\t\t\t\tawait this.pushNewLinkShare(share)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Push a new link share to the server\n\t\t * And update or append to the list\n\t\t * accordingly\n\t\t *\n\t\t * @param {Share} share the new share\n\t\t * @param {boolean} [update=false] do we update the current share ?\n\t\t */\n\t\tasync pushNewLinkShare(share, update) {\n\t\t\ttry {\n\t\t\t\t// do nothing if we're already pending creation\n\t\t\t\tif (this.loading) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\n\t\t\t\tthis.loading = true\n\t\t\t\tthis.errors = {}\n\n\t\t\t\tconst path = (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')\n\t\t\t\tconst newShare = await this.createShare({\n\t\t\t\t\tpath,\n\t\t\t\t\tshareType: ShareTypes.SHARE_TYPE_LINK,\n\t\t\t\t\tpassword: share.password,\n\t\t\t\t\texpireDate: share.expireDate,\n\t\t\t\t\t// we do not allow setting the publicUpload\n\t\t\t\t\t// before the share creation.\n\t\t\t\t\t// Todo: We also need to fix the createShare method in\n\t\t\t\t\t// lib/Controller/ShareAPIController.php to allow file drop\n\t\t\t\t\t// (currently not supported on create, only update)\n\t\t\t\t})\n\n\t\t\t\tthis.open = false\n\n\t\t\t\tconsole.debug('Link share created', newShare)\n\n\t\t\t\t// if share already exists, copy link directly on next tick\n\t\t\t\tlet component\n\t\t\t\tif (update) {\n\t\t\t\t\tcomponent = await new Promise(resolve => {\n\t\t\t\t\t\tthis.$emit('update:share', newShare, resolve)\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\t// adding new share to the array and copying link to clipboard\n\t\t\t\t\t// using promise so that we can copy link in the same click function\n\t\t\t\t\t// and avoid firefox copy permissions issue\n\t\t\t\t\tcomponent = await new Promise(resolve => {\n\t\t\t\t\t\tthis.$emit('add:share', newShare, resolve)\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\t// Execute the copy link method\n\t\t\t\t// freshly created share component\n\t\t\t\t// ! somehow does not works on firefox !\n\t\t\t\tif (!this.config.enforcePasswordForPublicLink) {\n\t\t\t\t\t// Only copy the link when the password was not forced,\n\t\t\t\t\t// otherwise the user needs to copy/paste the password before finishing the share.\n\t\t\t\t\tcomponent.copyLink()\n\t\t\t\t}\n\n\t\t\t} catch ({ response }) {\n\t\t\t\tconst message = response.data.ocs.meta.message\n\t\t\t\tif (message.match(/password/i)) {\n\t\t\t\t\tthis.onSyncError('password', message)\n\t\t\t\t} else if (message.match(/date/i)) {\n\t\t\t\t\tthis.onSyncError('expireDate', message)\n\t\t\t\t} else {\n\t\t\t\t\tthis.onSyncError('pending', message)\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Label changed, let's save it to a different key\n\t\t *\n\t\t * @param {string} label the share label\n\t\t */\n\t\tonLabelChange(label) {\n\t\t\tthis.$set(this.share, 'newLabel', label.trim())\n\t\t},\n\n\t\t/**\n\t\t * When the note change, we trim, save and dispatch\n\t\t */\n\t\tonLabelSubmit() {\n\t\t\tif (typeof this.share.newLabel === 'string') {\n\t\t\t\tthis.share.label = this.share.newLabel\n\t\t\t\tthis.$delete(this.share, 'newLabel')\n\t\t\t\tthis.queueUpdate('label')\n\t\t\t}\n\t\t},\n\t\tasync copyLink() {\n\t\t\ttry {\n\t\t\t\tawait this.$copyText(this.shareLink)\n\t\t\t\t// focus and show the tooltip\n\t\t\t\tthis.$refs.copyButton.$el.focus()\n\t\t\t\tthis.copySuccess = true\n\t\t\t\tthis.copied = true\n\t\t\t} catch (error) {\n\t\t\t\tthis.copySuccess = false\n\t\t\t\tthis.copied = true\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.copySuccess = false\n\t\t\t\t\tthis.copied = false\n\t\t\t\t}, 4000)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Update newPassword values\n\t\t * of share. If password is set but not newPassword\n\t\t * then the user did not changed the password\n\t\t * If both co-exists, the password have changed and\n\t\t * we show it in plain text.\n\t\t * Then on submit (or menu close), we sync it.\n\t\t *\n\t\t * @param {string} password the changed password\n\t\t */\n\t\tonPasswordChange(password) {\n\t\t\tthis.$set(this.share, 'newPassword', password)\n\t\t},\n\n\t\t/**\n\t\t * Uncheck password protection\n\t\t * We need this method because @update:checked\n\t\t * is ran simultaneously as @uncheck, so we\n\t\t * cannot ensure data is up-to-date\n\t\t */\n\t\tonPasswordDisable() {\n\t\t\tthis.share.password = ''\n\n\t\t\t// reset password state after sync\n\t\t\tthis.$delete(this.share, 'newPassword')\n\n\t\t\t// only update if valid share.\n\t\t\tif (this.share.id) {\n\t\t\t\tthis.queueUpdate('password')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Menu have been closed or password has been submited.\n\t\t * The only property that does not get\n\t\t * synced automatically is the password\n\t\t * So let's check if we have an unsaved\n\t\t * password.\n\t\t * expireDate is saved on datepicker pick\n\t\t * or close.\n\t\t */\n\t\tonPasswordSubmit() {\n\t\t\tif (this.hasUnsavedPassword) {\n\t\t\t\tthis.share.password = this.share.newPassword.trim()\n\t\t\t\tthis.queueUpdate('password')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Update the password along with \"sendPasswordByTalk\".\n\t\t *\n\t\t * If the password was modified the new password is sent; otherwise\n\t\t * updating a mail share would fail, as in that case it is required that\n\t\t * a new password is set when enabling or disabling\n\t\t * \"sendPasswordByTalk\".\n\t\t */\n\t\tonPasswordProtectedByTalkChange() {\n\t\t\tif (this.hasUnsavedPassword) {\n\t\t\t\tthis.share.password = this.share.newPassword.trim()\n\t\t\t}\n\n\t\t\tthis.queueUpdate('sendPasswordByTalk', 'password')\n\t\t},\n\n\t\t/**\n\t\t * Save potential changed data on menu close\n\t\t */\n\t\tonMenuClose() {\n\t\t\tthis.onPasswordSubmit()\n\t\t\tthis.onNoteSubmit()\n\t\t},\n\n\t\t/**\n\t\t * Cancel the share creation\n\t\t * Used in the pending popover\n\t\t */\n\t\tonCancel() {\n\t\t\t// this.share already exists at this point,\n\t\t\t// but is incomplete as not pushed to server\n\t\t\t// YET. We can safely delete the share :)\n\t\t\tthis.$emit('remove:share', this.share)\n\t\t},\n\t},\n\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\toverflow: hidden;\n\n\t\th5 {\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow: hidden;\n\t\t\twhite-space: nowrap;\n\t\t}\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\n\t&:not(.sharing-entry--share) &__actions {\n\t\t.new-share-link {\n\t\t\tborder-top: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t::v-deep .avatar-link-share {\n\t\tbackground-color: var(--color-primary);\n\t}\n\n\t.sharing-entry__action--public-upload {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\n\t&__loading {\n\t\twidth: 44px;\n\t\theight: 44px;\n\t\tmargin: 0;\n\t\tpadding: 14px;\n\t\tmargin-left: auto;\n\t}\n\n\t// put menus to the left\n\t// but only the first one\n\t.action-item {\n\t\tmargin-left: auto;\n\t\t~ .action-item,\n\t\t~ .sharing-entry__loading {\n\t\t\tmargin-left: 0;\n\t\t}\n\t}\n\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryLink.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!./SharingEntryLink.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!./SharingEntryLink.vue?vue&type=style&index=0&id=a63eeae4&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!./SharingEntryLink.vue?vue&type=style&index=0&id=a63eeae4&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryLink.vue?vue&type=template&id=a63eeae4&scoped=true&\"\nimport script from \"./SharingEntryLink.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntryLink.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntryLink.vue?vue&type=style&index=0&id=a63eeae4&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 \"a63eeae4\",\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('li',{staticClass:\"sharing-entry sharing-entry__link\",class:{'sharing-entry--share': _vm.share}},[_c('Avatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"is-no-user\":true,\"icon-class\":_vm.isEmailShareType ? 'avatar-link-share icon-mail-white' : 'avatar-link-share icon-public-white'}}),_vm._v(\" \"),_c('div',{staticClass:\"sharing-entry__desc\"},[_c('h5',{attrs:{\"title\":_vm.title}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.title)+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.subtitle)?_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.subtitle)+\"\\n\\t\\t\")]):_vm._e()]),_vm._v(\" \"),(_vm.share && !_vm.isEmailShareType && _vm.share.token)?_c('Actions',{ref:\"copyButton\",staticClass:\"sharing-entry__copy\"},[_c('ActionLink',{attrs:{\"href\":_vm.shareLink,\"target\":\"_blank\",\"icon\":_vm.copied && _vm.copySuccess ? 'icon-checkmark-color' : 'icon-clippy'},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.copyLink.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.clipboardTooltip)+\"\\n\\t\\t\")])],1):_vm._e(),_vm._v(\" \"),(!_vm.pending && (_vm.pendingPassword || _vm.pendingExpirationDate))?_c('Actions',{staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\",\"open\":_vm.open},on:{\"update:open\":function($event){_vm.open=$event},\"close\":_vm.onNewLinkShare}},[(_vm.errors.pending)?_c('ActionText',{class:{ error: _vm.errors.pending},attrs:{\"icon\":\"icon-error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.errors.pending)+\"\\n\\t\\t\")]):_c('ActionText',{attrs:{\"icon\":\"icon-info\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Please enter the following required information before creating the share'))+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.pendingPassword)?_c('ActionText',{attrs:{\"icon\":\"icon-password\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password protection (enforced)'))+\"\\n\\t\\t\")]):(_vm.config.enableLinkPasswordByDefault)?_c('ActionCheckbox',{staticClass:\"share-link-password-checkbox\",attrs:{\"checked\":_vm.isPasswordProtected,\"disabled\":_vm.config.enforcePasswordForPublicLink || _vm.saving},on:{\"update:checked\":function($event){_vm.isPasswordProtected=$event},\"uncheck\":_vm.onPasswordDisable}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password protection'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.pendingPassword || _vm.share.password)?_c('ActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\tcontent: _vm.errors.password,\n\t\t\t\tshow: _vm.errors.password,\n\t\t\t\ttrigger: 'manual',\n\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t}),expression:\"{\\n\\t\\t\\t\\tcontent: errors.password,\\n\\t\\t\\t\\tshow: errors.password,\\n\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\tdefaultContainer: '#app-sidebar'\\n\\t\\t\\t}\",modifiers:{\"auto\":true}}],staticClass:\"share-link-password\",attrs:{\"value\":_vm.share.password,\"disabled\":_vm.saving,\"required\":_vm.config.enableLinkPasswordByDefault || _vm.config.enforcePasswordForPublicLink,\"minlength\":_vm.isPasswordPolicyEnabled && _vm.config.passwordPolicy.minLength,\"icon\":\"\",\"autocomplete\":\"new-password\"},on:{\"update:value\":function($event){return _vm.$set(_vm.share, \"password\", $event)},\"submit\":_vm.onNewLinkShare}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a password'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.pendingExpirationDate)?_c('ActionText',{attrs:{\"icon\":\"icon-calendar-dark\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Expiration date (enforced)'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.pendingExpirationDate)?_c('ActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\tcontent: _vm.errors.expireDate,\n\t\t\t\tshow: _vm.errors.expireDate,\n\t\t\t\ttrigger: 'manual',\n\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t}),expression:\"{\\n\\t\\t\\t\\tcontent: errors.expireDate,\\n\\t\\t\\t\\tshow: errors.expireDate,\\n\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\tdefaultContainer: '#app-sidebar'\\n\\t\\t\\t}\",modifiers:{\"auto\":true}}],staticClass:\"share-link-expire-date\",attrs:{\"disabled\":_vm.saving,\"lang\":_vm.lang,\"icon\":\"\",\"type\":\"date\",\"value-type\":\"format\",\"disabled-date\":_vm.disabledDate},model:{value:(_vm.share.expireDate),callback:function ($$v) {_vm.$set(_vm.share, \"expireDate\", $$v)},expression:\"share.expireDate\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a date'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('ActionButton',{attrs:{\"icon\":\"icon-checkmark\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Create share'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('ActionButton',{attrs:{\"icon\":\"icon-close\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onCancel.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Cancel'))+\"\\n\\t\\t\")])],1):(!_vm.loading)?_c('Actions',{staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\",\"open\":_vm.open},on:{\"update:open\":function($event){_vm.open=$event},\"close\":_vm.onMenuClose}},[(_vm.share)?[(_vm.share.canEdit && _vm.canReshare)?[_c('ActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\t\tcontent: _vm.errors.label,\n\t\t\t\t\t\tshow: _vm.errors.label,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '.app-sidebar'\n\t\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\t\\tcontent: errors.label,\\n\\t\\t\\t\\t\\t\\tshow: errors.label,\\n\\t\\t\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\t\\t\\tdefaultContainer: '.app-sidebar'\\n\\t\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"label\",class:{ error: _vm.errors.label },attrs:{\"disabled\":_vm.saving,\"aria-label\":_vm.t('files_sharing', 'Share label'),\"value\":_vm.share.newLabel !== undefined ? _vm.share.newLabel : _vm.share.label,\"icon\":\"icon-edit\",\"maxlength\":\"255\"},on:{\"update:value\":_vm.onLabelChange,\"submit\":_vm.onLabelSubmit}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Share label'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('SharePermissionsEditor',{attrs:{\"can-reshare\":_vm.canReshare,\"share\":_vm.share,\"file-info\":_vm.fileInfo},on:{\"update:share\":function($event){_vm.share=$event}}}),_vm._v(\" \"),_c('ActionSeparator'),_vm._v(\" \"),_c('ActionCheckbox',{attrs:{\"checked\":_vm.share.hideDownload,\"disabled\":_vm.saving},on:{\"update:checked\":function($event){return _vm.$set(_vm.share, \"hideDownload\", $event)},\"change\":function($event){return _vm.queueUpdate('hideDownload')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Hide download'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionCheckbox',{staticClass:\"share-link-password-checkbox\",attrs:{\"checked\":_vm.isPasswordProtected,\"disabled\":_vm.config.enforcePasswordForPublicLink || _vm.saving},on:{\"update:checked\":function($event){_vm.isPasswordProtected=$event},\"uncheck\":_vm.onPasswordDisable}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.config.enforcePasswordForPublicLink\n\t\t\t\t\t\t? _vm.t('files_sharing', 'Password protection (enforced)')\n\t\t\t\t\t\t: _vm.t('files_sharing', 'Password protect'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.isPasswordProtected)?_c('ActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\t\tcontent: _vm.errors.password,\n\t\t\t\t\t\tshow: _vm.errors.password,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\t\\tcontent: errors.password,\\n\\t\\t\\t\\t\\t\\tshow: errors.password,\\n\\t\\t\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\t\\t\\tdefaultContainer: '#app-sidebar'\\n\\t\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"password\",staticClass:\"share-link-password\",class:{ error: _vm.errors.password},attrs:{\"disabled\":_vm.saving,\"required\":_vm.config.enforcePasswordForPublicLink,\"value\":_vm.hasUnsavedPassword ? _vm.share.newPassword : '***************',\"icon\":\"icon-password\",\"autocomplete\":\"new-password\",\"type\":_vm.hasUnsavedPassword ? 'text': 'password'},on:{\"update:value\":_vm.onPasswordChange,\"submit\":_vm.onPasswordSubmit}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a password'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isEmailShareType && _vm.passwordExpirationTime)?_c('ActionText',{attrs:{\"icon\":\"icon-info\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password expires {passwordExpirationTime}', {passwordExpirationTime: _vm.passwordExpirationTime}))+\"\\n\\t\\t\\t\\t\")]):(_vm.isEmailShareType && _vm.passwordExpirationTime !== null)?_c('ActionText',{attrs:{\"icon\":\"icon-error\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password expired'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isPasswordProtectedByTalkAvailable)?_c('ActionCheckbox',{staticClass:\"share-link-password-talk-checkbox\",attrs:{\"checked\":_vm.isPasswordProtectedByTalk,\"disabled\":!_vm.canTogglePasswordProtectedByTalkAvailable || _vm.saving},on:{\"update:checked\":function($event){_vm.isPasswordProtectedByTalk=$event},\"change\":_vm.onPasswordProtectedByTalkChange}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Video verification'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('ActionCheckbox',{staticClass:\"share-link-expire-date-checkbox\",attrs:{\"checked\":_vm.hasExpirationDate,\"disabled\":_vm.config.isDefaultExpireDateEnforced || _vm.saving},on:{\"update:checked\":function($event){_vm.hasExpirationDate=$event},\"uncheck\":_vm.onExpirationDisable}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.config.isDefaultExpireDateEnforced\n\t\t\t\t\t\t? _vm.t('files_sharing', 'Expiration date (enforced)')\n\t\t\t\t\t\t: _vm.t('files_sharing', 'Set expiration date'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasExpirationDate)?_c('ActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\t\tcontent: _vm.errors.expireDate,\n\t\t\t\t\t\tshow: _vm.errors.expireDate,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\t\\tcontent: errors.expireDate,\\n\\t\\t\\t\\t\\t\\tshow: errors.expireDate,\\n\\t\\t\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\t\\t\\tdefaultContainer: '#app-sidebar'\\n\\t\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"expireDate\",staticClass:\"share-link-expire-date\",class:{ error: _vm.errors.expireDate},attrs:{\"disabled\":_vm.saving,\"lang\":_vm.lang,\"value\":_vm.share.expireDate,\"value-type\":\"format\",\"icon\":\"icon-calendar-dark\",\"type\":\"date\",\"disabled-date\":_vm.disabledDate},on:{\"update:value\":_vm.onExpirationChange}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a date'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('ActionCheckbox',{attrs:{\"checked\":_vm.hasNote,\"disabled\":_vm.saving},on:{\"update:checked\":function($event){_vm.hasNote=$event},\"uncheck\":function($event){return _vm.queueUpdate('note')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Note to recipient'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasNote)?_c('ActionTextEditable',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\t\tcontent: _vm.errors.note,\n\t\t\t\t\t\tshow: _vm.errors.note,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\t\\tcontent: errors.note,\\n\\t\\t\\t\\t\\t\\tshow: errors.note,\\n\\t\\t\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\t\\t\\tdefaultContainer: '#app-sidebar'\\n\\t\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"note\",class:{ error: _vm.errors.note},attrs:{\"disabled\":_vm.saving,\"placeholder\":_vm.t('files_sharing', 'Enter a note for the share recipient'),\"value\":_vm.share.newNote || _vm.share.note,\"icon\":\"icon-edit\"},on:{\"update:value\":_vm.onNoteChange,\"submit\":_vm.onNoteSubmit}}):_vm._e()]:_vm._e(),_vm._v(\" \"),_c('ActionSeparator'),_vm._v(\" \"),_vm._l((_vm.externalLinkActions),function(action){return _c('ExternalShareAction',{key:action.id,attrs:{\"id\":action.id,\"action\":action,\"file-info\":_vm.fileInfo,\"share\":_vm.share}})}),_vm._v(\" \"),_vm._l((_vm.externalLegacyLinkActions),function(ref,index){\n\t\t\t\t\tvar icon = ref.icon;\n\t\t\t\t\tvar url = ref.url;\n\t\t\t\t\tvar name = ref.name;\nreturn _c('ActionLink',{key:index,attrs:{\"href\":url(_vm.shareLink),\"icon\":icon,\"target\":\"_blank\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(name)+\"\\n\\t\\t\\t\")])}),_vm._v(\" \"),(_vm.share.canDelete)?_c('ActionButton',{attrs:{\"icon\":\"icon-close\",\"disabled\":_vm.saving},on:{\"click\":function($event){$event.preventDefault();return _vm.onDelete.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Unshare'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.isEmailShareType && _vm.canReshare)?_c('ActionButton',{staticClass:\"new-share-link\",attrs:{\"icon\":\"icon-add\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Add another link'))+\"\\n\\t\\t\\t\")]):_vm._e()]:(_vm.canReshare)?_c('ActionButton',{staticClass:\"new-share-link\",attrs:{\"icon\":_vm.loading ? 'icon-loading-small' : 'icon-add'},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Create a new share link'))+\"\\n\\t\\t\")]):_vm._e()],2):_c('div',{staticClass:\"icon-loading-small sharing-entry__loading\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingLinkList.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!./SharingLinkList.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<ul v-if=\"canLinkShare\" class=\"sharing-link-list\">\n\t\t<!-- If no link shares, show the add link default entry -->\n\t\t<SharingEntryLink v-if=\"!hasLinkShares && canReshare\"\n\t\t\t:can-reshare=\"canReshare\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t@add:share=\"addShare\" />\n\n\t\t<!-- Else we display the list -->\n\t\t<template v-if=\"hasShares\">\n\t\t\t<!-- using shares[index] to work with .sync -->\n\t\t\t<SharingEntryLink v-for=\"(share, index) in shares\"\n\t\t\t\t:key=\"share.id\"\n\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t:share.sync=\"shares[index]\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t@add:share=\"addShare(...arguments)\"\n\t\t\t\t@update:share=\"awaitForShare(...arguments)\"\n\t\t\t\t@remove:share=\"removeShare\" />\n\t\t</template>\n\t</ul>\n</template>\n\n<script>\n// eslint-disable-next-line no-unused-vars\nimport Share from '../models/Share'\nimport ShareTypes from '../mixins/ShareTypes'\nimport SharingEntryLink from '../components/SharingEntryLink'\n\nexport default {\n\tname: 'SharingLinkList',\n\n\tcomponents: {\n\t\tSharingEntryLink,\n\t},\n\n\tmixins: [ShareTypes],\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t\tcanReshare: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tcanLinkShare: OC.getCapabilities().files_sharing.public.enabled,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Do we have link shares?\n\t\t * Using this to still show the `new link share`\n\t\t * button regardless of mail shares\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\thasLinkShares() {\n\t\t\treturn this.shares.filter(share => share.type === this.SHARE_TYPES.SHARE_TYPE_LINK).length > 0\n\t\t},\n\n\t\t/**\n\t\t * Do we have any link or email shares?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasShares() {\n\t\t\treturn this.shares.length > 0\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Add a new share into the link shares list\n\t\t * and return the newly created share component\n\t\t *\n\t\t * @param {Share} share the share to add to the array\n\t\t * @param {Function} resolve a function to run after the share is added and its component initialized\n\t\t */\n\t\taddShare(share, resolve) {\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.unshift(share)\n\t\t\tthis.awaitForShare(share, resolve)\n\t\t},\n\n\t\t/**\n\t\t * Await for next tick and render after the list updated\n\t\t * Then resolve with the matched vue component of the\n\t\t * provided share object\n\t\t *\n\t\t * @param {Share} share newly created share\n\t\t * @param {Function} resolve a function to execute after\n\t\t */\n\t\tawaitForShare(share, resolve) {\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tconst newShare = this.$children.find(component => component.share === share)\n\t\t\t\tif (newShare) {\n\t\t\t\t\tresolve(newShare)\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Remove a share from the shares list\n\t\t *\n\t\t * @param {Share} share the share to remove\n\t\t */\n\t\tremoveShare(share) {\n\t\t\tconst index = this.shares.findIndex(item => item === share)\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.splice(index, 1)\n\t\t},\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./SharingLinkList.vue?vue&type=template&id=8be1a6a2&\"\nimport script from \"./SharingLinkList.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingLinkList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.canLinkShare)?_c('ul',{staticClass:\"sharing-link-list\"},[(!_vm.hasLinkShares && _vm.canReshare)?_c('SharingEntryLink',{attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo},on:{\"add:share\":_vm.addShare}}):_vm._e(),_vm._v(\" \"),(_vm.hasShares)?_vm._l((_vm.shares),function(share,index){return _c('SharingEntryLink',{key:share.id,attrs:{\"can-reshare\":_vm.canReshare,\"share\":_vm.shares[index],\"file-info\":_vm.fileInfo},on:{\"update:share\":[function($event){return _vm.$set(_vm.shares, index, $event)},function($event){return _vm.awaitForShare.apply(void 0, arguments)}],\"add:share\":function($event){return _vm.addShare.apply(void 0, arguments)},\"remove:share\":_vm.removeShare}})}):_vm._e()],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<li class=\"sharing-entry\">\n\t\t<Avatar class=\"sharing-entry__avatar\"\n\t\t\t:is-no-user=\"share.type !== SHARE_TYPES.SHARE_TYPE_USER\"\n\t\t\t:user=\"share.shareWith\"\n\t\t\t:display-name=\"share.shareWithDisplayName\"\n\t\t\t:tooltip-message=\"share.type === SHARE_TYPES.SHARE_TYPE_USER ? share.shareWith : ''\"\n\t\t\t:menu-position=\"'left'\"\n\t\t\t:url=\"share.shareWithAvatar\" />\n\t\t<component :is=\"share.shareWithLink ? 'a' : 'div'\"\n\t\t\tv-tooltip.auto=\"tooltip\"\n\t\t\t:href=\"share.shareWithLink\"\n\t\t\tclass=\"sharing-entry__desc\">\n\t\t\t<h5>{{ title }}<span v-if=\"!isUnique\" class=\"sharing-entry__desc-unique\"> ({{ share.shareWithDisplayNameUnique }})</span></h5>\n\t\t\t<p v-if=\"hasStatus\">\n\t\t\t\t<span>{{ share.status.icon || '' }}</span>\n\t\t\t\t<span>{{ share.status.message || '' }}</span>\n\t\t\t</p>\n\t\t</component>\n\t\t<Actions menu-align=\"right\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\t@close=\"onMenuClose\">\n\t\t\t<template v-if=\"share.canEdit\">\n\t\t\t\t<!-- edit permission -->\n\t\t\t\t<ActionCheckbox ref=\"canEdit\"\n\t\t\t\t\t:checked.sync=\"canEdit\"\n\t\t\t\t\t:value=\"permissionsEdit\"\n\t\t\t\t\t:disabled=\"saving || !canSetEdit\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow editing') }}\n\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t<!-- create permission -->\n\t\t\t\t<ActionCheckbox v-if=\"isFolder\"\n\t\t\t\t\tref=\"canCreate\"\n\t\t\t\t\t:checked.sync=\"canCreate\"\n\t\t\t\t\t:value=\"permissionsCreate\"\n\t\t\t\t\t:disabled=\"saving || !canSetCreate\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow creating') }}\n\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t<!-- delete permission -->\n\t\t\t\t<ActionCheckbox v-if=\"isFolder\"\n\t\t\t\t\tref=\"canDelete\"\n\t\t\t\t\t:checked.sync=\"canDelete\"\n\t\t\t\t\t:value=\"permissionsDelete\"\n\t\t\t\t\t:disabled=\"saving || !canSetDelete\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow deleting') }}\n\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t<!-- reshare permission -->\n\t\t\t\t<ActionCheckbox v-if=\"config.isResharingAllowed\"\n\t\t\t\t\tref=\"canReshare\"\n\t\t\t\t\t:checked.sync=\"canReshare\"\n\t\t\t\t\t:value=\"permissionsShare\"\n\t\t\t\t\t:disabled=\"saving || !canSetReshare\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow resharing') }}\n\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t<!-- expiration date -->\n\t\t\t\t<ActionCheckbox :checked.sync=\"hasExpirationDate\"\n\t\t\t\t\t:disabled=\"config.isDefaultInternalExpireDateEnforced || saving\"\n\t\t\t\t\t@uncheck=\"onExpirationDisable\">\n\t\t\t\t\t{{ config.isDefaultInternalExpireDateEnforced\n\t\t\t\t\t\t? t('files_sharing', 'Expiration date enforced')\n\t\t\t\t\t\t: t('files_sharing', 'Set expiration date') }}\n\t\t\t\t</ActionCheckbox>\n\t\t\t\t<ActionInput v-if=\"hasExpirationDate\"\n\t\t\t\t\tref=\"expireDate\"\n\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\tcontent: errors.expireDate,\n\t\t\t\t\t\tshow: errors.expireDate,\n\t\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t\t}\"\n\t\t\t\t\t:class=\"{ error: errors.expireDate}\"\n\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t:lang=\"lang\"\n\t\t\t\t\t:value=\"share.expireDate\"\n\t\t\t\t\tvalue-type=\"format\"\n\t\t\t\t\ticon=\"icon-calendar-dark\"\n\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t:disabled-date=\"disabledDate\"\n\t\t\t\t\t@update:value=\"onExpirationChange\">\n\t\t\t\t\t{{ t('files_sharing', 'Enter a date') }}\n\t\t\t\t</ActionInput>\n\n\t\t\t\t<!-- note -->\n\t\t\t\t<template v-if=\"canHaveNote\">\n\t\t\t\t\t<ActionCheckbox :checked.sync=\"hasNote\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t@uncheck=\"queueUpdate('note')\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Note to recipient') }}\n\t\t\t\t\t</ActionCheckbox>\n\t\t\t\t\t<ActionTextEditable v-if=\"hasNote\"\n\t\t\t\t\t\tref=\"note\"\n\t\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\t\tcontent: errors.note,\n\t\t\t\t\t\t\tshow: errors.note,\n\t\t\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\t:class=\"{ error: errors.note}\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:value=\"share.newNote || share.note\"\n\t\t\t\t\t\ticon=\"icon-edit\"\n\t\t\t\t\t\t@update:value=\"onNoteChange\"\n\t\t\t\t\t\t@submit=\"onNoteSubmit\" />\n\t\t\t\t</template>\n\t\t\t</template>\n\n\t\t\t<ActionButton v-if=\"share.canDelete\"\n\t\t\t\ticon=\"icon-close\"\n\t\t\t\t:disabled=\"saving\"\n\t\t\t\t@click.prevent=\"onDelete\">\n\t\t\t\t{{ t('files_sharing', 'Unshare') }}\n\t\t\t</ActionButton>\n\t\t</Actions>\n\t</li>\n</template>\n\n<script>\nimport Avatar from '@nextcloud/vue/dist/Components/Avatar'\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport ActionCheckbox from '@nextcloud/vue/dist/Components/ActionCheckbox'\nimport ActionInput from '@nextcloud/vue/dist/Components/ActionInput'\nimport ActionTextEditable from '@nextcloud/vue/dist/Components/ActionTextEditable'\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'\n\nimport SharesMixin from '../mixins/SharesMixin'\n\nexport default {\n\tname: 'SharingEntry',\n\n\tcomponents: {\n\t\tActions,\n\t\tActionButton,\n\t\tActionCheckbox,\n\t\tActionInput,\n\t\tActionTextEditable,\n\t\tAvatar,\n\t},\n\n\tdirectives: {\n\t\tTooltip,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tdata() {\n\t\treturn {\n\t\t\tpermissionsEdit: OC.PERMISSION_UPDATE,\n\t\t\tpermissionsCreate: OC.PERMISSION_CREATE,\n\t\t\tpermissionsDelete: OC.PERMISSION_DELETE,\n\t\t\tpermissionsRead: OC.PERMISSION_READ,\n\t\t\tpermissionsShare: OC.PERMISSION_SHARE,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\ttitle() {\n\t\t\tlet title = this.share.shareWithDisplayName\n\t\t\tif (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GROUP) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'group')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_ROOM) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'conversation')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'remote')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'remote group')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GUEST) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'guest')})`\n\t\t\t}\n\t\t\treturn title\n\t\t},\n\n\t\ttooltip() {\n\t\t\tif (this.share.owner !== this.share.uidFileOwner) {\n\t\t\t\tconst data = {\n\t\t\t\t\t// todo: strong or italic?\n\t\t\t\t\t// but the t function escape any html from the data :/\n\t\t\t\t\tuser: this.share.shareWithDisplayName,\n\t\t\t\t\towner: this.share.ownerDisplayName,\n\t\t\t\t}\n\n\t\t\t\tif (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GROUP) {\n\t\t\t\t\treturn t('files_sharing', 'Shared with the group {user} by {owner}', data)\n\t\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_ROOM) {\n\t\t\t\t\treturn t('files_sharing', 'Shared with the conversation {user} by {owner}', data)\n\t\t\t\t}\n\n\t\t\t\treturn t('files_sharing', 'Shared with {user} by {owner}', data)\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\tcanHaveNote() {\n\t\t\treturn !this.isRemote\n\t\t},\n\n\t\tisRemote() {\n\t\t\treturn this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE\n\t\t\t\t|| this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can edit the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetEdit() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_UPDATE) || this.canEdit\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can create the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetCreate() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_CREATE) || this.canCreate\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can delete the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetDelete() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_DELETE) || this.canDelete\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can reshare the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetReshare() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_SHARE) || this.canReshare\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee edit the shared file ?\n\t\t */\n\t\tcanEdit: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasUpdatePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isEditChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee create the shared file ?\n\t\t */\n\t\tcanCreate: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasCreatePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isCreateChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee delete the shared file ?\n\t\t */\n\t\tcanDelete: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasDeletePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isDeleteChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee reshare the file ?\n\t\t */\n\t\tcanReshare: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasSharePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isReshareChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Is this share readable\n\t\t * Needed for some federated shares that might have been added from file drop links\n\t\t */\n\t\thasRead: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasReadPermission\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Is the current share a folder ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisFolder() {\n\t\t\treturn this.fileInfo.type === 'dir'\n\t\t},\n\n\t\t/**\n\t\t * Does the current share have an expiration date\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasExpirationDate: {\n\t\t\tget() {\n\t\t\t\treturn this.config.isDefaultInternalExpireDateEnforced || !!this.share.expireDate\n\t\t\t},\n\t\t\tset(enabled) {\n\t\t\t\tthis.share.expireDate = enabled\n\t\t\t\t\t? this.config.defaultInternalExpirationDateString !== ''\n\t\t\t\t\t\t? this.config.defaultInternalExpirationDateString\n\t\t\t\t\t\t: moment().format('YYYY-MM-DD')\n\t\t\t\t\t: ''\n\t\t\t},\n\t\t},\n\n\t\tdateMaxEnforced() {\n\t\t\tif (!this.isRemote) {\n\t\t\t\treturn this.config.isDefaultInternalExpireDateEnforced\n\t\t\t\t\t&& moment().add(1 + this.config.defaultInternalExpireDate, 'days')\n\t\t\t} else {\n\t\t\t\treturn this.config.isDefaultRemoteExpireDateEnforced\n\t\t\t\t\t&& moment().add(1 + this.config.defaultRemoteExpireDate, 'days')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @return {boolean}\n\t\t */\n\t\thasStatus() {\n\t\t\tif (this.share.type !== this.SHARE_TYPES.SHARE_TYPE_USER) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\treturn (typeof this.share.status === 'object' && !Array.isArray(this.share.status))\n\t\t},\n\n\t},\n\n\tmethods: {\n\t\tupdatePermissions({ isEditChecked = this.canEdit, isCreateChecked = this.canCreate, isDeleteChecked = this.canDelete, isReshareChecked = this.canReshare } = {}) {\n\t\t\t// calc permissions if checked\n\t\t\tconst permissions = 0\n\t\t\t\t| (this.hasRead ? this.permissionsRead : 0)\n\t\t\t\t| (isCreateChecked ? this.permissionsCreate : 0)\n\t\t\t\t| (isDeleteChecked ? this.permissionsDelete : 0)\n\t\t\t\t| (isEditChecked ? this.permissionsEdit : 0)\n\t\t\t\t| (isReshareChecked ? this.permissionsShare : 0)\n\n\t\t\tthis.share.permissions = permissions\n\t\t\tthis.queueUpdate('permissions')\n\t\t},\n\n\t\t/**\n\t\t * Save potential changed data on menu close\n\t\t */\n\t\tonMenuClose() {\n\t\t\tthis.onNoteSubmit()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t\t&-unique {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntry.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!./SharingEntry.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!./SharingEntry.vue?vue&type=style&index=0&id=11f6b64f&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!./SharingEntry.vue?vue&type=style&index=0&id=11f6b64f&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntry.vue?vue&type=template&id=11f6b64f&scoped=true&\"\nimport script from \"./SharingEntry.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntry.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntry.vue?vue&type=style&index=0&id=11f6b64f&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 \"11f6b64f\",\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('li',{staticClass:\"sharing-entry\"},[_c('Avatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"is-no-user\":_vm.share.type !== _vm.SHARE_TYPES.SHARE_TYPE_USER,\"user\":_vm.share.shareWith,\"display-name\":_vm.share.shareWithDisplayName,\"tooltip-message\":_vm.share.type === _vm.SHARE_TYPES.SHARE_TYPE_USER ? _vm.share.shareWith : '',\"menu-position\":'left',\"url\":_vm.share.shareWithAvatar}}),_vm._v(\" \"),_c(_vm.share.shareWithLink ? 'a' : 'div',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.tooltip),expression:\"tooltip\",modifiers:{\"auto\":true}}],tag:\"component\",staticClass:\"sharing-entry__desc\",attrs:{\"href\":_vm.share.shareWithLink}},[_c('h5',[_vm._v(_vm._s(_vm.title)),(!_vm.isUnique)?_c('span',{staticClass:\"sharing-entry__desc-unique\"},[_vm._v(\" (\"+_vm._s(_vm.share.shareWithDisplayNameUnique)+\")\")]):_vm._e()]),_vm._v(\" \"),(_vm.hasStatus)?_c('p',[_c('span',[_vm._v(_vm._s(_vm.share.status.icon || ''))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.share.status.message || ''))])]):_vm._e()]),_vm._v(\" \"),_c('Actions',{staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\"},on:{\"close\":_vm.onMenuClose}},[(_vm.share.canEdit)?[_c('ActionCheckbox',{ref:\"canEdit\",attrs:{\"checked\":_vm.canEdit,\"value\":_vm.permissionsEdit,\"disabled\":_vm.saving || !_vm.canSetEdit},on:{\"update:checked\":function($event){_vm.canEdit=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow editing'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),(_vm.isFolder)?_c('ActionCheckbox',{ref:\"canCreate\",attrs:{\"checked\":_vm.canCreate,\"value\":_vm.permissionsCreate,\"disabled\":_vm.saving || !_vm.canSetCreate},on:{\"update:checked\":function($event){_vm.canCreate=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow creating'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isFolder)?_c('ActionCheckbox',{ref:\"canDelete\",attrs:{\"checked\":_vm.canDelete,\"value\":_vm.permissionsDelete,\"disabled\":_vm.saving || !_vm.canSetDelete},on:{\"update:checked\":function($event){_vm.canDelete=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow deleting'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.config.isResharingAllowed)?_c('ActionCheckbox',{ref:\"canReshare\",attrs:{\"checked\":_vm.canReshare,\"value\":_vm.permissionsShare,\"disabled\":_vm.saving || !_vm.canSetReshare},on:{\"update:checked\":function($event){_vm.canReshare=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow resharing'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('ActionCheckbox',{attrs:{\"checked\":_vm.hasExpirationDate,\"disabled\":_vm.config.isDefaultInternalExpireDateEnforced || _vm.saving},on:{\"update:checked\":function($event){_vm.hasExpirationDate=$event},\"uncheck\":_vm.onExpirationDisable}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.config.isDefaultInternalExpireDateEnforced\n\t\t\t\t\t? _vm.t('files_sharing', 'Expiration date enforced')\n\t\t\t\t\t: _vm.t('files_sharing', 'Set expiration date'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasExpirationDate)?_c('ActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\tcontent: _vm.errors.expireDate,\n\t\t\t\t\tshow: _vm.errors.expireDate,\n\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\tcontent: errors.expireDate,\\n\\t\\t\\t\\t\\tshow: errors.expireDate,\\n\\t\\t\\t\\t\\ttrigger: 'manual'\\n\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"expireDate\",class:{ error: _vm.errors.expireDate},attrs:{\"disabled\":_vm.saving,\"lang\":_vm.lang,\"value\":_vm.share.expireDate,\"value-type\":\"format\",\"icon\":\"icon-calendar-dark\",\"type\":\"date\",\"disabled-date\":_vm.disabledDate},on:{\"update:value\":_vm.onExpirationChange}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a date'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.canHaveNote)?[_c('ActionCheckbox',{attrs:{\"checked\":_vm.hasNote,\"disabled\":_vm.saving},on:{\"update:checked\":function($event){_vm.hasNote=$event},\"uncheck\":function($event){return _vm.queueUpdate('note')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Note to recipient'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasNote)?_c('ActionTextEditable',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\t\tcontent: _vm.errors.note,\n\t\t\t\t\t\tshow: _vm.errors.note,\n\t\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\t\\tcontent: errors.note,\\n\\t\\t\\t\\t\\t\\tshow: errors.note,\\n\\t\\t\\t\\t\\t\\ttrigger: 'manual'\\n\\t\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"note\",class:{ error: _vm.errors.note},attrs:{\"disabled\":_vm.saving,\"value\":_vm.share.newNote || _vm.share.note,\"icon\":\"icon-edit\"},on:{\"update:value\":_vm.onNoteChange,\"submit\":_vm.onNoteSubmit}}):_vm._e()]:_vm._e()]:_vm._e(),_vm._v(\" \"),(_vm.share.canDelete)?_c('ActionButton',{attrs:{\"icon\":\"icon-close\",\"disabled\":_vm.saving},on:{\"click\":function($event){$event.preventDefault();return _vm.onDelete.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Unshare'))+\"\\n\\t\\t\")]):_vm._e()],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<ul class=\"sharing-sharee-list\">\n\t\t<SharingEntry v-for=\"share in shares\"\n\t\t\t:key=\"share.id\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t:share=\"share\"\n\t\t\t:is-unique=\"isUnique(share)\"\n\t\t\t@remove:share=\"removeShare\" />\n\t</ul>\n</template>\n\n<script>\n// eslint-disable-next-line no-unused-vars\nimport Share from '../models/Share'\nimport SharingEntry from '../components/SharingEntry'\nimport ShareTypes from '../mixins/ShareTypes'\n\nexport default {\n\tname: 'SharingList',\n\n\tcomponents: {\n\t\tSharingEntry,\n\t},\n\n\tmixins: [ShareTypes],\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\thasShares() {\n\t\t\treturn this.shares.length === 0\n\t\t},\n\t\tisUnique() {\n\t\t\treturn (share) => {\n\t\t\t\treturn [...this.shares].filter((item) => {\n\t\t\t\t\treturn share.type === this.SHARE_TYPES.SHARE_TYPE_USER && share.shareWithDisplayName === item.shareWithDisplayName\n\t\t\t\t}).length <= 1\n\t\t\t}\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Remove a share from the shares list\n\t\t *\n\t\t * @param {Share} share the share to remove\n\t\t */\n\t\tremoveShare(share) {\n\t\t\tconst index = this.shares.findIndex(item => item === share)\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.splice(index, 1)\n\t\t},\n\t},\n}\n</script>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingList.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!./SharingList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SharingList.vue?vue&type=template&id=0b29d4c0&\"\nimport script from \"./SharingList.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',{staticClass:\"sharing-sharee-list\"},_vm._l((_vm.shares),function(share){return _c('SharingEntry',{key:share.id,attrs:{\"file-info\":_vm.fileInfo,\"share\":share,\"is-unique\":_vm.isUnique(share)},on:{\"remove:share\":_vm.removeShare}})}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<div :class=\"{ 'icon-loading': loading }\">\n\t\t<!-- error message -->\n\t\t<div v-if=\"error\" class=\"emptycontent\">\n\t\t\t<div class=\"icon icon-error\" />\n\t\t\t<h2>{{ error }}</h2>\n\t\t</div>\n\n\t\t<!-- shares content -->\n\t\t<template v-else>\n\t\t\t<!-- shared with me information -->\n\t\t\t<SharingEntrySimple v-if=\"isSharedWithMe\" v-bind=\"sharedWithMe\" class=\"sharing-entry__reshare\">\n\t\t\t\t<template #avatar>\n\t\t\t\t\t<Avatar :user=\"sharedWithMe.user\"\n\t\t\t\t\t\t:display-name=\"sharedWithMe.displayName\"\n\t\t\t\t\t\tclass=\"sharing-entry__avatar\"\n\t\t\t\t\t\ttooltip-message=\"\" />\n\t\t\t\t</template>\n\t\t\t</SharingEntrySimple>\n\n\t\t\t<!-- add new share input -->\n\t\t\t<SharingInput v-if=\"!loading\"\n\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t:link-shares=\"linkShares\"\n\t\t\t\t:reshare=\"reshare\"\n\t\t\t\t:shares=\"shares\"\n\t\t\t\t@add:share=\"addShare\" />\n\n\t\t\t<!-- link shares list -->\n\t\t\t<SharingLinkList v-if=\"!loading\"\n\t\t\t\tref=\"linkShareList\"\n\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t:shares=\"linkShares\" />\n\n\t\t\t<!-- other shares list -->\n\t\t\t<SharingList v-if=\"!loading\"\n\t\t\t\tref=\"shareList\"\n\t\t\t\t:shares=\"shares\"\n\t\t\t\t:file-info=\"fileInfo\" />\n\n\t\t\t<!-- inherited shares -->\n\t\t\t<SharingInherited v-if=\"canReshare && !loading\" :file-info=\"fileInfo\" />\n\n\t\t\t<!-- internal link copy -->\n\t\t\t<SharingEntryInternal :file-info=\"fileInfo\" />\n\n\t\t\t<!-- projects -->\n\t\t\t<CollectionList v-if=\"fileInfo\"\n\t\t\t\t:id=\"`${fileInfo.id}`\"\n\t\t\t\ttype=\"file\"\n\t\t\t\t:name=\"fileInfo.name\" />\n\n\t\t\t<!-- additionnal entries, use it with cautious -->\n\t\t\t<div v-for=\"(section, index) in sections\"\n\t\t\t\t:ref=\"'section-' + index\"\n\t\t\t\t:key=\"index\"\n\t\t\t\tclass=\"sharingTab__additionalContent\">\n\t\t\t\t<component :is=\"section($refs['section-'+index], fileInfo)\" :file-info=\"fileInfo\" />\n\t\t\t</div>\n\t\t</template>\n\t</div>\n</template>\n\n<script>\nimport { CollectionList } from 'nextcloud-vue-collections'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport Avatar from '@nextcloud/vue/dist/Components/Avatar'\nimport axios from '@nextcloud/axios'\n\nimport Config from '../services/ConfigService'\nimport { shareWithTitle } from '../utils/SharedWithMe'\nimport Share from '../models/Share'\nimport ShareTypes from '../mixins/ShareTypes'\nimport SharingEntryInternal from '../components/SharingEntryInternal'\nimport SharingEntrySimple from '../components/SharingEntrySimple'\nimport SharingInput from '../components/SharingInput'\n\nimport SharingInherited from './SharingInherited'\nimport SharingLinkList from './SharingLinkList'\nimport SharingList from './SharingList'\n\nexport default {\n\tname: 'SharingTab',\n\n\tcomponents: {\n\t\tAvatar,\n\t\tCollectionList,\n\t\tSharingEntryInternal,\n\t\tSharingEntrySimple,\n\t\tSharingInherited,\n\t\tSharingInput,\n\t\tSharingLinkList,\n\t\tSharingList,\n\t},\n\n\tmixins: [ShareTypes],\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\n\t\t\terror: '',\n\t\t\texpirationInterval: null,\n\t\t\tloading: true,\n\n\t\t\tfileInfo: null,\n\n\t\t\t// reshare Share object\n\t\t\treshare: null,\n\t\t\tsharedWithMe: {},\n\t\t\tshares: [],\n\t\t\tlinkShares: [],\n\n\t\t\tsections: OCA.Sharing.ShareTabSections.getSections(),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Is this share shared with me?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisSharedWithMe() {\n\t\t\treturn Object.keys(this.sharedWithMe).length > 0\n\t\t},\n\n\t\tcanReshare() {\n\t\t\treturn !!(this.fileInfo.permissions & OC.PERMISSION_SHARE)\n\t\t\t\t|| !!(this.reshare && this.reshare.hasSharePermission && this.config.isResharingAllowed)\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Update current fileInfo and fetch new data\n\t\t *\n\t\t * @param {object} fileInfo the current file FileInfo\n\t\t */\n\t\tasync update(fileInfo) {\n\t\t\tthis.fileInfo = fileInfo\n\t\t\tthis.resetState()\n\t\t\tthis.getShares()\n\t\t},\n\n\t\t/**\n\t\t * Get the existing shares infos\n\t\t */\n\t\tasync getShares() {\n\t\t\ttry {\n\t\t\t\tthis.loading = true\n\n\t\t\t\t// init params\n\t\t\t\tconst shareUrl = generateOcsUrl('apps/files_sharing/api/v1/shares')\n\t\t\t\tconst format = 'json'\n\t\t\t\t// TODO: replace with proper getFUllpath implementation of our own FileInfo model\n\t\t\t\tconst path = (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')\n\n\t\t\t\t// fetch shares\n\t\t\t\tconst fetchShares = axios.get(shareUrl, {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat,\n\t\t\t\t\t\tpath,\n\t\t\t\t\t\treshares: true,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tconst fetchSharedWithMe = axios.get(shareUrl, {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat,\n\t\t\t\t\t\tpath,\n\t\t\t\t\t\tshared_with_me: true,\n\t\t\t\t\t},\n\t\t\t\t})\n\n\t\t\t\t// wait for data\n\t\t\t\tconst [shares, sharedWithMe] = await Promise.all([fetchShares, fetchSharedWithMe])\n\t\t\t\tthis.loading = false\n\n\t\t\t\t// process results\n\t\t\t\tthis.processSharedWithMe(sharedWithMe)\n\t\t\t\tthis.processShares(shares)\n\t\t\t} catch (error) {\n\t\t\t\tthis.error = t('files_sharing', 'Unable to load the shares list')\n\t\t\t\tthis.loading = false\n\t\t\t\tconsole.error('Error loading the shares list', error)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Reset the current view to its default state\n\t\t */\n\t\tresetState() {\n\t\t\tclearInterval(this.expirationInterval)\n\t\t\tthis.loading = true\n\t\t\tthis.error = ''\n\t\t\tthis.sharedWithMe = {}\n\t\t\tthis.shares = []\n\t\t\tthis.linkShares = []\n\t\t},\n\n\t\t/**\n\t\t * Update sharedWithMe.subtitle with the appropriate\n\t\t * expiration time left\n\t\t *\n\t\t * @param {Share} share the sharedWith Share object\n\t\t */\n\t\tupdateExpirationSubtitle(share) {\n\t\t\tconst expiration = moment(share.expireDate).unix()\n\t\t\tthis.$set(this.sharedWithMe, 'subtitle', t('files_sharing', 'Expires {relativetime}', {\n\t\t\t\trelativetime: OC.Util.relativeModifiedDate(expiration * 1000),\n\t\t\t}))\n\n\t\t\t// share have expired\n\t\t\tif (moment().unix() > expiration) {\n\t\t\t\tclearInterval(this.expirationInterval)\n\t\t\t\t// TODO: clear ui if share is expired\n\t\t\t\tthis.$set(this.sharedWithMe, 'subtitle', t('files_sharing', 'this share just expired.'))\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Process the current shares data\n\t\t * and init shares[]\n\t\t *\n\t\t * @param {object} share the share ocs api request data\n\t\t * @param {object} share.data the request data\n\t\t */\n\t\tprocessShares({ data }) {\n\t\t\tif (data.ocs && data.ocs.data && data.ocs.data.length > 0) {\n\t\t\t\t// create Share objects and sort by newest\n\t\t\t\tconst shares = data.ocs.data\n\t\t\t\t\t.map(share => new Share(share))\n\t\t\t\t\t.sort((a, b) => b.createdTime - a.createdTime)\n\n\t\t\t\tthis.linkShares = shares.filter(share => share.type === this.SHARE_TYPES.SHARE_TYPE_LINK || share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\t\t\t\tthis.shares = shares.filter(share => share.type !== this.SHARE_TYPES.SHARE_TYPE_LINK && share.type !== this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\n\t\t\t\tconsole.debug('Processed', this.linkShares.length, 'link share(s)')\n\t\t\t\tconsole.debug('Processed', this.shares.length, 'share(s)')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Process the sharedWithMe share data\n\t\t * and init sharedWithMe\n\t\t *\n\t\t * @param {object} share the share ocs api request data\n\t\t * @param {object} share.data the request data\n\t\t */\n\t\tprocessSharedWithMe({ data }) {\n\t\t\tif (data.ocs && data.ocs.data && data.ocs.data[0]) {\n\t\t\t\tconst share = new Share(data)\n\t\t\t\tconst title = shareWithTitle(share)\n\t\t\t\tconst displayName = share.ownerDisplayName\n\t\t\t\tconst user = share.owner\n\n\t\t\t\tthis.sharedWithMe = {\n\t\t\t\t\tdisplayName,\n\t\t\t\t\ttitle,\n\t\t\t\t\tuser,\n\t\t\t\t}\n\t\t\t\tthis.reshare = share\n\n\t\t\t\t// If we have an expiration date, use it as subtitle\n\t\t\t\t// Refresh the status every 10s and clear if expired\n\t\t\t\tif (share.expireDate && moment(share.expireDate).unix() > moment().unix()) {\n\t\t\t\t\t// first update\n\t\t\t\t\tthis.updateExpirationSubtitle(share)\n\t\t\t\t\t// interval update\n\t\t\t\t\tthis.expirationInterval = setInterval(this.updateExpirationSubtitle, 10000, share)\n\t\t\t\t}\n\t\t\t} else if (this.fileInfo && this.fileInfo.shareOwnerId !== undefined ? this.fileInfo.shareOwnerId !== OC.currentUser : false) {\n\t\t\t\t// Fallback to compare owner and current user.\n\t\t\t\tthis.sharedWithMe = {\n\t\t\t\t\tdisplayName: this.fileInfo.shareOwner,\n\t\t\t\t\ttitle: t(\n\t\t\t\t\t\t'files_sharing',\n\t\t\t\t\t\t'Shared with you by {owner}',\n\t\t\t\t\t\t{ owner: this.fileInfo.shareOwner },\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t{ escape: false }\n\t\t\t\t\t),\n\t\t\t\t\tuser: this.fileInfo.shareOwnerId,\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Add a new share into the shares list\n\t\t * and return the newly created share component\n\t\t *\n\t\t * @param {Share} share the share to add to the array\n\t\t * @param {Function} [resolve] a function to run after the share is added and its component initialized\n\t\t */\n\t\taddShare(share, resolve = () => {}) {\n\t\t\t// only catching share type MAIL as link shares are added differently\n\t\t\t// meaning: not from the ShareInput\n\t\t\tif (share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\tthis.linkShares.unshift(share)\n\t\t\t} else {\n\t\t\t\tthis.shares.unshift(share)\n\t\t\t}\n\t\t\tthis.awaitForShare(share, resolve)\n\t\t},\n\n\t\t/**\n\t\t * Await for next tick and render after the list updated\n\t\t * Then resolve with the matched vue component of the\n\t\t * provided share object\n\t\t *\n\t\t * @param {Share} share newly created share\n\t\t * @param {Function} resolve a function to execute after\n\t\t */\n\t\tawaitForShare(share, resolve) {\n\t\t\tlet listComponent = this.$refs.shareList\n\t\t\t// Only mail shares comes from the input, link shares\n\t\t\t// are managed internally in the SharingLinkList component\n\t\t\tif (share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\tlistComponent = this.$refs.linkShareList\n\t\t\t}\n\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tconst newShare = listComponent.$children.find(component => component.share === share)\n\t\t\t\tif (newShare) {\n\t\t\t\t\tresolve(newShare)\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport { Type as ShareTypes } from '@nextcloud/sharing'\n\nconst shareWithTitle = function(share) {\n\tif (share.type === ShareTypes.SHARE_TYPE_GROUP) {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you and the group {group} by {owner}',\n\t\t\t{\n\t\t\t\tgroup: share.shareWithDisplayName,\n\t\t\t\towner: share.ownerDisplayName,\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{ escape: false }\n\t\t)\n\t} else if (share.type === ShareTypes.SHARE_TYPE_CIRCLE) {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you and {circle} by {owner}',\n\t\t\t{\n\t\t\t\tcircle: share.shareWithDisplayName,\n\t\t\t\towner: share.ownerDisplayName,\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{ escape: false }\n\t\t)\n\t} else if (share.type === ShareTypes.SHARE_TYPE_ROOM) {\n\t\tif (share.shareWithDisplayName) {\n\t\t\treturn t(\n\t\t\t\t'files_sharing',\n\t\t\t\t'Shared with you and the conversation {conversation} by {owner}',\n\t\t\t\t{\n\t\t\t\t\tconversation: share.shareWithDisplayName,\n\t\t\t\t\towner: share.ownerDisplayName,\n\t\t\t\t},\n\t\t\t\tundefined,\n\t\t\t\t{ escape: false }\n\t\t\t)\n\t\t} else {\n\t\t\treturn t(\n\t\t\t\t'files_sharing',\n\t\t\t\t'Shared with you in a conversation by {owner}',\n\t\t\t\t{\n\t\t\t\t\towner: share.ownerDisplayName,\n\t\t\t\t},\n\t\t\t\tundefined,\n\t\t\t\t{ escape: false }\n\t\t\t)\n\t\t}\n\t} else {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you by {owner}',\n\t\t\t{ owner: share.ownerDisplayName },\n\t\t\tundefined,\n\t\t\t{ escape: false }\n\t\t)\n\t}\n}\n\nexport { shareWithTitle }\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.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!./SharingTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SharingTab.vue?vue&type=template&id=6b75002c&\"\nimport script from \"./SharingTab.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingTab.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:{ 'icon-loading': _vm.loading }},[(_vm.error)?_c('div',{staticClass:\"emptycontent\"},[_c('div',{staticClass:\"icon icon-error\"}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.error))])]):[(_vm.isSharedWithMe)?_c('SharingEntrySimple',_vm._b({staticClass:\"sharing-entry__reshare\",scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('Avatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"user\":_vm.sharedWithMe.user,\"display-name\":_vm.sharedWithMe.displayName,\"tooltip-message\":\"\"}})]},proxy:true}],null,false,1643724538)},'SharingEntrySimple',_vm.sharedWithMe,false)):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('SharingInput',{attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo,\"link-shares\":_vm.linkShares,\"reshare\":_vm.reshare,\"shares\":_vm.shares},on:{\"add:share\":_vm.addShare}}):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('SharingLinkList',{ref:\"linkShareList\",attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo,\"shares\":_vm.linkShares}}):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('SharingList',{ref:\"shareList\",attrs:{\"shares\":_vm.shares,\"file-info\":_vm.fileInfo}}):_vm._e(),_vm._v(\" \"),(_vm.canReshare && !_vm.loading)?_c('SharingInherited',{attrs:{\"file-info\":_vm.fileInfo}}):_vm._e(),_vm._v(\" \"),_c('SharingEntryInternal',{attrs:{\"file-info\":_vm.fileInfo}}),_vm._v(\" \"),(_vm.fileInfo)?_c('CollectionList',{attrs:{\"id\":(\"\" + (_vm.fileInfo.id)),\"type\":\"file\",\"name\":_vm.fileInfo.name}}):_vm._e(),_vm._v(\" \"),_vm._l((_vm.sections),function(section,index){return _c('div',{key:index,ref:'section-' + index,refInFor:true,staticClass:\"sharingTab__additionalContent\"},[_c(section(_vm.$refs['section-'+index], _vm.fileInfo),{tag:\"component\",attrs:{\"file-info\":_vm.fileInfo}})],1)})]],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nexport default class ShareSearch {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.results = []\n\t\tconsole.debug('OCA.Sharing.ShareSearch initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ShareSearch\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new result\n\t * Mostly used by the guests app.\n\t * We should consider deprecation and add results via php ?\n\t *\n\t * @param {object} result entry to append\n\t * @param {string} [result.user] entry user\n\t * @param {string} result.displayName entry first line\n\t * @param {string} [result.desc] entry second line\n\t * @param {string} [result.icon] entry icon\n\t * @param {Function} result.handler function to run on entry selection\n\t * @param {Function} [result.condition] condition to add entry or not\n\t * @return {boolean}\n\t */\n\taddNewResult(result) {\n\t\tif (result.displayName.trim() !== ''\n\t\t\t&& typeof result.handler === 'function') {\n\t\t\tthis._state.results.push(result)\n\t\t\treturn true\n\t\t}\n\t\tconsole.error('Invalid search result provided', result)\n\t\treturn false\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nexport default class ExternalLinkActions {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.actions = []\n\t\tconsole.debug('OCA.Sharing.ExternalLinkActions initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ExternalLinkActions\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new action for the link share\n\t * Mostly used by the social sharing app.\n\t *\n\t * @param {object} action new action component to register\n\t * @return {boolean}\n\t */\n\tregisterAction(action) {\n\t\tconsole.warn('OCA.Sharing.ExternalLinkActions is deprecated, use OCA.Sharing.ExternalShareAction instead')\n\n\t\tif (typeof action === 'object' && action.icon && action.name && action.url) {\n\t\t\tthis._state.actions.push(action)\n\t\t\treturn true\n\t\t}\n\t\tconsole.error('Invalid action provided', action)\n\t\treturn false\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nexport default class ExternalShareActions {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.actions = []\n\t\tconsole.debug('OCA.Sharing.ExternalShareActions initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ExternalLinkActions\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new option/entry for the a given share type\n\t *\n\t * @param {object} action new action component to register\n\t * @param {string} action.id unique action id\n\t * @param {Function} action.data data to bind the component to\n\t * @param {Array} action.shareType list of \\@nextcloud/sharing.Types.SHARE_XXX to be mounted on\n\t * @param {object} action.handlers list of listeners\n\t * @return {boolean}\n\t */\n\tregisterAction(action) {\n\t\t// Validate action\n\t\tif (typeof action !== 'object'\n\t\t\t|| typeof action.id !== 'string'\n\t\t\t|| typeof action.data !== 'function' // () => {disabled: true}\n\t\t\t|| !Array.isArray(action.shareType) // [\\@nextcloud/sharing.Types.SHARE_TYPE_LINK, ...]\n\t\t\t|| typeof action.handlers !== 'object' // {click: () => {}, ...}\n\t\t\t|| !Object.values(action.handlers).every(handler => typeof handler === 'function')) {\n\t\t\tconsole.error('Invalid action provided', action)\n\t\t\treturn false\n\t\t}\n\n\t\t// Check duplicates\n\t\tconst hasDuplicate = this._state.actions.findIndex(check => check.id === action.id) > -1\n\t\tif (hasDuplicate) {\n\t\t\tconsole.error(`An action with the same id ${action.id} already exists`, action)\n\t\t\treturn false\n\t\t}\n\n\t\tthis._state.actions.push(action)\n\t\treturn true\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nexport default class TabSections {\n\n\t_sections\n\n\tconstructor() {\n\t\tthis._sections = []\n\t}\n\n\t/**\n\t * @param {registerSectionCallback} section To be called to mount the section to the sharing sidebar\n\t */\n\tregisterSection(section) {\n\t\tthis._sections.push(section)\n\t}\n\n\tgetSections() {\n\t\treturn this._sections\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nimport Vue from 'vue'\nimport VueClipboard from 'vue-clipboard2'\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\n\nimport SharingTab from './views/SharingTab'\nimport ShareSearch from './services/ShareSearch'\nimport ExternalLinkActions from './services/ExternalLinkActions'\nimport ExternalShareActions from './services/ExternalShareActions'\nimport TabSections from './services/TabSections'\n\n// Init Sharing Tab Service\nif (!window.OCA.Sharing) {\n\twindow.OCA.Sharing = {}\n}\nObject.assign(window.OCA.Sharing, { ShareSearch: new ShareSearch() })\nObject.assign(window.OCA.Sharing, { ExternalLinkActions: new ExternalLinkActions() })\nObject.assign(window.OCA.Sharing, { ExternalShareActions: new ExternalShareActions() })\nObject.assign(window.OCA.Sharing, { ShareTabSections: new TabSections() })\n\nVue.prototype.t = t\nVue.prototype.n = n\nVue.use(VueClipboard)\n\n// Init Sharing tab component\nconst View = Vue.extend(SharingTab)\nlet TabInstance = null\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\tif (OCA.Files && OCA.Files.Sidebar) {\n\t\tOCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({\n\t\t\tid: 'sharing',\n\t\t\tname: t('files_sharing', 'Sharing'),\n\t\t\ticon: 'icon-share',\n\n\t\t\tasync mount(el, fileInfo, context) {\n\t\t\t\tif (TabInstance) {\n\t\t\t\t\tTabInstance.$destroy()\n\t\t\t\t}\n\t\t\t\tTabInstance = new View({\n\t\t\t\t\t// Better integration with vue parent component\n\t\t\t\t\tparent: context,\n\t\t\t\t})\n\t\t\t\t// Only mount after we have all the info we need\n\t\t\t\tawait TabInstance.update(fileInfo)\n\t\t\t\tTabInstance.$mount(el)\n\t\t\t},\n\t\t\tupdate(fileInfo) {\n\t\t\t\tTabInstance.update(fileInfo)\n\t\t\t},\n\t\t\tdestroy() {\n\t\t\t\tTabInstance.$destroy()\n\t\t\t\tTabInstance = null\n\t\t\t},\n\t\t}))\n\t}\n})\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, \".error[data-v-3d9cb67e] .action-checkbox__label:before{border:1px solid var(--color-error)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharePermissionsEditor.vue\"],\"names\":[],\"mappings\":\"AA+RC,wDACC,mCAAA\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.error {\\n\\t::v-deep .action-checkbox__label:before {\\n\\t\\tborder: 1px solid var(--color-error);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".sharing-entry[data-v-11f6b64f]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-11f6b64f]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-11f6b64f]{color:var(--color-text-maxcontrast)}.sharing-entry__desc-unique[data-v-11f6b64f]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-11f6b64f]{margin-left:auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntry.vue\"],\"names\":[],\"mappings\":\"AAsZA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAED,6CACC,mCAAA,CAGF,yCACC,gBAAA\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\theight: 44px;\\n\\t&__desc {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: space-between;\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t\\t&-unique {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__actions {\\n\\t\\tmargin-left: auto;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".sharing-entry[data-v-29845767]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-29845767]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-29845767]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-29845767]{margin-left:auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryInherited.vue\"],\"names\":[],\"mappings\":\"AAgGA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAGF,yCACC,gBAAA\",\"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.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\theight: 44px;\\n\\t&__desc {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: space-between;\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__actions {\\n\\t\\tmargin-left: auto;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".sharing-entry__internal .avatar-external[data-v-854dc2c6]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}.sharing-entry__internal .icon-checkmark-color[data-v-854dc2c6]{opacity:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryInternal.vue\"],\"names\":[],\"mappings\":\"AAwGC,2DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA,CAED,gEACC,SAAA\",\"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.sharing-entry__internal {\\n\\t.avatar-external {\\n\\t\\twidth: 32px;\\n\\t\\theight: 32px;\\n\\t\\tline-height: 32px;\\n\\t\\tfont-size: 18px;\\n\\t\\tbackground-color: var(--color-text-maxcontrast);\\n\\t\\tborder-radius: 50%;\\n\\t\\tflex-shrink: 0;\\n\\t}\\n\\t.icon-checkmark-color {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".sharing-entry[data-v-a63eeae4]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-a63eeae4]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em;overflow:hidden}.sharing-entry__desc h5[data-v-a63eeae4]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.sharing-entry__desc p[data-v-a63eeae4]{color:var(--color-text-maxcontrast)}.sharing-entry:not(.sharing-entry--share) .sharing-entry__actions .new-share-link[data-v-a63eeae4]{border-top:1px solid var(--color-border)}.sharing-entry[data-v-a63eeae4] .avatar-link-share{background-color:var(--color-primary)}.sharing-entry .sharing-entry__action--public-upload[data-v-a63eeae4]{border-bottom:1px solid var(--color-border)}.sharing-entry__loading[data-v-a63eeae4]{width:44px;height:44px;margin:0;padding:14px;margin-left:auto}.sharing-entry .action-item[data-v-a63eeae4]{margin-left:auto}.sharing-entry .action-item~.action-item[data-v-a63eeae4],.sharing-entry .action-item~.sharing-entry__loading[data-v-a63eeae4]{margin-left:0}.sharing-entry .icon-checkmark-color[data-v-a63eeae4]{opacity:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryLink.vue\"],\"names\":[],\"mappings\":\"AAy2BA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,eAAA,CAEA,yCACC,sBAAA,CACA,eAAA,CACA,kBAAA,CAED,wCACC,mCAAA,CAKD,mGACC,wCAAA,CAIF,oDACC,qCAAA,CAGD,sEACC,2CAAA,CAGD,yCACC,UAAA,CACA,WAAA,CACA,QAAA,CACA,YAAA,CACA,gBAAA,CAKD,6CACC,gBAAA,CACA,+HAEC,aAAA,CAIF,sDACC,SAAA\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tmin-height: 44px;\\n\\t&__desc {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: space-between;\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\toverflow: hidden;\\n\\n\\t\\th5 {\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t}\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\n\\t&:not(.sharing-entry--share) &__actions {\\n\\t\\t.new-share-link {\\n\\t\\t\\tborder-top: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t::v-deep .avatar-link-share {\\n\\t\\tbackground-color: var(--color-primary);\\n\\t}\\n\\n\\t.sharing-entry__action--public-upload {\\n\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\t}\\n\\n\\t&__loading {\\n\\t\\twidth: 44px;\\n\\t\\theight: 44px;\\n\\t\\tmargin: 0;\\n\\t\\tpadding: 14px;\\n\\t\\tmargin-left: auto;\\n\\t}\\n\\n\\t// put menus to the left\\n\\t// but only the first one\\n\\t.action-item {\\n\\t\\tmargin-left: auto;\\n\\t\\t~ .action-item,\\n\\t\\t~ .sharing-entry__loading {\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t}\\n\\t}\\n\\n\\t.icon-checkmark-color {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".sharing-entry[data-v-1436bf4a]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-1436bf4a]{padding:8px;line-height:1.2em;position:relative;flex:1 1;min-width:0}.sharing-entry__desc h5[data-v-1436bf4a]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:inherit}.sharing-entry__desc p[data-v-1436bf4a]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-1436bf4a]{margin-left:auto !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntrySimple.vue\"],\"names\":[],\"mappings\":\"AA4EA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,WAAA,CACA,iBAAA,CACA,iBAAA,CACA,QAAA,CACA,WAAA,CACA,yCACC,kBAAA,CACA,sBAAA,CACA,eAAA,CACA,iBAAA,CAED,wCACC,mCAAA,CAGF,yCACC,2BAAA\",\"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.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tmin-height: 44px;\\n\\t&__desc {\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\tposition: relative;\\n\\t\\tflex: 1 1;\\n\\t\\tmin-width: 0;\\n\\t\\th5 {\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\tmax-width: inherit;\\n\\t\\t}\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__actions {\\n\\t\\tmargin-left: auto !important;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".sharing-input{width:100%;margin:10px 0}.sharing-input .multiselect__option span[lookup] .avatardiv{background-image:var(--icon-search-fff);background-repeat:no-repeat;background-position:center;background-color:var(--color-text-maxcontrast) !important}.sharing-input .multiselect__option span[lookup] .avatardiv div{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingInput.vue\"],\"names\":[],\"mappings\":\"AA0gBA,eACC,UAAA,CACA,aAAA,CAKE,4DACC,uCAAA,CACA,2BAAA,CACA,0BAAA,CACA,yDAAA,CACA,gEACC,YAAA\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-input {\\n\\twidth: 100%;\\n\\tmargin: 10px 0;\\n\\n\\t// properly style the lookup entry\\n\\t.multiselect__option {\\n\\t\\tspan[lookup] {\\n\\t\\t\\t.avatardiv {\\n\\t\\t\\t\\tbackground-image: var(--icon-search-fff);\\n\\t\\t\\t\\tbackground-repeat: no-repeat;\\n\\t\\t\\t\\tbackground-position: center;\\n\\t\\t\\t\\tbackground-color: var(--color-text-maxcontrast) !important;\\n\\t\\t\\t\\tdiv {\\n\\t\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".sharing-entry__inherited .avatar-shared[data-v-49ffd834]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/views/SharingInherited.vue\"],\"names\":[],\"mappings\":\"AA6JC,0DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA\",\"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.sharing-entry__inherited {\\n\\t.avatar-shared {\\n\\t\\twidth: 32px;\\n\\t\\theight: 32px;\\n\\t\\tline-height: 32px;\\n\\t\\tfont-size: 18px;\\n\\t\\tbackground-color: var(--color-text-maxcontrast);\\n\\t\\tborder-radius: 50%;\\n\\t\\tflex-shrink: 0;\\n\\t}\\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 = 7870;","__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\t7870: 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__(13610); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","Config","document","getElementById","dataset","allowPublicUpload","value","OC","appConfig","core","federatedCloudShareDoc","expireDateString","this","isDefaultExpireDateEnabled","date","window","moment","utc","expireAfterDays","defaultExpireDate","add","format","isDefaultInternalExpireDateEnabled","defaultInternalExpireDate","isDefaultRemoteExpireDateEnabled","defaultRemoteExpireDate","enforcePasswordForPublicLink","enableLinkPasswordByDefault","defaultExpireDateEnforced","defaultExpireDateEnabled","defaultInternalExpireDateEnforced","defaultRemoteExpireDateEnforced","defaultInternalExpireDateEnabled","remoteShareAllowed","capabilities","getCapabilities","undefined","files_sharing","sharebymail","public","enabled","resharingAllowed","password","enforced","sharee","always_show_unique","allowGroupSharing","parseInt","config","password_policy","Share","ocsData","ocs","data","hide_download","mail_send","_share","id","share_type","permissions","uid_owner","displayname_owner","share_with","share_with_displayname","share_with_displayname_unique","share_with_link","share_with_avatar","uid_file_owner","displayname_file_owner","stime","expiration","token","note","label","state","password_expiration_time","passwordExpirationTime","send_password_by_talk","sendPasswordByTalk","path","item_type","mimetype","file_source","file_target","file_parent","PERMISSION_READ","PERMISSION_CREATE","PERMISSION_DELETE","PERMISSION_UPDATE","PERMISSION_SHARE","can_edit","can_delete","via_fileid","via_path","parent","storage_id","storage","item_source","status","SHARE_TYPES","ShareTypes","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_h","$createElement","_c","_self","staticClass","_t","_v","directives","name","rawName","expression","_s","title","subtitle","_e","$slots","attrs","t","internalLinkSubtitle","scopedSlots","_u","key","fn","proxy","ref","internalLink","copied","copySuccess","on","$event","preventDefault","copyLink","apply","arguments","clipboardTooltip","passwordSet","passwordPolicy","api","generate","axios","request","console","info","Array","fill","reduce","prev","curr","charAt","Math","floor","random","length","shareUrl","generateOcsUrl","methods","createShare","shareType","shareWith","publicUpload","expireDate","error","errorMessage","response","meta","message","Notification","showTemporary","type","deleteShare","updateShare","properties","Error","canReshare","loading","inputPlaceholder","asyncFind","addShare","noResultText","mixins","SharesRequests","props","fileInfo","Object","default","required","share","isUnique","Boolean","errors","saving","open","updateQueue","PQueue","concurrency","reactiveState","computed","hasNote","get","set","dateTomorrow","lang","weekdaysShort","dayNamesShort","monthsShort","monthNamesShort","formatLocale","firstDayOfWeek","firstDay","weekdaysMin","monthFormat","isShareOwner","owner","getCurrentUser","uid","checkShare","trim","expirationDate","isValid","onExpirationChange","queueUpdate","onExpirationDisable","onNoteChange","$set","onNoteSubmit","newNote","$delete","onDelete","debug","$emit","propertyNames","map","p","toString","updatedShare","indexOf","onSyncError","property","propertyEl","$refs","$el","focusable","querySelector","focus","debounceQueueUpdate","debounce","disabledDate","dateMoment","isBefore","dateMaxEnforced","isSameOrAfter","shareWithDisplayName","initiator","ownerDisplayName","viaPath","viaFileid","viaFileTargetUrl","folder","viaFolderName","mainTitle","subTitle","showInheritedSharesIcon","stopPropagation","toggleInheritedShares","toggleTooltip","_l","is","_g","_b","tag","action","handlers","text","ATOMIC_PERMISSIONS","NONE","READ","UPDATE","CREATE","DELETE","SHARE","BUNDLED_PERMISSIONS","READ_ONLY","UPLOAD_AND_UPDATE","FILE_DROP","ALL","hasPermissions","initialPermissionSet","permissionsToCheck","permissionsSetIsValid","permissionsSet","togglePermissions","permissionsToToggle","permissionsToSubtract","subtractPermissions","permissionsToAdd","addPermissions","permissionSet","isFolder","shareHasPermissions","atomicPermissions","toggleSharePermissions","fileHasCreatePermission","isPublicUploadEnabled","showCustomPermissionsForm","class","sharePermissionsSetIsValid","canToggleSharePermissions","sharePermissionEqual","bundledPermissions","randomFormName","setSharePermissions","sharePermissionsIsBundle","sharePermissionsSummary","isEmailShareType","shareLink","pending","pendingPassword","pendingExpirationDate","onMenuClose","canEdit","content","show","trigger","defaultContainer","modifiers","newLabel","onLabelChange","onLabelSubmit","hideDownload","isPasswordProtected","onPasswordDisable","hasUnsavedPassword","newPassword","onPasswordChange","onPasswordSubmit","isPasswordProtectedByTalk","canTogglePasswordProtectedByTalkAvailable","onPasswordProtectedByTalkChange","hasExpirationDate","isDefaultExpireDateEnforced","index","icon","url","onNewLinkShare","isPasswordPolicyEnabled","minLength","model","callback","$$v","onCancel","hasLinkShares","shares","awaitForShare","removeShare","SHARE_TYPE_USER","shareWithAvatar","shareWithLink","shareWithDisplayNameUnique","permissionsEdit","canSetEdit","canCreate","permissionsCreate","canSetCreate","canDelete","permissionsDelete","canSetDelete","permissionsShare","canSetReshare","isDefaultInternalExpireDateEnforced","group","escape","circle","conversation","sharedWithMe","user","displayName","linkShares","reshare","section","refInFor","ShareSearch","_state","results","result","handler","push","ExternalLinkActions","actions","warn","ExternalShareActions","isArray","values","every","findIndex","check","TabSections","_sections","OCA","Sharing","assign","ShareTabSections","Vue","n","VueClipboard","View","SharingTab","TabInstance","addEventListener","Files","Sidebar","registerTab","Tab","mount","el","context","$destroy","update","$mount","destroy","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","call","m","amdD","amdO","O","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","keys","splice","r","getter","__esModule","d","a","definition","o","defineProperty","enumerable","g","globalThis","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","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":"files_sharing-files_sharing_tab.js?v=de45dd2340780990f033","mappings":";6BAAIA,qSCwBiBC,EAAAA,sLASpB,WACC,OAAOC,SAASC,eAAe,eACyC,QAApED,SAASC,eAAe,cAAcC,QAAQC,sDAUnD,WACC,OAAOH,SAASC,eAAe,uBAC6B,QAAxDD,SAASC,eAAe,sBAAsBG,yCAUnD,WACC,OAAOC,GAAGC,UAAUC,KAAKC,gEAU1B,WACC,IAAIC,EAAmB,GACvB,GAAIC,KAAKC,2BAA4B,CACpC,IAAMC,EAAOC,OAAOC,OAAOC,MACrBC,EAAkBN,KAAKO,kBAC7BL,EAAKM,IAAIF,EAAiB,QAC1BP,EAAmBG,EAAKO,OAAO,cAEhC,OAAOV,mDAUR,WACC,IAAIA,EAAmB,GACvB,GAAIC,KAAKU,mCAAoC,CAC5C,IAAMR,EAAOC,OAAOC,OAAOC,MACrBC,EAAkBN,KAAKW,0BAC7BT,EAAKM,IAAIF,EAAiB,QAC1BP,EAAmBG,EAAKO,OAAO,cAEhC,OAAOV,iDAUR,WACC,IAAIA,EAAmB,GACvB,GAAIC,KAAKY,iCAAkC,CAC1C,IAAMV,EAAOC,OAAOC,OAAOC,MACrBC,EAAkBN,KAAKa,wBAC7BX,EAAKM,IAAIF,EAAiB,QAC1BP,EAAmBG,EAAKO,OAAO,cAEhC,OAAOV,4CAUR,WACC,OAA0D,IAAnDJ,GAAGC,UAAUC,KAAKiB,sEAU1B,WACC,OAAyD,IAAlDnB,GAAGC,UAAUC,KAAKkB,qEAU1B,WACC,OAAuD,IAAhDpB,GAAGC,UAAUC,KAAKmB,kEAU1B,WACC,OAAsD,IAA/CrB,GAAGC,UAAUC,KAAKoB,0EAU1B,WACC,OAA+D,IAAxDtB,GAAGC,UAAUC,KAAKqB,iFAU1B,WACC,OAA6D,IAAtDvB,GAAGC,UAAUC,KAAKsB,gFAU1B,WACC,OAA8D,IAAvDxB,GAAGC,UAAUC,KAAKuB,mEAU1B,WACC,OAAgD,IAAzCzB,GAAGC,UAAUC,KAAKwB,mDAU1B,WAAyB,UAClBC,EAAe3B,GAAG4B,kBAExB,YAAoDC,KAA7CF,MAAAA,GAAA,UAAAA,EAAcG,qBAAd,eAA6BC,eAEiB,KAAjDJ,MAAAA,GAAA,UAAAA,EAAcG,qBAAd,mBAA6BE,cAA7B,eAAqCC,wCAU1C,WACC,OAAOjC,GAAGC,UAAUC,KAAKU,yDAU1B,WACC,OAAOZ,GAAGC,UAAUC,KAAKc,+DAU1B,WACC,OAAOhB,GAAGC,UAAUC,KAAKgB,wDAU1B,WACC,OAA8C,IAAvClB,GAAGC,UAAUC,KAAKgC,8DAU1B,WACC,YAA2DL,IAAnD7B,GAAG4B,kBAAkBE,cAAcC,aAAqC/B,GAAG4B,kBAAkBE,cAAcC,YAAYI,SAASC,6CAQzI,WAA6B,QAC5B,OAA2E,KAAnE,UAAApC,GAAG4B,kBAAkBE,qBAArB,mBAAoCO,cAApC,eAA4CC,mDAUrD,WACC,OAA+C,IAAxCtC,GAAGC,UAAUC,KAAKqC,sDAU1B,WACC,OAAOC,SAASxC,GAAGyC,OAAO,kCAAmC,KAAO,sCAWrE,WACC,OAAOD,SAASxC,GAAGyC,OAAO,iCAAkC,KAAO,8BAUpE,WACC,IAAMd,EAAe3B,GAAG4B,kBACxB,OAAOD,EAAae,gBAAkBf,EAAae,gBAAkB,8EA7SlDhD,wLCGAiD,EAAAA,WASpB,WAAYC,wGAAS,kIAChBA,EAAQC,KAAOD,EAAQC,IAAIC,MAAQF,EAAQC,IAAIC,KAAK,KACvDF,EAAUA,EAAQC,IAAIC,KAAK,IAI5BF,EAAQG,gBAAkBH,EAAQG,cAClCH,EAAQI,YAAcJ,EAAQI,UAG9B3C,KAAK4C,OAASL,0CAcf,WACC,OAAOvC,KAAK4C,uBAUb,WACC,OAAO5C,KAAK4C,OAAOC,qBAUpB,WACC,OAAO7C,KAAK4C,OAAOE,oCAWpB,WACC,OAAO9C,KAAK4C,OAAOG,iBAUpB,SAAgBA,GACf/C,KAAK4C,OAAOG,YAAcA,qBAW3B,WACC,OAAO/C,KAAK4C,OAAOI,wCAUpB,WACC,OAAOhD,KAAK4C,OAAOK,yCAWpB,WACC,OAAOjD,KAAK4C,OAAOM,6CAWpB,WACC,OAAOlD,KAAK4C,OAAOO,wBACfnD,KAAK4C,OAAOM,mDAWjB,WACC,OAAOlD,KAAK4C,OAAOQ,+BACfpD,KAAK4C,OAAOM,sCAUjB,WACC,OAAOlD,KAAK4C,OAAOS,6CAUpB,WACC,OAAOrD,KAAK4C,OAAOU,4CAWpB,WACC,OAAOtD,KAAK4C,OAAOW,iDAWpB,WACC,OAAOvD,KAAK4C,OAAOY,wBACfxD,KAAK4C,OAAOW,wCAWjB,WACC,OAAOvD,KAAK4C,OAAOa,8BAUpB,WACC,OAAOzD,KAAK4C,OAAOc,gBAUpB,SAAexD,GACdF,KAAK4C,OAAOc,WAAaxD,qBAW1B,WACC,OAAOF,KAAK4C,OAAOe,wBAUpB,WACC,OAAO3D,KAAK4C,OAAOgB,UASpB,SAASA,GACR5D,KAAK4C,OAAOgB,KAAOA,qBAWpB,WACC,OAAO5D,KAAK4C,OAAOiB,WAUpB,SAAUA,GACT7D,KAAK4C,OAAOiB,MAAQA,wBAUrB,WACC,OAAiC,IAA1B7D,KAAK4C,OAAOD,oCAUpB,WACC,OAAqC,IAA9B3C,KAAK4C,OAAOF,mBASpB,SAAiBoB,GAChB9D,KAAK4C,OAAOF,eAA0B,IAAVoB,wBAU7B,WACC,OAAO9D,KAAK4C,OAAOd,cASpB,SAAaA,GACZ9B,KAAK4C,OAAOd,SAAWA,sCAUxB,WACC,OAAO9B,KAAK4C,OAAOmB,8BASpB,SAA2BC,GAC1BhE,KAAK4C,OAAOmB,yBAA2BC,kCAUxC,WACC,OAAOhE,KAAK4C,OAAOqB,2BAUpB,SAAuBC,GACtBlE,KAAK4C,OAAOqB,sBAAwBC,oBAWrC,WACC,OAAOlE,KAAK4C,OAAOuB,2BAUpB,WACC,OAAOnE,KAAK4C,OAAOwB,gCAUpB,WACC,OAAOpE,KAAK4C,OAAOyB,iCAUpB,WACC,OAAOrE,KAAK4C,OAAO0B,oCAYpB,WACC,OAAOtE,KAAK4C,OAAO2B,oCAUpB,WACC,OAAOvE,KAAK4C,OAAO4B,2CAYpB,WACC,SAAWxE,KAAK+C,YAAcpD,GAAG8E,kDAUlC,WACC,SAAWzE,KAAK+C,YAAcpD,GAAG+E,oDAUlC,WACC,SAAW1E,KAAK+C,YAAcpD,GAAGgF,oDAUlC,WACC,SAAW3E,KAAK+C,YAAcpD,GAAGiF,mDAUlC,WACC,SAAW5E,KAAK+C,YAAcpD,GAAGkF,uCAalC,WACC,OAAgC,IAAzB7E,KAAK4C,OAAOkC,gCAUpB,WACC,OAAkC,IAA3B9E,KAAK4C,OAAOmC,kCAUpB,WACC,OAAO/E,KAAK4C,OAAOoC,gCAUpB,WACC,OAAOhF,KAAK4C,OAAOqC,6BAKpB,WACC,OAAOjF,KAAK4C,OAAOsC,8BAGpB,WACC,OAAOlF,KAAK4C,OAAOuC,gCAGpB,WACC,OAAOnF,KAAK4C,OAAOwC,gCAGpB,WACC,OAAOpF,KAAK4C,OAAOyC,gCAGpB,WACC,OAAOrF,KAAK4C,OAAO0C,kFAxjBAhD,GCFrB,GACCG,KADc,WAEb,MAAO,CACN8C,YAAaC,EAAAA,iEC5B+K,ECyC/L,CACA,0BAEA,YACA,aAGA,YACA,aAGA,OACA,OACA,YACA,WACA,aAEA,SACA,YACA,YAEA,UACA,YACA,YAEA,UACA,aACA,+ICzDIC,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,eCFA,GAXgB,OACd,GCTW,WAAa,IAAIM,EAAI/F,KAASgG,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,KAAK,CAACE,YAAY,iBAAiB,CAACL,EAAIM,GAAG,UAAUN,EAAIO,GAAG,KAAKJ,EAAG,MAAM,CAACK,WAAW,CAAC,CAACC,KAAK,UAAUC,QAAQ,YAAY/G,MAAOqG,EAAW,QAAEW,WAAW,YAAYN,YAAY,uBAAuB,CAACF,EAAG,KAAK,CAACH,EAAIO,GAAGP,EAAIY,GAAGZ,EAAIa,UAAUb,EAAIO,GAAG,KAAMP,EAAY,SAAEG,EAAG,IAAI,CAACH,EAAIO,GAAG,WAAWP,EAAIY,GAAGZ,EAAIc,UAAU,YAAYd,EAAIe,OAAOf,EAAIO,GAAG,KAAMP,EAAIgB,OAAiB,QAAEb,EAAG,UAAU,CAACE,YAAY,yBAAyBY,MAAM,CAAC,aAAa,UAAU,CAACjB,EAAIM,GAAG,YAAY,GAAGN,EAAIe,MAAM,KACnjB,IDWpB,EACA,KACA,WACA,MAI8B,iIEKhC,OACA,4BAEA,YACA,eACA,sBAGA,OACA,UACA,YACA,qBACA,cAIA,KAhBA,WAiBA,OACA,UACA,iBAIA,UAMA,aANA,WAOA,qGAQA,iBAfA,WAgBA,mBACA,iBACA,iCACA,gEAEA,wCAGA,qBAxBA,WAyBA,iCACA,qEAEA,qEAIA,SACA,SADA,WACA,qKAEA,4BAFA,OAIA,+BACA,iBACA,YANA,gDAQA,iBACA,YACA,oBAVA,yBAYA,uBACA,iBACA,cACA,KAfA,+PChFiM,eCW7L,EAAU,GAEd,EAAQpB,kBAAoB,IAC5B,EAAQC,cAAgB,IAElB,EAAQC,OAAS,SAAc,KAAM,QAE3C,EAAQC,OAAS,IACjB,EAAQC,mBAAqB,IAEhB,IAAI,IAAS,GAKJ,KAAW,YAAiB,WALlD,ICbI,GAAY,OACd,GCTW,WAAa,IAAIC,EAAI/F,KAASgG,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,qBAAqB,CAACE,YAAY,0BAA0BY,MAAM,CAAC,MAAQjB,EAAIkB,EAAE,gBAAiB,iBAAiB,SAAWlB,EAAImB,sBAAsBC,YAAYpB,EAAIqB,GAAG,CAAC,CAACC,IAAI,SAASC,GAAG,WAAW,MAAO,CAACpB,EAAG,MAAM,CAACE,YAAY,0CAA0CmB,OAAM,MAAS,CAACxB,EAAIO,GAAG,KAAKJ,EAAG,aAAa,CAACsB,IAAI,aAAaR,MAAM,CAAC,KAAOjB,EAAI0B,aAAa,OAAS,SAAS,KAAO1B,EAAI2B,QAAU3B,EAAI4B,YAAc,uBAAyB,eAAeC,GAAG,CAAC,MAAQ,SAASC,GAAgC,OAAxBA,EAAOC,iBAAwB/B,EAAIgC,SAASC,MAAM,KAAMC,cAAc,CAAClC,EAAIO,GAAG,SAASP,EAAIY,GAAGZ,EAAImC,kBAAkB,WAAW,KACvrB,IDWpB,EACA,KACA,WACA,MAIF,EAAe,EAAiB,0XEMhC,IAAM9F,GAAS,IAAI/C,EACb8I,GAAc,uDASL,cAAf,oFAAe,uGAEV/F,GAAOgG,eAAeC,MAAOjG,GAAOgG,eAAeC,IAAIC,SAF7C,0CAIUC,EAAAA,QAAAA,IAAUnG,GAAOgG,eAAeC,IAAIC,UAJ9C,YAINE,EAJM,QAKA/F,KAAKD,IAAIC,KAAKX,SALd,yCAMJ0G,EAAQ/F,KAAKD,IAAIC,KAAKX,UANlB,uDASZ2G,QAAQC,KAAK,iDAAb,MATY,iCAcPC,MAAM,IAAIC,KAAK,GACpBC,QAAO,SAACC,EAAMC,GAEd,OADAD,EAAQX,GAAYa,OAAOC,KAAKC,MAAMD,KAAKE,SAAWhB,GAAYiB,WAEhE,KAlBU,yZCHf,IAAMC,IAAWC,EAAAA,EAAAA,gBAAe,oCAEhC,IACCC,QAAS,CAiBFC,YAjBE,YAiBsH,2KAA1GrF,EAA0G,EAA1GA,KAAMpB,EAAoG,EAApGA,YAAa0G,EAAuF,EAAvFA,UAAWC,EAA4E,EAA5EA,UAAWC,EAAiE,EAAjEA,aAAc7H,EAAmD,EAAnDA,SAAUoC,EAAyC,EAAzCA,mBAAoB0F,EAAqB,EAArBA,WAAY/F,EAAS,EAATA,MAAS,kBAEtG0E,EAAAA,QAAAA,KAAWc,GAAU,CAAElF,KAAAA,EAAMpB,YAAAA,EAAa0G,UAAAA,EAAWC,UAAAA,EAAWC,aAAAA,EAAc7H,SAAAA,EAAUoC,mBAAAA,EAAoB0F,WAAAA,EAAY/F,MAAAA,IAFlB,UAGvH2E,OADCA,EAFsH,mBAGvHA,EAAS/F,YAH8G,OAGvH,EAAeD,IAHwG,sBAIrHgG,EAJqH,gCAMrH,IAAIlG,EAAMkG,EAAQ/F,KAAKD,IAAIC,OAN0F,wCAQ5HgG,QAAQoB,MAAM,6BAAd,MACMC,EATsH,sCASvG,KAAOC,gBATgG,iBASvG,EAAiBtH,YATsF,iBASvG,EAAuBD,WATgF,iBASvG,EAA4BwH,YAT2E,aASvG,EAAkCC,QACvDtK,GAAGuK,aAAaC,cACfL,EAAe7C,EAAE,gBAAiB,2CAA4C,CAAE6C,aAAAA,IAAkB7C,EAAE,gBAAiB,4BACrH,CAAEmD,KAAM,UAZmH,kEAwBxHC,YAzCE,SAyCUxH,GAAI,2KAEE0F,EAAAA,QAAAA,OAAac,GAAW,IAAH,OAAOxG,IAF9B,UAGf2F,OADCA,EAFc,mBAGfA,EAAS/F,YAHM,OAGf,EAAeD,IAHA,sBAIbgG,EAJa,iCAMb,GANa,sCAQpBC,QAAQoB,MAAM,6BAAd,MACMC,EATc,sCASC,KAAOC,gBATR,iBASC,EAAiBtH,YATlB,iBASC,EAAuBD,WATxB,iBASC,EAA4BwH,YAT7B,aASC,EAAkCC,QACvDtK,GAAGuK,aAAaC,cACfL,EAAe7C,EAAE,gBAAiB,2CAA4C,CAAE6C,aAAAA,IAAkB7C,EAAE,gBAAiB,4BACrH,CAAEmD,KAAM,UAZW,iEAwBhBE,YAjEE,SAiEUzH,EAAI0H,GAAY,6KAEVhC,EAAAA,QAAAA,IAAUc,GAAW,IAAH,OAAOxG,GAAM0H,GAFrB,UAG3B/B,OADCA,EAF0B,mBAG3BA,EAAS/F,YAHkB,OAG3B,EAAeD,IAHY,sBAIzBgG,EAJyB,gCAMxBA,EAAQ/F,KAAKD,IAAIC,MANO,+DAShCgG,QAAQoB,MAAM,6BAAd,MAC8B,MAA1B,KAAME,SAASzE,SACZwE,EAD4B,sCACb,KAAOC,gBADM,iBACb,EAAiBtH,YADJ,iBACb,EAAuBD,WADV,iBACb,EAA4BwH,YADf,aACb,EAAkCC,QACvDtK,GAAGuK,aAAaC,cACfL,EAAe7C,EAAE,gBAAiB,2CAA4C,CAAE6C,aAAAA,IAAkB7C,EAAE,gBAAiB,4BACrH,CAAEmD,KAAM,WAGJH,EAAU,KAAMF,SAAStH,KAAKD,IAAIwH,KAAKC,QACvC,IAAIO,MAAMP,GAlBgB,qyCCrCpC,QACA,oBAEA,YACA,iBAGA,cAEA,OACA,QACA,WACA,6BACA,aAEA,YACA,WACA,6BACA,aAEA,UACA,YACA,qBACA,aAEA,SACA,OACA,cAEA,YACA,aACA,cAIA,KAnCA,WAoCA,OACA,aACA,WACA,SACA,mBACA,0CACA,iBAIA,UASA,gBATA,WAUA,iCAEA,iBAZA,WAaA,uCAEA,uBAIA,EAIA,0DAHA,qCAJA,+CAUA,aA1BA,WA2BA,gGAGA,QA9BA,WA+BA,yBACA,iBAEA,sBAGA,aArCA,WAsCA,oBACA,iCAEA,0CAIA,QA3FA,WA4FA,2BAGA,SACA,UADA,SACA,mJAGA,kBACA,eAJA,uBAOA,aAPA,SAQA,4BARA,8CAkBA,eAnBA,SAmBA,iOACA,cAEA,qEACA,MAGA,GACA,8BACA,+BACA,gCACA,sCACA,gCACA,8BACA,+BACA,gCAGA,uDACA,uCAGA,OAtBA,kBAwBA,yEACA,QACA,cACA,iDACA,SACA,SACA,wCACA,eA/BA,OAwBA,EAxBA,gEAmCA,iDAnCA,2BAuCA,kBACA,wBACA,WAGA,kEACA,kEAGA,+BACA,qDAEA,sDACA,+BACA,qDAEA,sDAIA,KACA,qBACA,QACA,mBACA,YACA,iDACA,YAKA,8EAEA,kCAGA,0BACA,sBAGA,mBACA,oBAEA,mBACA,GANA,IAOA,IAEA,iCAEA,mCACA,oDAEA,KAGA,aACA,0CA/FA,6DAuGA,uCACA,4CACA,KAKA,mBAjIA,WAiIA,4JACA,aAEA,OAHA,kBAKA,qFACA,QACA,cACA,4BARA,OAKA,EALA,8DAYA,qDAZA,2BAiBA,8EAGA,uCACA,+CAGA,+CACA,qDACA,UAEA,aACA,kDA7BA,4DAuCA,wBAxKA,SAwKA,cACA,+BAEA,oBACA,SAEA,IACA,sDAEA,kDACA,SAIA,kDACA,SAKA,uDAEA,QADA,oDACA,kCACA,aAEA,CAEA,qCAEA,OADA,sBACA,IACA,IAGA,2BACA,WACA,yBACA,SAMA,UACA,SACA,SAEA,WACA,KASA,gBAhOA,SAgOA,GACA,UACA,uCAKA,kBACA,8CACA,uCACA,mBACA,uCACA,kBACA,wCACA,oBACA,sCACA,kBACA,sCACA,kBAEA,QACA,WAUA,qBA/PA,SA+PA,GACA,MACA,8FACA,gEACA,2DACA,+DACA,eAEA,yDACA,wBACA,OACA,0DAJA,2DAOA,OACA,8DACA,4BACA,4BACA,+BACA,8DACA,4BACA,WACA,4DACA,+CASA,SA/RA,SA+RA,sKACA,SADA,gCAEA,6BAFA,cAKA,wBACA,wEANA,mBAQA,GARA,WAYA,UAZA,iCAaA,aAbA,cAaA,EAbA,OAcA,8BAdA,mBAeA,GAfA,WAkBA,aACA,yDAnBA,UAqBA,QAEA,uCACA,6CAxBA,kCAyBA,KAzBA,QAyBA,EAzBA,sBA4BA,0DA5BA,UA6BA,eACA,OACA,sBACA,sBACA,WACA,iGAlCA,WA6BA,EA7BA,QAsCA,EAtCA,wBAuCA,gBAvCA,UAyCA,yBACA,4BA1CA,eA+CA,QA/CA,wBAkDA,uBAlDA,eAuDA,gIACA,oDAxDA,UA2DA,uBA3DA,4DA8DA,mDAEA,UAEA,oBACA,mDAnEA,yBAqEA,aArEA,mFC7byL,kBCWrL,GAAU,GAEd,GAAQvE,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICFA,IAXgB,OACd,ICTW,WAAa,IAAIC,EAAI/F,KAASgG,EAAGD,EAAIE,eAAuC,OAAjBF,EAAII,MAAMD,IAAIF,GAAa,cAAc,CAACwB,IAAI,cAAcpB,YAAY,gBAAgBY,MAAM,CAAC,mBAAkB,EAAK,UAAYjB,EAAI0E,WAAW,iBAAgB,EAAK,mBAAkB,EAAM,QAAU1E,EAAI2E,QAAQ,QAAU3E,EAAIN,QAAQ,YAAcM,EAAI4E,iBAAiB,mBAAkB,EAAK,mBAAkB,EAAK,YAAa,EAAK,eAAc,EAAK,iBAAiB,QAAQ,MAAQ,cAAc,WAAW,MAAM/C,GAAG,CAAC,gBAAgB7B,EAAI6E,UAAU,OAAS7E,EAAI8E,UAAU1D,YAAYpB,EAAIqB,GAAG,CAAC,CAACC,IAAI,YAAYC,GAAG,WAAW,MAAO,CAACvB,EAAIO,GAAG,SAASP,EAAIY,GAAGZ,EAAIkB,EAAE,gBAAiB,sCAAsC,UAAUM,OAAM,GAAM,CAACF,IAAI,WAAWC,GAAG,WAAW,MAAO,CAACvB,EAAIO,GAAG,SAASP,EAAIY,GAAGZ,EAAI+E,cAAc,UAAUvD,OAAM,SAC/wB,IDWpB,EACA,KACA,KACA,MAI8B,8YEkBhC,QACCwD,OAAQ,CAACC,GAAgBxF,GAEzByF,MAAO,CACNC,SAAU,CACTd,KAAMe,OACNC,QAAS,aACTC,UAAU,GAEXC,MAAO,CACNlB,KAAM9H,EACN8I,QAAS,MAEVG,SAAU,CACTnB,KAAMoB,QACNJ,SAAS,IAIX3I,KAnBc,WAmBP,MACN,MAAO,CACNL,OAAQ,IAAI/C,EAGZoM,OAAQ,GAGRf,SAAS,EACTgB,QAAQ,EACRC,MAAM,EAINC,YAAa,IAAIC,GAAAA,EAAO,CAAEC,YAAa,IAMvCC,cAAa,UAAE/L,KAAKsL,aAAP,aAAE,EAAYxH,QAI7BkI,SAAU,CAOTC,QAAS,CACRC,IADQ,WAEP,MAA2B,KAApBlM,KAAKsL,MAAM1H,MAEnBuI,IAJQ,SAIJvK,GACH5B,KAAKsL,MAAM1H,KAAOhC,EACf,KACA,KAILwK,aAlBS,WAmBR,OAAOhM,SAASI,IAAI,EAAG,SAIxB6L,KAvBS,WAwBR,IAAMC,EAAgBnM,OAAOoM,cAC1BpM,OAAOoM,cACP,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAC9CC,EAAcrM,OAAOsM,gBACxBtM,OAAOsM,gBACP,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAG5F,MAAO,CACNC,aAAc,CACbC,eAJqBxM,OAAOyM,SAAWzM,OAAOyM,SAAW,EAKzDJ,YAAAA,EACAK,YAAaP,EACbA,cAAAA,GAEDQ,YAAa,QAIfC,aA3CS,WA4CR,OAAO/M,KAAKsL,OAAStL,KAAKsL,MAAM0B,SAAUC,EAAAA,EAAAA,kBAAiBC,MAK7D3D,QAAS,CAQR4D,WARQ,SAQG7B,GACV,QAAIA,EAAMxJ,UACqB,iBAAnBwJ,EAAMxJ,UAAmD,KAA1BwJ,EAAMxJ,SAASsL,WAItD9B,EAAM+B,iBACIjN,OAAOkL,EAAM+B,gBAChBC,YAcZC,mBA9BQ,SA8BWrN,GAElB,IAAMR,EAAQU,OAAOF,GAAMO,OAAO,cAClCT,KAAKsL,MAAM1B,WAAalK,EACxBM,KAAKwN,YAAY,eASlBC,oBA3CQ,WA4CPzN,KAAKsL,MAAM1B,WAAa,GACxB5J,KAAKwN,YAAY,eAQlBE,aArDQ,SAqDK9J,GACZ5D,KAAK2N,KAAK3N,KAAKsL,MAAO,UAAW1H,EAAKwJ,SAOvCQ,aA7DQ,WA8DH5N,KAAKsL,MAAMuC,UACd7N,KAAKsL,MAAM1H,KAAO5D,KAAKsL,MAAMuC,QAC7B7N,KAAK8N,QAAQ9N,KAAKsL,MAAO,WACzBtL,KAAKwN,YAAY,UAObO,SAxEE,WAwES,2JAEf,EAAKrD,SAAU,EACf,EAAKiB,MAAO,EAHG,SAIT,EAAKtB,YAAY,EAAKiB,MAAMzI,IAJnB,OAKf4F,QAAQuF,MAAM,gBAAiB,EAAK1C,MAAMzI,IAC1C,EAAKoL,MAAM,eAAgB,EAAK3C,OANjB,gDASf,EAAKK,MAAO,EATG,yBAWf,EAAKjB,SAAU,EAXA,+EAoBjB8C,YA5FQ,WA4FsB,kCAAfU,EAAe,yBAAfA,EAAe,gBAC7B,GAA6B,IAAzBA,EAAc9E,OAKlB,GAAIpJ,KAAKsL,MAAMzI,GAAI,CAClB,IAAM0H,EAAa,GAGnB2D,EAAcC,KAAI,SAAAC,GAAC,OAAK7D,EAAW6D,GAAK,EAAK9C,MAAM8C,GAAGC,cAEtDrO,KAAK4L,YAAYpL,IAAjB,4BAAqB,4GACpB,EAAKkL,QAAS,EACd,EAAKD,OAAS,GAFM,kBAIQ,EAAKnB,YAAY,EAAKgB,MAAMzI,GAAI0H,GAJxC,OAIb+D,EAJa,OAMfJ,EAAcK,QAAQ,aAAe,IAExC,EAAKT,QAAQ,EAAKxC,MAAO,eAGzB,EAAKA,MAAMtH,uBAAyBsK,EAAavK,0BAIlD,EAAK+J,QAAQ,EAAKrC,OAAQyC,EAAc,IAfrB,mDAiBTjE,EAjBS,KAiBTA,UACiB,KAAZA,GACd,EAAKuE,YAAYN,EAAc,GAAIjE,GAnBjB,yBAsBnB,EAAKyB,QAAS,EAtBK,mFA0BrBjD,QAAQoB,MAAM,uBAAwB7J,KAAKsL,MAAO,gBAUpDkD,YA5IQ,SA4IIC,EAAUxE,GAGrB,OADAjK,KAAK2L,MAAO,EACJ8C,GACR,IAAK,WACL,IAAK,UACL,IAAK,aACL,IAAK,QACL,IAAK,OAEJzO,KAAK2N,KAAK3N,KAAKyL,OAAQgD,EAAUxE,GAEjC,IAAIyE,EAAa1O,KAAK2O,MAAMF,GAC5B,GAAIC,EAAY,CACXA,EAAWE,MACdF,EAAaA,EAAWE,KAGzB,IAAMC,EAAYH,EAAWI,cAAc,cACvCD,GACHA,EAAUE,QAGZ,MAED,IAAK,qBAEJ/O,KAAK2N,KAAK3N,KAAKyL,OAAQgD,EAAUxE,GAGjCjK,KAAKsL,MAAMpH,oBAAsBlE,KAAKsL,MAAMpH,qBAY9C8K,oBAAqBC,GAAAA,EAAS,SAASR,GACtCzO,KAAKwN,YAAYiB,KACf,KAQHS,aAhMQ,SAgMKhP,GACZ,IAAMiP,EAAa/O,OAAOF,GAC1B,OAAQF,KAAKoM,cAAgB+C,EAAWC,SAASpP,KAAKoM,aAAc,QAC/DpM,KAAKqP,iBAAmBF,EAAWG,cAActP,KAAKqP,gBAAiB,UCpUmH,GC6DlM,CACA,6BAEA,YACA,kBACA,eACA,gBACA,WACA,sBAGA,YAEA,OACA,OACA,OACA,cAIA,UACA,iBADA,WAEA,uCACA,+BAIA,cAPA,WAQA,mDC9EI,GAAU,GAEd,GAAQ3J,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICbI,IAAY,OACd,ICTW,WAAa,IAAIC,EAAI/F,KAASgG,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,qBAAqB,CAACmB,IAAItB,EAAIuF,MAAMzI,GAAGuD,YAAY,2BAA2BY,MAAM,CAAC,MAAQjB,EAAIuF,MAAMiE,sBAAsBpI,YAAYpB,EAAIqB,GAAG,CAAC,CAACC,IAAI,SAASC,GAAG,WAAW,MAAO,CAACpB,EAAG,SAAS,CAACE,YAAY,wBAAwBY,MAAM,CAAC,KAAOjB,EAAIuF,MAAM5B,UAAU,eAAe3D,EAAIuF,MAAMiE,qBAAqB,kBAAkB,QAAQhI,OAAM,MAAS,CAACxB,EAAIO,GAAG,KAAKJ,EAAG,aAAa,CAACc,MAAM,CAAC,KAAO,cAAc,CAACjB,EAAIO,GAAG,SAASP,EAAIY,GAAGZ,EAAIkB,EAAE,gBAAiB,uBAAwB,CAAEuI,UAAWzJ,EAAIuF,MAAMmE,oBAAqB,UAAU1J,EAAIO,GAAG,KAAMP,EAAIuF,MAAMoE,SAAW3J,EAAIuF,MAAMqE,UAAWzJ,EAAG,aAAa,CAACc,MAAM,CAAC,KAAO,cAAc,KAAOjB,EAAI6J,mBAAmB,CAAC7J,EAAIO,GAAG,SAASP,EAAIY,GAAGZ,EAAIkB,EAAE,gBAAiB,iBAAkB,CAAC4I,OAAQ9J,EAAI+J,iBAAkB,UAAU/J,EAAIe,KAAKf,EAAIO,GAAG,KAAMP,EAAIuF,MAAe,UAAEpF,EAAG,eAAe,CAACc,MAAM,CAAC,KAAO,cAAcY,GAAG,CAAC,MAAQ,SAASC,GAAgC,OAAxBA,EAAOC,iBAAwB/B,EAAIgI,SAAS/F,MAAM,KAAMC,cAAc,CAAClC,EAAIO,GAAG,SAASP,EAAIY,GAAGZ,EAAIkB,EAAE,gBAAiB,YAAY,UAAUlB,EAAIe,MAAM,KAC3lC,IDWpB,EACA,KACA,WACA,MAIF,GAAe,GAAiB,kIEkChC,QACA,wBAEA,YACA,kBACA,yBACA,sBAGA,OACA,UACA,YACA,qBACA,cAIA,KAjBA,WAkBA,OACA,UACA,WACA,uBACA,YAGA,UACA,wBADA,WAEA,oBACA,qBAEA,yBACA,kBAEA,mBAEA,UAVA,WAWA,gDAEA,SAbA,WAcA,wDACA,sDACA,IAEA,cAlBA,WAmBA,iCACA,yEACA,qEAEA,SAvBA,WAyBA,MADA,6DACA,oBAGA,OACA,SADA,WAEA,oBAGA,SAIA,sBAJA,WAKA,mDACA,yBACA,4BAEA,mBAMA,qBAfA,WAeA,2JACA,aADA,SAGA,+GAHA,SAIA,iBAJA,OAIA,EAJA,OAKA,yBACA,oCACA,0DACA,uBACA,YATA,kDAWA,oGAXA,yBAaA,aAbA,gQAmBA,WAlCA,WAmCA,eACA,gBACA,4BACA,kBCrJ6L,kBCWzL,GAAU,GAEd,GAAQpB,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICbI,IAAY,OACd,ICTW,WAAa,IAAIC,EAAI/F,KAASgG,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,KAAK,CAACc,MAAM,CAAC,GAAK,6BAA6B,CAACd,EAAG,qBAAqB,CAACE,YAAY,2BAA2BY,MAAM,CAAC,MAAQjB,EAAIgK,UAAU,SAAWhK,EAAIiK,UAAU7I,YAAYpB,EAAIqB,GAAG,CAAC,CAACC,IAAI,SAASC,GAAG,WAAW,MAAO,CAACpB,EAAG,MAAM,CAACE,YAAY,oCAAoCmB,OAAM,MAAS,CAACxB,EAAIO,GAAG,KAAKJ,EAAG,eAAe,CAACc,MAAM,CAAC,KAAOjB,EAAIkK,yBAAyBrI,GAAG,CAAC,MAAQ,SAASC,GAAyD,OAAjDA,EAAOC,iBAAiBD,EAAOqI,kBAAyBnK,EAAIoK,sBAAsBnI,MAAM,KAAMC,cAAc,CAAClC,EAAIO,GAAG,WAAWP,EAAIY,GAAGZ,EAAIqK,eAAe,aAAa,GAAGrK,EAAIO,GAAG,KAAKP,EAAIsK,GAAItK,EAAU,QAAE,SAASuF,GAAO,OAAOpF,EAAG,wBAAwB,CAACmB,IAAIiE,EAAMzI,GAAGmE,MAAM,CAAC,YAAYjB,EAAImF,SAAS,MAAQI,SAAY,KACzxB,IDWpB,EACA,KACA,WACA,MAIF,GAAe,GAAiB,oGEnBgK,GCiChM,CACA,2BAEA,OACA,IACA,YACA,aAEA,QACA,YACA,8BAEA,UACA,YACA,qBACA,aAEA,OACA,OACA,eAIA,UACA,KADA,WAEA,iCCxCA,IAXgB,OACd,ICRW,WAAa,IAAIvF,EAAI/F,KAASgG,EAAGD,EAAIE,eAAuC,OAAjBF,EAAII,MAAMD,IAAIF,GAAaD,EAAItD,KAAK6N,GAAGvK,EAAIwK,GAAGxK,EAAIyK,GAAG,CAACC,IAAI,aAAa,YAAY1K,EAAItD,MAAK,GAAOsD,EAAI2K,OAAOC,UAAU,CAAC5K,EAAIO,GAAG,OAAOP,EAAIY,GAAGZ,EAAItD,KAAKmO,MAAM,UAC/M,IDUpB,EACA,KACA,KACA,MAI8B,+BEInBC,GAAqB,CACjCC,KAAM,EACNC,KAAM,EACNC,OAAQ,EACRC,OAAQ,EACRC,OAAQ,EACRC,MAAO,IAGKC,GAAsB,CAClCC,UAAWR,GAAmBE,KAC9BO,kBAAmBT,GAAmBE,KAAOF,GAAmBG,OAASH,GAAmBI,OAASJ,GAAmBK,OACxHK,UAAWV,GAAmBI,OAC9BO,IAAKX,GAAmBG,OAASH,GAAmBI,OAASJ,GAAmBE,KAAOF,GAAmBK,OAASL,GAAmBM,OAUhI,SAASM,GAAeC,EAAsBC,GACpD,OAAOD,IAAyBb,GAAmBC,OAASY,EAAuBC,KAAwBA,EAUrG,SAASC,GAAsBC,GAErC,SAAKJ,GAAeI,EAAgBhB,GAAmBE,QAAUU,GAAeI,EAAgBhB,GAAmBI,UAK9GQ,GAAeI,EAAgBhB,GAAmBE,QACtDU,GAAeI,EAAgBhB,GAAmBG,SAAWS,GAAeI,EAAgBhB,GAAmBK,UAwC1G,SAASY,GAAkBJ,EAAsBK,GACvD,OAAIN,GAAeC,EAAsBK,GAbnC,SAA6BL,EAAsBM,GACzD,OAAON,GAAwBM,EAavBC,CAAoBP,EAAsBK,GA1B5C,SAAwBL,EAAsBQ,GACpD,OAAOR,EAAuBQ,EA2BtBC,CAAeT,EAAsBK,+BC5GqJ,GCyHnM,CACA,8BAEA,YACA,kBACA,oBACA,iBACA,UACA,wBAGA,YAEA,KAbA,WAcA,OACA,uDAEA,6BAEA,qBACA,wBAIA,UAMA,wBANA,WAMA,WACA,6CACA,uDACA,iBACA,UACA,gCACA,qCACA,8BACA,mCACA,gCACA,mCACA,gCACA,qCACA,QACA,gBAGA,uCACA,YAQA,yBAhCA,WAgCA,WACA,yBACA,qDACA,gCACA,UAQA,2BA5CA,WA6CA,mCASA,SAtDA,WAuDA,kCASA,wBAhEA,WAiEA,gDAIA,QA7FA,WA+FA,+DAGA,SAQA,qBARA,SAQA,GAEA,8CAUA,oBApBA,SAoBA,GACA,qCAUA,oBA/BA,SA+BA,GACA,yBACA,iCAUA,0BA3CA,SA2CA,GACA,OF/IO,SAA8BK,EAAeL,GACnD,OAAOH,GAAsBE,GAAkBM,EAAeL,IE8I/D,4BAUA,uBAtDA,SAsDA,GACA,oDAEA,4BAIA,+CC7QI,GAAU,GAEd,GAAQrM,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICFA,IAXgB,OACd,ICTW,WAAa,IAAIC,EAAI/F,KAASgG,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,OAAO,CAAGH,EAAIsM,SAAiTtM,EAAIe,KAA3SZ,EAAG,iBAAiB,CAACc,MAAM,CAAC,QAAUjB,EAAIuM,oBAAoBvM,EAAIwM,kBAAkBvB,QAAQ,SAAWjL,EAAI2F,QAAQ9D,GAAG,CAAC,iBAAiB,SAASC,GAAQ,OAAO9B,EAAIyM,uBAAuBzM,EAAIwM,kBAAkBvB,WAAW,CAACjL,EAAIO,GAAG,SAASP,EAAIY,GAAGZ,EAAIkB,EAAE,gBAAiB,kBAAkB,UAAmBlB,EAAIO,GAAG,KAAMP,EAAIsM,UAAYtM,EAAI0M,yBAA2B1M,EAAI3D,OAAOsQ,sBAAuB,CAAG3M,EAAI4M,0BAA0kDzM,EAAG,OAAO,CAAC0M,MAAM,CAAC/I,OAAQ9D,EAAI8M,6BAA6B,CAAC3M,EAAG,iBAAiB,CAACc,MAAM,CAAC,QAAUjB,EAAIuM,oBAAoBvM,EAAIwM,kBAAkBxB,MAAM,SAAWhL,EAAI2F,SAAW3F,EAAI+M,0BAA0B/M,EAAIwM,kBAAkBxB,OAAOnJ,GAAG,CAAC,iBAAiB,SAASC,GAAQ,OAAO9B,EAAIyM,uBAAuBzM,EAAIwM,kBAAkBxB,SAAS,CAAChL,EAAIO,GAAG,aAAaP,EAAIY,GAAGZ,EAAIkB,EAAE,gBAAiB,SAAS,cAAclB,EAAIO,GAAG,KAAKJ,EAAG,iBAAiB,CAACc,MAAM,CAAC,QAAUjB,EAAIuM,oBAAoBvM,EAAIwM,kBAAkBtB,QAAQ,SAAWlL,EAAI2F,SAAW3F,EAAI+M,0BAA0B/M,EAAIwM,kBAAkBtB,SAASrJ,GAAG,CAAC,iBAAiB,SAASC,GAAQ,OAAO9B,EAAIyM,uBAAuBzM,EAAIwM,kBAAkBtB,WAAW,CAAClL,EAAIO,GAAG,aAAaP,EAAIY,GAAGZ,EAAIkB,EAAE,gBAAiB,WAAW,cAAclB,EAAIO,GAAG,KAAKJ,EAAG,iBAAiB,CAACc,MAAM,CAAC,QAAUjB,EAAIuM,oBAAoBvM,EAAIwM,kBAAkBvB,QAAQ,SAAWjL,EAAI2F,SAAW3F,EAAI+M,0BAA0B/M,EAAIwM,kBAAkBvB,SAASpJ,GAAG,CAAC,iBAAiB,SAASC,GAAQ,OAAO9B,EAAIyM,uBAAuBzM,EAAIwM,kBAAkBvB,WAAW,CAACjL,EAAIO,GAAG,aAAaP,EAAIY,GAAGZ,EAAIkB,EAAE,gBAAiB,SAAS,cAAclB,EAAIO,GAAG,KAAKJ,EAAG,iBAAiB,CAACc,MAAM,CAAC,QAAUjB,EAAIuM,oBAAoBvM,EAAIwM,kBAAkBrB,QAAQ,SAAWnL,EAAI2F,SAAW3F,EAAI+M,0BAA0B/M,EAAIwM,kBAAkBrB,SAAStJ,GAAG,CAAC,iBAAiB,SAASC,GAAQ,OAAO9B,EAAIyM,uBAAuBzM,EAAIwM,kBAAkBrB,WAAW,CAACnL,EAAIO,GAAG,aAAaP,EAAIY,GAAGZ,EAAIkB,EAAE,gBAAiB,WAAW,cAAclB,EAAIO,GAAG,KAAKJ,EAAG,eAAe,CAAC0B,GAAG,CAAC,MAAQ,SAASC,GAAQ9B,EAAI4M,2BAA4B,IAAQxL,YAAYpB,EAAIqB,GAAG,CAAC,CAACC,IAAI,OAAOC,GAAG,WAAW,MAAO,CAACpB,EAAG,iBAAiBqB,OAAM,IAAO,MAAK,EAAM,aAAa,CAACxB,EAAIO,GAAG,aAAaP,EAAIY,GAAGZ,EAAIkB,EAAE,gBAAiB,wBAAwB,eAAe,GAAl1G,CAACf,EAAG,cAAc,CAACc,MAAM,CAAC,QAAUjB,EAAIgN,qBAAqBhN,EAAIiN,mBAAmB3B,WAAW,MAAQtL,EAAIiN,mBAAmB3B,UAAU,KAAOtL,EAAIkN,eAAe,SAAWlN,EAAI2F,QAAQ9D,GAAG,CAAC,OAAS,SAASC,GAAQ,OAAO9B,EAAImN,oBAAoBnN,EAAIiN,mBAAmB3B,cAAc,CAACtL,EAAIO,GAAG,aAAaP,EAAIY,GAAGZ,EAAIkB,EAAE,gBAAiB,cAAc,cAAclB,EAAIO,GAAG,KAAKJ,EAAG,cAAc,CAACc,MAAM,CAAC,QAAUjB,EAAIgN,qBAAqBhN,EAAIiN,mBAAmB1B,mBAAmB,MAAQvL,EAAIiN,mBAAmB1B,kBAAkB,SAAWvL,EAAI2F,OAAO,KAAO3F,EAAIkN,gBAAgBrL,GAAG,CAAC,OAAS,SAASC,GAAQ,OAAO9B,EAAImN,oBAAoBnN,EAAIiN,mBAAmB1B,sBAAsB,CAACvL,EAAIO,GAAG,aAAaP,EAAIY,GAAGZ,EAAIkB,EAAE,gBAAiB,6BAA6B,cAAclB,EAAIO,GAAG,KAAKJ,EAAG,cAAc,CAACE,YAAY,uCAAuCY,MAAM,CAAC,QAAUjB,EAAIgN,qBAAqBhN,EAAIiN,mBAAmBzB,WAAW,MAAQxL,EAAIiN,mBAAmBzB,UAAU,SAAWxL,EAAI2F,OAAO,KAAO3F,EAAIkN,gBAAgBrL,GAAG,CAAC,OAAS,SAASC,GAAQ,OAAO9B,EAAImN,oBAAoBnN,EAAIiN,mBAAmBzB,cAAc,CAACxL,EAAIO,GAAG,aAAaP,EAAIY,GAAGZ,EAAIkB,EAAE,gBAAiB,4BAA4B,cAAclB,EAAIO,GAAG,KAAKJ,EAAG,eAAe,CAACc,MAAM,CAAC,MAAQjB,EAAIkB,EAAE,gBAAiB,uBAAuBW,GAAG,CAAC,MAAQ,SAASC,GAAQ9B,EAAI4M,2BAA4B,IAAOxL,YAAYpB,EAAIqB,GAAG,CAAC,CAACC,IAAI,OAAOC,GAAG,WAAW,MAAO,CAACpB,EAAG,UAAUqB,OAAM,IAAO,MAAK,EAAM,YAAY,CAACxB,EAAIO,GAAG,aAAaP,EAAIY,GAAGZ,EAAIoN,yBAA2B,GAAKpN,EAAIqN,yBAAyB,gBAAszDrN,EAAIe,MAAM,KACr3H,IDWpB,EACA,KACA,WACA,MAI8B,ijBEyThC,IC5U6L,GD4U7L,CACA,wBAEA,YACA,YACA,kBACA,oBACA,iBACA,eACA,gBACA,wBACA,qBACA,WACA,uBACA,2BAGA,YACA,aAGA,YAEA,OACA,YACA,aACA,aAIA,KA9BA,WA+BA,OACA,eACA,UAGA,WAEA,gEACA,8DAIA,UAMA,MANA,WAQA,8BACA,mDACA,6BACA,gDACA,+BACA,wCAGA,oDACA,wCAGA,kDACA,6BACA,0CACA,gCAGA,0CACA,gCAGA,yBACA,4BAGA,wCAQA,SA1CA,WA2CA,8BACA,kCACA,qBAEA,MAQA,mBACA,IADA,WAEA,kDACA,uBAEA,IALA,SAKA,GACA,sDACA,cACA,YAEA,8BACA,uBACA,GACA,kEAIA,gBAxEA,WAyEA,gDACA,sDAQA,qBACA,IADA,WAEA,mDACA,qBAEA,IALA,SAKA,sJAEA,UAFA,KAEA,WAFA,gCAEA,KAFA,8CAEA,GAFA,sBAEA,IAFA,eAEA,WAFA,MAGA,sDAHA,gDAOA,uBA9FA,WA+FA,4CACA,YAGA,gDAEA,6BAIA,aAQA,cAjHA,WAkHA,wCAQA,mCA1HA,WA2HA,qDAQA,2BACA,IADA,WAEA,sCAEA,IAJA,SAIA,8IACA,6BADA,+CAUA,iBAjJA,WAkJA,oBACA,qDAIA,0CAvJA,WAwJA,mCAGA,kDAiBA,gBA5KA,WA6KA,6EAEA,sBA/KA,WAgLA,4EAKA,mBArLA,WAsLA,wCAQA,UA9LA,WA+LA,qGAQA,iBAvMA,WAwMA,mBACA,iBACA,iCACA,gEAEA,wCASA,0BAtNA,WAuNA,+CAQA,oBA/NA,WAiOA,yCACA,sEACA,+CAGA,wBAtOA,WAuOA,kDAIA,SAIA,eAJA,WAIA,2JAEA,UAFA,oDAMA,GACA,gCAEA,uCAGA,oDAEA,qCAdA,gCAeA,KAfA,OAeA,WAfA,kBAmBA,6EAnBA,oBAoBA,cAGA,oBAvBA,qBAyBA,sBAzBA,kCA0BA,+BA1BA,kCA2BA,GA3BA,eA6BA,UACA,+GA9BA,mBA+BA,GA/BA,YAqCA,sCArCA,kCAsCA,KAtCA,QAsCA,WAtCA,sBA0CA,WA1CA,UA2CA,yBACA,4BA5CA,QA2CA,EA3CA,OAiDA,UACA,aACA,UAnDA,+BAuDA,WAvDA,UAwDA,sBAxDA,+CAoEA,iBAxEA,SAwEA,2KAGA,UAHA,0CAIA,GAJA,cAOA,aACA,YAEA,0DAVA,SAWA,eACA,OACA,8BACA,oBACA,0BAfA,UAWA,EAXA,OAuBA,UAEA,uCAIA,EA7BA,kCA8BA,yBACA,+BA/BA,QA8BA,EA9BA,gDAqCA,yBACA,4BAtCA,QAqCA,EArCA,eA6CA,uCAGA,aAhDA,kDAmDA,EAnDA,KAmDA,UACA,2BACA,mBACA,4BACA,iBACA,8BAEA,2BA1DA,yBA6DA,aA7DA,gFAsEA,cA9IA,SA8IA,GACA,2CAMA,cArJA,WAsJA,uCACA,qCACA,oCACA,4BAGA,SA5JA,WA4JA,oKAEA,yBAFA,OAIA,+BACA,iBACA,YANA,gDAQA,iBACA,YACA,oBAVA,yBAYA,uBACA,iBACA,cACA,KAfA,+EA6BA,iBAzLA,SAyLA,GACA,uCASA,kBAnMA,WAoMA,uBAGA,uCAGA,eACA,8BAaA,iBAxNA,WAyNA,0BACA,kDACA,+BAYA,gCAvOA,WAwOA,0BACA,mDAGA,mDAMA,YAlPA,WAmPA,wBACA,qBAOA,SA3PA,WA+PA,qDEt1BI,GAAU,GAEd,GAAQpB,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICbI,IAAY,OACd,ICTW,WAAa,IAAIC,EAAI/F,KAASgG,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,KAAK,CAACE,YAAY,oCAAoCwM,MAAM,CAAC,uBAAwB7M,EAAIuF,QAAQ,CAACpF,EAAG,SAAS,CAACE,YAAY,wBAAwBY,MAAM,CAAC,cAAa,EAAK,aAAajB,EAAIsN,iBAAmB,oCAAsC,yCAAyCtN,EAAIO,GAAG,KAAKJ,EAAG,MAAM,CAACE,YAAY,uBAAuB,CAACF,EAAG,KAAK,CAACc,MAAM,CAAC,MAAQjB,EAAIa,QAAQ,CAACb,EAAIO,GAAG,WAAWP,EAAIY,GAAGZ,EAAIa,OAAO,YAAYb,EAAIO,GAAG,KAAMP,EAAY,SAAEG,EAAG,IAAI,CAACH,EAAIO,GAAG,WAAWP,EAAIY,GAAGZ,EAAIc,UAAU,YAAYd,EAAIe,OAAOf,EAAIO,GAAG,KAAMP,EAAIuF,QAAUvF,EAAIsN,kBAAoBtN,EAAIuF,MAAM3H,MAAOuC,EAAG,UAAU,CAACsB,IAAI,aAAapB,YAAY,uBAAuB,CAACF,EAAG,aAAa,CAACc,MAAM,CAAC,KAAOjB,EAAIuN,UAAU,OAAS,SAAS,KAAOvN,EAAI2B,QAAU3B,EAAI4B,YAAc,uBAAyB,eAAeC,GAAG,CAAC,MAAQ,SAASC,GAAyD,OAAjDA,EAAOqI,kBAAkBrI,EAAOC,iBAAwB/B,EAAIgC,SAASC,MAAM,KAAMC,cAAc,CAAClC,EAAIO,GAAG,WAAWP,EAAIY,GAAGZ,EAAImC,kBAAkB,aAAa,GAAGnC,EAAIe,KAAKf,EAAIO,GAAG,KAAOP,EAAIwN,UAAYxN,EAAIyN,kBAAmBzN,EAAI0N,sBAU9C1N,EAAI2E,QA4BoCxE,EAAG,MAAM,CAACE,YAAY,8CA5BjDF,EAAG,UAAU,CAACE,YAAY,yBAAyBY,MAAM,CAAC,aAAa,QAAQ,KAAOjB,EAAI4F,MAAM/D,GAAG,CAAC,cAAc,SAASC,GAAQ9B,EAAI4F,KAAK9D,GAAQ,MAAQ9B,EAAI2N,cAAc,CAAE3N,EAAS,MAAE,CAAEA,EAAIuF,MAAMqI,SAAW5N,EAAI0E,WAAY,CAACvE,EAAG,cAAc,CAACK,WAAW,CAAC,CAACC,KAAK,UAAUC,QAAQ,iBAAiB/G,MAAM,CAC94CkU,QAAS7N,EAAI0F,OAAO5H,MACpBgQ,KAAM9N,EAAI0F,OAAO5H,MACjBiQ,QAAS,SACTC,iBAAkB,gBAChBrN,WAAW,oKAAoKsN,UAAU,CAAC,MAAO,KAAQxM,IAAI,QAAQoL,MAAM,CAAE/I,MAAO9D,EAAI0F,OAAO5H,OAAQmD,MAAM,CAAC,SAAWjB,EAAI2F,OAAO,aAAa3F,EAAIkB,EAAE,gBAAiB,eAAe,WAA+BzF,IAAvBuE,EAAIuF,MAAM2I,SAAyBlO,EAAIuF,MAAM2I,SAAWlO,EAAIuF,MAAMzH,MAAM,KAAO,YAAY,UAAY,OAAO+D,GAAG,CAAC,eAAe7B,EAAImO,cAAc,OAASnO,EAAIoO,gBAAgB,CAACpO,EAAIO,GAAG,eAAeP,EAAIY,GAAGZ,EAAIkB,EAAE,gBAAiB,gBAAgB,gBAAgBlB,EAAIO,GAAG,KAAKJ,EAAG,yBAAyB,CAACc,MAAM,CAAC,cAAcjB,EAAI0E,WAAW,MAAQ1E,EAAIuF,MAAM,YAAYvF,EAAImF,UAAUtD,GAAG,CAAC,eAAe,SAASC,GAAQ9B,EAAIuF,MAAMzD,MAAW9B,EAAIO,GAAG,KAAKJ,EAAG,mBAAmBH,EAAIO,GAAG,KAAKJ,EAAG,iBAAiB,CAACc,MAAM,CAAC,QAAUjB,EAAIuF,MAAM8I,aAAa,SAAWrO,EAAI2F,QAAQ9D,GAAG,CAAC,iBAAiB,SAASC,GAAQ,OAAO9B,EAAI4H,KAAK5H,EAAIuF,MAAO,eAAgBzD,IAAS,OAAS,SAASA,GAAQ,OAAO9B,EAAIyH,YAAY,mBAAmB,CAACzH,EAAIO,GAAG,eAAeP,EAAIY,GAAGZ,EAAIkB,EAAE,gBAAiB,kBAAkB,gBAAgBlB,EAAIO,GAAG,KAAKJ,EAAG,iBAAiB,CAACE,YAAY,+BAA+BY,MAAM,CAAC,QAAUjB,EAAIsO,oBAAoB,SAAWtO,EAAI3D,OAAOtB,8BAAgCiF,EAAI2F,QAAQ9D,GAAG,CAAC,iBAAiB,SAASC,GAAQ9B,EAAIsO,oBAAoBxM,GAAQ,QAAU9B,EAAIuO,oBAAoB,CAACvO,EAAIO,GAAG,eAAeP,EAAIY,GAAGZ,EAAI3D,OAAOtB,6BACr8CiF,EAAIkB,EAAE,gBAAiB,kCACvBlB,EAAIkB,EAAE,gBAAiB,qBAAqB,gBAAgBlB,EAAIO,GAAG,KAAMP,EAAuB,oBAAEG,EAAG,cAAc,CAACK,WAAW,CAAC,CAACC,KAAK,UAAUC,QAAQ,iBAAiB/G,MAAM,CACjLkU,QAAS7N,EAAI0F,OAAO3J,SACpB+R,KAAM9N,EAAI0F,OAAO3J,SACjBgS,QAAS,SACTC,iBAAkB,gBAChBrN,WAAW,0KAA0KsN,UAAU,CAAC,MAAO,KAAQxM,IAAI,WAAWpB,YAAY,sBAAsBwM,MAAM,CAAE/I,MAAO9D,EAAI0F,OAAO3J,UAAUkF,MAAM,CAAC,SAAWjB,EAAI2F,OAAO,SAAW3F,EAAI3D,OAAOtB,6BAA6B,MAAQiF,EAAIwO,mBAAqBxO,EAAIuF,MAAMkJ,YAAc,kBAAkB,KAAO,gBAAgB,aAAe,eAAe,KAAOzO,EAAIwO,mBAAqB,OAAQ,YAAY3M,GAAG,CAAC,eAAe7B,EAAI0O,iBAAiB,OAAS1O,EAAI2O,mBAAmB,CAAC3O,EAAIO,GAAG,eAAeP,EAAIY,GAAGZ,EAAIkB,EAAE,gBAAiB,qBAAqB,gBAAgBlB,EAAIe,KAAKf,EAAIO,GAAG,KAAMP,EAAIsN,kBAAoBtN,EAAI/B,uBAAwBkC,EAAG,aAAa,CAACc,MAAM,CAAC,KAAO,cAAc,CAACjB,EAAIO,GAAG,eAAeP,EAAIY,GAAGZ,EAAIkB,EAAE,gBAAiB,4CAA6C,CAACjD,uBAAwB+B,EAAI/B,0BAA0B,gBAAiB+B,EAAIsN,kBAAmD,OAA/BtN,EAAI/B,uBAAiCkC,EAAG,aAAa,CAACc,MAAM,CAAC,KAAO,eAAe,CAACjB,EAAIO,GAAG,eAAeP,EAAIY,GAAGZ,EAAIkB,EAAE,gBAAiB,qBAAqB,gBAAgBlB,EAAIe,KAAKf,EAAIO,GAAG,KAAMP,EAAsC,mCAAEG,EAAG,iBAAiB,CAACE,YAAY,oCAAoCY,MAAM,CAAC,QAAUjB,EAAI4O,0BAA0B,UAAY5O,EAAI6O,2CAA6C7O,EAAI2F,QAAQ9D,GAAG,CAAC,iBAAiB,SAASC,GAAQ9B,EAAI4O,0BAA0B9M,GAAQ,OAAS9B,EAAI8O,kCAAkC,CAAC9O,EAAIO,GAAG,eAAeP,EAAIY,GAAGZ,EAAIkB,EAAE,gBAAiB,uBAAuB,gBAAgBlB,EAAIe,KAAKf,EAAIO,GAAG,KAAKJ,EAAG,iBAAiB,CAACE,YAAY,kCAAkCY,MAAM,CAAC,QAAUjB,EAAI+O,kBAAkB,SAAW/O,EAAI3D,OAAO2S,6BAA+BhP,EAAI2F,QAAQ9D,GAAG,CAAC,iBAAiB,SAASC,GAAQ9B,EAAI+O,kBAAkBjN,GAAQ,QAAU9B,EAAI0H,sBAAsB,CAAC1H,EAAIO,GAAG,eAAeP,EAAIY,GAAGZ,EAAI3D,OAAO2S,4BACn9DhP,EAAIkB,EAAE,gBAAiB,8BACvBlB,EAAIkB,EAAE,gBAAiB,wBAAwB,gBAAgBlB,EAAIO,GAAG,KAAMP,EAAqB,kBAAEG,EAAG,cAAc,CAACK,WAAW,CAAC,CAACC,KAAK,UAAUC,QAAQ,iBAAiB/G,MAAM,CAClLkU,QAAS7N,EAAI0F,OAAO7B,WACpBiK,KAAM9N,EAAI0F,OAAO7B,WACjBkK,QAAS,SACTC,iBAAkB,gBAChBrN,WAAW,8KAA8KsN,UAAU,CAAC,MAAO,KAAQxM,IAAI,aAAapB,YAAY,yBAAyBwM,MAAM,CAAE/I,MAAO9D,EAAI0F,OAAO7B,YAAY5C,MAAM,CAAC,SAAWjB,EAAI2F,OAAO,KAAO3F,EAAIsG,KAAK,MAAQtG,EAAIuF,MAAM1B,WAAW,aAAa,SAAS,KAAO,qBAAqB,KAAO,OAAO,gBAAgB7D,EAAImJ,cAActH,GAAG,CAAC,eAAe7B,EAAIwH,qBAAqB,CAACxH,EAAIO,GAAG,eAAeP,EAAIY,GAAGZ,EAAIkB,EAAE,gBAAiB,iBAAiB,gBAAgBlB,EAAIe,KAAKf,EAAIO,GAAG,KAAKJ,EAAG,iBAAiB,CAACc,MAAM,CAAC,QAAUjB,EAAIkG,QAAQ,SAAWlG,EAAI2F,QAAQ9D,GAAG,CAAC,iBAAiB,SAASC,GAAQ9B,EAAIkG,QAAQpE,GAAQ,QAAU,SAASA,GAAQ,OAAO9B,EAAIyH,YAAY,WAAW,CAACzH,EAAIO,GAAG,eAAeP,EAAIY,GAAGZ,EAAIkB,EAAE,gBAAiB,sBAAsB,gBAAgBlB,EAAIO,GAAG,KAAMP,EAAW,QAAEG,EAAG,qBAAqB,CAACK,WAAW,CAAC,CAACC,KAAK,UAAUC,QAAQ,iBAAiB/G,MAAM,CAC7/BkU,QAAS7N,EAAI0F,OAAO7H,KACpBiQ,KAAM9N,EAAI0F,OAAO7H,KACjBkQ,QAAS,SACTC,iBAAkB,gBAChBrN,WAAW,kKAAkKsN,UAAU,CAAC,MAAO,KAAQxM,IAAI,OAAOoL,MAAM,CAAE/I,MAAO9D,EAAI0F,OAAO7H,MAAMoD,MAAM,CAAC,SAAWjB,EAAI2F,OAAO,YAAc3F,EAAIkB,EAAE,gBAAiB,wCAAwC,MAAQlB,EAAIuF,MAAMuC,SAAW9H,EAAIuF,MAAM1H,KAAK,KAAO,aAAagE,GAAG,CAAC,eAAe7B,EAAI2H,aAAa,OAAS3H,EAAI6H,gBAAgB7H,EAAIe,MAAMf,EAAIe,KAAKf,EAAIO,GAAG,KAAKJ,EAAG,mBAAmBH,EAAIO,GAAG,KAAKP,EAAIsK,GAAItK,EAAuB,qBAAE,SAAS2K,GAAQ,OAAOxK,EAAG,sBAAsB,CAACmB,IAAIqJ,EAAO7N,GAAGmE,MAAM,CAAC,GAAK0J,EAAO7N,GAAG,OAAS6N,EAAO,YAAY3K,EAAImF,SAAS,MAAQnF,EAAIuF,YAAWvF,EAAIO,GAAG,KAAKP,EAAIsK,GAAItK,EAA6B,2BAAE,SAASyB,EAAIwN,GACxxB,IAAIC,EAAOzN,EAAIyN,KACXC,EAAM1N,EAAI0N,IACV1O,EAAOgB,EAAIhB,KACpB,OAAON,EAAG,aAAa,CAACmB,IAAI2N,EAAMhO,MAAM,CAAC,KAAOkO,EAAInP,EAAIuN,WAAW,KAAO2B,EAAK,OAAS,WAAW,CAAClP,EAAIO,GAAG,aAAaP,EAAIY,GAAGH,GAAM,iBAAgBT,EAAIO,GAAG,KAAMP,EAAIuF,MAAe,UAAEpF,EAAG,eAAe,CAACc,MAAM,CAAC,KAAO,aAAa,SAAWjB,EAAI2F,QAAQ9D,GAAG,CAAC,MAAQ,SAASC,GAAgC,OAAxBA,EAAOC,iBAAwB/B,EAAIgI,SAAS/F,MAAM,KAAMC,cAAc,CAAClC,EAAIO,GAAG,aAAaP,EAAIY,GAAGZ,EAAIkB,EAAE,gBAAiB,YAAY,cAAclB,EAAIe,KAAKf,EAAIO,GAAG,MAAOP,EAAIsN,kBAAoBtN,EAAI0E,WAAYvE,EAAG,eAAe,CAACE,YAAY,iBAAiBY,MAAM,CAAC,KAAO,YAAYY,GAAG,CAAC,MAAQ,SAASC,GAAyD,OAAjDA,EAAOC,iBAAiBD,EAAOqI,kBAAyBnK,EAAIoP,eAAenN,MAAM,KAAMC,cAAc,CAAClC,EAAIO,GAAG,aAAaP,EAAIY,GAAGZ,EAAIkB,EAAE,gBAAiB,qBAAqB,cAAclB,EAAIe,MAAOf,EAAc,WAAEG,EAAG,eAAe,CAACE,YAAY,iBAAiBY,MAAM,CAAC,KAAOjB,EAAI2E,QAAU,qBAAuB,YAAY9C,GAAG,CAAC,MAAQ,SAASC,GAAyD,OAAjDA,EAAOC,iBAAiBD,EAAOqI,kBAAyBnK,EAAIoP,eAAenN,MAAM,KAAMC,cAAc,CAAClC,EAAIO,GAAG,WAAWP,EAAIY,GAAGZ,EAAIkB,EAAE,gBAAiB,4BAA4B,YAAYlB,EAAIe,MAAM,GAtCiCZ,EAAG,UAAU,CAACE,YAAY,yBAAyBY,MAAM,CAAC,aAAa,QAAQ,KAAOjB,EAAI4F,MAAM/D,GAAG,CAAC,cAAc,SAASC,GAAQ9B,EAAI4F,KAAK9D,GAAQ,MAAQ9B,EAAIoP,iBAAiB,CAAEpP,EAAI0F,OAAc,QAAEvF,EAAG,aAAa,CAAC0M,MAAM,CAAE/I,MAAO9D,EAAI0F,OAAO8H,SAASvM,MAAM,CAAC,KAAO,eAAe,CAACjB,EAAIO,GAAG,WAAWP,EAAIY,GAAGZ,EAAI0F,OAAO8H,SAAS,YAAYrN,EAAG,aAAa,CAACc,MAAM,CAAC,KAAO,cAAc,CAACjB,EAAIO,GAAG,WAAWP,EAAIY,GAAGZ,EAAIkB,EAAE,gBAAiB,8EAA8E,YAAYlB,EAAIO,GAAG,KAAMP,EAAmB,gBAAEG,EAAG,aAAa,CAACc,MAAM,CAAC,KAAO,kBAAkB,CAACjB,EAAIO,GAAG,WAAWP,EAAIY,GAAGZ,EAAIkB,EAAE,gBAAiB,mCAAmC,YAAalB,EAAI3D,OAAkC,4BAAE8D,EAAG,iBAAiB,CAACE,YAAY,+BAA+BY,MAAM,CAAC,QAAUjB,EAAIsO,oBAAoB,SAAWtO,EAAI3D,OAAOtB,8BAAgCiF,EAAI2F,QAAQ9D,GAAG,CAAC,iBAAiB,SAASC,GAAQ9B,EAAIsO,oBAAoBxM,GAAQ,QAAU9B,EAAIuO,oBAAoB,CAACvO,EAAIO,GAAG,WAAWP,EAAIY,GAAGZ,EAAIkB,EAAE,gBAAiB,wBAAwB,YAAYlB,EAAIe,KAAKf,EAAIO,GAAG,KAAMP,EAAIyN,iBAAmBzN,EAAIuF,MAAMxJ,SAAUoE,EAAG,cAAc,CAACK,WAAW,CAAC,CAACC,KAAK,UAAUC,QAAQ,iBAAiB/G,MAAM,CACr3EkU,QAAS7N,EAAI0F,OAAO3J,SACpB+R,KAAM9N,EAAI0F,OAAO3J,SACjBgS,QAAS,SACTC,iBAAkB,gBAChBrN,WAAW,sJAAsJsN,UAAU,CAAC,MAAO,KAAQ5N,YAAY,sBAAsBY,MAAM,CAAC,MAAQjB,EAAIuF,MAAMxJ,SAAS,SAAWiE,EAAI2F,OAAO,SAAW3F,EAAI3D,OAAOrB,6BAA+BgF,EAAI3D,OAAOtB,6BAA6B,UAAYiF,EAAIqP,yBAA2BrP,EAAI3D,OAAOgG,eAAeiN,UAAU,KAAO,GAAG,aAAe,gBAAgBzN,GAAG,CAAC,eAAe,SAASC,GAAQ,OAAO9B,EAAI4H,KAAK5H,EAAIuF,MAAO,WAAYzD,IAAS,OAAS9B,EAAIoP,iBAAiB,CAACpP,EAAIO,GAAG,WAAWP,EAAIY,GAAGZ,EAAIkB,EAAE,gBAAiB,qBAAqB,YAAYlB,EAAIe,KAAKf,EAAIO,GAAG,KAAMP,EAAyB,sBAAEG,EAAG,aAAa,CAACc,MAAM,CAAC,KAAO,uBAAuB,CAACjB,EAAIO,GAAG,WAAWP,EAAIY,GAAGZ,EAAIkB,EAAE,gBAAiB,+BAA+B,YAAYlB,EAAIe,KAAKf,EAAIO,GAAG,KAAMP,EAAyB,sBAAEG,EAAG,cAAc,CAACK,WAAW,CAAC,CAACC,KAAK,UAAUC,QAAQ,iBAAiB/G,MAAM,CACj/BkU,QAAS7N,EAAI0F,OAAO7B,WACpBiK,KAAM9N,EAAI0F,OAAO7B,WACjBkK,QAAS,SACTC,iBAAkB,gBAChBrN,WAAW,0JAA0JsN,UAAU,CAAC,MAAO,KAAQ5N,YAAY,yBAAyBY,MAAM,CAAC,SAAWjB,EAAI2F,OAAO,KAAO3F,EAAIsG,KAAK,KAAO,GAAG,KAAO,OAAO,aAAa,SAAS,gBAAgBtG,EAAImJ,cAAcoG,MAAM,CAAC5V,MAAOqG,EAAIuF,MAAgB,WAAEiK,SAAS,SAAUC,GAAMzP,EAAI4H,KAAK5H,EAAIuF,MAAO,aAAckK,IAAM9O,WAAW,qBAAqB,CAACX,EAAIO,GAAG,WAAWP,EAAIY,GAAGZ,EAAIkB,EAAE,gBAAiB,iBAAiB,YAAYlB,EAAIe,KAAKf,EAAIO,GAAG,KAAKJ,EAAG,eAAe,CAACc,MAAM,CAAC,KAAO,kBAAkBY,GAAG,CAAC,MAAQ,SAASC,GAAyD,OAAjDA,EAAOC,iBAAiBD,EAAOqI,kBAAyBnK,EAAIoP,eAAenN,MAAM,KAAMC,cAAc,CAAClC,EAAIO,GAAG,WAAWP,EAAIY,GAAGZ,EAAIkB,EAAE,gBAAiB,iBAAiB,YAAYlB,EAAIO,GAAG,KAAKJ,EAAG,eAAe,CAACc,MAAM,CAAC,KAAO,cAAcY,GAAG,CAAC,MAAQ,SAASC,GAAyD,OAAjDA,EAAOC,iBAAiBD,EAAOqI,kBAAyBnK,EAAI0P,SAASzN,MAAM,KAAMC,cAAc,CAAClC,EAAIO,GAAG,WAAWP,EAAIY,GAAGZ,EAAIkB,EAAE,gBAAiB,WAAW,aAAa,IA4BkH,KAC9qC,ID3BpB,EACA,KACA,WACA,MEf0L,GCmD5L,CACA,uBAEA,YACA,iBHpCe,GAAiB,SGuChC,WAEA,OACA,UACA,YACA,qBACA,aAEA,QACA,WACA,6BACA,aAEA,YACA,aACA,cAIA,KA1BA,WA2BA,OACA,iEAIA,UAQA,cARA,WAQA,WACA,kGAQA,UAjBA,WAkBA,8BAIA,SAQA,SARA,SAQA,KAEA,uBACA,yBAWA,cAtBA,SAsBA,gBACA,2BACA,0DACA,GACA,SAUA,YApCA,SAoCA,GACA,yDAEA,2BCzII,IAAY,OACd,ICRW,WAAa,IAAIlB,EAAI/F,KAASgG,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAQD,EAAgB,aAAEG,EAAG,KAAK,CAACE,YAAY,qBAAqB,EAAGL,EAAI2P,eAAiB3P,EAAI0E,WAAYvE,EAAG,mBAAmB,CAACc,MAAM,CAAC,cAAcjB,EAAI0E,WAAW,YAAY1E,EAAImF,UAAUtD,GAAG,CAAC,YAAY7B,EAAI8E,YAAY9E,EAAIe,KAAKf,EAAIO,GAAG,KAAMP,EAAa,UAAEA,EAAIsK,GAAItK,EAAU,QAAE,SAASuF,EAAM0J,GAAO,OAAO9O,EAAG,mBAAmB,CAACmB,IAAIiE,EAAMzI,GAAGmE,MAAM,CAAC,cAAcjB,EAAI0E,WAAW,MAAQ1E,EAAI4P,OAAOX,GAAO,YAAYjP,EAAImF,UAAUtD,GAAG,CAAC,eAAe,CAAC,SAASC,GAAQ,OAAO9B,EAAI4H,KAAK5H,EAAI4P,OAAQX,EAAOnN,IAAS,SAASA,GAAQ,OAAO9B,EAAI6P,cAAc5N,WAAM,EAAQC,aAAa,YAAY,SAASJ,GAAQ,OAAO9B,EAAI8E,SAAS7C,WAAM,EAAQC,YAAY,eAAelC,EAAI8P,kBAAiB9P,EAAIe,MAAM,GAAGf,EAAIe,OAC5wB,IDUpB,EACA,KACA,KACA,MAIF,GAAe,GAAiB,iPEqIhC,QACA,oBAEA,YACA,YACA,kBACA,oBACA,iBACA,wBACA,YAGA,YACA,aAGA,YAEA,KAlBA,WAmBA,OACA,qCACA,uCACA,uCACA,mCACA,uCAIA,UACA,MADA,WAEA,sCAYA,OAXA,oDACA,+CACA,mDACA,sDACA,qDACA,gDACA,2DACA,sDACA,sDACA,gDAEA,GAGA,QAjBA,WAkBA,+CACA,OAGA,qCACA,mCAGA,2DACA,+DACA,mDACA,sEAGA,qDAEA,aAGA,YArCA,WAsCA,sBAGA,SAzCA,WA0CA,6DACA,4DAQA,WAnDA,WAuDA,0EAQA,aA/DA,WAmEA,4EAQA,aA3EA,WA+EA,4EAQA,cAvFA,WA2FA,4EAMA,SACA,IADA,WAEA,uCAEA,IAJA,SAIA,GACA,4CAOA,WACA,IADA,WAEA,uCAEA,IAJA,SAIA,GACA,8CAOA,WACA,IADA,WAEA,uCAEA,IAJA,SAIA,GACA,8CAOA,YACA,IADA,WAEA,sCAEA,IAJA,SAIA,GACA,+CAQA,SACA,IADA,WAEA,sCASA,SA7JA,WA8JA,kCAQA,mBACA,IADA,WAEA,iFAEA,IAJA,SAIA,GACA,wBACA,qDACA,gDACA,8BACA,KAIA,gBAnLA,WAoLA,qBAIA,+CACA,2DAJA,iDACA,8DAUA,UAhMA,WAiMA,2DAIA,sEAKA,SACA,kBADA,WACA,sQAEA,KACA,sCACA,6BACA,6BACA,2BACA,2BAEA,yBACA,iCAMA,YAjBA,WAkBA,uBC/YyL,iBCWrL,GAAU,GAEd,GAAQpB,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICbI,IAAY,OACd,ICTW,WAAa,IAAIC,EAAI/F,KAASgG,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,KAAK,CAACE,YAAY,iBAAiB,CAACF,EAAG,SAAS,CAACE,YAAY,wBAAwBY,MAAM,CAAC,aAAajB,EAAIuF,MAAMlB,OAASrE,EAAIR,YAAYuQ,gBAAgB,KAAO/P,EAAIuF,MAAM5B,UAAU,eAAe3D,EAAIuF,MAAMiE,qBAAqB,kBAAkBxJ,EAAIuF,MAAMlB,OAASrE,EAAIR,YAAYuQ,gBAAkB/P,EAAIuF,MAAM5B,UAAY,GAAG,gBAAgB,OAAO,IAAM3D,EAAIuF,MAAMyK,mBAAmBhQ,EAAIO,GAAG,KAAKJ,EAAGH,EAAIuF,MAAM0K,cAAgB,IAAM,MAAM,CAACzP,WAAW,CAAC,CAACC,KAAK,UAAUC,QAAQ,iBAAiB/G,MAAOqG,EAAW,QAAEW,WAAW,UAAUsN,UAAU,CAAC,MAAO,KAAQvD,IAAI,YAAYrK,YAAY,sBAAsBY,MAAM,CAAC,KAAOjB,EAAIuF,MAAM0K,gBAAgB,CAAC9P,EAAG,KAAK,CAACH,EAAIO,GAAGP,EAAIY,GAAGZ,EAAIa,QAAUb,EAAIwF,SAAgIxF,EAAIe,KAA1HZ,EAAG,OAAO,CAACE,YAAY,8BAA8B,CAACL,EAAIO,GAAG,KAAKP,EAAIY,GAAGZ,EAAIuF,MAAM2K,4BAA4B,SAAkBlQ,EAAIO,GAAG,KAAMP,EAAa,UAAEG,EAAG,IAAI,CAACA,EAAG,OAAO,CAACH,EAAIO,GAAGP,EAAIY,GAAGZ,EAAIuF,MAAMhG,OAAO2P,MAAQ,OAAOlP,EAAIO,GAAG,KAAKJ,EAAG,OAAO,CAACH,EAAIO,GAAGP,EAAIY,GAAGZ,EAAIuF,MAAMhG,OAAO2E,SAAW,SAASlE,EAAIe,OAAOf,EAAIO,GAAG,KAAKJ,EAAG,UAAU,CAACE,YAAY,yBAAyBY,MAAM,CAAC,aAAa,SAASY,GAAG,CAAC,MAAQ7B,EAAI2N,cAAc,CAAE3N,EAAIuF,MAAa,QAAE,CAACpF,EAAG,iBAAiB,CAACsB,IAAI,UAAUR,MAAM,CAAC,QAAUjB,EAAI4N,QAAQ,MAAQ5N,EAAImQ,gBAAgB,SAAWnQ,EAAI2F,SAAW3F,EAAIoQ,YAAYvO,GAAG,CAAC,iBAAiB,SAASC,GAAQ9B,EAAI4N,QAAQ9L,KAAU,CAAC9B,EAAIO,GAAG,aAAaP,EAAIY,GAAGZ,EAAIkB,EAAE,gBAAiB,kBAAkB,cAAclB,EAAIO,GAAG,KAAMP,EAAY,SAAEG,EAAG,iBAAiB,CAACsB,IAAI,YAAYR,MAAM,CAAC,QAAUjB,EAAIqQ,UAAU,MAAQrQ,EAAIsQ,kBAAkB,SAAWtQ,EAAI2F,SAAW3F,EAAIuQ,cAAc1O,GAAG,CAAC,iBAAiB,SAASC,GAAQ9B,EAAIqQ,UAAUvO,KAAU,CAAC9B,EAAIO,GAAG,aAAaP,EAAIY,GAAGZ,EAAIkB,EAAE,gBAAiB,mBAAmB,cAAclB,EAAIe,KAAKf,EAAIO,GAAG,KAAMP,EAAY,SAAEG,EAAG,iBAAiB,CAACsB,IAAI,YAAYR,MAAM,CAAC,QAAUjB,EAAIwQ,UAAU,MAAQxQ,EAAIyQ,kBAAkB,SAAWzQ,EAAI2F,SAAW3F,EAAI0Q,cAAc7O,GAAG,CAAC,iBAAiB,SAASC,GAAQ9B,EAAIwQ,UAAU1O,KAAU,CAAC9B,EAAIO,GAAG,aAAaP,EAAIY,GAAGZ,EAAIkB,EAAE,gBAAiB,mBAAmB,cAAclB,EAAIe,KAAKf,EAAIO,GAAG,KAAMP,EAAI3D,OAAyB,mBAAE8D,EAAG,iBAAiB,CAACsB,IAAI,aAAaR,MAAM,CAAC,QAAUjB,EAAI0E,WAAW,MAAQ1E,EAAI2Q,iBAAiB,SAAW3Q,EAAI2F,SAAW3F,EAAI4Q,eAAe/O,GAAG,CAAC,iBAAiB,SAASC,GAAQ9B,EAAI0E,WAAW5C,KAAU,CAAC9B,EAAIO,GAAG,aAAaP,EAAIY,GAAGZ,EAAIkB,EAAE,gBAAiB,oBAAoB,cAAclB,EAAIe,KAAKf,EAAIO,GAAG,KAAKJ,EAAG,iBAAiB,CAACc,MAAM,CAAC,QAAUjB,EAAI+O,kBAAkB,SAAW/O,EAAI3D,OAAOwU,qCAAuC7Q,EAAI2F,QAAQ9D,GAAG,CAAC,iBAAiB,SAASC,GAAQ9B,EAAI+O,kBAAkBjN,GAAQ,QAAU9B,EAAI0H,sBAAsB,CAAC1H,EAAIO,GAAG,aAAaP,EAAIY,GAAGZ,EAAI3D,OAAOwU,oCAChvF7Q,EAAIkB,EAAE,gBAAiB,4BACvBlB,EAAIkB,EAAE,gBAAiB,wBAAwB,cAAclB,EAAIO,GAAG,KAAMP,EAAqB,kBAAEG,EAAG,cAAc,CAACK,WAAW,CAAC,CAACC,KAAK,UAAUC,QAAQ,iBAAiB/G,MAAM,CAChLkU,QAAS7N,EAAI0F,OAAO7B,WACpBiK,KAAM9N,EAAI0F,OAAO7B,WACjBkK,QAAS,UACPpN,WAAW,uHAAuHsN,UAAU,CAAC,MAAO,KAAQxM,IAAI,aAAaoL,MAAM,CAAE/I,MAAO9D,EAAI0F,OAAO7B,YAAY5C,MAAM,CAAC,SAAWjB,EAAI2F,OAAO,KAAO3F,EAAIsG,KAAK,MAAQtG,EAAIuF,MAAM1B,WAAW,aAAa,SAAS,KAAO,qBAAqB,KAAO,OAAO,gBAAgB7D,EAAImJ,cAActH,GAAG,CAAC,eAAe7B,EAAIwH,qBAAqB,CAACxH,EAAIO,GAAG,aAAaP,EAAIY,GAAGZ,EAAIkB,EAAE,gBAAiB,iBAAiB,cAAclB,EAAIe,KAAKf,EAAIO,GAAG,KAAMP,EAAe,YAAE,CAACG,EAAG,iBAAiB,CAACc,MAAM,CAAC,QAAUjB,EAAIkG,QAAQ,SAAWlG,EAAI2F,QAAQ9D,GAAG,CAAC,iBAAiB,SAASC,GAAQ9B,EAAIkG,QAAQpE,GAAQ,QAAU,SAASA,GAAQ,OAAO9B,EAAIyH,YAAY,WAAW,CAACzH,EAAIO,GAAG,eAAeP,EAAIY,GAAGZ,EAAIkB,EAAE,gBAAiB,sBAAsB,gBAAgBlB,EAAIO,GAAG,KAAMP,EAAW,QAAEG,EAAG,qBAAqB,CAACK,WAAW,CAAC,CAACC,KAAK,UAAUC,QAAQ,iBAAiB/G,MAAM,CAC/6BkU,QAAS7N,EAAI0F,OAAO7H,KACpBiQ,KAAM9N,EAAI0F,OAAO7H,KACjBkQ,QAAS,UACPpN,WAAW,mHAAmHsN,UAAU,CAAC,MAAO,KAAQxM,IAAI,OAAOoL,MAAM,CAAE/I,MAAO9D,EAAI0F,OAAO7H,MAAMoD,MAAM,CAAC,SAAWjB,EAAI2F,OAAO,MAAQ3F,EAAIuF,MAAMuC,SAAW9H,EAAIuF,MAAM1H,KAAK,KAAO,aAAagE,GAAG,CAAC,eAAe7B,EAAI2H,aAAa,OAAS3H,EAAI6H,gBAAgB7H,EAAIe,MAAMf,EAAIe,MAAMf,EAAIe,KAAKf,EAAIO,GAAG,KAAMP,EAAIuF,MAAe,UAAEpF,EAAG,eAAe,CAACc,MAAM,CAAC,KAAO,aAAa,SAAWjB,EAAI2F,QAAQ9D,GAAG,CAAC,MAAQ,SAASC,GAAgC,OAAxBA,EAAOC,iBAAwB/B,EAAIgI,SAAS/F,MAAM,KAAMC,cAAc,CAAClC,EAAIO,GAAG,WAAWP,EAAIY,GAAGZ,EAAIkB,EAAE,gBAAiB,YAAY,YAAYlB,EAAIe,MAAM,IAAI,KACjpB,IDCpB,EACA,KACA,WACA,iHEwBF,ICvCwL,GDuCxL,CACA,mBAEA,YACA,aFxBe,GAAiB,SE2BhC,WAEA,OACA,UACA,YACA,qBACA,aAEA,QACA,WACA,6BACA,cAIA,UACA,UADA,WAEA,+BAEA,SAJA,WAIA,WACA,mBACA,2pBACA,kGACA,mBAKA,SAMA,YANA,SAMA,GACA,yDAEA,2BEjEA,IAXgB,OACd,ICRW,WAAa,IAAIf,EAAI/F,KAASgG,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,KAAK,CAACE,YAAY,uBAAuBL,EAAIsK,GAAItK,EAAU,QAAE,SAASuF,GAAO,OAAOpF,EAAG,eAAe,CAACmB,IAAIiE,EAAMzI,GAAGmE,MAAM,CAAC,YAAYjB,EAAImF,SAAS,MAAQI,EAAM,YAAYvF,EAAIwF,SAASD,IAAQ1D,GAAG,CAAC,eAAe7B,EAAI8P,kBAAiB,KACxT,IDUpB,EACA,KACA,KACA,MAI8B,mbEuFhC,QACA,kBAEA,YACA,WACA,mBACA,uBACA,qBACA,oBACA,gBACA,mBACA,gBAGA,WAEA,KAhBA,WAiBA,OACA,aAEA,SACA,wBACA,WAEA,cAGA,aACA,gBACA,UACA,cAEA,sDAIA,UAMA,eANA,WAOA,gDAGA,WAVA,WAWA,4DACA,iFAIA,SAMA,OANA,SAMA,8IACA,aACA,eACA,cAHA,8CASA,UAfA,WAeA,iLAEA,aAGA,2DACA,SAEA,0DAGA,mBACA,QACA,SACA,OACA,eAGA,mBACA,QACA,SACA,OACA,qBAtBA,SA2BA,mBA3BA,u1BA2BA,EA3BA,KA2BA,EA3BA,KA4BA,aAGA,yBACA,mBAhCA,kDAkCA,4DACA,aACA,oDApCA,oEA2CA,WA1DA,WA2DA,uCACA,gBACA,cACA,qBACA,eACA,oBASA,yBAzEA,SAyEA,GACA,kCACA,mFACA,oDAIA,oBACA,uCAEA,wFAWA,cA9FA,YA8FA,oBACA,2CAEA,iBACA,oCACA,0DAEA,gIACA,4HAEA,kEACA,2DAWA,oBApHA,YAoHA,aACA,qCACA,eACA,EC3PuB,SAASvK,GAC/B,OAAIA,EAAMlB,OAAS5E,EAAAA,EAAAA,iBACXyB,EACN,gBACA,mDACA,CACC4P,MAAOvL,EAAMiE,qBACbvC,MAAO1B,EAAMmE,uBAEdjO,EACA,CAAEsV,QAAQ,IAEDxL,EAAMlB,OAAS5E,EAAAA,EAAAA,kBAClByB,EACN,gBACA,0CACA,CACC8P,OAAQzL,EAAMiE,qBACdvC,MAAO1B,EAAMmE,uBAEdjO,EACA,CAAEsV,QAAQ,IAEDxL,EAAMlB,OAAS5E,EAAAA,EAAAA,gBACrB8F,EAAMiE,qBACFtI,EACN,gBACA,iEACA,CACC+P,aAAc1L,EAAMiE,qBACpBvC,MAAO1B,EAAMmE,uBAEdjO,EACA,CAAEsV,QAAQ,IAGJ7P,EACN,gBACA,+CACA,CACC+F,MAAO1B,EAAMmE,uBAEdjO,EACA,CAAEsV,QAAQ,IAIL7P,EACN,gBACA,6BACA,CAAE+F,MAAO1B,EAAMmE,uBACfjO,EACA,CAAEsV,QAAQ,IDuMb,IACA,qBACA,UAEA,mBACA,cACA,QACA,QAEA,eAIA,4DAEA,iCAEA,+EAEA,kGAEA,mBACA,qCACA,QACA,gBACA,6BACA,sCACA,EACA,aAEA,mCAYA,SAjKA,SAiKA,6EAGA,2CACA,2BAEA,uBAEA,yBAWA,cApLA,SAoLA,KACA,2BAGA,6CACA,4BAGA,2BACA,0DACA,GACA,WE5VuL,MCkBvL,IAXgB,OACd,ICRW,WAAa,IAAI/Q,EAAI/F,KAASgG,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAAC0M,MAAM,CAAE,eAAgB7M,EAAI2E,UAAW,CAAE3E,EAAS,MAAEG,EAAG,MAAM,CAACE,YAAY,gBAAgB,CAACF,EAAG,MAAM,CAACE,YAAY,oBAAoBL,EAAIO,GAAG,KAAKJ,EAAG,KAAK,CAACH,EAAIO,GAAGP,EAAIY,GAAGZ,EAAI8D,YAAY,CAAE9D,EAAkB,eAAEG,EAAG,qBAAqBH,EAAIyK,GAAG,CAACpK,YAAY,yBAAyBe,YAAYpB,EAAIqB,GAAG,CAAC,CAACC,IAAI,SAASC,GAAG,WAAW,MAAO,CAACpB,EAAG,SAAS,CAACE,YAAY,wBAAwBY,MAAM,CAAC,KAAOjB,EAAIkR,aAAaC,KAAK,eAAenR,EAAIkR,aAAaE,YAAY,kBAAkB,QAAQ5P,OAAM,IAAO,MAAK,EAAM,aAAa,qBAAqBxB,EAAIkR,cAAa,IAAQlR,EAAIe,KAAKf,EAAIO,GAAG,KAAOP,EAAI2E,QAAiM3E,EAAIe,KAA5LZ,EAAG,eAAe,CAACc,MAAM,CAAC,cAAcjB,EAAI0E,WAAW,YAAY1E,EAAImF,SAAS,cAAcnF,EAAIqR,WAAW,QAAUrR,EAAIsR,QAAQ,OAAStR,EAAI4P,QAAQ/N,GAAG,CAAC,YAAY7B,EAAI8E,YAAqB9E,EAAIO,GAAG,KAAOP,EAAI2E,QAA2I3E,EAAIe,KAAtIZ,EAAG,kBAAkB,CAACsB,IAAI,gBAAgBR,MAAM,CAAC,cAAcjB,EAAI0E,WAAW,YAAY1E,EAAImF,SAAS,OAASnF,EAAIqR,cAAuBrR,EAAIO,GAAG,KAAOP,EAAI2E,QAAkG3E,EAAIe,KAA7FZ,EAAG,cAAc,CAACsB,IAAI,YAAYR,MAAM,CAAC,OAASjB,EAAI4P,OAAO,YAAY5P,EAAImF,YAAqBnF,EAAIO,GAAG,KAAMP,EAAI0E,aAAe1E,EAAI2E,QAASxE,EAAG,mBAAmB,CAACc,MAAM,CAAC,YAAYjB,EAAImF,YAAYnF,EAAIe,KAAKf,EAAIO,GAAG,KAAKJ,EAAG,uBAAuB,CAACc,MAAM,CAAC,YAAYjB,EAAImF,YAAYnF,EAAIO,GAAG,KAAMP,EAAY,SAAEG,EAAG,iBAAiB,CAACc,MAAM,CAAC,GAAM,GAAMjB,EAAImF,SAAW,GAAG,KAAO,OAAO,KAAOnF,EAAImF,SAAS1E,QAAQT,EAAIe,KAAKf,EAAIO,GAAG,KAAKP,EAAIsK,GAAItK,EAAY,UAAE,SAASuR,EAAQtC,GAAO,OAAO9O,EAAG,MAAM,CAACmB,IAAI2N,EAAMxN,IAAI,WAAawN,EAAMuC,UAAS,EAAKnR,YAAY,iCAAiC,CAACF,EAAGoR,EAAQvR,EAAI4I,MAAM,WAAWqG,GAAQjP,EAAImF,UAAU,CAACuF,IAAI,YAAYzJ,MAAM,CAAC,YAAYjB,EAAImF,aAAa,QAAO,KACjvD,IDUpB,EACA,KACA,KACA,MAI8B,mLEIXsM,GAAAA,WAIpB,kHAAc,kIAEbxX,KAAKyX,OAAS,GAGdzX,KAAKyX,OAAOC,QAAU,GACtBjP,QAAQuF,MAAM,+EAUf,WACC,OAAOhO,KAAKyX,mCAiBb,SAAaE,GACZ,MAAkC,KAA9BA,EAAOR,YAAY/J,QACO,mBAAnBuK,EAAOC,SACjB5X,KAAKyX,OAAOC,QAAQG,KAAKF,IAClB,IAERlP,QAAQoB,MAAM,iCAAkC8N,IACzC,+EA7CYH,uZCAAM,GAAAA,WAIpB,kHAAc,kIAEb9X,KAAKyX,OAAS,GAGdzX,KAAKyX,OAAOM,QAAU,GACtBtP,QAAQuF,MAAM,uFAUf,WACC,OAAOhO,KAAKyX,qCAUb,SAAe/G,GAGd,OAFAjI,QAAQuP,KAAK,8FAES,WAAlB,GAAOtH,IAAuBA,EAAOuE,MAAQvE,EAAOlK,MAAQkK,EAAOwE,KACtElV,KAAKyX,OAAOM,QAAQF,KAAKnH,IAClB,IAERjI,QAAQoB,MAAM,0BAA2B6G,IAClC,+EAvCYoH,uZCAAG,GAAAA,WAIpB,kHAAc,kIAEbjY,KAAKyX,OAAS,GAGdzX,KAAKyX,OAAOM,QAAU,GACtBtP,QAAQuF,MAAM,wFAUf,WACC,OAAOhO,KAAKyX,qCAab,SAAe/G,GAEd,MAAsB,WAAlB,GAAOA,IACc,iBAAdA,EAAO7N,IACS,mBAAhB6N,EAAOjO,MACbkG,MAAMuP,QAAQxH,EAAOjH,YACK,WAA3B,GAAOiH,EAAOC,WACbxF,OAAOgN,OAAOzH,EAAOC,UAAUyH,OAAM,SAAAR,GAAO,MAAuB,mBAAZA,KAMvC5X,KAAKyX,OAAOM,QAAQM,WAAU,SAAAC,GAAK,OAAIA,EAAMzV,KAAO6N,EAAO7N,OAAO,GAEtF4F,QAAQoB,MAAR,qCAA4C6G,EAAO7N,GAAnD,mBAAwE6N,IACjE,IAGR1Q,KAAKyX,OAAOM,QAAQF,KAAKnH,IAClB,IAZNjI,QAAQoB,MAAM,0BAA2B6G,IAClC,+EA3CWuH,8KCAAM,GAAAA,WAIpB,kHAAc,qIACbvY,KAAKwY,UAAY,uDAMlB,SAAgBlB,GACftX,KAAKwY,UAAUX,KAAKP,8BAGrB,WACC,OAAOtX,KAAKwY,sFAhBOD,6HCYhBpY,OAAOsY,IAAIC,UACfvY,OAAOsY,IAAIC,QAAU,IAEtBvN,OAAOwN,OAAOxY,OAAOsY,IAAIC,QAAS,CAAElB,YAAa,IAAIA,KACrDrM,OAAOwN,OAAOxY,OAAOsY,IAAIC,QAAS,CAAEZ,oBAAqB,IAAIA,KAC7D3M,OAAOwN,OAAOxY,OAAOsY,IAAIC,QAAS,CAAET,qBAAsB,IAAIA,KAC9D9M,OAAOwN,OAAOxY,OAAOsY,IAAIC,QAAS,CAAEE,iBAAkB,IAAIL,KAE1DM,EAAAA,QAAAA,UAAAA,EAAkB5R,EAAAA,UAClB4R,EAAAA,QAAAA,UAAAA,EAAkBC,EAAAA,gBAClBD,EAAAA,QAAAA,IAAQE,KAGR,IAAMC,GAAOH,EAAAA,QAAAA,OAAWI,IACpBC,GAAc,KAElB/Y,OAAOgZ,iBAAiB,oBAAoB,WACvCV,IAAIW,OAASX,IAAIW,MAAMC,SAC1BZ,IAAIW,MAAMC,QAAQC,YAAY,IAAIb,IAAIW,MAAMC,QAAQE,IAAI,CACvD1W,GAAI,UACJ2D,MAAMS,EAAAA,EAAAA,WAAE,gBAAiB,WACzBgO,KAAM,aAEAuE,MALiD,SAK3CC,EAAIvO,EAAUwO,GAAS,sIAC9BR,IACHA,GAAYS,WAEbT,GAAc,IAAIF,GAAK,CAEtB9T,OAAQwU,IANyB,SAS5BR,GAAYU,OAAO1O,GATS,OAUlCgO,GAAYW,OAAOJ,GAVe,oOAYnCG,OAjBuD,SAiBhD1O,GACNgO,GAAYU,OAAO1O,IAEpB4O,QApBuD,WAqBtDZ,GAAYS,WACZT,GAAc,sECvEda,QAA0B,GAA4B,KAE1DA,EAAwBlC,KAAK,CAACmC,EAAOnX,GAAI,+FAAgG,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,4EAA4E,MAAQ,GAAG,SAAW,oBAAoB,eAAiB,CAAC,0qBAA0qB,WAAa,MAEn+B,+DCJIkX,QAA0B,GAA4B,KAE1DA,EAAwBlC,KAAK,CAACmC,EAAOnX,GAAI,2aAA4a,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,kEAAkE,MAAQ,GAAG,SAAW,sJAAsJ,eAAiB,CAAC,ksCAAksC,WAAa,MAE/7D,gECJIkX,QAA0B,GAA4B,KAE1DA,EAAwBlC,KAAK,CAACmC,EAAOnX,GAAI,0VAA2V,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,2EAA2E,MAAQ,GAAG,SAAW,qIAAqI,eAAiB,CAAC,khBAAkhB,WAAa,MAEtrC,gECJIkX,QAA0B,GAA4B,KAE1DA,EAAwBlC,KAAK,CAACmC,EAAOnX,GAAI,8QAA+Q,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,0EAA0E,MAAQ,GAAG,SAAW,kGAAkG,eAAiB,CAAC,ofAAof,WAAa,MAExiC,gECJIkX,QAA0B,GAA4B,KAE1DA,EAAwBlC,KAAK,CAACmC,EAAOnX,GAAI,imCAAkmC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,sEAAsE,MAAQ,GAAG,SAAW,kUAAkU,eAAiB,CAAC,iyFAAiyF,WAAa,MAEp4I,gECJIkX,QAA0B,GAA4B,KAE1DA,EAAwBlC,KAAK,CAACmC,EAAOnX,GAAI,ocAAqc,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,wEAAwE,MAAQ,GAAG,SAAW,qLAAqL,eAAiB,CAAC,gmBAAgmB,WAAa,MAE35C,gECJIkX,QAA0B,GAA4B,KAE1DA,EAAwBlC,KAAK,CAACmC,EAAOnX,GAAI,6UAA8U,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,kEAAkE,MAAQ,GAAG,SAAW,+FAA+F,eAAiB,CAAC,w8CAAw8C,WAAa,MAEhjE,gECJIkX,QAA0B,GAA4B,KAE1DA,EAAwBlC,KAAK,CAACmC,EAAOnX,GAAI,mMAAoM,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,iEAAiE,MAAQ,GAAG,SAAW,kFAAkF,eAAiB,CAAC,4iBAA4iB,WAAa,MAE5/B,QCNIoX,EAA2B,GAG/B,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqB3Y,IAAjB4Y,EACH,OAAOA,EAAaC,QAGrB,IAAIL,EAASC,EAAyBE,GAAY,CACjDtX,GAAIsX,EACJG,QAAQ,EACRD,QAAS,IAUV,OANAE,EAAoBJ,GAAUK,KAAKR,EAAOK,QAASL,EAAQA,EAAOK,QAASH,GAG3EF,EAAOM,QAAS,EAGTN,EAAOK,QAIfH,EAAoBO,EAAIF,EC5BxBL,EAAoBQ,KAAO,WAC1B,MAAM,IAAIlQ,MAAM,mCCDjB0P,EAAoBS,KAAO,GhFAvBvb,EAAW,GACf8a,EAAoBU,EAAI,SAASjD,EAAQkD,EAAUvT,EAAIwT,GACtD,IAAGD,EAAH,CAMA,IAAIE,EAAeC,EAAAA,EACnB,IAASC,EAAI,EAAGA,EAAI7b,EAASgK,OAAQ6R,IAAK,CACrCJ,EAAWzb,EAAS6b,GAAG,GACvB3T,EAAKlI,EAAS6b,GAAG,GACjBH,EAAW1b,EAAS6b,GAAG,GAE3B,IAJA,IAGIC,GAAY,EACPC,EAAI,EAAGA,EAAIN,EAASzR,OAAQ+R,MACpB,EAAXL,GAAsBC,GAAgBD,IAAa3P,OAAOiQ,KAAKlB,EAAoBU,GAAGxC,OAAM,SAAS/Q,GAAO,OAAO6S,EAAoBU,EAAEvT,GAAKwT,EAASM,OAC3JN,EAASQ,OAAOF,IAAK,IAErBD,GAAY,EACTJ,EAAWC,IAAcA,EAAeD,IAG7C,GAAGI,EAAW,CACb9b,EAASic,OAAOJ,IAAK,GACrB,IAAIK,EAAIhU,SACE9F,IAAN8Z,IAAiB3D,EAAS2D,IAGhC,OAAO3D,EAzBNmD,EAAWA,GAAY,EACvB,IAAI,IAAIG,EAAI7b,EAASgK,OAAQ6R,EAAI,GAAK7b,EAAS6b,EAAI,GAAG,GAAKH,EAAUG,IAAK7b,EAAS6b,GAAK7b,EAAS6b,EAAI,GACrG7b,EAAS6b,GAAK,CAACJ,EAAUvT,EAAIwT,IiFJ/BZ,EAAoBpB,EAAI,SAASkB,GAChC,IAAIuB,EAASvB,GAAUA,EAAOwB,WAC7B,WAAa,OAAOxB,EAAgB,SACpC,WAAa,OAAOA,GAErB,OADAE,EAAoBuB,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,GCLRrB,EAAoBuB,EAAI,SAASpB,EAASsB,GACzC,IAAI,IAAItU,KAAOsU,EACXzB,EAAoB0B,EAAED,EAAYtU,KAAS6S,EAAoB0B,EAAEvB,EAAShT,IAC5E8D,OAAO0Q,eAAexB,EAAShT,EAAK,CAAEyU,YAAY,EAAM5P,IAAKyP,EAAWtU,MCJ3E6S,EAAoB6B,EAAI,WACvB,GAA0B,iBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAOhc,MAAQ,IAAIic,SAAS,cAAb,GACd,MAAOC,GACR,GAAsB,iBAAX/b,OAAqB,OAAOA,QALjB,GCAxB+Z,EAAoB0B,EAAI,SAASO,EAAKC,GAAQ,OAAOjR,OAAOkR,UAAUC,eAAe9B,KAAK2B,EAAKC,ICC/FlC,EAAoBoB,EAAI,SAASjB,GACX,oBAAXkC,QAA0BA,OAAOC,aAC1CrR,OAAO0Q,eAAexB,EAASkC,OAAOC,YAAa,CAAE9c,MAAO,WAE7DyL,OAAO0Q,eAAexB,EAAS,aAAc,CAAE3a,OAAO,KCLvDwa,EAAoBuC,IAAM,SAASzC,GAGlC,OAFAA,EAAO0C,MAAQ,GACV1C,EAAO2C,WAAU3C,EAAO2C,SAAW,IACjC3C,GCHRE,EAAoBiB,EAAI,gBCAxBjB,EAAoB0C,EAAItd,SAASud,SAAWC,KAAKC,SAASC,KAK1D,IAAIC,EAAkB,CACrB,KAAM,GAaP/C,EAAoBU,EAAEO,EAAI,SAAS+B,GAAW,OAAoC,IAA7BD,EAAgBC,IAGrE,IAAIC,EAAuB,SAASC,EAA4B3a,GAC/D,IAKI0X,EAAU+C,EALVrC,EAAWpY,EAAK,GAChB4a,EAAc5a,EAAK,GACnB6a,EAAU7a,EAAK,GAGIwY,EAAI,EAC3B,GAAGJ,EAAS0C,MAAK,SAAS1a,GAAM,OAA+B,IAAxBoa,EAAgBpa,MAAe,CACrE,IAAIsX,KAAYkD,EACZnD,EAAoB0B,EAAEyB,EAAalD,KACrCD,EAAoBO,EAAEN,GAAYkD,EAAYlD,IAGhD,GAAGmD,EAAS,IAAI3F,EAAS2F,EAAQpD,GAGlC,IADGkD,GAA4BA,EAA2B3a,GACrDwY,EAAIJ,EAASzR,OAAQ6R,IACzBiC,EAAUrC,EAASI,GAChBf,EAAoB0B,EAAEqB,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBC,GAAW,EAE5B,OAAOhD,EAAoBU,EAAEjD,IAG1B6F,EAAqBV,KAA4B,sBAAIA,KAA4B,uBAAK,GAC1FU,EAAmBC,QAAQN,EAAqBO,KAAK,KAAM,IAC3DF,EAAmB3F,KAAOsF,EAAqBO,KAAK,KAAMF,EAAmB3F,KAAK6F,KAAKF,OClDvFtD,EAAoByD,QAAKnc,ECGzB,IAAIoc,EAAsB1D,EAAoBU,OAAEpZ,EAAW,CAAC,OAAO,WAAa,OAAO0Y,EAAoB,UAC3G0D,EAAsB1D,EAAoBU,EAAEgD","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/files_sharing/src/services/ConfigService.js","webpack:///nextcloud/apps/files_sharing/src/models/Share.js","webpack:///nextcloud/apps/files_sharing/src/mixins/ShareTypes.js","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntrySimple.vue?924c","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntrySimple.vue?cb12","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=template&id=1436bf4a&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?d9e2","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?4c20","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue?vue&type=template&id=854dc2c6&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/utils/GeneratePassword.js","webpack:///nextcloud/apps/files_sharing/src/mixins/ShareRequests.js","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingInput.vue?1f8b","webpack://nextcloud/./apps/files_sharing/src/components/SharingInput.vue?3d7c","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=template&id=6c96bdca&","webpack:///nextcloud/apps/files_sharing/src/mixins/SharesMixin.js","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInherited.vue?b36f","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInherited.vue?0e5a","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue?vue&type=template&id=29845767&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/views/SharingInherited.vue?ec0b","webpack://nextcloud/./apps/files_sharing/src/views/SharingInherited.vue?1677","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue?vue&type=template&id=49ffd834&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/ExternalShareAction.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/components/ExternalShareAction.vue","webpack://nextcloud/./apps/files_sharing/src/components/ExternalShareAction.vue?9bf3","webpack:///nextcloud/apps/files_sharing/src/components/ExternalShareAction.vue?vue&type=template&id=29f555e7&","webpack:///nextcloud/apps/files_sharing/src/lib/SharePermissionsToolBox.js","webpack:///nextcloud/apps/files_sharing/src/components/SharePermissionsEditor.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/components/SharePermissionsEditor.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharePermissionsEditor.vue?dc54","webpack://nextcloud/./apps/files_sharing/src/components/SharePermissionsEditor.vue?f133","webpack:///nextcloud/apps/files_sharing/src/components/SharePermissionsEditor.vue?vue&type=template&id=3d9cb67e&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryLink.vue?e9b7","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryLink.vue?af90","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue?vue&type=template&id=a63eeae4&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/views/SharingLinkList.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/views/SharingLinkList.vue","webpack://nextcloud/./apps/files_sharing/src/views/SharingLinkList.vue?a70b","webpack:///nextcloud/apps/files_sharing/src/views/SharingLinkList.vue?vue&type=template&id=8be1a6a2&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntry.vue?66a9","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntry.vue?10a7","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue?vue&type=template&id=11f6b64f&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/views/SharingList.vue","webpack:///nextcloud/apps/files_sharing/src/views/SharingList.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/views/SharingList.vue?9f9c","webpack:///nextcloud/apps/files_sharing/src/views/SharingList.vue?vue&type=template&id=0b29d4c0&","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue","webpack:///nextcloud/apps/files_sharing/src/utils/SharedWithMe.js","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/views/SharingTab.vue?6997","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue?vue&type=template&id=6b75002c&","webpack:///nextcloud/apps/files_sharing/src/services/ShareSearch.js","webpack:///nextcloud/apps/files_sharing/src/services/ExternalLinkActions.js","webpack:///nextcloud/apps/files_sharing/src/services/ExternalShareActions.js","webpack:///nextcloud/apps/files_sharing/src/services/TabSections.js","webpack:///nextcloud/apps/files_sharing/src/files_sharing_tab.js","webpack:///nextcloud/apps/files_sharing/src/components/SharePermissionsEditor.vue?vue&type=style&index=0&id=3d9cb67e&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue?vue&type=style&index=0&id=11f6b64f&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue?vue&type=style&index=0&id=29845767&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue?vue&type=style&index=0&id=854dc2c6&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue?vue&type=style&index=0&id=a63eeae4&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=style&index=0&id=1436bf4a&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=style&index=0&lang=scss&","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue?vue&type=style&index=0&id=49ffd834&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/runtime/nonce","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 Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nexport default class Config {\n\n\t/**\n\t * Is public upload allowed on link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isPublicUploadEnabled() {\n\t\treturn document.getElementById('filestable')\n\t\t\t&& document.getElementById('filestable').dataset.allowPublicUpload === 'yes'\n\t}\n\n\t/**\n\t * Are link share allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isShareWithLinkAllowed() {\n\t\treturn document.getElementById('allowShareWithLink')\n\t\t\t&& document.getElementById('allowShareWithLink').value === 'yes'\n\t}\n\n\t/**\n\t * Get the federated sharing documentation link\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget federatedShareDocLink() {\n\t\treturn OC.appConfig.core.federatedCloudShareDoc\n\t}\n\n\t/**\n\t * Get the default link share expiration date as string\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultExpirationDateString() {\n\t\tlet expireDateString = ''\n\t\tif (this.isDefaultExpireDateEnabled) {\n\t\t\tconst date = window.moment.utc()\n\t\t\tconst expireAfterDays = this.defaultExpireDate\n\t\t\tdate.add(expireAfterDays, 'days')\n\t\t\texpireDateString = date.format('YYYY-MM-DD')\n\t\t}\n\t\treturn expireDateString\n\t}\n\n\t/**\n\t * Get the default internal expiration date as string\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultInternalExpirationDateString() {\n\t\tlet expireDateString = ''\n\t\tif (this.isDefaultInternalExpireDateEnabled) {\n\t\t\tconst date = window.moment.utc()\n\t\t\tconst expireAfterDays = this.defaultInternalExpireDate\n\t\t\tdate.add(expireAfterDays, 'days')\n\t\t\texpireDateString = date.format('YYYY-MM-DD')\n\t\t}\n\t\treturn expireDateString\n\t}\n\n\t/**\n\t * Get the default remote expiration date as string\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultRemoteExpirationDateString() {\n\t\tlet expireDateString = ''\n\t\tif (this.isDefaultRemoteExpireDateEnabled) {\n\t\t\tconst date = window.moment.utc()\n\t\t\tconst expireAfterDays = this.defaultRemoteExpireDate\n\t\t\tdate.add(expireAfterDays, 'days')\n\t\t\texpireDateString = date.format('YYYY-MM-DD')\n\t\t}\n\t\treturn expireDateString\n\t}\n\n\t/**\n\t * Are link shares password-enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget enforcePasswordForPublicLink() {\n\t\treturn OC.appConfig.core.enforcePasswordForPublicLink === true\n\t}\n\n\t/**\n\t * Is password asked by default on link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget enableLinkPasswordByDefault() {\n\t\treturn OC.appConfig.core.enableLinkPasswordByDefault === true\n\t}\n\n\t/**\n\t * Is link shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is there a default expiration date for new link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultExpireDateEnabled() {\n\t\treturn OC.appConfig.core.defaultExpireDateEnabled === true\n\t}\n\n\t/**\n\t * Is internal shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultInternalExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is remote shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultRemoteExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultRemoteExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is there a default expiration date for new internal shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultInternalExpireDateEnabled() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDateEnabled === true\n\t}\n\n\t/**\n\t * Are users on this server allowed to send shares to other servers ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isRemoteShareAllowed() {\n\t\treturn OC.appConfig.core.remoteShareAllowed === true\n\t}\n\n\t/**\n\t * Is sharing my mail (link share) enabled ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isMailShareAllowed() {\n\t\tconst capabilities = OC.getCapabilities()\n\t\t// eslint-disable-next-line camelcase\n\t\treturn capabilities?.files_sharing?.sharebymail !== undefined\n\t\t\t// eslint-disable-next-line camelcase\n\t\t\t&& capabilities?.files_sharing?.public?.enabled === true\n\t}\n\n\t/**\n\t * Get the default days to link shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultExpireDate() {\n\t\treturn OC.appConfig.core.defaultExpireDate\n\t}\n\n\t/**\n\t * Get the default days to internal shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultInternalExpireDate() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDate\n\t}\n\n\t/**\n\t * Get the default days to remote shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultRemoteExpireDate() {\n\t\treturn OC.appConfig.core.defaultRemoteExpireDate\n\t}\n\n\t/**\n\t * Is resharing allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isResharingAllowed() {\n\t\treturn OC.appConfig.core.resharingAllowed === true\n\t}\n\n\t/**\n\t * Is password enforced for mail shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isPasswordForMailSharesRequired() {\n\t\treturn (OC.getCapabilities().files_sharing.sharebymail === undefined) ? false : OC.getCapabilities().files_sharing.sharebymail.password.enforced\n\t}\n\n\t/**\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget shouldAlwaysShowUnique() {\n\t\treturn (OC.getCapabilities().files_sharing?.sharee?.always_show_unique === true)\n\t}\n\n\t/**\n\t * Is sharing with groups allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget allowGroupSharing() {\n\t\treturn OC.appConfig.core.allowGroupSharing === true\n\t}\n\n\t/**\n\t * Get the maximum results of a share search\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget maxAutocompleteResults() {\n\t\treturn parseInt(OC.config['sharing.maxAutocompleteResults'], 10) || 25\n\t}\n\n\t/**\n\t * Get the minimal string length\n\t * to initiate a share search\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget minSearchStringLength() {\n\t\treturn parseInt(OC.config['sharing.minSearchStringLength'], 10) || 0\n\t}\n\n\t/**\n\t * Get the password policy config\n\t *\n\t * @return {object}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget passwordPolicy() {\n\t\tconst capabilities = OC.getCapabilities()\n\t\treturn capabilities.password_policy ? capabilities.password_policy : {}\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Gary Kim <gary@garykim.dev>\n * @author Georg Ehrke <oc.list@georgehrke.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nexport default class Share {\n\n\t_share\n\n\t/**\n\t * Create the share object\n\t *\n\t * @param {object} ocsData ocs request response\n\t */\n\tconstructor(ocsData) {\n\t\tif (ocsData.ocs && ocsData.ocs.data && ocsData.ocs.data[0]) {\n\t\t\tocsData = ocsData.ocs.data[0]\n\t\t}\n\n\t\t// convert int into boolean\n\t\tocsData.hide_download = !!ocsData.hide_download\n\t\tocsData.mail_send = !!ocsData.mail_send\n\n\t\t// store state\n\t\tthis._share = ocsData\n\t}\n\n\t/**\n\t * Get the share state\n\t * ! used for reactivity purpose\n\t * Do not remove. It allow vuejs to\n\t * inject its watchers into the #share\n\t * state and make the whole class reactive\n\t *\n\t * @return {object} the share raw state\n\t * @readonly\n\t * @memberof Sidebar\n\t */\n\tget state() {\n\t\treturn this._share\n\t}\n\n\t/**\n\t * get the share id\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget id() {\n\t\treturn this._share.id\n\t}\n\n\t/**\n\t * Get the share type\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget type() {\n\t\treturn this._share.share_type\n\t}\n\n\t/**\n\t * Get the share permissions\n\t * See OC.PERMISSION_* variables\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget permissions() {\n\t\treturn this._share.permissions\n\t}\n\n\t/**\n\t * Set the share permissions\n\t * See OC.PERMISSION_* variables\n\t *\n\t * @param {number} permissions valid permission, See OC.PERMISSION_* variables\n\t * @memberof Share\n\t */\n\tset permissions(permissions) {\n\t\tthis._share.permissions = permissions\n\t}\n\n\t// SHARE OWNER --------------------------------------------------\n\t/**\n\t * Get the share owner uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget owner() {\n\t\treturn this._share.uid_owner\n\t}\n\n\t/**\n\t * Get the share owner's display name\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget ownerDisplayName() {\n\t\treturn this._share.displayname_owner\n\t}\n\n\t// SHARED WITH --------------------------------------------------\n\t/**\n\t * Get the share with entity uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWith() {\n\t\treturn this._share.share_with\n\t}\n\n\t/**\n\t * Get the share with entity display name\n\t * fallback to its uid if none\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithDisplayName() {\n\t\treturn this._share.share_with_displayname\n\t\t\t|| this._share.share_with\n\t}\n\n\t/**\n\t * Unique display name in case of multiple\n\t * duplicates results with the same name.\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithDisplayNameUnique() {\n\t\treturn this._share.share_with_displayname_unique\n\t\t\t|| this._share.share_with\n\t}\n\n\t/**\n\t * Get the share with entity link\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithLink() {\n\t\treturn this._share.share_with_link\n\t}\n\n\t/**\n\t * Get the share with avatar if any\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithAvatar() {\n\t\treturn this._share.share_with_avatar\n\t}\n\n\t// SHARED FILE OR FOLDER OWNER ----------------------------------\n\t/**\n\t * Get the shared item owner uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget uidFileOwner() {\n\t\treturn this._share.uid_file_owner\n\t}\n\n\t/**\n\t * Get the shared item display name\n\t * fallback to its uid if none\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget displaynameFileOwner() {\n\t\treturn this._share.displayname_file_owner\n\t\t\t|| this._share.uid_file_owner\n\t}\n\n\t// TIME DATA ----------------------------------------------------\n\t/**\n\t * Get the share creation timestamp\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget createdTime() {\n\t\treturn this._share.stime\n\t}\n\n\t/**\n\t * Get the expiration date as a string format\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget expireDate() {\n\t\treturn this._share.expiration\n\t}\n\n\t/**\n\t * Set the expiration date as a string format\n\t * e.g. YYYY-MM-DD\n\t *\n\t * @param {string} date the share expiration date\n\t * @memberof Share\n\t */\n\tset expireDate(date) {\n\t\tthis._share.expiration = date\n\t}\n\n\t// EXTRA DATA ---------------------------------------------------\n\t/**\n\t * Get the public share token\n\t *\n\t * @return {string} the token\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget token() {\n\t\treturn this._share.token\n\t}\n\n\t/**\n\t * Get the share note if any\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget note() {\n\t\treturn this._share.note\n\t}\n\n\t/**\n\t * Set the share note if any\n\t *\n\t * @param {string} note the note\n\t * @memberof Share\n\t */\n\tset note(note) {\n\t\tthis._share.note = note\n\t}\n\n\t/**\n\t * Get the share label if any\n\t * Should only exist on link shares\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget label() {\n\t\treturn this._share.label\n\t}\n\n\t/**\n\t * Set the share label if any\n\t * Should only be set on link shares\n\t *\n\t * @param {string} label the label\n\t * @memberof Share\n\t */\n\tset label(label) {\n\t\tthis._share.label = label\n\t}\n\n\t/**\n\t * Have a mail been sent\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget mailSend() {\n\t\treturn this._share.mail_send === true\n\t}\n\n\t/**\n\t * Hide the download button on public page\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hideDownload() {\n\t\treturn this._share.hide_download === true\n\t}\n\n\t/**\n\t * Hide the download button on public page\n\t *\n\t * @param {boolean} state hide the button ?\n\t * @memberof Share\n\t */\n\tset hideDownload(state) {\n\t\tthis._share.hide_download = state === true\n\t}\n\n\t/**\n\t * Password protection of the share\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget password() {\n\t\treturn this._share.password\n\t}\n\n\t/**\n\t * Password protection of the share\n\t *\n\t * @param {string} password the share password\n\t * @memberof Share\n\t */\n\tset password(password) {\n\t\tthis._share.password = password\n\t}\n\n\t/**\n\t * Password expiration time\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget passwordExpirationTime() {\n\t\treturn this._share.password_expiration_time\n\t}\n\n\t/**\n\t * Password expiration time\n\t *\n\t * @param {string} password exipration time\n\t * @memberof Share\n\t */\n\tset passwordExpirationTime(passwordExpirationTime) {\n\t\tthis._share.password_expiration_time = passwordExpirationTime\n\t}\n\n\t/**\n\t * Password protection by Talk of the share\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget sendPasswordByTalk() {\n\t\treturn this._share.send_password_by_talk\n\t}\n\n\t/**\n\t * Password protection by Talk of the share\n\t *\n\t * @param {boolean} sendPasswordByTalk whether to send the password by Talk\n\t * or not\n\t * @memberof Share\n\t */\n\tset sendPasswordByTalk(sendPasswordByTalk) {\n\t\tthis._share.send_password_by_talk = sendPasswordByTalk\n\t}\n\n\t// SHARED ITEM DATA ---------------------------------------------\n\t/**\n\t * Get the shared item absolute full path\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget path() {\n\t\treturn this._share.path\n\t}\n\n\t/**\n\t * Return the item type: file or folder\n\t *\n\t * @return {string} 'folder' or 'file'\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget itemType() {\n\t\treturn this._share.item_type\n\t}\n\n\t/**\n\t * Get the shared item mimetype\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget mimetype() {\n\t\treturn this._share.mimetype\n\t}\n\n\t/**\n\t * Get the shared item id\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileSource() {\n\t\treturn this._share.file_source\n\t}\n\n\t/**\n\t * Get the target path on the receiving end\n\t * e.g the file /xxx/aaa will be shared in\n\t * the receiving root as /aaa, the fileTarget is /aaa\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileTarget() {\n\t\treturn this._share.file_target\n\t}\n\n\t/**\n\t * Get the parent folder id if any\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileParent() {\n\t\treturn this._share.file_parent\n\t}\n\n\t// PERMISSIONS Shortcuts\n\n\t/**\n\t * Does this share have READ permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasReadPermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_READ))\n\t}\n\n\t/**\n\t * Does this share have CREATE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasCreatePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_CREATE))\n\t}\n\n\t/**\n\t * Does this share have DELETE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasDeletePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_DELETE))\n\t}\n\n\t/**\n\t * Does this share have UPDATE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasUpdatePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_UPDATE))\n\t}\n\n\t/**\n\t * Does this share have SHARE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasSharePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_SHARE))\n\t}\n\n\t// PERMISSIONS Shortcuts for the CURRENT USER\n\t// ! the permissions above are the share settings,\n\t// ! meaning the permissions for the recipient\n\t/**\n\t * Can the current user EDIT this share ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget canEdit() {\n\t\treturn this._share.can_edit === true\n\t}\n\n\t/**\n\t * Can the current user DELETE this share ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget canDelete() {\n\t\treturn this._share.can_delete === true\n\t}\n\n\t/**\n\t * Top level accessible shared folder fileid for the current user\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget viaFileid() {\n\t\treturn this._share.via_fileid\n\t}\n\n\t/**\n\t * Top level accessible shared folder path for the current user\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget viaPath() {\n\t\treturn this._share.via_path\n\t}\n\n\t// TODO: SORT THOSE PROPERTIES\n\n\tget parent() {\n\t\treturn this._share.parent\n\t}\n\n\tget storageId() {\n\t\treturn this._share.storage_id\n\t}\n\n\tget storage() {\n\t\treturn this._share.storage\n\t}\n\n\tget itemSource() {\n\t\treturn this._share.item_source\n\t}\n\n\tget status() {\n\t\treturn this._share.status\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nimport { Type as ShareTypes } from '@nextcloud/sharing'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tSHARE_TYPES: ShareTypes,\n\t\t}\n\t},\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.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!./SharingEntrySimple.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<li class=\"sharing-entry\">\n\t\t<slot name=\"avatar\" />\n\t\t<div v-tooltip=\"tooltip\" class=\"sharing-entry__desc\">\n\t\t\t<h5>{{ title }}</h5>\n\t\t\t<p v-if=\"subtitle\">\n\t\t\t\t{{ subtitle }}\n\t\t\t</p>\n\t\t</div>\n\t\t<Actions v-if=\"$slots['default']\" menu-align=\"right\" class=\"sharing-entry__actions\">\n\t\t\t<slot />\n\t\t</Actions>\n\t</li>\n</template>\n\n<script>\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'\n\nexport default {\n\tname: 'SharingEntrySimple',\n\n\tcomponents: {\n\t\tActions,\n\t},\n\n\tdirectives: {\n\t\tTooltip,\n\t},\n\n\tprops: {\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true,\n\t\t},\n\t\ttooltip: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tsubtitle: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tisUnique: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tposition: relative;\n\t\tflex: 1 1;\n\t\tmin-width: 0;\n\t\th5 {\n\t\t\twhite-space: nowrap;\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow: hidden;\n\t\t\tmax-width: inherit;\n\t\t}\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto !important;\n\t}\n}\n</style>\n","\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!./SharingEntrySimple.vue?vue&type=style&index=0&id=1436bf4a&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!./SharingEntrySimple.vue?vue&type=style&index=0&id=1436bf4a&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntrySimple.vue?vue&type=template&id=1436bf4a&scoped=true&\"\nimport script from \"./SharingEntrySimple.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntrySimple.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntrySimple.vue?vue&type=style&index=0&id=1436bf4a&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 \"1436bf4a\",\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('li',{staticClass:\"sharing-entry\"},[_vm._t(\"avatar\"),_vm._v(\" \"),_c('div',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(_vm.tooltip),expression:\"tooltip\"}],staticClass:\"sharing-entry__desc\"},[_c('h5',[_vm._v(_vm._s(_vm.title))]),_vm._v(\" \"),(_vm.subtitle)?_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.subtitle)+\"\\n\\t\\t\")]):_vm._e()]),_vm._v(\" \"),(_vm.$slots['default'])?_c('Actions',{staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\"}},[_vm._t(\"default\")],2):_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n<template>\n\t<SharingEntrySimple class=\"sharing-entry__internal\"\n\t\t:title=\"t('files_sharing', 'Internal link')\"\n\t\t:subtitle=\"internalLinkSubtitle\">\n\t\t<template #avatar>\n\t\t\t<div class=\"avatar-external icon-external-white\" />\n\t\t</template>\n\n\t\t<ActionLink ref=\"copyButton\"\n\t\t\t:href=\"internalLink\"\n\t\t\ttarget=\"_blank\"\n\t\t\t:icon=\"copied && copySuccess ? 'icon-checkmark-color' : 'icon-clippy'\"\n\t\t\t@click.prevent=\"copyLink\">\n\t\t\t{{ clipboardTooltip }}\n\t\t</ActionLink>\n\t</SharingEntrySimple>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport ActionLink from '@nextcloud/vue/dist/Components/ActionLink'\nimport SharingEntrySimple from './SharingEntrySimple'\n\nexport default {\n\tname: 'SharingEntryInternal',\n\n\tcomponents: {\n\t\tActionLink,\n\t\tSharingEntrySimple,\n\t},\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tcopied: false,\n\t\t\tcopySuccess: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Get the internal link to this file id\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tinternalLink() {\n\t\t\treturn window.location.protocol + '//' + window.location.host + generateUrl('/f/') + this.fileInfo.id\n\t\t},\n\n\t\t/**\n\t\t * Clipboard v-tooltip message\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tclipboardTooltip() {\n\t\t\tif (this.copied) {\n\t\t\t\treturn this.copySuccess\n\t\t\t\t\t? t('files_sharing', 'Link copied')\n\t\t\t\t\t: t('files_sharing', 'Cannot copy, please copy the link manually')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Copy to clipboard')\n\t\t},\n\n\t\tinternalLinkSubtitle() {\n\t\t\tif (this.fileInfo.type === 'dir') {\n\t\t\t\treturn t('files_sharing', 'Only works for users with access to this folder')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Only works for users with access to this file')\n\t\t},\n\t},\n\n\tmethods: {\n\t\tasync copyLink() {\n\t\t\ttry {\n\t\t\t\tawait this.$copyText(this.internalLink)\n\t\t\t\t// focus and show the tooltip\n\t\t\t\tthis.$refs.copyButton.$el.focus()\n\t\t\t\tthis.copySuccess = true\n\t\t\t\tthis.copied = true\n\t\t\t} catch (error) {\n\t\t\t\tthis.copySuccess = false\n\t\t\t\tthis.copied = true\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.copySuccess = false\n\t\t\t\t\tthis.copied = false\n\t\t\t\t}, 4000)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry__internal {\n\t.avatar-external {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.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!./SharingEntryInternal.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!./SharingEntryInternal.vue?vue&type=style&index=0&id=854dc2c6&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!./SharingEntryInternal.vue?vue&type=style&index=0&id=854dc2c6&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryInternal.vue?vue&type=template&id=854dc2c6&scoped=true&\"\nimport script from \"./SharingEntryInternal.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntryInternal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntryInternal.vue?vue&type=style&index=0&id=854dc2c6&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 \"854dc2c6\",\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('SharingEntrySimple',{staticClass:\"sharing-entry__internal\",attrs:{\"title\":_vm.t('files_sharing', 'Internal link'),\"subtitle\":_vm.internalLinkSubtitle},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('div',{staticClass:\"avatar-external icon-external-white\"})]},proxy:true}])},[_vm._v(\" \"),_c('ActionLink',{ref:\"copyButton\",attrs:{\"href\":_vm.internalLink,\"target\":\"_blank\",\"icon\":_vm.copied && _vm.copySuccess ? 'icon-checkmark-color' : 'icon-clippy'},on:{\"click\":function($event){$event.preventDefault();return _vm.copyLink.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.clipboardTooltip)+\"\\n\\t\")])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport axios from '@nextcloud/axios'\nimport Config from '../services/ConfigService'\n\nconst config = new Config()\nconst passwordSet = 'abcdefgijkmnopqrstwxyzABCDEFGHJKLMNPQRSTWXYZ23456789'\n\n/**\n * Generate a valid policy password or\n * request a valid password if password_policy\n * is enabled\n *\n * @return {string} a valid password\n */\nexport default async function() {\n\t// password policy is enabled, let's request a pass\n\tif (config.passwordPolicy.api && config.passwordPolicy.api.generate) {\n\t\ttry {\n\t\t\tconst request = await axios.get(config.passwordPolicy.api.generate)\n\t\t\tif (request.data.ocs.data.password) {\n\t\t\t\treturn request.data.ocs.data.password\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.info('Error generating password from password_policy', error)\n\t\t}\n\t}\n\n\t// generate password of 10 length based on passwordSet\n\treturn Array(10).fill(0)\n\t\t.reduce((prev, curr) => {\n\t\t\tprev += passwordSet.charAt(Math.floor(Math.random() * passwordSet.length))\n\t\t\treturn prev\n\t\t}, '')\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\n// TODO: remove when ie not supported\nimport 'url-search-params-polyfill'\n\nimport { generateOcsUrl } from '@nextcloud/router'\nimport axios from '@nextcloud/axios'\nimport Share from '../models/Share'\n\nconst shareUrl = generateOcsUrl('apps/files_sharing/api/v1/shares')\n\nexport default {\n\tmethods: {\n\t\t/**\n\t\t * Create a new share\n\t\t *\n\t\t * @param {object} data destructuring object\n\t\t * @param {string} data.path path to the file/folder which should be shared\n\t\t * @param {number} data.shareType 0 = user; 1 = group; 3 = public link; 6 = federated cloud share\n\t\t * @param {string} data.shareWith user/group id with which the file should be shared (optional for shareType > 1)\n\t\t * @param {boolean} [data.publicUpload=false] allow public upload to a public shared folder\n\t\t * @param {string} [data.password] password to protect public link Share with\n\t\t * @param {number} [data.permissions=31] 1 = read; 2 = update; 4 = create; 8 = delete; 16 = share; 31 = all (default: 31, for public shares: 1)\n\t\t * @param {boolean} [data.sendPasswordByTalk=false] send the password via a talk conversation\n\t\t * @param {string} [data.expireDate=''] expire the shareautomatically after\n\t\t * @param {string} [data.label=''] custom label\n\t\t * @return {Share} the new share\n\t\t * @throws {Error}\n\t\t */\n\t\tasync createShare({ path, permissions, shareType, shareWith, publicUpload, password, sendPasswordByTalk, expireDate, label }) {\n\t\t\ttry {\n\t\t\t\tconst request = await axios.post(shareUrl, { path, permissions, shareType, shareWith, publicUpload, password, sendPasswordByTalk, expireDate, label })\n\t\t\t\tif (!request?.data?.ocs) {\n\t\t\t\t\tthrow request\n\t\t\t\t}\n\t\t\t\treturn new Share(request.data.ocs.data)\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error while creating share', error)\n\t\t\t\tconst errorMessage = error?.response?.data?.ocs?.meta?.message\n\t\t\t\tOC.Notification.showTemporary(\n\t\t\t\t\terrorMessage ? t('files_sharing', 'Error creating the share: {errorMessage}', { errorMessage }) : t('files_sharing', 'Error creating the share'),\n\t\t\t\t\t{ type: 'error' }\n\t\t\t\t)\n\t\t\t\tthrow error\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Delete a share\n\t\t *\n\t\t * @param {number} id share id\n\t\t * @throws {Error}\n\t\t */\n\t\tasync deleteShare(id) {\n\t\t\ttry {\n\t\t\t\tconst request = await axios.delete(shareUrl + `/${id}`)\n\t\t\t\tif (!request?.data?.ocs) {\n\t\t\t\t\tthrow request\n\t\t\t\t}\n\t\t\t\treturn true\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error while deleting share', error)\n\t\t\t\tconst errorMessage = error?.response?.data?.ocs?.meta?.message\n\t\t\t\tOC.Notification.showTemporary(\n\t\t\t\t\terrorMessage ? t('files_sharing', 'Error deleting the share: {errorMessage}', { errorMessage }) : t('files_sharing', 'Error deleting the share'),\n\t\t\t\t\t{ type: 'error' }\n\t\t\t\t)\n\t\t\t\tthrow error\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Update a share\n\t\t *\n\t\t * @param {number} id share id\n\t\t * @param {object} properties key-value object of the properties to update\n\t\t */\n\t\tasync updateShare(id, properties) {\n\t\t\ttry {\n\t\t\t\tconst request = await axios.put(shareUrl + `/${id}`, properties)\n\t\t\t\tif (!request?.data?.ocs) {\n\t\t\t\t\tthrow request\n\t\t\t\t} else {\n\t\t\t\t\treturn request.data.ocs.data\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error while updating share', error)\n\t\t\t\tif (error.response.status !== 400) {\n\t\t\t\t\tconst errorMessage = error?.response?.data?.ocs?.meta?.message\n\t\t\t\t\tOC.Notification.showTemporary(\n\t\t\t\t\t\terrorMessage ? t('files_sharing', 'Error updating the share: {errorMessage}', { errorMessage }) : t('files_sharing', 'Error updating the share'),\n\t\t\t\t\t\t{ type: 'error' }\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tconst message = error.response.data.ocs.meta.message\n\t\t\t\tthrow new Error(message)\n\t\t\t}\n\t\t},\n\t},\n}\n","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<Multiselect ref=\"multiselect\"\n\t\tclass=\"sharing-input\"\n\t\t:clear-on-select=\"true\"\n\t\t:disabled=\"!canReshare\"\n\t\t:hide-selected=\"true\"\n\t\t:internal-search=\"false\"\n\t\t:loading=\"loading\"\n\t\t:options=\"options\"\n\t\t:placeholder=\"inputPlaceholder\"\n\t\t:preselect-first=\"true\"\n\t\t:preserve-search=\"true\"\n\t\t:searchable=\"true\"\n\t\t:user-select=\"true\"\n\t\topen-direction=\"below\"\n\t\tlabel=\"displayName\"\n\t\ttrack-by=\"id\"\n\t\t@search-change=\"asyncFind\"\n\t\t@select=\"addShare\">\n\t\t<template #noOptions>\n\t\t\t{{ t('files_sharing', 'No recommendations. Start typing.') }}\n\t\t</template>\n\t\t<template #noResult>\n\t\t\t{{ noResultText }}\n\t\t</template>\n\t</Multiselect>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport debounce from 'debounce'\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\n\nimport Config from '../services/ConfigService'\nimport GeneratePassword from '../utils/GeneratePassword'\nimport Share from '../models/Share'\nimport ShareRequests from '../mixins/ShareRequests'\nimport ShareTypes from '../mixins/ShareTypes'\n\nexport default {\n\tname: 'SharingInput',\n\n\tcomponents: {\n\t\tMultiselect,\n\t},\n\n\tmixins: [ShareTypes, ShareRequests],\n\n\tprops: {\n\t\tshares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t\tlinkShares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\treshare: {\n\t\t\ttype: Share,\n\t\t\tdefault: null,\n\t\t},\n\t\tcanReshare: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\t\t\tloading: false,\n\t\t\tquery: '',\n\t\t\trecommendations: [],\n\t\t\tShareSearch: OCA.Sharing.ShareSearch.state,\n\t\t\tsuggestions: [],\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Implement ShareSearch\n\t\t * allows external appas to inject new\n\t\t * results into the autocomplete dropdown\n\t\t * Used for the guests app\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\texternalResults() {\n\t\t\treturn this.ShareSearch.results\n\t\t},\n\t\tinputPlaceholder() {\n\t\t\tconst allowRemoteSharing = this.config.isRemoteShareAllowed\n\n\t\t\tif (!this.canReshare) {\n\t\t\t\treturn t('files_sharing', 'Resharing is not allowed')\n\t\t\t}\n\t\t\t// We can always search with email addresses for users too\n\t\t\tif (!allowRemoteSharing) {\n\t\t\t\treturn t('files_sharing', 'Name or email …')\n\t\t\t}\n\n\t\t\treturn t('files_sharing', 'Name, email, or Federated Cloud ID …')\n\t\t},\n\n\t\tisValidQuery() {\n\t\t\treturn this.query && this.query.trim() !== '' && this.query.length > this.config.minSearchStringLength\n\t\t},\n\n\t\toptions() {\n\t\t\tif (this.isValidQuery) {\n\t\t\t\treturn this.suggestions\n\t\t\t}\n\t\t\treturn this.recommendations\n\t\t},\n\n\t\tnoResultText() {\n\t\t\tif (this.loading) {\n\t\t\t\treturn t('files_sharing', 'Searching …')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'No elements found.')\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.getRecommendations()\n\t},\n\n\tmethods: {\n\t\tasync asyncFind(query, id) {\n\t\t\t// save current query to check if we display\n\t\t\t// recommendations or search results\n\t\t\tthis.query = query.trim()\n\t\t\tif (this.isValidQuery) {\n\t\t\t\t// start loading now to have proper ux feedback\n\t\t\t\t// during the debounce\n\t\t\t\tthis.loading = true\n\t\t\t\tawait this.debounceGetSuggestions(query)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Get suggestions\n\t\t *\n\t\t * @param {string} search the search query\n\t\t * @param {boolean} [lookup=false] search on lookup server\n\t\t */\n\t\tasync getSuggestions(search, lookup = false) {\n\t\t\tthis.loading = true\n\n\t\t\tif (OC.getCapabilities().files_sharing.sharee.query_lookup_default === true) {\n\t\t\t\tlookup = true\n\t\t\t}\n\n\t\t\tconst shareType = [\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_USER,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_GROUP,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_REMOTE,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_CIRCLE,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_ROOM,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_GUEST,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_DECK,\n\t\t\t]\n\n\t\t\tif (OC.getCapabilities().files_sharing.public.enabled === true) {\n\t\t\t\tshareType.push(this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\t\t\t}\n\n\t\t\tlet request = null\n\t\t\ttry {\n\t\t\t\trequest = await axios.get(generateOcsUrl('apps/files_sharing/api/v1/sharees'), {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat: 'json',\n\t\t\t\t\t\titemType: this.fileInfo.type === 'dir' ? 'folder' : 'file',\n\t\t\t\t\t\tsearch,\n\t\t\t\t\t\tlookup,\n\t\t\t\t\t\tperPage: this.config.maxAutocompleteResults,\n\t\t\t\t\t\tshareType,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error fetching suggestions', error)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst data = request.data.ocs.data\n\t\t\tconst exact = request.data.ocs.data.exact\n\t\t\tdata.exact = [] // removing exact from general results\n\n\t\t\t// flatten array of arrays\n\t\t\tconst rawExactSuggestions = Object.values(exact).reduce((arr, elem) => arr.concat(elem), [])\n\t\t\tconst rawSuggestions = Object.values(data).reduce((arr, elem) => arr.concat(elem), [])\n\n\t\t\t// remove invalid data and format to user-select layout\n\t\t\tconst exactSuggestions = this.filterOutExistingShares(rawExactSuggestions)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t// sort by type so we can get user&groups first...\n\t\t\t\t.sort((a, b) => a.shareType - b.shareType)\n\t\t\tconst suggestions = this.filterOutExistingShares(rawSuggestions)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t// sort by type so we can get user&groups first...\n\t\t\t\t.sort((a, b) => a.shareType - b.shareType)\n\n\t\t\t// lookup clickable entry\n\t\t\t// show if enabled and not already requested\n\t\t\tconst lookupEntry = []\n\t\t\tif (data.lookupEnabled && !lookup) {\n\t\t\t\tlookupEntry.push({\n\t\t\t\t\tid: 'global-lookup',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\tdisplayName: t('files_sharing', 'Search globally'),\n\t\t\t\t\tlookup: true,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\t// if there is a condition specified, filter it\n\t\t\tconst externalResults = this.externalResults.filter(result => !result.condition || result.condition(this))\n\n\t\t\tconst allSuggestions = exactSuggestions.concat(suggestions).concat(externalResults).concat(lookupEntry)\n\n\t\t\t// Count occurances of display names in order to provide a distinguishable description if needed\n\t\t\tconst nameCounts = allSuggestions.reduce((nameCounts, result) => {\n\t\t\t\tif (!result.displayName) {\n\t\t\t\t\treturn nameCounts\n\t\t\t\t}\n\t\t\t\tif (!nameCounts[result.displayName]) {\n\t\t\t\t\tnameCounts[result.displayName] = 0\n\t\t\t\t}\n\t\t\t\tnameCounts[result.displayName]++\n\t\t\t\treturn nameCounts\n\t\t\t}, {})\n\n\t\t\tthis.suggestions = allSuggestions.map(item => {\n\t\t\t\t// Make sure that items with duplicate displayName get the shareWith applied as a description\n\t\t\t\tif (nameCounts[item.displayName] > 1 && !item.desc) {\n\t\t\t\t\treturn { ...item, desc: item.shareWithDisplayNameUnique }\n\t\t\t\t}\n\t\t\t\treturn item\n\t\t\t})\n\n\t\t\tthis.loading = false\n\t\t\tconsole.info('suggestions', this.suggestions)\n\t\t},\n\n\t\t/**\n\t\t * Debounce getSuggestions\n\t\t *\n\t\t * @param {...*} args the arguments\n\t\t */\n\t\tdebounceGetSuggestions: debounce(function(...args) {\n\t\t\tthis.getSuggestions(...args)\n\t\t}, 300),\n\n\t\t/**\n\t\t * Get the sharing recommendations\n\t\t */\n\t\tasync getRecommendations() {\n\t\t\tthis.loading = true\n\n\t\t\tlet request = null\n\t\t\ttry {\n\t\t\t\trequest = await axios.get(generateOcsUrl('apps/files_sharing/api/v1/sharees_recommended'), {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat: 'json',\n\t\t\t\t\t\titemType: this.fileInfo.type,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error fetching recommendations', error)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Add external results from the OCA.Sharing.ShareSearch api\n\t\t\tconst externalResults = this.externalResults.filter(result => !result.condition || result.condition(this))\n\n\t\t\t// flatten array of arrays\n\t\t\tconst rawRecommendations = Object.values(request.data.ocs.data.exact)\n\t\t\t\t.reduce((arr, elem) => arr.concat(elem), [])\n\n\t\t\t// remove invalid data and format to user-select layout\n\t\t\tthis.recommendations = this.filterOutExistingShares(rawRecommendations)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t.concat(externalResults)\n\n\t\t\tthis.loading = false\n\t\t\tconsole.info('recommendations', this.recommendations)\n\t\t},\n\n\t\t/**\n\t\t * Filter out existing shares from\n\t\t * the provided shares search results\n\t\t *\n\t\t * @param {object[]} shares the array of shares object\n\t\t * @return {object[]}\n\t\t */\n\t\tfilterOutExistingShares(shares) {\n\t\t\treturn shares.reduce((arr, share) => {\n\t\t\t\t// only check proper objects\n\t\t\t\tif (typeof share !== 'object') {\n\t\t\t\t\treturn arr\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tif (share.value.shareType === this.SHARE_TYPES.SHARE_TYPE_USER) {\n\t\t\t\t\t\t// filter out current user\n\t\t\t\t\t\tif (share.value.shareWith === getCurrentUser().uid) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// filter out the owner of the share\n\t\t\t\t\t\tif (this.reshare && share.value.shareWith === this.reshare.owner) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// filter out existing mail shares\n\t\t\t\t\tif (share.value.shareType === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\t\t\tconst emails = this.linkShares.map(elem => elem.shareWith)\n\t\t\t\t\t\tif (emails.indexOf(share.value.shareWith.trim()) !== -1) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t} else { // filter out existing shares\n\t\t\t\t\t\t// creating an object of uid => type\n\t\t\t\t\t\tconst sharesObj = this.shares.reduce((obj, elem) => {\n\t\t\t\t\t\t\tobj[elem.shareWith] = elem.type\n\t\t\t\t\t\t\treturn obj\n\t\t\t\t\t\t}, {})\n\n\t\t\t\t\t\t// if shareWith is the same and the share type too, ignore it\n\t\t\t\t\t\tconst key = share.value.shareWith.trim()\n\t\t\t\t\t\tif (key in sharesObj\n\t\t\t\t\t\t\t&& sharesObj[key] === share.value.shareType) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// ALL GOOD\n\t\t\t\t\t// let's add the suggestion\n\t\t\t\t\tarr.push(share)\n\t\t\t\t} catch {\n\t\t\t\t\treturn arr\n\t\t\t\t}\n\t\t\t\treturn arr\n\t\t\t}, [])\n\t\t},\n\n\t\t/**\n\t\t * Get the icon based on the share type\n\t\t *\n\t\t * @param {number} type the share type\n\t\t * @return {string} the icon class\n\t\t */\n\t\tshareTypeToIcon(type) {\n\t\t\tswitch (type) {\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_GUEST:\n\t\t\t\t// default is a user, other icons are here to differenciate\n\t\t\t\t// themselves from it, so let's not display the user icon\n\t\t\t\t// case this.SHARE_TYPES.SHARE_TYPE_REMOTE:\n\t\t\t\t// case this.SHARE_TYPES.SHARE_TYPE_USER:\n\t\t\t\treturn 'icon-user'\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_GROUP:\n\t\t\t\treturn 'icon-group'\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_EMAIL:\n\t\t\t\treturn 'icon-mail'\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_CIRCLE:\n\t\t\t\treturn 'icon-circle'\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_ROOM:\n\t\t\t\treturn 'icon-room'\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_DECK:\n\t\t\t\treturn 'icon-deck'\n\n\t\t\tdefault:\n\t\t\t\treturn ''\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Format shares for the multiselect options\n\t\t *\n\t\t * @param {object} result select entry item\n\t\t * @return {object}\n\t\t */\n\t\tformatForMultiselect(result) {\n\t\t\tlet subtitle\n\t\t\tif (result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_USER && this.config.shouldAlwaysShowUnique) {\n\t\t\t\tsubtitle = result.shareWithDisplayNameUnique ?? ''\n\t\t\t} else if ((result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_REMOTE\n\t\t\t\t\t|| result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP\n\t\t\t) && result.value.server) {\n\t\t\t\tsubtitle = t('files_sharing', 'on {server}', { server: result.value.server })\n\t\t\t} else if (result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\tsubtitle = result.value.shareWith\n\t\t\t} else {\n\t\t\t\tsubtitle = result.shareWithDescription ?? ''\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tid: `${result.value.shareType}-${result.value.shareWith}`,\n\t\t\t\tshareWith: result.value.shareWith,\n\t\t\t\tshareType: result.value.shareType,\n\t\t\t\tuser: result.uuid || result.value.shareWith,\n\t\t\t\tisNoUser: result.value.shareType !== this.SHARE_TYPES.SHARE_TYPE_USER,\n\t\t\t\tdisplayName: result.name || result.label,\n\t\t\t\tsubtitle,\n\t\t\t\tshareWithDisplayNameUnique: result.shareWithDisplayNameUnique || '',\n\t\t\t\ticon: this.shareTypeToIcon(result.value.shareType),\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Process the new share request\n\t\t *\n\t\t * @param {object} value the multiselect option\n\t\t */\n\t\tasync addShare(value) {\n\t\t\tif (value.lookup) {\n\t\t\t\tawait this.getSuggestions(this.query, true)\n\n\t\t\t\t// focus the input again\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tthis.$refs.multiselect.$el.querySelector('.multiselect__input').focus()\n\t\t\t\t})\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\t// handle externalResults from OCA.Sharing.ShareSearch\n\t\t\tif (value.handler) {\n\t\t\t\tconst share = await value.handler(this)\n\t\t\t\tthis.$emit('add:share', new Share(share))\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\tthis.loading = true\n\t\t\tconsole.debug('Adding a new share from the input for', value)\n\t\t\ttry {\n\t\t\t\tlet password = null\n\n\t\t\t\tif (this.config.enforcePasswordForPublicLink\n\t\t\t\t\t&& value.shareType === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\t\tpassword = await GeneratePassword()\n\t\t\t\t}\n\n\t\t\t\tconst path = (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')\n\t\t\t\tconst share = await this.createShare({\n\t\t\t\t\tpath,\n\t\t\t\t\tshareType: value.shareType,\n\t\t\t\t\tshareWith: value.shareWith,\n\t\t\t\t\tpassword,\n\t\t\t\t\tpermissions: this.fileInfo.sharePermissions & OC.getCapabilities().files_sharing.default_permissions,\n\t\t\t\t})\n\n\t\t\t\t// If we had a password, we need to show it to the user as it was generated\n\t\t\t\tif (password) {\n\t\t\t\t\tshare.newPassword = password\n\t\t\t\t\t// Wait for the newly added share\n\t\t\t\t\tconst component = await new Promise(resolve => {\n\t\t\t\t\t\tthis.$emit('add:share', share, resolve)\n\t\t\t\t\t})\n\n\t\t\t\t\t// open the menu on the\n\t\t\t\t\t// freshly created share component\n\t\t\t\t\tcomponent.open = true\n\t\t\t\t} else {\n\t\t\t\t\t// Else we just add it normally\n\t\t\t\t\tthis.$emit('add:share', share)\n\t\t\t\t}\n\n\t\t\t\t// reset the search string when done\n\t\t\t\t// FIXME: https://github.com/shentao/vue-multiselect/issues/633\n\t\t\t\tif (this.$refs.multiselect?.$refs?.VueMultiselect?.search) {\n\t\t\t\t\tthis.$refs.multiselect.$refs.VueMultiselect.search = ''\n\t\t\t\t}\n\n\t\t\t\tawait this.getRecommendations()\n\t\t\t} catch (error) {\n\t\t\t\t// focus back if any error\n\t\t\t\tconst input = this.$refs.multiselect.$el.querySelector('input')\n\t\t\t\tif (input) {\n\t\t\t\t\tinput.focus()\n\t\t\t\t}\n\t\t\t\tthis.query = value.shareWith\n\t\t\t\tconsole.error('Error while adding new share', error)\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n.sharing-input {\n\twidth: 100%;\n\tmargin: 10px 0;\n\n\t// properly style the lookup entry\n\t.multiselect__option {\n\t\tspan[lookup] {\n\t\t\t.avatardiv {\n\t\t\t\tbackground-image: var(--icon-search-fff);\n\t\t\t\tbackground-repeat: no-repeat;\n\t\t\t\tbackground-position: center;\n\t\t\t\tbackground-color: var(--color-text-maxcontrast) !important;\n\t\t\t\tdiv {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.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!./SharingInput.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!./SharingInput.vue?vue&type=style&index=0&lang=scss&\";\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!./SharingInput.vue?vue&type=style&index=0&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingInput.vue?vue&type=template&id=6c96bdca&\"\nimport script from \"./SharingInput.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingInput.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Multiselect',{ref:\"multiselect\",staticClass:\"sharing-input\",attrs:{\"clear-on-select\":true,\"disabled\":!_vm.canReshare,\"hide-selected\":true,\"internal-search\":false,\"loading\":_vm.loading,\"options\":_vm.options,\"placeholder\":_vm.inputPlaceholder,\"preselect-first\":true,\"preserve-search\":true,\"searchable\":true,\"user-select\":true,\"open-direction\":\"below\",\"label\":\"displayName\",\"track-by\":\"id\"},on:{\"search-change\":_vm.asyncFind,\"select\":_vm.addShare},scopedSlots:_vm._u([{key:\"noOptions\",fn:function(){return [_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'No recommendations. Start typing.'))+\"\\n\\t\")]},proxy:true},{key:\"noResult\",fn:function(){return [_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.noResultText)+\"\\n\\t\")]},proxy:true}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Gary Kim <gary@garykim.dev>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n// eslint-disable-next-line import/no-unresolved, node/no-missing-import\nimport PQueue from 'p-queue'\nimport debounce from 'debounce'\n\nimport Share from '../models/Share'\nimport SharesRequests from './ShareRequests'\nimport ShareTypes from './ShareTypes'\nimport Config from '../services/ConfigService'\nimport { getCurrentUser } from '@nextcloud/auth'\n\nexport default {\n\tmixins: [SharesRequests, ShareTypes],\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshare: {\n\t\t\ttype: Share,\n\t\t\tdefault: null,\n\t\t},\n\t\tisUnique: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\n\t\t\t// errors helpers\n\t\t\terrors: {},\n\n\t\t\t// component status toggles\n\t\t\tloading: false,\n\t\t\tsaving: false,\n\t\t\topen: false,\n\n\t\t\t// concurrency management queue\n\t\t\t// we want one queue per share\n\t\t\tupdateQueue: new PQueue({ concurrency: 1 }),\n\n\t\t\t/**\n\t\t\t * ! This allow vue to make the Share class state reactive\n\t\t\t * ! do not remove it ot you'll lose all reactivity here\n\t\t\t */\n\t\t\treactiveState: this.share?.state,\n\t\t}\n\t},\n\n\tcomputed: {\n\n\t\t/**\n\t\t * Does the current share have a note\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasNote: {\n\t\t\tget() {\n\t\t\t\treturn this.share.note !== ''\n\t\t\t},\n\t\t\tset(enabled) {\n\t\t\t\tthis.share.note = enabled\n\t\t\t\t\t? null // enabled but user did not changed the content yet\n\t\t\t\t\t: '' // empty = no note = disabled\n\t\t\t},\n\t\t},\n\n\t\tdateTomorrow() {\n\t\t\treturn moment().add(1, 'days')\n\t\t},\n\n\t\t// Datepicker language\n\t\tlang() {\n\t\t\tconst weekdaysShort = window.dayNamesShort\n\t\t\t\t? window.dayNamesShort // provided by nextcloud\n\t\t\t\t: ['Sun.', 'Mon.', 'Tue.', 'Wed.', 'Thu.', 'Fri.', 'Sat.']\n\t\t\tconst monthsShort = window.monthNamesShort\n\t\t\t\t? window.monthNamesShort // provided by nextcloud\n\t\t\t\t: ['Jan.', 'Feb.', 'Mar.', 'Apr.', 'May.', 'Jun.', 'Jul.', 'Aug.', 'Sep.', 'Oct.', 'Nov.', 'Dec.']\n\t\t\tconst firstDayOfWeek = window.firstDay ? window.firstDay : 0\n\n\t\t\treturn {\n\t\t\t\tformatLocale: {\n\t\t\t\t\tfirstDayOfWeek,\n\t\t\t\t\tmonthsShort,\n\t\t\t\t\tweekdaysMin: weekdaysShort,\n\t\t\t\t\tweekdaysShort,\n\t\t\t\t},\n\t\t\t\tmonthFormat: 'MMM',\n\t\t\t}\n\t\t},\n\n\t\tisShareOwner() {\n\t\t\treturn this.share && this.share.owner === getCurrentUser().uid\n\t\t},\n\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Check if a share is valid before\n\t\t * firing the request\n\t\t *\n\t\t * @param {Share} share the share to check\n\t\t * @return {boolean}\n\t\t */\n\t\tcheckShare(share) {\n\t\t\tif (share.password) {\n\t\t\t\tif (typeof share.password !== 'string' || share.password.trim() === '') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (share.expirationDate) {\n\t\t\t\tconst date = moment(share.expirationDate)\n\t\t\t\tif (!date.isValid()) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\n\t\t/**\n\t\t * ActionInput can be a little tricky to work with.\n\t\t * Since we expect a string and not a Date,\n\t\t * we need to process the value here\n\t\t *\n\t\t * @param {Date} date js date to be parsed by moment.js\n\t\t */\n\t\tonExpirationChange(date) {\n\t\t\t// format to YYYY-MM-DD\n\t\t\tconst value = moment(date).format('YYYY-MM-DD')\n\t\t\tthis.share.expireDate = value\n\t\t\tthis.queueUpdate('expireDate')\n\t\t},\n\n\t\t/**\n\t\t * Uncheck expire date\n\t\t * We need this method because @update:checked\n\t\t * is ran simultaneously as @uncheck, so\n\t\t * so we cannot ensure data is up-to-date\n\t\t */\n\t\tonExpirationDisable() {\n\t\t\tthis.share.expireDate = ''\n\t\t\tthis.queueUpdate('expireDate')\n\t\t},\n\n\t\t/**\n\t\t * Note changed, let's save it to a different key\n\t\t *\n\t\t * @param {string} note the share note\n\t\t */\n\t\tonNoteChange(note) {\n\t\t\tthis.$set(this.share, 'newNote', note.trim())\n\t\t},\n\n\t\t/**\n\t\t * When the note change, we trim, save and dispatch\n\t\t *\n\t\t */\n\t\tonNoteSubmit() {\n\t\t\tif (this.share.newNote) {\n\t\t\t\tthis.share.note = this.share.newNote\n\t\t\t\tthis.$delete(this.share, 'newNote')\n\t\t\t\tthis.queueUpdate('note')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Delete share button handler\n\t\t */\n\t\tasync onDelete() {\n\t\t\ttry {\n\t\t\t\tthis.loading = true\n\t\t\t\tthis.open = false\n\t\t\t\tawait this.deleteShare(this.share.id)\n\t\t\t\tconsole.debug('Share deleted', this.share.id)\n\t\t\t\tthis.$emit('remove:share', this.share)\n\t\t\t} catch (error) {\n\t\t\t\t// re-open menu if error\n\t\t\t\tthis.open = true\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Send an update of the share to the queue\n\t\t *\n\t\t * @param {Array<string>} propertyNames the properties to sync\n\t\t */\n\t\tqueueUpdate(...propertyNames) {\n\t\t\tif (propertyNames.length === 0) {\n\t\t\t\t// Nothing to update\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this.share.id) {\n\t\t\t\tconst properties = {}\n\t\t\t\t// force value to string because that is what our\n\t\t\t\t// share api controller accepts\n\t\t\t\tpropertyNames.map(p => (properties[p] = this.share[p].toString()))\n\n\t\t\t\tthis.updateQueue.add(async () => {\n\t\t\t\t\tthis.saving = true\n\t\t\t\t\tthis.errors = {}\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst updatedShare = await this.updateShare(this.share.id, properties)\n\n\t\t\t\t\t\tif (propertyNames.indexOf('password') >= 0) {\n\t\t\t\t\t\t\t// reset password state after sync\n\t\t\t\t\t\t\tthis.$delete(this.share, 'newPassword')\n\n\t\t\t\t\t\t\t// updates password expiration time after sync\n\t\t\t\t\t\t\tthis.share.passwordExpirationTime = updatedShare.password_expiration_time\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// clear any previous errors\n\t\t\t\t\t\tthis.$delete(this.errors, propertyNames[0])\n\n\t\t\t\t\t} catch ({ message }) {\n\t\t\t\t\t\tif (message && message !== '') {\n\t\t\t\t\t\t\tthis.onSyncError(propertyNames[0], message)\n\t\t\t\t\t\t}\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tthis.saving = false\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tconsole.error('Cannot update share.', this.share, 'No valid id')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Manage sync errors\n\t\t *\n\t\t * @param {string} property the errored property, e.g. 'password'\n\t\t * @param {string} message the error message\n\t\t */\n\t\tonSyncError(property, message) {\n\t\t\t// re-open menu if closed\n\t\t\tthis.open = true\n\t\t\tswitch (property) {\n\t\t\tcase 'password':\n\t\t\tcase 'pending':\n\t\t\tcase 'expireDate':\n\t\t\tcase 'label':\n\t\t\tcase 'note': {\n\t\t\t\t// show error\n\t\t\t\tthis.$set(this.errors, property, message)\n\n\t\t\t\tlet propertyEl = this.$refs[property]\n\t\t\t\tif (propertyEl) {\n\t\t\t\t\tif (propertyEl.$el) {\n\t\t\t\t\t\tpropertyEl = propertyEl.$el\n\t\t\t\t\t}\n\t\t\t\t\t// focus if there is a focusable action element\n\t\t\t\t\tconst focusable = propertyEl.querySelector('.focusable')\n\t\t\t\t\tif (focusable) {\n\t\t\t\t\t\tfocusable.focus()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'sendPasswordByTalk': {\n\t\t\t\t// show error\n\t\t\t\tthis.$set(this.errors, property, message)\n\n\t\t\t\t// Restore previous state\n\t\t\t\tthis.share.sendPasswordByTalk = !this.share.sendPasswordByTalk\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Debounce queueUpdate to avoid requests spamming\n\t\t * more importantly for text data\n\t\t *\n\t\t * @param {string} property the property to sync\n\t\t */\n\t\tdebounceQueueUpdate: debounce(function(property) {\n\t\t\tthis.queueUpdate(property)\n\t\t}, 500),\n\n\t\t/**\n\t\t * Returns which dates are disabled for the datepicker\n\t\t *\n\t\t * @param {Date} date date to check\n\t\t * @return {boolean}\n\t\t */\n\t\tdisabledDate(date) {\n\t\t\tconst dateMoment = moment(date)\n\t\t\treturn (this.dateTomorrow && dateMoment.isBefore(this.dateTomorrow, 'day'))\n\t\t\t\t|| (this.dateMaxEnforced && dateMoment.isSameOrAfter(this.dateMaxEnforced, 'day'))\n\t\t},\n\t},\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInherited.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!./SharingEntryInherited.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<SharingEntrySimple :key=\"share.id\"\n\t\tclass=\"sharing-entry__inherited\"\n\t\t:title=\"share.shareWithDisplayName\">\n\t\t<template #avatar>\n\t\t\t<Avatar :user=\"share.shareWith\"\n\t\t\t\t:display-name=\"share.shareWithDisplayName\"\n\t\t\t\tclass=\"sharing-entry__avatar\"\n\t\t\t\ttooltip-message=\"\" />\n\t\t</template>\n\t\t<ActionText icon=\"icon-user\">\n\t\t\t{{ t('files_sharing', 'Added by {initiator}', { initiator: share.ownerDisplayName }) }}\n\t\t</ActionText>\n\t\t<ActionLink v-if=\"share.viaPath && share.viaFileid\"\n\t\t\ticon=\"icon-folder\"\n\t\t\t:href=\"viaFileTargetUrl\">\n\t\t\t{{ t('files_sharing', 'Via “{folder}”', {folder: viaFolderName} ) }}\n\t\t</ActionLink>\n\t\t<ActionButton v-if=\"share.canDelete\"\n\t\t\ticon=\"icon-close\"\n\t\t\t@click.prevent=\"onDelete\">\n\t\t\t{{ t('files_sharing', 'Unshare') }}\n\t\t</actionbutton>\n\t</SharingEntrySimple>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { basename } from '@nextcloud/paths'\nimport Avatar from '@nextcloud/vue/dist/Components/Avatar'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport ActionLink from '@nextcloud/vue/dist/Components/ActionLink'\nimport ActionText from '@nextcloud/vue/dist/Components/ActionText'\n\n// eslint-disable-next-line no-unused-vars\nimport Share from '../models/Share'\nimport SharesMixin from '../mixins/SharesMixin'\nimport SharingEntrySimple from '../components/SharingEntrySimple'\n\nexport default {\n\tname: 'SharingEntryInherited',\n\n\tcomponents: {\n\t\tActionButton,\n\t\tActionLink,\n\t\tActionText,\n\t\tAvatar,\n\t\tSharingEntrySimple,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tprops: {\n\t\tshare: {\n\t\t\ttype: Share,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tviaFileTargetUrl() {\n\t\t\treturn generateUrl('/f/{fileid}', {\n\t\t\t\tfileid: this.share.viaFileid,\n\t\t\t})\n\t\t},\n\n\t\tviaFolderName() {\n\t\t\treturn basename(this.share.viaPath)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\n\t}\n}\n</style>\n","\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!./SharingEntryInherited.vue?vue&type=style&index=0&id=29845767&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!./SharingEntryInherited.vue?vue&type=style&index=0&id=29845767&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryInherited.vue?vue&type=template&id=29845767&scoped=true&\"\nimport script from \"./SharingEntryInherited.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntryInherited.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntryInherited.vue?vue&type=style&index=0&id=29845767&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 \"29845767\",\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('SharingEntrySimple',{key:_vm.share.id,staticClass:\"sharing-entry__inherited\",attrs:{\"title\":_vm.share.shareWithDisplayName},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('Avatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"user\":_vm.share.shareWith,\"display-name\":_vm.share.shareWithDisplayName,\"tooltip-message\":\"\"}})]},proxy:true}])},[_vm._v(\" \"),_c('ActionText',{attrs:{\"icon\":\"icon-user\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Added by {initiator}', { initiator: _vm.share.ownerDisplayName }))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.share.viaPath && _vm.share.viaFileid)?_c('ActionLink',{attrs:{\"icon\":\"icon-folder\",\"href\":_vm.viaFileTargetUrl}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Via “{folder}”', {folder: _vm.viaFolderName} ))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.share.canDelete)?_c('ActionButton',{attrs:{\"icon\":\"icon-close\"},on:{\"click\":function($event){$event.preventDefault();return _vm.onDelete.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Unshare'))+\"\\n\\t\")]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<ul id=\"sharing-inherited-shares\">\n\t\t<!-- Main collapsible entry -->\n\t\t<SharingEntrySimple class=\"sharing-entry__inherited\"\n\t\t\t:title=\"mainTitle\"\n\t\t\t:subtitle=\"subTitle\">\n\t\t\t<template #avatar>\n\t\t\t\t<div class=\"avatar-shared icon-more-white\" />\n\t\t\t</template>\n\t\t\t<ActionButton :icon=\"showInheritedSharesIcon\" @click.prevent.stop=\"toggleInheritedShares\">\n\t\t\t\t{{ toggleTooltip }}\n\t\t\t</ActionButton>\n\t\t</SharingEntrySimple>\n\n\t\t<!-- Inherited shares list -->\n\t\t<SharingEntryInherited v-for=\"share in shares\"\n\t\t\t:key=\"share.id\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t:share=\"share\" />\n\t</ul>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport axios from '@nextcloud/axios'\n\nimport Share from '../models/Share'\nimport SharingEntryInherited from '../components/SharingEntryInherited'\nimport SharingEntrySimple from '../components/SharingEntrySimple'\n\nexport default {\n\tname: 'SharingInherited',\n\n\tcomponents: {\n\t\tActionButton,\n\t\tSharingEntryInherited,\n\t\tSharingEntrySimple,\n\t},\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloaded: false,\n\t\t\tloading: false,\n\t\t\tshowInheritedShares: false,\n\t\t\tshares: [],\n\t\t}\n\t},\n\tcomputed: {\n\t\tshowInheritedSharesIcon() {\n\t\t\tif (this.loading) {\n\t\t\t\treturn 'icon-loading-small'\n\t\t\t}\n\t\t\tif (this.showInheritedShares) {\n\t\t\t\treturn 'icon-triangle-n'\n\t\t\t}\n\t\t\treturn 'icon-triangle-s'\n\t\t},\n\t\tmainTitle() {\n\t\t\treturn t('files_sharing', 'Others with access')\n\t\t},\n\t\tsubTitle() {\n\t\t\treturn (this.showInheritedShares && this.shares.length === 0)\n\t\t\t\t? t('files_sharing', 'No other users with access found')\n\t\t\t\t: ''\n\t\t},\n\t\ttoggleTooltip() {\n\t\t\treturn this.fileInfo.type === 'dir'\n\t\t\t\t? t('files_sharing', 'Toggle list of others with access to this directory')\n\t\t\t\t: t('files_sharing', 'Toggle list of others with access to this file')\n\t\t},\n\t\tfullPath() {\n\t\t\tconst path = `${this.fileInfo.path}/${this.fileInfo.name}`\n\t\t\treturn path.replace('//', '/')\n\t\t},\n\t},\n\twatch: {\n\t\tfileInfo() {\n\t\t\tthis.resetState()\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Toggle the list view and fetch/reset the state\n\t\t */\n\t\ttoggleInheritedShares() {\n\t\t\tthis.showInheritedShares = !this.showInheritedShares\n\t\t\tif (this.showInheritedShares) {\n\t\t\t\tthis.fetchInheritedShares()\n\t\t\t} else {\n\t\t\t\tthis.resetState()\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Fetch the Inherited Shares array\n\t\t */\n\t\tasync fetchInheritedShares() {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tconst url = generateOcsUrl('apps/files_sharing/api/v1/shares/inherited?format=json&path={path}', { path: this.fullPath })\n\t\t\t\tconst shares = await axios.get(url)\n\t\t\t\tthis.shares = shares.data.ocs.data\n\t\t\t\t\t.map(share => new Share(share))\n\t\t\t\t\t.sort((a, b) => b.createdTime - a.createdTime)\n\t\t\t\tconsole.info(this.shares)\n\t\t\t\tthis.loaded = true\n\t\t\t} catch (error) {\n\t\t\t\tOC.Notification.showTemporary(t('files_sharing', 'Unable to fetch inherited shares'), { type: 'error' })\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Reset current component state\n\t\t */\n\t\tresetState() {\n\t\t\tthis.loaded = false\n\t\t\tthis.loading = false\n\t\t\tthis.showInheritedShares = false\n\t\t\tthis.shares = []\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry__inherited {\n\t.avatar-shared {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.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!./SharingInherited.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!./SharingInherited.vue?vue&type=style&index=0&id=49ffd834&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!./SharingInherited.vue?vue&type=style&index=0&id=49ffd834&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingInherited.vue?vue&type=template&id=49ffd834&scoped=true&\"\nimport script from \"./SharingInherited.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingInherited.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingInherited.vue?vue&type=style&index=0&id=49ffd834&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 \"49ffd834\",\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('ul',{attrs:{\"id\":\"sharing-inherited-shares\"}},[_c('SharingEntrySimple',{staticClass:\"sharing-entry__inherited\",attrs:{\"title\":_vm.mainTitle,\"subtitle\":_vm.subTitle},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('div',{staticClass:\"avatar-shared icon-more-white\"})]},proxy:true}])},[_vm._v(\" \"),_c('ActionButton',{attrs:{\"icon\":_vm.showInheritedSharesIcon},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.toggleInheritedShares.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.toggleTooltip)+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_vm._l((_vm.shares),function(share){return _c('SharingEntryInherited',{key:share.id,attrs:{\"file-info\":_vm.fileInfo,\"share\":share}})})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExternalShareAction.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!./ExternalShareAction.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<Component :is=\"data.is\"\n\t\tv-bind=\"data\"\n\t\tv-on=\"action.handlers\">\n\t\t{{ data.text }}\n\t</Component>\n</template>\n\n<script>\nimport Share from '../models/Share'\n\nexport default {\n\tname: 'ExternalShareAction',\n\n\tprops: {\n\t\tid: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\taction: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({}),\n\t\t},\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshare: {\n\t\t\ttype: Share,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tdata() {\n\t\t\treturn this.action.data(this)\n\t\t},\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./ExternalShareAction.vue?vue&type=template&id=29f555e7&\"\nimport script from \"./ExternalShareAction.vue?vue&type=script&lang=js&\"\nexport * from \"./ExternalShareAction.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(_vm.data.is,_vm._g(_vm._b({tag:\"Component\"},'Component',_vm.data,false),_vm.action.handlers),[_vm._v(\"\\n\\t\"+_vm._s(_vm.data.text)+\"\\n\")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2022 Louis Chmn <louis@chmn.me>\n *\n * @author Louis Chmn <louis@chmn.me>\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 */\n\nexport const ATOMIC_PERMISSIONS = {\n\tNONE: 0,\n\tREAD: 1,\n\tUPDATE: 2,\n\tCREATE: 4,\n\tDELETE: 8,\n\tSHARE: 16,\n}\n\nexport const BUNDLED_PERMISSIONS = {\n\tREAD_ONLY: ATOMIC_PERMISSIONS.READ,\n\tUPLOAD_AND_UPDATE: ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.DELETE,\n\tFILE_DROP: ATOMIC_PERMISSIONS.CREATE,\n\tALL: ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.DELETE | ATOMIC_PERMISSIONS.SHARE,\n}\n\n/**\n * Return whether a given permissions set contains some permissions.\n *\n * @param {number} initialPermissionSet - the permissions set.\n * @param {number} permissionsToCheck - the permissions to check.\n * @return {boolean}\n */\nexport function hasPermissions(initialPermissionSet, permissionsToCheck) {\n\treturn initialPermissionSet !== ATOMIC_PERMISSIONS.NONE && (initialPermissionSet & permissionsToCheck) === permissionsToCheck\n}\n\n/**\n * Return whether a given permissions set is valid.\n *\n * @param {number} permissionsSet - the permissions set.\n *\n * @return {boolean}\n */\nexport function permissionsSetIsValid(permissionsSet) {\n\t// Must have at least READ or CREATE permission.\n\tif (!hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.READ) && !hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.CREATE)) {\n\t\treturn false\n\t}\n\n\t// Must have READ permission if have UPDATE or DELETE.\n\tif (!hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.READ) && (\n\t\thasPermissions(permissionsSet, ATOMIC_PERMISSIONS.UPDATE) || hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.DELETE)\n\t)) {\n\t\treturn false\n\t}\n\n\treturn true\n}\n\n/**\n * Add some permissions to an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the initial permissions.\n * @param {number} permissionsToAdd - the permissions to add.\n *\n * @return {number}\n */\nexport function addPermissions(initialPermissionSet, permissionsToAdd) {\n\treturn initialPermissionSet | permissionsToAdd\n}\n\n/**\n * Remove some permissions from an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the initial permissions.\n * @param {number} permissionsToSubtract - the permissions to remove.\n *\n * @return {number}\n */\nexport function subtractPermissions(initialPermissionSet, permissionsToSubtract) {\n\treturn initialPermissionSet & ~permissionsToSubtract\n}\n\n/**\n * Toggle some permissions from an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the permissions set.\n * @param {number} permissionsToToggle - the permissions to toggle.\n *\n * @return {number}\n */\nexport function togglePermissions(initialPermissionSet, permissionsToToggle) {\n\tif (hasPermissions(initialPermissionSet, permissionsToToggle)) {\n\t\treturn subtractPermissions(initialPermissionSet, permissionsToToggle)\n\t} else {\n\t\treturn addPermissions(initialPermissionSet, permissionsToToggle)\n\t}\n}\n\n/**\n * Return whether some given permissions can be toggled from a permission set.\n *\n * @param {number} permissionSet - the initial permissions set.\n * @param {number} permissionsToToggle - the permissions to toggle.\n *\n * @return {boolean}\n */\nexport function canTogglePermissions(permissionSet, permissionsToToggle) {\n\treturn permissionsSetIsValid(togglePermissions(permissionSet, permissionsToToggle))\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharePermissionsEditor.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!./SharePermissionsEditor.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2022 Louis Chmn <louis@chmn.me>\n -\n - @author Louis Chmn <louis@chmn.me>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<span>\n\t\t<!-- file -->\n\t\t<ActionCheckbox v-if=\"!isFolder\"\n\t\t\t:checked=\"shareHasPermissions(atomicPermissions.UPDATE)\"\n\t\t\t:disabled=\"saving\"\n\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.UPDATE)\">\n\t\t\t{{ t('files_sharing', 'Allow editing') }}\n\t\t</ActionCheckbox>\n\n\t\t<!-- folder -->\n\t\t<template v-if=\"isFolder && fileHasCreatePermission && config.isPublicUploadEnabled\">\n\t\t\t<template v-if=\"!showCustomPermissionsForm\">\n\t\t\t\t<ActionRadio :checked=\"sharePermissionEqual(bundledPermissions.READ_ONLY)\"\n\t\t\t\t\t:value=\"bundledPermissions.READ_ONLY\"\n\t\t\t\t\t:name=\"randomFormName\"\n\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t@change=\"setSharePermissions(bundledPermissions.READ_ONLY)\">\n\t\t\t\t\t{{ t('files_sharing', 'Read only') }}\n\t\t\t\t</ActionRadio>\n\n\t\t\t\t<ActionRadio :checked=\"sharePermissionEqual(bundledPermissions.UPLOAD_AND_UPDATE)\"\n\t\t\t\t\t:value=\"bundledPermissions.UPLOAD_AND_UPDATE\"\n\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t:name=\"randomFormName\"\n\t\t\t\t\t@change=\"setSharePermissions(bundledPermissions.UPLOAD_AND_UPDATE)\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow upload and editing') }}\n\t\t\t\t</ActionRadio>\n\t\t\t\t<ActionRadio :checked=\"sharePermissionEqual(bundledPermissions.FILE_DROP)\"\n\t\t\t\t\t:value=\"bundledPermissions.FILE_DROP\"\n\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t:name=\"randomFormName\"\n\t\t\t\t\tclass=\"sharing-entry__action--public-upload\"\n\t\t\t\t\t@change=\"setSharePermissions(bundledPermissions.FILE_DROP)\">\n\t\t\t\t\t{{ t('files_sharing', 'File drop (upload only)') }}\n\t\t\t\t</ActionRadio>\n\n\t\t\t\t<!-- custom permissions button -->\n\t\t\t\t<ActionButton :title=\"t('files_sharing', 'Custom permissions')\"\n\t\t\t\t\t@click=\"showCustomPermissionsForm = true\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<Tune />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ sharePermissionsIsBundle ? \"\" : sharePermissionsSummary }}\n\t\t\t\t</ActionButton>\n\t\t\t</template>\n\n\t\t\t<!-- custom permissions -->\n\t\t\t<span v-else :class=\"{error: !sharePermissionsSetIsValid}\">\n\t\t\t\t<ActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.READ)\"\n\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.READ)\"\n\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.READ)\">\n\t\t\t\t\t{{ t('files_sharing', 'Read') }}\n\t\t\t\t</ActionCheckbox>\n\t\t\t\t<ActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.CREATE)\"\n\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.CREATE)\"\n\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.CREATE)\">\n\t\t\t\t\t{{ t('files_sharing', 'Upload') }}\n\t\t\t\t</ActionCheckbox>\n\t\t\t\t<ActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.UPDATE)\"\n\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.UPDATE)\"\n\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.UPDATE)\">\n\t\t\t\t\t{{ t('files_sharing', 'Edit') }}\n\t\t\t\t</ActionCheckbox>\n\t\t\t\t<ActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.DELETE)\"\n\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.DELETE)\"\n\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.DELETE)\">\n\t\t\t\t\t{{ t('files_sharing', 'Delete') }}\n\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t<ActionButton @click=\"showCustomPermissionsForm = false\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<ChevronLeft />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('files_sharing', 'Bundled permissions') }}\n\t\t\t\t</ActionButton>\n\t\t\t</span>\n\t\t</template>\n\t</span>\n</template>\n\n<script>\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport ActionRadio from '@nextcloud/vue/dist/Components/ActionRadio'\nimport ActionCheckbox from '@nextcloud/vue/dist/Components/ActionCheckbox'\n\nimport SharesMixin from '../mixins/SharesMixin'\nimport {\n\tATOMIC_PERMISSIONS,\n\tBUNDLED_PERMISSIONS,\n\thasPermissions,\n\tpermissionsSetIsValid,\n\ttogglePermissions,\n\tcanTogglePermissions,\n} from '../lib/SharePermissionsToolBox'\n\nimport Tune from 'vue-material-design-icons/Tune'\nimport ChevronLeft from 'vue-material-design-icons/ChevronLeft'\n\nexport default {\n\tname: 'SharePermissionsEditor',\n\n\tcomponents: {\n\t\tActionButton,\n\t\tActionCheckbox,\n\t\tActionRadio,\n\t\tTune,\n\t\tChevronLeft,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tdata() {\n\t\treturn {\n\t\t\trandomFormName: Math.random().toString(27).substring(2),\n\n\t\t\tshowCustomPermissionsForm: false,\n\n\t\t\tatomicPermissions: ATOMIC_PERMISSIONS,\n\t\t\tbundledPermissions: BUNDLED_PERMISSIONS,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Return the summary of custom checked permissions.\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tsharePermissionsSummary() {\n\t\t\treturn Object.values(this.atomicPermissions)\n\t\t\t\t.filter(permission => this.shareHasPermissions(permission))\n\t\t\t\t.map(permission => {\n\t\t\t\t\tswitch (permission) {\n\t\t\t\t\tcase this.atomicPermissions.CREATE:\n\t\t\t\t\t\treturn this.t('files_sharing', 'Upload')\n\t\t\t\t\tcase this.atomicPermissions.READ:\n\t\t\t\t\t\treturn this.t('files_sharing', 'Read')\n\t\t\t\t\tcase this.atomicPermissions.UPDATE:\n\t\t\t\t\t\treturn this.t('files_sharing', 'Edit')\n\t\t\t\t\tcase this.atomicPermissions.DELETE:\n\t\t\t\t\t\treturn this.t('files_sharing', 'Delete')\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn null\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.filter(permissionLabel => permissionLabel !== null)\n\t\t\t\t.join(', ')\n\t\t},\n\n\t\t/**\n\t\t * Return whether the share's permission is a bundle.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tsharePermissionsIsBundle() {\n\t\t\treturn Object.values(BUNDLED_PERMISSIONS)\n\t\t\t\t.map(bundle => this.sharePermissionEqual(bundle))\n\t\t\t\t.filter(isBundle => isBundle)\n\t\t\t\t.length > 0\n\t\t},\n\n\t\t/**\n\t\t * Return whether the share's permission is valid.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tsharePermissionsSetIsValid() {\n\t\t\treturn permissionsSetIsValid(this.share.permissions)\n\t\t},\n\n\t\t/**\n\t\t * Is the current share a folder ?\n\t\t * TODO: move to a proper FileInfo model?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisFolder() {\n\t\t\treturn this.fileInfo.type === 'dir'\n\t\t},\n\n\t\t/**\n\t\t * Does the current file/folder have create permissions.\n\t\t * TODO: move to a proper FileInfo model?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tfileHasCreatePermission() {\n\t\t\treturn !!(this.fileInfo.permissions & ATOMIC_PERMISSIONS.CREATE)\n\t\t},\n\t},\n\n\tmounted() {\n\t\t// Show the Custom Permissions view on open if the permissions set is not a bundle.\n\t\tthis.showCustomPermissionsForm = !this.sharePermissionsIsBundle\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Return whether the share has the exact given permissions.\n\t\t *\n\t\t * @param {number} permissions - the permissions to check.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tsharePermissionEqual(permissions) {\n\t\t\t// We use the share's permission without PERMISSION_SHARE as it is not relevant here.\n\t\t\treturn (this.share.permissions & ~ATOMIC_PERMISSIONS.SHARE) === permissions\n\t\t},\n\n\t\t/**\n\t\t * Return whether the share has the given permissions.\n\t\t *\n\t\t * @param {number} permissions - the permissions to check.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tshareHasPermissions(permissions) {\n\t\t\treturn hasPermissions(this.share.permissions, permissions)\n\t\t},\n\n\t\t/**\n\t\t * Set the share permissions to the given permissions.\n\t\t *\n\t\t * @param {number} permissions - the permissions to set.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\tsetSharePermissions(permissions) {\n\t\t\tthis.share.permissions = permissions\n\t\t\tthis.queueUpdate('permissions')\n\t\t},\n\n\t\t/**\n\t\t * Return whether some given permissions can be toggled.\n\t\t *\n\t\t * @param {number} permissionsToToggle - the permissions to toggle.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanToggleSharePermissions(permissionsToToggle) {\n\t\t\treturn canTogglePermissions(this.share.permissions, permissionsToToggle)\n\t\t},\n\n\t\t/**\n\t\t * Toggle a given permission.\n\t\t *\n\t\t * @param {number} permissions - the permissions to toggle.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\ttoggleSharePermissions(permissions) {\n\t\t\tthis.share.permissions = togglePermissions(this.share.permissions, permissions)\n\n\t\t\tif (!permissionsSetIsValid(this.share.permissions)) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.queueUpdate('permissions')\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n.error {\n\t::v-deep .action-checkbox__label:before {\n\t\tborder: 1px solid var(--color-error);\n\t}\n}\n</style>\n","\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!./SharePermissionsEditor.vue?vue&type=style&index=0&id=3d9cb67e&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!./SharePermissionsEditor.vue?vue&type=style&index=0&id=3d9cb67e&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharePermissionsEditor.vue?vue&type=template&id=3d9cb67e&scoped=true&\"\nimport script from \"./SharePermissionsEditor.vue?vue&type=script&lang=js&\"\nexport * from \"./SharePermissionsEditor.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharePermissionsEditor.vue?vue&type=style&index=0&id=3d9cb67e&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 \"3d9cb67e\",\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('span',[(!_vm.isFolder)?_c('ActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.UPDATE),\"disabled\":_vm.saving},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.UPDATE)}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow editing'))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isFolder && _vm.fileHasCreatePermission && _vm.config.isPublicUploadEnabled)?[(!_vm.showCustomPermissionsForm)?[_c('ActionRadio',{attrs:{\"checked\":_vm.sharePermissionEqual(_vm.bundledPermissions.READ_ONLY),\"value\":_vm.bundledPermissions.READ_ONLY,\"name\":_vm.randomFormName,\"disabled\":_vm.saving},on:{\"change\":function($event){return _vm.setSharePermissions(_vm.bundledPermissions.READ_ONLY)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Read only'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionRadio',{attrs:{\"checked\":_vm.sharePermissionEqual(_vm.bundledPermissions.UPLOAD_AND_UPDATE),\"value\":_vm.bundledPermissions.UPLOAD_AND_UPDATE,\"disabled\":_vm.saving,\"name\":_vm.randomFormName},on:{\"change\":function($event){return _vm.setSharePermissions(_vm.bundledPermissions.UPLOAD_AND_UPDATE)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow upload and editing'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionRadio',{staticClass:\"sharing-entry__action--public-upload\",attrs:{\"checked\":_vm.sharePermissionEqual(_vm.bundledPermissions.FILE_DROP),\"value\":_vm.bundledPermissions.FILE_DROP,\"disabled\":_vm.saving,\"name\":_vm.randomFormName},on:{\"change\":function($event){return _vm.setSharePermissions(_vm.bundledPermissions.FILE_DROP)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'File drop (upload only)'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionButton',{attrs:{\"title\":_vm.t('files_sharing', 'Custom permissions')},on:{\"click\":function($event){_vm.showCustomPermissionsForm = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Tune')]},proxy:true}],null,false,961531849)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.sharePermissionsIsBundle ? \"\" : _vm.sharePermissionsSummary)+\"\\n\\t\\t\\t\")])]:_c('span',{class:{error: !_vm.sharePermissionsSetIsValid}},[_c('ActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.READ),\"disabled\":_vm.saving || !_vm.canToggleSharePermissions(_vm.atomicPermissions.READ)},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.READ)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Read'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.CREATE),\"disabled\":_vm.saving || !_vm.canToggleSharePermissions(_vm.atomicPermissions.CREATE)},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.CREATE)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Upload'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.UPDATE),\"disabled\":_vm.saving || !_vm.canToggleSharePermissions(_vm.atomicPermissions.UPDATE)},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.UPDATE)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Edit'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.DELETE),\"disabled\":_vm.saving || !_vm.canToggleSharePermissions(_vm.atomicPermissions.DELETE)},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.DELETE)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Delete'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionButton',{on:{\"click\":function($event){_vm.showCustomPermissionsForm = false}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ChevronLeft')]},proxy:true}],null,false,1018742195)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Bundled permissions'))+\"\\n\\t\\t\\t\")])],1)]:_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<li :class=\"{'sharing-entry--share': share}\" class=\"sharing-entry sharing-entry__link\">\n\t\t<Avatar :is-no-user=\"true\"\n\t\t\t:icon-class=\"isEmailShareType ? 'avatar-link-share icon-mail-white' : 'avatar-link-share icon-public-white'\"\n\t\t\tclass=\"sharing-entry__avatar\" />\n\t\t<div class=\"sharing-entry__desc\">\n\t\t\t<h5 :title=\"title\">\n\t\t\t\t{{ title }}\n\t\t\t</h5>\n\t\t\t<p v-if=\"subtitle\">\n\t\t\t\t{{ subtitle }}\n\t\t\t</p>\n\t\t</div>\n\n\t\t<!-- clipboard -->\n\t\t<Actions v-if=\"share && !isEmailShareType && share.token\"\n\t\t\tref=\"copyButton\"\n\t\t\tclass=\"sharing-entry__copy\">\n\t\t\t<ActionLink :href=\"shareLink\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\t:icon=\"copied && copySuccess ? 'icon-checkmark-color' : 'icon-clippy'\"\n\t\t\t\t@click.stop.prevent=\"copyLink\">\n\t\t\t\t{{ clipboardTooltip }}\n\t\t\t</ActionLink>\n\t\t</Actions>\n\n\t\t<!-- pending actions -->\n\t\t<Actions v-if=\"!pending && (pendingPassword || pendingExpirationDate)\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\tmenu-align=\"right\"\n\t\t\t:open.sync=\"open\"\n\t\t\t@close=\"onNewLinkShare\">\n\t\t\t<!-- pending data menu -->\n\t\t\t<ActionText v-if=\"errors.pending\"\n\t\t\t\ticon=\"icon-error\"\n\t\t\t\t:class=\"{ error: errors.pending}\">\n\t\t\t\t{{ errors.pending }}\n\t\t\t</ActionText>\n\t\t\t<ActionText v-else icon=\"icon-info\">\n\t\t\t\t{{ t('files_sharing', 'Please enter the following required information before creating the share') }}\n\t\t\t</ActionText>\n\n\t\t\t<!-- password -->\n\t\t\t<ActionText v-if=\"pendingPassword\" icon=\"icon-password\">\n\t\t\t\t{{ t('files_sharing', 'Password protection (enforced)') }}\n\t\t\t</ActionText>\n\t\t\t<ActionCheckbox v-else-if=\"config.enableLinkPasswordByDefault\"\n\t\t\t\t:checked.sync=\"isPasswordProtected\"\n\t\t\t\t:disabled=\"config.enforcePasswordForPublicLink || saving\"\n\t\t\t\tclass=\"share-link-password-checkbox\"\n\t\t\t\t@uncheck=\"onPasswordDisable\">\n\t\t\t\t{{ t('files_sharing', 'Password protection') }}\n\t\t\t</ActionCheckbox>\n\t\t\t<ActionInput v-if=\"pendingPassword || share.password\"\n\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\tcontent: errors.password,\n\t\t\t\t\tshow: errors.password,\n\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t}\"\n\t\t\t\tclass=\"share-link-password\"\n\t\t\t\t:value.sync=\"share.password\"\n\t\t\t\t:disabled=\"saving\"\n\t\t\t\t:required=\"config.enableLinkPasswordByDefault || config.enforcePasswordForPublicLink\"\n\t\t\t\t:minlength=\"isPasswordPolicyEnabled && config.passwordPolicy.minLength\"\n\t\t\t\ticon=\"\"\n\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t@submit=\"onNewLinkShare\">\n\t\t\t\t{{ t('files_sharing', 'Enter a password') }}\n\t\t\t</ActionInput>\n\n\t\t\t<!-- expiration date -->\n\t\t\t<ActionText v-if=\"pendingExpirationDate\" icon=\"icon-calendar-dark\">\n\t\t\t\t{{ t('files_sharing', 'Expiration date (enforced)') }}\n\t\t\t</ActionText>\n\t\t\t<ActionInput v-if=\"pendingExpirationDate\"\n\t\t\t\tv-model=\"share.expireDate\"\n\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\tcontent: errors.expireDate,\n\t\t\t\t\tshow: errors.expireDate,\n\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t}\"\n\t\t\t\tclass=\"share-link-expire-date\"\n\t\t\t\t:disabled=\"saving\"\n\n\t\t\t\t:lang=\"lang\"\n\t\t\t\ticon=\"\"\n\t\t\t\ttype=\"date\"\n\t\t\t\tvalue-type=\"format\"\n\t\t\t\t:disabled-date=\"disabledDate\">\n\t\t\t\t<!-- let's not submit when picked, the user\n\t\t\t\t\tmight want to still edit or copy the password -->\n\t\t\t\t{{ t('files_sharing', 'Enter a date') }}\n\t\t\t</ActionInput>\n\n\t\t\t<ActionButton icon=\"icon-checkmark\" @click.prevent.stop=\"onNewLinkShare\">\n\t\t\t\t{{ t('files_sharing', 'Create share') }}\n\t\t\t</ActionButton>\n\t\t\t<ActionButton icon=\"icon-close\" @click.prevent.stop=\"onCancel\">\n\t\t\t\t{{ t('files_sharing', 'Cancel') }}\n\t\t\t</ActionButton>\n\t\t</Actions>\n\n\t\t<!-- actions -->\n\t\t<Actions v-else-if=\"!loading\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\tmenu-align=\"right\"\n\t\t\t:open.sync=\"open\"\n\t\t\t@close=\"onMenuClose\">\n\t\t\t<template v-if=\"share\">\n\t\t\t\t<template v-if=\"share.canEdit && canReshare\">\n\t\t\t\t\t<!-- Custom Label -->\n\t\t\t\t\t<ActionInput ref=\"label\"\n\t\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\t\tcontent: errors.label,\n\t\t\t\t\t\t\tshow: errors.label,\n\t\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t\tdefaultContainer: '.app-sidebar'\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\t:class=\"{ error: errors.label }\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:aria-label=\"t('files_sharing', 'Share label')\"\n\t\t\t\t\t\t:value=\"share.newLabel !== undefined ? share.newLabel : share.label\"\n\t\t\t\t\t\ticon=\"icon-edit\"\n\t\t\t\t\t\tmaxlength=\"255\"\n\t\t\t\t\t\t@update:value=\"onLabelChange\"\n\t\t\t\t\t\t@submit=\"onLabelSubmit\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Share label') }}\n\t\t\t\t\t</ActionInput>\n\n\t\t\t\t\t<SharePermissionsEditor :can-reshare=\"canReshare\"\n\t\t\t\t\t\t:share.sync=\"share\"\n\t\t\t\t\t\t:file-info=\"fileInfo\" />\n\n\t\t\t\t\t<ActionSeparator />\n\n\t\t\t\t\t<ActionCheckbox :checked.sync=\"share.hideDownload\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t@change=\"queueUpdate('hideDownload')\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Hide download') }}\n\t\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t\t<!-- password -->\n\t\t\t\t\t<ActionCheckbox :checked.sync=\"isPasswordProtected\"\n\t\t\t\t\t\t:disabled=\"config.enforcePasswordForPublicLink || saving\"\n\t\t\t\t\t\tclass=\"share-link-password-checkbox\"\n\t\t\t\t\t\t@uncheck=\"onPasswordDisable\">\n\t\t\t\t\t\t{{ config.enforcePasswordForPublicLink\n\t\t\t\t\t\t\t? t('files_sharing', 'Password protection (enforced)')\n\t\t\t\t\t\t\t: t('files_sharing', 'Password protect') }}\n\t\t\t\t\t</ActionCheckbox>\n\t\t\t\t\t<ActionInput v-if=\"isPasswordProtected\"\n\t\t\t\t\t\tref=\"password\"\n\t\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\t\tcontent: errors.password,\n\t\t\t\t\t\t\tshow: errors.password,\n\t\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\tclass=\"share-link-password\"\n\t\t\t\t\t\t:class=\"{ error: errors.password}\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:required=\"config.enforcePasswordForPublicLink\"\n\t\t\t\t\t\t:value=\"hasUnsavedPassword ? share.newPassword : '***************'\"\n\t\t\t\t\t\ticon=\"icon-password\"\n\t\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\t\t:type=\"hasUnsavedPassword ? 'text': 'password'\"\n\t\t\t\t\t\t@update:value=\"onPasswordChange\"\n\t\t\t\t\t\t@submit=\"onPasswordSubmit\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Enter a password') }}\n\t\t\t\t\t</ActionInput>\n\t\t\t\t\t<ActionText v-if=\"isEmailShareType && passwordExpirationTime\" icon=\"icon-info\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Password expires {passwordExpirationTime}', {passwordExpirationTime}) }}\n\t\t\t\t\t</ActionText>\n\t\t\t\t\t<ActionText v-else-if=\"isEmailShareType && passwordExpirationTime !== null\" icon=\"icon-error\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Password expired') }}\n\t\t\t\t\t</ActionText>\n\n\t\t\t\t\t<!-- password protected by Talk -->\n\t\t\t\t\t<ActionCheckbox v-if=\"isPasswordProtectedByTalkAvailable\"\n\t\t\t\t\t\t:checked.sync=\"isPasswordProtectedByTalk\"\n\t\t\t\t\t\t:disabled=\"!canTogglePasswordProtectedByTalkAvailable || saving\"\n\t\t\t\t\t\tclass=\"share-link-password-talk-checkbox\"\n\t\t\t\t\t\t@change=\"onPasswordProtectedByTalkChange\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Video verification') }}\n\t\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t\t<!-- expiration date -->\n\t\t\t\t\t<ActionCheckbox :checked.sync=\"hasExpirationDate\"\n\t\t\t\t\t\t:disabled=\"config.isDefaultExpireDateEnforced || saving\"\n\t\t\t\t\t\tclass=\"share-link-expire-date-checkbox\"\n\t\t\t\t\t\t@uncheck=\"onExpirationDisable\">\n\t\t\t\t\t\t{{ config.isDefaultExpireDateEnforced\n\t\t\t\t\t\t\t? t('files_sharing', 'Expiration date (enforced)')\n\t\t\t\t\t\t\t: t('files_sharing', 'Set expiration date') }}\n\t\t\t\t\t</ActionCheckbox>\n\t\t\t\t\t<ActionInput v-if=\"hasExpirationDate\"\n\t\t\t\t\t\tref=\"expireDate\"\n\t\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\t\tcontent: errors.expireDate,\n\t\t\t\t\t\t\tshow: errors.expireDate,\n\t\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\tclass=\"share-link-expire-date\"\n\t\t\t\t\t\t:class=\"{ error: errors.expireDate}\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:lang=\"lang\"\n\t\t\t\t\t\t:value=\"share.expireDate\"\n\t\t\t\t\t\tvalue-type=\"format\"\n\t\t\t\t\t\ticon=\"icon-calendar-dark\"\n\t\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t\t:disabled-date=\"disabledDate\"\n\t\t\t\t\t\t@update:value=\"onExpirationChange\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Enter a date') }}\n\t\t\t\t\t</ActionInput>\n\n\t\t\t\t\t<!-- note -->\n\t\t\t\t\t<ActionCheckbox :checked.sync=\"hasNote\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t@uncheck=\"queueUpdate('note')\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Note to recipient') }}\n\t\t\t\t\t</ActionCheckbox>\n\t\t\t\t\t<ActionTextEditable v-if=\"hasNote\"\n\t\t\t\t\t\tref=\"note\"\n\t\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\t\tcontent: errors.note,\n\t\t\t\t\t\t\tshow: errors.note,\n\t\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\t:class=\"{ error: errors.note}\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:placeholder=\"t('files_sharing', 'Enter a note for the share recipient')\"\n\t\t\t\t\t\t:value=\"share.newNote || share.note\"\n\t\t\t\t\t\ticon=\"icon-edit\"\n\t\t\t\t\t\t@update:value=\"onNoteChange\"\n\t\t\t\t\t\t@submit=\"onNoteSubmit\" />\n\t\t\t\t</template>\n\n\t\t\t\t<ActionSeparator />\n\n\t\t\t\t<!-- external actions -->\n\t\t\t\t<ExternalShareAction v-for=\"action in externalLinkActions\"\n\t\t\t\t\t:id=\"action.id\"\n\t\t\t\t\t:key=\"action.id\"\n\t\t\t\t\t:action=\"action\"\n\t\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t\t:share=\"share\" />\n\n\t\t\t\t<!-- external legacy sharing via url (social...) -->\n\t\t\t\t<ActionLink v-for=\"({icon, url, name}, index) in externalLegacyLinkActions\"\n\t\t\t\t\t:key=\"index\"\n\t\t\t\t\t:href=\"url(shareLink)\"\n\t\t\t\t\t:icon=\"icon\"\n\t\t\t\t\ttarget=\"_blank\">\n\t\t\t\t\t{{ name }}\n\t\t\t\t</ActionLink>\n\n\t\t\t\t<ActionButton v-if=\"share.canDelete\"\n\t\t\t\t\ticon=\"icon-close\"\n\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t@click.prevent=\"onDelete\">\n\t\t\t\t\t{{ t('files_sharing', 'Unshare') }}\n\t\t\t\t</ActionButton>\n\t\t\t\t<ActionButton v-if=\"!isEmailShareType && canReshare\"\n\t\t\t\t\tclass=\"new-share-link\"\n\t\t\t\t\ticon=\"icon-add\"\n\t\t\t\t\t@click.prevent.stop=\"onNewLinkShare\">\n\t\t\t\t\t{{ t('files_sharing', 'Add another link') }}\n\t\t\t\t</ActionButton>\n\t\t\t</template>\n\n\t\t\t<!-- Create new share -->\n\t\t\t<ActionButton v-else-if=\"canReshare\"\n\t\t\t\tclass=\"new-share-link\"\n\t\t\t\t:icon=\"loading ? 'icon-loading-small' : 'icon-add'\"\n\t\t\t\t@click.prevent.stop=\"onNewLinkShare\">\n\t\t\t\t{{ t('files_sharing', 'Create a new share link') }}\n\t\t\t</ActionButton>\n\t\t</Actions>\n\n\t\t<!-- loading indicator to replace the menu -->\n\t\t<div v-else class=\"icon-loading-small sharing-entry__loading\" />\n\t</li>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { Type as ShareTypes } from '@nextcloud/sharing'\nimport Vue from 'vue'\n\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport ActionCheckbox from '@nextcloud/vue/dist/Components/ActionCheckbox'\nimport ActionInput from '@nextcloud/vue/dist/Components/ActionInput'\nimport ActionLink from '@nextcloud/vue/dist/Components/ActionLink'\nimport ActionText from '@nextcloud/vue/dist/Components/ActionText'\nimport ActionSeparator from '@nextcloud/vue/dist/Components/ActionSeparator'\nimport ActionTextEditable from '@nextcloud/vue/dist/Components/ActionTextEditable'\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport Avatar from '@nextcloud/vue/dist/Components/Avatar'\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'\n\nimport ExternalShareAction from './ExternalShareAction'\nimport SharePermissionsEditor from './SharePermissionsEditor'\nimport GeneratePassword from '../utils/GeneratePassword'\nimport Share from '../models/Share'\nimport SharesMixin from '../mixins/SharesMixin'\n\nexport default {\n\tname: 'SharingEntryLink',\n\n\tcomponents: {\n\t\tActions,\n\t\tActionButton,\n\t\tActionCheckbox,\n\t\tActionInput,\n\t\tActionLink,\n\t\tActionText,\n\t\tActionTextEditable,\n\t\tActionSeparator,\n\t\tAvatar,\n\t\tExternalShareAction,\n\t\tSharePermissionsEditor,\n\t},\n\n\tdirectives: {\n\t\tTooltip,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tprops: {\n\t\tcanReshare: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tcopySuccess: true,\n\t\t\tcopied: false,\n\n\t\t\t// Are we waiting for password/expiration date\n\t\t\tpending: false,\n\n\t\t\tExternalLegacyLinkActions: OCA.Sharing.ExternalLinkActions.state,\n\t\t\tExternalShareActions: OCA.Sharing.ExternalShareActions.state,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Link share label\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\ttitle() {\n\t\t\t// if we have a valid existing share (not pending)\n\t\t\tif (this.share && this.share.id) {\n\t\t\t\tif (!this.isShareOwner && this.share.ownerDisplayName) {\n\t\t\t\t\tif (this.isEmailShareType) {\n\t\t\t\t\t\treturn t('files_sharing', '{shareWith} by {initiator}', {\n\t\t\t\t\t\t\tshareWith: this.share.shareWith,\n\t\t\t\t\t\t\tinitiator: this.share.ownerDisplayName,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\treturn t('files_sharing', 'Shared via link by {initiator}', {\n\t\t\t\t\t\tinitiator: this.share.ownerDisplayName,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (this.share.label && this.share.label.trim() !== '') {\n\t\t\t\t\tif (this.isEmailShareType) {\n\t\t\t\t\t\treturn t('files_sharing', 'Mail share ({label})', {\n\t\t\t\t\t\t\tlabel: this.share.label.trim(),\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\treturn t('files_sharing', 'Share link ({label})', {\n\t\t\t\t\t\tlabel: this.share.label.trim(),\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (this.isEmailShareType) {\n\t\t\t\t\treturn this.share.shareWith\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Share link')\n\t\t},\n\n\t\t/**\n\t\t * Show the email on a second line if a label is set for mail shares\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tsubtitle() {\n\t\t\tif (this.isEmailShareType\n\t\t\t\t&& this.title !== this.share.shareWith) {\n\t\t\t\treturn this.share.shareWith\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\t/**\n\t\t * Does the current share have an expiration date\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasExpirationDate: {\n\t\t\tget() {\n\t\t\t\treturn this.config.isDefaultExpireDateEnforced\n\t\t\t\t\t|| !!this.share.expireDate\n\t\t\t},\n\t\t\tset(enabled) {\n\t\t\t\tlet dateString = moment(this.config.defaultExpirationDateString)\n\t\t\t\tif (!dateString.isValid()) {\n\t\t\t\t\tdateString = moment()\n\t\t\t\t}\n\t\t\t\tthis.share.state.expiration = enabled\n\t\t\t\t\t? dateString.format('YYYY-MM-DD')\n\t\t\t\t\t: ''\n\t\t\t\tconsole.debug('Expiration date status', enabled, this.share.expireDate)\n\t\t\t},\n\t\t},\n\n\t\tdateMaxEnforced() {\n\t\t\treturn this.config.isDefaultExpireDateEnforced\n\t\t\t\t&& moment().add(1 + this.config.defaultExpireDate, 'days')\n\t\t},\n\n\t\t/**\n\t\t * Is the current share password protected ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtected: {\n\t\t\tget() {\n\t\t\t\treturn this.config.enforcePasswordForPublicLink\n\t\t\t\t\t|| !!this.share.password\n\t\t\t},\n\t\t\tasync set(enabled) {\n\t\t\t\t// TODO: directly save after generation to make sure the share is always protected\n\t\t\t\tVue.set(this.share, 'password', enabled ? await GeneratePassword() : '')\n\t\t\t\tVue.set(this.share, 'newPassword', this.share.password)\n\t\t\t},\n\t\t},\n\n\t\tpasswordExpirationTime() {\n\t\t\tif (this.share.passwordExpirationTime === null) {\n\t\t\t\treturn null\n\t\t\t}\n\n\t\t\tconst expirationTime = moment(this.share.passwordExpirationTime)\n\n\t\t\tif (expirationTime.diff(moment()) < 0) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\treturn expirationTime.fromNow()\n\t\t},\n\n\t\t/**\n\t\t * Is Talk enabled?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisTalkEnabled() {\n\t\t\treturn OC.appswebroots.spreed !== undefined\n\t\t},\n\n\t\t/**\n\t\t * Is it possible to protect the password by Talk?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtectedByTalkAvailable() {\n\t\t\treturn this.isPasswordProtected && this.isTalkEnabled\n\t\t},\n\n\t\t/**\n\t\t * Is the current share password protected by Talk?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtectedByTalk: {\n\t\t\tget() {\n\t\t\t\treturn this.share.sendPasswordByTalk\n\t\t\t},\n\t\t\tasync set(enabled) {\n\t\t\t\tthis.share.sendPasswordByTalk = enabled\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Is the current share an email share ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisEmailShareType() {\n\t\t\treturn this.share\n\t\t\t\t? this.share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL\n\t\t\t\t: false\n\t\t},\n\n\t\tcanTogglePasswordProtectedByTalkAvailable() {\n\t\t\tif (!this.isPasswordProtected) {\n\t\t\t\t// Makes no sense\n\t\t\t\treturn false\n\t\t\t} else if (this.isEmailShareType && !this.hasUnsavedPassword) {\n\t\t\t\t// For email shares we need a new password in order to enable or\n\t\t\t\t// disable\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t// Anything else should be fine\n\t\t\treturn true\n\t\t},\n\n\t\t/**\n\t\t * Pending data.\n\t\t * If the share still doesn't have an id, it is not synced\n\t\t * Therefore this is still not valid and requires user input\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tpendingPassword() {\n\t\t\treturn this.config.enforcePasswordForPublicLink && this.share && !this.share.id\n\t\t},\n\t\tpendingExpirationDate() {\n\t\t\treturn this.config.isDefaultExpireDateEnforced && this.share && !this.share.id\n\t\t},\n\n\t\t// if newPassword exists, but is empty, it means\n\t\t// the user deleted the original password\n\t\thasUnsavedPassword() {\n\t\t\treturn this.share.newPassword !== undefined\n\t\t},\n\n\t\t/**\n\t\t * Return the public share link\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tshareLink() {\n\t\t\treturn window.location.protocol + '//' + window.location.host + generateUrl('/s/') + this.share.token\n\t\t},\n\n\t\t/**\n\t\t * Clipboard v-tooltip message\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tclipboardTooltip() {\n\t\t\tif (this.copied) {\n\t\t\t\treturn this.copySuccess\n\t\t\t\t\t? t('files_sharing', 'Link copied')\n\t\t\t\t\t: t('files_sharing', 'Cannot copy, please copy the link manually')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Copy to clipboard')\n\t\t},\n\n\t\t/**\n\t\t * External additionnai actions for the menu\n\t\t *\n\t\t * @deprecated use OCA.Sharing.ExternalShareActions\n\t\t * @return {Array}\n\t\t */\n\t\texternalLegacyLinkActions() {\n\t\t\treturn this.ExternalLegacyLinkActions.actions\n\t\t},\n\n\t\t/**\n\t\t * Additional actions for the menu\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\texternalLinkActions() {\n\t\t\t// filter only the registered actions for said link\n\t\t\treturn this.ExternalShareActions.actions\n\t\t\t\t.filter(action => action.shareType.includes(ShareTypes.SHARE_TYPE_LINK)\n\t\t\t\t\t|| action.shareType.includes(ShareTypes.SHARE_TYPE_EMAIL))\n\t\t},\n\n\t\tisPasswordPolicyEnabled() {\n\t\t\treturn typeof this.config.passwordPolicy === 'object'\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Create a new share link and append it to the list\n\t\t */\n\t\tasync onNewLinkShare() {\n\t\t\t// do not run again if already loading\n\t\t\tif (this.loading) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst shareDefaults = {\n\t\t\t\tshare_type: ShareTypes.SHARE_TYPE_LINK,\n\t\t\t}\n\t\t\tif (this.config.isDefaultExpireDateEnforced) {\n\t\t\t\t// default is empty string if not set\n\t\t\t\t// expiration is the share object key, not expireDate\n\t\t\t\tshareDefaults.expiration = this.config.defaultExpirationDateString\n\t\t\t}\n\t\t\tif (this.config.enableLinkPasswordByDefault) {\n\t\t\t\tshareDefaults.password = await GeneratePassword()\n\t\t\t}\n\n\t\t\t// do not push yet if we need a password or an expiration date: show pending menu\n\t\t\tif (this.config.enforcePasswordForPublicLink || this.config.isDefaultExpireDateEnforced) {\n\t\t\t\tthis.pending = true\n\n\t\t\t\t// if a share already exists, pushing it\n\t\t\t\tif (this.share && !this.share.id) {\n\t\t\t\t\t// if the share is valid, create it on the server\n\t\t\t\t\tif (this.checkShare(this.share)) {\n\t\t\t\t\t\tawait this.pushNewLinkShare(this.share, true)\n\t\t\t\t\t\treturn true\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.open = true\n\t\t\t\t\t\tOC.Notification.showTemporary(t('files_sharing', 'Error, please enter proper password and/or expiration date'))\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// ELSE, show the pending popovermenu\n\t\t\t\t// if password enforced, pre-fill with random one\n\t\t\t\tif (this.config.enforcePasswordForPublicLink) {\n\t\t\t\t\tshareDefaults.password = await GeneratePassword()\n\t\t\t\t}\n\n\t\t\t\t// create share & close menu\n\t\t\t\tconst share = new Share(shareDefaults)\n\t\t\t\tconst component = await new Promise(resolve => {\n\t\t\t\t\tthis.$emit('add:share', share, resolve)\n\t\t\t\t})\n\n\t\t\t\t// open the menu on the\n\t\t\t\t// freshly created share component\n\t\t\t\tthis.open = false\n\t\t\t\tthis.pending = false\n\t\t\t\tcomponent.open = true\n\n\t\t\t// Nothing is enforced, creating share directly\n\t\t\t} else {\n\t\t\t\tconst share = new Share(shareDefaults)\n\t\t\t\tawait this.pushNewLinkShare(share)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Push a new link share to the server\n\t\t * And update or append to the list\n\t\t * accordingly\n\t\t *\n\t\t * @param {Share} share the new share\n\t\t * @param {boolean} [update=false] do we update the current share ?\n\t\t */\n\t\tasync pushNewLinkShare(share, update) {\n\t\t\ttry {\n\t\t\t\t// do nothing if we're already pending creation\n\t\t\t\tif (this.loading) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\n\t\t\t\tthis.loading = true\n\t\t\t\tthis.errors = {}\n\n\t\t\t\tconst path = (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')\n\t\t\t\tconst newShare = await this.createShare({\n\t\t\t\t\tpath,\n\t\t\t\t\tshareType: ShareTypes.SHARE_TYPE_LINK,\n\t\t\t\t\tpassword: share.password,\n\t\t\t\t\texpireDate: share.expireDate,\n\t\t\t\t\t// we do not allow setting the publicUpload\n\t\t\t\t\t// before the share creation.\n\t\t\t\t\t// Todo: We also need to fix the createShare method in\n\t\t\t\t\t// lib/Controller/ShareAPIController.php to allow file drop\n\t\t\t\t\t// (currently not supported on create, only update)\n\t\t\t\t})\n\n\t\t\t\tthis.open = false\n\n\t\t\t\tconsole.debug('Link share created', newShare)\n\n\t\t\t\t// if share already exists, copy link directly on next tick\n\t\t\t\tlet component\n\t\t\t\tif (update) {\n\t\t\t\t\tcomponent = await new Promise(resolve => {\n\t\t\t\t\t\tthis.$emit('update:share', newShare, resolve)\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\t// adding new share to the array and copying link to clipboard\n\t\t\t\t\t// using promise so that we can copy link in the same click function\n\t\t\t\t\t// and avoid firefox copy permissions issue\n\t\t\t\t\tcomponent = await new Promise(resolve => {\n\t\t\t\t\t\tthis.$emit('add:share', newShare, resolve)\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\t// Execute the copy link method\n\t\t\t\t// freshly created share component\n\t\t\t\t// ! somehow does not works on firefox !\n\t\t\t\tif (!this.config.enforcePasswordForPublicLink) {\n\t\t\t\t\t// Only copy the link when the password was not forced,\n\t\t\t\t\t// otherwise the user needs to copy/paste the password before finishing the share.\n\t\t\t\t\tcomponent.copyLink()\n\t\t\t\t}\n\n\t\t\t} catch ({ response }) {\n\t\t\t\tconst message = response.data.ocs.meta.message\n\t\t\t\tif (message.match(/password/i)) {\n\t\t\t\t\tthis.onSyncError('password', message)\n\t\t\t\t} else if (message.match(/date/i)) {\n\t\t\t\t\tthis.onSyncError('expireDate', message)\n\t\t\t\t} else {\n\t\t\t\t\tthis.onSyncError('pending', message)\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Label changed, let's save it to a different key\n\t\t *\n\t\t * @param {string} label the share label\n\t\t */\n\t\tonLabelChange(label) {\n\t\t\tthis.$set(this.share, 'newLabel', label.trim())\n\t\t},\n\n\t\t/**\n\t\t * When the note change, we trim, save and dispatch\n\t\t */\n\t\tonLabelSubmit() {\n\t\t\tif (typeof this.share.newLabel === 'string') {\n\t\t\t\tthis.share.label = this.share.newLabel\n\t\t\t\tthis.$delete(this.share, 'newLabel')\n\t\t\t\tthis.queueUpdate('label')\n\t\t\t}\n\t\t},\n\t\tasync copyLink() {\n\t\t\ttry {\n\t\t\t\tawait this.$copyText(this.shareLink)\n\t\t\t\t// focus and show the tooltip\n\t\t\t\tthis.$refs.copyButton.$el.focus()\n\t\t\t\tthis.copySuccess = true\n\t\t\t\tthis.copied = true\n\t\t\t} catch (error) {\n\t\t\t\tthis.copySuccess = false\n\t\t\t\tthis.copied = true\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.copySuccess = false\n\t\t\t\t\tthis.copied = false\n\t\t\t\t}, 4000)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Update newPassword values\n\t\t * of share. If password is set but not newPassword\n\t\t * then the user did not changed the password\n\t\t * If both co-exists, the password have changed and\n\t\t * we show it in plain text.\n\t\t * Then on submit (or menu close), we sync it.\n\t\t *\n\t\t * @param {string} password the changed password\n\t\t */\n\t\tonPasswordChange(password) {\n\t\t\tthis.$set(this.share, 'newPassword', password)\n\t\t},\n\n\t\t/**\n\t\t * Uncheck password protection\n\t\t * We need this method because @update:checked\n\t\t * is ran simultaneously as @uncheck, so we\n\t\t * cannot ensure data is up-to-date\n\t\t */\n\t\tonPasswordDisable() {\n\t\t\tthis.share.password = ''\n\n\t\t\t// reset password state after sync\n\t\t\tthis.$delete(this.share, 'newPassword')\n\n\t\t\t// only update if valid share.\n\t\t\tif (this.share.id) {\n\t\t\t\tthis.queueUpdate('password')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Menu have been closed or password has been submited.\n\t\t * The only property that does not get\n\t\t * synced automatically is the password\n\t\t * So let's check if we have an unsaved\n\t\t * password.\n\t\t * expireDate is saved on datepicker pick\n\t\t * or close.\n\t\t */\n\t\tonPasswordSubmit() {\n\t\t\tif (this.hasUnsavedPassword) {\n\t\t\t\tthis.share.password = this.share.newPassword.trim()\n\t\t\t\tthis.queueUpdate('password')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Update the password along with \"sendPasswordByTalk\".\n\t\t *\n\t\t * If the password was modified the new password is sent; otherwise\n\t\t * updating a mail share would fail, as in that case it is required that\n\t\t * a new password is set when enabling or disabling\n\t\t * \"sendPasswordByTalk\".\n\t\t */\n\t\tonPasswordProtectedByTalkChange() {\n\t\t\tif (this.hasUnsavedPassword) {\n\t\t\t\tthis.share.password = this.share.newPassword.trim()\n\t\t\t}\n\n\t\t\tthis.queueUpdate('sendPasswordByTalk', 'password')\n\t\t},\n\n\t\t/**\n\t\t * Save potential changed data on menu close\n\t\t */\n\t\tonMenuClose() {\n\t\t\tthis.onPasswordSubmit()\n\t\t\tthis.onNoteSubmit()\n\t\t},\n\n\t\t/**\n\t\t * Cancel the share creation\n\t\t * Used in the pending popover\n\t\t */\n\t\tonCancel() {\n\t\t\t// this.share already exists at this point,\n\t\t\t// but is incomplete as not pushed to server\n\t\t\t// YET. We can safely delete the share :)\n\t\t\tthis.$emit('remove:share', this.share)\n\t\t},\n\t},\n\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\toverflow: hidden;\n\n\t\th5 {\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow: hidden;\n\t\t\twhite-space: nowrap;\n\t\t}\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\n\t&:not(.sharing-entry--share) &__actions {\n\t\t.new-share-link {\n\t\t\tborder-top: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t::v-deep .avatar-link-share {\n\t\tbackground-color: var(--color-primary);\n\t}\n\n\t.sharing-entry__action--public-upload {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\n\t&__loading {\n\t\twidth: 44px;\n\t\theight: 44px;\n\t\tmargin: 0;\n\t\tpadding: 14px;\n\t\tmargin-left: auto;\n\t}\n\n\t// put menus to the left\n\t// but only the first one\n\t.action-item {\n\t\tmargin-left: auto;\n\t\t~ .action-item,\n\t\t~ .sharing-entry__loading {\n\t\t\tmargin-left: 0;\n\t\t}\n\t}\n\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryLink.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!./SharingEntryLink.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!./SharingEntryLink.vue?vue&type=style&index=0&id=a63eeae4&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!./SharingEntryLink.vue?vue&type=style&index=0&id=a63eeae4&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryLink.vue?vue&type=template&id=a63eeae4&scoped=true&\"\nimport script from \"./SharingEntryLink.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntryLink.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntryLink.vue?vue&type=style&index=0&id=a63eeae4&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 \"a63eeae4\",\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('li',{staticClass:\"sharing-entry sharing-entry__link\",class:{'sharing-entry--share': _vm.share}},[_c('Avatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"is-no-user\":true,\"icon-class\":_vm.isEmailShareType ? 'avatar-link-share icon-mail-white' : 'avatar-link-share icon-public-white'}}),_vm._v(\" \"),_c('div',{staticClass:\"sharing-entry__desc\"},[_c('h5',{attrs:{\"title\":_vm.title}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.title)+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.subtitle)?_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.subtitle)+\"\\n\\t\\t\")]):_vm._e()]),_vm._v(\" \"),(_vm.share && !_vm.isEmailShareType && _vm.share.token)?_c('Actions',{ref:\"copyButton\",staticClass:\"sharing-entry__copy\"},[_c('ActionLink',{attrs:{\"href\":_vm.shareLink,\"target\":\"_blank\",\"icon\":_vm.copied && _vm.copySuccess ? 'icon-checkmark-color' : 'icon-clippy'},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.copyLink.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.clipboardTooltip)+\"\\n\\t\\t\")])],1):_vm._e(),_vm._v(\" \"),(!_vm.pending && (_vm.pendingPassword || _vm.pendingExpirationDate))?_c('Actions',{staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\",\"open\":_vm.open},on:{\"update:open\":function($event){_vm.open=$event},\"close\":_vm.onNewLinkShare}},[(_vm.errors.pending)?_c('ActionText',{class:{ error: _vm.errors.pending},attrs:{\"icon\":\"icon-error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.errors.pending)+\"\\n\\t\\t\")]):_c('ActionText',{attrs:{\"icon\":\"icon-info\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Please enter the following required information before creating the share'))+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.pendingPassword)?_c('ActionText',{attrs:{\"icon\":\"icon-password\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password protection (enforced)'))+\"\\n\\t\\t\")]):(_vm.config.enableLinkPasswordByDefault)?_c('ActionCheckbox',{staticClass:\"share-link-password-checkbox\",attrs:{\"checked\":_vm.isPasswordProtected,\"disabled\":_vm.config.enforcePasswordForPublicLink || _vm.saving},on:{\"update:checked\":function($event){_vm.isPasswordProtected=$event},\"uncheck\":_vm.onPasswordDisable}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password protection'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.pendingPassword || _vm.share.password)?_c('ActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\tcontent: _vm.errors.password,\n\t\t\t\tshow: _vm.errors.password,\n\t\t\t\ttrigger: 'manual',\n\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t}),expression:\"{\\n\\t\\t\\t\\tcontent: errors.password,\\n\\t\\t\\t\\tshow: errors.password,\\n\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\tdefaultContainer: '#app-sidebar'\\n\\t\\t\\t}\",modifiers:{\"auto\":true}}],staticClass:\"share-link-password\",attrs:{\"value\":_vm.share.password,\"disabled\":_vm.saving,\"required\":_vm.config.enableLinkPasswordByDefault || _vm.config.enforcePasswordForPublicLink,\"minlength\":_vm.isPasswordPolicyEnabled && _vm.config.passwordPolicy.minLength,\"icon\":\"\",\"autocomplete\":\"new-password\"},on:{\"update:value\":function($event){return _vm.$set(_vm.share, \"password\", $event)},\"submit\":_vm.onNewLinkShare}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a password'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.pendingExpirationDate)?_c('ActionText',{attrs:{\"icon\":\"icon-calendar-dark\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Expiration date (enforced)'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.pendingExpirationDate)?_c('ActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\tcontent: _vm.errors.expireDate,\n\t\t\t\tshow: _vm.errors.expireDate,\n\t\t\t\ttrigger: 'manual',\n\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t}),expression:\"{\\n\\t\\t\\t\\tcontent: errors.expireDate,\\n\\t\\t\\t\\tshow: errors.expireDate,\\n\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\tdefaultContainer: '#app-sidebar'\\n\\t\\t\\t}\",modifiers:{\"auto\":true}}],staticClass:\"share-link-expire-date\",attrs:{\"disabled\":_vm.saving,\"lang\":_vm.lang,\"icon\":\"\",\"type\":\"date\",\"value-type\":\"format\",\"disabled-date\":_vm.disabledDate},model:{value:(_vm.share.expireDate),callback:function ($$v) {_vm.$set(_vm.share, \"expireDate\", $$v)},expression:\"share.expireDate\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a date'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('ActionButton',{attrs:{\"icon\":\"icon-checkmark\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Create share'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('ActionButton',{attrs:{\"icon\":\"icon-close\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onCancel.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Cancel'))+\"\\n\\t\\t\")])],1):(!_vm.loading)?_c('Actions',{staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\",\"open\":_vm.open},on:{\"update:open\":function($event){_vm.open=$event},\"close\":_vm.onMenuClose}},[(_vm.share)?[(_vm.share.canEdit && _vm.canReshare)?[_c('ActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\t\tcontent: _vm.errors.label,\n\t\t\t\t\t\tshow: _vm.errors.label,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '.app-sidebar'\n\t\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\t\\tcontent: errors.label,\\n\\t\\t\\t\\t\\t\\tshow: errors.label,\\n\\t\\t\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\t\\t\\tdefaultContainer: '.app-sidebar'\\n\\t\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"label\",class:{ error: _vm.errors.label },attrs:{\"disabled\":_vm.saving,\"aria-label\":_vm.t('files_sharing', 'Share label'),\"value\":_vm.share.newLabel !== undefined ? _vm.share.newLabel : _vm.share.label,\"icon\":\"icon-edit\",\"maxlength\":\"255\"},on:{\"update:value\":_vm.onLabelChange,\"submit\":_vm.onLabelSubmit}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Share label'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('SharePermissionsEditor',{attrs:{\"can-reshare\":_vm.canReshare,\"share\":_vm.share,\"file-info\":_vm.fileInfo},on:{\"update:share\":function($event){_vm.share=$event}}}),_vm._v(\" \"),_c('ActionSeparator'),_vm._v(\" \"),_c('ActionCheckbox',{attrs:{\"checked\":_vm.share.hideDownload,\"disabled\":_vm.saving},on:{\"update:checked\":function($event){return _vm.$set(_vm.share, \"hideDownload\", $event)},\"change\":function($event){return _vm.queueUpdate('hideDownload')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Hide download'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionCheckbox',{staticClass:\"share-link-password-checkbox\",attrs:{\"checked\":_vm.isPasswordProtected,\"disabled\":_vm.config.enforcePasswordForPublicLink || _vm.saving},on:{\"update:checked\":function($event){_vm.isPasswordProtected=$event},\"uncheck\":_vm.onPasswordDisable}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.config.enforcePasswordForPublicLink\n\t\t\t\t\t\t? _vm.t('files_sharing', 'Password protection (enforced)')\n\t\t\t\t\t\t: _vm.t('files_sharing', 'Password protect'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.isPasswordProtected)?_c('ActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\t\tcontent: _vm.errors.password,\n\t\t\t\t\t\tshow: _vm.errors.password,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\t\\tcontent: errors.password,\\n\\t\\t\\t\\t\\t\\tshow: errors.password,\\n\\t\\t\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\t\\t\\tdefaultContainer: '#app-sidebar'\\n\\t\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"password\",staticClass:\"share-link-password\",class:{ error: _vm.errors.password},attrs:{\"disabled\":_vm.saving,\"required\":_vm.config.enforcePasswordForPublicLink,\"value\":_vm.hasUnsavedPassword ? _vm.share.newPassword : '***************',\"icon\":\"icon-password\",\"autocomplete\":\"new-password\",\"type\":_vm.hasUnsavedPassword ? 'text': 'password'},on:{\"update:value\":_vm.onPasswordChange,\"submit\":_vm.onPasswordSubmit}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a password'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isEmailShareType && _vm.passwordExpirationTime)?_c('ActionText',{attrs:{\"icon\":\"icon-info\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password expires {passwordExpirationTime}', {passwordExpirationTime: _vm.passwordExpirationTime}))+\"\\n\\t\\t\\t\\t\")]):(_vm.isEmailShareType && _vm.passwordExpirationTime !== null)?_c('ActionText',{attrs:{\"icon\":\"icon-error\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password expired'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isPasswordProtectedByTalkAvailable)?_c('ActionCheckbox',{staticClass:\"share-link-password-talk-checkbox\",attrs:{\"checked\":_vm.isPasswordProtectedByTalk,\"disabled\":!_vm.canTogglePasswordProtectedByTalkAvailable || _vm.saving},on:{\"update:checked\":function($event){_vm.isPasswordProtectedByTalk=$event},\"change\":_vm.onPasswordProtectedByTalkChange}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Video verification'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('ActionCheckbox',{staticClass:\"share-link-expire-date-checkbox\",attrs:{\"checked\":_vm.hasExpirationDate,\"disabled\":_vm.config.isDefaultExpireDateEnforced || _vm.saving},on:{\"update:checked\":function($event){_vm.hasExpirationDate=$event},\"uncheck\":_vm.onExpirationDisable}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.config.isDefaultExpireDateEnforced\n\t\t\t\t\t\t? _vm.t('files_sharing', 'Expiration date (enforced)')\n\t\t\t\t\t\t: _vm.t('files_sharing', 'Set expiration date'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasExpirationDate)?_c('ActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\t\tcontent: _vm.errors.expireDate,\n\t\t\t\t\t\tshow: _vm.errors.expireDate,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\t\\tcontent: errors.expireDate,\\n\\t\\t\\t\\t\\t\\tshow: errors.expireDate,\\n\\t\\t\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\t\\t\\tdefaultContainer: '#app-sidebar'\\n\\t\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"expireDate\",staticClass:\"share-link-expire-date\",class:{ error: _vm.errors.expireDate},attrs:{\"disabled\":_vm.saving,\"lang\":_vm.lang,\"value\":_vm.share.expireDate,\"value-type\":\"format\",\"icon\":\"icon-calendar-dark\",\"type\":\"date\",\"disabled-date\":_vm.disabledDate},on:{\"update:value\":_vm.onExpirationChange}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a date'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('ActionCheckbox',{attrs:{\"checked\":_vm.hasNote,\"disabled\":_vm.saving},on:{\"update:checked\":function($event){_vm.hasNote=$event},\"uncheck\":function($event){return _vm.queueUpdate('note')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Note to recipient'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasNote)?_c('ActionTextEditable',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\t\tcontent: _vm.errors.note,\n\t\t\t\t\t\tshow: _vm.errors.note,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\t\\tcontent: errors.note,\\n\\t\\t\\t\\t\\t\\tshow: errors.note,\\n\\t\\t\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\t\\t\\tdefaultContainer: '#app-sidebar'\\n\\t\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"note\",class:{ error: _vm.errors.note},attrs:{\"disabled\":_vm.saving,\"placeholder\":_vm.t('files_sharing', 'Enter a note for the share recipient'),\"value\":_vm.share.newNote || _vm.share.note,\"icon\":\"icon-edit\"},on:{\"update:value\":_vm.onNoteChange,\"submit\":_vm.onNoteSubmit}}):_vm._e()]:_vm._e(),_vm._v(\" \"),_c('ActionSeparator'),_vm._v(\" \"),_vm._l((_vm.externalLinkActions),function(action){return _c('ExternalShareAction',{key:action.id,attrs:{\"id\":action.id,\"action\":action,\"file-info\":_vm.fileInfo,\"share\":_vm.share}})}),_vm._v(\" \"),_vm._l((_vm.externalLegacyLinkActions),function(ref,index){\n\t\t\t\t\tvar icon = ref.icon;\n\t\t\t\t\tvar url = ref.url;\n\t\t\t\t\tvar name = ref.name;\nreturn _c('ActionLink',{key:index,attrs:{\"href\":url(_vm.shareLink),\"icon\":icon,\"target\":\"_blank\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(name)+\"\\n\\t\\t\\t\")])}),_vm._v(\" \"),(_vm.share.canDelete)?_c('ActionButton',{attrs:{\"icon\":\"icon-close\",\"disabled\":_vm.saving},on:{\"click\":function($event){$event.preventDefault();return _vm.onDelete.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Unshare'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.isEmailShareType && _vm.canReshare)?_c('ActionButton',{staticClass:\"new-share-link\",attrs:{\"icon\":\"icon-add\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Add another link'))+\"\\n\\t\\t\\t\")]):_vm._e()]:(_vm.canReshare)?_c('ActionButton',{staticClass:\"new-share-link\",attrs:{\"icon\":_vm.loading ? 'icon-loading-small' : 'icon-add'},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Create a new share link'))+\"\\n\\t\\t\")]):_vm._e()],2):_c('div',{staticClass:\"icon-loading-small sharing-entry__loading\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingLinkList.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!./SharingLinkList.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<ul v-if=\"canLinkShare\" class=\"sharing-link-list\">\n\t\t<!-- If no link shares, show the add link default entry -->\n\t\t<SharingEntryLink v-if=\"!hasLinkShares && canReshare\"\n\t\t\t:can-reshare=\"canReshare\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t@add:share=\"addShare\" />\n\n\t\t<!-- Else we display the list -->\n\t\t<template v-if=\"hasShares\">\n\t\t\t<!-- using shares[index] to work with .sync -->\n\t\t\t<SharingEntryLink v-for=\"(share, index) in shares\"\n\t\t\t\t:key=\"share.id\"\n\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t:share.sync=\"shares[index]\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t@add:share=\"addShare(...arguments)\"\n\t\t\t\t@update:share=\"awaitForShare(...arguments)\"\n\t\t\t\t@remove:share=\"removeShare\" />\n\t\t</template>\n\t</ul>\n</template>\n\n<script>\n// eslint-disable-next-line no-unused-vars\nimport Share from '../models/Share'\nimport ShareTypes from '../mixins/ShareTypes'\nimport SharingEntryLink from '../components/SharingEntryLink'\n\nexport default {\n\tname: 'SharingLinkList',\n\n\tcomponents: {\n\t\tSharingEntryLink,\n\t},\n\n\tmixins: [ShareTypes],\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t\tcanReshare: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tcanLinkShare: OC.getCapabilities().files_sharing.public.enabled,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Do we have link shares?\n\t\t * Using this to still show the `new link share`\n\t\t * button regardless of mail shares\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\thasLinkShares() {\n\t\t\treturn this.shares.filter(share => share.type === this.SHARE_TYPES.SHARE_TYPE_LINK).length > 0\n\t\t},\n\n\t\t/**\n\t\t * Do we have any link or email shares?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasShares() {\n\t\t\treturn this.shares.length > 0\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Add a new share into the link shares list\n\t\t * and return the newly created share component\n\t\t *\n\t\t * @param {Share} share the share to add to the array\n\t\t * @param {Function} resolve a function to run after the share is added and its component initialized\n\t\t */\n\t\taddShare(share, resolve) {\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.unshift(share)\n\t\t\tthis.awaitForShare(share, resolve)\n\t\t},\n\n\t\t/**\n\t\t * Await for next tick and render after the list updated\n\t\t * Then resolve with the matched vue component of the\n\t\t * provided share object\n\t\t *\n\t\t * @param {Share} share newly created share\n\t\t * @param {Function} resolve a function to execute after\n\t\t */\n\t\tawaitForShare(share, resolve) {\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tconst newShare = this.$children.find(component => component.share === share)\n\t\t\t\tif (newShare) {\n\t\t\t\t\tresolve(newShare)\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Remove a share from the shares list\n\t\t *\n\t\t * @param {Share} share the share to remove\n\t\t */\n\t\tremoveShare(share) {\n\t\t\tconst index = this.shares.findIndex(item => item === share)\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.splice(index, 1)\n\t\t},\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./SharingLinkList.vue?vue&type=template&id=8be1a6a2&\"\nimport script from \"./SharingLinkList.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingLinkList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.canLinkShare)?_c('ul',{staticClass:\"sharing-link-list\"},[(!_vm.hasLinkShares && _vm.canReshare)?_c('SharingEntryLink',{attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo},on:{\"add:share\":_vm.addShare}}):_vm._e(),_vm._v(\" \"),(_vm.hasShares)?_vm._l((_vm.shares),function(share,index){return _c('SharingEntryLink',{key:share.id,attrs:{\"can-reshare\":_vm.canReshare,\"share\":_vm.shares[index],\"file-info\":_vm.fileInfo},on:{\"update:share\":[function($event){return _vm.$set(_vm.shares, index, $event)},function($event){return _vm.awaitForShare.apply(void 0, arguments)}],\"add:share\":function($event){return _vm.addShare.apply(void 0, arguments)},\"remove:share\":_vm.removeShare}})}):_vm._e()],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<li class=\"sharing-entry\">\n\t\t<Avatar class=\"sharing-entry__avatar\"\n\t\t\t:is-no-user=\"share.type !== SHARE_TYPES.SHARE_TYPE_USER\"\n\t\t\t:user=\"share.shareWith\"\n\t\t\t:display-name=\"share.shareWithDisplayName\"\n\t\t\t:tooltip-message=\"share.type === SHARE_TYPES.SHARE_TYPE_USER ? share.shareWith : ''\"\n\t\t\t:menu-position=\"'left'\"\n\t\t\t:url=\"share.shareWithAvatar\" />\n\t\t<component :is=\"share.shareWithLink ? 'a' : 'div'\"\n\t\t\tv-tooltip.auto=\"tooltip\"\n\t\t\t:href=\"share.shareWithLink\"\n\t\t\tclass=\"sharing-entry__desc\">\n\t\t\t<h5>{{ title }}<span v-if=\"!isUnique\" class=\"sharing-entry__desc-unique\"> ({{ share.shareWithDisplayNameUnique }})</span></h5>\n\t\t\t<p v-if=\"hasStatus\">\n\t\t\t\t<span>{{ share.status.icon || '' }}</span>\n\t\t\t\t<span>{{ share.status.message || '' }}</span>\n\t\t\t</p>\n\t\t</component>\n\t\t<Actions menu-align=\"right\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\t@close=\"onMenuClose\">\n\t\t\t<template v-if=\"share.canEdit\">\n\t\t\t\t<!-- edit permission -->\n\t\t\t\t<ActionCheckbox ref=\"canEdit\"\n\t\t\t\t\t:checked.sync=\"canEdit\"\n\t\t\t\t\t:value=\"permissionsEdit\"\n\t\t\t\t\t:disabled=\"saving || !canSetEdit\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow editing') }}\n\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t<!-- create permission -->\n\t\t\t\t<ActionCheckbox v-if=\"isFolder\"\n\t\t\t\t\tref=\"canCreate\"\n\t\t\t\t\t:checked.sync=\"canCreate\"\n\t\t\t\t\t:value=\"permissionsCreate\"\n\t\t\t\t\t:disabled=\"saving || !canSetCreate\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow creating') }}\n\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t<!-- delete permission -->\n\t\t\t\t<ActionCheckbox v-if=\"isFolder\"\n\t\t\t\t\tref=\"canDelete\"\n\t\t\t\t\t:checked.sync=\"canDelete\"\n\t\t\t\t\t:value=\"permissionsDelete\"\n\t\t\t\t\t:disabled=\"saving || !canSetDelete\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow deleting') }}\n\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t<!-- reshare permission -->\n\t\t\t\t<ActionCheckbox v-if=\"config.isResharingAllowed\"\n\t\t\t\t\tref=\"canReshare\"\n\t\t\t\t\t:checked.sync=\"canReshare\"\n\t\t\t\t\t:value=\"permissionsShare\"\n\t\t\t\t\t:disabled=\"saving || !canSetReshare\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow resharing') }}\n\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t<!-- expiration date -->\n\t\t\t\t<ActionCheckbox :checked.sync=\"hasExpirationDate\"\n\t\t\t\t\t:disabled=\"config.isDefaultInternalExpireDateEnforced || saving\"\n\t\t\t\t\t@uncheck=\"onExpirationDisable\">\n\t\t\t\t\t{{ config.isDefaultInternalExpireDateEnforced\n\t\t\t\t\t\t? t('files_sharing', 'Expiration date enforced')\n\t\t\t\t\t\t: t('files_sharing', 'Set expiration date') }}\n\t\t\t\t</ActionCheckbox>\n\t\t\t\t<ActionInput v-if=\"hasExpirationDate\"\n\t\t\t\t\tref=\"expireDate\"\n\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\tcontent: errors.expireDate,\n\t\t\t\t\t\tshow: errors.expireDate,\n\t\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t\t}\"\n\t\t\t\t\t:class=\"{ error: errors.expireDate}\"\n\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t:lang=\"lang\"\n\t\t\t\t\t:value=\"share.expireDate\"\n\t\t\t\t\tvalue-type=\"format\"\n\t\t\t\t\ticon=\"icon-calendar-dark\"\n\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t:disabled-date=\"disabledDate\"\n\t\t\t\t\t@update:value=\"onExpirationChange\">\n\t\t\t\t\t{{ t('files_sharing', 'Enter a date') }}\n\t\t\t\t</ActionInput>\n\n\t\t\t\t<!-- note -->\n\t\t\t\t<template v-if=\"canHaveNote\">\n\t\t\t\t\t<ActionCheckbox :checked.sync=\"hasNote\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t@uncheck=\"queueUpdate('note')\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Note to recipient') }}\n\t\t\t\t\t</ActionCheckbox>\n\t\t\t\t\t<ActionTextEditable v-if=\"hasNote\"\n\t\t\t\t\t\tref=\"note\"\n\t\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\t\tcontent: errors.note,\n\t\t\t\t\t\t\tshow: errors.note,\n\t\t\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\t:class=\"{ error: errors.note}\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:value=\"share.newNote || share.note\"\n\t\t\t\t\t\ticon=\"icon-edit\"\n\t\t\t\t\t\t@update:value=\"onNoteChange\"\n\t\t\t\t\t\t@submit=\"onNoteSubmit\" />\n\t\t\t\t</template>\n\t\t\t</template>\n\n\t\t\t<ActionButton v-if=\"share.canDelete\"\n\t\t\t\ticon=\"icon-close\"\n\t\t\t\t:disabled=\"saving\"\n\t\t\t\t@click.prevent=\"onDelete\">\n\t\t\t\t{{ t('files_sharing', 'Unshare') }}\n\t\t\t</ActionButton>\n\t\t</Actions>\n\t</li>\n</template>\n\n<script>\nimport Avatar from '@nextcloud/vue/dist/Components/Avatar'\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport ActionCheckbox from '@nextcloud/vue/dist/Components/ActionCheckbox'\nimport ActionInput from '@nextcloud/vue/dist/Components/ActionInput'\nimport ActionTextEditable from '@nextcloud/vue/dist/Components/ActionTextEditable'\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'\n\nimport SharesMixin from '../mixins/SharesMixin'\n\nexport default {\n\tname: 'SharingEntry',\n\n\tcomponents: {\n\t\tActions,\n\t\tActionButton,\n\t\tActionCheckbox,\n\t\tActionInput,\n\t\tActionTextEditable,\n\t\tAvatar,\n\t},\n\n\tdirectives: {\n\t\tTooltip,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tdata() {\n\t\treturn {\n\t\t\tpermissionsEdit: OC.PERMISSION_UPDATE,\n\t\t\tpermissionsCreate: OC.PERMISSION_CREATE,\n\t\t\tpermissionsDelete: OC.PERMISSION_DELETE,\n\t\t\tpermissionsRead: OC.PERMISSION_READ,\n\t\t\tpermissionsShare: OC.PERMISSION_SHARE,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\ttitle() {\n\t\t\tlet title = this.share.shareWithDisplayName\n\t\t\tif (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GROUP) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'group')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_ROOM) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'conversation')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'remote')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'remote group')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GUEST) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'guest')})`\n\t\t\t}\n\t\t\treturn title\n\t\t},\n\n\t\ttooltip() {\n\t\t\tif (this.share.owner !== this.share.uidFileOwner) {\n\t\t\t\tconst data = {\n\t\t\t\t\t// todo: strong or italic?\n\t\t\t\t\t// but the t function escape any html from the data :/\n\t\t\t\t\tuser: this.share.shareWithDisplayName,\n\t\t\t\t\towner: this.share.ownerDisplayName,\n\t\t\t\t}\n\n\t\t\t\tif (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GROUP) {\n\t\t\t\t\treturn t('files_sharing', 'Shared with the group {user} by {owner}', data)\n\t\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_ROOM) {\n\t\t\t\t\treturn t('files_sharing', 'Shared with the conversation {user} by {owner}', data)\n\t\t\t\t}\n\n\t\t\t\treturn t('files_sharing', 'Shared with {user} by {owner}', data)\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\tcanHaveNote() {\n\t\t\treturn !this.isRemote\n\t\t},\n\n\t\tisRemote() {\n\t\t\treturn this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE\n\t\t\t\t|| this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can edit the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetEdit() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_UPDATE) || this.canEdit\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can create the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetCreate() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_CREATE) || this.canCreate\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can delete the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetDelete() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_DELETE) || this.canDelete\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can reshare the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetReshare() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_SHARE) || this.canReshare\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee edit the shared file ?\n\t\t */\n\t\tcanEdit: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasUpdatePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isEditChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee create the shared file ?\n\t\t */\n\t\tcanCreate: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasCreatePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isCreateChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee delete the shared file ?\n\t\t */\n\t\tcanDelete: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasDeletePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isDeleteChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee reshare the file ?\n\t\t */\n\t\tcanReshare: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasSharePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isReshareChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Is this share readable\n\t\t * Needed for some federated shares that might have been added from file drop links\n\t\t */\n\t\thasRead: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasReadPermission\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Is the current share a folder ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisFolder() {\n\t\t\treturn this.fileInfo.type === 'dir'\n\t\t},\n\n\t\t/**\n\t\t * Does the current share have an expiration date\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasExpirationDate: {\n\t\t\tget() {\n\t\t\t\treturn this.config.isDefaultInternalExpireDateEnforced || !!this.share.expireDate\n\t\t\t},\n\t\t\tset(enabled) {\n\t\t\t\tthis.share.expireDate = enabled\n\t\t\t\t\t? this.config.defaultInternalExpirationDateString !== ''\n\t\t\t\t\t\t? this.config.defaultInternalExpirationDateString\n\t\t\t\t\t\t: moment().format('YYYY-MM-DD')\n\t\t\t\t\t: ''\n\t\t\t},\n\t\t},\n\n\t\tdateMaxEnforced() {\n\t\t\tif (!this.isRemote) {\n\t\t\t\treturn this.config.isDefaultInternalExpireDateEnforced\n\t\t\t\t\t&& moment().add(1 + this.config.defaultInternalExpireDate, 'days')\n\t\t\t} else {\n\t\t\t\treturn this.config.isDefaultRemoteExpireDateEnforced\n\t\t\t\t\t&& moment().add(1 + this.config.defaultRemoteExpireDate, 'days')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @return {boolean}\n\t\t */\n\t\thasStatus() {\n\t\t\tif (this.share.type !== this.SHARE_TYPES.SHARE_TYPE_USER) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\treturn (typeof this.share.status === 'object' && !Array.isArray(this.share.status))\n\t\t},\n\n\t},\n\n\tmethods: {\n\t\tupdatePermissions({ isEditChecked = this.canEdit, isCreateChecked = this.canCreate, isDeleteChecked = this.canDelete, isReshareChecked = this.canReshare } = {}) {\n\t\t\t// calc permissions if checked\n\t\t\tconst permissions = 0\n\t\t\t\t| (this.hasRead ? this.permissionsRead : 0)\n\t\t\t\t| (isCreateChecked ? this.permissionsCreate : 0)\n\t\t\t\t| (isDeleteChecked ? this.permissionsDelete : 0)\n\t\t\t\t| (isEditChecked ? this.permissionsEdit : 0)\n\t\t\t\t| (isReshareChecked ? this.permissionsShare : 0)\n\n\t\t\tthis.share.permissions = permissions\n\t\t\tthis.queueUpdate('permissions')\n\t\t},\n\n\t\t/**\n\t\t * Save potential changed data on menu close\n\t\t */\n\t\tonMenuClose() {\n\t\t\tthis.onNoteSubmit()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t\t&-unique {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntry.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!./SharingEntry.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!./SharingEntry.vue?vue&type=style&index=0&id=11f6b64f&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!./SharingEntry.vue?vue&type=style&index=0&id=11f6b64f&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntry.vue?vue&type=template&id=11f6b64f&scoped=true&\"\nimport script from \"./SharingEntry.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntry.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntry.vue?vue&type=style&index=0&id=11f6b64f&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 \"11f6b64f\",\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('li',{staticClass:\"sharing-entry\"},[_c('Avatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"is-no-user\":_vm.share.type !== _vm.SHARE_TYPES.SHARE_TYPE_USER,\"user\":_vm.share.shareWith,\"display-name\":_vm.share.shareWithDisplayName,\"tooltip-message\":_vm.share.type === _vm.SHARE_TYPES.SHARE_TYPE_USER ? _vm.share.shareWith : '',\"menu-position\":'left',\"url\":_vm.share.shareWithAvatar}}),_vm._v(\" \"),_c(_vm.share.shareWithLink ? 'a' : 'div',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.tooltip),expression:\"tooltip\",modifiers:{\"auto\":true}}],tag:\"component\",staticClass:\"sharing-entry__desc\",attrs:{\"href\":_vm.share.shareWithLink}},[_c('h5',[_vm._v(_vm._s(_vm.title)),(!_vm.isUnique)?_c('span',{staticClass:\"sharing-entry__desc-unique\"},[_vm._v(\" (\"+_vm._s(_vm.share.shareWithDisplayNameUnique)+\")\")]):_vm._e()]),_vm._v(\" \"),(_vm.hasStatus)?_c('p',[_c('span',[_vm._v(_vm._s(_vm.share.status.icon || ''))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.share.status.message || ''))])]):_vm._e()]),_vm._v(\" \"),_c('Actions',{staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\"},on:{\"close\":_vm.onMenuClose}},[(_vm.share.canEdit)?[_c('ActionCheckbox',{ref:\"canEdit\",attrs:{\"checked\":_vm.canEdit,\"value\":_vm.permissionsEdit,\"disabled\":_vm.saving || !_vm.canSetEdit},on:{\"update:checked\":function($event){_vm.canEdit=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow editing'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),(_vm.isFolder)?_c('ActionCheckbox',{ref:\"canCreate\",attrs:{\"checked\":_vm.canCreate,\"value\":_vm.permissionsCreate,\"disabled\":_vm.saving || !_vm.canSetCreate},on:{\"update:checked\":function($event){_vm.canCreate=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow creating'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isFolder)?_c('ActionCheckbox',{ref:\"canDelete\",attrs:{\"checked\":_vm.canDelete,\"value\":_vm.permissionsDelete,\"disabled\":_vm.saving || !_vm.canSetDelete},on:{\"update:checked\":function($event){_vm.canDelete=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow deleting'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.config.isResharingAllowed)?_c('ActionCheckbox',{ref:\"canReshare\",attrs:{\"checked\":_vm.canReshare,\"value\":_vm.permissionsShare,\"disabled\":_vm.saving || !_vm.canSetReshare},on:{\"update:checked\":function($event){_vm.canReshare=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow resharing'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('ActionCheckbox',{attrs:{\"checked\":_vm.hasExpirationDate,\"disabled\":_vm.config.isDefaultInternalExpireDateEnforced || _vm.saving},on:{\"update:checked\":function($event){_vm.hasExpirationDate=$event},\"uncheck\":_vm.onExpirationDisable}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.config.isDefaultInternalExpireDateEnforced\n\t\t\t\t\t? _vm.t('files_sharing', 'Expiration date enforced')\n\t\t\t\t\t: _vm.t('files_sharing', 'Set expiration date'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasExpirationDate)?_c('ActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\tcontent: _vm.errors.expireDate,\n\t\t\t\t\tshow: _vm.errors.expireDate,\n\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\tcontent: errors.expireDate,\\n\\t\\t\\t\\t\\tshow: errors.expireDate,\\n\\t\\t\\t\\t\\ttrigger: 'manual'\\n\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"expireDate\",class:{ error: _vm.errors.expireDate},attrs:{\"disabled\":_vm.saving,\"lang\":_vm.lang,\"value\":_vm.share.expireDate,\"value-type\":\"format\",\"icon\":\"icon-calendar-dark\",\"type\":\"date\",\"disabled-date\":_vm.disabledDate},on:{\"update:value\":_vm.onExpirationChange}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a date'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.canHaveNote)?[_c('ActionCheckbox',{attrs:{\"checked\":_vm.hasNote,\"disabled\":_vm.saving},on:{\"update:checked\":function($event){_vm.hasNote=$event},\"uncheck\":function($event){return _vm.queueUpdate('note')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Note to recipient'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasNote)?_c('ActionTextEditable',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\t\tcontent: _vm.errors.note,\n\t\t\t\t\t\tshow: _vm.errors.note,\n\t\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\t\\tcontent: errors.note,\\n\\t\\t\\t\\t\\t\\tshow: errors.note,\\n\\t\\t\\t\\t\\t\\ttrigger: 'manual'\\n\\t\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"note\",class:{ error: _vm.errors.note},attrs:{\"disabled\":_vm.saving,\"value\":_vm.share.newNote || _vm.share.note,\"icon\":\"icon-edit\"},on:{\"update:value\":_vm.onNoteChange,\"submit\":_vm.onNoteSubmit}}):_vm._e()]:_vm._e()]:_vm._e(),_vm._v(\" \"),(_vm.share.canDelete)?_c('ActionButton',{attrs:{\"icon\":\"icon-close\",\"disabled\":_vm.saving},on:{\"click\":function($event){$event.preventDefault();return _vm.onDelete.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Unshare'))+\"\\n\\t\\t\")]):_vm._e()],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<ul class=\"sharing-sharee-list\">\n\t\t<SharingEntry v-for=\"share in shares\"\n\t\t\t:key=\"share.id\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t:share=\"share\"\n\t\t\t:is-unique=\"isUnique(share)\"\n\t\t\t@remove:share=\"removeShare\" />\n\t</ul>\n</template>\n\n<script>\n// eslint-disable-next-line no-unused-vars\nimport Share from '../models/Share'\nimport SharingEntry from '../components/SharingEntry'\nimport ShareTypes from '../mixins/ShareTypes'\n\nexport default {\n\tname: 'SharingList',\n\n\tcomponents: {\n\t\tSharingEntry,\n\t},\n\n\tmixins: [ShareTypes],\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\thasShares() {\n\t\t\treturn this.shares.length === 0\n\t\t},\n\t\tisUnique() {\n\t\t\treturn (share) => {\n\t\t\t\treturn [...this.shares].filter((item) => {\n\t\t\t\t\treturn share.type === this.SHARE_TYPES.SHARE_TYPE_USER && share.shareWithDisplayName === item.shareWithDisplayName\n\t\t\t\t}).length <= 1\n\t\t\t}\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Remove a share from the shares list\n\t\t *\n\t\t * @param {Share} share the share to remove\n\t\t */\n\t\tremoveShare(share) {\n\t\t\tconst index = this.shares.findIndex(item => item === share)\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.splice(index, 1)\n\t\t},\n\t},\n}\n</script>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingList.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!./SharingList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SharingList.vue?vue&type=template&id=0b29d4c0&\"\nimport script from \"./SharingList.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',{staticClass:\"sharing-sharee-list\"},_vm._l((_vm.shares),function(share){return _c('SharingEntry',{key:share.id,attrs:{\"file-info\":_vm.fileInfo,\"share\":share,\"is-unique\":_vm.isUnique(share)},on:{\"remove:share\":_vm.removeShare}})}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<div :class=\"{ 'icon-loading': loading }\">\n\t\t<!-- error message -->\n\t\t<div v-if=\"error\" class=\"emptycontent\">\n\t\t\t<div class=\"icon icon-error\" />\n\t\t\t<h2>{{ error }}</h2>\n\t\t</div>\n\n\t\t<!-- shares content -->\n\t\t<template v-else>\n\t\t\t<!-- shared with me information -->\n\t\t\t<SharingEntrySimple v-if=\"isSharedWithMe\" v-bind=\"sharedWithMe\" class=\"sharing-entry__reshare\">\n\t\t\t\t<template #avatar>\n\t\t\t\t\t<Avatar :user=\"sharedWithMe.user\"\n\t\t\t\t\t\t:display-name=\"sharedWithMe.displayName\"\n\t\t\t\t\t\tclass=\"sharing-entry__avatar\"\n\t\t\t\t\t\ttooltip-message=\"\" />\n\t\t\t\t</template>\n\t\t\t</SharingEntrySimple>\n\n\t\t\t<!-- add new share input -->\n\t\t\t<SharingInput v-if=\"!loading\"\n\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t:link-shares=\"linkShares\"\n\t\t\t\t:reshare=\"reshare\"\n\t\t\t\t:shares=\"shares\"\n\t\t\t\t@add:share=\"addShare\" />\n\n\t\t\t<!-- link shares list -->\n\t\t\t<SharingLinkList v-if=\"!loading\"\n\t\t\t\tref=\"linkShareList\"\n\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t:shares=\"linkShares\" />\n\n\t\t\t<!-- other shares list -->\n\t\t\t<SharingList v-if=\"!loading\"\n\t\t\t\tref=\"shareList\"\n\t\t\t\t:shares=\"shares\"\n\t\t\t\t:file-info=\"fileInfo\" />\n\n\t\t\t<!-- inherited shares -->\n\t\t\t<SharingInherited v-if=\"canReshare && !loading\" :file-info=\"fileInfo\" />\n\n\t\t\t<!-- internal link copy -->\n\t\t\t<SharingEntryInternal :file-info=\"fileInfo\" />\n\n\t\t\t<!-- projects -->\n\t\t\t<CollectionList v-if=\"fileInfo\"\n\t\t\t\t:id=\"`${fileInfo.id}`\"\n\t\t\t\ttype=\"file\"\n\t\t\t\t:name=\"fileInfo.name\" />\n\n\t\t\t<!-- additionnal entries, use it with cautious -->\n\t\t\t<div v-for=\"(section, index) in sections\"\n\t\t\t\t:ref=\"'section-' + index\"\n\t\t\t\t:key=\"index\"\n\t\t\t\tclass=\"sharingTab__additionalContent\">\n\t\t\t\t<component :is=\"section($refs['section-'+index], fileInfo)\" :file-info=\"fileInfo\" />\n\t\t\t</div>\n\t\t</template>\n\t</div>\n</template>\n\n<script>\nimport { CollectionList } from 'nextcloud-vue-collections'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport Avatar from '@nextcloud/vue/dist/Components/Avatar'\nimport axios from '@nextcloud/axios'\n\nimport Config from '../services/ConfigService'\nimport { shareWithTitle } from '../utils/SharedWithMe'\nimport Share from '../models/Share'\nimport ShareTypes from '../mixins/ShareTypes'\nimport SharingEntryInternal from '../components/SharingEntryInternal'\nimport SharingEntrySimple from '../components/SharingEntrySimple'\nimport SharingInput from '../components/SharingInput'\n\nimport SharingInherited from './SharingInherited'\nimport SharingLinkList from './SharingLinkList'\nimport SharingList from './SharingList'\n\nexport default {\n\tname: 'SharingTab',\n\n\tcomponents: {\n\t\tAvatar,\n\t\tCollectionList,\n\t\tSharingEntryInternal,\n\t\tSharingEntrySimple,\n\t\tSharingInherited,\n\t\tSharingInput,\n\t\tSharingLinkList,\n\t\tSharingList,\n\t},\n\n\tmixins: [ShareTypes],\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\n\t\t\terror: '',\n\t\t\texpirationInterval: null,\n\t\t\tloading: true,\n\n\t\t\tfileInfo: null,\n\n\t\t\t// reshare Share object\n\t\t\treshare: null,\n\t\t\tsharedWithMe: {},\n\t\t\tshares: [],\n\t\t\tlinkShares: [],\n\n\t\t\tsections: OCA.Sharing.ShareTabSections.getSections(),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Is this share shared with me?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisSharedWithMe() {\n\t\t\treturn Object.keys(this.sharedWithMe).length > 0\n\t\t},\n\n\t\tcanReshare() {\n\t\t\treturn !!(this.fileInfo.permissions & OC.PERMISSION_SHARE)\n\t\t\t\t|| !!(this.reshare && this.reshare.hasSharePermission && this.config.isResharingAllowed)\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Update current fileInfo and fetch new data\n\t\t *\n\t\t * @param {object} fileInfo the current file FileInfo\n\t\t */\n\t\tasync update(fileInfo) {\n\t\t\tthis.fileInfo = fileInfo\n\t\t\tthis.resetState()\n\t\t\tthis.getShares()\n\t\t},\n\n\t\t/**\n\t\t * Get the existing shares infos\n\t\t */\n\t\tasync getShares() {\n\t\t\ttry {\n\t\t\t\tthis.loading = true\n\n\t\t\t\t// init params\n\t\t\t\tconst shareUrl = generateOcsUrl('apps/files_sharing/api/v1/shares')\n\t\t\t\tconst format = 'json'\n\t\t\t\t// TODO: replace with proper getFUllpath implementation of our own FileInfo model\n\t\t\t\tconst path = (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')\n\n\t\t\t\t// fetch shares\n\t\t\t\tconst fetchShares = axios.get(shareUrl, {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat,\n\t\t\t\t\t\tpath,\n\t\t\t\t\t\treshares: true,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tconst fetchSharedWithMe = axios.get(shareUrl, {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat,\n\t\t\t\t\t\tpath,\n\t\t\t\t\t\tshared_with_me: true,\n\t\t\t\t\t},\n\t\t\t\t})\n\n\t\t\t\t// wait for data\n\t\t\t\tconst [shares, sharedWithMe] = await Promise.all([fetchShares, fetchSharedWithMe])\n\t\t\t\tthis.loading = false\n\n\t\t\t\t// process results\n\t\t\t\tthis.processSharedWithMe(sharedWithMe)\n\t\t\t\tthis.processShares(shares)\n\t\t\t} catch (error) {\n\t\t\t\tthis.error = t('files_sharing', 'Unable to load the shares list')\n\t\t\t\tthis.loading = false\n\t\t\t\tconsole.error('Error loading the shares list', error)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Reset the current view to its default state\n\t\t */\n\t\tresetState() {\n\t\t\tclearInterval(this.expirationInterval)\n\t\t\tthis.loading = true\n\t\t\tthis.error = ''\n\t\t\tthis.sharedWithMe = {}\n\t\t\tthis.shares = []\n\t\t\tthis.linkShares = []\n\t\t},\n\n\t\t/**\n\t\t * Update sharedWithMe.subtitle with the appropriate\n\t\t * expiration time left\n\t\t *\n\t\t * @param {Share} share the sharedWith Share object\n\t\t */\n\t\tupdateExpirationSubtitle(share) {\n\t\t\tconst expiration = moment(share.expireDate).unix()\n\t\t\tthis.$set(this.sharedWithMe, 'subtitle', t('files_sharing', 'Expires {relativetime}', {\n\t\t\t\trelativetime: OC.Util.relativeModifiedDate(expiration * 1000),\n\t\t\t}))\n\n\t\t\t// share have expired\n\t\t\tif (moment().unix() > expiration) {\n\t\t\t\tclearInterval(this.expirationInterval)\n\t\t\t\t// TODO: clear ui if share is expired\n\t\t\t\tthis.$set(this.sharedWithMe, 'subtitle', t('files_sharing', 'this share just expired.'))\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Process the current shares data\n\t\t * and init shares[]\n\t\t *\n\t\t * @param {object} share the share ocs api request data\n\t\t * @param {object} share.data the request data\n\t\t */\n\t\tprocessShares({ data }) {\n\t\t\tif (data.ocs && data.ocs.data && data.ocs.data.length > 0) {\n\t\t\t\t// create Share objects and sort by newest\n\t\t\t\tconst shares = data.ocs.data\n\t\t\t\t\t.map(share => new Share(share))\n\t\t\t\t\t.sort((a, b) => b.createdTime - a.createdTime)\n\n\t\t\t\tthis.linkShares = shares.filter(share => share.type === this.SHARE_TYPES.SHARE_TYPE_LINK || share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\t\t\t\tthis.shares = shares.filter(share => share.type !== this.SHARE_TYPES.SHARE_TYPE_LINK && share.type !== this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\n\t\t\t\tconsole.debug('Processed', this.linkShares.length, 'link share(s)')\n\t\t\t\tconsole.debug('Processed', this.shares.length, 'share(s)')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Process the sharedWithMe share data\n\t\t * and init sharedWithMe\n\t\t *\n\t\t * @param {object} share the share ocs api request data\n\t\t * @param {object} share.data the request data\n\t\t */\n\t\tprocessSharedWithMe({ data }) {\n\t\t\tif (data.ocs && data.ocs.data && data.ocs.data[0]) {\n\t\t\t\tconst share = new Share(data)\n\t\t\t\tconst title = shareWithTitle(share)\n\t\t\t\tconst displayName = share.ownerDisplayName\n\t\t\t\tconst user = share.owner\n\n\t\t\t\tthis.sharedWithMe = {\n\t\t\t\t\tdisplayName,\n\t\t\t\t\ttitle,\n\t\t\t\t\tuser,\n\t\t\t\t}\n\t\t\t\tthis.reshare = share\n\n\t\t\t\t// If we have an expiration date, use it as subtitle\n\t\t\t\t// Refresh the status every 10s and clear if expired\n\t\t\t\tif (share.expireDate && moment(share.expireDate).unix() > moment().unix()) {\n\t\t\t\t\t// first update\n\t\t\t\t\tthis.updateExpirationSubtitle(share)\n\t\t\t\t\t// interval update\n\t\t\t\t\tthis.expirationInterval = setInterval(this.updateExpirationSubtitle, 10000, share)\n\t\t\t\t}\n\t\t\t} else if (this.fileInfo && this.fileInfo.shareOwnerId !== undefined ? this.fileInfo.shareOwnerId !== OC.currentUser : false) {\n\t\t\t\t// Fallback to compare owner and current user.\n\t\t\t\tthis.sharedWithMe = {\n\t\t\t\t\tdisplayName: this.fileInfo.shareOwner,\n\t\t\t\t\ttitle: t(\n\t\t\t\t\t\t'files_sharing',\n\t\t\t\t\t\t'Shared with you by {owner}',\n\t\t\t\t\t\t{ owner: this.fileInfo.shareOwner },\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t{ escape: false }\n\t\t\t\t\t),\n\t\t\t\t\tuser: this.fileInfo.shareOwnerId,\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Add a new share into the shares list\n\t\t * and return the newly created share component\n\t\t *\n\t\t * @param {Share} share the share to add to the array\n\t\t * @param {Function} [resolve] a function to run after the share is added and its component initialized\n\t\t */\n\t\taddShare(share, resolve = () => {}) {\n\t\t\t// only catching share type MAIL as link shares are added differently\n\t\t\t// meaning: not from the ShareInput\n\t\t\tif (share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\tthis.linkShares.unshift(share)\n\t\t\t} else {\n\t\t\t\tthis.shares.unshift(share)\n\t\t\t}\n\t\t\tthis.awaitForShare(share, resolve)\n\t\t},\n\n\t\t/**\n\t\t * Await for next tick and render after the list updated\n\t\t * Then resolve with the matched vue component of the\n\t\t * provided share object\n\t\t *\n\t\t * @param {Share} share newly created share\n\t\t * @param {Function} resolve a function to execute after\n\t\t */\n\t\tawaitForShare(share, resolve) {\n\t\t\tlet listComponent = this.$refs.shareList\n\t\t\t// Only mail shares comes from the input, link shares\n\t\t\t// are managed internally in the SharingLinkList component\n\t\t\tif (share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\tlistComponent = this.$refs.linkShareList\n\t\t\t}\n\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tconst newShare = listComponent.$children.find(component => component.share === share)\n\t\t\t\tif (newShare) {\n\t\t\t\t\tresolve(newShare)\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport { Type as ShareTypes } from '@nextcloud/sharing'\n\nconst shareWithTitle = function(share) {\n\tif (share.type === ShareTypes.SHARE_TYPE_GROUP) {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you and the group {group} by {owner}',\n\t\t\t{\n\t\t\t\tgroup: share.shareWithDisplayName,\n\t\t\t\towner: share.ownerDisplayName,\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{ escape: false }\n\t\t)\n\t} else if (share.type === ShareTypes.SHARE_TYPE_CIRCLE) {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you and {circle} by {owner}',\n\t\t\t{\n\t\t\t\tcircle: share.shareWithDisplayName,\n\t\t\t\towner: share.ownerDisplayName,\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{ escape: false }\n\t\t)\n\t} else if (share.type === ShareTypes.SHARE_TYPE_ROOM) {\n\t\tif (share.shareWithDisplayName) {\n\t\t\treturn t(\n\t\t\t\t'files_sharing',\n\t\t\t\t'Shared with you and the conversation {conversation} by {owner}',\n\t\t\t\t{\n\t\t\t\t\tconversation: share.shareWithDisplayName,\n\t\t\t\t\towner: share.ownerDisplayName,\n\t\t\t\t},\n\t\t\t\tundefined,\n\t\t\t\t{ escape: false }\n\t\t\t)\n\t\t} else {\n\t\t\treturn t(\n\t\t\t\t'files_sharing',\n\t\t\t\t'Shared with you in a conversation by {owner}',\n\t\t\t\t{\n\t\t\t\t\towner: share.ownerDisplayName,\n\t\t\t\t},\n\t\t\t\tundefined,\n\t\t\t\t{ escape: false }\n\t\t\t)\n\t\t}\n\t} else {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you by {owner}',\n\t\t\t{ owner: share.ownerDisplayName },\n\t\t\tundefined,\n\t\t\t{ escape: false }\n\t\t)\n\t}\n}\n\nexport { shareWithTitle }\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.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!./SharingTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SharingTab.vue?vue&type=template&id=6b75002c&\"\nimport script from \"./SharingTab.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingTab.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:{ 'icon-loading': _vm.loading }},[(_vm.error)?_c('div',{staticClass:\"emptycontent\"},[_c('div',{staticClass:\"icon icon-error\"}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.error))])]):[(_vm.isSharedWithMe)?_c('SharingEntrySimple',_vm._b({staticClass:\"sharing-entry__reshare\",scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('Avatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"user\":_vm.sharedWithMe.user,\"display-name\":_vm.sharedWithMe.displayName,\"tooltip-message\":\"\"}})]},proxy:true}],null,false,1643724538)},'SharingEntrySimple',_vm.sharedWithMe,false)):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('SharingInput',{attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo,\"link-shares\":_vm.linkShares,\"reshare\":_vm.reshare,\"shares\":_vm.shares},on:{\"add:share\":_vm.addShare}}):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('SharingLinkList',{ref:\"linkShareList\",attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo,\"shares\":_vm.linkShares}}):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('SharingList',{ref:\"shareList\",attrs:{\"shares\":_vm.shares,\"file-info\":_vm.fileInfo}}):_vm._e(),_vm._v(\" \"),(_vm.canReshare && !_vm.loading)?_c('SharingInherited',{attrs:{\"file-info\":_vm.fileInfo}}):_vm._e(),_vm._v(\" \"),_c('SharingEntryInternal',{attrs:{\"file-info\":_vm.fileInfo}}),_vm._v(\" \"),(_vm.fileInfo)?_c('CollectionList',{attrs:{\"id\":(\"\" + (_vm.fileInfo.id)),\"type\":\"file\",\"name\":_vm.fileInfo.name}}):_vm._e(),_vm._v(\" \"),_vm._l((_vm.sections),function(section,index){return _c('div',{key:index,ref:'section-' + index,refInFor:true,staticClass:\"sharingTab__additionalContent\"},[_c(section(_vm.$refs['section-'+index], _vm.fileInfo),{tag:\"component\",attrs:{\"file-info\":_vm.fileInfo}})],1)})]],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nexport default class ShareSearch {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.results = []\n\t\tconsole.debug('OCA.Sharing.ShareSearch initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ShareSearch\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new result\n\t * Mostly used by the guests app.\n\t * We should consider deprecation and add results via php ?\n\t *\n\t * @param {object} result entry to append\n\t * @param {string} [result.user] entry user\n\t * @param {string} result.displayName entry first line\n\t * @param {string} [result.desc] entry second line\n\t * @param {string} [result.icon] entry icon\n\t * @param {Function} result.handler function to run on entry selection\n\t * @param {Function} [result.condition] condition to add entry or not\n\t * @return {boolean}\n\t */\n\taddNewResult(result) {\n\t\tif (result.displayName.trim() !== ''\n\t\t\t&& typeof result.handler === 'function') {\n\t\t\tthis._state.results.push(result)\n\t\t\treturn true\n\t\t}\n\t\tconsole.error('Invalid search result provided', result)\n\t\treturn false\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nexport default class ExternalLinkActions {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.actions = []\n\t\tconsole.debug('OCA.Sharing.ExternalLinkActions initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ExternalLinkActions\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new action for the link share\n\t * Mostly used by the social sharing app.\n\t *\n\t * @param {object} action new action component to register\n\t * @return {boolean}\n\t */\n\tregisterAction(action) {\n\t\tconsole.warn('OCA.Sharing.ExternalLinkActions is deprecated, use OCA.Sharing.ExternalShareAction instead')\n\n\t\tif (typeof action === 'object' && action.icon && action.name && action.url) {\n\t\t\tthis._state.actions.push(action)\n\t\t\treturn true\n\t\t}\n\t\tconsole.error('Invalid action provided', action)\n\t\treturn false\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nexport default class ExternalShareActions {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.actions = []\n\t\tconsole.debug('OCA.Sharing.ExternalShareActions initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ExternalLinkActions\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new option/entry for the a given share type\n\t *\n\t * @param {object} action new action component to register\n\t * @param {string} action.id unique action id\n\t * @param {Function} action.data data to bind the component to\n\t * @param {Array} action.shareType list of \\@nextcloud/sharing.Types.SHARE_XXX to be mounted on\n\t * @param {object} action.handlers list of listeners\n\t * @return {boolean}\n\t */\n\tregisterAction(action) {\n\t\t// Validate action\n\t\tif (typeof action !== 'object'\n\t\t\t|| typeof action.id !== 'string'\n\t\t\t|| typeof action.data !== 'function' // () => {disabled: true}\n\t\t\t|| !Array.isArray(action.shareType) // [\\@nextcloud/sharing.Types.SHARE_TYPE_LINK, ...]\n\t\t\t|| typeof action.handlers !== 'object' // {click: () => {}, ...}\n\t\t\t|| !Object.values(action.handlers).every(handler => typeof handler === 'function')) {\n\t\t\tconsole.error('Invalid action provided', action)\n\t\t\treturn false\n\t\t}\n\n\t\t// Check duplicates\n\t\tconst hasDuplicate = this._state.actions.findIndex(check => check.id === action.id) > -1\n\t\tif (hasDuplicate) {\n\t\t\tconsole.error(`An action with the same id ${action.id} already exists`, action)\n\t\t\treturn false\n\t\t}\n\n\t\tthis._state.actions.push(action)\n\t\treturn true\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nexport default class TabSections {\n\n\t_sections\n\n\tconstructor() {\n\t\tthis._sections = []\n\t}\n\n\t/**\n\t * @param {registerSectionCallback} section To be called to mount the section to the sharing sidebar\n\t */\n\tregisterSection(section) {\n\t\tthis._sections.push(section)\n\t}\n\n\tgetSections() {\n\t\treturn this._sections\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nimport Vue from 'vue'\nimport VueClipboard from 'vue-clipboard2'\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\n\nimport SharingTab from './views/SharingTab'\nimport ShareSearch from './services/ShareSearch'\nimport ExternalLinkActions from './services/ExternalLinkActions'\nimport ExternalShareActions from './services/ExternalShareActions'\nimport TabSections from './services/TabSections'\n\n// Init Sharing Tab Service\nif (!window.OCA.Sharing) {\n\twindow.OCA.Sharing = {}\n}\nObject.assign(window.OCA.Sharing, { ShareSearch: new ShareSearch() })\nObject.assign(window.OCA.Sharing, { ExternalLinkActions: new ExternalLinkActions() })\nObject.assign(window.OCA.Sharing, { ExternalShareActions: new ExternalShareActions() })\nObject.assign(window.OCA.Sharing, { ShareTabSections: new TabSections() })\n\nVue.prototype.t = t\nVue.prototype.n = n\nVue.use(VueClipboard)\n\n// Init Sharing tab component\nconst View = Vue.extend(SharingTab)\nlet TabInstance = null\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\tif (OCA.Files && OCA.Files.Sidebar) {\n\t\tOCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({\n\t\t\tid: 'sharing',\n\t\t\tname: t('files_sharing', 'Sharing'),\n\t\t\ticon: 'icon-share',\n\n\t\t\tasync mount(el, fileInfo, context) {\n\t\t\t\tif (TabInstance) {\n\t\t\t\t\tTabInstance.$destroy()\n\t\t\t\t}\n\t\t\t\tTabInstance = new View({\n\t\t\t\t\t// Better integration with vue parent component\n\t\t\t\t\tparent: context,\n\t\t\t\t})\n\t\t\t\t// Only mount after we have all the info we need\n\t\t\t\tawait TabInstance.update(fileInfo)\n\t\t\t\tTabInstance.$mount(el)\n\t\t\t},\n\t\t\tupdate(fileInfo) {\n\t\t\t\tTabInstance.update(fileInfo)\n\t\t\t},\n\t\t\tdestroy() {\n\t\t\t\tTabInstance.$destroy()\n\t\t\t\tTabInstance = null\n\t\t\t},\n\t\t}))\n\t}\n})\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, \".error[data-v-3d9cb67e] .action-checkbox__label:before{border:1px solid var(--color-error)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharePermissionsEditor.vue\"],\"names\":[],\"mappings\":\"AA+RC,wDACC,mCAAA\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.error {\\n\\t::v-deep .action-checkbox__label:before {\\n\\t\\tborder: 1px solid var(--color-error);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".sharing-entry[data-v-11f6b64f]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-11f6b64f]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-11f6b64f]{color:var(--color-text-maxcontrast)}.sharing-entry__desc-unique[data-v-11f6b64f]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-11f6b64f]{margin-left:auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntry.vue\"],\"names\":[],\"mappings\":\"AAsZA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAED,6CACC,mCAAA,CAGF,yCACC,gBAAA\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\theight: 44px;\\n\\t&__desc {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: space-between;\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t\\t&-unique {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__actions {\\n\\t\\tmargin-left: auto;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".sharing-entry[data-v-29845767]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-29845767]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-29845767]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-29845767]{margin-left:auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryInherited.vue\"],\"names\":[],\"mappings\":\"AAgGA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAGF,yCACC,gBAAA\",\"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.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\theight: 44px;\\n\\t&__desc {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: space-between;\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__actions {\\n\\t\\tmargin-left: auto;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".sharing-entry__internal .avatar-external[data-v-854dc2c6]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}.sharing-entry__internal .icon-checkmark-color[data-v-854dc2c6]{opacity:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryInternal.vue\"],\"names\":[],\"mappings\":\"AAwGC,2DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA,CAED,gEACC,SAAA\",\"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.sharing-entry__internal {\\n\\t.avatar-external {\\n\\t\\twidth: 32px;\\n\\t\\theight: 32px;\\n\\t\\tline-height: 32px;\\n\\t\\tfont-size: 18px;\\n\\t\\tbackground-color: var(--color-text-maxcontrast);\\n\\t\\tborder-radius: 50%;\\n\\t\\tflex-shrink: 0;\\n\\t}\\n\\t.icon-checkmark-color {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".sharing-entry[data-v-a63eeae4]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-a63eeae4]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em;overflow:hidden}.sharing-entry__desc h5[data-v-a63eeae4]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.sharing-entry__desc p[data-v-a63eeae4]{color:var(--color-text-maxcontrast)}.sharing-entry:not(.sharing-entry--share) .sharing-entry__actions .new-share-link[data-v-a63eeae4]{border-top:1px solid var(--color-border)}.sharing-entry[data-v-a63eeae4] .avatar-link-share{background-color:var(--color-primary)}.sharing-entry .sharing-entry__action--public-upload[data-v-a63eeae4]{border-bottom:1px solid var(--color-border)}.sharing-entry__loading[data-v-a63eeae4]{width:44px;height:44px;margin:0;padding:14px;margin-left:auto}.sharing-entry .action-item[data-v-a63eeae4]{margin-left:auto}.sharing-entry .action-item~.action-item[data-v-a63eeae4],.sharing-entry .action-item~.sharing-entry__loading[data-v-a63eeae4]{margin-left:0}.sharing-entry .icon-checkmark-color[data-v-a63eeae4]{opacity:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryLink.vue\"],\"names\":[],\"mappings\":\"AAy2BA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,eAAA,CAEA,yCACC,sBAAA,CACA,eAAA,CACA,kBAAA,CAED,wCACC,mCAAA,CAKD,mGACC,wCAAA,CAIF,oDACC,qCAAA,CAGD,sEACC,2CAAA,CAGD,yCACC,UAAA,CACA,WAAA,CACA,QAAA,CACA,YAAA,CACA,gBAAA,CAKD,6CACC,gBAAA,CACA,+HAEC,aAAA,CAIF,sDACC,SAAA\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tmin-height: 44px;\\n\\t&__desc {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: space-between;\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\toverflow: hidden;\\n\\n\\t\\th5 {\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t}\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\n\\t&:not(.sharing-entry--share) &__actions {\\n\\t\\t.new-share-link {\\n\\t\\t\\tborder-top: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t::v-deep .avatar-link-share {\\n\\t\\tbackground-color: var(--color-primary);\\n\\t}\\n\\n\\t.sharing-entry__action--public-upload {\\n\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\t}\\n\\n\\t&__loading {\\n\\t\\twidth: 44px;\\n\\t\\theight: 44px;\\n\\t\\tmargin: 0;\\n\\t\\tpadding: 14px;\\n\\t\\tmargin-left: auto;\\n\\t}\\n\\n\\t// put menus to the left\\n\\t// but only the first one\\n\\t.action-item {\\n\\t\\tmargin-left: auto;\\n\\t\\t~ .action-item,\\n\\t\\t~ .sharing-entry__loading {\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t}\\n\\t}\\n\\n\\t.icon-checkmark-color {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".sharing-entry[data-v-1436bf4a]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-1436bf4a]{padding:8px;line-height:1.2em;position:relative;flex:1 1;min-width:0}.sharing-entry__desc h5[data-v-1436bf4a]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:inherit}.sharing-entry__desc p[data-v-1436bf4a]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-1436bf4a]{margin-left:auto !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntrySimple.vue\"],\"names\":[],\"mappings\":\"AA4EA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,WAAA,CACA,iBAAA,CACA,iBAAA,CACA,QAAA,CACA,WAAA,CACA,yCACC,kBAAA,CACA,sBAAA,CACA,eAAA,CACA,iBAAA,CAED,wCACC,mCAAA,CAGF,yCACC,2BAAA\",\"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.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tmin-height: 44px;\\n\\t&__desc {\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\tposition: relative;\\n\\t\\tflex: 1 1;\\n\\t\\tmin-width: 0;\\n\\t\\th5 {\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\tmax-width: inherit;\\n\\t\\t}\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__actions {\\n\\t\\tmargin-left: auto !important;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".sharing-input{width:100%;margin:10px 0}.sharing-input .multiselect__option span[lookup] .avatardiv{background-image:var(--icon-search-fff);background-repeat:no-repeat;background-position:center;background-color:var(--color-text-maxcontrast) !important}.sharing-input .multiselect__option span[lookup] .avatardiv div{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingInput.vue\"],\"names\":[],\"mappings\":\"AA0gBA,eACC,UAAA,CACA,aAAA,CAKE,4DACC,uCAAA,CACA,2BAAA,CACA,0BAAA,CACA,yDAAA,CACA,gEACC,YAAA\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-input {\\n\\twidth: 100%;\\n\\tmargin: 10px 0;\\n\\n\\t// properly style the lookup entry\\n\\t.multiselect__option {\\n\\t\\tspan[lookup] {\\n\\t\\t\\t.avatardiv {\\n\\t\\t\\t\\tbackground-image: var(--icon-search-fff);\\n\\t\\t\\t\\tbackground-repeat: no-repeat;\\n\\t\\t\\t\\tbackground-position: center;\\n\\t\\t\\t\\tbackground-color: var(--color-text-maxcontrast) !important;\\n\\t\\t\\t\\tdiv {\\n\\t\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".sharing-entry__inherited .avatar-shared[data-v-49ffd834]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/views/SharingInherited.vue\"],\"names\":[],\"mappings\":\"AA6JC,0DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA\",\"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.sharing-entry__inherited {\\n\\t.avatar-shared {\\n\\t\\twidth: 32px;\\n\\t\\theight: 32px;\\n\\t\\tline-height: 32px;\\n\\t\\tfont-size: 18px;\\n\\t\\tbackground-color: var(--color-text-maxcontrast);\\n\\t\\tborder-radius: 50%;\\n\\t\\tflex-shrink: 0;\\n\\t}\\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 = 7870;","__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\t7870: 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));","__webpack_require__.nc = undefined;","// 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__(13610); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","Config","document","getElementById","dataset","allowPublicUpload","value","OC","appConfig","core","federatedCloudShareDoc","expireDateString","this","isDefaultExpireDateEnabled","date","window","moment","utc","expireAfterDays","defaultExpireDate","add","format","isDefaultInternalExpireDateEnabled","defaultInternalExpireDate","isDefaultRemoteExpireDateEnabled","defaultRemoteExpireDate","enforcePasswordForPublicLink","enableLinkPasswordByDefault","defaultExpireDateEnforced","defaultExpireDateEnabled","defaultInternalExpireDateEnforced","defaultRemoteExpireDateEnforced","defaultInternalExpireDateEnabled","remoteShareAllowed","capabilities","getCapabilities","undefined","files_sharing","sharebymail","public","enabled","resharingAllowed","password","enforced","sharee","always_show_unique","allowGroupSharing","parseInt","config","password_policy","Share","ocsData","ocs","data","hide_download","mail_send","_share","id","share_type","permissions","uid_owner","displayname_owner","share_with","share_with_displayname","share_with_displayname_unique","share_with_link","share_with_avatar","uid_file_owner","displayname_file_owner","stime","expiration","token","note","label","state","password_expiration_time","passwordExpirationTime","send_password_by_talk","sendPasswordByTalk","path","item_type","mimetype","file_source","file_target","file_parent","PERMISSION_READ","PERMISSION_CREATE","PERMISSION_DELETE","PERMISSION_UPDATE","PERMISSION_SHARE","can_edit","can_delete","via_fileid","via_path","parent","storage_id","storage","item_source","status","SHARE_TYPES","ShareTypes","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_h","$createElement","_c","_self","staticClass","_t","_v","directives","name","rawName","expression","_s","title","subtitle","_e","$slots","attrs","t","internalLinkSubtitle","scopedSlots","_u","key","fn","proxy","ref","internalLink","copied","copySuccess","on","$event","preventDefault","copyLink","apply","arguments","clipboardTooltip","passwordSet","passwordPolicy","api","generate","axios","request","console","info","Array","fill","reduce","prev","curr","charAt","Math","floor","random","length","shareUrl","generateOcsUrl","methods","createShare","shareType","shareWith","publicUpload","expireDate","error","errorMessage","response","meta","message","Notification","showTemporary","type","deleteShare","updateShare","properties","Error","canReshare","loading","inputPlaceholder","asyncFind","addShare","noResultText","mixins","SharesRequests","props","fileInfo","Object","default","required","share","isUnique","Boolean","errors","saving","open","updateQueue","PQueue","concurrency","reactiveState","computed","hasNote","get","set","dateTomorrow","lang","weekdaysShort","dayNamesShort","monthsShort","monthNamesShort","formatLocale","firstDayOfWeek","firstDay","weekdaysMin","monthFormat","isShareOwner","owner","getCurrentUser","uid","checkShare","trim","expirationDate","isValid","onExpirationChange","queueUpdate","onExpirationDisable","onNoteChange","$set","onNoteSubmit","newNote","$delete","onDelete","debug","$emit","propertyNames","map","p","toString","updatedShare","indexOf","onSyncError","property","propertyEl","$refs","$el","focusable","querySelector","focus","debounceQueueUpdate","debounce","disabledDate","dateMoment","isBefore","dateMaxEnforced","isSameOrAfter","shareWithDisplayName","initiator","ownerDisplayName","viaPath","viaFileid","viaFileTargetUrl","folder","viaFolderName","mainTitle","subTitle","showInheritedSharesIcon","stopPropagation","toggleInheritedShares","toggleTooltip","_l","is","_g","_b","tag","action","handlers","text","ATOMIC_PERMISSIONS","NONE","READ","UPDATE","CREATE","DELETE","SHARE","BUNDLED_PERMISSIONS","READ_ONLY","UPLOAD_AND_UPDATE","FILE_DROP","ALL","hasPermissions","initialPermissionSet","permissionsToCheck","permissionsSetIsValid","permissionsSet","togglePermissions","permissionsToToggle","permissionsToSubtract","subtractPermissions","permissionsToAdd","addPermissions","permissionSet","isFolder","shareHasPermissions","atomicPermissions","toggleSharePermissions","fileHasCreatePermission","isPublicUploadEnabled","showCustomPermissionsForm","class","sharePermissionsSetIsValid","canToggleSharePermissions","sharePermissionEqual","bundledPermissions","randomFormName","setSharePermissions","sharePermissionsIsBundle","sharePermissionsSummary","isEmailShareType","shareLink","pending","pendingPassword","pendingExpirationDate","onMenuClose","canEdit","content","show","trigger","defaultContainer","modifiers","newLabel","onLabelChange","onLabelSubmit","hideDownload","isPasswordProtected","onPasswordDisable","hasUnsavedPassword","newPassword","onPasswordChange","onPasswordSubmit","isPasswordProtectedByTalk","canTogglePasswordProtectedByTalkAvailable","onPasswordProtectedByTalkChange","hasExpirationDate","isDefaultExpireDateEnforced","index","icon","url","onNewLinkShare","isPasswordPolicyEnabled","minLength","model","callback","$$v","onCancel","hasLinkShares","shares","awaitForShare","removeShare","SHARE_TYPE_USER","shareWithAvatar","shareWithLink","shareWithDisplayNameUnique","permissionsEdit","canSetEdit","canCreate","permissionsCreate","canSetCreate","canDelete","permissionsDelete","canSetDelete","permissionsShare","canSetReshare","isDefaultInternalExpireDateEnforced","group","escape","circle","conversation","sharedWithMe","user","displayName","linkShares","reshare","section","refInFor","ShareSearch","_state","results","result","handler","push","ExternalLinkActions","actions","warn","ExternalShareActions","isArray","values","every","findIndex","check","TabSections","_sections","OCA","Sharing","assign","ShareTabSections","Vue","n","VueClipboard","View","SharingTab","TabInstance","addEventListener","Files","Sidebar","registerTab","Tab","mount","el","context","$destroy","update","$mount","destroy","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","call","m","amdD","amdO","O","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","keys","splice","r","getter","__esModule","d","a","definition","o","defineProperty","enumerable","g","globalThis","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/files_sharing-personal-settings.js b/dist/files_sharing-personal-settings.js
index 0ae78a8ff4e..b8325f7cabf 100644
--- a/dist/files_sharing-personal-settings.js
+++ b/dist/files_sharing-personal-settings.js
@@ -1,3 +1,3 @@
/*! For license information please see files_sharing-personal-settings.js.LICENSE.txt */
-!function(){"use strict";var n,e={71679:function(n,e,r){var a=r(20144),o=r(22200),i=r(79753),s=r(16453),c=r(26932),l=r(4820),u=r(62520),d=r.n(u);function f(n,e,t,r,a,o,i){try{var s=n[o](i),c=s.value}catch(n){return void t(n)}s.done?e(c):Promise.resolve(c).then(r,a)}var p=(0,s.loadState)("files_sharing","default_share_folder","/"),h=(0,s.loadState)("files_sharing","share_folder",p),g={name:"SelectShareFolderDialogue",data:function(){return{directory:h,defaultDirectory:p}},computed:{readableDirectory:function(){return this.directory?this.directory:"/"}},methods:{pickFolder:function(){var n,e=this;return(n=regeneratorRuntime.mark((function n(){var r,a;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return r=(0,c.fn)(t("files","Choose a default folder for accepted shares")).startAt(e.readableDirectory).setMultiSelect(!1).setModal(!0).setType(1).setMimeTypeFilter(["httpd/unix-directory"]).allowDirectories().build(),n.prev=1,n.next=4,r.pick();case 4:if(n.t0=n.sent,n.t0){n.next=7;break}n.t0="/";case 7:if((a=n.t0).startsWith("/")){n.next=10;break}throw new Error(t("files","Invalid path selected"));case 10:return e.directory=d().normalize(a),n.next=13,l.default.put((0,i.generateUrl)("/apps/files_sharing/settings/shareFolder"),{shareFolder:e.directory});case 13:n.next=18;break;case 15:n.prev=15,n.t1=n.catch(1),(0,c.x2)(n.t1.message||t("files","Unknown error"));case 18:case"end":return n.stop()}}),n,null,[[1,15]])})),function(){var e=this,t=arguments;return new Promise((function(r,a){var o=n.apply(e,t);function i(n){f(o,r,a,i,s,"next",n)}function s(n){f(o,r,a,i,s,"throw",n)}i(void 0)}))})()},resetFolder:function(){this.directory=this.defaultDirectory,l.default.delete((0,i.generateUrl)("/apps/files_sharing/settings/shareFolder"))}}},v=g,m=r(93379),A=r.n(m),_=r(7795),b=r.n(_),y=r(90569),C=r.n(y),x=r(3565),w=r.n(x),k=r(19216),S=r.n(k),D=r(44589),P=r.n(D),F=r(39598),O={};O.styleTagTransform=P(),O.setAttributes=w(),O.insert=C().bind(null,"head"),O.domAPI=b(),O.insertStyleElement=S(),A()(F.Z,O),F.Z&&F.Z.locals&&F.Z.locals;var Z=r(51900),T=(0,Z.Z)(v,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("div",{staticClass:"share-folder"},[t("span",[n._v(n._s(n.t("files_sharing","Set default folder for accepted shares"))+" ")]),n._v(" "),t("form",{staticClass:"share-folder__form",on:{reset:function(e){return e.preventDefault(),e.stopPropagation(),n.resetFolder.apply(null,arguments)}}},[t("input",{staticClass:"share-folder__picker",attrs:{type:"text",placeholder:n.readableDirectory},on:{click:function(e){return e.preventDefault(),n.pickFolder.apply(null,arguments)}}}),n._v(" "),n.readableDirectory!==n.defaultDirectory?t("input",{staticClass:"share-folder__reset",attrs:{type:"reset","aria-label":n.t("files_sharing","Reset folder to system default")},domProps:{value:n.t("files_sharing","Reset")}}):n._e()])])}),[],!1,null,"1b20ac1d",null);function E(n,e,t,r,a,o,i){try{var s=n[o](i),c=s.value}catch(n){return void t(n)}s.done?e(c):Promise.resolve(c).then(r,a)}var R={name:"PersonalSettings",components:{SelectShareFolderDialogue:T.exports},data:function(){return{accepting:(0,s.loadState)("files_sharing","accept_default"),enforceAcceptShares:(0,s.loadState)("files_sharing","enforce_accept"),allowCustomDirectory:(0,s.loadState)("files_sharing","allow_custom_share_folder")}},methods:{toggleEnabled:function(){var n,e=this;return(n=regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,l.default.put((0,i.generateUrl)("/apps/files_sharing/settings/defaultAccept"),{accept:e.accepting});case 3:n.next=9;break;case 5:n.prev=5,n.t0=n.catch(0),(0,c.x2)(t("sharing","Error while toggling options")),console.error(n.t0);case 9:case"end":return n.stop()}}),n,null,[[0,5]])})),function(){var e=this,t=arguments;return new Promise((function(r,a){var o=n.apply(e,t);function i(n){E(o,r,a,i,s,"next",n)}function s(n){E(o,r,a,i,s,"throw",n)}i(void 0)}))})()}}},j=R,M=r(59936),B={};B.styleTagTransform=P(),B.setAttributes=w(),B.insert=C().bind(null,"head"),B.domAPI=b(),B.insertStyleElement=S(),A()(M.Z,B),M.Z&&M.Z.locals&&M.Z.locals;var I=(0,Z.Z)(j,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return!n.enforceAcceptShares||n.allowCustomDirectory?t("div",{staticClass:"section",attrs:{id:"files-sharing-personal-settings"}},[t("h2",[n._v(n._s(n.t("files_sharing","Sharing")))]),n._v(" "),n.enforceAcceptShares?n._e():t("p",[t("input",{directives:[{name:"model",rawName:"v-model",value:n.accepting,expression:"accepting"}],staticClass:"checkbox",attrs:{id:"files-sharing-personal-settings-accept",type:"checkbox"},domProps:{checked:Array.isArray(n.accepting)?n._i(n.accepting,null)>-1:n.accepting},on:{change:[function(e){var t=n.accepting,r=e.target,a=!!r.checked;if(Array.isArray(t)){var o=n._i(t,null);r.checked?o<0&&(n.accepting=t.concat([null])):o>-1&&(n.accepting=t.slice(0,o).concat(t.slice(o+1)))}else n.accepting=a},n.toggleEnabled]}}),n._v(" "),t("label",{attrs:{for:"files-sharing-personal-settings-accept"}},[n._v(n._s(n.t("files_sharing","Accept user and group shares by default")))])]),n._v(" "),n.allowCustomDirectory?t("p",[t("SelectShareFolderDialogue")],1):n._e()]):n._e()}),[],!1,null,"188f517d",null).exports;r.nc=btoa((0,o.getRequestToken)()),a.default.prototype.t=t,(new(a.default.extend(I))).$mount("#files-sharing-personal-settings")},59936:function(n,e,t){var r=t(87537),a=t.n(r),o=t(23645),i=t.n(o)()(a());i.push([n.id,"p[data-v-188f517d]{margin-top:12px;margin-bottom:12px}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/PersonalSettings.vue"],names:[],mappings:"AAgFA,mBACC,eAAA,CACA,kBAAA",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\np {\n\tmargin-top: 12px;\n\tmargin-bottom: 12px;\n}\n"],sourceRoot:""}]),e.Z=i},39598:function(n,e,t){var r=t(87537),a=t.n(r),o=t(23645),i=t.n(o)()(a());i.push([n.id,".share-folder__form[data-v-1b20ac1d]{display:flex}.share-folder__picker[data-v-1b20ac1d]{cursor:pointer;min-width:266px}.share-folder__reset[data-v-1b20ac1d]{background-color:rgba(0,0,0,0);border:none;font-weight:normal;text-decoration:underline;font-size:inherit}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SelectShareFolderDialogue.vue"],names:[],mappings:"AA0GC,qCACC,YAAA,CAGD,uCACC,cAAA,CACA,eAAA,CAID,sCACC,8BAAA,CACA,WAAA,CACA,kBAAA,CACA,yBAAA,CACA,iBAAA",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.share-folder {\n\t&__form {\n\t\tdisplay: flex;\n\t}\n\n\t&__picker {\n\t\tcursor: pointer;\n\t\tmin-width: 266px;\n\t}\n\n\t// Make the reset button looks like text\n\t&__reset {\n\t\tbackground-color: transparent;\n\t\tborder: none;\n\t\tfont-weight: normal;\n\t\ttext-decoration: underline;\n\t\tfont-size: inherit;\n\t}\n}\n"],sourceRoot:""}]),e.Z=i}},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(e,t,r,o){if(!t){var i=1/0;for(u=0;u<n.length;u++){t=n[u][0],r=n[u][1],o=n[u][2];for(var s=!0,c=0;c<t.length;c++)(!1&o||i>=o)&&Object.keys(a.O).every((function(n){return a.O[n](t[c])}))?t.splice(c--,1):(s=!1,o<i&&(i=o));if(s){n.splice(u--,1);var l=r();void 0!==l&&(e=l)}}return e}o=o||0;for(var u=n.length;u>0&&n[u-1][2]>o;u--)n[u]=n[u-1];n[u]=[t,r,o]},a.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return a.d(e,{a:e}),e},a.d=function(n,e){for(var t in e)a.o(e,t)&&!a.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:e[t]})},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,e){return Object.prototype.hasOwnProperty.call(n,e)},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=8330,function(){a.b=document.baseURI||self.location.href;var n={8330:0};a.O.j=function(e){return 0===n[e]};var e=function(e,t){var r,o,i=t[0],s=t[1],c=t[2],l=0;if(i.some((function(e){return 0!==n[e]}))){for(r in s)a.o(s,r)&&(a.m[r]=s[r]);if(c)var u=c(a)}for(e&&e(t);l<i.length;l++)o=i[l],a.o(n,o)&&n[o]&&n[o][0](),n[o]=0;return a.O(u)},t=self.webpackChunknextcloud=self.webpackChunknextcloud||[];t.forEach(e.bind(null,0)),t.push=e.bind(null,t.push.bind(t))}();var o=a.O(void 0,[7874],(function(){return a(71679)}));o=a.O(o)}();
-//# sourceMappingURL=files_sharing-personal-settings.js.map?v=3d621b7678e0cac398f3 \ No newline at end of file
+!function(){"use strict";var n,e={71679:function(n,e,r){var a=r(20144),o=r(22200),i=r(79753),s=r(16453),c=r(26932),l=r(4820),u=r(62520),d=r.n(u);function f(n,e,t,r,a,o,i){try{var s=n[o](i),c=s.value}catch(n){return void t(n)}s.done?e(c):Promise.resolve(c).then(r,a)}var p=(0,s.loadState)("files_sharing","default_share_folder","/"),h=(0,s.loadState)("files_sharing","share_folder",p),g={name:"SelectShareFolderDialogue",data:function(){return{directory:h,defaultDirectory:p}},computed:{readableDirectory:function(){return this.directory?this.directory:"/"}},methods:{pickFolder:function(){var n,e=this;return(n=regeneratorRuntime.mark((function n(){var r,a;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return r=(0,c.fn)(t("files","Choose a default folder for accepted shares")).startAt(e.readableDirectory).setMultiSelect(!1).setModal(!0).setType(1).setMimeTypeFilter(["httpd/unix-directory"]).allowDirectories().build(),n.prev=1,n.next=4,r.pick();case 4:if(n.t0=n.sent,n.t0){n.next=7;break}n.t0="/";case 7:if((a=n.t0).startsWith("/")){n.next=10;break}throw new Error(t("files","Invalid path selected"));case 10:return e.directory=d().normalize(a),n.next=13,l.default.put((0,i.generateUrl)("/apps/files_sharing/settings/shareFolder"),{shareFolder:e.directory});case 13:n.next=18;break;case 15:n.prev=15,n.t1=n.catch(1),(0,c.x2)(n.t1.message||t("files","Unknown error"));case 18:case"end":return n.stop()}}),n,null,[[1,15]])})),function(){var e=this,t=arguments;return new Promise((function(r,a){var o=n.apply(e,t);function i(n){f(o,r,a,i,s,"next",n)}function s(n){f(o,r,a,i,s,"throw",n)}i(void 0)}))})()},resetFolder:function(){this.directory=this.defaultDirectory,l.default.delete((0,i.generateUrl)("/apps/files_sharing/settings/shareFolder"))}}},v=g,m=r(93379),A=r.n(m),_=r(7795),b=r.n(_),y=r(90569),C=r.n(y),x=r(3565),w=r.n(x),k=r(19216),S=r.n(k),D=r(44589),P=r.n(D),F=r(39598),O={};O.styleTagTransform=P(),O.setAttributes=w(),O.insert=C().bind(null,"head"),O.domAPI=b(),O.insertStyleElement=S(),A()(F.Z,O),F.Z&&F.Z.locals&&F.Z.locals;var Z=r(51900),T=(0,Z.Z)(v,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("div",{staticClass:"share-folder"},[t("span",[n._v(n._s(n.t("files_sharing","Set default folder for accepted shares"))+" ")]),n._v(" "),t("form",{staticClass:"share-folder__form",on:{reset:function(e){return e.preventDefault(),e.stopPropagation(),n.resetFolder.apply(null,arguments)}}},[t("input",{staticClass:"share-folder__picker",attrs:{type:"text",placeholder:n.readableDirectory},on:{click:function(e){return e.preventDefault(),n.pickFolder.apply(null,arguments)}}}),n._v(" "),n.readableDirectory!==n.defaultDirectory?t("input",{staticClass:"share-folder__reset",attrs:{type:"reset","aria-label":n.t("files_sharing","Reset folder to system default")},domProps:{value:n.t("files_sharing","Reset")}}):n._e()])])}),[],!1,null,"1b20ac1d",null);function E(n,e,t,r,a,o,i){try{var s=n[o](i),c=s.value}catch(n){return void t(n)}s.done?e(c):Promise.resolve(c).then(r,a)}var R={name:"PersonalSettings",components:{SelectShareFolderDialogue:T.exports},data:function(){return{accepting:(0,s.loadState)("files_sharing","accept_default"),enforceAcceptShares:(0,s.loadState)("files_sharing","enforce_accept"),allowCustomDirectory:(0,s.loadState)("files_sharing","allow_custom_share_folder")}},methods:{toggleEnabled:function(){var n,e=this;return(n=regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,l.default.put((0,i.generateUrl)("/apps/files_sharing/settings/defaultAccept"),{accept:e.accepting});case 3:n.next=9;break;case 5:n.prev=5,n.t0=n.catch(0),(0,c.x2)(t("sharing","Error while toggling options")),console.error(n.t0);case 9:case"end":return n.stop()}}),n,null,[[0,5]])})),function(){var e=this,t=arguments;return new Promise((function(r,a){var o=n.apply(e,t);function i(n){E(o,r,a,i,s,"next",n)}function s(n){E(o,r,a,i,s,"throw",n)}i(void 0)}))})()}}},j=R,M=r(59936),B={};B.styleTagTransform=P(),B.setAttributes=w(),B.insert=C().bind(null,"head"),B.domAPI=b(),B.insertStyleElement=S(),A()(M.Z,B),M.Z&&M.Z.locals&&M.Z.locals;var I=(0,Z.Z)(j,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return!n.enforceAcceptShares||n.allowCustomDirectory?t("div",{staticClass:"section",attrs:{id:"files-sharing-personal-settings"}},[t("h2",[n._v(n._s(n.t("files_sharing","Sharing")))]),n._v(" "),n.enforceAcceptShares?n._e():t("p",[t("input",{directives:[{name:"model",rawName:"v-model",value:n.accepting,expression:"accepting"}],staticClass:"checkbox",attrs:{id:"files-sharing-personal-settings-accept",type:"checkbox"},domProps:{checked:Array.isArray(n.accepting)?n._i(n.accepting,null)>-1:n.accepting},on:{change:[function(e){var t=n.accepting,r=e.target,a=!!r.checked;if(Array.isArray(t)){var o=n._i(t,null);r.checked?o<0&&(n.accepting=t.concat([null])):o>-1&&(n.accepting=t.slice(0,o).concat(t.slice(o+1)))}else n.accepting=a},n.toggleEnabled]}}),n._v(" "),t("label",{attrs:{for:"files-sharing-personal-settings-accept"}},[n._v(n._s(n.t("files_sharing","Accept user and group shares by default")))])]),n._v(" "),n.allowCustomDirectory?t("p",[t("SelectShareFolderDialogue")],1):n._e()]):n._e()}),[],!1,null,"188f517d",null).exports;r.nc=btoa((0,o.getRequestToken)()),a.default.prototype.t=t,(new(a.default.extend(I))).$mount("#files-sharing-personal-settings")},59936:function(n,e,t){var r=t(87537),a=t.n(r),o=t(23645),i=t.n(o)()(a());i.push([n.id,"p[data-v-188f517d]{margin-top:12px;margin-bottom:12px}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/PersonalSettings.vue"],names:[],mappings:"AAgFA,mBACC,eAAA,CACA,kBAAA",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\np {\n\tmargin-top: 12px;\n\tmargin-bottom: 12px;\n}\n"],sourceRoot:""}]),e.Z=i},39598:function(n,e,t){var r=t(87537),a=t.n(r),o=t(23645),i=t.n(o)()(a());i.push([n.id,".share-folder__form[data-v-1b20ac1d]{display:flex}.share-folder__picker[data-v-1b20ac1d]{cursor:pointer;min-width:266px}.share-folder__reset[data-v-1b20ac1d]{background-color:rgba(0,0,0,0);border:none;font-weight:normal;text-decoration:underline;font-size:inherit}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SelectShareFolderDialogue.vue"],names:[],mappings:"AA0GC,qCACC,YAAA,CAGD,uCACC,cAAA,CACA,eAAA,CAID,sCACC,8BAAA,CACA,WAAA,CACA,kBAAA,CACA,yBAAA,CACA,iBAAA",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.share-folder {\n\t&__form {\n\t\tdisplay: flex;\n\t}\n\n\t&__picker {\n\t\tcursor: pointer;\n\t\tmin-width: 266px;\n\t}\n\n\t// Make the reset button looks like text\n\t&__reset {\n\t\tbackground-color: transparent;\n\t\tborder: none;\n\t\tfont-weight: normal;\n\t\ttext-decoration: underline;\n\t\tfont-size: inherit;\n\t}\n}\n"],sourceRoot:""}]),e.Z=i}},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(e,t,r,o){if(!t){var i=1/0;for(u=0;u<n.length;u++){t=n[u][0],r=n[u][1],o=n[u][2];for(var s=!0,c=0;c<t.length;c++)(!1&o||i>=o)&&Object.keys(a.O).every((function(n){return a.O[n](t[c])}))?t.splice(c--,1):(s=!1,o<i&&(i=o));if(s){n.splice(u--,1);var l=r();void 0!==l&&(e=l)}}return e}o=o||0;for(var u=n.length;u>0&&n[u-1][2]>o;u--)n[u]=n[u-1];n[u]=[t,r,o]},a.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return a.d(e,{a:e}),e},a.d=function(n,e){for(var t in e)a.o(e,t)&&!a.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:e[t]})},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,e){return Object.prototype.hasOwnProperty.call(n,e)},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=8330,function(){a.b=document.baseURI||self.location.href;var n={8330:0};a.O.j=function(e){return 0===n[e]};var e=function(e,t){var r,o,i=t[0],s=t[1],c=t[2],l=0;if(i.some((function(e){return 0!==n[e]}))){for(r in s)a.o(s,r)&&(a.m[r]=s[r]);if(c)var u=c(a)}for(e&&e(t);l<i.length;l++)o=i[l],a.o(n,o)&&n[o]&&n[o][0](),n[o]=0;return a.O(u)},t=self.webpackChunknextcloud=self.webpackChunknextcloud||[];t.forEach(e.bind(null,0)),t.push=e.bind(null,t.push.bind(t))}(),a.nc=void 0;var o=a.O(void 0,[7874],(function(){return a(71679)}));o=a.O(o)}();
+//# sourceMappingURL=files_sharing-personal-settings.js.map?v=b2f7dad8215b4afcb9ad \ No newline at end of file
diff --git a/dist/files_sharing-personal-settings.js.map b/dist/files_sharing-personal-settings.js.map
index 65cca429f58..b52dfd25290 100644
--- a/dist/files_sharing-personal-settings.js.map
+++ b/dist/files_sharing-personal-settings.js.map
@@ -1 +1 @@
-{"version":3,"file":"files_sharing-personal-settings.js?v=3d621b7678e0cac398f3","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/files_sharing/src/components/SelectShareFolderDialogue.vue","webpack:///nextcloud/apps/files_sharing/src/components/SelectShareFolderDialogue.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SelectShareFolderDialogue.vue?054f","webpack://nextcloud/./apps/files_sharing/src/components/SelectShareFolderDialogue.vue?c5e4","webpack:///nextcloud/apps/files_sharing/src/components/SelectShareFolderDialogue.vue?vue&type=template&id=1b20ac1d&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/PersonalSettings.vue","webpack:///nextcloud/apps/files_sharing/src/components/PersonalSettings.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/PersonalSettings.vue?95f8","webpack://nextcloud/./apps/files_sharing/src/components/PersonalSettings.vue?4796","webpack:///nextcloud/apps/files_sharing/src/components/PersonalSettings.vue?vue&type=template&id=188f517d&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/personal-settings.js","webpack:///nextcloud/apps/files_sharing/src/components/PersonalSettings.vue?vue&type=style&index=0&id=188f517d&scoped=true&lang=scss&","webpack:///nextcloud/apps/files_sharing/src/components/SelectShareFolderDialogue.vue?vue&type=style&index=0&id=1b20ac1d&scoped=true&lang=scss&","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 Hinrich Mahler <nextcloud@mahlerhome.de>\n -\n - @license GNU AGPL version 3 or any later version\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\n<template>\n\t<div class=\"share-folder\">\n\t\t<span>{{ t('files_sharing', 'Set default folder for accepted shares') }} </span>\n\n\t\t<!-- Folder picking form -->\n\t\t<form class=\"share-folder__form\" @reset.prevent.stop=\"resetFolder\">\n\t\t\t<input class=\"share-folder__picker\"\n\t\t\t\ttype=\"text\"\n\t\t\t\t:placeholder=\"readableDirectory\"\n\t\t\t\t@click.prevent=\"pickFolder\">\n\n\t\t\t<!-- Show reset button if folder is different -->\n\t\t\t<input v-if=\"readableDirectory !== defaultDirectory\"\n\t\t\t\tclass=\"share-folder__reset\"\n\t\t\t\ttype=\"reset\"\n\t\t\t\t:value=\"t('files_sharing', 'Reset')\"\n\t\t\t\t:aria-label=\"t('files_sharing', 'Reset folder to system default')\">\n\t\t</form>\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport path from 'path'\nimport { generateUrl } from '@nextcloud/router'\nimport { getFilePickerBuilder, showError } from '@nextcloud/dialogs'\nimport { loadState } from '@nextcloud/initial-state'\n\nconst defaultDirectory = loadState('files_sharing', 'default_share_folder', '/')\nconst directory = loadState('files_sharing', 'share_folder', defaultDirectory)\n\nexport default {\n\tname: 'SelectShareFolderDialogue',\n\tdata() {\n\t\treturn {\n\t\t\tdirectory,\n\t\t\tdefaultDirectory,\n\t\t}\n\t},\n\tcomputed: {\n\t\treadableDirectory() {\n\t\t\tif (!this.directory) {\n\t\t\t\treturn '/'\n\t\t\t}\n\t\t\treturn this.directory\n\t\t},\n\t},\n\tmethods: {\n\t\tasync pickFolder() {\n\n\t\t\t// Setup file picker\n\t\t\tconst picker = getFilePickerBuilder(t('files', 'Choose a default folder for accepted shares'))\n\t\t\t\t.startAt(this.readableDirectory)\n\t\t\t\t.setMultiSelect(false)\n\t\t\t\t.setModal(true)\n\t\t\t\t.setType(1)\n\t\t\t\t.setMimeTypeFilter(['httpd/unix-directory'])\n\t\t\t\t.allowDirectories()\n\t\t\t\t.build()\n\n\t\t\ttry {\n\t\t\t\t// Init user folder picking\n\t\t\t\tconst dir = await picker.pick() || '/'\n\t\t\t\tif (!dir.startsWith('/')) {\n\t\t\t\t\tthrow new Error(t('files', 'Invalid path selected'))\n\t\t\t\t}\n\n\t\t\t\t// Fix potential path issues and save results\n\t\t\t\tthis.directory = path.normalize(dir)\n\t\t\t\tawait axios.put(generateUrl('/apps/files_sharing/settings/shareFolder'), {\n\t\t\t\t\tshareFolder: this.directory,\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tshowError(error.message || t('files', 'Unknown error'))\n\t\t\t}\n\t\t},\n\n\t\tresetFolder() {\n\t\t\tthis.directory = this.defaultDirectory\n\t\t\taxios.delete(generateUrl('/apps/files_sharing/settings/shareFolder'))\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.share-folder {\n\t&__form {\n\t\tdisplay: flex;\n\t}\n\n\t&__picker {\n\t\tcursor: pointer;\n\t\tmin-width: 266px;\n\t}\n\n\t// Make the reset button looks like text\n\t&__reset {\n\t\tbackground-color: transparent;\n\t\tborder: none;\n\t\tfont-weight: normal;\n\t\ttext-decoration: underline;\n\t\tfont-size: inherit;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectShareFolderDialogue.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!./SelectShareFolderDialogue.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!./SelectShareFolderDialogue.vue?vue&type=style&index=0&id=1b20ac1d&scoped=true&lang=scss&\";\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!./SelectShareFolderDialogue.vue?vue&type=style&index=0&id=1b20ac1d&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SelectShareFolderDialogue.vue?vue&type=template&id=1b20ac1d&scoped=true&\"\nimport script from \"./SelectShareFolderDialogue.vue?vue&type=script&lang=js&\"\nexport * from \"./SelectShareFolderDialogue.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SelectShareFolderDialogue.vue?vue&type=style&index=0&id=1b20ac1d&scoped=true&lang=scss&\"\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 \"1b20ac1d\",\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:\"share-folder\"},[_c('span',[_vm._v(_vm._s(_vm.t('files_sharing', 'Set default folder for accepted shares'))+\" \")]),_vm._v(\" \"),_c('form',{staticClass:\"share-folder__form\",on:{\"reset\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.resetFolder.apply(null, arguments)}}},[_c('input',{staticClass:\"share-folder__picker\",attrs:{\"type\":\"text\",\"placeholder\":_vm.readableDirectory},on:{\"click\":function($event){$event.preventDefault();return _vm.pickFolder.apply(null, arguments)}}}),_vm._v(\" \"),(_vm.readableDirectory !== _vm.defaultDirectory)?_c('input',{staticClass:\"share-folder__reset\",attrs:{\"type\":\"reset\",\"aria-label\":_vm.t('files_sharing', 'Reset folder to system default')},domProps:{\"value\":_vm.t('files_sharing', 'Reset')}}):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2019 Roeland Jago Douma <roeland@famdouma.nl>\n -\n - @author 2019 Roeland Jago Douma <roeland@famdouma.nl>\n - @author Hinrich Mahler <nextcloud@mahlerhome.de>\n -\n - @license GNU AGPL version 3 or any later version\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\n<template>\n\t<div v-if=\"!enforceAcceptShares || allowCustomDirectory\" id=\"files-sharing-personal-settings\" class=\"section\">\n\t\t<h2>{{ t('files_sharing', 'Sharing') }}</h2>\n\t\t<p v-if=\"!enforceAcceptShares\">\n\t\t\t<input id=\"files-sharing-personal-settings-accept\"\n\t\t\t\tv-model=\"accepting\"\n\t\t\t\tclass=\"checkbox\"\n\t\t\t\ttype=\"checkbox\"\n\t\t\t\t@change=\"toggleEnabled\">\n\t\t\t<label for=\"files-sharing-personal-settings-accept\">{{ t('files_sharing', 'Accept user and group shares by default') }}</label>\n\t\t</p>\n\t\t<p v-if=\"allowCustomDirectory\">\n\t\t\t<SelectShareFolderDialogue />\n\t\t</p>\n\t</div>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport { showError } from '@nextcloud/dialogs'\nimport axios from '@nextcloud/axios'\n\nimport SelectShareFolderDialogue from './SelectShareFolderDialogue'\n\nexport default {\n\tname: 'PersonalSettings',\n\tcomponents: {\n\t\tSelectShareFolderDialogue,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\t// Share acceptance config\n\t\t\taccepting: loadState('files_sharing', 'accept_default'),\n\t\t\tenforceAcceptShares: loadState('files_sharing', 'enforce_accept'),\n\n\t\t\t// Receiving share folder config\n\t\t\tallowCustomDirectory: loadState('files_sharing', 'allow_custom_share_folder'),\n\t\t}\n\t},\n\n\tmethods: {\n\t\tasync toggleEnabled() {\n\t\t\ttry {\n\t\t\t\tawait axios.put(generateUrl('/apps/files_sharing/settings/defaultAccept'), {\n\t\t\t\t\taccept: this.accepting,\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('sharing', 'Error while toggling options'))\n\t\t\t\tconsole.error(error)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\np {\n\tmargin-top: 12px;\n\tmargin-bottom: 12px;\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PersonalSettings.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!./PersonalSettings.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!./PersonalSettings.vue?vue&type=style&index=0&id=188f517d&scoped=true&lang=scss&\";\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!./PersonalSettings.vue?vue&type=style&index=0&id=188f517d&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PersonalSettings.vue?vue&type=template&id=188f517d&scoped=true&\"\nimport script from \"./PersonalSettings.vue?vue&type=script&lang=js&\"\nexport * from \"./PersonalSettings.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PersonalSettings.vue?vue&type=style&index=0&id=188f517d&scoped=true&lang=scss&\"\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 \"188f517d\",\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 (!_vm.enforceAcceptShares || _vm.allowCustomDirectory)?_c('div',{staticClass:\"section\",attrs:{\"id\":\"files-sharing-personal-settings\"}},[_c('h2',[_vm._v(_vm._s(_vm.t('files_sharing', 'Sharing')))]),_vm._v(\" \"),(!_vm.enforceAcceptShares)?_c('p',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.accepting),expression:\"accepting\"}],staticClass:\"checkbox\",attrs:{\"id\":\"files-sharing-personal-settings-accept\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.accepting)?_vm._i(_vm.accepting,null)>-1:(_vm.accepting)},on:{\"change\":[function($event){var $$a=_vm.accepting,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.accepting=$$a.concat([$$v]))}else{$$i>-1&&(_vm.accepting=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.accepting=$$c}},_vm.toggleEnabled]}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"files-sharing-personal-settings-accept\"}},[_vm._v(_vm._s(_vm.t('files_sharing', 'Accept user and group shares by default')))])]):_vm._e(),_vm._v(\" \"),(_vm.allowCustomDirectory)?_c('p',[_c('SelectShareFolderDialogue')],1):_vm._e()]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport Vue from 'vue'\nimport { getRequestToken } from '@nextcloud/auth'\n\nimport PersonalSettings from './components/PersonalSettings'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nVue.prototype.t = t\n\nconst View = Vue.extend(PersonalSettings)\nnew View().$mount('#files-sharing-personal-settings')\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, \"p[data-v-188f517d]{margin-top:12px;margin-bottom:12px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/PersonalSettings.vue\"],\"names\":[],\"mappings\":\"AAgFA,mBACC,eAAA,CACA,kBAAA\",\"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\\np {\\n\\tmargin-top: 12px;\\n\\tmargin-bottom: 12px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".share-folder__form[data-v-1b20ac1d]{display:flex}.share-folder__picker[data-v-1b20ac1d]{cursor:pointer;min-width:266px}.share-folder__reset[data-v-1b20ac1d]{background-color:rgba(0,0,0,0);border:none;font-weight:normal;text-decoration:underline;font-size:inherit}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SelectShareFolderDialogue.vue\"],\"names\":[],\"mappings\":\"AA0GC,qCACC,YAAA,CAGD,uCACC,cAAA,CACA,eAAA,CAID,sCACC,8BAAA,CACA,WAAA,CACA,kBAAA,CACA,yBAAA,CACA,iBAAA\",\"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.share-folder {\\n\\t&__form {\\n\\t\\tdisplay: flex;\\n\\t}\\n\\n\\t&__picker {\\n\\t\\tcursor: pointer;\\n\\t\\tmin-width: 266px;\\n\\t}\\n\\n\\t// Make the reset button looks like text\\n\\t&__reset {\\n\\t\\tbackground-color: transparent;\\n\\t\\tborder: none;\\n\\t\\tfont-weight: normal;\\n\\t\\ttext-decoration: underline;\\n\\t\\tfont-size: inherit;\\n\\t}\\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 = 8330;","__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\t8330: 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__(71679); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","component","_vm","this","_h","$createElement","_c","_self","staticClass","_v","_s","t","on","$event","preventDefault","stopPropagation","resetFolder","apply","arguments","attrs","readableDirectory","pickFolder","defaultDirectory","domProps","_e","enforceAcceptShares","allowCustomDirectory","directives","name","rawName","value","expression","Array","isArray","accepting","_i","$$a","$$el","target","$$c","checked","$$i","concat","slice","toggleEnabled","__webpack_nonce__","btoa","getRequestToken","Vue","PersonalSettings","$mount","___CSS_LOADER_EXPORT___","push","module","id","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"files_sharing-personal-settings.js?v=b2f7dad8215b4afcb9ad","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/files_sharing/src/components/SelectShareFolderDialogue.vue","webpack:///nextcloud/apps/files_sharing/src/components/SelectShareFolderDialogue.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SelectShareFolderDialogue.vue?054f","webpack://nextcloud/./apps/files_sharing/src/components/SelectShareFolderDialogue.vue?c5e4","webpack:///nextcloud/apps/files_sharing/src/components/SelectShareFolderDialogue.vue?vue&type=template&id=1b20ac1d&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/PersonalSettings.vue","webpack:///nextcloud/apps/files_sharing/src/components/PersonalSettings.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/PersonalSettings.vue?95f8","webpack://nextcloud/./apps/files_sharing/src/components/PersonalSettings.vue?4796","webpack:///nextcloud/apps/files_sharing/src/components/PersonalSettings.vue?vue&type=template&id=188f517d&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/personal-settings.js","webpack:///nextcloud/apps/files_sharing/src/components/PersonalSettings.vue?vue&type=style&index=0&id=188f517d&scoped=true&lang=scss&","webpack:///nextcloud/apps/files_sharing/src/components/SelectShareFolderDialogue.vue?vue&type=style&index=0&id=1b20ac1d&scoped=true&lang=scss&","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/runtime/nonce","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 Hinrich Mahler <nextcloud@mahlerhome.de>\n -\n - @license GNU AGPL version 3 or any later version\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\n<template>\n\t<div class=\"share-folder\">\n\t\t<span>{{ t('files_sharing', 'Set default folder for accepted shares') }} </span>\n\n\t\t<!-- Folder picking form -->\n\t\t<form class=\"share-folder__form\" @reset.prevent.stop=\"resetFolder\">\n\t\t\t<input class=\"share-folder__picker\"\n\t\t\t\ttype=\"text\"\n\t\t\t\t:placeholder=\"readableDirectory\"\n\t\t\t\t@click.prevent=\"pickFolder\">\n\n\t\t\t<!-- Show reset button if folder is different -->\n\t\t\t<input v-if=\"readableDirectory !== defaultDirectory\"\n\t\t\t\tclass=\"share-folder__reset\"\n\t\t\t\ttype=\"reset\"\n\t\t\t\t:value=\"t('files_sharing', 'Reset')\"\n\t\t\t\t:aria-label=\"t('files_sharing', 'Reset folder to system default')\">\n\t\t</form>\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport path from 'path'\nimport { generateUrl } from '@nextcloud/router'\nimport { getFilePickerBuilder, showError } from '@nextcloud/dialogs'\nimport { loadState } from '@nextcloud/initial-state'\n\nconst defaultDirectory = loadState('files_sharing', 'default_share_folder', '/')\nconst directory = loadState('files_sharing', 'share_folder', defaultDirectory)\n\nexport default {\n\tname: 'SelectShareFolderDialogue',\n\tdata() {\n\t\treturn {\n\t\t\tdirectory,\n\t\t\tdefaultDirectory,\n\t\t}\n\t},\n\tcomputed: {\n\t\treadableDirectory() {\n\t\t\tif (!this.directory) {\n\t\t\t\treturn '/'\n\t\t\t}\n\t\t\treturn this.directory\n\t\t},\n\t},\n\tmethods: {\n\t\tasync pickFolder() {\n\n\t\t\t// Setup file picker\n\t\t\tconst picker = getFilePickerBuilder(t('files', 'Choose a default folder for accepted shares'))\n\t\t\t\t.startAt(this.readableDirectory)\n\t\t\t\t.setMultiSelect(false)\n\t\t\t\t.setModal(true)\n\t\t\t\t.setType(1)\n\t\t\t\t.setMimeTypeFilter(['httpd/unix-directory'])\n\t\t\t\t.allowDirectories()\n\t\t\t\t.build()\n\n\t\t\ttry {\n\t\t\t\t// Init user folder picking\n\t\t\t\tconst dir = await picker.pick() || '/'\n\t\t\t\tif (!dir.startsWith('/')) {\n\t\t\t\t\tthrow new Error(t('files', 'Invalid path selected'))\n\t\t\t\t}\n\n\t\t\t\t// Fix potential path issues and save results\n\t\t\t\tthis.directory = path.normalize(dir)\n\t\t\t\tawait axios.put(generateUrl('/apps/files_sharing/settings/shareFolder'), {\n\t\t\t\t\tshareFolder: this.directory,\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tshowError(error.message || t('files', 'Unknown error'))\n\t\t\t}\n\t\t},\n\n\t\tresetFolder() {\n\t\t\tthis.directory = this.defaultDirectory\n\t\t\taxios.delete(generateUrl('/apps/files_sharing/settings/shareFolder'))\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.share-folder {\n\t&__form {\n\t\tdisplay: flex;\n\t}\n\n\t&__picker {\n\t\tcursor: pointer;\n\t\tmin-width: 266px;\n\t}\n\n\t// Make the reset button looks like text\n\t&__reset {\n\t\tbackground-color: transparent;\n\t\tborder: none;\n\t\tfont-weight: normal;\n\t\ttext-decoration: underline;\n\t\tfont-size: inherit;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectShareFolderDialogue.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!./SelectShareFolderDialogue.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!./SelectShareFolderDialogue.vue?vue&type=style&index=0&id=1b20ac1d&scoped=true&lang=scss&\";\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!./SelectShareFolderDialogue.vue?vue&type=style&index=0&id=1b20ac1d&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SelectShareFolderDialogue.vue?vue&type=template&id=1b20ac1d&scoped=true&\"\nimport script from \"./SelectShareFolderDialogue.vue?vue&type=script&lang=js&\"\nexport * from \"./SelectShareFolderDialogue.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SelectShareFolderDialogue.vue?vue&type=style&index=0&id=1b20ac1d&scoped=true&lang=scss&\"\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 \"1b20ac1d\",\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:\"share-folder\"},[_c('span',[_vm._v(_vm._s(_vm.t('files_sharing', 'Set default folder for accepted shares'))+\" \")]),_vm._v(\" \"),_c('form',{staticClass:\"share-folder__form\",on:{\"reset\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.resetFolder.apply(null, arguments)}}},[_c('input',{staticClass:\"share-folder__picker\",attrs:{\"type\":\"text\",\"placeholder\":_vm.readableDirectory},on:{\"click\":function($event){$event.preventDefault();return _vm.pickFolder.apply(null, arguments)}}}),_vm._v(\" \"),(_vm.readableDirectory !== _vm.defaultDirectory)?_c('input',{staticClass:\"share-folder__reset\",attrs:{\"type\":\"reset\",\"aria-label\":_vm.t('files_sharing', 'Reset folder to system default')},domProps:{\"value\":_vm.t('files_sharing', 'Reset')}}):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2019 Roeland Jago Douma <roeland@famdouma.nl>\n -\n - @author 2019 Roeland Jago Douma <roeland@famdouma.nl>\n - @author Hinrich Mahler <nextcloud@mahlerhome.de>\n -\n - @license GNU AGPL version 3 or any later version\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\n<template>\n\t<div v-if=\"!enforceAcceptShares || allowCustomDirectory\" id=\"files-sharing-personal-settings\" class=\"section\">\n\t\t<h2>{{ t('files_sharing', 'Sharing') }}</h2>\n\t\t<p v-if=\"!enforceAcceptShares\">\n\t\t\t<input id=\"files-sharing-personal-settings-accept\"\n\t\t\t\tv-model=\"accepting\"\n\t\t\t\tclass=\"checkbox\"\n\t\t\t\ttype=\"checkbox\"\n\t\t\t\t@change=\"toggleEnabled\">\n\t\t\t<label for=\"files-sharing-personal-settings-accept\">{{ t('files_sharing', 'Accept user and group shares by default') }}</label>\n\t\t</p>\n\t\t<p v-if=\"allowCustomDirectory\">\n\t\t\t<SelectShareFolderDialogue />\n\t\t</p>\n\t</div>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport { showError } from '@nextcloud/dialogs'\nimport axios from '@nextcloud/axios'\n\nimport SelectShareFolderDialogue from './SelectShareFolderDialogue'\n\nexport default {\n\tname: 'PersonalSettings',\n\tcomponents: {\n\t\tSelectShareFolderDialogue,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\t// Share acceptance config\n\t\t\taccepting: loadState('files_sharing', 'accept_default'),\n\t\t\tenforceAcceptShares: loadState('files_sharing', 'enforce_accept'),\n\n\t\t\t// Receiving share folder config\n\t\t\tallowCustomDirectory: loadState('files_sharing', 'allow_custom_share_folder'),\n\t\t}\n\t},\n\n\tmethods: {\n\t\tasync toggleEnabled() {\n\t\t\ttry {\n\t\t\t\tawait axios.put(generateUrl('/apps/files_sharing/settings/defaultAccept'), {\n\t\t\t\t\taccept: this.accepting,\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('sharing', 'Error while toggling options'))\n\t\t\t\tconsole.error(error)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\np {\n\tmargin-top: 12px;\n\tmargin-bottom: 12px;\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PersonalSettings.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!./PersonalSettings.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!./PersonalSettings.vue?vue&type=style&index=0&id=188f517d&scoped=true&lang=scss&\";\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!./PersonalSettings.vue?vue&type=style&index=0&id=188f517d&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PersonalSettings.vue?vue&type=template&id=188f517d&scoped=true&\"\nimport script from \"./PersonalSettings.vue?vue&type=script&lang=js&\"\nexport * from \"./PersonalSettings.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PersonalSettings.vue?vue&type=style&index=0&id=188f517d&scoped=true&lang=scss&\"\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 \"188f517d\",\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 (!_vm.enforceAcceptShares || _vm.allowCustomDirectory)?_c('div',{staticClass:\"section\",attrs:{\"id\":\"files-sharing-personal-settings\"}},[_c('h2',[_vm._v(_vm._s(_vm.t('files_sharing', 'Sharing')))]),_vm._v(\" \"),(!_vm.enforceAcceptShares)?_c('p',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.accepting),expression:\"accepting\"}],staticClass:\"checkbox\",attrs:{\"id\":\"files-sharing-personal-settings-accept\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.accepting)?_vm._i(_vm.accepting,null)>-1:(_vm.accepting)},on:{\"change\":[function($event){var $$a=_vm.accepting,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.accepting=$$a.concat([$$v]))}else{$$i>-1&&(_vm.accepting=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.accepting=$$c}},_vm.toggleEnabled]}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"files-sharing-personal-settings-accept\"}},[_vm._v(_vm._s(_vm.t('files_sharing', 'Accept user and group shares by default')))])]):_vm._e(),_vm._v(\" \"),(_vm.allowCustomDirectory)?_c('p',[_c('SelectShareFolderDialogue')],1):_vm._e()]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport Vue from 'vue'\nimport { getRequestToken } from '@nextcloud/auth'\n\nimport PersonalSettings from './components/PersonalSettings'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nVue.prototype.t = t\n\nconst View = Vue.extend(PersonalSettings)\nnew View().$mount('#files-sharing-personal-settings')\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, \"p[data-v-188f517d]{margin-top:12px;margin-bottom:12px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/PersonalSettings.vue\"],\"names\":[],\"mappings\":\"AAgFA,mBACC,eAAA,CACA,kBAAA\",\"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\\np {\\n\\tmargin-top: 12px;\\n\\tmargin-bottom: 12px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".share-folder__form[data-v-1b20ac1d]{display:flex}.share-folder__picker[data-v-1b20ac1d]{cursor:pointer;min-width:266px}.share-folder__reset[data-v-1b20ac1d]{background-color:rgba(0,0,0,0);border:none;font-weight:normal;text-decoration:underline;font-size:inherit}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SelectShareFolderDialogue.vue\"],\"names\":[],\"mappings\":\"AA0GC,qCACC,YAAA,CAGD,uCACC,cAAA,CACA,eAAA,CAID,sCACC,8BAAA,CACA,WAAA,CACA,kBAAA,CACA,yBAAA,CACA,iBAAA\",\"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.share-folder {\\n\\t&__form {\\n\\t\\tdisplay: flex;\\n\\t}\\n\\n\\t&__picker {\\n\\t\\tcursor: pointer;\\n\\t\\tmin-width: 266px;\\n\\t}\\n\\n\\t// Make the reset button looks like text\\n\\t&__reset {\\n\\t\\tbackground-color: transparent;\\n\\t\\tborder: none;\\n\\t\\tfont-weight: normal;\\n\\t\\ttext-decoration: underline;\\n\\t\\tfont-size: inherit;\\n\\t}\\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 = 8330;","__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\t8330: 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));","__webpack_require__.nc = undefined;","// 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__(71679); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","component","_vm","this","_h","$createElement","_c","_self","staticClass","_v","_s","t","on","$event","preventDefault","stopPropagation","resetFolder","apply","arguments","attrs","readableDirectory","pickFolder","defaultDirectory","domProps","_e","enforceAcceptShares","allowCustomDirectory","directives","name","rawName","value","expression","Array","isArray","accepting","_i","$$a","$$el","target","$$c","checked","$$i","concat","slice","toggleEnabled","__webpack_nonce__","btoa","getRequestToken","Vue","PersonalSettings","$mount","___CSS_LOADER_EXPORT___","push","module","id","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/files_trashbin-files_trashbin.js b/dist/files_trashbin-files_trashbin.js
index a0056278966..4f701d11ea5 100644
--- a/dist/files_trashbin-files_trashbin.js
+++ b/dist/files_trashbin-files_trashbin.js
@@ -1,3 +1,3 @@
/*! For license information please see files_trashbin-files_trashbin.js.LICENSE.txt */
-!function(){var e,i={6564:function(){OCA.Trashbin={},OCA.Trashbin.App={_initialized:!1,client:null,initialize:function(e){if(!this._initialized){this._initialized=!0,this.client=new OC.Files.Client({host:OC.getHost(),port:OC.getPort(),root:OC.linkToRemoteBase("dav")+"/trashbin/"+OC.getCurrentUser().uid,useHTTPS:"https"===OC.getProtocol()});var i=OC.Util.History.parseUrlQuery();this.fileList=new OCA.Trashbin.FileList($("#app-content-trashbin"),{fileActions:this._createFileActions(),detailsViewEnabled:!1,scrollTo:i.scrollto,config:OCA.Files.App.getFilesConfig(),multiSelectMenu:[{name:"restore",displayName:t("files_trashbin","Restore"),iconClass:"icon-history"},{name:"delete",displayName:t("files_trashbin","Delete permanently"),iconClass:"icon-delete"}],client:this.client,shown:!0})}},_createFileActions:function(){var e=this.client,i=new OCA.Files.FileActions;return i.register("dir","Open",OC.PERMISSION_READ,"",(function(e,t){var i=t.fileList.getCurrentDirectory();t.fileList.changeDirectory(OC.joinPaths(i,e))})),i.setDefault("dir","Open"),i.registerAction({name:"Restore",displayName:t("files_trashbin","Restore"),type:OCA.Files.FileActions.TYPE_INLINE,mime:"all",permissions:OC.PERMISSION_READ,iconClass:"icon-history",actionHandler:function(i,n){var r=n.fileList,a=r.findFileEl(i);r.showFileBusyState(a,!0);var s=n.fileList.getCurrentDirectory();e.move(OC.joinPaths("trash",s,i),OC.joinPaths("restore",i),!0).then(r._removeCallback.bind(r,[i]),(function(){r.showFileBusyState(a,!1),OC.Notification.show(t("files_trashbin","Error while restoring file from trash bin"))}))}}),i.registerAction({name:"Delete",displayName:t("files_trashbin","Delete permanently"),mime:"all",permissions:OC.PERMISSION_READ,iconClass:"icon-delete",render:function(e,n,r){var a=i._makeActionLink(e,r);return a.attr("original-title",t("files_trashbin","Delete permanently")),a.children("img").attr("alt",t("files_trashbin","Delete permanently")),r.$file.find("td:last").append(a),a},actionHandler:function(i,n){var r=n.fileList;$(".tipsy").remove();var a=r.findFileEl(i);r.showFileBusyState(a,!0);var s=n.fileList.getCurrentDirectory();e.remove(OC.joinPaths("trash",s,i)).then(r._removeCallback.bind(r,[i]),(function(){r.showFileBusyState(a,!1),OC.Notification.show(t("files_trashbin","Error while removing file from trash bin"))}))}}),i}},window.addEventListener("DOMContentLoaded",(function(){$("#app-content-trashbin").one("show",(function(){OCA.Trashbin.App.initialize($("#app-content-trashbin"))}))}))},92832:function(){!function(){var e=new RegExp(/^(.+)\.d[0-9]+$/),i="{http://nextcloud.org/ns}trashbin-filename",n="{http://nextcloud.org/ns}trashbin-deletion-time",r="{http://nextcloud.org/ns}trashbin-original-location",a="{http://nextcloud.org/ns}trashbin-title";function s(t){t=OC.basename(t);var i=e.exec(t);return i&&i.length>1&&(t=i[1]),t}var o=function(e,t){this.client=t.client,this.initialize(e,t)};o.prototype=_.extend({},OCA.Files.FileList.prototype,{id:"trashbin",appName:t("files_trashbin","Deleted files"),client:null,initialize:function(){this.client.addFileInfoParser((function(e,t){var s=e.propStat[0].properties,o=s[r],l=s[a];return{displayName:s[i],mtime:1e3*parseInt(s[n],10),hasPreview:!0,path:o,extraData:l}}));var e=OCA.Files.FileList.prototype.initialize.apply(this,arguments);return this.$el.find(".undelete").click("click",_.bind(this._onClickRestoreSelected,this)),this.setSort("mtime","desc"),this.breadcrumb._makeCrumbs=function(){for(var e=OCA.Files.BreadCrumb.prototype._makeCrumbs.apply(this,[].concat(Array.prototype.slice.call(arguments),["icon-delete no-hover"])),t=1;t<e.length;t++)e[t].name=s(e[t].name);return e},OC.Plugins.attach("OCA.Trashbin.FileList",this),e},getDirectoryPermissions:function(){return OC.PERMISSION_READ|OC.PERMISSION_DELETE},_setCurrentDir:function(e){OCA.Files.FileList.prototype._setCurrentDir.apply(this,arguments);var t=OC.basename(e);""!==t&&this.setPageTitle(s(t))},_createRow:function(){var e=OCA.Files.FileList.prototype._createRow.apply(this,arguments);return e.find("td.filesize").remove(),e},getAjaxUrl:function(e,t){var i="";return t&&(i="?"+OC.buildQueryString(t)),OC.filePath("files_trashbin","ajax",e+".php")+i},setupUploadEvents:function(){},linkTo:function(e){return OC.linkTo("files","index.php")+"?view=trashbin&dir="+encodeURIComponent(e).replace(/%2F/g,"/")},elementToFile:function(e){var t=OCA.Files.FileList.prototype.elementToFile(e);return"/"===this.getCurrentDirectory()&&(t.displayName=s(t.name)),delete t.size,t},updateEmptyContent:function(){var e=this.$fileList.find("tr:first").exists();this.$el.find("#emptycontent").toggleClass("hidden",e),this.$el.find("#filestable th").toggleClass("hidden",!e)},_removeCallback:function(e){for(var t,i=0;i<e.length;i++)t=this.remove(OC.basename(e[i]),{updateSummary:!1}),this.fileSummary.remove({type:t.attr("data-type"),size:t.attr("data-size")});this.fileSummary.update(),this.updateEmptyContent()},_onClickRestoreSelected:function(e){e.preventDefault();for(var i=this,n=_.pluck(this.getSelectedFiles(),"name"),r=0;r<n.length;r++){var a=this.findFileEl(n[r]);this.showFileBusyState(a,!0)}this.fileMultiSelectMenu.toggleLoading("restore",!0);var s=n.map((function(e){return i.client.move(OC.joinPaths("trash",i.getCurrentDirectory(),e),OC.joinPaths("restore",e),!0).then((function(){i._removeCallback([e])}))}));return Promise.all(s).then((function(){i.fileMultiSelectMenu.toggleLoading("restore",!1)}),(function(){OC.Notification.show(t("files_trashbin","Error while restoring files from trash bin"))}))},_onClickDeleteSelected:function(e){e.preventDefault();for(var i=this,n=this.$el.find(".select-all").is(":checked"),r=_.pluck(this.getSelectedFiles(),"name"),a=0;a<r.length;a++){var s=this.findFileEl(r[a]);this.showFileBusyState(s,!0)}if(n)return this.client.remove(OC.joinPaths("trash",this.getCurrentDirectory())).then((function(){i.hideMask(),i.setFiles([])}),(function(){OC.Notification.show(t("files_trashbin","Error while emptying trash bin"))}));this.fileMultiSelectMenu.toggleLoading("delete",!0);var o=r.map((function(e){return i.client.remove(OC.joinPaths("trash",i.getCurrentDirectory(),e)).then((function(){i._removeCallback([e])}))}));return Promise.all(o).then((function(){i.fileMultiSelectMenu.toggleLoading("delete",!1)}),(function(){OC.Notification.show(t("files_trashbin","Error while removing files from trash bin"))}))},_onClickFile:function(e){var t=$(this).parent().parent().data("mime");return"httpd/unix-directory"!==t&&e.preventDefault(),OCA.Files.FileList.prototype._onClickFile.apply(this,arguments)},generatePreviewUrl:function(e){return OC.generateUrl("/apps/files_trashbin/preview?")+$.param(e)},getDownloadUrl:function(){return"#"},getDefaultActionUrl:function(){return"#"},updateStorageStatistics:function(){},isSelectedDeletable:function(){return!0},_getWebdavProperties:function(){return[i,n,r,a].concat(this.filesClient.getPropfindProperties())},reload:function(){this._selectedFiles={},this._selectionSummary.clear(),this.$el.find(".select-all").prop("checked",!1),this.showMask(),this._reloadCall&&this._reloadCall.abort(),this._reloadCall=this.client.getFolderContents("trash/"+this.getCurrentDirectory(),{includeParent:!1,properties:this._getWebdavProperties()});var e=this.reloadCallback.bind(this);return this._reloadCall.then(e,e)},reloadCallback:function(e,i){return delete this._reloadCall,this.hideMask(),!(401===e||(403===e?(this.changeDirectory("/"),OC.Notification.show(t("files","This operation is forbidden")),1):500===e?(this.changeDirectory("/"),OC.Notification.show(t("files","This directory is unavailable, please check the logs or contact the administrator")),1):404===e?(this.changeDirectory("/"),1):(0===e||this.setFiles(i),0)))}}),OCA.Trashbin.FileList=o}()},69845:function(e,t,i){"use strict";i(6564),i(92832);var n=i(93379),r=i.n(n),a=i(7795),s=i.n(a),o=i(90569),l=i.n(o),c=i(3565),h=i.n(c),u=i(19216),f=i.n(u),d=i(44589),p=i.n(d),m=i(81412),C={};C.styleTagTransform=p(),C.setAttributes=h(),C.insert=l().bind(null,"head"),C.domAPI=s(),C.insertStyleElement=f(),r()(m.Z,C),m.Z&&m.Z.locals&&m.Z.locals,window.OCA.Trashbin=OCA.Trashbin},81412:function(e,t,i){"use strict";var n=i(87537),r=i.n(n),a=i(23645),s=i.n(a)()(r());s.push([e.id,"#app-content-trashbin tbody tr[data-type=file] td a.name,#app-content-trashbin tbody tr[data-type=file] td a.name span.nametext,#app-content-trashbin tbody tr[data-type=file] td a.name span.nametext span{cursor:default}#app-content-trashbin .summary :last-child{padding:0}#app-content-trashbin #filestable .summary .filesize{display:none}","",{version:3,sources:["webpack://./apps/files_trashbin/src/trash.scss"],names:[],mappings:"AASA,4MAGC,cAAA,CAGD,2CACC,SAAA,CAED,qDACC,YAAA",sourcesContent:['/*\n * Copyright (c) 2014\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n *\n */\n#app-content-trashbin tbody tr[data-type="file"] td a.name,\n#app-content-trashbin tbody tr[data-type="file"] td a.name span.nametext,\n#app-content-trashbin tbody tr[data-type="file"] td a.name span.nametext span {\n\tcursor: default;\n}\n\n#app-content-trashbin .summary :last-child {\n\tpadding: 0;\n}\n#app-content-trashbin #filestable .summary .filesize {\n\tdisplay: none;\n}\n\n'],sourceRoot:""}]),t.Z=s}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var a=n[e]={id:e,loaded:!1,exports:{}};return i[e].call(a.exports,a,a.exports,r),a.loaded=!0,a.exports}r.m=i,r.amdD=function(){throw new Error("define cannot be used indirect")},r.amdO={},e=[],r.O=function(t,i,n,a){if(!i){var s=1/0;for(h=0;h<e.length;h++){i=e[h][0],n=e[h][1],a=e[h][2];for(var o=!0,l=0;l<i.length;l++)(!1&a||s>=a)&&Object.keys(r.O).every((function(e){return r.O[e](i[l])}))?i.splice(l--,1):(o=!1,a<s&&(s=a));if(o){e.splice(h--,1);var c=n();void 0!==c&&(t=c)}}return t}a=a||0;for(var h=e.length;h>0&&e[h-1][2]>a;h--)e[h]=e[h-1];e[h]=[i,n,a]},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},r.d=function(e,t){for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},r.j=2325,function(){r.b=document.baseURI||self.location.href;var e={2325:0};r.O.j=function(t){return 0===e[t]};var t=function(t,i){var n,a,s=i[0],o=i[1],l=i[2],c=0;if(s.some((function(t){return 0!==e[t]}))){for(n in o)r.o(o,n)&&(r.m[n]=o[n]);if(l)var h=l(r)}for(t&&t(i);c<s.length;c++)a=s[c],r.o(e,a)&&e[a]&&e[a][0](),e[a]=0;return r.O(h)},i=self.webpackChunknextcloud=self.webpackChunknextcloud||[];i.forEach(t.bind(null,0)),i.push=t.bind(null,i.push.bind(i))}();var a=r.O(void 0,[7874],(function(){return r(69845)}));a=r.O(a)}();
-//# sourceMappingURL=files_trashbin-files_trashbin.js.map?v=8bf21f10f4965551fbdb \ No newline at end of file
+!function(){var e,i={6564:function(){OCA.Trashbin={},OCA.Trashbin.App={_initialized:!1,client:null,initialize:function(e){if(!this._initialized){this._initialized=!0,this.client=new OC.Files.Client({host:OC.getHost(),port:OC.getPort(),root:OC.linkToRemoteBase("dav")+"/trashbin/"+OC.getCurrentUser().uid,useHTTPS:"https"===OC.getProtocol()});var i=OC.Util.History.parseUrlQuery();this.fileList=new OCA.Trashbin.FileList($("#app-content-trashbin"),{fileActions:this._createFileActions(),detailsViewEnabled:!1,scrollTo:i.scrollto,config:OCA.Files.App.getFilesConfig(),multiSelectMenu:[{name:"restore",displayName:t("files_trashbin","Restore"),iconClass:"icon-history"},{name:"delete",displayName:t("files_trashbin","Delete permanently"),iconClass:"icon-delete"}],client:this.client,shown:!0})}},_createFileActions:function(){var e=this.client,i=new OCA.Files.FileActions;return i.register("dir","Open",OC.PERMISSION_READ,"",(function(e,t){var i=t.fileList.getCurrentDirectory();t.fileList.changeDirectory(OC.joinPaths(i,e))})),i.setDefault("dir","Open"),i.registerAction({name:"Restore",displayName:t("files_trashbin","Restore"),type:OCA.Files.FileActions.TYPE_INLINE,mime:"all",permissions:OC.PERMISSION_READ,iconClass:"icon-history",actionHandler:function(i,n){var r=n.fileList,a=r.findFileEl(i);r.showFileBusyState(a,!0);var s=n.fileList.getCurrentDirectory();e.move(OC.joinPaths("trash",s,i),OC.joinPaths("restore",i),!0).then(r._removeCallback.bind(r,[i]),(function(){r.showFileBusyState(a,!1),OC.Notification.show(t("files_trashbin","Error while restoring file from trash bin"))}))}}),i.registerAction({name:"Delete",displayName:t("files_trashbin","Delete permanently"),mime:"all",permissions:OC.PERMISSION_READ,iconClass:"icon-delete",render:function(e,n,r){var a=i._makeActionLink(e,r);return a.attr("original-title",t("files_trashbin","Delete permanently")),a.children("img").attr("alt",t("files_trashbin","Delete permanently")),r.$file.find("td:last").append(a),a},actionHandler:function(i,n){var r=n.fileList;$(".tipsy").remove();var a=r.findFileEl(i);r.showFileBusyState(a,!0);var s=n.fileList.getCurrentDirectory();e.remove(OC.joinPaths("trash",s,i)).then(r._removeCallback.bind(r,[i]),(function(){r.showFileBusyState(a,!1),OC.Notification.show(t("files_trashbin","Error while removing file from trash bin"))}))}}),i}},window.addEventListener("DOMContentLoaded",(function(){$("#app-content-trashbin").one("show",(function(){OCA.Trashbin.App.initialize($("#app-content-trashbin"))}))}))},92832:function(){!function(){var e=new RegExp(/^(.+)\.d[0-9]+$/),i="{http://nextcloud.org/ns}trashbin-filename",n="{http://nextcloud.org/ns}trashbin-deletion-time",r="{http://nextcloud.org/ns}trashbin-original-location",a="{http://nextcloud.org/ns}trashbin-title";function s(t){t=OC.basename(t);var i=e.exec(t);return i&&i.length>1&&(t=i[1]),t}var o=function(e,t){this.client=t.client,this.initialize(e,t)};o.prototype=_.extend({},OCA.Files.FileList.prototype,{id:"trashbin",appName:t("files_trashbin","Deleted files"),client:null,initialize:function(){this.client.addFileInfoParser((function(e,t){var s=e.propStat[0].properties,o=s[r],l=s[a];return{displayName:s[i],mtime:1e3*parseInt(s[n],10),hasPreview:!0,path:o,extraData:l}}));var e=OCA.Files.FileList.prototype.initialize.apply(this,arguments);return this.$el.find(".undelete").click("click",_.bind(this._onClickRestoreSelected,this)),this.setSort("mtime","desc"),this.breadcrumb._makeCrumbs=function(){for(var e=OCA.Files.BreadCrumb.prototype._makeCrumbs.apply(this,[].concat(Array.prototype.slice.call(arguments),["icon-delete no-hover"])),t=1;t<e.length;t++)e[t].name=s(e[t].name);return e},OC.Plugins.attach("OCA.Trashbin.FileList",this),e},getDirectoryPermissions:function(){return OC.PERMISSION_READ|OC.PERMISSION_DELETE},_setCurrentDir:function(e){OCA.Files.FileList.prototype._setCurrentDir.apply(this,arguments);var t=OC.basename(e);""!==t&&this.setPageTitle(s(t))},_createRow:function(){var e=OCA.Files.FileList.prototype._createRow.apply(this,arguments);return e.find("td.filesize").remove(),e},getAjaxUrl:function(e,t){var i="";return t&&(i="?"+OC.buildQueryString(t)),OC.filePath("files_trashbin","ajax",e+".php")+i},setupUploadEvents:function(){},linkTo:function(e){return OC.linkTo("files","index.php")+"?view=trashbin&dir="+encodeURIComponent(e).replace(/%2F/g,"/")},elementToFile:function(e){var t=OCA.Files.FileList.prototype.elementToFile(e);return"/"===this.getCurrentDirectory()&&(t.displayName=s(t.name)),delete t.size,t},updateEmptyContent:function(){var e=this.$fileList.find("tr:first").exists();this.$el.find("#emptycontent").toggleClass("hidden",e),this.$el.find("#filestable th").toggleClass("hidden",!e)},_removeCallback:function(e){for(var t,i=0;i<e.length;i++)t=this.remove(OC.basename(e[i]),{updateSummary:!1}),this.fileSummary.remove({type:t.attr("data-type"),size:t.attr("data-size")});this.fileSummary.update(),this.updateEmptyContent()},_onClickRestoreSelected:function(e){e.preventDefault();for(var i=this,n=_.pluck(this.getSelectedFiles(),"name"),r=0;r<n.length;r++){var a=this.findFileEl(n[r]);this.showFileBusyState(a,!0)}this.fileMultiSelectMenu.toggleLoading("restore",!0);var s=n.map((function(e){return i.client.move(OC.joinPaths("trash",i.getCurrentDirectory(),e),OC.joinPaths("restore",e),!0).then((function(){i._removeCallback([e])}))}));return Promise.all(s).then((function(){i.fileMultiSelectMenu.toggleLoading("restore",!1)}),(function(){OC.Notification.show(t("files_trashbin","Error while restoring files from trash bin"))}))},_onClickDeleteSelected:function(e){e.preventDefault();for(var i=this,n=this.$el.find(".select-all").is(":checked"),r=_.pluck(this.getSelectedFiles(),"name"),a=0;a<r.length;a++){var s=this.findFileEl(r[a]);this.showFileBusyState(s,!0)}if(n)return this.client.remove(OC.joinPaths("trash",this.getCurrentDirectory())).then((function(){i.hideMask(),i.setFiles([])}),(function(){OC.Notification.show(t("files_trashbin","Error while emptying trash bin"))}));this.fileMultiSelectMenu.toggleLoading("delete",!0);var o=r.map((function(e){return i.client.remove(OC.joinPaths("trash",i.getCurrentDirectory(),e)).then((function(){i._removeCallback([e])}))}));return Promise.all(o).then((function(){i.fileMultiSelectMenu.toggleLoading("delete",!1)}),(function(){OC.Notification.show(t("files_trashbin","Error while removing files from trash bin"))}))},_onClickFile:function(e){var t=$(this).parent().parent().data("mime");return"httpd/unix-directory"!==t&&e.preventDefault(),OCA.Files.FileList.prototype._onClickFile.apply(this,arguments)},generatePreviewUrl:function(e){return OC.generateUrl("/apps/files_trashbin/preview?")+$.param(e)},getDownloadUrl:function(){return"#"},getDefaultActionUrl:function(){return"#"},updateStorageStatistics:function(){},isSelectedDeletable:function(){return!0},_getWebdavProperties:function(){return[i,n,r,a].concat(this.filesClient.getPropfindProperties())},reload:function(){this._selectedFiles={},this._selectionSummary.clear(),this.$el.find(".select-all").prop("checked",!1),this.showMask(),this._reloadCall&&this._reloadCall.abort(),this._reloadCall=this.client.getFolderContents("trash/"+this.getCurrentDirectory(),{includeParent:!1,properties:this._getWebdavProperties()});var e=this.reloadCallback.bind(this);return this._reloadCall.then(e,e)},reloadCallback:function(e,i){return delete this._reloadCall,this.hideMask(),!(401===e||(403===e?(this.changeDirectory("/"),OC.Notification.show(t("files","This operation is forbidden")),1):500===e?(this.changeDirectory("/"),OC.Notification.show(t("files","This directory is unavailable, please check the logs or contact the administrator")),1):404===e?(this.changeDirectory("/"),1):(0===e||this.setFiles(i),0)))}}),OCA.Trashbin.FileList=o}()},69845:function(e,t,i){"use strict";i(6564),i(92832);var n=i(93379),r=i.n(n),a=i(7795),s=i.n(a),o=i(90569),l=i.n(o),c=i(3565),h=i.n(c),u=i(19216),f=i.n(u),d=i(44589),p=i.n(d),m=i(81412),C={};C.styleTagTransform=p(),C.setAttributes=h(),C.insert=l().bind(null,"head"),C.domAPI=s(),C.insertStyleElement=f(),r()(m.Z,C),m.Z&&m.Z.locals&&m.Z.locals,window.OCA.Trashbin=OCA.Trashbin},81412:function(e,t,i){"use strict";var n=i(87537),r=i.n(n),a=i(23645),s=i.n(a)()(r());s.push([e.id,"#app-content-trashbin tbody tr[data-type=file] td a.name,#app-content-trashbin tbody tr[data-type=file] td a.name span.nametext,#app-content-trashbin tbody tr[data-type=file] td a.name span.nametext span{cursor:default}#app-content-trashbin .summary :last-child{padding:0}#app-content-trashbin #filestable .summary .filesize{display:none}","",{version:3,sources:["webpack://./apps/files_trashbin/src/trash.scss"],names:[],mappings:"AASA,4MAGC,cAAA,CAGD,2CACC,SAAA,CAED,qDACC,YAAA",sourcesContent:['/*\n * Copyright (c) 2014\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n *\n */\n#app-content-trashbin tbody tr[data-type="file"] td a.name,\n#app-content-trashbin tbody tr[data-type="file"] td a.name span.nametext,\n#app-content-trashbin tbody tr[data-type="file"] td a.name span.nametext span {\n\tcursor: default;\n}\n\n#app-content-trashbin .summary :last-child {\n\tpadding: 0;\n}\n#app-content-trashbin #filestable .summary .filesize {\n\tdisplay: none;\n}\n\n'],sourceRoot:""}]),t.Z=s}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var a=n[e]={id:e,loaded:!1,exports:{}};return i[e].call(a.exports,a,a.exports,r),a.loaded=!0,a.exports}r.m=i,r.amdD=function(){throw new Error("define cannot be used indirect")},r.amdO={},e=[],r.O=function(t,i,n,a){if(!i){var s=1/0;for(h=0;h<e.length;h++){i=e[h][0],n=e[h][1],a=e[h][2];for(var o=!0,l=0;l<i.length;l++)(!1&a||s>=a)&&Object.keys(r.O).every((function(e){return r.O[e](i[l])}))?i.splice(l--,1):(o=!1,a<s&&(s=a));if(o){e.splice(h--,1);var c=n();void 0!==c&&(t=c)}}return t}a=a||0;for(var h=e.length;h>0&&e[h-1][2]>a;h--)e[h]=e[h-1];e[h]=[i,n,a]},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},r.d=function(e,t){for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},r.j=2325,function(){r.b=document.baseURI||self.location.href;var e={2325:0};r.O.j=function(t){return 0===e[t]};var t=function(t,i){var n,a,s=i[0],o=i[1],l=i[2],c=0;if(s.some((function(t){return 0!==e[t]}))){for(n in o)r.o(o,n)&&(r.m[n]=o[n]);if(l)var h=l(r)}for(t&&t(i);c<s.length;c++)a=s[c],r.o(e,a)&&e[a]&&e[a][0](),e[a]=0;return r.O(h)},i=self.webpackChunknextcloud=self.webpackChunknextcloud||[];i.forEach(t.bind(null,0)),i.push=t.bind(null,i.push.bind(i))}(),r.nc=void 0;var a=r.O(void 0,[7874],(function(){return r(69845)}));a=r.O(a)}();
+//# sourceMappingURL=files_trashbin-files_trashbin.js.map?v=613cafee6a312487efc7 \ No newline at end of file
diff --git a/dist/files_trashbin-files_trashbin.js.map b/dist/files_trashbin-files_trashbin.js.map
index 4d85cda9638..0a6a1f66027 100644
--- a/dist/files_trashbin-files_trashbin.js.map
+++ b/dist/files_trashbin-files_trashbin.js.map
@@ -1 +1 @@
-{"version":3,"file":"files_trashbin-files_trashbin.js?v=8bf21f10f4965551fbdb","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/files_trashbin/src/app.js","webpack:///nextcloud/apps/files_trashbin/src/filelist.js","webpack://nextcloud/./apps/files_trashbin/src/trash.scss?cfe4","webpack:///nextcloud/apps/files_trashbin/src/files_trashbin.js","webpack:///nextcloud/apps/files_trashbin/src/trash.scss","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 (c) 2014\n *\n * @author Abijeet <abijeetpatro@gmail.com>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\nOCA.Trashbin = {}\n/**\n * @namespace OCA.Trashbin.App\n */\nOCA.Trashbin.App = {\n\t_initialized: false,\n\t/** @type {OC.Files.Client} */\n\tclient: null,\n\n\tinitialize($el) {\n\t\tif (this._initialized) {\n\t\t\treturn\n\t\t}\n\t\tthis._initialized = true\n\n\t\tthis.client = new OC.Files.Client({\n\t\t\thost: OC.getHost(),\n\t\t\tport: OC.getPort(),\n\t\t\troot: OC.linkToRemoteBase('dav') + '/trashbin/' + OC.getCurrentUser().uid,\n\t\t\tuseHTTPS: OC.getProtocol() === 'https',\n\t\t})\n\t\tconst urlParams = OC.Util.History.parseUrlQuery()\n\t\tthis.fileList = new OCA.Trashbin.FileList(\n\t\t\t$('#app-content-trashbin'), {\n\t\t\t\tfileActions: this._createFileActions(),\n\t\t\t\tdetailsViewEnabled: false,\n\t\t\t\tscrollTo: urlParams.scrollto,\n\t\t\t\tconfig: OCA.Files.App.getFilesConfig(),\n\t\t\t\tmultiSelectMenu: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'restore',\n\t\t\t\t\t\tdisplayName: t('files_trashbin', 'Restore'),\n\t\t\t\t\t\ticonClass: 'icon-history',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'delete',\n\t\t\t\t\t\tdisplayName: t('files_trashbin', 'Delete permanently'),\n\t\t\t\t\t\ticonClass: 'icon-delete',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tclient: this.client,\n\t\t\t\t// The file list is created when a \"show\" event is handled, so\n\t\t\t\t// it should be marked as \"shown\" like it would have been done\n\t\t\t\t// if handling the event with the file list already created.\n\t\t\t\tshown: true,\n\t\t\t}\n\t\t)\n\t},\n\n\t_createFileActions() {\n\t\tconst client = this.client\n\t\tconst fileActions = new OCA.Files.FileActions()\n\t\tfileActions.register('dir', 'Open', OC.PERMISSION_READ, '', function(filename, context) {\n\t\t\tconst dir = context.fileList.getCurrentDirectory()\n\t\t\tcontext.fileList.changeDirectory(OC.joinPaths(dir, filename))\n\t\t})\n\n\t\tfileActions.setDefault('dir', 'Open')\n\n\t\tfileActions.registerAction({\n\t\t\tname: 'Restore',\n\t\t\tdisplayName: t('files_trashbin', 'Restore'),\n\t\t\ttype: OCA.Files.FileActions.TYPE_INLINE,\n\t\t\tmime: 'all',\n\t\t\tpermissions: OC.PERMISSION_READ,\n\t\t\ticonClass: 'icon-history',\n\t\t\tactionHandler(filename, context) {\n\t\t\t\tconst fileList = context.fileList\n\t\t\t\tconst tr = fileList.findFileEl(filename)\n\t\t\t\tfileList.showFileBusyState(tr, true)\n\t\t\t\tconst dir = context.fileList.getCurrentDirectory()\n\t\t\t\tclient.move(OC.joinPaths('trash', dir, filename), OC.joinPaths('restore', filename), true)\n\t\t\t\t\t.then(\n\t\t\t\t\t\tfileList._removeCallback.bind(fileList, [filename]),\n\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\tfileList.showFileBusyState(tr, false)\n\t\t\t\t\t\t\tOC.Notification.show(t('files_trashbin', 'Error while restoring file from trash bin'))\n\t\t\t\t\t\t}\n\t\t\t\t\t)\n\t\t\t},\n\t\t})\n\n\t\tfileActions.registerAction({\n\t\t\tname: 'Delete',\n\t\t\tdisplayName: t('files_trashbin', 'Delete permanently'),\n\t\t\tmime: 'all',\n\t\t\tpermissions: OC.PERMISSION_READ,\n\t\t\ticonClass: 'icon-delete',\n\t\t\trender(actionSpec, isDefault, context) {\n\t\t\t\tconst $actionLink = fileActions._makeActionLink(actionSpec, context)\n\t\t\t\t$actionLink.attr('original-title', t('files_trashbin', 'Delete permanently'))\n\t\t\t\t$actionLink.children('img').attr('alt', t('files_trashbin', 'Delete permanently'))\n\t\t\t\tcontext.$file.find('td:last').append($actionLink)\n\t\t\t\treturn $actionLink\n\t\t\t},\n\t\t\tactionHandler(filename, context) {\n\t\t\t\tconst fileList = context.fileList\n\t\t\t\t$('.tipsy').remove()\n\t\t\t\tconst tr = fileList.findFileEl(filename)\n\t\t\t\tfileList.showFileBusyState(tr, true)\n\t\t\t\tconst dir = context.fileList.getCurrentDirectory()\n\t\t\t\tclient.remove(OC.joinPaths('trash', dir, filename))\n\t\t\t\t\t.then(\n\t\t\t\t\t\tfileList._removeCallback.bind(fileList, [filename]),\n\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\tfileList.showFileBusyState(tr, false)\n\t\t\t\t\t\t\tOC.Notification.show(t('files_trashbin', 'Error while removing file from trash bin'))\n\t\t\t\t\t\t}\n\t\t\t\t\t)\n\t\t\t},\n\t\t})\n\t\treturn fileActions\n\t},\n}\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\t$('#app-content-trashbin').one('show', function() {\n\t\tconst App = OCA.Trashbin.App\n\t\tApp.initialize($('#app-content-trashbin'))\n\t\t// force breadcrumb init\n\t\t// App.fileList.changeDirectory(App.fileList.getCurrentDirectory(), false, true);\n\t})\n})\n","/**\n * Copyright (c) 2014\n *\n * @author Azul <azul@riseup.net>\n * @author Gary Kim <gary@garykim.dev>\n * @author Jan C. Borchardt <hey@jancborchardt.net>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n/* eslint-disable */\n(function() {\n\tvar DELETED_REGEXP = new RegExp(/^(.+)\\.d[0-9]+$/)\n\tvar FILENAME_PROP = '{http://nextcloud.org/ns}trashbin-filename'\n\tvar DELETION_TIME_PROP = '{http://nextcloud.org/ns}trashbin-deletion-time'\n\tvar TRASHBIN_ORIGINAL_LOCATION = '{http://nextcloud.org/ns}trashbin-original-location'\n\tvar TRASHBIN_TITLE = '{http://nextcloud.org/ns}trashbin-title'\n\n\t/**\n\t * Convert a file name in the format filename.d12345 to the real file name.\n\t * This will use basename.\n\t * The name will not be changed if it has no \".d12345\" suffix.\n\t * @param {String} name file name\n\t * @returns {String} converted file name\n\t */\n\tfunction getDeletedFileName(name) {\n\t\tname = OC.basename(name)\n\t\tvar match = DELETED_REGEXP.exec(name)\n\t\tif (match && match.length > 1) {\n\t\t\tname = match[1]\n\t\t}\n\t\treturn name\n\t}\n\n\t/**\n\t * @class OCA.Trashbin.FileList\n\t * @augments OCA.Files.FileList\n\t * @classdesc List of deleted files\n\t *\n\t * @param $el container element with existing markup for the #controls\n\t * and a table\n\t * @param [options] map of options\n\t */\n\tvar FileList = function($el, options) {\n\t\tthis.client = options.client\n\t\tthis.initialize($el, options)\n\t}\n\tFileList.prototype = _.extend({}, OCA.Files.FileList.prototype,\n\t\t/** @lends OCA.Trashbin.FileList.prototype */ {\n\t\tid: 'trashbin',\n\t\tappName: t('files_trashbin', 'Deleted files'),\n\t\t/** @type {OC.Files.Client} */\n\t\tclient: null,\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tinitialize: function() {\n\t\t\tthis.client.addFileInfoParser(function(response, data) {\n\t\t\t\tvar props = response.propStat[0].properties\n\t\t\t\tvar path = props[TRASHBIN_ORIGINAL_LOCATION]\n\t\t\t\tvar title = props[TRASHBIN_TITLE]\n\t\t\t\treturn {\n\t\t\t\t\tdisplayName: props[FILENAME_PROP],\n\t\t\t\t\tmtime: parseInt(props[DELETION_TIME_PROP], 10) * 1000,\n\t\t\t\t\thasPreview: true,\n\t\t\t\t\tpath: path,\n\t\t\t\t\textraData: title\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tvar result = OCA.Files.FileList.prototype.initialize.apply(this, arguments)\n\t\t\tthis.$el.find('.undelete').click('click', _.bind(this._onClickRestoreSelected, this))\n\n\t\t\t// Sort by most recently deleted first\n\t\t\tthis.setSort('mtime', 'desc')\n\n\t\t\t/**\n\t\t\t * Override crumb making to add \"Deleted Files\" entry\n\t\t\t * and convert files with \".d\" extensions to a more\n\t\t\t * user friendly name.\n\t\t\t */\n\t\t\t\tthis.breadcrumb._makeCrumbs = function() {\n\t\t\t\t\tvar parts = OCA.Files.BreadCrumb.prototype._makeCrumbs.apply(this, [...arguments, 'icon-delete no-hover'])\n\t\t\t\t\tfor (var i = 1; i < parts.length; i++) {\n\t\t\t\t\t\tparts[i].name = getDeletedFileName(parts[i].name)\n\t\t\t\t\t}\n\t\t\t\t\treturn parts\n\t\t\t\t}\n\n\t\t\t\tOC.Plugins.attach('OCA.Trashbin.FileList', this)\n\t\t\t\treturn result\n\t\t\t},\n\n\t\t\t/**\n\t\t * Override to only return read permissions\n\t\t */\n\t\t\tgetDirectoryPermissions: function() {\n\t\t\t\treturn OC.PERMISSION_READ | OC.PERMISSION_DELETE\n\t\t\t},\n\n\t\t\t_setCurrentDir: function(targetDir) {\n\t\t\t\tOCA.Files.FileList.prototype._setCurrentDir.apply(this, arguments)\n\n\t\t\t\tvar baseDir = OC.basename(targetDir)\n\t\t\t\tif (baseDir !== '') {\n\t\t\t\t\tthis.setPageTitle(getDeletedFileName(baseDir))\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t_createRow: function() {\n\t\t\t// FIXME: MEGAHACK until we find a better solution\n\t\t\t\tvar tr = OCA.Files.FileList.prototype._createRow.apply(this, arguments)\n\t\t\t\ttr.find('td.filesize').remove()\n\t\t\t\treturn tr\n\t\t\t},\n\n\t\t\tgetAjaxUrl: function(action, params) {\n\t\t\t\tvar q = ''\n\t\t\t\tif (params) {\n\t\t\t\t\tq = '?' + OC.buildQueryString(params)\n\t\t\t\t}\n\t\t\t\treturn OC.filePath('files_trashbin', 'ajax', action + '.php') + q\n\t\t\t},\n\n\t\t\tsetupUploadEvents: function() {\n\t\t\t// override and do nothing\n\t\t\t},\n\n\t\t\tlinkTo: function(dir) {\n\t\t\t\treturn OC.linkTo('files', 'index.php') + '?view=trashbin&dir=' + encodeURIComponent(dir).replace(/%2F/g, '/')\n\t\t\t},\n\n\t\t\telementToFile: function($el) {\n\t\t\t\tvar fileInfo = OCA.Files.FileList.prototype.elementToFile($el)\n\t\t\t\tif (this.getCurrentDirectory() === '/') {\n\t\t\t\t\tfileInfo.displayName = getDeletedFileName(fileInfo.name)\n\t\t\t\t}\n\t\t\t\t// no size available\n\t\t\t\tdelete fileInfo.size\n\t\t\t\treturn fileInfo\n\t\t\t},\n\n\t\t\tupdateEmptyContent: function() {\n\t\t\t\tvar exists = this.$fileList.find('tr:first').exists()\n\t\t\t\tthis.$el.find('#emptycontent').toggleClass('hidden', exists)\n\t\t\t\tthis.$el.find('#filestable th').toggleClass('hidden', !exists)\n\t\t\t},\n\n\t\t\t_removeCallback: function(files) {\n\t\t\t\tvar $el\n\t\t\t\tfor (var i = 0; i < files.length; i++) {\n\t\t\t\t\t$el = this.remove(OC.basename(files[i]), { updateSummary: false })\n\t\t\t\t\tthis.fileSummary.remove({ type: $el.attr('data-type'), size: $el.attr('data-size') })\n\t\t\t\t}\n\t\t\t\tthis.fileSummary.update()\n\t\t\t\tthis.updateEmptyContent()\n\t\t\t},\n\n\t\t\t_onClickRestoreSelected: function(event) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tvar self = this\n\t\t\t\tvar files = _.pluck(this.getSelectedFiles(), 'name')\n\t\t\t\tfor (var i = 0; i < files.length; i++) {\n\t\t\t\t\tvar tr = this.findFileEl(files[i])\n\t\t\t\t\tthis.showFileBusyState(tr, true)\n\t\t\t\t}\n\n\t\t\t\tthis.fileMultiSelectMenu.toggleLoading('restore', true)\n\t\t\t\tvar restorePromises = files.map(function(file) {\n\t\t\t\t\treturn self.client.move(OC.joinPaths('trash', self.getCurrentDirectory(), file), OC.joinPaths('restore', file), true)\n\t\t\t\t\t\t.then(\n\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\tself._removeCallback([file])\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t)\n\t\t\t\t})\n\t\t\t\treturn Promise.all(restorePromises).then(\n\t\t\t\t\tfunction() {\n\t\t\t\t\t\tself.fileMultiSelectMenu.toggleLoading('restore', false)\n\t\t\t\t\t},\n\t\t\t\t\tfunction() {\n\t\t\t\t\t\tOC.Notification.show(t('files_trashbin', 'Error while restoring files from trash bin'))\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t},\n\n\t\t\t_onClickDeleteSelected: function(event) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tvar self = this\n\t\t\t\tvar allFiles = this.$el.find('.select-all').is(':checked')\n\t\t\t\tvar files = _.pluck(this.getSelectedFiles(), 'name')\n\t\t\t\tfor (var i = 0; i < files.length; i++) {\n\t\t\t\t\tvar tr = this.findFileEl(files[i])\n\t\t\t\t\tthis.showFileBusyState(tr, true)\n\t\t\t\t}\n\n\t\t\t\tif (allFiles) {\n\t\t\t\t\treturn this.client.remove(OC.joinPaths('trash', this.getCurrentDirectory()))\n\t\t\t\t\t\t.then(\n\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\tself.hideMask()\n\t\t\t\t\t\t\t\tself.setFiles([])\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\tOC.Notification.show(t('files_trashbin', 'Error while emptying trash bin'))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t)\n\t\t\t\t} else {\n\t\t\t\t\tthis.fileMultiSelectMenu.toggleLoading('delete', true)\n\t\t\t\t\tvar deletePromises = files.map(function(file) {\n\t\t\t\t\t\treturn self.client.remove(OC.joinPaths('trash', self.getCurrentDirectory(), file))\n\t\t\t\t\t\t\t.then(\n\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\tself._removeCallback([file])\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t)\n\t\t\t\t\t})\n\t\t\t\t\treturn Promise.all(deletePromises).then(\n\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\tself.fileMultiSelectMenu.toggleLoading('delete', false)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\tOC.Notification.show(t('files_trashbin', 'Error while removing files from trash bin'))\n\t\t\t\t\t\t}\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t_onClickFile: function(event) {\n\t\t\t\tvar mime = $(this).parent().parent().data('mime')\n\t\t\t\tif (mime !== 'httpd/unix-directory') {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t}\n\t\t\t\treturn OCA.Files.FileList.prototype._onClickFile.apply(this, arguments)\n\t\t\t},\n\n\t\t\tgeneratePreviewUrl: function(urlSpec) {\n\t\t\t\treturn OC.generateUrl('/apps/files_trashbin/preview?') + $.param(urlSpec)\n\t\t\t},\n\n\t\t\tgetDownloadUrl: function() {\n\t\t\t// no downloads\n\t\t\t\treturn '#'\n\t\t\t},\n\n\t\t\tgetDefaultActionUrl: function() {\n\t\t\t// no default action\n\t\t\t\treturn '#'\n\t\t\t},\n\n\t\t\tupdateStorageStatistics: function() {\n\t\t\t// no op because the trashbin doesn't have\n\t\t\t// storage info like free space / used space\n\t\t\t},\n\n\t\t\tisSelectedDeletable: function() {\n\t\t\t\treturn true\n\t\t\t},\n\n\t\t\t/**\n\t\t * Returns list of webdav properties to request\n\t\t */\n\t\t\t_getWebdavProperties: function() {\n\t\t\t\treturn [FILENAME_PROP, DELETION_TIME_PROP, TRASHBIN_ORIGINAL_LOCATION, TRASHBIN_TITLE].concat(this.filesClient.getPropfindProperties())\n\t\t\t},\n\n\t\t\t/**\n\t\t * Reloads the file list using ajax call\n\t\t *\n\t\t * @returns ajax call object\n\t\t */\n\t\t\treload: function() {\n\t\t\t\tthis._selectedFiles = {}\n\t\t\t\tthis._selectionSummary.clear()\n\t\t\t\tthis.$el.find('.select-all').prop('checked', false)\n\t\t\t\tthis.showMask()\n\t\t\t\tif (this._reloadCall) {\n\t\t\t\t\tthis._reloadCall.abort()\n\t\t\t\t}\n\t\t\t\tthis._reloadCall = this.client.getFolderContents(\n\t\t\t\t\t'trash/' + this.getCurrentDirectory(), {\n\t\t\t\t\t\tincludeParent: false,\n\t\t\t\t\t\tproperties: this._getWebdavProperties()\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\tvar callBack = this.reloadCallback.bind(this)\n\t\t\t\treturn this._reloadCall.then(callBack, callBack)\n\t\t\t},\n\t\t\treloadCallback: function(status, result) {\n\t\t\t\tdelete this._reloadCall\n\t\t\t\tthis.hideMask()\n\n\t\t\t\tif (status === 401) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\t// Firewall Blocked request?\n\t\t\t\tif (status === 403) {\n\t\t\t\t// Go home\n\t\t\t\t\tthis.changeDirectory('/')\n\t\t\t\t\tOC.Notification.show(t('files', 'This operation is forbidden'))\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\t// Did share service die or something else fail?\n\t\t\t\tif (status === 500) {\n\t\t\t\t// Go home\n\t\t\t\t\tthis.changeDirectory('/')\n\t\t\t\t\tOC.Notification.show(t('files', 'This directory is unavailable, please check the logs or contact the administrator'))\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\tif (status === 404) {\n\t\t\t\t// go back home\n\t\t\t\t\tthis.changeDirectory('/')\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\t// aborted ?\n\t\t\t\tif (status === 0) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\n\t\t\t\tthis.setFiles(result)\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t})\n\n\tOCA.Trashbin.FileList = FileList\n})()\n","\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/sass-loader/dist/cjs.js!./trash.scss\";\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/sass-loader/dist/cjs.js!./trash.scss\";\n export default content && content.locals ? content.locals : undefined;\n","/**\n * @copyright Copyright (c) 2016 Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport './app'\nimport './filelist'\nimport './trash.scss'\n\nwindow.OCA.Trashbin = OCA.Trashbin\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, \"#app-content-trashbin tbody tr[data-type=file] td a.name,#app-content-trashbin tbody tr[data-type=file] td a.name span.nametext,#app-content-trashbin tbody tr[data-type=file] td a.name span.nametext span{cursor:default}#app-content-trashbin .summary :last-child{padding:0}#app-content-trashbin #filestable .summary .filesize{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_trashbin/src/trash.scss\"],\"names\":[],\"mappings\":\"AASA,4MAGC,cAAA,CAGD,2CACC,SAAA,CAED,qDACC,YAAA\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2014\\n *\\n * This file is licensed under the Affero General Public License version 3\\n * or later.\\n *\\n * See the COPYING-README file.\\n *\\n */\\n#app-content-trashbin tbody tr[data-type=\\\"file\\\"] td a.name,\\n#app-content-trashbin tbody tr[data-type=\\\"file\\\"] td a.name span.nametext,\\n#app-content-trashbin tbody tr[data-type=\\\"file\\\"] td a.name span.nametext span {\\n\\tcursor: default;\\n}\\n\\n#app-content-trashbin .summary :last-child {\\n\\tpadding: 0;\\n}\\n#app-content-trashbin #filestable .summary .filesize {\\n\\tdisplay: none;\\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 = 2325;","__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\t2325: 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__(69845); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","OCA","Trashbin","App","_initialized","client","initialize","$el","this","OC","Files","Client","host","getHost","port","getPort","root","linkToRemoteBase","getCurrentUser","uid","useHTTPS","getProtocol","urlParams","Util","History","parseUrlQuery","fileList","FileList","$","fileActions","_createFileActions","detailsViewEnabled","scrollTo","scrollto","config","getFilesConfig","multiSelectMenu","name","displayName","t","iconClass","shown","FileActions","register","PERMISSION_READ","filename","context","dir","getCurrentDirectory","changeDirectory","joinPaths","setDefault","registerAction","type","TYPE_INLINE","mime","permissions","actionHandler","tr","findFileEl","showFileBusyState","move","then","_removeCallback","bind","Notification","show","render","actionSpec","isDefault","$actionLink","_makeActionLink","attr","children","$file","find","append","remove","window","addEventListener","one","DELETED_REGEXP","RegExp","FILENAME_PROP","DELETION_TIME_PROP","TRASHBIN_ORIGINAL_LOCATION","TRASHBIN_TITLE","getDeletedFileName","basename","match","exec","length","options","prototype","_","extend","id","appName","addFileInfoParser","response","data","props","propStat","properties","path","title","mtime","parseInt","hasPreview","extraData","result","apply","arguments","click","_onClickRestoreSelected","setSort","breadcrumb","_makeCrumbs","parts","BreadCrumb","i","Plugins","attach","getDirectoryPermissions","PERMISSION_DELETE","_setCurrentDir","targetDir","baseDir","setPageTitle","_createRow","getAjaxUrl","action","params","q","buildQueryString","filePath","setupUploadEvents","linkTo","encodeURIComponent","replace","elementToFile","fileInfo","size","updateEmptyContent","exists","$fileList","toggleClass","files","updateSummary","fileSummary","update","event","preventDefault","self","pluck","getSelectedFiles","fileMultiSelectMenu","toggleLoading","restorePromises","map","file","Promise","all","_onClickDeleteSelected","allFiles","is","hideMask","setFiles","deletePromises","_onClickFile","parent","generatePreviewUrl","urlSpec","generateUrl","param","getDownloadUrl","getDefaultActionUrl","updateStorageStatistics","isSelectedDeletable","_getWebdavProperties","concat","filesClient","getPropfindProperties","reload","_selectedFiles","_selectionSummary","clear","prop","showMask","_reloadCall","abort","getFolderContents","includeParent","callBack","reloadCallback","status","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","obj","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","b","document","baseURI","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"files_trashbin-files_trashbin.js?v=613cafee6a312487efc7","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/files_trashbin/src/app.js","webpack:///nextcloud/apps/files_trashbin/src/filelist.js","webpack://nextcloud/./apps/files_trashbin/src/trash.scss?cfe4","webpack:///nextcloud/apps/files_trashbin/src/files_trashbin.js","webpack:///nextcloud/apps/files_trashbin/src/trash.scss","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/runtime/nonce","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 (c) 2014\n *\n * @author Abijeet <abijeetpatro@gmail.com>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\nOCA.Trashbin = {}\n/**\n * @namespace OCA.Trashbin.App\n */\nOCA.Trashbin.App = {\n\t_initialized: false,\n\t/** @type {OC.Files.Client} */\n\tclient: null,\n\n\tinitialize($el) {\n\t\tif (this._initialized) {\n\t\t\treturn\n\t\t}\n\t\tthis._initialized = true\n\n\t\tthis.client = new OC.Files.Client({\n\t\t\thost: OC.getHost(),\n\t\t\tport: OC.getPort(),\n\t\t\troot: OC.linkToRemoteBase('dav') + '/trashbin/' + OC.getCurrentUser().uid,\n\t\t\tuseHTTPS: OC.getProtocol() === 'https',\n\t\t})\n\t\tconst urlParams = OC.Util.History.parseUrlQuery()\n\t\tthis.fileList = new OCA.Trashbin.FileList(\n\t\t\t$('#app-content-trashbin'), {\n\t\t\t\tfileActions: this._createFileActions(),\n\t\t\t\tdetailsViewEnabled: false,\n\t\t\t\tscrollTo: urlParams.scrollto,\n\t\t\t\tconfig: OCA.Files.App.getFilesConfig(),\n\t\t\t\tmultiSelectMenu: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'restore',\n\t\t\t\t\t\tdisplayName: t('files_trashbin', 'Restore'),\n\t\t\t\t\t\ticonClass: 'icon-history',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'delete',\n\t\t\t\t\t\tdisplayName: t('files_trashbin', 'Delete permanently'),\n\t\t\t\t\t\ticonClass: 'icon-delete',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tclient: this.client,\n\t\t\t\t// The file list is created when a \"show\" event is handled, so\n\t\t\t\t// it should be marked as \"shown\" like it would have been done\n\t\t\t\t// if handling the event with the file list already created.\n\t\t\t\tshown: true,\n\t\t\t}\n\t\t)\n\t},\n\n\t_createFileActions() {\n\t\tconst client = this.client\n\t\tconst fileActions = new OCA.Files.FileActions()\n\t\tfileActions.register('dir', 'Open', OC.PERMISSION_READ, '', function(filename, context) {\n\t\t\tconst dir = context.fileList.getCurrentDirectory()\n\t\t\tcontext.fileList.changeDirectory(OC.joinPaths(dir, filename))\n\t\t})\n\n\t\tfileActions.setDefault('dir', 'Open')\n\n\t\tfileActions.registerAction({\n\t\t\tname: 'Restore',\n\t\t\tdisplayName: t('files_trashbin', 'Restore'),\n\t\t\ttype: OCA.Files.FileActions.TYPE_INLINE,\n\t\t\tmime: 'all',\n\t\t\tpermissions: OC.PERMISSION_READ,\n\t\t\ticonClass: 'icon-history',\n\t\t\tactionHandler(filename, context) {\n\t\t\t\tconst fileList = context.fileList\n\t\t\t\tconst tr = fileList.findFileEl(filename)\n\t\t\t\tfileList.showFileBusyState(tr, true)\n\t\t\t\tconst dir = context.fileList.getCurrentDirectory()\n\t\t\t\tclient.move(OC.joinPaths('trash', dir, filename), OC.joinPaths('restore', filename), true)\n\t\t\t\t\t.then(\n\t\t\t\t\t\tfileList._removeCallback.bind(fileList, [filename]),\n\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\tfileList.showFileBusyState(tr, false)\n\t\t\t\t\t\t\tOC.Notification.show(t('files_trashbin', 'Error while restoring file from trash bin'))\n\t\t\t\t\t\t}\n\t\t\t\t\t)\n\t\t\t},\n\t\t})\n\n\t\tfileActions.registerAction({\n\t\t\tname: 'Delete',\n\t\t\tdisplayName: t('files_trashbin', 'Delete permanently'),\n\t\t\tmime: 'all',\n\t\t\tpermissions: OC.PERMISSION_READ,\n\t\t\ticonClass: 'icon-delete',\n\t\t\trender(actionSpec, isDefault, context) {\n\t\t\t\tconst $actionLink = fileActions._makeActionLink(actionSpec, context)\n\t\t\t\t$actionLink.attr('original-title', t('files_trashbin', 'Delete permanently'))\n\t\t\t\t$actionLink.children('img').attr('alt', t('files_trashbin', 'Delete permanently'))\n\t\t\t\tcontext.$file.find('td:last').append($actionLink)\n\t\t\t\treturn $actionLink\n\t\t\t},\n\t\t\tactionHandler(filename, context) {\n\t\t\t\tconst fileList = context.fileList\n\t\t\t\t$('.tipsy').remove()\n\t\t\t\tconst tr = fileList.findFileEl(filename)\n\t\t\t\tfileList.showFileBusyState(tr, true)\n\t\t\t\tconst dir = context.fileList.getCurrentDirectory()\n\t\t\t\tclient.remove(OC.joinPaths('trash', dir, filename))\n\t\t\t\t\t.then(\n\t\t\t\t\t\tfileList._removeCallback.bind(fileList, [filename]),\n\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\tfileList.showFileBusyState(tr, false)\n\t\t\t\t\t\t\tOC.Notification.show(t('files_trashbin', 'Error while removing file from trash bin'))\n\t\t\t\t\t\t}\n\t\t\t\t\t)\n\t\t\t},\n\t\t})\n\t\treturn fileActions\n\t},\n}\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\t$('#app-content-trashbin').one('show', function() {\n\t\tconst App = OCA.Trashbin.App\n\t\tApp.initialize($('#app-content-trashbin'))\n\t\t// force breadcrumb init\n\t\t// App.fileList.changeDirectory(App.fileList.getCurrentDirectory(), false, true);\n\t})\n})\n","/**\n * Copyright (c) 2014\n *\n * @author Azul <azul@riseup.net>\n * @author Gary Kim <gary@garykim.dev>\n * @author Jan C. Borchardt <hey@jancborchardt.net>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n/* eslint-disable */\n(function() {\n\tvar DELETED_REGEXP = new RegExp(/^(.+)\\.d[0-9]+$/)\n\tvar FILENAME_PROP = '{http://nextcloud.org/ns}trashbin-filename'\n\tvar DELETION_TIME_PROP = '{http://nextcloud.org/ns}trashbin-deletion-time'\n\tvar TRASHBIN_ORIGINAL_LOCATION = '{http://nextcloud.org/ns}trashbin-original-location'\n\tvar TRASHBIN_TITLE = '{http://nextcloud.org/ns}trashbin-title'\n\n\t/**\n\t * Convert a file name in the format filename.d12345 to the real file name.\n\t * This will use basename.\n\t * The name will not be changed if it has no \".d12345\" suffix.\n\t * @param {String} name file name\n\t * @returns {String} converted file name\n\t */\n\tfunction getDeletedFileName(name) {\n\t\tname = OC.basename(name)\n\t\tvar match = DELETED_REGEXP.exec(name)\n\t\tif (match && match.length > 1) {\n\t\t\tname = match[1]\n\t\t}\n\t\treturn name\n\t}\n\n\t/**\n\t * @class OCA.Trashbin.FileList\n\t * @augments OCA.Files.FileList\n\t * @classdesc List of deleted files\n\t *\n\t * @param $el container element with existing markup for the #controls\n\t * and a table\n\t * @param [options] map of options\n\t */\n\tvar FileList = function($el, options) {\n\t\tthis.client = options.client\n\t\tthis.initialize($el, options)\n\t}\n\tFileList.prototype = _.extend({}, OCA.Files.FileList.prototype,\n\t\t/** @lends OCA.Trashbin.FileList.prototype */ {\n\t\tid: 'trashbin',\n\t\tappName: t('files_trashbin', 'Deleted files'),\n\t\t/** @type {OC.Files.Client} */\n\t\tclient: null,\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tinitialize: function() {\n\t\t\tthis.client.addFileInfoParser(function(response, data) {\n\t\t\t\tvar props = response.propStat[0].properties\n\t\t\t\tvar path = props[TRASHBIN_ORIGINAL_LOCATION]\n\t\t\t\tvar title = props[TRASHBIN_TITLE]\n\t\t\t\treturn {\n\t\t\t\t\tdisplayName: props[FILENAME_PROP],\n\t\t\t\t\tmtime: parseInt(props[DELETION_TIME_PROP], 10) * 1000,\n\t\t\t\t\thasPreview: true,\n\t\t\t\t\tpath: path,\n\t\t\t\t\textraData: title\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tvar result = OCA.Files.FileList.prototype.initialize.apply(this, arguments)\n\t\t\tthis.$el.find('.undelete').click('click', _.bind(this._onClickRestoreSelected, this))\n\n\t\t\t// Sort by most recently deleted first\n\t\t\tthis.setSort('mtime', 'desc')\n\n\t\t\t/**\n\t\t\t * Override crumb making to add \"Deleted Files\" entry\n\t\t\t * and convert files with \".d\" extensions to a more\n\t\t\t * user friendly name.\n\t\t\t */\n\t\t\t\tthis.breadcrumb._makeCrumbs = function() {\n\t\t\t\t\tvar parts = OCA.Files.BreadCrumb.prototype._makeCrumbs.apply(this, [...arguments, 'icon-delete no-hover'])\n\t\t\t\t\tfor (var i = 1; i < parts.length; i++) {\n\t\t\t\t\t\tparts[i].name = getDeletedFileName(parts[i].name)\n\t\t\t\t\t}\n\t\t\t\t\treturn parts\n\t\t\t\t}\n\n\t\t\t\tOC.Plugins.attach('OCA.Trashbin.FileList', this)\n\t\t\t\treturn result\n\t\t\t},\n\n\t\t\t/**\n\t\t * Override to only return read permissions\n\t\t */\n\t\t\tgetDirectoryPermissions: function() {\n\t\t\t\treturn OC.PERMISSION_READ | OC.PERMISSION_DELETE\n\t\t\t},\n\n\t\t\t_setCurrentDir: function(targetDir) {\n\t\t\t\tOCA.Files.FileList.prototype._setCurrentDir.apply(this, arguments)\n\n\t\t\t\tvar baseDir = OC.basename(targetDir)\n\t\t\t\tif (baseDir !== '') {\n\t\t\t\t\tthis.setPageTitle(getDeletedFileName(baseDir))\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t_createRow: function() {\n\t\t\t// FIXME: MEGAHACK until we find a better solution\n\t\t\t\tvar tr = OCA.Files.FileList.prototype._createRow.apply(this, arguments)\n\t\t\t\ttr.find('td.filesize').remove()\n\t\t\t\treturn tr\n\t\t\t},\n\n\t\t\tgetAjaxUrl: function(action, params) {\n\t\t\t\tvar q = ''\n\t\t\t\tif (params) {\n\t\t\t\t\tq = '?' + OC.buildQueryString(params)\n\t\t\t\t}\n\t\t\t\treturn OC.filePath('files_trashbin', 'ajax', action + '.php') + q\n\t\t\t},\n\n\t\t\tsetupUploadEvents: function() {\n\t\t\t// override and do nothing\n\t\t\t},\n\n\t\t\tlinkTo: function(dir) {\n\t\t\t\treturn OC.linkTo('files', 'index.php') + '?view=trashbin&dir=' + encodeURIComponent(dir).replace(/%2F/g, '/')\n\t\t\t},\n\n\t\t\telementToFile: function($el) {\n\t\t\t\tvar fileInfo = OCA.Files.FileList.prototype.elementToFile($el)\n\t\t\t\tif (this.getCurrentDirectory() === '/') {\n\t\t\t\t\tfileInfo.displayName = getDeletedFileName(fileInfo.name)\n\t\t\t\t}\n\t\t\t\t// no size available\n\t\t\t\tdelete fileInfo.size\n\t\t\t\treturn fileInfo\n\t\t\t},\n\n\t\t\tupdateEmptyContent: function() {\n\t\t\t\tvar exists = this.$fileList.find('tr:first').exists()\n\t\t\t\tthis.$el.find('#emptycontent').toggleClass('hidden', exists)\n\t\t\t\tthis.$el.find('#filestable th').toggleClass('hidden', !exists)\n\t\t\t},\n\n\t\t\t_removeCallback: function(files) {\n\t\t\t\tvar $el\n\t\t\t\tfor (var i = 0; i < files.length; i++) {\n\t\t\t\t\t$el = this.remove(OC.basename(files[i]), { updateSummary: false })\n\t\t\t\t\tthis.fileSummary.remove({ type: $el.attr('data-type'), size: $el.attr('data-size') })\n\t\t\t\t}\n\t\t\t\tthis.fileSummary.update()\n\t\t\t\tthis.updateEmptyContent()\n\t\t\t},\n\n\t\t\t_onClickRestoreSelected: function(event) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tvar self = this\n\t\t\t\tvar files = _.pluck(this.getSelectedFiles(), 'name')\n\t\t\t\tfor (var i = 0; i < files.length; i++) {\n\t\t\t\t\tvar tr = this.findFileEl(files[i])\n\t\t\t\t\tthis.showFileBusyState(tr, true)\n\t\t\t\t}\n\n\t\t\t\tthis.fileMultiSelectMenu.toggleLoading('restore', true)\n\t\t\t\tvar restorePromises = files.map(function(file) {\n\t\t\t\t\treturn self.client.move(OC.joinPaths('trash', self.getCurrentDirectory(), file), OC.joinPaths('restore', file), true)\n\t\t\t\t\t\t.then(\n\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\tself._removeCallback([file])\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t)\n\t\t\t\t})\n\t\t\t\treturn Promise.all(restorePromises).then(\n\t\t\t\t\tfunction() {\n\t\t\t\t\t\tself.fileMultiSelectMenu.toggleLoading('restore', false)\n\t\t\t\t\t},\n\t\t\t\t\tfunction() {\n\t\t\t\t\t\tOC.Notification.show(t('files_trashbin', 'Error while restoring files from trash bin'))\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t},\n\n\t\t\t_onClickDeleteSelected: function(event) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tvar self = this\n\t\t\t\tvar allFiles = this.$el.find('.select-all').is(':checked')\n\t\t\t\tvar files = _.pluck(this.getSelectedFiles(), 'name')\n\t\t\t\tfor (var i = 0; i < files.length; i++) {\n\t\t\t\t\tvar tr = this.findFileEl(files[i])\n\t\t\t\t\tthis.showFileBusyState(tr, true)\n\t\t\t\t}\n\n\t\t\t\tif (allFiles) {\n\t\t\t\t\treturn this.client.remove(OC.joinPaths('trash', this.getCurrentDirectory()))\n\t\t\t\t\t\t.then(\n\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\tself.hideMask()\n\t\t\t\t\t\t\t\tself.setFiles([])\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\tOC.Notification.show(t('files_trashbin', 'Error while emptying trash bin'))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t)\n\t\t\t\t} else {\n\t\t\t\t\tthis.fileMultiSelectMenu.toggleLoading('delete', true)\n\t\t\t\t\tvar deletePromises = files.map(function(file) {\n\t\t\t\t\t\treturn self.client.remove(OC.joinPaths('trash', self.getCurrentDirectory(), file))\n\t\t\t\t\t\t\t.then(\n\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\tself._removeCallback([file])\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t)\n\t\t\t\t\t})\n\t\t\t\t\treturn Promise.all(deletePromises).then(\n\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\tself.fileMultiSelectMenu.toggleLoading('delete', false)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\tOC.Notification.show(t('files_trashbin', 'Error while removing files from trash bin'))\n\t\t\t\t\t\t}\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t_onClickFile: function(event) {\n\t\t\t\tvar mime = $(this).parent().parent().data('mime')\n\t\t\t\tif (mime !== 'httpd/unix-directory') {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t}\n\t\t\t\treturn OCA.Files.FileList.prototype._onClickFile.apply(this, arguments)\n\t\t\t},\n\n\t\t\tgeneratePreviewUrl: function(urlSpec) {\n\t\t\t\treturn OC.generateUrl('/apps/files_trashbin/preview?') + $.param(urlSpec)\n\t\t\t},\n\n\t\t\tgetDownloadUrl: function() {\n\t\t\t// no downloads\n\t\t\t\treturn '#'\n\t\t\t},\n\n\t\t\tgetDefaultActionUrl: function() {\n\t\t\t// no default action\n\t\t\t\treturn '#'\n\t\t\t},\n\n\t\t\tupdateStorageStatistics: function() {\n\t\t\t// no op because the trashbin doesn't have\n\t\t\t// storage info like free space / used space\n\t\t\t},\n\n\t\t\tisSelectedDeletable: function() {\n\t\t\t\treturn true\n\t\t\t},\n\n\t\t\t/**\n\t\t * Returns list of webdav properties to request\n\t\t */\n\t\t\t_getWebdavProperties: function() {\n\t\t\t\treturn [FILENAME_PROP, DELETION_TIME_PROP, TRASHBIN_ORIGINAL_LOCATION, TRASHBIN_TITLE].concat(this.filesClient.getPropfindProperties())\n\t\t\t},\n\n\t\t\t/**\n\t\t * Reloads the file list using ajax call\n\t\t *\n\t\t * @returns ajax call object\n\t\t */\n\t\t\treload: function() {\n\t\t\t\tthis._selectedFiles = {}\n\t\t\t\tthis._selectionSummary.clear()\n\t\t\t\tthis.$el.find('.select-all').prop('checked', false)\n\t\t\t\tthis.showMask()\n\t\t\t\tif (this._reloadCall) {\n\t\t\t\t\tthis._reloadCall.abort()\n\t\t\t\t}\n\t\t\t\tthis._reloadCall = this.client.getFolderContents(\n\t\t\t\t\t'trash/' + this.getCurrentDirectory(), {\n\t\t\t\t\t\tincludeParent: false,\n\t\t\t\t\t\tproperties: this._getWebdavProperties()\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\tvar callBack = this.reloadCallback.bind(this)\n\t\t\t\treturn this._reloadCall.then(callBack, callBack)\n\t\t\t},\n\t\t\treloadCallback: function(status, result) {\n\t\t\t\tdelete this._reloadCall\n\t\t\t\tthis.hideMask()\n\n\t\t\t\tif (status === 401) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\t// Firewall Blocked request?\n\t\t\t\tif (status === 403) {\n\t\t\t\t// Go home\n\t\t\t\t\tthis.changeDirectory('/')\n\t\t\t\t\tOC.Notification.show(t('files', 'This operation is forbidden'))\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\t// Did share service die or something else fail?\n\t\t\t\tif (status === 500) {\n\t\t\t\t// Go home\n\t\t\t\t\tthis.changeDirectory('/')\n\t\t\t\t\tOC.Notification.show(t('files', 'This directory is unavailable, please check the logs or contact the administrator'))\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\tif (status === 404) {\n\t\t\t\t// go back home\n\t\t\t\t\tthis.changeDirectory('/')\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\t// aborted ?\n\t\t\t\tif (status === 0) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\n\t\t\t\tthis.setFiles(result)\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t})\n\n\tOCA.Trashbin.FileList = FileList\n})()\n","\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/sass-loader/dist/cjs.js!./trash.scss\";\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/sass-loader/dist/cjs.js!./trash.scss\";\n export default content && content.locals ? content.locals : undefined;\n","/**\n * @copyright Copyright (c) 2016 Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport './app'\nimport './filelist'\nimport './trash.scss'\n\nwindow.OCA.Trashbin = OCA.Trashbin\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, \"#app-content-trashbin tbody tr[data-type=file] td a.name,#app-content-trashbin tbody tr[data-type=file] td a.name span.nametext,#app-content-trashbin tbody tr[data-type=file] td a.name span.nametext span{cursor:default}#app-content-trashbin .summary :last-child{padding:0}#app-content-trashbin #filestable .summary .filesize{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_trashbin/src/trash.scss\"],\"names\":[],\"mappings\":\"AASA,4MAGC,cAAA,CAGD,2CACC,SAAA,CAED,qDACC,YAAA\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2014\\n *\\n * This file is licensed under the Affero General Public License version 3\\n * or later.\\n *\\n * See the COPYING-README file.\\n *\\n */\\n#app-content-trashbin tbody tr[data-type=\\\"file\\\"] td a.name,\\n#app-content-trashbin tbody tr[data-type=\\\"file\\\"] td a.name span.nametext,\\n#app-content-trashbin tbody tr[data-type=\\\"file\\\"] td a.name span.nametext span {\\n\\tcursor: default;\\n}\\n\\n#app-content-trashbin .summary :last-child {\\n\\tpadding: 0;\\n}\\n#app-content-trashbin #filestable .summary .filesize {\\n\\tdisplay: none;\\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 = 2325;","__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\t2325: 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));","__webpack_require__.nc = undefined;","// 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__(69845); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","OCA","Trashbin","App","_initialized","client","initialize","$el","this","OC","Files","Client","host","getHost","port","getPort","root","linkToRemoteBase","getCurrentUser","uid","useHTTPS","getProtocol","urlParams","Util","History","parseUrlQuery","fileList","FileList","$","fileActions","_createFileActions","detailsViewEnabled","scrollTo","scrollto","config","getFilesConfig","multiSelectMenu","name","displayName","t","iconClass","shown","FileActions","register","PERMISSION_READ","filename","context","dir","getCurrentDirectory","changeDirectory","joinPaths","setDefault","registerAction","type","TYPE_INLINE","mime","permissions","actionHandler","tr","findFileEl","showFileBusyState","move","then","_removeCallback","bind","Notification","show","render","actionSpec","isDefault","$actionLink","_makeActionLink","attr","children","$file","find","append","remove","window","addEventListener","one","DELETED_REGEXP","RegExp","FILENAME_PROP","DELETION_TIME_PROP","TRASHBIN_ORIGINAL_LOCATION","TRASHBIN_TITLE","getDeletedFileName","basename","match","exec","length","options","prototype","_","extend","id","appName","addFileInfoParser","response","data","props","propStat","properties","path","title","mtime","parseInt","hasPreview","extraData","result","apply","arguments","click","_onClickRestoreSelected","setSort","breadcrumb","_makeCrumbs","parts","BreadCrumb","i","Plugins","attach","getDirectoryPermissions","PERMISSION_DELETE","_setCurrentDir","targetDir","baseDir","setPageTitle","_createRow","getAjaxUrl","action","params","q","buildQueryString","filePath","setupUploadEvents","linkTo","encodeURIComponent","replace","elementToFile","fileInfo","size","updateEmptyContent","exists","$fileList","toggleClass","files","updateSummary","fileSummary","update","event","preventDefault","self","pluck","getSelectedFiles","fileMultiSelectMenu","toggleLoading","restorePromises","map","file","Promise","all","_onClickDeleteSelected","allFiles","is","hideMask","setFiles","deletePromises","_onClickFile","parent","generatePreviewUrl","urlSpec","generateUrl","param","getDownloadUrl","getDefaultActionUrl","updateStorageStatistics","isSelectedDeletable","_getWebdavProperties","concat","filesClient","getPropfindProperties","reload","_selectedFiles","_selectionSummary","clear","prop","showMask","_reloadCall","abort","getFolderContents","includeParent","callBack","reloadCallback","status","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","obj","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","b","document","baseURI","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/files_versions-files_versions.js b/dist/files_versions-files_versions.js
index d7417540628..51f8f7a233d 100644
--- a/dist/files_versions-files_versions.js
+++ b/dist/files_versions-files_versions.js
@@ -1,3 +1,3 @@
/*! For license information please see files_versions-files_versions.js.LICENSE.txt */
-!function(){var e,i={22420:function(e,i,o){"use strict";o(29088),o(47673);var l=o(94702),s=o.n(l),r=o(97834),a=o.n(r);!function(){if(OCA.Files.DetailTabView){var e=OCA.Files.DetailTabView.extend({id:"versionsTabView",className:"tab versionsTabView",_template:null,$versionsContainer:null,events:{"click .revertVersion":"_onClickRevertVersion"},initialize:function(){OCA.Files.DetailTabView.prototype.initialize.apply(this,arguments),this.collection=new OCA.Versions.VersionCollection,this.collection.on("request",this._onRequest,this),this.collection.on("sync",this._onEndRequest,this),this.collection.on("update",this._onUpdate,this),this.collection.on("error",this._onError,this),this.collection.on("add",this._onAddModel,this)},getLabel:function(){return t("files_versions","Versions")},getIcon:function(){return"icon-history"},nextPage:function(){this._loading||this.collection.getFileInfo()&&this.collection.getFileInfo().isDirectory()||this.collection.fetch()},_onClickRevertVersion:function(e){var n=this,i=$(e.target),o=this.collection.getFileInfo();i.is("li")||(i=i.closest("li")),e.preventDefault();var l=i.attr("data-revision"),s=this.collection.get(l);s.revert({success:function(){n.$versionsContainer.empty(),n.collection.setFileInfo(o),n.collection.reset([],{silent:!0}),n.collection.fetch(),n.$el.find(".versions").removeClass("hidden"),o.trigger("busy",o,!1),o.set({size:s.get("size"),mtime:1e3*s.get("timestamp"),etag:s.get("id")+s.get("timestamp")})},error:function(){o.trigger("busy",o,!1),n.$el.find(".versions").removeClass("hidden"),n._toggleLoading(!1),OC.Notification.show(t("files_version","Failed to revert {file} to revision {timestamp}.",{file:s.getFullPath(),timestamp:OC.Util.formatDate(1e3*s.get("timestamp"))}),{type:"error"})}}),this._toggleLoading(!0),o.trigger("busy",o,!0)},_toggleLoading:function(e){this._loading=e,this.$el.find(".loading").toggleClass("hidden",!e)},_onRequest:function(){this._toggleLoading(!0)},_onEndRequest:function(){this._toggleLoading(!1),this.$el.find(".empty").toggleClass("hidden",!!this.collection.length)},_onAddModel:function(e){var n=$(this.itemTemplate(this._formatItem(e)));this.$versionsContainer.append(n),n.find(".has-tooltip").tooltip()},template:function(e){return a()(e)},itemTemplate:function(e){return s()(e)},setFileInfo:function(e){e?(this.render(),this.collection.setFileInfo(e),this.collection.reset([],{silent:!0}),this.nextPage()):(this.render(),this.collection.reset())},_formatItem:function(e){var i=1e3*e.get("timestamp"),o=e.has("size")?e.get("size"):0,l=OC.MimeType.getIconUrl(e.get("mimetype")),s=new Image;return s.onload=function(){$("li[data-revision="+e.get("id")+"] .preview").attr("src",e.getPreviewUrl())},s.src=e.getPreviewUrl(),_.extend({versionId:e.get("id"),formattedTimestamp:OC.Util.formatDate(i),relativeTimestamp:OC.Util.relativeModifiedDate(i),millisecondsTimestamp:i,humanReadableSize:OC.Util.humanFileSize(o,!0),altSize:n("files","%n byte","%n bytes",o),hasDetails:e.has("size"),downloadUrl:e.getDownloadUrl(),downloadIconUrl:OC.imagePath("core","actions/download"),downloadName:e.get("name"),revertIconUrl:OC.imagePath("core","actions/history"),previewUrl:l,revertLabel:t("files_versions","Restore"),canRevert:0!=(this.collection.getFileInfo().get("permissions")&OC.PERMISSION_UPDATE)},e.attributes)},render:function(){this.$el.html(this.template({emptyResultLabel:t("files_versions","No other versions available")})),this.$el.find(".has-tooltip").tooltip(),this.$versionsContainer=this.$el.find("ul.versions"),this.delegateEvents()},canDisplay:function(e){return!!e&&!e.isDirectory()}});OCA.Versions=OCA.Versions||{},OCA.Versions.VersionsTabView=e}}(),o(29020);var c=o(93379),u=o.n(c),d=o(7795),p=o.n(d),h=o(90569),m=o.n(h),f=o(3565),v=o.n(f),A=o(19216),g=o.n(A),C=o(44589),b=o.n(C),w=o(42028),y={};y.styleTagTransform=b(),y.setAttributes=v(),y.insert=m().bind(null,"head"),y.domAPI=p(),y.insertStyleElement=g(),u()(w.Z,y),w.Z&&w.Z.locals&&w.Z.locals,window.OCA.Versions=OCA.Versions},29020:function(){OCA.Versions=OCA.Versions||{},OCA.Versions.Util={attach:function(e){"trashbin"!==e.id&&"files.public"!==e.id&&e.registerTabView(new OCA.Versions.VersionsTabView("versionsTabView",{order:-10}))}},OC.Plugins.register("OCA.Files.FileList",OCA.Versions.Util)},47673:function(){var e;e=OC.Backbone.Collection.extend({model:OCA.Versions.VersionModel,sync:OC.Backbone.davSync,_fileInfo:null,_currentUser:null,_client:null,setFileInfo:function(e){this._fileInfo=e},getFileInfo:function(){return this._fileInfo},setCurrentUser:function(e){this._currentUser=e},getCurrentUser:function(){return this._currentUser||OC.getCurrentUser().uid},setClient:function(e){this._client=e},getClient:function(){return this._client||new OC.Files.Client({host:OC.getHost(),root:OC.linkToRemoteBase("dav")+"/versions/"+this.getCurrentUser(),useHTTPS:"https"===OC.getProtocol()})},url:function(){return OC.linkToRemoteBase("dav")+"/versions/"+this.getCurrentUser()+"/versions/"+this._fileInfo.get("id")},parse:function(e){var n=this._fileInfo.getFullPath(),t=this._fileInfo.get("id"),i=this._fileInfo.get("name"),o=this.getCurrentUser(),l=this.getClient();return _.map(e,(function(e){return e.fullPath=n,e.fileId=t,e.name=i,e.timestamp=parseInt(moment(new Date(e.timestamp)).format("X"),10),e.id=OC.basename(e.href),e.size=parseInt(e.size,10),e.user=o,e.client=l,e}))}}),OCA.Versions=OCA.Versions||{},OCA.Versions.VersionCollection=e},29088:function(){var e;e=OC.Backbone.Model.extend({sync:OC.Backbone.davSync,davProperties:{size:"{DAV:}getcontentlength",mimetype:"{DAV:}getcontenttype",timestamp:"{DAV:}getlastmodified"},revert:function(e){e=e?_.clone(e):{};var n=this;return this.get("client").move("/versions/"+this.get("fileId")+"/"+this.get("id"),"/restore/target",!0).done((function(){e.success&&e.success.call(e.context,n,{},e),n.trigger("revert",n,e)})).fail((function(){e.error&&e.error.call(e.context,n,{},e),n.trigger("error",n,{},e)}))},getFullPath:function(){return this.get("fullPath")},getPreviewUrl:function(){var e=OC.generateUrl("/apps/files_versions/preview"),n={file:this.get("fullPath"),version:this.get("id")};return e+"?"+OC.buildQueryString(n)},getDownloadUrl:function(){return OC.linkToRemoteBase("dav")+"/versions/"+this.get("user")+"/versions/"+this.get("fileId")+"/"+this.get("id")}}),OCA.Versions=OCA.Versions||{},OCA.Versions.VersionModel=e},42028:function(e,n,t){"use strict";var i=t(87537),o=t.n(i),l=t(23645),s=t.n(l)()(o());s.push([e.id,".versionsTabView .clear-float {\n\tclear: both;\n}\n\n.versionsTabView li {\n\twidth: 100%;\n\tcursor: default;\n\theight: 56px;\n\tfloat: left;\n\tborder-bottom: 1px solid rgba(100,100,100,.1);\n}\n.versionsTabView li:last-child {\n\tborder-bottom: none;\n}\n\n.versionsTabView a,\n.versionsTabView div > span {\n\tvertical-align: middle;\n\topacity: .5;\n}\n\n.versionsTabView li a{\n\tpadding: 15px 10px 11px;\n}\n\n.versionsTabView a:hover,\n.versionsTabView a:focus {\n\topacity: 1;\n}\n\n.versionsTabView .preview-container {\n\tdisplay: inline-block;\n vertical-align: top;\n}\n\n.versionsTabView img {\n\tcursor: pointer;\n\tpadding-right: 4px;\n}\n\n.versionsTabView img.preview {\n\tcursor: default;\n}\n\n.versionsTabView .version-container {\n\tdisplay: inline-block;\n}\n\n.versionsTabView .versiondate {\n\tmin-width: 100px;\n\tvertical-align: super;\n}\n\n.versionsTabView .version-details {\n\ttext-align: left;\n}\n\n.versionsTabView .version-details > span {\n\tpadding: 0 10px;\n}\n\n.versionsTabView .revertVersion {\n\tcursor: pointer;\n\tfloat: right;\n\tmargin-right: -10px;\n}\n","",{version:3,sources:["webpack://./apps/files_versions/src/css/versions.css"],names:[],mappings:"AAAA;CACC,WAAW;AACZ;;AAEA;CACC,WAAW;CACX,eAAe;CACf,YAAY;CACZ,WAAW;CACX,6CAA6C;AAC9C;AACA;CACC,mBAAmB;AACpB;;AAEA;;CAEC,sBAAsB;CACtB,WAAW;AACZ;;AAEA;CACC,uBAAuB;AACxB;;AAEA;;CAEC,UAAU;AACX;;AAEA;CACC,qBAAqB;EACpB,mBAAmB;AACrB;;AAEA;CACC,eAAe;CACf,kBAAkB;AACnB;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,qBAAqB;AACtB;;AAEA;CACC,gBAAgB;CAChB,qBAAqB;AACtB;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,eAAe;CACf,YAAY;CACZ,mBAAmB;AACpB",sourcesContent:[".versionsTabView .clear-float {\n\tclear: both;\n}\n\n.versionsTabView li {\n\twidth: 100%;\n\tcursor: default;\n\theight: 56px;\n\tfloat: left;\n\tborder-bottom: 1px solid rgba(100,100,100,.1);\n}\n.versionsTabView li:last-child {\n\tborder-bottom: none;\n}\n\n.versionsTabView a,\n.versionsTabView div > span {\n\tvertical-align: middle;\n\topacity: .5;\n}\n\n.versionsTabView li a{\n\tpadding: 15px 10px 11px;\n}\n\n.versionsTabView a:hover,\n.versionsTabView a:focus {\n\topacity: 1;\n}\n\n.versionsTabView .preview-container {\n\tdisplay: inline-block;\n vertical-align: top;\n}\n\n.versionsTabView img {\n\tcursor: pointer;\n\tpadding-right: 4px;\n}\n\n.versionsTabView img.preview {\n\tcursor: default;\n}\n\n.versionsTabView .version-container {\n\tdisplay: inline-block;\n}\n\n.versionsTabView .versiondate {\n\tmin-width: 100px;\n\tvertical-align: super;\n}\n\n.versionsTabView .version-details {\n\ttext-align: left;\n}\n\n.versionsTabView .version-details > span {\n\tpadding: 0 10px;\n}\n\n.versionsTabView .revertVersion {\n\tcursor: pointer;\n\tfloat: right;\n\tmargin-right: -10px;\n}\n"],sourceRoot:""}]),n.Z=s},94702:function(e,n,t){var i=t(40202);e.exports=(i.default||i).template({1:function(e,n,t,i,o){var l,s=null!=n?n:e.nullContext||{},r=e.hooks.helperMissing,a="function",c=e.escapeExpression,u=e.lookupProperty||function(e,n){if(Object.prototype.hasOwnProperty.call(e,n))return e[n]};return'\t\t\t\t<div class="version-details">\n\t\t\t\t\t<span class="size has-tooltip" title="'+c(typeof(l=null!=(l=u(t,"altSize")||(null!=n?u(n,"altSize"):n))?l:r)===a?l.call(s,{name:"altSize",hash:{},data:o,loc:{start:{line:14,column:43},end:{line:14,column:54}}}):l)+'">'+c(typeof(l=null!=(l=u(t,"humanReadableSize")||(null!=n?u(n,"humanReadableSize"):n))?l:r)===a?l.call(s,{name:"humanReadableSize",hash:{},data:o,loc:{start:{line:14,column:56},end:{line:14,column:77}}}):l)+"</span>\n\t\t\t\t</div>\n"},3:function(e,n,t,i,o){var l,s=null!=n?n:e.nullContext||{},r=e.hooks.helperMissing,a="function",c=e.escapeExpression,u=e.lookupProperty||function(e,n){if(Object.prototype.hasOwnProperty.call(e,n))return e[n]};return'\t\t\t<a href="#" class="revertVersion" title="'+c(typeof(l=null!=(l=u(t,"revertLabel")||(null!=n?u(n,"revertLabel"):n))?l:r)===a?l.call(s,{name:"revertLabel",hash:{},data:o,loc:{start:{line:19,column:44},end:{line:19,column:59}}}):l)+'"><img src="'+c(typeof(l=null!=(l=u(t,"revertIconUrl")||(null!=n?u(n,"revertIconUrl"):n))?l:r)===a?l.call(s,{name:"revertIconUrl",hash:{},data:o,loc:{start:{line:19,column:71},end:{line:19,column:88}}}):l)+'" /></a>\n'},compiler:[8,">= 4.3.0"],main:function(e,n,t,i,o){var l,s,r,a=null!=n?n:e.nullContext||{},c=e.hooks.helperMissing,u="function",d=e.escapeExpression,p=e.hooks.blockHelperMissing,h=e.lookupProperty||function(e,n){if(Object.prototype.hasOwnProperty.call(e,n))return e[n]},m='<li data-revision="'+d(typeof(s=null!=(s=h(t,"id")||(null!=n?h(n,"id"):n))?s:c)===u?s.call(a,{name:"id",hash:{},data:o,loc:{start:{line:1,column:19},end:{line:1,column:25}}}):s)+'">\n\t<div>\n\t\t<div class="preview-container">\n\t\t\t<img class="preview" src="'+d(typeof(s=null!=(s=h(t,"previewUrl")||(null!=n?h(n,"previewUrl"):n))?s:c)===u?s.call(a,{name:"previewUrl",hash:{},data:o,loc:{start:{line:4,column:29},end:{line:4,column:43}}}):s)+'" width="44" height="44"/>\n\t\t</div>\n\t\t<div class="version-container">\n\t\t\t<div>\n\t\t\t\t<a href="'+d(typeof(s=null!=(s=h(t,"downloadUrl")||(null!=n?h(n,"downloadUrl"):n))?s:c)===u?s.call(a,{name:"downloadUrl",hash:{},data:o,loc:{start:{line:8,column:13},end:{line:8,column:28}}}):s)+'" class="downloadVersion" download="'+d(typeof(s=null!=(s=h(t,"downloadName")||(null!=n?h(n,"downloadName"):n))?s:c)===u?s.call(a,{name:"downloadName",hash:{},data:o,loc:{start:{line:8,column:64},end:{line:8,column:80}}}):s)+'"><img src="'+d(typeof(s=null!=(s=h(t,"downloadIconUrl")||(null!=n?h(n,"downloadIconUrl"):n))?s:c)===u?s.call(a,{name:"downloadIconUrl",hash:{},data:o,loc:{start:{line:8,column:92},end:{line:8,column:111}}}):s)+'" />\n\t\t\t\t\t<span class="versiondate has-tooltip live-relative-timestamp" data-timestamp="'+d(typeof(s=null!=(s=h(t,"millisecondsTimestamp")||(null!=n?h(n,"millisecondsTimestamp"):n))?s:c)===u?s.call(a,{name:"millisecondsTimestamp",hash:{},data:o,loc:{start:{line:9,column:83},end:{line:9,column:108}}}):s)+'" title="'+d(typeof(s=null!=(s=h(t,"formattedTimestamp")||(null!=n?h(n,"formattedTimestamp"):n))?s:c)===u?s.call(a,{name:"formattedTimestamp",hash:{},data:o,loc:{start:{line:9,column:117},end:{line:9,column:139}}}):s)+'">'+d(typeof(s=null!=(s=h(t,"relativeTimestamp")||(null!=n?h(n,"relativeTimestamp"):n))?s:c)===u?s.call(a,{name:"relativeTimestamp",hash:{},data:o,loc:{start:{line:9,column:141},end:{line:9,column:162}}}):s)+"</span>\n\t\t\t\t</a>\n\t\t\t</div>\n";return s=null!=(s=h(t,"hasDetails")||(null!=n?h(n,"hasDetails"):n))?s:c,r={name:"hasDetails",hash:{},fn:e.program(1,o,0),inverse:e.noop,data:o,loc:{start:{line:12,column:3},end:{line:16,column:18}}},l=typeof s===u?s.call(a,r):s,h(t,"hasDetails")||(l=p.call(n,l,r)),null!=l&&(m+=l),m+="\t\t</div>\n",s=null!=(s=h(t,"canRevert")||(null!=n?h(n,"canRevert"):n))?s:c,r={name:"canRevert",hash:{},fn:e.program(3,o,0),inverse:e.noop,data:o,loc:{start:{line:18,column:2},end:{line:20,column:16}}},l=typeof s===u?s.call(a,r):s,h(t,"canRevert")||(l=p.call(n,l,r)),null!=l&&(m+=l),m+"\t</div>\n</li>\n"},useData:!0})},97834:function(e,n,t){var i=t(40202);e.exports=(i.default||i).template({compiler:[8,">= 4.3.0"],main:function(e,n,t,i,o){var l,s=null!=n?n:e.nullContext||{},r=e.hooks.helperMissing,a="function",c=e.escapeExpression,u=e.lookupProperty||function(e,n){if(Object.prototype.hasOwnProperty.call(e,n))return e[n]};return'<ul class="versions"></ul>\n<div class="clear-float"></div>\n<div class="empty hidden">\n\t<div class="emptycontent">\n\t\t<div class="icon-history"></div>\n\t\t<p>'+c(typeof(l=null!=(l=u(t,"emptyResultLabel")||(null!=n?u(n,"emptyResultLabel"):n))?l:r)===a?l.call(s,{name:"emptyResultLabel",hash:{},data:o,loc:{start:{line:6,column:5},end:{line:6,column:25}}}):l)+'</p>\n\t</div>\n</div>\n<input type="button" class="showMoreVersions hidden" value="'+c(typeof(l=null!=(l=u(t,"moreVersionsLabel")||(null!=n?u(n,"moreVersionsLabel"):n))?l:r)===a?l.call(s,{name:"moreVersionsLabel",hash:{},data:o,loc:{start:{line:9,column:60},end:{line:9,column:81}}}):l)+'" name="show-more-versions" id="show-more-versions" />\n<div class="loading hidden" style="height: 50px"></div>\n'},useData:!0})}},o={};function l(e){var n=o[e];if(void 0!==n)return n.exports;var t=o[e]={id:e,loaded:!1,exports:{}};return i[e].call(t.exports,t,t.exports,l),t.loaded=!0,t.exports}l.m=i,l.amdD=function(){throw new Error("define cannot be used indirect")},l.amdO={},e=[],l.O=function(n,t,i,o){if(!t){var s=1/0;for(u=0;u<e.length;u++){t=e[u][0],i=e[u][1],o=e[u][2];for(var r=!0,a=0;a<t.length;a++)(!1&o||s>=o)&&Object.keys(l.O).every((function(e){return l.O[e](t[a])}))?t.splice(a--,1):(r=!1,o<s&&(s=o));if(r){e.splice(u--,1);var c=i();void 0!==c&&(n=c)}}return n}o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[t,i,o]},l.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return l.d(n,{a:n}),n},l.d=function(e,n){for(var t in n)l.o(n,t)&&!l.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},l.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),l.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},l.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},l.j=1358,function(){l.b=document.baseURI||self.location.href;var e={1358:0};l.O.j=function(n){return 0===e[n]};var n=function(n,t){var i,o,s=t[0],r=t[1],a=t[2],c=0;if(s.some((function(n){return 0!==e[n]}))){for(i in r)l.o(r,i)&&(l.m[i]=r[i]);if(a)var u=a(l)}for(n&&n(t);c<s.length;c++)o=s[c],l.o(e,o)&&e[o]&&e[o][0](),e[o]=0;return l.O(u)},t=self.webpackChunknextcloud=self.webpackChunknextcloud||[];t.forEach(n.bind(null,0)),t.push=n.bind(null,t.push.bind(t))}();var s=l.O(void 0,[7874],(function(){return l(22420)}));s=l.O(s)}();
-//# sourceMappingURL=files_versions-files_versions.js.map?v=68f4bf4fb28e8b7a3a3f \ No newline at end of file
+!function(){var e,i={22420:function(e,i,o){"use strict";o(29088),o(47673);var l=o(94702),s=o.n(l),r=o(97834),a=o.n(r);!function(){if(OCA.Files.DetailTabView){var e=OCA.Files.DetailTabView.extend({id:"versionsTabView",className:"tab versionsTabView",_template:null,$versionsContainer:null,events:{"click .revertVersion":"_onClickRevertVersion"},initialize:function(){OCA.Files.DetailTabView.prototype.initialize.apply(this,arguments),this.collection=new OCA.Versions.VersionCollection,this.collection.on("request",this._onRequest,this),this.collection.on("sync",this._onEndRequest,this),this.collection.on("update",this._onUpdate,this),this.collection.on("error",this._onError,this),this.collection.on("add",this._onAddModel,this)},getLabel:function(){return t("files_versions","Versions")},getIcon:function(){return"icon-history"},nextPage:function(){this._loading||this.collection.getFileInfo()&&this.collection.getFileInfo().isDirectory()||this.collection.fetch()},_onClickRevertVersion:function(e){var n=this,i=$(e.target),o=this.collection.getFileInfo();i.is("li")||(i=i.closest("li")),e.preventDefault();var l=i.attr("data-revision"),s=this.collection.get(l);s.revert({success:function(){n.$versionsContainer.empty(),n.collection.setFileInfo(o),n.collection.reset([],{silent:!0}),n.collection.fetch(),n.$el.find(".versions").removeClass("hidden"),o.trigger("busy",o,!1),o.set({size:s.get("size"),mtime:1e3*s.get("timestamp"),etag:s.get("id")+s.get("timestamp")})},error:function(){o.trigger("busy",o,!1),n.$el.find(".versions").removeClass("hidden"),n._toggleLoading(!1),OC.Notification.show(t("files_version","Failed to revert {file} to revision {timestamp}.",{file:s.getFullPath(),timestamp:OC.Util.formatDate(1e3*s.get("timestamp"))}),{type:"error"})}}),this._toggleLoading(!0),o.trigger("busy",o,!0)},_toggleLoading:function(e){this._loading=e,this.$el.find(".loading").toggleClass("hidden",!e)},_onRequest:function(){this._toggleLoading(!0)},_onEndRequest:function(){this._toggleLoading(!1),this.$el.find(".empty").toggleClass("hidden",!!this.collection.length)},_onAddModel:function(e){var n=$(this.itemTemplate(this._formatItem(e)));this.$versionsContainer.append(n),n.find(".has-tooltip").tooltip()},template:function(e){return a()(e)},itemTemplate:function(e){return s()(e)},setFileInfo:function(e){e?(this.render(),this.collection.setFileInfo(e),this.collection.reset([],{silent:!0}),this.nextPage()):(this.render(),this.collection.reset())},_formatItem:function(e){var i=1e3*e.get("timestamp"),o=e.has("size")?e.get("size"):0,l=OC.MimeType.getIconUrl(e.get("mimetype")),s=new Image;return s.onload=function(){$("li[data-revision="+e.get("id")+"] .preview").attr("src",e.getPreviewUrl())},s.src=e.getPreviewUrl(),_.extend({versionId:e.get("id"),formattedTimestamp:OC.Util.formatDate(i),relativeTimestamp:OC.Util.relativeModifiedDate(i),millisecondsTimestamp:i,humanReadableSize:OC.Util.humanFileSize(o,!0),altSize:n("files","%n byte","%n bytes",o),hasDetails:e.has("size"),downloadUrl:e.getDownloadUrl(),downloadIconUrl:OC.imagePath("core","actions/download"),downloadName:e.get("name"),revertIconUrl:OC.imagePath("core","actions/history"),previewUrl:l,revertLabel:t("files_versions","Restore"),canRevert:0!=(this.collection.getFileInfo().get("permissions")&OC.PERMISSION_UPDATE)},e.attributes)},render:function(){this.$el.html(this.template({emptyResultLabel:t("files_versions","No other versions available")})),this.$el.find(".has-tooltip").tooltip(),this.$versionsContainer=this.$el.find("ul.versions"),this.delegateEvents()},canDisplay:function(e){return!!e&&!e.isDirectory()}});OCA.Versions=OCA.Versions||{},OCA.Versions.VersionsTabView=e}}(),o(29020);var c=o(93379),u=o.n(c),d=o(7795),p=o.n(d),h=o(90569),m=o.n(h),f=o(3565),v=o.n(f),A=o(19216),g=o.n(A),C=o(44589),b=o.n(C),w=o(42028),y={};y.styleTagTransform=b(),y.setAttributes=v(),y.insert=m().bind(null,"head"),y.domAPI=p(),y.insertStyleElement=g(),u()(w.Z,y),w.Z&&w.Z.locals&&w.Z.locals,window.OCA.Versions=OCA.Versions},29020:function(){OCA.Versions=OCA.Versions||{},OCA.Versions.Util={attach:function(e){"trashbin"!==e.id&&"files.public"!==e.id&&e.registerTabView(new OCA.Versions.VersionsTabView("versionsTabView",{order:-10}))}},OC.Plugins.register("OCA.Files.FileList",OCA.Versions.Util)},47673:function(){var e;e=OC.Backbone.Collection.extend({model:OCA.Versions.VersionModel,sync:OC.Backbone.davSync,_fileInfo:null,_currentUser:null,_client:null,setFileInfo:function(e){this._fileInfo=e},getFileInfo:function(){return this._fileInfo},setCurrentUser:function(e){this._currentUser=e},getCurrentUser:function(){return this._currentUser||OC.getCurrentUser().uid},setClient:function(e){this._client=e},getClient:function(){return this._client||new OC.Files.Client({host:OC.getHost(),root:OC.linkToRemoteBase("dav")+"/versions/"+this.getCurrentUser(),useHTTPS:"https"===OC.getProtocol()})},url:function(){return OC.linkToRemoteBase("dav")+"/versions/"+this.getCurrentUser()+"/versions/"+this._fileInfo.get("id")},parse:function(e){var n=this._fileInfo.getFullPath(),t=this._fileInfo.get("id"),i=this._fileInfo.get("name"),o=this.getCurrentUser(),l=this.getClient();return _.map(e,(function(e){return e.fullPath=n,e.fileId=t,e.name=i,e.timestamp=parseInt(moment(new Date(e.timestamp)).format("X"),10),e.id=OC.basename(e.href),e.size=parseInt(e.size,10),e.user=o,e.client=l,e}))}}),OCA.Versions=OCA.Versions||{},OCA.Versions.VersionCollection=e},29088:function(){var e;e=OC.Backbone.Model.extend({sync:OC.Backbone.davSync,davProperties:{size:"{DAV:}getcontentlength",mimetype:"{DAV:}getcontenttype",timestamp:"{DAV:}getlastmodified"},revert:function(e){e=e?_.clone(e):{};var n=this;return this.get("client").move("/versions/"+this.get("fileId")+"/"+this.get("id"),"/restore/target",!0).done((function(){e.success&&e.success.call(e.context,n,{},e),n.trigger("revert",n,e)})).fail((function(){e.error&&e.error.call(e.context,n,{},e),n.trigger("error",n,{},e)}))},getFullPath:function(){return this.get("fullPath")},getPreviewUrl:function(){var e=OC.generateUrl("/apps/files_versions/preview"),n={file:this.get("fullPath"),version:this.get("id")};return e+"?"+OC.buildQueryString(n)},getDownloadUrl:function(){return OC.linkToRemoteBase("dav")+"/versions/"+this.get("user")+"/versions/"+this.get("fileId")+"/"+this.get("id")}}),OCA.Versions=OCA.Versions||{},OCA.Versions.VersionModel=e},42028:function(e,n,t){"use strict";var i=t(87537),o=t.n(i),l=t(23645),s=t.n(l)()(o());s.push([e.id,".versionsTabView .clear-float {\n\tclear: both;\n}\n\n.versionsTabView li {\n\twidth: 100%;\n\tcursor: default;\n\theight: 56px;\n\tfloat: left;\n\tborder-bottom: 1px solid rgba(100,100,100,.1);\n}\n.versionsTabView li:last-child {\n\tborder-bottom: none;\n}\n\n.versionsTabView a,\n.versionsTabView div > span {\n\tvertical-align: middle;\n\topacity: .5;\n}\n\n.versionsTabView li a{\n\tpadding: 15px 10px 11px;\n}\n\n.versionsTabView a:hover,\n.versionsTabView a:focus {\n\topacity: 1;\n}\n\n.versionsTabView .preview-container {\n\tdisplay: inline-block;\n vertical-align: top;\n}\n\n.versionsTabView img {\n\tcursor: pointer;\n\tpadding-right: 4px;\n}\n\n.versionsTabView img.preview {\n\tcursor: default;\n}\n\n.versionsTabView .version-container {\n\tdisplay: inline-block;\n}\n\n.versionsTabView .versiondate {\n\tmin-width: 100px;\n\tvertical-align: super;\n}\n\n.versionsTabView .version-details {\n\ttext-align: left;\n}\n\n.versionsTabView .version-details > span {\n\tpadding: 0 10px;\n}\n\n.versionsTabView .revertVersion {\n\tcursor: pointer;\n\tfloat: right;\n\tmargin-right: -10px;\n}\n","",{version:3,sources:["webpack://./apps/files_versions/src/css/versions.css"],names:[],mappings:"AAAA;CACC,WAAW;AACZ;;AAEA;CACC,WAAW;CACX,eAAe;CACf,YAAY;CACZ,WAAW;CACX,6CAA6C;AAC9C;AACA;CACC,mBAAmB;AACpB;;AAEA;;CAEC,sBAAsB;CACtB,WAAW;AACZ;;AAEA;CACC,uBAAuB;AACxB;;AAEA;;CAEC,UAAU;AACX;;AAEA;CACC,qBAAqB;EACpB,mBAAmB;AACrB;;AAEA;CACC,eAAe;CACf,kBAAkB;AACnB;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,qBAAqB;AACtB;;AAEA;CACC,gBAAgB;CAChB,qBAAqB;AACtB;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,eAAe;CACf,YAAY;CACZ,mBAAmB;AACpB",sourcesContent:[".versionsTabView .clear-float {\n\tclear: both;\n}\n\n.versionsTabView li {\n\twidth: 100%;\n\tcursor: default;\n\theight: 56px;\n\tfloat: left;\n\tborder-bottom: 1px solid rgba(100,100,100,.1);\n}\n.versionsTabView li:last-child {\n\tborder-bottom: none;\n}\n\n.versionsTabView a,\n.versionsTabView div > span {\n\tvertical-align: middle;\n\topacity: .5;\n}\n\n.versionsTabView li a{\n\tpadding: 15px 10px 11px;\n}\n\n.versionsTabView a:hover,\n.versionsTabView a:focus {\n\topacity: 1;\n}\n\n.versionsTabView .preview-container {\n\tdisplay: inline-block;\n vertical-align: top;\n}\n\n.versionsTabView img {\n\tcursor: pointer;\n\tpadding-right: 4px;\n}\n\n.versionsTabView img.preview {\n\tcursor: default;\n}\n\n.versionsTabView .version-container {\n\tdisplay: inline-block;\n}\n\n.versionsTabView .versiondate {\n\tmin-width: 100px;\n\tvertical-align: super;\n}\n\n.versionsTabView .version-details {\n\ttext-align: left;\n}\n\n.versionsTabView .version-details > span {\n\tpadding: 0 10px;\n}\n\n.versionsTabView .revertVersion {\n\tcursor: pointer;\n\tfloat: right;\n\tmargin-right: -10px;\n}\n"],sourceRoot:""}]),n.Z=s},94702:function(e,n,t){var i=t(40202);e.exports=(i.default||i).template({1:function(e,n,t,i,o){var l,s=null!=n?n:e.nullContext||{},r=e.hooks.helperMissing,a="function",c=e.escapeExpression,u=e.lookupProperty||function(e,n){if(Object.prototype.hasOwnProperty.call(e,n))return e[n]};return'\t\t\t\t<div class="version-details">\n\t\t\t\t\t<span class="size has-tooltip" title="'+c(typeof(l=null!=(l=u(t,"altSize")||(null!=n?u(n,"altSize"):n))?l:r)===a?l.call(s,{name:"altSize",hash:{},data:o,loc:{start:{line:14,column:43},end:{line:14,column:54}}}):l)+'">'+c(typeof(l=null!=(l=u(t,"humanReadableSize")||(null!=n?u(n,"humanReadableSize"):n))?l:r)===a?l.call(s,{name:"humanReadableSize",hash:{},data:o,loc:{start:{line:14,column:56},end:{line:14,column:77}}}):l)+"</span>\n\t\t\t\t</div>\n"},3:function(e,n,t,i,o){var l,s=null!=n?n:e.nullContext||{},r=e.hooks.helperMissing,a="function",c=e.escapeExpression,u=e.lookupProperty||function(e,n){if(Object.prototype.hasOwnProperty.call(e,n))return e[n]};return'\t\t\t<a href="#" class="revertVersion" title="'+c(typeof(l=null!=(l=u(t,"revertLabel")||(null!=n?u(n,"revertLabel"):n))?l:r)===a?l.call(s,{name:"revertLabel",hash:{},data:o,loc:{start:{line:19,column:44},end:{line:19,column:59}}}):l)+'"><img src="'+c(typeof(l=null!=(l=u(t,"revertIconUrl")||(null!=n?u(n,"revertIconUrl"):n))?l:r)===a?l.call(s,{name:"revertIconUrl",hash:{},data:o,loc:{start:{line:19,column:71},end:{line:19,column:88}}}):l)+'" /></a>\n'},compiler:[8,">= 4.3.0"],main:function(e,n,t,i,o){var l,s,r,a=null!=n?n:e.nullContext||{},c=e.hooks.helperMissing,u="function",d=e.escapeExpression,p=e.hooks.blockHelperMissing,h=e.lookupProperty||function(e,n){if(Object.prototype.hasOwnProperty.call(e,n))return e[n]},m='<li data-revision="'+d(typeof(s=null!=(s=h(t,"id")||(null!=n?h(n,"id"):n))?s:c)===u?s.call(a,{name:"id",hash:{},data:o,loc:{start:{line:1,column:19},end:{line:1,column:25}}}):s)+'">\n\t<div>\n\t\t<div class="preview-container">\n\t\t\t<img class="preview" src="'+d(typeof(s=null!=(s=h(t,"previewUrl")||(null!=n?h(n,"previewUrl"):n))?s:c)===u?s.call(a,{name:"previewUrl",hash:{},data:o,loc:{start:{line:4,column:29},end:{line:4,column:43}}}):s)+'" width="44" height="44"/>\n\t\t</div>\n\t\t<div class="version-container">\n\t\t\t<div>\n\t\t\t\t<a href="'+d(typeof(s=null!=(s=h(t,"downloadUrl")||(null!=n?h(n,"downloadUrl"):n))?s:c)===u?s.call(a,{name:"downloadUrl",hash:{},data:o,loc:{start:{line:8,column:13},end:{line:8,column:28}}}):s)+'" class="downloadVersion" download="'+d(typeof(s=null!=(s=h(t,"downloadName")||(null!=n?h(n,"downloadName"):n))?s:c)===u?s.call(a,{name:"downloadName",hash:{},data:o,loc:{start:{line:8,column:64},end:{line:8,column:80}}}):s)+'"><img src="'+d(typeof(s=null!=(s=h(t,"downloadIconUrl")||(null!=n?h(n,"downloadIconUrl"):n))?s:c)===u?s.call(a,{name:"downloadIconUrl",hash:{},data:o,loc:{start:{line:8,column:92},end:{line:8,column:111}}}):s)+'" />\n\t\t\t\t\t<span class="versiondate has-tooltip live-relative-timestamp" data-timestamp="'+d(typeof(s=null!=(s=h(t,"millisecondsTimestamp")||(null!=n?h(n,"millisecondsTimestamp"):n))?s:c)===u?s.call(a,{name:"millisecondsTimestamp",hash:{},data:o,loc:{start:{line:9,column:83},end:{line:9,column:108}}}):s)+'" title="'+d(typeof(s=null!=(s=h(t,"formattedTimestamp")||(null!=n?h(n,"formattedTimestamp"):n))?s:c)===u?s.call(a,{name:"formattedTimestamp",hash:{},data:o,loc:{start:{line:9,column:117},end:{line:9,column:139}}}):s)+'">'+d(typeof(s=null!=(s=h(t,"relativeTimestamp")||(null!=n?h(n,"relativeTimestamp"):n))?s:c)===u?s.call(a,{name:"relativeTimestamp",hash:{},data:o,loc:{start:{line:9,column:141},end:{line:9,column:162}}}):s)+"</span>\n\t\t\t\t</a>\n\t\t\t</div>\n";return s=null!=(s=h(t,"hasDetails")||(null!=n?h(n,"hasDetails"):n))?s:c,r={name:"hasDetails",hash:{},fn:e.program(1,o,0),inverse:e.noop,data:o,loc:{start:{line:12,column:3},end:{line:16,column:18}}},l=typeof s===u?s.call(a,r):s,h(t,"hasDetails")||(l=p.call(n,l,r)),null!=l&&(m+=l),m+="\t\t</div>\n",s=null!=(s=h(t,"canRevert")||(null!=n?h(n,"canRevert"):n))?s:c,r={name:"canRevert",hash:{},fn:e.program(3,o,0),inverse:e.noop,data:o,loc:{start:{line:18,column:2},end:{line:20,column:16}}},l=typeof s===u?s.call(a,r):s,h(t,"canRevert")||(l=p.call(n,l,r)),null!=l&&(m+=l),m+"\t</div>\n</li>\n"},useData:!0})},97834:function(e,n,t){var i=t(40202);e.exports=(i.default||i).template({compiler:[8,">= 4.3.0"],main:function(e,n,t,i,o){var l,s=null!=n?n:e.nullContext||{},r=e.hooks.helperMissing,a="function",c=e.escapeExpression,u=e.lookupProperty||function(e,n){if(Object.prototype.hasOwnProperty.call(e,n))return e[n]};return'<ul class="versions"></ul>\n<div class="clear-float"></div>\n<div class="empty hidden">\n\t<div class="emptycontent">\n\t\t<div class="icon-history"></div>\n\t\t<p>'+c(typeof(l=null!=(l=u(t,"emptyResultLabel")||(null!=n?u(n,"emptyResultLabel"):n))?l:r)===a?l.call(s,{name:"emptyResultLabel",hash:{},data:o,loc:{start:{line:6,column:5},end:{line:6,column:25}}}):l)+'</p>\n\t</div>\n</div>\n<input type="button" class="showMoreVersions hidden" value="'+c(typeof(l=null!=(l=u(t,"moreVersionsLabel")||(null!=n?u(n,"moreVersionsLabel"):n))?l:r)===a?l.call(s,{name:"moreVersionsLabel",hash:{},data:o,loc:{start:{line:9,column:60},end:{line:9,column:81}}}):l)+'" name="show-more-versions" id="show-more-versions" />\n<div class="loading hidden" style="height: 50px"></div>\n'},useData:!0})}},o={};function l(e){var n=o[e];if(void 0!==n)return n.exports;var t=o[e]={id:e,loaded:!1,exports:{}};return i[e].call(t.exports,t,t.exports,l),t.loaded=!0,t.exports}l.m=i,l.amdD=function(){throw new Error("define cannot be used indirect")},l.amdO={},e=[],l.O=function(n,t,i,o){if(!t){var s=1/0;for(u=0;u<e.length;u++){t=e[u][0],i=e[u][1],o=e[u][2];for(var r=!0,a=0;a<t.length;a++)(!1&o||s>=o)&&Object.keys(l.O).every((function(e){return l.O[e](t[a])}))?t.splice(a--,1):(r=!1,o<s&&(s=o));if(r){e.splice(u--,1);var c=i();void 0!==c&&(n=c)}}return n}o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[t,i,o]},l.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return l.d(n,{a:n}),n},l.d=function(e,n){for(var t in n)l.o(n,t)&&!l.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},l.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),l.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},l.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},l.j=1358,function(){l.b=document.baseURI||self.location.href;var e={1358:0};l.O.j=function(n){return 0===e[n]};var n=function(n,t){var i,o,s=t[0],r=t[1],a=t[2],c=0;if(s.some((function(n){return 0!==e[n]}))){for(i in r)l.o(r,i)&&(l.m[i]=r[i]);if(a)var u=a(l)}for(n&&n(t);c<s.length;c++)o=s[c],l.o(e,o)&&e[o]&&e[o][0](),e[o]=0;return l.O(u)},t=self.webpackChunknextcloud=self.webpackChunknextcloud||[];t.forEach(n.bind(null,0)),t.push=n.bind(null,t.push.bind(t))}(),l.nc=void 0;var s=l.O(void 0,[7874],(function(){return l(22420)}));s=l.O(s)}();
+//# sourceMappingURL=files_versions-files_versions.js.map?v=033d8e0f6023458ab1ba \ No newline at end of file
diff --git a/dist/files_versions-files_versions.js.map b/dist/files_versions-files_versions.js.map
index 854f0662c5f..c13a870e5bc 100644
--- a/dist/files_versions-files_versions.js.map
+++ b/dist/files_versions-files_versions.js.map
@@ -1 +1 @@
-{"version":3,"file":"files_versions-files_versions.js?v=68f4bf4fb28e8b7a3a3f","mappings":";gBAAIA,uGC+BJ,WACC,GAAKC,IAAIC,MAAMC,cAAf,CAOA,IAAMC,EAAkBH,IAAIC,MAAMC,cAAcE,OAA2D,CAC1GC,GAAI,kBACJC,UAAW,sBAEXC,UAAW,KAEXC,mBAAoB,KAEpBC,OAAQ,CACP,uBAAwB,yBAGzBC,WAZ0G,WAazGV,IAAIC,MAAMC,cAAcS,UAAUD,WAAWE,MAAMC,KAAMC,WACzDD,KAAKE,WAAa,IAAIf,IAAIgB,SAASC,kBACnCJ,KAAKE,WAAWG,GAAG,UAAWL,KAAKM,WAAYN,MAC/CA,KAAKE,WAAWG,GAAG,OAAQL,KAAKO,cAAeP,MAC/CA,KAAKE,WAAWG,GAAG,SAAUL,KAAKQ,UAAWR,MAC7CA,KAAKE,WAAWG,GAAG,QAASL,KAAKS,SAAUT,MAC3CA,KAAKE,WAAWG,GAAG,MAAOL,KAAKU,YAAaV,OAG7CW,SAtB0G,WAuBzG,OAAOC,EAAE,iBAAkB,aAG5BC,QA1B0G,WA2BzG,MAAO,gBAGRC,SA9B0G,WA+BrGd,KAAKe,UAILf,KAAKE,WAAWc,eAAiBhB,KAAKE,WAAWc,cAAcC,eAGnEjB,KAAKE,WAAWgB,SAGjBC,sBAzC0G,SAyCpFC,GACrB,IAAMC,EAAOrB,KACTsB,EAAUC,EAAEH,EAAGI,QACbC,EAAgBzB,KAAKE,WAAWc,cACjCM,EAAQI,GAAG,QACfJ,EAAUA,EAAQK,QAAQ,OAG3BP,EAAGQ,iBACH,IAAMC,EAAWP,EAAQQ,KAAK,iBAExBC,EAAe/B,KAAKE,WAAW8B,IAAIH,GACzCE,EAAaE,OAAO,CACnBC,QADmB,WAGlBb,EAAK1B,mBAAmBwC,QACxBd,EAAKnB,WAAWkC,YAAYX,GAC5BJ,EAAKnB,WAAWmC,MAAM,GAAI,CAAEC,QAAQ,IACpCjB,EAAKnB,WAAWgB,QAEhBG,EAAKkB,IAAIC,KAAK,aAAaC,YAAY,UAGvChB,EAAciB,QAAQ,OAAQjB,GAAe,GAC7CA,EAAckB,IAAI,CACjBC,KAAMb,EAAaC,IAAI,QACvBa,MAAuC,IAAhCd,EAAaC,IAAI,aAExBc,KAAMf,EAAaC,IAAI,MAAQD,EAAaC,IAAI,gBAIlDe,MApBmB,WAqBlBtB,EAAciB,QAAQ,OAAQjB,GAAe,GAC7CJ,EAAKkB,IAAIC,KAAK,aAAaC,YAAY,UACvCpB,EAAK2B,gBAAe,GACpBC,GAAGC,aAAaC,KAAKvC,EAAE,gBAAiB,mDACvC,CACCwC,KAAMrB,EAAasB,cACnBC,UAAWL,GAAGM,KAAKC,WAA2C,IAAhCzB,EAAaC,IAAI,gBAEjD,CACCyB,KAAM,aAOTzD,KAAKgD,gBAAe,GACpBvB,EAAciB,QAAQ,OAAQjB,GAAe,IAG9CuB,eA9F0G,SA8F3FU,GACd1D,KAAKe,SAAW2C,EAChB1D,KAAKuC,IAAIC,KAAK,YAAYmB,YAAY,UAAWD,IAGlDpD,WAnG0G,WAoGzGN,KAAKgD,gBAAe,IAGrBzC,cAvG0G,WAwGzGP,KAAKgD,gBAAe,GACpBhD,KAAKuC,IAAIC,KAAK,UAAUmB,YAAY,WAAY3D,KAAKE,WAAW0D,SAGjElD,YA5G0G,SA4G9FmD,GACX,IAAMtB,EAAMhB,EAAEvB,KAAK8D,aAAa9D,KAAK+D,YAAYF,KACjD7D,KAAKL,mBAAmBqE,OAAOzB,GAC/BA,EAAIC,KAAK,gBAAgByB,WAG1BC,SAlH0G,SAkHjGC,GACR,OAAOC,GAAAA,CAASD,IAGjBL,aAtH0G,SAsH7FK,GACZ,OAAOE,GAAAA,CAAaF,IAGrB/B,YA1H0G,SA0H9FkC,GACPA,GACHtE,KAAKuE,SACLvE,KAAKE,WAAWkC,YAAYkC,GAC5BtE,KAAKE,WAAWmC,MAAM,GAAI,CAAEC,QAAQ,IACpCtC,KAAKc,aAELd,KAAKuE,SACLvE,KAAKE,WAAWmC,UAIlB0B,YAtI0G,SAsI9FS,GACX,IAAMlB,EAAuC,IAA3BkB,EAAQxC,IAAI,aACxBY,EAAO4B,EAAQC,IAAI,QAAUD,EAAQxC,IAAI,QAAU,EACnD0C,EAAUzB,GAAG0B,SAASC,WAAWJ,EAAQxC,IAAI,aAC7C6C,EAAM,IAAIC,MAMhB,OALAD,EAAIE,OAAS,WACZxD,EAAE,oBAAsBiD,EAAQxC,IAAI,MAAQ,cAAcF,KAAK,MAAO0C,EAAQQ,kBAE/EH,EAAII,IAAMT,EAAQQ,gBAEXE,EAAE3F,OAAO,CACf4F,UAAWX,EAAQxC,IAAI,MACvBoD,mBAAoBnC,GAAGM,KAAKC,WAAWF,GACvC+B,kBAAmBpC,GAAGM,KAAK+B,qBAAqBhC,GAChDiC,sBAAuBjC,EACvBkC,kBAAmBvC,GAAGM,KAAKkC,cAAc7C,GAAM,GAC/C8C,QAASC,EAAE,QAAS,UAAW,WAAY/C,GAC3CgD,WAAYpB,EAAQC,IAAI,QACxBoB,YAAarB,EAAQsB,iBACrBC,gBAAiB9C,GAAG+C,UAAU,OAAQ,oBACtCC,aAAczB,EAAQxC,IAAI,QAC1BkE,cAAejD,GAAG+C,UAAU,OAAQ,mBACpCG,WAAYzB,EACZ0B,YAAaxF,EAAE,iBAAkB,WACjCyF,UAAyF,IAA7ErG,KAAKE,WAAWc,cAAcgB,IAAI,eAAiBiB,GAAGqD,oBAChE9B,EAAQ+B,aAMZhC,OArK0G,WAsKzGvE,KAAKuC,IAAIiE,KAAKxG,KAAKkE,SAAS,CAC3BuC,iBAAkB7F,EAAE,iBAAkB,kCAEvCZ,KAAKuC,IAAIC,KAAK,gBAAgByB,UAC9BjE,KAAKL,mBAAqBK,KAAKuC,IAAIC,KAAK,eACxCxC,KAAK0G,kBASNC,WApL0G,SAoL/FrC,GACV,QAAKA,IAGGA,EAASrD,iBAInB9B,IAAIgB,SAAWhB,IAAIgB,UAAY,GAE/BhB,IAAIgB,SAASb,gBAAkBA,GAtMhC,iJCpBIsH,EAAU,GAEdA,EAAQC,kBAAoB,IAC5BD,EAAQE,cAAgB,IAElBF,EAAQG,OAAS,SAAc,KAAM,QAE3CH,EAAQI,OAAS,IACjBJ,EAAQK,mBAAqB,IAEhB,IAAI,IAASL,GAKJ,KAAW,YAAiB,WCElDM,OAAO/H,IAAIgB,SAAWhB,IAAIgB,2BCJzBhB,IAAIgB,SAAWhB,IAAIgB,UAAY,GAK/BhB,IAAIgB,SAASoD,KAAO,CAMnB4D,OANmB,SAMZC,GACc,aAAhBA,EAAS5H,IAAqC,iBAAhB4H,EAAS5H,IAI3C4H,EAASC,gBAAgB,IAAIlI,IAAIgB,SAASb,gBAAgB,kBAAmB,CAAEgI,OAAQ,QAK1FrE,GAAGsE,QAAQC,SAAS,qBAAsBrI,IAAIgB,SAASoD,wBCrBvD,IAIOnD,EAAAA,EAAoB6C,GAAGwE,SAASC,WAAWnI,OAAO,CACvDsE,MAAO1E,IAAIgB,SAASwH,aACpBC,KAAM3E,GAAGwE,SAASI,QAKlBC,UAAW,KAEXC,aAAc,KAEdC,QAAS,KAET5F,YAbuD,SAa3CkC,GACXtE,KAAK8H,UAAYxD,GAGlBtD,YAjBuD,WAkBtD,OAAOhB,KAAK8H,WAGbG,eArBuD,SAqBxCC,GACdlI,KAAK+H,aAAeG,GAGrBC,eAzBuD,WA0BtD,OAAOnI,KAAK+H,cAAgB9E,GAAGkF,iBAAiBC,KAGjDC,UA7BuD,SA6B7CC,GACTtI,KAAKgI,QAAUM,GAGhBC,UAjCuD,WAkCtD,OAAOvI,KAAKgI,SAAW,IAAI/E,GAAG7D,MAAMoJ,OAAO,CAC1CC,KAAMxF,GAAGyF,UACTC,KAAM1F,GAAG2F,iBAAiB,OAAS,aAAe5I,KAAKmI,iBACvDU,SAA+B,UAArB5F,GAAG6F,iBAIfC,IAzCuD,WA0CtD,OAAO9F,GAAG2F,iBAAiB,OAAS,aAAe5I,KAAKmI,iBAAmB,aAAenI,KAAK8H,UAAU9F,IAAI,OAG9GgH,MA7CuD,SA6CjDC,GACL,IAAMC,EAAWlJ,KAAK8H,UAAUzE,cAC1B8F,EAASnJ,KAAK8H,UAAU9F,IAAI,MAC5BoH,EAAOpJ,KAAK8H,UAAU9F,IAAI,QAC1BkG,EAAOlI,KAAKmI,iBACZG,EAAStI,KAAKuI,YACpB,OAAOrD,EAAEmE,IAAIJ,GAAQ,SAASzE,GAS7B,OARAA,EAAQ0E,SAAWA,EACnB1E,EAAQ2E,OAASA,EACjB3E,EAAQ4E,KAAOA,EACf5E,EAAQlB,UAAYgG,SAASC,OAAO,IAAIC,KAAKhF,EAAQlB,YAAYmG,OAAO,KAAM,IAC9EjF,EAAQhF,GAAKyD,GAAGyG,SAASlF,EAAQmF,MACjCnF,EAAQ5B,KAAO0G,SAAS9E,EAAQ5B,KAAM,IACtC4B,EAAQ0D,KAAOA,EACf1D,EAAQ8D,OAASA,EACV9D,QAKVrF,IAAIgB,SAAWhB,IAAIgB,UAAY,GAE/BhB,IAAIgB,SAASC,kBAAoBA,oBCvElC,IAIOuH,EAAAA,EAAe1E,GAAGwE,SAASmC,MAAMrK,OAAO,CAC7CqI,KAAM3E,GAAGwE,SAASI,QAElBgC,cAAe,CACdjH,KAAM,yBACNkH,SAAU,uBACVxG,UAAW,yBASZrB,OAf6C,SAetC2E,GACNA,EAAUA,EAAU1B,EAAE6E,MAAMnD,GAAW,GACvC,IAAM/C,EAAQ7D,KAId,OAFeA,KAAKgC,IAAI,UAEVgI,KAAK,aAAehK,KAAKgC,IAAI,UAAY,IAAMhC,KAAKgC,IAAI,MAAO,mBAAmB,GAC9FiI,MAAK,WACDrD,EAAQ1E,SACX0E,EAAQ1E,QAAQgI,KAAKtD,EAAQuD,QAAStG,EAAO,GAAI+C,GAElD/C,EAAMnB,QAAQ,SAAUmB,EAAO+C,MAE/BwD,MAAK,WACDxD,EAAQ7D,OACX6D,EAAQ7D,MAAMmH,KAAKtD,EAAQuD,QAAStG,EAAO,GAAI+C,GAEhD/C,EAAMnB,QAAQ,QAASmB,EAAO,GAAI+C,OAIrCvD,YApC6C,WAqC5C,OAAOrD,KAAKgC,IAAI,aAGjBgD,cAxC6C,WAyC5C,IAAM+D,EAAM9F,GAAGoH,YAAY,gCACrBC,EAAS,CACdlH,KAAMpD,KAAKgC,IAAI,YACfwC,QAASxE,KAAKgC,IAAI,OAEnB,OAAO+G,EAAM,IAAM9F,GAAGsH,iBAAiBD,IAGxCxE,eAjD6C,WAkD5C,OAAO7C,GAAG2F,iBAAiB,OAAS,aAAe5I,KAAKgC,IAAI,QAAU,aAAehC,KAAKgC,IAAI,UAAY,IAAMhC,KAAKgC,IAAI,SAI3H7C,IAAIgB,SAAWhB,IAAIgB,UAAY,GAE/BhB,IAAIgB,SAASwH,aAAeA,yECjFzB6C,QAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOlL,GAAI,klCAAmlC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,wDAAwD,MAAQ,GAAG,SAAW,kbAAkb,eAAiB,CAAC,mlCAAmlC,WAAa,MAEzwF,6BCPA,IAAImL,EAAa,EAAQ,OAEzBD,EAAOE,SAAWD,EAAoB,SAAKA,GAAYzG,SAAS,CAAC,EAAI,SAAS2G,EAAUC,EAAOC,EAAQC,EAAS7G,GAC5G,IAAI8G,EAAQC,EAAiB,MAAVJ,EAAiBA,EAAUD,EAAUM,aAAe,GAAKC,EAAOP,EAAUQ,MAAMC,cAAeC,EAAO,WAAYC,EAAOX,EAAUY,iBAAkBC,EAAiBb,EAAUa,gBAAkB,SAASC,EAAQC,GAClO,GAAIC,OAAO/L,UAAUgM,eAAe5B,KAAKyB,EAAQC,GAC/C,OAAOD,EAAOC,IAKtB,MAAO,0FACHJ,SAASP,EAAyH,OAA/GA,EAASS,EAAeX,EAAQ,aAAyB,MAAVD,EAAiBY,EAAeZ,EAAO,WAAaA,IAAmBG,EAASG,KAA2BG,EAASN,EAAOf,KAAKgB,EAAO,CAAC,KAAO,UAAU,KAAO,GAAG,KAAO/G,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,IAAI,IAAM,CAAC,KAAO,GAAG,OAAS,OAAS8G,GAC3T,KACAO,SAASP,EAA6I,OAAnIA,EAASS,EAAeX,EAAQ,uBAAmC,MAAVD,EAAiBY,EAAeZ,EAAO,qBAAuBA,IAAmBG,EAASG,KAA2BG,EAASN,EAAOf,KAAKgB,EAAO,CAAC,KAAO,oBAAoB,KAAO,GAAG,KAAO/G,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,IAAI,IAAM,CAAC,KAAO,GAAG,OAAS,OAAS8G,GACzV,6BACJ,EAAI,SAASJ,EAAUC,EAAOC,EAAQC,EAAS7G,GAC7C,IAAI8G,EAAQC,EAAiB,MAAVJ,EAAiBA,EAAUD,EAAUM,aAAe,GAAKC,EAAOP,EAAUQ,MAAMC,cAAeC,EAAO,WAAYC,EAAOX,EAAUY,iBAAkBC,EAAiBb,EAAUa,gBAAkB,SAASC,EAAQC,GAClO,GAAIC,OAAO/L,UAAUgM,eAAe5B,KAAKyB,EAAQC,GAC/C,OAAOD,EAAOC,IAKtB,MAAO,kDACHJ,SAASP,EAAiI,OAAvHA,EAASS,EAAeX,EAAQ,iBAA6B,MAAVD,EAAiBY,EAAeZ,EAAO,eAAiBA,IAAmBG,EAASG,KAA2BG,EAASN,EAAOf,KAAKgB,EAAO,CAAC,KAAO,cAAc,KAAO,GAAG,KAAO/G,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,IAAI,IAAM,CAAC,KAAO,GAAG,OAAS,OAAS8G,GACvU,eACAO,SAASP,EAAqI,OAA3HA,EAASS,EAAeX,EAAQ,mBAA+B,MAAVD,EAAiBY,EAAeZ,EAAO,iBAAmBA,IAAmBG,EAASG,KAA2BG,EAASN,EAAOf,KAAKgB,EAAO,CAAC,KAAO,gBAAgB,KAAO,GAAG,KAAO/G,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,IAAI,IAAM,CAAC,KAAO,GAAG,OAAS,OAAS8G,GAC7U,cACJ,SAAW,CAAC,EAAE,YAAY,KAAO,SAASJ,EAAUC,EAAOC,EAAQC,EAAS7G,GAC1E,IAAI4H,EAAQd,EAAQrE,EAASsE,EAAiB,MAAVJ,EAAiBA,EAAUD,EAAUM,aAAe,GAAKC,EAAOP,EAAUQ,MAAMC,cAAeC,EAAO,WAAYC,EAAOX,EAAUY,iBAAkBO,EAAOnB,EAAUQ,MAAMY,mBAAoBP,EAAiBb,EAAUa,gBAAkB,SAASC,EAAQC,GAC9R,GAAIC,OAAO/L,UAAUgM,eAAe5B,KAAKyB,EAAQC,GAC/C,OAAOD,EAAOC,IAGjBM,EACL,sBACIV,SAASP,EAA+G,OAArGA,EAASS,EAAeX,EAAQ,QAAoB,MAAVD,EAAiBY,EAAeZ,EAAO,MAAQA,IAAmBG,EAASG,KAA2BG,EAASN,EAAOf,KAAKgB,EAAO,CAAC,KAAO,KAAK,KAAO,GAAG,KAAO/G,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,IAAI,IAAM,CAAC,KAAO,EAAE,OAAS,OAAS8G,GAC1S,qFACAO,SAASP,EAA+H,OAArHA,EAASS,EAAeX,EAAQ,gBAA4B,MAAVD,EAAiBY,EAAeZ,EAAO,cAAgBA,IAAmBG,EAASG,KAA2BG,EAASN,EAAOf,KAAKgB,EAAO,CAAC,KAAO,aAAa,KAAO,GAAG,KAAO/G,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,IAAI,IAAM,CAAC,KAAO,EAAE,OAAS,OAAS8G,GAClU,8GACAO,SAASP,EAAiI,OAAvHA,EAASS,EAAeX,EAAQ,iBAA6B,MAAVD,EAAiBY,EAAeZ,EAAO,eAAiBA,IAAmBG,EAASG,KAA2BG,EAASN,EAAOf,KAAKgB,EAAO,CAAC,KAAO,cAAc,KAAO,GAAG,KAAO/G,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,IAAI,IAAM,CAAC,KAAO,EAAE,OAAS,OAAS8G,GACrU,uCACAO,SAASP,EAAmI,OAAzHA,EAASS,EAAeX,EAAQ,kBAA8B,MAAVD,EAAiBY,EAAeZ,EAAO,gBAAkBA,IAAmBG,EAASG,KAA2BG,EAASN,EAAOf,KAAKgB,EAAO,CAAC,KAAO,eAAe,KAAO,GAAG,KAAO/G,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,IAAI,IAAM,CAAC,KAAO,EAAE,OAAS,OAAS8G,GACxU,eACAO,SAASP,EAAyI,OAA/HA,EAASS,EAAeX,EAAQ,qBAAiC,MAAVD,EAAiBY,EAAeZ,EAAO,mBAAqBA,IAAmBG,EAASG,KAA2BG,EAASN,EAAOf,KAAKgB,EAAO,CAAC,KAAO,kBAAkB,KAAO,GAAG,KAAO/G,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,IAAI,IAAM,CAAC,KAAO,EAAE,OAAS,QAAU8G,GAClV,iGACAO,SAASP,EAAqJ,OAA3IA,EAASS,EAAeX,EAAQ,2BAAuC,MAAVD,EAAiBY,EAAeZ,EAAO,yBAA2BA,IAAmBG,EAASG,KAA2BG,EAASN,EAAOf,KAAKgB,EAAO,CAAC,KAAO,wBAAwB,KAAO,GAAG,KAAO/G,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,IAAI,IAAM,CAAC,KAAO,EAAE,OAAS,QAAU8G,GACpW,YACAO,SAASP,EAA+I,OAArIA,EAASS,EAAeX,EAAQ,wBAAoC,MAAVD,EAAiBY,EAAeZ,EAAO,sBAAwBA,IAAmBG,EAASG,KAA2BG,EAASN,EAAOf,KAAKgB,EAAO,CAAC,KAAO,qBAAqB,KAAO,GAAG,KAAO/G,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,KAAK,IAAM,CAAC,KAAO,EAAE,OAAS,QAAU8G,GAC5V,KACAO,SAASP,EAA6I,OAAnIA,EAASS,EAAeX,EAAQ,uBAAmC,MAAVD,EAAiBY,EAAeZ,EAAO,qBAAuBA,IAAmBG,EAASG,KAA2BG,EAASN,EAAOf,KAAKgB,EAAO,CAAC,KAAO,oBAAoB,KAAO,GAAG,KAAO/G,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,KAAK,IAAM,CAAC,KAAO,EAAE,OAAS,QAAU8G,GACzV,wCAQJ,OAPWA,EAA+H,OAArHA,EAASS,EAAeX,EAAQ,gBAA4B,MAAVD,EAAiBY,EAAeZ,EAAO,cAAgBA,IAAmBG,EAASG,EAASxE,EAAQ,CAAC,KAAO,aAAa,KAAO,GAAG,GAAKiE,EAAUsB,QAAQ,EAAGhI,EAAM,GAAG,QAAU0G,EAAUuB,KAAK,KAAOjI,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,GAAG,IAAM,CAAC,KAAO,GAAG,OAAS,MAAlV4H,SAAiWd,IAAWM,EAASN,EAAOf,KAAKgB,EAAOtE,GAAWqE,EAC9YS,EAAeX,EAAQ,gBAAiBgB,EAASC,EAAO9B,KAAKY,EAAOiB,EAAOnF,IAClE,MAAVmF,IAAkBG,GAAUH,GAChCG,GAAU,eACCjB,EAA6H,OAAnHA,EAASS,EAAeX,EAAQ,eAA2B,MAAVD,EAAiBY,EAAeZ,EAAO,aAAeA,IAAmBG,EAASG,EAASxE,EAAQ,CAAC,KAAO,YAAY,KAAO,GAAG,GAAKiE,EAAUsB,QAAQ,EAAGhI,EAAM,GAAG,QAAU0G,EAAUuB,KAAK,KAAOjI,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,GAAG,OAAS,GAAG,IAAM,CAAC,KAAO,GAAG,OAAS,MAA/U4H,SAA8Vd,IAAWM,EAASN,EAAOf,KAAKgB,EAAOtE,GAAWqE,EAC3YS,EAAeX,EAAQ,eAAgBgB,EAASC,EAAO9B,KAAKY,EAAOiB,EAAOnF,IACjE,MAAVmF,IAAkBG,GAAUH,GACzBG,EAAS,qBAChB,SAAU,2BC5DZ,IAAIvB,EAAa,EAAQ,OAEzBD,EAAOE,SAAWD,EAAoB,SAAKA,GAAYzG,SAAS,CAAC,SAAW,CAAC,EAAE,YAAY,KAAO,SAAS2G,EAAUC,EAAOC,EAAQC,EAAS7G,GACzI,IAAI8G,EAAQC,EAAiB,MAAVJ,EAAiBA,EAAUD,EAAUM,aAAe,GAAKC,EAAOP,EAAUQ,MAAMC,cAAeC,EAAO,WAAYC,EAAOX,EAAUY,iBAAkBC,EAAiBb,EAAUa,gBAAkB,SAASC,EAAQC,GAClO,GAAIC,OAAO/L,UAAUgM,eAAe5B,KAAKyB,EAAQC,GAC/C,OAAOD,EAAOC,IAKtB,MAAO,uKACHJ,SAASP,EAA2I,OAAjIA,EAASS,EAAeX,EAAQ,sBAAkC,MAAVD,EAAiBY,EAAeZ,EAAO,oBAAsBA,IAAmBG,EAASG,KAA2BG,EAASN,EAAOf,KAAKgB,EAAO,CAAC,KAAO,mBAAmB,KAAO,GAAG,KAAO/G,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,GAAG,IAAM,CAAC,KAAO,EAAE,OAAS,OAAS8G,GACnV,uFACAO,SAASP,EAA6I,OAAnIA,EAASS,EAAeX,EAAQ,uBAAmC,MAAVD,EAAiBY,EAAeZ,EAAO,qBAAuBA,IAAmBG,EAASG,KAA2BG,EAASN,EAAOf,KAAKgB,EAAO,CAAC,KAAO,oBAAoB,KAAO,GAAG,KAAO/G,EAAK,IAAM,CAAC,MAAQ,CAAC,KAAO,EAAE,OAAS,IAAI,IAAM,CAAC,KAAO,EAAE,OAAS,OAAS8G,GACvV,qHACJ,SAAU,MCdRoB,EAA2B,GAG/B,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAa5B,QAGrB,IAAIF,EAAS2B,EAAyBE,GAAY,CACjD/M,GAAI+M,EACJG,QAAQ,EACR9B,QAAS,IAUV,OANA+B,EAAoBJ,GAAUrC,KAAKQ,EAAOE,QAASF,EAAQA,EAAOE,QAAS0B,GAG3E5B,EAAOgC,QAAS,EAGThC,EAAOE,QAIf0B,EAAoBM,EAAID,EC5BxBL,EAAoBO,KAAO,WAC1B,MAAM,IAAIC,MAAM,mCCDjBR,EAAoBS,KAAO,GZAvB7N,EAAW,GACfoN,EAAoBU,EAAI,SAAS/D,EAAQgE,EAAUC,EAAIC,GACtD,IAAGF,EAAH,CAMA,IAAIG,EAAeC,EAAAA,EACnB,IAASC,EAAI,EAAGA,EAAIpO,EAAS0E,OAAQ0J,IAAK,CACrCL,EAAW/N,EAASoO,GAAG,GACvBJ,EAAKhO,EAASoO,GAAG,GACjBH,EAAWjO,EAASoO,GAAG,GAE3B,IAJA,IAGIC,GAAY,EACPC,EAAI,EAAGA,EAAIP,EAASrJ,OAAQ4J,MACpB,EAAXL,GAAsBC,GAAgBD,IAAatB,OAAO4B,KAAKnB,EAAoBU,GAAGU,OAAM,SAASC,GAAO,OAAOrB,EAAoBU,EAAEW,GAAKV,EAASO,OAC3JP,EAASW,OAAOJ,IAAK,IAErBD,GAAY,EACTJ,EAAWC,IAAcA,EAAeD,IAG7C,GAAGI,EAAW,CACbrO,EAAS0O,OAAON,IAAK,GACrB,IAAIO,EAAIX,SACET,IAANoB,IAAiB5E,EAAS4E,IAGhC,OAAO5E,EAzBNkE,EAAWA,GAAY,EACvB,IAAI,IAAIG,EAAIpO,EAAS0E,OAAQ0J,EAAI,GAAKpO,EAASoO,EAAI,GAAG,GAAKH,EAAUG,IAAKpO,EAASoO,GAAKpO,EAASoO,EAAI,GACrGpO,EAASoO,GAAK,CAACL,EAAUC,EAAIC,IaJ/Bb,EAAoB3G,EAAI,SAAS+E,GAChC,IAAIoD,EAASpD,GAAUA,EAAOqD,WAC7B,WAAa,OAAOrD,EAAgB,SACpC,WAAa,OAAOA,GAErB,OADA4B,EAAoB0B,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,GCLRxB,EAAoB0B,EAAI,SAASpD,EAASsD,GACzC,IAAI,IAAIP,KAAOO,EACX5B,EAAoB6B,EAAED,EAAYP,KAASrB,EAAoB6B,EAAEvD,EAAS+C,IAC5E9B,OAAOuC,eAAexD,EAAS+C,EAAK,CAAEU,YAAY,EAAMrM,IAAKkM,EAAWP,MCJ3ErB,EAAoBgC,EAAI,WACvB,GAA0B,iBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAOvO,MAAQ,IAAIwO,SAAS,cAAb,GACd,MAAOC,GACR,GAAsB,iBAAXvH,OAAqB,OAAOA,QALjB,GCAxBoF,EAAoB6B,EAAI,SAASO,EAAKC,GAAQ,OAAO9C,OAAO/L,UAAUgM,eAAe5B,KAAKwE,EAAKC,ICC/FrC,EAAoBuB,EAAI,SAASjD,GACX,oBAAXgE,QAA0BA,OAAOC,aAC1ChD,OAAOuC,eAAexD,EAASgE,OAAOC,YAAa,CAAEC,MAAO,WAE7DjD,OAAOuC,eAAexD,EAAS,aAAc,CAAEkE,OAAO,KCLvDxC,EAAoByC,IAAM,SAASrE,GAGlC,OAFAA,EAAOsE,MAAQ,GACVtE,EAAOuE,WAAUvE,EAAOuE,SAAW,IACjCvE,GCHR4B,EAAoBkB,EAAI,gBCAxBlB,EAAoB4C,EAAIC,SAASC,SAAW/N,KAAKgO,SAAS1F,KAK1D,IAAI2F,EAAkB,CACrB,KAAM,GAaPhD,EAAoBU,EAAEQ,EAAI,SAAS+B,GAAW,OAAoC,IAA7BD,EAAgBC,IAGrE,IAAIC,EAAuB,SAASC,EAA4BtL,GAC/D,IAKIoI,EAAUgD,EALVtC,EAAW9I,EAAK,GAChBuL,EAAcvL,EAAK,GACnBwL,EAAUxL,EAAK,GAGImJ,EAAI,EAC3B,GAAGL,EAAS2C,MAAK,SAASpQ,GAAM,OAA+B,IAAxB8P,EAAgB9P,MAAe,CACrE,IAAI+M,KAAYmD,EACZpD,EAAoB6B,EAAEuB,EAAanD,KACrCD,EAAoBM,EAAEL,GAAYmD,EAAYnD,IAGhD,GAAGoD,EAAS,IAAI1G,EAAS0G,EAAQrD,GAGlC,IADGmD,GAA4BA,EAA2BtL,GACrDmJ,EAAIL,EAASrJ,OAAQ0J,IACzBiC,EAAUtC,EAASK,GAChBhB,EAAoB6B,EAAEmB,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBC,GAAW,EAE5B,OAAOjD,EAAoBU,EAAE/D,IAG1B4G,EAAqBxO,KAA4B,sBAAIA,KAA4B,uBAAK,GAC1FwO,EAAmBC,QAAQN,EAAqBO,KAAK,KAAM,IAC3DF,EAAmBpF,KAAO+E,EAAqBO,KAAK,KAAMF,EAAmBpF,KAAKsF,KAAKF,OC/CvF,IAAIG,EAAsB1D,EAAoBU,OAAEP,EAAW,CAAC,OAAO,WAAa,OAAOH,EAAoB,UAC3G0D,EAAsB1D,EAAoBU,EAAEgD","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/files_versions/src/versionstabview.js","webpack://nextcloud/./apps/files_versions/src/css/versions.css?1aef","webpack:///nextcloud/apps/files_versions/src/files_versions.js","webpack:///nextcloud/apps/files_versions/src/filesplugin.js","webpack:///nextcloud/apps/files_versions/src/versioncollection.js","webpack:///nextcloud/apps/files_versions/src/versionmodel.js","webpack:///nextcloud/apps/files_versions/src/css/versions.css","webpack:///nextcloud/apps/files_versions/src/templates/item.handlebars","webpack:///nextcloud/apps/files_versions/src/templates/template.handlebars","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 (c) 2015\n *\n * @author Jan-Christoph Borchardt <hey@jancborchardt.net>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Michael Jobst <mjobst+github@tecratech.de>\n * @author noveens <noveen.sachdeva@research.iiit.ac.in>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\nimport ItemTemplate from './templates/item.handlebars'\nimport Template from './templates/template.handlebars';\n\n(function() {\n\tif (!OCA.Files.DetailTabView) {\n\t\t// Only register the versions tab within the files app\n\t\treturn\n\t}\n\t/**\n\t * @memberof OCA.Versions\n\t */\n\tconst VersionsTabView = OCA.Files.DetailTabView.extend(/** @lends OCA.Versions.VersionsTabView.prototype */{\n\t\tid: 'versionsTabView',\n\t\tclassName: 'tab versionsTabView',\n\n\t\t_template: null,\n\n\t\t$versionsContainer: null,\n\n\t\tevents: {\n\t\t\t'click .revertVersion': '_onClickRevertVersion',\n\t\t},\n\n\t\tinitialize() {\n\t\t\tOCA.Files.DetailTabView.prototype.initialize.apply(this, arguments)\n\t\t\tthis.collection = new OCA.Versions.VersionCollection()\n\t\t\tthis.collection.on('request', this._onRequest, this)\n\t\t\tthis.collection.on('sync', this._onEndRequest, this)\n\t\t\tthis.collection.on('update', this._onUpdate, this)\n\t\t\tthis.collection.on('error', this._onError, this)\n\t\t\tthis.collection.on('add', this._onAddModel, this)\n\t\t},\n\n\t\tgetLabel() {\n\t\t\treturn t('files_versions', 'Versions')\n\t\t},\n\n\t\tgetIcon() {\n\t\t\treturn 'icon-history'\n\t\t},\n\n\t\tnextPage() {\n\t\t\tif (this._loading) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this.collection.getFileInfo() && this.collection.getFileInfo().isDirectory()) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.collection.fetch()\n\t\t},\n\n\t\t_onClickRevertVersion(ev) {\n\t\t\tconst self = this\n\t\t\tlet $target = $(ev.target)\n\t\t\tconst fileInfoModel = this.collection.getFileInfo()\n\t\t\tif (!$target.is('li')) {\n\t\t\t\t$target = $target.closest('li')\n\t\t\t}\n\n\t\t\tev.preventDefault()\n\t\t\tconst revision = $target.attr('data-revision')\n\n\t\t\tconst versionModel = this.collection.get(revision)\n\t\t\tversionModel.revert({\n\t\t\t\tsuccess() {\n\t\t\t\t\t// reset and re-fetch the updated collection\n\t\t\t\t\tself.$versionsContainer.empty()\n\t\t\t\t\tself.collection.setFileInfo(fileInfoModel)\n\t\t\t\t\tself.collection.reset([], { silent: true })\n\t\t\t\t\tself.collection.fetch()\n\n\t\t\t\t\tself.$el.find('.versions').removeClass('hidden')\n\n\t\t\t\t\t// update original model\n\t\t\t\t\tfileInfoModel.trigger('busy', fileInfoModel, false)\n\t\t\t\t\tfileInfoModel.set({\n\t\t\t\t\t\tsize: versionModel.get('size'),\n\t\t\t\t\t\tmtime: versionModel.get('timestamp') * 1000,\n\t\t\t\t\t\t// temp dummy, until we can do a PROPFIND\n\t\t\t\t\t\tetag: versionModel.get('id') + versionModel.get('timestamp'),\n\t\t\t\t\t})\n\t\t\t\t},\n\n\t\t\t\terror() {\n\t\t\t\t\tfileInfoModel.trigger('busy', fileInfoModel, false)\n\t\t\t\t\tself.$el.find('.versions').removeClass('hidden')\n\t\t\t\t\tself._toggleLoading(false)\n\t\t\t\t\tOC.Notification.show(t('files_version', 'Failed to revert {file} to revision {timestamp}.',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfile: versionModel.getFullPath(),\n\t\t\t\t\t\t\ttimestamp: OC.Util.formatDate(versionModel.get('timestamp') * 1000),\n\t\t\t\t\t\t}),\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'error',\n\t\t\t\t\t}\n\t\t\t\t\t)\n\t\t\t\t},\n\t\t\t})\n\n\t\t\t// spinner\n\t\t\tthis._toggleLoading(true)\n\t\t\tfileInfoModel.trigger('busy', fileInfoModel, true)\n\t\t},\n\n\t\t_toggleLoading(state) {\n\t\t\tthis._loading = state\n\t\t\tthis.$el.find('.loading').toggleClass('hidden', !state)\n\t\t},\n\n\t\t_onRequest() {\n\t\t\tthis._toggleLoading(true)\n\t\t},\n\n\t\t_onEndRequest() {\n\t\t\tthis._toggleLoading(false)\n\t\t\tthis.$el.find('.empty').toggleClass('hidden', !!this.collection.length)\n\t\t},\n\n\t\t_onAddModel(model) {\n\t\t\tconst $el = $(this.itemTemplate(this._formatItem(model)))\n\t\t\tthis.$versionsContainer.append($el)\n\t\t\t$el.find('.has-tooltip').tooltip()\n\t\t},\n\n\t\ttemplate(data) {\n\t\t\treturn Template(data)\n\t\t},\n\n\t\titemTemplate(data) {\n\t\t\treturn ItemTemplate(data)\n\t\t},\n\n\t\tsetFileInfo(fileInfo) {\n\t\t\tif (fileInfo) {\n\t\t\t\tthis.render()\n\t\t\t\tthis.collection.setFileInfo(fileInfo)\n\t\t\t\tthis.collection.reset([], { silent: true })\n\t\t\t\tthis.nextPage()\n\t\t\t} else {\n\t\t\t\tthis.render()\n\t\t\t\tthis.collection.reset()\n\t\t\t}\n\t\t},\n\n\t\t_formatItem(version) {\n\t\t\tconst timestamp = version.get('timestamp') * 1000\n\t\t\tconst size = version.has('size') ? version.get('size') : 0\n\t\t\tconst preview = OC.MimeType.getIconUrl(version.get('mimetype'))\n\t\t\tconst img = new Image()\n\t\t\timg.onload = function() {\n\t\t\t\t$('li[data-revision=' + version.get('id') + '] .preview').attr('src', version.getPreviewUrl())\n\t\t\t}\n\t\t\timg.src = version.getPreviewUrl()\n\n\t\t\treturn _.extend({\n\t\t\t\tversionId: version.get('id'),\n\t\t\t\tformattedTimestamp: OC.Util.formatDate(timestamp),\n\t\t\t\trelativeTimestamp: OC.Util.relativeModifiedDate(timestamp),\n\t\t\t\tmillisecondsTimestamp: timestamp,\n\t\t\t\thumanReadableSize: OC.Util.humanFileSize(size, true),\n\t\t\t\taltSize: n('files', '%n byte', '%n bytes', size),\n\t\t\t\thasDetails: version.has('size'),\n\t\t\t\tdownloadUrl: version.getDownloadUrl(),\n\t\t\t\tdownloadIconUrl: OC.imagePath('core', 'actions/download'),\n\t\t\t\tdownloadName: version.get('name'),\n\t\t\t\trevertIconUrl: OC.imagePath('core', 'actions/history'),\n\t\t\t\tpreviewUrl: preview,\n\t\t\t\trevertLabel: t('files_versions', 'Restore'),\n\t\t\t\tcanRevert: (this.collection.getFileInfo().get('permissions') & OC.PERMISSION_UPDATE) !== 0,\n\t\t\t}, version.attributes)\n\t\t},\n\n\t\t/**\n\t\t * Renders this details view\n\t\t */\n\t\trender() {\n\t\t\tthis.$el.html(this.template({\n\t\t\t\temptyResultLabel: t('files_versions', 'No other versions available'),\n\t\t\t}))\n\t\t\tthis.$el.find('.has-tooltip').tooltip()\n\t\t\tthis.$versionsContainer = this.$el.find('ul.versions')\n\t\t\tthis.delegateEvents()\n\t\t},\n\n\t\t/**\n\t\t * Returns true for files, false for folders.\n\t\t *\n\t\t * @param {FileInfo} fileInfo fileInfo\n\t\t * @return {boolean} true for files, false for folders\n\t\t */\n\t\tcanDisplay(fileInfo) {\n\t\t\tif (!fileInfo) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn !fileInfo.isDirectory()\n\t\t},\n\t})\n\n\tOCA.Versions = OCA.Versions || {}\n\n\tOCA.Versions.VersionsTabView = VersionsTabView\n})()\n","\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!./versions.css\";\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!./versions.css\";\n export default content && content.locals ? content.locals : undefined;\n","/**\n * @copyright Copyright (c) 2016 Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport './versionmodel'\nimport './versioncollection'\nimport './versionstabview'\nimport './filesplugin'\nimport './css/versions.css'\n\nwindow.OCA.Versions = OCA.Versions\n","/**\n * Copyright (c) 2015\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n(function() {\n\tOCA.Versions = OCA.Versions || {}\n\n\t/**\n\t * @namespace\n\t */\n\tOCA.Versions.Util = {\n\t\t/**\n\t\t * Initialize the versions plugin.\n\t\t *\n\t\t * @param {OCA.Files.FileList} fileList file list to be extended\n\t\t */\n\t\tattach(fileList) {\n\t\t\tif (fileList.id === 'trashbin' || fileList.id === 'files.public') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tfileList.registerTabView(new OCA.Versions.VersionsTabView('versionsTabView', { order: -10 }))\n\t\t},\n\t}\n})()\n\nOC.Plugins.register('OCA.Files.FileList', OCA.Versions.Util)\n","/**\n * Copyright (c) 2015\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n(function() {\n\t/**\n\t * @memberof OCA.Versions\n\t */\n\tconst VersionCollection = OC.Backbone.Collection.extend({\n\t\tmodel: OCA.Versions.VersionModel,\n\t\tsync: OC.Backbone.davSync,\n\n\t\t/**\n\t\t * @member OCA.Files.FileInfoModel\n\t\t */\n\t\t_fileInfo: null,\n\n\t\t_currentUser: null,\n\n\t\t_client: null,\n\n\t\tsetFileInfo(fileInfo) {\n\t\t\tthis._fileInfo = fileInfo\n\t\t},\n\n\t\tgetFileInfo() {\n\t\t\treturn this._fileInfo\n\t\t},\n\n\t\tsetCurrentUser(user) {\n\t\t\tthis._currentUser = user\n\t\t},\n\n\t\tgetCurrentUser() {\n\t\t\treturn this._currentUser || OC.getCurrentUser().uid\n\t\t},\n\n\t\tsetClient(client) {\n\t\t\tthis._client = client\n\t\t},\n\n\t\tgetClient() {\n\t\t\treturn this._client || new OC.Files.Client({\n\t\t\t\thost: OC.getHost(),\n\t\t\t\troot: OC.linkToRemoteBase('dav') + '/versions/' + this.getCurrentUser(),\n\t\t\t\tuseHTTPS: OC.getProtocol() === 'https',\n\t\t\t})\n\t\t},\n\n\t\turl() {\n\t\t\treturn OC.linkToRemoteBase('dav') + '/versions/' + this.getCurrentUser() + '/versions/' + this._fileInfo.get('id')\n\t\t},\n\n\t\tparse(result) {\n\t\t\tconst fullPath = this._fileInfo.getFullPath()\n\t\t\tconst fileId = this._fileInfo.get('id')\n\t\t\tconst name = this._fileInfo.get('name')\n\t\t\tconst user = this.getCurrentUser()\n\t\t\tconst client = this.getClient()\n\t\t\treturn _.map(result, function(version) {\n\t\t\t\tversion.fullPath = fullPath\n\t\t\t\tversion.fileId = fileId\n\t\t\t\tversion.name = name\n\t\t\t\tversion.timestamp = parseInt(moment(new Date(version.timestamp)).format('X'), 10)\n\t\t\t\tversion.id = OC.basename(version.href)\n\t\t\t\tversion.size = parseInt(version.size, 10)\n\t\t\t\tversion.user = user\n\t\t\t\tversion.client = client\n\t\t\t\treturn version\n\t\t\t})\n\t\t},\n\t})\n\n\tOCA.Versions = OCA.Versions || {}\n\n\tOCA.Versions.VersionCollection = VersionCollection\n})()\n","/**\n * Copyright (c) 2015\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n(function() {\n\t/**\n\t * @memberof OCA.Versions\n\t */\n\tconst VersionModel = OC.Backbone.Model.extend({\n\t\tsync: OC.Backbone.davSync,\n\n\t\tdavProperties: {\n\t\t\tsize: '{DAV:}getcontentlength',\n\t\t\tmimetype: '{DAV:}getcontenttype',\n\t\t\ttimestamp: '{DAV:}getlastmodified',\n\t\t},\n\n\t\t/**\n\t\t * Restores the original file to this revision\n\t\t *\n\t\t * @param {object} [options] options\n\t\t * @return {Promise}\n\t\t */\n\t\trevert(options) {\n\t\t\toptions = options ? _.clone(options) : {}\n\t\t\tconst model = this\n\n\t\t\tconst client = this.get('client')\n\n\t\t\treturn client.move('/versions/' + this.get('fileId') + '/' + this.get('id'), '/restore/target', true)\n\t\t\t\t.done(function() {\n\t\t\t\t\tif (options.success) {\n\t\t\t\t\t\toptions.success.call(options.context, model, {}, options)\n\t\t\t\t\t}\n\t\t\t\t\tmodel.trigger('revert', model, options)\n\t\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tif (options.error) {\n\t\t\t\t\t\toptions.error.call(options.context, model, {}, options)\n\t\t\t\t\t}\n\t\t\t\t\tmodel.trigger('error', model, {}, options)\n\t\t\t\t})\n\t\t},\n\n\t\tgetFullPath() {\n\t\t\treturn this.get('fullPath')\n\t\t},\n\n\t\tgetPreviewUrl() {\n\t\t\tconst url = OC.generateUrl('/apps/files_versions/preview')\n\t\t\tconst params = {\n\t\t\t\tfile: this.get('fullPath'),\n\t\t\t\tversion: this.get('id'),\n\t\t\t}\n\t\t\treturn url + '?' + OC.buildQueryString(params)\n\t\t},\n\n\t\tgetDownloadUrl() {\n\t\t\treturn OC.linkToRemoteBase('dav') + '/versions/' + this.get('user') + '/versions/' + this.get('fileId') + '/' + this.get('id')\n\t\t},\n\t})\n\n\tOCA.Versions = OCA.Versions || {}\n\n\tOCA.Versions.VersionModel = VersionModel\n})()\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, \".versionsTabView .clear-float {\\n\\tclear: both;\\n}\\n\\n.versionsTabView li {\\n\\twidth: 100%;\\n\\tcursor: default;\\n\\theight: 56px;\\n\\tfloat: left;\\n\\tborder-bottom: 1px solid rgba(100,100,100,.1);\\n}\\n.versionsTabView li:last-child {\\n\\tborder-bottom: none;\\n}\\n\\n.versionsTabView a,\\n.versionsTabView div > span {\\n\\tvertical-align: middle;\\n\\topacity: .5;\\n}\\n\\n.versionsTabView li a{\\n\\tpadding: 15px 10px 11px;\\n}\\n\\n.versionsTabView a:hover,\\n.versionsTabView a:focus {\\n\\topacity: 1;\\n}\\n\\n.versionsTabView .preview-container {\\n\\tdisplay: inline-block;\\n vertical-align: top;\\n}\\n\\n.versionsTabView img {\\n\\tcursor: pointer;\\n\\tpadding-right: 4px;\\n}\\n\\n.versionsTabView img.preview {\\n\\tcursor: default;\\n}\\n\\n.versionsTabView .version-container {\\n\\tdisplay: inline-block;\\n}\\n\\n.versionsTabView .versiondate {\\n\\tmin-width: 100px;\\n\\tvertical-align: super;\\n}\\n\\n.versionsTabView .version-details {\\n\\ttext-align: left;\\n}\\n\\n.versionsTabView .version-details > span {\\n\\tpadding: 0 10px;\\n}\\n\\n.versionsTabView .revertVersion {\\n\\tcursor: pointer;\\n\\tfloat: right;\\n\\tmargin-right: -10px;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_versions/src/css/versions.css\"],\"names\":[],\"mappings\":\"AAAA;CACC,WAAW;AACZ;;AAEA;CACC,WAAW;CACX,eAAe;CACf,YAAY;CACZ,WAAW;CACX,6CAA6C;AAC9C;AACA;CACC,mBAAmB;AACpB;;AAEA;;CAEC,sBAAsB;CACtB,WAAW;AACZ;;AAEA;CACC,uBAAuB;AACxB;;AAEA;;CAEC,UAAU;AACX;;AAEA;CACC,qBAAqB;EACpB,mBAAmB;AACrB;;AAEA;CACC,eAAe;CACf,kBAAkB;AACnB;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,qBAAqB;AACtB;;AAEA;CACC,gBAAgB;CAChB,qBAAqB;AACtB;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,eAAe;CACf,YAAY;CACZ,mBAAmB;AACpB\",\"sourcesContent\":[\".versionsTabView .clear-float {\\n\\tclear: both;\\n}\\n\\n.versionsTabView li {\\n\\twidth: 100%;\\n\\tcursor: default;\\n\\theight: 56px;\\n\\tfloat: left;\\n\\tborder-bottom: 1px solid rgba(100,100,100,.1);\\n}\\n.versionsTabView li:last-child {\\n\\tborder-bottom: none;\\n}\\n\\n.versionsTabView a,\\n.versionsTabView div > span {\\n\\tvertical-align: middle;\\n\\topacity: .5;\\n}\\n\\n.versionsTabView li a{\\n\\tpadding: 15px 10px 11px;\\n}\\n\\n.versionsTabView a:hover,\\n.versionsTabView a:focus {\\n\\topacity: 1;\\n}\\n\\n.versionsTabView .preview-container {\\n\\tdisplay: inline-block;\\n vertical-align: top;\\n}\\n\\n.versionsTabView img {\\n\\tcursor: pointer;\\n\\tpadding-right: 4px;\\n}\\n\\n.versionsTabView img.preview {\\n\\tcursor: default;\\n}\\n\\n.versionsTabView .version-container {\\n\\tdisplay: inline-block;\\n}\\n\\n.versionsTabView .versiondate {\\n\\tmin-width: 100px;\\n\\tvertical-align: super;\\n}\\n\\n.versionsTabView .version-details {\\n\\ttext-align: left;\\n}\\n\\n.versionsTabView .version-details > span {\\n\\tpadding: 0 10px;\\n}\\n\\n.versionsTabView .revertVersion {\\n\\tcursor: pointer;\\n\\tfloat: right;\\n\\tmargin-right: -10px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t\t<div class=\\\"version-details\\\">\\n\t\t\t\t\t<span class=\\\"size has-tooltip\\\" title=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"altSize\") || (depth0 != null ? lookupProperty(depth0,\"altSize\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"altSize\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":14,\"column\":43},\"end\":{\"line\":14,\"column\":54}}}) : helper)))\n + \"\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"humanReadableSize\") || (depth0 != null ? lookupProperty(depth0,\"humanReadableSize\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"humanReadableSize\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":14,\"column\":56},\"end\":{\"line\":14,\"column\":77}}}) : helper)))\n + \"</span>\\n\t\t\t\t</div>\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<a href=\\\"#\\\" class=\\\"revertVersion\\\" title=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"revertLabel\") || (depth0 != null ? lookupProperty(depth0,\"revertLabel\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"revertLabel\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":19,\"column\":44},\"end\":{\"line\":19,\"column\":59}}}) : helper)))\n + \"\\\"><img src=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"revertIconUrl\") || (depth0 != null ? lookupProperty(depth0,\"revertIconUrl\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"revertIconUrl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":19,\"column\":71},\"end\":{\"line\":19,\"column\":88}}}) : helper)))\n + \"\\\" /></a>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, options, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.hooks.blockHelperMissing, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n }, buffer = \n \"<li data-revision=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"id\") || (depth0 != null ? lookupProperty(depth0,\"id\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"id\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":19},\"end\":{\"line\":1,\"column\":25}}}) : helper)))\n + \"\\\">\\n\t<div>\\n\t\t<div class=\\\"preview-container\\\">\\n\t\t\t<img class=\\\"preview\\\" src=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"previewUrl\") || (depth0 != null ? lookupProperty(depth0,\"previewUrl\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"previewUrl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":29},\"end\":{\"line\":4,\"column\":43}}}) : helper)))\n + \"\\\" width=\\\"44\\\" height=\\\"44\\\"/>\\n\t\t</div>\\n\t\t<div class=\\\"version-container\\\">\\n\t\t\t<div>\\n\t\t\t\t<a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"downloadUrl\") || (depth0 != null ? lookupProperty(depth0,\"downloadUrl\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"downloadUrl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":13},\"end\":{\"line\":8,\"column\":28}}}) : helper)))\n + \"\\\" class=\\\"downloadVersion\\\" download=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"downloadName\") || (depth0 != null ? lookupProperty(depth0,\"downloadName\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"downloadName\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":64},\"end\":{\"line\":8,\"column\":80}}}) : helper)))\n + \"\\\"><img src=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"downloadIconUrl\") || (depth0 != null ? lookupProperty(depth0,\"downloadIconUrl\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"downloadIconUrl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":92},\"end\":{\"line\":8,\"column\":111}}}) : helper)))\n + \"\\\" />\\n\t\t\t\t\t<span class=\\\"versiondate has-tooltip live-relative-timestamp\\\" data-timestamp=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"millisecondsTimestamp\") || (depth0 != null ? lookupProperty(depth0,\"millisecondsTimestamp\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"millisecondsTimestamp\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":83},\"end\":{\"line\":9,\"column\":108}}}) : helper)))\n + \"\\\" title=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"formattedTimestamp\") || (depth0 != null ? lookupProperty(depth0,\"formattedTimestamp\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"formattedTimestamp\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":117},\"end\":{\"line\":9,\"column\":139}}}) : helper)))\n + \"\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"relativeTimestamp\") || (depth0 != null ? lookupProperty(depth0,\"relativeTimestamp\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"relativeTimestamp\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":141},\"end\":{\"line\":9,\"column\":162}}}) : helper)))\n + \"</span>\\n\t\t\t\t</a>\\n\t\t\t</div>\\n\";\n stack1 = ((helper = (helper = lookupProperty(helpers,\"hasDetails\") || (depth0 != null ? lookupProperty(depth0,\"hasDetails\") : depth0)) != null ? helper : alias2),(options={\"name\":\"hasDetails\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":3},\"end\":{\"line\":16,\"column\":18}}}),(typeof helper === alias3 ? helper.call(alias1,options) : helper));\n if (!lookupProperty(helpers,\"hasDetails\")) { stack1 = alias5.call(depth0,stack1,options)}\n if (stack1 != null) { buffer += stack1; }\n buffer += \"\t\t</div>\\n\";\n stack1 = ((helper = (helper = lookupProperty(helpers,\"canRevert\") || (depth0 != null ? lookupProperty(depth0,\"canRevert\") : depth0)) != null ? helper : alias2),(options={\"name\":\"canRevert\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":18,\"column\":2},\"end\":{\"line\":20,\"column\":16}}}),(typeof helper === alias3 ? helper.call(alias1,options) : helper));\n if (!lookupProperty(helpers,\"canRevert\")) { stack1 = alias5.call(depth0,stack1,options)}\n if (stack1 != null) { buffer += stack1; }\n return buffer + \"\t</div>\\n</li>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<ul class=\\\"versions\\\"></ul>\\n<div class=\\\"clear-float\\\"></div>\\n<div class=\\\"empty hidden\\\">\\n\t<div class=\\\"emptycontent\\\">\\n\t\t<div class=\\\"icon-history\\\"></div>\\n\t\t<p>\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"emptyResultLabel\") || (depth0 != null ? lookupProperty(depth0,\"emptyResultLabel\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"emptyResultLabel\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":5},\"end\":{\"line\":6,\"column\":25}}}) : helper)))\n + \"</p>\\n\t</div>\\n</div>\\n<input type=\\\"button\\\" class=\\\"showMoreVersions hidden\\\" value=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"moreVersionsLabel\") || (depth0 != null ? lookupProperty(depth0,\"moreVersionsLabel\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"moreVersionsLabel\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":60},\"end\":{\"line\":9,\"column\":81}}}) : helper)))\n + \"\\\" name=\\\"show-more-versions\\\" id=\\\"show-more-versions\\\" />\\n<div class=\\\"loading hidden\\\" style=\\\"height: 50px\\\"></div>\\n\";\n},\"useData\":true});","// 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 = 1358;","__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\t1358: 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__(22420); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","OCA","Files","DetailTabView","VersionsTabView","extend","id","className","_template","$versionsContainer","events","initialize","prototype","apply","this","arguments","collection","Versions","VersionCollection","on","_onRequest","_onEndRequest","_onUpdate","_onError","_onAddModel","getLabel","t","getIcon","nextPage","_loading","getFileInfo","isDirectory","fetch","_onClickRevertVersion","ev","self","$target","$","target","fileInfoModel","is","closest","preventDefault","revision","attr","versionModel","get","revert","success","empty","setFileInfo","reset","silent","$el","find","removeClass","trigger","set","size","mtime","etag","error","_toggleLoading","OC","Notification","show","file","getFullPath","timestamp","Util","formatDate","type","state","toggleClass","length","model","itemTemplate","_formatItem","append","tooltip","template","data","Template","ItemTemplate","fileInfo","render","version","has","preview","MimeType","getIconUrl","img","Image","onload","getPreviewUrl","src","_","versionId","formattedTimestamp","relativeTimestamp","relativeModifiedDate","millisecondsTimestamp","humanReadableSize","humanFileSize","altSize","n","hasDetails","downloadUrl","getDownloadUrl","downloadIconUrl","imagePath","downloadName","revertIconUrl","previewUrl","revertLabel","canRevert","PERMISSION_UPDATE","attributes","html","emptyResultLabel","delegateEvents","canDisplay","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","window","attach","fileList","registerTabView","order","Plugins","register","Backbone","Collection","VersionModel","sync","davSync","_fileInfo","_currentUser","_client","setCurrentUser","user","getCurrentUser","uid","setClient","client","getClient","Client","host","getHost","root","linkToRemoteBase","useHTTPS","getProtocol","url","parse","result","fullPath","fileId","name","map","parseInt","moment","Date","format","basename","href","Model","davProperties","mimetype","clone","move","done","call","context","fail","generateUrl","params","buildQueryString","___CSS_LOADER_EXPORT___","push","module","Handlebars","exports","container","depth0","helpers","partials","helper","alias1","nullContext","alias2","hooks","helperMissing","alias3","alias4","escapeExpression","lookupProperty","parent","propertyName","Object","hasOwnProperty","stack1","alias5","blockHelperMissing","buffer","program","noop","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","loaded","__webpack_modules__","m","amdD","Error","amdO","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","keys","every","key","splice","r","getter","__esModule","d","a","definition","o","defineProperty","enumerable","g","globalThis","Function","e","obj","prop","Symbol","toStringTag","value","nmd","paths","children","b","document","baseURI","location","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"files_versions-files_versions.js?v=033d8e0f6023458ab1ba","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/files_versions/src/versionstabview.js","webpack://nextcloud/./apps/files_versions/src/css/versions.css?1aef","webpack:///nextcloud/apps/files_versions/src/files_versions.js","webpack:///nextcloud/apps/files_versions/src/filesplugin.js","webpack:///nextcloud/apps/files_versions/src/versioncollection.js","webpack:///nextcloud/apps/files_versions/src/versionmodel.js","webpack:///nextcloud/apps/files_versions/src/css/versions.css","webpack:///nextcloud/apps/files_versions/src/templates/item.handlebars","webpack:///nextcloud/apps/files_versions/src/templates/template.handlebars","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/runtime/nonce","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 (c) 2015\n *\n * @author Jan-Christoph Borchardt <hey@jancborchardt.net>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Michael Jobst <mjobst+github@tecratech.de>\n * @author noveens <noveen.sachdeva@research.iiit.ac.in>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\nimport ItemTemplate from './templates/item.handlebars'\nimport Template from './templates/template.handlebars';\n\n(function() {\n\tif (!OCA.Files.DetailTabView) {\n\t\t// Only register the versions tab within the files app\n\t\treturn\n\t}\n\t/**\n\t * @memberof OCA.Versions\n\t */\n\tconst VersionsTabView = OCA.Files.DetailTabView.extend(/** @lends OCA.Versions.VersionsTabView.prototype */{\n\t\tid: 'versionsTabView',\n\t\tclassName: 'tab versionsTabView',\n\n\t\t_template: null,\n\n\t\t$versionsContainer: null,\n\n\t\tevents: {\n\t\t\t'click .revertVersion': '_onClickRevertVersion',\n\t\t},\n\n\t\tinitialize() {\n\t\t\tOCA.Files.DetailTabView.prototype.initialize.apply(this, arguments)\n\t\t\tthis.collection = new OCA.Versions.VersionCollection()\n\t\t\tthis.collection.on('request', this._onRequest, this)\n\t\t\tthis.collection.on('sync', this._onEndRequest, this)\n\t\t\tthis.collection.on('update', this._onUpdate, this)\n\t\t\tthis.collection.on('error', this._onError, this)\n\t\t\tthis.collection.on('add', this._onAddModel, this)\n\t\t},\n\n\t\tgetLabel() {\n\t\t\treturn t('files_versions', 'Versions')\n\t\t},\n\n\t\tgetIcon() {\n\t\t\treturn 'icon-history'\n\t\t},\n\n\t\tnextPage() {\n\t\t\tif (this._loading) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this.collection.getFileInfo() && this.collection.getFileInfo().isDirectory()) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.collection.fetch()\n\t\t},\n\n\t\t_onClickRevertVersion(ev) {\n\t\t\tconst self = this\n\t\t\tlet $target = $(ev.target)\n\t\t\tconst fileInfoModel = this.collection.getFileInfo()\n\t\t\tif (!$target.is('li')) {\n\t\t\t\t$target = $target.closest('li')\n\t\t\t}\n\n\t\t\tev.preventDefault()\n\t\t\tconst revision = $target.attr('data-revision')\n\n\t\t\tconst versionModel = this.collection.get(revision)\n\t\t\tversionModel.revert({\n\t\t\t\tsuccess() {\n\t\t\t\t\t// reset and re-fetch the updated collection\n\t\t\t\t\tself.$versionsContainer.empty()\n\t\t\t\t\tself.collection.setFileInfo(fileInfoModel)\n\t\t\t\t\tself.collection.reset([], { silent: true })\n\t\t\t\t\tself.collection.fetch()\n\n\t\t\t\t\tself.$el.find('.versions').removeClass('hidden')\n\n\t\t\t\t\t// update original model\n\t\t\t\t\tfileInfoModel.trigger('busy', fileInfoModel, false)\n\t\t\t\t\tfileInfoModel.set({\n\t\t\t\t\t\tsize: versionModel.get('size'),\n\t\t\t\t\t\tmtime: versionModel.get('timestamp') * 1000,\n\t\t\t\t\t\t// temp dummy, until we can do a PROPFIND\n\t\t\t\t\t\tetag: versionModel.get('id') + versionModel.get('timestamp'),\n\t\t\t\t\t})\n\t\t\t\t},\n\n\t\t\t\terror() {\n\t\t\t\t\tfileInfoModel.trigger('busy', fileInfoModel, false)\n\t\t\t\t\tself.$el.find('.versions').removeClass('hidden')\n\t\t\t\t\tself._toggleLoading(false)\n\t\t\t\t\tOC.Notification.show(t('files_version', 'Failed to revert {file} to revision {timestamp}.',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfile: versionModel.getFullPath(),\n\t\t\t\t\t\t\ttimestamp: OC.Util.formatDate(versionModel.get('timestamp') * 1000),\n\t\t\t\t\t\t}),\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'error',\n\t\t\t\t\t}\n\t\t\t\t\t)\n\t\t\t\t},\n\t\t\t})\n\n\t\t\t// spinner\n\t\t\tthis._toggleLoading(true)\n\t\t\tfileInfoModel.trigger('busy', fileInfoModel, true)\n\t\t},\n\n\t\t_toggleLoading(state) {\n\t\t\tthis._loading = state\n\t\t\tthis.$el.find('.loading').toggleClass('hidden', !state)\n\t\t},\n\n\t\t_onRequest() {\n\t\t\tthis._toggleLoading(true)\n\t\t},\n\n\t\t_onEndRequest() {\n\t\t\tthis._toggleLoading(false)\n\t\t\tthis.$el.find('.empty').toggleClass('hidden', !!this.collection.length)\n\t\t},\n\n\t\t_onAddModel(model) {\n\t\t\tconst $el = $(this.itemTemplate(this._formatItem(model)))\n\t\t\tthis.$versionsContainer.append($el)\n\t\t\t$el.find('.has-tooltip').tooltip()\n\t\t},\n\n\t\ttemplate(data) {\n\t\t\treturn Template(data)\n\t\t},\n\n\t\titemTemplate(data) {\n\t\t\treturn ItemTemplate(data)\n\t\t},\n\n\t\tsetFileInfo(fileInfo) {\n\t\t\tif (fileInfo) {\n\t\t\t\tthis.render()\n\t\t\t\tthis.collection.setFileInfo(fileInfo)\n\t\t\t\tthis.collection.reset([], { silent: true })\n\t\t\t\tthis.nextPage()\n\t\t\t} else {\n\t\t\t\tthis.render()\n\t\t\t\tthis.collection.reset()\n\t\t\t}\n\t\t},\n\n\t\t_formatItem(version) {\n\t\t\tconst timestamp = version.get('timestamp') * 1000\n\t\t\tconst size = version.has('size') ? version.get('size') : 0\n\t\t\tconst preview = OC.MimeType.getIconUrl(version.get('mimetype'))\n\t\t\tconst img = new Image()\n\t\t\timg.onload = function() {\n\t\t\t\t$('li[data-revision=' + version.get('id') + '] .preview').attr('src', version.getPreviewUrl())\n\t\t\t}\n\t\t\timg.src = version.getPreviewUrl()\n\n\t\t\treturn _.extend({\n\t\t\t\tversionId: version.get('id'),\n\t\t\t\tformattedTimestamp: OC.Util.formatDate(timestamp),\n\t\t\t\trelativeTimestamp: OC.Util.relativeModifiedDate(timestamp),\n\t\t\t\tmillisecondsTimestamp: timestamp,\n\t\t\t\thumanReadableSize: OC.Util.humanFileSize(size, true),\n\t\t\t\taltSize: n('files', '%n byte', '%n bytes', size),\n\t\t\t\thasDetails: version.has('size'),\n\t\t\t\tdownloadUrl: version.getDownloadUrl(),\n\t\t\t\tdownloadIconUrl: OC.imagePath('core', 'actions/download'),\n\t\t\t\tdownloadName: version.get('name'),\n\t\t\t\trevertIconUrl: OC.imagePath('core', 'actions/history'),\n\t\t\t\tpreviewUrl: preview,\n\t\t\t\trevertLabel: t('files_versions', 'Restore'),\n\t\t\t\tcanRevert: (this.collection.getFileInfo().get('permissions') & OC.PERMISSION_UPDATE) !== 0,\n\t\t\t}, version.attributes)\n\t\t},\n\n\t\t/**\n\t\t * Renders this details view\n\t\t */\n\t\trender() {\n\t\t\tthis.$el.html(this.template({\n\t\t\t\temptyResultLabel: t('files_versions', 'No other versions available'),\n\t\t\t}))\n\t\t\tthis.$el.find('.has-tooltip').tooltip()\n\t\t\tthis.$versionsContainer = this.$el.find('ul.versions')\n\t\t\tthis.delegateEvents()\n\t\t},\n\n\t\t/**\n\t\t * Returns true for files, false for folders.\n\t\t *\n\t\t * @param {FileInfo} fileInfo fileInfo\n\t\t * @return {boolean} true for files, false for folders\n\t\t */\n\t\tcanDisplay(fileInfo) {\n\t\t\tif (!fileInfo) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn !fileInfo.isDirectory()\n\t\t},\n\t})\n\n\tOCA.Versions = OCA.Versions || {}\n\n\tOCA.Versions.VersionsTabView = VersionsTabView\n})()\n","\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!./versions.css\";\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!./versions.css\";\n export default content && content.locals ? content.locals : undefined;\n","/**\n * @copyright Copyright (c) 2016 Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport './versionmodel'\nimport './versioncollection'\nimport './versionstabview'\nimport './filesplugin'\nimport './css/versions.css'\n\nwindow.OCA.Versions = OCA.Versions\n","/**\n * Copyright (c) 2015\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n(function() {\n\tOCA.Versions = OCA.Versions || {}\n\n\t/**\n\t * @namespace\n\t */\n\tOCA.Versions.Util = {\n\t\t/**\n\t\t * Initialize the versions plugin.\n\t\t *\n\t\t * @param {OCA.Files.FileList} fileList file list to be extended\n\t\t */\n\t\tattach(fileList) {\n\t\t\tif (fileList.id === 'trashbin' || fileList.id === 'files.public') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tfileList.registerTabView(new OCA.Versions.VersionsTabView('versionsTabView', { order: -10 }))\n\t\t},\n\t}\n})()\n\nOC.Plugins.register('OCA.Files.FileList', OCA.Versions.Util)\n","/**\n * Copyright (c) 2015\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n(function() {\n\t/**\n\t * @memberof OCA.Versions\n\t */\n\tconst VersionCollection = OC.Backbone.Collection.extend({\n\t\tmodel: OCA.Versions.VersionModel,\n\t\tsync: OC.Backbone.davSync,\n\n\t\t/**\n\t\t * @member OCA.Files.FileInfoModel\n\t\t */\n\t\t_fileInfo: null,\n\n\t\t_currentUser: null,\n\n\t\t_client: null,\n\n\t\tsetFileInfo(fileInfo) {\n\t\t\tthis._fileInfo = fileInfo\n\t\t},\n\n\t\tgetFileInfo() {\n\t\t\treturn this._fileInfo\n\t\t},\n\n\t\tsetCurrentUser(user) {\n\t\t\tthis._currentUser = user\n\t\t},\n\n\t\tgetCurrentUser() {\n\t\t\treturn this._currentUser || OC.getCurrentUser().uid\n\t\t},\n\n\t\tsetClient(client) {\n\t\t\tthis._client = client\n\t\t},\n\n\t\tgetClient() {\n\t\t\treturn this._client || new OC.Files.Client({\n\t\t\t\thost: OC.getHost(),\n\t\t\t\troot: OC.linkToRemoteBase('dav') + '/versions/' + this.getCurrentUser(),\n\t\t\t\tuseHTTPS: OC.getProtocol() === 'https',\n\t\t\t})\n\t\t},\n\n\t\turl() {\n\t\t\treturn OC.linkToRemoteBase('dav') + '/versions/' + this.getCurrentUser() + '/versions/' + this._fileInfo.get('id')\n\t\t},\n\n\t\tparse(result) {\n\t\t\tconst fullPath = this._fileInfo.getFullPath()\n\t\t\tconst fileId = this._fileInfo.get('id')\n\t\t\tconst name = this._fileInfo.get('name')\n\t\t\tconst user = this.getCurrentUser()\n\t\t\tconst client = this.getClient()\n\t\t\treturn _.map(result, function(version) {\n\t\t\t\tversion.fullPath = fullPath\n\t\t\t\tversion.fileId = fileId\n\t\t\t\tversion.name = name\n\t\t\t\tversion.timestamp = parseInt(moment(new Date(version.timestamp)).format('X'), 10)\n\t\t\t\tversion.id = OC.basename(version.href)\n\t\t\t\tversion.size = parseInt(version.size, 10)\n\t\t\t\tversion.user = user\n\t\t\t\tversion.client = client\n\t\t\t\treturn version\n\t\t\t})\n\t\t},\n\t})\n\n\tOCA.Versions = OCA.Versions || {}\n\n\tOCA.Versions.VersionCollection = VersionCollection\n})()\n","/**\n * Copyright (c) 2015\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n(function() {\n\t/**\n\t * @memberof OCA.Versions\n\t */\n\tconst VersionModel = OC.Backbone.Model.extend({\n\t\tsync: OC.Backbone.davSync,\n\n\t\tdavProperties: {\n\t\t\tsize: '{DAV:}getcontentlength',\n\t\t\tmimetype: '{DAV:}getcontenttype',\n\t\t\ttimestamp: '{DAV:}getlastmodified',\n\t\t},\n\n\t\t/**\n\t\t * Restores the original file to this revision\n\t\t *\n\t\t * @param {object} [options] options\n\t\t * @return {Promise}\n\t\t */\n\t\trevert(options) {\n\t\t\toptions = options ? _.clone(options) : {}\n\t\t\tconst model = this\n\n\t\t\tconst client = this.get('client')\n\n\t\t\treturn client.move('/versions/' + this.get('fileId') + '/' + this.get('id'), '/restore/target', true)\n\t\t\t\t.done(function() {\n\t\t\t\t\tif (options.success) {\n\t\t\t\t\t\toptions.success.call(options.context, model, {}, options)\n\t\t\t\t\t}\n\t\t\t\t\tmodel.trigger('revert', model, options)\n\t\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tif (options.error) {\n\t\t\t\t\t\toptions.error.call(options.context, model, {}, options)\n\t\t\t\t\t}\n\t\t\t\t\tmodel.trigger('error', model, {}, options)\n\t\t\t\t})\n\t\t},\n\n\t\tgetFullPath() {\n\t\t\treturn this.get('fullPath')\n\t\t},\n\n\t\tgetPreviewUrl() {\n\t\t\tconst url = OC.generateUrl('/apps/files_versions/preview')\n\t\t\tconst params = {\n\t\t\t\tfile: this.get('fullPath'),\n\t\t\t\tversion: this.get('id'),\n\t\t\t}\n\t\t\treturn url + '?' + OC.buildQueryString(params)\n\t\t},\n\n\t\tgetDownloadUrl() {\n\t\t\treturn OC.linkToRemoteBase('dav') + '/versions/' + this.get('user') + '/versions/' + this.get('fileId') + '/' + this.get('id')\n\t\t},\n\t})\n\n\tOCA.Versions = OCA.Versions || {}\n\n\tOCA.Versions.VersionModel = VersionModel\n})()\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, \".versionsTabView .clear-float {\\n\\tclear: both;\\n}\\n\\n.versionsTabView li {\\n\\twidth: 100%;\\n\\tcursor: default;\\n\\theight: 56px;\\n\\tfloat: left;\\n\\tborder-bottom: 1px solid rgba(100,100,100,.1);\\n}\\n.versionsTabView li:last-child {\\n\\tborder-bottom: none;\\n}\\n\\n.versionsTabView a,\\n.versionsTabView div > span {\\n\\tvertical-align: middle;\\n\\topacity: .5;\\n}\\n\\n.versionsTabView li a{\\n\\tpadding: 15px 10px 11px;\\n}\\n\\n.versionsTabView a:hover,\\n.versionsTabView a:focus {\\n\\topacity: 1;\\n}\\n\\n.versionsTabView .preview-container {\\n\\tdisplay: inline-block;\\n vertical-align: top;\\n}\\n\\n.versionsTabView img {\\n\\tcursor: pointer;\\n\\tpadding-right: 4px;\\n}\\n\\n.versionsTabView img.preview {\\n\\tcursor: default;\\n}\\n\\n.versionsTabView .version-container {\\n\\tdisplay: inline-block;\\n}\\n\\n.versionsTabView .versiondate {\\n\\tmin-width: 100px;\\n\\tvertical-align: super;\\n}\\n\\n.versionsTabView .version-details {\\n\\ttext-align: left;\\n}\\n\\n.versionsTabView .version-details > span {\\n\\tpadding: 0 10px;\\n}\\n\\n.versionsTabView .revertVersion {\\n\\tcursor: pointer;\\n\\tfloat: right;\\n\\tmargin-right: -10px;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_versions/src/css/versions.css\"],\"names\":[],\"mappings\":\"AAAA;CACC,WAAW;AACZ;;AAEA;CACC,WAAW;CACX,eAAe;CACf,YAAY;CACZ,WAAW;CACX,6CAA6C;AAC9C;AACA;CACC,mBAAmB;AACpB;;AAEA;;CAEC,sBAAsB;CACtB,WAAW;AACZ;;AAEA;CACC,uBAAuB;AACxB;;AAEA;;CAEC,UAAU;AACX;;AAEA;CACC,qBAAqB;EACpB,mBAAmB;AACrB;;AAEA;CACC,eAAe;CACf,kBAAkB;AACnB;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,qBAAqB;AACtB;;AAEA;CACC,gBAAgB;CAChB,qBAAqB;AACtB;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,eAAe;CACf,YAAY;CACZ,mBAAmB;AACpB\",\"sourcesContent\":[\".versionsTabView .clear-float {\\n\\tclear: both;\\n}\\n\\n.versionsTabView li {\\n\\twidth: 100%;\\n\\tcursor: default;\\n\\theight: 56px;\\n\\tfloat: left;\\n\\tborder-bottom: 1px solid rgba(100,100,100,.1);\\n}\\n.versionsTabView li:last-child {\\n\\tborder-bottom: none;\\n}\\n\\n.versionsTabView a,\\n.versionsTabView div > span {\\n\\tvertical-align: middle;\\n\\topacity: .5;\\n}\\n\\n.versionsTabView li a{\\n\\tpadding: 15px 10px 11px;\\n}\\n\\n.versionsTabView a:hover,\\n.versionsTabView a:focus {\\n\\topacity: 1;\\n}\\n\\n.versionsTabView .preview-container {\\n\\tdisplay: inline-block;\\n vertical-align: top;\\n}\\n\\n.versionsTabView img {\\n\\tcursor: pointer;\\n\\tpadding-right: 4px;\\n}\\n\\n.versionsTabView img.preview {\\n\\tcursor: default;\\n}\\n\\n.versionsTabView .version-container {\\n\\tdisplay: inline-block;\\n}\\n\\n.versionsTabView .versiondate {\\n\\tmin-width: 100px;\\n\\tvertical-align: super;\\n}\\n\\n.versionsTabView .version-details {\\n\\ttext-align: left;\\n}\\n\\n.versionsTabView .version-details > span {\\n\\tpadding: 0 10px;\\n}\\n\\n.versionsTabView .revertVersion {\\n\\tcursor: pointer;\\n\\tfloat: right;\\n\\tmargin-right: -10px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t\t<div class=\\\"version-details\\\">\\n\t\t\t\t\t<span class=\\\"size has-tooltip\\\" title=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"altSize\") || (depth0 != null ? lookupProperty(depth0,\"altSize\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"altSize\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":14,\"column\":43},\"end\":{\"line\":14,\"column\":54}}}) : helper)))\n + \"\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"humanReadableSize\") || (depth0 != null ? lookupProperty(depth0,\"humanReadableSize\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"humanReadableSize\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":14,\"column\":56},\"end\":{\"line\":14,\"column\":77}}}) : helper)))\n + \"</span>\\n\t\t\t\t</div>\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<a href=\\\"#\\\" class=\\\"revertVersion\\\" title=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"revertLabel\") || (depth0 != null ? lookupProperty(depth0,\"revertLabel\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"revertLabel\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":19,\"column\":44},\"end\":{\"line\":19,\"column\":59}}}) : helper)))\n + \"\\\"><img src=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"revertIconUrl\") || (depth0 != null ? lookupProperty(depth0,\"revertIconUrl\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"revertIconUrl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":19,\"column\":71},\"end\":{\"line\":19,\"column\":88}}}) : helper)))\n + \"\\\" /></a>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, options, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, alias5=container.hooks.blockHelperMissing, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n }, buffer = \n \"<li data-revision=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"id\") || (depth0 != null ? lookupProperty(depth0,\"id\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"id\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":19},\"end\":{\"line\":1,\"column\":25}}}) : helper)))\n + \"\\\">\\n\t<div>\\n\t\t<div class=\\\"preview-container\\\">\\n\t\t\t<img class=\\\"preview\\\" src=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"previewUrl\") || (depth0 != null ? lookupProperty(depth0,\"previewUrl\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"previewUrl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":29},\"end\":{\"line\":4,\"column\":43}}}) : helper)))\n + \"\\\" width=\\\"44\\\" height=\\\"44\\\"/>\\n\t\t</div>\\n\t\t<div class=\\\"version-container\\\">\\n\t\t\t<div>\\n\t\t\t\t<a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"downloadUrl\") || (depth0 != null ? lookupProperty(depth0,\"downloadUrl\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"downloadUrl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":13},\"end\":{\"line\":8,\"column\":28}}}) : helper)))\n + \"\\\" class=\\\"downloadVersion\\\" download=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"downloadName\") || (depth0 != null ? lookupProperty(depth0,\"downloadName\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"downloadName\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":64},\"end\":{\"line\":8,\"column\":80}}}) : helper)))\n + \"\\\"><img src=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"downloadIconUrl\") || (depth0 != null ? lookupProperty(depth0,\"downloadIconUrl\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"downloadIconUrl\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":92},\"end\":{\"line\":8,\"column\":111}}}) : helper)))\n + \"\\\" />\\n\t\t\t\t\t<span class=\\\"versiondate has-tooltip live-relative-timestamp\\\" data-timestamp=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"millisecondsTimestamp\") || (depth0 != null ? lookupProperty(depth0,\"millisecondsTimestamp\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"millisecondsTimestamp\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":83},\"end\":{\"line\":9,\"column\":108}}}) : helper)))\n + \"\\\" title=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"formattedTimestamp\") || (depth0 != null ? lookupProperty(depth0,\"formattedTimestamp\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"formattedTimestamp\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":117},\"end\":{\"line\":9,\"column\":139}}}) : helper)))\n + \"\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"relativeTimestamp\") || (depth0 != null ? lookupProperty(depth0,\"relativeTimestamp\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"relativeTimestamp\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":141},\"end\":{\"line\":9,\"column\":162}}}) : helper)))\n + \"</span>\\n\t\t\t\t</a>\\n\t\t\t</div>\\n\";\n stack1 = ((helper = (helper = lookupProperty(helpers,\"hasDetails\") || (depth0 != null ? lookupProperty(depth0,\"hasDetails\") : depth0)) != null ? helper : alias2),(options={\"name\":\"hasDetails\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":3},\"end\":{\"line\":16,\"column\":18}}}),(typeof helper === alias3 ? helper.call(alias1,options) : helper));\n if (!lookupProperty(helpers,\"hasDetails\")) { stack1 = alias5.call(depth0,stack1,options)}\n if (stack1 != null) { buffer += stack1; }\n buffer += \"\t\t</div>\\n\";\n stack1 = ((helper = (helper = lookupProperty(helpers,\"canRevert\") || (depth0 != null ? lookupProperty(depth0,\"canRevert\") : depth0)) != null ? helper : alias2),(options={\"name\":\"canRevert\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":18,\"column\":2},\"end\":{\"line\":20,\"column\":16}}}),(typeof helper === alias3 ? helper.call(alias1,options) : helper));\n if (!lookupProperty(helpers,\"canRevert\")) { stack1 = alias5.call(depth0,stack1,options)}\n if (stack1 != null) { buffer += stack1; }\n return buffer + \"\t</div>\\n</li>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<ul class=\\\"versions\\\"></ul>\\n<div class=\\\"clear-float\\\"></div>\\n<div class=\\\"empty hidden\\\">\\n\t<div class=\\\"emptycontent\\\">\\n\t\t<div class=\\\"icon-history\\\"></div>\\n\t\t<p>\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"emptyResultLabel\") || (depth0 != null ? lookupProperty(depth0,\"emptyResultLabel\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"emptyResultLabel\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":5},\"end\":{\"line\":6,\"column\":25}}}) : helper)))\n + \"</p>\\n\t</div>\\n</div>\\n<input type=\\\"button\\\" class=\\\"showMoreVersions hidden\\\" value=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"moreVersionsLabel\") || (depth0 != null ? lookupProperty(depth0,\"moreVersionsLabel\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"moreVersionsLabel\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":60},\"end\":{\"line\":9,\"column\":81}}}) : helper)))\n + \"\\\" name=\\\"show-more-versions\\\" id=\\\"show-more-versions\\\" />\\n<div class=\\\"loading hidden\\\" style=\\\"height: 50px\\\"></div>\\n\";\n},\"useData\":true});","// 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 = 1358;","__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\t1358: 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));","__webpack_require__.nc = undefined;","// 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__(22420); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","OCA","Files","DetailTabView","VersionsTabView","extend","id","className","_template","$versionsContainer","events","initialize","prototype","apply","this","arguments","collection","Versions","VersionCollection","on","_onRequest","_onEndRequest","_onUpdate","_onError","_onAddModel","getLabel","t","getIcon","nextPage","_loading","getFileInfo","isDirectory","fetch","_onClickRevertVersion","ev","self","$target","$","target","fileInfoModel","is","closest","preventDefault","revision","attr","versionModel","get","revert","success","empty","setFileInfo","reset","silent","$el","find","removeClass","trigger","set","size","mtime","etag","error","_toggleLoading","OC","Notification","show","file","getFullPath","timestamp","Util","formatDate","type","state","toggleClass","length","model","itemTemplate","_formatItem","append","tooltip","template","data","Template","ItemTemplate","fileInfo","render","version","has","preview","MimeType","getIconUrl","img","Image","onload","getPreviewUrl","src","_","versionId","formattedTimestamp","relativeTimestamp","relativeModifiedDate","millisecondsTimestamp","humanReadableSize","humanFileSize","altSize","n","hasDetails","downloadUrl","getDownloadUrl","downloadIconUrl","imagePath","downloadName","revertIconUrl","previewUrl","revertLabel","canRevert","PERMISSION_UPDATE","attributes","html","emptyResultLabel","delegateEvents","canDisplay","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","window","attach","fileList","registerTabView","order","Plugins","register","Backbone","Collection","VersionModel","sync","davSync","_fileInfo","_currentUser","_client","setCurrentUser","user","getCurrentUser","uid","setClient","client","getClient","Client","host","getHost","root","linkToRemoteBase","useHTTPS","getProtocol","url","parse","result","fullPath","fileId","name","map","parseInt","moment","Date","format","basename","href","Model","davProperties","mimetype","clone","move","done","call","context","fail","generateUrl","params","buildQueryString","___CSS_LOADER_EXPORT___","push","module","Handlebars","exports","container","depth0","helpers","partials","helper","alias1","nullContext","alias2","hooks","helperMissing","alias3","alias4","escapeExpression","lookupProperty","parent","propertyName","Object","hasOwnProperty","stack1","alias5","blockHelperMissing","buffer","program","noop","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","loaded","__webpack_modules__","m","amdD","Error","amdO","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","keys","every","key","splice","r","getter","__esModule","d","a","definition","o","defineProperty","enumerable","g","globalThis","Function","e","obj","prop","Symbol","toStringTag","value","nmd","paths","children","b","document","baseURI","location","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/oauth2-oauth2.js b/dist/oauth2-oauth2.js
index c85784f3ce2..3cf28825767 100644
--- a/dist/oauth2-oauth2.js
+++ b/dist/oauth2-oauth2.js
@@ -1,3 +1,3 @@
/*! For license information please see oauth2-oauth2.js.LICENSE.txt */
-!function(){"use strict";var e,n={62411:function(e,n,r){var i=r(20144),o=r(4820),a={name:"OAuthItem",props:{client:{type:Object,required:!0}},data:function(){return{id:this.client.id,name:this.client.name,redirectUri:this.client.redirectUri,clientId:this.client.clientId,clientSecret:this.client.clientSecret,renderSecret:!1}},computed:{renderedSecret:function(){return this.renderSecret?this.clientSecret:"****"}},methods:{toggleSecret:function(){this.renderSecret=!this.renderSecret}}},l=r(93379),s=r.n(l),d=r(7795),c=r.n(d),u=r(90569),h=r.n(u),p=r(3565),m=r.n(p),f=r(19216),A=r.n(f),v=r(44589),g=r.n(v),C=r(72580),b={};b.styleTagTransform=g(),b.setAttributes=m(),b.insert=h().bind(null,"head"),b.domAPI=c(),b.insertStyleElement=A(),s()(C.Z,b),C.Z&&C.Z.locals&&C.Z.locals;var w=r(51900),y=(0,w.Z)(a,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("tr",[n("td",[n("table",{staticClass:"inline"},[n("tr",[n("td",[t._v(t._s(t.t("oauth2","Name")))]),t._v(" "),n("td",[t._v(t._s(t.name))])]),t._v(" "),n("tr",[n("td",[t._v(t._s(t.t("oauth2","Redirection URI")))]),t._v(" "),n("td",[t._v(t._s(t.redirectUri))])]),t._v(" "),n("tr",[n("td",[t._v(t._s(t.t("oauth2","Client Identifier")))]),t._v(" "),n("td",[n("code",[t._v(t._s(t.clientId))])])]),t._v(" "),n("tr",[n("td",[t._v(t._s(t.t("oauth2","Secret")))]),t._v(" "),n("td",[n("code",[t._v(t._s(t.renderedSecret))]),n("a",{staticClass:"icon-toggle has-tooltip",attrs:{title:t.t("oauth2","Show client secret")},on:{click:t.toggleSecret}})])])])]),t._v(" "),n("td",{staticClass:"action-column"},[n("span",[n("a",{staticClass:"icon-delete has-tooltip",attrs:{title:t.t("oauth2","Delete")},on:{click:function(e){return t.$emit("delete",t.id)}}})])])])}),[],!1,null,"665ff3f1",null).exports,_=r(79753),U={name:"App",components:{OAuthItem:y},props:{clients:{type:Array,required:!0}},data:function(){return{newClient:{name:"",redirectUri:"",errorMsg:"",error:!1}}},methods:{deleteClient:function(t){var e=this;o.default.delete((0,_.generateUrl)("apps/oauth2/clients/{id}",{id:t})).then((function(n){e.clients=e.clients.filter((function(e){return e.id!==t}))}))},addClient:function(){var t=this;this.newClient.error=!1,o.default.post((0,_.generateUrl)("apps/oauth2/clients"),{name:this.newClient.name,redirectUri:this.newClient.redirectUri}).then((function(e){t.clients.push(e.data),t.newClient.name="",t.newClient.redirectUri=""})).catch((function(e){t.newClient.error=!0,t.newClient.errorMsg=e.response.data.message}))}}},S=r(39720),x={};x.styleTagTransform=g(),x.setAttributes=m(),x.insert=h().bind(null,"head"),x.domAPI=c(),x.insertStyleElement=A(),s()(S.Z,x),S.Z&&S.Z.locals&&S.Z.locals;var O=(0,w.Z)(U,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"section",attrs:{id:"oauth2"}},[n("h2",[t._v(t._s(t.t("oauth2","OAuth 2.0 clients")))]),t._v(" "),n("p",{staticClass:"settings-hint"},[t._v("\n\t\t\t"+t._s(t.t("oauth2","OAuth 2.0 allows external services to request access to {instanceName}.",{instanceName:t.OC.theme.name}))+"\n\t\t")]),t._v(" "),t.clients.length>0?n("table",{staticClass:"grid"},[t._m(0),t._v(" "),n("tbody",t._l(t.clients,(function(e){return n("OAuthItem",{key:e.id,attrs:{client:e},on:{delete:t.deleteClient}})})),1)]):t._e(),t._v(" "),n("br"),t._v(" "),n("h3",[t._v(t._s(t.t("oauth2","Add client")))]),t._v(" "),t.newClient.error?n("span",{staticClass:"msg error"},[t._v(t._s(t.newClient.errorMsg))]):t._e(),t._v(" "),n("form",{on:{submit:function(e){return e.preventDefault(),t.addClient.apply(null,arguments)}}},[n("input",{directives:[{name:"model",rawName:"v-model",value:t.newClient.name,expression:"newClient.name"}],attrs:{id:"name",type:"text",name:"name",placeholder:t.t("oauth2","Name")},domProps:{value:t.newClient.name},on:{input:function(e){e.target.composing||t.$set(t.newClient,"name",e.target.value)}}}),t._v(" "),n("input",{directives:[{name:"model",rawName:"v-model",value:t.newClient.redirectUri,expression:"newClient.redirectUri"}],attrs:{id:"redirectUri",type:"url",name:"redirectUri",placeholder:t.t("oauth2","Redirection URI")},domProps:{value:t.newClient.redirectUri},on:{input:function(e){e.target.composing||t.$set(t.newClient,"redirectUri",e.target.value)}}}),t._v(" "),n("input",{staticClass:"button",attrs:{type:"submit"},domProps:{value:t.t("oauth2","Add")}})])])}),[function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("thead",[n("tr",[n("th",{attrs:{id:"headerContent"}}),t._v(" "),n("th",{attrs:{id:"headerRemove"}},[t._v("\n \n\t\t\t\t\t")])])])}],!1,null,"7098866e",null),I=O.exports,R=r(16453);i.default.prototype.t=t,i.default.prototype.OC=OC;var N=(0,R.loadState)("oauth2","clients");new(i.default.extend(I))({propsData:{clients:N}}).$mount("#oauth2")},39720:function(t,e,n){var r=n(87537),i=n.n(r),o=n(23645),a=n.n(o)()(i());a.push([t.id,"\ntable[data-v-7098866e] {\n\tmax-width: 800px;\n}\n","",{version:3,sources:["webpack://./apps/oauth2/src/App.vue"],names:[],mappings:";AAyHA;CACA,gBAAA;AACA",sourcesContent:['\x3c!--\n - @copyright Copyright (c) 2018 Roeland Jago Douma <roeland@famdouma.nl>\n -\n - @author Roeland Jago Douma <roeland@famdouma.nl>\n -\n - @license GNU AGPL version 3 or any later version\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 --\x3e\n<template>\n\t<div id="oauth2" class="section">\n\t\t<h2>{{ t(\'oauth2\', \'OAuth 2.0 clients\') }}</h2>\n\t\t<p class="settings-hint">\n\t\t\t{{ t(\'oauth2\', \'OAuth 2.0 allows external services to request access to {instanceName}.\', { instanceName: OC.theme.name}) }}\n\t\t</p>\n\t\t<table v-if="clients.length > 0" class="grid">\n\t\t\t<thead>\n\t\t\t\t<tr>\n\t\t\t\t\t<th id="headerContent" />\n\t\t\t\t\t<th id="headerRemove">\n&nbsp;\n\t\t\t\t\t</th>\n\t\t\t\t</tr>\n\t\t\t</thead>\n\t\t\t<tbody>\n\t\t\t\t<OAuthItem v-for="client in clients"\n\t\t\t\t\t:key="client.id"\n\t\t\t\t\t:client="client"\n\t\t\t\t\t@delete="deleteClient" />\n\t\t\t</tbody>\n\t\t</table>\n\n\t\t<br>\n\t\t<h3>{{ t(\'oauth2\', \'Add client\') }}</h3>\n\t\t<span v-if="newClient.error" class="msg error">{{ newClient.errorMsg }}</span>\n\t\t<form @submit.prevent="addClient">\n\t\t\t<input id="name"\n\t\t\t\tv-model="newClient.name"\n\t\t\t\ttype="text"\n\t\t\t\tname="name"\n\t\t\t\t:placeholder="t(\'oauth2\', \'Name\')">\n\t\t\t<input id="redirectUri"\n\t\t\t\tv-model="newClient.redirectUri"\n\t\t\t\ttype="url"\n\t\t\t\tname="redirectUri"\n\t\t\t\t:placeholder="t(\'oauth2\', \'Redirection URI\')">\n\t\t\t<input type="submit" class="button" :value="t(\'oauth2\', \'Add\')">\n\t\t</form>\n\t</div>\n</template>\n\n<script>\nimport axios from \'@nextcloud/axios\'\nimport OAuthItem from \'./components/OAuthItem\'\nimport { generateUrl } from \'@nextcloud/router\'\n\nexport default {\n\tname: \'App\',\n\tcomponents: {\n\t\tOAuthItem,\n\t},\n\tprops: {\n\t\tclients: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tnewClient: {\n\t\t\t\tname: \'\',\n\t\t\t\tredirectUri: \'\',\n\t\t\t\terrorMsg: \'\',\n\t\t\t\terror: false,\n\t\t\t},\n\t\t}\n\t},\n\tmethods: {\n\t\tdeleteClient(id) {\n\t\t\taxios.delete(generateUrl(\'apps/oauth2/clients/{id}\', { id }))\n\t\t\t\t.then((response) => {\n\t\t\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\t\t\tthis.clients = this.clients.filter(client => client.id !== id)\n\t\t\t\t})\n\t\t},\n\t\taddClient() {\n\t\t\tthis.newClient.error = false\n\n\t\t\taxios.post(\n\t\t\t\tgenerateUrl(\'apps/oauth2/clients\'),\n\t\t\t\t{\n\t\t\t\t\tname: this.newClient.name,\n\t\t\t\t\tredirectUri: this.newClient.redirectUri,\n\t\t\t\t}\n\t\t\t).then(response => {\n\t\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\t\tthis.clients.push(response.data)\n\n\t\t\t\tthis.newClient.name = \'\'\n\t\t\t\tthis.newClient.redirectUri = \'\'\n\t\t\t}).catch(reason => {\n\t\t\t\tthis.newClient.error = true\n\t\t\t\tthis.newClient.errorMsg = reason.response.data.message\n\t\t\t})\n\t\t},\n\t},\n}\n<\/script>\n<style scoped>\n\ttable {\n\t\tmax-width: 800px;\n\t}\n</style>\n'],sourceRoot:""}]),e.Z=a},72580:function(t,e,n){var r=n(87537),i=n.n(r),o=n(23645),a=n.n(o)()(i());a.push([t.id,"\n.icon-toggle[data-v-665ff3f1],\n.icon-delete[data-v-665ff3f1] {\n\tdisplay: inline-block;\n\twidth: 16px;\n\theight: 16px;\n\tpadding: 10px;\n\tvertical-align: middle;\n}\ntd code[data-v-665ff3f1] {\n\tdisplay: inline-block;\n\tvertical-align: middle;\n}\ntable.inline td[data-v-665ff3f1] {\n\tborder: none;\n\tpadding: 5px;\n}\n","",{version:3,sources:["webpack://./apps/oauth2/src/components/OAuthItem.vue"],names:[],mappings:";AAsFA;;CAEA,qBAAA;CACA,WAAA;CACA,YAAA;CACA,aAAA;CACA,sBAAA;AACA;AACA;CACA,qBAAA;CACA,sBAAA;AACA;AACA;CACA,YAAA;CACA,YAAA;AACA",sourcesContent:["\x3c!--\n - @copyright Copyright (c) 2018 Roeland Jago Douma <roeland@famdouma.nl>\n -\n - @author Roeland Jago Douma <roeland@famdouma.nl>\n -\n - @license GNU AGPL version 3 or any later version\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 --\x3e\n<template>\n\t<tr>\n\t\t<td>\n\t\t\t<table class=\"inline\">\n\t\t\t\t<tr>\n\t\t\t\t\t<td>{{ t('oauth2', 'Name') }}</td>\n\t\t\t\t\t<td>{{ name }}</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>{{ t('oauth2', 'Redirection URI') }}</td>\n\t\t\t\t\t<td>{{ redirectUri }}</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>{{ t('oauth2', 'Client Identifier') }}</td>\n\t\t\t\t\t<td><code>{{ clientId }}</code></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>{{ t('oauth2', 'Secret') }}</td>\n\t\t\t\t\t<td><code>{{ renderedSecret }}</code><a class=\"icon-toggle has-tooltip\" :title=\"t('oauth2', 'Show client secret')\" @click=\"toggleSecret\" /></td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</td>\n\t\t<td class=\"action-column\">\n\t\t\t<span><a class=\"icon-delete has-tooltip\" :title=\"t('oauth2', 'Delete')\" @click=\"$emit('delete', id)\" /></span>\n\t\t</td>\n\t</tr>\n</template>\n\n<script>\nexport default {\n\tname: 'OAuthItem',\n\tprops: {\n\t\tclient: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tid: this.client.id,\n\t\t\tname: this.client.name,\n\t\t\tredirectUri: this.client.redirectUri,\n\t\t\tclientId: this.client.clientId,\n\t\t\tclientSecret: this.client.clientSecret,\n\t\t\trenderSecret: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\trenderedSecret() {\n\t\t\tif (this.renderSecret) {\n\t\t\t\treturn this.clientSecret\n\t\t\t} else {\n\t\t\t\treturn '****'\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\ttoggleSecret() {\n\t\t\tthis.renderSecret = !this.renderSecret\n\t\t},\n\t},\n}\n<\/script>\n\n<style scoped>\n\t.icon-toggle,\n\t.icon-delete {\n\t\tdisplay: inline-block;\n\t\twidth: 16px;\n\t\theight: 16px;\n\t\tpadding: 10px;\n\t\tvertical-align: middle;\n\t}\n\ttd code {\n\t\tdisplay: inline-block;\n\t\tvertical-align: middle;\n\t}\n\ttable.inline td {\n\t\tborder: none;\n\t\tpadding: 5px;\n\t}\n</style>\n"],sourceRoot:""}]),e.Z=a}},r={};function i(t){var e=r[t];if(void 0!==e)return e.exports;var o=r[t]={id:t,loaded:!1,exports:{}};return n[t].call(o.exports,o,o.exports,i),o.loaded=!0,o.exports}i.m=n,i.amdD=function(){throw new Error("define cannot be used indirect")},i.amdO={},e=[],i.O=function(t,n,r,o){if(!n){var a=1/0;for(c=0;c<e.length;c++){n=e[c][0],r=e[c][1],o=e[c][2];for(var l=!0,s=0;s<n.length;s++)(!1&o||a>=o)&&Object.keys(i.O).every((function(t){return i.O[t](n[s])}))?n.splice(s--,1):(l=!1,o<a&&(a=o));if(l){e.splice(c--,1);var d=r();void 0!==d&&(t=d)}}return t}o=o||0;for(var c=e.length;c>0&&e[c-1][2]>o;c--)e[c]=e[c-1];e[c]=[n,r,o]},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,{a:e}),e},i.d=function(t,e){for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},i.j=5053,function(){i.b=document.baseURI||self.location.href;var t={5053:0};i.O.j=function(e){return 0===t[e]};var e=function(e,n){var r,o,a=n[0],l=n[1],s=n[2],d=0;if(a.some((function(e){return 0!==t[e]}))){for(r in l)i.o(l,r)&&(i.m[r]=l[r]);if(s)var c=s(i)}for(e&&e(n);d<a.length;d++)o=a[d],i.o(t,o)&&t[o]&&t[o][0](),t[o]=0;return i.O(c)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))}();var o=i.O(void 0,[7874],(function(){return i(62411)}));o=i.O(o)}();
-//# sourceMappingURL=oauth2-oauth2.js.map?v=7bcaac9c20151a31e51e \ No newline at end of file
+!function(){"use strict";var e,n={62411:function(e,n,r){var i=r(20144),o=r(4820),a={name:"OAuthItem",props:{client:{type:Object,required:!0}},data:function(){return{id:this.client.id,name:this.client.name,redirectUri:this.client.redirectUri,clientId:this.client.clientId,clientSecret:this.client.clientSecret,renderSecret:!1}},computed:{renderedSecret:function(){return this.renderSecret?this.clientSecret:"****"}},methods:{toggleSecret:function(){this.renderSecret=!this.renderSecret}}},l=r(93379),s=r.n(l),d=r(7795),c=r.n(d),u=r(90569),h=r.n(u),p=r(3565),m=r.n(p),f=r(19216),A=r.n(f),v=r(44589),g=r.n(v),C=r(72580),b={};b.styleTagTransform=g(),b.setAttributes=m(),b.insert=h().bind(null,"head"),b.domAPI=c(),b.insertStyleElement=A(),s()(C.Z,b),C.Z&&C.Z.locals&&C.Z.locals;var w=r(51900),y=(0,w.Z)(a,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("tr",[n("td",[n("table",{staticClass:"inline"},[n("tr",[n("td",[t._v(t._s(t.t("oauth2","Name")))]),t._v(" "),n("td",[t._v(t._s(t.name))])]),t._v(" "),n("tr",[n("td",[t._v(t._s(t.t("oauth2","Redirection URI")))]),t._v(" "),n("td",[t._v(t._s(t.redirectUri))])]),t._v(" "),n("tr",[n("td",[t._v(t._s(t.t("oauth2","Client Identifier")))]),t._v(" "),n("td",[n("code",[t._v(t._s(t.clientId))])])]),t._v(" "),n("tr",[n("td",[t._v(t._s(t.t("oauth2","Secret")))]),t._v(" "),n("td",[n("code",[t._v(t._s(t.renderedSecret))]),n("a",{staticClass:"icon-toggle has-tooltip",attrs:{title:t.t("oauth2","Show client secret")},on:{click:t.toggleSecret}})])])])]),t._v(" "),n("td",{staticClass:"action-column"},[n("span",[n("a",{staticClass:"icon-delete has-tooltip",attrs:{title:t.t("oauth2","Delete")},on:{click:function(e){return t.$emit("delete",t.id)}}})])])])}),[],!1,null,"665ff3f1",null).exports,_=r(79753),U={name:"App",components:{OAuthItem:y},props:{clients:{type:Array,required:!0}},data:function(){return{newClient:{name:"",redirectUri:"",errorMsg:"",error:!1}}},methods:{deleteClient:function(t){var e=this;o.default.delete((0,_.generateUrl)("apps/oauth2/clients/{id}",{id:t})).then((function(n){e.clients=e.clients.filter((function(e){return e.id!==t}))}))},addClient:function(){var t=this;this.newClient.error=!1,o.default.post((0,_.generateUrl)("apps/oauth2/clients"),{name:this.newClient.name,redirectUri:this.newClient.redirectUri}).then((function(e){t.clients.push(e.data),t.newClient.name="",t.newClient.redirectUri=""})).catch((function(e){t.newClient.error=!0,t.newClient.errorMsg=e.response.data.message}))}}},S=r(39720),x={};x.styleTagTransform=g(),x.setAttributes=m(),x.insert=h().bind(null,"head"),x.domAPI=c(),x.insertStyleElement=A(),s()(S.Z,x),S.Z&&S.Z.locals&&S.Z.locals;var O=(0,w.Z)(U,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"section",attrs:{id:"oauth2"}},[n("h2",[t._v(t._s(t.t("oauth2","OAuth 2.0 clients")))]),t._v(" "),n("p",{staticClass:"settings-hint"},[t._v("\n\t\t\t"+t._s(t.t("oauth2","OAuth 2.0 allows external services to request access to {instanceName}.",{instanceName:t.OC.theme.name}))+"\n\t\t")]),t._v(" "),t.clients.length>0?n("table",{staticClass:"grid"},[t._m(0),t._v(" "),n("tbody",t._l(t.clients,(function(e){return n("OAuthItem",{key:e.id,attrs:{client:e},on:{delete:t.deleteClient}})})),1)]):t._e(),t._v(" "),n("br"),t._v(" "),n("h3",[t._v(t._s(t.t("oauth2","Add client")))]),t._v(" "),t.newClient.error?n("span",{staticClass:"msg error"},[t._v(t._s(t.newClient.errorMsg))]):t._e(),t._v(" "),n("form",{on:{submit:function(e){return e.preventDefault(),t.addClient.apply(null,arguments)}}},[n("input",{directives:[{name:"model",rawName:"v-model",value:t.newClient.name,expression:"newClient.name"}],attrs:{id:"name",type:"text",name:"name",placeholder:t.t("oauth2","Name")},domProps:{value:t.newClient.name},on:{input:function(e){e.target.composing||t.$set(t.newClient,"name",e.target.value)}}}),t._v(" "),n("input",{directives:[{name:"model",rawName:"v-model",value:t.newClient.redirectUri,expression:"newClient.redirectUri"}],attrs:{id:"redirectUri",type:"url",name:"redirectUri",placeholder:t.t("oauth2","Redirection URI")},domProps:{value:t.newClient.redirectUri},on:{input:function(e){e.target.composing||t.$set(t.newClient,"redirectUri",e.target.value)}}}),t._v(" "),n("input",{staticClass:"button",attrs:{type:"submit"},domProps:{value:t.t("oauth2","Add")}})])])}),[function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("thead",[n("tr",[n("th",{attrs:{id:"headerContent"}}),t._v(" "),n("th",{attrs:{id:"headerRemove"}},[t._v("\n \n\t\t\t\t\t")])])])}],!1,null,"7098866e",null),I=O.exports,R=r(16453);i.default.prototype.t=t,i.default.prototype.OC=OC;var N=(0,R.loadState)("oauth2","clients");new(i.default.extend(I))({propsData:{clients:N}}).$mount("#oauth2")},39720:function(t,e,n){var r=n(87537),i=n.n(r),o=n(23645),a=n.n(o)()(i());a.push([t.id,"\ntable[data-v-7098866e] {\n\tmax-width: 800px;\n}\n","",{version:3,sources:["webpack://./apps/oauth2/src/App.vue"],names:[],mappings:";AAyHA;CACA,gBAAA;AACA",sourcesContent:['\x3c!--\n - @copyright Copyright (c) 2018 Roeland Jago Douma <roeland@famdouma.nl>\n -\n - @author Roeland Jago Douma <roeland@famdouma.nl>\n -\n - @license GNU AGPL version 3 or any later version\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 --\x3e\n<template>\n\t<div id="oauth2" class="section">\n\t\t<h2>{{ t(\'oauth2\', \'OAuth 2.0 clients\') }}</h2>\n\t\t<p class="settings-hint">\n\t\t\t{{ t(\'oauth2\', \'OAuth 2.0 allows external services to request access to {instanceName}.\', { instanceName: OC.theme.name}) }}\n\t\t</p>\n\t\t<table v-if="clients.length > 0" class="grid">\n\t\t\t<thead>\n\t\t\t\t<tr>\n\t\t\t\t\t<th id="headerContent" />\n\t\t\t\t\t<th id="headerRemove">\n&nbsp;\n\t\t\t\t\t</th>\n\t\t\t\t</tr>\n\t\t\t</thead>\n\t\t\t<tbody>\n\t\t\t\t<OAuthItem v-for="client in clients"\n\t\t\t\t\t:key="client.id"\n\t\t\t\t\t:client="client"\n\t\t\t\t\t@delete="deleteClient" />\n\t\t\t</tbody>\n\t\t</table>\n\n\t\t<br>\n\t\t<h3>{{ t(\'oauth2\', \'Add client\') }}</h3>\n\t\t<span v-if="newClient.error" class="msg error">{{ newClient.errorMsg }}</span>\n\t\t<form @submit.prevent="addClient">\n\t\t\t<input id="name"\n\t\t\t\tv-model="newClient.name"\n\t\t\t\ttype="text"\n\t\t\t\tname="name"\n\t\t\t\t:placeholder="t(\'oauth2\', \'Name\')">\n\t\t\t<input id="redirectUri"\n\t\t\t\tv-model="newClient.redirectUri"\n\t\t\t\ttype="url"\n\t\t\t\tname="redirectUri"\n\t\t\t\t:placeholder="t(\'oauth2\', \'Redirection URI\')">\n\t\t\t<input type="submit" class="button" :value="t(\'oauth2\', \'Add\')">\n\t\t</form>\n\t</div>\n</template>\n\n<script>\nimport axios from \'@nextcloud/axios\'\nimport OAuthItem from \'./components/OAuthItem\'\nimport { generateUrl } from \'@nextcloud/router\'\n\nexport default {\n\tname: \'App\',\n\tcomponents: {\n\t\tOAuthItem,\n\t},\n\tprops: {\n\t\tclients: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tnewClient: {\n\t\t\t\tname: \'\',\n\t\t\t\tredirectUri: \'\',\n\t\t\t\terrorMsg: \'\',\n\t\t\t\terror: false,\n\t\t\t},\n\t\t}\n\t},\n\tmethods: {\n\t\tdeleteClient(id) {\n\t\t\taxios.delete(generateUrl(\'apps/oauth2/clients/{id}\', { id }))\n\t\t\t\t.then((response) => {\n\t\t\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\t\t\tthis.clients = this.clients.filter(client => client.id !== id)\n\t\t\t\t})\n\t\t},\n\t\taddClient() {\n\t\t\tthis.newClient.error = false\n\n\t\t\taxios.post(\n\t\t\t\tgenerateUrl(\'apps/oauth2/clients\'),\n\t\t\t\t{\n\t\t\t\t\tname: this.newClient.name,\n\t\t\t\t\tredirectUri: this.newClient.redirectUri,\n\t\t\t\t}\n\t\t\t).then(response => {\n\t\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\t\tthis.clients.push(response.data)\n\n\t\t\t\tthis.newClient.name = \'\'\n\t\t\t\tthis.newClient.redirectUri = \'\'\n\t\t\t}).catch(reason => {\n\t\t\t\tthis.newClient.error = true\n\t\t\t\tthis.newClient.errorMsg = reason.response.data.message\n\t\t\t})\n\t\t},\n\t},\n}\n<\/script>\n<style scoped>\n\ttable {\n\t\tmax-width: 800px;\n\t}\n</style>\n'],sourceRoot:""}]),e.Z=a},72580:function(t,e,n){var r=n(87537),i=n.n(r),o=n(23645),a=n.n(o)()(i());a.push([t.id,"\n.icon-toggle[data-v-665ff3f1],\n.icon-delete[data-v-665ff3f1] {\n\tdisplay: inline-block;\n\twidth: 16px;\n\theight: 16px;\n\tpadding: 10px;\n\tvertical-align: middle;\n}\ntd code[data-v-665ff3f1] {\n\tdisplay: inline-block;\n\tvertical-align: middle;\n}\ntable.inline td[data-v-665ff3f1] {\n\tborder: none;\n\tpadding: 5px;\n}\n","",{version:3,sources:["webpack://./apps/oauth2/src/components/OAuthItem.vue"],names:[],mappings:";AAsFA;;CAEA,qBAAA;CACA,WAAA;CACA,YAAA;CACA,aAAA;CACA,sBAAA;AACA;AACA;CACA,qBAAA;CACA,sBAAA;AACA;AACA;CACA,YAAA;CACA,YAAA;AACA",sourcesContent:["\x3c!--\n - @copyright Copyright (c) 2018 Roeland Jago Douma <roeland@famdouma.nl>\n -\n - @author Roeland Jago Douma <roeland@famdouma.nl>\n -\n - @license GNU AGPL version 3 or any later version\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 --\x3e\n<template>\n\t<tr>\n\t\t<td>\n\t\t\t<table class=\"inline\">\n\t\t\t\t<tr>\n\t\t\t\t\t<td>{{ t('oauth2', 'Name') }}</td>\n\t\t\t\t\t<td>{{ name }}</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>{{ t('oauth2', 'Redirection URI') }}</td>\n\t\t\t\t\t<td>{{ redirectUri }}</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>{{ t('oauth2', 'Client Identifier') }}</td>\n\t\t\t\t\t<td><code>{{ clientId }}</code></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>{{ t('oauth2', 'Secret') }}</td>\n\t\t\t\t\t<td><code>{{ renderedSecret }}</code><a class=\"icon-toggle has-tooltip\" :title=\"t('oauth2', 'Show client secret')\" @click=\"toggleSecret\" /></td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</td>\n\t\t<td class=\"action-column\">\n\t\t\t<span><a class=\"icon-delete has-tooltip\" :title=\"t('oauth2', 'Delete')\" @click=\"$emit('delete', id)\" /></span>\n\t\t</td>\n\t</tr>\n</template>\n\n<script>\nexport default {\n\tname: 'OAuthItem',\n\tprops: {\n\t\tclient: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tid: this.client.id,\n\t\t\tname: this.client.name,\n\t\t\tredirectUri: this.client.redirectUri,\n\t\t\tclientId: this.client.clientId,\n\t\t\tclientSecret: this.client.clientSecret,\n\t\t\trenderSecret: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\trenderedSecret() {\n\t\t\tif (this.renderSecret) {\n\t\t\t\treturn this.clientSecret\n\t\t\t} else {\n\t\t\t\treturn '****'\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\ttoggleSecret() {\n\t\t\tthis.renderSecret = !this.renderSecret\n\t\t},\n\t},\n}\n<\/script>\n\n<style scoped>\n\t.icon-toggle,\n\t.icon-delete {\n\t\tdisplay: inline-block;\n\t\twidth: 16px;\n\t\theight: 16px;\n\t\tpadding: 10px;\n\t\tvertical-align: middle;\n\t}\n\ttd code {\n\t\tdisplay: inline-block;\n\t\tvertical-align: middle;\n\t}\n\ttable.inline td {\n\t\tborder: none;\n\t\tpadding: 5px;\n\t}\n</style>\n"],sourceRoot:""}]),e.Z=a}},r={};function i(t){var e=r[t];if(void 0!==e)return e.exports;var o=r[t]={id:t,loaded:!1,exports:{}};return n[t].call(o.exports,o,o.exports,i),o.loaded=!0,o.exports}i.m=n,i.amdD=function(){throw new Error("define cannot be used indirect")},i.amdO={},e=[],i.O=function(t,n,r,o){if(!n){var a=1/0;for(c=0;c<e.length;c++){n=e[c][0],r=e[c][1],o=e[c][2];for(var l=!0,s=0;s<n.length;s++)(!1&o||a>=o)&&Object.keys(i.O).every((function(t){return i.O[t](n[s])}))?n.splice(s--,1):(l=!1,o<a&&(a=o));if(l){e.splice(c--,1);var d=r();void 0!==d&&(t=d)}}return t}o=o||0;for(var c=e.length;c>0&&e[c-1][2]>o;c--)e[c]=e[c-1];e[c]=[n,r,o]},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,{a:e}),e},i.d=function(t,e){for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},i.j=5053,function(){i.b=document.baseURI||self.location.href;var t={5053:0};i.O.j=function(e){return 0===t[e]};var e=function(e,n){var r,o,a=n[0],l=n[1],s=n[2],d=0;if(a.some((function(e){return 0!==t[e]}))){for(r in l)i.o(l,r)&&(i.m[r]=l[r]);if(s)var c=s(i)}for(e&&e(n);d<a.length;d++)o=a[d],i.o(t,o)&&t[o]&&t[o][0](),t[o]=0;return i.O(c)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))}(),i.nc=void 0;var o=i.O(void 0,[7874],(function(){return i(62411)}));o=i.O(o)}();
+//# sourceMappingURL=oauth2-oauth2.js.map?v=7fb30c8a61ffb0b40b16 \ No newline at end of file
diff --git a/dist/oauth2-oauth2.js.map b/dist/oauth2-oauth2.js.map
index 9bdd58add5e..1df1fcbcc0d 100644
--- a/dist/oauth2-oauth2.js.map
+++ b/dist/oauth2-oauth2.js.map
@@ -1 +1 @@
-{"version":3,"file":"oauth2-oauth2.js?v=7bcaac9c20151a31e51e","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/oauth2/src/components/OAuthItem.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/oauth2/src/components/OAuthItem.vue","webpack://nextcloud/./apps/oauth2/src/components/OAuthItem.vue?636d","webpack://nextcloud/./apps/oauth2/src/components/OAuthItem.vue?7546","webpack:///nextcloud/apps/oauth2/src/components/OAuthItem.vue?vue&type=template&id=665ff3f1&scoped=true&","webpack:///nextcloud/apps/oauth2/src/App.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/oauth2/src/App.vue","webpack://nextcloud/./apps/oauth2/src/App.vue?b0a8","webpack://nextcloud/./apps/oauth2/src/App.vue?8831","webpack:///nextcloud/apps/oauth2/src/App.vue?vue&type=template&id=7098866e&scoped=true&","webpack:///nextcloud/apps/oauth2/src/main.js","webpack:///nextcloud/apps/oauth2/src/App.vue?vue&type=style&index=0&id=7098866e&scoped=true&lang=css&","webpack:///nextcloud/apps/oauth2/src/components/OAuthItem.vue?vue&type=style&index=0&id=665ff3f1&scoped=true&lang=css&","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};","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OAuthItem.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!./OAuthItem.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Roeland Jago Douma <roeland@famdouma.nl>\n -\n - @author Roeland Jago Douma <roeland@famdouma.nl>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n<template>\n\t<tr>\n\t\t<td>\n\t\t\t<table class=\"inline\">\n\t\t\t\t<tr>\n\t\t\t\t\t<td>{{ t('oauth2', 'Name') }}</td>\n\t\t\t\t\t<td>{{ name }}</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>{{ t('oauth2', 'Redirection URI') }}</td>\n\t\t\t\t\t<td>{{ redirectUri }}</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>{{ t('oauth2', 'Client Identifier') }}</td>\n\t\t\t\t\t<td><code>{{ clientId }}</code></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>{{ t('oauth2', 'Secret') }}</td>\n\t\t\t\t\t<td><code>{{ renderedSecret }}</code><a class=\"icon-toggle has-tooltip\" :title=\"t('oauth2', 'Show client secret')\" @click=\"toggleSecret\" /></td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</td>\n\t\t<td class=\"action-column\">\n\t\t\t<span><a class=\"icon-delete has-tooltip\" :title=\"t('oauth2', 'Delete')\" @click=\"$emit('delete', id)\" /></span>\n\t\t</td>\n\t</tr>\n</template>\n\n<script>\nexport default {\n\tname: 'OAuthItem',\n\tprops: {\n\t\tclient: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tid: this.client.id,\n\t\t\tname: this.client.name,\n\t\t\tredirectUri: this.client.redirectUri,\n\t\t\tclientId: this.client.clientId,\n\t\t\tclientSecret: this.client.clientSecret,\n\t\t\trenderSecret: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\trenderedSecret() {\n\t\t\tif (this.renderSecret) {\n\t\t\t\treturn this.clientSecret\n\t\t\t} else {\n\t\t\t\treturn '****'\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\ttoggleSecret() {\n\t\t\tthis.renderSecret = !this.renderSecret\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\t.icon-toggle,\n\t.icon-delete {\n\t\tdisplay: inline-block;\n\t\twidth: 16px;\n\t\theight: 16px;\n\t\tpadding: 10px;\n\t\tvertical-align: middle;\n\t}\n\ttd code {\n\t\tdisplay: inline-block;\n\t\tvertical-align: middle;\n\t}\n\ttable.inline td {\n\t\tborder: none;\n\t\tpadding: 5px;\n\t}\n</style>\n","\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/vue-loader/lib/index.js??vue-loader-options!./OAuthItem.vue?vue&type=style&index=0&id=665ff3f1&scoped=true&lang=css&\";\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/vue-loader/lib/index.js??vue-loader-options!./OAuthItem.vue?vue&type=style&index=0&id=665ff3f1&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./OAuthItem.vue?vue&type=template&id=665ff3f1&scoped=true&\"\nimport script from \"./OAuthItem.vue?vue&type=script&lang=js&\"\nexport * from \"./OAuthItem.vue?vue&type=script&lang=js&\"\nimport style0 from \"./OAuthItem.vue?vue&type=style&index=0&id=665ff3f1&scoped=true&lang=css&\"\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 \"665ff3f1\",\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('tr',[_c('td',[_c('table',{staticClass:\"inline\"},[_c('tr',[_c('td',[_vm._v(_vm._s(_vm.t('oauth2', 'Name')))]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm.name))])]),_vm._v(\" \"),_c('tr',[_c('td',[_vm._v(_vm._s(_vm.t('oauth2', 'Redirection URI')))]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm.redirectUri))])]),_vm._v(\" \"),_c('tr',[_c('td',[_vm._v(_vm._s(_vm.t('oauth2', 'Client Identifier')))]),_vm._v(\" \"),_c('td',[_c('code',[_vm._v(_vm._s(_vm.clientId))])])]),_vm._v(\" \"),_c('tr',[_c('td',[_vm._v(_vm._s(_vm.t('oauth2', 'Secret')))]),_vm._v(\" \"),_c('td',[_c('code',[_vm._v(_vm._s(_vm.renderedSecret))]),_c('a',{staticClass:\"icon-toggle has-tooltip\",attrs:{\"title\":_vm.t('oauth2', 'Show client secret')},on:{\"click\":_vm.toggleSecret}})])])])]),_vm._v(\" \"),_c('td',{staticClass:\"action-column\"},[_c('span',[_c('a',{staticClass:\"icon-delete has-tooltip\",attrs:{\"title\":_vm.t('oauth2', 'Delete')},on:{\"click\":function($event){return _vm.$emit('delete', _vm.id)}}})])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.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!./App.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Roeland Jago Douma <roeland@famdouma.nl>\n -\n - @author Roeland Jago Douma <roeland@famdouma.nl>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n<template>\n\t<div id=\"oauth2\" class=\"section\">\n\t\t<h2>{{ t('oauth2', 'OAuth 2.0 clients') }}</h2>\n\t\t<p class=\"settings-hint\">\n\t\t\t{{ t('oauth2', 'OAuth 2.0 allows external services to request access to {instanceName}.', { instanceName: OC.theme.name}) }}\n\t\t</p>\n\t\t<table v-if=\"clients.length > 0\" class=\"grid\">\n\t\t\t<thead>\n\t\t\t\t<tr>\n\t\t\t\t\t<th id=\"headerContent\" />\n\t\t\t\t\t<th id=\"headerRemove\">\n&nbsp;\n\t\t\t\t\t</th>\n\t\t\t\t</tr>\n\t\t\t</thead>\n\t\t\t<tbody>\n\t\t\t\t<OAuthItem v-for=\"client in clients\"\n\t\t\t\t\t:key=\"client.id\"\n\t\t\t\t\t:client=\"client\"\n\t\t\t\t\t@delete=\"deleteClient\" />\n\t\t\t</tbody>\n\t\t</table>\n\n\t\t<br>\n\t\t<h3>{{ t('oauth2', 'Add client') }}</h3>\n\t\t<span v-if=\"newClient.error\" class=\"msg error\">{{ newClient.errorMsg }}</span>\n\t\t<form @submit.prevent=\"addClient\">\n\t\t\t<input id=\"name\"\n\t\t\t\tv-model=\"newClient.name\"\n\t\t\t\ttype=\"text\"\n\t\t\t\tname=\"name\"\n\t\t\t\t:placeholder=\"t('oauth2', 'Name')\">\n\t\t\t<input id=\"redirectUri\"\n\t\t\t\tv-model=\"newClient.redirectUri\"\n\t\t\t\ttype=\"url\"\n\t\t\t\tname=\"redirectUri\"\n\t\t\t\t:placeholder=\"t('oauth2', 'Redirection URI')\">\n\t\t\t<input type=\"submit\" class=\"button\" :value=\"t('oauth2', 'Add')\">\n\t\t</form>\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport OAuthItem from './components/OAuthItem'\nimport { generateUrl } from '@nextcloud/router'\n\nexport default {\n\tname: 'App',\n\tcomponents: {\n\t\tOAuthItem,\n\t},\n\tprops: {\n\t\tclients: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tnewClient: {\n\t\t\t\tname: '',\n\t\t\t\tredirectUri: '',\n\t\t\t\terrorMsg: '',\n\t\t\t\terror: false,\n\t\t\t},\n\t\t}\n\t},\n\tmethods: {\n\t\tdeleteClient(id) {\n\t\t\taxios.delete(generateUrl('apps/oauth2/clients/{id}', { id }))\n\t\t\t\t.then((response) => {\n\t\t\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\t\t\tthis.clients = this.clients.filter(client => client.id !== id)\n\t\t\t\t})\n\t\t},\n\t\taddClient() {\n\t\t\tthis.newClient.error = false\n\n\t\t\taxios.post(\n\t\t\t\tgenerateUrl('apps/oauth2/clients'),\n\t\t\t\t{\n\t\t\t\t\tname: this.newClient.name,\n\t\t\t\t\tredirectUri: this.newClient.redirectUri,\n\t\t\t\t}\n\t\t\t).then(response => {\n\t\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\t\tthis.clients.push(response.data)\n\n\t\t\t\tthis.newClient.name = ''\n\t\t\t\tthis.newClient.redirectUri = ''\n\t\t\t}).catch(reason => {\n\t\t\t\tthis.newClient.error = true\n\t\t\t\tthis.newClient.errorMsg = reason.response.data.message\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n<style scoped>\n\ttable {\n\t\tmax-width: 800px;\n\t}\n</style>\n","\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/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=7098866e&scoped=true&lang=css&\";\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/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=7098866e&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=7098866e&scoped=true&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=7098866e&scoped=true&lang=css&\"\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 \"7098866e\",\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\",attrs:{\"id\":\"oauth2\"}},[_c('h2',[_vm._v(_vm._s(_vm.t('oauth2', 'OAuth 2.0 clients')))]),_vm._v(\" \"),_c('p',{staticClass:\"settings-hint\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('oauth2', 'OAuth 2.0 allows external services to request access to {instanceName}.', { instanceName: _vm.OC.theme.name}))+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.clients.length > 0)?_c('table',{staticClass:\"grid\"},[_vm._m(0),_vm._v(\" \"),_c('tbody',_vm._l((_vm.clients),function(client){return _c('OAuthItem',{key:client.id,attrs:{\"client\":client},on:{\"delete\":_vm.deleteClient}})}),1)]):_vm._e(),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('h3',[_vm._v(_vm._s(_vm.t('oauth2', 'Add client')))]),_vm._v(\" \"),(_vm.newClient.error)?_c('span',{staticClass:\"msg error\"},[_vm._v(_vm._s(_vm.newClient.errorMsg))]):_vm._e(),_vm._v(\" \"),_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.addClient.apply(null, arguments)}}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newClient.name),expression:\"newClient.name\"}],attrs:{\"id\":\"name\",\"type\":\"text\",\"name\":\"name\",\"placeholder\":_vm.t('oauth2', 'Name')},domProps:{\"value\":(_vm.newClient.name)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.newClient, \"name\", $event.target.value)}}}),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newClient.redirectUri),expression:\"newClient.redirectUri\"}],attrs:{\"id\":\"redirectUri\",\"type\":\"url\",\"name\":\"redirectUri\",\"placeholder\":_vm.t('oauth2', 'Redirection URI')},domProps:{\"value\":(_vm.newClient.redirectUri)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.newClient, \"redirectUri\", $event.target.value)}}}),_vm._v(\" \"),_c('input',{staticClass:\"button\",attrs:{\"type\":\"submit\"},domProps:{\"value\":_vm.t('oauth2', 'Add')}})])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('thead',[_c('tr',[_c('th',{attrs:{\"id\":\"headerContent\"}}),_vm._v(\" \"),_c('th',{attrs:{\"id\":\"headerRemove\"}},[_vm._v(\"\\n \\n\\t\\t\\t\\t\\t\")])])])}]\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2018 Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport Vue from 'vue'\nimport App from './App.vue'\nimport { loadState } from '@nextcloud/initial-state'\n\nVue.prototype.t = t\nVue.prototype.OC = OC\n\nconst clients = loadState('oauth2', 'clients')\n\nconst View = Vue.extend(App)\nconst oauth = new View({\n\tpropsData: {\n\t\tclients,\n\t},\n})\noauth.$mount('#oauth2')\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, \"\\ntable[data-v-7098866e] {\\n\\tmax-width: 800px;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/oauth2/src/App.vue\"],\"names\":[],\"mappings\":\";AAyHA;CACA,gBAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright Copyright (c) 2018 Roeland Jago Douma <roeland@famdouma.nl>\\n -\\n - @author Roeland Jago Douma <roeland@famdouma.nl>\\n -\\n - @license GNU AGPL version 3 or any later version\\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 -->\\n<template>\\n\\t<div id=\\\"oauth2\\\" class=\\\"section\\\">\\n\\t\\t<h2>{{ t('oauth2', 'OAuth 2.0 clients') }}</h2>\\n\\t\\t<p class=\\\"settings-hint\\\">\\n\\t\\t\\t{{ t('oauth2', 'OAuth 2.0 allows external services to request access to {instanceName}.', { instanceName: OC.theme.name}) }}\\n\\t\\t</p>\\n\\t\\t<table v-if=\\\"clients.length > 0\\\" class=\\\"grid\\\">\\n\\t\\t\\t<thead>\\n\\t\\t\\t\\t<tr>\\n\\t\\t\\t\\t\\t<th id=\\\"headerContent\\\" />\\n\\t\\t\\t\\t\\t<th id=\\\"headerRemove\\\">\\n&nbsp;\\n\\t\\t\\t\\t\\t</th>\\n\\t\\t\\t\\t</tr>\\n\\t\\t\\t</thead>\\n\\t\\t\\t<tbody>\\n\\t\\t\\t\\t<OAuthItem v-for=\\\"client in clients\\\"\\n\\t\\t\\t\\t\\t:key=\\\"client.id\\\"\\n\\t\\t\\t\\t\\t:client=\\\"client\\\"\\n\\t\\t\\t\\t\\t@delete=\\\"deleteClient\\\" />\\n\\t\\t\\t</tbody>\\n\\t\\t</table>\\n\\n\\t\\t<br>\\n\\t\\t<h3>{{ t('oauth2', 'Add client') }}</h3>\\n\\t\\t<span v-if=\\\"newClient.error\\\" class=\\\"msg error\\\">{{ newClient.errorMsg }}</span>\\n\\t\\t<form @submit.prevent=\\\"addClient\\\">\\n\\t\\t\\t<input id=\\\"name\\\"\\n\\t\\t\\t\\tv-model=\\\"newClient.name\\\"\\n\\t\\t\\t\\ttype=\\\"text\\\"\\n\\t\\t\\t\\tname=\\\"name\\\"\\n\\t\\t\\t\\t:placeholder=\\\"t('oauth2', 'Name')\\\">\\n\\t\\t\\t<input id=\\\"redirectUri\\\"\\n\\t\\t\\t\\tv-model=\\\"newClient.redirectUri\\\"\\n\\t\\t\\t\\ttype=\\\"url\\\"\\n\\t\\t\\t\\tname=\\\"redirectUri\\\"\\n\\t\\t\\t\\t:placeholder=\\\"t('oauth2', 'Redirection URI')\\\">\\n\\t\\t\\t<input type=\\\"submit\\\" class=\\\"button\\\" :value=\\\"t('oauth2', 'Add')\\\">\\n\\t\\t</form>\\n\\t</div>\\n</template>\\n\\n<script>\\nimport axios from '@nextcloud/axios'\\nimport OAuthItem from './components/OAuthItem'\\nimport { generateUrl } from '@nextcloud/router'\\n\\nexport default {\\n\\tname: 'App',\\n\\tcomponents: {\\n\\t\\tOAuthItem,\\n\\t},\\n\\tprops: {\\n\\t\\tclients: {\\n\\t\\t\\ttype: Array,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t},\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tnewClient: {\\n\\t\\t\\t\\tname: '',\\n\\t\\t\\t\\tredirectUri: '',\\n\\t\\t\\t\\terrorMsg: '',\\n\\t\\t\\t\\terror: false,\\n\\t\\t\\t},\\n\\t\\t}\\n\\t},\\n\\tmethods: {\\n\\t\\tdeleteClient(id) {\\n\\t\\t\\taxios.delete(generateUrl('apps/oauth2/clients/{id}', { id }))\\n\\t\\t\\t\\t.then((response) => {\\n\\t\\t\\t\\t\\t// eslint-disable-next-line vue/no-mutating-props\\n\\t\\t\\t\\t\\tthis.clients = this.clients.filter(client => client.id !== id)\\n\\t\\t\\t\\t})\\n\\t\\t},\\n\\t\\taddClient() {\\n\\t\\t\\tthis.newClient.error = false\\n\\n\\t\\t\\taxios.post(\\n\\t\\t\\t\\tgenerateUrl('apps/oauth2/clients'),\\n\\t\\t\\t\\t{\\n\\t\\t\\t\\t\\tname: this.newClient.name,\\n\\t\\t\\t\\t\\tredirectUri: this.newClient.redirectUri,\\n\\t\\t\\t\\t}\\n\\t\\t\\t).then(response => {\\n\\t\\t\\t\\t// eslint-disable-next-line vue/no-mutating-props\\n\\t\\t\\t\\tthis.clients.push(response.data)\\n\\n\\t\\t\\t\\tthis.newClient.name = ''\\n\\t\\t\\t\\tthis.newClient.redirectUri = ''\\n\\t\\t\\t}).catch(reason => {\\n\\t\\t\\t\\tthis.newClient.error = true\\n\\t\\t\\t\\tthis.newClient.errorMsg = reason.response.data.message\\n\\t\\t\\t})\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n<style scoped>\\n\\ttable {\\n\\t\\tmax-width: 800px;\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"\\n.icon-toggle[data-v-665ff3f1],\\n.icon-delete[data-v-665ff3f1] {\\n\\tdisplay: inline-block;\\n\\twidth: 16px;\\n\\theight: 16px;\\n\\tpadding: 10px;\\n\\tvertical-align: middle;\\n}\\ntd code[data-v-665ff3f1] {\\n\\tdisplay: inline-block;\\n\\tvertical-align: middle;\\n}\\ntable.inline td[data-v-665ff3f1] {\\n\\tborder: none;\\n\\tpadding: 5px;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/oauth2/src/components/OAuthItem.vue\"],\"names\":[],\"mappings\":\";AAsFA;;CAEA,qBAAA;CACA,WAAA;CACA,YAAA;CACA,aAAA;CACA,sBAAA;AACA;AACA;CACA,qBAAA;CACA,sBAAA;AACA;AACA;CACA,YAAA;CACA,YAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright Copyright (c) 2018 Roeland Jago Douma <roeland@famdouma.nl>\\n -\\n - @author Roeland Jago Douma <roeland@famdouma.nl>\\n -\\n - @license GNU AGPL version 3 or any later version\\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 -->\\n<template>\\n\\t<tr>\\n\\t\\t<td>\\n\\t\\t\\t<table class=\\\"inline\\\">\\n\\t\\t\\t\\t<tr>\\n\\t\\t\\t\\t\\t<td>{{ t('oauth2', 'Name') }}</td>\\n\\t\\t\\t\\t\\t<td>{{ name }}</td>\\n\\t\\t\\t\\t</tr>\\n\\t\\t\\t\\t<tr>\\n\\t\\t\\t\\t\\t<td>{{ t('oauth2', 'Redirection URI') }}</td>\\n\\t\\t\\t\\t\\t<td>{{ redirectUri }}</td>\\n\\t\\t\\t\\t</tr>\\n\\t\\t\\t\\t<tr>\\n\\t\\t\\t\\t\\t<td>{{ t('oauth2', 'Client Identifier') }}</td>\\n\\t\\t\\t\\t\\t<td><code>{{ clientId }}</code></td>\\n\\t\\t\\t\\t</tr>\\n\\t\\t\\t\\t<tr>\\n\\t\\t\\t\\t\\t<td>{{ t('oauth2', 'Secret') }}</td>\\n\\t\\t\\t\\t\\t<td><code>{{ renderedSecret }}</code><a class=\\\"icon-toggle has-tooltip\\\" :title=\\\"t('oauth2', 'Show client secret')\\\" @click=\\\"toggleSecret\\\" /></td>\\n\\t\\t\\t\\t</tr>\\n\\t\\t\\t</table>\\n\\t\\t</td>\\n\\t\\t<td class=\\\"action-column\\\">\\n\\t\\t\\t<span><a class=\\\"icon-delete has-tooltip\\\" :title=\\\"t('oauth2', 'Delete')\\\" @click=\\\"$emit('delete', id)\\\" /></span>\\n\\t\\t</td>\\n\\t</tr>\\n</template>\\n\\n<script>\\nexport default {\\n\\tname: 'OAuthItem',\\n\\tprops: {\\n\\t\\tclient: {\\n\\t\\t\\ttype: Object,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t},\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tid: this.client.id,\\n\\t\\t\\tname: this.client.name,\\n\\t\\t\\tredirectUri: this.client.redirectUri,\\n\\t\\t\\tclientId: this.client.clientId,\\n\\t\\t\\tclientSecret: this.client.clientSecret,\\n\\t\\t\\trenderSecret: false,\\n\\t\\t}\\n\\t},\\n\\tcomputed: {\\n\\t\\trenderedSecret() {\\n\\t\\t\\tif (this.renderSecret) {\\n\\t\\t\\t\\treturn this.clientSecret\\n\\t\\t\\t} else {\\n\\t\\t\\t\\treturn '****'\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n\\tmethods: {\\n\\t\\ttoggleSecret() {\\n\\t\\t\\tthis.renderSecret = !this.renderSecret\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style scoped>\\n\\t.icon-toggle,\\n\\t.icon-delete {\\n\\t\\tdisplay: inline-block;\\n\\t\\twidth: 16px;\\n\\t\\theight: 16px;\\n\\t\\tpadding: 10px;\\n\\t\\tvertical-align: middle;\\n\\t}\\n\\ttd code {\\n\\t\\tdisplay: inline-block;\\n\\t\\tvertical-align: middle;\\n\\t}\\n\\ttable.inline td {\\n\\t\\tborder: none;\\n\\t\\tpadding: 5px;\\n\\t}\\n</style>\\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 = 5053;","__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\t5053: 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__(62411); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_c","_self","staticClass","_v","_s","t","name","redirectUri","clientId","renderedSecret","attrs","on","toggleSecret","$event","$emit","id","instanceName","OC","theme","clients","length","_m","_l","client","key","deleteClient","_e","newClient","errorMsg","preventDefault","addClient","apply","arguments","directives","rawName","value","expression","domProps","target","composing","$set","Vue","loadState","App","propsData","$mount","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","Object","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"oauth2-oauth2.js?v=7fb30c8a61ffb0b40b16","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/oauth2/src/components/OAuthItem.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/oauth2/src/components/OAuthItem.vue","webpack://nextcloud/./apps/oauth2/src/components/OAuthItem.vue?636d","webpack://nextcloud/./apps/oauth2/src/components/OAuthItem.vue?7546","webpack:///nextcloud/apps/oauth2/src/components/OAuthItem.vue?vue&type=template&id=665ff3f1&scoped=true&","webpack:///nextcloud/apps/oauth2/src/App.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/oauth2/src/App.vue","webpack://nextcloud/./apps/oauth2/src/App.vue?b0a8","webpack://nextcloud/./apps/oauth2/src/App.vue?8831","webpack:///nextcloud/apps/oauth2/src/App.vue?vue&type=template&id=7098866e&scoped=true&","webpack:///nextcloud/apps/oauth2/src/main.js","webpack:///nextcloud/apps/oauth2/src/App.vue?vue&type=style&index=0&id=7098866e&scoped=true&lang=css&","webpack:///nextcloud/apps/oauth2/src/components/OAuthItem.vue?vue&type=style&index=0&id=665ff3f1&scoped=true&lang=css&","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/runtime/nonce","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};","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OAuthItem.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!./OAuthItem.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Roeland Jago Douma <roeland@famdouma.nl>\n -\n - @author Roeland Jago Douma <roeland@famdouma.nl>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n<template>\n\t<tr>\n\t\t<td>\n\t\t\t<table class=\"inline\">\n\t\t\t\t<tr>\n\t\t\t\t\t<td>{{ t('oauth2', 'Name') }}</td>\n\t\t\t\t\t<td>{{ name }}</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>{{ t('oauth2', 'Redirection URI') }}</td>\n\t\t\t\t\t<td>{{ redirectUri }}</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>{{ t('oauth2', 'Client Identifier') }}</td>\n\t\t\t\t\t<td><code>{{ clientId }}</code></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>{{ t('oauth2', 'Secret') }}</td>\n\t\t\t\t\t<td><code>{{ renderedSecret }}</code><a class=\"icon-toggle has-tooltip\" :title=\"t('oauth2', 'Show client secret')\" @click=\"toggleSecret\" /></td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</td>\n\t\t<td class=\"action-column\">\n\t\t\t<span><a class=\"icon-delete has-tooltip\" :title=\"t('oauth2', 'Delete')\" @click=\"$emit('delete', id)\" /></span>\n\t\t</td>\n\t</tr>\n</template>\n\n<script>\nexport default {\n\tname: 'OAuthItem',\n\tprops: {\n\t\tclient: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tid: this.client.id,\n\t\t\tname: this.client.name,\n\t\t\tredirectUri: this.client.redirectUri,\n\t\t\tclientId: this.client.clientId,\n\t\t\tclientSecret: this.client.clientSecret,\n\t\t\trenderSecret: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\trenderedSecret() {\n\t\t\tif (this.renderSecret) {\n\t\t\t\treturn this.clientSecret\n\t\t\t} else {\n\t\t\t\treturn '****'\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\ttoggleSecret() {\n\t\t\tthis.renderSecret = !this.renderSecret\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\t.icon-toggle,\n\t.icon-delete {\n\t\tdisplay: inline-block;\n\t\twidth: 16px;\n\t\theight: 16px;\n\t\tpadding: 10px;\n\t\tvertical-align: middle;\n\t}\n\ttd code {\n\t\tdisplay: inline-block;\n\t\tvertical-align: middle;\n\t}\n\ttable.inline td {\n\t\tborder: none;\n\t\tpadding: 5px;\n\t}\n</style>\n","\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/vue-loader/lib/index.js??vue-loader-options!./OAuthItem.vue?vue&type=style&index=0&id=665ff3f1&scoped=true&lang=css&\";\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/vue-loader/lib/index.js??vue-loader-options!./OAuthItem.vue?vue&type=style&index=0&id=665ff3f1&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./OAuthItem.vue?vue&type=template&id=665ff3f1&scoped=true&\"\nimport script from \"./OAuthItem.vue?vue&type=script&lang=js&\"\nexport * from \"./OAuthItem.vue?vue&type=script&lang=js&\"\nimport style0 from \"./OAuthItem.vue?vue&type=style&index=0&id=665ff3f1&scoped=true&lang=css&\"\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 \"665ff3f1\",\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('tr',[_c('td',[_c('table',{staticClass:\"inline\"},[_c('tr',[_c('td',[_vm._v(_vm._s(_vm.t('oauth2', 'Name')))]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm.name))])]),_vm._v(\" \"),_c('tr',[_c('td',[_vm._v(_vm._s(_vm.t('oauth2', 'Redirection URI')))]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm.redirectUri))])]),_vm._v(\" \"),_c('tr',[_c('td',[_vm._v(_vm._s(_vm.t('oauth2', 'Client Identifier')))]),_vm._v(\" \"),_c('td',[_c('code',[_vm._v(_vm._s(_vm.clientId))])])]),_vm._v(\" \"),_c('tr',[_c('td',[_vm._v(_vm._s(_vm.t('oauth2', 'Secret')))]),_vm._v(\" \"),_c('td',[_c('code',[_vm._v(_vm._s(_vm.renderedSecret))]),_c('a',{staticClass:\"icon-toggle has-tooltip\",attrs:{\"title\":_vm.t('oauth2', 'Show client secret')},on:{\"click\":_vm.toggleSecret}})])])])]),_vm._v(\" \"),_c('td',{staticClass:\"action-column\"},[_c('span',[_c('a',{staticClass:\"icon-delete has-tooltip\",attrs:{\"title\":_vm.t('oauth2', 'Delete')},on:{\"click\":function($event){return _vm.$emit('delete', _vm.id)}}})])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.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!./App.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 Roeland Jago Douma <roeland@famdouma.nl>\n -\n - @author Roeland Jago Douma <roeland@famdouma.nl>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n<template>\n\t<div id=\"oauth2\" class=\"section\">\n\t\t<h2>{{ t('oauth2', 'OAuth 2.0 clients') }}</h2>\n\t\t<p class=\"settings-hint\">\n\t\t\t{{ t('oauth2', 'OAuth 2.0 allows external services to request access to {instanceName}.', { instanceName: OC.theme.name}) }}\n\t\t</p>\n\t\t<table v-if=\"clients.length > 0\" class=\"grid\">\n\t\t\t<thead>\n\t\t\t\t<tr>\n\t\t\t\t\t<th id=\"headerContent\" />\n\t\t\t\t\t<th id=\"headerRemove\">\n&nbsp;\n\t\t\t\t\t</th>\n\t\t\t\t</tr>\n\t\t\t</thead>\n\t\t\t<tbody>\n\t\t\t\t<OAuthItem v-for=\"client in clients\"\n\t\t\t\t\t:key=\"client.id\"\n\t\t\t\t\t:client=\"client\"\n\t\t\t\t\t@delete=\"deleteClient\" />\n\t\t\t</tbody>\n\t\t</table>\n\n\t\t<br>\n\t\t<h3>{{ t('oauth2', 'Add client') }}</h3>\n\t\t<span v-if=\"newClient.error\" class=\"msg error\">{{ newClient.errorMsg }}</span>\n\t\t<form @submit.prevent=\"addClient\">\n\t\t\t<input id=\"name\"\n\t\t\t\tv-model=\"newClient.name\"\n\t\t\t\ttype=\"text\"\n\t\t\t\tname=\"name\"\n\t\t\t\t:placeholder=\"t('oauth2', 'Name')\">\n\t\t\t<input id=\"redirectUri\"\n\t\t\t\tv-model=\"newClient.redirectUri\"\n\t\t\t\ttype=\"url\"\n\t\t\t\tname=\"redirectUri\"\n\t\t\t\t:placeholder=\"t('oauth2', 'Redirection URI')\">\n\t\t\t<input type=\"submit\" class=\"button\" :value=\"t('oauth2', 'Add')\">\n\t\t</form>\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport OAuthItem from './components/OAuthItem'\nimport { generateUrl } from '@nextcloud/router'\n\nexport default {\n\tname: 'App',\n\tcomponents: {\n\t\tOAuthItem,\n\t},\n\tprops: {\n\t\tclients: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tnewClient: {\n\t\t\t\tname: '',\n\t\t\t\tredirectUri: '',\n\t\t\t\terrorMsg: '',\n\t\t\t\terror: false,\n\t\t\t},\n\t\t}\n\t},\n\tmethods: {\n\t\tdeleteClient(id) {\n\t\t\taxios.delete(generateUrl('apps/oauth2/clients/{id}', { id }))\n\t\t\t\t.then((response) => {\n\t\t\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\t\t\tthis.clients = this.clients.filter(client => client.id !== id)\n\t\t\t\t})\n\t\t},\n\t\taddClient() {\n\t\t\tthis.newClient.error = false\n\n\t\t\taxios.post(\n\t\t\t\tgenerateUrl('apps/oauth2/clients'),\n\t\t\t\t{\n\t\t\t\t\tname: this.newClient.name,\n\t\t\t\t\tredirectUri: this.newClient.redirectUri,\n\t\t\t\t}\n\t\t\t).then(response => {\n\t\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\t\tthis.clients.push(response.data)\n\n\t\t\t\tthis.newClient.name = ''\n\t\t\t\tthis.newClient.redirectUri = ''\n\t\t\t}).catch(reason => {\n\t\t\t\tthis.newClient.error = true\n\t\t\t\tthis.newClient.errorMsg = reason.response.data.message\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n<style scoped>\n\ttable {\n\t\tmax-width: 800px;\n\t}\n</style>\n","\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/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=7098866e&scoped=true&lang=css&\";\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/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=7098866e&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=7098866e&scoped=true&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=7098866e&scoped=true&lang=css&\"\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 \"7098866e\",\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\",attrs:{\"id\":\"oauth2\"}},[_c('h2',[_vm._v(_vm._s(_vm.t('oauth2', 'OAuth 2.0 clients')))]),_vm._v(\" \"),_c('p',{staticClass:\"settings-hint\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('oauth2', 'OAuth 2.0 allows external services to request access to {instanceName}.', { instanceName: _vm.OC.theme.name}))+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.clients.length > 0)?_c('table',{staticClass:\"grid\"},[_vm._m(0),_vm._v(\" \"),_c('tbody',_vm._l((_vm.clients),function(client){return _c('OAuthItem',{key:client.id,attrs:{\"client\":client},on:{\"delete\":_vm.deleteClient}})}),1)]):_vm._e(),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('h3',[_vm._v(_vm._s(_vm.t('oauth2', 'Add client')))]),_vm._v(\" \"),(_vm.newClient.error)?_c('span',{staticClass:\"msg error\"},[_vm._v(_vm._s(_vm.newClient.errorMsg))]):_vm._e(),_vm._v(\" \"),_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.addClient.apply(null, arguments)}}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newClient.name),expression:\"newClient.name\"}],attrs:{\"id\":\"name\",\"type\":\"text\",\"name\":\"name\",\"placeholder\":_vm.t('oauth2', 'Name')},domProps:{\"value\":(_vm.newClient.name)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.newClient, \"name\", $event.target.value)}}}),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newClient.redirectUri),expression:\"newClient.redirectUri\"}],attrs:{\"id\":\"redirectUri\",\"type\":\"url\",\"name\":\"redirectUri\",\"placeholder\":_vm.t('oauth2', 'Redirection URI')},domProps:{\"value\":(_vm.newClient.redirectUri)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.newClient, \"redirectUri\", $event.target.value)}}}),_vm._v(\" \"),_c('input',{staticClass:\"button\",attrs:{\"type\":\"submit\"},domProps:{\"value\":_vm.t('oauth2', 'Add')}})])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('thead',[_c('tr',[_c('th',{attrs:{\"id\":\"headerContent\"}}),_vm._v(\" \"),_c('th',{attrs:{\"id\":\"headerRemove\"}},[_vm._v(\"\\n \\n\\t\\t\\t\\t\\t\")])])])}]\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2018 Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport Vue from 'vue'\nimport App from './App.vue'\nimport { loadState } from '@nextcloud/initial-state'\n\nVue.prototype.t = t\nVue.prototype.OC = OC\n\nconst clients = loadState('oauth2', 'clients')\n\nconst View = Vue.extend(App)\nconst oauth = new View({\n\tpropsData: {\n\t\tclients,\n\t},\n})\noauth.$mount('#oauth2')\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, \"\\ntable[data-v-7098866e] {\\n\\tmax-width: 800px;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/oauth2/src/App.vue\"],\"names\":[],\"mappings\":\";AAyHA;CACA,gBAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright Copyright (c) 2018 Roeland Jago Douma <roeland@famdouma.nl>\\n -\\n - @author Roeland Jago Douma <roeland@famdouma.nl>\\n -\\n - @license GNU AGPL version 3 or any later version\\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 -->\\n<template>\\n\\t<div id=\\\"oauth2\\\" class=\\\"section\\\">\\n\\t\\t<h2>{{ t('oauth2', 'OAuth 2.0 clients') }}</h2>\\n\\t\\t<p class=\\\"settings-hint\\\">\\n\\t\\t\\t{{ t('oauth2', 'OAuth 2.0 allows external services to request access to {instanceName}.', { instanceName: OC.theme.name}) }}\\n\\t\\t</p>\\n\\t\\t<table v-if=\\\"clients.length > 0\\\" class=\\\"grid\\\">\\n\\t\\t\\t<thead>\\n\\t\\t\\t\\t<tr>\\n\\t\\t\\t\\t\\t<th id=\\\"headerContent\\\" />\\n\\t\\t\\t\\t\\t<th id=\\\"headerRemove\\\">\\n&nbsp;\\n\\t\\t\\t\\t\\t</th>\\n\\t\\t\\t\\t</tr>\\n\\t\\t\\t</thead>\\n\\t\\t\\t<tbody>\\n\\t\\t\\t\\t<OAuthItem v-for=\\\"client in clients\\\"\\n\\t\\t\\t\\t\\t:key=\\\"client.id\\\"\\n\\t\\t\\t\\t\\t:client=\\\"client\\\"\\n\\t\\t\\t\\t\\t@delete=\\\"deleteClient\\\" />\\n\\t\\t\\t</tbody>\\n\\t\\t</table>\\n\\n\\t\\t<br>\\n\\t\\t<h3>{{ t('oauth2', 'Add client') }}</h3>\\n\\t\\t<span v-if=\\\"newClient.error\\\" class=\\\"msg error\\\">{{ newClient.errorMsg }}</span>\\n\\t\\t<form @submit.prevent=\\\"addClient\\\">\\n\\t\\t\\t<input id=\\\"name\\\"\\n\\t\\t\\t\\tv-model=\\\"newClient.name\\\"\\n\\t\\t\\t\\ttype=\\\"text\\\"\\n\\t\\t\\t\\tname=\\\"name\\\"\\n\\t\\t\\t\\t:placeholder=\\\"t('oauth2', 'Name')\\\">\\n\\t\\t\\t<input id=\\\"redirectUri\\\"\\n\\t\\t\\t\\tv-model=\\\"newClient.redirectUri\\\"\\n\\t\\t\\t\\ttype=\\\"url\\\"\\n\\t\\t\\t\\tname=\\\"redirectUri\\\"\\n\\t\\t\\t\\t:placeholder=\\\"t('oauth2', 'Redirection URI')\\\">\\n\\t\\t\\t<input type=\\\"submit\\\" class=\\\"button\\\" :value=\\\"t('oauth2', 'Add')\\\">\\n\\t\\t</form>\\n\\t</div>\\n</template>\\n\\n<script>\\nimport axios from '@nextcloud/axios'\\nimport OAuthItem from './components/OAuthItem'\\nimport { generateUrl } from '@nextcloud/router'\\n\\nexport default {\\n\\tname: 'App',\\n\\tcomponents: {\\n\\t\\tOAuthItem,\\n\\t},\\n\\tprops: {\\n\\t\\tclients: {\\n\\t\\t\\ttype: Array,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t},\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tnewClient: {\\n\\t\\t\\t\\tname: '',\\n\\t\\t\\t\\tredirectUri: '',\\n\\t\\t\\t\\terrorMsg: '',\\n\\t\\t\\t\\terror: false,\\n\\t\\t\\t},\\n\\t\\t}\\n\\t},\\n\\tmethods: {\\n\\t\\tdeleteClient(id) {\\n\\t\\t\\taxios.delete(generateUrl('apps/oauth2/clients/{id}', { id }))\\n\\t\\t\\t\\t.then((response) => {\\n\\t\\t\\t\\t\\t// eslint-disable-next-line vue/no-mutating-props\\n\\t\\t\\t\\t\\tthis.clients = this.clients.filter(client => client.id !== id)\\n\\t\\t\\t\\t})\\n\\t\\t},\\n\\t\\taddClient() {\\n\\t\\t\\tthis.newClient.error = false\\n\\n\\t\\t\\taxios.post(\\n\\t\\t\\t\\tgenerateUrl('apps/oauth2/clients'),\\n\\t\\t\\t\\t{\\n\\t\\t\\t\\t\\tname: this.newClient.name,\\n\\t\\t\\t\\t\\tredirectUri: this.newClient.redirectUri,\\n\\t\\t\\t\\t}\\n\\t\\t\\t).then(response => {\\n\\t\\t\\t\\t// eslint-disable-next-line vue/no-mutating-props\\n\\t\\t\\t\\tthis.clients.push(response.data)\\n\\n\\t\\t\\t\\tthis.newClient.name = ''\\n\\t\\t\\t\\tthis.newClient.redirectUri = ''\\n\\t\\t\\t}).catch(reason => {\\n\\t\\t\\t\\tthis.newClient.error = true\\n\\t\\t\\t\\tthis.newClient.errorMsg = reason.response.data.message\\n\\t\\t\\t})\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n<style scoped>\\n\\ttable {\\n\\t\\tmax-width: 800px;\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"\\n.icon-toggle[data-v-665ff3f1],\\n.icon-delete[data-v-665ff3f1] {\\n\\tdisplay: inline-block;\\n\\twidth: 16px;\\n\\theight: 16px;\\n\\tpadding: 10px;\\n\\tvertical-align: middle;\\n}\\ntd code[data-v-665ff3f1] {\\n\\tdisplay: inline-block;\\n\\tvertical-align: middle;\\n}\\ntable.inline td[data-v-665ff3f1] {\\n\\tborder: none;\\n\\tpadding: 5px;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/oauth2/src/components/OAuthItem.vue\"],\"names\":[],\"mappings\":\";AAsFA;;CAEA,qBAAA;CACA,WAAA;CACA,YAAA;CACA,aAAA;CACA,sBAAA;AACA;AACA;CACA,qBAAA;CACA,sBAAA;AACA;AACA;CACA,YAAA;CACA,YAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright Copyright (c) 2018 Roeland Jago Douma <roeland@famdouma.nl>\\n -\\n - @author Roeland Jago Douma <roeland@famdouma.nl>\\n -\\n - @license GNU AGPL version 3 or any later version\\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 -->\\n<template>\\n\\t<tr>\\n\\t\\t<td>\\n\\t\\t\\t<table class=\\\"inline\\\">\\n\\t\\t\\t\\t<tr>\\n\\t\\t\\t\\t\\t<td>{{ t('oauth2', 'Name') }}</td>\\n\\t\\t\\t\\t\\t<td>{{ name }}</td>\\n\\t\\t\\t\\t</tr>\\n\\t\\t\\t\\t<tr>\\n\\t\\t\\t\\t\\t<td>{{ t('oauth2', 'Redirection URI') }}</td>\\n\\t\\t\\t\\t\\t<td>{{ redirectUri }}</td>\\n\\t\\t\\t\\t</tr>\\n\\t\\t\\t\\t<tr>\\n\\t\\t\\t\\t\\t<td>{{ t('oauth2', 'Client Identifier') }}</td>\\n\\t\\t\\t\\t\\t<td><code>{{ clientId }}</code></td>\\n\\t\\t\\t\\t</tr>\\n\\t\\t\\t\\t<tr>\\n\\t\\t\\t\\t\\t<td>{{ t('oauth2', 'Secret') }}</td>\\n\\t\\t\\t\\t\\t<td><code>{{ renderedSecret }}</code><a class=\\\"icon-toggle has-tooltip\\\" :title=\\\"t('oauth2', 'Show client secret')\\\" @click=\\\"toggleSecret\\\" /></td>\\n\\t\\t\\t\\t</tr>\\n\\t\\t\\t</table>\\n\\t\\t</td>\\n\\t\\t<td class=\\\"action-column\\\">\\n\\t\\t\\t<span><a class=\\\"icon-delete has-tooltip\\\" :title=\\\"t('oauth2', 'Delete')\\\" @click=\\\"$emit('delete', id)\\\" /></span>\\n\\t\\t</td>\\n\\t</tr>\\n</template>\\n\\n<script>\\nexport default {\\n\\tname: 'OAuthItem',\\n\\tprops: {\\n\\t\\tclient: {\\n\\t\\t\\ttype: Object,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t},\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tid: this.client.id,\\n\\t\\t\\tname: this.client.name,\\n\\t\\t\\tredirectUri: this.client.redirectUri,\\n\\t\\t\\tclientId: this.client.clientId,\\n\\t\\t\\tclientSecret: this.client.clientSecret,\\n\\t\\t\\trenderSecret: false,\\n\\t\\t}\\n\\t},\\n\\tcomputed: {\\n\\t\\trenderedSecret() {\\n\\t\\t\\tif (this.renderSecret) {\\n\\t\\t\\t\\treturn this.clientSecret\\n\\t\\t\\t} else {\\n\\t\\t\\t\\treturn '****'\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n\\tmethods: {\\n\\t\\ttoggleSecret() {\\n\\t\\t\\tthis.renderSecret = !this.renderSecret\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style scoped>\\n\\t.icon-toggle,\\n\\t.icon-delete {\\n\\t\\tdisplay: inline-block;\\n\\t\\twidth: 16px;\\n\\t\\theight: 16px;\\n\\t\\tpadding: 10px;\\n\\t\\tvertical-align: middle;\\n\\t}\\n\\ttd code {\\n\\t\\tdisplay: inline-block;\\n\\t\\tvertical-align: middle;\\n\\t}\\n\\ttable.inline td {\\n\\t\\tborder: none;\\n\\t\\tpadding: 5px;\\n\\t}\\n</style>\\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 = 5053;","__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\t5053: 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));","__webpack_require__.nc = undefined;","// 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__(62411); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_c","_self","staticClass","_v","_s","t","name","redirectUri","clientId","renderedSecret","attrs","on","toggleSecret","$event","$emit","id","instanceName","OC","theme","clients","length","_m","_l","client","key","deleteClient","_e","newClient","errorMsg","preventDefault","addClient","apply","arguments","directives","rawName","value","expression","domProps","target","composing","$set","Vue","loadState","App","propsData","$mount","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","Object","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/settings-apps.js b/dist/settings-apps.js
index dae66375d99..964d5ac46e6 100644
--- a/dist/settings-apps.js
+++ b/dist/settings-apps.js
@@ -1,2 +1,2 @@
-!function(){"use strict";var t,e={49983:function(t,e,n){var i=n(4820),r=n(79753);window.OC.Settings=window.OC.Settings||{},window.OC.Settings.Apps=window.OC.Settings.Apps||{rebuildNavigation:function(){return i.default.get((0,r.generateOcsUrl)("core/navigation",2)+"/apps?format=json").then((function(t){var e=t.data;if(200===e.ocs.meta.statuscode){var n={},i=e.ocs.data,r=document.querySelector("#navigation #apps ul");i.forEach((function(t){r.querySelector('li[data-id="'+t.id+'"]')||(n[t.id]=!0)})),r.querySelectorAll("li[data-id]").forEach((function(t,e){var n=t.dataset.id;(!i[e]||i[e]&&i[e].id!==n)&&(t.remove(),document.querySelector("#appmenu li[data-id=".concat(n,"]")).remove())}));var a={};i.forEach((function(t){if(null===r.querySelector('li[data-id="'.concat(t.id,'"]'))){var e=document.createElement("li");e.dataset.id=t.id;var i='<svg width="20" height="20" viewBox="0 0 20 20" alt="">\n\t\t\t\t\t <defs>\n\t\t\t\t\t <filter id="invertMenuMore-'.concat(t.id,'"><feColorMatrix in="SourceGraphic" type="matrix" values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0"></feColorMatrix></filter>\n\t\t\t\t\t <mask id="hole">\n\t\t\t\t\t <rect width="100%" height="100%" fill="white"></rect>\n\t\t\t\t\t\t<circle r="4.5" cx="17" cy="3" fill="black"></circle>\n\t\t\t\t\t </mask>\n\t\t\t\t\t </defs>\n\t\t\t\t\t <image x="0" y="0" width="16" height="16" filter="url(#invertMenuMore-').concat(t.id,')" preserveAspectRatio="xMinYMin meet" xlink:href="').concat(t.icon,'" class="app-icon" />\n\t\t\t\t\t</svg>'),o=document.createElement("template");o.innerHTML=i;var c=document.createElement("a");c.setAttribute("href",t.href);var d=document.createElement("span");d.appendChild(document.createTextNode(t.name));var l=document.createElement("div");l.setAttribute("class","unread-counter"),l.style.display="none",n[t.id]&&c.classList.add("animated"),c.prepend(o.content.firstChild,l,d),e.append(c);var u=document.querySelector("#navigation li[data-id=".concat(a.id,"]"));u?u.insertAdjacentElement("afterend",e):document.querySelector("#navigation #apps ul").prepend(e)}if(null===document.getElementById("appmenu").querySelector('li[data-id="'.concat(t.id,'"]'))){var s,f=document.createElement("li");f.dataset.id=t.id,s=OCA.Theming&&OCA.Theming.inverted?'<svg width="20" height="20" viewBox="0 0 20 20" alt="">\n\t\t\t\t\t\t <defs>\n\t\t\t\t\t\t <filter id="invert"><feColorMatrix in="SourceGraphic" type="matrix" values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0" /></filter>\n\t\t\t\t\t\t </defs>\n\t\t\t\t\t\t <image x="0" y="0" width="20" height="20" preserveAspectRatio="xMinYMin meet" filter="url(#invert)" xlink:href="'.concat(t.icon,'" class="app-icon" />\n\t\t\t\t\t\t</svg>'):'<svg width="20" height="20" viewBox="0 0 20 20" alt="">\n\t\t\t\t\t\t <image x="0" y="0" width="20" height="20" preserveAspectRatio="xMinYMin meet" xlink:href="'.concat(t.icon,'" class="app-icon" />\n\t\t\t\t\t\t</svg>');var p=document.createElement("template");p.innerHTML=s;var m=document.createElement("a");m.setAttribute("href",t.href);var v=document.createElement("span");v.appendChild(document.createTextNode(t.name));var h=document.createElement("div");h.setAttribute("class","icon-loading-dark"),h.style.display="none",n[t.id]&&m.classList.add("animated"),m.prepend(h,v,p.content.firstChild),f.append(m);var g=document.querySelector("#appmenu li[data-id="+a.id+"]");g?g.insertAdjacentElement("afterend",f):document.queryElementById("appmenu").prepend(f)}a=t})),window.dispatchEvent(new Event("resize"))}}))}}}},n={};function i(t){var r=n[t];if(void 0!==r)return r.exports;var a=n[t]={id:t,loaded:!1,exports:{}};return e[t].call(a.exports,a,a.exports,i),a.loaded=!0,a.exports}i.m=e,i.amdD=function(){throw new Error("define cannot be used indirect")},i.amdO={},t=[],i.O=function(e,n,r,a){if(!n){var o=1/0;for(u=0;u<t.length;u++){n=t[u][0],r=t[u][1],a=t[u][2];for(var c=!0,d=0;d<n.length;d++)(!1&a||o>=a)&&Object.keys(i.O).every((function(t){return i.O[t](n[d])}))?n.splice(d--,1):(c=!1,a<o&&(o=a));if(c){t.splice(u--,1);var l=r();void 0!==l&&(e=l)}}return e}a=a||0;for(var u=t.length;u>0&&t[u-1][2]>a;u--)t[u]=t[u-1];t[u]=[n,r,a]},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,{a:e}),e},i.d=function(t,e){for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},i.j=1647,function(){i.b=document.baseURI||self.location.href;var t={1647:0};i.O.j=function(e){return 0===t[e]};var e=function(e,n){var r,a,o=n[0],c=n[1],d=n[2],l=0;if(o.some((function(e){return 0!==t[e]}))){for(r in c)i.o(c,r)&&(i.m[r]=c[r]);if(d)var u=d(i)}for(e&&e(n);l<o.length;l++)a=o[l],i.o(t,a)&&t[a]&&t[a][0](),t[a]=0;return i.O(u)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))}();var r=i.O(void 0,[7874],(function(){return i(49983)}));r=i.O(r)}();
-//# sourceMappingURL=settings-apps.js.map?v=707d427ce8cb96a7aded \ No newline at end of file
+!function(){"use strict";var t,e={49983:function(t,e,n){var i=n(4820),r=n(79753);window.OC.Settings=window.OC.Settings||{},window.OC.Settings.Apps=window.OC.Settings.Apps||{rebuildNavigation:function(){return i.default.get((0,r.generateOcsUrl)("core/navigation",2)+"/apps?format=json").then((function(t){var e=t.data;if(200===e.ocs.meta.statuscode){var n={},i=e.ocs.data,r=document.querySelector("#navigation #apps ul");i.forEach((function(t){r.querySelector('li[data-id="'+t.id+'"]')||(n[t.id]=!0)})),r.querySelectorAll("li[data-id]").forEach((function(t,e){var n=t.dataset.id;(!i[e]||i[e]&&i[e].id!==n)&&(t.remove(),document.querySelector("#appmenu li[data-id=".concat(n,"]")).remove())}));var a={};i.forEach((function(t){if(null===r.querySelector('li[data-id="'.concat(t.id,'"]'))){var e=document.createElement("li");e.dataset.id=t.id;var i='<svg width="20" height="20" viewBox="0 0 20 20" alt="">\n\t\t\t\t\t <defs>\n\t\t\t\t\t <filter id="invertMenuMore-'.concat(t.id,'"><feColorMatrix in="SourceGraphic" type="matrix" values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0"></feColorMatrix></filter>\n\t\t\t\t\t <mask id="hole">\n\t\t\t\t\t <rect width="100%" height="100%" fill="white"></rect>\n\t\t\t\t\t\t<circle r="4.5" cx="17" cy="3" fill="black"></circle>\n\t\t\t\t\t </mask>\n\t\t\t\t\t </defs>\n\t\t\t\t\t <image x="0" y="0" width="16" height="16" filter="url(#invertMenuMore-').concat(t.id,')" preserveAspectRatio="xMinYMin meet" xlink:href="').concat(t.icon,'" class="app-icon" />\n\t\t\t\t\t</svg>'),o=document.createElement("template");o.innerHTML=i;var c=document.createElement("a");c.setAttribute("href",t.href);var d=document.createElement("span");d.appendChild(document.createTextNode(t.name));var l=document.createElement("div");l.setAttribute("class","unread-counter"),l.style.display="none",n[t.id]&&c.classList.add("animated"),c.prepend(o.content.firstChild,l,d),e.append(c);var u=document.querySelector("#navigation li[data-id=".concat(a.id,"]"));u?u.insertAdjacentElement("afterend",e):document.querySelector("#navigation #apps ul").prepend(e)}if(null===document.getElementById("appmenu").querySelector('li[data-id="'.concat(t.id,'"]'))){var s,f=document.createElement("li");f.dataset.id=t.id,s=OCA.Theming&&OCA.Theming.inverted?'<svg width="20" height="20" viewBox="0 0 20 20" alt="">\n\t\t\t\t\t\t <defs>\n\t\t\t\t\t\t <filter id="invert"><feColorMatrix in="SourceGraphic" type="matrix" values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0" /></filter>\n\t\t\t\t\t\t </defs>\n\t\t\t\t\t\t <image x="0" y="0" width="20" height="20" preserveAspectRatio="xMinYMin meet" filter="url(#invert)" xlink:href="'.concat(t.icon,'" class="app-icon" />\n\t\t\t\t\t\t</svg>'):'<svg width="20" height="20" viewBox="0 0 20 20" alt="">\n\t\t\t\t\t\t <image x="0" y="0" width="20" height="20" preserveAspectRatio="xMinYMin meet" xlink:href="'.concat(t.icon,'" class="app-icon" />\n\t\t\t\t\t\t</svg>');var p=document.createElement("template");p.innerHTML=s;var m=document.createElement("a");m.setAttribute("href",t.href);var v=document.createElement("span");v.appendChild(document.createTextNode(t.name));var h=document.createElement("div");h.setAttribute("class","icon-loading-dark"),h.style.display="none",n[t.id]&&m.classList.add("animated"),m.prepend(h,v,p.content.firstChild),f.append(m);var g=document.querySelector("#appmenu li[data-id="+a.id+"]");g?g.insertAdjacentElement("afterend",f):document.queryElementById("appmenu").prepend(f)}a=t})),window.dispatchEvent(new Event("resize"))}}))}}}},n={};function i(t){var r=n[t];if(void 0!==r)return r.exports;var a=n[t]={id:t,loaded:!1,exports:{}};return e[t].call(a.exports,a,a.exports,i),a.loaded=!0,a.exports}i.m=e,i.amdD=function(){throw new Error("define cannot be used indirect")},i.amdO={},t=[],i.O=function(e,n,r,a){if(!n){var o=1/0;for(u=0;u<t.length;u++){n=t[u][0],r=t[u][1],a=t[u][2];for(var c=!0,d=0;d<n.length;d++)(!1&a||o>=a)&&Object.keys(i.O).every((function(t){return i.O[t](n[d])}))?n.splice(d--,1):(c=!1,a<o&&(o=a));if(c){t.splice(u--,1);var l=r();void 0!==l&&(e=l)}}return e}a=a||0;for(var u=t.length;u>0&&t[u-1][2]>a;u--)t[u]=t[u-1];t[u]=[n,r,a]},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,{a:e}),e},i.d=function(t,e){for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},i.j=1647,function(){i.b=document.baseURI||self.location.href;var t={1647:0};i.O.j=function(e){return 0===t[e]};var e=function(e,n){var r,a,o=n[0],c=n[1],d=n[2],l=0;if(o.some((function(e){return 0!==t[e]}))){for(r in c)i.o(c,r)&&(i.m[r]=c[r]);if(d)var u=d(i)}for(e&&e(n);l<o.length;l++)a=o[l],i.o(t,a)&&t[a]&&t[a][0](),t[a]=0;return i.O(u)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))}(),i.nc=void 0;var r=i.O(void 0,[7874],(function(){return i(49983)}));r=i.O(r)}();
+//# sourceMappingURL=settings-apps.js.map?v=1372ca632edeca3c473f \ No newline at end of file
diff --git a/dist/settings-apps.js.map b/dist/settings-apps.js.map
index b5e13a00aeb..0b65068a156 100644
--- a/dist/settings-apps.js.map
+++ b/dist/settings-apps.js.map
@@ -1 +1 @@
-{"version":3,"file":"settings-apps.js?v=707d427ce8cb96a7aded","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/settings/src/apps.js","webpack:///nextcloud/apps/settings/src/service/rebuild-navigation.js","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};","import rebuildNavigation from './service/rebuild-navigation.js'\n\nwindow.OC.Settings = window.OC.Settings || {}\nwindow.OC.Settings.Apps = window.OC.Settings.Apps || {\n\trebuildNavigation\n}\n","import axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nexport default () => {\n\treturn axios.get(generateOcsUrl('core/navigation', 2) + '/apps?format=json')\n\t\t.then(({ data }) => {\n\t\t\tif (data.ocs.meta.statuscode !== 200) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst addedApps = {}\n\t\t\tconst navEntries = data.ocs.data\n\t\t\tconst container = document.querySelector('#navigation #apps ul')\n\n\t\t\t// remove disabled apps\n\t\t\tnavEntries.forEach((entry) => {\n\t\t\t\tif (!container.querySelector('li[data-id=\"' + entry.id + '\"]')) {\n\t\t\t\t\taddedApps[entry.id] = true\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tcontainer.querySelectorAll('li[data-id]').forEach((el, index) => {\n\t\t\t\tconst id = el.dataset.id\n\t\t\t\t// remove all apps that are not in the correct order\n\t\t\t\tif (!navEntries[index] || (navEntries[index] && navEntries[index].id !== id)) {\n\t\t\t\t\tel.remove()\n\t\t\t\t\tdocument.querySelector(`#appmenu li[data-id=${id}]`).remove()\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tlet previousEntry = {}\n\t\t\t// add enabled apps to #navigation and #appmenu\n\t\t\tnavEntries.forEach((entry) => {\n\t\t\t\tif (container.querySelector(`li[data-id=\"${entry.id}\"]`) === null) {\n\t\t\t\t\tconst li = document.createElement('li')\n\t\t\t\t\tli.dataset.id = entry.id\n\t\t\t\t\tconst img = `<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" alt=\"\">\n\t\t\t\t\t <defs>\n\t\t\t\t\t <filter id=\"invertMenuMore-${entry.id}\"><feColorMatrix in=\"SourceGraphic\" type=\"matrix\" values=\"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0\"></feColorMatrix></filter>\n\t\t\t\t\t <mask id=\"hole\">\n\t\t\t\t\t <rect width=\"100%\" height=\"100%\" fill=\"white\"></rect>\n\t\t\t\t\t\t<circle r=\"4.5\" cx=\"17\" cy=\"3\" fill=\"black\"></circle>\n\t\t\t\t\t </mask>\n\t\t\t\t\t </defs>\n\t\t\t\t\t <image x=\"0\" y=\"0\" width=\"16\" height=\"16\" filter=\"url(#invertMenuMore-${entry.id})\" preserveAspectRatio=\"xMinYMin meet\" xlink:href=\"${entry.icon}\" class=\"app-icon\" />\n\t\t\t\t\t</svg>`\n\n\t\t\t\t\tconst imgElement = document.createElement('template')\n\t\t\t\t\timgElement.innerHTML = img\n\n\t\t\t\t\tconst a = document.createElement('a')\n\t\t\t\t\ta.setAttribute('href', entry.href)\n\n\t\t\t\t\tconst filename = document.createElement('span')\n\t\t\t\t\tfilename.appendChild(document.createTextNode(entry.name))\n\n\t\t\t\t\tconst loading = document.createElement('div')\n\t\t\t\t\tloading.setAttribute('class', 'unread-counter')\n\t\t\t\t\tloading.style.display = 'none'\n\n\t\t\t\t\t// draw attention to the newly added app entry\n\t\t\t\t\t// by flashing twice the more apps menu\n\t\t\t\t\tif (addedApps[entry.id]) {\n\t\t\t\t\t\ta.classList.add('animated')\n\t\t\t\t\t}\n\n\t\t\t\t\ta.prepend(imgElement.content.firstChild, loading, filename)\n\t\t\t\t\tli.append(a)\n\n\t\t\t\t\t// add app icon to the navigation\n\t\t\t\t\tconst previousElement = document.querySelector(`#navigation li[data-id=${previousEntry.id}]`)\n\t\t\t\t\tif (previousElement) {\n\t\t\t\t\t\tpreviousElement.insertAdjacentElement('afterend', li)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdocument.querySelector('#navigation #apps ul').prepend(li)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (document.getElementById('appmenu').querySelector(`li[data-id=\"${entry.id}\"]`) === null) {\n\t\t\t\t\tconst li = document.createElement('li')\n\t\t\t\t\tli.dataset.id = entry.id\n\t\t\t\t\t// Generating svg embedded image (see layout.user.php)\n\t\t\t\t\tlet img\n\t\t\t\t\tif (OCA.Theming && OCA.Theming.inverted) {\n\t\t\t\t\t\timg = `<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" alt=\"\">\n\t\t\t\t\t\t <defs>\n\t\t\t\t\t\t <filter id=\"invert\"><feColorMatrix in=\"SourceGraphic\" type=\"matrix\" values=\"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0\" /></filter>\n\t\t\t\t\t\t </defs>\n\t\t\t\t\t\t <image x=\"0\" y=\"0\" width=\"20\" height=\"20\" preserveAspectRatio=\"xMinYMin meet\" filter=\"url(#invert)\" xlink:href=\"${entry.icon}\" class=\"app-icon\" />\n\t\t\t\t\t\t</svg>`\n\t\t\t\t\t} else {\n\t\t\t\t\t\timg = `<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" alt=\"\">\n\t\t\t\t\t\t <image x=\"0\" y=\"0\" width=\"20\" height=\"20\" preserveAspectRatio=\"xMinYMin meet\" xlink:href=\"${entry.icon}\" class=\"app-icon\" />\n\t\t\t\t\t\t</svg>`\n\t\t\t\t\t}\n\t\t\t\t\tconst imgElement = document.createElement('template')\n\t\t\t\t\timgElement.innerHTML = img\n\n\t\t\t\t\tconst a = document.createElement('a')\n\t\t\t\t\ta.setAttribute('href', entry.href)\n\n\t\t\t\t\tconst filename = document.createElement('span')\n\t\t\t\t\tfilename.appendChild(document.createTextNode(entry.name))\n\n\t\t\t\t\tconst loading = document.createElement('div')\n\t\t\t\t\tloading.setAttribute('class', 'icon-loading-dark')\n\t\t\t\t\tloading.style.display = 'none'\n\n\t\t\t\t\t// draw attention to the newly added app entry\n\t\t\t\t\t// by flashing twice the more apps menu\n\t\t\t\t\tif (addedApps[entry.id]) {\n\t\t\t\t\t\ta.classList.add('animated')\n\t\t\t\t\t}\n\n\t\t\t\t\ta.prepend(loading, filename, imgElement.content.firstChild)\n\t\t\t\t\tli.append(a)\n\n\t\t\t\t\t// add app icon to the navigation\n\t\t\t\t\tconst previousElement = document.querySelector('#appmenu li[data-id=' + previousEntry.id + ']')\n\t\t\t\t\tif (previousElement) {\n\t\t\t\t\t\tpreviousElement.insertAdjacentElement('afterend', li)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdocument.queryElementById('appmenu').prepend(li)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tpreviousEntry = entry\n\t\t\t})\n\t\t\twindow.dispatchEvent(new Event('resize'))\n\t\t})\n}\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 = 1647;","__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\t1647: 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__(49983); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","window","OC","Settings","Apps","rebuildNavigation","axios","generateOcsUrl","then","data","ocs","meta","statuscode","addedApps","navEntries","container","document","querySelector","forEach","entry","id","querySelectorAll","el","index","dataset","remove","previousEntry","li","createElement","img","icon","imgElement","innerHTML","a","setAttribute","href","filename","appendChild","createTextNode","name","loading","style","display","classList","add","prepend","content","firstChild","append","previousElement","insertAdjacentElement","getElementById","OCA","Theming","inverted","queryElementById","dispatchEvent","Event","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","definition","o","defineProperty","enumerable","get","g","globalThis","this","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","children","b","baseURI","self","location","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","bind","push","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"settings-apps.js?v=1372ca632edeca3c473f","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/settings/src/apps.js","webpack:///nextcloud/apps/settings/src/service/rebuild-navigation.js","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/runtime/nonce","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};","import rebuildNavigation from './service/rebuild-navigation.js'\n\nwindow.OC.Settings = window.OC.Settings || {}\nwindow.OC.Settings.Apps = window.OC.Settings.Apps || {\n\trebuildNavigation\n}\n","import axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nexport default () => {\n\treturn axios.get(generateOcsUrl('core/navigation', 2) + '/apps?format=json')\n\t\t.then(({ data }) => {\n\t\t\tif (data.ocs.meta.statuscode !== 200) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst addedApps = {}\n\t\t\tconst navEntries = data.ocs.data\n\t\t\tconst container = document.querySelector('#navigation #apps ul')\n\n\t\t\t// remove disabled apps\n\t\t\tnavEntries.forEach((entry) => {\n\t\t\t\tif (!container.querySelector('li[data-id=\"' + entry.id + '\"]')) {\n\t\t\t\t\taddedApps[entry.id] = true\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tcontainer.querySelectorAll('li[data-id]').forEach((el, index) => {\n\t\t\t\tconst id = el.dataset.id\n\t\t\t\t// remove all apps that are not in the correct order\n\t\t\t\tif (!navEntries[index] || (navEntries[index] && navEntries[index].id !== id)) {\n\t\t\t\t\tel.remove()\n\t\t\t\t\tdocument.querySelector(`#appmenu li[data-id=${id}]`).remove()\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tlet previousEntry = {}\n\t\t\t// add enabled apps to #navigation and #appmenu\n\t\t\tnavEntries.forEach((entry) => {\n\t\t\t\tif (container.querySelector(`li[data-id=\"${entry.id}\"]`) === null) {\n\t\t\t\t\tconst li = document.createElement('li')\n\t\t\t\t\tli.dataset.id = entry.id\n\t\t\t\t\tconst img = `<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" alt=\"\">\n\t\t\t\t\t <defs>\n\t\t\t\t\t <filter id=\"invertMenuMore-${entry.id}\"><feColorMatrix in=\"SourceGraphic\" type=\"matrix\" values=\"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0\"></feColorMatrix></filter>\n\t\t\t\t\t <mask id=\"hole\">\n\t\t\t\t\t <rect width=\"100%\" height=\"100%\" fill=\"white\"></rect>\n\t\t\t\t\t\t<circle r=\"4.5\" cx=\"17\" cy=\"3\" fill=\"black\"></circle>\n\t\t\t\t\t </mask>\n\t\t\t\t\t </defs>\n\t\t\t\t\t <image x=\"0\" y=\"0\" width=\"16\" height=\"16\" filter=\"url(#invertMenuMore-${entry.id})\" preserveAspectRatio=\"xMinYMin meet\" xlink:href=\"${entry.icon}\" class=\"app-icon\" />\n\t\t\t\t\t</svg>`\n\n\t\t\t\t\tconst imgElement = document.createElement('template')\n\t\t\t\t\timgElement.innerHTML = img\n\n\t\t\t\t\tconst a = document.createElement('a')\n\t\t\t\t\ta.setAttribute('href', entry.href)\n\n\t\t\t\t\tconst filename = document.createElement('span')\n\t\t\t\t\tfilename.appendChild(document.createTextNode(entry.name))\n\n\t\t\t\t\tconst loading = document.createElement('div')\n\t\t\t\t\tloading.setAttribute('class', 'unread-counter')\n\t\t\t\t\tloading.style.display = 'none'\n\n\t\t\t\t\t// draw attention to the newly added app entry\n\t\t\t\t\t// by flashing twice the more apps menu\n\t\t\t\t\tif (addedApps[entry.id]) {\n\t\t\t\t\t\ta.classList.add('animated')\n\t\t\t\t\t}\n\n\t\t\t\t\ta.prepend(imgElement.content.firstChild, loading, filename)\n\t\t\t\t\tli.append(a)\n\n\t\t\t\t\t// add app icon to the navigation\n\t\t\t\t\tconst previousElement = document.querySelector(`#navigation li[data-id=${previousEntry.id}]`)\n\t\t\t\t\tif (previousElement) {\n\t\t\t\t\t\tpreviousElement.insertAdjacentElement('afterend', li)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdocument.querySelector('#navigation #apps ul').prepend(li)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (document.getElementById('appmenu').querySelector(`li[data-id=\"${entry.id}\"]`) === null) {\n\t\t\t\t\tconst li = document.createElement('li')\n\t\t\t\t\tli.dataset.id = entry.id\n\t\t\t\t\t// Generating svg embedded image (see layout.user.php)\n\t\t\t\t\tlet img\n\t\t\t\t\tif (OCA.Theming && OCA.Theming.inverted) {\n\t\t\t\t\t\timg = `<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" alt=\"\">\n\t\t\t\t\t\t <defs>\n\t\t\t\t\t\t <filter id=\"invert\"><feColorMatrix in=\"SourceGraphic\" type=\"matrix\" values=\"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0\" /></filter>\n\t\t\t\t\t\t </defs>\n\t\t\t\t\t\t <image x=\"0\" y=\"0\" width=\"20\" height=\"20\" preserveAspectRatio=\"xMinYMin meet\" filter=\"url(#invert)\" xlink:href=\"${entry.icon}\" class=\"app-icon\" />\n\t\t\t\t\t\t</svg>`\n\t\t\t\t\t} else {\n\t\t\t\t\t\timg = `<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" alt=\"\">\n\t\t\t\t\t\t <image x=\"0\" y=\"0\" width=\"20\" height=\"20\" preserveAspectRatio=\"xMinYMin meet\" xlink:href=\"${entry.icon}\" class=\"app-icon\" />\n\t\t\t\t\t\t</svg>`\n\t\t\t\t\t}\n\t\t\t\t\tconst imgElement = document.createElement('template')\n\t\t\t\t\timgElement.innerHTML = img\n\n\t\t\t\t\tconst a = document.createElement('a')\n\t\t\t\t\ta.setAttribute('href', entry.href)\n\n\t\t\t\t\tconst filename = document.createElement('span')\n\t\t\t\t\tfilename.appendChild(document.createTextNode(entry.name))\n\n\t\t\t\t\tconst loading = document.createElement('div')\n\t\t\t\t\tloading.setAttribute('class', 'icon-loading-dark')\n\t\t\t\t\tloading.style.display = 'none'\n\n\t\t\t\t\t// draw attention to the newly added app entry\n\t\t\t\t\t// by flashing twice the more apps menu\n\t\t\t\t\tif (addedApps[entry.id]) {\n\t\t\t\t\t\ta.classList.add('animated')\n\t\t\t\t\t}\n\n\t\t\t\t\ta.prepend(loading, filename, imgElement.content.firstChild)\n\t\t\t\t\tli.append(a)\n\n\t\t\t\t\t// add app icon to the navigation\n\t\t\t\t\tconst previousElement = document.querySelector('#appmenu li[data-id=' + previousEntry.id + ']')\n\t\t\t\t\tif (previousElement) {\n\t\t\t\t\t\tpreviousElement.insertAdjacentElement('afterend', li)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdocument.queryElementById('appmenu').prepend(li)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tpreviousEntry = entry\n\t\t\t})\n\t\t\twindow.dispatchEvent(new Event('resize'))\n\t\t})\n}\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 = 1647;","__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\t1647: 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));","__webpack_require__.nc = undefined;","// 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__(49983); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","window","OC","Settings","Apps","rebuildNavigation","axios","generateOcsUrl","then","data","ocs","meta","statuscode","addedApps","navEntries","container","document","querySelector","forEach","entry","id","querySelectorAll","el","index","dataset","remove","previousEntry","li","createElement","img","icon","imgElement","innerHTML","a","setAttribute","href","filename","appendChild","createTextNode","name","loading","style","display","classList","add","prepend","content","firstChild","append","previousElement","insertAdjacentElement","getElementById","OCA","Theming","inverted","queryElementById","dispatchEvent","Event","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","definition","o","defineProperty","enumerable","get","g","globalThis","this","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","children","b","baseURI","self","location","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","bind","push","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/settings-vue-settings-admin-basic-settings.js b/dist/settings-vue-settings-admin-basic-settings.js
index 4aafb1b0796..f52f002f0f4 100644
--- a/dist/settings-vue-settings-admin-basic-settings.js
+++ b/dist/settings-vue-settings-admin-basic-settings.js
@@ -1,3 +1,3 @@
/*! For license information please see settings-vue-settings-admin-basic-settings.js.LICENSE.txt */
-!function(){"use strict";var e,n={4157:function(e,n,r){var a=r(20144),i=r(22200),s=r(16453),o=r(9944),l=(r(73317),(0,r(17499).IY)().setApp("settings").detectUser().build()),u=r(26932),c=r(4820),f=r(79753),d=r(10128),E=r.n(d);function A(e,t,n,r,a,i,s){try{var o=e[i](s),l=o.value}catch(e){return void n(e)}o.done?t(l):Promise.resolve(l).then(r,a)}var p,O,I,L=function(){var e,t=(e=regeneratorRuntime.mark((function e(t){var n,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=t?"1":"0",n=(0,f.generateOcsUrl)("/apps/provisioning_api/api/v1/config/apps/{appId}/{key}",{appId:"settings",key:"profile_enabled_by_default"}),e.next=4,E()();case 4:return e.next=6,c.default.post(n,{value:t});case 6:return r=e.sent,e.abrupt("return",r.data);case 8:case"end":return e.stop()}}),e)})),function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function s(e){A(i,r,a,s,o,"next",e)}function o(e){A(i,r,a,s,o,"throw",e)}s(void 0)}))});return function(e){return t.apply(this,arguments)}}();function v(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var b=Object.freeze({ADDRESS:"address",AVATAR:"avatar",BIOGRAPHY:"biography",DISPLAYNAME:"displayname",EMAIL_COLLECTION:"additional_mail",EMAIL:"email",HEADLINE:"headline",NOTIFICATION_EMAIL:"notify_email",ORGANISATION:"organisation",PHONE:"phone",PROFILE_ENABLED:"profile_enabled",ROLE:"role",TWITTER:"twitter",WEBSITE:"website"}),g=Object.freeze({ADDRESS:(0,o.translate)("settings","Address"),AVATAR:(0,o.translate)("settings","Avatar"),BIOGRAPHY:(0,o.translate)("settings","About"),DISPLAYNAME:(0,o.translate)("settings","Full name"),EMAIL_COLLECTION:(0,o.translate)("settings","Additional email"),EMAIL:(0,o.translate)("settings","Email"),HEADLINE:(0,o.translate)("settings","Headline"),ORGANISATION:(0,o.translate)("settings","Organisation"),PHONE:(0,o.translate)("settings","Phone number"),PROFILE_ENABLED:(0,o.translate)("settings","Profile"),ROLE:(0,o.translate)("settings","Role"),TWITTER:(0,o.translate)("settings","Twitter"),WEBSITE:(0,o.translate)("settings","Website")}),h=(Object.freeze({PROFILE_VISIBILITY:(0,o.translate)("settings","Profile visibility")}),Object.freeze((v(p={},g.ADDRESS,b.ADDRESS),v(p,g.AVATAR,b.AVATAR),v(p,g.BIOGRAPHY,b.BIOGRAPHY),v(p,g.DISPLAYNAME,b.DISPLAYNAME),v(p,g.EMAIL_COLLECTION,b.EMAIL_COLLECTION),v(p,g.EMAIL,b.EMAIL),v(p,g.HEADLINE,b.HEADLINE),v(p,g.ORGANISATION,b.ORGANISATION),v(p,g.PHONE,b.PHONE),v(p,g.PROFILE_ENABLED,b.PROFILE_ENABLED),v(p,g.ROLE,b.ROLE),v(p,g.TWITTER,b.TWITTER),v(p,g.WEBSITE,b.WEBSITE),p)),Object.freeze({LANGUAGE:"language"}),Object.freeze({LANGUAGE:(0,o.translate)("settings","Language")}),Object.freeze({PRIVATE:"v2-private",LOCAL:"v2-local",FEDERATED:"v2-federated",PUBLISHED:"v2-published"}));Object.freeze((v(O={},g.ADDRESS,[h.LOCAL,h.PRIVATE]),v(O,g.AVATAR,[h.LOCAL,h.PRIVATE]),v(O,g.BIOGRAPHY,[h.LOCAL,h.PRIVATE]),v(O,g.DISPLAYNAME,[h.LOCAL]),v(O,g.EMAIL_COLLECTION,[h.LOCAL]),v(O,g.EMAIL,[h.LOCAL]),v(O,g.HEADLINE,[h.LOCAL,h.PRIVATE]),v(O,g.ORGANISATION,[h.LOCAL,h.PRIVATE]),v(O,g.PHONE,[h.LOCAL,h.PRIVATE]),v(O,g.PROFILE_ENABLED,[h.LOCAL,h.PRIVATE]),v(O,g.ROLE,[h.LOCAL,h.PRIVATE]),v(O,g.TWITTER,[h.LOCAL,h.PRIVATE]),v(O,g.WEBSITE,[h.LOCAL,h.PRIVATE]),O)),Object.freeze([g.BIOGRAPHY,g.HEADLINE,g.ORGANISATION,g.ROLE]),Object.freeze((v(I={},h.PRIVATE,{name:h.PRIVATE,displayName:(0,o.translate)("settings","Private"),tooltip:(0,o.translate)("settings","Only visible to people matched via phone number integration through Talk on mobile"),tooltipDisabled:(0,o.translate)("settings","Not available as this property is required for core functionality including file sharing and calendar invitations"),iconClass:"icon-phone"}),v(I,h.LOCAL,{name:h.LOCAL,displayName:(0,o.translate)("settings","Local"),tooltip:(0,o.translate)("settings","Only visible to people on this instance and guests"),iconClass:"icon-password"}),v(I,h.FEDERATED,{name:h.FEDERATED,displayName:(0,o.translate)("settings","Federated"),tooltip:(0,o.translate)("settings","Only synchronize to trusted servers"),tooltipDisabled:(0,o.translate)("settings","Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions"),iconClass:"icon-contacts-dark"}),v(I,h.PUBLISHED,{name:h.PUBLISHED,displayName:(0,o.translate)("settings","Published"),tooltip:(0,o.translate)("settings","Synchronize to trusted servers and the global and public address book"),tooltipDisabled:(0,o.translate)("settings","Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions"),iconClass:"icon-link"}),I)),h.LOCAL,Object.freeze({NOT_VERIFIED:0,VERIFICATION_IN_PROGRESS:1,VERIFIED:2});var R=r(7826),T=r.n(R);function P(e,t,n,r,a,i,s){try{var o=e[i](s),l=o.value}catch(e){return void n(e)}o.done?t(l):Promise.resolve(l).then(r,a)}function m(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function s(e){P(i,r,a,s,o,"next",e)}function o(e){P(i,r,a,s,o,"throw",e)}s(void 0)}))}}var y=(0,s.loadState)("settings","profileEnabledByDefault",!0),N={name:"ProfileSettings",components:{CheckboxRadioSwitch:T()},data:function(){return{initialProfileEnabledByDefault:y}},methods:{onProfileDefaultChange:function(e){var t=this;return m(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if("boolean"!=typeof e){n.next=3;break}return n.next=3,t.updateProfileDefault(e);case 3:case"end":return n.stop()}}),n)})))()},updateProfileDefault:function(e){var n=this;return m(regeneratorRuntime.mark((function r(){var a,i,s;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.prev=0,r.next=3,L(e);case 3:s=r.sent,n.handleResponse({isEnabled:e,status:null===(a=s.ocs)||void 0===a||null===(i=a.meta)||void 0===i?void 0:i.status}),r.next=10;break;case 7:r.prev=7,r.t0=r.catch(0),n.handleResponse({errorMessage:t("settings","Unable to update profile default setting"),error:r.t0});case 10:case"end":return r.stop()}}),r,null,[[0,7]])})))()},handleResponse:function(e){var t=e.isEnabled,n=e.status,r=e.errorMessage,a=e.error;"ok"===n?this.initialProfileEnabledByDefault=t:((0,u.x2)(r),this.logger.error(r,a))}}},D=(0,r(51900).Z)(N,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"section",attrs:{id:"profile-settings"}},[n("h2",{staticClass:"inlineblock"},[e._v("\n\t\t"+e._s(e.t("settings","Profile"))+"\n\t")]),e._v(" "),n("p",{staticClass:"settings-hint"},[e._v("\n\t\t"+e._s(e.t("settings","Enable or disable profile by default for new users."))+"\n\t")]),e._v(" "),n("CheckboxRadioSwitch",{attrs:{type:"switch",checked:e.initialProfileEnabledByDefault},on:{"update:checked":[function(t){e.initialProfileEnabledByDefault=t},e.onProfileDefaultChange]}},[e._v("\n\t\t"+e._s(e.t("settings","Enable"))+"\n\t")])],1)}),[],!1,null,"414249e6",null).exports;r.nc=btoa((0,i.getRequestToken)());var S=(0,s.loadState)("settings","profileEnabledGlobally",!0);a.default.mixin({props:{logger:l},methods:{t:o.translate}}),S&&(new(a.default.extend(D))).$mount(".vue-admin-profile-settings")}},r={};function a(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={id:e,loaded:!1,exports:{}};return n[e].call(i.exports,i,i.exports,a),i.loaded=!0,i.exports}a.m=n,a.amdD=function(){throw new Error("define cannot be used indirect")},a.amdO={},e=[],a.O=function(t,n,r,i){if(!n){var s=1/0;for(c=0;c<e.length;c++){n=e[c][0],r=e[c][1],i=e[c][2];for(var o=!0,l=0;l<n.length;l++)(!1&i||s>=i)&&Object.keys(a.O).every((function(e){return a.O[e](n[l])}))?n.splice(l--,1):(o=!1,i<s&&(s=i));if(o){e.splice(c--,1);var u=r();void 0!==u&&(t=u)}}return t}i=i||0;for(var c=e.length;c>0&&e[c-1][2]>i;c--)e[c]=e[c-1];e[c]=[n,r,i]},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,{a:t}),t},a.d=function(e,t){for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},a.j=6192,function(){a.b=document.baseURI||self.location.href;var e={6192:0};a.O.j=function(t){return 0===e[t]};var t=function(t,n){var r,i,s=n[0],o=n[1],l=n[2],u=0;if(s.some((function(t){return 0!==e[t]}))){for(r in o)a.o(o,r)&&(a.m[r]=o[r]);if(l)var c=l(a)}for(t&&t(n);u<s.length;u++)i=s[u],a.o(e,i)&&e[i]&&e[i][0](),e[i]=0;return a.O(c)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))}();var i=a.O(void 0,[7874],(function(){return a(4157)}));i=a.O(i)}();
-//# sourceMappingURL=settings-vue-settings-admin-basic-settings.js.map?v=4df34c6c5c61ce148bd3 \ No newline at end of file
+!function(){"use strict";var e,n={4157:function(e,n,r){var a=r(20144),i=r(22200),s=r(16453),o=r(9944),l=(r(73317),(0,r(17499).IY)().setApp("settings").detectUser().build()),u=r(26932),c=r(4820),f=r(79753),d=r(10128),E=r.n(d);function A(e,t,n,r,a,i,s){try{var o=e[i](s),l=o.value}catch(e){return void n(e)}o.done?t(l):Promise.resolve(l).then(r,a)}var p,O,I,L=function(){var e,t=(e=regeneratorRuntime.mark((function e(t){var n,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=t?"1":"0",n=(0,f.generateOcsUrl)("/apps/provisioning_api/api/v1/config/apps/{appId}/{key}",{appId:"settings",key:"profile_enabled_by_default"}),e.next=4,E()();case 4:return e.next=6,c.default.post(n,{value:t});case 6:return r=e.sent,e.abrupt("return",r.data);case 8:case"end":return e.stop()}}),e)})),function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function s(e){A(i,r,a,s,o,"next",e)}function o(e){A(i,r,a,s,o,"throw",e)}s(void 0)}))});return function(e){return t.apply(this,arguments)}}();function v(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var b=Object.freeze({ADDRESS:"address",AVATAR:"avatar",BIOGRAPHY:"biography",DISPLAYNAME:"displayname",EMAIL_COLLECTION:"additional_mail",EMAIL:"email",HEADLINE:"headline",NOTIFICATION_EMAIL:"notify_email",ORGANISATION:"organisation",PHONE:"phone",PROFILE_ENABLED:"profile_enabled",ROLE:"role",TWITTER:"twitter",WEBSITE:"website"}),g=Object.freeze({ADDRESS:(0,o.translate)("settings","Address"),AVATAR:(0,o.translate)("settings","Avatar"),BIOGRAPHY:(0,o.translate)("settings","About"),DISPLAYNAME:(0,o.translate)("settings","Full name"),EMAIL_COLLECTION:(0,o.translate)("settings","Additional email"),EMAIL:(0,o.translate)("settings","Email"),HEADLINE:(0,o.translate)("settings","Headline"),ORGANISATION:(0,o.translate)("settings","Organisation"),PHONE:(0,o.translate)("settings","Phone number"),PROFILE_ENABLED:(0,o.translate)("settings","Profile"),ROLE:(0,o.translate)("settings","Role"),TWITTER:(0,o.translate)("settings","Twitter"),WEBSITE:(0,o.translate)("settings","Website")}),h=(Object.freeze({PROFILE_VISIBILITY:(0,o.translate)("settings","Profile visibility")}),Object.freeze((v(p={},g.ADDRESS,b.ADDRESS),v(p,g.AVATAR,b.AVATAR),v(p,g.BIOGRAPHY,b.BIOGRAPHY),v(p,g.DISPLAYNAME,b.DISPLAYNAME),v(p,g.EMAIL_COLLECTION,b.EMAIL_COLLECTION),v(p,g.EMAIL,b.EMAIL),v(p,g.HEADLINE,b.HEADLINE),v(p,g.ORGANISATION,b.ORGANISATION),v(p,g.PHONE,b.PHONE),v(p,g.PROFILE_ENABLED,b.PROFILE_ENABLED),v(p,g.ROLE,b.ROLE),v(p,g.TWITTER,b.TWITTER),v(p,g.WEBSITE,b.WEBSITE),p)),Object.freeze({LANGUAGE:"language"}),Object.freeze({LANGUAGE:(0,o.translate)("settings","Language")}),Object.freeze({PRIVATE:"v2-private",LOCAL:"v2-local",FEDERATED:"v2-federated",PUBLISHED:"v2-published"}));Object.freeze((v(O={},g.ADDRESS,[h.LOCAL,h.PRIVATE]),v(O,g.AVATAR,[h.LOCAL,h.PRIVATE]),v(O,g.BIOGRAPHY,[h.LOCAL,h.PRIVATE]),v(O,g.DISPLAYNAME,[h.LOCAL]),v(O,g.EMAIL_COLLECTION,[h.LOCAL]),v(O,g.EMAIL,[h.LOCAL]),v(O,g.HEADLINE,[h.LOCAL,h.PRIVATE]),v(O,g.ORGANISATION,[h.LOCAL,h.PRIVATE]),v(O,g.PHONE,[h.LOCAL,h.PRIVATE]),v(O,g.PROFILE_ENABLED,[h.LOCAL,h.PRIVATE]),v(O,g.ROLE,[h.LOCAL,h.PRIVATE]),v(O,g.TWITTER,[h.LOCAL,h.PRIVATE]),v(O,g.WEBSITE,[h.LOCAL,h.PRIVATE]),O)),Object.freeze([g.BIOGRAPHY,g.HEADLINE,g.ORGANISATION,g.ROLE]),Object.freeze((v(I={},h.PRIVATE,{name:h.PRIVATE,displayName:(0,o.translate)("settings","Private"),tooltip:(0,o.translate)("settings","Only visible to people matched via phone number integration through Talk on mobile"),tooltipDisabled:(0,o.translate)("settings","Not available as this property is required for core functionality including file sharing and calendar invitations"),iconClass:"icon-phone"}),v(I,h.LOCAL,{name:h.LOCAL,displayName:(0,o.translate)("settings","Local"),tooltip:(0,o.translate)("settings","Only visible to people on this instance and guests"),iconClass:"icon-password"}),v(I,h.FEDERATED,{name:h.FEDERATED,displayName:(0,o.translate)("settings","Federated"),tooltip:(0,o.translate)("settings","Only synchronize to trusted servers"),tooltipDisabled:(0,o.translate)("settings","Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions"),iconClass:"icon-contacts-dark"}),v(I,h.PUBLISHED,{name:h.PUBLISHED,displayName:(0,o.translate)("settings","Published"),tooltip:(0,o.translate)("settings","Synchronize to trusted servers and the global and public address book"),tooltipDisabled:(0,o.translate)("settings","Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions"),iconClass:"icon-link"}),I)),h.LOCAL,Object.freeze({NOT_VERIFIED:0,VERIFICATION_IN_PROGRESS:1,VERIFIED:2});var R=r(7826),T=r.n(R);function P(e,t,n,r,a,i,s){try{var o=e[i](s),l=o.value}catch(e){return void n(e)}o.done?t(l):Promise.resolve(l).then(r,a)}function m(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function s(e){P(i,r,a,s,o,"next",e)}function o(e){P(i,r,a,s,o,"throw",e)}s(void 0)}))}}var y=(0,s.loadState)("settings","profileEnabledByDefault",!0),N={name:"ProfileSettings",components:{CheckboxRadioSwitch:T()},data:function(){return{initialProfileEnabledByDefault:y}},methods:{onProfileDefaultChange:function(e){var t=this;return m(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if("boolean"!=typeof e){n.next=3;break}return n.next=3,t.updateProfileDefault(e);case 3:case"end":return n.stop()}}),n)})))()},updateProfileDefault:function(e){var n=this;return m(regeneratorRuntime.mark((function r(){var a,i,s;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.prev=0,r.next=3,L(e);case 3:s=r.sent,n.handleResponse({isEnabled:e,status:null===(a=s.ocs)||void 0===a||null===(i=a.meta)||void 0===i?void 0:i.status}),r.next=10;break;case 7:r.prev=7,r.t0=r.catch(0),n.handleResponse({errorMessage:t("settings","Unable to update profile default setting"),error:r.t0});case 10:case"end":return r.stop()}}),r,null,[[0,7]])})))()},handleResponse:function(e){var t=e.isEnabled,n=e.status,r=e.errorMessage,a=e.error;"ok"===n?this.initialProfileEnabledByDefault=t:((0,u.x2)(r),this.logger.error(r,a))}}},D=(0,r(51900).Z)(N,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"section",attrs:{id:"profile-settings"}},[n("h2",{staticClass:"inlineblock"},[e._v("\n\t\t"+e._s(e.t("settings","Profile"))+"\n\t")]),e._v(" "),n("p",{staticClass:"settings-hint"},[e._v("\n\t\t"+e._s(e.t("settings","Enable or disable profile by default for new users."))+"\n\t")]),e._v(" "),n("CheckboxRadioSwitch",{attrs:{type:"switch",checked:e.initialProfileEnabledByDefault},on:{"update:checked":[function(t){e.initialProfileEnabledByDefault=t},e.onProfileDefaultChange]}},[e._v("\n\t\t"+e._s(e.t("settings","Enable"))+"\n\t")])],1)}),[],!1,null,"414249e6",null).exports;r.nc=btoa((0,i.getRequestToken)());var S=(0,s.loadState)("settings","profileEnabledGlobally",!0);a.default.mixin({props:{logger:l},methods:{t:o.translate}}),S&&(new(a.default.extend(D))).$mount(".vue-admin-profile-settings")}},r={};function a(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={id:e,loaded:!1,exports:{}};return n[e].call(i.exports,i,i.exports,a),i.loaded=!0,i.exports}a.m=n,a.amdD=function(){throw new Error("define cannot be used indirect")},a.amdO={},e=[],a.O=function(t,n,r,i){if(!n){var s=1/0;for(c=0;c<e.length;c++){n=e[c][0],r=e[c][1],i=e[c][2];for(var o=!0,l=0;l<n.length;l++)(!1&i||s>=i)&&Object.keys(a.O).every((function(e){return a.O[e](n[l])}))?n.splice(l--,1):(o=!1,i<s&&(s=i));if(o){e.splice(c--,1);var u=r();void 0!==u&&(t=u)}}return t}i=i||0;for(var c=e.length;c>0&&e[c-1][2]>i;c--)e[c]=e[c-1];e[c]=[n,r,i]},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,{a:t}),t},a.d=function(e,t){for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},a.j=6192,function(){a.b=document.baseURI||self.location.href;var e={6192:0};a.O.j=function(t){return 0===e[t]};var t=function(t,n){var r,i,s=n[0],o=n[1],l=n[2],u=0;if(s.some((function(t){return 0!==e[t]}))){for(r in o)a.o(o,r)&&(a.m[r]=o[r]);if(l)var c=l(a)}for(t&&t(n);u<s.length;u++)i=s[u],a.o(e,i)&&e[i]&&e[i][0](),e[i]=0;return a.O(c)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))}(),a.nc=void 0;var i=a.O(void 0,[7874],(function(){return a(4157)}));i=a.O(i)}();
+//# sourceMappingURL=settings-vue-settings-admin-basic-settings.js.map?v=062bdc395398f8e3cb71 \ No newline at end of file
diff --git a/dist/settings-vue-settings-admin-basic-settings.js.map b/dist/settings-vue-settings-admin-basic-settings.js.map
index 2b3128c39c6..177a37bcf45 100644
--- a/dist/settings-vue-settings-admin-basic-settings.js.map
+++ b/dist/settings-vue-settings-admin-basic-settings.js.map
@@ -1 +1 @@
-{"version":3,"file":"settings-vue-settings-admin-basic-settings.js?v=4df34c6c5c61ce148bd3","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/settings/src/logger.js","webpack:///nextcloud/apps/settings/src/service/ProfileService.js","webpack:///nextcloud/apps/settings/src/constants/AccountPropertyConstants.js","webpack:///nextcloud/apps/settings/src/components/BasicSettings/ProfileSettings.vue","webpack:///nextcloud/apps/settings/src/components/BasicSettings/ProfileSettings.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/utils/validate.js","webpack://nextcloud/./apps/settings/src/components/BasicSettings/ProfileSettings.vue?cd3c","webpack:///nextcloud/apps/settings/src/components/BasicSettings/ProfileSettings.vue?vue&type=template&id=414249e6&scoped=true&","webpack:///nextcloud/apps/settings/src/main-admin-basic-settings.js","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 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('settings')\n\t.detectUser()\n\t.build()\n","/**\n * @copyright 2021 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\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 */\n\nimport axios from '@nextcloud/axios'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport confirmPassword from '@nextcloud/password-confirmation'\n\n/**\n * Save the visibility of the profile parameter\n *\n * @param {string} paramId the profile parameter ID\n * @param {string} visibility the visibility\n * @return {object}\n */\nexport const saveProfileParameterVisibility = async (paramId, visibility) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('/profile/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tparamId,\n\t\tvisibility,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save profile default\n *\n * @param {boolean} isEnabled the default\n * @return {object}\n */\nexport const saveProfileDefault = async (isEnabled) => {\n\t// Convert to string for compatibility\n\tisEnabled = isEnabled ? '1' : '0'\n\n\tconst url = generateOcsUrl('/apps/provisioning_api/api/v1/config/apps/{appId}/{key}', {\n\t\tappId: 'settings',\n\t\tkey: 'profile_enabled_by_default',\n\t})\n\n\tawait confirmPassword()\n\n\tconst res = await axios.post(url, {\n\t\tvalue: isEnabled,\n\t})\n\n\treturn res.data\n}\n","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\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 */\n\n/*\n * SYNC to be kept in sync with `lib/public/Accounts/IAccountManager.php`\n */\n\nimport { translate as t } from '@nextcloud/l10n'\n\n/** Enum of account properties */\nexport const ACCOUNT_PROPERTY_ENUM = Object.freeze({\n\tADDRESS: 'address',\n\tAVATAR: 'avatar',\n\tBIOGRAPHY: 'biography',\n\tDISPLAYNAME: 'displayname',\n\tEMAIL_COLLECTION: 'additional_mail',\n\tEMAIL: 'email',\n\tHEADLINE: 'headline',\n\tNOTIFICATION_EMAIL: 'notify_email',\n\tORGANISATION: 'organisation',\n\tPHONE: 'phone',\n\tPROFILE_ENABLED: 'profile_enabled',\n\tROLE: 'role',\n\tTWITTER: 'twitter',\n\tWEBSITE: 'website',\n})\n\n/** Enum of account properties to human readable account property names */\nexport const ACCOUNT_PROPERTY_READABLE_ENUM = Object.freeze({\n\tADDRESS: t('settings', 'Address'),\n\tAVATAR: t('settings', 'Avatar'),\n\tBIOGRAPHY: t('settings', 'About'),\n\tDISPLAYNAME: t('settings', 'Full name'),\n\tEMAIL_COLLECTION: t('settings', 'Additional email'),\n\tEMAIL: t('settings', 'Email'),\n\tHEADLINE: t('settings', 'Headline'),\n\tORGANISATION: t('settings', 'Organisation'),\n\tPHONE: t('settings', 'Phone number'),\n\tPROFILE_ENABLED: t('settings', 'Profile'),\n\tROLE: t('settings', 'Role'),\n\tTWITTER: t('settings', 'Twitter'),\n\tWEBSITE: t('settings', 'Website'),\n})\n\n/** Enum of profile specific sections to human readable names */\nexport const PROFILE_READABLE_ENUM = Object.freeze({\n\tPROFILE_VISIBILITY: t('settings', 'Profile visibility'),\n})\n\n/** Enum of readable account properties to account property keys used by the server */\nexport const PROPERTY_READABLE_KEYS_ENUM = Object.freeze({\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ADDRESS]: ACCOUNT_PROPERTY_ENUM.ADDRESS,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.AVATAR]: ACCOUNT_PROPERTY_ENUM.AVATAR,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY]: ACCOUNT_PROPERTY_ENUM.BIOGRAPHY,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.DISPLAYNAME]: ACCOUNT_PROPERTY_ENUM.DISPLAYNAME,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL_COLLECTION]: ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL]: ACCOUNT_PROPERTY_ENUM.EMAIL,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE]: ACCOUNT_PROPERTY_ENUM.HEADLINE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION]: ACCOUNT_PROPERTY_ENUM.ORGANISATION,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PHONE]: ACCOUNT_PROPERTY_ENUM.PHONE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED]: ACCOUNT_PROPERTY_ENUM.PROFILE_ENABLED,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ROLE]: ACCOUNT_PROPERTY_ENUM.ROLE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.TWITTER]: ACCOUNT_PROPERTY_ENUM.TWITTER,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.WEBSITE]: ACCOUNT_PROPERTY_ENUM.WEBSITE,\n})\n\n/**\n * Enum of account setting properties\n *\n * Account setting properties unlike account properties do not support scopes*\n */\nexport const ACCOUNT_SETTING_PROPERTY_ENUM = Object.freeze({\n\tLANGUAGE: 'language',\n})\n\n/** Enum of account setting properties to human readable setting properties */\nexport const ACCOUNT_SETTING_PROPERTY_READABLE_ENUM = Object.freeze({\n\tLANGUAGE: t('settings', 'Language'),\n})\n\n/** Enum of scopes */\nexport const SCOPE_ENUM = Object.freeze({\n\tPRIVATE: 'v2-private',\n\tLOCAL: 'v2-local',\n\tFEDERATED: 'v2-federated',\n\tPUBLISHED: 'v2-published',\n})\n\n/** Enum of readable account properties to supported scopes */\nexport const PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM = Object.freeze({\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ADDRESS]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.AVATAR]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.DISPLAYNAME]: [SCOPE_ENUM.LOCAL],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL_COLLECTION]: [SCOPE_ENUM.LOCAL],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL]: [SCOPE_ENUM.LOCAL],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PHONE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ROLE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.TWITTER]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.WEBSITE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n})\n\n/** List of readable account properties which aren't published to the lookup server */\nexport const UNPUBLISHED_READABLE_PROPERTIES = Object.freeze([\n\tACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY,\n\tACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE,\n\tACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION,\n\tACCOUNT_PROPERTY_READABLE_ENUM.ROLE,\n])\n\n/** Scope suffix */\nexport const SCOPE_SUFFIX = 'Scope'\n\n/**\n * Enum of scope names to properties\n *\n * Used for federation control*\n */\nexport const SCOPE_PROPERTY_ENUM = Object.freeze({\n\t[SCOPE_ENUM.PRIVATE]: {\n\t\tname: SCOPE_ENUM.PRIVATE,\n\t\tdisplayName: t('settings', 'Private'),\n\t\ttooltip: t('settings', 'Only visible to people matched via phone number integration through Talk on mobile'),\n\t\ttooltipDisabled: t('settings', 'Not available as this property is required for core functionality including file sharing and calendar invitations'),\n\t\ticonClass: 'icon-phone',\n\t},\n\t[SCOPE_ENUM.LOCAL]: {\n\t\tname: SCOPE_ENUM.LOCAL,\n\t\tdisplayName: t('settings', 'Local'),\n\t\ttooltip: t('settings', 'Only visible to people on this instance and guests'),\n\t\t// tooltipDisabled is not required here as this scope is supported by all account properties\n\t\ticonClass: 'icon-password',\n\t},\n\t[SCOPE_ENUM.FEDERATED]: {\n\t\tname: SCOPE_ENUM.FEDERATED,\n\t\tdisplayName: t('settings', 'Federated'),\n\t\ttooltip: t('settings', 'Only synchronize to trusted servers'),\n\t\ttooltipDisabled: t('settings', 'Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions'),\n\t\ticonClass: 'icon-contacts-dark',\n\t},\n\t[SCOPE_ENUM.PUBLISHED]: {\n\t\tname: SCOPE_ENUM.PUBLISHED,\n\t\tdisplayName: t('settings', 'Published'),\n\t\ttooltip: t('settings', 'Synchronize to trusted servers and the global and public address book'),\n\t\ttooltipDisabled: t('settings', 'Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions'),\n\t\ticonClass: 'icon-link',\n\t},\n})\n\n/** Default additional email scope */\nexport const DEFAULT_ADDITIONAL_EMAIL_SCOPE = SCOPE_ENUM.LOCAL\n\n/** Enum of verification constants, according to IAccountManager */\nexport const VERIFICATION_ENUM = Object.freeze({\n\tNOT_VERIFIED: 0,\n\tVERIFICATION_IN_PROGRESS: 1,\n\tVERIFIED: 2,\n})\n\n/**\n * Email validation regex\n *\n * Sourced from https://github.com/mpyw/FILTER_VALIDATE_EMAIL.js/blob/71e62ca48841d2246a1b531e7e84f5a01f15e615/src/regexp/ascii.ts*\n */\n// eslint-disable-next-line no-control-regex\nexport const VALIDATE_EMAIL_REGEX = /^(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){255,})(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){65,}@)(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22))(?:\\.(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-+[a-z0-9]+)*\\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-+[a-z0-9]+)*)|(?:\\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\\]))$/i\n","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div id=\"profile-settings\"\n\t\tclass=\"section\">\n\t\t<h2 class=\"inlineblock\">\n\t\t\t{{ t('settings', 'Profile') }}\n\t\t</h2>\n\n\t\t<p class=\"settings-hint\">\n\t\t\t{{ t('settings', 'Enable or disable profile by default for new users.') }}\n\t\t</p>\n\n\t\t<CheckboxRadioSwitch type=\"switch\"\n\t\t\t:checked.sync=\"initialProfileEnabledByDefault\"\n\t\t\t@update:checked=\"onProfileDefaultChange\">\n\t\t\t{{ t('settings', 'Enable') }}\n\t\t</CheckboxRadioSwitch>\n\t</div>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport { showError } from '@nextcloud/dialogs'\n\nimport { saveProfileDefault } from '../../service/ProfileService'\nimport { validateBoolean } from '../../utils/validate'\n\nimport CheckboxRadioSwitch from '@nextcloud/vue/dist/Components/CheckboxRadioSwitch'\n\nconst profileEnabledByDefault = loadState('settings', 'profileEnabledByDefault', true)\n\nexport default {\n\tname: 'ProfileSettings',\n\n\tcomponents: {\n\t\tCheckboxRadioSwitch,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialProfileEnabledByDefault: profileEnabledByDefault,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tasync onProfileDefaultChange(isEnabled) {\n\t\t\tif (validateBoolean(isEnabled)) {\n\t\t\t\tawait this.updateProfileDefault(isEnabled)\n\t\t\t}\n\t\t},\n\n\t\tasync updateProfileDefault(isEnabled) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await saveProfileDefault(isEnabled)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tisEnabled,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update profile default setting'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ isEnabled, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\tthis.initialProfileEnabledByDefault = isEnabled\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileSettings.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!./ProfileSettings.vue?vue&type=script&lang=js&\"","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\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 */\n\n/*\n * Frontend validators, less strict than backend validators\n *\n * TODO add nice validation errors for Profile page settings modal\n */\n\nimport { VALIDATE_EMAIL_REGEX } from '../constants/AccountPropertyConstants'\n\n/**\n * Validate the string input\n *\n * Generic validator just to check that input is not an empty string*\n *\n * @param {string} input the input\n * @return {boolean}\n */\nexport function validateStringInput(input) {\n\treturn input !== ''\n}\n\n/**\n * Validate the email input\n *\n * Compliant with PHP core FILTER_VALIDATE_EMAIL validator*\n *\n * Reference implementation https://github.com/mpyw/FILTER_VALIDATE_EMAIL.js/blob/71e62ca48841d2246a1b531e7e84f5a01f15e615/src/index.ts*\n *\n * @param {string} input the input\n * @return {boolean}\n */\nexport function validateEmail(input) {\n\treturn typeof input === 'string'\n\t\t&& VALIDATE_EMAIL_REGEX.test(input)\n\t\t&& input.slice(-1) !== '\\n'\n\t\t&& input.length <= 320\n\t\t&& encodeURIComponent(input).replace(/%../g, 'x').length <= 320\n}\n\n/**\n * Validate the language input\n *\n * @param {object} input the input\n * @return {boolean}\n */\nexport function validateLanguage(input) {\n\treturn input.code !== ''\n\t\t&& input.name !== ''\n\t\t&& input.name !== undefined\n}\n\n/**\n * Validate boolean input\n *\n * @param {boolean} input the input\n * @return {boolean}\n */\nexport function validateBoolean(input) {\n\treturn typeof input === 'boolean'\n}\n","import { render, staticRenderFns } from \"./ProfileSettings.vue?vue&type=template&id=414249e6&scoped=true&\"\nimport script from \"./ProfileSettings.vue?vue&type=script&lang=js&\"\nexport * from \"./ProfileSettings.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"414249e6\",\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\",attrs:{\"id\":\"profile-settings\"}},[_c('h2',{staticClass:\"inlineblock\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Profile'))+\"\\n\\t\")]),_vm._v(\" \"),_c('p',{staticClass:\"settings-hint\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Enable or disable profile by default for new users.'))+\"\\n\\t\")]),_vm._v(\" \"),_c('CheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"checked\":_vm.initialProfileEnabledByDefault},on:{\"update:checked\":[function($event){_vm.initialProfileEnabledByDefault=$event},_vm.onProfileDefaultChange]}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Enable'))+\"\\n\\t\")])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license GNU AGPL version 3 or any later version\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 */\n\nimport Vue from 'vue'\nimport { getRequestToken } from '@nextcloud/auth'\nimport { loadState } from '@nextcloud/initial-state'\nimport { translate as t } from '@nextcloud/l10n'\nimport '@nextcloud/dialogs/styles/toast.scss'\n\nimport logger from './logger'\n\nimport ProfileSettings from './components/BasicSettings/ProfileSettings'\n\n__webpack_nonce__ = btoa(getRequestToken())\n\nconst profileEnabledGlobally = loadState('settings', 'profileEnabledGlobally', true)\n\nVue.mixin({\n\tprops: {\n\t\tlogger,\n\t},\n\tmethods: {\n\t\tt,\n\t},\n})\n\nif (profileEnabledGlobally) {\n\tconst ProfileSettingsView = Vue.extend(ProfileSettings)\n\tnew ProfileSettingsView().$mount('.vue-admin-profile-settings')\n}\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 = 6192;","__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\t6192: 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__(4157); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","getLoggerBuilder","setApp","detectUser","build","saveProfileDefault","isEnabled","url","generateOcsUrl","appId","key","confirmPassword","axios","value","res","data","ACCOUNT_PROPERTY_ENUM","Object","freeze","ADDRESS","AVATAR","BIOGRAPHY","DISPLAYNAME","EMAIL_COLLECTION","EMAIL","HEADLINE","NOTIFICATION_EMAIL","ORGANISATION","PHONE","PROFILE_ENABLED","ROLE","TWITTER","WEBSITE","ACCOUNT_PROPERTY_READABLE_ENUM","t","SCOPE_ENUM","PROFILE_VISIBILITY","LANGUAGE","PRIVATE","LOCAL","FEDERATED","PUBLISHED","name","displayName","tooltip","tooltipDisabled","iconClass","NOT_VERIFIED","VERIFICATION_IN_PROGRESS","VERIFIED","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","_v","_s","initialProfileEnabledByDefault","on","$event","onProfileDefaultChange","__webpack_nonce__","btoa","getRequestToken","profileEnabledGlobally","loadState","Vue","props","logger","methods","ProfileSettings","$mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","id","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","push","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"settings-vue-settings-admin-basic-settings.js?v=062bdc395398f8e3cb71","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/settings/src/logger.js","webpack:///nextcloud/apps/settings/src/service/ProfileService.js","webpack:///nextcloud/apps/settings/src/constants/AccountPropertyConstants.js","webpack:///nextcloud/apps/settings/src/components/BasicSettings/ProfileSettings.vue","webpack:///nextcloud/apps/settings/src/components/BasicSettings/ProfileSettings.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/utils/validate.js","webpack://nextcloud/./apps/settings/src/components/BasicSettings/ProfileSettings.vue?cd3c","webpack:///nextcloud/apps/settings/src/components/BasicSettings/ProfileSettings.vue?vue&type=template&id=414249e6&scoped=true&","webpack:///nextcloud/apps/settings/src/main-admin-basic-settings.js","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/runtime/nonce","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 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('settings')\n\t.detectUser()\n\t.build()\n","/**\n * @copyright 2021 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\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 */\n\nimport axios from '@nextcloud/axios'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport confirmPassword from '@nextcloud/password-confirmation'\n\n/**\n * Save the visibility of the profile parameter\n *\n * @param {string} paramId the profile parameter ID\n * @param {string} visibility the visibility\n * @return {object}\n */\nexport const saveProfileParameterVisibility = async (paramId, visibility) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('/profile/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tparamId,\n\t\tvisibility,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save profile default\n *\n * @param {boolean} isEnabled the default\n * @return {object}\n */\nexport const saveProfileDefault = async (isEnabled) => {\n\t// Convert to string for compatibility\n\tisEnabled = isEnabled ? '1' : '0'\n\n\tconst url = generateOcsUrl('/apps/provisioning_api/api/v1/config/apps/{appId}/{key}', {\n\t\tappId: 'settings',\n\t\tkey: 'profile_enabled_by_default',\n\t})\n\n\tawait confirmPassword()\n\n\tconst res = await axios.post(url, {\n\t\tvalue: isEnabled,\n\t})\n\n\treturn res.data\n}\n","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\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 */\n\n/*\n * SYNC to be kept in sync with `lib/public/Accounts/IAccountManager.php`\n */\n\nimport { translate as t } from '@nextcloud/l10n'\n\n/** Enum of account properties */\nexport const ACCOUNT_PROPERTY_ENUM = Object.freeze({\n\tADDRESS: 'address',\n\tAVATAR: 'avatar',\n\tBIOGRAPHY: 'biography',\n\tDISPLAYNAME: 'displayname',\n\tEMAIL_COLLECTION: 'additional_mail',\n\tEMAIL: 'email',\n\tHEADLINE: 'headline',\n\tNOTIFICATION_EMAIL: 'notify_email',\n\tORGANISATION: 'organisation',\n\tPHONE: 'phone',\n\tPROFILE_ENABLED: 'profile_enabled',\n\tROLE: 'role',\n\tTWITTER: 'twitter',\n\tWEBSITE: 'website',\n})\n\n/** Enum of account properties to human readable account property names */\nexport const ACCOUNT_PROPERTY_READABLE_ENUM = Object.freeze({\n\tADDRESS: t('settings', 'Address'),\n\tAVATAR: t('settings', 'Avatar'),\n\tBIOGRAPHY: t('settings', 'About'),\n\tDISPLAYNAME: t('settings', 'Full name'),\n\tEMAIL_COLLECTION: t('settings', 'Additional email'),\n\tEMAIL: t('settings', 'Email'),\n\tHEADLINE: t('settings', 'Headline'),\n\tORGANISATION: t('settings', 'Organisation'),\n\tPHONE: t('settings', 'Phone number'),\n\tPROFILE_ENABLED: t('settings', 'Profile'),\n\tROLE: t('settings', 'Role'),\n\tTWITTER: t('settings', 'Twitter'),\n\tWEBSITE: t('settings', 'Website'),\n})\n\n/** Enum of profile specific sections to human readable names */\nexport const PROFILE_READABLE_ENUM = Object.freeze({\n\tPROFILE_VISIBILITY: t('settings', 'Profile visibility'),\n})\n\n/** Enum of readable account properties to account property keys used by the server */\nexport const PROPERTY_READABLE_KEYS_ENUM = Object.freeze({\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ADDRESS]: ACCOUNT_PROPERTY_ENUM.ADDRESS,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.AVATAR]: ACCOUNT_PROPERTY_ENUM.AVATAR,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY]: ACCOUNT_PROPERTY_ENUM.BIOGRAPHY,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.DISPLAYNAME]: ACCOUNT_PROPERTY_ENUM.DISPLAYNAME,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL_COLLECTION]: ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL]: ACCOUNT_PROPERTY_ENUM.EMAIL,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE]: ACCOUNT_PROPERTY_ENUM.HEADLINE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION]: ACCOUNT_PROPERTY_ENUM.ORGANISATION,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PHONE]: ACCOUNT_PROPERTY_ENUM.PHONE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED]: ACCOUNT_PROPERTY_ENUM.PROFILE_ENABLED,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ROLE]: ACCOUNT_PROPERTY_ENUM.ROLE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.TWITTER]: ACCOUNT_PROPERTY_ENUM.TWITTER,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.WEBSITE]: ACCOUNT_PROPERTY_ENUM.WEBSITE,\n})\n\n/**\n * Enum of account setting properties\n *\n * Account setting properties unlike account properties do not support scopes*\n */\nexport const ACCOUNT_SETTING_PROPERTY_ENUM = Object.freeze({\n\tLANGUAGE: 'language',\n})\n\n/** Enum of account setting properties to human readable setting properties */\nexport const ACCOUNT_SETTING_PROPERTY_READABLE_ENUM = Object.freeze({\n\tLANGUAGE: t('settings', 'Language'),\n})\n\n/** Enum of scopes */\nexport const SCOPE_ENUM = Object.freeze({\n\tPRIVATE: 'v2-private',\n\tLOCAL: 'v2-local',\n\tFEDERATED: 'v2-federated',\n\tPUBLISHED: 'v2-published',\n})\n\n/** Enum of readable account properties to supported scopes */\nexport const PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM = Object.freeze({\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ADDRESS]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.AVATAR]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.DISPLAYNAME]: [SCOPE_ENUM.LOCAL],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL_COLLECTION]: [SCOPE_ENUM.LOCAL],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL]: [SCOPE_ENUM.LOCAL],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PHONE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ROLE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.TWITTER]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.WEBSITE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n})\n\n/** List of readable account properties which aren't published to the lookup server */\nexport const UNPUBLISHED_READABLE_PROPERTIES = Object.freeze([\n\tACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY,\n\tACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE,\n\tACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION,\n\tACCOUNT_PROPERTY_READABLE_ENUM.ROLE,\n])\n\n/** Scope suffix */\nexport const SCOPE_SUFFIX = 'Scope'\n\n/**\n * Enum of scope names to properties\n *\n * Used for federation control*\n */\nexport const SCOPE_PROPERTY_ENUM = Object.freeze({\n\t[SCOPE_ENUM.PRIVATE]: {\n\t\tname: SCOPE_ENUM.PRIVATE,\n\t\tdisplayName: t('settings', 'Private'),\n\t\ttooltip: t('settings', 'Only visible to people matched via phone number integration through Talk on mobile'),\n\t\ttooltipDisabled: t('settings', 'Not available as this property is required for core functionality including file sharing and calendar invitations'),\n\t\ticonClass: 'icon-phone',\n\t},\n\t[SCOPE_ENUM.LOCAL]: {\n\t\tname: SCOPE_ENUM.LOCAL,\n\t\tdisplayName: t('settings', 'Local'),\n\t\ttooltip: t('settings', 'Only visible to people on this instance and guests'),\n\t\t// tooltipDisabled is not required here as this scope is supported by all account properties\n\t\ticonClass: 'icon-password',\n\t},\n\t[SCOPE_ENUM.FEDERATED]: {\n\t\tname: SCOPE_ENUM.FEDERATED,\n\t\tdisplayName: t('settings', 'Federated'),\n\t\ttooltip: t('settings', 'Only synchronize to trusted servers'),\n\t\ttooltipDisabled: t('settings', 'Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions'),\n\t\ticonClass: 'icon-contacts-dark',\n\t},\n\t[SCOPE_ENUM.PUBLISHED]: {\n\t\tname: SCOPE_ENUM.PUBLISHED,\n\t\tdisplayName: t('settings', 'Published'),\n\t\ttooltip: t('settings', 'Synchronize to trusted servers and the global and public address book'),\n\t\ttooltipDisabled: t('settings', 'Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions'),\n\t\ticonClass: 'icon-link',\n\t},\n})\n\n/** Default additional email scope */\nexport const DEFAULT_ADDITIONAL_EMAIL_SCOPE = SCOPE_ENUM.LOCAL\n\n/** Enum of verification constants, according to IAccountManager */\nexport const VERIFICATION_ENUM = Object.freeze({\n\tNOT_VERIFIED: 0,\n\tVERIFICATION_IN_PROGRESS: 1,\n\tVERIFIED: 2,\n})\n\n/**\n * Email validation regex\n *\n * Sourced from https://github.com/mpyw/FILTER_VALIDATE_EMAIL.js/blob/71e62ca48841d2246a1b531e7e84f5a01f15e615/src/regexp/ascii.ts*\n */\n// eslint-disable-next-line no-control-regex\nexport const VALIDATE_EMAIL_REGEX = /^(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){255,})(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){65,}@)(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22))(?:\\.(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-+[a-z0-9]+)*\\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-+[a-z0-9]+)*)|(?:\\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\\]))$/i\n","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div id=\"profile-settings\"\n\t\tclass=\"section\">\n\t\t<h2 class=\"inlineblock\">\n\t\t\t{{ t('settings', 'Profile') }}\n\t\t</h2>\n\n\t\t<p class=\"settings-hint\">\n\t\t\t{{ t('settings', 'Enable or disable profile by default for new users.') }}\n\t\t</p>\n\n\t\t<CheckboxRadioSwitch type=\"switch\"\n\t\t\t:checked.sync=\"initialProfileEnabledByDefault\"\n\t\t\t@update:checked=\"onProfileDefaultChange\">\n\t\t\t{{ t('settings', 'Enable') }}\n\t\t</CheckboxRadioSwitch>\n\t</div>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport { showError } from '@nextcloud/dialogs'\n\nimport { saveProfileDefault } from '../../service/ProfileService'\nimport { validateBoolean } from '../../utils/validate'\n\nimport CheckboxRadioSwitch from '@nextcloud/vue/dist/Components/CheckboxRadioSwitch'\n\nconst profileEnabledByDefault = loadState('settings', 'profileEnabledByDefault', true)\n\nexport default {\n\tname: 'ProfileSettings',\n\n\tcomponents: {\n\t\tCheckboxRadioSwitch,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialProfileEnabledByDefault: profileEnabledByDefault,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tasync onProfileDefaultChange(isEnabled) {\n\t\t\tif (validateBoolean(isEnabled)) {\n\t\t\t\tawait this.updateProfileDefault(isEnabled)\n\t\t\t}\n\t\t},\n\n\t\tasync updateProfileDefault(isEnabled) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await saveProfileDefault(isEnabled)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tisEnabled,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update profile default setting'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ isEnabled, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\tthis.initialProfileEnabledByDefault = isEnabled\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileSettings.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!./ProfileSettings.vue?vue&type=script&lang=js&\"","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\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 */\n\n/*\n * Frontend validators, less strict than backend validators\n *\n * TODO add nice validation errors for Profile page settings modal\n */\n\nimport { VALIDATE_EMAIL_REGEX } from '../constants/AccountPropertyConstants'\n\n/**\n * Validate the string input\n *\n * Generic validator just to check that input is not an empty string*\n *\n * @param {string} input the input\n * @return {boolean}\n */\nexport function validateStringInput(input) {\n\treturn input !== ''\n}\n\n/**\n * Validate the email input\n *\n * Compliant with PHP core FILTER_VALIDATE_EMAIL validator*\n *\n * Reference implementation https://github.com/mpyw/FILTER_VALIDATE_EMAIL.js/blob/71e62ca48841d2246a1b531e7e84f5a01f15e615/src/index.ts*\n *\n * @param {string} input the input\n * @return {boolean}\n */\nexport function validateEmail(input) {\n\treturn typeof input === 'string'\n\t\t&& VALIDATE_EMAIL_REGEX.test(input)\n\t\t&& input.slice(-1) !== '\\n'\n\t\t&& input.length <= 320\n\t\t&& encodeURIComponent(input).replace(/%../g, 'x').length <= 320\n}\n\n/**\n * Validate the language input\n *\n * @param {object} input the input\n * @return {boolean}\n */\nexport function validateLanguage(input) {\n\treturn input.code !== ''\n\t\t&& input.name !== ''\n\t\t&& input.name !== undefined\n}\n\n/**\n * Validate boolean input\n *\n * @param {boolean} input the input\n * @return {boolean}\n */\nexport function validateBoolean(input) {\n\treturn typeof input === 'boolean'\n}\n","import { render, staticRenderFns } from \"./ProfileSettings.vue?vue&type=template&id=414249e6&scoped=true&\"\nimport script from \"./ProfileSettings.vue?vue&type=script&lang=js&\"\nexport * from \"./ProfileSettings.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"414249e6\",\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\",attrs:{\"id\":\"profile-settings\"}},[_c('h2',{staticClass:\"inlineblock\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Profile'))+\"\\n\\t\")]),_vm._v(\" \"),_c('p',{staticClass:\"settings-hint\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Enable or disable profile by default for new users.'))+\"\\n\\t\")]),_vm._v(\" \"),_c('CheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"checked\":_vm.initialProfileEnabledByDefault},on:{\"update:checked\":[function($event){_vm.initialProfileEnabledByDefault=$event},_vm.onProfileDefaultChange]}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Enable'))+\"\\n\\t\")])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license GNU AGPL version 3 or any later version\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 */\n\nimport Vue from 'vue'\nimport { getRequestToken } from '@nextcloud/auth'\nimport { loadState } from '@nextcloud/initial-state'\nimport { translate as t } from '@nextcloud/l10n'\nimport '@nextcloud/dialogs/styles/toast.scss'\n\nimport logger from './logger'\n\nimport ProfileSettings from './components/BasicSettings/ProfileSettings'\n\n__webpack_nonce__ = btoa(getRequestToken())\n\nconst profileEnabledGlobally = loadState('settings', 'profileEnabledGlobally', true)\n\nVue.mixin({\n\tprops: {\n\t\tlogger,\n\t},\n\tmethods: {\n\t\tt,\n\t},\n})\n\nif (profileEnabledGlobally) {\n\tconst ProfileSettingsView = Vue.extend(ProfileSettings)\n\tnew ProfileSettingsView().$mount('.vue-admin-profile-settings')\n}\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 = 6192;","__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\t6192: 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));","__webpack_require__.nc = undefined;","// 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__(4157); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","getLoggerBuilder","setApp","detectUser","build","saveProfileDefault","isEnabled","url","generateOcsUrl","appId","key","confirmPassword","axios","value","res","data","ACCOUNT_PROPERTY_ENUM","Object","freeze","ADDRESS","AVATAR","BIOGRAPHY","DISPLAYNAME","EMAIL_COLLECTION","EMAIL","HEADLINE","NOTIFICATION_EMAIL","ORGANISATION","PHONE","PROFILE_ENABLED","ROLE","TWITTER","WEBSITE","ACCOUNT_PROPERTY_READABLE_ENUM","t","SCOPE_ENUM","PROFILE_VISIBILITY","LANGUAGE","PRIVATE","LOCAL","FEDERATED","PUBLISHED","name","displayName","tooltip","tooltipDisabled","iconClass","NOT_VERIFIED","VERIFICATION_IN_PROGRESS","VERIFIED","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","_v","_s","initialProfileEnabledByDefault","on","$event","onProfileDefaultChange","__webpack_nonce__","btoa","getRequestToken","profileEnabledGlobally","loadState","Vue","props","logger","methods","ProfileSettings","$mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","id","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","push","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/settings-vue-settings-admin-delegation.js b/dist/settings-vue-settings-admin-delegation.js
index 46055774dfb..990a16aebe1 100644
--- a/dist/settings-vue-settings-admin-delegation.js
+++ b/dist/settings-vue-settings-admin-delegation.js
@@ -1,3 +1,3 @@
/*! For license information please see settings-vue-settings-admin-delegation.js.LICENSE.txt */
-!function(){"use strict";var n,e={48713:function(n,e,r){var i=r(20144),o=r(7811),s=r.n(o),a=r(79753),u=r(4820),l=r(26932),c=(0,r(17499).IY)().setApp("settings").detectUser().build();function d(n,t,e,r,i,o,s){try{var a=n[o](s),u=a.value}catch(n){return void e(n)}a.done?t(u):Promise.resolve(u).then(r,i)}var p={name:"GroupSelect",components:{Multiselect:s()},props:{availableGroups:{type:Array,default:function(){return[]}},setting:{type:Object,required:!0},authorizedGroups:{type:Array,required:!0}},data:function(){var n=this;return{selected:this.authorizedGroups.filter((function(t){return t.class===n.setting.class})).map((function(t){return n.availableGroups.find((function(n){return n.gid===t.group_id}))})).filter((function(n){return void 0!==n}))}},watch:{selected:function(){this.saveGroups()}},methods:{saveGroups:function(){var n,e=this;return(n=regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return r={newGroups:e.selected,class:e.setting.class},n.prev=1,n.next=4,u.default.post((0,a.generateUrl)("/apps/settings/")+"/settings/authorizedgroups/saveSettings",r);case 4:n.next=10;break;case 6:n.prev=6,n.t0=n.catch(1),(0,l.x2)(t("settings","Unable to modify setting")),c.error("Unable to modify setting",n.t0);case 10:case"end":return n.stop()}}),n,null,[[1,6]])})),function(){var t=this,e=arguments;return new Promise((function(r,i){var o=n.apply(t,e);function s(n){d(o,r,i,s,a,"next",n)}function a(n){d(o,r,i,s,a,"throw",n)}s(void 0)}))})()}}},f=p,g=r(93379),v=r.n(g),h=r(7795),m=r.n(h),b=r(90569),y=r.n(b),w=r(3565),A=r.n(w),_=r(19216),O=r.n(_),x=r(44589),G=r.n(x),S=r(63288),C={};C.styleTagTransform=G(),C.setAttributes=A(),C.insert=y().bind(null,"head"),C.domAPI=m(),C.insertStyleElement=O(),v()(S.Z,C),S.Z&&S.Z.locals&&S.Z.locals;var k=r(51900),j=(0,k.Z)(f,(function(){var n=this,t=n.$createElement;return(n._self._c||t)("Multiselect",{staticClass:"group-multiselect",attrs:{placeholder:n.t("settings","None"),"track-by":"gid",label:"displayName",options:n.availableGroups,"open-direction":"bottom",multiple:!0,"allow-empty":!0},model:{value:n.selected,callback:function(t){n.selected=t},expression:"selected"}})}),[],!1,null,null,null).exports,z=r(16453),P={name:"AdminDelegating",components:{GroupSelect:j},data:function(){return{availableSettings:(0,z.loadState)("settings","available-settings"),availableGroups:(0,z.loadState)("settings","available-groups"),authorizedGroups:(0,z.loadState)("settings","authorized-groups")}}},Z=(0,k.Z)(P,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"section",attrs:{id:"admin-right-sub-granting"}},[e("h2",[n._v(n._s(n.t("settings","Administration privileges")))]),n._v(" "),e("p",{staticClass:"settings-hint"},[n._v("\n\t\t"+n._s(n.t("settings","Here you can decide which group can access certain sections of the administration settings."))+"\n\t")]),n._v(" "),e("div",{staticClass:"setting-list"},n._l(n.availableSettings,(function(t){return e("div",{key:t.class},[e("h3",[n._v(n._s(t.sectionName))]),n._v(" "),e("GroupSelect",{attrs:{"available-groups":n.availableGroups,"authorized-groups":n.authorizedGroups,setting:t}})],1)})),0)])}),[],!1,null,null,null).exports;i.default.prototype.OC=OC,i.default.prototype.t=t,(new(i.default.extend(Z))).$mount("#admin-right-sub-granting")},63288:function(n,t,e){var r=e(87537),i=e.n(r),o=e(23645),s=e.n(o)()(i());s.push([n.id,".group-multiselect{width:100%;margin-right:0}","",{version:3,sources:["webpack://./apps/settings/src/components/AdminDelegation/GroupSelect.vue"],names:[],mappings:"AAqEA,mBACC,UAAA,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.group-multiselect {\n\twidth: 100%;\n\tmargin-right: 0;\n}\n"],sourceRoot:""}]),t.Z=s}},r={};function i(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,i),o.loaded=!0,o.exports}i.m=e,i.amdD=function(){throw new Error("define cannot be used indirect")},i.amdO={},n=[],i.O=function(t,e,r,o){if(!e){var s=1/0;for(c=0;c<n.length;c++){e=n[c][0],r=n[c][1],o=n[c][2];for(var a=!0,u=0;u<e.length;u++)(!1&o||s>=o)&&Object.keys(i.O).every((function(n){return i.O[n](e[u])}))?e.splice(u--,1):(a=!1,o<s&&(s=o));if(a){n.splice(c--,1);var l=r();void 0!==l&&(t=l)}}return t}o=o||0;for(var c=n.length;c>0&&n[c-1][2]>o;c--)n[c]=n[c-1];n[c]=[e,r,o]},i.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return i.d(t,{a:t}),t},i.d=function(n,t){for(var e in t)i.o(t,e)&&!i.o(n,e)&&Object.defineProperty(n,e,{enumerable:!0,get:t[e]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),i.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},i.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},i.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n},i.j=6638,function(){i.b=document.baseURI||self.location.href;var n={6638:0};i.O.j=function(t){return 0===n[t]};var t=function(t,e){var r,o,s=e[0],a=e[1],u=e[2],l=0;if(s.some((function(t){return 0!==n[t]}))){for(r in a)i.o(a,r)&&(i.m[r]=a[r]);if(u)var c=u(i)}for(t&&t(e);l<s.length;l++)o=s[l],i.o(n,o)&&n[o]&&n[o][0](),n[o]=0;return i.O(c)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(t.bind(null,0)),e.push=t.bind(null,e.push.bind(e))}();var o=i.O(void 0,[7874],(function(){return i(48713)}));o=i.O(o)}();
-//# sourceMappingURL=settings-vue-settings-admin-delegation.js.map?v=31d7a69dc8b6e1ab6404 \ No newline at end of file
+!function(){"use strict";var n,e={48713:function(n,e,r){var i=r(20144),o=r(7811),s=r.n(o),a=r(79753),u=r(4820),l=r(26932),c=(0,r(17499).IY)().setApp("settings").detectUser().build();function d(n,t,e,r,i,o,s){try{var a=n[o](s),u=a.value}catch(n){return void e(n)}a.done?t(u):Promise.resolve(u).then(r,i)}var p={name:"GroupSelect",components:{Multiselect:s()},props:{availableGroups:{type:Array,default:function(){return[]}},setting:{type:Object,required:!0},authorizedGroups:{type:Array,required:!0}},data:function(){var n=this;return{selected:this.authorizedGroups.filter((function(t){return t.class===n.setting.class})).map((function(t){return n.availableGroups.find((function(n){return n.gid===t.group_id}))})).filter((function(n){return void 0!==n}))}},watch:{selected:function(){this.saveGroups()}},methods:{saveGroups:function(){var n,e=this;return(n=regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return r={newGroups:e.selected,class:e.setting.class},n.prev=1,n.next=4,u.default.post((0,a.generateUrl)("/apps/settings/")+"/settings/authorizedgroups/saveSettings",r);case 4:n.next=10;break;case 6:n.prev=6,n.t0=n.catch(1),(0,l.x2)(t("settings","Unable to modify setting")),c.error("Unable to modify setting",n.t0);case 10:case"end":return n.stop()}}),n,null,[[1,6]])})),function(){var t=this,e=arguments;return new Promise((function(r,i){var o=n.apply(t,e);function s(n){d(o,r,i,s,a,"next",n)}function a(n){d(o,r,i,s,a,"throw",n)}s(void 0)}))})()}}},f=p,g=r(93379),v=r.n(g),h=r(7795),m=r.n(h),b=r(90569),y=r.n(b),w=r(3565),A=r.n(w),_=r(19216),O=r.n(_),x=r(44589),G=r.n(x),S=r(63288),C={};C.styleTagTransform=G(),C.setAttributes=A(),C.insert=y().bind(null,"head"),C.domAPI=m(),C.insertStyleElement=O(),v()(S.Z,C),S.Z&&S.Z.locals&&S.Z.locals;var k=r(51900),j=(0,k.Z)(f,(function(){var n=this,t=n.$createElement;return(n._self._c||t)("Multiselect",{staticClass:"group-multiselect",attrs:{placeholder:n.t("settings","None"),"track-by":"gid",label:"displayName",options:n.availableGroups,"open-direction":"bottom",multiple:!0,"allow-empty":!0},model:{value:n.selected,callback:function(t){n.selected=t},expression:"selected"}})}),[],!1,null,null,null).exports,z=r(16453),P={name:"AdminDelegating",components:{GroupSelect:j},data:function(){return{availableSettings:(0,z.loadState)("settings","available-settings"),availableGroups:(0,z.loadState)("settings","available-groups"),authorizedGroups:(0,z.loadState)("settings","authorized-groups")}}},Z=(0,k.Z)(P,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"section",attrs:{id:"admin-right-sub-granting"}},[e("h2",[n._v(n._s(n.t("settings","Administration privileges")))]),n._v(" "),e("p",{staticClass:"settings-hint"},[n._v("\n\t\t"+n._s(n.t("settings","Here you can decide which group can access certain sections of the administration settings."))+"\n\t")]),n._v(" "),e("div",{staticClass:"setting-list"},n._l(n.availableSettings,(function(t){return e("div",{key:t.class},[e("h3",[n._v(n._s(t.sectionName))]),n._v(" "),e("GroupSelect",{attrs:{"available-groups":n.availableGroups,"authorized-groups":n.authorizedGroups,setting:t}})],1)})),0)])}),[],!1,null,null,null).exports;i.default.prototype.OC=OC,i.default.prototype.t=t,(new(i.default.extend(Z))).$mount("#admin-right-sub-granting")},63288:function(n,t,e){var r=e(87537),i=e.n(r),o=e(23645),s=e.n(o)()(i());s.push([n.id,".group-multiselect{width:100%;margin-right:0}","",{version:3,sources:["webpack://./apps/settings/src/components/AdminDelegation/GroupSelect.vue"],names:[],mappings:"AAqEA,mBACC,UAAA,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.group-multiselect {\n\twidth: 100%;\n\tmargin-right: 0;\n}\n"],sourceRoot:""}]),t.Z=s}},r={};function i(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,i),o.loaded=!0,o.exports}i.m=e,i.amdD=function(){throw new Error("define cannot be used indirect")},i.amdO={},n=[],i.O=function(t,e,r,o){if(!e){var s=1/0;for(c=0;c<n.length;c++){e=n[c][0],r=n[c][1],o=n[c][2];for(var a=!0,u=0;u<e.length;u++)(!1&o||s>=o)&&Object.keys(i.O).every((function(n){return i.O[n](e[u])}))?e.splice(u--,1):(a=!1,o<s&&(s=o));if(a){n.splice(c--,1);var l=r();void 0!==l&&(t=l)}}return t}o=o||0;for(var c=n.length;c>0&&n[c-1][2]>o;c--)n[c]=n[c-1];n[c]=[e,r,o]},i.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return i.d(t,{a:t}),t},i.d=function(n,t){for(var e in t)i.o(t,e)&&!i.o(n,e)&&Object.defineProperty(n,e,{enumerable:!0,get:t[e]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),i.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},i.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},i.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n},i.j=6638,function(){i.b=document.baseURI||self.location.href;var n={6638:0};i.O.j=function(t){return 0===n[t]};var t=function(t,e){var r,o,s=e[0],a=e[1],u=e[2],l=0;if(s.some((function(t){return 0!==n[t]}))){for(r in a)i.o(a,r)&&(i.m[r]=a[r]);if(u)var c=u(i)}for(t&&t(e);l<s.length;l++)o=s[l],i.o(n,o)&&n[o]&&n[o][0](),n[o]=0;return i.O(c)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(t.bind(null,0)),e.push=t.bind(null,e.push.bind(e))}(),i.nc=void 0;var o=i.O(void 0,[7874],(function(){return i(48713)}));o=i.O(o)}();
+//# sourceMappingURL=settings-vue-settings-admin-delegation.js.map?v=4b3f01337eb963bb1638 \ No newline at end of file
diff --git a/dist/settings-vue-settings-admin-delegation.js.map b/dist/settings-vue-settings-admin-delegation.js.map
index dd1734ef157..fcea14f251f 100644
--- a/dist/settings-vue-settings-admin-delegation.js.map
+++ b/dist/settings-vue-settings-admin-delegation.js.map
@@ -1 +1 @@
-{"version":3,"file":"settings-vue-settings-admin-delegation.js?v=31d7a69dc8b6e1ab6404","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/settings/src/logger.js","webpack:///nextcloud/apps/settings/src/components/AdminDelegation/GroupSelect.vue","webpack:///nextcloud/apps/settings/src/components/AdminDelegation/GroupSelect.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/AdminDelegation/GroupSelect.vue?4c86","webpack://nextcloud/./apps/settings/src/components/AdminDelegation/GroupSelect.vue?b891","webpack:///nextcloud/apps/settings/src/components/AdminDelegation/GroupSelect.vue?vue&type=template&id=50ff2164&","webpack:///nextcloud/apps/settings/src/components/AdminDelegating.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/AdminDelegating.vue","webpack://nextcloud/./apps/settings/src/components/AdminDelegating.vue?fc9d","webpack:///nextcloud/apps/settings/src/components/AdminDelegating.vue?vue&type=template&id=ae9ce460&","webpack:///nextcloud/apps/settings/src/main-admin-delegation.js","webpack:///nextcloud/apps/settings/src/components/AdminDelegation/GroupSelect.vue?vue&type=style&index=0&lang=scss&","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 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('settings')\n\t.detectUser()\n\t.build()\n","<template>\n\t<Multiselect v-model=\"selected\"\n\t\tclass=\"group-multiselect\"\n\t\t:placeholder=\"t('settings', 'None')\"\n\t\ttrack-by=\"gid\"\n\t\tlabel=\"displayName\"\n\t\t:options=\"availableGroups\"\n\t\topen-direction=\"bottom\"\n\t\t:multiple=\"true\"\n\t\t:allow-empty=\"true\" />\n</template>\n\n<script>\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\nimport { generateUrl } from '@nextcloud/router'\nimport axios from '@nextcloud/axios'\nimport { showError } from '@nextcloud/dialogs'\nimport logger from '../../logger'\n\nexport default {\n\tname: 'GroupSelect',\n\tcomponents: {\n\t\tMultiselect,\n\t},\n\tprops: {\n\t\tavailableGroups: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tsetting: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tauthorizedGroups: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tselected: this.authorizedGroups\n\t\t\t\t.filter((group) => group.class === this.setting.class)\n\t\t\t\t.map((groupToMap) => this.availableGroups.find((group) => group.gid === groupToMap.group_id))\n\t\t\t\t.filter((group) => group !== undefined),\n\t\t}\n\t},\n\twatch: {\n\t\tselected() {\n\t\t\tthis.saveGroups()\n\t\t},\n\t},\n\tmethods: {\n\t\tasync saveGroups() {\n\t\t\tconst data = {\n\t\t\t\tnewGroups: this.selected,\n\t\t\t\tclass: this.setting.class,\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait axios.post(generateUrl('/apps/settings/') + '/settings/authorizedgroups/saveSettings', data)\n\t\t\t} catch (e) {\n\t\t\t\tshowError(t('settings', 'Unable to modify setting'))\n\t\t\t\tlogger.error('Unable to modify setting', e)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n.group-multiselect {\n\twidth: 100%;\n\tmargin-right: 0;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupSelect.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!./GroupSelect.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!./GroupSelect.vue?vue&type=style&index=0&lang=scss&\";\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!./GroupSelect.vue?vue&type=style&index=0&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./GroupSelect.vue?vue&type=template&id=50ff2164&\"\nimport script from \"./GroupSelect.vue?vue&type=script&lang=js&\"\nexport * from \"./GroupSelect.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GroupSelect.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Multiselect',{staticClass:\"group-multiselect\",attrs:{\"placeholder\":_vm.t('settings', 'None'),\"track-by\":\"gid\",\"label\":\"displayName\",\"options\":_vm.availableGroups,\"open-direction\":\"bottom\",\"multiple\":true,\"allow-empty\":true},model:{value:(_vm.selected),callback:function ($$v) {_vm.selected=$$v},expression:\"selected\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminDelegating.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!./AdminDelegating.vue?vue&type=script&lang=js&\"","<template>\n\t<div id=\"admin-right-sub-granting\" class=\"section\">\n\t\t<h2>{{ t('settings', 'Administration privileges') }}</h2>\n\t\t<p class=\"settings-hint\">\n\t\t\t{{ t('settings', 'Here you can decide which group can access certain sections of the administration settings.') }}\n\t\t</p>\n\n\t\t<div class=\"setting-list\">\n\t\t\t<div v-for=\"setting in availableSettings\" :key=\"setting.class\">\n\t\t\t\t<h3>{{ setting.sectionName }}</h3>\n\t\t\t\t<GroupSelect :available-groups=\"availableGroups\" :authorized-groups=\"authorizedGroups\" :setting=\"setting\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport GroupSelect from './AdminDelegation/GroupSelect'\nimport { loadState } from '@nextcloud/initial-state'\n\nexport default {\n\tname: 'AdminDelegating',\n\tcomponents: {\n\t\tGroupSelect,\n\t},\n\tdata() {\n\t\tconst availableSettings = loadState('settings', 'available-settings')\n\t\tconst availableGroups = loadState('settings', 'available-groups')\n\t\tconst authorizedGroups = loadState('settings', 'authorized-groups')\n\t\treturn {\n\t\t\tavailableSettings,\n\t\t\tavailableGroups,\n\t\t\tauthorizedGroups,\n\t\t}\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./AdminDelegating.vue?vue&type=template&id=ae9ce460&\"\nimport script from \"./AdminDelegating.vue?vue&type=script&lang=js&\"\nexport * from \"./AdminDelegating.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"section\",attrs:{\"id\":\"admin-right-sub-granting\"}},[_c('h2',[_vm._v(_vm._s(_vm.t('settings', 'Administration privileges')))]),_vm._v(\" \"),_c('p',{staticClass:\"settings-hint\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Here you can decide which group can access certain sections of the administration settings.'))+\"\\n\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"setting-list\"},_vm._l((_vm.availableSettings),function(setting){return _c('div',{key:setting.class},[_c('h3',[_vm._v(_vm._s(setting.sectionName))]),_vm._v(\" \"),_c('GroupSelect',{attrs:{\"available-groups\":_vm.availableGroups,\"authorized-groups\":_vm.authorizedGroups,\"setting\":setting}})],1)}),0)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2021 Carl Schwan <carl@carlschwan.eu>\n *\n * @author Carl Schwan <carl@carlschwan.eu>\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 */\n\nimport Vue from 'vue'\nimport App from './components/AdminDelegating.vue'\n\n// bind to window\nVue.prototype.OC = OC\nVue.prototype.t = t\n\nconst View = Vue.extend(App)\nconst accessibility = new View()\naccessibility.$mount('#admin-right-sub-granting')\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, \".group-multiselect{width:100%;margin-right:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AdminDelegation/GroupSelect.vue\"],\"names\":[],\"mappings\":\"AAqEA,mBACC,UAAA,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.group-multiselect {\\n\\twidth: 100%;\\n\\tmargin-right: 0;\\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 = 6638;","__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\t6638: 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__(48713); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","getLoggerBuilder","setApp","detectUser","build","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_self","_c","staticClass","attrs","t","availableGroups","model","value","callback","$$v","selected","expression","_v","_s","_l","setting","key","class","sectionName","authorizedGroups","Vue","OC","App","$mount","___CSS_LOADER_EXPORT___","push","module","id","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"settings-vue-settings-admin-delegation.js?v=4b3f01337eb963bb1638","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/settings/src/logger.js","webpack:///nextcloud/apps/settings/src/components/AdminDelegation/GroupSelect.vue","webpack:///nextcloud/apps/settings/src/components/AdminDelegation/GroupSelect.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/AdminDelegation/GroupSelect.vue?4c86","webpack://nextcloud/./apps/settings/src/components/AdminDelegation/GroupSelect.vue?b891","webpack:///nextcloud/apps/settings/src/components/AdminDelegation/GroupSelect.vue?vue&type=template&id=50ff2164&","webpack:///nextcloud/apps/settings/src/components/AdminDelegating.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/AdminDelegating.vue","webpack://nextcloud/./apps/settings/src/components/AdminDelegating.vue?fc9d","webpack:///nextcloud/apps/settings/src/components/AdminDelegating.vue?vue&type=template&id=ae9ce460&","webpack:///nextcloud/apps/settings/src/main-admin-delegation.js","webpack:///nextcloud/apps/settings/src/components/AdminDelegation/GroupSelect.vue?vue&type=style&index=0&lang=scss&","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/runtime/nonce","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 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('settings')\n\t.detectUser()\n\t.build()\n","<template>\n\t<Multiselect v-model=\"selected\"\n\t\tclass=\"group-multiselect\"\n\t\t:placeholder=\"t('settings', 'None')\"\n\t\ttrack-by=\"gid\"\n\t\tlabel=\"displayName\"\n\t\t:options=\"availableGroups\"\n\t\topen-direction=\"bottom\"\n\t\t:multiple=\"true\"\n\t\t:allow-empty=\"true\" />\n</template>\n\n<script>\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\nimport { generateUrl } from '@nextcloud/router'\nimport axios from '@nextcloud/axios'\nimport { showError } from '@nextcloud/dialogs'\nimport logger from '../../logger'\n\nexport default {\n\tname: 'GroupSelect',\n\tcomponents: {\n\t\tMultiselect,\n\t},\n\tprops: {\n\t\tavailableGroups: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tsetting: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tauthorizedGroups: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tselected: this.authorizedGroups\n\t\t\t\t.filter((group) => group.class === this.setting.class)\n\t\t\t\t.map((groupToMap) => this.availableGroups.find((group) => group.gid === groupToMap.group_id))\n\t\t\t\t.filter((group) => group !== undefined),\n\t\t}\n\t},\n\twatch: {\n\t\tselected() {\n\t\t\tthis.saveGroups()\n\t\t},\n\t},\n\tmethods: {\n\t\tasync saveGroups() {\n\t\t\tconst data = {\n\t\t\t\tnewGroups: this.selected,\n\t\t\t\tclass: this.setting.class,\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait axios.post(generateUrl('/apps/settings/') + '/settings/authorizedgroups/saveSettings', data)\n\t\t\t} catch (e) {\n\t\t\t\tshowError(t('settings', 'Unable to modify setting'))\n\t\t\t\tlogger.error('Unable to modify setting', e)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n.group-multiselect {\n\twidth: 100%;\n\tmargin-right: 0;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupSelect.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!./GroupSelect.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!./GroupSelect.vue?vue&type=style&index=0&lang=scss&\";\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!./GroupSelect.vue?vue&type=style&index=0&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./GroupSelect.vue?vue&type=template&id=50ff2164&\"\nimport script from \"./GroupSelect.vue?vue&type=script&lang=js&\"\nexport * from \"./GroupSelect.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GroupSelect.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Multiselect',{staticClass:\"group-multiselect\",attrs:{\"placeholder\":_vm.t('settings', 'None'),\"track-by\":\"gid\",\"label\":\"displayName\",\"options\":_vm.availableGroups,\"open-direction\":\"bottom\",\"multiple\":true,\"allow-empty\":true},model:{value:(_vm.selected),callback:function ($$v) {_vm.selected=$$v},expression:\"selected\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminDelegating.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!./AdminDelegating.vue?vue&type=script&lang=js&\"","<template>\n\t<div id=\"admin-right-sub-granting\" class=\"section\">\n\t\t<h2>{{ t('settings', 'Administration privileges') }}</h2>\n\t\t<p class=\"settings-hint\">\n\t\t\t{{ t('settings', 'Here you can decide which group can access certain sections of the administration settings.') }}\n\t\t</p>\n\n\t\t<div class=\"setting-list\">\n\t\t\t<div v-for=\"setting in availableSettings\" :key=\"setting.class\">\n\t\t\t\t<h3>{{ setting.sectionName }}</h3>\n\t\t\t\t<GroupSelect :available-groups=\"availableGroups\" :authorized-groups=\"authorizedGroups\" :setting=\"setting\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport GroupSelect from './AdminDelegation/GroupSelect'\nimport { loadState } from '@nextcloud/initial-state'\n\nexport default {\n\tname: 'AdminDelegating',\n\tcomponents: {\n\t\tGroupSelect,\n\t},\n\tdata() {\n\t\tconst availableSettings = loadState('settings', 'available-settings')\n\t\tconst availableGroups = loadState('settings', 'available-groups')\n\t\tconst authorizedGroups = loadState('settings', 'authorized-groups')\n\t\treturn {\n\t\t\tavailableSettings,\n\t\t\tavailableGroups,\n\t\t\tauthorizedGroups,\n\t\t}\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./AdminDelegating.vue?vue&type=template&id=ae9ce460&\"\nimport script from \"./AdminDelegating.vue?vue&type=script&lang=js&\"\nexport * from \"./AdminDelegating.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"section\",attrs:{\"id\":\"admin-right-sub-granting\"}},[_c('h2',[_vm._v(_vm._s(_vm.t('settings', 'Administration privileges')))]),_vm._v(\" \"),_c('p',{staticClass:\"settings-hint\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Here you can decide which group can access certain sections of the administration settings.'))+\"\\n\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"setting-list\"},_vm._l((_vm.availableSettings),function(setting){return _c('div',{key:setting.class},[_c('h3',[_vm._v(_vm._s(setting.sectionName))]),_vm._v(\" \"),_c('GroupSelect',{attrs:{\"available-groups\":_vm.availableGroups,\"authorized-groups\":_vm.authorizedGroups,\"setting\":setting}})],1)}),0)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2021 Carl Schwan <carl@carlschwan.eu>\n *\n * @author Carl Schwan <carl@carlschwan.eu>\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 */\n\nimport Vue from 'vue'\nimport App from './components/AdminDelegating.vue'\n\n// bind to window\nVue.prototype.OC = OC\nVue.prototype.t = t\n\nconst View = Vue.extend(App)\nconst accessibility = new View()\naccessibility.$mount('#admin-right-sub-granting')\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, \".group-multiselect{width:100%;margin-right:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AdminDelegation/GroupSelect.vue\"],\"names\":[],\"mappings\":\"AAqEA,mBACC,UAAA,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.group-multiselect {\\n\\twidth: 100%;\\n\\tmargin-right: 0;\\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 = 6638;","__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\t6638: 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));","__webpack_require__.nc = undefined;","// 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__(48713); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","getLoggerBuilder","setApp","detectUser","build","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_self","_c","staticClass","attrs","t","availableGroups","model","value","callback","$$v","selected","expression","_v","_s","_l","setting","key","class","sectionName","authorizedGroups","Vue","OC","App","$mount","___CSS_LOADER_EXPORT___","push","module","id","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/settings-vue-settings-admin-security.js b/dist/settings-vue-settings-admin-security.js
index cf799480ca1..cc0115ac255 100644
--- a/dist/settings-vue-settings-admin-security.js
+++ b/dist/settings-vue-settings-admin-security.js
@@ -1,3 +1,3 @@
/*! For license information please see settings-vue-settings-admin-security.js.LICENSE.txt */
-!function(){"use strict";var e,n={11318:function(e,n,o){var r=o(16453),s=o(20144),i=o(4820),a=o(7811),c=o.n(a),u=o(1412),l=o.n(u),d=o(96486),f=o.n(d),p=o(79753),h={name:"AdminTwoFactor",components:{Multiselect:c(),Button:l()},data:function(){return{loading:!1,dirty:!1,groups:[],loadingGroups:!1}},computed:{enforced:{get:function(){return this.$store.state.enforced},set:function(t){this.dirty=!0,this.$store.commit("setEnforced",t)}},enforcedGroups:{get:function(){return this.$store.state.enforcedGroups},set:function(t){this.dirty=!0,this.$store.commit("setEnforcedGroups",t)}},excludedGroups:{get:function(){return this.$store.state.excludedGroups},set:function(t){this.dirty=!0,this.$store.commit("setExcludedGroups",t)}}},mounted:function(){this.groups=f().sortedUniq(f().uniq(this.enforcedGroups.concat(this.excludedGroups))),this.searchGroup("")},methods:{searchGroup:f().debounce((function(t){var e=this;this.loadingGroups=!0,i.default.get((0,p.generateOcsUrl)("cloud/groups?offset=0&search={query}&limit=20",{query:t})).then((function(t){return t.data.ocs})).then((function(t){return t.data.groups})).then((function(t){e.groups=f().sortedUniq(f().uniq(e.groups.concat(t)))})).catch((function(t){return console.error("could not search groups",t)})).then((function(){e.loadingGroups=!1}))}),500),saveChanges:function(){var t=this;this.loading=!0;var e={enforced:this.enforced,enforcedGroups:this.enforcedGroups,excludedGroups:this.excludedGroups};i.default.put((0,p.generateUrl)("/settings/api/admin/twofactorauth"),e).then((function(t){return t.data})).then((function(e){t.state=e,t.dirty=!1})).catch((function(t){console.error("could not save changes",t)})).then((function(){t.loading=!1}))}}},g=o(93379),m=o.n(g),v=o(7795),b=o.n(v),w=o(90569),y=o.n(w),x=o(3565),G=o.n(x),A=o(19216),_=o.n(A),C=o(44589),k=o.n(C),E=o(37331),O={};O.styleTagTransform=k(),O.setAttributes=G(),O.insert=y().bind(null,"head"),O.domAPI=b(),O.insertStyleElement=_(),m()(E.Z,O),E.Z&&E.Z.locals&&E.Z.locals;var T=(0,o(51900).Z)(h,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[n("p",{staticClass:"settings-hint"},[t._v("\n\t\t"+t._s(t.t("settings","Two-factor authentication can be enforced for all users and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system."))+"\n\t")]),t._v(" "),t.loading?n("p",[n("span",{staticClass:"icon-loading-small two-factor-loading"}),t._v(" "),n("span",[t._v(t._s(t.t("settings","Enforce two-factor authentication")))])]):n("p",[n("input",{directives:[{name:"model",rawName:"v-model",value:t.enforced,expression:"enforced"}],staticClass:"checkbox",attrs:{id:"two-factor-enforced",type:"checkbox"},domProps:{checked:Array.isArray(t.enforced)?t._i(t.enforced,null)>-1:t.enforced},on:{change:function(e){var n=t.enforced,o=e.target,r=!!o.checked;if(Array.isArray(n)){var s=t._i(n,null);o.checked?s<0&&(t.enforced=n.concat([null])):s>-1&&(t.enforced=n.slice(0,s).concat(n.slice(s+1)))}else t.enforced=r}}}),t._v(" "),n("label",{attrs:{for:"two-factor-enforced"}},[t._v(t._s(t.t("settings","Enforce two-factor authentication")))])]),t._v(" "),t.enforced?[n("h3",[t._v(t._s(t.t("settings","Limit to groups")))]),t._v("\n\t\t"+t._s(t.t("settings","Enforcement of two-factor authentication can be set for certain groups only."))+"\n\t\t"),n("p",[t._v("\n\t\t\t"+t._s(t.t("settings","Two-factor authentication is enforced for all members of the following groups."))+"\n\t\t")]),t._v(" "),n("p",[n("Multiselect",{attrs:{options:t.groups,placeholder:t.t("settings","Enforced groups"),disabled:t.loading,multiple:!0,searchable:!0,loading:t.loadingGroups,"show-no-options":!1,"close-on-select":!1},on:{"search-change":t.searchGroup},model:{value:t.enforcedGroups,callback:function(e){t.enforcedGroups=e},expression:"enforcedGroups"}})],1),t._v(" "),n("p",[t._v("\n\t\t\t"+t._s(t.t("settings","Two-factor authentication is not enforced for members of the following groups."))+"\n\t\t")]),t._v(" "),n("p",[n("Multiselect",{attrs:{options:t.groups,placeholder:t.t("settings","Excluded groups"),disabled:t.loading,multiple:!0,searchable:!0,loading:t.loadingGroups,"show-no-options":!1,"close-on-select":!1},on:{"search-change":t.searchGroup},model:{value:t.excludedGroups,callback:function(e){t.excludedGroups=e},expression:"excludedGroups"}})],1),t._v(" "),n("p",[n("em",[t._v("\n\t\t\t\t"+t._s(t.t("settings","When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced."))+"\n\t\t\t")])])]:t._e(),t._v(" "),n("p",[t.dirty?n("Button",{attrs:{type:"primary",disabled:t.loading},on:{click:t.saveChanges}},[t._v("\n\t\t\t"+t._s(t.t("settings","Save changes"))+"\n\t\t")]):t._e()],1)],2)}),[],!1,null,null,null).exports,q=o(20629);s.default.use(q.ZP);var $={setEnforced:function(t,e){s.default.set(t,"enforced",e)},setEnforcedGroups:function(t,e){s.default.set(t,"enforcedGroups",e)},setExcludedGroups:function(t,e){s.default.set(t,"excludedGroups",e)}},F=new q.yh({strict:!1,state:{enforced:!1,enforcedGroups:[],excludedGroups:[]},mutations:$});o.nc=btoa(OC.requestToken),s.default.prototype.t=t,window.OC=window.OC||{},window.OC.Settings=window.OC.Settings||{},F.replaceState((0,r.loadState)("settings","mandatory2FAState")),new(s.default.extend(T))({store:F}).$mount("#two-factor-auth-settings")},37331:function(t,e,n){var o=n(87537),r=n.n(o),s=n(23645),i=n.n(s)()(r());i.push([t.id,"\n.two-factor-loading {\n\tdisplay: inline-block;\n\tvertical-align: sub;\n\tmargin-left: -2px;\n\tmargin-right: 1px;\n}\n","",{version:3,sources:["webpack://./apps/settings/src/components/AdminTwoFactor.vue"],names:[],mappings:";AAkKA;CACA,qBAAA;CACA,mBAAA;CACA,iBAAA;CACA,iBAAA;AACA",sourcesContent:["<template>\n\t<div>\n\t\t<p class=\"settings-hint\">\n\t\t\t{{ t('settings', 'Two-factor authentication can be enforced for all users and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system.') }}\n\t\t</p>\n\t\t<p v-if=\"loading\">\n\t\t\t<span class=\"icon-loading-small two-factor-loading\" />\n\t\t\t<span>{{ t('settings', 'Enforce two-factor authentication') }}</span>\n\t\t</p>\n\t\t<p v-else>\n\t\t\t<input id=\"two-factor-enforced\"\n\t\t\t\tv-model=\"enforced\"\n\t\t\t\ttype=\"checkbox\"\n\t\t\t\tclass=\"checkbox\">\n\t\t\t<label for=\"two-factor-enforced\">{{ t('settings', 'Enforce two-factor authentication') }}</label>\n\t\t</p>\n\t\t<template v-if=\"enforced\">\n\t\t\t<h3>{{ t('settings', 'Limit to groups') }}</h3>\n\t\t\t{{ t('settings', 'Enforcement of two-factor authentication can be set for certain groups only.') }}\n\t\t\t<p>\n\t\t\t\t{{ t('settings', 'Two-factor authentication is enforced for all members of the following groups.') }}\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<Multiselect v-model=\"enforcedGroups\"\n\t\t\t\t\t:options=\"groups\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Enforced groups')\"\n\t\t\t\t\t:disabled=\"loading\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\t:searchable=\"true\"\n\t\t\t\t\t:loading=\"loadingGroups\"\n\t\t\t\t\t:show-no-options=\"false\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t@search-change=\"searchGroup\" />\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t{{ t('settings', 'Two-factor authentication is not enforced for members of the following groups.') }}\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<Multiselect v-model=\"excludedGroups\"\n\t\t\t\t\t:options=\"groups\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Excluded groups')\"\n\t\t\t\t\t:disabled=\"loading\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\t:searchable=\"true\"\n\t\t\t\t\t:loading=\"loadingGroups\"\n\t\t\t\t\t:show-no-options=\"false\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t@search-change=\"searchGroup\" />\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<em>\n\t\t\t\t\t\x3c!-- this text is also found in the documentation. update it there as well if it ever changes --\x3e\n\t\t\t\t\t{{ t('settings', 'When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced.') }}\n\t\t\t\t</em>\n\t\t\t</p>\n\t\t</template>\n\t\t<p>\n\t\t\t<Button v-if=\"dirty\"\n\t\t\t\ttype=\"primary\"\n\t\t\t\t:disabled=\"loading\"\n\t\t\t\t@click=\"saveChanges\">\n\t\t\t\t{{ t('settings', 'Save changes') }}\n\t\t\t</Button>\n\t\t</p>\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\nimport Button from '@nextcloud/vue/dist/Components/Button'\n\nimport _ from 'lodash'\nimport { generateUrl, generateOcsUrl } from '@nextcloud/router'\n\nexport default {\n\tname: 'AdminTwoFactor',\n\tcomponents: {\n\t\tMultiselect,\n\t\tButton,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\tdirty: false,\n\t\t\tgroups: [],\n\t\t\tloadingGroups: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tenforced: {\n\t\t\tget() {\n\t\t\t\treturn this.$store.state.enforced\n\t\t\t},\n\t\t\tset(val) {\n\t\t\t\tthis.dirty = true\n\t\t\t\tthis.$store.commit('setEnforced', val)\n\t\t\t},\n\t\t},\n\t\tenforcedGroups: {\n\t\t\tget() {\n\t\t\t\treturn this.$store.state.enforcedGroups\n\t\t\t},\n\t\t\tset(val) {\n\t\t\t\tthis.dirty = true\n\t\t\t\tthis.$store.commit('setEnforcedGroups', val)\n\t\t\t},\n\t\t},\n\t\texcludedGroups: {\n\t\t\tget() {\n\t\t\t\treturn this.$store.state.excludedGroups\n\t\t\t},\n\t\t\tset(val) {\n\t\t\t\tthis.dirty = true\n\t\t\t\tthis.$store.commit('setExcludedGroups', val)\n\t\t\t},\n\t\t},\n\t},\n\tmounted() {\n\t\t// Groups are loaded dynamically, but the assigned ones *should*\n\t\t// be valid groups, so let's add them as initial state\n\t\tthis.groups = _.sortedUniq(_.uniq(this.enforcedGroups.concat(this.excludedGroups)))\n\n\t\t// Populate the groups with a first set so the dropdown is not empty\n\t\t// when opening the page the first time\n\t\tthis.searchGroup('')\n\t},\n\tmethods: {\n\t\tsearchGroup: _.debounce(function(query) {\n\t\t\tthis.loadingGroups = true\n\t\t\taxios.get(generateOcsUrl('cloud/groups?offset=0&search={query}&limit=20', { query }))\n\t\t\t\t.then(res => res.data.ocs)\n\t\t\t\t.then(ocs => ocs.data.groups)\n\t\t\t\t.then(groups => { this.groups = _.sortedUniq(_.uniq(this.groups.concat(groups))) })\n\t\t\t\t.catch(err => console.error('could not search groups', err))\n\t\t\t\t.then(() => { this.loadingGroups = false })\n\t\t}, 500),\n\n\t\tsaveChanges() {\n\t\t\tthis.loading = true\n\n\t\t\tconst data = {\n\t\t\t\tenforced: this.enforced,\n\t\t\t\tenforcedGroups: this.enforcedGroups,\n\t\t\t\texcludedGroups: this.excludedGroups,\n\t\t\t}\n\t\t\taxios.put(generateUrl('/settings/api/admin/twofactorauth'), data)\n\t\t\t\t.then(resp => resp.data)\n\t\t\t\t.then(state => {\n\t\t\t\t\tthis.state = state\n\t\t\t\t\tthis.dirty = false\n\t\t\t\t})\n\t\t\t\t.catch(err => {\n\t\t\t\t\tconsole.error('could not save changes', err)\n\t\t\t\t})\n\t\t\t\t.then(() => { this.loading = false })\n\t\t},\n\t},\n}\n<\/script>\n\n<style>\n\t.two-factor-loading {\n\t\tdisplay: inline-block;\n\t\tvertical-align: sub;\n\t\tmargin-left: -2px;\n\t\tmargin-right: 1px;\n\t}\n</style>\n"],sourceRoot:""}]),e.Z=i}},o={};function r(t){var e=o[t];if(void 0!==e)return e.exports;var s=o[t]={id:t,loaded:!1,exports:{}};return n[t].call(s.exports,s,s.exports,r),s.loaded=!0,s.exports}r.m=n,r.amdD=function(){throw new Error("define cannot be used indirect")},r.amdO={},e=[],r.O=function(t,n,o,s){if(!n){var i=1/0;for(l=0;l<e.length;l++){n=e[l][0],o=e[l][1],s=e[l][2];for(var a=!0,c=0;c<n.length;c++)(!1&s||i>=s)&&Object.keys(r.O).every((function(t){return r.O[t](n[c])}))?n.splice(c--,1):(a=!1,s<i&&(i=s));if(a){e.splice(l--,1);var u=o();void 0!==u&&(t=u)}}return t}s=s||0;for(var l=e.length;l>0&&e[l-1][2]>s;l--)e[l]=e[l-1];e[l]=[n,o,s]},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,{a:e}),e},r.d=function(t,e){for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},r.j=788,function(){r.b=document.baseURI||self.location.href;var t={788:0};r.O.j=function(e){return 0===t[e]};var e=function(e,n){var o,s,i=n[0],a=n[1],c=n[2],u=0;if(i.some((function(e){return 0!==t[e]}))){for(o in a)r.o(a,o)&&(r.m[o]=a[o]);if(c)var l=c(r)}for(e&&e(n);u<i.length;u++)s=i[u],r.o(t,s)&&t[s]&&t[s][0](),t[s]=0;return r.O(l)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))}();var s=r.O(void 0,[7874],(function(){return r(11318)}));s=r.O(s)}();
-//# sourceMappingURL=settings-vue-settings-admin-security.js.map?v=06da92a21012891e4e5e \ No newline at end of file
+!function(){"use strict";var e,n={11318:function(e,n,o){var r=o(16453),s=o(20144),i=o(4820),a=o(7811),c=o.n(a),u=o(1412),l=o.n(u),d=o(96486),f=o.n(d),p=o(79753),h={name:"AdminTwoFactor",components:{Multiselect:c(),Button:l()},data:function(){return{loading:!1,dirty:!1,groups:[],loadingGroups:!1}},computed:{enforced:{get:function(){return this.$store.state.enforced},set:function(t){this.dirty=!0,this.$store.commit("setEnforced",t)}},enforcedGroups:{get:function(){return this.$store.state.enforcedGroups},set:function(t){this.dirty=!0,this.$store.commit("setEnforcedGroups",t)}},excludedGroups:{get:function(){return this.$store.state.excludedGroups},set:function(t){this.dirty=!0,this.$store.commit("setExcludedGroups",t)}}},mounted:function(){this.groups=f().sortedUniq(f().uniq(this.enforcedGroups.concat(this.excludedGroups))),this.searchGroup("")},methods:{searchGroup:f().debounce((function(t){var e=this;this.loadingGroups=!0,i.default.get((0,p.generateOcsUrl)("cloud/groups?offset=0&search={query}&limit=20",{query:t})).then((function(t){return t.data.ocs})).then((function(t){return t.data.groups})).then((function(t){e.groups=f().sortedUniq(f().uniq(e.groups.concat(t)))})).catch((function(t){return console.error("could not search groups",t)})).then((function(){e.loadingGroups=!1}))}),500),saveChanges:function(){var t=this;this.loading=!0;var e={enforced:this.enforced,enforcedGroups:this.enforcedGroups,excludedGroups:this.excludedGroups};i.default.put((0,p.generateUrl)("/settings/api/admin/twofactorauth"),e).then((function(t){return t.data})).then((function(e){t.state=e,t.dirty=!1})).catch((function(t){console.error("could not save changes",t)})).then((function(){t.loading=!1}))}}},g=o(93379),m=o.n(g),v=o(7795),b=o.n(v),w=o(90569),y=o.n(w),x=o(3565),G=o.n(x),A=o(19216),_=o.n(A),C=o(44589),k=o.n(C),E=o(37331),O={};O.styleTagTransform=k(),O.setAttributes=G(),O.insert=y().bind(null,"head"),O.domAPI=b(),O.insertStyleElement=_(),m()(E.Z,O),E.Z&&E.Z.locals&&E.Z.locals;var T=(0,o(51900).Z)(h,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[n("p",{staticClass:"settings-hint"},[t._v("\n\t\t"+t._s(t.t("settings","Two-factor authentication can be enforced for all users and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system."))+"\n\t")]),t._v(" "),t.loading?n("p",[n("span",{staticClass:"icon-loading-small two-factor-loading"}),t._v(" "),n("span",[t._v(t._s(t.t("settings","Enforce two-factor authentication")))])]):n("p",[n("input",{directives:[{name:"model",rawName:"v-model",value:t.enforced,expression:"enforced"}],staticClass:"checkbox",attrs:{id:"two-factor-enforced",type:"checkbox"},domProps:{checked:Array.isArray(t.enforced)?t._i(t.enforced,null)>-1:t.enforced},on:{change:function(e){var n=t.enforced,o=e.target,r=!!o.checked;if(Array.isArray(n)){var s=t._i(n,null);o.checked?s<0&&(t.enforced=n.concat([null])):s>-1&&(t.enforced=n.slice(0,s).concat(n.slice(s+1)))}else t.enforced=r}}}),t._v(" "),n("label",{attrs:{for:"two-factor-enforced"}},[t._v(t._s(t.t("settings","Enforce two-factor authentication")))])]),t._v(" "),t.enforced?[n("h3",[t._v(t._s(t.t("settings","Limit to groups")))]),t._v("\n\t\t"+t._s(t.t("settings","Enforcement of two-factor authentication can be set for certain groups only."))+"\n\t\t"),n("p",[t._v("\n\t\t\t"+t._s(t.t("settings","Two-factor authentication is enforced for all members of the following groups."))+"\n\t\t")]),t._v(" "),n("p",[n("Multiselect",{attrs:{options:t.groups,placeholder:t.t("settings","Enforced groups"),disabled:t.loading,multiple:!0,searchable:!0,loading:t.loadingGroups,"show-no-options":!1,"close-on-select":!1},on:{"search-change":t.searchGroup},model:{value:t.enforcedGroups,callback:function(e){t.enforcedGroups=e},expression:"enforcedGroups"}})],1),t._v(" "),n("p",[t._v("\n\t\t\t"+t._s(t.t("settings","Two-factor authentication is not enforced for members of the following groups."))+"\n\t\t")]),t._v(" "),n("p",[n("Multiselect",{attrs:{options:t.groups,placeholder:t.t("settings","Excluded groups"),disabled:t.loading,multiple:!0,searchable:!0,loading:t.loadingGroups,"show-no-options":!1,"close-on-select":!1},on:{"search-change":t.searchGroup},model:{value:t.excludedGroups,callback:function(e){t.excludedGroups=e},expression:"excludedGroups"}})],1),t._v(" "),n("p",[n("em",[t._v("\n\t\t\t\t"+t._s(t.t("settings","When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced."))+"\n\t\t\t")])])]:t._e(),t._v(" "),n("p",[t.dirty?n("Button",{attrs:{type:"primary",disabled:t.loading},on:{click:t.saveChanges}},[t._v("\n\t\t\t"+t._s(t.t("settings","Save changes"))+"\n\t\t")]):t._e()],1)],2)}),[],!1,null,null,null).exports,q=o(20629);s.default.use(q.ZP);var $={setEnforced:function(t,e){s.default.set(t,"enforced",e)},setEnforcedGroups:function(t,e){s.default.set(t,"enforcedGroups",e)},setExcludedGroups:function(t,e){s.default.set(t,"excludedGroups",e)}},F=new q.yh({strict:!1,state:{enforced:!1,enforcedGroups:[],excludedGroups:[]},mutations:$});o.nc=btoa(OC.requestToken),s.default.prototype.t=t,window.OC=window.OC||{},window.OC.Settings=window.OC.Settings||{},F.replaceState((0,r.loadState)("settings","mandatory2FAState")),new(s.default.extend(T))({store:F}).$mount("#two-factor-auth-settings")},37331:function(t,e,n){var o=n(87537),r=n.n(o),s=n(23645),i=n.n(s)()(r());i.push([t.id,"\n.two-factor-loading {\n\tdisplay: inline-block;\n\tvertical-align: sub;\n\tmargin-left: -2px;\n\tmargin-right: 1px;\n}\n","",{version:3,sources:["webpack://./apps/settings/src/components/AdminTwoFactor.vue"],names:[],mappings:";AAkKA;CACA,qBAAA;CACA,mBAAA;CACA,iBAAA;CACA,iBAAA;AACA",sourcesContent:["<template>\n\t<div>\n\t\t<p class=\"settings-hint\">\n\t\t\t{{ t('settings', 'Two-factor authentication can be enforced for all users and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system.') }}\n\t\t</p>\n\t\t<p v-if=\"loading\">\n\t\t\t<span class=\"icon-loading-small two-factor-loading\" />\n\t\t\t<span>{{ t('settings', 'Enforce two-factor authentication') }}</span>\n\t\t</p>\n\t\t<p v-else>\n\t\t\t<input id=\"two-factor-enforced\"\n\t\t\t\tv-model=\"enforced\"\n\t\t\t\ttype=\"checkbox\"\n\t\t\t\tclass=\"checkbox\">\n\t\t\t<label for=\"two-factor-enforced\">{{ t('settings', 'Enforce two-factor authentication') }}</label>\n\t\t</p>\n\t\t<template v-if=\"enforced\">\n\t\t\t<h3>{{ t('settings', 'Limit to groups') }}</h3>\n\t\t\t{{ t('settings', 'Enforcement of two-factor authentication can be set for certain groups only.') }}\n\t\t\t<p>\n\t\t\t\t{{ t('settings', 'Two-factor authentication is enforced for all members of the following groups.') }}\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<Multiselect v-model=\"enforcedGroups\"\n\t\t\t\t\t:options=\"groups\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Enforced groups')\"\n\t\t\t\t\t:disabled=\"loading\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\t:searchable=\"true\"\n\t\t\t\t\t:loading=\"loadingGroups\"\n\t\t\t\t\t:show-no-options=\"false\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t@search-change=\"searchGroup\" />\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t{{ t('settings', 'Two-factor authentication is not enforced for members of the following groups.') }}\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<Multiselect v-model=\"excludedGroups\"\n\t\t\t\t\t:options=\"groups\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Excluded groups')\"\n\t\t\t\t\t:disabled=\"loading\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\t:searchable=\"true\"\n\t\t\t\t\t:loading=\"loadingGroups\"\n\t\t\t\t\t:show-no-options=\"false\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t@search-change=\"searchGroup\" />\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<em>\n\t\t\t\t\t\x3c!-- this text is also found in the documentation. update it there as well if it ever changes --\x3e\n\t\t\t\t\t{{ t('settings', 'When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced.') }}\n\t\t\t\t</em>\n\t\t\t</p>\n\t\t</template>\n\t\t<p>\n\t\t\t<Button v-if=\"dirty\"\n\t\t\t\ttype=\"primary\"\n\t\t\t\t:disabled=\"loading\"\n\t\t\t\t@click=\"saveChanges\">\n\t\t\t\t{{ t('settings', 'Save changes') }}\n\t\t\t</Button>\n\t\t</p>\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\nimport Button from '@nextcloud/vue/dist/Components/Button'\n\nimport _ from 'lodash'\nimport { generateUrl, generateOcsUrl } from '@nextcloud/router'\n\nexport default {\n\tname: 'AdminTwoFactor',\n\tcomponents: {\n\t\tMultiselect,\n\t\tButton,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\tdirty: false,\n\t\t\tgroups: [],\n\t\t\tloadingGroups: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tenforced: {\n\t\t\tget() {\n\t\t\t\treturn this.$store.state.enforced\n\t\t\t},\n\t\t\tset(val) {\n\t\t\t\tthis.dirty = true\n\t\t\t\tthis.$store.commit('setEnforced', val)\n\t\t\t},\n\t\t},\n\t\tenforcedGroups: {\n\t\t\tget() {\n\t\t\t\treturn this.$store.state.enforcedGroups\n\t\t\t},\n\t\t\tset(val) {\n\t\t\t\tthis.dirty = true\n\t\t\t\tthis.$store.commit('setEnforcedGroups', val)\n\t\t\t},\n\t\t},\n\t\texcludedGroups: {\n\t\t\tget() {\n\t\t\t\treturn this.$store.state.excludedGroups\n\t\t\t},\n\t\t\tset(val) {\n\t\t\t\tthis.dirty = true\n\t\t\t\tthis.$store.commit('setExcludedGroups', val)\n\t\t\t},\n\t\t},\n\t},\n\tmounted() {\n\t\t// Groups are loaded dynamically, but the assigned ones *should*\n\t\t// be valid groups, so let's add them as initial state\n\t\tthis.groups = _.sortedUniq(_.uniq(this.enforcedGroups.concat(this.excludedGroups)))\n\n\t\t// Populate the groups with a first set so the dropdown is not empty\n\t\t// when opening the page the first time\n\t\tthis.searchGroup('')\n\t},\n\tmethods: {\n\t\tsearchGroup: _.debounce(function(query) {\n\t\t\tthis.loadingGroups = true\n\t\t\taxios.get(generateOcsUrl('cloud/groups?offset=0&search={query}&limit=20', { query }))\n\t\t\t\t.then(res => res.data.ocs)\n\t\t\t\t.then(ocs => ocs.data.groups)\n\t\t\t\t.then(groups => { this.groups = _.sortedUniq(_.uniq(this.groups.concat(groups))) })\n\t\t\t\t.catch(err => console.error('could not search groups', err))\n\t\t\t\t.then(() => { this.loadingGroups = false })\n\t\t}, 500),\n\n\t\tsaveChanges() {\n\t\t\tthis.loading = true\n\n\t\t\tconst data = {\n\t\t\t\tenforced: this.enforced,\n\t\t\t\tenforcedGroups: this.enforcedGroups,\n\t\t\t\texcludedGroups: this.excludedGroups,\n\t\t\t}\n\t\t\taxios.put(generateUrl('/settings/api/admin/twofactorauth'), data)\n\t\t\t\t.then(resp => resp.data)\n\t\t\t\t.then(state => {\n\t\t\t\t\tthis.state = state\n\t\t\t\t\tthis.dirty = false\n\t\t\t\t})\n\t\t\t\t.catch(err => {\n\t\t\t\t\tconsole.error('could not save changes', err)\n\t\t\t\t})\n\t\t\t\t.then(() => { this.loading = false })\n\t\t},\n\t},\n}\n<\/script>\n\n<style>\n\t.two-factor-loading {\n\t\tdisplay: inline-block;\n\t\tvertical-align: sub;\n\t\tmargin-left: -2px;\n\t\tmargin-right: 1px;\n\t}\n</style>\n"],sourceRoot:""}]),e.Z=i}},o={};function r(t){var e=o[t];if(void 0!==e)return e.exports;var s=o[t]={id:t,loaded:!1,exports:{}};return n[t].call(s.exports,s,s.exports,r),s.loaded=!0,s.exports}r.m=n,r.amdD=function(){throw new Error("define cannot be used indirect")},r.amdO={},e=[],r.O=function(t,n,o,s){if(!n){var i=1/0;for(l=0;l<e.length;l++){n=e[l][0],o=e[l][1],s=e[l][2];for(var a=!0,c=0;c<n.length;c++)(!1&s||i>=s)&&Object.keys(r.O).every((function(t){return r.O[t](n[c])}))?n.splice(c--,1):(a=!1,s<i&&(i=s));if(a){e.splice(l--,1);var u=o();void 0!==u&&(t=u)}}return t}s=s||0;for(var l=e.length;l>0&&e[l-1][2]>s;l--)e[l]=e[l-1];e[l]=[n,o,s]},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,{a:e}),e},r.d=function(t,e){for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},r.j=788,function(){r.b=document.baseURI||self.location.href;var t={788:0};r.O.j=function(e){return 0===t[e]};var e=function(e,n){var o,s,i=n[0],a=n[1],c=n[2],u=0;if(i.some((function(e){return 0!==t[e]}))){for(o in a)r.o(a,o)&&(r.m[o]=a[o]);if(c)var l=c(r)}for(e&&e(n);u<i.length;u++)s=i[u],r.o(t,s)&&t[s]&&t[s][0](),t[s]=0;return r.O(l)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))}(),r.nc=void 0;var s=r.O(void 0,[7874],(function(){return r(11318)}));s=r.O(s)}();
+//# sourceMappingURL=settings-vue-settings-admin-security.js.map?v=5a026b9c23de70d9e9e4 \ No newline at end of file
diff --git a/dist/settings-vue-settings-admin-security.js.map b/dist/settings-vue-settings-admin-security.js.map
index 6674d5a7075..ac946267a5d 100644
--- a/dist/settings-vue-settings-admin-security.js.map
+++ b/dist/settings-vue-settings-admin-security.js.map
@@ -1 +1 @@
-{"version":3,"file":"settings-vue-settings-admin-security.js?v=06da92a21012891e4e5e","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/settings/src/components/AdminTwoFactor.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/AdminTwoFactor.vue","webpack://nextcloud/./apps/settings/src/components/AdminTwoFactor.vue?604d","webpack://nextcloud/./apps/settings/src/components/AdminTwoFactor.vue?66cc","webpack:///nextcloud/apps/settings/src/components/AdminTwoFactor.vue?vue&type=template&id=6a2ef42d&","webpack:///nextcloud/apps/settings/src/store/admin-security.js","webpack:///nextcloud/apps/settings/src/main-admin-security.js","webpack:///nextcloud/apps/settings/src/components/AdminTwoFactor.vue?vue&type=style&index=0&lang=css&","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};","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTwoFactor.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!./AdminTwoFactor.vue?vue&type=script&lang=js&\"","<template>\n\t<div>\n\t\t<p class=\"settings-hint\">\n\t\t\t{{ t('settings', 'Two-factor authentication can be enforced for all users and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system.') }}\n\t\t</p>\n\t\t<p v-if=\"loading\">\n\t\t\t<span class=\"icon-loading-small two-factor-loading\" />\n\t\t\t<span>{{ t('settings', 'Enforce two-factor authentication') }}</span>\n\t\t</p>\n\t\t<p v-else>\n\t\t\t<input id=\"two-factor-enforced\"\n\t\t\t\tv-model=\"enforced\"\n\t\t\t\ttype=\"checkbox\"\n\t\t\t\tclass=\"checkbox\">\n\t\t\t<label for=\"two-factor-enforced\">{{ t('settings', 'Enforce two-factor authentication') }}</label>\n\t\t</p>\n\t\t<template v-if=\"enforced\">\n\t\t\t<h3>{{ t('settings', 'Limit to groups') }}</h3>\n\t\t\t{{ t('settings', 'Enforcement of two-factor authentication can be set for certain groups only.') }}\n\t\t\t<p>\n\t\t\t\t{{ t('settings', 'Two-factor authentication is enforced for all members of the following groups.') }}\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<Multiselect v-model=\"enforcedGroups\"\n\t\t\t\t\t:options=\"groups\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Enforced groups')\"\n\t\t\t\t\t:disabled=\"loading\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\t:searchable=\"true\"\n\t\t\t\t\t:loading=\"loadingGroups\"\n\t\t\t\t\t:show-no-options=\"false\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t@search-change=\"searchGroup\" />\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t{{ t('settings', 'Two-factor authentication is not enforced for members of the following groups.') }}\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<Multiselect v-model=\"excludedGroups\"\n\t\t\t\t\t:options=\"groups\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Excluded groups')\"\n\t\t\t\t\t:disabled=\"loading\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\t:searchable=\"true\"\n\t\t\t\t\t:loading=\"loadingGroups\"\n\t\t\t\t\t:show-no-options=\"false\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t@search-change=\"searchGroup\" />\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<em>\n\t\t\t\t\t<!-- this text is also found in the documentation. update it there as well if it ever changes -->\n\t\t\t\t\t{{ t('settings', 'When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced.') }}\n\t\t\t\t</em>\n\t\t\t</p>\n\t\t</template>\n\t\t<p>\n\t\t\t<Button v-if=\"dirty\"\n\t\t\t\ttype=\"primary\"\n\t\t\t\t:disabled=\"loading\"\n\t\t\t\t@click=\"saveChanges\">\n\t\t\t\t{{ t('settings', 'Save changes') }}\n\t\t\t</Button>\n\t\t</p>\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\nimport Button from '@nextcloud/vue/dist/Components/Button'\n\nimport _ from 'lodash'\nimport { generateUrl, generateOcsUrl } from '@nextcloud/router'\n\nexport default {\n\tname: 'AdminTwoFactor',\n\tcomponents: {\n\t\tMultiselect,\n\t\tButton,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\tdirty: false,\n\t\t\tgroups: [],\n\t\t\tloadingGroups: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tenforced: {\n\t\t\tget() {\n\t\t\t\treturn this.$store.state.enforced\n\t\t\t},\n\t\t\tset(val) {\n\t\t\t\tthis.dirty = true\n\t\t\t\tthis.$store.commit('setEnforced', val)\n\t\t\t},\n\t\t},\n\t\tenforcedGroups: {\n\t\t\tget() {\n\t\t\t\treturn this.$store.state.enforcedGroups\n\t\t\t},\n\t\t\tset(val) {\n\t\t\t\tthis.dirty = true\n\t\t\t\tthis.$store.commit('setEnforcedGroups', val)\n\t\t\t},\n\t\t},\n\t\texcludedGroups: {\n\t\t\tget() {\n\t\t\t\treturn this.$store.state.excludedGroups\n\t\t\t},\n\t\t\tset(val) {\n\t\t\t\tthis.dirty = true\n\t\t\t\tthis.$store.commit('setExcludedGroups', val)\n\t\t\t},\n\t\t},\n\t},\n\tmounted() {\n\t\t// Groups are loaded dynamically, but the assigned ones *should*\n\t\t// be valid groups, so let's add them as initial state\n\t\tthis.groups = _.sortedUniq(_.uniq(this.enforcedGroups.concat(this.excludedGroups)))\n\n\t\t// Populate the groups with a first set so the dropdown is not empty\n\t\t// when opening the page the first time\n\t\tthis.searchGroup('')\n\t},\n\tmethods: {\n\t\tsearchGroup: _.debounce(function(query) {\n\t\t\tthis.loadingGroups = true\n\t\t\taxios.get(generateOcsUrl('cloud/groups?offset=0&search={query}&limit=20', { query }))\n\t\t\t\t.then(res => res.data.ocs)\n\t\t\t\t.then(ocs => ocs.data.groups)\n\t\t\t\t.then(groups => { this.groups = _.sortedUniq(_.uniq(this.groups.concat(groups))) })\n\t\t\t\t.catch(err => console.error('could not search groups', err))\n\t\t\t\t.then(() => { this.loadingGroups = false })\n\t\t}, 500),\n\n\t\tsaveChanges() {\n\t\t\tthis.loading = true\n\n\t\t\tconst data = {\n\t\t\t\tenforced: this.enforced,\n\t\t\t\tenforcedGroups: this.enforcedGroups,\n\t\t\t\texcludedGroups: this.excludedGroups,\n\t\t\t}\n\t\t\taxios.put(generateUrl('/settings/api/admin/twofactorauth'), data)\n\t\t\t\t.then(resp => resp.data)\n\t\t\t\t.then(state => {\n\t\t\t\t\tthis.state = state\n\t\t\t\t\tthis.dirty = false\n\t\t\t\t})\n\t\t\t\t.catch(err => {\n\t\t\t\t\tconsole.error('could not save changes', err)\n\t\t\t\t})\n\t\t\t\t.then(() => { this.loading = false })\n\t\t},\n\t},\n}\n</script>\n\n<style>\n\t.two-factor-loading {\n\t\tdisplay: inline-block;\n\t\tvertical-align: sub;\n\t\tmargin-left: -2px;\n\t\tmargin-right: 1px;\n\t}\n</style>\n","\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/vue-loader/lib/index.js??vue-loader-options!./AdminTwoFactor.vue?vue&type=style&index=0&lang=css&\";\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/vue-loader/lib/index.js??vue-loader-options!./AdminTwoFactor.vue?vue&type=style&index=0&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AdminTwoFactor.vue?vue&type=template&id=6a2ef42d&\"\nimport script from \"./AdminTwoFactor.vue?vue&type=script&lang=js&\"\nexport * from \"./AdminTwoFactor.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AdminTwoFactor.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('p',{staticClass:\"settings-hint\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Two-factor authentication can be enforced for all users and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system.'))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.loading)?_c('p',[_c('span',{staticClass:\"icon-loading-small two-factor-loading\"}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Enforce two-factor authentication')))])]):_c('p',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.enforced),expression:\"enforced\"}],staticClass:\"checkbox\",attrs:{\"id\":\"two-factor-enforced\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.enforced)?_vm._i(_vm.enforced,null)>-1:(_vm.enforced)},on:{\"change\":function($event){var $$a=_vm.enforced,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.enforced=$$a.concat([$$v]))}else{$$i>-1&&(_vm.enforced=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.enforced=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"two-factor-enforced\"}},[_vm._v(_vm._s(_vm.t('settings', 'Enforce two-factor authentication')))])]),_vm._v(\" \"),(_vm.enforced)?[_c('h3',[_vm._v(_vm._s(_vm.t('settings', 'Limit to groups')))]),_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Enforcement of two-factor authentication can be set for certain groups only.'))+\"\\n\\t\\t\"),_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Two-factor authentication is enforced for all members of the following groups.'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('p',[_c('Multiselect',{attrs:{\"options\":_vm.groups,\"placeholder\":_vm.t('settings', 'Enforced groups'),\"disabled\":_vm.loading,\"multiple\":true,\"searchable\":true,\"loading\":_vm.loadingGroups,\"show-no-options\":false,\"close-on-select\":false},on:{\"search-change\":_vm.searchGroup},model:{value:(_vm.enforcedGroups),callback:function ($$v) {_vm.enforcedGroups=$$v},expression:\"enforcedGroups\"}})],1),_vm._v(\" \"),_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Two-factor authentication is not enforced for members of the following groups.'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('p',[_c('Multiselect',{attrs:{\"options\":_vm.groups,\"placeholder\":_vm.t('settings', 'Excluded groups'),\"disabled\":_vm.loading,\"multiple\":true,\"searchable\":true,\"loading\":_vm.loadingGroups,\"show-no-options\":false,\"close-on-select\":false},on:{\"search-change\":_vm.searchGroup},model:{value:(_vm.excludedGroups),callback:function ($$v) {_vm.excludedGroups=$$v},expression:\"excludedGroups\"}})],1),_vm._v(\" \"),_c('p',[_c('em',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced.'))+\"\\n\\t\\t\\t\")])])]:_vm._e(),_vm._v(\" \"),_c('p',[(_vm.dirty)?_c('Button',{attrs:{\"type\":\"primary\",\"disabled\":_vm.loading},on:{\"click\":_vm.saveChanges}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Save changes'))+\"\\n\\t\\t\")]):_vm._e()],1)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2019 Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport Vue from 'vue'\nimport Vuex, { Store } from 'vuex'\n\nVue.use(Vuex)\n\nconst state = {\n\tenforced: false,\n\tenforcedGroups: [],\n\texcludedGroups: [],\n}\n\nconst mutations = {\n\tsetEnforced(state, enabled) {\n\t\tVue.set(state, 'enforced', enabled)\n\t},\n\tsetEnforcedGroups(state, total) {\n\t\tVue.set(state, 'enforcedGroups', total)\n\t},\n\tsetExcludedGroups(state, used) {\n\t\tVue.set(state, 'excludedGroups', used)\n\t},\n}\n\nexport default new Store({\n\tstrict: process.env.NODE_ENV !== 'production',\n\tstate,\n\tmutations,\n})\n","/**\n * @copyright Copyright (c) 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport { loadState } from '@nextcloud/initial-state'\nimport Vue from 'vue'\n\nimport AdminTwoFactor from './components/AdminTwoFactor.vue'\nimport store from './store/admin-security'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(OC.requestToken)\n\nVue.prototype.t = t\n\n// Not used here but required for legacy templates\nwindow.OC = window.OC || {}\nwindow.OC.Settings = window.OC.Settings || {}\n\nstore.replaceState(\n\tloadState('settings', 'mandatory2FAState')\n)\n\nconst View = Vue.extend(AdminTwoFactor)\nnew View({\n\tstore,\n}).$mount('#two-factor-auth-settings')\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, \"\\n.two-factor-loading {\\n\\tdisplay: inline-block;\\n\\tvertical-align: sub;\\n\\tmargin-left: -2px;\\n\\tmargin-right: 1px;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AdminTwoFactor.vue\"],\"names\":[],\"mappings\":\";AAkKA;CACA,qBAAA;CACA,mBAAA;CACA,iBAAA;CACA,iBAAA;AACA\",\"sourcesContent\":[\"<template>\\n\\t<div>\\n\\t\\t<p class=\\\"settings-hint\\\">\\n\\t\\t\\t{{ t('settings', 'Two-factor authentication can be enforced for all users and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system.') }}\\n\\t\\t</p>\\n\\t\\t<p v-if=\\\"loading\\\">\\n\\t\\t\\t<span class=\\\"icon-loading-small two-factor-loading\\\" />\\n\\t\\t\\t<span>{{ t('settings', 'Enforce two-factor authentication') }}</span>\\n\\t\\t</p>\\n\\t\\t<p v-else>\\n\\t\\t\\t<input id=\\\"two-factor-enforced\\\"\\n\\t\\t\\t\\tv-model=\\\"enforced\\\"\\n\\t\\t\\t\\ttype=\\\"checkbox\\\"\\n\\t\\t\\t\\tclass=\\\"checkbox\\\">\\n\\t\\t\\t<label for=\\\"two-factor-enforced\\\">{{ t('settings', 'Enforce two-factor authentication') }}</label>\\n\\t\\t</p>\\n\\t\\t<template v-if=\\\"enforced\\\">\\n\\t\\t\\t<h3>{{ t('settings', 'Limit to groups') }}</h3>\\n\\t\\t\\t{{ t('settings', 'Enforcement of two-factor authentication can be set for certain groups only.') }}\\n\\t\\t\\t<p>\\n\\t\\t\\t\\t{{ t('settings', 'Two-factor authentication is enforced for all members of the following groups.') }}\\n\\t\\t\\t</p>\\n\\t\\t\\t<p>\\n\\t\\t\\t\\t<Multiselect v-model=\\\"enforcedGroups\\\"\\n\\t\\t\\t\\t\\t:options=\\\"groups\\\"\\n\\t\\t\\t\\t\\t:placeholder=\\\"t('settings', 'Enforced groups')\\\"\\n\\t\\t\\t\\t\\t:disabled=\\\"loading\\\"\\n\\t\\t\\t\\t\\t:multiple=\\\"true\\\"\\n\\t\\t\\t\\t\\t:searchable=\\\"true\\\"\\n\\t\\t\\t\\t\\t:loading=\\\"loadingGroups\\\"\\n\\t\\t\\t\\t\\t:show-no-options=\\\"false\\\"\\n\\t\\t\\t\\t\\t:close-on-select=\\\"false\\\"\\n\\t\\t\\t\\t\\t@search-change=\\\"searchGroup\\\" />\\n\\t\\t\\t</p>\\n\\t\\t\\t<p>\\n\\t\\t\\t\\t{{ t('settings', 'Two-factor authentication is not enforced for members of the following groups.') }}\\n\\t\\t\\t</p>\\n\\t\\t\\t<p>\\n\\t\\t\\t\\t<Multiselect v-model=\\\"excludedGroups\\\"\\n\\t\\t\\t\\t\\t:options=\\\"groups\\\"\\n\\t\\t\\t\\t\\t:placeholder=\\\"t('settings', 'Excluded groups')\\\"\\n\\t\\t\\t\\t\\t:disabled=\\\"loading\\\"\\n\\t\\t\\t\\t\\t:multiple=\\\"true\\\"\\n\\t\\t\\t\\t\\t:searchable=\\\"true\\\"\\n\\t\\t\\t\\t\\t:loading=\\\"loadingGroups\\\"\\n\\t\\t\\t\\t\\t:show-no-options=\\\"false\\\"\\n\\t\\t\\t\\t\\t:close-on-select=\\\"false\\\"\\n\\t\\t\\t\\t\\t@search-change=\\\"searchGroup\\\" />\\n\\t\\t\\t</p>\\n\\t\\t\\t<p>\\n\\t\\t\\t\\t<em>\\n\\t\\t\\t\\t\\t<!-- this text is also found in the documentation. update it there as well if it ever changes -->\\n\\t\\t\\t\\t\\t{{ t('settings', 'When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced.') }}\\n\\t\\t\\t\\t</em>\\n\\t\\t\\t</p>\\n\\t\\t</template>\\n\\t\\t<p>\\n\\t\\t\\t<Button v-if=\\\"dirty\\\"\\n\\t\\t\\t\\ttype=\\\"primary\\\"\\n\\t\\t\\t\\t:disabled=\\\"loading\\\"\\n\\t\\t\\t\\t@click=\\\"saveChanges\\\">\\n\\t\\t\\t\\t{{ t('settings', 'Save changes') }}\\n\\t\\t\\t</Button>\\n\\t\\t</p>\\n\\t</div>\\n</template>\\n\\n<script>\\nimport axios from '@nextcloud/axios'\\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\\nimport Button from '@nextcloud/vue/dist/Components/Button'\\n\\nimport _ from 'lodash'\\nimport { generateUrl, generateOcsUrl } from '@nextcloud/router'\\n\\nexport default {\\n\\tname: 'AdminTwoFactor',\\n\\tcomponents: {\\n\\t\\tMultiselect,\\n\\t\\tButton,\\n\\t},\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tloading: false,\\n\\t\\t\\tdirty: false,\\n\\t\\t\\tgroups: [],\\n\\t\\t\\tloadingGroups: false,\\n\\t\\t}\\n\\t},\\n\\tcomputed: {\\n\\t\\tenforced: {\\n\\t\\t\\tget() {\\n\\t\\t\\t\\treturn this.$store.state.enforced\\n\\t\\t\\t},\\n\\t\\t\\tset(val) {\\n\\t\\t\\t\\tthis.dirty = true\\n\\t\\t\\t\\tthis.$store.commit('setEnforced', val)\\n\\t\\t\\t},\\n\\t\\t},\\n\\t\\tenforcedGroups: {\\n\\t\\t\\tget() {\\n\\t\\t\\t\\treturn this.$store.state.enforcedGroups\\n\\t\\t\\t},\\n\\t\\t\\tset(val) {\\n\\t\\t\\t\\tthis.dirty = true\\n\\t\\t\\t\\tthis.$store.commit('setEnforcedGroups', val)\\n\\t\\t\\t},\\n\\t\\t},\\n\\t\\texcludedGroups: {\\n\\t\\t\\tget() {\\n\\t\\t\\t\\treturn this.$store.state.excludedGroups\\n\\t\\t\\t},\\n\\t\\t\\tset(val) {\\n\\t\\t\\t\\tthis.dirty = true\\n\\t\\t\\t\\tthis.$store.commit('setExcludedGroups', val)\\n\\t\\t\\t},\\n\\t\\t},\\n\\t},\\n\\tmounted() {\\n\\t\\t// Groups are loaded dynamically, but the assigned ones *should*\\n\\t\\t// be valid groups, so let's add them as initial state\\n\\t\\tthis.groups = _.sortedUniq(_.uniq(this.enforcedGroups.concat(this.excludedGroups)))\\n\\n\\t\\t// Populate the groups with a first set so the dropdown is not empty\\n\\t\\t// when opening the page the first time\\n\\t\\tthis.searchGroup('')\\n\\t},\\n\\tmethods: {\\n\\t\\tsearchGroup: _.debounce(function(query) {\\n\\t\\t\\tthis.loadingGroups = true\\n\\t\\t\\taxios.get(generateOcsUrl('cloud/groups?offset=0&search={query}&limit=20', { query }))\\n\\t\\t\\t\\t.then(res => res.data.ocs)\\n\\t\\t\\t\\t.then(ocs => ocs.data.groups)\\n\\t\\t\\t\\t.then(groups => { this.groups = _.sortedUniq(_.uniq(this.groups.concat(groups))) })\\n\\t\\t\\t\\t.catch(err => console.error('could not search groups', err))\\n\\t\\t\\t\\t.then(() => { this.loadingGroups = false })\\n\\t\\t}, 500),\\n\\n\\t\\tsaveChanges() {\\n\\t\\t\\tthis.loading = true\\n\\n\\t\\t\\tconst data = {\\n\\t\\t\\t\\tenforced: this.enforced,\\n\\t\\t\\t\\tenforcedGroups: this.enforcedGroups,\\n\\t\\t\\t\\texcludedGroups: this.excludedGroups,\\n\\t\\t\\t}\\n\\t\\t\\taxios.put(generateUrl('/settings/api/admin/twofactorauth'), data)\\n\\t\\t\\t\\t.then(resp => resp.data)\\n\\t\\t\\t\\t.then(state => {\\n\\t\\t\\t\\t\\tthis.state = state\\n\\t\\t\\t\\t\\tthis.dirty = false\\n\\t\\t\\t\\t})\\n\\t\\t\\t\\t.catch(err => {\\n\\t\\t\\t\\t\\tconsole.error('could not save changes', err)\\n\\t\\t\\t\\t})\\n\\t\\t\\t\\t.then(() => { this.loading = false })\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style>\\n\\t.two-factor-loading {\\n\\t\\tdisplay: inline-block;\\n\\t\\tvertical-align: sub;\\n\\t\\tmargin-left: -2px;\\n\\t\\tmargin-right: 1px;\\n\\t}\\n</style>\\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 = 788;","__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\t788: 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__(11318); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_c","_self","staticClass","_v","_s","t","directives","name","rawName","value","expression","attrs","domProps","Array","isArray","enforced","_i","on","$event","$$a","$$el","target","$$c","checked","$$i","concat","slice","groups","loading","loadingGroups","searchGroup","model","callback","$$v","enforcedGroups","excludedGroups","_e","saveChanges","Vue","Vuex","mutations","setEnforced","state","enabled","setEnforcedGroups","total","setExcludedGroups","used","Store","strict","process","__webpack_nonce__","btoa","OC","requestToken","window","Settings","store","loadState","AdminTwoFactor","$mount","___CSS_LOADER_EXPORT___","push","module","id","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"settings-vue-settings-admin-security.js?v=5a026b9c23de70d9e9e4","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/settings/src/components/AdminTwoFactor.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/AdminTwoFactor.vue","webpack://nextcloud/./apps/settings/src/components/AdminTwoFactor.vue?604d","webpack://nextcloud/./apps/settings/src/components/AdminTwoFactor.vue?66cc","webpack:///nextcloud/apps/settings/src/components/AdminTwoFactor.vue?vue&type=template&id=6a2ef42d&","webpack:///nextcloud/apps/settings/src/store/admin-security.js","webpack:///nextcloud/apps/settings/src/main-admin-security.js","webpack:///nextcloud/apps/settings/src/components/AdminTwoFactor.vue?vue&type=style&index=0&lang=css&","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/runtime/nonce","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};","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTwoFactor.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!./AdminTwoFactor.vue?vue&type=script&lang=js&\"","<template>\n\t<div>\n\t\t<p class=\"settings-hint\">\n\t\t\t{{ t('settings', 'Two-factor authentication can be enforced for all users and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system.') }}\n\t\t</p>\n\t\t<p v-if=\"loading\">\n\t\t\t<span class=\"icon-loading-small two-factor-loading\" />\n\t\t\t<span>{{ t('settings', 'Enforce two-factor authentication') }}</span>\n\t\t</p>\n\t\t<p v-else>\n\t\t\t<input id=\"two-factor-enforced\"\n\t\t\t\tv-model=\"enforced\"\n\t\t\t\ttype=\"checkbox\"\n\t\t\t\tclass=\"checkbox\">\n\t\t\t<label for=\"two-factor-enforced\">{{ t('settings', 'Enforce two-factor authentication') }}</label>\n\t\t</p>\n\t\t<template v-if=\"enforced\">\n\t\t\t<h3>{{ t('settings', 'Limit to groups') }}</h3>\n\t\t\t{{ t('settings', 'Enforcement of two-factor authentication can be set for certain groups only.') }}\n\t\t\t<p>\n\t\t\t\t{{ t('settings', 'Two-factor authentication is enforced for all members of the following groups.') }}\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<Multiselect v-model=\"enforcedGroups\"\n\t\t\t\t\t:options=\"groups\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Enforced groups')\"\n\t\t\t\t\t:disabled=\"loading\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\t:searchable=\"true\"\n\t\t\t\t\t:loading=\"loadingGroups\"\n\t\t\t\t\t:show-no-options=\"false\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t@search-change=\"searchGroup\" />\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t{{ t('settings', 'Two-factor authentication is not enforced for members of the following groups.') }}\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<Multiselect v-model=\"excludedGroups\"\n\t\t\t\t\t:options=\"groups\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Excluded groups')\"\n\t\t\t\t\t:disabled=\"loading\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\t:searchable=\"true\"\n\t\t\t\t\t:loading=\"loadingGroups\"\n\t\t\t\t\t:show-no-options=\"false\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t@search-change=\"searchGroup\" />\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<em>\n\t\t\t\t\t<!-- this text is also found in the documentation. update it there as well if it ever changes -->\n\t\t\t\t\t{{ t('settings', 'When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced.') }}\n\t\t\t\t</em>\n\t\t\t</p>\n\t\t</template>\n\t\t<p>\n\t\t\t<Button v-if=\"dirty\"\n\t\t\t\ttype=\"primary\"\n\t\t\t\t:disabled=\"loading\"\n\t\t\t\t@click=\"saveChanges\">\n\t\t\t\t{{ t('settings', 'Save changes') }}\n\t\t\t</Button>\n\t\t</p>\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\nimport Button from '@nextcloud/vue/dist/Components/Button'\n\nimport _ from 'lodash'\nimport { generateUrl, generateOcsUrl } from '@nextcloud/router'\n\nexport default {\n\tname: 'AdminTwoFactor',\n\tcomponents: {\n\t\tMultiselect,\n\t\tButton,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\tdirty: false,\n\t\t\tgroups: [],\n\t\t\tloadingGroups: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tenforced: {\n\t\t\tget() {\n\t\t\t\treturn this.$store.state.enforced\n\t\t\t},\n\t\t\tset(val) {\n\t\t\t\tthis.dirty = true\n\t\t\t\tthis.$store.commit('setEnforced', val)\n\t\t\t},\n\t\t},\n\t\tenforcedGroups: {\n\t\t\tget() {\n\t\t\t\treturn this.$store.state.enforcedGroups\n\t\t\t},\n\t\t\tset(val) {\n\t\t\t\tthis.dirty = true\n\t\t\t\tthis.$store.commit('setEnforcedGroups', val)\n\t\t\t},\n\t\t},\n\t\texcludedGroups: {\n\t\t\tget() {\n\t\t\t\treturn this.$store.state.excludedGroups\n\t\t\t},\n\t\t\tset(val) {\n\t\t\t\tthis.dirty = true\n\t\t\t\tthis.$store.commit('setExcludedGroups', val)\n\t\t\t},\n\t\t},\n\t},\n\tmounted() {\n\t\t// Groups are loaded dynamically, but the assigned ones *should*\n\t\t// be valid groups, so let's add them as initial state\n\t\tthis.groups = _.sortedUniq(_.uniq(this.enforcedGroups.concat(this.excludedGroups)))\n\n\t\t// Populate the groups with a first set so the dropdown is not empty\n\t\t// when opening the page the first time\n\t\tthis.searchGroup('')\n\t},\n\tmethods: {\n\t\tsearchGroup: _.debounce(function(query) {\n\t\t\tthis.loadingGroups = true\n\t\t\taxios.get(generateOcsUrl('cloud/groups?offset=0&search={query}&limit=20', { query }))\n\t\t\t\t.then(res => res.data.ocs)\n\t\t\t\t.then(ocs => ocs.data.groups)\n\t\t\t\t.then(groups => { this.groups = _.sortedUniq(_.uniq(this.groups.concat(groups))) })\n\t\t\t\t.catch(err => console.error('could not search groups', err))\n\t\t\t\t.then(() => { this.loadingGroups = false })\n\t\t}, 500),\n\n\t\tsaveChanges() {\n\t\t\tthis.loading = true\n\n\t\t\tconst data = {\n\t\t\t\tenforced: this.enforced,\n\t\t\t\tenforcedGroups: this.enforcedGroups,\n\t\t\t\texcludedGroups: this.excludedGroups,\n\t\t\t}\n\t\t\taxios.put(generateUrl('/settings/api/admin/twofactorauth'), data)\n\t\t\t\t.then(resp => resp.data)\n\t\t\t\t.then(state => {\n\t\t\t\t\tthis.state = state\n\t\t\t\t\tthis.dirty = false\n\t\t\t\t})\n\t\t\t\t.catch(err => {\n\t\t\t\t\tconsole.error('could not save changes', err)\n\t\t\t\t})\n\t\t\t\t.then(() => { this.loading = false })\n\t\t},\n\t},\n}\n</script>\n\n<style>\n\t.two-factor-loading {\n\t\tdisplay: inline-block;\n\t\tvertical-align: sub;\n\t\tmargin-left: -2px;\n\t\tmargin-right: 1px;\n\t}\n</style>\n","\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/vue-loader/lib/index.js??vue-loader-options!./AdminTwoFactor.vue?vue&type=style&index=0&lang=css&\";\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/vue-loader/lib/index.js??vue-loader-options!./AdminTwoFactor.vue?vue&type=style&index=0&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AdminTwoFactor.vue?vue&type=template&id=6a2ef42d&\"\nimport script from \"./AdminTwoFactor.vue?vue&type=script&lang=js&\"\nexport * from \"./AdminTwoFactor.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AdminTwoFactor.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('p',{staticClass:\"settings-hint\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Two-factor authentication can be enforced for all users and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system.'))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.loading)?_c('p',[_c('span',{staticClass:\"icon-loading-small two-factor-loading\"}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Enforce two-factor authentication')))])]):_c('p',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.enforced),expression:\"enforced\"}],staticClass:\"checkbox\",attrs:{\"id\":\"two-factor-enforced\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.enforced)?_vm._i(_vm.enforced,null)>-1:(_vm.enforced)},on:{\"change\":function($event){var $$a=_vm.enforced,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.enforced=$$a.concat([$$v]))}else{$$i>-1&&(_vm.enforced=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.enforced=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"two-factor-enforced\"}},[_vm._v(_vm._s(_vm.t('settings', 'Enforce two-factor authentication')))])]),_vm._v(\" \"),(_vm.enforced)?[_c('h3',[_vm._v(_vm._s(_vm.t('settings', 'Limit to groups')))]),_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Enforcement of two-factor authentication can be set for certain groups only.'))+\"\\n\\t\\t\"),_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Two-factor authentication is enforced for all members of the following groups.'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('p',[_c('Multiselect',{attrs:{\"options\":_vm.groups,\"placeholder\":_vm.t('settings', 'Enforced groups'),\"disabled\":_vm.loading,\"multiple\":true,\"searchable\":true,\"loading\":_vm.loadingGroups,\"show-no-options\":false,\"close-on-select\":false},on:{\"search-change\":_vm.searchGroup},model:{value:(_vm.enforcedGroups),callback:function ($$v) {_vm.enforcedGroups=$$v},expression:\"enforcedGroups\"}})],1),_vm._v(\" \"),_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Two-factor authentication is not enforced for members of the following groups.'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('p',[_c('Multiselect',{attrs:{\"options\":_vm.groups,\"placeholder\":_vm.t('settings', 'Excluded groups'),\"disabled\":_vm.loading,\"multiple\":true,\"searchable\":true,\"loading\":_vm.loadingGroups,\"show-no-options\":false,\"close-on-select\":false},on:{\"search-change\":_vm.searchGroup},model:{value:(_vm.excludedGroups),callback:function ($$v) {_vm.excludedGroups=$$v},expression:\"excludedGroups\"}})],1),_vm._v(\" \"),_c('p',[_c('em',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced.'))+\"\\n\\t\\t\\t\")])])]:_vm._e(),_vm._v(\" \"),_c('p',[(_vm.dirty)?_c('Button',{attrs:{\"type\":\"primary\",\"disabled\":_vm.loading},on:{\"click\":_vm.saveChanges}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Save changes'))+\"\\n\\t\\t\")]):_vm._e()],1)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2019 Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport Vue from 'vue'\nimport Vuex, { Store } from 'vuex'\n\nVue.use(Vuex)\n\nconst state = {\n\tenforced: false,\n\tenforcedGroups: [],\n\texcludedGroups: [],\n}\n\nconst mutations = {\n\tsetEnforced(state, enabled) {\n\t\tVue.set(state, 'enforced', enabled)\n\t},\n\tsetEnforcedGroups(state, total) {\n\t\tVue.set(state, 'enforcedGroups', total)\n\t},\n\tsetExcludedGroups(state, used) {\n\t\tVue.set(state, 'excludedGroups', used)\n\t},\n}\n\nexport default new Store({\n\tstrict: process.env.NODE_ENV !== 'production',\n\tstate,\n\tmutations,\n})\n","/**\n * @copyright Copyright (c) 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport { loadState } from '@nextcloud/initial-state'\nimport Vue from 'vue'\n\nimport AdminTwoFactor from './components/AdminTwoFactor.vue'\nimport store from './store/admin-security'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(OC.requestToken)\n\nVue.prototype.t = t\n\n// Not used here but required for legacy templates\nwindow.OC = window.OC || {}\nwindow.OC.Settings = window.OC.Settings || {}\n\nstore.replaceState(\n\tloadState('settings', 'mandatory2FAState')\n)\n\nconst View = Vue.extend(AdminTwoFactor)\nnew View({\n\tstore,\n}).$mount('#two-factor-auth-settings')\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, \"\\n.two-factor-loading {\\n\\tdisplay: inline-block;\\n\\tvertical-align: sub;\\n\\tmargin-left: -2px;\\n\\tmargin-right: 1px;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AdminTwoFactor.vue\"],\"names\":[],\"mappings\":\";AAkKA;CACA,qBAAA;CACA,mBAAA;CACA,iBAAA;CACA,iBAAA;AACA\",\"sourcesContent\":[\"<template>\\n\\t<div>\\n\\t\\t<p class=\\\"settings-hint\\\">\\n\\t\\t\\t{{ t('settings', 'Two-factor authentication can be enforced for all users and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system.') }}\\n\\t\\t</p>\\n\\t\\t<p v-if=\\\"loading\\\">\\n\\t\\t\\t<span class=\\\"icon-loading-small two-factor-loading\\\" />\\n\\t\\t\\t<span>{{ t('settings', 'Enforce two-factor authentication') }}</span>\\n\\t\\t</p>\\n\\t\\t<p v-else>\\n\\t\\t\\t<input id=\\\"two-factor-enforced\\\"\\n\\t\\t\\t\\tv-model=\\\"enforced\\\"\\n\\t\\t\\t\\ttype=\\\"checkbox\\\"\\n\\t\\t\\t\\tclass=\\\"checkbox\\\">\\n\\t\\t\\t<label for=\\\"two-factor-enforced\\\">{{ t('settings', 'Enforce two-factor authentication') }}</label>\\n\\t\\t</p>\\n\\t\\t<template v-if=\\\"enforced\\\">\\n\\t\\t\\t<h3>{{ t('settings', 'Limit to groups') }}</h3>\\n\\t\\t\\t{{ t('settings', 'Enforcement of two-factor authentication can be set for certain groups only.') }}\\n\\t\\t\\t<p>\\n\\t\\t\\t\\t{{ t('settings', 'Two-factor authentication is enforced for all members of the following groups.') }}\\n\\t\\t\\t</p>\\n\\t\\t\\t<p>\\n\\t\\t\\t\\t<Multiselect v-model=\\\"enforcedGroups\\\"\\n\\t\\t\\t\\t\\t:options=\\\"groups\\\"\\n\\t\\t\\t\\t\\t:placeholder=\\\"t('settings', 'Enforced groups')\\\"\\n\\t\\t\\t\\t\\t:disabled=\\\"loading\\\"\\n\\t\\t\\t\\t\\t:multiple=\\\"true\\\"\\n\\t\\t\\t\\t\\t:searchable=\\\"true\\\"\\n\\t\\t\\t\\t\\t:loading=\\\"loadingGroups\\\"\\n\\t\\t\\t\\t\\t:show-no-options=\\\"false\\\"\\n\\t\\t\\t\\t\\t:close-on-select=\\\"false\\\"\\n\\t\\t\\t\\t\\t@search-change=\\\"searchGroup\\\" />\\n\\t\\t\\t</p>\\n\\t\\t\\t<p>\\n\\t\\t\\t\\t{{ t('settings', 'Two-factor authentication is not enforced for members of the following groups.') }}\\n\\t\\t\\t</p>\\n\\t\\t\\t<p>\\n\\t\\t\\t\\t<Multiselect v-model=\\\"excludedGroups\\\"\\n\\t\\t\\t\\t\\t:options=\\\"groups\\\"\\n\\t\\t\\t\\t\\t:placeholder=\\\"t('settings', 'Excluded groups')\\\"\\n\\t\\t\\t\\t\\t:disabled=\\\"loading\\\"\\n\\t\\t\\t\\t\\t:multiple=\\\"true\\\"\\n\\t\\t\\t\\t\\t:searchable=\\\"true\\\"\\n\\t\\t\\t\\t\\t:loading=\\\"loadingGroups\\\"\\n\\t\\t\\t\\t\\t:show-no-options=\\\"false\\\"\\n\\t\\t\\t\\t\\t:close-on-select=\\\"false\\\"\\n\\t\\t\\t\\t\\t@search-change=\\\"searchGroup\\\" />\\n\\t\\t\\t</p>\\n\\t\\t\\t<p>\\n\\t\\t\\t\\t<em>\\n\\t\\t\\t\\t\\t<!-- this text is also found in the documentation. update it there as well if it ever changes -->\\n\\t\\t\\t\\t\\t{{ t('settings', 'When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced.') }}\\n\\t\\t\\t\\t</em>\\n\\t\\t\\t</p>\\n\\t\\t</template>\\n\\t\\t<p>\\n\\t\\t\\t<Button v-if=\\\"dirty\\\"\\n\\t\\t\\t\\ttype=\\\"primary\\\"\\n\\t\\t\\t\\t:disabled=\\\"loading\\\"\\n\\t\\t\\t\\t@click=\\\"saveChanges\\\">\\n\\t\\t\\t\\t{{ t('settings', 'Save changes') }}\\n\\t\\t\\t</Button>\\n\\t\\t</p>\\n\\t</div>\\n</template>\\n\\n<script>\\nimport axios from '@nextcloud/axios'\\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\\nimport Button from '@nextcloud/vue/dist/Components/Button'\\n\\nimport _ from 'lodash'\\nimport { generateUrl, generateOcsUrl } from '@nextcloud/router'\\n\\nexport default {\\n\\tname: 'AdminTwoFactor',\\n\\tcomponents: {\\n\\t\\tMultiselect,\\n\\t\\tButton,\\n\\t},\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tloading: false,\\n\\t\\t\\tdirty: false,\\n\\t\\t\\tgroups: [],\\n\\t\\t\\tloadingGroups: false,\\n\\t\\t}\\n\\t},\\n\\tcomputed: {\\n\\t\\tenforced: {\\n\\t\\t\\tget() {\\n\\t\\t\\t\\treturn this.$store.state.enforced\\n\\t\\t\\t},\\n\\t\\t\\tset(val) {\\n\\t\\t\\t\\tthis.dirty = true\\n\\t\\t\\t\\tthis.$store.commit('setEnforced', val)\\n\\t\\t\\t},\\n\\t\\t},\\n\\t\\tenforcedGroups: {\\n\\t\\t\\tget() {\\n\\t\\t\\t\\treturn this.$store.state.enforcedGroups\\n\\t\\t\\t},\\n\\t\\t\\tset(val) {\\n\\t\\t\\t\\tthis.dirty = true\\n\\t\\t\\t\\tthis.$store.commit('setEnforcedGroups', val)\\n\\t\\t\\t},\\n\\t\\t},\\n\\t\\texcludedGroups: {\\n\\t\\t\\tget() {\\n\\t\\t\\t\\treturn this.$store.state.excludedGroups\\n\\t\\t\\t},\\n\\t\\t\\tset(val) {\\n\\t\\t\\t\\tthis.dirty = true\\n\\t\\t\\t\\tthis.$store.commit('setExcludedGroups', val)\\n\\t\\t\\t},\\n\\t\\t},\\n\\t},\\n\\tmounted() {\\n\\t\\t// Groups are loaded dynamically, but the assigned ones *should*\\n\\t\\t// be valid groups, so let's add them as initial state\\n\\t\\tthis.groups = _.sortedUniq(_.uniq(this.enforcedGroups.concat(this.excludedGroups)))\\n\\n\\t\\t// Populate the groups with a first set so the dropdown is not empty\\n\\t\\t// when opening the page the first time\\n\\t\\tthis.searchGroup('')\\n\\t},\\n\\tmethods: {\\n\\t\\tsearchGroup: _.debounce(function(query) {\\n\\t\\t\\tthis.loadingGroups = true\\n\\t\\t\\taxios.get(generateOcsUrl('cloud/groups?offset=0&search={query}&limit=20', { query }))\\n\\t\\t\\t\\t.then(res => res.data.ocs)\\n\\t\\t\\t\\t.then(ocs => ocs.data.groups)\\n\\t\\t\\t\\t.then(groups => { this.groups = _.sortedUniq(_.uniq(this.groups.concat(groups))) })\\n\\t\\t\\t\\t.catch(err => console.error('could not search groups', err))\\n\\t\\t\\t\\t.then(() => { this.loadingGroups = false })\\n\\t\\t}, 500),\\n\\n\\t\\tsaveChanges() {\\n\\t\\t\\tthis.loading = true\\n\\n\\t\\t\\tconst data = {\\n\\t\\t\\t\\tenforced: this.enforced,\\n\\t\\t\\t\\tenforcedGroups: this.enforcedGroups,\\n\\t\\t\\t\\texcludedGroups: this.excludedGroups,\\n\\t\\t\\t}\\n\\t\\t\\taxios.put(generateUrl('/settings/api/admin/twofactorauth'), data)\\n\\t\\t\\t\\t.then(resp => resp.data)\\n\\t\\t\\t\\t.then(state => {\\n\\t\\t\\t\\t\\tthis.state = state\\n\\t\\t\\t\\t\\tthis.dirty = false\\n\\t\\t\\t\\t})\\n\\t\\t\\t\\t.catch(err => {\\n\\t\\t\\t\\t\\tconsole.error('could not save changes', err)\\n\\t\\t\\t\\t})\\n\\t\\t\\t\\t.then(() => { this.loading = false })\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style>\\n\\t.two-factor-loading {\\n\\t\\tdisplay: inline-block;\\n\\t\\tvertical-align: sub;\\n\\t\\tmargin-left: -2px;\\n\\t\\tmargin-right: 1px;\\n\\t}\\n</style>\\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 = 788;","__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\t788: 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));","__webpack_require__.nc = undefined;","// 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__(11318); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_c","_self","staticClass","_v","_s","t","directives","name","rawName","value","expression","attrs","domProps","Array","isArray","enforced","_i","on","$event","$$a","$$el","target","$$c","checked","$$i","concat","slice","groups","loading","loadingGroups","searchGroup","model","callback","$$v","enforcedGroups","excludedGroups","_e","saveChanges","Vue","Vuex","mutations","setEnforced","state","enabled","setEnforcedGroups","total","setExcludedGroups","used","Store","strict","process","__webpack_nonce__","btoa","OC","requestToken","window","Settings","store","loadState","AdminTwoFactor","$mount","___CSS_LOADER_EXPORT___","push","module","id","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/settings-vue-settings-apps-users-management.js b/dist/settings-vue-settings-apps-users-management.js
index d28bebe8507..2d86deff5b6 100644
--- a/dist/settings-vue-settings-apps-users-management.js
+++ b/dist/settings-vue-settings-apps-users-management.js
@@ -1,3 +1,3 @@
/*! For license information please see settings-vue-settings-apps-users-management.js.LICENSE.txt */
-!function(){"use strict";var e,r,o,i={78778:function(e,r,o){var i=o(20144),u=o(34741),a=o(83678),s={name:"App",beforeMount:function(){null!==document.getElementById("serverData")&&this.$store.commit("setServerData",JSON.parse(document.getElementById("serverData").dataset.server))}},c=(0,o(51900).Z)(s,(function(){var e=this.$createElement;return(this._self._c||e)("router-view")}),[],!1,null,null,null).exports,d=o(78345),p=o(79753),f=function(){return Promise.all([o.e(7874),o.e(8351)]).then(o.bind(o,74394))},l=function(){return Promise.all([o.e(7874),o.e(7418)]).then(o.bind(o,77538))};i.default.use(d.Z);var m=new d.Z({mode:"history",base:(0,p.generateUrl)(""),linkActiveClass:"active",routes:[{path:"/:index(index.php/)?settings/users",component:f,props:!0,name:"users",children:[{path:":selectedGroup",name:"group",component:f}]},{path:"/:index(index.php/)?settings/apps",component:l,props:!0,name:"apps",children:[{path:":category",name:"apps-category",component:l,children:[{path:":id",name:"apps-details",component:l}]}]}]}),g=o(20629),h=o(4820),v=o(10128),A=o.n(v),b=function(e){return e.replace(/\/$/,"")},U=function(){return A()()},I=function(e,t){return h.default.get(b(e),t)},y=function(e,t){return h.default.post(b(e),t)},L=function(e,t){return h.default.put(b(e),t)},P=function(e,t){return h.default.delete(b(e),{params:t})},w=(0,o(17499).IY)().setApp("settings").detectUser().build(),E=function(e,t){return 1===t?e.sort((function(e,t){return e.usercount-e.disabled<t.usercount-t.disabled})):e.sort((function(e,t){return e.name.localeCompare(t.name)}))},O={id:"",name:"",usercount:0,disabled:0,canAdd:!0,canRemove:!0},C={appendUsers:function(e,t){var r=e.users.concat(Object.keys(t).map((function(e){return t[e]})));e.usersOffset+=e.usersLimit,e.users=r},setPasswordPolicyMinLength:function(e,t){e.minPasswordLength=""!==t?t:0},initGroups:function(e,t){var r=t.groups,n=t.orderBy,o=t.userCount;e.groups=r.map((function(e){return Object.assign({},O,e)})),e.orderBy=n,e.userCount=o,e.groups=E(e.groups,e.orderBy)},addGroup:function(e,t){var r=t.gid,n=t.displayName;try{if(void 0!==e.groups.find((function(e){return e.id===r})))return;var o=Object.assign({},O,{id:r,name:n});e.groups.push(o),e.groups=E(e.groups,e.orderBy)}catch(e){console.error("Can't create group",e)}},renameGroup:function(e,t){var r=t.gid,n=t.displayName,o=e.groups.findIndex((function(e){return e.id===r}));if(o>=0){var i=e.groups[o];i.name=n,e.groups.splice(o,1,i),e.groups=E(e.groups,e.orderBy)}},removeGroup:function(e,t){var r=e.groups.findIndex((function(e){return e.id===t}));r>=0&&e.groups.splice(r,1)},addUserGroup:function(e,t){var r=t.userid,n=t.gid,o=e.groups.find((function(e){return e.id===n})),i=e.users.find((function(e){return e.id===r}));o&&i.enabled&&e.userCount>0&&o.usercount++,i.groups.push(n),e.groups=E(e.groups,e.orderBy)},removeUserGroup:function(e,t){var r=t.userid,n=t.gid,o=e.groups.find((function(e){return e.id===n})),i=e.users.find((function(e){return e.id===r}));o&&i.enabled&&e.userCount>0&&o.usercount--;var u=i.groups;u.splice(u.indexOf(n),1),e.groups=E(e.groups,e.orderBy)},addUserSubAdmin:function(e,t){var r=t.userid,n=t.gid;e.users.find((function(e){return e.id===r})).subadmin.push(n)},removeUserSubAdmin:function(e,t){var r=t.userid,n=t.gid,o=e.users.find((function(e){return e.id===r})).subadmin;o.splice(o.indexOf(n),1)},deleteUser:function(e,t){var r=e.users.findIndex((function(e){return e.id===t}));this.commit("updateUserCounts",{user:e.users[r],actionType:"remove"}),e.users.splice(r,1)},addUserData:function(e,t){var r=t.data.ocs.data;e.users.push(r),this.commit("updateUserCounts",{user:r,actionType:"create"})},enableDisableUser:function(e,t){var r=t.userid,n=t.enabled,o=e.users.find((function(e){return e.id===r}));o.enabled=n,this.commit("updateUserCounts",{user:o,actionType:n?"enable":"disable"})},updateUserCounts:function(e,t){var r=t.user,n=t.actionType,o=e.groups.find((function(e){return"disabled"===e.id}));switch(n){case"enable":case"disable":o.usercount+=r.enabled?-1:1,e.userCount+=r.enabled?1:-1,r.groups.forEach((function(t){e.groups.find((function(e){return e.id===t})).disabled+=r.enabled?-1:1}));break;case"create":e.userCount++,r.groups.forEach((function(t){e.groups.find((function(e){return e.id===t})).usercount++}));break;case"remove":r.enabled?(e.userCount--,r.groups.forEach((function(t){e.groups.find((function(e){return e.id===t})).usercount--}))):(o.usercount--,r.groups.forEach((function(t){e.groups.find((function(e){return e.id===t})).disabled--})));break;default:w.error("Unknown action type in updateUserCounts: '".concat(n,"'"))}},setUserData:function(e,t){var r=t.userid,n=t.key,o=t.value;if("quota"===n){var i=OC.Util.computerFileSize(o);e.users.find((function(e){return e.id===r}))[n][n]=null!==i?i:o}else e.users.find((function(e){return e.id===r}))[n]=o},resetUsers:function(e){e.users=[],e.usersOffset=0}},_=h.default.CancelToken,R=null,k={state:{users:[],groups:[],orderBy:1,minPasswordLength:0,usersOffset:0,usersLimit:25,userCount:0},mutations:C,getters:{getUsers:function(e){return e.users},getGroups:function(e){return e.groups},getSubadminGroups:function(e){return e.groups.filter((function(e){return"admin"!==e.id&&"disabled"!==e.id}))},getPasswordPolicyMinLength:function(e){return e.minPasswordLength},getUsersOffset:function(e){return e.usersOffset},getUsersLimit:function(e){return e.usersLimit},getUserCount:function(e){return e.userCount}},actions:{getUsers:function(e,t){var r=t.offset,n=t.limit,o=t.search,i=t.group;return R&&R.cancel("Operation canceled by another search request."),R=_.source(),o="string"==typeof o?o:"",""!==(i="string"==typeof i?i:"")?I((0,p.generateOcsUrl)("cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}",{group:encodeURIComponent(i),offset:r,limit:n,search:o}),{cancelToken:R.token}).then((function(t){var r=Object.keys(t.data.ocs.data.users).length;return r>0&&e.commit("appendUsers",t.data.ocs.data.users),r})).catch((function(t){h.default.isCancel(t)||e.commit("API_FAILURE",t)})):I((0,p.generateOcsUrl)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:r,limit:n,search:o}),{cancelToken:R.token}).then((function(t){var r=Object.keys(t.data.ocs.data.users).length;return r>0&&e.commit("appendUsers",t.data.ocs.data.users),r})).catch((function(t){h.default.isCancel(t)||e.commit("API_FAILURE",t)}))},getGroups:function(e,t){var r=t.offset,n=t.limit,o=t.search;o="string"==typeof o?o:"";var i=-1===n?"":"&limit=".concat(n);return I((0,p.generateOcsUrl)("cloud/groups?offset={offset}&search={search}",{offset:r,search:o})+i).then((function(t){return Object.keys(t.data.ocs.data.groups).length>0&&(t.data.ocs.data.groups.forEach((function(t){e.commit("addGroup",{gid:t,displayName:t})})),!0)})).catch((function(t){return e.commit("API_FAILURE",t)}))},getUsersFromList:function(e,t){var r=t.offset,n=t.limit,o=t.search;return o="string"==typeof o?o:"",I((0,p.generateOcsUrl)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:r,limit:n,search:o})).then((function(t){return Object.keys(t.data.ocs.data.users).length>0&&(e.commit("appendUsers",t.data.ocs.data.users),!0)})).catch((function(t){return e.commit("API_FAILURE",t)}))},getUsersFromGroup:function(e,t){var r=t.groupid,n=t.offset,o=t.limit;return I((0,p.generateOcsUrl)("cloud/users/{groupId}/details?offset={offset}&limit={limit}",{groupId:encodeURIComponent(r),offset:n,limit:o})).then((function(t){return e.commit("getUsersFromList",t.data.ocs.data.users)})).catch((function(t){return e.commit("API_FAILURE",t)}))},getPasswordPolicyMinLength:function(e){return!(!OC.getCapabilities().password_policy||!OC.getCapabilities().password_policy.minLength)&&(e.commit("setPasswordPolicyMinLength",OC.getCapabilities().password_policy.minLength),OC.getCapabilities().password_policy.minLength)},addGroup:function(e,t){return U().then((function(r){return y((0,p.generateOcsUrl)("cloud/groups"),{groupid:t}).then((function(r){return e.commit("addGroup",{gid:t,displayName:t}),{gid:t,displayName:t}})).catch((function(e){throw e}))})).catch((function(r){throw e.commit("API_FAILURE",{gid:t,error:r}),r}))},renameGroup:function(e,t){var r=t.groupid,n=t.displayName;return U().then((function(t){return L((0,p.generateOcsUrl)("cloud/groups/{groupId}",{groupId:encodeURIComponent(r)}),{key:"displayname",value:n}).then((function(t){return e.commit("renameGroup",{gid:r,displayName:n}),{groupid:r,displayName:n}})).catch((function(e){throw e}))})).catch((function(t){throw e.commit("API_FAILURE",{groupid:r,error:t}),t}))},removeGroup:function(e,t){return U().then((function(r){return P((0,p.generateOcsUrl)("cloud/groups/{groupId}",{groupId:encodeURIComponent(t)})).then((function(r){return e.commit("removeGroup",t)})).catch((function(e){throw e}))})).catch((function(r){return e.commit("API_FAILURE",{gid:t,error:r})}))},addUserGroup:function(e,t){var r=t.userid,n=t.gid;return U().then((function(t){return y((0,p.generateOcsUrl)("cloud/users/{userid}/groups",{userid:r}),{groupid:n}).then((function(t){return e.commit("addUserGroup",{userid:r,gid:n})})).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{userid:r,error:t})}))},removeUserGroup:function(e,t){var r=t.userid,n=t.gid;return U().then((function(t){return P((0,p.generateOcsUrl)("cloud/users/{userid}/groups",{userid:r}),{groupid:n}).then((function(t){return e.commit("removeUserGroup",{userid:r,gid:n})})).catch((function(e){throw e}))})).catch((function(t){throw e.commit("API_FAILURE",{userid:r,error:t}),t}))},addUserSubAdmin:function(e,t){var r=t.userid,n=t.gid;return U().then((function(t){return y((0,p.generateOcsUrl)("cloud/users/{userid}/subadmins",{userid:r}),{groupid:n}).then((function(t){return e.commit("addUserSubAdmin",{userid:r,gid:n})})).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{userid:r,error:t})}))},removeUserSubAdmin:function(e,t){var r=t.userid,n=t.gid;return U().then((function(t){return P((0,p.generateOcsUrl)("cloud/users/{userid}/subadmins",{userid:r}),{groupid:n}).then((function(t){return e.commit("removeUserSubAdmin",{userid:r,gid:n})})).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{userid:r,error:t})}))},wipeUserDevices:function(e,t){return U().then((function(e){return y((0,p.generateOcsUrl)("cloud/users/{userid}/wipe",{userid:t})).catch((function(e){throw e}))})).catch((function(r){return e.commit("API_FAILURE",{userid:t,error:r})}))},deleteUser:function(e,t){return U().then((function(r){return P((0,p.generateOcsUrl)("cloud/users/{userid}",{userid:t})).then((function(r){return e.commit("deleteUser",t)})).catch((function(e){throw e}))})).catch((function(r){return e.commit("API_FAILURE",{userid:t,error:r})}))},addUser:function(e,t){var r=e.commit,n=e.dispatch,o=t.userid,i=t.password,u=t.displayName,a=t.email,s=t.groups,c=t.subadmin,d=t.quota,f=t.language;return U().then((function(e){return y((0,p.generateOcsUrl)("cloud/users"),{userid:o,password:i,displayName:u,email:a,groups:s,subadmin:c,quota:d,language:f}).then((function(e){return n("addUserData",o||e.data.ocs.data.id)})).catch((function(e){throw e}))})).catch((function(e){throw r("API_FAILURE",{userid:o,error:e}),e}))},addUserData:function(e,t){return U().then((function(r){return I((0,p.generateOcsUrl)("cloud/users/{userid}",{userid:t})).then((function(t){return e.commit("addUserData",t)})).catch((function(e){throw e}))})).catch((function(r){return e.commit("API_FAILURE",{userid:t,error:r})}))},enableDisableUser:function(e,t){var r=t.userid,n=t.enabled,o=void 0===n||n,i=o?"enable":"disable";return U().then((function(t){return L((0,p.generateOcsUrl)("cloud/users/{userid}/{userStatus}",{userid:r,userStatus:i})).then((function(t){return e.commit("enableDisableUser",{userid:r,enabled:o})})).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{userid:r,error:t})}))},setUserData:function(e,t){var r=t.userid,n=t.key,o=t.value,i=["email","displayname"];return-1!==["email","language","quota","displayname","password"].indexOf(n)&&"string"==typeof o&&(-1===i.indexOf(n)&&o.length>0||-1!==i.indexOf(n))?U().then((function(t){return L((0,p.generateOcsUrl)("cloud/users/{userid}",{userid:r}),{key:n,value:o}).then((function(t){return e.commit("setUserData",{userid:r,key:n,value:o})})).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{userid:r,error:t})})):Promise.reject(new Error("Invalid request data"))},sendWelcomeMail:function(e,t){return U().then((function(e){return y((0,p.generateOcsUrl)("cloud/users/{userid}/welcome",{userid:t})).then((function(e){return!0})).catch((function(e){throw e}))})).catch((function(r){return e.commit("API_FAILURE",{userid:t,error:r})}))}}},F=o(26932),S=(o(73317),{APPS_API_FAILURE:function(e,r){(0,F.x2)(t("settings","An error occured during the request. Unable to proceed.")+"<br>"+r.error.response.data.data.message,{isHTML:!0}),console.error(e,r)},initCategories:function(e,t){var r=t.categories,n=t.updateCount;e.categories=r,e.updateCount=n},setUpdateCount:function(e,t){e.updateCount=t},addCategory:function(e,t){e.categories.push(t)},appendCategories:function(e,t){e.categories=t},setAllApps:function(e,t){e.apps=t},setError:function(e,t){var r=t.appId,n=t.error;Array.isArray(r)||(r=[r]),r.forEach((function(t){e.apps.find((function(e){return e.id===t})).error=n}))},clearError:function(e,t){var r=t.appId;t.error,e.apps.find((function(e){return e.id===r})).error=null},enableApp:function(e,t){var r=t.appId,n=t.groups,o=e.apps.find((function(e){return e.id===r}));o.active=!0,o.groups=n},disableApp:function(e,t){var r=e.apps.find((function(e){return e.id===t}));r.active=!1,r.groups=[],r.removable&&(r.canUnInstall=!0)},uninstallApp:function(e,t){e.apps.find((function(e){return e.id===t})).active=!1,e.apps.find((function(e){return e.id===t})).groups=[],e.apps.find((function(e){return e.id===t})).needsDownload=!0,e.apps.find((function(e){return e.id===t})).installed=!1,e.apps.find((function(e){return e.id===t})).canUnInstall=!1,e.apps.find((function(e){return e.id===t})).canInstall=!0},updateApp:function(e,t){var r=e.apps.find((function(e){return e.id===t})),n=r.update;r.update=null,r.version=n,e.updateCount--},resetApps:function(e){e.apps=[]},reset:function(e){e.apps=[],e.categories=[],e.updateCount=0},startLoading:function(e,t){Array.isArray(t)?t.forEach((function(t){i.default.set(e.loading,t,!0)})):i.default.set(e.loading,t,!0)},stopLoading:function(e,t){Array.isArray(t)?t.forEach((function(t){i.default.set(e.loading,t,!1)})):i.default.set(e.loading,t,!1)}}),x={enableApp:function(e,r){var n,o=r.appId,i=r.groups;return n=Array.isArray(o)?o:[o],U().then((function(r){return e.commit("startLoading",n),e.commit("startLoading","install"),y((0,p.generateUrl)("settings/apps/enable"),{appIds:n,groups:i}).then((function(r){return e.commit("stopLoading",n),e.commit("stopLoading","install"),n.forEach((function(t){e.commit("enableApp",{appId:t,groups:i})})),I((0,p.generateUrl)("apps/files")).then((function(){r.data.update_required&&((0,F.JQ)(t("settings","The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds."),{onClick:function(){return window.location.reload()},close:!1}),setTimeout((function(){location.reload()}),5e3))})).catch((function(){Array.isArray(o)||e.commit("setError",{appId:n,error:t("settings","Error: This app cannot be enabled because it makes the server unstable")})}))})).catch((function(t){e.commit("stopLoading",n),e.commit("stopLoading","install"),e.commit("setError",{appId:n,error:t.response.data.data.message}),e.commit("APPS_API_FAILURE",{appId:o,error:t})}))})).catch((function(t){return e.commit("API_FAILURE",{appId:o,error:t})}))},forceEnableApp:function(e,t){var r,n=t.appId;return t.groups,r=Array.isArray(n)?n:[n],U().then((function(){return e.commit("startLoading",r),e.commit("startLoading","install"),y((0,p.generateUrl)("settings/apps/force"),{appId:n}).then((function(e){location.reload()})).catch((function(t){e.commit("stopLoading",r),e.commit("stopLoading","install"),e.commit("setError",{appId:r,error:t.response.data.data.message}),e.commit("APPS_API_FAILURE",{appId:n,error:t})}))})).catch((function(t){return e.commit("API_FAILURE",{appId:n,error:t})}))},disableApp:function(e,t){var r,n=t.appId;return r=Array.isArray(n)?n:[n],U().then((function(t){return e.commit("startLoading",r),y((0,p.generateUrl)("settings/apps/disable"),{appIds:r}).then((function(t){return e.commit("stopLoading",r),r.forEach((function(t){e.commit("disableApp",t)})),!0})).catch((function(t){e.commit("stopLoading",r),e.commit("APPS_API_FAILURE",{appId:n,error:t})}))})).catch((function(t){return e.commit("API_FAILURE",{appId:n,error:t})}))},uninstallApp:function(e,t){var r=t.appId;return U().then((function(t){return e.commit("startLoading",r),I((0,p.generateUrl)("settings/apps/uninstall/".concat(r))).then((function(t){return e.commit("stopLoading",r),e.commit("uninstallApp",r),!0})).catch((function(t){e.commit("stopLoading",r),e.commit("APPS_API_FAILURE",{appId:r,error:t})}))})).catch((function(t){return e.commit("API_FAILURE",{appId:r,error:t})}))},updateApp:function(e,t){var r=t.appId;return U().then((function(t){return e.commit("startLoading",r),e.commit("startLoading","install"),I((0,p.generateUrl)("settings/apps/update/".concat(r))).then((function(t){return e.commit("stopLoading","install"),e.commit("stopLoading",r),e.commit("updateApp",r),!0})).catch((function(t){e.commit("stopLoading",r),e.commit("stopLoading","install"),e.commit("APPS_API_FAILURE",{appId:r,error:t})}))})).catch((function(t){return e.commit("API_FAILURE",{appId:r,error:t})}))},getAllApps:function(e){return e.commit("startLoading","list"),I((0,p.generateUrl)("settings/apps/list")).then((function(t){return e.commit("setAllApps",t.data.apps),e.commit("stopLoading","list"),!0})).catch((function(t){return e.commit("API_FAILURE",t)}))},getCategories:function(e){return e.commit("startLoading","categories"),I((0,p.generateUrl)("settings/apps/categories")).then((function(t){return t.data.length>0&&(e.commit("appendCategories",t.data),e.commit("stopLoading","categories"),!0)})).catch((function(t){return e.commit("API_FAILURE",t)}))}},G={state:{apps:[],categories:[],updateCount:0,loading:{},loadingList:!1},mutations:S,getters:{loading:function(e){return function(t){return e.loading[t]}},getCategories:function(e){return e.categories},getAllApps:function(e){return e.apps},getUpdateCount:function(e){return e.updateCount}},actions:x},D={state:{},mutations:{},getters:{},actions:{setAppConfig:function(e,t){var r=t.app,n=t.key,o=t.value;return U().then((function(e){return y((0,p.generateOcsUrl)("apps/provisioning_api/api/v1/config/apps/{app}/{key}",{app:r,key:n}),{value:o}).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{app:r,key:n,value:o,error:t})}))}}};i.default.use(g.ZP);var T={API_FAILURE:function(e,r){try{var n=r.error.response.data.ocs.meta.message;(0,F.x2)(t("settings","An error occured during the request. Unable to proceed.")+"<br>"+n,{isHTML:!0})}catch(e){(0,F.x2)(t("settings","An error occured during the request. Unable to proceed."))}console.error(e,r)}},j=new g.yh({modules:{users:k,apps:G,settings:{state:{serverData:{}},mutations:{setServerData:function(e,t){e.serverData=t}},getters:{getServerData:function(e){return e.serverData}},actions:{}},oc:D},strict:!1,mutations:T});i.default.use(u.default,{defaultHtml:!1}),(0,a.Z)(j,m),o.nc=btoa(OC.requestToken),i.default.prototype.t=t,i.default.prototype.n=n,i.default.prototype.OC=OC,i.default.prototype.OCA=OCA,i.default.prototype.oc_userconfig=oc_userconfig,new i.default({router:m,store:j,render:function(e){return e(c)}}).$mount("#content")}},u={};function a(e){var t=u[e];if(void 0!==t)return t.exports;var r=u[e]={id:e,loaded:!1,exports:{}};return i[e].call(r.exports,r,r.exports,a),r.loaded=!0,r.exports}a.m=i,a.amdD=function(){throw new Error("define cannot be used indirect")},a.amdO={},e=[],a.O=function(t,r,n,o){if(!r){var i=1/0;for(d=0;d<e.length;d++){r=e[d][0],n=e[d][1],o=e[d][2];for(var u=!0,s=0;s<r.length;s++)(!1&o||i>=o)&&Object.keys(a.O).every((function(e){return a.O[e](r[s])}))?r.splice(s--,1):(u=!1,o<i&&(i=o));if(u){e.splice(d--,1);var c=n();void 0!==c&&(t=c)}}return t}o=o||0;for(var d=e.length;d>0&&e[d-1][2]>o;d--)e[d]=e[d-1];e[d]=[r,n,o]},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,{a:t}),t},a.d=function(e,t){for(var r in t)a.o(t,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},a.f={},a.e=function(e){return Promise.all(Object.keys(a.f).reduce((function(t,r){return a.f[r](e,t),t}),[]))},a.u=function(e){return{7418:"settings-apps-view",8351:"settings-users"}[e]+"-"+e+".js?v="+{7418:"79a434bb85984935c596",8351:"602a08575de144a57dfd"}[e]},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},o="nextcloud:",a.l=function(e,t,n,i){if(r[e])r[e].push(t);else{var u,s;if(void 0!==n)for(var c=document.getElementsByTagName("script"),d=0;d<c.length;d++){var p=c[d];if(p.getAttribute("src")==e||p.getAttribute("data-webpack")==o+n){u=p;break}}u||(s=!0,(u=document.createElement("script")).charset="utf-8",u.timeout=120,a.nc&&u.setAttribute("nonce",a.nc),u.setAttribute("data-webpack",o+n),u.src=e),r[e]=[t];var f=function(t,n){u.onerror=u.onload=null,clearTimeout(l);var o=r[e];if(delete r[e],u.parentNode&&u.parentNode.removeChild(u),o&&o.forEach((function(e){return e(n)})),t)return t(n)},l=setTimeout(f.bind(null,void 0,{type:"timeout",target:u}),12e4);u.onerror=f.bind(null,u.onerror),u.onload=f.bind(null,u.onload),s&&document.head.appendChild(u)}},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},a.j=8562,function(){var e;a.g.importScripts&&(e=a.g.location+"");var t=a.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");r.length&&(e=r[r.length-1].src)}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=e}(),function(){a.b=document.baseURI||self.location.href;var e={8562:0};a.f.j=function(t,r){var n=a.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise((function(r,o){n=e[t]=[r,o]}));r.push(n[2]=o);var i=a.p+a.u(t),u=new Error;a.l(i,(function(r){if(a.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),i=r&&r.target&&r.target.src;u.message="Loading chunk "+t+" failed.\n("+o+": "+i+")",u.name="ChunkLoadError",u.type=o,u.request=i,n[1](u)}}),"chunk-"+t,t)}},a.O.j=function(t){return 0===e[t]};var t=function(t,r){var n,o,i=r[0],u=r[1],s=r[2],c=0;if(i.some((function(t){return 0!==e[t]}))){for(n in u)a.o(u,n)&&(a.m[n]=u[n]);if(s)var d=s(a)}for(t&&t(r);c<i.length;c++)o=i[c],a.o(e,o)&&e[o]&&e[o][0](),e[o]=0;return a.O(d)},r=self.webpackChunknextcloud=self.webpackChunknextcloud||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))}();var s=a.O(void 0,[7874],(function(){return a(78778)}));s=a.O(s)}();
-//# sourceMappingURL=settings-vue-settings-apps-users-management.js.map?v=51407d62507dc471e53c \ No newline at end of file
+!function(){"use strict";var e,r,o,i={78778:function(e,r,o){var i=o(20144),u=o(34741),a=o(83678),s={name:"App",beforeMount:function(){null!==document.getElementById("serverData")&&this.$store.commit("setServerData",JSON.parse(document.getElementById("serverData").dataset.server))}},c=(0,o(51900).Z)(s,(function(){var e=this.$createElement;return(this._self._c||e)("router-view")}),[],!1,null,null,null).exports,d=o(78345),p=o(79753),f=function(){return Promise.all([o.e(7874),o.e(8351)]).then(o.bind(o,74394))},l=function(){return Promise.all([o.e(7874),o.e(7418)]).then(o.bind(o,77538))};i.default.use(d.Z);var m=new d.Z({mode:"history",base:(0,p.generateUrl)(""),linkActiveClass:"active",routes:[{path:"/:index(index.php/)?settings/users",component:f,props:!0,name:"users",children:[{path:":selectedGroup",name:"group",component:f}]},{path:"/:index(index.php/)?settings/apps",component:l,props:!0,name:"apps",children:[{path:":category",name:"apps-category",component:l,children:[{path:":id",name:"apps-details",component:l}]}]}]}),g=o(20629),h=o(4820),v=o(10128),A=o.n(v),b=function(e){return e.replace(/\/$/,"")},U=function(){return A()()},I=function(e,t){return h.default.get(b(e),t)},y=function(e,t){return h.default.post(b(e),t)},L=function(e,t){return h.default.put(b(e),t)},P=function(e,t){return h.default.delete(b(e),{params:t})},w=(0,o(17499).IY)().setApp("settings").detectUser().build(),E=function(e,t){return 1===t?e.sort((function(e,t){return e.usercount-e.disabled<t.usercount-t.disabled})):e.sort((function(e,t){return e.name.localeCompare(t.name)}))},O={id:"",name:"",usercount:0,disabled:0,canAdd:!0,canRemove:!0},C={appendUsers:function(e,t){var r=e.users.concat(Object.keys(t).map((function(e){return t[e]})));e.usersOffset+=e.usersLimit,e.users=r},setPasswordPolicyMinLength:function(e,t){e.minPasswordLength=""!==t?t:0},initGroups:function(e,t){var r=t.groups,n=t.orderBy,o=t.userCount;e.groups=r.map((function(e){return Object.assign({},O,e)})),e.orderBy=n,e.userCount=o,e.groups=E(e.groups,e.orderBy)},addGroup:function(e,t){var r=t.gid,n=t.displayName;try{if(void 0!==e.groups.find((function(e){return e.id===r})))return;var o=Object.assign({},O,{id:r,name:n});e.groups.push(o),e.groups=E(e.groups,e.orderBy)}catch(e){console.error("Can't create group",e)}},renameGroup:function(e,t){var r=t.gid,n=t.displayName,o=e.groups.findIndex((function(e){return e.id===r}));if(o>=0){var i=e.groups[o];i.name=n,e.groups.splice(o,1,i),e.groups=E(e.groups,e.orderBy)}},removeGroup:function(e,t){var r=e.groups.findIndex((function(e){return e.id===t}));r>=0&&e.groups.splice(r,1)},addUserGroup:function(e,t){var r=t.userid,n=t.gid,o=e.groups.find((function(e){return e.id===n})),i=e.users.find((function(e){return e.id===r}));o&&i.enabled&&e.userCount>0&&o.usercount++,i.groups.push(n),e.groups=E(e.groups,e.orderBy)},removeUserGroup:function(e,t){var r=t.userid,n=t.gid,o=e.groups.find((function(e){return e.id===n})),i=e.users.find((function(e){return e.id===r}));o&&i.enabled&&e.userCount>0&&o.usercount--;var u=i.groups;u.splice(u.indexOf(n),1),e.groups=E(e.groups,e.orderBy)},addUserSubAdmin:function(e,t){var r=t.userid,n=t.gid;e.users.find((function(e){return e.id===r})).subadmin.push(n)},removeUserSubAdmin:function(e,t){var r=t.userid,n=t.gid,o=e.users.find((function(e){return e.id===r})).subadmin;o.splice(o.indexOf(n),1)},deleteUser:function(e,t){var r=e.users.findIndex((function(e){return e.id===t}));this.commit("updateUserCounts",{user:e.users[r],actionType:"remove"}),e.users.splice(r,1)},addUserData:function(e,t){var r=t.data.ocs.data;e.users.push(r),this.commit("updateUserCounts",{user:r,actionType:"create"})},enableDisableUser:function(e,t){var r=t.userid,n=t.enabled,o=e.users.find((function(e){return e.id===r}));o.enabled=n,this.commit("updateUserCounts",{user:o,actionType:n?"enable":"disable"})},updateUserCounts:function(e,t){var r=t.user,n=t.actionType,o=e.groups.find((function(e){return"disabled"===e.id}));switch(n){case"enable":case"disable":o.usercount+=r.enabled?-1:1,e.userCount+=r.enabled?1:-1,r.groups.forEach((function(t){e.groups.find((function(e){return e.id===t})).disabled+=r.enabled?-1:1}));break;case"create":e.userCount++,r.groups.forEach((function(t){e.groups.find((function(e){return e.id===t})).usercount++}));break;case"remove":r.enabled?(e.userCount--,r.groups.forEach((function(t){e.groups.find((function(e){return e.id===t})).usercount--}))):(o.usercount--,r.groups.forEach((function(t){e.groups.find((function(e){return e.id===t})).disabled--})));break;default:w.error("Unknown action type in updateUserCounts: '".concat(n,"'"))}},setUserData:function(e,t){var r=t.userid,n=t.key,o=t.value;if("quota"===n){var i=OC.Util.computerFileSize(o);e.users.find((function(e){return e.id===r}))[n][n]=null!==i?i:o}else e.users.find((function(e){return e.id===r}))[n]=o},resetUsers:function(e){e.users=[],e.usersOffset=0}},_=h.default.CancelToken,R=null,k={state:{users:[],groups:[],orderBy:1,minPasswordLength:0,usersOffset:0,usersLimit:25,userCount:0},mutations:C,getters:{getUsers:function(e){return e.users},getGroups:function(e){return e.groups},getSubadminGroups:function(e){return e.groups.filter((function(e){return"admin"!==e.id&&"disabled"!==e.id}))},getPasswordPolicyMinLength:function(e){return e.minPasswordLength},getUsersOffset:function(e){return e.usersOffset},getUsersLimit:function(e){return e.usersLimit},getUserCount:function(e){return e.userCount}},actions:{getUsers:function(e,t){var r=t.offset,n=t.limit,o=t.search,i=t.group;return R&&R.cancel("Operation canceled by another search request."),R=_.source(),o="string"==typeof o?o:"",""!==(i="string"==typeof i?i:"")?I((0,p.generateOcsUrl)("cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}",{group:encodeURIComponent(i),offset:r,limit:n,search:o}),{cancelToken:R.token}).then((function(t){var r=Object.keys(t.data.ocs.data.users).length;return r>0&&e.commit("appendUsers",t.data.ocs.data.users),r})).catch((function(t){h.default.isCancel(t)||e.commit("API_FAILURE",t)})):I((0,p.generateOcsUrl)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:r,limit:n,search:o}),{cancelToken:R.token}).then((function(t){var r=Object.keys(t.data.ocs.data.users).length;return r>0&&e.commit("appendUsers",t.data.ocs.data.users),r})).catch((function(t){h.default.isCancel(t)||e.commit("API_FAILURE",t)}))},getGroups:function(e,t){var r=t.offset,n=t.limit,o=t.search;o="string"==typeof o?o:"";var i=-1===n?"":"&limit=".concat(n);return I((0,p.generateOcsUrl)("cloud/groups?offset={offset}&search={search}",{offset:r,search:o})+i).then((function(t){return Object.keys(t.data.ocs.data.groups).length>0&&(t.data.ocs.data.groups.forEach((function(t){e.commit("addGroup",{gid:t,displayName:t})})),!0)})).catch((function(t){return e.commit("API_FAILURE",t)}))},getUsersFromList:function(e,t){var r=t.offset,n=t.limit,o=t.search;return o="string"==typeof o?o:"",I((0,p.generateOcsUrl)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:r,limit:n,search:o})).then((function(t){return Object.keys(t.data.ocs.data.users).length>0&&(e.commit("appendUsers",t.data.ocs.data.users),!0)})).catch((function(t){return e.commit("API_FAILURE",t)}))},getUsersFromGroup:function(e,t){var r=t.groupid,n=t.offset,o=t.limit;return I((0,p.generateOcsUrl)("cloud/users/{groupId}/details?offset={offset}&limit={limit}",{groupId:encodeURIComponent(r),offset:n,limit:o})).then((function(t){return e.commit("getUsersFromList",t.data.ocs.data.users)})).catch((function(t){return e.commit("API_FAILURE",t)}))},getPasswordPolicyMinLength:function(e){return!(!OC.getCapabilities().password_policy||!OC.getCapabilities().password_policy.minLength)&&(e.commit("setPasswordPolicyMinLength",OC.getCapabilities().password_policy.minLength),OC.getCapabilities().password_policy.minLength)},addGroup:function(e,t){return U().then((function(r){return y((0,p.generateOcsUrl)("cloud/groups"),{groupid:t}).then((function(r){return e.commit("addGroup",{gid:t,displayName:t}),{gid:t,displayName:t}})).catch((function(e){throw e}))})).catch((function(r){throw e.commit("API_FAILURE",{gid:t,error:r}),r}))},renameGroup:function(e,t){var r=t.groupid,n=t.displayName;return U().then((function(t){return L((0,p.generateOcsUrl)("cloud/groups/{groupId}",{groupId:encodeURIComponent(r)}),{key:"displayname",value:n}).then((function(t){return e.commit("renameGroup",{gid:r,displayName:n}),{groupid:r,displayName:n}})).catch((function(e){throw e}))})).catch((function(t){throw e.commit("API_FAILURE",{groupid:r,error:t}),t}))},removeGroup:function(e,t){return U().then((function(r){return P((0,p.generateOcsUrl)("cloud/groups/{groupId}",{groupId:encodeURIComponent(t)})).then((function(r){return e.commit("removeGroup",t)})).catch((function(e){throw e}))})).catch((function(r){return e.commit("API_FAILURE",{gid:t,error:r})}))},addUserGroup:function(e,t){var r=t.userid,n=t.gid;return U().then((function(t){return y((0,p.generateOcsUrl)("cloud/users/{userid}/groups",{userid:r}),{groupid:n}).then((function(t){return e.commit("addUserGroup",{userid:r,gid:n})})).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{userid:r,error:t})}))},removeUserGroup:function(e,t){var r=t.userid,n=t.gid;return U().then((function(t){return P((0,p.generateOcsUrl)("cloud/users/{userid}/groups",{userid:r}),{groupid:n}).then((function(t){return e.commit("removeUserGroup",{userid:r,gid:n})})).catch((function(e){throw e}))})).catch((function(t){throw e.commit("API_FAILURE",{userid:r,error:t}),t}))},addUserSubAdmin:function(e,t){var r=t.userid,n=t.gid;return U().then((function(t){return y((0,p.generateOcsUrl)("cloud/users/{userid}/subadmins",{userid:r}),{groupid:n}).then((function(t){return e.commit("addUserSubAdmin",{userid:r,gid:n})})).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{userid:r,error:t})}))},removeUserSubAdmin:function(e,t){var r=t.userid,n=t.gid;return U().then((function(t){return P((0,p.generateOcsUrl)("cloud/users/{userid}/subadmins",{userid:r}),{groupid:n}).then((function(t){return e.commit("removeUserSubAdmin",{userid:r,gid:n})})).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{userid:r,error:t})}))},wipeUserDevices:function(e,t){return U().then((function(e){return y((0,p.generateOcsUrl)("cloud/users/{userid}/wipe",{userid:t})).catch((function(e){throw e}))})).catch((function(r){return e.commit("API_FAILURE",{userid:t,error:r})}))},deleteUser:function(e,t){return U().then((function(r){return P((0,p.generateOcsUrl)("cloud/users/{userid}",{userid:t})).then((function(r){return e.commit("deleteUser",t)})).catch((function(e){throw e}))})).catch((function(r){return e.commit("API_FAILURE",{userid:t,error:r})}))},addUser:function(e,t){var r=e.commit,n=e.dispatch,o=t.userid,i=t.password,u=t.displayName,a=t.email,s=t.groups,c=t.subadmin,d=t.quota,f=t.language;return U().then((function(e){return y((0,p.generateOcsUrl)("cloud/users"),{userid:o,password:i,displayName:u,email:a,groups:s,subadmin:c,quota:d,language:f}).then((function(e){return n("addUserData",o||e.data.ocs.data.id)})).catch((function(e){throw e}))})).catch((function(e){throw r("API_FAILURE",{userid:o,error:e}),e}))},addUserData:function(e,t){return U().then((function(r){return I((0,p.generateOcsUrl)("cloud/users/{userid}",{userid:t})).then((function(t){return e.commit("addUserData",t)})).catch((function(e){throw e}))})).catch((function(r){return e.commit("API_FAILURE",{userid:t,error:r})}))},enableDisableUser:function(e,t){var r=t.userid,n=t.enabled,o=void 0===n||n,i=o?"enable":"disable";return U().then((function(t){return L((0,p.generateOcsUrl)("cloud/users/{userid}/{userStatus}",{userid:r,userStatus:i})).then((function(t){return e.commit("enableDisableUser",{userid:r,enabled:o})})).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{userid:r,error:t})}))},setUserData:function(e,t){var r=t.userid,n=t.key,o=t.value,i=["email","displayname"];return-1!==["email","language","quota","displayname","password"].indexOf(n)&&"string"==typeof o&&(-1===i.indexOf(n)&&o.length>0||-1!==i.indexOf(n))?U().then((function(t){return L((0,p.generateOcsUrl)("cloud/users/{userid}",{userid:r}),{key:n,value:o}).then((function(t){return e.commit("setUserData",{userid:r,key:n,value:o})})).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{userid:r,error:t})})):Promise.reject(new Error("Invalid request data"))},sendWelcomeMail:function(e,t){return U().then((function(e){return y((0,p.generateOcsUrl)("cloud/users/{userid}/welcome",{userid:t})).then((function(e){return!0})).catch((function(e){throw e}))})).catch((function(r){return e.commit("API_FAILURE",{userid:t,error:r})}))}}},F=o(26932),S=(o(73317),{APPS_API_FAILURE:function(e,r){(0,F.x2)(t("settings","An error occured during the request. Unable to proceed.")+"<br>"+r.error.response.data.data.message,{isHTML:!0}),console.error(e,r)},initCategories:function(e,t){var r=t.categories,n=t.updateCount;e.categories=r,e.updateCount=n},setUpdateCount:function(e,t){e.updateCount=t},addCategory:function(e,t){e.categories.push(t)},appendCategories:function(e,t){e.categories=t},setAllApps:function(e,t){e.apps=t},setError:function(e,t){var r=t.appId,n=t.error;Array.isArray(r)||(r=[r]),r.forEach((function(t){e.apps.find((function(e){return e.id===t})).error=n}))},clearError:function(e,t){var r=t.appId;t.error,e.apps.find((function(e){return e.id===r})).error=null},enableApp:function(e,t){var r=t.appId,n=t.groups,o=e.apps.find((function(e){return e.id===r}));o.active=!0,o.groups=n},disableApp:function(e,t){var r=e.apps.find((function(e){return e.id===t}));r.active=!1,r.groups=[],r.removable&&(r.canUnInstall=!0)},uninstallApp:function(e,t){e.apps.find((function(e){return e.id===t})).active=!1,e.apps.find((function(e){return e.id===t})).groups=[],e.apps.find((function(e){return e.id===t})).needsDownload=!0,e.apps.find((function(e){return e.id===t})).installed=!1,e.apps.find((function(e){return e.id===t})).canUnInstall=!1,e.apps.find((function(e){return e.id===t})).canInstall=!0},updateApp:function(e,t){var r=e.apps.find((function(e){return e.id===t})),n=r.update;r.update=null,r.version=n,e.updateCount--},resetApps:function(e){e.apps=[]},reset:function(e){e.apps=[],e.categories=[],e.updateCount=0},startLoading:function(e,t){Array.isArray(t)?t.forEach((function(t){i.default.set(e.loading,t,!0)})):i.default.set(e.loading,t,!0)},stopLoading:function(e,t){Array.isArray(t)?t.forEach((function(t){i.default.set(e.loading,t,!1)})):i.default.set(e.loading,t,!1)}}),x={enableApp:function(e,r){var n,o=r.appId,i=r.groups;return n=Array.isArray(o)?o:[o],U().then((function(r){return e.commit("startLoading",n),e.commit("startLoading","install"),y((0,p.generateUrl)("settings/apps/enable"),{appIds:n,groups:i}).then((function(r){return e.commit("stopLoading",n),e.commit("stopLoading","install"),n.forEach((function(t){e.commit("enableApp",{appId:t,groups:i})})),I((0,p.generateUrl)("apps/files")).then((function(){r.data.update_required&&((0,F.JQ)(t("settings","The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds."),{onClick:function(){return window.location.reload()},close:!1}),setTimeout((function(){location.reload()}),5e3))})).catch((function(){Array.isArray(o)||e.commit("setError",{appId:n,error:t("settings","Error: This app cannot be enabled because it makes the server unstable")})}))})).catch((function(t){e.commit("stopLoading",n),e.commit("stopLoading","install"),e.commit("setError",{appId:n,error:t.response.data.data.message}),e.commit("APPS_API_FAILURE",{appId:o,error:t})}))})).catch((function(t){return e.commit("API_FAILURE",{appId:o,error:t})}))},forceEnableApp:function(e,t){var r,n=t.appId;return t.groups,r=Array.isArray(n)?n:[n],U().then((function(){return e.commit("startLoading",r),e.commit("startLoading","install"),y((0,p.generateUrl)("settings/apps/force"),{appId:n}).then((function(e){location.reload()})).catch((function(t){e.commit("stopLoading",r),e.commit("stopLoading","install"),e.commit("setError",{appId:r,error:t.response.data.data.message}),e.commit("APPS_API_FAILURE",{appId:n,error:t})}))})).catch((function(t){return e.commit("API_FAILURE",{appId:n,error:t})}))},disableApp:function(e,t){var r,n=t.appId;return r=Array.isArray(n)?n:[n],U().then((function(t){return e.commit("startLoading",r),y((0,p.generateUrl)("settings/apps/disable"),{appIds:r}).then((function(t){return e.commit("stopLoading",r),r.forEach((function(t){e.commit("disableApp",t)})),!0})).catch((function(t){e.commit("stopLoading",r),e.commit("APPS_API_FAILURE",{appId:n,error:t})}))})).catch((function(t){return e.commit("API_FAILURE",{appId:n,error:t})}))},uninstallApp:function(e,t){var r=t.appId;return U().then((function(t){return e.commit("startLoading",r),I((0,p.generateUrl)("settings/apps/uninstall/".concat(r))).then((function(t){return e.commit("stopLoading",r),e.commit("uninstallApp",r),!0})).catch((function(t){e.commit("stopLoading",r),e.commit("APPS_API_FAILURE",{appId:r,error:t})}))})).catch((function(t){return e.commit("API_FAILURE",{appId:r,error:t})}))},updateApp:function(e,t){var r=t.appId;return U().then((function(t){return e.commit("startLoading",r),e.commit("startLoading","install"),I((0,p.generateUrl)("settings/apps/update/".concat(r))).then((function(t){return e.commit("stopLoading","install"),e.commit("stopLoading",r),e.commit("updateApp",r),!0})).catch((function(t){e.commit("stopLoading",r),e.commit("stopLoading","install"),e.commit("APPS_API_FAILURE",{appId:r,error:t})}))})).catch((function(t){return e.commit("API_FAILURE",{appId:r,error:t})}))},getAllApps:function(e){return e.commit("startLoading","list"),I((0,p.generateUrl)("settings/apps/list")).then((function(t){return e.commit("setAllApps",t.data.apps),e.commit("stopLoading","list"),!0})).catch((function(t){return e.commit("API_FAILURE",t)}))},getCategories:function(e){return e.commit("startLoading","categories"),I((0,p.generateUrl)("settings/apps/categories")).then((function(t){return t.data.length>0&&(e.commit("appendCategories",t.data),e.commit("stopLoading","categories"),!0)})).catch((function(t){return e.commit("API_FAILURE",t)}))}},G={state:{apps:[],categories:[],updateCount:0,loading:{},loadingList:!1},mutations:S,getters:{loading:function(e){return function(t){return e.loading[t]}},getCategories:function(e){return e.categories},getAllApps:function(e){return e.apps},getUpdateCount:function(e){return e.updateCount}},actions:x},D={state:{},mutations:{},getters:{},actions:{setAppConfig:function(e,t){var r=t.app,n=t.key,o=t.value;return U().then((function(e){return y((0,p.generateOcsUrl)("apps/provisioning_api/api/v1/config/apps/{app}/{key}",{app:r,key:n}),{value:o}).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{app:r,key:n,value:o,error:t})}))}}};i.default.use(g.ZP);var T={API_FAILURE:function(e,r){try{var n=r.error.response.data.ocs.meta.message;(0,F.x2)(t("settings","An error occured during the request. Unable to proceed.")+"<br>"+n,{isHTML:!0})}catch(e){(0,F.x2)(t("settings","An error occured during the request. Unable to proceed."))}console.error(e,r)}},j=new g.yh({modules:{users:k,apps:G,settings:{state:{serverData:{}},mutations:{setServerData:function(e,t){e.serverData=t}},getters:{getServerData:function(e){return e.serverData}},actions:{}},oc:D},strict:!1,mutations:T});i.default.use(u.default,{defaultHtml:!1}),(0,a.Z)(j,m),o.nc=btoa(OC.requestToken),i.default.prototype.t=t,i.default.prototype.n=n,i.default.prototype.OC=OC,i.default.prototype.OCA=OCA,i.default.prototype.oc_userconfig=oc_userconfig,new i.default({router:m,store:j,render:function(e){return e(c)}}).$mount("#content")}},u={};function a(e){var t=u[e];if(void 0!==t)return t.exports;var r=u[e]={id:e,loaded:!1,exports:{}};return i[e].call(r.exports,r,r.exports,a),r.loaded=!0,r.exports}a.m=i,a.amdD=function(){throw new Error("define cannot be used indirect")},a.amdO={},e=[],a.O=function(t,r,n,o){if(!r){var i=1/0;for(d=0;d<e.length;d++){r=e[d][0],n=e[d][1],o=e[d][2];for(var u=!0,s=0;s<r.length;s++)(!1&o||i>=o)&&Object.keys(a.O).every((function(e){return a.O[e](r[s])}))?r.splice(s--,1):(u=!1,o<i&&(i=o));if(u){e.splice(d--,1);var c=n();void 0!==c&&(t=c)}}return t}o=o||0;for(var d=e.length;d>0&&e[d-1][2]>o;d--)e[d]=e[d-1];e[d]=[r,n,o]},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,{a:t}),t},a.d=function(e,t){for(var r in t)a.o(t,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},a.f={},a.e=function(e){return Promise.all(Object.keys(a.f).reduce((function(t,r){return a.f[r](e,t),t}),[]))},a.u=function(e){return{7418:"settings-apps-view",8351:"settings-users"}[e]+"-"+e+".js?v="+{7418:"79a434bb85984935c596",8351:"602a08575de144a57dfd"}[e]},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},o="nextcloud:",a.l=function(e,t,n,i){if(r[e])r[e].push(t);else{var u,s;if(void 0!==n)for(var c=document.getElementsByTagName("script"),d=0;d<c.length;d++){var p=c[d];if(p.getAttribute("src")==e||p.getAttribute("data-webpack")==o+n){u=p;break}}u||(s=!0,(u=document.createElement("script")).charset="utf-8",u.timeout=120,a.nc&&u.setAttribute("nonce",a.nc),u.setAttribute("data-webpack",o+n),u.src=e),r[e]=[t];var f=function(t,n){u.onerror=u.onload=null,clearTimeout(l);var o=r[e];if(delete r[e],u.parentNode&&u.parentNode.removeChild(u),o&&o.forEach((function(e){return e(n)})),t)return t(n)},l=setTimeout(f.bind(null,void 0,{type:"timeout",target:u}),12e4);u.onerror=f.bind(null,u.onerror),u.onload=f.bind(null,u.onload),s&&document.head.appendChild(u)}},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},a.j=8562,function(){var e;a.g.importScripts&&(e=a.g.location+"");var t=a.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");r.length&&(e=r[r.length-1].src)}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=e}(),function(){a.b=document.baseURI||self.location.href;var e={8562:0};a.f.j=function(t,r){var n=a.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise((function(r,o){n=e[t]=[r,o]}));r.push(n[2]=o);var i=a.p+a.u(t),u=new Error;a.l(i,(function(r){if(a.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),i=r&&r.target&&r.target.src;u.message="Loading chunk "+t+" failed.\n("+o+": "+i+")",u.name="ChunkLoadError",u.type=o,u.request=i,n[1](u)}}),"chunk-"+t,t)}},a.O.j=function(t){return 0===e[t]};var t=function(t,r){var n,o,i=r[0],u=r[1],s=r[2],c=0;if(i.some((function(t){return 0!==e[t]}))){for(n in u)a.o(u,n)&&(a.m[n]=u[n]);if(s)var d=s(a)}for(t&&t(r);c<i.length;c++)o=i[c],a.o(e,o)&&e[o]&&e[o][0](),e[o]=0;return a.O(d)},r=self.webpackChunknextcloud=self.webpackChunknextcloud||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))}(),a.nc=void 0;var s=a.O(void 0,[7874],(function(){return a(78778)}));s=a.O(s)}();
+//# sourceMappingURL=settings-vue-settings-apps-users-management.js.map?v=9de66bd9a8adc3f45a4d \ No newline at end of file
diff --git a/dist/settings-vue-settings-apps-users-management.js.map b/dist/settings-vue-settings-apps-users-management.js.map
index 56761304b9e..b36fe50454e 100644
--- a/dist/settings-vue-settings-apps-users-management.js.map
+++ b/dist/settings-vue-settings-apps-users-management.js.map
@@ -1 +1 @@
-{"version":3,"file":"settings-vue-settings-apps-users-management.js?v=51407d62507dc471e53c","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/settings/src/App.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/App.vue","webpack://nextcloud/./apps/settings/src/App.vue?536c","webpack:///nextcloud/apps/settings/src/App.vue?vue&type=template&id=50420604&","webpack:///nextcloud/apps/settings/src/router.js","webpack:///nextcloud/apps/settings/src/store/api.js","webpack:///nextcloud/apps/settings/src/logger.js","webpack:///nextcloud/apps/settings/src/store/users.js","webpack:///nextcloud/apps/settings/src/store/apps.js","webpack:///nextcloud/apps/settings/src/store/oc.js","webpack:///nextcloud/apps/settings/src/store/index.js","webpack:///nextcloud/apps/settings/src/store/settings.js","webpack:///nextcloud/apps/settings/src/main-apps-users-management.js","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/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","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/publicPath","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};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.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!./App.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<router-view />\n</template>\n\n<script>\nexport default {\n\tname: 'App',\n\tbeforeMount() {\n\t\t// importing server data into the store\n\t\tconst serverDataElmt = document.getElementById('serverData')\n\t\tif (serverDataElmt !== null) {\n\t\t\tthis.$store.commit('setServerData', JSON.parse(document.getElementById('serverData').dataset.server))\n\t\t}\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=50420604&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('router-view')}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport Vue from 'vue'\nimport Router from 'vue-router'\nimport { generateUrl } from '@nextcloud/router'\n\n// Dynamic loading\nconst Users = () => import(/* webpackChunkName: 'settings-users' */'./views/Users')\nconst Apps = () => import(/* webpackChunkName: 'settings-apps-view' */'./views/Apps')\n\nVue.use(Router)\n\n/*\n * This is the list of routes where the vuejs app will\n * take over php to provide data\n * You need to forward the php routing (routes.php) to\n * the settings-vue template, where the vue-router will\n * ensure the proper route.\n * ⚠️ Routes needs to match the php routes.\n */\n\nexport default new Router({\n\tmode: 'history',\n\t// if index.php is in the url AND we got this far, then it's working:\n\t// let's keep using index.php in the url\n\tbase: generateUrl(''),\n\tlinkActiveClass: 'active',\n\troutes: [\n\t\t{\n\t\t\tpath: '/:index(index.php/)?settings/users',\n\t\t\tcomponent: Users,\n\t\t\tprops: true,\n\t\t\tname: 'users',\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\tpath: ':selectedGroup',\n\t\t\t\t\tname: 'group',\n\t\t\t\t\tcomponent: Users,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tpath: '/:index(index.php/)?settings/apps',\n\t\t\tcomponent: Apps,\n\t\t\tprops: true,\n\t\t\tname: 'apps',\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\tpath: ':category',\n\t\t\t\t\tname: 'apps-category',\n\t\t\t\t\tcomponent: Apps,\n\t\t\t\t\tchildren: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpath: ':id',\n\t\t\t\t\t\t\tname: 'apps-details',\n\t\t\t\t\t\t\tcomponent: Apps,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t],\n})\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Sujith Haridasan <sujith.h@gmail.com>\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 */\n\nimport axios from '@nextcloud/axios'\nimport confirmPassword from '@nextcloud/password-confirmation'\n\nconst sanitize = function(url) {\n\treturn url.replace(/\\/$/, '') // Remove last url slash\n}\n\nexport default {\n\n\t/**\n\t * This Promise is used to chain a request that require an admin password confirmation\n\t * Since chaining Promise have a very precise behavior concerning catch and then,\n\t * you'll need to be careful when using it.\n\t * e.g\n\t * // store\n\t * action(context) {\n\t * return api.requireAdmin().then((response) => {\n\t * return api.get('url')\n\t * .then((response) => {API success})\n\t * .catch((error) => {API failure});\n\t * }).catch((error) => {requireAdmin failure});\n\t * }\n\t * // vue\n\t * this.$store.dispatch('action').then(() => {always executed})\n\t *\n\t * Since Promise.then().catch().then() will always execute the last then\n\t * this.$store.dispatch('action').then will always be executed\n\t *\n\t * If you want requireAdmin failure to also catch the API request failure\n\t * you will need to throw a new error in the api.get.catch()\n\t *\n\t * e.g\n\t * api.requireAdmin().then((response) => {\n\t * api.get('url')\n\t * .then((response) => {API success})\n\t * .catch((error) => {throw error;});\n\t * }).catch((error) => {requireAdmin OR API failure});\n\t *\n\t * @return {Promise}\n\t */\n\trequireAdmin() {\n\t\treturn confirmPassword()\n\t},\n\tget(url, options) {\n\t\treturn axios.get(sanitize(url), options)\n\t},\n\tpost(url, data) {\n\t\treturn axios.post(sanitize(url), data)\n\t},\n\tpatch(url, data) {\n\t\treturn axios.patch(sanitize(url), data)\n\t},\n\tput(url, data) {\n\t\treturn axios.put(sanitize(url), data)\n\t},\n\tdelete(url, data) {\n\t\treturn axios.delete(sanitize(url), { params: data })\n\t},\n}\n","/**\n * @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('settings')\n\t.detectUser()\n\t.build()\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\nimport api from './api'\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport logger from '../logger'\n\nconst orderGroups = function(groups, orderBy) {\n\t/* const SORT_USERCOUNT = 1;\n\t * const SORT_GROUPNAME = 2;\n\t * https://github.com/nextcloud/server/blob/208e38e84e1a07a49699aa90dc5b7272d24489f0/lib/private/Group/MetaData.php#L34\n\t */\n\tif (orderBy === 1) {\n\t\treturn groups.sort((a, b) => a.usercount - a.disabled < b.usercount - b.disabled)\n\t} else {\n\t\treturn groups.sort((a, b) => a.name.localeCompare(b.name))\n\t}\n}\n\nconst defaults = {\n\tgroup: {\n\t\tid: '',\n\t\tname: '',\n\t\tusercount: 0,\n\t\tdisabled: 0,\n\t\tcanAdd: true,\n\t\tcanRemove: true,\n\t},\n}\n\nconst state = {\n\tusers: [],\n\tgroups: [],\n\torderBy: 1,\n\tminPasswordLength: 0,\n\tusersOffset: 0,\n\tusersLimit: 25,\n\tuserCount: 0,\n}\n\nconst mutations = {\n\tappendUsers(state, usersObj) {\n\t\t// convert obj to array\n\t\tconst users = state.users.concat(Object.keys(usersObj).map(userid => usersObj[userid]))\n\t\tstate.usersOffset += state.usersLimit\n\t\tstate.users = users\n\t},\n\tsetPasswordPolicyMinLength(state, length) {\n\t\tstate.minPasswordLength = length !== '' ? length : 0\n\t},\n\tinitGroups(state, { groups, orderBy, userCount }) {\n\t\tstate.groups = groups.map(group => Object.assign({}, defaults.group, group))\n\t\tstate.orderBy = orderBy\n\t\tstate.userCount = userCount\n\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\n\t},\n\taddGroup(state, { gid, displayName }) {\n\t\ttry {\n\t\t\tif (typeof state.groups.find((group) => group.id === gid) !== 'undefined') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// extend group to default values\n\t\t\tconst group = Object.assign({}, defaults.group, {\n\t\t\t\tid: gid,\n\t\t\t\tname: displayName,\n\t\t\t})\n\t\t\tstate.groups.push(group)\n\t\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t\t} catch (e) {\n\t\t\tconsole.error('Can\\'t create group', e)\n\t\t}\n\t},\n\trenameGroup(state, { gid, displayName }) {\n\t\tconst groupIndex = state.groups.findIndex(groupSearch => groupSearch.id === gid)\n\t\tif (groupIndex >= 0) {\n\t\t\tconst updatedGroup = state.groups[groupIndex]\n\t\t\tupdatedGroup.name = displayName\n\t\t\tstate.groups.splice(groupIndex, 1, updatedGroup)\n\t\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t\t}\n\t},\n\tremoveGroup(state, gid) {\n\t\tconst groupIndex = state.groups.findIndex(groupSearch => groupSearch.id === gid)\n\t\tif (groupIndex >= 0) {\n\t\t\tstate.groups.splice(groupIndex, 1)\n\t\t}\n\t},\n\taddUserGroup(state, { userid, gid }) {\n\t\tconst group = state.groups.find(groupSearch => groupSearch.id === gid)\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\t// increase count if user is enabled\n\t\tif (group && user.enabled && state.userCount > 0) {\n\t\t\tgroup.usercount++\n\t\t}\n\t\tconst groups = user.groups\n\t\tgroups.push(gid)\n\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t},\n\tremoveUserGroup(state, { userid, gid }) {\n\t\tconst group = state.groups.find(groupSearch => groupSearch.id === gid)\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\t// lower count if user is enabled\n\t\tif (group && user.enabled && state.userCount > 0) {\n\t\t\tgroup.usercount--\n\t\t}\n\t\tconst groups = user.groups\n\t\tgroups.splice(groups.indexOf(gid), 1)\n\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t},\n\taddUserSubAdmin(state, { userid, gid }) {\n\t\tconst groups = state.users.find(user => user.id === userid).subadmin\n\t\tgroups.push(gid)\n\t},\n\tremoveUserSubAdmin(state, { userid, gid }) {\n\t\tconst groups = state.users.find(user => user.id === userid).subadmin\n\t\tgroups.splice(groups.indexOf(gid), 1)\n\t},\n\tdeleteUser(state, userid) {\n\t\tconst userIndex = state.users.findIndex(user => user.id === userid)\n\t\tthis.commit('updateUserCounts', { user: state.users[userIndex], actionType: 'remove' })\n\t\tstate.users.splice(userIndex, 1)\n\t},\n\taddUserData(state, response) {\n\t\tconst user = response.data.ocs.data\n\t\tstate.users.push(user)\n\t\tthis.commit('updateUserCounts', { user, actionType: 'create' })\n\t},\n\tenableDisableUser(state, { userid, enabled }) {\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\tuser.enabled = enabled\n\t\tthis.commit('updateUserCounts', { user, actionType: enabled ? 'enable' : 'disable' })\n\t},\n\t// update active/disabled counts, groups counts\n\tupdateUserCounts(state, { user, actionType }) {\n\t\tconst disabledGroup = state.groups.find(group => group.id === 'disabled')\n\t\tswitch (actionType) {\n\t\tcase 'enable':\n\t\tcase 'disable':\n\t\t\tdisabledGroup.usercount += user.enabled ? -1 : 1 // update Disabled Users count\n\t\t\tstate.userCount += user.enabled ? 1 : -1 // update Active Users count\n\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\tgroup.disabled += user.enabled ? -1 : 1 // update group disabled count\n\t\t\t})\n\t\t\tbreak\n\t\tcase 'create':\n\t\t\tstate.userCount++ // increment Active Users count\n\n\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\tstate.groups\n\t\t\t\t\t.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t .usercount++ // increment group total count\n\t\t\t})\n\t\t\tbreak\n\t\tcase 'remove':\n\t\t\tif (user.enabled) {\n\t\t\t\tstate.userCount-- // decrement Active Users count\n\t\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t\tgroup.usercount-- // decrement group total count\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tdisabledGroup.usercount-- // decrement Disabled Users count\n\t\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t\tgroup.disabled-- // decrement group disabled count\n\t\t\t\t})\n\t\t\t}\n\t\t\tbreak\n\t\tdefault:\n\t\t\tlogger.error(`Unknown action type in updateUserCounts: '${actionType}'`)\n\t\t\t// not throwing error to interupt execution as this is not fatal\n\t\t}\n\t},\n\tsetUserData(state, { userid, key, value }) {\n\t\tif (key === 'quota') {\n\t\t\tconst humanValue = OC.Util.computerFileSize(value)\n\t\t\tstate.users.find(user => user.id === userid)[key][key] = humanValue !== null ? humanValue : value\n\t\t} else {\n\t\t\tstate.users.find(user => user.id === userid)[key] = value\n\t\t}\n\t},\n\n\t/**\n\t * Reset users list\n\t *\n\t * @param {object} state the store state\n\t */\n\tresetUsers(state) {\n\t\tstate.users = []\n\t\tstate.usersOffset = 0\n\t},\n}\n\nconst getters = {\n\tgetUsers(state) {\n\t\treturn state.users\n\t},\n\tgetGroups(state) {\n\t\treturn state.groups\n\t},\n\tgetSubadminGroups(state) {\n\t\t// Can't be subadmin of admin or disabled\n\t\treturn state.groups.filter(group => group.id !== 'admin' && group.id !== 'disabled')\n\t},\n\tgetPasswordPolicyMinLength(state) {\n\t\treturn state.minPasswordLength\n\t},\n\tgetUsersOffset(state) {\n\t\treturn state.usersOffset\n\t},\n\tgetUsersLimit(state) {\n\t\treturn state.usersLimit\n\t},\n\tgetUserCount(state) {\n\t\treturn state.userCount\n\t},\n}\n\nconst CancelToken = axios.CancelToken\nlet searchRequestCancelSource = null\n\nconst actions = {\n\n\t/**\n\t * Get all users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search Search amongst users\n\t * @param {string} options.group Get users from group\n\t * @return {Promise}\n\t */\n\tgetUsers(context, { offset, limit, search, group }) {\n\t\tif (searchRequestCancelSource) {\n\t\t\tsearchRequestCancelSource.cancel('Operation canceled by another search request.')\n\t\t}\n\t\tsearchRequestCancelSource = CancelToken.source()\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\tgroup = typeof group === 'string' ? group : ''\n\t\tif (group !== '') {\n\t\t\treturn api.get(generateOcsUrl('cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}', { group: encodeURIComponent(group), offset, limit, search }), {\n\t\t\t\tcancelToken: searchRequestCancelSource.token,\n\t\t\t})\n\t\t\t\t.then((response) => {\n\t\t\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\t\t\tif (usersCount > 0) {\n\t\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t\t}\n\t\t\t\t\treturn usersCount\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search }), {\n\t\t\tcancelToken: searchRequestCancelSource.token,\n\t\t})\n\t\t\t.then((response) => {\n\t\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\t\tif (usersCount > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t}\n\t\t\t\treturn usersCount\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t\t}\n\t\t\t})\n\t},\n\n\tgetGroups(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\tconst limitParam = limit === -1 ? '' : `&limit=${limit}`\n\t\treturn api.get(generateOcsUrl('cloud/groups?offset={offset}&search={search}', { offset, search }) + limitParam)\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.groups).length > 0) {\n\t\t\t\t\tresponse.data.ocs.data.groups.forEach(function(group) {\n\t\t\t\t\t\tcontext.commit('addGroup', { gid: group, displayName: group })\n\t\t\t\t\t})\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\t/**\n\t * Get all users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search -\n\t * @return {Promise}\n\t */\n\tgetUsersFromList(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search }))\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.users).length > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\t/**\n\t * Get all users with full details from a groupid\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.groupid -\n\t * @return {Promise}\n\t */\n\tgetUsersFromGroup(context, { groupid, offset, limit }) {\n\t\treturn api.get(generateOcsUrl('cloud/users/{groupId}/details?offset={offset}&limit={limit}', { groupId: encodeURIComponent(groupid), offset, limit }))\n\t\t\t.then((response) => context.commit('getUsersFromList', response.data.ocs.data.users))\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\tgetPasswordPolicyMinLength(context) {\n\t\tif (OC.getCapabilities().password_policy && OC.getCapabilities().password_policy.minLength) {\n\t\t\tcontext.commit('setPasswordPolicyMinLength', OC.getCapabilities().password_policy.minLength)\n\t\t\treturn OC.getCapabilities().password_policy.minLength\n\t\t}\n\t\treturn false\n\t},\n\n\t/**\n\t * Add group\n\t *\n\t * @param {object} context store context\n\t * @param {string} gid Group id\n\t * @return {Promise}\n\t */\n\taddGroup(context, gid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/groups'), { groupid: gid })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('addGroup', { gid, displayName: gid })\n\t\t\t\t\treturn { gid, displayName: gid }\n\t\t\t\t})\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { gid, error })\n\t\t\t// let's throw one more time to prevent the view\n\t\t\t// from adding the user to a group that doesn't exists\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Rename group\n\t *\n\t * @param {Object} context store context\n\t * @param {string} groupid Group id\n\t * @param {string} displayName Group display name\n\t * @return {Promise}\n\t */\n\trenameGroup(context, { groupid, displayName }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.put(generateOcsUrl('cloud/groups/{groupId}', { groupId: encodeURIComponent(groupid) }), { key: 'displayname', value: displayName })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('renameGroup', { gid: groupid, displayName })\n\t\t\t\t\treturn { groupid, displayName }\n\t\t\t\t})\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { groupid, error })\n\t\t\t// let's throw one more time to prevent the view\n\t\t\t// from renaming the group\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Remove group\n\t *\n\t * @param {object} context store context\n\t * @param {string} gid Group id\n\t * @return {Promise}\n\t */\n\tremoveGroup(context, gid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/groups/{groupId}', { groupId: encodeURIComponent(gid) }))\n\t\t\t\t.then((response) => context.commit('removeGroup', gid))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { gid, error }))\n\t},\n\n\t/**\n\t * Add user to group\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\taddUserGroup(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/groups', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('addUserGroup', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Remove user from group\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\tremoveUserGroup(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}/groups', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('removeUserGroup', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { userid, error })\n\t\t\t// let's throw one more time to prevent\n\t\t\t// the view from removing the user row on failure\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Add user to group admin\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\taddUserSubAdmin(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/subadmins', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('addUserSubAdmin', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Remove user from group admin\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\tremoveUserSubAdmin(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}/subadmins', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('removeUserSubAdmin', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Mark all user devices for remote wipe\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\twipeUserDevices(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/wipe', { userid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Delete a user\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tdeleteUser(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}', { userid }))\n\t\t\t\t.then((response) => context.commit('deleteUser', userid))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Add a user\n\t *\n\t * @param {object} context store context\n\t * @param {Function} context.commit -\n\t * @param {Function} context.dispatch -\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.password User password\n\t * @param {string} options.displayName User display name\n\t * @param {string} options.email User email\n\t * @param {string} options.groups User groups\n\t * @param {string} options.subadmin User subadmin groups\n\t * @param {string} options.quota User email\n\t * @param {string} options.language User language\n\t * @return {Promise}\n\t */\n\taddUser({ commit, dispatch }, { userid, password, displayName, email, groups, subadmin, quota, language }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users'), { userid, password, displayName, email, groups, subadmin, quota, language })\n\t\t\t\t.then((response) => dispatch('addUserData', userid || response.data.ocs.data.id))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcommit('API_FAILURE', { userid, error })\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Get user data and commit addition\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\taddUserData(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.get(generateOcsUrl('cloud/users/{userid}', { userid }))\n\t\t\t\t.then((response) => context.commit('addUserData', response))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Enable or disable user\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {boolean} options.enabled User enablement status\n\t * @return {Promise}\n\t */\n\tenableDisableUser(context, { userid, enabled = true }) {\n\t\tconst userStatus = enabled ? 'enable' : 'disable'\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.put(generateOcsUrl('cloud/users/{userid}/{userStatus}', { userid, userStatus }))\n\t\t\t\t.then((response) => context.commit('enableDisableUser', { userid, enabled }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Edit user data\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.key User field to edit\n\t * @param {string} options.value Value of the change\n\t * @return {Promise}\n\t */\n\tsetUserData(context, { userid, key, value }) {\n\t\tconst allowedEmpty = ['email', 'displayname']\n\t\tif (['email', 'language', 'quota', 'displayname', 'password'].indexOf(key) !== -1) {\n\t\t\t// We allow empty email or displayname\n\t\t\tif (typeof value === 'string'\n\t\t\t\t&& (\n\t\t\t\t\t(allowedEmpty.indexOf(key) === -1 && value.length > 0)\n\t\t\t\t\t|| allowedEmpty.indexOf(key) !== -1\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn api.requireAdmin().then((response) => {\n\t\t\t\t\treturn api.put(generateOcsUrl('cloud/users/{userid}', { userid }), { key, value })\n\t\t\t\t\t\t.then((response) => context.commit('setUserData', { userid, key, value }))\n\t\t\t\t\t\t.catch((error) => { throw error })\n\t\t\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t\t\t}\n\t\t}\n\t\treturn Promise.reject(new Error('Invalid request data'))\n\t},\n\n\t/**\n\t * Send welcome mail\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tsendWelcomeMail(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/welcome', { userid }))\n\t\t\t\t.then(response => true)\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport api from './api'\nimport Vue from 'vue'\nimport { generateUrl } from '@nextcloud/router'\nimport { showError, showInfo } from '@nextcloud/dialogs'\nimport '@nextcloud/dialogs/styles/toast.scss'\n\nconst state = {\n\tapps: [],\n\tcategories: [],\n\tupdateCount: 0,\n\tloading: {},\n\tloadingList: false,\n}\n\nconst mutations = {\n\n\tAPPS_API_FAILURE(state, error) {\n\t\tshowError(t('settings', 'An error occured during the request. Unable to proceed.') + '<br>' + error.error.response.data.data.message, { isHTML: true })\n\t\tconsole.error(state, error)\n\t},\n\n\tinitCategories(state, { categories, updateCount }) {\n\t\tstate.categories = categories\n\t\tstate.updateCount = updateCount\n\t},\n\n\tsetUpdateCount(state, updateCount) {\n\t\tstate.updateCount = updateCount\n\t},\n\n\taddCategory(state, category) {\n\t\tstate.categories.push(category)\n\t},\n\n\tappendCategories(state, categoriesArray) {\n\t\t// convert obj to array\n\t\tstate.categories = categoriesArray\n\t},\n\n\tsetAllApps(state, apps) {\n\t\tstate.apps = apps\n\t},\n\n\tsetError(state, { appId, error }) {\n\t\tif (!Array.isArray(appId)) {\n\t\t\tappId = [appId]\n\t\t}\n\t\tappId.forEach((_id) => {\n\t\t\tconst app = state.apps.find(app => app.id === _id)\n\t\t\tapp.error = error\n\t\t})\n\t},\n\n\tclearError(state, { appId, error }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.error = null\n\t},\n\n\tenableApp(state, { appId, groups }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.active = true\n\t\tapp.groups = groups\n\t},\n\n\tdisableApp(state, appId) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.active = false\n\t\tapp.groups = []\n\t\tif (app.removable) {\n\t\t\tapp.canUnInstall = true\n\t\t}\n\t},\n\n\tuninstallApp(state, appId) {\n\t\tstate.apps.find(app => app.id === appId).active = false\n\t\tstate.apps.find(app => app.id === appId).groups = []\n\t\tstate.apps.find(app => app.id === appId).needsDownload = true\n\t\tstate.apps.find(app => app.id === appId).installed = false\n\t\tstate.apps.find(app => app.id === appId).canUnInstall = false\n\t\tstate.apps.find(app => app.id === appId).canInstall = true\n\t},\n\n\tupdateApp(state, appId) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tconst version = app.update\n\t\tapp.update = null\n\t\tapp.version = version\n\t\tstate.updateCount--\n\n\t},\n\n\tresetApps(state) {\n\t\tstate.apps = []\n\t},\n\treset(state) {\n\t\tstate.apps = []\n\t\tstate.categories = []\n\t\tstate.updateCount = 0\n\t},\n\tstartLoading(state, id) {\n\t\tif (Array.isArray(id)) {\n\t\t\tid.forEach((_id) => {\n\t\t\t\tVue.set(state.loading, _id, true)\n\t\t\t})\n\t\t} else {\n\t\t\tVue.set(state.loading, id, true)\n\t\t}\n\t},\n\tstopLoading(state, id) {\n\t\tif (Array.isArray(id)) {\n\t\t\tid.forEach((_id) => {\n\t\t\t\tVue.set(state.loading, _id, false)\n\t\t\t})\n\t\t} else {\n\t\t\tVue.set(state.loading, id, false)\n\t\t}\n\t},\n}\n\nconst getters = {\n\tloading(state) {\n\t\treturn function(id) {\n\t\t\treturn state.loading[id]\n\t\t}\n\t},\n\tgetCategories(state) {\n\t\treturn state.categories\n\t},\n\tgetAllApps(state) {\n\t\treturn state.apps\n\t},\n\tgetUpdateCount(state) {\n\t\treturn state.updateCount\n\t},\n}\n\nconst actions = {\n\n\tenableApp(context, { appId, groups }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.post(generateUrl('settings/apps/enable'), { appIds: apps, groups })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tapps.forEach(_appId => {\n\t\t\t\t\t\tcontext.commit('enableApp', { appId: _appId, groups })\n\t\t\t\t\t})\n\n\t\t\t\t\t// check for server health\n\t\t\t\t\treturn api.get(generateUrl('apps/files'))\n\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\tif (response.data.update_required) {\n\t\t\t\t\t\t\t\tshowInfo(\n\t\t\t\t\t\t\t\t\tt(\n\t\t\t\t\t\t\t\t\t\t'settings',\n\t\t\t\t\t\t\t\t\t\t'The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds.'\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tonClick: () => window.location.reload(),\n\t\t\t\t\t\t\t\t\t\tclose: false,\n\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t\t\tlocation.reload()\n\t\t\t\t\t\t\t\t}, 5000)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(() => {\n\t\t\t\t\t\t\tif (!Array.isArray(appId)) {\n\t\t\t\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\t\t\t\terror: t('settings', 'Error: This app cannot be enabled because it makes the server unstable'),\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\terror: error.response.data.data.message,\n\t\t\t\t\t})\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tforceEnableApp(context, { appId, groups }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then(() => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.post(generateUrl('settings/apps/force'), { appId })\n\t\t\t\t.then((response) => {\n\t\t\t\t\t// TODO: find a cleaner solution\n\t\t\t\t\tlocation.reload()\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\terror: error.response.data.data.message,\n\t\t\t\t\t})\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tdisableApp(context, { appId }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\treturn api.post(generateUrl('settings/apps/disable'), { appIds: apps })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tapps.forEach(_appId => {\n\t\t\t\t\t\tcontext.commit('disableApp', _appId)\n\t\t\t\t\t})\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tuninstallApp(context, { appId }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', appId)\n\t\t\treturn api.get(generateUrl(`settings/apps/uninstall/${appId}`))\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('uninstallApp', appId)\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\n\tupdateApp(context, { appId }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', appId)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.get(generateUrl(`settings/apps/update/${appId}`))\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('updateApp', appId)\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\n\tgetAllApps(context) {\n\t\tcontext.commit('startLoading', 'list')\n\t\treturn api.get(generateUrl('settings/apps/list'))\n\t\t\t.then((response) => {\n\t\t\t\tcontext.commit('setAllApps', response.data.apps)\n\t\t\t\tcontext.commit('stopLoading', 'list')\n\t\t\t\treturn true\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\tgetCategories(context) {\n\t\tcontext.commit('startLoading', 'categories')\n\t\treturn api.get(generateUrl('settings/apps/categories'))\n\t\t\t.then((response) => {\n\t\t\t\tif (response.data.length > 0) {\n\t\t\t\t\tcontext.commit('appendCategories', response.data)\n\t\t\t\t\tcontext.commit('stopLoading', 'categories')\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport api from './api'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nconst state = {}\nconst mutations = {}\nconst getters = {}\nconst actions = {\n\t/**\n\t * Set application config in database\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.app Application name\n\t * @param {boolean} options.key Config key\n\t * @param {boolean} options.value Value to set\n\t * @return {Promise}\n\t */\n\tsetAppConfig(context, { app, key, value }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('apps/provisioning_api/api/v1/config/apps/{app}/{key}', { app, key }), { value })\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { app, key, value, error }))\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nimport Vue from 'vue'\nimport Vuex, { Store } from 'vuex'\nimport users from './users'\nimport apps from './apps'\nimport settings from './settings'\nimport oc from './oc'\nimport { showError } from '@nextcloud/dialogs'\n\nVue.use(Vuex)\n\nconst debug = process.env.NODE_ENV !== 'production'\n\nconst mutations = {\n\tAPI_FAILURE(state, error) {\n\t\ttry {\n\t\t\tconst message = error.error.response.data.ocs.meta.message\n\t\t\tshowError(t('settings', 'An error occured during the request. Unable to proceed.') + '<br>' + message, { isHTML: true })\n\t\t} catch (e) {\n\t\t\tshowError(t('settings', 'An error occured during the request. Unable to proceed.'))\n\t\t}\n\t\tconsole.error(state, error)\n\t},\n}\n\nexport default new Store({\n\tmodules: {\n\t\tusers,\n\t\tapps,\n\t\tsettings,\n\t\toc,\n\t},\n\tstrict: debug,\n\n\tmutations,\n})\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nconst state = {\n\tserverData: {},\n}\nconst mutations = {\n\tsetServerData(state, data) {\n\t\tstate.serverData = data\n\t},\n}\nconst getters = {\n\tgetServerData(state) {\n\t\treturn state.serverData\n\t},\n}\nconst actions = {}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author rakekniven <mark.ziegler@rakekniven.de>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport Vue from 'vue'\nimport VTooltip from 'v-tooltip'\nimport { sync } from 'vuex-router-sync'\n\nimport App from './App.vue'\nimport router from './router'\nimport store from './store'\n\nVue.use(VTooltip, { defaultHtml: false })\n\nsync(store, router)\n\n// CSP config for webpack dynamic chunk loading\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(OC.requestToken)\n\n// bind to window\nVue.prototype.t = t\nVue.prototype.n = n\nVue.prototype.OC = OC\nVue.prototype.OCA = OCA\n// eslint-disable-next-line camelcase\nVue.prototype.oc_userconfig = oc_userconfig\n\nconst app = new Vue({\n\trouter,\n\tstore,\n\trender: h => h(App),\n}).$mount('#content')\n\nexport { app, router, store }\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__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + {\"7418\":\"settings-apps-view\",\"8351\":\"settings-users\"}[chunkId] + \"-\" + chunkId + \".js?v=\" + {\"7418\":\"79a434bb85984935c596\",\"8351\":\"602a08575de144a57dfd\"}[chunkId] + \"\";\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 = 8562;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__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\t8562: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\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__(78778); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","_h","this","$createElement","_self","_c","Users","Apps","Vue","Router","mode","base","generateUrl","linkActiveClass","routes","path","component","props","name","children","sanitize","url","replace","confirmPassword","options","axios","data","params","getLoggerBuilder","setApp","detectUser","build","orderGroups","groups","orderBy","sort","a","b","usercount","disabled","localeCompare","defaults","id","canAdd","canRemove","mutations","appendUsers","state","usersObj","users","concat","Object","keys","map","userid","usersOffset","usersLimit","setPasswordPolicyMinLength","length","minPasswordLength","initGroups","userCount","group","assign","addGroup","gid","displayName","find","push","e","console","error","renameGroup","groupIndex","findIndex","groupSearch","updatedGroup","splice","removeGroup","addUserGroup","user","enabled","removeUserGroup","indexOf","addUserSubAdmin","subadmin","removeUserSubAdmin","deleteUser","userIndex","commit","actionType","addUserData","response","ocs","enableDisableUser","updateUserCounts","disabledGroup","forEach","userGroup","logger","setUserData","key","value","humanValue","OC","Util","computerFileSize","resetUsers","CancelToken","searchRequestCancelSource","getters","getUsers","getGroups","getSubadminGroups","filter","getPasswordPolicyMinLength","getUsersOffset","getUsersLimit","getUserCount","actions","context","offset","limit","search","cancel","source","api","generateOcsUrl","encodeURIComponent","cancelToken","token","then","usersCount","catch","limitParam","getUsersFromList","getUsersFromGroup","groupid","groupId","getCapabilities","password_policy","minLength","wipeUserDevices","addUser","dispatch","password","email","quota","language","userStatus","allowedEmpty","Promise","reject","Error","sendWelcomeMail","APPS_API_FAILURE","showError","t","message","isHTML","initCategories","categories","updateCount","setUpdateCount","addCategory","category","appendCategories","categoriesArray","setAllApps","apps","setError","appId","Array","isArray","_id","app","clearError","enableApp","active","disableApp","removable","canUnInstall","uninstallApp","needsDownload","installed","canInstall","updateApp","version","update","resetApps","reset","startLoading","loading","stopLoading","appIds","_appId","update_required","showInfo","onClick","window","location","reload","close","setTimeout","forceEnableApp","getAllApps","getCategories","loadingList","getUpdateCount","setAppConfig","Vuex","API_FAILURE","meta","Store","modules","settings","serverData","setServerData","getServerData","oc","strict","process","VTooltip","defaultHtml","sync","store","router","__webpack_nonce__","btoa","requestToken","n","OCA","oc_userconfig","render","h","App","$mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","loaded","__webpack_modules__","call","m","amdD","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","r","getter","__esModule","d","definition","o","defineProperty","enumerable","get","f","chunkId","all","reduce","promises","u","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","l","done","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","bind","type","target","head","appendChild","Symbol","toStringTag","nmd","paths","scriptUrl","importScripts","currentScript","p","baseURI","self","href","installedChunks","installedChunkData","promise","resolve","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"settings-vue-settings-apps-users-management.js?v=9de66bd9a8adc3f45a4d","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/settings/src/App.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/App.vue","webpack://nextcloud/./apps/settings/src/App.vue?536c","webpack:///nextcloud/apps/settings/src/App.vue?vue&type=template&id=50420604&","webpack:///nextcloud/apps/settings/src/router.js","webpack:///nextcloud/apps/settings/src/store/api.js","webpack:///nextcloud/apps/settings/src/logger.js","webpack:///nextcloud/apps/settings/src/store/users.js","webpack:///nextcloud/apps/settings/src/store/apps.js","webpack:///nextcloud/apps/settings/src/store/oc.js","webpack:///nextcloud/apps/settings/src/store/index.js","webpack:///nextcloud/apps/settings/src/store/settings.js","webpack:///nextcloud/apps/settings/src/main-apps-users-management.js","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/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","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/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","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};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.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!./App.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<router-view />\n</template>\n\n<script>\nexport default {\n\tname: 'App',\n\tbeforeMount() {\n\t\t// importing server data into the store\n\t\tconst serverDataElmt = document.getElementById('serverData')\n\t\tif (serverDataElmt !== null) {\n\t\t\tthis.$store.commit('setServerData', JSON.parse(document.getElementById('serverData').dataset.server))\n\t\t}\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=50420604&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('router-view')}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport Vue from 'vue'\nimport Router from 'vue-router'\nimport { generateUrl } from '@nextcloud/router'\n\n// Dynamic loading\nconst Users = () => import(/* webpackChunkName: 'settings-users' */'./views/Users')\nconst Apps = () => import(/* webpackChunkName: 'settings-apps-view' */'./views/Apps')\n\nVue.use(Router)\n\n/*\n * This is the list of routes where the vuejs app will\n * take over php to provide data\n * You need to forward the php routing (routes.php) to\n * the settings-vue template, where the vue-router will\n * ensure the proper route.\n * ⚠️ Routes needs to match the php routes.\n */\n\nexport default new Router({\n\tmode: 'history',\n\t// if index.php is in the url AND we got this far, then it's working:\n\t// let's keep using index.php in the url\n\tbase: generateUrl(''),\n\tlinkActiveClass: 'active',\n\troutes: [\n\t\t{\n\t\t\tpath: '/:index(index.php/)?settings/users',\n\t\t\tcomponent: Users,\n\t\t\tprops: true,\n\t\t\tname: 'users',\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\tpath: ':selectedGroup',\n\t\t\t\t\tname: 'group',\n\t\t\t\t\tcomponent: Users,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tpath: '/:index(index.php/)?settings/apps',\n\t\t\tcomponent: Apps,\n\t\t\tprops: true,\n\t\t\tname: 'apps',\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\tpath: ':category',\n\t\t\t\t\tname: 'apps-category',\n\t\t\t\t\tcomponent: Apps,\n\t\t\t\t\tchildren: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpath: ':id',\n\t\t\t\t\t\t\tname: 'apps-details',\n\t\t\t\t\t\t\tcomponent: Apps,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t],\n})\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Sujith Haridasan <sujith.h@gmail.com>\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 */\n\nimport axios from '@nextcloud/axios'\nimport confirmPassword from '@nextcloud/password-confirmation'\n\nconst sanitize = function(url) {\n\treturn url.replace(/\\/$/, '') // Remove last url slash\n}\n\nexport default {\n\n\t/**\n\t * This Promise is used to chain a request that require an admin password confirmation\n\t * Since chaining Promise have a very precise behavior concerning catch and then,\n\t * you'll need to be careful when using it.\n\t * e.g\n\t * // store\n\t * action(context) {\n\t * return api.requireAdmin().then((response) => {\n\t * return api.get('url')\n\t * .then((response) => {API success})\n\t * .catch((error) => {API failure});\n\t * }).catch((error) => {requireAdmin failure});\n\t * }\n\t * // vue\n\t * this.$store.dispatch('action').then(() => {always executed})\n\t *\n\t * Since Promise.then().catch().then() will always execute the last then\n\t * this.$store.dispatch('action').then will always be executed\n\t *\n\t * If you want requireAdmin failure to also catch the API request failure\n\t * you will need to throw a new error in the api.get.catch()\n\t *\n\t * e.g\n\t * api.requireAdmin().then((response) => {\n\t * api.get('url')\n\t * .then((response) => {API success})\n\t * .catch((error) => {throw error;});\n\t * }).catch((error) => {requireAdmin OR API failure});\n\t *\n\t * @return {Promise}\n\t */\n\trequireAdmin() {\n\t\treturn confirmPassword()\n\t},\n\tget(url, options) {\n\t\treturn axios.get(sanitize(url), options)\n\t},\n\tpost(url, data) {\n\t\treturn axios.post(sanitize(url), data)\n\t},\n\tpatch(url, data) {\n\t\treturn axios.patch(sanitize(url), data)\n\t},\n\tput(url, data) {\n\t\treturn axios.put(sanitize(url), data)\n\t},\n\tdelete(url, data) {\n\t\treturn axios.delete(sanitize(url), { params: data })\n\t},\n}\n","/**\n * @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('settings')\n\t.detectUser()\n\t.build()\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\nimport api from './api'\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport logger from '../logger'\n\nconst orderGroups = function(groups, orderBy) {\n\t/* const SORT_USERCOUNT = 1;\n\t * const SORT_GROUPNAME = 2;\n\t * https://github.com/nextcloud/server/blob/208e38e84e1a07a49699aa90dc5b7272d24489f0/lib/private/Group/MetaData.php#L34\n\t */\n\tif (orderBy === 1) {\n\t\treturn groups.sort((a, b) => a.usercount - a.disabled < b.usercount - b.disabled)\n\t} else {\n\t\treturn groups.sort((a, b) => a.name.localeCompare(b.name))\n\t}\n}\n\nconst defaults = {\n\tgroup: {\n\t\tid: '',\n\t\tname: '',\n\t\tusercount: 0,\n\t\tdisabled: 0,\n\t\tcanAdd: true,\n\t\tcanRemove: true,\n\t},\n}\n\nconst state = {\n\tusers: [],\n\tgroups: [],\n\torderBy: 1,\n\tminPasswordLength: 0,\n\tusersOffset: 0,\n\tusersLimit: 25,\n\tuserCount: 0,\n}\n\nconst mutations = {\n\tappendUsers(state, usersObj) {\n\t\t// convert obj to array\n\t\tconst users = state.users.concat(Object.keys(usersObj).map(userid => usersObj[userid]))\n\t\tstate.usersOffset += state.usersLimit\n\t\tstate.users = users\n\t},\n\tsetPasswordPolicyMinLength(state, length) {\n\t\tstate.minPasswordLength = length !== '' ? length : 0\n\t},\n\tinitGroups(state, { groups, orderBy, userCount }) {\n\t\tstate.groups = groups.map(group => Object.assign({}, defaults.group, group))\n\t\tstate.orderBy = orderBy\n\t\tstate.userCount = userCount\n\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\n\t},\n\taddGroup(state, { gid, displayName }) {\n\t\ttry {\n\t\t\tif (typeof state.groups.find((group) => group.id === gid) !== 'undefined') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// extend group to default values\n\t\t\tconst group = Object.assign({}, defaults.group, {\n\t\t\t\tid: gid,\n\t\t\t\tname: displayName,\n\t\t\t})\n\t\t\tstate.groups.push(group)\n\t\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t\t} catch (e) {\n\t\t\tconsole.error('Can\\'t create group', e)\n\t\t}\n\t},\n\trenameGroup(state, { gid, displayName }) {\n\t\tconst groupIndex = state.groups.findIndex(groupSearch => groupSearch.id === gid)\n\t\tif (groupIndex >= 0) {\n\t\t\tconst updatedGroup = state.groups[groupIndex]\n\t\t\tupdatedGroup.name = displayName\n\t\t\tstate.groups.splice(groupIndex, 1, updatedGroup)\n\t\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t\t}\n\t},\n\tremoveGroup(state, gid) {\n\t\tconst groupIndex = state.groups.findIndex(groupSearch => groupSearch.id === gid)\n\t\tif (groupIndex >= 0) {\n\t\t\tstate.groups.splice(groupIndex, 1)\n\t\t}\n\t},\n\taddUserGroup(state, { userid, gid }) {\n\t\tconst group = state.groups.find(groupSearch => groupSearch.id === gid)\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\t// increase count if user is enabled\n\t\tif (group && user.enabled && state.userCount > 0) {\n\t\t\tgroup.usercount++\n\t\t}\n\t\tconst groups = user.groups\n\t\tgroups.push(gid)\n\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t},\n\tremoveUserGroup(state, { userid, gid }) {\n\t\tconst group = state.groups.find(groupSearch => groupSearch.id === gid)\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\t// lower count if user is enabled\n\t\tif (group && user.enabled && state.userCount > 0) {\n\t\t\tgroup.usercount--\n\t\t}\n\t\tconst groups = user.groups\n\t\tgroups.splice(groups.indexOf(gid), 1)\n\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t},\n\taddUserSubAdmin(state, { userid, gid }) {\n\t\tconst groups = state.users.find(user => user.id === userid).subadmin\n\t\tgroups.push(gid)\n\t},\n\tremoveUserSubAdmin(state, { userid, gid }) {\n\t\tconst groups = state.users.find(user => user.id === userid).subadmin\n\t\tgroups.splice(groups.indexOf(gid), 1)\n\t},\n\tdeleteUser(state, userid) {\n\t\tconst userIndex = state.users.findIndex(user => user.id === userid)\n\t\tthis.commit('updateUserCounts', { user: state.users[userIndex], actionType: 'remove' })\n\t\tstate.users.splice(userIndex, 1)\n\t},\n\taddUserData(state, response) {\n\t\tconst user = response.data.ocs.data\n\t\tstate.users.push(user)\n\t\tthis.commit('updateUserCounts', { user, actionType: 'create' })\n\t},\n\tenableDisableUser(state, { userid, enabled }) {\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\tuser.enabled = enabled\n\t\tthis.commit('updateUserCounts', { user, actionType: enabled ? 'enable' : 'disable' })\n\t},\n\t// update active/disabled counts, groups counts\n\tupdateUserCounts(state, { user, actionType }) {\n\t\tconst disabledGroup = state.groups.find(group => group.id === 'disabled')\n\t\tswitch (actionType) {\n\t\tcase 'enable':\n\t\tcase 'disable':\n\t\t\tdisabledGroup.usercount += user.enabled ? -1 : 1 // update Disabled Users count\n\t\t\tstate.userCount += user.enabled ? 1 : -1 // update Active Users count\n\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\tgroup.disabled += user.enabled ? -1 : 1 // update group disabled count\n\t\t\t})\n\t\t\tbreak\n\t\tcase 'create':\n\t\t\tstate.userCount++ // increment Active Users count\n\n\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\tstate.groups\n\t\t\t\t\t.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t .usercount++ // increment group total count\n\t\t\t})\n\t\t\tbreak\n\t\tcase 'remove':\n\t\t\tif (user.enabled) {\n\t\t\t\tstate.userCount-- // decrement Active Users count\n\t\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t\tgroup.usercount-- // decrement group total count\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tdisabledGroup.usercount-- // decrement Disabled Users count\n\t\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t\tgroup.disabled-- // decrement group disabled count\n\t\t\t\t})\n\t\t\t}\n\t\t\tbreak\n\t\tdefault:\n\t\t\tlogger.error(`Unknown action type in updateUserCounts: '${actionType}'`)\n\t\t\t// not throwing error to interupt execution as this is not fatal\n\t\t}\n\t},\n\tsetUserData(state, { userid, key, value }) {\n\t\tif (key === 'quota') {\n\t\t\tconst humanValue = OC.Util.computerFileSize(value)\n\t\t\tstate.users.find(user => user.id === userid)[key][key] = humanValue !== null ? humanValue : value\n\t\t} else {\n\t\t\tstate.users.find(user => user.id === userid)[key] = value\n\t\t}\n\t},\n\n\t/**\n\t * Reset users list\n\t *\n\t * @param {object} state the store state\n\t */\n\tresetUsers(state) {\n\t\tstate.users = []\n\t\tstate.usersOffset = 0\n\t},\n}\n\nconst getters = {\n\tgetUsers(state) {\n\t\treturn state.users\n\t},\n\tgetGroups(state) {\n\t\treturn state.groups\n\t},\n\tgetSubadminGroups(state) {\n\t\t// Can't be subadmin of admin or disabled\n\t\treturn state.groups.filter(group => group.id !== 'admin' && group.id !== 'disabled')\n\t},\n\tgetPasswordPolicyMinLength(state) {\n\t\treturn state.minPasswordLength\n\t},\n\tgetUsersOffset(state) {\n\t\treturn state.usersOffset\n\t},\n\tgetUsersLimit(state) {\n\t\treturn state.usersLimit\n\t},\n\tgetUserCount(state) {\n\t\treturn state.userCount\n\t},\n}\n\nconst CancelToken = axios.CancelToken\nlet searchRequestCancelSource = null\n\nconst actions = {\n\n\t/**\n\t * Get all users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search Search amongst users\n\t * @param {string} options.group Get users from group\n\t * @return {Promise}\n\t */\n\tgetUsers(context, { offset, limit, search, group }) {\n\t\tif (searchRequestCancelSource) {\n\t\t\tsearchRequestCancelSource.cancel('Operation canceled by another search request.')\n\t\t}\n\t\tsearchRequestCancelSource = CancelToken.source()\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\tgroup = typeof group === 'string' ? group : ''\n\t\tif (group !== '') {\n\t\t\treturn api.get(generateOcsUrl('cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}', { group: encodeURIComponent(group), offset, limit, search }), {\n\t\t\t\tcancelToken: searchRequestCancelSource.token,\n\t\t\t})\n\t\t\t\t.then((response) => {\n\t\t\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\t\t\tif (usersCount > 0) {\n\t\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t\t}\n\t\t\t\t\treturn usersCount\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search }), {\n\t\t\tcancelToken: searchRequestCancelSource.token,\n\t\t})\n\t\t\t.then((response) => {\n\t\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\t\tif (usersCount > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t}\n\t\t\t\treturn usersCount\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t\t}\n\t\t\t})\n\t},\n\n\tgetGroups(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\tconst limitParam = limit === -1 ? '' : `&limit=${limit}`\n\t\treturn api.get(generateOcsUrl('cloud/groups?offset={offset}&search={search}', { offset, search }) + limitParam)\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.groups).length > 0) {\n\t\t\t\t\tresponse.data.ocs.data.groups.forEach(function(group) {\n\t\t\t\t\t\tcontext.commit('addGroup', { gid: group, displayName: group })\n\t\t\t\t\t})\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\t/**\n\t * Get all users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search -\n\t * @return {Promise}\n\t */\n\tgetUsersFromList(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search }))\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.users).length > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\t/**\n\t * Get all users with full details from a groupid\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.groupid -\n\t * @return {Promise}\n\t */\n\tgetUsersFromGroup(context, { groupid, offset, limit }) {\n\t\treturn api.get(generateOcsUrl('cloud/users/{groupId}/details?offset={offset}&limit={limit}', { groupId: encodeURIComponent(groupid), offset, limit }))\n\t\t\t.then((response) => context.commit('getUsersFromList', response.data.ocs.data.users))\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\tgetPasswordPolicyMinLength(context) {\n\t\tif (OC.getCapabilities().password_policy && OC.getCapabilities().password_policy.minLength) {\n\t\t\tcontext.commit('setPasswordPolicyMinLength', OC.getCapabilities().password_policy.minLength)\n\t\t\treturn OC.getCapabilities().password_policy.minLength\n\t\t}\n\t\treturn false\n\t},\n\n\t/**\n\t * Add group\n\t *\n\t * @param {object} context store context\n\t * @param {string} gid Group id\n\t * @return {Promise}\n\t */\n\taddGroup(context, gid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/groups'), { groupid: gid })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('addGroup', { gid, displayName: gid })\n\t\t\t\t\treturn { gid, displayName: gid }\n\t\t\t\t})\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { gid, error })\n\t\t\t// let's throw one more time to prevent the view\n\t\t\t// from adding the user to a group that doesn't exists\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Rename group\n\t *\n\t * @param {Object} context store context\n\t * @param {string} groupid Group id\n\t * @param {string} displayName Group display name\n\t * @return {Promise}\n\t */\n\trenameGroup(context, { groupid, displayName }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.put(generateOcsUrl('cloud/groups/{groupId}', { groupId: encodeURIComponent(groupid) }), { key: 'displayname', value: displayName })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('renameGroup', { gid: groupid, displayName })\n\t\t\t\t\treturn { groupid, displayName }\n\t\t\t\t})\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { groupid, error })\n\t\t\t// let's throw one more time to prevent the view\n\t\t\t// from renaming the group\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Remove group\n\t *\n\t * @param {object} context store context\n\t * @param {string} gid Group id\n\t * @return {Promise}\n\t */\n\tremoveGroup(context, gid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/groups/{groupId}', { groupId: encodeURIComponent(gid) }))\n\t\t\t\t.then((response) => context.commit('removeGroup', gid))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { gid, error }))\n\t},\n\n\t/**\n\t * Add user to group\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\taddUserGroup(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/groups', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('addUserGroup', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Remove user from group\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\tremoveUserGroup(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}/groups', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('removeUserGroup', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { userid, error })\n\t\t\t// let's throw one more time to prevent\n\t\t\t// the view from removing the user row on failure\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Add user to group admin\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\taddUserSubAdmin(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/subadmins', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('addUserSubAdmin', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Remove user from group admin\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\tremoveUserSubAdmin(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}/subadmins', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('removeUserSubAdmin', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Mark all user devices for remote wipe\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\twipeUserDevices(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/wipe', { userid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Delete a user\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tdeleteUser(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}', { userid }))\n\t\t\t\t.then((response) => context.commit('deleteUser', userid))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Add a user\n\t *\n\t * @param {object} context store context\n\t * @param {Function} context.commit -\n\t * @param {Function} context.dispatch -\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.password User password\n\t * @param {string} options.displayName User display name\n\t * @param {string} options.email User email\n\t * @param {string} options.groups User groups\n\t * @param {string} options.subadmin User subadmin groups\n\t * @param {string} options.quota User email\n\t * @param {string} options.language User language\n\t * @return {Promise}\n\t */\n\taddUser({ commit, dispatch }, { userid, password, displayName, email, groups, subadmin, quota, language }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users'), { userid, password, displayName, email, groups, subadmin, quota, language })\n\t\t\t\t.then((response) => dispatch('addUserData', userid || response.data.ocs.data.id))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcommit('API_FAILURE', { userid, error })\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Get user data and commit addition\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\taddUserData(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.get(generateOcsUrl('cloud/users/{userid}', { userid }))\n\t\t\t\t.then((response) => context.commit('addUserData', response))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Enable or disable user\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {boolean} options.enabled User enablement status\n\t * @return {Promise}\n\t */\n\tenableDisableUser(context, { userid, enabled = true }) {\n\t\tconst userStatus = enabled ? 'enable' : 'disable'\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.put(generateOcsUrl('cloud/users/{userid}/{userStatus}', { userid, userStatus }))\n\t\t\t\t.then((response) => context.commit('enableDisableUser', { userid, enabled }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Edit user data\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.key User field to edit\n\t * @param {string} options.value Value of the change\n\t * @return {Promise}\n\t */\n\tsetUserData(context, { userid, key, value }) {\n\t\tconst allowedEmpty = ['email', 'displayname']\n\t\tif (['email', 'language', 'quota', 'displayname', 'password'].indexOf(key) !== -1) {\n\t\t\t// We allow empty email or displayname\n\t\t\tif (typeof value === 'string'\n\t\t\t\t&& (\n\t\t\t\t\t(allowedEmpty.indexOf(key) === -1 && value.length > 0)\n\t\t\t\t\t|| allowedEmpty.indexOf(key) !== -1\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn api.requireAdmin().then((response) => {\n\t\t\t\t\treturn api.put(generateOcsUrl('cloud/users/{userid}', { userid }), { key, value })\n\t\t\t\t\t\t.then((response) => context.commit('setUserData', { userid, key, value }))\n\t\t\t\t\t\t.catch((error) => { throw error })\n\t\t\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t\t\t}\n\t\t}\n\t\treturn Promise.reject(new Error('Invalid request data'))\n\t},\n\n\t/**\n\t * Send welcome mail\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tsendWelcomeMail(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/welcome', { userid }))\n\t\t\t\t.then(response => true)\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport api from './api'\nimport Vue from 'vue'\nimport { generateUrl } from '@nextcloud/router'\nimport { showError, showInfo } from '@nextcloud/dialogs'\nimport '@nextcloud/dialogs/styles/toast.scss'\n\nconst state = {\n\tapps: [],\n\tcategories: [],\n\tupdateCount: 0,\n\tloading: {},\n\tloadingList: false,\n}\n\nconst mutations = {\n\n\tAPPS_API_FAILURE(state, error) {\n\t\tshowError(t('settings', 'An error occured during the request. Unable to proceed.') + '<br>' + error.error.response.data.data.message, { isHTML: true })\n\t\tconsole.error(state, error)\n\t},\n\n\tinitCategories(state, { categories, updateCount }) {\n\t\tstate.categories = categories\n\t\tstate.updateCount = updateCount\n\t},\n\n\tsetUpdateCount(state, updateCount) {\n\t\tstate.updateCount = updateCount\n\t},\n\n\taddCategory(state, category) {\n\t\tstate.categories.push(category)\n\t},\n\n\tappendCategories(state, categoriesArray) {\n\t\t// convert obj to array\n\t\tstate.categories = categoriesArray\n\t},\n\n\tsetAllApps(state, apps) {\n\t\tstate.apps = apps\n\t},\n\n\tsetError(state, { appId, error }) {\n\t\tif (!Array.isArray(appId)) {\n\t\t\tappId = [appId]\n\t\t}\n\t\tappId.forEach((_id) => {\n\t\t\tconst app = state.apps.find(app => app.id === _id)\n\t\t\tapp.error = error\n\t\t})\n\t},\n\n\tclearError(state, { appId, error }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.error = null\n\t},\n\n\tenableApp(state, { appId, groups }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.active = true\n\t\tapp.groups = groups\n\t},\n\n\tdisableApp(state, appId) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.active = false\n\t\tapp.groups = []\n\t\tif (app.removable) {\n\t\t\tapp.canUnInstall = true\n\t\t}\n\t},\n\n\tuninstallApp(state, appId) {\n\t\tstate.apps.find(app => app.id === appId).active = false\n\t\tstate.apps.find(app => app.id === appId).groups = []\n\t\tstate.apps.find(app => app.id === appId).needsDownload = true\n\t\tstate.apps.find(app => app.id === appId).installed = false\n\t\tstate.apps.find(app => app.id === appId).canUnInstall = false\n\t\tstate.apps.find(app => app.id === appId).canInstall = true\n\t},\n\n\tupdateApp(state, appId) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tconst version = app.update\n\t\tapp.update = null\n\t\tapp.version = version\n\t\tstate.updateCount--\n\n\t},\n\n\tresetApps(state) {\n\t\tstate.apps = []\n\t},\n\treset(state) {\n\t\tstate.apps = []\n\t\tstate.categories = []\n\t\tstate.updateCount = 0\n\t},\n\tstartLoading(state, id) {\n\t\tif (Array.isArray(id)) {\n\t\t\tid.forEach((_id) => {\n\t\t\t\tVue.set(state.loading, _id, true)\n\t\t\t})\n\t\t} else {\n\t\t\tVue.set(state.loading, id, true)\n\t\t}\n\t},\n\tstopLoading(state, id) {\n\t\tif (Array.isArray(id)) {\n\t\t\tid.forEach((_id) => {\n\t\t\t\tVue.set(state.loading, _id, false)\n\t\t\t})\n\t\t} else {\n\t\t\tVue.set(state.loading, id, false)\n\t\t}\n\t},\n}\n\nconst getters = {\n\tloading(state) {\n\t\treturn function(id) {\n\t\t\treturn state.loading[id]\n\t\t}\n\t},\n\tgetCategories(state) {\n\t\treturn state.categories\n\t},\n\tgetAllApps(state) {\n\t\treturn state.apps\n\t},\n\tgetUpdateCount(state) {\n\t\treturn state.updateCount\n\t},\n}\n\nconst actions = {\n\n\tenableApp(context, { appId, groups }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.post(generateUrl('settings/apps/enable'), { appIds: apps, groups })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tapps.forEach(_appId => {\n\t\t\t\t\t\tcontext.commit('enableApp', { appId: _appId, groups })\n\t\t\t\t\t})\n\n\t\t\t\t\t// check for server health\n\t\t\t\t\treturn api.get(generateUrl('apps/files'))\n\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\tif (response.data.update_required) {\n\t\t\t\t\t\t\t\tshowInfo(\n\t\t\t\t\t\t\t\t\tt(\n\t\t\t\t\t\t\t\t\t\t'settings',\n\t\t\t\t\t\t\t\t\t\t'The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds.'\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tonClick: () => window.location.reload(),\n\t\t\t\t\t\t\t\t\t\tclose: false,\n\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t\t\tlocation.reload()\n\t\t\t\t\t\t\t\t}, 5000)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(() => {\n\t\t\t\t\t\t\tif (!Array.isArray(appId)) {\n\t\t\t\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\t\t\t\terror: t('settings', 'Error: This app cannot be enabled because it makes the server unstable'),\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\terror: error.response.data.data.message,\n\t\t\t\t\t})\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tforceEnableApp(context, { appId, groups }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then(() => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.post(generateUrl('settings/apps/force'), { appId })\n\t\t\t\t.then((response) => {\n\t\t\t\t\t// TODO: find a cleaner solution\n\t\t\t\t\tlocation.reload()\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\terror: error.response.data.data.message,\n\t\t\t\t\t})\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tdisableApp(context, { appId }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\treturn api.post(generateUrl('settings/apps/disable'), { appIds: apps })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tapps.forEach(_appId => {\n\t\t\t\t\t\tcontext.commit('disableApp', _appId)\n\t\t\t\t\t})\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tuninstallApp(context, { appId }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', appId)\n\t\t\treturn api.get(generateUrl(`settings/apps/uninstall/${appId}`))\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('uninstallApp', appId)\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\n\tupdateApp(context, { appId }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', appId)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.get(generateUrl(`settings/apps/update/${appId}`))\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('updateApp', appId)\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\n\tgetAllApps(context) {\n\t\tcontext.commit('startLoading', 'list')\n\t\treturn api.get(generateUrl('settings/apps/list'))\n\t\t\t.then((response) => {\n\t\t\t\tcontext.commit('setAllApps', response.data.apps)\n\t\t\t\tcontext.commit('stopLoading', 'list')\n\t\t\t\treturn true\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\tgetCategories(context) {\n\t\tcontext.commit('startLoading', 'categories')\n\t\treturn api.get(generateUrl('settings/apps/categories'))\n\t\t\t.then((response) => {\n\t\t\t\tif (response.data.length > 0) {\n\t\t\t\t\tcontext.commit('appendCategories', response.data)\n\t\t\t\t\tcontext.commit('stopLoading', 'categories')\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport api from './api'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nconst state = {}\nconst mutations = {}\nconst getters = {}\nconst actions = {\n\t/**\n\t * Set application config in database\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.app Application name\n\t * @param {boolean} options.key Config key\n\t * @param {boolean} options.value Value to set\n\t * @return {Promise}\n\t */\n\tsetAppConfig(context, { app, key, value }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('apps/provisioning_api/api/v1/config/apps/{app}/{key}', { app, key }), { value })\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { app, key, value, error }))\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nimport Vue from 'vue'\nimport Vuex, { Store } from 'vuex'\nimport users from './users'\nimport apps from './apps'\nimport settings from './settings'\nimport oc from './oc'\nimport { showError } from '@nextcloud/dialogs'\n\nVue.use(Vuex)\n\nconst debug = process.env.NODE_ENV !== 'production'\n\nconst mutations = {\n\tAPI_FAILURE(state, error) {\n\t\ttry {\n\t\t\tconst message = error.error.response.data.ocs.meta.message\n\t\t\tshowError(t('settings', 'An error occured during the request. Unable to proceed.') + '<br>' + message, { isHTML: true })\n\t\t} catch (e) {\n\t\t\tshowError(t('settings', 'An error occured during the request. Unable to proceed.'))\n\t\t}\n\t\tconsole.error(state, error)\n\t},\n}\n\nexport default new Store({\n\tmodules: {\n\t\tusers,\n\t\tapps,\n\t\tsettings,\n\t\toc,\n\t},\n\tstrict: debug,\n\n\tmutations,\n})\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nconst state = {\n\tserverData: {},\n}\nconst mutations = {\n\tsetServerData(state, data) {\n\t\tstate.serverData = data\n\t},\n}\nconst getters = {\n\tgetServerData(state) {\n\t\treturn state.serverData\n\t},\n}\nconst actions = {}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author rakekniven <mark.ziegler@rakekniven.de>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport Vue from 'vue'\nimport VTooltip from 'v-tooltip'\nimport { sync } from 'vuex-router-sync'\n\nimport App from './App.vue'\nimport router from './router'\nimport store from './store'\n\nVue.use(VTooltip, { defaultHtml: false })\n\nsync(store, router)\n\n// CSP config for webpack dynamic chunk loading\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(OC.requestToken)\n\n// bind to window\nVue.prototype.t = t\nVue.prototype.n = n\nVue.prototype.OC = OC\nVue.prototype.OCA = OCA\n// eslint-disable-next-line camelcase\nVue.prototype.oc_userconfig = oc_userconfig\n\nconst app = new Vue({\n\trouter,\n\tstore,\n\trender: h => h(App),\n}).$mount('#content')\n\nexport { app, router, store }\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__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + {\"7418\":\"settings-apps-view\",\"8351\":\"settings-users\"}[chunkId] + \"-\" + chunkId + \".js?v=\" + {\"7418\":\"79a434bb85984935c596\",\"8351\":\"602a08575de144a57dfd\"}[chunkId] + \"\";\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 = 8562;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__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\t8562: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\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));","__webpack_require__.nc = undefined;","// 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__(78778); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","_h","this","$createElement","_self","_c","Users","Apps","Vue","Router","mode","base","generateUrl","linkActiveClass","routes","path","component","props","name","children","sanitize","url","replace","confirmPassword","options","axios","data","params","getLoggerBuilder","setApp","detectUser","build","orderGroups","groups","orderBy","sort","a","b","usercount","disabled","localeCompare","defaults","id","canAdd","canRemove","mutations","appendUsers","state","usersObj","users","concat","Object","keys","map","userid","usersOffset","usersLimit","setPasswordPolicyMinLength","length","minPasswordLength","initGroups","userCount","group","assign","addGroup","gid","displayName","find","push","e","console","error","renameGroup","groupIndex","findIndex","groupSearch","updatedGroup","splice","removeGroup","addUserGroup","user","enabled","removeUserGroup","indexOf","addUserSubAdmin","subadmin","removeUserSubAdmin","deleteUser","userIndex","commit","actionType","addUserData","response","ocs","enableDisableUser","updateUserCounts","disabledGroup","forEach","userGroup","logger","setUserData","key","value","humanValue","OC","Util","computerFileSize","resetUsers","CancelToken","searchRequestCancelSource","getters","getUsers","getGroups","getSubadminGroups","filter","getPasswordPolicyMinLength","getUsersOffset","getUsersLimit","getUserCount","actions","context","offset","limit","search","cancel","source","api","generateOcsUrl","encodeURIComponent","cancelToken","token","then","usersCount","catch","limitParam","getUsersFromList","getUsersFromGroup","groupid","groupId","getCapabilities","password_policy","minLength","wipeUserDevices","addUser","dispatch","password","email","quota","language","userStatus","allowedEmpty","Promise","reject","Error","sendWelcomeMail","APPS_API_FAILURE","showError","t","message","isHTML","initCategories","categories","updateCount","setUpdateCount","addCategory","category","appendCategories","categoriesArray","setAllApps","apps","setError","appId","Array","isArray","_id","app","clearError","enableApp","active","disableApp","removable","canUnInstall","uninstallApp","needsDownload","installed","canInstall","updateApp","version","update","resetApps","reset","startLoading","loading","stopLoading","appIds","_appId","update_required","showInfo","onClick","window","location","reload","close","setTimeout","forceEnableApp","getAllApps","getCategories","loadingList","getUpdateCount","setAppConfig","Vuex","API_FAILURE","meta","Store","modules","settings","serverData","setServerData","getServerData","oc","strict","process","VTooltip","defaultHtml","sync","store","router","__webpack_nonce__","btoa","requestToken","n","OCA","oc_userconfig","render","h","App","$mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","loaded","__webpack_modules__","call","m","amdD","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","r","getter","__esModule","d","definition","o","defineProperty","enumerable","get","f","chunkId","all","reduce","promises","u","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","l","done","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","bind","type","target","head","appendChild","Symbol","toStringTag","nmd","paths","scriptUrl","importScripts","currentScript","p","baseURI","self","href","installedChunks","installedChunkData","promise","resolve","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/settings-vue-settings-nextcloud-pdf.js b/dist/settings-vue-settings-nextcloud-pdf.js
index 845e227e0d3..c495db1f178 100644
--- a/dist/settings-vue-settings-nextcloud-pdf.js
+++ b/dist/settings-vue-settings-nextcloud-pdf.js
@@ -1,3 +1,3 @@
/*! For license information please see settings-vue-settings-nextcloud-pdf.js.LICENSE.txt */
-!function(){"use strict";var e,n={27853:function(e,n,t){var r=!0===(0,t(16453).loadState)("settings","has-reasons-use-nextcloud-pdf");window.addEventListener("DOMContentLoaded",(function(){var e=document.getElementById("open-reasons-use-nextcloud-pdf");e&&r&&e.addEventListener("click",(function(e){e.preventDefault(),OCA.Viewer.open({path:"/Reasons to use Nextcloud.pdf"})}))}))}},t={};function r(e){var o=t[e];if(void 0!==o)return o.exports;var u=t[e]={id:e,loaded:!1,exports:{}};return n[e].call(u.exports,u,u.exports,r),u.loaded=!0,u.exports}r.m=n,r.amdD=function(){throw new Error("define cannot be used indirect")},r.amdO={},e=[],r.O=function(n,t,o,u){if(!t){var i=1/0;for(d=0;d<e.length;d++){t=e[d][0],o=e[d][1],u=e[d][2];for(var c=!0,f=0;f<t.length;f++)(!1&u||i>=u)&&Object.keys(r.O).every((function(e){return r.O[e](t[f])}))?t.splice(f--,1):(c=!1,u<i&&(i=u));if(c){e.splice(d--,1);var a=o();void 0!==a&&(n=a)}}return n}u=u||0;for(var d=e.length;d>0&&e[d-1][2]>u;d--)e[d]=e[d-1];e[d]=[t,o,u]},r.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(n,{a:n}),n},r.d=function(e,n){for(var t in n)r.o(n,t)&&!r.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},r.j=7636,function(){r.b=document.baseURI||self.location.href;var e={7636:0};r.O.j=function(n){return 0===e[n]};var n=function(n,t){var o,u,i=t[0],c=t[1],f=t[2],a=0;if(i.some((function(n){return 0!==e[n]}))){for(o in c)r.o(c,o)&&(r.m[o]=c[o]);if(f)var d=f(r)}for(n&&n(t);a<i.length;a++)u=i[a],r.o(e,u)&&e[u]&&e[u][0](),e[u]=0;return r.O(d)},t=self.webpackChunknextcloud=self.webpackChunknextcloud||[];t.forEach(n.bind(null,0)),t.push=n.bind(null,t.push.bind(t))}();var o=r.O(void 0,[7874],(function(){return r(27853)}));o=r.O(o)}();
-//# sourceMappingURL=settings-vue-settings-nextcloud-pdf.js.map?v=3b2559cbf2901f9d22f2 \ No newline at end of file
+!function(){"use strict";var e,n={27853:function(e,n,t){var r=!0===(0,t(16453).loadState)("settings","has-reasons-use-nextcloud-pdf");window.addEventListener("DOMContentLoaded",(function(){var e=document.getElementById("open-reasons-use-nextcloud-pdf");e&&r&&e.addEventListener("click",(function(e){e.preventDefault(),OCA.Viewer.open({path:"/Reasons to use Nextcloud.pdf"})}))}))}},t={};function r(e){var o=t[e];if(void 0!==o)return o.exports;var i=t[e]={id:e,loaded:!1,exports:{}};return n[e].call(i.exports,i,i.exports,r),i.loaded=!0,i.exports}r.m=n,r.amdD=function(){throw new Error("define cannot be used indirect")},r.amdO={},e=[],r.O=function(n,t,o,i){if(!t){var u=1/0;for(a=0;a<e.length;a++){t=e[a][0],o=e[a][1],i=e[a][2];for(var c=!0,d=0;d<t.length;d++)(!1&i||u>=i)&&Object.keys(r.O).every((function(e){return r.O[e](t[d])}))?t.splice(d--,1):(c=!1,i<u&&(u=i));if(c){e.splice(a--,1);var f=o();void 0!==f&&(n=f)}}return n}i=i||0;for(var a=e.length;a>0&&e[a-1][2]>i;a--)e[a]=e[a-1];e[a]=[t,o,i]},r.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(n,{a:n}),n},r.d=function(e,n){for(var t in n)r.o(n,t)&&!r.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},r.j=7636,function(){r.b=document.baseURI||self.location.href;var e={7636:0};r.O.j=function(n){return 0===e[n]};var n=function(n,t){var o,i,u=t[0],c=t[1],d=t[2],f=0;if(u.some((function(n){return 0!==e[n]}))){for(o in c)r.o(c,o)&&(r.m[o]=c[o]);if(d)var a=d(r)}for(n&&n(t);f<u.length;f++)i=u[f],r.o(e,i)&&e[i]&&e[i][0](),e[i]=0;return r.O(a)},t=self.webpackChunknextcloud=self.webpackChunknextcloud||[];t.forEach(n.bind(null,0)),t.push=n.bind(null,t.push.bind(t))}(),r.nc=void 0;var o=r.O(void 0,[7874],(function(){return r(27853)}));o=r.O(o)}();
+//# sourceMappingURL=settings-vue-settings-nextcloud-pdf.js.map?v=802927d20b12b970da61 \ No newline at end of file
diff --git a/dist/settings-vue-settings-nextcloud-pdf.js.map b/dist/settings-vue-settings-nextcloud-pdf.js.map
index 150f8eba271..f4beb9d316c 100644
--- a/dist/settings-vue-settings-nextcloud-pdf.js.map
+++ b/dist/settings-vue-settings-nextcloud-pdf.js.map
@@ -1 +1 @@
-{"version":3,"file":"settings-vue-settings-nextcloud-pdf.js?v=3b2559cbf2901f9d22f2","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/settings/src/main-nextcloud-pdf.js","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 Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Jan C. Borchardt <hey@jancborchardt.net>\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 */\n\nimport { loadState } from '@nextcloud/initial-state'\n\nconst hasPdf = loadState('settings', 'has-reasons-use-nextcloud-pdf') === true\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\tconst link = document.getElementById('open-reasons-use-nextcloud-pdf')\n\tif (link && hasPdf) {\n\t\tlink.addEventListener('click', function(event) {\n\t\t\tevent.preventDefault()\n\t\t\tOCA.Viewer.open({\n\t\t\t\tpath: '/Reasons to use Nextcloud.pdf',\n\t\t\t})\n\t\t})\n\t}\n})\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 = 7636;","__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\t7636: 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__(27853); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","hasPdf","loadState","window","addEventListener","link","document","getElementById","event","preventDefault","OCA","Viewer","open","path","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","id","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","this","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","children","b","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","push","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"settings-vue-settings-nextcloud-pdf.js?v=802927d20b12b970da61","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/settings/src/main-nextcloud-pdf.js","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/runtime/nonce","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 Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Jan C. Borchardt <hey@jancborchardt.net>\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 */\n\nimport { loadState } from '@nextcloud/initial-state'\n\nconst hasPdf = loadState('settings', 'has-reasons-use-nextcloud-pdf') === true\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\tconst link = document.getElementById('open-reasons-use-nextcloud-pdf')\n\tif (link && hasPdf) {\n\t\tlink.addEventListener('click', function(event) {\n\t\t\tevent.preventDefault()\n\t\t\tOCA.Viewer.open({\n\t\t\t\tpath: '/Reasons to use Nextcloud.pdf',\n\t\t\t})\n\t\t})\n\t}\n})\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 = 7636;","__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\t7636: 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));","__webpack_require__.nc = undefined;","// 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__(27853); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","hasPdf","loadState","window","addEventListener","link","document","getElementById","event","preventDefault","OCA","Viewer","open","path","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","id","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","this","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","children","b","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","push","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/settings-vue-settings-personal-info.js b/dist/settings-vue-settings-personal-info.js
index d024308b927..79371e9833c 100644
--- a/dist/settings-vue-settings-personal-info.js
+++ b/dist/settings-vue-settings-personal-info.js
@@ -1,3 +1,3 @@
/*! For license information please see settings-vue-settings-personal-info.js.LICENSE.txt */
-!function(){"use strict";var n,e={95979:function(n,e,a){var r,i,o,s=a(20144),l=a(22200),c=a(16453),d=a(9944),u=(a(73317),(0,a(17499).IY)().setApp("settings").detectUser().build()),p=a(26932),A=a(74854),m=a(20296),f=a.n(m);function h(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}var v=Object.freeze({ADDRESS:"address",AVATAR:"avatar",BIOGRAPHY:"biography",DISPLAYNAME:"displayname",EMAIL_COLLECTION:"additional_mail",EMAIL:"email",HEADLINE:"headline",NOTIFICATION_EMAIL:"notify_email",ORGANISATION:"organisation",PHONE:"phone",PROFILE_ENABLED:"profile_enabled",ROLE:"role",TWITTER:"twitter",WEBSITE:"website"}),g=Object.freeze({ADDRESS:(0,d.translate)("settings","Address"),AVATAR:(0,d.translate)("settings","Avatar"),BIOGRAPHY:(0,d.translate)("settings","About"),DISPLAYNAME:(0,d.translate)("settings","Full name"),EMAIL_COLLECTION:(0,d.translate)("settings","Additional email"),EMAIL:(0,d.translate)("settings","Email"),HEADLINE:(0,d.translate)("settings","Headline"),ORGANISATION:(0,d.translate)("settings","Organisation"),PHONE:(0,d.translate)("settings","Phone number"),PROFILE_ENABLED:(0,d.translate)("settings","Profile"),ROLE:(0,d.translate)("settings","Role"),TWITTER:(0,d.translate)("settings","Twitter"),WEBSITE:(0,d.translate)("settings","Website")}),C=Object.freeze({PROFILE_VISIBILITY:(0,d.translate)("settings","Profile visibility")}),b=Object.freeze((h(r={},g.ADDRESS,v.ADDRESS),h(r,g.AVATAR,v.AVATAR),h(r,g.BIOGRAPHY,v.BIOGRAPHY),h(r,g.DISPLAYNAME,v.DISPLAYNAME),h(r,g.EMAIL_COLLECTION,v.EMAIL_COLLECTION),h(r,g.EMAIL,v.EMAIL),h(r,g.HEADLINE,v.HEADLINE),h(r,g.ORGANISATION,v.ORGANISATION),h(r,g.PHONE,v.PHONE),h(r,g.PROFILE_ENABLED,v.PROFILE_ENABLED),h(r,g.ROLE,v.ROLE),h(r,g.TWITTER,v.TWITTER),h(r,g.WEBSITE,v.WEBSITE),r)),y=Object.freeze({LANGUAGE:"language"}),x=Object.freeze({LANGUAGE:(0,d.translate)("settings","Language")}),E=Object.freeze({PRIVATE:"v2-private",LOCAL:"v2-local",FEDERATED:"v2-federated",PUBLISHED:"v2-published"}),w=Object.freeze((h(i={},g.ADDRESS,[E.LOCAL,E.PRIVATE]),h(i,g.AVATAR,[E.LOCAL,E.PRIVATE]),h(i,g.BIOGRAPHY,[E.LOCAL,E.PRIVATE]),h(i,g.DISPLAYNAME,[E.LOCAL]),h(i,g.EMAIL_COLLECTION,[E.LOCAL]),h(i,g.EMAIL,[E.LOCAL]),h(i,g.HEADLINE,[E.LOCAL,E.PRIVATE]),h(i,g.ORGANISATION,[E.LOCAL,E.PRIVATE]),h(i,g.PHONE,[E.LOCAL,E.PRIVATE]),h(i,g.PROFILE_ENABLED,[E.LOCAL,E.PRIVATE]),h(i,g.ROLE,[E.LOCAL,E.PRIVATE]),h(i,g.TWITTER,[E.LOCAL,E.PRIVATE]),h(i,g.WEBSITE,[E.LOCAL,E.PRIVATE]),i)),k=Object.freeze([g.BIOGRAPHY,g.HEADLINE,g.ORGANISATION,g.ROLE]),I="Scope",_=Object.freeze((h(o={},E.PRIVATE,{name:E.PRIVATE,displayName:(0,d.translate)("settings","Private"),tooltip:(0,d.translate)("settings","Only visible to people matched via phone number integration through Talk on mobile"),tooltipDisabled:(0,d.translate)("settings","Not available as this property is required for core functionality including file sharing and calendar invitations"),iconClass:"icon-phone"}),h(o,E.LOCAL,{name:E.LOCAL,displayName:(0,d.translate)("settings","Local"),tooltip:(0,d.translate)("settings","Only visible to people on this instance and guests"),iconClass:"icon-password"}),h(o,E.FEDERATED,{name:E.FEDERATED,displayName:(0,d.translate)("settings","Federated"),tooltip:(0,d.translate)("settings","Only synchronize to trusted servers"),tooltipDisabled:(0,d.translate)("settings","Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions"),iconClass:"icon-contacts-dark"}),h(o,E.PUBLISHED,{name:E.PUBLISHED,displayName:(0,d.translate)("settings","Published"),tooltip:(0,d.translate)("settings","Synchronize to trusted servers and the global and public address book"),tooltipDisabled:(0,d.translate)("settings","Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions"),iconClass:"icon-link"}),o)),P=E.LOCAL,S=Object.freeze({NOT_VERIFIED:0,VERIFICATION_IN_PROGRESS:1,VERIFIED:2}),B=/^(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){255,})(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){65,}@)(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22))(?:\.(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-+[a-z0-9]+)*\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-+[a-z0-9]+)*)|(?:\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\]))$/i,R=a(4820),O=a(79753),D=a(10128),L=a.n(D);function N(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function T(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){N(i,a,r,o,s,"next",n)}function s(n){N(i,a,r,o,s,"throw",n)}o(void 0)}))}}var Z=function(){var n=T(regeneratorRuntime.mark((function n(t,e){var a,r,i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return"boolean"==typeof e&&(e=e?"1":"0"),a=(0,l.getCurrentUser)().uid,r=(0,O.generateOcsUrl)("cloud/users/{userId}",{userId:a}),n.next=5,L()();case 5:return n.next=7,R.default.put(r,{key:t,value:e});case 7:return i=n.sent,n.abrupt("return",i.data);case 9:case"end":return n.stop()}}),n)})));return function(t,e){return n.apply(this,arguments)}}(),H=function(){var n=T(regeneratorRuntime.mark((function n(t,e){var a,r,i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return a=(0,l.getCurrentUser)().uid,r=(0,O.generateOcsUrl)("cloud/users/{userId}",{userId:a}),n.next=4,L()();case 4:return n.next=6,R.default.put(r,{key:"".concat(t).concat(I),value:e});case 6:return i=n.sent,n.abrupt("return",i.data);case 8:case"end":return n.stop()}}),n)})));return function(t,e){return n.apply(this,arguments)}}();function U(n){return""!==n}function $(n){return"string"==typeof n&&B.test(n)&&"\n"!==n.slice(-1)&&n.length<=320&&encodeURIComponent(n).replace(/%../g,"x").length<=320}function M(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function F(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){M(i,a,r,o,s,"next",n)}function s(n){M(i,a,r,o,s,"throw",n)}o(void 0)}))}}var j={name:"DisplayName",props:{displayName:{type:String,required:!0},scope:{type:String,required:!0}},data:function(){return{initialDisplayName:this.displayName,localScope:this.scope,showCheckmarkIcon:!1,showErrorIcon:!1}},methods:{onDisplayNameChange:function(n){this.$emit("update:display-name",n.target.value),this.debounceDisplayNameChange(n.target.value.trim())},debounceDisplayNameChange:f()(function(){var n=F(regeneratorRuntime.mark((function n(t){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!U(t)){n.next=3;break}return n.next=3,this.updatePrimaryDisplayName(t);case 3:case"end":return n.stop()}}),n,this)})));return function(t){return n.apply(this,arguments)}}(),500),updatePrimaryDisplayName:function(n){var e=this;return F(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Z(v.DISPLAYNAME,n);case 3:o=a.sent,e.handleResponse({displayName:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update full name"),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},handleResponse:function(n){var t=this,e=n.displayName,a=n.status,r=n.errorMessage,i=n.error;"ok"===a?(this.initialDisplayName=e,(0,A.emit)("settings:display-name:updated",e),this.showCheckmarkIcon=!0,setTimeout((function(){t.showCheckmarkIcon=!1}),2e3)):((0,p.x2)(r),this.logger.error(r,i),this.showErrorIcon=!0,setTimeout((function(){t.showErrorIcon=!1}),2e3))},onScopeChange:function(n){this.$emit("update:scope",n)}}},q=j,G=a(93379),V=a.n(G),W=a(7795),Y=a.n(W),z=a(90569),K=a.n(z),J=a(3565),Q=a.n(J),X=a(19216),nn=a.n(X),tn=a(44589),en=a.n(tn),an=a(74539),rn={};rn.styleTagTransform=en(),rn.setAttributes=Q(),rn.insert=K().bind(null,"head"),rn.domAPI=Y(),rn.insertStyleElement=nn(),V()(an.Z,rn),an.Z&&an.Z.locals&&an.Z.locals;var on=a(51900),sn=(0,on.Z)(q,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"displayname"},[e("input",{attrs:{id:"displayname",type:"text",placeholder:n.t("settings","Your full name"),autocapitalize:"none",autocomplete:"on",autocorrect:"off"},domProps:{value:n.displayName},on:{input:n.onDisplayNameChange}}),n._v(" "),e("div",{staticClass:"displayname__actions-container"},[e("transition",{attrs:{name:"fade"}},[n.showCheckmarkIcon?e("span",{staticClass:"icon-checkmark"}):n.showErrorIcon?e("span",{staticClass:"icon-error"}):n._e()])],1)])}),[],!1,null,"3418897a",null).exports,ln=a(79440),cn=a.n(ln),dn=a(56286),un=a.n(dn),pn={name:"FederationControlAction",components:{ActionButton:un()},props:{activeScope:{type:String,required:!0},displayName:{type:String,required:!0},handleScopeChange:{type:Function,default:function(){}},iconClass:{type:String,required:!0},isSupportedScope:{type:Boolean,required:!0},name:{type:String,required:!0},tooltipDisabled:{type:String,default:""},tooltip:{type:String,required:!0}},methods:{updateScope:function(){this.handleScopeChange(this.name)}}},An=a(12461),mn={};mn.styleTagTransform=en(),mn.setAttributes=Q(),mn.insert=K().bind(null,"head"),mn.domAPI=Y(),mn.insertStyleElement=nn(),V()(An.Z,mn),An.Z&&An.Z.locals&&An.Z.locals;var fn=(0,on.Z)(pn,(function(){var n=this,t=n.$createElement;return(n._self._c||t)("ActionButton",{staticClass:"federation-actions__btn",class:{"federation-actions__btn--active":n.activeScope===n.name},attrs:{"aria-label":n.isSupportedScope?n.tooltip:n.tooltipDisabled,"close-after-click":!0,disabled:!n.isSupportedScope,icon:n.iconClass,title:n.displayName},on:{click:function(t){return t.stopPropagation(),t.preventDefault(),n.updateScope.apply(null,arguments)}}},[n._v("\n\t"+n._s(n.isSupportedScope?n.tooltip:n.tooltipDisabled)+"\n")])}),[],!1,null,"d2e8b360",null),hn=fn.exports;function vn(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function gn(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){vn(i,a,r,o,s,"next",n)}function s(n){vn(i,a,r,o,s,"throw",n)}o(void 0)}))}}function Cn(n,t){(null==t||t>n.length)&&(t=n.length);for(var e=0,a=new Array(t);e<t;e++)a[e]=n[e];return a}var bn=(0,c.loadState)("settings","accountParameters",{}).lookupServerUploadEnabled,yn={name:"FederationControl",components:{Actions:cn(),FederationControlAction:hn},props:{accountProperty:{type:String,required:!0,validator:function(n){return Object.values(g).includes(n)}},additional:{type:Boolean,default:!1},additionalValue:{type:String,default:""},disabled:{type:Boolean,default:!1},handleAdditionalScopeChange:{type:Function,default:null},scope:{type:String,required:!0}},data:function(){return{accountPropertyLowerCase:this.accountProperty.toLocaleLowerCase(),initialScope:this.scope}},computed:{ariaLabel:function(){return t("settings","Change scope level of {accountProperty}",{accountProperty:this.accountPropertyLowerCase})},scopeIcon:function(){return _[this.scope].iconClass},federationScopes:function(){return Object.values(_)},supportedScopes:function(){return bn&&!k.includes(this.accountProperty)?[].concat(function(n){if(Array.isArray(n))return Cn(n)}(n=w[this.accountProperty])||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 Cn(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)?Cn(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.")}(),[E.FEDERATED,E.PUBLISHED]):w[this.accountProperty];var n}},methods:{changeScope:function(n){var t=this;return gn(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.$emit("update:scope",n),t.additional){e.next=6;break}return e.next=4,t.updatePrimaryScope(n);case 4:e.next=8;break;case 6:return e.next=8,t.updateAdditionalScope(n);case 8:case"end":return e.stop()}}),e)})))()},updatePrimaryScope:function(n){var e=this;return gn(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,H(b[e.accountProperty],n);case 3:o=a.sent,e.handleResponse({scope:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update federation scope of the primary {accountProperty}",{accountProperty:e.accountPropertyLowerCase}),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},updateAdditionalScope:function(n){var e=this;return gn(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,e.handleAdditionalScopeChange(e.additionalValue,n);case 3:o=a.sent,e.handleResponse({scope:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update federation scope of additional {accountProperty}",{accountProperty:e.accountPropertyLowerCase}),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},handleResponse:function(n){var t=n.scope,e=n.status,a=n.errorMessage,r=n.error;"ok"===e?this.initialScope=t:(this.$emit("update:scope",this.initialScope),(0,p.x2)(a),this.logger.error(a,r))}}},xn=a(18561),En={};En.styleTagTransform=en(),En.setAttributes=Q(),En.insert=K().bind(null,"head"),En.domAPI=Y(),En.insertStyleElement=nn(),V()(xn.Z,En),xn.Z&&xn.Z.locals&&xn.Z.locals;var wn=(0,on.Z)(yn,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("Actions",{class:{"federation-actions":!n.additional,"federation-actions--additional":n.additional},attrs:{"aria-label":n.ariaLabel,"default-icon":n.scopeIcon,disabled:n.disabled}},n._l(n.federationScopes,(function(t){return e("FederationControlAction",{key:t.name,attrs:{"active-scope":n.scope,"display-name":t.displayName,"handle-scope-change":n.changeScope,"icon-class":t.iconClass,"is-supported-scope":n.supportedScopes.includes(t.name),name:t.name,"tooltip-disabled":t.tooltipDisabled,tooltip:t.tooltip}})})),1)}),[],!1,null,"b51d8bee",null).exports,kn=a(1412),In=a.n(kn),_n=a(31209),Pn={name:"HeaderBar",components:{FederationControl:wn,Button:In(),Plus:_n.Z},props:{accountProperty:{type:String,required:!0,validator:function(n){return Object.values(g).includes(n)||Object.values(x).includes(n)||n===C.PROFILE_VISIBILITY}},isEditable:{type:Boolean,default:!0},isMultiValueSupported:{type:Boolean,default:!1},isValidSection:{type:Boolean,default:!1},labelFor:{type:String,default:""},scope:{type:String,default:null}},data:function(){return{localScope:this.scope}},computed:{isProfileProperty:function(){return this.accountProperty===g.PROFILE_ENABLED},isSettingProperty:function(){return Object.values(x).includes(this.accountProperty)}},methods:{onAddAdditional:function(){this.$emit("add-additional")},onScopeChange:function(n){this.$emit("update:scope",n)}}},Sn=a(75537),Bn={};Bn.styleTagTransform=en(),Bn.setAttributes=Q(),Bn.insert=K().bind(null,"head"),Bn.domAPI=Y(),Bn.insertStyleElement=nn(),V()(Sn.Z,Bn),Sn.Z&&Sn.Z.locals&&Sn.Z.locals;var Rn=(0,on.Z)(Pn,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("h3",{class:{"setting-property":n.isSettingProperty,"profile-property":n.isProfileProperty}},[e("label",{attrs:{for:n.labelFor}},[n._v("\n\t\t"+n._s(n.accountProperty)+"\n\t")]),n._v(" "),n.scope?[e("FederationControl",{staticClass:"federation-control",attrs:{"account-property":n.accountProperty,scope:n.localScope},on:{"update:scope":[function(t){n.localScope=t},n.onScopeChange]}})]:n._e(),n._v(" "),n.isEditable&&n.isMultiValueSupported?[e("Button",{attrs:{type:"tertiary",disabled:!n.isValidSection,"aria-label":n.t("settings","Add additional email")},on:{click:function(t){return t.stopPropagation(),t.preventDefault(),n.onAddAdditional.apply(null,arguments)}},scopedSlots:n._u([{key:"icon",fn:function(){return[e("Plus",{attrs:{size:20}})]},proxy:!0}],null,!1,32235154)},[n._v("\n\t\t\t"+n._s(n.t("settings","Add"))+"\n\t\t")])]:n._e()],2)}),[],!1,null,"19038f0c",null),On=Rn.exports,Dn=(0,c.loadState)("settings","personalInfoParameters",{}).displayNameMap.primaryDisplayName,Ln=(0,c.loadState)("settings","accountParameters",{}).displayNameChangeSupported,Nn={name:"DisplayNameSection",components:{DisplayName:sn,HeaderBar:On},data:function(){return{accountProperty:g.DISPLAYNAME,displayNameChangeSupported:Ln,primaryDisplayName:Dn}},computed:{isValidSection:function(){return U(this.primaryDisplayName.value)}}},Tn=a(26184),Zn={};Zn.styleTagTransform=en(),Zn.setAttributes=Q(),Zn.insert=K().bind(null,"head"),Zn.domAPI=Y(),Zn.insertStyleElement=nn(),V()(Tn.Z,Zn),Tn.Z&&Tn.Z.locals&&Tn.Z.locals;var Hn=(0,on.Z)(Nn,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("section",[e("HeaderBar",{attrs:{"account-property":n.accountProperty,"label-for":"displayname","is-editable":n.displayNameChangeSupported,"is-valid-section":n.isValidSection,scope:n.primaryDisplayName.scope},on:{"update:scope":function(t){return n.$set(n.primaryDisplayName,"scope",t)}}}),n._v(" "),n.displayNameChangeSupported?[e("DisplayName",{attrs:{"display-name":n.primaryDisplayName.value,scope:n.primaryDisplayName.scope},on:{"update:displayName":function(t){return n.$set(n.primaryDisplayName,"value",t)},"update:display-name":function(t){return n.$set(n.primaryDisplayName,"value",t)},"update:scope":function(t){return n.$set(n.primaryDisplayName,"scope",t)}}})]:e("span",[n._v("\n\t\t"+n._s(n.primaryDisplayName.value||n.t("settings","No full name set"))+"\n\t")])],2)}),[],!1,null,"b8a748f4",null).exports;function Un(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function $n(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){Un(i,a,r,o,s,"next",n)}function s(n){Un(i,a,r,o,s,"throw",n)}o(void 0)}))}}var Mn=function(){var n=$n(regeneratorRuntime.mark((function n(t){var e,a,r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e=(0,l.getCurrentUser)().uid,a=(0,O.generateOcsUrl)("cloud/users/{userId}",{userId:e}),n.next=4,L()();case 4:return n.next=6,R.default.put(a,{key:v.EMAIL,value:t});case 6:return r=n.sent,n.abrupt("return",r.data);case 8:case"end":return n.stop()}}),n)})));return function(t){return n.apply(this,arguments)}}(),Fn=function(){var n=$n(regeneratorRuntime.mark((function n(t){var e,a,r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e=(0,l.getCurrentUser)().uid,a=(0,O.generateOcsUrl)("cloud/users/{userId}",{userId:e}),n.next=4,L()();case 4:return n.next=6,R.default.put(a,{key:v.EMAIL_COLLECTION,value:t});case 6:return r=n.sent,n.abrupt("return",r.data);case 8:case"end":return n.stop()}}),n)})));return function(t){return n.apply(this,arguments)}}(),jn=function(){var n=$n(regeneratorRuntime.mark((function n(t){var e,a,r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e=(0,l.getCurrentUser)().uid,a=(0,O.generateOcsUrl)("cloud/users/{userId}",{userId:e}),n.next=4,L()();case 4:return n.next=6,R.default.put(a,{key:v.NOTIFICATION_EMAIL,value:t});case 6:return r=n.sent,n.abrupt("return",r.data);case 8:case"end":return n.stop()}}),n)})));return function(t){return n.apply(this,arguments)}}(),qn=function(){var n=$n(regeneratorRuntime.mark((function n(t){var e,a,r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e=(0,l.getCurrentUser)().uid,a=(0,O.generateOcsUrl)("cloud/users/{userId}/{collection}",{userId:e,collection:v.EMAIL_COLLECTION}),n.next=4,L()();case 4:return n.next=6,R.default.put(a,{key:t,value:""});case 6:return r=n.sent,n.abrupt("return",r.data);case 8:case"end":return n.stop()}}),n)})));return function(t){return n.apply(this,arguments)}}(),Gn=function(){var n=$n(regeneratorRuntime.mark((function n(t,e){var a,r,i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return a=(0,l.getCurrentUser)().uid,r=(0,O.generateOcsUrl)("cloud/users/{userId}/{collection}",{userId:a,collection:v.EMAIL_COLLECTION}),n.next=4,L()();case 4:return n.next=6,R.default.put(r,{key:t,value:e});case 6:return i=n.sent,n.abrupt("return",i.data);case 8:case"end":return n.stop()}}),n)})));return function(t,e){return n.apply(this,arguments)}}(),Vn=function(){var n=$n(regeneratorRuntime.mark((function n(t){var e,a,r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e=(0,l.getCurrentUser)().uid,a=(0,O.generateOcsUrl)("cloud/users/{userId}",{userId:e}),n.next=4,L()();case 4:return n.next=6,R.default.put(a,{key:"".concat(v.EMAIL).concat(I),value:t});case 6:return r=n.sent,n.abrupt("return",r.data);case 8:case"end":return n.stop()}}),n)})));return function(t){return n.apply(this,arguments)}}(),Wn=function(){var n=$n(regeneratorRuntime.mark((function n(t,e){var a,r,i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return a=(0,l.getCurrentUser)().uid,r=(0,O.generateOcsUrl)("cloud/users/{userId}/{collectionScope}",{userId:a,collectionScope:"".concat(v.EMAIL_COLLECTION).concat(I)}),n.next=4,L()();case 4:return n.next=6,R.default.put(r,{key:t,value:e});case 6:return i=n.sent,n.abrupt("return",i.data);case 8:case"end":return n.stop()}}),n)})));return function(t,e){return n.apply(this,arguments)}}();function Yn(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function zn(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){Yn(i,a,r,o,s,"next",n)}function s(n){Yn(i,a,r,o,s,"throw",n)}o(void 0)}))}}var Kn={name:"Email",components:{Actions:cn(),ActionButton:un(),FederationControl:wn},props:{email:{type:String,required:!0},index:{type:Number,default:0},primary:{type:Boolean,default:!1},scope:{type:String,required:!0},activeNotificationEmail:{type:String,default:""},localVerificationState:{type:Number,default:S.NOT_VERIFIED}},data:function(){return{accountProperty:g.EMAIL,initialEmail:this.email,localScope:this.scope,saveAdditionalEmailScope:Wn,showCheckmarkIcon:!1,showErrorIcon:!1}},computed:{deleteDisabled:function(){return this.primary?""===this.email||this.initialEmail!==this.email:""!==this.initialEmail&&this.initialEmail!==this.email},deleteEmailLabel:function(){return this.primary?t("settings","Remove primary email"):t("settings","Delete email")},setNotificationMailDisabled:function(){return!this.primary&&this.localVerificationState!==S.VERIFIED},setNotificationMailLabel:function(){return this.isNotificationEmail?t("settings","Unset as primary email"):this.primary||this.localVerificationState===S.VERIFIED?t("settings","Set as primary email"):t("settings","This address is not confirmed")},federationDisabled:function(){return!this.initialEmail},inputId:function(){return this.primary?"email":"email-".concat(this.index)},inputPlaceholder:function(){return this.primary?t("settings","Your email address"):t("settings","Additional email address {index}",{index:this.index+1})},isNotificationEmail:function(){return this.email&&this.email===this.activeNotificationEmail||this.primary&&""===this.activeNotificationEmail}},mounted:function(){var n=this;this.primary||""!==this.initialEmail||this.$nextTick((function(){var t;return null===(t=n.$refs.email)||void 0===t?void 0:t.focus()}))},methods:{onEmailChange:function(n){this.$emit("update:email",n.target.value),this.debounceEmailChange(n.target.value.trim())},debounceEmailChange:f()(function(){var n=zn(regeneratorRuntime.mark((function n(t){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!$(t)&&""!==t){n.next=14;break}if(!this.primary){n.next=6;break}return n.next=4,this.updatePrimaryEmail(t);case 4:case 10:n.next=14;break;case 6:if(!t){n.next=14;break}if(""!==this.initialEmail){n.next=12;break}return n.next=10,this.addAdditionalEmail(t);case 12:return n.next=14,this.updateAdditionalEmail(t);case 14:case"end":return n.stop()}}),n,this)})));return function(t){return n.apply(this,arguments)}}(),500),deleteEmail:function(){var n=this;return zn(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!n.primary){t.next=6;break}return n.$emit("update:email",""),t.next=4,n.updatePrimaryEmail("");case 4:t.next=8;break;case 6:return t.next=8,n.deleteAdditionalEmail();case 8:case"end":return t.stop()}}),t)})))()},updatePrimaryEmail:function(n){var e=this;return zn(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Mn(n);case 3:o=a.sent,e.handleResponse({email:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),""===n?e.handleResponse({errorMessage:t("settings","Unable to delete primary email address"),error:a.t0}):e.handleResponse({errorMessage:t("settings","Unable to update primary email address"),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},addAdditionalEmail:function(n){var e=this;return zn(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Fn(n);case 3:o=a.sent,e.handleResponse({email:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to add additional email address"),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},setNotificationMail:function(){var n=this;return zn(regeneratorRuntime.mark((function t(){var e,a,r,i;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,r=n.primary||n.isNotificationEmail?"":n.initialEmail,t.next=4,jn(r);case 4:i=t.sent,n.handleResponse({notificationEmail:r,status:null===(e=i.ocs)||void 0===e||null===(a=e.meta)||void 0===a?void 0:a.status}),t.next=11;break;case 8:t.prev=8,t.t0=t.catch(0),n.handleResponse({errorMessage:"Unable to choose this email for notifications",error:t.t0});case 11:case"end":return t.stop()}}),t,null,[[0,8]])})))()},updateAdditionalEmail:function(n){var e=this;return zn(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Gn(e.initialEmail,n);case 3:o=a.sent,e.handleResponse({email:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update additional email address"),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},deleteAdditionalEmail:function(){var n=this;return zn(regeneratorRuntime.mark((function e(){var a,r,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,qn(n.initialEmail);case 3:i=e.sent,n.handleDeleteAdditionalEmail(null===(a=i.ocs)||void 0===a||null===(r=a.meta)||void 0===r?void 0:r.status),e.next=10;break;case 7:e.prev=7,e.t0=e.catch(0),n.handleResponse({errorMessage:t("settings","Unable to delete additional email address"),error:e.t0});case 10:case"end":return e.stop()}}),e,null,[[0,7]])})))()},handleDeleteAdditionalEmail:function(n){"ok"===n?this.$emit("delete-additional-email"):this.handleResponse({errorMessage:t("settings","Unable to delete additional email address")})},handleResponse:function(n){var t=this,e=n.email,a=n.notificationEmail,r=n.status,i=n.errorMessage,o=n.error;"ok"===r?(e?this.initialEmail=e:void 0!==a&&this.$emit("update:notification-email",a),this.showCheckmarkIcon=!0,setTimeout((function(){t.showCheckmarkIcon=!1}),2e3)):((0,p.x2)(i),this.logger.error(i,o),this.showErrorIcon=!0,setTimeout((function(){t.showErrorIcon=!1}),2e3))},onScopeChange:function(n){this.$emit("update:scope",n)}}},Jn=Kn,Qn=a(26669),Xn={};Xn.styleTagTransform=en(),Xn.setAttributes=Q(),Xn.insert=K().bind(null,"head"),Xn.domAPI=Y(),Xn.insertStyleElement=nn(),V()(Qn.Z,Xn),Qn.Z&&Qn.Z.locals&&Qn.Z.locals;var nt=(0,on.Z)(Jn,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",[e("div",{staticClass:"email"},[e("input",{ref:"email",attrs:{id:n.inputId,type:"email",placeholder:n.inputPlaceholder,autocapitalize:"none",autocomplete:"on",autocorrect:"off"},domProps:{value:n.email},on:{input:n.onEmailChange}}),n._v(" "),e("div",{staticClass:"email__actions-container"},[e("transition",{attrs:{name:"fade"}},[n.showCheckmarkIcon?e("span",{staticClass:"icon-checkmark"}):n.showErrorIcon?e("span",{staticClass:"icon-error"}):n._e()]),n._v(" "),n.primary?n._e():[e("FederationControl",{attrs:{"account-property":n.accountProperty,additional:!0,"additional-value":n.email,disabled:n.federationDisabled,"handle-additional-scope-change":n.saveAdditionalEmailScope,scope:n.localScope},on:{"update:scope":[function(t){n.localScope=t},n.onScopeChange]}})],n._v(" "),e("Actions",{staticClass:"email__actions",attrs:{"aria-label":n.t("settings","Email options"),disabled:n.deleteDisabled,"force-menu":!0}},[e("ActionButton",{attrs:{"aria-label":n.deleteEmailLabel,"close-after-click":!0,disabled:n.deleteDisabled,icon:"icon-delete"},on:{click:function(t){return t.stopPropagation(),t.preventDefault(),n.deleteEmail.apply(null,arguments)}}},[n._v("\n\t\t\t\t\t"+n._s(n.deleteEmailLabel)+"\n\t\t\t\t")]),n._v(" "),n.primary&&n.isNotificationEmail?n._e():e("ActionButton",{attrs:{"aria-label":n.setNotificationMailLabel,"close-after-click":!0,disabled:n.setNotificationMailDisabled,icon:"icon-favorite"},on:{click:function(t){return t.stopPropagation(),t.preventDefault(),n.setNotificationMail.apply(null,arguments)}}},[n._v("\n\t\t\t\t\t"+n._s(n.setNotificationMailLabel)+"\n\t\t\t\t")])],1)],2)]),n._v(" "),n.isNotificationEmail?e("em",[n._v("\n\t\t"+n._s(n.t("settings","Primary email for password reset and notifications"))+"\n\t")]):n._e()])}),[],!1,null,"2c097054",null),tt=nt.exports;function et(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function at(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){et(i,a,r,o,s,"next",n)}function s(n){et(i,a,r,o,s,"throw",n)}o(void 0)}))}}var rt=(0,c.loadState)("settings","personalInfoParameters",{}).emailMap,it=rt.additionalEmails,ot=rt.primaryEmail,st=rt.notificationEmail,lt=(0,c.loadState)("settings","accountParameters",{}).displayNameChangeSupported,ct={name:"EmailSection",components:{HeaderBar:On,Email:tt},data:function(){return{accountProperty:g.EMAIL,additionalEmails:it,displayNameChangeSupported:lt,primaryEmail:ot,savePrimaryEmailScope:Vn,notificationEmail:st}},computed:{firstAdditionalEmail:function(){return this.additionalEmails.length?this.additionalEmails[0].value:null},isValidSection:function(){return $(this.primaryEmail.value)&&this.additionalEmails.map((function(n){return n.value})).every($)},primaryEmailValue:{get:function(){return this.primaryEmail.value},set:function(n){this.primaryEmail.value=n}}},methods:{onAddAdditionalEmail:function(){this.isValidSection&&this.additionalEmails.push({value:"",scope:P})},onDeleteAdditionalEmail:function(n){this.$delete(this.additionalEmails,n)},onUpdateEmail:function(){var n=this;return at(regeneratorRuntime.mark((function t(){var e;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(""!==n.primaryEmailValue||!n.firstAdditionalEmail){t.next=7;break}return e=n.firstAdditionalEmail,t.next=4,n.deleteFirstAdditionalEmail();case 4:return n.primaryEmailValue=e,t.next=7,n.updatePrimaryEmail();case 7:case"end":return t.stop()}}),t)})))()},onUpdateNotificationEmail:function(n){var t=this;return at(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t.notificationEmail=n;case 1:case"end":return e.stop()}}),e)})))()},updatePrimaryEmail:function(){var n=this;return at(regeneratorRuntime.mark((function e(){var a,r,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,Mn(n.primaryEmailValue);case 3:i=e.sent,n.handleResponse(null===(a=i.ocs)||void 0===a||null===(r=a.meta)||void 0===r?void 0:r.status),e.next=10;break;case 7:e.prev=7,e.t0=e.catch(0),n.handleResponse("error",t("settings","Unable to update primary email address"),e.t0);case 10:case"end":return e.stop()}}),e,null,[[0,7]])})))()},deleteFirstAdditionalEmail:function(){var n=this;return at(regeneratorRuntime.mark((function e(){var a,r,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,qn(n.firstAdditionalEmail);case 3:i=e.sent,n.handleDeleteFirstAdditionalEmail(null===(a=i.ocs)||void 0===a||null===(r=a.meta)||void 0===r?void 0:r.status),e.next=10;break;case 7:e.prev=7,e.t0=e.catch(0),n.handleResponse("error",t("settings","Unable to delete additional email address"),e.t0);case 10:case"end":return e.stop()}}),e,null,[[0,7]])})))()},handleDeleteFirstAdditionalEmail:function(n){"ok"===n?this.$delete(this.additionalEmails,0):this.handleResponse("error",t("settings","Unable to delete additional email address"),{})},handleResponse:function(n,t,e){"ok"!==n&&((0,p.x2)(t),this.logger.error(t,e))}}},dt=a(35610),ut={};ut.styleTagTransform=en(),ut.setAttributes=Q(),ut.insert=K().bind(null,"head"),ut.domAPI=Y(),ut.insertStyleElement=nn(),V()(dt.Z,ut),dt.Z&&dt.Z.locals&&dt.Z.locals;var pt=(0,on.Z)(ct,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("section",[e("HeaderBar",{attrs:{"account-property":n.accountProperty,"label-for":"email","handle-scope-change":n.savePrimaryEmailScope,"is-editable":!0,"is-multi-value-supported":!0,"is-valid-section":n.isValidSection,scope:n.primaryEmail.scope},on:{"update:scope":function(t){return n.$set(n.primaryEmail,"scope",t)},"add-additional":n.onAddAdditionalEmail}}),n._v(" "),n.displayNameChangeSupported?[e("Email",{attrs:{primary:!0,scope:n.primaryEmail.scope,email:n.primaryEmail.value,"active-notification-email":n.notificationEmail},on:{"update:scope":function(t){return n.$set(n.primaryEmail,"scope",t)},"update:email":[function(t){return n.$set(n.primaryEmail,"value",t)},n.onUpdateEmail],"update:activeNotificationEmail":function(t){n.notificationEmail=t},"update:active-notification-email":function(t){n.notificationEmail=t},"update:notification-email":n.onUpdateNotificationEmail}})]:e("span",[n._v("\n\t\t"+n._s(n.primaryEmail.value||n.t("settings","No email address set"))+"\n\t")]),n._v(" "),n.additionalEmails.length?[e("em",{staticClass:"additional-emails-label"},[n._v(n._s(n.t("settings","Additional emails")))]),n._v(" "),n._l(n.additionalEmails,(function(t,a){return e("Email",{key:a,attrs:{index:a,scope:t.scope,email:t.value,"local-verification-state":parseInt(t.locallyVerified,10),"active-notification-email":n.notificationEmail},on:{"update:scope":function(e){return n.$set(t,"scope",e)},"update:email":[function(e){return n.$set(t,"value",e)},n.onUpdateEmail],"update:activeNotificationEmail":function(t){n.notificationEmail=t},"update:active-notification-email":function(t){n.notificationEmail=t},"update:notification-email":n.onUpdateNotificationEmail,"delete-additional-email":function(t){return n.onDeleteAdditionalEmail(a)}}})}))]:n._e()],2)}),[],!1,null,"845b669e",null).exports;function At(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function mt(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){At(i,a,r,o,s,"next",n)}function s(n){At(i,a,r,o,s,"throw",n)}o(void 0)}))}}function ft(n,t){var e=Object.keys(n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(n);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable}))),e.push.apply(e,a)}return e}function ht(n){for(var t=1;t<arguments.length;t++){var e=null!=arguments[t]?arguments[t]:{};t%2?ft(Object(e),!0).forEach((function(t){vt(n,t,e[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(e)):ft(Object(e)).forEach((function(t){Object.defineProperty(n,t,Object.getOwnPropertyDescriptor(e,t))}))}return n}function vt(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}function gt(n){return function(n){if(Array.isArray(n))return Ct(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 Ct(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)?Ct(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 Ct(n,t){(null==t||t>n.length)&&(t=n.length);for(var e=0,a=new Array(t);e<t;e++)a[e]=n[e];return a}var bt={name:"Language",props:{commonLanguages:{type:Array,required:!0},otherLanguages:{type:Array,required:!0},language:{type:Object,required:!0}},data:function(){return{initialLanguage:this.language}},computed:{allLanguages:function(){return Object.freeze([].concat(gt(this.commonLanguages),gt(this.otherLanguages)).reduce((function(n,t){var e=t.code,a=t.name;return ht(ht({},n),{},vt({},e,a))}),{}))}},methods:{onLanguageChange:function(n){var t=this;return mt(regeneratorRuntime.mark((function e(){var a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a=t.constructLanguage(n.target.value),t.$emit("update:language",a),""===(r=a).code||""===r.name||void 0===r.name){e.next=5;break}return e.next=5,t.updateLanguage(a);case 5:case"end":return e.stop()}var r}),e)})))()},updateLanguage:function(n){var e=this;return mt(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Z(y.LANGUAGE,n.code);case 3:o=a.sent,e.handleResponse({language:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),e.reloadPage(),a.next=11;break;case 8:a.prev=8,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update language"),error:a.t0});case 11:case"end":return a.stop()}}),a,null,[[0,8]])})))()},constructLanguage:function(n){return{code:n,name:this.allLanguages[n]}},handleResponse:function(n){var t=n.language,e=n.status,a=n.errorMessage,r=n.error;"ok"===e?this.initialLanguage=t:((0,p.x2)(a),this.logger.error(a,r))},reloadPage:function(){location.reload()}}},yt=a(35595),xt={};xt.styleTagTransform=en(),xt.setAttributes=Q(),xt.insert=K().bind(null,"head"),xt.domAPI=Y(),xt.insertStyleElement=nn(),V()(yt.Z,xt),yt.Z&&yt.Z.locals&&yt.Z.locals;var Et=(0,on.Z)(bt,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"language"},[e("select",{attrs:{id:"language",placeholder:n.t("settings","Language")},on:{change:n.onLanguageChange}},[n._l(n.commonLanguages,(function(t){return e("option",{key:t.code,domProps:{selected:n.language.code===t.code,value:t.code}},[n._v("\n\t\t\t"+n._s(t.name)+"\n\t\t")])})),n._v(" "),e("option",{attrs:{disabled:""}},[n._v("\n\t\t\t──────────\n\t\t")]),n._v(" "),n._l(n.otherLanguages,(function(t){return e("option",{key:t.code,domProps:{selected:n.language.code===t.code,value:t.code}},[n._v("\n\t\t\t"+n._s(t.name)+"\n\t\t")])}))],2),n._v(" "),e("a",{attrs:{href:"https://www.transifex.com/nextcloud/nextcloud/",target:"_blank",rel:"noreferrer noopener"}},[e("em",[n._v(n._s(n.t("settings","Help translate")))])])])}),[],!1,null,"5396d706",null).exports,wt=(0,c.loadState)("settings","personalInfoParameters",{}).languageMap,kt=wt.activeLanguage,It=wt.commonLanguages,_t=wt.otherLanguages,Pt={name:"LanguageSection",components:{Language:Et,HeaderBar:On},data:function(){return{accountProperty:x.LANGUAGE,commonLanguages:It,otherLanguages:_t,language:kt}},computed:{isEditable:function(){return Boolean(this.language)}}},St=a(3569),Bt={};Bt.styleTagTransform=en(),Bt.setAttributes=Q(),Bt.insert=K().bind(null,"head"),Bt.domAPI=Y(),Bt.insertStyleElement=nn(),V()(St.Z,Bt),St.Z&&St.Z.locals&&St.Z.locals;var Rt=(0,on.Z)(Pt,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("section",[e("HeaderBar",{attrs:{"account-property":n.accountProperty,"label-for":"language"}}),n._v(" "),n.isEditable?[e("Language",{attrs:{"common-languages":n.commonLanguages,"other-languages":n.otherLanguages,language:n.language},on:{"update:language":function(t){n.language=t}}})]:e("span",[n._v("\n\t\t"+n._s(n.t("settings","No language set"))+"\n\t")])],2)}),[],!1,null,"16883898",null).exports,Ot={name:"EditProfileAnchorLink",components:{ChevronDownIcon:a(6016).Z},props:{profileEnabled:{type:Boolean,required:!0}},computed:{disabled:function(){return!this.profileEnabled}}},Dt=a(61434),Lt={};Lt.styleTagTransform=en(),Lt.setAttributes=Q(),Lt.insert=K().bind(null,"head"),Lt.domAPI=Y(),Lt.insertStyleElement=nn(),V()(Dt.Z,Lt),Dt.Z&&Dt.Z.locals&&Dt.Z.locals;var Nt=a(95758),Tt={};Tt.styleTagTransform=en(),Tt.setAttributes=Q(),Tt.insert=K().bind(null,"head"),Tt.domAPI=Y(),Tt.insertStyleElement=nn(),V()(Nt.Z,Tt),Nt.Z&&Nt.Z.locals&&Nt.Z.locals;var Zt=(0,on.Z)(Ot,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("a",n._g({class:{disabled:n.disabled},attrs:{href:"#profile-visibility"}},n.$listeners),[e("ChevronDownIcon",{staticClass:"anchor-icon",attrs:{decorative:"",title:"",size:22}}),n._v("\n\t"+n._s(n.t("settings","Edit your Profile visibility"))+"\n")],1)}),[],!1,null,"73817e9f",null).exports;function Ht(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function Ut(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){Ht(i,a,r,o,s,"next",n)}function s(n){Ht(i,a,r,o,s,"throw",n)}o(void 0)}))}}var $t={name:"ProfileCheckbox",props:{profileEnabled:{type:Boolean,required:!0}},data:function(){return{initialProfileEnabled:this.profileEnabled}},methods:{onEnableProfileChange:function(n){var t=this;return Ut(regeneratorRuntime.mark((function e(){var a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a=n.target.checked,t.$emit("update:profile-enabled",a),"boolean"!=typeof a){e.next=5;break}return e.next=5,t.updateEnableProfile(a);case 5:case"end":return e.stop()}}),e)})))()},updateEnableProfile:function(n){var e=this;return Ut(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Z(v.PROFILE_ENABLED,n);case 3:o=a.sent,e.handleResponse({isEnabled:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update profile enabled state"),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},handleResponse:function(n){var t=n.isEnabled,e=n.status,a=n.errorMessage,r=n.error;"ok"===e?(this.initialProfileEnabled=t,(0,A.emit)("settings:profile-enabled:updated",t)):((0,p.x2)(a),this.logger.error(a,r))}}},Mt=(0,on.Z)($t,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"checkbox-container"},[e("input",{staticClass:"checkbox",attrs:{id:"enable-profile",type:"checkbox"},domProps:{checked:n.profileEnabled},on:{change:n.onEnableProfileChange}}),n._v(" "),e("label",{attrs:{for:"enable-profile"}},[n._v("\n\t\t"+n._s(n.t("settings","Enable Profile"))+"\n\t")])])}),[],!1,null,"b6898860",null).exports,Ft=a(28017),jt={name:"ProfilePreviewCard",components:{Avatar:a.n(Ft)()},props:{displayName:{type:String,required:!0},organisation:{type:String,required:!0},profileEnabled:{type:Boolean,required:!0},userId:{type:String,required:!0}},computed:{disabled:function(){return!this.profileEnabled},profilePageLink:function(){return this.profileEnabled?(0,O.generateUrl)("/u/{userId}",{userId:(0,l.getCurrentUser)().uid}):null}}},qt=a(32756),Gt={};Gt.styleTagTransform=en(),Gt.setAttributes=Q(),Gt.insert=K().bind(null,"head"),Gt.domAPI=Y(),Gt.insertStyleElement=nn(),V()(qt.Z,Gt),qt.Z&&qt.Z.locals&&qt.Z.locals;var Vt=(0,on.Z)(jt,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("a",{staticClass:"preview-card",class:{disabled:n.disabled},attrs:{href:n.profilePageLink}},[e("Avatar",{staticClass:"preview-card__avatar",attrs:{user:n.userId,size:48,"show-user-status":!0,"show-user-status-compact":!1,"disable-menu":!0,"disable-tooltip":!0}}),n._v(" "),e("div",{staticClass:"preview-card__header"},[e("span",[n._v(n._s(n.displayName))])]),n._v(" "),e("div",{staticClass:"preview-card__footer"},[e("span",[n._v(n._s(n.organisation))])])],1)}),[],!1,null,"79bf7437",null).exports,Wt=(0,c.loadState)("settings","personalInfoParameters",{}),Yt=Wt.organisationMap.primaryOrganisation.value,zt=Wt.displayNameMap.primaryDisplayName.value,Kt=Wt.profileEnabled,Jt=Wt.userId,Qt={name:"ProfileSection",components:{EditProfileAnchorLink:Zt,HeaderBar:On,ProfileCheckbox:Mt,ProfilePreviewCard:Vt},data:function(){return{accountProperty:g.PROFILE_ENABLED,organisation:Yt,displayName:zt,profileEnabled:Kt,userId:Jt}},mounted:function(){(0,A.subscribe)("settings:display-name:updated",this.handleDisplayNameUpdate),(0,A.subscribe)("settings:organisation:updated",this.handleOrganisationUpdate)},beforeDestroy:function(){(0,A.unsubscribe)("settings:display-name:updated",this.handleDisplayNameUpdate),(0,A.unsubscribe)("settings:organisation:updated",this.handleOrganisationUpdate)},methods:{handleDisplayNameUpdate:function(n){this.displayName=n},handleOrganisationUpdate:function(n){this.organisation=n}}},Xt=Qt,ne=a(83566),te={};te.styleTagTransform=en(),te.setAttributes=Q(),te.insert=K().bind(null,"head"),te.domAPI=Y(),te.insertStyleElement=nn(),V()(ne.Z,te),ne.Z&&ne.Z.locals&&ne.Z.locals;var ee=(0,on.Z)(Xt,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("section",[e("HeaderBar",{attrs:{"account-property":n.accountProperty}}),n._v(" "),e("ProfileCheckbox",{attrs:{"profile-enabled":n.profileEnabled},on:{"update:profileEnabled":function(t){n.profileEnabled=t},"update:profile-enabled":function(t){n.profileEnabled=t}}}),n._v(" "),e("ProfilePreviewCard",{attrs:{organisation:n.organisation,"display-name":n.displayName,"profile-enabled":n.profileEnabled,"user-id":n.userId}}),n._v(" "),e("EditProfileAnchorLink",{attrs:{"profile-enabled":n.profileEnabled}})],1)}),[],!1,null,"252753e6",null).exports;function ae(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function re(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){ae(i,a,r,o,s,"next",n)}function s(n){ae(i,a,r,o,s,"throw",n)}o(void 0)}))}}var ie={name:"Organisation",props:{organisation:{type:String,required:!0},scope:{type:String,required:!0}},data:function(){return{initialOrganisation:this.organisation,localScope:this.scope,showCheckmarkIcon:!1,showErrorIcon:!1}},methods:{onOrganisationChange:function(n){this.$emit("update:organisation",n.target.value),this.debounceOrganisationChange(n.target.value.trim())},debounceOrganisationChange:f()(function(){var n=re(regeneratorRuntime.mark((function n(t){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.updatePrimaryOrganisation(t);case 2:case"end":return n.stop()}}),n,this)})));return function(t){return n.apply(this,arguments)}}(),500),updatePrimaryOrganisation:function(n){var e=this;return re(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Z(v.ORGANISATION,n);case 3:o=a.sent,e.handleResponse({organisation:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update organisation"),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},handleResponse:function(n){var t=this,e=n.organisation,a=n.status,r=n.errorMessage,i=n.error;"ok"===a?(this.initialOrganisation=e,(0,A.emit)("settings:organisation:updated",e),this.showCheckmarkIcon=!0,setTimeout((function(){t.showCheckmarkIcon=!1}),2e3)):((0,p.x2)(r),this.logger.error(r,i),this.showErrorIcon=!0,setTimeout((function(){t.showErrorIcon=!1}),2e3))},onScopeChange:function(n){this.$emit("update:scope",n)}}},oe=ie,se=a(25731),le={};le.styleTagTransform=en(),le.setAttributes=Q(),le.insert=K().bind(null,"head"),le.domAPI=Y(),le.insertStyleElement=nn(),V()(se.Z,le),se.Z&&se.Z.locals&&se.Z.locals;var ce=(0,on.Z)(oe,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"organisation"},[e("input",{attrs:{id:"organisation",type:"text",placeholder:n.t("settings","Your organisation"),autocapitalize:"none",autocomplete:"on",autocorrect:"off"},domProps:{value:n.organisation},on:{input:n.onOrganisationChange}}),n._v(" "),e("div",{staticClass:"organisation__actions-container"},[e("transition",{attrs:{name:"fade"}},[n.showCheckmarkIcon?e("span",{staticClass:"icon-checkmark"}):n.showErrorIcon?e("span",{staticClass:"icon-error"}):n._e()])],1)])}),[],!1,null,"591cd6b6",null).exports,de=(0,c.loadState)("settings","personalInfoParameters",{}).organisationMap.primaryOrganisation,ue={name:"OrganisationSection",components:{Organisation:ce,HeaderBar:On},data:function(){return{accountProperty:g.ORGANISATION,primaryOrganisation:de}}},pe=a(34458),Ae={};Ae.styleTagTransform=en(),Ae.setAttributes=Q(),Ae.insert=K().bind(null,"head"),Ae.domAPI=Y(),Ae.insertStyleElement=nn(),V()(pe.Z,Ae),pe.Z&&pe.Z.locals&&pe.Z.locals;var me=(0,on.Z)(ue,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("section",[e("HeaderBar",{attrs:{"account-property":n.accountProperty,"label-for":"organisation",scope:n.primaryOrganisation.scope},on:{"update:scope":function(t){return n.$set(n.primaryOrganisation,"scope",t)}}}),n._v(" "),e("Organisation",{attrs:{organisation:n.primaryOrganisation.value,scope:n.primaryOrganisation.scope},on:{"update:organisation":function(t){return n.$set(n.primaryOrganisation,"value",t)},"update:scope":function(t){return n.$set(n.primaryOrganisation,"scope",t)}}})],1)}),[],!1,null,"43146ff7",null).exports;function fe(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function he(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){fe(i,a,r,o,s,"next",n)}function s(n){fe(i,a,r,o,s,"throw",n)}o(void 0)}))}}var ve={name:"Role",props:{role:{type:String,required:!0},scope:{type:String,required:!0}},data:function(){return{initialRole:this.role,localScope:this.scope,showCheckmarkIcon:!1,showErrorIcon:!1}},methods:{onRoleChange:function(n){this.$emit("update:role",n.target.value),this.debounceRoleChange(n.target.value.trim())},debounceRoleChange:f()(function(){var n=he(regeneratorRuntime.mark((function n(t){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.updatePrimaryRole(t);case 2:case"end":return n.stop()}}),n,this)})));return function(t){return n.apply(this,arguments)}}(),500),updatePrimaryRole:function(n){var e=this;return he(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Z(v.ROLE,n);case 3:o=a.sent,e.handleResponse({role:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update role"),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},handleResponse:function(n){var t=this,e=n.role,a=n.status,r=n.errorMessage,i=n.error;"ok"===a?(this.initialRole=e,(0,A.emit)("settings:role:updated",e),this.showCheckmarkIcon=!0,setTimeout((function(){t.showCheckmarkIcon=!1}),2e3)):((0,p.x2)(r),this.logger.error(r,i),this.showErrorIcon=!0,setTimeout((function(){t.showErrorIcon=!1}),2e3))},onScopeChange:function(n){this.$emit("update:scope",n)}}},ge=ve,Ce=a(4161),be={};be.styleTagTransform=en(),be.setAttributes=Q(),be.insert=K().bind(null,"head"),be.domAPI=Y(),be.insertStyleElement=nn(),V()(Ce.Z,be),Ce.Z&&Ce.Z.locals&&Ce.Z.locals;var ye=(0,on.Z)(ge,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"role"},[e("input",{attrs:{id:"role",type:"text",placeholder:n.t("settings","Your role"),autocapitalize:"none",autocomplete:"on",autocorrect:"off"},domProps:{value:n.role},on:{input:n.onRoleChange}}),n._v(" "),e("div",{staticClass:"role__actions-container"},[e("transition",{attrs:{name:"fade"}},[n.showCheckmarkIcon?e("span",{staticClass:"icon-checkmark"}):n.showErrorIcon?e("span",{staticClass:"icon-error"}):n._e()])],1)])}),[],!1,null,"aac18396",null).exports,xe=(0,c.loadState)("settings","personalInfoParameters",{}).roleMap.primaryRole,Ee={name:"RoleSection",components:{Role:ye,HeaderBar:On},data:function(){return{accountProperty:g.ROLE,primaryRole:xe}}},we=a(70986),ke={};ke.styleTagTransform=en(),ke.setAttributes=Q(),ke.insert=K().bind(null,"head"),ke.domAPI=Y(),ke.insertStyleElement=nn(),V()(we.Z,ke),we.Z&&we.Z.locals&&we.Z.locals;var Ie=(0,on.Z)(Ee,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("section",[e("HeaderBar",{attrs:{"account-property":n.accountProperty,"label-for":"role",scope:n.primaryRole.scope},on:{"update:scope":function(t){return n.$set(n.primaryRole,"scope",t)}}}),n._v(" "),e("Role",{attrs:{role:n.primaryRole.value,scope:n.primaryRole.scope},on:{"update:role":function(t){return n.$set(n.primaryRole,"value",t)},"update:scope":function(t){return n.$set(n.primaryRole,"scope",t)}}})],1)}),[],!1,null,"f3d959c2",null).exports;function _e(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function Pe(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){_e(i,a,r,o,s,"next",n)}function s(n){_e(i,a,r,o,s,"throw",n)}o(void 0)}))}}var Se={name:"Headline",props:{headline:{type:String,required:!0},scope:{type:String,required:!0}},data:function(){return{initialHeadline:this.headline,localScope:this.scope,showCheckmarkIcon:!1,showErrorIcon:!1}},methods:{onHeadlineChange:function(n){this.$emit("update:headline",n.target.value),this.debounceHeadlineChange(n.target.value.trim())},debounceHeadlineChange:f()(function(){var n=Pe(regeneratorRuntime.mark((function n(t){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.updatePrimaryHeadline(t);case 2:case"end":return n.stop()}}),n,this)})));return function(t){return n.apply(this,arguments)}}(),500),updatePrimaryHeadline:function(n){var e=this;return Pe(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Z(v.HEADLINE,n);case 3:o=a.sent,e.handleResponse({headline:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update headline"),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},handleResponse:function(n){var t=this,e=n.headline,a=n.status,r=n.errorMessage,i=n.error;"ok"===a?(this.initialHeadline=e,(0,A.emit)("settings:headline:updated",e),this.showCheckmarkIcon=!0,setTimeout((function(){t.showCheckmarkIcon=!1}),2e3)):((0,p.x2)(r),this.logger.error(r,i),this.showErrorIcon=!0,setTimeout((function(){t.showErrorIcon=!1}),2e3))},onScopeChange:function(n){this.$emit("update:scope",n)}}},Be=Se,Re=a(93461),Oe={};Oe.styleTagTransform=en(),Oe.setAttributes=Q(),Oe.insert=K().bind(null,"head"),Oe.domAPI=Y(),Oe.insertStyleElement=nn(),V()(Re.Z,Oe),Re.Z&&Re.Z.locals&&Re.Z.locals;var De=(0,on.Z)(Be,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"headline"},[e("input",{attrs:{id:"headline",type:"text",placeholder:n.t("settings","Your headline"),autocapitalize:"none",autocomplete:"on",autocorrect:"off"},domProps:{value:n.headline},on:{input:n.onHeadlineChange}}),n._v(" "),e("div",{staticClass:"headline__actions-container"},[e("transition",{attrs:{name:"fade"}},[n.showCheckmarkIcon?e("span",{staticClass:"icon-checkmark"}):n.showErrorIcon?e("span",{staticClass:"icon-error"}):n._e()])],1)])}),[],!1,null,"64e0e0bd",null).exports,Le=(0,c.loadState)("settings","personalInfoParameters",{}).headlineMap.primaryHeadline,Ne={name:"HeadlineSection",components:{Headline:De,HeaderBar:On},data:function(){return{accountProperty:g.HEADLINE,primaryHeadline:Le}}},Te=a(6479),Ze={};Ze.styleTagTransform=en(),Ze.setAttributes=Q(),Ze.insert=K().bind(null,"head"),Ze.domAPI=Y(),Ze.insertStyleElement=nn(),V()(Te.Z,Ze),Te.Z&&Te.Z.locals&&Te.Z.locals;var He=(0,on.Z)(Ne,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("section",[e("HeaderBar",{attrs:{"account-property":n.accountProperty,"label-for":"headline",scope:n.primaryHeadline.scope},on:{"update:scope":function(t){return n.$set(n.primaryHeadline,"scope",t)}}}),n._v(" "),e("Headline",{attrs:{headline:n.primaryHeadline.value,scope:n.primaryHeadline.scope},on:{"update:headline":function(t){return n.$set(n.primaryHeadline,"value",t)},"update:scope":function(t){return n.$set(n.primaryHeadline,"scope",t)}}})],1)}),[],!1,null,"187bb5da",null).exports;function Ue(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function $e(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){Ue(i,a,r,o,s,"next",n)}function s(n){Ue(i,a,r,o,s,"throw",n)}o(void 0)}))}}var Me={name:"Biography",props:{biography:{type:String,required:!0},scope:{type:String,required:!0}},data:function(){return{initialBiography:this.biography,localScope:this.scope,showCheckmarkIcon:!1,showErrorIcon:!1}},methods:{onBiographyChange:function(n){this.$emit("update:biography",n.target.value),this.debounceBiographyChange(n.target.value.trim())},debounceBiographyChange:f()(function(){var n=$e(regeneratorRuntime.mark((function n(t){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.updatePrimaryBiography(t);case 2:case"end":return n.stop()}}),n,this)})));return function(t){return n.apply(this,arguments)}}(),500),updatePrimaryBiography:function(n){var e=this;return $e(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Z(v.BIOGRAPHY,n);case 3:o=a.sent,e.handleResponse({biography:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update biography"),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},handleResponse:function(n){var t=this,e=n.biography,a=n.status,r=n.errorMessage,i=n.error;"ok"===a?(this.initialBiography=e,(0,A.emit)("settings:biography:updated",e),this.showCheckmarkIcon=!0,setTimeout((function(){t.showCheckmarkIcon=!1}),2e3)):((0,p.x2)(r),this.logger.error(r,i),this.showErrorIcon=!0,setTimeout((function(){t.showErrorIcon=!1}),2e3))},onScopeChange:function(n){this.$emit("update:scope",n)}}},Fe=Me,je=a(3276),qe={};qe.styleTagTransform=en(),qe.setAttributes=Q(),qe.insert=K().bind(null,"head"),qe.domAPI=Y(),qe.insertStyleElement=nn(),V()(je.Z,qe),je.Z&&je.Z.locals&&je.Z.locals;var Ge=(0,on.Z)(Fe,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"biography"},[e("textarea",{attrs:{id:"biography",placeholder:n.t("settings","Your biography"),rows:"8",autocapitalize:"none",autocomplete:"off",autocorrect:"off"},domProps:{value:n.biography},on:{input:n.onBiographyChange}}),n._v(" "),e("div",{staticClass:"biography__actions-container"},[e("transition",{attrs:{name:"fade"}},[n.showCheckmarkIcon?e("span",{staticClass:"icon-checkmark"}):n.showErrorIcon?e("span",{staticClass:"icon-error"}):n._e()])],1)])}),[],!1,null,"0fbf56a9",null).exports,Ve=(0,c.loadState)("settings","personalInfoParameters",{}).biographyMap.primaryBiography,We={name:"BiographySection",components:{Biography:Ge,HeaderBar:On},data:function(){return{accountProperty:g.BIOGRAPHY,primaryBiography:Ve}}},Ye=a(51340),ze={};ze.styleTagTransform=en(),ze.setAttributes=Q(),ze.insert=K().bind(null,"head"),ze.domAPI=Y(),ze.insertStyleElement=nn(),V()(Ye.Z,ze),Ye.Z&&Ye.Z.locals&&Ye.Z.locals;var Ke=(0,on.Z)(We,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("section",[e("HeaderBar",{attrs:{"account-property":n.accountProperty,"label-for":"biography",scope:n.primaryBiography.scope},on:{"update:scope":function(t){return n.$set(n.primaryBiography,"scope",t)}}}),n._v(" "),e("Biography",{attrs:{biography:n.primaryBiography.value,scope:n.primaryBiography.scope},on:{"update:biography":function(t){return n.$set(n.primaryBiography,"value",t)},"update:scope":function(t){return n.$set(n.primaryBiography,"scope",t)}}})],1)}),[],!1,null,"cfa727da",null).exports,Je=a(7811),Qe=a.n(Je);function Xe(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}var na,ta=function(){var n,t=(n=regeneratorRuntime.mark((function n(t,e){var a,r,i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return a=(0,l.getCurrentUser)().uid,r=(0,O.generateOcsUrl)("/profile/{userId}",{userId:a}),n.next=4,L()();case 4:return n.next=6,R.default.put(r,{paramId:t,visibility:e});case 6:return i=n.sent,n.abrupt("return",i.data);case 8:case"end":return n.stop()}}),n)})),function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){Xe(i,a,r,o,s,"next",n)}function s(n){Xe(i,a,r,o,s,"throw",n)}o(void 0)}))});return function(n,e){return t.apply(this,arguments)}}();function ea(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}var aa=Object.freeze({SHOW:"show",SHOW_USERS_ONLY:"show_users_only",HIDE:"hide"}),ra=Object.freeze((ea(na={},aa.SHOW,{name:aa.SHOW,label:t("settings","Show to everyone")}),ea(na,aa.SHOW_USERS_ONLY,{name:aa.SHOW_USERS_ONLY,label:t("settings","Show to logged in users only")}),ea(na,aa.HIDE,{name:aa.HIDE,label:t("settings","Hide")}),na));function ia(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function oa(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){ia(i,a,r,o,s,"next",n)}function s(n){ia(i,a,r,o,s,"throw",n)}o(void 0)}))}}var sa=(0,c.loadState)("settings","personalInfoParameters",!1).profileEnabled,la={name:"VisibilityDropdown",components:{Multiselect:Qe()},props:{paramId:{type:String,required:!0},displayId:{type:String,required:!0},visibility:{type:String,required:!0}},data:function(){return{initialVisibility:this.visibility,profileEnabled:sa}},computed:{disabled:function(){return!this.profileEnabled},inputId:function(){return"profile-visibility-".concat(this.paramId)},visibilityObject:function(){return ra[this.visibility]},visibilityOptions:function(){return Object.values(ra)}},mounted:function(){(0,A.subscribe)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate)},beforeDestroy:function(){(0,A.unsubscribe)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate)},methods:{onVisibilityChange:function(n){var t=this;return oa(regeneratorRuntime.mark((function e(){var a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(null===n){e.next=6;break}if(a=n.name,t.$emit("update:visibility",a),!U(a)){e.next=6;break}return e.next=6,t.updateVisibility(a);case 6:case"end":return e.stop()}}),e)})))()},updateVisibility:function(n){var e=this;return oa(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,ta(e.paramId,n);case 3:o=a.sent,e.handleResponse({visibility:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update visibility of {displayId}",{displayId:e.displayId}),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},handleResponse:function(n){var t=n.visibility,e=n.status,a=n.errorMessage,r=n.error;"ok"===e?this.initialVisibility=t:((0,p.x2)(a),this.logger.error(a,r))},handleProfileEnabledUpdate:function(n){this.profileEnabled=n}}},ca=la,da=a(93343),ua={};ua.styleTagTransform=en(),ua.setAttributes=Q(),ua.insert=K().bind(null,"head"),ua.domAPI=Y(),ua.insertStyleElement=nn(),V()(da.Z,ua),da.Z&&da.Z.locals&&da.Z.locals;var pa=(0,on.Z)(ca,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"visibility-container",class:{disabled:n.disabled}},[e("label",{attrs:{for:n.inputId}},[n._v("\n\t\t"+n._s(n.t("settings","{displayId}",{displayId:n.displayId}))+"\n\t")]),n._v(" "),e("Multiselect",{staticClass:"visibility-container__multiselect",attrs:{id:n.inputId,options:n.visibilityOptions,"track-by":"name",label:"label",value:n.visibilityObject},on:{change:n.onVisibilityChange}})],1)}),[],!1,null,"4643b0e2",null).exports;function Aa(n,t){(null==t||t>n.length)&&(t=n.length);for(var e=0,a=new Array(t);e<t;e++)a[e]=n[e];return a}var ma=(0,c.loadState)("settings","profileParameters",{}).profileConfig,fa=(0,c.loadState)("settings","personalInfoParameters",!1).profileEnabled,ha=function(n,t){return n.appId===t.appId||"core"!==n.appId&&"core"!==t.appId?n.displayId.localeCompare(t.displayId):"core"===n.appId?1:-1},va={name:"ProfileVisibilitySection",components:{HeaderBar:On,VisibilityDropdown:pa},data:function(){return{heading:C.PROFILE_VISIBILITY,profileEnabled:fa,visibilityParams:Object.entries(ma).map((function(n){var t,e,a=(e=2,function(n){if(Array.isArray(n))return n}(t=n)||function(n,t){var e=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=e){var a,r,i=[],o=!0,s=!1;try{for(e=e.call(n);!(o=(a=e.next()).done)&&(i.push(a.value),!t||i.length!==t);o=!0);}catch(n){s=!0,r=n}finally{try{o||null==e.return||e.return()}finally{if(s)throw r}}return i}}(t,e)||function(n,t){if(n){if("string"==typeof n)return Aa(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)?Aa(n,t):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),r=a[0],i=a[1];return{id:r,appId:i.appId,displayId:i.displayId,visibility:i.visibility}})).sort(ha),marginLeft:window.matchMedia("(min-width: 1600px)").matches?window.getComputedStyle(document.getElementById("personal-settings-avatar-container")).getPropertyValue("width").trim():"0px"}},computed:{disabled:function(){return!this.profileEnabled},rows:function(){return Math.ceil(this.visibilityParams.length/2)}},mounted:function(){var n=this;(0,A.subscribe)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate),window.onresize=function(){n.marginLeft=window.matchMedia("(min-width: 1600px)").matches?window.getComputedStyle(document.getElementById("personal-settings-avatar-container")).getPropertyValue("width").trim():"0px"}},beforeDestroy:function(){(0,A.unsubscribe)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate)},methods:{handleProfileEnabledUpdate:function(n){this.profileEnabled=n}}},ga=va,Ca=a(40958),ba={};ba.styleTagTransform=en(),ba.setAttributes=Q(),ba.insert=K().bind(null,"head"),ba.domAPI=Y(),ba.insertStyleElement=nn(),V()(Ca.Z,ba),Ca.Z&&Ca.Z.locals&&Ca.Z.locals;var ya=(0,on.Z)(ga,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("section",{style:{marginLeft:n.marginLeft},attrs:{id:"profile-visibility"}},[e("HeaderBar",{attrs:{"account-property":n.heading}}),n._v(" "),e("em",{class:{disabled:n.disabled}},[n._v("\n\t\t"+n._s(n.t("settings",'The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to "Show to everyone" and scope is set to "Private", "Private" is respected.'))+"\n\t")]),n._v(" "),e("div",{staticClass:"visibility-dropdowns",style:{gridTemplateRows:"repeat("+n.rows+", 44px)"}},n._l(n.visibilityParams,(function(t){return e("VisibilityDropdown",{key:t.id,attrs:{"param-id":t.id,"display-id":t.displayId,visibility:t.visibility},on:{"update:visibility":function(e){return n.$set(t,"visibility",e)}}})})),1)],1)}),[],!1,null,"16df62f8",null).exports;a.nc=btoa((0,l.getRequestToken)());var xa=(0,c.loadState)("settings","profileEnabledGlobally",!0);s.default.mixin({props:{logger:u},methods:{t:d.translate}});var Ea=s.default.extend(Hn),wa=s.default.extend(pt),ka=s.default.extend(Rt);if((new Ea).$mount("#vue-displayname-section"),(new wa).$mount("#vue-email-section"),(new ka).$mount("#vue-language-section"),xa){var Ia=s.default.extend(ee),_a=s.default.extend(me),Pa=s.default.extend(Ie),Sa=s.default.extend(He),Ba=s.default.extend(Ke),Ra=s.default.extend(ya);(new Ia).$mount("#vue-profile-section"),(new _a).$mount("#vue-organisation-section"),(new Pa).$mount("#vue-role-section"),(new Sa).$mount("#vue-headline-section"),(new Ba).$mount("#vue-biography-section"),(new Ra).$mount("#vue-profile-visibility-section")}},3276:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".biography[data-v-0fbf56a9]{display:grid;align-items:center}.biography textarea[data-v-0fbf56a9]{resize:vertical;grid-area:1/1;width:100%;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.biography textarea[data-v-0fbf56a9]:hover,.biography textarea[data-v-0fbf56a9]:focus,.biography textarea[data-v-0fbf56a9]:active{border-color:var(--color-primary-element) !important;outline:none !important}.biography .biography__actions-container[data-v-0fbf56a9]{grid-area:1/1;justify-self:flex-end;align-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px;margin-bottom:5px}.biography .biography__actions-container .icon-checkmark[data-v-0fbf56a9],.biography .biography__actions-container .icon-error[data-v-0fbf56a9]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-0fbf56a9],.fade-leave-to[data-v-0fbf56a9]{opacity:0}.fade-enter-active[data-v-0fbf56a9]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-0fbf56a9]{transition:opacity 300ms ease-out}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/BiographySection/Biography.vue"],names:[],mappings:"AAyHA,4BACC,YAAA,CACA,kBAAA,CAEA,qCACC,eAAA,CACA,aAAA,CACA,UAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAEA,kIAGC,oDAAA,CACA,uBAAA,CAIF,0DACC,aAAA,CACA,qBAAA,CACA,mBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CACA,iBAAA,CAEA,gJAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA",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.biography {\n\tdisplay: grid;\n\talign-items: center;\n\n\ttextarea {\n\t\tresize: vertical;\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\n\t\t&:hover,\n\t\t&:focus,\n\t\t&:active {\n\t\t\tborder-color: var(--color-primary-element) !important;\n\t\t\toutline: none !important;\n\t\t}\n\t}\n\n\t.biography__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\talign-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\t\tmargin-bottom: 5px;\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n"],sourceRoot:""}]),t.Z=o},51340:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"section[data-v-cfa727da]{padding:10px 10px}section[data-v-cfa727da] button:disabled{cursor:default}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/BiographySection/BiographySection.vue"],names:[],mappings:"AA6DA,yBACC,iBAAA,CAEA,yCACC,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\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},74539:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".displayname[data-v-3418897a]{display:grid;align-items:center}.displayname input[data-v-3418897a]{grid-area:1/1;width:100%;height:34px;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.displayname .displayname__actions-container[data-v-3418897a]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.displayname .displayname__actions-container .icon-checkmark[data-v-3418897a],.displayname .displayname__actions-container .icon-error[data-v-3418897a]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-3418897a],.fade-leave-to[data-v-3418897a]{opacity:0}.fade-enter-active[data-v-3418897a]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-3418897a]{transition:opacity 300ms ease-out}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayName.vue"],names:[],mappings:"AA8HA,8BACC,YAAA,CACA,kBAAA,CAEA,oCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAGD,8DACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,wJAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA",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.displayname {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\t}\n\n\t.displayname__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n"],sourceRoot:""}]),t.Z=o},26184:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"section[data-v-b8a748f4]{padding:10px 10px}section[data-v-b8a748f4] button:disabled{cursor:default}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayNameSection.vue"],names:[],mappings:"AA8EA,yBACC,iBAAA,CAEA,yCACC,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\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},26669:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".email[data-v-2c097054]{display:grid;align-items:center}.email input[data-v-2c097054]{grid-area:1/1;width:100%;height:34px;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.email .email__actions-container[data-v-2c097054]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.email .email__actions-container .email__actions[data-v-2c097054]{opacity:.4 !important}.email .email__actions-container .email__actions[data-v-2c097054]:hover,.email .email__actions-container .email__actions[data-v-2c097054]:focus,.email .email__actions-container .email__actions[data-v-2c097054]:active{opacity:.8 !important}.email .email__actions-container .email__actions[data-v-2c097054] button{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important}.email .email__actions-container .icon-checkmark[data-v-2c097054],.email .email__actions-container .icon-error[data-v-2c097054]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-2c097054],.fade-leave-to[data-v-2c097054]{opacity:0}.fade-enter-active[data-v-2c097054]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-2c097054]{transition:opacity 300ms ease-out}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/EmailSection/Email.vue"],names:[],mappings:"AAoWA,wBACC,YAAA,CACA,kBAAA,CAEA,8BACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAGD,kDACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,kEACC,qBAAA,CAEA,yNAGC,qBAAA,CAGD,yEACC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CAIF,gIAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.email {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\t}\n\n\t.email__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.email__actions {\n\t\t\topacity: 0.4 !important;\n\n\t\t\t&:hover,\n\t\t\t&:focus,\n\t\t\t&:active {\n\t\t\t\topacity: 0.8 !important;\n\t\t\t}\n\n\t\t\t&::v-deep button {\n\t\t\t\theight: 30px !important;\n\t\t\t\tmin-height: 30px !important;\n\t\t\t\twidth: 30px !important;\n\t\t\t\tmin-width: 30px !important;\n\t\t\t}\n\t\t}\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n"],sourceRoot:""}]),t.Z=o},35610:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"section[data-v-845b669e]{padding:10px 10px}section[data-v-845b669e] button:disabled{cursor:default}section .additional-emails-label[data-v-845b669e]{display:block;margin-top:16px}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue"],names:[],mappings:"AA+LA,yBACC,iBAAA,CAEA,yCACC,cAAA,CAGD,kDACC,aAAA,CACA,eAAA",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\n\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n\n\t.additional-emails-label {\n\t\tdisplay: block;\n\t\tmargin-top: 16px;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},93461:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".headline[data-v-64e0e0bd]{display:grid;align-items:center}.headline input[data-v-64e0e0bd]{grid-area:1/1;width:100%;height:34px;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.headline .headline__actions-container[data-v-64e0e0bd]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.headline .headline__actions-container .icon-checkmark[data-v-64e0e0bd],.headline .headline__actions-container .icon-error[data-v-64e0e0bd]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-64e0e0bd],.fade-leave-to[data-v-64e0e0bd]{opacity:0}.fade-enter-active[data-v-64e0e0bd]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-64e0e0bd]{transition:opacity 300ms ease-out}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/HeadlineSection/Headline.vue"],names:[],mappings:"AAyHA,2BACC,YAAA,CACA,kBAAA,CAEA,iCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAGD,wDACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,4IAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA",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.headline {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\t}\n\n\t.headline__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n"],sourceRoot:""}]),t.Z=o},6479:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"section[data-v-187bb5da]{padding:10px 10px}section[data-v-187bb5da] button:disabled{cursor:default}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/HeadlineSection/HeadlineSection.vue"],names:[],mappings:"AA6DA,yBACC,iBAAA,CAEA,yCACC,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\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},35595:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".language[data-v-5396d706]{display:grid}.language select[data-v-5396d706]{width:100%;height:34px;margin:3px 3px 3px 0;padding:6px 16px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background:var(--icon-triangle-s-000) no-repeat right 4px center;font-family:var(--font-face);appearance:none;cursor:pointer}.language a[data-v-5396d706]{color:var(--color-main-text);text-decoration:none;width:max-content}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue"],names:[],mappings:"AA+IA,2BACC,YAAA,CAEA,kCACC,UAAA,CACA,WAAA,CACA,oBAAA,CACA,gBAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,gEAAA,CACA,4BAAA,CACA,eAAA,CACA,cAAA,CAGD,6BACC,4BAAA,CACA,oBAAA,CACA,iBAAA",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.language {\n\tdisplay: grid;\n\n\tselect {\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 6px 16px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground: var(--icon-triangle-s-000) no-repeat right 4px center;\n\t\tfont-family: var(--font-face);\n\t\tappearance: none;\n\t\tcursor: pointer;\n\t}\n\n\ta {\n\t\tcolor: var(--color-main-text);\n\t\ttext-decoration: none;\n\t\twidth: max-content;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},3569:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"section[data-v-16883898]{padding:10px 10px}section[data-v-16883898] button:disabled{cursor:default}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue"],names:[],mappings:"AA2EA,yBACC,iBAAA,CAEA,yCACC,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\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},25731:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".organisation[data-v-591cd6b6]{display:grid;align-items:center}.organisation input[data-v-591cd6b6]{grid-area:1/1;width:100%;height:34px;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.organisation .organisation__actions-container[data-v-591cd6b6]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.organisation .organisation__actions-container .icon-checkmark[data-v-591cd6b6],.organisation .organisation__actions-container .icon-error[data-v-591cd6b6]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-591cd6b6],.fade-leave-to[data-v-591cd6b6]{opacity:0}.fade-enter-active[data-v-591cd6b6]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-591cd6b6]{transition:opacity 300ms ease-out}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/OrganisationSection/Organisation.vue"],names:[],mappings:"AAyHA,+BACC,YAAA,CACA,kBAAA,CAEA,qCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAGD,gEACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,4JAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA",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.organisation {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\t}\n\n\t.organisation__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n"],sourceRoot:""}]),t.Z=o},34458:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"section[data-v-43146ff7]{padding:10px 10px}section[data-v-43146ff7] button:disabled{cursor:default}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/OrganisationSection/OrganisationSection.vue"],names:[],mappings:"AA6DA,yBACC,iBAAA,CAEA,yCACC,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\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},61434:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"html{scroll-behavior:smooth}@media screen and (prefers-reduced-motion: reduce){html{scroll-behavior:auto}}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue"],names:[],mappings:"AA4DA,KACC,sBAAA,CAEA,mDAHD,KAIE,oBAAA,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\nhtml {\n\tscroll-behavior: smooth;\n\n\t@media screen and (prefers-reduced-motion: reduce) {\n\t\tscroll-behavior: auto;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},95758:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"a[data-v-73817e9f]{display:block;height:44px;width:290px;line-height:44px;padding:0 16px;margin:14px auto;border-radius:var(--border-radius-pill);opacity:.4;background-color:rgba(0,0,0,0)}a .anchor-icon[data-v-73817e9f]{display:inline-block;vertical-align:middle;margin-top:6px;margin-right:8px}a[data-v-73817e9f]:hover,a[data-v-73817e9f]:focus,a[data-v-73817e9f]:active{opacity:.8;background-color:rgba(127,127,127,.25)}a.disabled[data-v-73817e9f]{pointer-events:none}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue"],names:[],mappings:"AAsEA,mBACC,aAAA,CACA,WAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,gBAAA,CACA,uCAAA,CACA,UAAA,CACA,8BAAA,CAEA,gCACC,oBAAA,CACA,qBAAA,CACA,cAAA,CACA,gBAAA,CAGD,4EAGC,UAAA,CACA,sCAAA,CAGD,4BACC,mBAAA",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\na {\n\tdisplay: block;\n\theight: 44px;\n\twidth: 290px;\n\tline-height: 44px;\n\tpadding: 0 16px;\n\tmargin: 14px auto;\n\tborder-radius: var(--border-radius-pill);\n\topacity: 0.4;\n\tbackground-color: transparent;\n\n\t.anchor-icon {\n\t\tdisplay: inline-block;\n\t\tvertical-align: middle;\n\t\tmargin-top: 6px;\n\t\tmargin-right: 8px;\n\t}\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\topacity: 0.8;\n\t\tbackground-color: rgba(127, 127, 127, .25);\n\t}\n\n\t&.disabled {\n\t\tpointer-events: none;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},32756:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".preview-card[data-v-79bf7437]{display:flex;flex-direction:column;position:relative;width:290px;height:116px;margin:14px auto;border-radius:var(--border-radius-large);background-color:var(--color-main-background);font-weight:bold;box-shadow:0 2px 9px var(--color-box-shadow)}.preview-card[data-v-79bf7437]:hover,.preview-card[data-v-79bf7437]:focus,.preview-card[data-v-79bf7437]:active{box-shadow:0 2px 12px var(--color-box-shadow)}.preview-card[data-v-79bf7437]:focus-visible{outline:var(--color-main-text) solid 1px;outline-offset:3px}.preview-card.disabled[data-v-79bf7437]{filter:grayscale(1);opacity:.5;cursor:default;box-shadow:0 0 3px var(--color-box-shadow)}.preview-card.disabled *[data-v-79bf7437],.preview-card.disabled[data-v-79bf7437] *{cursor:default}.preview-card__avatar[data-v-79bf7437]{position:absolute !important;top:40px;left:18px;z-index:1}.preview-card__avatar[data-v-79bf7437]:not(.avatardiv--unknown){box-shadow:0 0 0 3px var(--color-main-background) !important}.preview-card__header[data-v-79bf7437],.preview-card__footer[data-v-79bf7437]{position:relative;width:auto}.preview-card__header span[data-v-79bf7437],.preview-card__footer span[data-v-79bf7437]{position:absolute;left:78px;overflow:hidden;text-overflow:ellipsis;word-break:break-all}@supports(-webkit-line-clamp: 2){.preview-card__header span[data-v-79bf7437],.preview-card__footer span[data-v-79bf7437]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.preview-card__header[data-v-79bf7437]{height:70px;border-radius:var(--border-radius-large) var(--border-radius-large) 0 0}.preview-card__header span[data-v-79bf7437]{bottom:0;color:var(--color-primary-text);font-size:18px;font-weight:bold;margin:0 4px 8px 0}.preview-card__footer[data-v-79bf7437]{height:46px}.preview-card__footer span[data-v-79bf7437]{top:0;color:var(--color-text-maxcontrast);font-size:14px;font-weight:normal;margin:4px 4px 0 0;line-height:1.3}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue"],names:[],mappings:"AA6FA,+BACC,YAAA,CACA,qBAAA,CACA,iBAAA,CACA,WAAA,CACA,YAAA,CACA,gBAAA,CACA,wCAAA,CACA,6CAAA,CACA,gBAAA,CACA,4CAAA,CAEA,gHAGC,6CAAA,CAGD,6CACC,wCAAA,CACA,kBAAA,CAGD,wCACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,0CAAA,CAEA,oFAEC,cAAA,CAIF,uCAEC,4BAAA,CACA,QAAA,CACA,SAAA,CACA,SAAA,CAEA,gEACC,4DAAA,CAIF,8EAEC,iBAAA,CACA,UAAA,CAEA,wFACC,iBAAA,CACA,SAAA,CACA,eAAA,CACA,sBAAA,CACA,oBAAA,CAEA,iCAPD,wFAQE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,uCACC,WAAA,CACA,uEAAA,CAEA,4CACC,QAAA,CACA,+BAAA,CACA,cAAA,CACA,gBAAA,CACA,kBAAA,CAIF,uCACC,WAAA,CAEA,4CACC,KAAA,CACA,mCAAA,CACA,cAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA",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.preview-card {\n\tdisplay: flex;\n\tflex-direction: column;\n\tposition: relative;\n\twidth: 290px;\n\theight: 116px;\n\tmargin: 14px auto;\n\tborder-radius: var(--border-radius-large);\n\tbackground-color: var(--color-main-background);\n\tfont-weight: bold;\n\tbox-shadow: 0 2px 9px var(--color-box-shadow);\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbox-shadow: 0 2px 12px var(--color-box-shadow);\n\t}\n\n\t&:focus-visible {\n\t\toutline: var(--color-main-text) solid 1px;\n\t\toutline-offset: 3px;\n\t}\n\n\t&.disabled {\n\t\tfilter: grayscale(1);\n\t\topacity: 0.5;\n\t\tcursor: default;\n\t\tbox-shadow: 0 0 3px var(--color-box-shadow);\n\n\t\t& *,\n\t\t&::v-deep * {\n\t\t\tcursor: default;\n\t\t}\n\t}\n\n\t&__avatar {\n\t\t// Override Avatar component position to fix positioning on rerender\n\t\tposition: absolute !important;\n\t\ttop: 40px;\n\t\tleft: 18px;\n\t\tz-index: 1;\n\n\t\t&:not(.avatardiv--unknown) {\n\t\t\tbox-shadow: 0 0 0 3px var(--color-main-background) !important;\n\t\t}\n\t}\n\n\t&__header,\n\t&__footer {\n\t\tposition: relative;\n\t\twidth: auto;\n\n\t\tspan {\n\t\t\tposition: absolute;\n\t\t\tleft: 78px;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\tword-break: break-all;\n\n\t\t\t@supports (-webkit-line-clamp: 2) {\n\t\t\t\tdisplay: -webkit-box;\n\t\t\t\t-webkit-line-clamp: 2;\n\t\t\t\t-webkit-box-orient: vertical;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__header {\n\t\theight: 70px;\n\t\tborder-radius: var(--border-radius-large) var(--border-radius-large) 0 0;\n\n\t\tspan {\n\t\t\tbottom: 0;\n\t\t\tcolor: var(--color-primary-text);\n\t\t\tfont-size: 18px;\n\t\t\tfont-weight: bold;\n\t\t\tmargin: 0 4px 8px 0;\n\t\t}\n\t}\n\n\t&__footer {\n\t\theight: 46px;\n\n\t\tspan {\n\t\t\ttop: 0;\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\tfont-size: 14px;\n\t\t\tfont-weight: normal;\n\t\t\tmargin: 4px 4px 0 0;\n\t\t\tline-height: 1.3;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},83566:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"section[data-v-252753e6]{padding:10px 10px}section[data-v-252753e6] button:disabled{cursor:default}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue"],names:[],mappings:"AAkGA,yBACC,iBAAA,CAEA,yCACC,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\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},40958:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"section[data-v-16df62f8]{padding:30px;max-width:100vw}section em[data-v-16df62f8]{display:block;margin:16px 0}section em.disabled[data-v-16df62f8]{filter:grayscale(1);opacity:.5;cursor:default;pointer-events:none}section em.disabled *[data-v-16df62f8],section em.disabled[data-v-16df62f8] *{cursor:default;pointer-events:none}section .visibility-dropdowns[data-v-16df62f8]{display:grid;gap:10px 40px}@media(min-width: 1200px){section[data-v-16df62f8]{width:940px}section .visibility-dropdowns[data-v-16df62f8]{grid-auto-flow:column}}@media(max-width: 1200px){section[data-v-16df62f8]{width:470px}}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue"],names:[],mappings:"AAyHA,yBACC,YAAA,CACA,eAAA,CAEA,4BACC,aAAA,CACA,aAAA,CAEA,qCACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,mBAAA,CAEA,8EAEC,cAAA,CACA,mBAAA,CAKH,+CACC,YAAA,CACA,aAAA,CAGD,0BA3BD,yBA4BE,WAAA,CAEA,+CACC,qBAAA,CAAA,CAIF,0BAnCD,yBAoCE,WAAA,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\nsection {\n\tpadding: 30px;\n\tmax-width: 100vw;\n\n\tem {\n\t\tdisplay: block;\n\t\tmargin: 16px 0;\n\n\t\t&.disabled {\n\t\t\tfilter: grayscale(1);\n\t\t\topacity: 0.5;\n\t\t\tcursor: default;\n\t\t\tpointer-events: none;\n\n\t\t\t& *,\n\t\t\t&::v-deep * {\n\t\t\t\tcursor: default;\n\t\t\t\tpointer-events: none;\n\t\t\t}\n\t\t}\n\t}\n\n\t.visibility-dropdowns {\n\t\tdisplay: grid;\n\t\tgap: 10px 40px;\n\t}\n\n\t@media (min-width: 1200px) {\n\t\twidth: 940px;\n\n\t\t.visibility-dropdowns {\n\t\t\tgrid-auto-flow: column;\n\t\t}\n\t}\n\n\t@media (max-width: 1200px) {\n\t\twidth: 470px;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},93343:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".visibility-container[data-v-4643b0e2]{display:flex;width:max-content}.visibility-container.disabled[data-v-4643b0e2]{filter:grayscale(1);opacity:.5;cursor:default;pointer-events:none}.visibility-container.disabled *[data-v-4643b0e2],.visibility-container.disabled[data-v-4643b0e2] *{cursor:default;pointer-events:none}.visibility-container label[data-v-4643b0e2]{color:var(--color-text-lighter);width:150px;line-height:50px}.visibility-container__multiselect[data-v-4643b0e2]{width:260px;max-width:40vw}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue"],names:[],mappings:"AAwJA,uCACC,YAAA,CACA,iBAAA,CAEA,gDACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,mBAAA,CAEA,oGAEC,cAAA,CACA,mBAAA,CAIF,6CACC,+BAAA,CACA,WAAA,CACA,gBAAA,CAGD,oDACC,WAAA,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.visibility-container {\n\tdisplay: flex;\n\twidth: max-content;\n\n\t&.disabled {\n\t\tfilter: grayscale(1);\n\t\topacity: 0.5;\n\t\tcursor: default;\n\t\tpointer-events: none;\n\n\t\t& *,\n\t\t&::v-deep * {\n\t\t\tcursor: default;\n\t\t\tpointer-events: none;\n\t\t}\n\t}\n\n\tlabel {\n\t\tcolor: var(--color-text-lighter);\n\t\twidth: 150px;\n\t\tline-height: 50px;\n\t}\n\n\t&__multiselect {\n\t\twidth: 260px;\n\t\tmax-width: 40vw;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},4161:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".role[data-v-aac18396]{display:grid;align-items:center}.role input[data-v-aac18396]{grid-area:1/1;width:100%;height:34px;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.role .role__actions-container[data-v-aac18396]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.role .role__actions-container .icon-checkmark[data-v-aac18396],.role .role__actions-container .icon-error[data-v-aac18396]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-aac18396],.fade-leave-to[data-v-aac18396]{opacity:0}.fade-enter-active[data-v-aac18396]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-aac18396]{transition:opacity 300ms ease-out}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/RoleSection/Role.vue"],names:[],mappings:"AAyHA,uBACC,YAAA,CACA,kBAAA,CAEA,6BACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAGD,gDACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,4HAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA",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.role {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\t}\n\n\t.role__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n"],sourceRoot:""}]),t.Z=o},70986:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"section[data-v-f3d959c2]{padding:10px 10px}section[data-v-f3d959c2] button:disabled{cursor:default}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/RoleSection/RoleSection.vue"],names:[],mappings:"AA6DA,yBACC,iBAAA,CAEA,yCACC,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\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},18561:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".federation-actions[data-v-b51d8bee],.federation-actions--additional[data-v-b51d8bee]{opacity:.4 !important}.federation-actions[data-v-b51d8bee]:hover,.federation-actions[data-v-b51d8bee]:focus,.federation-actions[data-v-b51d8bee]:active,.federation-actions--additional[data-v-b51d8bee]:hover,.federation-actions--additional[data-v-b51d8bee]:focus,.federation-actions--additional[data-v-b51d8bee]:active{opacity:.8 !important}.federation-actions--additional[data-v-b51d8bee] button{padding-bottom:7px;height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/shared/FederationControl.vue"],names:[],mappings:"AAsLA,sFAEC,qBAAA,CAEA,wSAGC,qBAAA,CAKD,wDAEC,kBAAA,CACA,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA",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.federation-actions,\n.federation-actions--additional {\n\topacity: 0.4 !important;\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\topacity: 0.8 !important;\n\t}\n}\n\n.federation-actions--additional {\n\t&::v-deep button {\n\t\t// TODO remove this hack\n\t\tpadding-bottom: 7px;\n\t\theight: 30px !important;\n\t\tmin-height: 30px !important;\n\t\twidth: 30px !important;\n\t\tmin-width: 30px !important;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},12461:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".federation-actions__btn[data-v-d2e8b360] p{width:150px !important;padding:8px 0 !important;color:var(--color-main-text) !important;font-size:12.8px !important;line-height:1.5em !important}.federation-actions__btn--active[data-v-d2e8b360]{background-color:var(--color-primary-light) !important;box-shadow:inset 2px 0 var(--color-primary) !important}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue"],names:[],mappings:"AA0FC,4CACC,sBAAA,CACA,wBAAA,CACA,uCAAA,CACA,2BAAA,CACA,4BAAA,CAIF,kDACC,sDAAA,CACA,sDAAA",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.federation-actions__btn {\n\t&::v-deep p {\n\t\twidth: 150px !important;\n\t\tpadding: 8px 0 !important;\n\t\tcolor: var(--color-main-text) !important;\n\t\tfont-size: 12.8px !important;\n\t\tline-height: 1.5em !important;\n\t}\n}\n\n.federation-actions__btn--active {\n\tbackground-color: var(--color-primary-light) !important;\n\tbox-shadow: inset 2px 0 var(--color-primary) !important;\n}\n"],sourceRoot:""}]),t.Z=o},75537:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"h3[data-v-19038f0c]{display:inline-flex;width:100%;margin:12px 0 0 0;font-size:16px;color:var(--color-text-light)}h3.profile-property[data-v-19038f0c]{height:38px}h3.setting-property[data-v-19038f0c]{height:32px}h3 label[data-v-19038f0c]{cursor:pointer}.federation-control[data-v-19038f0c]{margin:-12px 0 0 8px}.button-vue[data-v-19038f0c]{margin:-6px 0 0 auto !important}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue"],names:[],mappings:"AA0HA,oBACC,mBAAA,CACA,UAAA,CACA,iBAAA,CACA,cAAA,CACA,6BAAA,CAEA,qCACC,WAAA,CAGD,qCACC,WAAA,CAGD,0BACC,cAAA,CAIF,qCACC,oBAAA,CAGD,6BACC,+BAAA",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\nh3 {\n\tdisplay: inline-flex;\n\twidth: 100%;\n\tmargin: 12px 0 0 0;\n\tfont-size: 16px;\n\tcolor: var(--color-text-light);\n\n\t&.profile-property {\n\t\theight: 38px;\n\t}\n\n\t&.setting-property {\n\t\theight: 32px;\n\t}\n\n\tlabel {\n\t\tcursor: pointer;\n\t}\n}\n\n.federation-control {\n\tmargin: -12px 0 0 8px;\n}\n\n.button-vue {\n\tmargin: -6px 0 0 auto !important;\n}\n"],sourceRoot:""}]),t.Z=o}},a={};function r(n){var t=a[n];if(void 0!==t)return t.exports;var i=a[n]={id:n,loaded:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.loaded=!0,i.exports}r.m=e,r.amdD=function(){throw new Error("define cannot be used indirect")},r.amdO={},n=[],r.O=function(t,e,a,i){if(!e){var o=1/0;for(d=0;d<n.length;d++){e=n[d][0],a=n[d][1],i=n[d][2];for(var s=!0,l=0;l<e.length;l++)(!1&i||o>=i)&&Object.keys(r.O).every((function(n){return r.O[n](e[l])}))?e.splice(l--,1):(s=!1,i<o&&(o=i));if(s){n.splice(d--,1);var c=a();void 0!==c&&(t=c)}}return t}i=i||0;for(var d=n.length;d>0&&n[d-1][2]>i;d--)n[d]=n[d-1];n[d]=[e,a,i]},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=4418,function(){r.b=document.baseURI||self.location.href;var n={4418:0};r.O.j=function(t){return 0===n[t]};var t=function(t,e){var a,i,o=e[0],s=e[1],l=e[2],c=0;if(o.some((function(t){return 0!==n[t]}))){for(a in s)r.o(s,a)&&(r.m[a]=s[a]);if(l)var d=l(r)}for(t&&t(e);c<o.length;c++)i=o[c],r.o(n,i)&&n[i]&&n[i][0](),n[i]=0;return r.O(d)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(t.bind(null,0)),e.push=t.bind(null,e.push.bind(e))}();var i=r.O(void 0,[7874],(function(){return r(95979)}));i=r.O(i)}();
-//# sourceMappingURL=settings-vue-settings-personal-info.js.map?v=936693f650f47e49541a \ No newline at end of file
+!function(){"use strict";var n,e={95979:function(n,e,a){var r,i,o,s=a(20144),l=a(22200),c=a(16453),d=a(9944),u=(a(73317),(0,a(17499).IY)().setApp("settings").detectUser().build()),p=a(26932),A=a(74854),m=a(20296),f=a.n(m);function h(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}var v=Object.freeze({ADDRESS:"address",AVATAR:"avatar",BIOGRAPHY:"biography",DISPLAYNAME:"displayname",EMAIL_COLLECTION:"additional_mail",EMAIL:"email",HEADLINE:"headline",NOTIFICATION_EMAIL:"notify_email",ORGANISATION:"organisation",PHONE:"phone",PROFILE_ENABLED:"profile_enabled",ROLE:"role",TWITTER:"twitter",WEBSITE:"website"}),g=Object.freeze({ADDRESS:(0,d.translate)("settings","Address"),AVATAR:(0,d.translate)("settings","Avatar"),BIOGRAPHY:(0,d.translate)("settings","About"),DISPLAYNAME:(0,d.translate)("settings","Full name"),EMAIL_COLLECTION:(0,d.translate)("settings","Additional email"),EMAIL:(0,d.translate)("settings","Email"),HEADLINE:(0,d.translate)("settings","Headline"),ORGANISATION:(0,d.translate)("settings","Organisation"),PHONE:(0,d.translate)("settings","Phone number"),PROFILE_ENABLED:(0,d.translate)("settings","Profile"),ROLE:(0,d.translate)("settings","Role"),TWITTER:(0,d.translate)("settings","Twitter"),WEBSITE:(0,d.translate)("settings","Website")}),C=Object.freeze({PROFILE_VISIBILITY:(0,d.translate)("settings","Profile visibility")}),b=Object.freeze((h(r={},g.ADDRESS,v.ADDRESS),h(r,g.AVATAR,v.AVATAR),h(r,g.BIOGRAPHY,v.BIOGRAPHY),h(r,g.DISPLAYNAME,v.DISPLAYNAME),h(r,g.EMAIL_COLLECTION,v.EMAIL_COLLECTION),h(r,g.EMAIL,v.EMAIL),h(r,g.HEADLINE,v.HEADLINE),h(r,g.ORGANISATION,v.ORGANISATION),h(r,g.PHONE,v.PHONE),h(r,g.PROFILE_ENABLED,v.PROFILE_ENABLED),h(r,g.ROLE,v.ROLE),h(r,g.TWITTER,v.TWITTER),h(r,g.WEBSITE,v.WEBSITE),r)),y=Object.freeze({LANGUAGE:"language"}),x=Object.freeze({LANGUAGE:(0,d.translate)("settings","Language")}),E=Object.freeze({PRIVATE:"v2-private",LOCAL:"v2-local",FEDERATED:"v2-federated",PUBLISHED:"v2-published"}),w=Object.freeze((h(i={},g.ADDRESS,[E.LOCAL,E.PRIVATE]),h(i,g.AVATAR,[E.LOCAL,E.PRIVATE]),h(i,g.BIOGRAPHY,[E.LOCAL,E.PRIVATE]),h(i,g.DISPLAYNAME,[E.LOCAL]),h(i,g.EMAIL_COLLECTION,[E.LOCAL]),h(i,g.EMAIL,[E.LOCAL]),h(i,g.HEADLINE,[E.LOCAL,E.PRIVATE]),h(i,g.ORGANISATION,[E.LOCAL,E.PRIVATE]),h(i,g.PHONE,[E.LOCAL,E.PRIVATE]),h(i,g.PROFILE_ENABLED,[E.LOCAL,E.PRIVATE]),h(i,g.ROLE,[E.LOCAL,E.PRIVATE]),h(i,g.TWITTER,[E.LOCAL,E.PRIVATE]),h(i,g.WEBSITE,[E.LOCAL,E.PRIVATE]),i)),k=Object.freeze([g.BIOGRAPHY,g.HEADLINE,g.ORGANISATION,g.ROLE]),I="Scope",_=Object.freeze((h(o={},E.PRIVATE,{name:E.PRIVATE,displayName:(0,d.translate)("settings","Private"),tooltip:(0,d.translate)("settings","Only visible to people matched via phone number integration through Talk on mobile"),tooltipDisabled:(0,d.translate)("settings","Not available as this property is required for core functionality including file sharing and calendar invitations"),iconClass:"icon-phone"}),h(o,E.LOCAL,{name:E.LOCAL,displayName:(0,d.translate)("settings","Local"),tooltip:(0,d.translate)("settings","Only visible to people on this instance and guests"),iconClass:"icon-password"}),h(o,E.FEDERATED,{name:E.FEDERATED,displayName:(0,d.translate)("settings","Federated"),tooltip:(0,d.translate)("settings","Only synchronize to trusted servers"),tooltipDisabled:(0,d.translate)("settings","Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions"),iconClass:"icon-contacts-dark"}),h(o,E.PUBLISHED,{name:E.PUBLISHED,displayName:(0,d.translate)("settings","Published"),tooltip:(0,d.translate)("settings","Synchronize to trusted servers and the global and public address book"),tooltipDisabled:(0,d.translate)("settings","Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions"),iconClass:"icon-link"}),o)),P=E.LOCAL,S=Object.freeze({NOT_VERIFIED:0,VERIFICATION_IN_PROGRESS:1,VERIFIED:2}),B=/^(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){255,})(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){65,}@)(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22))(?:\.(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-+[a-z0-9]+)*\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-+[a-z0-9]+)*)|(?:\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\]))$/i,R=a(4820),O=a(79753),D=a(10128),L=a.n(D);function N(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function T(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){N(i,a,r,o,s,"next",n)}function s(n){N(i,a,r,o,s,"throw",n)}o(void 0)}))}}var Z=function(){var n=T(regeneratorRuntime.mark((function n(t,e){var a,r,i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return"boolean"==typeof e&&(e=e?"1":"0"),a=(0,l.getCurrentUser)().uid,r=(0,O.generateOcsUrl)("cloud/users/{userId}",{userId:a}),n.next=5,L()();case 5:return n.next=7,R.default.put(r,{key:t,value:e});case 7:return i=n.sent,n.abrupt("return",i.data);case 9:case"end":return n.stop()}}),n)})));return function(t,e){return n.apply(this,arguments)}}(),H=function(){var n=T(regeneratorRuntime.mark((function n(t,e){var a,r,i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return a=(0,l.getCurrentUser)().uid,r=(0,O.generateOcsUrl)("cloud/users/{userId}",{userId:a}),n.next=4,L()();case 4:return n.next=6,R.default.put(r,{key:"".concat(t).concat(I),value:e});case 6:return i=n.sent,n.abrupt("return",i.data);case 8:case"end":return n.stop()}}),n)})));return function(t,e){return n.apply(this,arguments)}}();function U(n){return""!==n}function $(n){return"string"==typeof n&&B.test(n)&&"\n"!==n.slice(-1)&&n.length<=320&&encodeURIComponent(n).replace(/%../g,"x").length<=320}function M(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function F(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){M(i,a,r,o,s,"next",n)}function s(n){M(i,a,r,o,s,"throw",n)}o(void 0)}))}}var j={name:"DisplayName",props:{displayName:{type:String,required:!0},scope:{type:String,required:!0}},data:function(){return{initialDisplayName:this.displayName,localScope:this.scope,showCheckmarkIcon:!1,showErrorIcon:!1}},methods:{onDisplayNameChange:function(n){this.$emit("update:display-name",n.target.value),this.debounceDisplayNameChange(n.target.value.trim())},debounceDisplayNameChange:f()(function(){var n=F(regeneratorRuntime.mark((function n(t){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!U(t)){n.next=3;break}return n.next=3,this.updatePrimaryDisplayName(t);case 3:case"end":return n.stop()}}),n,this)})));return function(t){return n.apply(this,arguments)}}(),500),updatePrimaryDisplayName:function(n){var e=this;return F(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Z(v.DISPLAYNAME,n);case 3:o=a.sent,e.handleResponse({displayName:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update full name"),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},handleResponse:function(n){var t=this,e=n.displayName,a=n.status,r=n.errorMessage,i=n.error;"ok"===a?(this.initialDisplayName=e,(0,A.emit)("settings:display-name:updated",e),this.showCheckmarkIcon=!0,setTimeout((function(){t.showCheckmarkIcon=!1}),2e3)):((0,p.x2)(r),this.logger.error(r,i),this.showErrorIcon=!0,setTimeout((function(){t.showErrorIcon=!1}),2e3))},onScopeChange:function(n){this.$emit("update:scope",n)}}},q=j,G=a(93379),V=a.n(G),W=a(7795),Y=a.n(W),z=a(90569),K=a.n(z),J=a(3565),Q=a.n(J),X=a(19216),nn=a.n(X),tn=a(44589),en=a.n(tn),an=a(74539),rn={};rn.styleTagTransform=en(),rn.setAttributes=Q(),rn.insert=K().bind(null,"head"),rn.domAPI=Y(),rn.insertStyleElement=nn(),V()(an.Z,rn),an.Z&&an.Z.locals&&an.Z.locals;var on=a(51900),sn=(0,on.Z)(q,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"displayname"},[e("input",{attrs:{id:"displayname",type:"text",placeholder:n.t("settings","Your full name"),autocapitalize:"none",autocomplete:"on",autocorrect:"off"},domProps:{value:n.displayName},on:{input:n.onDisplayNameChange}}),n._v(" "),e("div",{staticClass:"displayname__actions-container"},[e("transition",{attrs:{name:"fade"}},[n.showCheckmarkIcon?e("span",{staticClass:"icon-checkmark"}):n.showErrorIcon?e("span",{staticClass:"icon-error"}):n._e()])],1)])}),[],!1,null,"3418897a",null).exports,ln=a(79440),cn=a.n(ln),dn=a(56286),un=a.n(dn),pn={name:"FederationControlAction",components:{ActionButton:un()},props:{activeScope:{type:String,required:!0},displayName:{type:String,required:!0},handleScopeChange:{type:Function,default:function(){}},iconClass:{type:String,required:!0},isSupportedScope:{type:Boolean,required:!0},name:{type:String,required:!0},tooltipDisabled:{type:String,default:""},tooltip:{type:String,required:!0}},methods:{updateScope:function(){this.handleScopeChange(this.name)}}},An=a(12461),mn={};mn.styleTagTransform=en(),mn.setAttributes=Q(),mn.insert=K().bind(null,"head"),mn.domAPI=Y(),mn.insertStyleElement=nn(),V()(An.Z,mn),An.Z&&An.Z.locals&&An.Z.locals;var fn=(0,on.Z)(pn,(function(){var n=this,t=n.$createElement;return(n._self._c||t)("ActionButton",{staticClass:"federation-actions__btn",class:{"federation-actions__btn--active":n.activeScope===n.name},attrs:{"aria-label":n.isSupportedScope?n.tooltip:n.tooltipDisabled,"close-after-click":!0,disabled:!n.isSupportedScope,icon:n.iconClass,title:n.displayName},on:{click:function(t){return t.stopPropagation(),t.preventDefault(),n.updateScope.apply(null,arguments)}}},[n._v("\n\t"+n._s(n.isSupportedScope?n.tooltip:n.tooltipDisabled)+"\n")])}),[],!1,null,"d2e8b360",null),hn=fn.exports;function vn(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function gn(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){vn(i,a,r,o,s,"next",n)}function s(n){vn(i,a,r,o,s,"throw",n)}o(void 0)}))}}function Cn(n,t){(null==t||t>n.length)&&(t=n.length);for(var e=0,a=new Array(t);e<t;e++)a[e]=n[e];return a}var bn=(0,c.loadState)("settings","accountParameters",{}).lookupServerUploadEnabled,yn={name:"FederationControl",components:{Actions:cn(),FederationControlAction:hn},props:{accountProperty:{type:String,required:!0,validator:function(n){return Object.values(g).includes(n)}},additional:{type:Boolean,default:!1},additionalValue:{type:String,default:""},disabled:{type:Boolean,default:!1},handleAdditionalScopeChange:{type:Function,default:null},scope:{type:String,required:!0}},data:function(){return{accountPropertyLowerCase:this.accountProperty.toLocaleLowerCase(),initialScope:this.scope}},computed:{ariaLabel:function(){return t("settings","Change scope level of {accountProperty}",{accountProperty:this.accountPropertyLowerCase})},scopeIcon:function(){return _[this.scope].iconClass},federationScopes:function(){return Object.values(_)},supportedScopes:function(){return bn&&!k.includes(this.accountProperty)?[].concat(function(n){if(Array.isArray(n))return Cn(n)}(n=w[this.accountProperty])||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 Cn(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)?Cn(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.")}(),[E.FEDERATED,E.PUBLISHED]):w[this.accountProperty];var n}},methods:{changeScope:function(n){var t=this;return gn(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.$emit("update:scope",n),t.additional){e.next=6;break}return e.next=4,t.updatePrimaryScope(n);case 4:e.next=8;break;case 6:return e.next=8,t.updateAdditionalScope(n);case 8:case"end":return e.stop()}}),e)})))()},updatePrimaryScope:function(n){var e=this;return gn(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,H(b[e.accountProperty],n);case 3:o=a.sent,e.handleResponse({scope:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update federation scope of the primary {accountProperty}",{accountProperty:e.accountPropertyLowerCase}),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},updateAdditionalScope:function(n){var e=this;return gn(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,e.handleAdditionalScopeChange(e.additionalValue,n);case 3:o=a.sent,e.handleResponse({scope:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update federation scope of additional {accountProperty}",{accountProperty:e.accountPropertyLowerCase}),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},handleResponse:function(n){var t=n.scope,e=n.status,a=n.errorMessage,r=n.error;"ok"===e?this.initialScope=t:(this.$emit("update:scope",this.initialScope),(0,p.x2)(a),this.logger.error(a,r))}}},xn=a(18561),En={};En.styleTagTransform=en(),En.setAttributes=Q(),En.insert=K().bind(null,"head"),En.domAPI=Y(),En.insertStyleElement=nn(),V()(xn.Z,En),xn.Z&&xn.Z.locals&&xn.Z.locals;var wn=(0,on.Z)(yn,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("Actions",{class:{"federation-actions":!n.additional,"federation-actions--additional":n.additional},attrs:{"aria-label":n.ariaLabel,"default-icon":n.scopeIcon,disabled:n.disabled}},n._l(n.federationScopes,(function(t){return e("FederationControlAction",{key:t.name,attrs:{"active-scope":n.scope,"display-name":t.displayName,"handle-scope-change":n.changeScope,"icon-class":t.iconClass,"is-supported-scope":n.supportedScopes.includes(t.name),name:t.name,"tooltip-disabled":t.tooltipDisabled,tooltip:t.tooltip}})})),1)}),[],!1,null,"b51d8bee",null).exports,kn=a(1412),In=a.n(kn),_n=a(31209),Pn={name:"HeaderBar",components:{FederationControl:wn,Button:In(),Plus:_n.Z},props:{accountProperty:{type:String,required:!0,validator:function(n){return Object.values(g).includes(n)||Object.values(x).includes(n)||n===C.PROFILE_VISIBILITY}},isEditable:{type:Boolean,default:!0},isMultiValueSupported:{type:Boolean,default:!1},isValidSection:{type:Boolean,default:!1},labelFor:{type:String,default:""},scope:{type:String,default:null}},data:function(){return{localScope:this.scope}},computed:{isProfileProperty:function(){return this.accountProperty===g.PROFILE_ENABLED},isSettingProperty:function(){return Object.values(x).includes(this.accountProperty)}},methods:{onAddAdditional:function(){this.$emit("add-additional")},onScopeChange:function(n){this.$emit("update:scope",n)}}},Sn=a(75537),Bn={};Bn.styleTagTransform=en(),Bn.setAttributes=Q(),Bn.insert=K().bind(null,"head"),Bn.domAPI=Y(),Bn.insertStyleElement=nn(),V()(Sn.Z,Bn),Sn.Z&&Sn.Z.locals&&Sn.Z.locals;var Rn=(0,on.Z)(Pn,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("h3",{class:{"setting-property":n.isSettingProperty,"profile-property":n.isProfileProperty}},[e("label",{attrs:{for:n.labelFor}},[n._v("\n\t\t"+n._s(n.accountProperty)+"\n\t")]),n._v(" "),n.scope?[e("FederationControl",{staticClass:"federation-control",attrs:{"account-property":n.accountProperty,scope:n.localScope},on:{"update:scope":[function(t){n.localScope=t},n.onScopeChange]}})]:n._e(),n._v(" "),n.isEditable&&n.isMultiValueSupported?[e("Button",{attrs:{type:"tertiary",disabled:!n.isValidSection,"aria-label":n.t("settings","Add additional email")},on:{click:function(t){return t.stopPropagation(),t.preventDefault(),n.onAddAdditional.apply(null,arguments)}},scopedSlots:n._u([{key:"icon",fn:function(){return[e("Plus",{attrs:{size:20}})]},proxy:!0}],null,!1,32235154)},[n._v("\n\t\t\t"+n._s(n.t("settings","Add"))+"\n\t\t")])]:n._e()],2)}),[],!1,null,"19038f0c",null),On=Rn.exports,Dn=(0,c.loadState)("settings","personalInfoParameters",{}).displayNameMap.primaryDisplayName,Ln=(0,c.loadState)("settings","accountParameters",{}).displayNameChangeSupported,Nn={name:"DisplayNameSection",components:{DisplayName:sn,HeaderBar:On},data:function(){return{accountProperty:g.DISPLAYNAME,displayNameChangeSupported:Ln,primaryDisplayName:Dn}},computed:{isValidSection:function(){return U(this.primaryDisplayName.value)}}},Tn=a(26184),Zn={};Zn.styleTagTransform=en(),Zn.setAttributes=Q(),Zn.insert=K().bind(null,"head"),Zn.domAPI=Y(),Zn.insertStyleElement=nn(),V()(Tn.Z,Zn),Tn.Z&&Tn.Z.locals&&Tn.Z.locals;var Hn=(0,on.Z)(Nn,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("section",[e("HeaderBar",{attrs:{"account-property":n.accountProperty,"label-for":"displayname","is-editable":n.displayNameChangeSupported,"is-valid-section":n.isValidSection,scope:n.primaryDisplayName.scope},on:{"update:scope":function(t){return n.$set(n.primaryDisplayName,"scope",t)}}}),n._v(" "),n.displayNameChangeSupported?[e("DisplayName",{attrs:{"display-name":n.primaryDisplayName.value,scope:n.primaryDisplayName.scope},on:{"update:displayName":function(t){return n.$set(n.primaryDisplayName,"value",t)},"update:display-name":function(t){return n.$set(n.primaryDisplayName,"value",t)},"update:scope":function(t){return n.$set(n.primaryDisplayName,"scope",t)}}})]:e("span",[n._v("\n\t\t"+n._s(n.primaryDisplayName.value||n.t("settings","No full name set"))+"\n\t")])],2)}),[],!1,null,"b8a748f4",null).exports;function Un(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function $n(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){Un(i,a,r,o,s,"next",n)}function s(n){Un(i,a,r,o,s,"throw",n)}o(void 0)}))}}var Mn=function(){var n=$n(regeneratorRuntime.mark((function n(t){var e,a,r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e=(0,l.getCurrentUser)().uid,a=(0,O.generateOcsUrl)("cloud/users/{userId}",{userId:e}),n.next=4,L()();case 4:return n.next=6,R.default.put(a,{key:v.EMAIL,value:t});case 6:return r=n.sent,n.abrupt("return",r.data);case 8:case"end":return n.stop()}}),n)})));return function(t){return n.apply(this,arguments)}}(),Fn=function(){var n=$n(regeneratorRuntime.mark((function n(t){var e,a,r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e=(0,l.getCurrentUser)().uid,a=(0,O.generateOcsUrl)("cloud/users/{userId}",{userId:e}),n.next=4,L()();case 4:return n.next=6,R.default.put(a,{key:v.EMAIL_COLLECTION,value:t});case 6:return r=n.sent,n.abrupt("return",r.data);case 8:case"end":return n.stop()}}),n)})));return function(t){return n.apply(this,arguments)}}(),jn=function(){var n=$n(regeneratorRuntime.mark((function n(t){var e,a,r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e=(0,l.getCurrentUser)().uid,a=(0,O.generateOcsUrl)("cloud/users/{userId}",{userId:e}),n.next=4,L()();case 4:return n.next=6,R.default.put(a,{key:v.NOTIFICATION_EMAIL,value:t});case 6:return r=n.sent,n.abrupt("return",r.data);case 8:case"end":return n.stop()}}),n)})));return function(t){return n.apply(this,arguments)}}(),qn=function(){var n=$n(regeneratorRuntime.mark((function n(t){var e,a,r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e=(0,l.getCurrentUser)().uid,a=(0,O.generateOcsUrl)("cloud/users/{userId}/{collection}",{userId:e,collection:v.EMAIL_COLLECTION}),n.next=4,L()();case 4:return n.next=6,R.default.put(a,{key:t,value:""});case 6:return r=n.sent,n.abrupt("return",r.data);case 8:case"end":return n.stop()}}),n)})));return function(t){return n.apply(this,arguments)}}(),Gn=function(){var n=$n(regeneratorRuntime.mark((function n(t,e){var a,r,i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return a=(0,l.getCurrentUser)().uid,r=(0,O.generateOcsUrl)("cloud/users/{userId}/{collection}",{userId:a,collection:v.EMAIL_COLLECTION}),n.next=4,L()();case 4:return n.next=6,R.default.put(r,{key:t,value:e});case 6:return i=n.sent,n.abrupt("return",i.data);case 8:case"end":return n.stop()}}),n)})));return function(t,e){return n.apply(this,arguments)}}(),Vn=function(){var n=$n(regeneratorRuntime.mark((function n(t){var e,a,r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e=(0,l.getCurrentUser)().uid,a=(0,O.generateOcsUrl)("cloud/users/{userId}",{userId:e}),n.next=4,L()();case 4:return n.next=6,R.default.put(a,{key:"".concat(v.EMAIL).concat(I),value:t});case 6:return r=n.sent,n.abrupt("return",r.data);case 8:case"end":return n.stop()}}),n)})));return function(t){return n.apply(this,arguments)}}(),Wn=function(){var n=$n(regeneratorRuntime.mark((function n(t,e){var a,r,i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return a=(0,l.getCurrentUser)().uid,r=(0,O.generateOcsUrl)("cloud/users/{userId}/{collectionScope}",{userId:a,collectionScope:"".concat(v.EMAIL_COLLECTION).concat(I)}),n.next=4,L()();case 4:return n.next=6,R.default.put(r,{key:t,value:e});case 6:return i=n.sent,n.abrupt("return",i.data);case 8:case"end":return n.stop()}}),n)})));return function(t,e){return n.apply(this,arguments)}}();function Yn(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function zn(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){Yn(i,a,r,o,s,"next",n)}function s(n){Yn(i,a,r,o,s,"throw",n)}o(void 0)}))}}var Kn={name:"Email",components:{Actions:cn(),ActionButton:un(),FederationControl:wn},props:{email:{type:String,required:!0},index:{type:Number,default:0},primary:{type:Boolean,default:!1},scope:{type:String,required:!0},activeNotificationEmail:{type:String,default:""},localVerificationState:{type:Number,default:S.NOT_VERIFIED}},data:function(){return{accountProperty:g.EMAIL,initialEmail:this.email,localScope:this.scope,saveAdditionalEmailScope:Wn,showCheckmarkIcon:!1,showErrorIcon:!1}},computed:{deleteDisabled:function(){return this.primary?""===this.email||this.initialEmail!==this.email:""!==this.initialEmail&&this.initialEmail!==this.email},deleteEmailLabel:function(){return this.primary?t("settings","Remove primary email"):t("settings","Delete email")},setNotificationMailDisabled:function(){return!this.primary&&this.localVerificationState!==S.VERIFIED},setNotificationMailLabel:function(){return this.isNotificationEmail?t("settings","Unset as primary email"):this.primary||this.localVerificationState===S.VERIFIED?t("settings","Set as primary email"):t("settings","This address is not confirmed")},federationDisabled:function(){return!this.initialEmail},inputId:function(){return this.primary?"email":"email-".concat(this.index)},inputPlaceholder:function(){return this.primary?t("settings","Your email address"):t("settings","Additional email address {index}",{index:this.index+1})},isNotificationEmail:function(){return this.email&&this.email===this.activeNotificationEmail||this.primary&&""===this.activeNotificationEmail}},mounted:function(){var n=this;this.primary||""!==this.initialEmail||this.$nextTick((function(){var t;return null===(t=n.$refs.email)||void 0===t?void 0:t.focus()}))},methods:{onEmailChange:function(n){this.$emit("update:email",n.target.value),this.debounceEmailChange(n.target.value.trim())},debounceEmailChange:f()(function(){var n=zn(regeneratorRuntime.mark((function n(t){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!$(t)&&""!==t){n.next=14;break}if(!this.primary){n.next=6;break}return n.next=4,this.updatePrimaryEmail(t);case 4:case 10:n.next=14;break;case 6:if(!t){n.next=14;break}if(""!==this.initialEmail){n.next=12;break}return n.next=10,this.addAdditionalEmail(t);case 12:return n.next=14,this.updateAdditionalEmail(t);case 14:case"end":return n.stop()}}),n,this)})));return function(t){return n.apply(this,arguments)}}(),500),deleteEmail:function(){var n=this;return zn(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!n.primary){t.next=6;break}return n.$emit("update:email",""),t.next=4,n.updatePrimaryEmail("");case 4:t.next=8;break;case 6:return t.next=8,n.deleteAdditionalEmail();case 8:case"end":return t.stop()}}),t)})))()},updatePrimaryEmail:function(n){var e=this;return zn(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Mn(n);case 3:o=a.sent,e.handleResponse({email:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),""===n?e.handleResponse({errorMessage:t("settings","Unable to delete primary email address"),error:a.t0}):e.handleResponse({errorMessage:t("settings","Unable to update primary email address"),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},addAdditionalEmail:function(n){var e=this;return zn(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Fn(n);case 3:o=a.sent,e.handleResponse({email:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to add additional email address"),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},setNotificationMail:function(){var n=this;return zn(regeneratorRuntime.mark((function t(){var e,a,r,i;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,r=n.primary||n.isNotificationEmail?"":n.initialEmail,t.next=4,jn(r);case 4:i=t.sent,n.handleResponse({notificationEmail:r,status:null===(e=i.ocs)||void 0===e||null===(a=e.meta)||void 0===a?void 0:a.status}),t.next=11;break;case 8:t.prev=8,t.t0=t.catch(0),n.handleResponse({errorMessage:"Unable to choose this email for notifications",error:t.t0});case 11:case"end":return t.stop()}}),t,null,[[0,8]])})))()},updateAdditionalEmail:function(n){var e=this;return zn(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Gn(e.initialEmail,n);case 3:o=a.sent,e.handleResponse({email:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update additional email address"),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},deleteAdditionalEmail:function(){var n=this;return zn(regeneratorRuntime.mark((function e(){var a,r,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,qn(n.initialEmail);case 3:i=e.sent,n.handleDeleteAdditionalEmail(null===(a=i.ocs)||void 0===a||null===(r=a.meta)||void 0===r?void 0:r.status),e.next=10;break;case 7:e.prev=7,e.t0=e.catch(0),n.handleResponse({errorMessage:t("settings","Unable to delete additional email address"),error:e.t0});case 10:case"end":return e.stop()}}),e,null,[[0,7]])})))()},handleDeleteAdditionalEmail:function(n){"ok"===n?this.$emit("delete-additional-email"):this.handleResponse({errorMessage:t("settings","Unable to delete additional email address")})},handleResponse:function(n){var t=this,e=n.email,a=n.notificationEmail,r=n.status,i=n.errorMessage,o=n.error;"ok"===r?(e?this.initialEmail=e:void 0!==a&&this.$emit("update:notification-email",a),this.showCheckmarkIcon=!0,setTimeout((function(){t.showCheckmarkIcon=!1}),2e3)):((0,p.x2)(i),this.logger.error(i,o),this.showErrorIcon=!0,setTimeout((function(){t.showErrorIcon=!1}),2e3))},onScopeChange:function(n){this.$emit("update:scope",n)}}},Jn=Kn,Qn=a(26669),Xn={};Xn.styleTagTransform=en(),Xn.setAttributes=Q(),Xn.insert=K().bind(null,"head"),Xn.domAPI=Y(),Xn.insertStyleElement=nn(),V()(Qn.Z,Xn),Qn.Z&&Qn.Z.locals&&Qn.Z.locals;var nt=(0,on.Z)(Jn,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",[e("div",{staticClass:"email"},[e("input",{ref:"email",attrs:{id:n.inputId,type:"email",placeholder:n.inputPlaceholder,autocapitalize:"none",autocomplete:"on",autocorrect:"off"},domProps:{value:n.email},on:{input:n.onEmailChange}}),n._v(" "),e("div",{staticClass:"email__actions-container"},[e("transition",{attrs:{name:"fade"}},[n.showCheckmarkIcon?e("span",{staticClass:"icon-checkmark"}):n.showErrorIcon?e("span",{staticClass:"icon-error"}):n._e()]),n._v(" "),n.primary?n._e():[e("FederationControl",{attrs:{"account-property":n.accountProperty,additional:!0,"additional-value":n.email,disabled:n.federationDisabled,"handle-additional-scope-change":n.saveAdditionalEmailScope,scope:n.localScope},on:{"update:scope":[function(t){n.localScope=t},n.onScopeChange]}})],n._v(" "),e("Actions",{staticClass:"email__actions",attrs:{"aria-label":n.t("settings","Email options"),disabled:n.deleteDisabled,"force-menu":!0}},[e("ActionButton",{attrs:{"aria-label":n.deleteEmailLabel,"close-after-click":!0,disabled:n.deleteDisabled,icon:"icon-delete"},on:{click:function(t){return t.stopPropagation(),t.preventDefault(),n.deleteEmail.apply(null,arguments)}}},[n._v("\n\t\t\t\t\t"+n._s(n.deleteEmailLabel)+"\n\t\t\t\t")]),n._v(" "),n.primary&&n.isNotificationEmail?n._e():e("ActionButton",{attrs:{"aria-label":n.setNotificationMailLabel,"close-after-click":!0,disabled:n.setNotificationMailDisabled,icon:"icon-favorite"},on:{click:function(t){return t.stopPropagation(),t.preventDefault(),n.setNotificationMail.apply(null,arguments)}}},[n._v("\n\t\t\t\t\t"+n._s(n.setNotificationMailLabel)+"\n\t\t\t\t")])],1)],2)]),n._v(" "),n.isNotificationEmail?e("em",[n._v("\n\t\t"+n._s(n.t("settings","Primary email for password reset and notifications"))+"\n\t")]):n._e()])}),[],!1,null,"2c097054",null),tt=nt.exports;function et(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function at(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){et(i,a,r,o,s,"next",n)}function s(n){et(i,a,r,o,s,"throw",n)}o(void 0)}))}}var rt=(0,c.loadState)("settings","personalInfoParameters",{}).emailMap,it=rt.additionalEmails,ot=rt.primaryEmail,st=rt.notificationEmail,lt=(0,c.loadState)("settings","accountParameters",{}).displayNameChangeSupported,ct={name:"EmailSection",components:{HeaderBar:On,Email:tt},data:function(){return{accountProperty:g.EMAIL,additionalEmails:it,displayNameChangeSupported:lt,primaryEmail:ot,savePrimaryEmailScope:Vn,notificationEmail:st}},computed:{firstAdditionalEmail:function(){return this.additionalEmails.length?this.additionalEmails[0].value:null},isValidSection:function(){return $(this.primaryEmail.value)&&this.additionalEmails.map((function(n){return n.value})).every($)},primaryEmailValue:{get:function(){return this.primaryEmail.value},set:function(n){this.primaryEmail.value=n}}},methods:{onAddAdditionalEmail:function(){this.isValidSection&&this.additionalEmails.push({value:"",scope:P})},onDeleteAdditionalEmail:function(n){this.$delete(this.additionalEmails,n)},onUpdateEmail:function(){var n=this;return at(regeneratorRuntime.mark((function t(){var e;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(""!==n.primaryEmailValue||!n.firstAdditionalEmail){t.next=7;break}return e=n.firstAdditionalEmail,t.next=4,n.deleteFirstAdditionalEmail();case 4:return n.primaryEmailValue=e,t.next=7,n.updatePrimaryEmail();case 7:case"end":return t.stop()}}),t)})))()},onUpdateNotificationEmail:function(n){var t=this;return at(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t.notificationEmail=n;case 1:case"end":return e.stop()}}),e)})))()},updatePrimaryEmail:function(){var n=this;return at(regeneratorRuntime.mark((function e(){var a,r,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,Mn(n.primaryEmailValue);case 3:i=e.sent,n.handleResponse(null===(a=i.ocs)||void 0===a||null===(r=a.meta)||void 0===r?void 0:r.status),e.next=10;break;case 7:e.prev=7,e.t0=e.catch(0),n.handleResponse("error",t("settings","Unable to update primary email address"),e.t0);case 10:case"end":return e.stop()}}),e,null,[[0,7]])})))()},deleteFirstAdditionalEmail:function(){var n=this;return at(regeneratorRuntime.mark((function e(){var a,r,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,qn(n.firstAdditionalEmail);case 3:i=e.sent,n.handleDeleteFirstAdditionalEmail(null===(a=i.ocs)||void 0===a||null===(r=a.meta)||void 0===r?void 0:r.status),e.next=10;break;case 7:e.prev=7,e.t0=e.catch(0),n.handleResponse("error",t("settings","Unable to delete additional email address"),e.t0);case 10:case"end":return e.stop()}}),e,null,[[0,7]])})))()},handleDeleteFirstAdditionalEmail:function(n){"ok"===n?this.$delete(this.additionalEmails,0):this.handleResponse("error",t("settings","Unable to delete additional email address"),{})},handleResponse:function(n,t,e){"ok"!==n&&((0,p.x2)(t),this.logger.error(t,e))}}},dt=a(35610),ut={};ut.styleTagTransform=en(),ut.setAttributes=Q(),ut.insert=K().bind(null,"head"),ut.domAPI=Y(),ut.insertStyleElement=nn(),V()(dt.Z,ut),dt.Z&&dt.Z.locals&&dt.Z.locals;var pt=(0,on.Z)(ct,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("section",[e("HeaderBar",{attrs:{"account-property":n.accountProperty,"label-for":"email","handle-scope-change":n.savePrimaryEmailScope,"is-editable":!0,"is-multi-value-supported":!0,"is-valid-section":n.isValidSection,scope:n.primaryEmail.scope},on:{"update:scope":function(t){return n.$set(n.primaryEmail,"scope",t)},"add-additional":n.onAddAdditionalEmail}}),n._v(" "),n.displayNameChangeSupported?[e("Email",{attrs:{primary:!0,scope:n.primaryEmail.scope,email:n.primaryEmail.value,"active-notification-email":n.notificationEmail},on:{"update:scope":function(t){return n.$set(n.primaryEmail,"scope",t)},"update:email":[function(t){return n.$set(n.primaryEmail,"value",t)},n.onUpdateEmail],"update:activeNotificationEmail":function(t){n.notificationEmail=t},"update:active-notification-email":function(t){n.notificationEmail=t},"update:notification-email":n.onUpdateNotificationEmail}})]:e("span",[n._v("\n\t\t"+n._s(n.primaryEmail.value||n.t("settings","No email address set"))+"\n\t")]),n._v(" "),n.additionalEmails.length?[e("em",{staticClass:"additional-emails-label"},[n._v(n._s(n.t("settings","Additional emails")))]),n._v(" "),n._l(n.additionalEmails,(function(t,a){return e("Email",{key:a,attrs:{index:a,scope:t.scope,email:t.value,"local-verification-state":parseInt(t.locallyVerified,10),"active-notification-email":n.notificationEmail},on:{"update:scope":function(e){return n.$set(t,"scope",e)},"update:email":[function(e){return n.$set(t,"value",e)},n.onUpdateEmail],"update:activeNotificationEmail":function(t){n.notificationEmail=t},"update:active-notification-email":function(t){n.notificationEmail=t},"update:notification-email":n.onUpdateNotificationEmail,"delete-additional-email":function(t){return n.onDeleteAdditionalEmail(a)}}})}))]:n._e()],2)}),[],!1,null,"845b669e",null).exports;function At(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function mt(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){At(i,a,r,o,s,"next",n)}function s(n){At(i,a,r,o,s,"throw",n)}o(void 0)}))}}function ft(n,t){var e=Object.keys(n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(n);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable}))),e.push.apply(e,a)}return e}function ht(n){for(var t=1;t<arguments.length;t++){var e=null!=arguments[t]?arguments[t]:{};t%2?ft(Object(e),!0).forEach((function(t){vt(n,t,e[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(e)):ft(Object(e)).forEach((function(t){Object.defineProperty(n,t,Object.getOwnPropertyDescriptor(e,t))}))}return n}function vt(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}function gt(n){return function(n){if(Array.isArray(n))return Ct(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 Ct(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)?Ct(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 Ct(n,t){(null==t||t>n.length)&&(t=n.length);for(var e=0,a=new Array(t);e<t;e++)a[e]=n[e];return a}var bt={name:"Language",props:{commonLanguages:{type:Array,required:!0},otherLanguages:{type:Array,required:!0},language:{type:Object,required:!0}},data:function(){return{initialLanguage:this.language}},computed:{allLanguages:function(){return Object.freeze([].concat(gt(this.commonLanguages),gt(this.otherLanguages)).reduce((function(n,t){var e=t.code,a=t.name;return ht(ht({},n),{},vt({},e,a))}),{}))}},methods:{onLanguageChange:function(n){var t=this;return mt(regeneratorRuntime.mark((function e(){var a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a=t.constructLanguage(n.target.value),t.$emit("update:language",a),""===(r=a).code||""===r.name||void 0===r.name){e.next=5;break}return e.next=5,t.updateLanguage(a);case 5:case"end":return e.stop()}var r}),e)})))()},updateLanguage:function(n){var e=this;return mt(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Z(y.LANGUAGE,n.code);case 3:o=a.sent,e.handleResponse({language:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),e.reloadPage(),a.next=11;break;case 8:a.prev=8,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update language"),error:a.t0});case 11:case"end":return a.stop()}}),a,null,[[0,8]])})))()},constructLanguage:function(n){return{code:n,name:this.allLanguages[n]}},handleResponse:function(n){var t=n.language,e=n.status,a=n.errorMessage,r=n.error;"ok"===e?this.initialLanguage=t:((0,p.x2)(a),this.logger.error(a,r))},reloadPage:function(){location.reload()}}},yt=a(35595),xt={};xt.styleTagTransform=en(),xt.setAttributes=Q(),xt.insert=K().bind(null,"head"),xt.domAPI=Y(),xt.insertStyleElement=nn(),V()(yt.Z,xt),yt.Z&&yt.Z.locals&&yt.Z.locals;var Et=(0,on.Z)(bt,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"language"},[e("select",{attrs:{id:"language",placeholder:n.t("settings","Language")},on:{change:n.onLanguageChange}},[n._l(n.commonLanguages,(function(t){return e("option",{key:t.code,domProps:{selected:n.language.code===t.code,value:t.code}},[n._v("\n\t\t\t"+n._s(t.name)+"\n\t\t")])})),n._v(" "),e("option",{attrs:{disabled:""}},[n._v("\n\t\t\t──────────\n\t\t")]),n._v(" "),n._l(n.otherLanguages,(function(t){return e("option",{key:t.code,domProps:{selected:n.language.code===t.code,value:t.code}},[n._v("\n\t\t\t"+n._s(t.name)+"\n\t\t")])}))],2),n._v(" "),e("a",{attrs:{href:"https://www.transifex.com/nextcloud/nextcloud/",target:"_blank",rel:"noreferrer noopener"}},[e("em",[n._v(n._s(n.t("settings","Help translate")))])])])}),[],!1,null,"5396d706",null).exports,wt=(0,c.loadState)("settings","personalInfoParameters",{}).languageMap,kt=wt.activeLanguage,It=wt.commonLanguages,_t=wt.otherLanguages,Pt={name:"LanguageSection",components:{Language:Et,HeaderBar:On},data:function(){return{accountProperty:x.LANGUAGE,commonLanguages:It,otherLanguages:_t,language:kt}},computed:{isEditable:function(){return Boolean(this.language)}}},St=a(3569),Bt={};Bt.styleTagTransform=en(),Bt.setAttributes=Q(),Bt.insert=K().bind(null,"head"),Bt.domAPI=Y(),Bt.insertStyleElement=nn(),V()(St.Z,Bt),St.Z&&St.Z.locals&&St.Z.locals;var Rt=(0,on.Z)(Pt,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("section",[e("HeaderBar",{attrs:{"account-property":n.accountProperty,"label-for":"language"}}),n._v(" "),n.isEditable?[e("Language",{attrs:{"common-languages":n.commonLanguages,"other-languages":n.otherLanguages,language:n.language},on:{"update:language":function(t){n.language=t}}})]:e("span",[n._v("\n\t\t"+n._s(n.t("settings","No language set"))+"\n\t")])],2)}),[],!1,null,"16883898",null).exports,Ot={name:"EditProfileAnchorLink",components:{ChevronDownIcon:a(6016).Z},props:{profileEnabled:{type:Boolean,required:!0}},computed:{disabled:function(){return!this.profileEnabled}}},Dt=a(61434),Lt={};Lt.styleTagTransform=en(),Lt.setAttributes=Q(),Lt.insert=K().bind(null,"head"),Lt.domAPI=Y(),Lt.insertStyleElement=nn(),V()(Dt.Z,Lt),Dt.Z&&Dt.Z.locals&&Dt.Z.locals;var Nt=a(95758),Tt={};Tt.styleTagTransform=en(),Tt.setAttributes=Q(),Tt.insert=K().bind(null,"head"),Tt.domAPI=Y(),Tt.insertStyleElement=nn(),V()(Nt.Z,Tt),Nt.Z&&Nt.Z.locals&&Nt.Z.locals;var Zt=(0,on.Z)(Ot,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("a",n._g({class:{disabled:n.disabled},attrs:{href:"#profile-visibility"}},n.$listeners),[e("ChevronDownIcon",{staticClass:"anchor-icon",attrs:{decorative:"",title:"",size:22}}),n._v("\n\t"+n._s(n.t("settings","Edit your Profile visibility"))+"\n")],1)}),[],!1,null,"73817e9f",null).exports;function Ht(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function Ut(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){Ht(i,a,r,o,s,"next",n)}function s(n){Ht(i,a,r,o,s,"throw",n)}o(void 0)}))}}var $t={name:"ProfileCheckbox",props:{profileEnabled:{type:Boolean,required:!0}},data:function(){return{initialProfileEnabled:this.profileEnabled}},methods:{onEnableProfileChange:function(n){var t=this;return Ut(regeneratorRuntime.mark((function e(){var a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a=n.target.checked,t.$emit("update:profile-enabled",a),"boolean"!=typeof a){e.next=5;break}return e.next=5,t.updateEnableProfile(a);case 5:case"end":return e.stop()}}),e)})))()},updateEnableProfile:function(n){var e=this;return Ut(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Z(v.PROFILE_ENABLED,n);case 3:o=a.sent,e.handleResponse({isEnabled:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update profile enabled state"),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},handleResponse:function(n){var t=n.isEnabled,e=n.status,a=n.errorMessage,r=n.error;"ok"===e?(this.initialProfileEnabled=t,(0,A.emit)("settings:profile-enabled:updated",t)):((0,p.x2)(a),this.logger.error(a,r))}}},Mt=(0,on.Z)($t,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"checkbox-container"},[e("input",{staticClass:"checkbox",attrs:{id:"enable-profile",type:"checkbox"},domProps:{checked:n.profileEnabled},on:{change:n.onEnableProfileChange}}),n._v(" "),e("label",{attrs:{for:"enable-profile"}},[n._v("\n\t\t"+n._s(n.t("settings","Enable Profile"))+"\n\t")])])}),[],!1,null,"b6898860",null).exports,Ft=a(28017),jt={name:"ProfilePreviewCard",components:{Avatar:a.n(Ft)()},props:{displayName:{type:String,required:!0},organisation:{type:String,required:!0},profileEnabled:{type:Boolean,required:!0},userId:{type:String,required:!0}},computed:{disabled:function(){return!this.profileEnabled},profilePageLink:function(){return this.profileEnabled?(0,O.generateUrl)("/u/{userId}",{userId:(0,l.getCurrentUser)().uid}):null}}},qt=a(32756),Gt={};Gt.styleTagTransform=en(),Gt.setAttributes=Q(),Gt.insert=K().bind(null,"head"),Gt.domAPI=Y(),Gt.insertStyleElement=nn(),V()(qt.Z,Gt),qt.Z&&qt.Z.locals&&qt.Z.locals;var Vt=(0,on.Z)(jt,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("a",{staticClass:"preview-card",class:{disabled:n.disabled},attrs:{href:n.profilePageLink}},[e("Avatar",{staticClass:"preview-card__avatar",attrs:{user:n.userId,size:48,"show-user-status":!0,"show-user-status-compact":!1,"disable-menu":!0,"disable-tooltip":!0}}),n._v(" "),e("div",{staticClass:"preview-card__header"},[e("span",[n._v(n._s(n.displayName))])]),n._v(" "),e("div",{staticClass:"preview-card__footer"},[e("span",[n._v(n._s(n.organisation))])])],1)}),[],!1,null,"79bf7437",null).exports,Wt=(0,c.loadState)("settings","personalInfoParameters",{}),Yt=Wt.organisationMap.primaryOrganisation.value,zt=Wt.displayNameMap.primaryDisplayName.value,Kt=Wt.profileEnabled,Jt=Wt.userId,Qt={name:"ProfileSection",components:{EditProfileAnchorLink:Zt,HeaderBar:On,ProfileCheckbox:Mt,ProfilePreviewCard:Vt},data:function(){return{accountProperty:g.PROFILE_ENABLED,organisation:Yt,displayName:zt,profileEnabled:Kt,userId:Jt}},mounted:function(){(0,A.subscribe)("settings:display-name:updated",this.handleDisplayNameUpdate),(0,A.subscribe)("settings:organisation:updated",this.handleOrganisationUpdate)},beforeDestroy:function(){(0,A.unsubscribe)("settings:display-name:updated",this.handleDisplayNameUpdate),(0,A.unsubscribe)("settings:organisation:updated",this.handleOrganisationUpdate)},methods:{handleDisplayNameUpdate:function(n){this.displayName=n},handleOrganisationUpdate:function(n){this.organisation=n}}},Xt=Qt,ne=a(83566),te={};te.styleTagTransform=en(),te.setAttributes=Q(),te.insert=K().bind(null,"head"),te.domAPI=Y(),te.insertStyleElement=nn(),V()(ne.Z,te),ne.Z&&ne.Z.locals&&ne.Z.locals;var ee=(0,on.Z)(Xt,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("section",[e("HeaderBar",{attrs:{"account-property":n.accountProperty}}),n._v(" "),e("ProfileCheckbox",{attrs:{"profile-enabled":n.profileEnabled},on:{"update:profileEnabled":function(t){n.profileEnabled=t},"update:profile-enabled":function(t){n.profileEnabled=t}}}),n._v(" "),e("ProfilePreviewCard",{attrs:{organisation:n.organisation,"display-name":n.displayName,"profile-enabled":n.profileEnabled,"user-id":n.userId}}),n._v(" "),e("EditProfileAnchorLink",{attrs:{"profile-enabled":n.profileEnabled}})],1)}),[],!1,null,"252753e6",null).exports;function ae(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function re(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){ae(i,a,r,o,s,"next",n)}function s(n){ae(i,a,r,o,s,"throw",n)}o(void 0)}))}}var ie={name:"Organisation",props:{organisation:{type:String,required:!0},scope:{type:String,required:!0}},data:function(){return{initialOrganisation:this.organisation,localScope:this.scope,showCheckmarkIcon:!1,showErrorIcon:!1}},methods:{onOrganisationChange:function(n){this.$emit("update:organisation",n.target.value),this.debounceOrganisationChange(n.target.value.trim())},debounceOrganisationChange:f()(function(){var n=re(regeneratorRuntime.mark((function n(t){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.updatePrimaryOrganisation(t);case 2:case"end":return n.stop()}}),n,this)})));return function(t){return n.apply(this,arguments)}}(),500),updatePrimaryOrganisation:function(n){var e=this;return re(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Z(v.ORGANISATION,n);case 3:o=a.sent,e.handleResponse({organisation:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update organisation"),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},handleResponse:function(n){var t=this,e=n.organisation,a=n.status,r=n.errorMessage,i=n.error;"ok"===a?(this.initialOrganisation=e,(0,A.emit)("settings:organisation:updated",e),this.showCheckmarkIcon=!0,setTimeout((function(){t.showCheckmarkIcon=!1}),2e3)):((0,p.x2)(r),this.logger.error(r,i),this.showErrorIcon=!0,setTimeout((function(){t.showErrorIcon=!1}),2e3))},onScopeChange:function(n){this.$emit("update:scope",n)}}},oe=ie,se=a(25731),le={};le.styleTagTransform=en(),le.setAttributes=Q(),le.insert=K().bind(null,"head"),le.domAPI=Y(),le.insertStyleElement=nn(),V()(se.Z,le),se.Z&&se.Z.locals&&se.Z.locals;var ce=(0,on.Z)(oe,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"organisation"},[e("input",{attrs:{id:"organisation",type:"text",placeholder:n.t("settings","Your organisation"),autocapitalize:"none",autocomplete:"on",autocorrect:"off"},domProps:{value:n.organisation},on:{input:n.onOrganisationChange}}),n._v(" "),e("div",{staticClass:"organisation__actions-container"},[e("transition",{attrs:{name:"fade"}},[n.showCheckmarkIcon?e("span",{staticClass:"icon-checkmark"}):n.showErrorIcon?e("span",{staticClass:"icon-error"}):n._e()])],1)])}),[],!1,null,"591cd6b6",null).exports,de=(0,c.loadState)("settings","personalInfoParameters",{}).organisationMap.primaryOrganisation,ue={name:"OrganisationSection",components:{Organisation:ce,HeaderBar:On},data:function(){return{accountProperty:g.ORGANISATION,primaryOrganisation:de}}},pe=a(34458),Ae={};Ae.styleTagTransform=en(),Ae.setAttributes=Q(),Ae.insert=K().bind(null,"head"),Ae.domAPI=Y(),Ae.insertStyleElement=nn(),V()(pe.Z,Ae),pe.Z&&pe.Z.locals&&pe.Z.locals;var me=(0,on.Z)(ue,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("section",[e("HeaderBar",{attrs:{"account-property":n.accountProperty,"label-for":"organisation",scope:n.primaryOrganisation.scope},on:{"update:scope":function(t){return n.$set(n.primaryOrganisation,"scope",t)}}}),n._v(" "),e("Organisation",{attrs:{organisation:n.primaryOrganisation.value,scope:n.primaryOrganisation.scope},on:{"update:organisation":function(t){return n.$set(n.primaryOrganisation,"value",t)},"update:scope":function(t){return n.$set(n.primaryOrganisation,"scope",t)}}})],1)}),[],!1,null,"43146ff7",null).exports;function fe(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function he(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){fe(i,a,r,o,s,"next",n)}function s(n){fe(i,a,r,o,s,"throw",n)}o(void 0)}))}}var ve={name:"Role",props:{role:{type:String,required:!0},scope:{type:String,required:!0}},data:function(){return{initialRole:this.role,localScope:this.scope,showCheckmarkIcon:!1,showErrorIcon:!1}},methods:{onRoleChange:function(n){this.$emit("update:role",n.target.value),this.debounceRoleChange(n.target.value.trim())},debounceRoleChange:f()(function(){var n=he(regeneratorRuntime.mark((function n(t){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.updatePrimaryRole(t);case 2:case"end":return n.stop()}}),n,this)})));return function(t){return n.apply(this,arguments)}}(),500),updatePrimaryRole:function(n){var e=this;return he(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Z(v.ROLE,n);case 3:o=a.sent,e.handleResponse({role:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update role"),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},handleResponse:function(n){var t=this,e=n.role,a=n.status,r=n.errorMessage,i=n.error;"ok"===a?(this.initialRole=e,(0,A.emit)("settings:role:updated",e),this.showCheckmarkIcon=!0,setTimeout((function(){t.showCheckmarkIcon=!1}),2e3)):((0,p.x2)(r),this.logger.error(r,i),this.showErrorIcon=!0,setTimeout((function(){t.showErrorIcon=!1}),2e3))},onScopeChange:function(n){this.$emit("update:scope",n)}}},ge=ve,Ce=a(4161),be={};be.styleTagTransform=en(),be.setAttributes=Q(),be.insert=K().bind(null,"head"),be.domAPI=Y(),be.insertStyleElement=nn(),V()(Ce.Z,be),Ce.Z&&Ce.Z.locals&&Ce.Z.locals;var ye=(0,on.Z)(ge,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"role"},[e("input",{attrs:{id:"role",type:"text",placeholder:n.t("settings","Your role"),autocapitalize:"none",autocomplete:"on",autocorrect:"off"},domProps:{value:n.role},on:{input:n.onRoleChange}}),n._v(" "),e("div",{staticClass:"role__actions-container"},[e("transition",{attrs:{name:"fade"}},[n.showCheckmarkIcon?e("span",{staticClass:"icon-checkmark"}):n.showErrorIcon?e("span",{staticClass:"icon-error"}):n._e()])],1)])}),[],!1,null,"aac18396",null).exports,xe=(0,c.loadState)("settings","personalInfoParameters",{}).roleMap.primaryRole,Ee={name:"RoleSection",components:{Role:ye,HeaderBar:On},data:function(){return{accountProperty:g.ROLE,primaryRole:xe}}},we=a(70986),ke={};ke.styleTagTransform=en(),ke.setAttributes=Q(),ke.insert=K().bind(null,"head"),ke.domAPI=Y(),ke.insertStyleElement=nn(),V()(we.Z,ke),we.Z&&we.Z.locals&&we.Z.locals;var Ie=(0,on.Z)(Ee,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("section",[e("HeaderBar",{attrs:{"account-property":n.accountProperty,"label-for":"role",scope:n.primaryRole.scope},on:{"update:scope":function(t){return n.$set(n.primaryRole,"scope",t)}}}),n._v(" "),e("Role",{attrs:{role:n.primaryRole.value,scope:n.primaryRole.scope},on:{"update:role":function(t){return n.$set(n.primaryRole,"value",t)},"update:scope":function(t){return n.$set(n.primaryRole,"scope",t)}}})],1)}),[],!1,null,"f3d959c2",null).exports;function _e(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function Pe(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){_e(i,a,r,o,s,"next",n)}function s(n){_e(i,a,r,o,s,"throw",n)}o(void 0)}))}}var Se={name:"Headline",props:{headline:{type:String,required:!0},scope:{type:String,required:!0}},data:function(){return{initialHeadline:this.headline,localScope:this.scope,showCheckmarkIcon:!1,showErrorIcon:!1}},methods:{onHeadlineChange:function(n){this.$emit("update:headline",n.target.value),this.debounceHeadlineChange(n.target.value.trim())},debounceHeadlineChange:f()(function(){var n=Pe(regeneratorRuntime.mark((function n(t){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.updatePrimaryHeadline(t);case 2:case"end":return n.stop()}}),n,this)})));return function(t){return n.apply(this,arguments)}}(),500),updatePrimaryHeadline:function(n){var e=this;return Pe(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Z(v.HEADLINE,n);case 3:o=a.sent,e.handleResponse({headline:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update headline"),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},handleResponse:function(n){var t=this,e=n.headline,a=n.status,r=n.errorMessage,i=n.error;"ok"===a?(this.initialHeadline=e,(0,A.emit)("settings:headline:updated",e),this.showCheckmarkIcon=!0,setTimeout((function(){t.showCheckmarkIcon=!1}),2e3)):((0,p.x2)(r),this.logger.error(r,i),this.showErrorIcon=!0,setTimeout((function(){t.showErrorIcon=!1}),2e3))},onScopeChange:function(n){this.$emit("update:scope",n)}}},Be=Se,Re=a(93461),Oe={};Oe.styleTagTransform=en(),Oe.setAttributes=Q(),Oe.insert=K().bind(null,"head"),Oe.domAPI=Y(),Oe.insertStyleElement=nn(),V()(Re.Z,Oe),Re.Z&&Re.Z.locals&&Re.Z.locals;var De=(0,on.Z)(Be,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"headline"},[e("input",{attrs:{id:"headline",type:"text",placeholder:n.t("settings","Your headline"),autocapitalize:"none",autocomplete:"on",autocorrect:"off"},domProps:{value:n.headline},on:{input:n.onHeadlineChange}}),n._v(" "),e("div",{staticClass:"headline__actions-container"},[e("transition",{attrs:{name:"fade"}},[n.showCheckmarkIcon?e("span",{staticClass:"icon-checkmark"}):n.showErrorIcon?e("span",{staticClass:"icon-error"}):n._e()])],1)])}),[],!1,null,"64e0e0bd",null).exports,Le=(0,c.loadState)("settings","personalInfoParameters",{}).headlineMap.primaryHeadline,Ne={name:"HeadlineSection",components:{Headline:De,HeaderBar:On},data:function(){return{accountProperty:g.HEADLINE,primaryHeadline:Le}}},Te=a(6479),Ze={};Ze.styleTagTransform=en(),Ze.setAttributes=Q(),Ze.insert=K().bind(null,"head"),Ze.domAPI=Y(),Ze.insertStyleElement=nn(),V()(Te.Z,Ze),Te.Z&&Te.Z.locals&&Te.Z.locals;var He=(0,on.Z)(Ne,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("section",[e("HeaderBar",{attrs:{"account-property":n.accountProperty,"label-for":"headline",scope:n.primaryHeadline.scope},on:{"update:scope":function(t){return n.$set(n.primaryHeadline,"scope",t)}}}),n._v(" "),e("Headline",{attrs:{headline:n.primaryHeadline.value,scope:n.primaryHeadline.scope},on:{"update:headline":function(t){return n.$set(n.primaryHeadline,"value",t)},"update:scope":function(t){return n.$set(n.primaryHeadline,"scope",t)}}})],1)}),[],!1,null,"187bb5da",null).exports;function Ue(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function $e(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){Ue(i,a,r,o,s,"next",n)}function s(n){Ue(i,a,r,o,s,"throw",n)}o(void 0)}))}}var Me={name:"Biography",props:{biography:{type:String,required:!0},scope:{type:String,required:!0}},data:function(){return{initialBiography:this.biography,localScope:this.scope,showCheckmarkIcon:!1,showErrorIcon:!1}},methods:{onBiographyChange:function(n){this.$emit("update:biography",n.target.value),this.debounceBiographyChange(n.target.value.trim())},debounceBiographyChange:f()(function(){var n=$e(regeneratorRuntime.mark((function n(t){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.updatePrimaryBiography(t);case 2:case"end":return n.stop()}}),n,this)})));return function(t){return n.apply(this,arguments)}}(),500),updatePrimaryBiography:function(n){var e=this;return $e(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Z(v.BIOGRAPHY,n);case 3:o=a.sent,e.handleResponse({biography:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update biography"),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},handleResponse:function(n){var t=this,e=n.biography,a=n.status,r=n.errorMessage,i=n.error;"ok"===a?(this.initialBiography=e,(0,A.emit)("settings:biography:updated",e),this.showCheckmarkIcon=!0,setTimeout((function(){t.showCheckmarkIcon=!1}),2e3)):((0,p.x2)(r),this.logger.error(r,i),this.showErrorIcon=!0,setTimeout((function(){t.showErrorIcon=!1}),2e3))},onScopeChange:function(n){this.$emit("update:scope",n)}}},Fe=Me,je=a(3276),qe={};qe.styleTagTransform=en(),qe.setAttributes=Q(),qe.insert=K().bind(null,"head"),qe.domAPI=Y(),qe.insertStyleElement=nn(),V()(je.Z,qe),je.Z&&je.Z.locals&&je.Z.locals;var Ge=(0,on.Z)(Fe,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"biography"},[e("textarea",{attrs:{id:"biography",placeholder:n.t("settings","Your biography"),rows:"8",autocapitalize:"none",autocomplete:"off",autocorrect:"off"},domProps:{value:n.biography},on:{input:n.onBiographyChange}}),n._v(" "),e("div",{staticClass:"biography__actions-container"},[e("transition",{attrs:{name:"fade"}},[n.showCheckmarkIcon?e("span",{staticClass:"icon-checkmark"}):n.showErrorIcon?e("span",{staticClass:"icon-error"}):n._e()])],1)])}),[],!1,null,"0fbf56a9",null).exports,Ve=(0,c.loadState)("settings","personalInfoParameters",{}).biographyMap.primaryBiography,We={name:"BiographySection",components:{Biography:Ge,HeaderBar:On},data:function(){return{accountProperty:g.BIOGRAPHY,primaryBiography:Ve}}},Ye=a(51340),ze={};ze.styleTagTransform=en(),ze.setAttributes=Q(),ze.insert=K().bind(null,"head"),ze.domAPI=Y(),ze.insertStyleElement=nn(),V()(Ye.Z,ze),Ye.Z&&Ye.Z.locals&&Ye.Z.locals;var Ke=(0,on.Z)(We,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("section",[e("HeaderBar",{attrs:{"account-property":n.accountProperty,"label-for":"biography",scope:n.primaryBiography.scope},on:{"update:scope":function(t){return n.$set(n.primaryBiography,"scope",t)}}}),n._v(" "),e("Biography",{attrs:{biography:n.primaryBiography.value,scope:n.primaryBiography.scope},on:{"update:biography":function(t){return n.$set(n.primaryBiography,"value",t)},"update:scope":function(t){return n.$set(n.primaryBiography,"scope",t)}}})],1)}),[],!1,null,"cfa727da",null).exports,Je=a(7811),Qe=a.n(Je);function Xe(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}var na,ta=function(){var n,t=(n=regeneratorRuntime.mark((function n(t,e){var a,r,i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return a=(0,l.getCurrentUser)().uid,r=(0,O.generateOcsUrl)("/profile/{userId}",{userId:a}),n.next=4,L()();case 4:return n.next=6,R.default.put(r,{paramId:t,visibility:e});case 6:return i=n.sent,n.abrupt("return",i.data);case 8:case"end":return n.stop()}}),n)})),function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){Xe(i,a,r,o,s,"next",n)}function s(n){Xe(i,a,r,o,s,"throw",n)}o(void 0)}))});return function(n,e){return t.apply(this,arguments)}}();function ea(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}var aa=Object.freeze({SHOW:"show",SHOW_USERS_ONLY:"show_users_only",HIDE:"hide"}),ra=Object.freeze((ea(na={},aa.SHOW,{name:aa.SHOW,label:t("settings","Show to everyone")}),ea(na,aa.SHOW_USERS_ONLY,{name:aa.SHOW_USERS_ONLY,label:t("settings","Show to logged in users only")}),ea(na,aa.HIDE,{name:aa.HIDE,label:t("settings","Hide")}),na));function ia(n,t,e,a,r,i,o){try{var s=n[i](o),l=s.value}catch(n){return void e(n)}s.done?t(l):Promise.resolve(l).then(a,r)}function oa(n){return function(){var t=this,e=arguments;return new Promise((function(a,r){var i=n.apply(t,e);function o(n){ia(i,a,r,o,s,"next",n)}function s(n){ia(i,a,r,o,s,"throw",n)}o(void 0)}))}}var sa=(0,c.loadState)("settings","personalInfoParameters",!1).profileEnabled,la={name:"VisibilityDropdown",components:{Multiselect:Qe()},props:{paramId:{type:String,required:!0},displayId:{type:String,required:!0},visibility:{type:String,required:!0}},data:function(){return{initialVisibility:this.visibility,profileEnabled:sa}},computed:{disabled:function(){return!this.profileEnabled},inputId:function(){return"profile-visibility-".concat(this.paramId)},visibilityObject:function(){return ra[this.visibility]},visibilityOptions:function(){return Object.values(ra)}},mounted:function(){(0,A.subscribe)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate)},beforeDestroy:function(){(0,A.unsubscribe)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate)},methods:{onVisibilityChange:function(n){var t=this;return oa(regeneratorRuntime.mark((function e(){var a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(null===n){e.next=6;break}if(a=n.name,t.$emit("update:visibility",a),!U(a)){e.next=6;break}return e.next=6,t.updateVisibility(a);case 6:case"end":return e.stop()}}),e)})))()},updateVisibility:function(n){var e=this;return oa(regeneratorRuntime.mark((function a(){var r,i,o;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,ta(e.paramId,n);case 3:o=a.sent,e.handleResponse({visibility:n,status:null===(r=o.ocs)||void 0===r||null===(i=r.meta)||void 0===i?void 0:i.status}),a.next=10;break;case 7:a.prev=7,a.t0=a.catch(0),e.handleResponse({errorMessage:t("settings","Unable to update visibility of {displayId}",{displayId:e.displayId}),error:a.t0});case 10:case"end":return a.stop()}}),a,null,[[0,7]])})))()},handleResponse:function(n){var t=n.visibility,e=n.status,a=n.errorMessage,r=n.error;"ok"===e?this.initialVisibility=t:((0,p.x2)(a),this.logger.error(a,r))},handleProfileEnabledUpdate:function(n){this.profileEnabled=n}}},ca=la,da=a(93343),ua={};ua.styleTagTransform=en(),ua.setAttributes=Q(),ua.insert=K().bind(null,"head"),ua.domAPI=Y(),ua.insertStyleElement=nn(),V()(da.Z,ua),da.Z&&da.Z.locals&&da.Z.locals;var pa=(0,on.Z)(ca,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"visibility-container",class:{disabled:n.disabled}},[e("label",{attrs:{for:n.inputId}},[n._v("\n\t\t"+n._s(n.t("settings","{displayId}",{displayId:n.displayId}))+"\n\t")]),n._v(" "),e("Multiselect",{staticClass:"visibility-container__multiselect",attrs:{id:n.inputId,options:n.visibilityOptions,"track-by":"name",label:"label",value:n.visibilityObject},on:{change:n.onVisibilityChange}})],1)}),[],!1,null,"4643b0e2",null).exports;function Aa(n,t){(null==t||t>n.length)&&(t=n.length);for(var e=0,a=new Array(t);e<t;e++)a[e]=n[e];return a}var ma=(0,c.loadState)("settings","profileParameters",{}).profileConfig,fa=(0,c.loadState)("settings","personalInfoParameters",!1).profileEnabled,ha=function(n,t){return n.appId===t.appId||"core"!==n.appId&&"core"!==t.appId?n.displayId.localeCompare(t.displayId):"core"===n.appId?1:-1},va={name:"ProfileVisibilitySection",components:{HeaderBar:On,VisibilityDropdown:pa},data:function(){return{heading:C.PROFILE_VISIBILITY,profileEnabled:fa,visibilityParams:Object.entries(ma).map((function(n){var t,e,a=(e=2,function(n){if(Array.isArray(n))return n}(t=n)||function(n,t){var e=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=e){var a,r,i=[],o=!0,s=!1;try{for(e=e.call(n);!(o=(a=e.next()).done)&&(i.push(a.value),!t||i.length!==t);o=!0);}catch(n){s=!0,r=n}finally{try{o||null==e.return||e.return()}finally{if(s)throw r}}return i}}(t,e)||function(n,t){if(n){if("string"==typeof n)return Aa(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)?Aa(n,t):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),r=a[0],i=a[1];return{id:r,appId:i.appId,displayId:i.displayId,visibility:i.visibility}})).sort(ha),marginLeft:window.matchMedia("(min-width: 1600px)").matches?window.getComputedStyle(document.getElementById("personal-settings-avatar-container")).getPropertyValue("width").trim():"0px"}},computed:{disabled:function(){return!this.profileEnabled},rows:function(){return Math.ceil(this.visibilityParams.length/2)}},mounted:function(){var n=this;(0,A.subscribe)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate),window.onresize=function(){n.marginLeft=window.matchMedia("(min-width: 1600px)").matches?window.getComputedStyle(document.getElementById("personal-settings-avatar-container")).getPropertyValue("width").trim():"0px"}},beforeDestroy:function(){(0,A.unsubscribe)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate)},methods:{handleProfileEnabledUpdate:function(n){this.profileEnabled=n}}},ga=va,Ca=a(40958),ba={};ba.styleTagTransform=en(),ba.setAttributes=Q(),ba.insert=K().bind(null,"head"),ba.domAPI=Y(),ba.insertStyleElement=nn(),V()(Ca.Z,ba),Ca.Z&&Ca.Z.locals&&Ca.Z.locals;var ya=(0,on.Z)(ga,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("section",{style:{marginLeft:n.marginLeft},attrs:{id:"profile-visibility"}},[e("HeaderBar",{attrs:{"account-property":n.heading}}),n._v(" "),e("em",{class:{disabled:n.disabled}},[n._v("\n\t\t"+n._s(n.t("settings",'The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to "Show to everyone" and scope is set to "Private", "Private" is respected.'))+"\n\t")]),n._v(" "),e("div",{staticClass:"visibility-dropdowns",style:{gridTemplateRows:"repeat("+n.rows+", 44px)"}},n._l(n.visibilityParams,(function(t){return e("VisibilityDropdown",{key:t.id,attrs:{"param-id":t.id,"display-id":t.displayId,visibility:t.visibility},on:{"update:visibility":function(e){return n.$set(t,"visibility",e)}}})})),1)],1)}),[],!1,null,"16df62f8",null).exports;a.nc=btoa((0,l.getRequestToken)());var xa=(0,c.loadState)("settings","profileEnabledGlobally",!0);s.default.mixin({props:{logger:u},methods:{t:d.translate}});var Ea=s.default.extend(Hn),wa=s.default.extend(pt),ka=s.default.extend(Rt);if((new Ea).$mount("#vue-displayname-section"),(new wa).$mount("#vue-email-section"),(new ka).$mount("#vue-language-section"),xa){var Ia=s.default.extend(ee),_a=s.default.extend(me),Pa=s.default.extend(Ie),Sa=s.default.extend(He),Ba=s.default.extend(Ke),Ra=s.default.extend(ya);(new Ia).$mount("#vue-profile-section"),(new _a).$mount("#vue-organisation-section"),(new Pa).$mount("#vue-role-section"),(new Sa).$mount("#vue-headline-section"),(new Ba).$mount("#vue-biography-section"),(new Ra).$mount("#vue-profile-visibility-section")}},3276:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".biography[data-v-0fbf56a9]{display:grid;align-items:center}.biography textarea[data-v-0fbf56a9]{resize:vertical;grid-area:1/1;width:100%;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.biography textarea[data-v-0fbf56a9]:hover,.biography textarea[data-v-0fbf56a9]:focus,.biography textarea[data-v-0fbf56a9]:active{border-color:var(--color-primary-element) !important;outline:none !important}.biography .biography__actions-container[data-v-0fbf56a9]{grid-area:1/1;justify-self:flex-end;align-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px;margin-bottom:5px}.biography .biography__actions-container .icon-checkmark[data-v-0fbf56a9],.biography .biography__actions-container .icon-error[data-v-0fbf56a9]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-0fbf56a9],.fade-leave-to[data-v-0fbf56a9]{opacity:0}.fade-enter-active[data-v-0fbf56a9]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-0fbf56a9]{transition:opacity 300ms ease-out}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/BiographySection/Biography.vue"],names:[],mappings:"AAyHA,4BACC,YAAA,CACA,kBAAA,CAEA,qCACC,eAAA,CACA,aAAA,CACA,UAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAEA,kIAGC,oDAAA,CACA,uBAAA,CAIF,0DACC,aAAA,CACA,qBAAA,CACA,mBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CACA,iBAAA,CAEA,gJAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA",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.biography {\n\tdisplay: grid;\n\talign-items: center;\n\n\ttextarea {\n\t\tresize: vertical;\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\n\t\t&:hover,\n\t\t&:focus,\n\t\t&:active {\n\t\t\tborder-color: var(--color-primary-element) !important;\n\t\t\toutline: none !important;\n\t\t}\n\t}\n\n\t.biography__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\talign-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\t\tmargin-bottom: 5px;\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n"],sourceRoot:""}]),t.Z=o},51340:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"section[data-v-cfa727da]{padding:10px 10px}section[data-v-cfa727da] button:disabled{cursor:default}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/BiographySection/BiographySection.vue"],names:[],mappings:"AA6DA,yBACC,iBAAA,CAEA,yCACC,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\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},74539:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".displayname[data-v-3418897a]{display:grid;align-items:center}.displayname input[data-v-3418897a]{grid-area:1/1;width:100%;height:34px;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.displayname .displayname__actions-container[data-v-3418897a]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.displayname .displayname__actions-container .icon-checkmark[data-v-3418897a],.displayname .displayname__actions-container .icon-error[data-v-3418897a]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-3418897a],.fade-leave-to[data-v-3418897a]{opacity:0}.fade-enter-active[data-v-3418897a]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-3418897a]{transition:opacity 300ms ease-out}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayName.vue"],names:[],mappings:"AA8HA,8BACC,YAAA,CACA,kBAAA,CAEA,oCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAGD,8DACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,wJAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA",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.displayname {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\t}\n\n\t.displayname__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n"],sourceRoot:""}]),t.Z=o},26184:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"section[data-v-b8a748f4]{padding:10px 10px}section[data-v-b8a748f4] button:disabled{cursor:default}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayNameSection.vue"],names:[],mappings:"AA8EA,yBACC,iBAAA,CAEA,yCACC,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\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},26669:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".email[data-v-2c097054]{display:grid;align-items:center}.email input[data-v-2c097054]{grid-area:1/1;width:100%;height:34px;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.email .email__actions-container[data-v-2c097054]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.email .email__actions-container .email__actions[data-v-2c097054]{opacity:.4 !important}.email .email__actions-container .email__actions[data-v-2c097054]:hover,.email .email__actions-container .email__actions[data-v-2c097054]:focus,.email .email__actions-container .email__actions[data-v-2c097054]:active{opacity:.8 !important}.email .email__actions-container .email__actions[data-v-2c097054] button{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important}.email .email__actions-container .icon-checkmark[data-v-2c097054],.email .email__actions-container .icon-error[data-v-2c097054]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-2c097054],.fade-leave-to[data-v-2c097054]{opacity:0}.fade-enter-active[data-v-2c097054]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-2c097054]{transition:opacity 300ms ease-out}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/EmailSection/Email.vue"],names:[],mappings:"AAoWA,wBACC,YAAA,CACA,kBAAA,CAEA,8BACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAGD,kDACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,kEACC,qBAAA,CAEA,yNAGC,qBAAA,CAGD,yEACC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CAIF,gIAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.email {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\t}\n\n\t.email__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.email__actions {\n\t\t\topacity: 0.4 !important;\n\n\t\t\t&:hover,\n\t\t\t&:focus,\n\t\t\t&:active {\n\t\t\t\topacity: 0.8 !important;\n\t\t\t}\n\n\t\t\t&::v-deep button {\n\t\t\t\theight: 30px !important;\n\t\t\t\tmin-height: 30px !important;\n\t\t\t\twidth: 30px !important;\n\t\t\t\tmin-width: 30px !important;\n\t\t\t}\n\t\t}\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n"],sourceRoot:""}]),t.Z=o},35610:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"section[data-v-845b669e]{padding:10px 10px}section[data-v-845b669e] button:disabled{cursor:default}section .additional-emails-label[data-v-845b669e]{display:block;margin-top:16px}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue"],names:[],mappings:"AA+LA,yBACC,iBAAA,CAEA,yCACC,cAAA,CAGD,kDACC,aAAA,CACA,eAAA",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\n\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n\n\t.additional-emails-label {\n\t\tdisplay: block;\n\t\tmargin-top: 16px;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},93461:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".headline[data-v-64e0e0bd]{display:grid;align-items:center}.headline input[data-v-64e0e0bd]{grid-area:1/1;width:100%;height:34px;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.headline .headline__actions-container[data-v-64e0e0bd]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.headline .headline__actions-container .icon-checkmark[data-v-64e0e0bd],.headline .headline__actions-container .icon-error[data-v-64e0e0bd]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-64e0e0bd],.fade-leave-to[data-v-64e0e0bd]{opacity:0}.fade-enter-active[data-v-64e0e0bd]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-64e0e0bd]{transition:opacity 300ms ease-out}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/HeadlineSection/Headline.vue"],names:[],mappings:"AAyHA,2BACC,YAAA,CACA,kBAAA,CAEA,iCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAGD,wDACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,4IAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA",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.headline {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\t}\n\n\t.headline__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n"],sourceRoot:""}]),t.Z=o},6479:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"section[data-v-187bb5da]{padding:10px 10px}section[data-v-187bb5da] button:disabled{cursor:default}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/HeadlineSection/HeadlineSection.vue"],names:[],mappings:"AA6DA,yBACC,iBAAA,CAEA,yCACC,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\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},35595:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".language[data-v-5396d706]{display:grid}.language select[data-v-5396d706]{width:100%;height:34px;margin:3px 3px 3px 0;padding:6px 16px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background:var(--icon-triangle-s-000) no-repeat right 4px center;font-family:var(--font-face);appearance:none;cursor:pointer}.language a[data-v-5396d706]{color:var(--color-main-text);text-decoration:none;width:max-content}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue"],names:[],mappings:"AA+IA,2BACC,YAAA,CAEA,kCACC,UAAA,CACA,WAAA,CACA,oBAAA,CACA,gBAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,gEAAA,CACA,4BAAA,CACA,eAAA,CACA,cAAA,CAGD,6BACC,4BAAA,CACA,oBAAA,CACA,iBAAA",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.language {\n\tdisplay: grid;\n\n\tselect {\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 6px 16px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground: var(--icon-triangle-s-000) no-repeat right 4px center;\n\t\tfont-family: var(--font-face);\n\t\tappearance: none;\n\t\tcursor: pointer;\n\t}\n\n\ta {\n\t\tcolor: var(--color-main-text);\n\t\ttext-decoration: none;\n\t\twidth: max-content;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},3569:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"section[data-v-16883898]{padding:10px 10px}section[data-v-16883898] button:disabled{cursor:default}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue"],names:[],mappings:"AA2EA,yBACC,iBAAA,CAEA,yCACC,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\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},25731:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".organisation[data-v-591cd6b6]{display:grid;align-items:center}.organisation input[data-v-591cd6b6]{grid-area:1/1;width:100%;height:34px;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.organisation .organisation__actions-container[data-v-591cd6b6]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.organisation .organisation__actions-container .icon-checkmark[data-v-591cd6b6],.organisation .organisation__actions-container .icon-error[data-v-591cd6b6]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-591cd6b6],.fade-leave-to[data-v-591cd6b6]{opacity:0}.fade-enter-active[data-v-591cd6b6]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-591cd6b6]{transition:opacity 300ms ease-out}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/OrganisationSection/Organisation.vue"],names:[],mappings:"AAyHA,+BACC,YAAA,CACA,kBAAA,CAEA,qCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAGD,gEACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,4JAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA",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.organisation {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\t}\n\n\t.organisation__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n"],sourceRoot:""}]),t.Z=o},34458:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"section[data-v-43146ff7]{padding:10px 10px}section[data-v-43146ff7] button:disabled{cursor:default}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/OrganisationSection/OrganisationSection.vue"],names:[],mappings:"AA6DA,yBACC,iBAAA,CAEA,yCACC,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\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},61434:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"html{scroll-behavior:smooth}@media screen and (prefers-reduced-motion: reduce){html{scroll-behavior:auto}}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue"],names:[],mappings:"AA4DA,KACC,sBAAA,CAEA,mDAHD,KAIE,oBAAA,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\nhtml {\n\tscroll-behavior: smooth;\n\n\t@media screen and (prefers-reduced-motion: reduce) {\n\t\tscroll-behavior: auto;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},95758:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"a[data-v-73817e9f]{display:block;height:44px;width:290px;line-height:44px;padding:0 16px;margin:14px auto;border-radius:var(--border-radius-pill);opacity:.4;background-color:rgba(0,0,0,0)}a .anchor-icon[data-v-73817e9f]{display:inline-block;vertical-align:middle;margin-top:6px;margin-right:8px}a[data-v-73817e9f]:hover,a[data-v-73817e9f]:focus,a[data-v-73817e9f]:active{opacity:.8;background-color:rgba(127,127,127,.25)}a.disabled[data-v-73817e9f]{pointer-events:none}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue"],names:[],mappings:"AAsEA,mBACC,aAAA,CACA,WAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,gBAAA,CACA,uCAAA,CACA,UAAA,CACA,8BAAA,CAEA,gCACC,oBAAA,CACA,qBAAA,CACA,cAAA,CACA,gBAAA,CAGD,4EAGC,UAAA,CACA,sCAAA,CAGD,4BACC,mBAAA",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\na {\n\tdisplay: block;\n\theight: 44px;\n\twidth: 290px;\n\tline-height: 44px;\n\tpadding: 0 16px;\n\tmargin: 14px auto;\n\tborder-radius: var(--border-radius-pill);\n\topacity: 0.4;\n\tbackground-color: transparent;\n\n\t.anchor-icon {\n\t\tdisplay: inline-block;\n\t\tvertical-align: middle;\n\t\tmargin-top: 6px;\n\t\tmargin-right: 8px;\n\t}\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\topacity: 0.8;\n\t\tbackground-color: rgba(127, 127, 127, .25);\n\t}\n\n\t&.disabled {\n\t\tpointer-events: none;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},32756:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".preview-card[data-v-79bf7437]{display:flex;flex-direction:column;position:relative;width:290px;height:116px;margin:14px auto;border-radius:var(--border-radius-large);background-color:var(--color-main-background);font-weight:bold;box-shadow:0 2px 9px var(--color-box-shadow)}.preview-card[data-v-79bf7437]:hover,.preview-card[data-v-79bf7437]:focus,.preview-card[data-v-79bf7437]:active{box-shadow:0 2px 12px var(--color-box-shadow)}.preview-card[data-v-79bf7437]:focus-visible{outline:var(--color-main-text) solid 1px;outline-offset:3px}.preview-card.disabled[data-v-79bf7437]{filter:grayscale(1);opacity:.5;cursor:default;box-shadow:0 0 3px var(--color-box-shadow)}.preview-card.disabled *[data-v-79bf7437],.preview-card.disabled[data-v-79bf7437] *{cursor:default}.preview-card__avatar[data-v-79bf7437]{position:absolute !important;top:40px;left:18px;z-index:1}.preview-card__avatar[data-v-79bf7437]:not(.avatardiv--unknown){box-shadow:0 0 0 3px var(--color-main-background) !important}.preview-card__header[data-v-79bf7437],.preview-card__footer[data-v-79bf7437]{position:relative;width:auto}.preview-card__header span[data-v-79bf7437],.preview-card__footer span[data-v-79bf7437]{position:absolute;left:78px;overflow:hidden;text-overflow:ellipsis;word-break:break-all}@supports(-webkit-line-clamp: 2){.preview-card__header span[data-v-79bf7437],.preview-card__footer span[data-v-79bf7437]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.preview-card__header[data-v-79bf7437]{height:70px;border-radius:var(--border-radius-large) var(--border-radius-large) 0 0}.preview-card__header span[data-v-79bf7437]{bottom:0;color:var(--color-primary-text);font-size:18px;font-weight:bold;margin:0 4px 8px 0}.preview-card__footer[data-v-79bf7437]{height:46px}.preview-card__footer span[data-v-79bf7437]{top:0;color:var(--color-text-maxcontrast);font-size:14px;font-weight:normal;margin:4px 4px 0 0;line-height:1.3}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue"],names:[],mappings:"AA6FA,+BACC,YAAA,CACA,qBAAA,CACA,iBAAA,CACA,WAAA,CACA,YAAA,CACA,gBAAA,CACA,wCAAA,CACA,6CAAA,CACA,gBAAA,CACA,4CAAA,CAEA,gHAGC,6CAAA,CAGD,6CACC,wCAAA,CACA,kBAAA,CAGD,wCACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,0CAAA,CAEA,oFAEC,cAAA,CAIF,uCAEC,4BAAA,CACA,QAAA,CACA,SAAA,CACA,SAAA,CAEA,gEACC,4DAAA,CAIF,8EAEC,iBAAA,CACA,UAAA,CAEA,wFACC,iBAAA,CACA,SAAA,CACA,eAAA,CACA,sBAAA,CACA,oBAAA,CAEA,iCAPD,wFAQE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,uCACC,WAAA,CACA,uEAAA,CAEA,4CACC,QAAA,CACA,+BAAA,CACA,cAAA,CACA,gBAAA,CACA,kBAAA,CAIF,uCACC,WAAA,CAEA,4CACC,KAAA,CACA,mCAAA,CACA,cAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA",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.preview-card {\n\tdisplay: flex;\n\tflex-direction: column;\n\tposition: relative;\n\twidth: 290px;\n\theight: 116px;\n\tmargin: 14px auto;\n\tborder-radius: var(--border-radius-large);\n\tbackground-color: var(--color-main-background);\n\tfont-weight: bold;\n\tbox-shadow: 0 2px 9px var(--color-box-shadow);\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbox-shadow: 0 2px 12px var(--color-box-shadow);\n\t}\n\n\t&:focus-visible {\n\t\toutline: var(--color-main-text) solid 1px;\n\t\toutline-offset: 3px;\n\t}\n\n\t&.disabled {\n\t\tfilter: grayscale(1);\n\t\topacity: 0.5;\n\t\tcursor: default;\n\t\tbox-shadow: 0 0 3px var(--color-box-shadow);\n\n\t\t& *,\n\t\t&::v-deep * {\n\t\t\tcursor: default;\n\t\t}\n\t}\n\n\t&__avatar {\n\t\t// Override Avatar component position to fix positioning on rerender\n\t\tposition: absolute !important;\n\t\ttop: 40px;\n\t\tleft: 18px;\n\t\tz-index: 1;\n\n\t\t&:not(.avatardiv--unknown) {\n\t\t\tbox-shadow: 0 0 0 3px var(--color-main-background) !important;\n\t\t}\n\t}\n\n\t&__header,\n\t&__footer {\n\t\tposition: relative;\n\t\twidth: auto;\n\n\t\tspan {\n\t\t\tposition: absolute;\n\t\t\tleft: 78px;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\tword-break: break-all;\n\n\t\t\t@supports (-webkit-line-clamp: 2) {\n\t\t\t\tdisplay: -webkit-box;\n\t\t\t\t-webkit-line-clamp: 2;\n\t\t\t\t-webkit-box-orient: vertical;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__header {\n\t\theight: 70px;\n\t\tborder-radius: var(--border-radius-large) var(--border-radius-large) 0 0;\n\n\t\tspan {\n\t\t\tbottom: 0;\n\t\t\tcolor: var(--color-primary-text);\n\t\t\tfont-size: 18px;\n\t\t\tfont-weight: bold;\n\t\t\tmargin: 0 4px 8px 0;\n\t\t}\n\t}\n\n\t&__footer {\n\t\theight: 46px;\n\n\t\tspan {\n\t\t\ttop: 0;\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\tfont-size: 14px;\n\t\t\tfont-weight: normal;\n\t\t\tmargin: 4px 4px 0 0;\n\t\t\tline-height: 1.3;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},83566:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"section[data-v-252753e6]{padding:10px 10px}section[data-v-252753e6] button:disabled{cursor:default}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue"],names:[],mappings:"AAkGA,yBACC,iBAAA,CAEA,yCACC,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\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},40958:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"section[data-v-16df62f8]{padding:30px;max-width:100vw}section em[data-v-16df62f8]{display:block;margin:16px 0}section em.disabled[data-v-16df62f8]{filter:grayscale(1);opacity:.5;cursor:default;pointer-events:none}section em.disabled *[data-v-16df62f8],section em.disabled[data-v-16df62f8] *{cursor:default;pointer-events:none}section .visibility-dropdowns[data-v-16df62f8]{display:grid;gap:10px 40px}@media(min-width: 1200px){section[data-v-16df62f8]{width:940px}section .visibility-dropdowns[data-v-16df62f8]{grid-auto-flow:column}}@media(max-width: 1200px){section[data-v-16df62f8]{width:470px}}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue"],names:[],mappings:"AAyHA,yBACC,YAAA,CACA,eAAA,CAEA,4BACC,aAAA,CACA,aAAA,CAEA,qCACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,mBAAA,CAEA,8EAEC,cAAA,CACA,mBAAA,CAKH,+CACC,YAAA,CACA,aAAA,CAGD,0BA3BD,yBA4BE,WAAA,CAEA,+CACC,qBAAA,CAAA,CAIF,0BAnCD,yBAoCE,WAAA,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\nsection {\n\tpadding: 30px;\n\tmax-width: 100vw;\n\n\tem {\n\t\tdisplay: block;\n\t\tmargin: 16px 0;\n\n\t\t&.disabled {\n\t\t\tfilter: grayscale(1);\n\t\t\topacity: 0.5;\n\t\t\tcursor: default;\n\t\t\tpointer-events: none;\n\n\t\t\t& *,\n\t\t\t&::v-deep * {\n\t\t\t\tcursor: default;\n\t\t\t\tpointer-events: none;\n\t\t\t}\n\t\t}\n\t}\n\n\t.visibility-dropdowns {\n\t\tdisplay: grid;\n\t\tgap: 10px 40px;\n\t}\n\n\t@media (min-width: 1200px) {\n\t\twidth: 940px;\n\n\t\t.visibility-dropdowns {\n\t\t\tgrid-auto-flow: column;\n\t\t}\n\t}\n\n\t@media (max-width: 1200px) {\n\t\twidth: 470px;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},93343:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".visibility-container[data-v-4643b0e2]{display:flex;width:max-content}.visibility-container.disabled[data-v-4643b0e2]{filter:grayscale(1);opacity:.5;cursor:default;pointer-events:none}.visibility-container.disabled *[data-v-4643b0e2],.visibility-container.disabled[data-v-4643b0e2] *{cursor:default;pointer-events:none}.visibility-container label[data-v-4643b0e2]{color:var(--color-text-lighter);width:150px;line-height:50px}.visibility-container__multiselect[data-v-4643b0e2]{width:260px;max-width:40vw}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue"],names:[],mappings:"AAwJA,uCACC,YAAA,CACA,iBAAA,CAEA,gDACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,mBAAA,CAEA,oGAEC,cAAA,CACA,mBAAA,CAIF,6CACC,+BAAA,CACA,WAAA,CACA,gBAAA,CAGD,oDACC,WAAA,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.visibility-container {\n\tdisplay: flex;\n\twidth: max-content;\n\n\t&.disabled {\n\t\tfilter: grayscale(1);\n\t\topacity: 0.5;\n\t\tcursor: default;\n\t\tpointer-events: none;\n\n\t\t& *,\n\t\t&::v-deep * {\n\t\t\tcursor: default;\n\t\t\tpointer-events: none;\n\t\t}\n\t}\n\n\tlabel {\n\t\tcolor: var(--color-text-lighter);\n\t\twidth: 150px;\n\t\tline-height: 50px;\n\t}\n\n\t&__multiselect {\n\t\twidth: 260px;\n\t\tmax-width: 40vw;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},4161:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".role[data-v-aac18396]{display:grid;align-items:center}.role input[data-v-aac18396]{grid-area:1/1;width:100%;height:34px;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.role .role__actions-container[data-v-aac18396]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.role .role__actions-container .icon-checkmark[data-v-aac18396],.role .role__actions-container .icon-error[data-v-aac18396]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-aac18396],.fade-leave-to[data-v-aac18396]{opacity:0}.fade-enter-active[data-v-aac18396]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-aac18396]{transition:opacity 300ms ease-out}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/RoleSection/Role.vue"],names:[],mappings:"AAyHA,uBACC,YAAA,CACA,kBAAA,CAEA,6BACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAGD,gDACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,4HAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA",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.role {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\t}\n\n\t.role__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n"],sourceRoot:""}]),t.Z=o},70986:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"section[data-v-f3d959c2]{padding:10px 10px}section[data-v-f3d959c2] button:disabled{cursor:default}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/RoleSection/RoleSection.vue"],names:[],mappings:"AA6DA,yBACC,iBAAA,CAEA,yCACC,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\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},18561:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".federation-actions[data-v-b51d8bee],.federation-actions--additional[data-v-b51d8bee]{opacity:.4 !important}.federation-actions[data-v-b51d8bee]:hover,.federation-actions[data-v-b51d8bee]:focus,.federation-actions[data-v-b51d8bee]:active,.federation-actions--additional[data-v-b51d8bee]:hover,.federation-actions--additional[data-v-b51d8bee]:focus,.federation-actions--additional[data-v-b51d8bee]:active{opacity:.8 !important}.federation-actions--additional[data-v-b51d8bee] button{padding-bottom:7px;height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/shared/FederationControl.vue"],names:[],mappings:"AAsLA,sFAEC,qBAAA,CAEA,wSAGC,qBAAA,CAKD,wDAEC,kBAAA,CACA,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA",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.federation-actions,\n.federation-actions--additional {\n\topacity: 0.4 !important;\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\topacity: 0.8 !important;\n\t}\n}\n\n.federation-actions--additional {\n\t&::v-deep button {\n\t\t// TODO remove this hack\n\t\tpadding-bottom: 7px;\n\t\theight: 30px !important;\n\t\tmin-height: 30px !important;\n\t\twidth: 30px !important;\n\t\tmin-width: 30px !important;\n\t}\n}\n"],sourceRoot:""}]),t.Z=o},12461:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,".federation-actions__btn[data-v-d2e8b360] p{width:150px !important;padding:8px 0 !important;color:var(--color-main-text) !important;font-size:12.8px !important;line-height:1.5em !important}.federation-actions__btn--active[data-v-d2e8b360]{background-color:var(--color-primary-light) !important;box-shadow:inset 2px 0 var(--color-primary) !important}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue"],names:[],mappings:"AA0FC,4CACC,sBAAA,CACA,wBAAA,CACA,uCAAA,CACA,2BAAA,CACA,4BAAA,CAIF,kDACC,sDAAA,CACA,sDAAA",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.federation-actions__btn {\n\t&::v-deep p {\n\t\twidth: 150px !important;\n\t\tpadding: 8px 0 !important;\n\t\tcolor: var(--color-main-text) !important;\n\t\tfont-size: 12.8px !important;\n\t\tline-height: 1.5em !important;\n\t}\n}\n\n.federation-actions__btn--active {\n\tbackground-color: var(--color-primary-light) !important;\n\tbox-shadow: inset 2px 0 var(--color-primary) !important;\n}\n"],sourceRoot:""}]),t.Z=o},75537:function(n,t,e){var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([n.id,"h3[data-v-19038f0c]{display:inline-flex;width:100%;margin:12px 0 0 0;font-size:16px;color:var(--color-text-light)}h3.profile-property[data-v-19038f0c]{height:38px}h3.setting-property[data-v-19038f0c]{height:32px}h3 label[data-v-19038f0c]{cursor:pointer}.federation-control[data-v-19038f0c]{margin:-12px 0 0 8px}.button-vue[data-v-19038f0c]{margin:-6px 0 0 auto !important}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue"],names:[],mappings:"AA0HA,oBACC,mBAAA,CACA,UAAA,CACA,iBAAA,CACA,cAAA,CACA,6BAAA,CAEA,qCACC,WAAA,CAGD,qCACC,WAAA,CAGD,0BACC,cAAA,CAIF,qCACC,oBAAA,CAGD,6BACC,+BAAA",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\nh3 {\n\tdisplay: inline-flex;\n\twidth: 100%;\n\tmargin: 12px 0 0 0;\n\tfont-size: 16px;\n\tcolor: var(--color-text-light);\n\n\t&.profile-property {\n\t\theight: 38px;\n\t}\n\n\t&.setting-property {\n\t\theight: 32px;\n\t}\n\n\tlabel {\n\t\tcursor: pointer;\n\t}\n}\n\n.federation-control {\n\tmargin: -12px 0 0 8px;\n}\n\n.button-vue {\n\tmargin: -6px 0 0 auto !important;\n}\n"],sourceRoot:""}]),t.Z=o}},a={};function r(n){var t=a[n];if(void 0!==t)return t.exports;var i=a[n]={id:n,loaded:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.loaded=!0,i.exports}r.m=e,r.amdD=function(){throw new Error("define cannot be used indirect")},r.amdO={},n=[],r.O=function(t,e,a,i){if(!e){var o=1/0;for(d=0;d<n.length;d++){e=n[d][0],a=n[d][1],i=n[d][2];for(var s=!0,l=0;l<e.length;l++)(!1&i||o>=i)&&Object.keys(r.O).every((function(n){return r.O[n](e[l])}))?e.splice(l--,1):(s=!1,i<o&&(o=i));if(s){n.splice(d--,1);var c=a();void 0!==c&&(t=c)}}return t}i=i||0;for(var d=n.length;d>0&&n[d-1][2]>i;d--)n[d]=n[d-1];n[d]=[e,a,i]},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=4418,function(){r.b=document.baseURI||self.location.href;var n={4418:0};r.O.j=function(t){return 0===n[t]};var t=function(t,e){var a,i,o=e[0],s=e[1],l=e[2],c=0;if(o.some((function(t){return 0!==n[t]}))){for(a in s)r.o(s,a)&&(r.m[a]=s[a]);if(l)var d=l(r)}for(t&&t(e);c<o.length;c++)i=o[c],r.o(n,i)&&n[i]&&n[i][0](),n[i]=0;return r.O(d)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(t.bind(null,0)),e.push=t.bind(null,e.push.bind(e))}(),r.nc=void 0;var i=r.O(void 0,[7874],(function(){return r(95979)}));i=r.O(i)}();
+//# sourceMappingURL=settings-vue-settings-personal-info.js.map?v=f43189b5ce919b48b8cd \ No newline at end of file
diff --git a/dist/settings-vue-settings-personal-info.js.map b/dist/settings-vue-settings-personal-info.js.map
index 3c3b54a3a08..31e68daf146 100644
--- a/dist/settings-vue-settings-personal-info.js.map
+++ b/dist/settings-vue-settings-personal-info.js.map
@@ -1 +1 @@
-{"version":3,"file":"settings-vue-settings-personal-info.js?v=936693f650f47e49541a","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/settings/src/logger.js","webpack:///nextcloud/apps/settings/src/constants/AccountPropertyConstants.js","webpack:///nextcloud/apps/settings/src/service/PersonalInfo/PersonalInfoService.js","webpack:///nextcloud/apps/settings/src/utils/validate.js","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayName.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayName.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayName.vue?d91e","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayName.vue?aebc","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayName.vue?vue&type=template&id=3418897a&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue?ca95","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue?90b5","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue?vue&type=template&id=d2e8b360&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControl.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControl.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/FederationControl.vue?6304","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/FederationControl.vue?e342","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControl.vue?vue&type=template&id=b51d8bee&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue?6e55","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue?feed","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue?vue&type=template&id=19038f0c&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayNameSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayNameSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayNameSection.vue?f577","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayNameSection.vue?f21f","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayNameSection.vue?vue&type=template&id=b8a748f4&scoped=true&","webpack:///nextcloud/apps/settings/src/service/PersonalInfo/EmailService.js","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/EmailSection/Email.vue?c98f","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/EmailSection/Email.vue?bd2c","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue?vue&type=template&id=2c097054&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue?ff48","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue?1258","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue?vue&type=template&id=845b669e&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue?1e5a","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue?6358","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue?vue&type=template&id=5396d706&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue?47a6","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue?a350","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue?vue&type=template&id=16883898&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?a0a7","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?8473","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?7d4b","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?vue&type=template&id=73817e9f&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileCheckbox.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileCheckbox.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileCheckbox.vue?7612","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileCheckbox.vue?vue&type=template&id=b6898860&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue?9ff5","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue?240c","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue?vue&type=template&id=79bf7437&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue?6fa5","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue?c85f","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue?vue&type=template&id=252753e6&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/OrganisationSection/Organisation.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/OrganisationSection/Organisation.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/OrganisationSection/Organisation.vue?e2cd","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/OrganisationSection/Organisation.vue?29db","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/OrganisationSection/Organisation.vue?vue&type=template&id=591cd6b6&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/OrganisationSection/OrganisationSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/OrganisationSection/OrganisationSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/OrganisationSection/OrganisationSection.vue?7527","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/OrganisationSection/OrganisationSection.vue?647a","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/OrganisationSection/OrganisationSection.vue?vue&type=template&id=43146ff7&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/RoleSection/Role.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/RoleSection/Role.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/RoleSection/Role.vue?ce58","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/RoleSection/Role.vue?ec2b","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/RoleSection/Role.vue?vue&type=template&id=aac18396&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/RoleSection/RoleSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/RoleSection/RoleSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/RoleSection/RoleSection.vue?5af0","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/RoleSection/RoleSection.vue?dc70","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/RoleSection/RoleSection.vue?vue&type=template&id=f3d959c2&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/HeadlineSection/Headline.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/HeadlineSection/Headline.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/HeadlineSection/Headline.vue?1cf8","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/HeadlineSection/Headline.vue?f7d1","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/HeadlineSection/Headline.vue?vue&type=template&id=64e0e0bd&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/HeadlineSection/HeadlineSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/HeadlineSection/HeadlineSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/HeadlineSection/HeadlineSection.vue?d7b4","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/HeadlineSection/HeadlineSection.vue?5bd2","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/HeadlineSection/HeadlineSection.vue?vue&type=template&id=187bb5da&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/BiographySection/Biography.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/BiographySection/Biography.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/BiographySection/Biography.vue?8960","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/BiographySection/Biography.vue?57fe","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/BiographySection/Biography.vue?vue&type=template&id=0fbf56a9&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/BiographySection/BiographySection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/BiographySection/BiographySection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/BiographySection/BiographySection.vue?a1f3","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/BiographySection/BiographySection.vue?e305","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/BiographySection/BiographySection.vue?vue&type=template&id=cfa727da&scoped=true&","webpack:///nextcloud/apps/settings/src/service/ProfileService.js","webpack:///nextcloud/apps/settings/src/constants/ProfileConstants.js","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue?6b1e","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue?c222","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue?vue&type=template&id=4643b0e2&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue?d5ab","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue?7729","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue?vue&type=template&id=16df62f8&scoped=true&","webpack:///nextcloud/apps/settings/src/main-personal-info.js","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/BiographySection/Biography.vue?vue&type=style&index=0&id=0fbf56a9&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/BiographySection/BiographySection.vue?vue&type=style&index=0&id=cfa727da&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayName.vue?vue&type=style&index=0&id=3418897a&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayNameSection.vue?vue&type=style&index=0&id=b8a748f4&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue?vue&type=style&index=0&id=2c097054&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue?vue&type=style&index=0&id=845b669e&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/HeadlineSection/Headline.vue?vue&type=style&index=0&id=64e0e0bd&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/HeadlineSection/HeadlineSection.vue?vue&type=style&index=0&id=187bb5da&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue?vue&type=style&index=0&id=5396d706&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue?vue&type=style&index=0&id=16883898&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/OrganisationSection/Organisation.vue?vue&type=style&index=0&id=591cd6b6&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/OrganisationSection/OrganisationSection.vue?vue&type=style&index=0&id=43146ff7&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?vue&type=style&index=0&lang=scss&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?vue&type=style&index=1&id=73817e9f&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue?vue&type=style&index=0&id=79bf7437&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue?vue&type=style&index=0&id=252753e6&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue?vue&type=style&index=0&id=16df62f8&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue?vue&type=style&index=0&id=4643b0e2&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/RoleSection/Role.vue?vue&type=style&index=0&id=aac18396&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/RoleSection/RoleSection.vue?vue&type=style&index=0&id=f3d959c2&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControl.vue?vue&type=style&index=0&id=b51d8bee&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue?vue&type=style&index=0&id=d2e8b360&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue?vue&type=style&index=0&id=19038f0c&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 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('settings')\n\t.detectUser()\n\t.build()\n","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\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 */\n\n/*\n * SYNC to be kept in sync with `lib/public/Accounts/IAccountManager.php`\n */\n\nimport { translate as t } from '@nextcloud/l10n'\n\n/** Enum of account properties */\nexport const ACCOUNT_PROPERTY_ENUM = Object.freeze({\n\tADDRESS: 'address',\n\tAVATAR: 'avatar',\n\tBIOGRAPHY: 'biography',\n\tDISPLAYNAME: 'displayname',\n\tEMAIL_COLLECTION: 'additional_mail',\n\tEMAIL: 'email',\n\tHEADLINE: 'headline',\n\tNOTIFICATION_EMAIL: 'notify_email',\n\tORGANISATION: 'organisation',\n\tPHONE: 'phone',\n\tPROFILE_ENABLED: 'profile_enabled',\n\tROLE: 'role',\n\tTWITTER: 'twitter',\n\tWEBSITE: 'website',\n})\n\n/** Enum of account properties to human readable account property names */\nexport const ACCOUNT_PROPERTY_READABLE_ENUM = Object.freeze({\n\tADDRESS: t('settings', 'Address'),\n\tAVATAR: t('settings', 'Avatar'),\n\tBIOGRAPHY: t('settings', 'About'),\n\tDISPLAYNAME: t('settings', 'Full name'),\n\tEMAIL_COLLECTION: t('settings', 'Additional email'),\n\tEMAIL: t('settings', 'Email'),\n\tHEADLINE: t('settings', 'Headline'),\n\tORGANISATION: t('settings', 'Organisation'),\n\tPHONE: t('settings', 'Phone number'),\n\tPROFILE_ENABLED: t('settings', 'Profile'),\n\tROLE: t('settings', 'Role'),\n\tTWITTER: t('settings', 'Twitter'),\n\tWEBSITE: t('settings', 'Website'),\n})\n\n/** Enum of profile specific sections to human readable names */\nexport const PROFILE_READABLE_ENUM = Object.freeze({\n\tPROFILE_VISIBILITY: t('settings', 'Profile visibility'),\n})\n\n/** Enum of readable account properties to account property keys used by the server */\nexport const PROPERTY_READABLE_KEYS_ENUM = Object.freeze({\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ADDRESS]: ACCOUNT_PROPERTY_ENUM.ADDRESS,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.AVATAR]: ACCOUNT_PROPERTY_ENUM.AVATAR,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY]: ACCOUNT_PROPERTY_ENUM.BIOGRAPHY,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.DISPLAYNAME]: ACCOUNT_PROPERTY_ENUM.DISPLAYNAME,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL_COLLECTION]: ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL]: ACCOUNT_PROPERTY_ENUM.EMAIL,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE]: ACCOUNT_PROPERTY_ENUM.HEADLINE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION]: ACCOUNT_PROPERTY_ENUM.ORGANISATION,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PHONE]: ACCOUNT_PROPERTY_ENUM.PHONE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED]: ACCOUNT_PROPERTY_ENUM.PROFILE_ENABLED,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ROLE]: ACCOUNT_PROPERTY_ENUM.ROLE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.TWITTER]: ACCOUNT_PROPERTY_ENUM.TWITTER,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.WEBSITE]: ACCOUNT_PROPERTY_ENUM.WEBSITE,\n})\n\n/**\n * Enum of account setting properties\n *\n * Account setting properties unlike account properties do not support scopes*\n */\nexport const ACCOUNT_SETTING_PROPERTY_ENUM = Object.freeze({\n\tLANGUAGE: 'language',\n})\n\n/** Enum of account setting properties to human readable setting properties */\nexport const ACCOUNT_SETTING_PROPERTY_READABLE_ENUM = Object.freeze({\n\tLANGUAGE: t('settings', 'Language'),\n})\n\n/** Enum of scopes */\nexport const SCOPE_ENUM = Object.freeze({\n\tPRIVATE: 'v2-private',\n\tLOCAL: 'v2-local',\n\tFEDERATED: 'v2-federated',\n\tPUBLISHED: 'v2-published',\n})\n\n/** Enum of readable account properties to supported scopes */\nexport const PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM = Object.freeze({\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ADDRESS]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.AVATAR]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.DISPLAYNAME]: [SCOPE_ENUM.LOCAL],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL_COLLECTION]: [SCOPE_ENUM.LOCAL],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL]: [SCOPE_ENUM.LOCAL],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PHONE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ROLE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.TWITTER]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.WEBSITE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n})\n\n/** List of readable account properties which aren't published to the lookup server */\nexport const UNPUBLISHED_READABLE_PROPERTIES = Object.freeze([\n\tACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY,\n\tACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE,\n\tACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION,\n\tACCOUNT_PROPERTY_READABLE_ENUM.ROLE,\n])\n\n/** Scope suffix */\nexport const SCOPE_SUFFIX = 'Scope'\n\n/**\n * Enum of scope names to properties\n *\n * Used for federation control*\n */\nexport const SCOPE_PROPERTY_ENUM = Object.freeze({\n\t[SCOPE_ENUM.PRIVATE]: {\n\t\tname: SCOPE_ENUM.PRIVATE,\n\t\tdisplayName: t('settings', 'Private'),\n\t\ttooltip: t('settings', 'Only visible to people matched via phone number integration through Talk on mobile'),\n\t\ttooltipDisabled: t('settings', 'Not available as this property is required for core functionality including file sharing and calendar invitations'),\n\t\ticonClass: 'icon-phone',\n\t},\n\t[SCOPE_ENUM.LOCAL]: {\n\t\tname: SCOPE_ENUM.LOCAL,\n\t\tdisplayName: t('settings', 'Local'),\n\t\ttooltip: t('settings', 'Only visible to people on this instance and guests'),\n\t\t// tooltipDisabled is not required here as this scope is supported by all account properties\n\t\ticonClass: 'icon-password',\n\t},\n\t[SCOPE_ENUM.FEDERATED]: {\n\t\tname: SCOPE_ENUM.FEDERATED,\n\t\tdisplayName: t('settings', 'Federated'),\n\t\ttooltip: t('settings', 'Only synchronize to trusted servers'),\n\t\ttooltipDisabled: t('settings', 'Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions'),\n\t\ticonClass: 'icon-contacts-dark',\n\t},\n\t[SCOPE_ENUM.PUBLISHED]: {\n\t\tname: SCOPE_ENUM.PUBLISHED,\n\t\tdisplayName: t('settings', 'Published'),\n\t\ttooltip: t('settings', 'Synchronize to trusted servers and the global and public address book'),\n\t\ttooltipDisabled: t('settings', 'Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions'),\n\t\ticonClass: 'icon-link',\n\t},\n})\n\n/** Default additional email scope */\nexport const DEFAULT_ADDITIONAL_EMAIL_SCOPE = SCOPE_ENUM.LOCAL\n\n/** Enum of verification constants, according to IAccountManager */\nexport const VERIFICATION_ENUM = Object.freeze({\n\tNOT_VERIFIED: 0,\n\tVERIFICATION_IN_PROGRESS: 1,\n\tVERIFIED: 2,\n})\n\n/**\n * Email validation regex\n *\n * Sourced from https://github.com/mpyw/FILTER_VALIDATE_EMAIL.js/blob/71e62ca48841d2246a1b531e7e84f5a01f15e615/src/regexp/ascii.ts*\n */\n// eslint-disable-next-line no-control-regex\nexport const VALIDATE_EMAIL_REGEX = /^(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){255,})(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){65,}@)(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22))(?:\\.(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-+[a-z0-9]+)*\\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-+[a-z0-9]+)*)|(?:\\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\\]))$/i\n","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\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 */\n\nimport axios from '@nextcloud/axios'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport confirmPassword from '@nextcloud/password-confirmation'\n\nimport { SCOPE_SUFFIX } from '../../constants/AccountPropertyConstants'\n\n/**\n * Save the primary account property value for the user\n *\n * @param {string} accountProperty the account property\n * @param {string|boolean} value the primary value\n * @return {object}\n */\nexport const savePrimaryAccountProperty = async (accountProperty, value) => {\n\t// TODO allow boolean values on backend route handler\n\t// Convert boolean to string for compatibility\n\tif (typeof value === 'boolean') {\n\t\tvalue = value ? '1' : '0'\n\t}\n\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: accountProperty,\n\t\tvalue,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save the federation scope of the primary account property for the user\n *\n * @param {string} accountProperty the account property\n * @param {string} scope the federation scope\n * @return {object}\n */\nexport const savePrimaryAccountPropertyScope = async (accountProperty, scope) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: `${accountProperty}${SCOPE_SUFFIX}`,\n\t\tvalue: scope,\n\t})\n\n\treturn res.data\n}\n","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\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 */\n\n/*\n * Frontend validators, less strict than backend validators\n *\n * TODO add nice validation errors for Profile page settings modal\n */\n\nimport { VALIDATE_EMAIL_REGEX } from '../constants/AccountPropertyConstants'\n\n/**\n * Validate the string input\n *\n * Generic validator just to check that input is not an empty string*\n *\n * @param {string} input the input\n * @return {boolean}\n */\nexport function validateStringInput(input) {\n\treturn input !== ''\n}\n\n/**\n * Validate the email input\n *\n * Compliant with PHP core FILTER_VALIDATE_EMAIL validator*\n *\n * Reference implementation https://github.com/mpyw/FILTER_VALIDATE_EMAIL.js/blob/71e62ca48841d2246a1b531e7e84f5a01f15e615/src/index.ts*\n *\n * @param {string} input the input\n * @return {boolean}\n */\nexport function validateEmail(input) {\n\treturn typeof input === 'string'\n\t\t&& VALIDATE_EMAIL_REGEX.test(input)\n\t\t&& input.slice(-1) !== '\\n'\n\t\t&& input.length <= 320\n\t\t&& encodeURIComponent(input).replace(/%../g, 'x').length <= 320\n}\n\n/**\n * Validate the language input\n *\n * @param {object} input the input\n * @return {boolean}\n */\nexport function validateLanguage(input) {\n\treturn input.code !== ''\n\t\t&& input.name !== ''\n\t\t&& input.name !== undefined\n}\n\n/**\n * Validate boolean input\n *\n * @param {boolean} input the input\n * @return {boolean}\n */\nexport function validateBoolean(input) {\n\treturn typeof input === 'boolean'\n}\n","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"displayname\">\n\t\t<input id=\"displayname\"\n\t\t\ttype=\"text\"\n\t\t\t:placeholder=\"t('settings', 'Your full name')\"\n\t\t\t:value=\"displayName\"\n\t\t\tautocapitalize=\"none\"\n\t\t\tautocomplete=\"on\"\n\t\t\tautocorrect=\"off\"\n\t\t\t@input=\"onDisplayNameChange\">\n\n\t\t<div class=\"displayname__actions-container\">\n\t\t\t<transition name=\"fade\">\n\t\t\t\t<span v-if=\"showCheckmarkIcon\" class=\"icon-checkmark\" />\n\t\t\t\t<span v-else-if=\"showErrorIcon\" class=\"icon-error\" />\n\t\t\t</transition>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { showError } from '@nextcloud/dialogs'\nimport { emit } from '@nextcloud/event-bus'\nimport debounce from 'debounce'\n\nimport { ACCOUNT_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants'\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService'\nimport { validateStringInput } from '../../../utils/validate'\n\n// TODO Global avatar updating on events (e.g. updating the displayname) is currently being handled by global js, investigate using https://github.com/nextcloud/nextcloud-event-bus for global avatar updating\n\nexport default {\n\tname: 'DisplayName',\n\n\tprops: {\n\t\tdisplayName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialDisplayName: this.displayName,\n\t\t\tlocalScope: this.scope,\n\t\t\tshowCheckmarkIcon: false,\n\t\t\tshowErrorIcon: false,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonDisplayNameChange(e) {\n\t\t\tthis.$emit('update:display-name', e.target.value)\n\t\t\tthis.debounceDisplayNameChange(e.target.value.trim())\n\t\t},\n\n\t\tdebounceDisplayNameChange: debounce(async function(displayName) {\n\t\t\tif (validateStringInput(displayName)) {\n\t\t\t\tawait this.updatePrimaryDisplayName(displayName)\n\t\t\t}\n\t\t}, 500),\n\n\t\tasync updatePrimaryDisplayName(displayName) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(ACCOUNT_PROPERTY_ENUM.DISPLAYNAME, displayName)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tdisplayName,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update full name'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ displayName, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tthis.initialDisplayName = displayName\n\t\t\t\temit('settings:display-name:updated', displayName)\n\t\t\t\tthis.showCheckmarkIcon = true\n\t\t\t\tsetTimeout(() => { this.showCheckmarkIcon = false }, 2000)\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t\tthis.showErrorIcon = true\n\t\t\t\tsetTimeout(() => { this.showErrorIcon = false }, 2000)\n\t\t\t}\n\t\t},\n\n\t\tonScopeChange(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.displayname {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\t}\n\n\t.displayname__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DisplayName.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!./DisplayName.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!./DisplayName.vue?vue&type=style&index=0&id=3418897a&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!./DisplayName.vue?vue&type=style&index=0&id=3418897a&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DisplayName.vue?vue&type=template&id=3418897a&scoped=true&\"\nimport script from \"./DisplayName.vue?vue&type=script&lang=js&\"\nexport * from \"./DisplayName.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DisplayName.vue?vue&type=style&index=0&id=3418897a&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 \"3418897a\",\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:\"displayname\"},[_c('input',{attrs:{\"id\":\"displayname\",\"type\":\"text\",\"placeholder\":_vm.t('settings', 'Your full name'),\"autocapitalize\":\"none\",\"autocomplete\":\"on\",\"autocorrect\":\"off\"},domProps:{\"value\":_vm.displayName},on:{\"input\":_vm.onDisplayNameChange}}),_vm._v(\" \"),_c('div',{staticClass:\"displayname__actions-container\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.showCheckmarkIcon)?_c('span',{staticClass:\"icon-checkmark\"}):(_vm.showErrorIcon)?_c('span',{staticClass:\"icon-error\"}):_vm._e()])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FederationControlAction.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!./FederationControlAction.vue?vue&type=script&lang=js&\"","<!--\n\t- @copyright 2021 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<ActionButton :aria-label=\"isSupportedScope ? tooltip : tooltipDisabled\"\n\t\tclass=\"federation-actions__btn\"\n\t\t:class=\"{ 'federation-actions__btn--active': activeScope === name }\"\n\t\t:close-after-click=\"true\"\n\t\t:disabled=\"!isSupportedScope\"\n\t\t:icon=\"iconClass\"\n\t\t:title=\"displayName\"\n\t\t@click.stop.prevent=\"updateScope\">\n\t\t{{ isSupportedScope ? tooltip : tooltipDisabled }}\n\t</ActionButton>\n</template>\n\n<script>\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\n\nexport default {\n\tname: 'FederationControlAction',\n\n\tcomponents: {\n\t\tActionButton,\n\t},\n\n\tprops: {\n\t\tactiveScope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdisplayName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\thandleScopeChange: {\n\t\t\ttype: Function,\n\t\t\tdefault: () => {},\n\t\t},\n\t\ticonClass: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tisSupportedScope: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ttooltipDisabled: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\ttooltip: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tmethods: {\n\t\tupdateScope() {\n\t\t\tthis.handleScopeChange(this.name)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.federation-actions__btn {\n\t\t&::v-deep p {\n\t\t\twidth: 150px !important;\n\t\t\tpadding: 8px 0 !important;\n\t\t\tcolor: var(--color-main-text) !important;\n\t\t\tfont-size: 12.8px !important;\n\t\t\tline-height: 1.5em !important;\n\t\t}\n\t}\n\n\t.federation-actions__btn--active {\n\t\tbackground-color: var(--color-primary-light) !important;\n\t\tbox-shadow: inset 2px 0 var(--color-primary) !important;\n\t}\n</style>\n","\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!./FederationControlAction.vue?vue&type=style&index=0&id=d2e8b360&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!./FederationControlAction.vue?vue&type=style&index=0&id=d2e8b360&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FederationControlAction.vue?vue&type=template&id=d2e8b360&scoped=true&\"\nimport script from \"./FederationControlAction.vue?vue&type=script&lang=js&\"\nexport * from \"./FederationControlAction.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FederationControlAction.vue?vue&type=style&index=0&id=d2e8b360&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 \"d2e8b360\",\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('ActionButton',{staticClass:\"federation-actions__btn\",class:{ 'federation-actions__btn--active': _vm.activeScope === _vm.name },attrs:{\"aria-label\":_vm.isSupportedScope ? _vm.tooltip : _vm.tooltipDisabled,\"close-after-click\":true,\"disabled\":!_vm.isSupportedScope,\"icon\":_vm.iconClass,\"title\":_vm.displayName},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.updateScope.apply(null, arguments)}}},[_vm._v(\"\\n\\t\"+_vm._s(_vm.isSupportedScope ? _vm.tooltip : _vm.tooltipDisabled)+\"\\n\")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<Actions :class=\"{ 'federation-actions': !additional, 'federation-actions--additional': additional }\"\n\t\t:aria-label=\"ariaLabel\"\n\t\t:default-icon=\"scopeIcon\"\n\t\t:disabled=\"disabled\">\n\t\t<FederationControlAction v-for=\"federationScope in federationScopes\"\n\t\t\t:key=\"federationScope.name\"\n\t\t\t:active-scope=\"scope\"\n\t\t\t:display-name=\"federationScope.displayName\"\n\t\t\t:handle-scope-change=\"changeScope\"\n\t\t\t:icon-class=\"federationScope.iconClass\"\n\t\t\t:is-supported-scope=\"supportedScopes.includes(federationScope.name)\"\n\t\t\t:name=\"federationScope.name\"\n\t\t\t:tooltip-disabled=\"federationScope.tooltipDisabled\"\n\t\t\t:tooltip=\"federationScope.tooltip\" />\n\t</Actions>\n</template>\n\n<script>\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport { loadState } from '@nextcloud/initial-state'\nimport { showError } from '@nextcloud/dialogs'\n\nimport FederationControlAction from './FederationControlAction'\n\nimport {\n\tACCOUNT_PROPERTY_READABLE_ENUM,\n\tPROPERTY_READABLE_KEYS_ENUM,\n\tPROPERTY_READABLE_SUPPORTED_SCOPES_ENUM,\n\tSCOPE_ENUM, SCOPE_PROPERTY_ENUM,\n\tUNPUBLISHED_READABLE_PROPERTIES,\n} from '../../../constants/AccountPropertyConstants'\nimport { savePrimaryAccountPropertyScope } from '../../../service/PersonalInfo/PersonalInfoService'\n\nconst { lookupServerUploadEnabled } = loadState('settings', 'accountParameters', {})\n\nexport default {\n\tname: 'FederationControl',\n\n\tcomponents: {\n\t\tActions,\n\t\tFederationControlAction,\n\t},\n\n\tprops: {\n\t\taccountProperty: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t\tvalidator: (value) => Object.values(ACCOUNT_PROPERTY_READABLE_ENUM).includes(value),\n\t\t},\n\t\tadditional: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tadditionalValue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\thandleAdditionalScopeChange: {\n\t\t\ttype: Function,\n\t\t\tdefault: null,\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountPropertyLowerCase: this.accountProperty.toLocaleLowerCase(),\n\t\t\tinitialScope: this.scope,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tariaLabel() {\n\t\t\treturn t('settings', 'Change scope level of {accountProperty}', { accountProperty: this.accountPropertyLowerCase })\n\t\t},\n\n\t\tscopeIcon() {\n\t\t\treturn SCOPE_PROPERTY_ENUM[this.scope].iconClass\n\t\t},\n\n\t\tfederationScopes() {\n\t\t\treturn Object.values(SCOPE_PROPERTY_ENUM)\n\t\t},\n\n\t\tsupportedScopes() {\n\t\t\tif (lookupServerUploadEnabled && !UNPUBLISHED_READABLE_PROPERTIES.includes(this.accountProperty)) {\n\t\t\t\treturn [\n\t\t\t\t\t...PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM[this.accountProperty],\n\t\t\t\t\tSCOPE_ENUM.FEDERATED,\n\t\t\t\t\tSCOPE_ENUM.PUBLISHED,\n\t\t\t\t]\n\t\t\t}\n\n\t\t\treturn PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM[this.accountProperty]\n\t\t},\n\t},\n\n\tmethods: {\n\t\tasync changeScope(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\n\t\t\tif (!this.additional) {\n\t\t\t\tawait this.updatePrimaryScope(scope)\n\t\t\t} else {\n\t\t\t\tawait this.updateAdditionalScope(scope)\n\t\t\t}\n\t\t},\n\n\t\tasync updatePrimaryScope(scope) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountPropertyScope(PROPERTY_READABLE_KEYS_ENUM[this.accountProperty], scope)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tscope,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update federation scope of the primary {accountProperty}', { accountProperty: this.accountPropertyLowerCase }),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tasync updateAdditionalScope(scope) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await this.handleAdditionalScopeChange(this.additionalValue, scope)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tscope,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update federation scope of additional {accountProperty}', { accountProperty: this.accountPropertyLowerCase }),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ scope, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\tthis.initialScope = scope\n\t\t\t} else {\n\t\t\t\tthis.$emit('update:scope', this.initialScope)\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.federation-actions,\n\t.federation-actions--additional {\n\t\topacity: 0.4 !important;\n\n\t\t&:hover,\n\t\t&:focus,\n\t\t&:active {\n\t\t\topacity: 0.8 !important;\n\t\t}\n\t}\n\n\t.federation-actions--additional {\n\t\t&::v-deep button {\n\t\t\t// TODO remove this hack\n\t\t\tpadding-bottom: 7px;\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t}\n\t}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FederationControl.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!./FederationControl.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!./FederationControl.vue?vue&type=style&index=0&id=b51d8bee&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!./FederationControl.vue?vue&type=style&index=0&id=b51d8bee&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FederationControl.vue?vue&type=template&id=b51d8bee&scoped=true&\"\nimport script from \"./FederationControl.vue?vue&type=script&lang=js&\"\nexport * from \"./FederationControl.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FederationControl.vue?vue&type=style&index=0&id=b51d8bee&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 \"b51d8bee\",\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('Actions',{class:{ 'federation-actions': !_vm.additional, 'federation-actions--additional': _vm.additional },attrs:{\"aria-label\":_vm.ariaLabel,\"default-icon\":_vm.scopeIcon,\"disabled\":_vm.disabled}},_vm._l((_vm.federationScopes),function(federationScope){return _c('FederationControlAction',{key:federationScope.name,attrs:{\"active-scope\":_vm.scope,\"display-name\":federationScope.displayName,\"handle-scope-change\":_vm.changeScope,\"icon-class\":federationScope.iconClass,\"is-supported-scope\":_vm.supportedScopes.includes(federationScope.name),\"name\":federationScope.name,\"tooltip-disabled\":federationScope.tooltipDisabled,\"tooltip\":federationScope.tooltip}})}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeaderBar.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!./HeaderBar.vue?vue&type=script&lang=js&\"","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<h3 :class=\"{ 'setting-property': isSettingProperty, 'profile-property': isProfileProperty }\">\n\t\t<label :for=\"labelFor\">\n\t\t\t<!-- Already translated as required by prop validator -->\n\t\t\t{{ accountProperty }}\n\t\t</label>\n\n\t\t<template v-if=\"scope\">\n\t\t\t<FederationControl class=\"federation-control\"\n\t\t\t\t:account-property=\"accountProperty\"\n\t\t\t\t:scope.sync=\"localScope\"\n\t\t\t\t@update:scope=\"onScopeChange\" />\n\t\t</template>\n\n\t\t<template v-if=\"isEditable && isMultiValueSupported\">\n\t\t\t<Button type=\"tertiary\"\n\t\t\t\t:disabled=\"!isValidSection\"\n\t\t\t\t:aria-label=\"t('settings', 'Add additional email')\"\n\t\t\t\t@click.stop.prevent=\"onAddAdditional\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Plus :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t{{ t('settings', 'Add') }}\n\t\t\t</Button>\n\t\t</template>\n\t</h3>\n</template>\n\n<script>\nimport FederationControl from './FederationControl'\nimport Button from '@nextcloud/vue/dist/Components/Button'\nimport Plus from 'vue-material-design-icons/Plus'\nimport { ACCOUNT_PROPERTY_READABLE_ENUM, ACCOUNT_SETTING_PROPERTY_READABLE_ENUM, PROFILE_READABLE_ENUM } from '../../../constants/AccountPropertyConstants'\n\nexport default {\n\tname: 'HeaderBar',\n\n\tcomponents: {\n\t\tFederationControl,\n\t\tButton,\n\t\tPlus,\n\t},\n\n\tprops: {\n\t\taccountProperty: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t\tvalidator: (value) => Object.values(ACCOUNT_PROPERTY_READABLE_ENUM).includes(value) || Object.values(ACCOUNT_SETTING_PROPERTY_READABLE_ENUM).includes(value) || value === PROFILE_READABLE_ENUM.PROFILE_VISIBILITY,\n\t\t},\n\t\tisEditable: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tisMultiValueSupported: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisValidSection: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tlabelFor: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tlocalScope: this.scope,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisProfileProperty() {\n\t\t\treturn this.accountProperty === ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED\n\t\t},\n\n\t\tisSettingProperty() {\n\t\t\treturn Object.values(ACCOUNT_SETTING_PROPERTY_READABLE_ENUM).includes(this.accountProperty)\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonAddAdditional() {\n\t\t\tthis.$emit('add-additional')\n\t\t},\n\n\t\tonScopeChange(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\th3 {\n\t\tdisplay: inline-flex;\n\t\twidth: 100%;\n\t\tmargin: 12px 0 0 0;\n\t\tfont-size: 16px;\n\t\tcolor: var(--color-text-light);\n\n\t\t&.profile-property {\n\t\t\theight: 38px;\n\t\t}\n\n\t\t&.setting-property {\n\t\t\theight: 32px;\n\t\t}\n\n\t\tlabel {\n\t\t\tcursor: pointer;\n\t\t}\n\t}\n\n\t.federation-control {\n\t\tmargin: -12px 0 0 8px;\n\t}\n\n\t.button-vue {\n\t\tmargin: -6px 0 0 auto !important;\n\t}\n</style>\n","\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!./HeaderBar.vue?vue&type=style&index=0&id=19038f0c&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!./HeaderBar.vue?vue&type=style&index=0&id=19038f0c&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./HeaderBar.vue?vue&type=template&id=19038f0c&scoped=true&\"\nimport script from \"./HeaderBar.vue?vue&type=script&lang=js&\"\nexport * from \"./HeaderBar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./HeaderBar.vue?vue&type=style&index=0&id=19038f0c&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 \"19038f0c\",\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('h3',{class:{ 'setting-property': _vm.isSettingProperty, 'profile-property': _vm.isProfileProperty }},[_c('label',{attrs:{\"for\":_vm.labelFor}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.accountProperty)+\"\\n\\t\")]),_vm._v(\" \"),(_vm.scope)?[_c('FederationControl',{staticClass:\"federation-control\",attrs:{\"account-property\":_vm.accountProperty,\"scope\":_vm.localScope},on:{\"update:scope\":[function($event){_vm.localScope=$event},_vm.onScopeChange]}})]:_vm._e(),_vm._v(\" \"),(_vm.isEditable && _vm.isMultiValueSupported)?[_c('Button',{attrs:{\"type\":\"tertiary\",\"disabled\":!_vm.isValidSection,\"aria-label\":_vm.t('settings', 'Add additional email')},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.onAddAdditional.apply(null, arguments)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Plus',{attrs:{\"size\":20}})]},proxy:true}],null,false,32235154)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Add'))+\"\\n\\t\\t\")])]:_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :account-property=\"accountProperty\"\n\t\t\tlabel-for=\"displayname\"\n\t\t\t:is-editable=\"displayNameChangeSupported\"\n\t\t\t:is-valid-section=\"isValidSection\"\n\t\t\t:scope.sync=\"primaryDisplayName.scope\" />\n\n\t\t<template v-if=\"displayNameChangeSupported\">\n\t\t\t<DisplayName :display-name.sync=\"primaryDisplayName.value\"\n\t\t\t\t:scope.sync=\"primaryDisplayName.scope\" />\n\t\t</template>\n\n\t\t<span v-else>\n\t\t\t{{ primaryDisplayName.value || t('settings', 'No full name set') }}\n\t\t</span>\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport DisplayName from './DisplayName'\nimport HeaderBar from '../shared/HeaderBar'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants'\nimport { validateStringInput } from '../../../utils/validate'\n\nconst { displayNameMap: { primaryDisplayName } } = loadState('settings', 'personalInfoParameters', {})\nconst { displayNameChangeSupported } = loadState('settings', 'accountParameters', {})\n\nexport default {\n\tname: 'DisplayNameSection',\n\n\tcomponents: {\n\t\tDisplayName,\n\t\tHeaderBar,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.DISPLAYNAME,\n\t\t\tdisplayNameChangeSupported,\n\t\t\tprimaryDisplayName,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisValidSection() {\n\t\t\treturn validateStringInput(this.primaryDisplayName.value)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DisplayNameSection.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!./DisplayNameSection.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!./DisplayNameSection.vue?vue&type=style&index=0&id=b8a748f4&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!./DisplayNameSection.vue?vue&type=style&index=0&id=b8a748f4&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DisplayNameSection.vue?vue&type=template&id=b8a748f4&scoped=true&\"\nimport script from \"./DisplayNameSection.vue?vue&type=script&lang=js&\"\nexport * from \"./DisplayNameSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DisplayNameSection.vue?vue&type=style&index=0&id=b8a748f4&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 \"b8a748f4\",\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('section',[_c('HeaderBar',{attrs:{\"account-property\":_vm.accountProperty,\"label-for\":\"displayname\",\"is-editable\":_vm.displayNameChangeSupported,\"is-valid-section\":_vm.isValidSection,\"scope\":_vm.primaryDisplayName.scope},on:{\"update:scope\":function($event){return _vm.$set(_vm.primaryDisplayName, \"scope\", $event)}}}),_vm._v(\" \"),(_vm.displayNameChangeSupported)?[_c('DisplayName',{attrs:{\"display-name\":_vm.primaryDisplayName.value,\"scope\":_vm.primaryDisplayName.scope},on:{\"update:displayName\":function($event){return _vm.$set(_vm.primaryDisplayName, \"value\", $event)},\"update:display-name\":function($event){return _vm.$set(_vm.primaryDisplayName, \"value\", $event)},\"update:scope\":function($event){return _vm.$set(_vm.primaryDisplayName, \"scope\", $event)}}})]:_c('span',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.primaryDisplayName.value || _vm.t('settings', 'No full name set'))+\"\\n\\t\")])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\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 */\n\nimport axios from '@nextcloud/axios'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport confirmPassword from '@nextcloud/password-confirmation'\n\nimport { ACCOUNT_PROPERTY_ENUM, SCOPE_SUFFIX } from '../../constants/AccountPropertyConstants'\n\n/**\n * Save the primary email of the user\n *\n * @param {string} email the primary email\n * @return {object}\n */\nexport const savePrimaryEmail = async (email) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: ACCOUNT_PROPERTY_ENUM.EMAIL,\n\t\tvalue: email,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save an additional email of the user\n *\n * Will be appended to the user's additional emails*\n *\n * @param {string} email the additional email\n * @return {object}\n */\nexport const saveAdditionalEmail = async (email) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION,\n\t\tvalue: email,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save the notification email of the user\n *\n * @param {string} email the notification email\n * @return {object}\n */\nexport const saveNotificationEmail = async (email) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: ACCOUNT_PROPERTY_ENUM.NOTIFICATION_EMAIL,\n\t\tvalue: email,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Remove an additional email of the user\n *\n * @param {string} email the additional email\n * @return {object}\n */\nexport const removeAdditionalEmail = async (email) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}/{collection}', { userId, collection: ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: email,\n\t\tvalue: '',\n\t})\n\n\treturn res.data\n}\n\n/**\n * Update an additional email of the user\n *\n * @param {string} prevEmail the additional email to be updated\n * @param {string} newEmail the new additional email\n * @return {object}\n */\nexport const updateAdditionalEmail = async (prevEmail, newEmail) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}/{collection}', { userId, collection: ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: prevEmail,\n\t\tvalue: newEmail,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save the federation scope for the primary email of the user\n *\n * @param {string} scope the federation scope\n * @return {object}\n */\nexport const savePrimaryEmailScope = async (scope) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: `${ACCOUNT_PROPERTY_ENUM.EMAIL}${SCOPE_SUFFIX}`,\n\t\tvalue: scope,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save the federation scope for the additional email of the user\n *\n * @param {string} email the additional email\n * @param {string} scope the federation scope\n * @return {object}\n */\nexport const saveAdditionalEmailScope = async (email, scope) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}/{collectionScope}', { userId, collectionScope: `${ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION}${SCOPE_SUFFIX}` })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: email,\n\t\tvalue: scope,\n\t})\n\n\treturn res.data\n}\n","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div>\n\t\t<div class=\"email\">\n\t\t\t<input :id=\"inputId\"\n\t\t\t\tref=\"email\"\n\t\t\t\ttype=\"email\"\n\t\t\t\t:placeholder=\"inputPlaceholder\"\n\t\t\t\t:value=\"email\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocomplete=\"on\"\n\t\t\t\tautocorrect=\"off\"\n\t\t\t\t@input=\"onEmailChange\">\n\n\t\t\t<div class=\"email__actions-container\">\n\t\t\t\t<transition name=\"fade\">\n\t\t\t\t\t<span v-if=\"showCheckmarkIcon\" class=\"icon-checkmark\" />\n\t\t\t\t\t<span v-else-if=\"showErrorIcon\" class=\"icon-error\" />\n\t\t\t\t</transition>\n\n\t\t\t\t<template v-if=\"!primary\">\n\t\t\t\t\t<FederationControl :account-property=\"accountProperty\"\n\t\t\t\t\t\t:additional=\"true\"\n\t\t\t\t\t\t:additional-value=\"email\"\n\t\t\t\t\t\t:disabled=\"federationDisabled\"\n\t\t\t\t\t\t:handle-additional-scope-change=\"saveAdditionalEmailScope\"\n\t\t\t\t\t\t:scope.sync=\"localScope\"\n\t\t\t\t\t\t@update:scope=\"onScopeChange\" />\n\t\t\t\t</template>\n\n\t\t\t\t<Actions class=\"email__actions\"\n\t\t\t\t\t:aria-label=\"t('settings', 'Email options')\"\n\t\t\t\t\t:disabled=\"deleteDisabled\"\n\t\t\t\t\t:force-menu=\"true\">\n\t\t\t\t\t<ActionButton :aria-label=\"deleteEmailLabel\"\n\t\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t\t:disabled=\"deleteDisabled\"\n\t\t\t\t\t\ticon=\"icon-delete\"\n\t\t\t\t\t\t@click.stop.prevent=\"deleteEmail\">\n\t\t\t\t\t\t{{ deleteEmailLabel }}\n\t\t\t\t\t</ActionButton>\n\t\t\t\t\t<ActionButton v-if=\"!primary || !isNotificationEmail\"\n\t\t\t\t\t\t:aria-label=\"setNotificationMailLabel\"\n\t\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t\t:disabled=\"setNotificationMailDisabled\"\n\t\t\t\t\t\ticon=\"icon-favorite\"\n\t\t\t\t\t\t@click.stop.prevent=\"setNotificationMail\">\n\t\t\t\t\t\t{{ setNotificationMailLabel }}\n\t\t\t\t\t</ActionButton>\n\t\t\t\t</Actions>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<em v-if=\"isNotificationEmail\">\n\t\t\t{{ t('settings', 'Primary email for password reset and notifications') }}\n\t\t</em>\n\t</div>\n</template>\n\n<script>\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport { showError } from '@nextcloud/dialogs'\nimport debounce from 'debounce'\n\nimport FederationControl from '../shared/FederationControl'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM, VERIFICATION_ENUM } from '../../../constants/AccountPropertyConstants'\nimport {\n\tremoveAdditionalEmail,\n\tsaveAdditionalEmail,\n\tsaveAdditionalEmailScope,\n\tsaveNotificationEmail,\n\tsavePrimaryEmail,\n\tupdateAdditionalEmail,\n} from '../../../service/PersonalInfo/EmailService'\nimport { validateEmail } from '../../../utils/validate'\n\nexport default {\n\tname: 'Email',\n\n\tcomponents: {\n\t\tActions,\n\t\tActionButton,\n\t\tFederationControl,\n\t},\n\n\tprops: {\n\t\temail: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tindex: {\n\t\t\ttype: Number,\n\t\t\tdefault: 0,\n\t\t},\n\t\tprimary: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tactiveNotificationEmail: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tlocalVerificationState: {\n\t\t\ttype: Number,\n\t\t\tdefault: VERIFICATION_ENUM.NOT_VERIFIED,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL,\n\t\t\tinitialEmail: this.email,\n\t\t\tlocalScope: this.scope,\n\t\t\tsaveAdditionalEmailScope,\n\t\t\tshowCheckmarkIcon: false,\n\t\t\tshowErrorIcon: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tdeleteDisabled() {\n\t\t\tif (this.primary) {\n\t\t\t\t// Disable for empty primary email as there is nothing to delete\n\t\t\t\t// OR when initialEmail (reflects server state) and email (current input) are not the same\n\t\t\t\treturn this.email === '' || this.initialEmail !== this.email\n\t\t\t} else if (this.initialEmail !== '') {\n\t\t\t\treturn this.initialEmail !== this.email\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\n\t\tdeleteEmailLabel() {\n\t\t\tif (this.primary) {\n\t\t\t\treturn t('settings', 'Remove primary email')\n\t\t\t}\n\t\t\treturn t('settings', 'Delete email')\n\t\t},\n\n\t setNotificationMailDisabled() {\n\t\t\treturn !this.primary && this.localVerificationState !== VERIFICATION_ENUM.VERIFIED\n\t\t},\n\n\t setNotificationMailLabel() {\n\t\t\tif (this.isNotificationEmail) {\n\t\t\t\treturn t('settings', 'Unset as primary email')\n\t\t\t} else if (!this.primary && this.localVerificationState !== VERIFICATION_ENUM.VERIFIED) {\n\t\t\t\treturn t('settings', 'This address is not confirmed')\n\t\t\t}\n\t\t\treturn t('settings', 'Set as primary email')\n\t\t},\n\n\t\tfederationDisabled() {\n\t\t\treturn !this.initialEmail\n\t\t},\n\n\t\tinputId() {\n\t\t\tif (this.primary) {\n\t\t\t\treturn 'email'\n\t\t\t}\n\t\t\treturn `email-${this.index}`\n\t\t},\n\n\t\tinputPlaceholder() {\n\t\t\tif (this.primary) {\n\t\t\t\treturn t('settings', 'Your email address')\n\t\t\t}\n\t\t\treturn t('settings', 'Additional email address {index}', { index: this.index + 1 })\n\t\t},\n\n\t\tisNotificationEmail() {\n\t\t\treturn (this.email && this.email === this.activeNotificationEmail)\n\t\t\t\t|| (this.primary && this.activeNotificationEmail === '')\n\t\t},\n\t},\n\n\tmounted() {\n\t\tif (!this.primary && this.initialEmail === '') {\n\t\t\t// $nextTick is needed here, otherwise it may not always work https://stackoverflow.com/questions/51922767/autofocus-input-on-mount-vue-ios/63485725#63485725\n\t\t\tthis.$nextTick(() => this.$refs.email?.focus())\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonEmailChange(e) {\n\t\t\tthis.$emit('update:email', e.target.value)\n\t\t\tthis.debounceEmailChange(e.target.value.trim())\n\t\t},\n\n\t\tdebounceEmailChange: debounce(async function(email) {\n\t\t\tif (validateEmail(email) || email === '') {\n\t\t\t\tif (this.primary) {\n\t\t\t\t\tawait this.updatePrimaryEmail(email)\n\t\t\t\t} else {\n\t\t\t\t\tif (email) {\n\t\t\t\t\t\tif (this.initialEmail === '') {\n\t\t\t\t\t\t\tawait this.addAdditionalEmail(email)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tawait this.updateAdditionalEmail(email)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}, 500),\n\n\t\tasync deleteEmail() {\n\t\t\tif (this.primary) {\n\t\t\t\tthis.$emit('update:email', '')\n\t\t\t\tawait this.updatePrimaryEmail('')\n\t\t\t} else {\n\t\t\t\tawait this.deleteAdditionalEmail()\n\t\t\t}\n\t\t},\n\n\t\tasync updatePrimaryEmail(email) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryEmail(email)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\temail,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tif (email === '') {\n\t\t\t\t\tthis.handleResponse({\n\t\t\t\t\t\terrorMessage: t('settings', 'Unable to delete primary email address'),\n\t\t\t\t\t\terror: e,\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\tthis.handleResponse({\n\t\t\t\t\t\terrorMessage: t('settings', 'Unable to update primary email address'),\n\t\t\t\t\t\terror: e,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tasync addAdditionalEmail(email) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await saveAdditionalEmail(email)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\temail,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to add additional email address'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tasync setNotificationMail() {\n\t\t try {\n\t\t\t const newNotificationMailValue = (this.primary || this.isNotificationEmail) ? '' : this.initialEmail\n\t\t\t const responseData = await saveNotificationEmail(newNotificationMailValue)\n\t\t\t this.handleResponse({\n\t\t\t\t notificationEmail: newNotificationMailValue,\n\t\t\t\t status: responseData.ocs?.meta?.status,\n\t\t\t })\n\t\t } catch (e) {\n\t\t\t this.handleResponse({\n\t\t\t\t errorMessage: 'Unable to choose this email for notifications',\n\t\t\t\t error: e,\n\t\t\t })\n\t\t }\n\t\t},\n\n\t\tasync updateAdditionalEmail(email) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await updateAdditionalEmail(this.initialEmail, email)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\temail,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update additional email address'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tasync deleteAdditionalEmail() {\n\t\t\ttry {\n\t\t\t\tconst responseData = await removeAdditionalEmail(this.initialEmail)\n\t\t\t\tthis.handleDeleteAdditionalEmail(responseData.ocs?.meta?.status)\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to delete additional email address'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleDeleteAdditionalEmail(status) {\n\t\t\tif (status === 'ok') {\n\t\t\t\tthis.$emit('delete-additional-email')\n\t\t\t} else {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to delete additional email address'),\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ email, notificationEmail, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tif (email) {\n\t\t\t\t\tthis.initialEmail = email\n\t\t\t\t} else if (notificationEmail !== undefined) {\n\t\t\t\t\tthis.$emit('update:notification-email', notificationEmail)\n\t\t\t\t}\n\t\t\t\tthis.showCheckmarkIcon = true\n\t\t\t\tsetTimeout(() => { this.showCheckmarkIcon = false }, 2000)\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t\tthis.showErrorIcon = true\n\t\t\t\tsetTimeout(() => { this.showErrorIcon = false }, 2000)\n\t\t\t}\n\t\t},\n\n\t\tonScopeChange(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.email {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\t}\n\n\t.email__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.email__actions {\n\t\t\topacity: 0.4 !important;\n\n\t\t\t&:hover,\n\t\t\t&:focus,\n\t\t\t&:active {\n\t\t\t\topacity: 0.8 !important;\n\t\t\t}\n\n\t\t\t&::v-deep button {\n\t\t\t\theight: 30px !important;\n\t\t\t\tmin-height: 30px !important;\n\t\t\t\twidth: 30px !important;\n\t\t\t\tmin-width: 30px !important;\n\t\t\t}\n\t\t}\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Email.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!./Email.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!./Email.vue?vue&type=style&index=0&id=2c097054&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!./Email.vue?vue&type=style&index=0&id=2c097054&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Email.vue?vue&type=template&id=2c097054&scoped=true&\"\nimport script from \"./Email.vue?vue&type=script&lang=js&\"\nexport * from \"./Email.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Email.vue?vue&type=style&index=0&id=2c097054&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 \"2c097054\",\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',[_c('div',{staticClass:\"email\"},[_c('input',{ref:\"email\",attrs:{\"id\":_vm.inputId,\"type\":\"email\",\"placeholder\":_vm.inputPlaceholder,\"autocapitalize\":\"none\",\"autocomplete\":\"on\",\"autocorrect\":\"off\"},domProps:{\"value\":_vm.email},on:{\"input\":_vm.onEmailChange}}),_vm._v(\" \"),_c('div',{staticClass:\"email__actions-container\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.showCheckmarkIcon)?_c('span',{staticClass:\"icon-checkmark\"}):(_vm.showErrorIcon)?_c('span',{staticClass:\"icon-error\"}):_vm._e()]),_vm._v(\" \"),(!_vm.primary)?[_c('FederationControl',{attrs:{\"account-property\":_vm.accountProperty,\"additional\":true,\"additional-value\":_vm.email,\"disabled\":_vm.federationDisabled,\"handle-additional-scope-change\":_vm.saveAdditionalEmailScope,\"scope\":_vm.localScope},on:{\"update:scope\":[function($event){_vm.localScope=$event},_vm.onScopeChange]}})]:_vm._e(),_vm._v(\" \"),_c('Actions',{staticClass:\"email__actions\",attrs:{\"aria-label\":_vm.t('settings', 'Email options'),\"disabled\":_vm.deleteDisabled,\"force-menu\":true}},[_c('ActionButton',{attrs:{\"aria-label\":_vm.deleteEmailLabel,\"close-after-click\":true,\"disabled\":_vm.deleteDisabled,\"icon\":\"icon-delete\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.deleteEmail.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.deleteEmailLabel)+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(!_vm.primary || !_vm.isNotificationEmail)?_c('ActionButton',{attrs:{\"aria-label\":_vm.setNotificationMailLabel,\"close-after-click\":true,\"disabled\":_vm.setNotificationMailDisabled,\"icon\":\"icon-favorite\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.setNotificationMail.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.setNotificationMailLabel)+\"\\n\\t\\t\\t\\t\")]):_vm._e()],1)],2)]),_vm._v(\" \"),(_vm.isNotificationEmail)?_c('em',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Primary email for password reset and notifications'))+\"\\n\\t\")]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :account-property=\"accountProperty\"\n\t\t\tlabel-for=\"email\"\n\t\t\t:handle-scope-change=\"savePrimaryEmailScope\"\n\t\t\t:is-editable=\"true\"\n\t\t\t:is-multi-value-supported=\"true\"\n\t\t\t:is-valid-section=\"isValidSection\"\n\t\t\t:scope.sync=\"primaryEmail.scope\"\n\t\t\t@add-additional=\"onAddAdditionalEmail\" />\n\n\t\t<template v-if=\"displayNameChangeSupported\">\n\t\t\t<Email :primary=\"true\"\n\t\t\t\t:scope.sync=\"primaryEmail.scope\"\n\t\t\t\t:email.sync=\"primaryEmail.value\"\n\t\t\t\t:active-notification-email.sync=\"notificationEmail\"\n\t\t\t\t@update:email=\"onUpdateEmail\"\n\t\t\t\t@update:notification-email=\"onUpdateNotificationEmail\" />\n\t\t</template>\n\n\t\t<span v-else>\n\t\t\t{{ primaryEmail.value || t('settings', 'No email address set') }}\n\t\t</span>\n\n\t\t<template v-if=\"additionalEmails.length\">\n\t\t\t<em class=\"additional-emails-label\">{{ t('settings', 'Additional emails') }}</em>\n\t\t\t<Email v-for=\"(additionalEmail, index) in additionalEmails\"\n\t\t\t\t:key=\"index\"\n\t\t\t\t:index=\"index\"\n\t\t\t\t:scope.sync=\"additionalEmail.scope\"\n\t\t\t\t:email.sync=\"additionalEmail.value\"\n\t\t\t\t:local-verification-state=\"parseInt(additionalEmail.locallyVerified, 10)\"\n\t\t\t\t:active-notification-email.sync=\"notificationEmail\"\n\t\t\t\t@update:email=\"onUpdateEmail\"\n\t\t\t\t@update:notification-email=\"onUpdateNotificationEmail\"\n\t\t\t\t@delete-additional-email=\"onDeleteAdditionalEmail(index)\" />\n\t\t</template>\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport { showError } from '@nextcloud/dialogs'\n\nimport Email from './Email'\nimport HeaderBar from '../shared/HeaderBar'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM, DEFAULT_ADDITIONAL_EMAIL_SCOPE } from '../../../constants/AccountPropertyConstants'\nimport { savePrimaryEmail, savePrimaryEmailScope, removeAdditionalEmail } from '../../../service/PersonalInfo/EmailService'\nimport { validateEmail } from '../../../utils/validate'\n\nconst { emailMap: { additionalEmails, primaryEmail, notificationEmail } } = loadState('settings', 'personalInfoParameters', {})\nconst { displayNameChangeSupported } = loadState('settings', 'accountParameters', {})\n\nexport default {\n\tname: 'EmailSection',\n\n\tcomponents: {\n\t\tHeaderBar,\n\t\tEmail,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL,\n\t\t\tadditionalEmails,\n\t\t\tdisplayNameChangeSupported,\n\t\t\tprimaryEmail,\n\t\t\tsavePrimaryEmailScope,\n\t\t\tnotificationEmail,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tfirstAdditionalEmail() {\n\t\t\tif (this.additionalEmails.length) {\n\t\t\t\treturn this.additionalEmails[0].value\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\tisValidSection() {\n\t\t\treturn validateEmail(this.primaryEmail.value)\n\t\t\t\t&& this.additionalEmails.map(({ value }) => value).every(validateEmail)\n\t\t},\n\n\t\tprimaryEmailValue: {\n\t\t\tget() {\n\t\t\t\treturn this.primaryEmail.value\n\t\t\t},\n\t\t\tset(value) {\n\t\t\t\tthis.primaryEmail.value = value\n\t\t\t},\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonAddAdditionalEmail() {\n\t\t\tif (this.isValidSection) {\n\t\t\t\tthis.additionalEmails.push({ value: '', scope: DEFAULT_ADDITIONAL_EMAIL_SCOPE })\n\t\t\t}\n\t\t},\n\n\t\tonDeleteAdditionalEmail(index) {\n\t\t\tthis.$delete(this.additionalEmails, index)\n\t\t},\n\n\t\tasync onUpdateEmail() {\n\t\t\tif (this.primaryEmailValue === '' && this.firstAdditionalEmail) {\n\t\t\t\tconst deletedEmail = this.firstAdditionalEmail\n\t\t\t\tawait this.deleteFirstAdditionalEmail()\n\t\t\t\tthis.primaryEmailValue = deletedEmail\n\t\t\t\tawait this.updatePrimaryEmail()\n\t\t\t}\n\t\t},\n\n\t\tasync onUpdateNotificationEmail(email) {\n\t\t\tthis.notificationEmail = email\n\t\t},\n\n\t\tasync updatePrimaryEmail() {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryEmail(this.primaryEmailValue)\n\t\t\t\tthis.handleResponse(responseData.ocs?.meta?.status)\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse(\n\t\t\t\t\t'error',\n\t\t\t\t\tt('settings', 'Unable to update primary email address'),\n\t\t\t\t\te\n\t\t\t\t)\n\t\t\t}\n\t\t},\n\n\t\tasync deleteFirstAdditionalEmail() {\n\t\t\ttry {\n\t\t\t\tconst responseData = await removeAdditionalEmail(this.firstAdditionalEmail)\n\t\t\t\tthis.handleDeleteFirstAdditionalEmail(responseData.ocs?.meta?.status)\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse(\n\t\t\t\t\t'error',\n\t\t\t\t\tt('settings', 'Unable to delete additional email address'),\n\t\t\t\t\te\n\t\t\t\t)\n\t\t\t}\n\t\t},\n\n\t\thandleDeleteFirstAdditionalEmail(status) {\n\t\t\tif (status === 'ok') {\n\t\t\t\tthis.$delete(this.additionalEmails, 0)\n\t\t\t} else {\n\t\t\t\tthis.handleResponse(\n\t\t\t\t\t'error',\n\t\t\t\t\tt('settings', 'Unable to delete additional email address'),\n\t\t\t\t\t{}\n\t\t\t\t)\n\t\t\t}\n\t\t},\n\n\t\thandleResponse(status, errorMessage, error) {\n\t\t\tif (status !== 'ok') {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n\n\t.additional-emails-label {\n\t\tdisplay: block;\n\t\tmargin-top: 16px;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmailSection.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!./EmailSection.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!./EmailSection.vue?vue&type=style&index=0&id=845b669e&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!./EmailSection.vue?vue&type=style&index=0&id=845b669e&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./EmailSection.vue?vue&type=template&id=845b669e&scoped=true&\"\nimport script from \"./EmailSection.vue?vue&type=script&lang=js&\"\nexport * from \"./EmailSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EmailSection.vue?vue&type=style&index=0&id=845b669e&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 \"845b669e\",\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('section',[_c('HeaderBar',{attrs:{\"account-property\":_vm.accountProperty,\"label-for\":\"email\",\"handle-scope-change\":_vm.savePrimaryEmailScope,\"is-editable\":true,\"is-multi-value-supported\":true,\"is-valid-section\":_vm.isValidSection,\"scope\":_vm.primaryEmail.scope},on:{\"update:scope\":function($event){return _vm.$set(_vm.primaryEmail, \"scope\", $event)},\"add-additional\":_vm.onAddAdditionalEmail}}),_vm._v(\" \"),(_vm.displayNameChangeSupported)?[_c('Email',{attrs:{\"primary\":true,\"scope\":_vm.primaryEmail.scope,\"email\":_vm.primaryEmail.value,\"active-notification-email\":_vm.notificationEmail},on:{\"update:scope\":function($event){return _vm.$set(_vm.primaryEmail, \"scope\", $event)},\"update:email\":[function($event){return _vm.$set(_vm.primaryEmail, \"value\", $event)},_vm.onUpdateEmail],\"update:activeNotificationEmail\":function($event){_vm.notificationEmail=$event},\"update:active-notification-email\":function($event){_vm.notificationEmail=$event},\"update:notification-email\":_vm.onUpdateNotificationEmail}})]:_c('span',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.primaryEmail.value || _vm.t('settings', 'No email address set'))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.additionalEmails.length)?[_c('em',{staticClass:\"additional-emails-label\"},[_vm._v(_vm._s(_vm.t('settings', 'Additional emails')))]),_vm._v(\" \"),_vm._l((_vm.additionalEmails),function(additionalEmail,index){return _c('Email',{key:index,attrs:{\"index\":index,\"scope\":additionalEmail.scope,\"email\":additionalEmail.value,\"local-verification-state\":parseInt(additionalEmail.locallyVerified, 10),\"active-notification-email\":_vm.notificationEmail},on:{\"update:scope\":function($event){return _vm.$set(additionalEmail, \"scope\", $event)},\"update:email\":[function($event){return _vm.$set(additionalEmail, \"value\", $event)},_vm.onUpdateEmail],\"update:activeNotificationEmail\":function($event){_vm.notificationEmail=$event},\"update:active-notification-email\":function($event){_vm.notificationEmail=$event},\"update:notification-email\":_vm.onUpdateNotificationEmail,\"delete-additional-email\":function($event){return _vm.onDeleteAdditionalEmail(index)}}})})]:_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"language\">\n\t\t<select id=\"language\"\n\t\t\t:placeholder=\"t('settings', 'Language')\"\n\t\t\t@change=\"onLanguageChange\">\n\t\t\t<option v-for=\"commonLanguage in commonLanguages\"\n\t\t\t\t:key=\"commonLanguage.code\"\n\t\t\t\t:selected=\"language.code === commonLanguage.code\"\n\t\t\t\t:value=\"commonLanguage.code\">\n\t\t\t\t{{ commonLanguage.name }}\n\t\t\t</option>\n\t\t\t<option disabled>\n\t\t\t\t──────────\n\t\t\t</option>\n\t\t\t<option v-for=\"otherLanguage in otherLanguages\"\n\t\t\t\t:key=\"otherLanguage.code\"\n\t\t\t\t:selected=\"language.code === otherLanguage.code\"\n\t\t\t\t:value=\"otherLanguage.code\">\n\t\t\t\t{{ otherLanguage.name }}\n\t\t\t</option>\n\t\t</select>\n\n\t\t<a href=\"https://www.transifex.com/nextcloud/nextcloud/\"\n\t\t\ttarget=\"_blank\"\n\t\t\trel=\"noreferrer noopener\">\n\t\t\t<em>{{ t('settings', 'Help translate') }}</em>\n\t\t</a>\n\t</div>\n</template>\n\n<script>\nimport { showError } from '@nextcloud/dialogs'\n\nimport { ACCOUNT_SETTING_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants'\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService'\nimport { validateLanguage } from '../../../utils/validate'\n\nexport default {\n\tname: 'Language',\n\n\tprops: {\n\t\tcommonLanguages: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\totherLanguages: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\tlanguage: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialLanguage: this.language,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tallLanguages() {\n\t\t\treturn Object.freeze(\n\t\t\t\t[...this.commonLanguages, ...this.otherLanguages]\n\t\t\t\t\t.reduce((acc, { code, name }) => ({ ...acc, [code]: name }), {})\n\t\t\t)\n\t\t},\n\t},\n\n\tmethods: {\n\t\tasync onLanguageChange(e) {\n\t\t\tconst language = this.constructLanguage(e.target.value)\n\t\t\tthis.$emit('update:language', language)\n\n\t\t\tif (validateLanguage(language)) {\n\t\t\t\tawait this.updateLanguage(language)\n\t\t\t}\n\t\t},\n\n\t\tasync updateLanguage(language) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(ACCOUNT_SETTING_PROPERTY_ENUM.LANGUAGE, language.code)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tlanguage,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t\tthis.reloadPage()\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update language'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tconstructLanguage(languageCode) {\n\t\t\treturn {\n\t\t\t\tcode: languageCode,\n\t\t\t\tname: this.allLanguages[languageCode],\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ language, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tthis.initialLanguage = language\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t}\n\t\t},\n\n\t\treloadPage() {\n\t\t\tlocation.reload()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.language {\n\tdisplay: grid;\n\n\tselect {\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 6px 16px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground: var(--icon-triangle-s-000) no-repeat right 4px center;\n\t\tfont-family: var(--font-face);\n\t\tappearance: none;\n\t\tcursor: pointer;\n\t}\n\n\ta {\n\t\tcolor: var(--color-main-text);\n\t\ttext-decoration: none;\n\t\twidth: max-content;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Language.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!./Language.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!./Language.vue?vue&type=style&index=0&id=5396d706&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!./Language.vue?vue&type=style&index=0&id=5396d706&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Language.vue?vue&type=template&id=5396d706&scoped=true&\"\nimport script from \"./Language.vue?vue&type=script&lang=js&\"\nexport * from \"./Language.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Language.vue?vue&type=style&index=0&id=5396d706&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 \"5396d706\",\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:\"language\"},[_c('select',{attrs:{\"id\":\"language\",\"placeholder\":_vm.t('settings', 'Language')},on:{\"change\":_vm.onLanguageChange}},[_vm._l((_vm.commonLanguages),function(commonLanguage){return _c('option',{key:commonLanguage.code,domProps:{\"selected\":_vm.language.code === commonLanguage.code,\"value\":commonLanguage.code}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(commonLanguage.name)+\"\\n\\t\\t\")])}),_vm._v(\" \"),_c('option',{attrs:{\"disabled\":\"\"}},[_vm._v(\"\\n\\t\\t\\t──────────\\n\\t\\t\")]),_vm._v(\" \"),_vm._l((_vm.otherLanguages),function(otherLanguage){return _c('option',{key:otherLanguage.code,domProps:{\"selected\":_vm.language.code === otherLanguage.code,\"value\":otherLanguage.code}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(otherLanguage.name)+\"\\n\\t\\t\")])})],2),_vm._v(\" \"),_c('a',{attrs:{\"href\":\"https://www.transifex.com/nextcloud/nextcloud/\",\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_c('em',[_vm._v(_vm._s(_vm.t('settings', 'Help translate')))])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :account-property=\"accountProperty\"\n\t\t\tlabel-for=\"language\" />\n\n\t\t<template v-if=\"isEditable\">\n\t\t\t<Language :common-languages=\"commonLanguages\"\n\t\t\t\t:other-languages=\"otherLanguages\"\n\t\t\t\t:language.sync=\"language\" />\n\t\t</template>\n\n\t\t<span v-else>\n\t\t\t{{ t('settings', 'No language set') }}\n\t\t</span>\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport Language from './Language'\nimport HeaderBar from '../shared/HeaderBar'\n\nimport { ACCOUNT_SETTING_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants'\n\nconst { languageMap: { activeLanguage, commonLanguages, otherLanguages } } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'LanguageSection',\n\n\tcomponents: {\n\t\tLanguage,\n\t\tHeaderBar,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountProperty: ACCOUNT_SETTING_PROPERTY_READABLE_ENUM.LANGUAGE,\n\t\t\tcommonLanguages,\n\t\t\totherLanguages,\n\t\t\tlanguage: activeLanguage,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisEditable() {\n\t\t\treturn Boolean(this.language)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LanguageSection.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!./LanguageSection.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!./LanguageSection.vue?vue&type=style&index=0&id=16883898&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!./LanguageSection.vue?vue&type=style&index=0&id=16883898&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LanguageSection.vue?vue&type=template&id=16883898&scoped=true&\"\nimport script from \"./LanguageSection.vue?vue&type=script&lang=js&\"\nexport * from \"./LanguageSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LanguageSection.vue?vue&type=style&index=0&id=16883898&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 \"16883898\",\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('section',[_c('HeaderBar',{attrs:{\"account-property\":_vm.accountProperty,\"label-for\":\"language\"}}),_vm._v(\" \"),(_vm.isEditable)?[_c('Language',{attrs:{\"common-languages\":_vm.commonLanguages,\"other-languages\":_vm.otherLanguages,\"language\":_vm.language},on:{\"update:language\":function($event){_vm.language=$event}}})]:_c('span',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'No language set'))+\"\\n\\t\")])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditProfileAnchorLink.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!./EditProfileAnchorLink.vue?vue&type=script&lang=js&\"","<!--\n\t- @copyright 2021 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<a :class=\"{ disabled }\"\n\t\thref=\"#profile-visibility\"\n\t\tv-on=\"$listeners\">\n\t\t<ChevronDownIcon class=\"anchor-icon\"\n\t\t\tdecorative\n\t\t\ttitle=\"\"\n\t\t\t:size=\"22\" />\n\t\t{{ t('settings', 'Edit your Profile visibility') }}\n\t</a>\n</template>\n\n<script>\nimport ChevronDownIcon from 'vue-material-design-icons/ChevronDown'\n\nexport default {\n\tname: 'EditProfileAnchorLink',\n\n\tcomponents: {\n\t\tChevronDownIcon,\n\t},\n\n\tprops: {\n\t\tprofileEnabled: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tdisabled() {\n\t\t\treturn !this.profileEnabled\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\nhtml {\n\tscroll-behavior: smooth;\n\n\t@media screen and (prefers-reduced-motion: reduce) {\n\t\tscroll-behavior: auto;\n\t}\n}\n</style>\n\n<style lang=\"scss\" scoped>\na {\n\tdisplay: block;\n\theight: 44px;\n\twidth: 290px;\n\tline-height: 44px;\n\tpadding: 0 16px;\n\tmargin: 14px auto;\n\tborder-radius: var(--border-radius-pill);\n\topacity: 0.4;\n\tbackground-color: transparent;\n\n\t.anchor-icon {\n\t\tdisplay: inline-block;\n\t\tvertical-align: middle;\n\t\tmargin-top: 6px;\n\t\tmargin-right: 8px;\n\t}\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\topacity: 0.8;\n\t\tbackground-color: rgba(127, 127, 127, .25);\n\t}\n\n\t&.disabled {\n\t\tpointer-events: none;\n\t}\n}\n</style>\n","\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!./EditProfileAnchorLink.vue?vue&type=style&index=0&lang=scss&\";\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!./EditProfileAnchorLink.vue?vue&type=style&index=0&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","\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!./EditProfileAnchorLink.vue?vue&type=style&index=1&id=73817e9f&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!./EditProfileAnchorLink.vue?vue&type=style&index=1&id=73817e9f&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./EditProfileAnchorLink.vue?vue&type=template&id=73817e9f&scoped=true&\"\nimport script from \"./EditProfileAnchorLink.vue?vue&type=script&lang=js&\"\nexport * from \"./EditProfileAnchorLink.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EditProfileAnchorLink.vue?vue&type=style&index=0&lang=scss&\"\nimport style1 from \"./EditProfileAnchorLink.vue?vue&type=style&index=1&id=73817e9f&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 \"73817e9f\",\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('a',_vm._g({class:{ disabled: _vm.disabled },attrs:{\"href\":\"#profile-visibility\"}},_vm.$listeners),[_c('ChevronDownIcon',{staticClass:\"anchor-icon\",attrs:{\"decorative\":\"\",\"title\":\"\",\"size\":22}}),_vm._v(\"\\n\\t\"+_vm._s(_vm.t('settings', 'Edit your Profile visibility'))+\"\\n\")],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"checkbox-container\">\n\t\t<input id=\"enable-profile\"\n\t\t\tclass=\"checkbox\"\n\t\t\ttype=\"checkbox\"\n\t\t\t:checked=\"profileEnabled\"\n\t\t\t@change=\"onEnableProfileChange\">\n\t\t<label for=\"enable-profile\">\n\t\t\t{{ t('settings', 'Enable Profile') }}\n\t\t</label>\n\t</div>\n</template>\n\n<script>\nimport { showError } from '@nextcloud/dialogs'\nimport { emit } from '@nextcloud/event-bus'\n\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService'\nimport { validateBoolean } from '../../../utils/validate'\nimport { ACCOUNT_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants'\n\nexport default {\n\tname: 'ProfileCheckbox',\n\n\tprops: {\n\t\tprofileEnabled: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialProfileEnabled: this.profileEnabled,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tasync onEnableProfileChange(e) {\n\t\t\tconst isEnabled = e.target.checked\n\t\t\tthis.$emit('update:profile-enabled', isEnabled)\n\n\t\t\tif (validateBoolean(isEnabled)) {\n\t\t\t\tawait this.updateEnableProfile(isEnabled)\n\t\t\t}\n\t\t},\n\n\t\tasync updateEnableProfile(isEnabled) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(ACCOUNT_PROPERTY_ENUM.PROFILE_ENABLED, isEnabled)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tisEnabled,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update profile enabled state'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ isEnabled, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tthis.initialProfileEnabled = isEnabled\n\t\t\t\temit('settings:profile-enabled:updated', isEnabled)\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileCheckbox.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!./ProfileCheckbox.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ProfileCheckbox.vue?vue&type=template&id=b6898860&scoped=true&\"\nimport script from \"./ProfileCheckbox.vue?vue&type=script&lang=js&\"\nexport * from \"./ProfileCheckbox.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b6898860\",\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:\"checkbox-container\"},[_c('input',{staticClass:\"checkbox\",attrs:{\"id\":\"enable-profile\",\"type\":\"checkbox\"},domProps:{\"checked\":_vm.profileEnabled},on:{\"change\":_vm.onEnableProfileChange}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"enable-profile\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Enable Profile'))+\"\\n\\t\")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfilePreviewCard.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!./ProfilePreviewCard.vue?vue&type=script&lang=js&\"","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<a class=\"preview-card\"\n\t\t:class=\"{ disabled }\"\n\t\t:href=\"profilePageLink\">\n\t\t<Avatar class=\"preview-card__avatar\"\n\t\t\t:user=\"userId\"\n\t\t\t:size=\"48\"\n\t\t\t:show-user-status=\"true\"\n\t\t\t:show-user-status-compact=\"false\"\n\t\t\t:disable-menu=\"true\"\n\t\t\t:disable-tooltip=\"true\" />\n\t\t<div class=\"preview-card__header\">\n\t\t\t<span>{{ displayName }}</span>\n\t\t</div>\n\t\t<div class=\"preview-card__footer\">\n\t\t\t<span>{{ organisation }}</span>\n\t\t</div>\n\t</a>\n</template>\n\n<script>\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateUrl } from '@nextcloud/router'\n\nimport Avatar from '@nextcloud/vue/dist/Components/Avatar'\n\nexport default {\n\tname: 'ProfilePreviewCard',\n\n\tcomponents: {\n\t\tAvatar,\n\t},\n\n\tprops: {\n\t\tdisplayName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\torganisation: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tprofileEnabled: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tuserId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tdisabled() {\n\t\t\treturn !this.profileEnabled\n\t\t},\n\n\t\tprofilePageLink() {\n\t\t\tif (this.profileEnabled) {\n\t\t\t\treturn generateUrl('/u/{userId}', { userId: getCurrentUser().uid })\n\t\t\t}\n\t\t\t// Since an anchor element is used rather than a button for better UX,\n\t\t\t// this hack removes href if the profile is disabled so that disabling pointer-events is not needed to prevent a click from opening a page\n\t\t\t// and to allow the hover event (which disabling pointer-events wouldn't allow) for styling\n\t\t\treturn null\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.preview-card {\n\tdisplay: flex;\n\tflex-direction: column;\n\tposition: relative;\n\twidth: 290px;\n\theight: 116px;\n\tmargin: 14px auto;\n\tborder-radius: var(--border-radius-large);\n\tbackground-color: var(--color-main-background);\n\tfont-weight: bold;\n\tbox-shadow: 0 2px 9px var(--color-box-shadow);\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbox-shadow: 0 2px 12px var(--color-box-shadow);\n\t}\n\n\t&:focus-visible {\n\t\toutline: var(--color-main-text) solid 1px;\n\t\toutline-offset: 3px;\n\t}\n\n\t&.disabled {\n\t\tfilter: grayscale(1);\n\t\topacity: 0.5;\n\t\tcursor: default;\n\t\tbox-shadow: 0 0 3px var(--color-box-shadow);\n\n\t\t& *,\n\t\t&::v-deep * {\n\t\t\tcursor: default;\n\t\t}\n\t}\n\n\t&__avatar {\n\t\t// Override Avatar component position to fix positioning on rerender\n\t\tposition: absolute !important;\n\t\ttop: 40px;\n\t\tleft: 18px;\n\t\tz-index: 1;\n\n\t\t&:not(.avatardiv--unknown) {\n\t\t\tbox-shadow: 0 0 0 3px var(--color-main-background) !important;\n\t\t}\n\t}\n\n\t&__header,\n\t&__footer {\n\t\tposition: relative;\n\t\twidth: auto;\n\n\t\tspan {\n\t\t\tposition: absolute;\n\t\t\tleft: 78px;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\tword-break: break-all;\n\n\t\t\t@supports (-webkit-line-clamp: 2) {\n\t\t\t\tdisplay: -webkit-box;\n\t\t\t\t-webkit-line-clamp: 2;\n\t\t\t\t-webkit-box-orient: vertical;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__header {\n\t\theight: 70px;\n\t\tborder-radius: var(--border-radius-large) var(--border-radius-large) 0 0;\n\n\t\tspan {\n\t\t\tbottom: 0;\n\t\t\tcolor: var(--color-primary-text);\n\t\t\tfont-size: 18px;\n\t\t\tfont-weight: bold;\n\t\t\tmargin: 0 4px 8px 0;\n\t\t}\n\t}\n\n\t&__footer {\n\t\theight: 46px;\n\n\t\tspan {\n\t\t\ttop: 0;\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\tfont-size: 14px;\n\t\t\tfont-weight: normal;\n\t\t\tmargin: 4px 4px 0 0;\n\t\t\tline-height: 1.3;\n\t\t}\n\t}\n}\n</style>\n","\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!./ProfilePreviewCard.vue?vue&type=style&index=0&id=79bf7437&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!./ProfilePreviewCard.vue?vue&type=style&index=0&id=79bf7437&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ProfilePreviewCard.vue?vue&type=template&id=79bf7437&scoped=true&\"\nimport script from \"./ProfilePreviewCard.vue?vue&type=script&lang=js&\"\nexport * from \"./ProfilePreviewCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProfilePreviewCard.vue?vue&type=style&index=0&id=79bf7437&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 \"79bf7437\",\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('a',{staticClass:\"preview-card\",class:{ disabled: _vm.disabled },attrs:{\"href\":_vm.profilePageLink}},[_c('Avatar',{staticClass:\"preview-card__avatar\",attrs:{\"user\":_vm.userId,\"size\":48,\"show-user-status\":true,\"show-user-status-compact\":false,\"disable-menu\":true,\"disable-tooltip\":true}}),_vm._v(\" \"),_c('div',{staticClass:\"preview-card__header\"},[_c('span',[_vm._v(_vm._s(_vm.displayName))])]),_vm._v(\" \"),_c('div',{staticClass:\"preview-card__footer\"},[_c('span',[_vm._v(_vm._s(_vm.organisation))])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :account-property=\"accountProperty\" />\n\n\t\t<ProfileCheckbox :profile-enabled.sync=\"profileEnabled\" />\n\n\t\t<ProfilePreviewCard :organisation=\"organisation\"\n\t\t\t:display-name=\"displayName\"\n\t\t\t:profile-enabled=\"profileEnabled\"\n\t\t\t:user-id=\"userId\" />\n\n\t\t<EditProfileAnchorLink :profile-enabled=\"profileEnabled\" />\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\n\nimport EditProfileAnchorLink from './EditProfileAnchorLink'\nimport HeaderBar from '../shared/HeaderBar'\nimport ProfileCheckbox from './ProfileCheckbox'\nimport ProfilePreviewCard from './ProfilePreviewCard'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants'\n\nconst {\n\torganisationMap: { primaryOrganisation: { value: organisation } },\n\tdisplayNameMap: { primaryDisplayName: { value: displayName } },\n\tprofileEnabled,\n\tuserId,\n} = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'ProfileSection',\n\n\tcomponents: {\n\t\tEditProfileAnchorLink,\n\t\tHeaderBar,\n\t\tProfileCheckbox,\n\t\tProfilePreviewCard,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED,\n\t\t\torganisation,\n\t\t\tdisplayName,\n\t\t\tprofileEnabled,\n\t\t\tuserId,\n\t\t}\n\t},\n\n\tmounted() {\n\t\tsubscribe('settings:display-name:updated', this.handleDisplayNameUpdate)\n\t\tsubscribe('settings:organisation:updated', this.handleOrganisationUpdate)\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('settings:display-name:updated', this.handleDisplayNameUpdate)\n\t\tunsubscribe('settings:organisation:updated', this.handleOrganisationUpdate)\n\t},\n\n\tmethods: {\n\t\thandleDisplayNameUpdate(displayName) {\n\t\t\tthis.displayName = displayName\n\t\t},\n\n\t\thandleOrganisationUpdate(organisation) {\n\t\t\tthis.organisation = organisation\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileSection.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!./ProfileSection.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!./ProfileSection.vue?vue&type=style&index=0&id=252753e6&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!./ProfileSection.vue?vue&type=style&index=0&id=252753e6&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ProfileSection.vue?vue&type=template&id=252753e6&scoped=true&\"\nimport script from \"./ProfileSection.vue?vue&type=script&lang=js&\"\nexport * from \"./ProfileSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProfileSection.vue?vue&type=style&index=0&id=252753e6&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 \"252753e6\",\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('section',[_c('HeaderBar',{attrs:{\"account-property\":_vm.accountProperty}}),_vm._v(\" \"),_c('ProfileCheckbox',{attrs:{\"profile-enabled\":_vm.profileEnabled},on:{\"update:profileEnabled\":function($event){_vm.profileEnabled=$event},\"update:profile-enabled\":function($event){_vm.profileEnabled=$event}}}),_vm._v(\" \"),_c('ProfilePreviewCard',{attrs:{\"organisation\":_vm.organisation,\"display-name\":_vm.displayName,\"profile-enabled\":_vm.profileEnabled,\"user-id\":_vm.userId}}),_vm._v(\" \"),_c('EditProfileAnchorLink',{attrs:{\"profile-enabled\":_vm.profileEnabled}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"organisation\">\n\t\t<input id=\"organisation\"\n\t\t\ttype=\"text\"\n\t\t\t:placeholder=\"t('settings', 'Your organisation')\"\n\t\t\t:value=\"organisation\"\n\t\t\tautocapitalize=\"none\"\n\t\t\tautocomplete=\"on\"\n\t\t\tautocorrect=\"off\"\n\t\t\t@input=\"onOrganisationChange\">\n\n\t\t<div class=\"organisation__actions-container\">\n\t\t\t<transition name=\"fade\">\n\t\t\t\t<span v-if=\"showCheckmarkIcon\" class=\"icon-checkmark\" />\n\t\t\t\t<span v-else-if=\"showErrorIcon\" class=\"icon-error\" />\n\t\t\t</transition>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { showError } from '@nextcloud/dialogs'\nimport { emit } from '@nextcloud/event-bus'\nimport debounce from 'debounce'\n\nimport { ACCOUNT_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants'\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService'\n\nexport default {\n\tname: 'Organisation',\n\n\tprops: {\n\t\torganisation: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialOrganisation: this.organisation,\n\t\t\tlocalScope: this.scope,\n\t\t\tshowCheckmarkIcon: false,\n\t\t\tshowErrorIcon: false,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonOrganisationChange(e) {\n\t\t\tthis.$emit('update:organisation', e.target.value)\n\t\t\tthis.debounceOrganisationChange(e.target.value.trim())\n\t\t},\n\n\t\tdebounceOrganisationChange: debounce(async function(organisation) {\n\t\t\tawait this.updatePrimaryOrganisation(organisation)\n\t\t}, 500),\n\n\t\tasync updatePrimaryOrganisation(organisation) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(ACCOUNT_PROPERTY_ENUM.ORGANISATION, organisation)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\torganisation,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update organisation'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ organisation, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tthis.initialOrganisation = organisation\n\t\t\t\temit('settings:organisation:updated', organisation)\n\t\t\t\tthis.showCheckmarkIcon = true\n\t\t\t\tsetTimeout(() => { this.showCheckmarkIcon = false }, 2000)\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t\tthis.showErrorIcon = true\n\t\t\t\tsetTimeout(() => { this.showErrorIcon = false }, 2000)\n\t\t\t}\n\t\t},\n\n\t\tonScopeChange(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.organisation {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\t}\n\n\t.organisation__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Organisation.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!./Organisation.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!./Organisation.vue?vue&type=style&index=0&id=591cd6b6&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!./Organisation.vue?vue&type=style&index=0&id=591cd6b6&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Organisation.vue?vue&type=template&id=591cd6b6&scoped=true&\"\nimport script from \"./Organisation.vue?vue&type=script&lang=js&\"\nexport * from \"./Organisation.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Organisation.vue?vue&type=style&index=0&id=591cd6b6&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 \"591cd6b6\",\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:\"organisation\"},[_c('input',{attrs:{\"id\":\"organisation\",\"type\":\"text\",\"placeholder\":_vm.t('settings', 'Your organisation'),\"autocapitalize\":\"none\",\"autocomplete\":\"on\",\"autocorrect\":\"off\"},domProps:{\"value\":_vm.organisation},on:{\"input\":_vm.onOrganisationChange}}),_vm._v(\" \"),_c('div',{staticClass:\"organisation__actions-container\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.showCheckmarkIcon)?_c('span',{staticClass:\"icon-checkmark\"}):(_vm.showErrorIcon)?_c('span',{staticClass:\"icon-error\"}):_vm._e()])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :account-property=\"accountProperty\"\n\t\t\tlabel-for=\"organisation\"\n\t\t\t:scope.sync=\"primaryOrganisation.scope\" />\n\n\t\t<Organisation :organisation.sync=\"primaryOrganisation.value\"\n\t\t\t:scope.sync=\"primaryOrganisation.scope\" />\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport Organisation from './Organisation'\nimport HeaderBar from '../shared/HeaderBar'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants'\n\nconst { organisationMap: { primaryOrganisation } } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'OrganisationSection',\n\n\tcomponents: {\n\t\tOrganisation,\n\t\tHeaderBar,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION,\n\t\t\tprimaryOrganisation,\n\t\t}\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrganisationSection.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!./OrganisationSection.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!./OrganisationSection.vue?vue&type=style&index=0&id=43146ff7&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!./OrganisationSection.vue?vue&type=style&index=0&id=43146ff7&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./OrganisationSection.vue?vue&type=template&id=43146ff7&scoped=true&\"\nimport script from \"./OrganisationSection.vue?vue&type=script&lang=js&\"\nexport * from \"./OrganisationSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./OrganisationSection.vue?vue&type=style&index=0&id=43146ff7&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 \"43146ff7\",\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('section',[_c('HeaderBar',{attrs:{\"account-property\":_vm.accountProperty,\"label-for\":\"organisation\",\"scope\":_vm.primaryOrganisation.scope},on:{\"update:scope\":function($event){return _vm.$set(_vm.primaryOrganisation, \"scope\", $event)}}}),_vm._v(\" \"),_c('Organisation',{attrs:{\"organisation\":_vm.primaryOrganisation.value,\"scope\":_vm.primaryOrganisation.scope},on:{\"update:organisation\":function($event){return _vm.$set(_vm.primaryOrganisation, \"value\", $event)},\"update:scope\":function($event){return _vm.$set(_vm.primaryOrganisation, \"scope\", $event)}}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"role\">\n\t\t<input id=\"role\"\n\t\t\ttype=\"text\"\n\t\t\t:placeholder=\"t('settings', 'Your role')\"\n\t\t\t:value=\"role\"\n\t\t\tautocapitalize=\"none\"\n\t\t\tautocomplete=\"on\"\n\t\t\tautocorrect=\"off\"\n\t\t\t@input=\"onRoleChange\">\n\n\t\t<div class=\"role__actions-container\">\n\t\t\t<transition name=\"fade\">\n\t\t\t\t<span v-if=\"showCheckmarkIcon\" class=\"icon-checkmark\" />\n\t\t\t\t<span v-else-if=\"showErrorIcon\" class=\"icon-error\" />\n\t\t\t</transition>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { showError } from '@nextcloud/dialogs'\nimport { emit } from '@nextcloud/event-bus'\nimport debounce from 'debounce'\n\nimport { ACCOUNT_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants'\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService'\n\nexport default {\n\tname: 'Role',\n\n\tprops: {\n\t\trole: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialRole: this.role,\n\t\t\tlocalScope: this.scope,\n\t\t\tshowCheckmarkIcon: false,\n\t\t\tshowErrorIcon: false,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonRoleChange(e) {\n\t\t\tthis.$emit('update:role', e.target.value)\n\t\t\tthis.debounceRoleChange(e.target.value.trim())\n\t\t},\n\n\t\tdebounceRoleChange: debounce(async function(role) {\n\t\t\tawait this.updatePrimaryRole(role)\n\t\t}, 500),\n\n\t\tasync updatePrimaryRole(role) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(ACCOUNT_PROPERTY_ENUM.ROLE, role)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\trole,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update role'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ role, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tthis.initialRole = role\n\t\t\t\temit('settings:role:updated', role)\n\t\t\t\tthis.showCheckmarkIcon = true\n\t\t\t\tsetTimeout(() => { this.showCheckmarkIcon = false }, 2000)\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t\tthis.showErrorIcon = true\n\t\t\t\tsetTimeout(() => { this.showErrorIcon = false }, 2000)\n\t\t\t}\n\t\t},\n\n\t\tonScopeChange(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.role {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\t}\n\n\t.role__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Role.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!./Role.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!./Role.vue?vue&type=style&index=0&id=aac18396&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!./Role.vue?vue&type=style&index=0&id=aac18396&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Role.vue?vue&type=template&id=aac18396&scoped=true&\"\nimport script from \"./Role.vue?vue&type=script&lang=js&\"\nexport * from \"./Role.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Role.vue?vue&type=style&index=0&id=aac18396&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 \"aac18396\",\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:\"role\"},[_c('input',{attrs:{\"id\":\"role\",\"type\":\"text\",\"placeholder\":_vm.t('settings', 'Your role'),\"autocapitalize\":\"none\",\"autocomplete\":\"on\",\"autocorrect\":\"off\"},domProps:{\"value\":_vm.role},on:{\"input\":_vm.onRoleChange}}),_vm._v(\" \"),_c('div',{staticClass:\"role__actions-container\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.showCheckmarkIcon)?_c('span',{staticClass:\"icon-checkmark\"}):(_vm.showErrorIcon)?_c('span',{staticClass:\"icon-error\"}):_vm._e()])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :account-property=\"accountProperty\"\n\t\t\tlabel-for=\"role\"\n\t\t\t:scope.sync=\"primaryRole.scope\" />\n\n\t\t<Role :role.sync=\"primaryRole.value\"\n\t\t\t:scope.sync=\"primaryRole.scope\" />\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport Role from './Role'\nimport HeaderBar from '../shared/HeaderBar'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants'\n\nconst { roleMap: { primaryRole } } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'RoleSection',\n\n\tcomponents: {\n\t\tRole,\n\t\tHeaderBar,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.ROLE,\n\t\t\tprimaryRole,\n\t\t}\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RoleSection.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!./RoleSection.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!./RoleSection.vue?vue&type=style&index=0&id=f3d959c2&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!./RoleSection.vue?vue&type=style&index=0&id=f3d959c2&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RoleSection.vue?vue&type=template&id=f3d959c2&scoped=true&\"\nimport script from \"./RoleSection.vue?vue&type=script&lang=js&\"\nexport * from \"./RoleSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RoleSection.vue?vue&type=style&index=0&id=f3d959c2&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 \"f3d959c2\",\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('section',[_c('HeaderBar',{attrs:{\"account-property\":_vm.accountProperty,\"label-for\":\"role\",\"scope\":_vm.primaryRole.scope},on:{\"update:scope\":function($event){return _vm.$set(_vm.primaryRole, \"scope\", $event)}}}),_vm._v(\" \"),_c('Role',{attrs:{\"role\":_vm.primaryRole.value,\"scope\":_vm.primaryRole.scope},on:{\"update:role\":function($event){return _vm.$set(_vm.primaryRole, \"value\", $event)},\"update:scope\":function($event){return _vm.$set(_vm.primaryRole, \"scope\", $event)}}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"headline\">\n\t\t<input id=\"headline\"\n\t\t\ttype=\"text\"\n\t\t\t:placeholder=\"t('settings', 'Your headline')\"\n\t\t\t:value=\"headline\"\n\t\t\tautocapitalize=\"none\"\n\t\t\tautocomplete=\"on\"\n\t\t\tautocorrect=\"off\"\n\t\t\t@input=\"onHeadlineChange\">\n\n\t\t<div class=\"headline__actions-container\">\n\t\t\t<transition name=\"fade\">\n\t\t\t\t<span v-if=\"showCheckmarkIcon\" class=\"icon-checkmark\" />\n\t\t\t\t<span v-else-if=\"showErrorIcon\" class=\"icon-error\" />\n\t\t\t</transition>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { showError } from '@nextcloud/dialogs'\nimport { emit } from '@nextcloud/event-bus'\nimport debounce from 'debounce'\n\nimport { ACCOUNT_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants'\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService'\n\nexport default {\n\tname: 'Headline',\n\n\tprops: {\n\t\theadline: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialHeadline: this.headline,\n\t\t\tlocalScope: this.scope,\n\t\t\tshowCheckmarkIcon: false,\n\t\t\tshowErrorIcon: false,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonHeadlineChange(e) {\n\t\t\tthis.$emit('update:headline', e.target.value)\n\t\t\tthis.debounceHeadlineChange(e.target.value.trim())\n\t\t},\n\n\t\tdebounceHeadlineChange: debounce(async function(headline) {\n\t\t\tawait this.updatePrimaryHeadline(headline)\n\t\t}, 500),\n\n\t\tasync updatePrimaryHeadline(headline) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(ACCOUNT_PROPERTY_ENUM.HEADLINE, headline)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\theadline,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update headline'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ headline, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tthis.initialHeadline = headline\n\t\t\t\temit('settings:headline:updated', headline)\n\t\t\t\tthis.showCheckmarkIcon = true\n\t\t\t\tsetTimeout(() => { this.showCheckmarkIcon = false }, 2000)\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t\tthis.showErrorIcon = true\n\t\t\t\tsetTimeout(() => { this.showErrorIcon = false }, 2000)\n\t\t\t}\n\t\t},\n\n\t\tonScopeChange(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.headline {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\t}\n\n\t.headline__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Headline.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!./Headline.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!./Headline.vue?vue&type=style&index=0&id=64e0e0bd&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!./Headline.vue?vue&type=style&index=0&id=64e0e0bd&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Headline.vue?vue&type=template&id=64e0e0bd&scoped=true&\"\nimport script from \"./Headline.vue?vue&type=script&lang=js&\"\nexport * from \"./Headline.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Headline.vue?vue&type=style&index=0&id=64e0e0bd&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 \"64e0e0bd\",\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:\"headline\"},[_c('input',{attrs:{\"id\":\"headline\",\"type\":\"text\",\"placeholder\":_vm.t('settings', 'Your headline'),\"autocapitalize\":\"none\",\"autocomplete\":\"on\",\"autocorrect\":\"off\"},domProps:{\"value\":_vm.headline},on:{\"input\":_vm.onHeadlineChange}}),_vm._v(\" \"),_c('div',{staticClass:\"headline__actions-container\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.showCheckmarkIcon)?_c('span',{staticClass:\"icon-checkmark\"}):(_vm.showErrorIcon)?_c('span',{staticClass:\"icon-error\"}):_vm._e()])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :account-property=\"accountProperty\"\n\t\t\tlabel-for=\"headline\"\n\t\t\t:scope.sync=\"primaryHeadline.scope\" />\n\n\t\t<Headline :headline.sync=\"primaryHeadline.value\"\n\t\t\t:scope.sync=\"primaryHeadline.scope\" />\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport Headline from './Headline'\nimport HeaderBar from '../shared/HeaderBar'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants'\n\nconst { headlineMap: { primaryHeadline } } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'HeadlineSection',\n\n\tcomponents: {\n\t\tHeadline,\n\t\tHeaderBar,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE,\n\t\t\tprimaryHeadline,\n\t\t}\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeadlineSection.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!./HeadlineSection.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!./HeadlineSection.vue?vue&type=style&index=0&id=187bb5da&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!./HeadlineSection.vue?vue&type=style&index=0&id=187bb5da&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./HeadlineSection.vue?vue&type=template&id=187bb5da&scoped=true&\"\nimport script from \"./HeadlineSection.vue?vue&type=script&lang=js&\"\nexport * from \"./HeadlineSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./HeadlineSection.vue?vue&type=style&index=0&id=187bb5da&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 \"187bb5da\",\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('section',[_c('HeaderBar',{attrs:{\"account-property\":_vm.accountProperty,\"label-for\":\"headline\",\"scope\":_vm.primaryHeadline.scope},on:{\"update:scope\":function($event){return _vm.$set(_vm.primaryHeadline, \"scope\", $event)}}}),_vm._v(\" \"),_c('Headline',{attrs:{\"headline\":_vm.primaryHeadline.value,\"scope\":_vm.primaryHeadline.scope},on:{\"update:headline\":function($event){return _vm.$set(_vm.primaryHeadline, \"value\", $event)},\"update:scope\":function($event){return _vm.$set(_vm.primaryHeadline, \"scope\", $event)}}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"biography\">\n\t\t<textarea id=\"biography\"\n\t\t\t:placeholder=\"t('settings', 'Your biography')\"\n\t\t\t:value=\"biography\"\n\t\t\trows=\"8\"\n\t\t\tautocapitalize=\"none\"\n\t\t\tautocomplete=\"off\"\n\t\t\tautocorrect=\"off\"\n\t\t\t@input=\"onBiographyChange\" />\n\n\t\t<div class=\"biography__actions-container\">\n\t\t\t<transition name=\"fade\">\n\t\t\t\t<span v-if=\"showCheckmarkIcon\" class=\"icon-checkmark\" />\n\t\t\t\t<span v-else-if=\"showErrorIcon\" class=\"icon-error\" />\n\t\t\t</transition>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { showError } from '@nextcloud/dialogs'\nimport { emit } from '@nextcloud/event-bus'\nimport debounce from 'debounce'\n\nimport { ACCOUNT_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants'\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService'\n\nexport default {\n\tname: 'Biography',\n\n\tprops: {\n\t\tbiography: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialBiography: this.biography,\n\t\t\tlocalScope: this.scope,\n\t\t\tshowCheckmarkIcon: false,\n\t\t\tshowErrorIcon: false,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonBiographyChange(e) {\n\t\t\tthis.$emit('update:biography', e.target.value)\n\t\t\tthis.debounceBiographyChange(e.target.value.trim())\n\t\t},\n\n\t\tdebounceBiographyChange: debounce(async function(biography) {\n\t\t\tawait this.updatePrimaryBiography(biography)\n\t\t}, 500),\n\n\t\tasync updatePrimaryBiography(biography) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(ACCOUNT_PROPERTY_ENUM.BIOGRAPHY, biography)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tbiography,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update biography'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ biography, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tthis.initialBiography = biography\n\t\t\t\temit('settings:biography:updated', biography)\n\t\t\t\tthis.showCheckmarkIcon = true\n\t\t\t\tsetTimeout(() => { this.showCheckmarkIcon = false }, 2000)\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t\tthis.showErrorIcon = true\n\t\t\t\tsetTimeout(() => { this.showErrorIcon = false }, 2000)\n\t\t\t}\n\t\t},\n\n\t\tonScopeChange(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.biography {\n\tdisplay: grid;\n\talign-items: center;\n\n\ttextarea {\n\t\tresize: vertical;\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\n\t\t&:hover,\n\t\t&:focus,\n\t\t&:active {\n\t\t\tborder-color: var(--color-primary-element) !important;\n\t\t\toutline: none !important;\n\t\t}\n\t}\n\n\t.biography__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\talign-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\t\tmargin-bottom: 5px;\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Biography.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!./Biography.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!./Biography.vue?vue&type=style&index=0&id=0fbf56a9&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!./Biography.vue?vue&type=style&index=0&id=0fbf56a9&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Biography.vue?vue&type=template&id=0fbf56a9&scoped=true&\"\nimport script from \"./Biography.vue?vue&type=script&lang=js&\"\nexport * from \"./Biography.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Biography.vue?vue&type=style&index=0&id=0fbf56a9&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 \"0fbf56a9\",\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:\"biography\"},[_c('textarea',{attrs:{\"id\":\"biography\",\"placeholder\":_vm.t('settings', 'Your biography'),\"rows\":\"8\",\"autocapitalize\":\"none\",\"autocomplete\":\"off\",\"autocorrect\":\"off\"},domProps:{\"value\":_vm.biography},on:{\"input\":_vm.onBiographyChange}}),_vm._v(\" \"),_c('div',{staticClass:\"biography__actions-container\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.showCheckmarkIcon)?_c('span',{staticClass:\"icon-checkmark\"}):(_vm.showErrorIcon)?_c('span',{staticClass:\"icon-error\"}):_vm._e()])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :account-property=\"accountProperty\"\n\t\t\tlabel-for=\"biography\"\n\t\t\t:scope.sync=\"primaryBiography.scope\" />\n\n\t\t<Biography :biography.sync=\"primaryBiography.value\"\n\t\t\t:scope.sync=\"primaryBiography.scope\" />\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport Biography from './Biography'\nimport HeaderBar from '../shared/HeaderBar'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants'\n\nconst { biographyMap: { primaryBiography } } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'BiographySection',\n\n\tcomponents: {\n\t\tBiography,\n\t\tHeaderBar,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY,\n\t\t\tprimaryBiography,\n\t\t}\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BiographySection.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!./BiographySection.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!./BiographySection.vue?vue&type=style&index=0&id=cfa727da&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!./BiographySection.vue?vue&type=style&index=0&id=cfa727da&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./BiographySection.vue?vue&type=template&id=cfa727da&scoped=true&\"\nimport script from \"./BiographySection.vue?vue&type=script&lang=js&\"\nexport * from \"./BiographySection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BiographySection.vue?vue&type=style&index=0&id=cfa727da&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 \"cfa727da\",\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('section',[_c('HeaderBar',{attrs:{\"account-property\":_vm.accountProperty,\"label-for\":\"biography\",\"scope\":_vm.primaryBiography.scope},on:{\"update:scope\":function($event){return _vm.$set(_vm.primaryBiography, \"scope\", $event)}}}),_vm._v(\" \"),_c('Biography',{attrs:{\"biography\":_vm.primaryBiography.value,\"scope\":_vm.primaryBiography.scope},on:{\"update:biography\":function($event){return _vm.$set(_vm.primaryBiography, \"value\", $event)},\"update:scope\":function($event){return _vm.$set(_vm.primaryBiography, \"scope\", $event)}}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2021 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\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 */\n\nimport axios from '@nextcloud/axios'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport confirmPassword from '@nextcloud/password-confirmation'\n\n/**\n * Save the visibility of the profile parameter\n *\n * @param {string} paramId the profile parameter ID\n * @param {string} visibility the visibility\n * @return {object}\n */\nexport const saveProfileParameterVisibility = async (paramId, visibility) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('/profile/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tparamId,\n\t\tvisibility,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save profile default\n *\n * @param {boolean} isEnabled the default\n * @return {object}\n */\nexport const saveProfileDefault = async (isEnabled) => {\n\t// Convert to string for compatibility\n\tisEnabled = isEnabled ? '1' : '0'\n\n\tconst url = generateOcsUrl('/apps/provisioning_api/api/v1/config/apps/{appId}/{key}', {\n\t\tappId: 'settings',\n\t\tkey: 'profile_enabled_by_default',\n\t})\n\n\tawait confirmPassword()\n\n\tconst res = await axios.post(url, {\n\t\tvalue: isEnabled,\n\t})\n\n\treturn res.data\n}\n","/**\n * @copyright 2021 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\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 */\n\n/*\n * SYNC to be kept in sync with `core/Db/ProfileConfig.php`\n */\n\n/** Enum of profile visibility constants */\nexport const VISIBILITY_ENUM = Object.freeze({\n\tSHOW: 'show',\n\tSHOW_USERS_ONLY: 'show_users_only',\n\tHIDE: 'hide',\n})\n\n/**\n * Enum of profile visibility constants to properties\n */\nexport const VISIBILITY_PROPERTY_ENUM = Object.freeze({\n\t[VISIBILITY_ENUM.SHOW]: {\n\t\tname: VISIBILITY_ENUM.SHOW,\n\t\tlabel: t('settings', 'Show to everyone'),\n\t},\n\t[VISIBILITY_ENUM.SHOW_USERS_ONLY]: {\n\t\tname: VISIBILITY_ENUM.SHOW_USERS_ONLY,\n\t\tlabel: t('settings', 'Show to logged in users only'),\n\t},\n\t[VISIBILITY_ENUM.HIDE]: {\n\t\tname: VISIBILITY_ENUM.HIDE,\n\t\tlabel: t('settings', 'Hide'),\n\t},\n})\n","<!--\n\t- @copyright 2021 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"visibility-container\"\n\t\t:class=\"{ disabled }\">\n\t\t<label :for=\"inputId\">\n\t\t\t{{ t('settings', '{displayId}', { displayId }) }}\n\t\t</label>\n\t\t<Multiselect :id=\"inputId\"\n\t\t\tclass=\"visibility-container__multiselect\"\n\t\t\t:options=\"visibilityOptions\"\n\t\t\ttrack-by=\"name\"\n\t\t\tlabel=\"label\"\n\t\t\t:value=\"visibilityObject\"\n\t\t\t@change=\"onVisibilityChange\" />\n\t</div>\n</template>\n\n<script>\nimport { showError } from '@nextcloud/dialogs'\nimport { loadState } from '@nextcloud/initial-state'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\n\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\n\nimport { saveProfileParameterVisibility } from '../../../service/ProfileService'\nimport { validateStringInput } from '../../../utils/validate'\nimport { VISIBILITY_PROPERTY_ENUM } from '../../../constants/ProfileConstants'\n\nconst { profileEnabled } = loadState('settings', 'personalInfoParameters', false)\n\nexport default {\n\tname: 'VisibilityDropdown',\n\n\tcomponents: {\n\t\tMultiselect,\n\t},\n\n\tprops: {\n\t\tparamId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdisplayId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tvisibility: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialVisibility: this.visibility,\n\t\t\tprofileEnabled,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tdisabled() {\n\t\t\treturn !this.profileEnabled\n\t\t},\n\n\t\tinputId() {\n\t\t\treturn `profile-visibility-${this.paramId}`\n\t\t},\n\n\t\tvisibilityObject() {\n\t\t\treturn VISIBILITY_PROPERTY_ENUM[this.visibility]\n\t\t},\n\n\t\tvisibilityOptions() {\n\t\t\treturn Object.values(VISIBILITY_PROPERTY_ENUM)\n\t\t},\n\t},\n\n\tmounted() {\n\t\tsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\t},\n\n\tmethods: {\n\t\tasync onVisibilityChange(visibilityObject) {\n\t\t\t// This check is needed as the argument is null when selecting the same option\n\t\t\tif (visibilityObject !== null) {\n\t\t\t\tconst { name: visibility } = visibilityObject\n\t\t\t\tthis.$emit('update:visibility', visibility)\n\n\t\t\t\tif (validateStringInput(visibility)) {\n\t\t\t\t\tawait this.updateVisibility(visibility)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tasync updateVisibility(visibility) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await saveProfileParameterVisibility(this.paramId, visibility)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tvisibility,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update visibility of {displayId}', { displayId: this.displayId }),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ visibility, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tthis.initialVisibility = visibility\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t}\n\t\t},\n\n\t\thandleProfileEnabledUpdate(profileEnabled) {\n\t\t\tthis.profileEnabled = profileEnabled\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.visibility-container {\n\tdisplay: flex;\n\twidth: max-content;\n\n\t&.disabled {\n\t\tfilter: grayscale(1);\n\t\topacity: 0.5;\n\t\tcursor: default;\n\t\tpointer-events: none;\n\n\t\t& *,\n\t\t&::v-deep * {\n\t\t\tcursor: default;\n\t\t\tpointer-events: none;\n\t\t}\n\t}\n\n\tlabel {\n\t\tcolor: var(--color-text-lighter);\n\t\twidth: 150px;\n\t\tline-height: 50px;\n\t}\n\n\t&__multiselect {\n\t\twidth: 260px;\n\t\tmax-width: 40vw;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VisibilityDropdown.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!./VisibilityDropdown.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!./VisibilityDropdown.vue?vue&type=style&index=0&id=4643b0e2&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!./VisibilityDropdown.vue?vue&type=style&index=0&id=4643b0e2&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./VisibilityDropdown.vue?vue&type=template&id=4643b0e2&scoped=true&\"\nimport script from \"./VisibilityDropdown.vue?vue&type=script&lang=js&\"\nexport * from \"./VisibilityDropdown.vue?vue&type=script&lang=js&\"\nimport style0 from \"./VisibilityDropdown.vue?vue&type=style&index=0&id=4643b0e2&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 \"4643b0e2\",\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:\"visibility-container\",class:{ disabled: _vm.disabled }},[_c('label',{attrs:{\"for\":_vm.inputId}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', '{displayId}', { displayId: _vm.displayId }))+\"\\n\\t\")]),_vm._v(\" \"),_c('Multiselect',{staticClass:\"visibility-container__multiselect\",attrs:{\"id\":_vm.inputId,\"options\":_vm.visibilityOptions,\"track-by\":\"name\",\"label\":\"label\",\"value\":_vm.visibilityObject},on:{\"change\":_vm.onVisibilityChange}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<!-- TODO remove this inline margin placeholder once the settings layout is updated -->\n\t<section id=\"profile-visibility\"\n\t\t:style=\"{ marginLeft }\">\n\t\t<HeaderBar :account-property=\"heading\" />\n\n\t\t<em :class=\"{ disabled }\">\n\t\t\t{{ t('settings', 'The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to \"Show to everyone\" and scope is set to \"Private\", \"Private\" is respected.') }}\n\t\t</em>\n\n\t\t<div class=\"visibility-dropdowns\"\n\t\t\t:style=\"{\n\t\t\t\tgridTemplateRows: `repeat(${rows}, 44px)`,\n\t\t\t}\">\n\t\t\t<VisibilityDropdown v-for=\"param in visibilityParams\"\n\t\t\t\t:key=\"param.id\"\n\t\t\t\t:param-id=\"param.id\"\n\t\t\t\t:display-id=\"param.displayId\"\n\t\t\t\t:visibility.sync=\"param.visibility\" />\n\t\t</div>\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\n\nimport HeaderBar from '../shared/HeaderBar'\nimport VisibilityDropdown from './VisibilityDropdown'\nimport { PROFILE_READABLE_ENUM } from '../../../constants/AccountPropertyConstants'\n\nconst { profileConfig } = loadState('settings', 'profileParameters', {})\nconst { profileEnabled } = loadState('settings', 'personalInfoParameters', false)\n\nconst compareParams = (a, b) => {\n\tif (a.appId === b.appId || (a.appId !== 'core' && b.appId !== 'core')) {\n\t\treturn a.displayId.localeCompare(b.displayId)\n\t} else if (a.appId === 'core') {\n\t\treturn 1\n\t} else {\n\t\treturn -1\n\t}\n}\n\nexport default {\n\tname: 'ProfileVisibilitySection',\n\n\tcomponents: {\n\t\tHeaderBar,\n\t\tVisibilityDropdown,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\theading: PROFILE_READABLE_ENUM.PROFILE_VISIBILITY,\n\t\t\tprofileEnabled,\n\t\t\tvisibilityParams: Object.entries(profileConfig)\n\t\t\t\t.map(([paramId, { appId, displayId, visibility }]) => ({ id: paramId, appId, displayId, visibility }))\n\t\t\t\t.sort(compareParams),\n\t\t\t// TODO remove this when not used once the settings layout is updated\n\t\t\tmarginLeft: window.matchMedia('(min-width: 1600px)').matches\n\t\t\t\t? window.getComputedStyle(document.getElementById('personal-settings-avatar-container')).getPropertyValue('width').trim()\n\t\t\t\t: '0px',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tdisabled() {\n\t\t\treturn !this.profileEnabled\n\t\t},\n\n\t\trows() {\n\t\t\treturn Math.ceil(this.visibilityParams.length / 2)\n\t\t},\n\t},\n\n\tmounted() {\n\t\tsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\t\t// TODO remove this when not used once the settings layout is updated\n\t\twindow.onresize = () => {\n\t\t\tthis.marginLeft = window.matchMedia('(min-width: 1600px)').matches\n\t\t\t\t? window.getComputedStyle(document.getElementById('personal-settings-avatar-container')).getPropertyValue('width').trim()\n\t\t\t\t: '0px'\n\t\t}\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\t},\n\n\tmethods: {\n\t\thandleProfileEnabledUpdate(profileEnabled) {\n\t\t\tthis.profileEnabled = profileEnabled\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 30px;\n\tmax-width: 100vw;\n\n\tem {\n\t\tdisplay: block;\n\t\tmargin: 16px 0;\n\n\t\t&.disabled {\n\t\t\tfilter: grayscale(1);\n\t\t\topacity: 0.5;\n\t\t\tcursor: default;\n\t\t\tpointer-events: none;\n\n\t\t\t& *,\n\t\t\t&::v-deep * {\n\t\t\t\tcursor: default;\n\t\t\t\tpointer-events: none;\n\t\t\t}\n\t\t}\n\t}\n\n\t.visibility-dropdowns {\n\t\tdisplay: grid;\n\t\tgap: 10px 40px;\n\t}\n\n\t@media (min-width: 1200px) {\n\t\twidth: 940px;\n\n\t\t.visibility-dropdowns {\n\t\t\tgrid-auto-flow: column;\n\t\t}\n\t}\n\n\t@media (max-width: 1200px) {\n\t\twidth: 470px;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileVisibilitySection.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!./ProfileVisibilitySection.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!./ProfileVisibilitySection.vue?vue&type=style&index=0&id=16df62f8&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!./ProfileVisibilitySection.vue?vue&type=style&index=0&id=16df62f8&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ProfileVisibilitySection.vue?vue&type=template&id=16df62f8&scoped=true&\"\nimport script from \"./ProfileVisibilitySection.vue?vue&type=script&lang=js&\"\nexport * from \"./ProfileVisibilitySection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProfileVisibilitySection.vue?vue&type=style&index=0&id=16df62f8&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 \"16df62f8\",\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('section',{style:({ marginLeft: _vm.marginLeft }),attrs:{\"id\":\"profile-visibility\"}},[_c('HeaderBar',{attrs:{\"account-property\":_vm.heading}}),_vm._v(\" \"),_c('em',{class:{ disabled: _vm.disabled }},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to \"Show to everyone\" and scope is set to \"Private\", \"Private\" is respected.'))+\"\\n\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"visibility-dropdowns\",style:({\n\t\t\tgridTemplateRows: (\"repeat(\" + _vm.rows + \", 44px)\"),\n\t\t})},_vm._l((_vm.visibilityParams),function(param){return _c('VisibilityDropdown',{key:param.id,attrs:{\"param-id\":param.id,\"display-id\":param.displayId,\"visibility\":param.visibility},on:{\"update:visibility\":function($event){return _vm.$set(param, \"visibility\", $event)}}})}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\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 */\n\nimport Vue from 'vue'\nimport { getRequestToken } from '@nextcloud/auth'\nimport { loadState } from '@nextcloud/initial-state'\nimport { translate as t } from '@nextcloud/l10n'\nimport '@nextcloud/dialogs/styles/toast.scss'\n\nimport logger from './logger'\n\nimport DisplayNameSection from './components/PersonalInfo/DisplayNameSection/DisplayNameSection'\nimport EmailSection from './components/PersonalInfo/EmailSection/EmailSection'\nimport LanguageSection from './components/PersonalInfo/LanguageSection/LanguageSection'\nimport ProfileSection from './components/PersonalInfo/ProfileSection/ProfileSection'\nimport OrganisationSection from './components/PersonalInfo/OrganisationSection/OrganisationSection'\nimport RoleSection from './components/PersonalInfo/RoleSection/RoleSection'\nimport HeadlineSection from './components/PersonalInfo/HeadlineSection/HeadlineSection'\nimport BiographySection from './components/PersonalInfo/BiographySection/BiographySection'\nimport ProfileVisibilitySection from './components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection'\n\n__webpack_nonce__ = btoa(getRequestToken())\n\nconst profileEnabledGlobally = loadState('settings', 'profileEnabledGlobally', true)\n\nVue.mixin({\n\tprops: {\n\t\tlogger,\n\t},\n\tmethods: {\n\t\tt,\n\t},\n})\n\nconst DisplayNameView = Vue.extend(DisplayNameSection)\nconst EmailView = Vue.extend(EmailSection)\nconst LanguageView = Vue.extend(LanguageSection)\n\nnew DisplayNameView().$mount('#vue-displayname-section')\nnew EmailView().$mount('#vue-email-section')\nnew LanguageView().$mount('#vue-language-section')\n\nif (profileEnabledGlobally) {\n\tconst ProfileView = Vue.extend(ProfileSection)\n\tconst OrganisationView = Vue.extend(OrganisationSection)\n\tconst RoleView = Vue.extend(RoleSection)\n\tconst HeadlineView = Vue.extend(HeadlineSection)\n\tconst BiographyView = Vue.extend(BiographySection)\n\tconst ProfileVisibilityView = Vue.extend(ProfileVisibilitySection)\n\n\tnew ProfileView().$mount('#vue-profile-section')\n\tnew OrganisationView().$mount('#vue-organisation-section')\n\tnew RoleView().$mount('#vue-role-section')\n\tnew HeadlineView().$mount('#vue-headline-section')\n\tnew BiographyView().$mount('#vue-biography-section')\n\tnew ProfileVisibilityView().$mount('#vue-profile-visibility-section')\n}\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, \".biography[data-v-0fbf56a9]{display:grid;align-items:center}.biography textarea[data-v-0fbf56a9]{resize:vertical;grid-area:1/1;width:100%;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.biography textarea[data-v-0fbf56a9]:hover,.biography textarea[data-v-0fbf56a9]:focus,.biography textarea[data-v-0fbf56a9]:active{border-color:var(--color-primary-element) !important;outline:none !important}.biography .biography__actions-container[data-v-0fbf56a9]{grid-area:1/1;justify-self:flex-end;align-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px;margin-bottom:5px}.biography .biography__actions-container .icon-checkmark[data-v-0fbf56a9],.biography .biography__actions-container .icon-error[data-v-0fbf56a9]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-0fbf56a9],.fade-leave-to[data-v-0fbf56a9]{opacity:0}.fade-enter-active[data-v-0fbf56a9]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-0fbf56a9]{transition:opacity 300ms ease-out}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/BiographySection/Biography.vue\"],\"names\":[],\"mappings\":\"AAyHA,4BACC,YAAA,CACA,kBAAA,CAEA,qCACC,eAAA,CACA,aAAA,CACA,UAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAEA,kIAGC,oDAAA,CACA,uBAAA,CAIF,0DACC,aAAA,CACA,qBAAA,CACA,mBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CACA,iBAAA,CAEA,gJAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA\",\"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.biography {\\n\\tdisplay: grid;\\n\\talign-items: center;\\n\\n\\ttextarea {\\n\\t\\tresize: vertical;\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\twidth: 100%;\\n\\t\\tmargin: 3px 3px 3px 0;\\n\\t\\tpadding: 7px 6px;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder: 1px solid var(--color-border-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tfont-family: var(--font-face);\\n\\t\\tcursor: text;\\n\\n\\t\\t&:hover,\\n\\t\\t&:focus,\\n\\t\\t&:active {\\n\\t\\t\\tborder-color: var(--color-primary-element) !important;\\n\\t\\t\\toutline: none !important;\\n\\t\\t}\\n\\t}\\n\\n\\t.biography__actions-container {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\tjustify-self: flex-end;\\n\\t\\talign-self: flex-end;\\n\\t\\theight: 30px;\\n\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 2px;\\n\\t\\tmargin-right: 5px;\\n\\t\\tmargin-bottom: 5px;\\n\\n\\t\\t.icon-checkmark,\\n\\t\\t.icon-error {\\n\\t\\t\\theight: 30px !important;\\n\\t\\t\\tmin-height: 30px !important;\\n\\t\\t\\twidth: 30px !important;\\n\\t\\t\\tmin-width: 30px !important;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tfloat: none;\\n\\t\\t}\\n\\t}\\n}\\n\\n.fade-enter,\\n.fade-leave-to {\\n\\topacity: 0;\\n}\\n\\n.fade-enter-active {\\n\\ttransition: opacity 200ms ease-out;\\n}\\n\\n.fade-leave-active {\\n\\ttransition: opacity 300ms ease-out;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"section[data-v-cfa727da]{padding:10px 10px}section[data-v-cfa727da] button:disabled{cursor:default}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/BiographySection/BiographySection.vue\"],\"names\":[],\"mappings\":\"AA6DA,yBACC,iBAAA,CAEA,yCACC,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\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".displayname[data-v-3418897a]{display:grid;align-items:center}.displayname input[data-v-3418897a]{grid-area:1/1;width:100%;height:34px;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.displayname .displayname__actions-container[data-v-3418897a]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.displayname .displayname__actions-container .icon-checkmark[data-v-3418897a],.displayname .displayname__actions-container .icon-error[data-v-3418897a]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-3418897a],.fade-leave-to[data-v-3418897a]{opacity:0}.fade-enter-active[data-v-3418897a]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-3418897a]{transition:opacity 300ms ease-out}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayName.vue\"],\"names\":[],\"mappings\":\"AA8HA,8BACC,YAAA,CACA,kBAAA,CAEA,oCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAGD,8DACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,wJAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA\",\"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.displayname {\\n\\tdisplay: grid;\\n\\talign-items: center;\\n\\n\\tinput {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\twidth: 100%;\\n\\t\\theight: 34px;\\n\\t\\tmargin: 3px 3px 3px 0;\\n\\t\\tpadding: 7px 6px;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder: 1px solid var(--color-border-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tfont-family: var(--font-face);\\n\\t\\tcursor: text;\\n\\t}\\n\\n\\t.displayname__actions-container {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\tjustify-self: flex-end;\\n\\t\\theight: 30px;\\n\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 2px;\\n\\t\\tmargin-right: 5px;\\n\\n\\t\\t.icon-checkmark,\\n\\t\\t.icon-error {\\n\\t\\t\\theight: 30px !important;\\n\\t\\t\\tmin-height: 30px !important;\\n\\t\\t\\twidth: 30px !important;\\n\\t\\t\\tmin-width: 30px !important;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tfloat: none;\\n\\t\\t}\\n\\t}\\n}\\n\\n.fade-enter,\\n.fade-leave-to {\\n\\topacity: 0;\\n}\\n\\n.fade-enter-active {\\n\\ttransition: opacity 200ms ease-out;\\n}\\n\\n.fade-leave-active {\\n\\ttransition: opacity 300ms ease-out;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"section[data-v-b8a748f4]{padding:10px 10px}section[data-v-b8a748f4] button:disabled{cursor:default}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayNameSection.vue\"],\"names\":[],\"mappings\":\"AA8EA,yBACC,iBAAA,CAEA,yCACC,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\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".email[data-v-2c097054]{display:grid;align-items:center}.email input[data-v-2c097054]{grid-area:1/1;width:100%;height:34px;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.email .email__actions-container[data-v-2c097054]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.email .email__actions-container .email__actions[data-v-2c097054]{opacity:.4 !important}.email .email__actions-container .email__actions[data-v-2c097054]:hover,.email .email__actions-container .email__actions[data-v-2c097054]:focus,.email .email__actions-container .email__actions[data-v-2c097054]:active{opacity:.8 !important}.email .email__actions-container .email__actions[data-v-2c097054] button{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important}.email .email__actions-container .icon-checkmark[data-v-2c097054],.email .email__actions-container .icon-error[data-v-2c097054]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-2c097054],.fade-leave-to[data-v-2c097054]{opacity:0}.fade-enter-active[data-v-2c097054]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-2c097054]{transition:opacity 300ms ease-out}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/EmailSection/Email.vue\"],\"names\":[],\"mappings\":\"AAoWA,wBACC,YAAA,CACA,kBAAA,CAEA,8BACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAGD,kDACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,kEACC,qBAAA,CAEA,yNAGC,qBAAA,CAGD,yEACC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CAIF,gIAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.email {\\n\\tdisplay: grid;\\n\\talign-items: center;\\n\\n\\tinput {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\twidth: 100%;\\n\\t\\theight: 34px;\\n\\t\\tmargin: 3px 3px 3px 0;\\n\\t\\tpadding: 7px 6px;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder: 1px solid var(--color-border-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tfont-family: var(--font-face);\\n\\t\\tcursor: text;\\n\\t}\\n\\n\\t.email__actions-container {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\tjustify-self: flex-end;\\n\\t\\theight: 30px;\\n\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 2px;\\n\\t\\tmargin-right: 5px;\\n\\n\\t\\t.email__actions {\\n\\t\\t\\topacity: 0.4 !important;\\n\\n\\t\\t\\t&:hover,\\n\\t\\t\\t&:focus,\\n\\t\\t\\t&:active {\\n\\t\\t\\t\\topacity: 0.8 !important;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&::v-deep button {\\n\\t\\t\\t\\theight: 30px !important;\\n\\t\\t\\t\\tmin-height: 30px !important;\\n\\t\\t\\t\\twidth: 30px !important;\\n\\t\\t\\t\\tmin-width: 30px !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.icon-checkmark,\\n\\t\\t.icon-error {\\n\\t\\t\\theight: 30px !important;\\n\\t\\t\\tmin-height: 30px !important;\\n\\t\\t\\twidth: 30px !important;\\n\\t\\t\\tmin-width: 30px !important;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tfloat: none;\\n\\t\\t}\\n\\t}\\n}\\n\\n.fade-enter,\\n.fade-leave-to {\\n\\topacity: 0;\\n}\\n\\n.fade-enter-active {\\n\\ttransition: opacity 200ms ease-out;\\n}\\n\\n.fade-leave-active {\\n\\ttransition: opacity 300ms ease-out;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"section[data-v-845b669e]{padding:10px 10px}section[data-v-845b669e] button:disabled{cursor:default}section .additional-emails-label[data-v-845b669e]{display:block;margin-top:16px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue\"],\"names\":[],\"mappings\":\"AA+LA,yBACC,iBAAA,CAEA,yCACC,cAAA,CAGD,kDACC,aAAA,CACA,eAAA\",\"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\\n\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\n\\t}\\n\\n\\t.additional-emails-label {\\n\\t\\tdisplay: block;\\n\\t\\tmargin-top: 16px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".headline[data-v-64e0e0bd]{display:grid;align-items:center}.headline input[data-v-64e0e0bd]{grid-area:1/1;width:100%;height:34px;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.headline .headline__actions-container[data-v-64e0e0bd]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.headline .headline__actions-container .icon-checkmark[data-v-64e0e0bd],.headline .headline__actions-container .icon-error[data-v-64e0e0bd]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-64e0e0bd],.fade-leave-to[data-v-64e0e0bd]{opacity:0}.fade-enter-active[data-v-64e0e0bd]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-64e0e0bd]{transition:opacity 300ms ease-out}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/HeadlineSection/Headline.vue\"],\"names\":[],\"mappings\":\"AAyHA,2BACC,YAAA,CACA,kBAAA,CAEA,iCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAGD,wDACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,4IAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA\",\"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.headline {\\n\\tdisplay: grid;\\n\\talign-items: center;\\n\\n\\tinput {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\twidth: 100%;\\n\\t\\theight: 34px;\\n\\t\\tmargin: 3px 3px 3px 0;\\n\\t\\tpadding: 7px 6px;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder: 1px solid var(--color-border-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tfont-family: var(--font-face);\\n\\t\\tcursor: text;\\n\\t}\\n\\n\\t.headline__actions-container {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\tjustify-self: flex-end;\\n\\t\\theight: 30px;\\n\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 2px;\\n\\t\\tmargin-right: 5px;\\n\\n\\t\\t.icon-checkmark,\\n\\t\\t.icon-error {\\n\\t\\t\\theight: 30px !important;\\n\\t\\t\\tmin-height: 30px !important;\\n\\t\\t\\twidth: 30px !important;\\n\\t\\t\\tmin-width: 30px !important;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tfloat: none;\\n\\t\\t}\\n\\t}\\n}\\n\\n.fade-enter,\\n.fade-leave-to {\\n\\topacity: 0;\\n}\\n\\n.fade-enter-active {\\n\\ttransition: opacity 200ms ease-out;\\n}\\n\\n.fade-leave-active {\\n\\ttransition: opacity 300ms ease-out;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"section[data-v-187bb5da]{padding:10px 10px}section[data-v-187bb5da] button:disabled{cursor:default}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/HeadlineSection/HeadlineSection.vue\"],\"names\":[],\"mappings\":\"AA6DA,yBACC,iBAAA,CAEA,yCACC,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\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".language[data-v-5396d706]{display:grid}.language select[data-v-5396d706]{width:100%;height:34px;margin:3px 3px 3px 0;padding:6px 16px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background:var(--icon-triangle-s-000) no-repeat right 4px center;font-family:var(--font-face);appearance:none;cursor:pointer}.language a[data-v-5396d706]{color:var(--color-main-text);text-decoration:none;width:max-content}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue\"],\"names\":[],\"mappings\":\"AA+IA,2BACC,YAAA,CAEA,kCACC,UAAA,CACA,WAAA,CACA,oBAAA,CACA,gBAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,gEAAA,CACA,4BAAA,CACA,eAAA,CACA,cAAA,CAGD,6BACC,4BAAA,CACA,oBAAA,CACA,iBAAA\",\"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.language {\\n\\tdisplay: grid;\\n\\n\\tselect {\\n\\t\\twidth: 100%;\\n\\t\\theight: 34px;\\n\\t\\tmargin: 3px 3px 3px 0;\\n\\t\\tpadding: 6px 16px;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder: 1px solid var(--color-border-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground: var(--icon-triangle-s-000) no-repeat right 4px center;\\n\\t\\tfont-family: var(--font-face);\\n\\t\\tappearance: none;\\n\\t\\tcursor: pointer;\\n\\t}\\n\\n\\ta {\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\ttext-decoration: none;\\n\\t\\twidth: max-content;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"section[data-v-16883898]{padding:10px 10px}section[data-v-16883898] button:disabled{cursor:default}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue\"],\"names\":[],\"mappings\":\"AA2EA,yBACC,iBAAA,CAEA,yCACC,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\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".organisation[data-v-591cd6b6]{display:grid;align-items:center}.organisation input[data-v-591cd6b6]{grid-area:1/1;width:100%;height:34px;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.organisation .organisation__actions-container[data-v-591cd6b6]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.organisation .organisation__actions-container .icon-checkmark[data-v-591cd6b6],.organisation .organisation__actions-container .icon-error[data-v-591cd6b6]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-591cd6b6],.fade-leave-to[data-v-591cd6b6]{opacity:0}.fade-enter-active[data-v-591cd6b6]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-591cd6b6]{transition:opacity 300ms ease-out}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/OrganisationSection/Organisation.vue\"],\"names\":[],\"mappings\":\"AAyHA,+BACC,YAAA,CACA,kBAAA,CAEA,qCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAGD,gEACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,4JAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA\",\"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.organisation {\\n\\tdisplay: grid;\\n\\talign-items: center;\\n\\n\\tinput {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\twidth: 100%;\\n\\t\\theight: 34px;\\n\\t\\tmargin: 3px 3px 3px 0;\\n\\t\\tpadding: 7px 6px;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder: 1px solid var(--color-border-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tfont-family: var(--font-face);\\n\\t\\tcursor: text;\\n\\t}\\n\\n\\t.organisation__actions-container {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\tjustify-self: flex-end;\\n\\t\\theight: 30px;\\n\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 2px;\\n\\t\\tmargin-right: 5px;\\n\\n\\t\\t.icon-checkmark,\\n\\t\\t.icon-error {\\n\\t\\t\\theight: 30px !important;\\n\\t\\t\\tmin-height: 30px !important;\\n\\t\\t\\twidth: 30px !important;\\n\\t\\t\\tmin-width: 30px !important;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tfloat: none;\\n\\t\\t}\\n\\t}\\n}\\n\\n.fade-enter,\\n.fade-leave-to {\\n\\topacity: 0;\\n}\\n\\n.fade-enter-active {\\n\\ttransition: opacity 200ms ease-out;\\n}\\n\\n.fade-leave-active {\\n\\ttransition: opacity 300ms ease-out;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"section[data-v-43146ff7]{padding:10px 10px}section[data-v-43146ff7] button:disabled{cursor:default}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/OrganisationSection/OrganisationSection.vue\"],\"names\":[],\"mappings\":\"AA6DA,yBACC,iBAAA,CAEA,yCACC,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\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"html{scroll-behavior:smooth}@media screen and (prefers-reduced-motion: reduce){html{scroll-behavior:auto}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue\"],\"names\":[],\"mappings\":\"AA4DA,KACC,sBAAA,CAEA,mDAHD,KAIE,oBAAA,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\\nhtml {\\n\\tscroll-behavior: smooth;\\n\\n\\t@media screen and (prefers-reduced-motion: reduce) {\\n\\t\\tscroll-behavior: auto;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"a[data-v-73817e9f]{display:block;height:44px;width:290px;line-height:44px;padding:0 16px;margin:14px auto;border-radius:var(--border-radius-pill);opacity:.4;background-color:rgba(0,0,0,0)}a .anchor-icon[data-v-73817e9f]{display:inline-block;vertical-align:middle;margin-top:6px;margin-right:8px}a[data-v-73817e9f]:hover,a[data-v-73817e9f]:focus,a[data-v-73817e9f]:active{opacity:.8;background-color:rgba(127,127,127,.25)}a.disabled[data-v-73817e9f]{pointer-events:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue\"],\"names\":[],\"mappings\":\"AAsEA,mBACC,aAAA,CACA,WAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,gBAAA,CACA,uCAAA,CACA,UAAA,CACA,8BAAA,CAEA,gCACC,oBAAA,CACA,qBAAA,CACA,cAAA,CACA,gBAAA,CAGD,4EAGC,UAAA,CACA,sCAAA,CAGD,4BACC,mBAAA\",\"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\\na {\\n\\tdisplay: block;\\n\\theight: 44px;\\n\\twidth: 290px;\\n\\tline-height: 44px;\\n\\tpadding: 0 16px;\\n\\tmargin: 14px auto;\\n\\tborder-radius: var(--border-radius-pill);\\n\\topacity: 0.4;\\n\\tbackground-color: transparent;\\n\\n\\t.anchor-icon {\\n\\t\\tdisplay: inline-block;\\n\\t\\tvertical-align: middle;\\n\\t\\tmargin-top: 6px;\\n\\t\\tmargin-right: 8px;\\n\\t}\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\topacity: 0.8;\\n\\t\\tbackground-color: rgba(127, 127, 127, .25);\\n\\t}\\n\\n\\t&.disabled {\\n\\t\\tpointer-events: none;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".preview-card[data-v-79bf7437]{display:flex;flex-direction:column;position:relative;width:290px;height:116px;margin:14px auto;border-radius:var(--border-radius-large);background-color:var(--color-main-background);font-weight:bold;box-shadow:0 2px 9px var(--color-box-shadow)}.preview-card[data-v-79bf7437]:hover,.preview-card[data-v-79bf7437]:focus,.preview-card[data-v-79bf7437]:active{box-shadow:0 2px 12px var(--color-box-shadow)}.preview-card[data-v-79bf7437]:focus-visible{outline:var(--color-main-text) solid 1px;outline-offset:3px}.preview-card.disabled[data-v-79bf7437]{filter:grayscale(1);opacity:.5;cursor:default;box-shadow:0 0 3px var(--color-box-shadow)}.preview-card.disabled *[data-v-79bf7437],.preview-card.disabled[data-v-79bf7437] *{cursor:default}.preview-card__avatar[data-v-79bf7437]{position:absolute !important;top:40px;left:18px;z-index:1}.preview-card__avatar[data-v-79bf7437]:not(.avatardiv--unknown){box-shadow:0 0 0 3px var(--color-main-background) !important}.preview-card__header[data-v-79bf7437],.preview-card__footer[data-v-79bf7437]{position:relative;width:auto}.preview-card__header span[data-v-79bf7437],.preview-card__footer span[data-v-79bf7437]{position:absolute;left:78px;overflow:hidden;text-overflow:ellipsis;word-break:break-all}@supports(-webkit-line-clamp: 2){.preview-card__header span[data-v-79bf7437],.preview-card__footer span[data-v-79bf7437]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.preview-card__header[data-v-79bf7437]{height:70px;border-radius:var(--border-radius-large) var(--border-radius-large) 0 0}.preview-card__header span[data-v-79bf7437]{bottom:0;color:var(--color-primary-text);font-size:18px;font-weight:bold;margin:0 4px 8px 0}.preview-card__footer[data-v-79bf7437]{height:46px}.preview-card__footer span[data-v-79bf7437]{top:0;color:var(--color-text-maxcontrast);font-size:14px;font-weight:normal;margin:4px 4px 0 0;line-height:1.3}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue\"],\"names\":[],\"mappings\":\"AA6FA,+BACC,YAAA,CACA,qBAAA,CACA,iBAAA,CACA,WAAA,CACA,YAAA,CACA,gBAAA,CACA,wCAAA,CACA,6CAAA,CACA,gBAAA,CACA,4CAAA,CAEA,gHAGC,6CAAA,CAGD,6CACC,wCAAA,CACA,kBAAA,CAGD,wCACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,0CAAA,CAEA,oFAEC,cAAA,CAIF,uCAEC,4BAAA,CACA,QAAA,CACA,SAAA,CACA,SAAA,CAEA,gEACC,4DAAA,CAIF,8EAEC,iBAAA,CACA,UAAA,CAEA,wFACC,iBAAA,CACA,SAAA,CACA,eAAA,CACA,sBAAA,CACA,oBAAA,CAEA,iCAPD,wFAQE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,uCACC,WAAA,CACA,uEAAA,CAEA,4CACC,QAAA,CACA,+BAAA,CACA,cAAA,CACA,gBAAA,CACA,kBAAA,CAIF,uCACC,WAAA,CAEA,4CACC,KAAA,CACA,mCAAA,CACA,cAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA\",\"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.preview-card {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tposition: relative;\\n\\twidth: 290px;\\n\\theight: 116px;\\n\\tmargin: 14px auto;\\n\\tborder-radius: var(--border-radius-large);\\n\\tbackground-color: var(--color-main-background);\\n\\tfont-weight: bold;\\n\\tbox-shadow: 0 2px 9px var(--color-box-shadow);\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\tbox-shadow: 0 2px 12px var(--color-box-shadow);\\n\\t}\\n\\n\\t&:focus-visible {\\n\\t\\toutline: var(--color-main-text) solid 1px;\\n\\t\\toutline-offset: 3px;\\n\\t}\\n\\n\\t&.disabled {\\n\\t\\tfilter: grayscale(1);\\n\\t\\topacity: 0.5;\\n\\t\\tcursor: default;\\n\\t\\tbox-shadow: 0 0 3px var(--color-box-shadow);\\n\\n\\t\\t& *,\\n\\t\\t&::v-deep * {\\n\\t\\t\\tcursor: default;\\n\\t\\t}\\n\\t}\\n\\n\\t&__avatar {\\n\\t\\t// Override Avatar component position to fix positioning on rerender\\n\\t\\tposition: absolute !important;\\n\\t\\ttop: 40px;\\n\\t\\tleft: 18px;\\n\\t\\tz-index: 1;\\n\\n\\t\\t&:not(.avatardiv--unknown) {\\n\\t\\t\\tbox-shadow: 0 0 0 3px var(--color-main-background) !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&__header,\\n\\t&__footer {\\n\\t\\tposition: relative;\\n\\t\\twidth: auto;\\n\\n\\t\\tspan {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tleft: 78px;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\tword-break: break-all;\\n\\n\\t\\t\\t@supports (-webkit-line-clamp: 2) {\\n\\t\\t\\t\\tdisplay: -webkit-box;\\n\\t\\t\\t\\t-webkit-line-clamp: 2;\\n\\t\\t\\t\\t-webkit-box-orient: vertical;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__header {\\n\\t\\theight: 70px;\\n\\t\\tborder-radius: var(--border-radius-large) var(--border-radius-large) 0 0;\\n\\n\\t\\tspan {\\n\\t\\t\\tbottom: 0;\\n\\t\\t\\tcolor: var(--color-primary-text);\\n\\t\\t\\tfont-size: 18px;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tmargin: 0 4px 8px 0;\\n\\t\\t}\\n\\t}\\n\\n\\t&__footer {\\n\\t\\theight: 46px;\\n\\n\\t\\tspan {\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\tfont-size: 14px;\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t\\tmargin: 4px 4px 0 0;\\n\\t\\t\\tline-height: 1.3;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"section[data-v-252753e6]{padding:10px 10px}section[data-v-252753e6] button:disabled{cursor:default}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue\"],\"names\":[],\"mappings\":\"AAkGA,yBACC,iBAAA,CAEA,yCACC,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\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"section[data-v-16df62f8]{padding:30px;max-width:100vw}section em[data-v-16df62f8]{display:block;margin:16px 0}section em.disabled[data-v-16df62f8]{filter:grayscale(1);opacity:.5;cursor:default;pointer-events:none}section em.disabled *[data-v-16df62f8],section em.disabled[data-v-16df62f8] *{cursor:default;pointer-events:none}section .visibility-dropdowns[data-v-16df62f8]{display:grid;gap:10px 40px}@media(min-width: 1200px){section[data-v-16df62f8]{width:940px}section .visibility-dropdowns[data-v-16df62f8]{grid-auto-flow:column}}@media(max-width: 1200px){section[data-v-16df62f8]{width:470px}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue\"],\"names\":[],\"mappings\":\"AAyHA,yBACC,YAAA,CACA,eAAA,CAEA,4BACC,aAAA,CACA,aAAA,CAEA,qCACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,mBAAA,CAEA,8EAEC,cAAA,CACA,mBAAA,CAKH,+CACC,YAAA,CACA,aAAA,CAGD,0BA3BD,yBA4BE,WAAA,CAEA,+CACC,qBAAA,CAAA,CAIF,0BAnCD,yBAoCE,WAAA,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\\nsection {\\n\\tpadding: 30px;\\n\\tmax-width: 100vw;\\n\\n\\tem {\\n\\t\\tdisplay: block;\\n\\t\\tmargin: 16px 0;\\n\\n\\t\\t&.disabled {\\n\\t\\t\\tfilter: grayscale(1);\\n\\t\\t\\topacity: 0.5;\\n\\t\\t\\tcursor: default;\\n\\t\\t\\tpointer-events: none;\\n\\n\\t\\t\\t& *,\\n\\t\\t\\t&::v-deep * {\\n\\t\\t\\t\\tcursor: default;\\n\\t\\t\\t\\tpointer-events: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t.visibility-dropdowns {\\n\\t\\tdisplay: grid;\\n\\t\\tgap: 10px 40px;\\n\\t}\\n\\n\\t@media (min-width: 1200px) {\\n\\t\\twidth: 940px;\\n\\n\\t\\t.visibility-dropdowns {\\n\\t\\t\\tgrid-auto-flow: column;\\n\\t\\t}\\n\\t}\\n\\n\\t@media (max-width: 1200px) {\\n\\t\\twidth: 470px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".visibility-container[data-v-4643b0e2]{display:flex;width:max-content}.visibility-container.disabled[data-v-4643b0e2]{filter:grayscale(1);opacity:.5;cursor:default;pointer-events:none}.visibility-container.disabled *[data-v-4643b0e2],.visibility-container.disabled[data-v-4643b0e2] *{cursor:default;pointer-events:none}.visibility-container label[data-v-4643b0e2]{color:var(--color-text-lighter);width:150px;line-height:50px}.visibility-container__multiselect[data-v-4643b0e2]{width:260px;max-width:40vw}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue\"],\"names\":[],\"mappings\":\"AAwJA,uCACC,YAAA,CACA,iBAAA,CAEA,gDACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,mBAAA,CAEA,oGAEC,cAAA,CACA,mBAAA,CAIF,6CACC,+BAAA,CACA,WAAA,CACA,gBAAA,CAGD,oDACC,WAAA,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.visibility-container {\\n\\tdisplay: flex;\\n\\twidth: max-content;\\n\\n\\t&.disabled {\\n\\t\\tfilter: grayscale(1);\\n\\t\\topacity: 0.5;\\n\\t\\tcursor: default;\\n\\t\\tpointer-events: none;\\n\\n\\t\\t& *,\\n\\t\\t&::v-deep * {\\n\\t\\t\\tcursor: default;\\n\\t\\t\\tpointer-events: none;\\n\\t\\t}\\n\\t}\\n\\n\\tlabel {\\n\\t\\tcolor: var(--color-text-lighter);\\n\\t\\twidth: 150px;\\n\\t\\tline-height: 50px;\\n\\t}\\n\\n\\t&__multiselect {\\n\\t\\twidth: 260px;\\n\\t\\tmax-width: 40vw;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".role[data-v-aac18396]{display:grid;align-items:center}.role input[data-v-aac18396]{grid-area:1/1;width:100%;height:34px;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.role .role__actions-container[data-v-aac18396]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.role .role__actions-container .icon-checkmark[data-v-aac18396],.role .role__actions-container .icon-error[data-v-aac18396]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-aac18396],.fade-leave-to[data-v-aac18396]{opacity:0}.fade-enter-active[data-v-aac18396]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-aac18396]{transition:opacity 300ms ease-out}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/RoleSection/Role.vue\"],\"names\":[],\"mappings\":\"AAyHA,uBACC,YAAA,CACA,kBAAA,CAEA,6BACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAGD,gDACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,4HAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA\",\"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.role {\\n\\tdisplay: grid;\\n\\talign-items: center;\\n\\n\\tinput {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\twidth: 100%;\\n\\t\\theight: 34px;\\n\\t\\tmargin: 3px 3px 3px 0;\\n\\t\\tpadding: 7px 6px;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder: 1px solid var(--color-border-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tfont-family: var(--font-face);\\n\\t\\tcursor: text;\\n\\t}\\n\\n\\t.role__actions-container {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\tjustify-self: flex-end;\\n\\t\\theight: 30px;\\n\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 2px;\\n\\t\\tmargin-right: 5px;\\n\\n\\t\\t.icon-checkmark,\\n\\t\\t.icon-error {\\n\\t\\t\\theight: 30px !important;\\n\\t\\t\\tmin-height: 30px !important;\\n\\t\\t\\twidth: 30px !important;\\n\\t\\t\\tmin-width: 30px !important;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tfloat: none;\\n\\t\\t}\\n\\t}\\n}\\n\\n.fade-enter,\\n.fade-leave-to {\\n\\topacity: 0;\\n}\\n\\n.fade-enter-active {\\n\\ttransition: opacity 200ms ease-out;\\n}\\n\\n.fade-leave-active {\\n\\ttransition: opacity 300ms ease-out;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"section[data-v-f3d959c2]{padding:10px 10px}section[data-v-f3d959c2] button:disabled{cursor:default}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/RoleSection/RoleSection.vue\"],\"names\":[],\"mappings\":\"AA6DA,yBACC,iBAAA,CAEA,yCACC,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\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".federation-actions[data-v-b51d8bee],.federation-actions--additional[data-v-b51d8bee]{opacity:.4 !important}.federation-actions[data-v-b51d8bee]:hover,.federation-actions[data-v-b51d8bee]:focus,.federation-actions[data-v-b51d8bee]:active,.federation-actions--additional[data-v-b51d8bee]:hover,.federation-actions--additional[data-v-b51d8bee]:focus,.federation-actions--additional[data-v-b51d8bee]:active{opacity:.8 !important}.federation-actions--additional[data-v-b51d8bee] button{padding-bottom:7px;height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/shared/FederationControl.vue\"],\"names\":[],\"mappings\":\"AAsLA,sFAEC,qBAAA,CAEA,wSAGC,qBAAA,CAKD,wDAEC,kBAAA,CACA,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA\",\"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.federation-actions,\\n.federation-actions--additional {\\n\\topacity: 0.4 !important;\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\topacity: 0.8 !important;\\n\\t}\\n}\\n\\n.federation-actions--additional {\\n\\t&::v-deep button {\\n\\t\\t// TODO remove this hack\\n\\t\\tpadding-bottom: 7px;\\n\\t\\theight: 30px !important;\\n\\t\\tmin-height: 30px !important;\\n\\t\\twidth: 30px !important;\\n\\t\\tmin-width: 30px !important;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".federation-actions__btn[data-v-d2e8b360] p{width:150px !important;padding:8px 0 !important;color:var(--color-main-text) !important;font-size:12.8px !important;line-height:1.5em !important}.federation-actions__btn--active[data-v-d2e8b360]{background-color:var(--color-primary-light) !important;box-shadow:inset 2px 0 var(--color-primary) !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue\"],\"names\":[],\"mappings\":\"AA0FC,4CACC,sBAAA,CACA,wBAAA,CACA,uCAAA,CACA,2BAAA,CACA,4BAAA,CAIF,kDACC,sDAAA,CACA,sDAAA\",\"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.federation-actions__btn {\\n\\t&::v-deep p {\\n\\t\\twidth: 150px !important;\\n\\t\\tpadding: 8px 0 !important;\\n\\t\\tcolor: var(--color-main-text) !important;\\n\\t\\tfont-size: 12.8px !important;\\n\\t\\tline-height: 1.5em !important;\\n\\t}\\n}\\n\\n.federation-actions__btn--active {\\n\\tbackground-color: var(--color-primary-light) !important;\\n\\tbox-shadow: inset 2px 0 var(--color-primary) !important;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"h3[data-v-19038f0c]{display:inline-flex;width:100%;margin:12px 0 0 0;font-size:16px;color:var(--color-text-light)}h3.profile-property[data-v-19038f0c]{height:38px}h3.setting-property[data-v-19038f0c]{height:32px}h3 label[data-v-19038f0c]{cursor:pointer}.federation-control[data-v-19038f0c]{margin:-12px 0 0 8px}.button-vue[data-v-19038f0c]{margin:-6px 0 0 auto !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue\"],\"names\":[],\"mappings\":\"AA0HA,oBACC,mBAAA,CACA,UAAA,CACA,iBAAA,CACA,cAAA,CACA,6BAAA,CAEA,qCACC,WAAA,CAGD,qCACC,WAAA,CAGD,0BACC,cAAA,CAIF,qCACC,oBAAA,CAGD,6BACC,+BAAA\",\"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\\nh3 {\\n\\tdisplay: inline-flex;\\n\\twidth: 100%;\\n\\tmargin: 12px 0 0 0;\\n\\tfont-size: 16px;\\n\\tcolor: var(--color-text-light);\\n\\n\\t&.profile-property {\\n\\t\\theight: 38px;\\n\\t}\\n\\n\\t&.setting-property {\\n\\t\\theight: 32px;\\n\\t}\\n\\n\\tlabel {\\n\\t\\tcursor: pointer;\\n\\t}\\n}\\n\\n.federation-control {\\n\\tmargin: -12px 0 0 8px;\\n}\\n\\n.button-vue {\\n\\tmargin: -6px 0 0 auto !important;\\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 = 4418;","__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\t4418: 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__(95979); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","getLoggerBuilder","setApp","detectUser","build","ACCOUNT_PROPERTY_ENUM","Object","freeze","ADDRESS","AVATAR","BIOGRAPHY","DISPLAYNAME","EMAIL_COLLECTION","EMAIL","HEADLINE","NOTIFICATION_EMAIL","ORGANISATION","PHONE","PROFILE_ENABLED","ROLE","TWITTER","WEBSITE","ACCOUNT_PROPERTY_READABLE_ENUM","t","PROFILE_READABLE_ENUM","PROFILE_VISIBILITY","PROPERTY_READABLE_KEYS_ENUM","ACCOUNT_SETTING_PROPERTY_ENUM","LANGUAGE","ACCOUNT_SETTING_PROPERTY_READABLE_ENUM","SCOPE_ENUM","PRIVATE","LOCAL","FEDERATED","PUBLISHED","PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM","UNPUBLISHED_READABLE_PROPERTIES","SCOPE_SUFFIX","SCOPE_PROPERTY_ENUM","name","displayName","tooltip","tooltipDisabled","iconClass","DEFAULT_ADDITIONAL_EMAIL_SCOPE","VERIFICATION_ENUM","NOT_VERIFIED","VERIFICATION_IN_PROGRESS","VERIFIED","VALIDATE_EMAIL_REGEX","savePrimaryAccountProperty","accountProperty","value","userId","getCurrentUser","uid","url","generateOcsUrl","confirmPassword","axios","key","res","data","savePrimaryAccountPropertyScope","scope","validateStringInput","input","validateEmail","test","slice","length","encodeURIComponent","replace","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","domProps","on","onDisplayNameChange","_v","_e","class","activeScope","isSupportedScope","$event","stopPropagation","preventDefault","updateScope","apply","arguments","_s","additional","ariaLabel","scopeIcon","disabled","_l","federationScope","changeScope","supportedScopes","includes","isSettingProperty","isProfileProperty","labelFor","localScope","onScopeChange","isEditable","isMultiValueSupported","isValidSection","onAddAdditional","scopedSlots","_u","fn","proxy","displayNameChangeSupported","primaryDisplayName","$set","savePrimaryEmail","email","saveAdditionalEmail","saveNotificationEmail","removeAdditionalEmail","collection","updateAdditionalEmail","prevEmail","newEmail","savePrimaryEmailScope","saveAdditionalEmailScope","collectionScope","ref","inputId","inputPlaceholder","onEmailChange","primary","federationDisabled","deleteDisabled","deleteEmailLabel","deleteEmail","isNotificationEmail","setNotificationMailLabel","setNotificationMailDisabled","setNotificationMail","primaryEmail","onAddAdditionalEmail","notificationEmail","onUpdateEmail","onUpdateNotificationEmail","additionalEmails","additionalEmail","index","parseInt","locallyVerified","onDeleteAdditionalEmail","code","undefined","onLanguageChange","commonLanguage","language","otherLanguage","commonLanguages","otherLanguages","_g","$listeners","profileEnabled","onEnableProfileChange","profilePageLink","organisation","onOrganisationChange","primaryOrganisation","role","onRoleChange","primaryRole","headline","onHeadlineChange","primaryHeadline","biography","onBiographyChange","primaryBiography","saveProfileParameterVisibility","paramId","visibility","VISIBILITY_ENUM","SHOW","SHOW_USERS_ONLY","HIDE","VISIBILITY_PROPERTY_ENUM","label","displayId","visibilityOptions","visibilityObject","onVisibilityChange","style","marginLeft","heading","gridTemplateRows","rows","param","id","__webpack_nonce__","btoa","getRequestToken","profileEnabledGlobally","loadState","Vue","props","logger","methods","DisplayNameView","DisplayNameSection","EmailView","EmailSection","LanguageView","LanguageSection","$mount","ProfileView","ProfileSection","OrganisationView","OrganisationSection","RoleView","RoleSection","HeadlineView","HeadlineSection","BiographyView","BiographySection","ProfileVisibilityView","ProfileVisibilitySection","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","window","obj","prop","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":"settings-vue-settings-personal-info.js?v=f43189b5ce919b48b8cd","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/settings/src/logger.js","webpack:///nextcloud/apps/settings/src/constants/AccountPropertyConstants.js","webpack:///nextcloud/apps/settings/src/service/PersonalInfo/PersonalInfoService.js","webpack:///nextcloud/apps/settings/src/utils/validate.js","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayName.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayName.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayName.vue?d91e","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayName.vue?aebc","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayName.vue?vue&type=template&id=3418897a&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue?ca95","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue?90b5","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue?vue&type=template&id=d2e8b360&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControl.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControl.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/FederationControl.vue?6304","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/FederationControl.vue?e342","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControl.vue?vue&type=template&id=b51d8bee&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue?6e55","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue?feed","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue?vue&type=template&id=19038f0c&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayNameSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayNameSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayNameSection.vue?f577","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayNameSection.vue?f21f","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayNameSection.vue?vue&type=template&id=b8a748f4&scoped=true&","webpack:///nextcloud/apps/settings/src/service/PersonalInfo/EmailService.js","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/EmailSection/Email.vue?c98f","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/EmailSection/Email.vue?bd2c","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue?vue&type=template&id=2c097054&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue?ff48","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue?1258","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue?vue&type=template&id=845b669e&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue?1e5a","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue?6358","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue?vue&type=template&id=5396d706&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue?47a6","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue?a350","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue?vue&type=template&id=16883898&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?a0a7","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?8473","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?7d4b","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?vue&type=template&id=73817e9f&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileCheckbox.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileCheckbox.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileCheckbox.vue?7612","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileCheckbox.vue?vue&type=template&id=b6898860&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue?9ff5","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue?240c","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue?vue&type=template&id=79bf7437&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue?6fa5","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue?c85f","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue?vue&type=template&id=252753e6&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/OrganisationSection/Organisation.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/OrganisationSection/Organisation.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/OrganisationSection/Organisation.vue?e2cd","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/OrganisationSection/Organisation.vue?29db","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/OrganisationSection/Organisation.vue?vue&type=template&id=591cd6b6&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/OrganisationSection/OrganisationSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/OrganisationSection/OrganisationSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/OrganisationSection/OrganisationSection.vue?7527","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/OrganisationSection/OrganisationSection.vue?647a","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/OrganisationSection/OrganisationSection.vue?vue&type=template&id=43146ff7&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/RoleSection/Role.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/RoleSection/Role.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/RoleSection/Role.vue?ce58","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/RoleSection/Role.vue?ec2b","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/RoleSection/Role.vue?vue&type=template&id=aac18396&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/RoleSection/RoleSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/RoleSection/RoleSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/RoleSection/RoleSection.vue?5af0","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/RoleSection/RoleSection.vue?dc70","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/RoleSection/RoleSection.vue?vue&type=template&id=f3d959c2&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/HeadlineSection/Headline.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/HeadlineSection/Headline.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/HeadlineSection/Headline.vue?1cf8","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/HeadlineSection/Headline.vue?f7d1","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/HeadlineSection/Headline.vue?vue&type=template&id=64e0e0bd&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/HeadlineSection/HeadlineSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/HeadlineSection/HeadlineSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/HeadlineSection/HeadlineSection.vue?d7b4","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/HeadlineSection/HeadlineSection.vue?5bd2","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/HeadlineSection/HeadlineSection.vue?vue&type=template&id=187bb5da&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/BiographySection/Biography.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/BiographySection/Biography.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/BiographySection/Biography.vue?8960","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/BiographySection/Biography.vue?57fe","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/BiographySection/Biography.vue?vue&type=template&id=0fbf56a9&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/BiographySection/BiographySection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/BiographySection/BiographySection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/BiographySection/BiographySection.vue?a1f3","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/BiographySection/BiographySection.vue?e305","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/BiographySection/BiographySection.vue?vue&type=template&id=cfa727da&scoped=true&","webpack:///nextcloud/apps/settings/src/service/ProfileService.js","webpack:///nextcloud/apps/settings/src/constants/ProfileConstants.js","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue?6b1e","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue?c222","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue?vue&type=template&id=4643b0e2&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue?d5ab","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue?7729","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue?vue&type=template&id=16df62f8&scoped=true&","webpack:///nextcloud/apps/settings/src/main-personal-info.js","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/BiographySection/Biography.vue?vue&type=style&index=0&id=0fbf56a9&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/BiographySection/BiographySection.vue?vue&type=style&index=0&id=cfa727da&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayName.vue?vue&type=style&index=0&id=3418897a&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayNameSection.vue?vue&type=style&index=0&id=b8a748f4&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue?vue&type=style&index=0&id=2c097054&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue?vue&type=style&index=0&id=845b669e&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/HeadlineSection/Headline.vue?vue&type=style&index=0&id=64e0e0bd&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/HeadlineSection/HeadlineSection.vue?vue&type=style&index=0&id=187bb5da&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue?vue&type=style&index=0&id=5396d706&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue?vue&type=style&index=0&id=16883898&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/OrganisationSection/Organisation.vue?vue&type=style&index=0&id=591cd6b6&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/OrganisationSection/OrganisationSection.vue?vue&type=style&index=0&id=43146ff7&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?vue&type=style&index=0&lang=scss&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?vue&type=style&index=1&id=73817e9f&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue?vue&type=style&index=0&id=79bf7437&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue?vue&type=style&index=0&id=252753e6&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue?vue&type=style&index=0&id=16df62f8&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue?vue&type=style&index=0&id=4643b0e2&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/RoleSection/Role.vue?vue&type=style&index=0&id=aac18396&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/RoleSection/RoleSection.vue?vue&type=style&index=0&id=f3d959c2&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControl.vue?vue&type=style&index=0&id=b51d8bee&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue?vue&type=style&index=0&id=d2e8b360&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue?vue&type=style&index=0&id=19038f0c&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/runtime/nonce","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 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('settings')\n\t.detectUser()\n\t.build()\n","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\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 */\n\n/*\n * SYNC to be kept in sync with `lib/public/Accounts/IAccountManager.php`\n */\n\nimport { translate as t } from '@nextcloud/l10n'\n\n/** Enum of account properties */\nexport const ACCOUNT_PROPERTY_ENUM = Object.freeze({\n\tADDRESS: 'address',\n\tAVATAR: 'avatar',\n\tBIOGRAPHY: 'biography',\n\tDISPLAYNAME: 'displayname',\n\tEMAIL_COLLECTION: 'additional_mail',\n\tEMAIL: 'email',\n\tHEADLINE: 'headline',\n\tNOTIFICATION_EMAIL: 'notify_email',\n\tORGANISATION: 'organisation',\n\tPHONE: 'phone',\n\tPROFILE_ENABLED: 'profile_enabled',\n\tROLE: 'role',\n\tTWITTER: 'twitter',\n\tWEBSITE: 'website',\n})\n\n/** Enum of account properties to human readable account property names */\nexport const ACCOUNT_PROPERTY_READABLE_ENUM = Object.freeze({\n\tADDRESS: t('settings', 'Address'),\n\tAVATAR: t('settings', 'Avatar'),\n\tBIOGRAPHY: t('settings', 'About'),\n\tDISPLAYNAME: t('settings', 'Full name'),\n\tEMAIL_COLLECTION: t('settings', 'Additional email'),\n\tEMAIL: t('settings', 'Email'),\n\tHEADLINE: t('settings', 'Headline'),\n\tORGANISATION: t('settings', 'Organisation'),\n\tPHONE: t('settings', 'Phone number'),\n\tPROFILE_ENABLED: t('settings', 'Profile'),\n\tROLE: t('settings', 'Role'),\n\tTWITTER: t('settings', 'Twitter'),\n\tWEBSITE: t('settings', 'Website'),\n})\n\n/** Enum of profile specific sections to human readable names */\nexport const PROFILE_READABLE_ENUM = Object.freeze({\n\tPROFILE_VISIBILITY: t('settings', 'Profile visibility'),\n})\n\n/** Enum of readable account properties to account property keys used by the server */\nexport const PROPERTY_READABLE_KEYS_ENUM = Object.freeze({\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ADDRESS]: ACCOUNT_PROPERTY_ENUM.ADDRESS,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.AVATAR]: ACCOUNT_PROPERTY_ENUM.AVATAR,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY]: ACCOUNT_PROPERTY_ENUM.BIOGRAPHY,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.DISPLAYNAME]: ACCOUNT_PROPERTY_ENUM.DISPLAYNAME,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL_COLLECTION]: ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL]: ACCOUNT_PROPERTY_ENUM.EMAIL,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE]: ACCOUNT_PROPERTY_ENUM.HEADLINE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION]: ACCOUNT_PROPERTY_ENUM.ORGANISATION,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PHONE]: ACCOUNT_PROPERTY_ENUM.PHONE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED]: ACCOUNT_PROPERTY_ENUM.PROFILE_ENABLED,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ROLE]: ACCOUNT_PROPERTY_ENUM.ROLE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.TWITTER]: ACCOUNT_PROPERTY_ENUM.TWITTER,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.WEBSITE]: ACCOUNT_PROPERTY_ENUM.WEBSITE,\n})\n\n/**\n * Enum of account setting properties\n *\n * Account setting properties unlike account properties do not support scopes*\n */\nexport const ACCOUNT_SETTING_PROPERTY_ENUM = Object.freeze({\n\tLANGUAGE: 'language',\n})\n\n/** Enum of account setting properties to human readable setting properties */\nexport const ACCOUNT_SETTING_PROPERTY_READABLE_ENUM = Object.freeze({\n\tLANGUAGE: t('settings', 'Language'),\n})\n\n/** Enum of scopes */\nexport const SCOPE_ENUM = Object.freeze({\n\tPRIVATE: 'v2-private',\n\tLOCAL: 'v2-local',\n\tFEDERATED: 'v2-federated',\n\tPUBLISHED: 'v2-published',\n})\n\n/** Enum of readable account properties to supported scopes */\nexport const PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM = Object.freeze({\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ADDRESS]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.AVATAR]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.DISPLAYNAME]: [SCOPE_ENUM.LOCAL],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL_COLLECTION]: [SCOPE_ENUM.LOCAL],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL]: [SCOPE_ENUM.LOCAL],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PHONE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ROLE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.TWITTER]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.WEBSITE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n})\n\n/** List of readable account properties which aren't published to the lookup server */\nexport const UNPUBLISHED_READABLE_PROPERTIES = Object.freeze([\n\tACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY,\n\tACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE,\n\tACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION,\n\tACCOUNT_PROPERTY_READABLE_ENUM.ROLE,\n])\n\n/** Scope suffix */\nexport const SCOPE_SUFFIX = 'Scope'\n\n/**\n * Enum of scope names to properties\n *\n * Used for federation control*\n */\nexport const SCOPE_PROPERTY_ENUM = Object.freeze({\n\t[SCOPE_ENUM.PRIVATE]: {\n\t\tname: SCOPE_ENUM.PRIVATE,\n\t\tdisplayName: t('settings', 'Private'),\n\t\ttooltip: t('settings', 'Only visible to people matched via phone number integration through Talk on mobile'),\n\t\ttooltipDisabled: t('settings', 'Not available as this property is required for core functionality including file sharing and calendar invitations'),\n\t\ticonClass: 'icon-phone',\n\t},\n\t[SCOPE_ENUM.LOCAL]: {\n\t\tname: SCOPE_ENUM.LOCAL,\n\t\tdisplayName: t('settings', 'Local'),\n\t\ttooltip: t('settings', 'Only visible to people on this instance and guests'),\n\t\t// tooltipDisabled is not required here as this scope is supported by all account properties\n\t\ticonClass: 'icon-password',\n\t},\n\t[SCOPE_ENUM.FEDERATED]: {\n\t\tname: SCOPE_ENUM.FEDERATED,\n\t\tdisplayName: t('settings', 'Federated'),\n\t\ttooltip: t('settings', 'Only synchronize to trusted servers'),\n\t\ttooltipDisabled: t('settings', 'Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions'),\n\t\ticonClass: 'icon-contacts-dark',\n\t},\n\t[SCOPE_ENUM.PUBLISHED]: {\n\t\tname: SCOPE_ENUM.PUBLISHED,\n\t\tdisplayName: t('settings', 'Published'),\n\t\ttooltip: t('settings', 'Synchronize to trusted servers and the global and public address book'),\n\t\ttooltipDisabled: t('settings', 'Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions'),\n\t\ticonClass: 'icon-link',\n\t},\n})\n\n/** Default additional email scope */\nexport const DEFAULT_ADDITIONAL_EMAIL_SCOPE = SCOPE_ENUM.LOCAL\n\n/** Enum of verification constants, according to IAccountManager */\nexport const VERIFICATION_ENUM = Object.freeze({\n\tNOT_VERIFIED: 0,\n\tVERIFICATION_IN_PROGRESS: 1,\n\tVERIFIED: 2,\n})\n\n/**\n * Email validation regex\n *\n * Sourced from https://github.com/mpyw/FILTER_VALIDATE_EMAIL.js/blob/71e62ca48841d2246a1b531e7e84f5a01f15e615/src/regexp/ascii.ts*\n */\n// eslint-disable-next-line no-control-regex\nexport const VALIDATE_EMAIL_REGEX = /^(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){255,})(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){65,}@)(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22))(?:\\.(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-+[a-z0-9]+)*\\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-+[a-z0-9]+)*)|(?:\\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\\]))$/i\n","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\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 */\n\nimport axios from '@nextcloud/axios'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport confirmPassword from '@nextcloud/password-confirmation'\n\nimport { SCOPE_SUFFIX } from '../../constants/AccountPropertyConstants'\n\n/**\n * Save the primary account property value for the user\n *\n * @param {string} accountProperty the account property\n * @param {string|boolean} value the primary value\n * @return {object}\n */\nexport const savePrimaryAccountProperty = async (accountProperty, value) => {\n\t// TODO allow boolean values on backend route handler\n\t// Convert boolean to string for compatibility\n\tif (typeof value === 'boolean') {\n\t\tvalue = value ? '1' : '0'\n\t}\n\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: accountProperty,\n\t\tvalue,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save the federation scope of the primary account property for the user\n *\n * @param {string} accountProperty the account property\n * @param {string} scope the federation scope\n * @return {object}\n */\nexport const savePrimaryAccountPropertyScope = async (accountProperty, scope) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: `${accountProperty}${SCOPE_SUFFIX}`,\n\t\tvalue: scope,\n\t})\n\n\treturn res.data\n}\n","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\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 */\n\n/*\n * Frontend validators, less strict than backend validators\n *\n * TODO add nice validation errors for Profile page settings modal\n */\n\nimport { VALIDATE_EMAIL_REGEX } from '../constants/AccountPropertyConstants'\n\n/**\n * Validate the string input\n *\n * Generic validator just to check that input is not an empty string*\n *\n * @param {string} input the input\n * @return {boolean}\n */\nexport function validateStringInput(input) {\n\treturn input !== ''\n}\n\n/**\n * Validate the email input\n *\n * Compliant with PHP core FILTER_VALIDATE_EMAIL validator*\n *\n * Reference implementation https://github.com/mpyw/FILTER_VALIDATE_EMAIL.js/blob/71e62ca48841d2246a1b531e7e84f5a01f15e615/src/index.ts*\n *\n * @param {string} input the input\n * @return {boolean}\n */\nexport function validateEmail(input) {\n\treturn typeof input === 'string'\n\t\t&& VALIDATE_EMAIL_REGEX.test(input)\n\t\t&& input.slice(-1) !== '\\n'\n\t\t&& input.length <= 320\n\t\t&& encodeURIComponent(input).replace(/%../g, 'x').length <= 320\n}\n\n/**\n * Validate the language input\n *\n * @param {object} input the input\n * @return {boolean}\n */\nexport function validateLanguage(input) {\n\treturn input.code !== ''\n\t\t&& input.name !== ''\n\t\t&& input.name !== undefined\n}\n\n/**\n * Validate boolean input\n *\n * @param {boolean} input the input\n * @return {boolean}\n */\nexport function validateBoolean(input) {\n\treturn typeof input === 'boolean'\n}\n","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"displayname\">\n\t\t<input id=\"displayname\"\n\t\t\ttype=\"text\"\n\t\t\t:placeholder=\"t('settings', 'Your full name')\"\n\t\t\t:value=\"displayName\"\n\t\t\tautocapitalize=\"none\"\n\t\t\tautocomplete=\"on\"\n\t\t\tautocorrect=\"off\"\n\t\t\t@input=\"onDisplayNameChange\">\n\n\t\t<div class=\"displayname__actions-container\">\n\t\t\t<transition name=\"fade\">\n\t\t\t\t<span v-if=\"showCheckmarkIcon\" class=\"icon-checkmark\" />\n\t\t\t\t<span v-else-if=\"showErrorIcon\" class=\"icon-error\" />\n\t\t\t</transition>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { showError } from '@nextcloud/dialogs'\nimport { emit } from '@nextcloud/event-bus'\nimport debounce from 'debounce'\n\nimport { ACCOUNT_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants'\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService'\nimport { validateStringInput } from '../../../utils/validate'\n\n// TODO Global avatar updating on events (e.g. updating the displayname) is currently being handled by global js, investigate using https://github.com/nextcloud/nextcloud-event-bus for global avatar updating\n\nexport default {\n\tname: 'DisplayName',\n\n\tprops: {\n\t\tdisplayName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialDisplayName: this.displayName,\n\t\t\tlocalScope: this.scope,\n\t\t\tshowCheckmarkIcon: false,\n\t\t\tshowErrorIcon: false,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonDisplayNameChange(e) {\n\t\t\tthis.$emit('update:display-name', e.target.value)\n\t\t\tthis.debounceDisplayNameChange(e.target.value.trim())\n\t\t},\n\n\t\tdebounceDisplayNameChange: debounce(async function(displayName) {\n\t\t\tif (validateStringInput(displayName)) {\n\t\t\t\tawait this.updatePrimaryDisplayName(displayName)\n\t\t\t}\n\t\t}, 500),\n\n\t\tasync updatePrimaryDisplayName(displayName) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(ACCOUNT_PROPERTY_ENUM.DISPLAYNAME, displayName)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tdisplayName,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update full name'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ displayName, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tthis.initialDisplayName = displayName\n\t\t\t\temit('settings:display-name:updated', displayName)\n\t\t\t\tthis.showCheckmarkIcon = true\n\t\t\t\tsetTimeout(() => { this.showCheckmarkIcon = false }, 2000)\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t\tthis.showErrorIcon = true\n\t\t\t\tsetTimeout(() => { this.showErrorIcon = false }, 2000)\n\t\t\t}\n\t\t},\n\n\t\tonScopeChange(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.displayname {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\t}\n\n\t.displayname__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DisplayName.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!./DisplayName.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!./DisplayName.vue?vue&type=style&index=0&id=3418897a&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!./DisplayName.vue?vue&type=style&index=0&id=3418897a&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DisplayName.vue?vue&type=template&id=3418897a&scoped=true&\"\nimport script from \"./DisplayName.vue?vue&type=script&lang=js&\"\nexport * from \"./DisplayName.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DisplayName.vue?vue&type=style&index=0&id=3418897a&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 \"3418897a\",\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:\"displayname\"},[_c('input',{attrs:{\"id\":\"displayname\",\"type\":\"text\",\"placeholder\":_vm.t('settings', 'Your full name'),\"autocapitalize\":\"none\",\"autocomplete\":\"on\",\"autocorrect\":\"off\"},domProps:{\"value\":_vm.displayName},on:{\"input\":_vm.onDisplayNameChange}}),_vm._v(\" \"),_c('div',{staticClass:\"displayname__actions-container\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.showCheckmarkIcon)?_c('span',{staticClass:\"icon-checkmark\"}):(_vm.showErrorIcon)?_c('span',{staticClass:\"icon-error\"}):_vm._e()])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FederationControlAction.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!./FederationControlAction.vue?vue&type=script&lang=js&\"","<!--\n\t- @copyright 2021 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<ActionButton :aria-label=\"isSupportedScope ? tooltip : tooltipDisabled\"\n\t\tclass=\"federation-actions__btn\"\n\t\t:class=\"{ 'federation-actions__btn--active': activeScope === name }\"\n\t\t:close-after-click=\"true\"\n\t\t:disabled=\"!isSupportedScope\"\n\t\t:icon=\"iconClass\"\n\t\t:title=\"displayName\"\n\t\t@click.stop.prevent=\"updateScope\">\n\t\t{{ isSupportedScope ? tooltip : tooltipDisabled }}\n\t</ActionButton>\n</template>\n\n<script>\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\n\nexport default {\n\tname: 'FederationControlAction',\n\n\tcomponents: {\n\t\tActionButton,\n\t},\n\n\tprops: {\n\t\tactiveScope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdisplayName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\thandleScopeChange: {\n\t\t\ttype: Function,\n\t\t\tdefault: () => {},\n\t\t},\n\t\ticonClass: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tisSupportedScope: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ttooltipDisabled: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\ttooltip: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tmethods: {\n\t\tupdateScope() {\n\t\t\tthis.handleScopeChange(this.name)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.federation-actions__btn {\n\t\t&::v-deep p {\n\t\t\twidth: 150px !important;\n\t\t\tpadding: 8px 0 !important;\n\t\t\tcolor: var(--color-main-text) !important;\n\t\t\tfont-size: 12.8px !important;\n\t\t\tline-height: 1.5em !important;\n\t\t}\n\t}\n\n\t.federation-actions__btn--active {\n\t\tbackground-color: var(--color-primary-light) !important;\n\t\tbox-shadow: inset 2px 0 var(--color-primary) !important;\n\t}\n</style>\n","\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!./FederationControlAction.vue?vue&type=style&index=0&id=d2e8b360&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!./FederationControlAction.vue?vue&type=style&index=0&id=d2e8b360&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FederationControlAction.vue?vue&type=template&id=d2e8b360&scoped=true&\"\nimport script from \"./FederationControlAction.vue?vue&type=script&lang=js&\"\nexport * from \"./FederationControlAction.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FederationControlAction.vue?vue&type=style&index=0&id=d2e8b360&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 \"d2e8b360\",\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('ActionButton',{staticClass:\"federation-actions__btn\",class:{ 'federation-actions__btn--active': _vm.activeScope === _vm.name },attrs:{\"aria-label\":_vm.isSupportedScope ? _vm.tooltip : _vm.tooltipDisabled,\"close-after-click\":true,\"disabled\":!_vm.isSupportedScope,\"icon\":_vm.iconClass,\"title\":_vm.displayName},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.updateScope.apply(null, arguments)}}},[_vm._v(\"\\n\\t\"+_vm._s(_vm.isSupportedScope ? _vm.tooltip : _vm.tooltipDisabled)+\"\\n\")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<Actions :class=\"{ 'federation-actions': !additional, 'federation-actions--additional': additional }\"\n\t\t:aria-label=\"ariaLabel\"\n\t\t:default-icon=\"scopeIcon\"\n\t\t:disabled=\"disabled\">\n\t\t<FederationControlAction v-for=\"federationScope in federationScopes\"\n\t\t\t:key=\"federationScope.name\"\n\t\t\t:active-scope=\"scope\"\n\t\t\t:display-name=\"federationScope.displayName\"\n\t\t\t:handle-scope-change=\"changeScope\"\n\t\t\t:icon-class=\"federationScope.iconClass\"\n\t\t\t:is-supported-scope=\"supportedScopes.includes(federationScope.name)\"\n\t\t\t:name=\"federationScope.name\"\n\t\t\t:tooltip-disabled=\"federationScope.tooltipDisabled\"\n\t\t\t:tooltip=\"federationScope.tooltip\" />\n\t</Actions>\n</template>\n\n<script>\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport { loadState } from '@nextcloud/initial-state'\nimport { showError } from '@nextcloud/dialogs'\n\nimport FederationControlAction from './FederationControlAction'\n\nimport {\n\tACCOUNT_PROPERTY_READABLE_ENUM,\n\tPROPERTY_READABLE_KEYS_ENUM,\n\tPROPERTY_READABLE_SUPPORTED_SCOPES_ENUM,\n\tSCOPE_ENUM, SCOPE_PROPERTY_ENUM,\n\tUNPUBLISHED_READABLE_PROPERTIES,\n} from '../../../constants/AccountPropertyConstants'\nimport { savePrimaryAccountPropertyScope } from '../../../service/PersonalInfo/PersonalInfoService'\n\nconst { lookupServerUploadEnabled } = loadState('settings', 'accountParameters', {})\n\nexport default {\n\tname: 'FederationControl',\n\n\tcomponents: {\n\t\tActions,\n\t\tFederationControlAction,\n\t},\n\n\tprops: {\n\t\taccountProperty: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t\tvalidator: (value) => Object.values(ACCOUNT_PROPERTY_READABLE_ENUM).includes(value),\n\t\t},\n\t\tadditional: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tadditionalValue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\thandleAdditionalScopeChange: {\n\t\t\ttype: Function,\n\t\t\tdefault: null,\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountPropertyLowerCase: this.accountProperty.toLocaleLowerCase(),\n\t\t\tinitialScope: this.scope,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tariaLabel() {\n\t\t\treturn t('settings', 'Change scope level of {accountProperty}', { accountProperty: this.accountPropertyLowerCase })\n\t\t},\n\n\t\tscopeIcon() {\n\t\t\treturn SCOPE_PROPERTY_ENUM[this.scope].iconClass\n\t\t},\n\n\t\tfederationScopes() {\n\t\t\treturn Object.values(SCOPE_PROPERTY_ENUM)\n\t\t},\n\n\t\tsupportedScopes() {\n\t\t\tif (lookupServerUploadEnabled && !UNPUBLISHED_READABLE_PROPERTIES.includes(this.accountProperty)) {\n\t\t\t\treturn [\n\t\t\t\t\t...PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM[this.accountProperty],\n\t\t\t\t\tSCOPE_ENUM.FEDERATED,\n\t\t\t\t\tSCOPE_ENUM.PUBLISHED,\n\t\t\t\t]\n\t\t\t}\n\n\t\t\treturn PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM[this.accountProperty]\n\t\t},\n\t},\n\n\tmethods: {\n\t\tasync changeScope(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\n\t\t\tif (!this.additional) {\n\t\t\t\tawait this.updatePrimaryScope(scope)\n\t\t\t} else {\n\t\t\t\tawait this.updateAdditionalScope(scope)\n\t\t\t}\n\t\t},\n\n\t\tasync updatePrimaryScope(scope) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountPropertyScope(PROPERTY_READABLE_KEYS_ENUM[this.accountProperty], scope)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tscope,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update federation scope of the primary {accountProperty}', { accountProperty: this.accountPropertyLowerCase }),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tasync updateAdditionalScope(scope) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await this.handleAdditionalScopeChange(this.additionalValue, scope)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tscope,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update federation scope of additional {accountProperty}', { accountProperty: this.accountPropertyLowerCase }),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ scope, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\tthis.initialScope = scope\n\t\t\t} else {\n\t\t\t\tthis.$emit('update:scope', this.initialScope)\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.federation-actions,\n\t.federation-actions--additional {\n\t\topacity: 0.4 !important;\n\n\t\t&:hover,\n\t\t&:focus,\n\t\t&:active {\n\t\t\topacity: 0.8 !important;\n\t\t}\n\t}\n\n\t.federation-actions--additional {\n\t\t&::v-deep button {\n\t\t\t// TODO remove this hack\n\t\t\tpadding-bottom: 7px;\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t}\n\t}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FederationControl.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!./FederationControl.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!./FederationControl.vue?vue&type=style&index=0&id=b51d8bee&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!./FederationControl.vue?vue&type=style&index=0&id=b51d8bee&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FederationControl.vue?vue&type=template&id=b51d8bee&scoped=true&\"\nimport script from \"./FederationControl.vue?vue&type=script&lang=js&\"\nexport * from \"./FederationControl.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FederationControl.vue?vue&type=style&index=0&id=b51d8bee&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 \"b51d8bee\",\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('Actions',{class:{ 'federation-actions': !_vm.additional, 'federation-actions--additional': _vm.additional },attrs:{\"aria-label\":_vm.ariaLabel,\"default-icon\":_vm.scopeIcon,\"disabled\":_vm.disabled}},_vm._l((_vm.federationScopes),function(federationScope){return _c('FederationControlAction',{key:federationScope.name,attrs:{\"active-scope\":_vm.scope,\"display-name\":federationScope.displayName,\"handle-scope-change\":_vm.changeScope,\"icon-class\":federationScope.iconClass,\"is-supported-scope\":_vm.supportedScopes.includes(federationScope.name),\"name\":federationScope.name,\"tooltip-disabled\":federationScope.tooltipDisabled,\"tooltip\":federationScope.tooltip}})}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeaderBar.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!./HeaderBar.vue?vue&type=script&lang=js&\"","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<h3 :class=\"{ 'setting-property': isSettingProperty, 'profile-property': isProfileProperty }\">\n\t\t<label :for=\"labelFor\">\n\t\t\t<!-- Already translated as required by prop validator -->\n\t\t\t{{ accountProperty }}\n\t\t</label>\n\n\t\t<template v-if=\"scope\">\n\t\t\t<FederationControl class=\"federation-control\"\n\t\t\t\t:account-property=\"accountProperty\"\n\t\t\t\t:scope.sync=\"localScope\"\n\t\t\t\t@update:scope=\"onScopeChange\" />\n\t\t</template>\n\n\t\t<template v-if=\"isEditable && isMultiValueSupported\">\n\t\t\t<Button type=\"tertiary\"\n\t\t\t\t:disabled=\"!isValidSection\"\n\t\t\t\t:aria-label=\"t('settings', 'Add additional email')\"\n\t\t\t\t@click.stop.prevent=\"onAddAdditional\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Plus :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t{{ t('settings', 'Add') }}\n\t\t\t</Button>\n\t\t</template>\n\t</h3>\n</template>\n\n<script>\nimport FederationControl from './FederationControl'\nimport Button from '@nextcloud/vue/dist/Components/Button'\nimport Plus from 'vue-material-design-icons/Plus'\nimport { ACCOUNT_PROPERTY_READABLE_ENUM, ACCOUNT_SETTING_PROPERTY_READABLE_ENUM, PROFILE_READABLE_ENUM } from '../../../constants/AccountPropertyConstants'\n\nexport default {\n\tname: 'HeaderBar',\n\n\tcomponents: {\n\t\tFederationControl,\n\t\tButton,\n\t\tPlus,\n\t},\n\n\tprops: {\n\t\taccountProperty: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t\tvalidator: (value) => Object.values(ACCOUNT_PROPERTY_READABLE_ENUM).includes(value) || Object.values(ACCOUNT_SETTING_PROPERTY_READABLE_ENUM).includes(value) || value === PROFILE_READABLE_ENUM.PROFILE_VISIBILITY,\n\t\t},\n\t\tisEditable: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tisMultiValueSupported: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisValidSection: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tlabelFor: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tlocalScope: this.scope,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisProfileProperty() {\n\t\t\treturn this.accountProperty === ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED\n\t\t},\n\n\t\tisSettingProperty() {\n\t\t\treturn Object.values(ACCOUNT_SETTING_PROPERTY_READABLE_ENUM).includes(this.accountProperty)\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonAddAdditional() {\n\t\t\tthis.$emit('add-additional')\n\t\t},\n\n\t\tonScopeChange(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\th3 {\n\t\tdisplay: inline-flex;\n\t\twidth: 100%;\n\t\tmargin: 12px 0 0 0;\n\t\tfont-size: 16px;\n\t\tcolor: var(--color-text-light);\n\n\t\t&.profile-property {\n\t\t\theight: 38px;\n\t\t}\n\n\t\t&.setting-property {\n\t\t\theight: 32px;\n\t\t}\n\n\t\tlabel {\n\t\t\tcursor: pointer;\n\t\t}\n\t}\n\n\t.federation-control {\n\t\tmargin: -12px 0 0 8px;\n\t}\n\n\t.button-vue {\n\t\tmargin: -6px 0 0 auto !important;\n\t}\n</style>\n","\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!./HeaderBar.vue?vue&type=style&index=0&id=19038f0c&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!./HeaderBar.vue?vue&type=style&index=0&id=19038f0c&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./HeaderBar.vue?vue&type=template&id=19038f0c&scoped=true&\"\nimport script from \"./HeaderBar.vue?vue&type=script&lang=js&\"\nexport * from \"./HeaderBar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./HeaderBar.vue?vue&type=style&index=0&id=19038f0c&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 \"19038f0c\",\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('h3',{class:{ 'setting-property': _vm.isSettingProperty, 'profile-property': _vm.isProfileProperty }},[_c('label',{attrs:{\"for\":_vm.labelFor}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.accountProperty)+\"\\n\\t\")]),_vm._v(\" \"),(_vm.scope)?[_c('FederationControl',{staticClass:\"federation-control\",attrs:{\"account-property\":_vm.accountProperty,\"scope\":_vm.localScope},on:{\"update:scope\":[function($event){_vm.localScope=$event},_vm.onScopeChange]}})]:_vm._e(),_vm._v(\" \"),(_vm.isEditable && _vm.isMultiValueSupported)?[_c('Button',{attrs:{\"type\":\"tertiary\",\"disabled\":!_vm.isValidSection,\"aria-label\":_vm.t('settings', 'Add additional email')},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.onAddAdditional.apply(null, arguments)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Plus',{attrs:{\"size\":20}})]},proxy:true}],null,false,32235154)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Add'))+\"\\n\\t\\t\")])]:_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :account-property=\"accountProperty\"\n\t\t\tlabel-for=\"displayname\"\n\t\t\t:is-editable=\"displayNameChangeSupported\"\n\t\t\t:is-valid-section=\"isValidSection\"\n\t\t\t:scope.sync=\"primaryDisplayName.scope\" />\n\n\t\t<template v-if=\"displayNameChangeSupported\">\n\t\t\t<DisplayName :display-name.sync=\"primaryDisplayName.value\"\n\t\t\t\t:scope.sync=\"primaryDisplayName.scope\" />\n\t\t</template>\n\n\t\t<span v-else>\n\t\t\t{{ primaryDisplayName.value || t('settings', 'No full name set') }}\n\t\t</span>\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport DisplayName from './DisplayName'\nimport HeaderBar from '../shared/HeaderBar'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants'\nimport { validateStringInput } from '../../../utils/validate'\n\nconst { displayNameMap: { primaryDisplayName } } = loadState('settings', 'personalInfoParameters', {})\nconst { displayNameChangeSupported } = loadState('settings', 'accountParameters', {})\n\nexport default {\n\tname: 'DisplayNameSection',\n\n\tcomponents: {\n\t\tDisplayName,\n\t\tHeaderBar,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.DISPLAYNAME,\n\t\t\tdisplayNameChangeSupported,\n\t\t\tprimaryDisplayName,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisValidSection() {\n\t\t\treturn validateStringInput(this.primaryDisplayName.value)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DisplayNameSection.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!./DisplayNameSection.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!./DisplayNameSection.vue?vue&type=style&index=0&id=b8a748f4&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!./DisplayNameSection.vue?vue&type=style&index=0&id=b8a748f4&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DisplayNameSection.vue?vue&type=template&id=b8a748f4&scoped=true&\"\nimport script from \"./DisplayNameSection.vue?vue&type=script&lang=js&\"\nexport * from \"./DisplayNameSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DisplayNameSection.vue?vue&type=style&index=0&id=b8a748f4&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 \"b8a748f4\",\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('section',[_c('HeaderBar',{attrs:{\"account-property\":_vm.accountProperty,\"label-for\":\"displayname\",\"is-editable\":_vm.displayNameChangeSupported,\"is-valid-section\":_vm.isValidSection,\"scope\":_vm.primaryDisplayName.scope},on:{\"update:scope\":function($event){return _vm.$set(_vm.primaryDisplayName, \"scope\", $event)}}}),_vm._v(\" \"),(_vm.displayNameChangeSupported)?[_c('DisplayName',{attrs:{\"display-name\":_vm.primaryDisplayName.value,\"scope\":_vm.primaryDisplayName.scope},on:{\"update:displayName\":function($event){return _vm.$set(_vm.primaryDisplayName, \"value\", $event)},\"update:display-name\":function($event){return _vm.$set(_vm.primaryDisplayName, \"value\", $event)},\"update:scope\":function($event){return _vm.$set(_vm.primaryDisplayName, \"scope\", $event)}}})]:_c('span',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.primaryDisplayName.value || _vm.t('settings', 'No full name set'))+\"\\n\\t\")])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\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 */\n\nimport axios from '@nextcloud/axios'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport confirmPassword from '@nextcloud/password-confirmation'\n\nimport { ACCOUNT_PROPERTY_ENUM, SCOPE_SUFFIX } from '../../constants/AccountPropertyConstants'\n\n/**\n * Save the primary email of the user\n *\n * @param {string} email the primary email\n * @return {object}\n */\nexport const savePrimaryEmail = async (email) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: ACCOUNT_PROPERTY_ENUM.EMAIL,\n\t\tvalue: email,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save an additional email of the user\n *\n * Will be appended to the user's additional emails*\n *\n * @param {string} email the additional email\n * @return {object}\n */\nexport const saveAdditionalEmail = async (email) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION,\n\t\tvalue: email,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save the notification email of the user\n *\n * @param {string} email the notification email\n * @return {object}\n */\nexport const saveNotificationEmail = async (email) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: ACCOUNT_PROPERTY_ENUM.NOTIFICATION_EMAIL,\n\t\tvalue: email,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Remove an additional email of the user\n *\n * @param {string} email the additional email\n * @return {object}\n */\nexport const removeAdditionalEmail = async (email) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}/{collection}', { userId, collection: ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: email,\n\t\tvalue: '',\n\t})\n\n\treturn res.data\n}\n\n/**\n * Update an additional email of the user\n *\n * @param {string} prevEmail the additional email to be updated\n * @param {string} newEmail the new additional email\n * @return {object}\n */\nexport const updateAdditionalEmail = async (prevEmail, newEmail) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}/{collection}', { userId, collection: ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: prevEmail,\n\t\tvalue: newEmail,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save the federation scope for the primary email of the user\n *\n * @param {string} scope the federation scope\n * @return {object}\n */\nexport const savePrimaryEmailScope = async (scope) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: `${ACCOUNT_PROPERTY_ENUM.EMAIL}${SCOPE_SUFFIX}`,\n\t\tvalue: scope,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save the federation scope for the additional email of the user\n *\n * @param {string} email the additional email\n * @param {string} scope the federation scope\n * @return {object}\n */\nexport const saveAdditionalEmailScope = async (email, scope) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}/{collectionScope}', { userId, collectionScope: `${ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION}${SCOPE_SUFFIX}` })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: email,\n\t\tvalue: scope,\n\t})\n\n\treturn res.data\n}\n","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div>\n\t\t<div class=\"email\">\n\t\t\t<input :id=\"inputId\"\n\t\t\t\tref=\"email\"\n\t\t\t\ttype=\"email\"\n\t\t\t\t:placeholder=\"inputPlaceholder\"\n\t\t\t\t:value=\"email\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocomplete=\"on\"\n\t\t\t\tautocorrect=\"off\"\n\t\t\t\t@input=\"onEmailChange\">\n\n\t\t\t<div class=\"email__actions-container\">\n\t\t\t\t<transition name=\"fade\">\n\t\t\t\t\t<span v-if=\"showCheckmarkIcon\" class=\"icon-checkmark\" />\n\t\t\t\t\t<span v-else-if=\"showErrorIcon\" class=\"icon-error\" />\n\t\t\t\t</transition>\n\n\t\t\t\t<template v-if=\"!primary\">\n\t\t\t\t\t<FederationControl :account-property=\"accountProperty\"\n\t\t\t\t\t\t:additional=\"true\"\n\t\t\t\t\t\t:additional-value=\"email\"\n\t\t\t\t\t\t:disabled=\"federationDisabled\"\n\t\t\t\t\t\t:handle-additional-scope-change=\"saveAdditionalEmailScope\"\n\t\t\t\t\t\t:scope.sync=\"localScope\"\n\t\t\t\t\t\t@update:scope=\"onScopeChange\" />\n\t\t\t\t</template>\n\n\t\t\t\t<Actions class=\"email__actions\"\n\t\t\t\t\t:aria-label=\"t('settings', 'Email options')\"\n\t\t\t\t\t:disabled=\"deleteDisabled\"\n\t\t\t\t\t:force-menu=\"true\">\n\t\t\t\t\t<ActionButton :aria-label=\"deleteEmailLabel\"\n\t\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t\t:disabled=\"deleteDisabled\"\n\t\t\t\t\t\ticon=\"icon-delete\"\n\t\t\t\t\t\t@click.stop.prevent=\"deleteEmail\">\n\t\t\t\t\t\t{{ deleteEmailLabel }}\n\t\t\t\t\t</ActionButton>\n\t\t\t\t\t<ActionButton v-if=\"!primary || !isNotificationEmail\"\n\t\t\t\t\t\t:aria-label=\"setNotificationMailLabel\"\n\t\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t\t:disabled=\"setNotificationMailDisabled\"\n\t\t\t\t\t\ticon=\"icon-favorite\"\n\t\t\t\t\t\t@click.stop.prevent=\"setNotificationMail\">\n\t\t\t\t\t\t{{ setNotificationMailLabel }}\n\t\t\t\t\t</ActionButton>\n\t\t\t\t</Actions>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<em v-if=\"isNotificationEmail\">\n\t\t\t{{ t('settings', 'Primary email for password reset and notifications') }}\n\t\t</em>\n\t</div>\n</template>\n\n<script>\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport { showError } from '@nextcloud/dialogs'\nimport debounce from 'debounce'\n\nimport FederationControl from '../shared/FederationControl'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM, VERIFICATION_ENUM } from '../../../constants/AccountPropertyConstants'\nimport {\n\tremoveAdditionalEmail,\n\tsaveAdditionalEmail,\n\tsaveAdditionalEmailScope,\n\tsaveNotificationEmail,\n\tsavePrimaryEmail,\n\tupdateAdditionalEmail,\n} from '../../../service/PersonalInfo/EmailService'\nimport { validateEmail } from '../../../utils/validate'\n\nexport default {\n\tname: 'Email',\n\n\tcomponents: {\n\t\tActions,\n\t\tActionButton,\n\t\tFederationControl,\n\t},\n\n\tprops: {\n\t\temail: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tindex: {\n\t\t\ttype: Number,\n\t\t\tdefault: 0,\n\t\t},\n\t\tprimary: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tactiveNotificationEmail: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tlocalVerificationState: {\n\t\t\ttype: Number,\n\t\t\tdefault: VERIFICATION_ENUM.NOT_VERIFIED,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL,\n\t\t\tinitialEmail: this.email,\n\t\t\tlocalScope: this.scope,\n\t\t\tsaveAdditionalEmailScope,\n\t\t\tshowCheckmarkIcon: false,\n\t\t\tshowErrorIcon: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tdeleteDisabled() {\n\t\t\tif (this.primary) {\n\t\t\t\t// Disable for empty primary email as there is nothing to delete\n\t\t\t\t// OR when initialEmail (reflects server state) and email (current input) are not the same\n\t\t\t\treturn this.email === '' || this.initialEmail !== this.email\n\t\t\t} else if (this.initialEmail !== '') {\n\t\t\t\treturn this.initialEmail !== this.email\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\n\t\tdeleteEmailLabel() {\n\t\t\tif (this.primary) {\n\t\t\t\treturn t('settings', 'Remove primary email')\n\t\t\t}\n\t\t\treturn t('settings', 'Delete email')\n\t\t},\n\n\t setNotificationMailDisabled() {\n\t\t\treturn !this.primary && this.localVerificationState !== VERIFICATION_ENUM.VERIFIED\n\t\t},\n\n\t setNotificationMailLabel() {\n\t\t\tif (this.isNotificationEmail) {\n\t\t\t\treturn t('settings', 'Unset as primary email')\n\t\t\t} else if (!this.primary && this.localVerificationState !== VERIFICATION_ENUM.VERIFIED) {\n\t\t\t\treturn t('settings', 'This address is not confirmed')\n\t\t\t}\n\t\t\treturn t('settings', 'Set as primary email')\n\t\t},\n\n\t\tfederationDisabled() {\n\t\t\treturn !this.initialEmail\n\t\t},\n\n\t\tinputId() {\n\t\t\tif (this.primary) {\n\t\t\t\treturn 'email'\n\t\t\t}\n\t\t\treturn `email-${this.index}`\n\t\t},\n\n\t\tinputPlaceholder() {\n\t\t\tif (this.primary) {\n\t\t\t\treturn t('settings', 'Your email address')\n\t\t\t}\n\t\t\treturn t('settings', 'Additional email address {index}', { index: this.index + 1 })\n\t\t},\n\n\t\tisNotificationEmail() {\n\t\t\treturn (this.email && this.email === this.activeNotificationEmail)\n\t\t\t\t|| (this.primary && this.activeNotificationEmail === '')\n\t\t},\n\t},\n\n\tmounted() {\n\t\tif (!this.primary && this.initialEmail === '') {\n\t\t\t// $nextTick is needed here, otherwise it may not always work https://stackoverflow.com/questions/51922767/autofocus-input-on-mount-vue-ios/63485725#63485725\n\t\t\tthis.$nextTick(() => this.$refs.email?.focus())\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonEmailChange(e) {\n\t\t\tthis.$emit('update:email', e.target.value)\n\t\t\tthis.debounceEmailChange(e.target.value.trim())\n\t\t},\n\n\t\tdebounceEmailChange: debounce(async function(email) {\n\t\t\tif (validateEmail(email) || email === '') {\n\t\t\t\tif (this.primary) {\n\t\t\t\t\tawait this.updatePrimaryEmail(email)\n\t\t\t\t} else {\n\t\t\t\t\tif (email) {\n\t\t\t\t\t\tif (this.initialEmail === '') {\n\t\t\t\t\t\t\tawait this.addAdditionalEmail(email)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tawait this.updateAdditionalEmail(email)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}, 500),\n\n\t\tasync deleteEmail() {\n\t\t\tif (this.primary) {\n\t\t\t\tthis.$emit('update:email', '')\n\t\t\t\tawait this.updatePrimaryEmail('')\n\t\t\t} else {\n\t\t\t\tawait this.deleteAdditionalEmail()\n\t\t\t}\n\t\t},\n\n\t\tasync updatePrimaryEmail(email) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryEmail(email)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\temail,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tif (email === '') {\n\t\t\t\t\tthis.handleResponse({\n\t\t\t\t\t\terrorMessage: t('settings', 'Unable to delete primary email address'),\n\t\t\t\t\t\terror: e,\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\tthis.handleResponse({\n\t\t\t\t\t\terrorMessage: t('settings', 'Unable to update primary email address'),\n\t\t\t\t\t\terror: e,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tasync addAdditionalEmail(email) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await saveAdditionalEmail(email)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\temail,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to add additional email address'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tasync setNotificationMail() {\n\t\t try {\n\t\t\t const newNotificationMailValue = (this.primary || this.isNotificationEmail) ? '' : this.initialEmail\n\t\t\t const responseData = await saveNotificationEmail(newNotificationMailValue)\n\t\t\t this.handleResponse({\n\t\t\t\t notificationEmail: newNotificationMailValue,\n\t\t\t\t status: responseData.ocs?.meta?.status,\n\t\t\t })\n\t\t } catch (e) {\n\t\t\t this.handleResponse({\n\t\t\t\t errorMessage: 'Unable to choose this email for notifications',\n\t\t\t\t error: e,\n\t\t\t })\n\t\t }\n\t\t},\n\n\t\tasync updateAdditionalEmail(email) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await updateAdditionalEmail(this.initialEmail, email)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\temail,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update additional email address'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tasync deleteAdditionalEmail() {\n\t\t\ttry {\n\t\t\t\tconst responseData = await removeAdditionalEmail(this.initialEmail)\n\t\t\t\tthis.handleDeleteAdditionalEmail(responseData.ocs?.meta?.status)\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to delete additional email address'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleDeleteAdditionalEmail(status) {\n\t\t\tif (status === 'ok') {\n\t\t\t\tthis.$emit('delete-additional-email')\n\t\t\t} else {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to delete additional email address'),\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ email, notificationEmail, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tif (email) {\n\t\t\t\t\tthis.initialEmail = email\n\t\t\t\t} else if (notificationEmail !== undefined) {\n\t\t\t\t\tthis.$emit('update:notification-email', notificationEmail)\n\t\t\t\t}\n\t\t\t\tthis.showCheckmarkIcon = true\n\t\t\t\tsetTimeout(() => { this.showCheckmarkIcon = false }, 2000)\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t\tthis.showErrorIcon = true\n\t\t\t\tsetTimeout(() => { this.showErrorIcon = false }, 2000)\n\t\t\t}\n\t\t},\n\n\t\tonScopeChange(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.email {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\t}\n\n\t.email__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.email__actions {\n\t\t\topacity: 0.4 !important;\n\n\t\t\t&:hover,\n\t\t\t&:focus,\n\t\t\t&:active {\n\t\t\t\topacity: 0.8 !important;\n\t\t\t}\n\n\t\t\t&::v-deep button {\n\t\t\t\theight: 30px !important;\n\t\t\t\tmin-height: 30px !important;\n\t\t\t\twidth: 30px !important;\n\t\t\t\tmin-width: 30px !important;\n\t\t\t}\n\t\t}\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Email.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!./Email.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!./Email.vue?vue&type=style&index=0&id=2c097054&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!./Email.vue?vue&type=style&index=0&id=2c097054&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Email.vue?vue&type=template&id=2c097054&scoped=true&\"\nimport script from \"./Email.vue?vue&type=script&lang=js&\"\nexport * from \"./Email.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Email.vue?vue&type=style&index=0&id=2c097054&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 \"2c097054\",\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',[_c('div',{staticClass:\"email\"},[_c('input',{ref:\"email\",attrs:{\"id\":_vm.inputId,\"type\":\"email\",\"placeholder\":_vm.inputPlaceholder,\"autocapitalize\":\"none\",\"autocomplete\":\"on\",\"autocorrect\":\"off\"},domProps:{\"value\":_vm.email},on:{\"input\":_vm.onEmailChange}}),_vm._v(\" \"),_c('div',{staticClass:\"email__actions-container\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.showCheckmarkIcon)?_c('span',{staticClass:\"icon-checkmark\"}):(_vm.showErrorIcon)?_c('span',{staticClass:\"icon-error\"}):_vm._e()]),_vm._v(\" \"),(!_vm.primary)?[_c('FederationControl',{attrs:{\"account-property\":_vm.accountProperty,\"additional\":true,\"additional-value\":_vm.email,\"disabled\":_vm.federationDisabled,\"handle-additional-scope-change\":_vm.saveAdditionalEmailScope,\"scope\":_vm.localScope},on:{\"update:scope\":[function($event){_vm.localScope=$event},_vm.onScopeChange]}})]:_vm._e(),_vm._v(\" \"),_c('Actions',{staticClass:\"email__actions\",attrs:{\"aria-label\":_vm.t('settings', 'Email options'),\"disabled\":_vm.deleteDisabled,\"force-menu\":true}},[_c('ActionButton',{attrs:{\"aria-label\":_vm.deleteEmailLabel,\"close-after-click\":true,\"disabled\":_vm.deleteDisabled,\"icon\":\"icon-delete\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.deleteEmail.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.deleteEmailLabel)+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(!_vm.primary || !_vm.isNotificationEmail)?_c('ActionButton',{attrs:{\"aria-label\":_vm.setNotificationMailLabel,\"close-after-click\":true,\"disabled\":_vm.setNotificationMailDisabled,\"icon\":\"icon-favorite\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.setNotificationMail.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.setNotificationMailLabel)+\"\\n\\t\\t\\t\\t\")]):_vm._e()],1)],2)]),_vm._v(\" \"),(_vm.isNotificationEmail)?_c('em',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Primary email for password reset and notifications'))+\"\\n\\t\")]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :account-property=\"accountProperty\"\n\t\t\tlabel-for=\"email\"\n\t\t\t:handle-scope-change=\"savePrimaryEmailScope\"\n\t\t\t:is-editable=\"true\"\n\t\t\t:is-multi-value-supported=\"true\"\n\t\t\t:is-valid-section=\"isValidSection\"\n\t\t\t:scope.sync=\"primaryEmail.scope\"\n\t\t\t@add-additional=\"onAddAdditionalEmail\" />\n\n\t\t<template v-if=\"displayNameChangeSupported\">\n\t\t\t<Email :primary=\"true\"\n\t\t\t\t:scope.sync=\"primaryEmail.scope\"\n\t\t\t\t:email.sync=\"primaryEmail.value\"\n\t\t\t\t:active-notification-email.sync=\"notificationEmail\"\n\t\t\t\t@update:email=\"onUpdateEmail\"\n\t\t\t\t@update:notification-email=\"onUpdateNotificationEmail\" />\n\t\t</template>\n\n\t\t<span v-else>\n\t\t\t{{ primaryEmail.value || t('settings', 'No email address set') }}\n\t\t</span>\n\n\t\t<template v-if=\"additionalEmails.length\">\n\t\t\t<em class=\"additional-emails-label\">{{ t('settings', 'Additional emails') }}</em>\n\t\t\t<Email v-for=\"(additionalEmail, index) in additionalEmails\"\n\t\t\t\t:key=\"index\"\n\t\t\t\t:index=\"index\"\n\t\t\t\t:scope.sync=\"additionalEmail.scope\"\n\t\t\t\t:email.sync=\"additionalEmail.value\"\n\t\t\t\t:local-verification-state=\"parseInt(additionalEmail.locallyVerified, 10)\"\n\t\t\t\t:active-notification-email.sync=\"notificationEmail\"\n\t\t\t\t@update:email=\"onUpdateEmail\"\n\t\t\t\t@update:notification-email=\"onUpdateNotificationEmail\"\n\t\t\t\t@delete-additional-email=\"onDeleteAdditionalEmail(index)\" />\n\t\t</template>\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport { showError } from '@nextcloud/dialogs'\n\nimport Email from './Email'\nimport HeaderBar from '../shared/HeaderBar'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM, DEFAULT_ADDITIONAL_EMAIL_SCOPE } from '../../../constants/AccountPropertyConstants'\nimport { savePrimaryEmail, savePrimaryEmailScope, removeAdditionalEmail } from '../../../service/PersonalInfo/EmailService'\nimport { validateEmail } from '../../../utils/validate'\n\nconst { emailMap: { additionalEmails, primaryEmail, notificationEmail } } = loadState('settings', 'personalInfoParameters', {})\nconst { displayNameChangeSupported } = loadState('settings', 'accountParameters', {})\n\nexport default {\n\tname: 'EmailSection',\n\n\tcomponents: {\n\t\tHeaderBar,\n\t\tEmail,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL,\n\t\t\tadditionalEmails,\n\t\t\tdisplayNameChangeSupported,\n\t\t\tprimaryEmail,\n\t\t\tsavePrimaryEmailScope,\n\t\t\tnotificationEmail,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tfirstAdditionalEmail() {\n\t\t\tif (this.additionalEmails.length) {\n\t\t\t\treturn this.additionalEmails[0].value\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\tisValidSection() {\n\t\t\treturn validateEmail(this.primaryEmail.value)\n\t\t\t\t&& this.additionalEmails.map(({ value }) => value).every(validateEmail)\n\t\t},\n\n\t\tprimaryEmailValue: {\n\t\t\tget() {\n\t\t\t\treturn this.primaryEmail.value\n\t\t\t},\n\t\t\tset(value) {\n\t\t\t\tthis.primaryEmail.value = value\n\t\t\t},\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonAddAdditionalEmail() {\n\t\t\tif (this.isValidSection) {\n\t\t\t\tthis.additionalEmails.push({ value: '', scope: DEFAULT_ADDITIONAL_EMAIL_SCOPE })\n\t\t\t}\n\t\t},\n\n\t\tonDeleteAdditionalEmail(index) {\n\t\t\tthis.$delete(this.additionalEmails, index)\n\t\t},\n\n\t\tasync onUpdateEmail() {\n\t\t\tif (this.primaryEmailValue === '' && this.firstAdditionalEmail) {\n\t\t\t\tconst deletedEmail = this.firstAdditionalEmail\n\t\t\t\tawait this.deleteFirstAdditionalEmail()\n\t\t\t\tthis.primaryEmailValue = deletedEmail\n\t\t\t\tawait this.updatePrimaryEmail()\n\t\t\t}\n\t\t},\n\n\t\tasync onUpdateNotificationEmail(email) {\n\t\t\tthis.notificationEmail = email\n\t\t},\n\n\t\tasync updatePrimaryEmail() {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryEmail(this.primaryEmailValue)\n\t\t\t\tthis.handleResponse(responseData.ocs?.meta?.status)\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse(\n\t\t\t\t\t'error',\n\t\t\t\t\tt('settings', 'Unable to update primary email address'),\n\t\t\t\t\te\n\t\t\t\t)\n\t\t\t}\n\t\t},\n\n\t\tasync deleteFirstAdditionalEmail() {\n\t\t\ttry {\n\t\t\t\tconst responseData = await removeAdditionalEmail(this.firstAdditionalEmail)\n\t\t\t\tthis.handleDeleteFirstAdditionalEmail(responseData.ocs?.meta?.status)\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse(\n\t\t\t\t\t'error',\n\t\t\t\t\tt('settings', 'Unable to delete additional email address'),\n\t\t\t\t\te\n\t\t\t\t)\n\t\t\t}\n\t\t},\n\n\t\thandleDeleteFirstAdditionalEmail(status) {\n\t\t\tif (status === 'ok') {\n\t\t\t\tthis.$delete(this.additionalEmails, 0)\n\t\t\t} else {\n\t\t\t\tthis.handleResponse(\n\t\t\t\t\t'error',\n\t\t\t\t\tt('settings', 'Unable to delete additional email address'),\n\t\t\t\t\t{}\n\t\t\t\t)\n\t\t\t}\n\t\t},\n\n\t\thandleResponse(status, errorMessage, error) {\n\t\t\tif (status !== 'ok') {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n\n\t.additional-emails-label {\n\t\tdisplay: block;\n\t\tmargin-top: 16px;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmailSection.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!./EmailSection.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!./EmailSection.vue?vue&type=style&index=0&id=845b669e&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!./EmailSection.vue?vue&type=style&index=0&id=845b669e&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./EmailSection.vue?vue&type=template&id=845b669e&scoped=true&\"\nimport script from \"./EmailSection.vue?vue&type=script&lang=js&\"\nexport * from \"./EmailSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EmailSection.vue?vue&type=style&index=0&id=845b669e&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 \"845b669e\",\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('section',[_c('HeaderBar',{attrs:{\"account-property\":_vm.accountProperty,\"label-for\":\"email\",\"handle-scope-change\":_vm.savePrimaryEmailScope,\"is-editable\":true,\"is-multi-value-supported\":true,\"is-valid-section\":_vm.isValidSection,\"scope\":_vm.primaryEmail.scope},on:{\"update:scope\":function($event){return _vm.$set(_vm.primaryEmail, \"scope\", $event)},\"add-additional\":_vm.onAddAdditionalEmail}}),_vm._v(\" \"),(_vm.displayNameChangeSupported)?[_c('Email',{attrs:{\"primary\":true,\"scope\":_vm.primaryEmail.scope,\"email\":_vm.primaryEmail.value,\"active-notification-email\":_vm.notificationEmail},on:{\"update:scope\":function($event){return _vm.$set(_vm.primaryEmail, \"scope\", $event)},\"update:email\":[function($event){return _vm.$set(_vm.primaryEmail, \"value\", $event)},_vm.onUpdateEmail],\"update:activeNotificationEmail\":function($event){_vm.notificationEmail=$event},\"update:active-notification-email\":function($event){_vm.notificationEmail=$event},\"update:notification-email\":_vm.onUpdateNotificationEmail}})]:_c('span',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.primaryEmail.value || _vm.t('settings', 'No email address set'))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.additionalEmails.length)?[_c('em',{staticClass:\"additional-emails-label\"},[_vm._v(_vm._s(_vm.t('settings', 'Additional emails')))]),_vm._v(\" \"),_vm._l((_vm.additionalEmails),function(additionalEmail,index){return _c('Email',{key:index,attrs:{\"index\":index,\"scope\":additionalEmail.scope,\"email\":additionalEmail.value,\"local-verification-state\":parseInt(additionalEmail.locallyVerified, 10),\"active-notification-email\":_vm.notificationEmail},on:{\"update:scope\":function($event){return _vm.$set(additionalEmail, \"scope\", $event)},\"update:email\":[function($event){return _vm.$set(additionalEmail, \"value\", $event)},_vm.onUpdateEmail],\"update:activeNotificationEmail\":function($event){_vm.notificationEmail=$event},\"update:active-notification-email\":function($event){_vm.notificationEmail=$event},\"update:notification-email\":_vm.onUpdateNotificationEmail,\"delete-additional-email\":function($event){return _vm.onDeleteAdditionalEmail(index)}}})})]:_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"language\">\n\t\t<select id=\"language\"\n\t\t\t:placeholder=\"t('settings', 'Language')\"\n\t\t\t@change=\"onLanguageChange\">\n\t\t\t<option v-for=\"commonLanguage in commonLanguages\"\n\t\t\t\t:key=\"commonLanguage.code\"\n\t\t\t\t:selected=\"language.code === commonLanguage.code\"\n\t\t\t\t:value=\"commonLanguage.code\">\n\t\t\t\t{{ commonLanguage.name }}\n\t\t\t</option>\n\t\t\t<option disabled>\n\t\t\t\t──────────\n\t\t\t</option>\n\t\t\t<option v-for=\"otherLanguage in otherLanguages\"\n\t\t\t\t:key=\"otherLanguage.code\"\n\t\t\t\t:selected=\"language.code === otherLanguage.code\"\n\t\t\t\t:value=\"otherLanguage.code\">\n\t\t\t\t{{ otherLanguage.name }}\n\t\t\t</option>\n\t\t</select>\n\n\t\t<a href=\"https://www.transifex.com/nextcloud/nextcloud/\"\n\t\t\ttarget=\"_blank\"\n\t\t\trel=\"noreferrer noopener\">\n\t\t\t<em>{{ t('settings', 'Help translate') }}</em>\n\t\t</a>\n\t</div>\n</template>\n\n<script>\nimport { showError } from '@nextcloud/dialogs'\n\nimport { ACCOUNT_SETTING_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants'\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService'\nimport { validateLanguage } from '../../../utils/validate'\n\nexport default {\n\tname: 'Language',\n\n\tprops: {\n\t\tcommonLanguages: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\totherLanguages: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\tlanguage: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialLanguage: this.language,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tallLanguages() {\n\t\t\treturn Object.freeze(\n\t\t\t\t[...this.commonLanguages, ...this.otherLanguages]\n\t\t\t\t\t.reduce((acc, { code, name }) => ({ ...acc, [code]: name }), {})\n\t\t\t)\n\t\t},\n\t},\n\n\tmethods: {\n\t\tasync onLanguageChange(e) {\n\t\t\tconst language = this.constructLanguage(e.target.value)\n\t\t\tthis.$emit('update:language', language)\n\n\t\t\tif (validateLanguage(language)) {\n\t\t\t\tawait this.updateLanguage(language)\n\t\t\t}\n\t\t},\n\n\t\tasync updateLanguage(language) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(ACCOUNT_SETTING_PROPERTY_ENUM.LANGUAGE, language.code)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tlanguage,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t\tthis.reloadPage()\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update language'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tconstructLanguage(languageCode) {\n\t\t\treturn {\n\t\t\t\tcode: languageCode,\n\t\t\t\tname: this.allLanguages[languageCode],\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ language, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tthis.initialLanguage = language\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t}\n\t\t},\n\n\t\treloadPage() {\n\t\t\tlocation.reload()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.language {\n\tdisplay: grid;\n\n\tselect {\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 6px 16px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground: var(--icon-triangle-s-000) no-repeat right 4px center;\n\t\tfont-family: var(--font-face);\n\t\tappearance: none;\n\t\tcursor: pointer;\n\t}\n\n\ta {\n\t\tcolor: var(--color-main-text);\n\t\ttext-decoration: none;\n\t\twidth: max-content;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Language.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!./Language.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!./Language.vue?vue&type=style&index=0&id=5396d706&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!./Language.vue?vue&type=style&index=0&id=5396d706&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Language.vue?vue&type=template&id=5396d706&scoped=true&\"\nimport script from \"./Language.vue?vue&type=script&lang=js&\"\nexport * from \"./Language.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Language.vue?vue&type=style&index=0&id=5396d706&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 \"5396d706\",\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:\"language\"},[_c('select',{attrs:{\"id\":\"language\",\"placeholder\":_vm.t('settings', 'Language')},on:{\"change\":_vm.onLanguageChange}},[_vm._l((_vm.commonLanguages),function(commonLanguage){return _c('option',{key:commonLanguage.code,domProps:{\"selected\":_vm.language.code === commonLanguage.code,\"value\":commonLanguage.code}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(commonLanguage.name)+\"\\n\\t\\t\")])}),_vm._v(\" \"),_c('option',{attrs:{\"disabled\":\"\"}},[_vm._v(\"\\n\\t\\t\\t──────────\\n\\t\\t\")]),_vm._v(\" \"),_vm._l((_vm.otherLanguages),function(otherLanguage){return _c('option',{key:otherLanguage.code,domProps:{\"selected\":_vm.language.code === otherLanguage.code,\"value\":otherLanguage.code}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(otherLanguage.name)+\"\\n\\t\\t\")])})],2),_vm._v(\" \"),_c('a',{attrs:{\"href\":\"https://www.transifex.com/nextcloud/nextcloud/\",\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_c('em',[_vm._v(_vm._s(_vm.t('settings', 'Help translate')))])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :account-property=\"accountProperty\"\n\t\t\tlabel-for=\"language\" />\n\n\t\t<template v-if=\"isEditable\">\n\t\t\t<Language :common-languages=\"commonLanguages\"\n\t\t\t\t:other-languages=\"otherLanguages\"\n\t\t\t\t:language.sync=\"language\" />\n\t\t</template>\n\n\t\t<span v-else>\n\t\t\t{{ t('settings', 'No language set') }}\n\t\t</span>\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport Language from './Language'\nimport HeaderBar from '../shared/HeaderBar'\n\nimport { ACCOUNT_SETTING_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants'\n\nconst { languageMap: { activeLanguage, commonLanguages, otherLanguages } } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'LanguageSection',\n\n\tcomponents: {\n\t\tLanguage,\n\t\tHeaderBar,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountProperty: ACCOUNT_SETTING_PROPERTY_READABLE_ENUM.LANGUAGE,\n\t\t\tcommonLanguages,\n\t\t\totherLanguages,\n\t\t\tlanguage: activeLanguage,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisEditable() {\n\t\t\treturn Boolean(this.language)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LanguageSection.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!./LanguageSection.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!./LanguageSection.vue?vue&type=style&index=0&id=16883898&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!./LanguageSection.vue?vue&type=style&index=0&id=16883898&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LanguageSection.vue?vue&type=template&id=16883898&scoped=true&\"\nimport script from \"./LanguageSection.vue?vue&type=script&lang=js&\"\nexport * from \"./LanguageSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LanguageSection.vue?vue&type=style&index=0&id=16883898&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 \"16883898\",\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('section',[_c('HeaderBar',{attrs:{\"account-property\":_vm.accountProperty,\"label-for\":\"language\"}}),_vm._v(\" \"),(_vm.isEditable)?[_c('Language',{attrs:{\"common-languages\":_vm.commonLanguages,\"other-languages\":_vm.otherLanguages,\"language\":_vm.language},on:{\"update:language\":function($event){_vm.language=$event}}})]:_c('span',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'No language set'))+\"\\n\\t\")])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditProfileAnchorLink.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!./EditProfileAnchorLink.vue?vue&type=script&lang=js&\"","<!--\n\t- @copyright 2021 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<a :class=\"{ disabled }\"\n\t\thref=\"#profile-visibility\"\n\t\tv-on=\"$listeners\">\n\t\t<ChevronDownIcon class=\"anchor-icon\"\n\t\t\tdecorative\n\t\t\ttitle=\"\"\n\t\t\t:size=\"22\" />\n\t\t{{ t('settings', 'Edit your Profile visibility') }}\n\t</a>\n</template>\n\n<script>\nimport ChevronDownIcon from 'vue-material-design-icons/ChevronDown'\n\nexport default {\n\tname: 'EditProfileAnchorLink',\n\n\tcomponents: {\n\t\tChevronDownIcon,\n\t},\n\n\tprops: {\n\t\tprofileEnabled: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tdisabled() {\n\t\t\treturn !this.profileEnabled\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\nhtml {\n\tscroll-behavior: smooth;\n\n\t@media screen and (prefers-reduced-motion: reduce) {\n\t\tscroll-behavior: auto;\n\t}\n}\n</style>\n\n<style lang=\"scss\" scoped>\na {\n\tdisplay: block;\n\theight: 44px;\n\twidth: 290px;\n\tline-height: 44px;\n\tpadding: 0 16px;\n\tmargin: 14px auto;\n\tborder-radius: var(--border-radius-pill);\n\topacity: 0.4;\n\tbackground-color: transparent;\n\n\t.anchor-icon {\n\t\tdisplay: inline-block;\n\t\tvertical-align: middle;\n\t\tmargin-top: 6px;\n\t\tmargin-right: 8px;\n\t}\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\topacity: 0.8;\n\t\tbackground-color: rgba(127, 127, 127, .25);\n\t}\n\n\t&.disabled {\n\t\tpointer-events: none;\n\t}\n}\n</style>\n","\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!./EditProfileAnchorLink.vue?vue&type=style&index=0&lang=scss&\";\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!./EditProfileAnchorLink.vue?vue&type=style&index=0&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","\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!./EditProfileAnchorLink.vue?vue&type=style&index=1&id=73817e9f&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!./EditProfileAnchorLink.vue?vue&type=style&index=1&id=73817e9f&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./EditProfileAnchorLink.vue?vue&type=template&id=73817e9f&scoped=true&\"\nimport script from \"./EditProfileAnchorLink.vue?vue&type=script&lang=js&\"\nexport * from \"./EditProfileAnchorLink.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EditProfileAnchorLink.vue?vue&type=style&index=0&lang=scss&\"\nimport style1 from \"./EditProfileAnchorLink.vue?vue&type=style&index=1&id=73817e9f&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 \"73817e9f\",\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('a',_vm._g({class:{ disabled: _vm.disabled },attrs:{\"href\":\"#profile-visibility\"}},_vm.$listeners),[_c('ChevronDownIcon',{staticClass:\"anchor-icon\",attrs:{\"decorative\":\"\",\"title\":\"\",\"size\":22}}),_vm._v(\"\\n\\t\"+_vm._s(_vm.t('settings', 'Edit your Profile visibility'))+\"\\n\")],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"checkbox-container\">\n\t\t<input id=\"enable-profile\"\n\t\t\tclass=\"checkbox\"\n\t\t\ttype=\"checkbox\"\n\t\t\t:checked=\"profileEnabled\"\n\t\t\t@change=\"onEnableProfileChange\">\n\t\t<label for=\"enable-profile\">\n\t\t\t{{ t('settings', 'Enable Profile') }}\n\t\t</label>\n\t</div>\n</template>\n\n<script>\nimport { showError } from '@nextcloud/dialogs'\nimport { emit } from '@nextcloud/event-bus'\n\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService'\nimport { validateBoolean } from '../../../utils/validate'\nimport { ACCOUNT_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants'\n\nexport default {\n\tname: 'ProfileCheckbox',\n\n\tprops: {\n\t\tprofileEnabled: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialProfileEnabled: this.profileEnabled,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tasync onEnableProfileChange(e) {\n\t\t\tconst isEnabled = e.target.checked\n\t\t\tthis.$emit('update:profile-enabled', isEnabled)\n\n\t\t\tif (validateBoolean(isEnabled)) {\n\t\t\t\tawait this.updateEnableProfile(isEnabled)\n\t\t\t}\n\t\t},\n\n\t\tasync updateEnableProfile(isEnabled) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(ACCOUNT_PROPERTY_ENUM.PROFILE_ENABLED, isEnabled)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tisEnabled,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update profile enabled state'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ isEnabled, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tthis.initialProfileEnabled = isEnabled\n\t\t\t\temit('settings:profile-enabled:updated', isEnabled)\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileCheckbox.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!./ProfileCheckbox.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ProfileCheckbox.vue?vue&type=template&id=b6898860&scoped=true&\"\nimport script from \"./ProfileCheckbox.vue?vue&type=script&lang=js&\"\nexport * from \"./ProfileCheckbox.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b6898860\",\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:\"checkbox-container\"},[_c('input',{staticClass:\"checkbox\",attrs:{\"id\":\"enable-profile\",\"type\":\"checkbox\"},domProps:{\"checked\":_vm.profileEnabled},on:{\"change\":_vm.onEnableProfileChange}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"enable-profile\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Enable Profile'))+\"\\n\\t\")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfilePreviewCard.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!./ProfilePreviewCard.vue?vue&type=script&lang=js&\"","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<a class=\"preview-card\"\n\t\t:class=\"{ disabled }\"\n\t\t:href=\"profilePageLink\">\n\t\t<Avatar class=\"preview-card__avatar\"\n\t\t\t:user=\"userId\"\n\t\t\t:size=\"48\"\n\t\t\t:show-user-status=\"true\"\n\t\t\t:show-user-status-compact=\"false\"\n\t\t\t:disable-menu=\"true\"\n\t\t\t:disable-tooltip=\"true\" />\n\t\t<div class=\"preview-card__header\">\n\t\t\t<span>{{ displayName }}</span>\n\t\t</div>\n\t\t<div class=\"preview-card__footer\">\n\t\t\t<span>{{ organisation }}</span>\n\t\t</div>\n\t</a>\n</template>\n\n<script>\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateUrl } from '@nextcloud/router'\n\nimport Avatar from '@nextcloud/vue/dist/Components/Avatar'\n\nexport default {\n\tname: 'ProfilePreviewCard',\n\n\tcomponents: {\n\t\tAvatar,\n\t},\n\n\tprops: {\n\t\tdisplayName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\torganisation: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tprofileEnabled: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tuserId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tdisabled() {\n\t\t\treturn !this.profileEnabled\n\t\t},\n\n\t\tprofilePageLink() {\n\t\t\tif (this.profileEnabled) {\n\t\t\t\treturn generateUrl('/u/{userId}', { userId: getCurrentUser().uid })\n\t\t\t}\n\t\t\t// Since an anchor element is used rather than a button for better UX,\n\t\t\t// this hack removes href if the profile is disabled so that disabling pointer-events is not needed to prevent a click from opening a page\n\t\t\t// and to allow the hover event (which disabling pointer-events wouldn't allow) for styling\n\t\t\treturn null\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.preview-card {\n\tdisplay: flex;\n\tflex-direction: column;\n\tposition: relative;\n\twidth: 290px;\n\theight: 116px;\n\tmargin: 14px auto;\n\tborder-radius: var(--border-radius-large);\n\tbackground-color: var(--color-main-background);\n\tfont-weight: bold;\n\tbox-shadow: 0 2px 9px var(--color-box-shadow);\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbox-shadow: 0 2px 12px var(--color-box-shadow);\n\t}\n\n\t&:focus-visible {\n\t\toutline: var(--color-main-text) solid 1px;\n\t\toutline-offset: 3px;\n\t}\n\n\t&.disabled {\n\t\tfilter: grayscale(1);\n\t\topacity: 0.5;\n\t\tcursor: default;\n\t\tbox-shadow: 0 0 3px var(--color-box-shadow);\n\n\t\t& *,\n\t\t&::v-deep * {\n\t\t\tcursor: default;\n\t\t}\n\t}\n\n\t&__avatar {\n\t\t// Override Avatar component position to fix positioning on rerender\n\t\tposition: absolute !important;\n\t\ttop: 40px;\n\t\tleft: 18px;\n\t\tz-index: 1;\n\n\t\t&:not(.avatardiv--unknown) {\n\t\t\tbox-shadow: 0 0 0 3px var(--color-main-background) !important;\n\t\t}\n\t}\n\n\t&__header,\n\t&__footer {\n\t\tposition: relative;\n\t\twidth: auto;\n\n\t\tspan {\n\t\t\tposition: absolute;\n\t\t\tleft: 78px;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\tword-break: break-all;\n\n\t\t\t@supports (-webkit-line-clamp: 2) {\n\t\t\t\tdisplay: -webkit-box;\n\t\t\t\t-webkit-line-clamp: 2;\n\t\t\t\t-webkit-box-orient: vertical;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__header {\n\t\theight: 70px;\n\t\tborder-radius: var(--border-radius-large) var(--border-radius-large) 0 0;\n\n\t\tspan {\n\t\t\tbottom: 0;\n\t\t\tcolor: var(--color-primary-text);\n\t\t\tfont-size: 18px;\n\t\t\tfont-weight: bold;\n\t\t\tmargin: 0 4px 8px 0;\n\t\t}\n\t}\n\n\t&__footer {\n\t\theight: 46px;\n\n\t\tspan {\n\t\t\ttop: 0;\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\tfont-size: 14px;\n\t\t\tfont-weight: normal;\n\t\t\tmargin: 4px 4px 0 0;\n\t\t\tline-height: 1.3;\n\t\t}\n\t}\n}\n</style>\n","\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!./ProfilePreviewCard.vue?vue&type=style&index=0&id=79bf7437&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!./ProfilePreviewCard.vue?vue&type=style&index=0&id=79bf7437&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ProfilePreviewCard.vue?vue&type=template&id=79bf7437&scoped=true&\"\nimport script from \"./ProfilePreviewCard.vue?vue&type=script&lang=js&\"\nexport * from \"./ProfilePreviewCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProfilePreviewCard.vue?vue&type=style&index=0&id=79bf7437&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 \"79bf7437\",\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('a',{staticClass:\"preview-card\",class:{ disabled: _vm.disabled },attrs:{\"href\":_vm.profilePageLink}},[_c('Avatar',{staticClass:\"preview-card__avatar\",attrs:{\"user\":_vm.userId,\"size\":48,\"show-user-status\":true,\"show-user-status-compact\":false,\"disable-menu\":true,\"disable-tooltip\":true}}),_vm._v(\" \"),_c('div',{staticClass:\"preview-card__header\"},[_c('span',[_vm._v(_vm._s(_vm.displayName))])]),_vm._v(\" \"),_c('div',{staticClass:\"preview-card__footer\"},[_c('span',[_vm._v(_vm._s(_vm.organisation))])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :account-property=\"accountProperty\" />\n\n\t\t<ProfileCheckbox :profile-enabled.sync=\"profileEnabled\" />\n\n\t\t<ProfilePreviewCard :organisation=\"organisation\"\n\t\t\t:display-name=\"displayName\"\n\t\t\t:profile-enabled=\"profileEnabled\"\n\t\t\t:user-id=\"userId\" />\n\n\t\t<EditProfileAnchorLink :profile-enabled=\"profileEnabled\" />\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\n\nimport EditProfileAnchorLink from './EditProfileAnchorLink'\nimport HeaderBar from '../shared/HeaderBar'\nimport ProfileCheckbox from './ProfileCheckbox'\nimport ProfilePreviewCard from './ProfilePreviewCard'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants'\n\nconst {\n\torganisationMap: { primaryOrganisation: { value: organisation } },\n\tdisplayNameMap: { primaryDisplayName: { value: displayName } },\n\tprofileEnabled,\n\tuserId,\n} = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'ProfileSection',\n\n\tcomponents: {\n\t\tEditProfileAnchorLink,\n\t\tHeaderBar,\n\t\tProfileCheckbox,\n\t\tProfilePreviewCard,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED,\n\t\t\torganisation,\n\t\t\tdisplayName,\n\t\t\tprofileEnabled,\n\t\t\tuserId,\n\t\t}\n\t},\n\n\tmounted() {\n\t\tsubscribe('settings:display-name:updated', this.handleDisplayNameUpdate)\n\t\tsubscribe('settings:organisation:updated', this.handleOrganisationUpdate)\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('settings:display-name:updated', this.handleDisplayNameUpdate)\n\t\tunsubscribe('settings:organisation:updated', this.handleOrganisationUpdate)\n\t},\n\n\tmethods: {\n\t\thandleDisplayNameUpdate(displayName) {\n\t\t\tthis.displayName = displayName\n\t\t},\n\n\t\thandleOrganisationUpdate(organisation) {\n\t\t\tthis.organisation = organisation\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileSection.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!./ProfileSection.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!./ProfileSection.vue?vue&type=style&index=0&id=252753e6&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!./ProfileSection.vue?vue&type=style&index=0&id=252753e6&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ProfileSection.vue?vue&type=template&id=252753e6&scoped=true&\"\nimport script from \"./ProfileSection.vue?vue&type=script&lang=js&\"\nexport * from \"./ProfileSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProfileSection.vue?vue&type=style&index=0&id=252753e6&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 \"252753e6\",\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('section',[_c('HeaderBar',{attrs:{\"account-property\":_vm.accountProperty}}),_vm._v(\" \"),_c('ProfileCheckbox',{attrs:{\"profile-enabled\":_vm.profileEnabled},on:{\"update:profileEnabled\":function($event){_vm.profileEnabled=$event},\"update:profile-enabled\":function($event){_vm.profileEnabled=$event}}}),_vm._v(\" \"),_c('ProfilePreviewCard',{attrs:{\"organisation\":_vm.organisation,\"display-name\":_vm.displayName,\"profile-enabled\":_vm.profileEnabled,\"user-id\":_vm.userId}}),_vm._v(\" \"),_c('EditProfileAnchorLink',{attrs:{\"profile-enabled\":_vm.profileEnabled}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"organisation\">\n\t\t<input id=\"organisation\"\n\t\t\ttype=\"text\"\n\t\t\t:placeholder=\"t('settings', 'Your organisation')\"\n\t\t\t:value=\"organisation\"\n\t\t\tautocapitalize=\"none\"\n\t\t\tautocomplete=\"on\"\n\t\t\tautocorrect=\"off\"\n\t\t\t@input=\"onOrganisationChange\">\n\n\t\t<div class=\"organisation__actions-container\">\n\t\t\t<transition name=\"fade\">\n\t\t\t\t<span v-if=\"showCheckmarkIcon\" class=\"icon-checkmark\" />\n\t\t\t\t<span v-else-if=\"showErrorIcon\" class=\"icon-error\" />\n\t\t\t</transition>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { showError } from '@nextcloud/dialogs'\nimport { emit } from '@nextcloud/event-bus'\nimport debounce from 'debounce'\n\nimport { ACCOUNT_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants'\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService'\n\nexport default {\n\tname: 'Organisation',\n\n\tprops: {\n\t\torganisation: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialOrganisation: this.organisation,\n\t\t\tlocalScope: this.scope,\n\t\t\tshowCheckmarkIcon: false,\n\t\t\tshowErrorIcon: false,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonOrganisationChange(e) {\n\t\t\tthis.$emit('update:organisation', e.target.value)\n\t\t\tthis.debounceOrganisationChange(e.target.value.trim())\n\t\t},\n\n\t\tdebounceOrganisationChange: debounce(async function(organisation) {\n\t\t\tawait this.updatePrimaryOrganisation(organisation)\n\t\t}, 500),\n\n\t\tasync updatePrimaryOrganisation(organisation) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(ACCOUNT_PROPERTY_ENUM.ORGANISATION, organisation)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\torganisation,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update organisation'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ organisation, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tthis.initialOrganisation = organisation\n\t\t\t\temit('settings:organisation:updated', organisation)\n\t\t\t\tthis.showCheckmarkIcon = true\n\t\t\t\tsetTimeout(() => { this.showCheckmarkIcon = false }, 2000)\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t\tthis.showErrorIcon = true\n\t\t\t\tsetTimeout(() => { this.showErrorIcon = false }, 2000)\n\t\t\t}\n\t\t},\n\n\t\tonScopeChange(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.organisation {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\t}\n\n\t.organisation__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Organisation.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!./Organisation.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!./Organisation.vue?vue&type=style&index=0&id=591cd6b6&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!./Organisation.vue?vue&type=style&index=0&id=591cd6b6&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Organisation.vue?vue&type=template&id=591cd6b6&scoped=true&\"\nimport script from \"./Organisation.vue?vue&type=script&lang=js&\"\nexport * from \"./Organisation.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Organisation.vue?vue&type=style&index=0&id=591cd6b6&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 \"591cd6b6\",\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:\"organisation\"},[_c('input',{attrs:{\"id\":\"organisation\",\"type\":\"text\",\"placeholder\":_vm.t('settings', 'Your organisation'),\"autocapitalize\":\"none\",\"autocomplete\":\"on\",\"autocorrect\":\"off\"},domProps:{\"value\":_vm.organisation},on:{\"input\":_vm.onOrganisationChange}}),_vm._v(\" \"),_c('div',{staticClass:\"organisation__actions-container\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.showCheckmarkIcon)?_c('span',{staticClass:\"icon-checkmark\"}):(_vm.showErrorIcon)?_c('span',{staticClass:\"icon-error\"}):_vm._e()])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :account-property=\"accountProperty\"\n\t\t\tlabel-for=\"organisation\"\n\t\t\t:scope.sync=\"primaryOrganisation.scope\" />\n\n\t\t<Organisation :organisation.sync=\"primaryOrganisation.value\"\n\t\t\t:scope.sync=\"primaryOrganisation.scope\" />\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport Organisation from './Organisation'\nimport HeaderBar from '../shared/HeaderBar'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants'\n\nconst { organisationMap: { primaryOrganisation } } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'OrganisationSection',\n\n\tcomponents: {\n\t\tOrganisation,\n\t\tHeaderBar,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION,\n\t\t\tprimaryOrganisation,\n\t\t}\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrganisationSection.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!./OrganisationSection.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!./OrganisationSection.vue?vue&type=style&index=0&id=43146ff7&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!./OrganisationSection.vue?vue&type=style&index=0&id=43146ff7&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./OrganisationSection.vue?vue&type=template&id=43146ff7&scoped=true&\"\nimport script from \"./OrganisationSection.vue?vue&type=script&lang=js&\"\nexport * from \"./OrganisationSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./OrganisationSection.vue?vue&type=style&index=0&id=43146ff7&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 \"43146ff7\",\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('section',[_c('HeaderBar',{attrs:{\"account-property\":_vm.accountProperty,\"label-for\":\"organisation\",\"scope\":_vm.primaryOrganisation.scope},on:{\"update:scope\":function($event){return _vm.$set(_vm.primaryOrganisation, \"scope\", $event)}}}),_vm._v(\" \"),_c('Organisation',{attrs:{\"organisation\":_vm.primaryOrganisation.value,\"scope\":_vm.primaryOrganisation.scope},on:{\"update:organisation\":function($event){return _vm.$set(_vm.primaryOrganisation, \"value\", $event)},\"update:scope\":function($event){return _vm.$set(_vm.primaryOrganisation, \"scope\", $event)}}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"role\">\n\t\t<input id=\"role\"\n\t\t\ttype=\"text\"\n\t\t\t:placeholder=\"t('settings', 'Your role')\"\n\t\t\t:value=\"role\"\n\t\t\tautocapitalize=\"none\"\n\t\t\tautocomplete=\"on\"\n\t\t\tautocorrect=\"off\"\n\t\t\t@input=\"onRoleChange\">\n\n\t\t<div class=\"role__actions-container\">\n\t\t\t<transition name=\"fade\">\n\t\t\t\t<span v-if=\"showCheckmarkIcon\" class=\"icon-checkmark\" />\n\t\t\t\t<span v-else-if=\"showErrorIcon\" class=\"icon-error\" />\n\t\t\t</transition>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { showError } from '@nextcloud/dialogs'\nimport { emit } from '@nextcloud/event-bus'\nimport debounce from 'debounce'\n\nimport { ACCOUNT_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants'\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService'\n\nexport default {\n\tname: 'Role',\n\n\tprops: {\n\t\trole: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialRole: this.role,\n\t\t\tlocalScope: this.scope,\n\t\t\tshowCheckmarkIcon: false,\n\t\t\tshowErrorIcon: false,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonRoleChange(e) {\n\t\t\tthis.$emit('update:role', e.target.value)\n\t\t\tthis.debounceRoleChange(e.target.value.trim())\n\t\t},\n\n\t\tdebounceRoleChange: debounce(async function(role) {\n\t\t\tawait this.updatePrimaryRole(role)\n\t\t}, 500),\n\n\t\tasync updatePrimaryRole(role) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(ACCOUNT_PROPERTY_ENUM.ROLE, role)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\trole,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update role'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ role, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tthis.initialRole = role\n\t\t\t\temit('settings:role:updated', role)\n\t\t\t\tthis.showCheckmarkIcon = true\n\t\t\t\tsetTimeout(() => { this.showCheckmarkIcon = false }, 2000)\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t\tthis.showErrorIcon = true\n\t\t\t\tsetTimeout(() => { this.showErrorIcon = false }, 2000)\n\t\t\t}\n\t\t},\n\n\t\tonScopeChange(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.role {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\t}\n\n\t.role__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Role.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!./Role.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!./Role.vue?vue&type=style&index=0&id=aac18396&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!./Role.vue?vue&type=style&index=0&id=aac18396&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Role.vue?vue&type=template&id=aac18396&scoped=true&\"\nimport script from \"./Role.vue?vue&type=script&lang=js&\"\nexport * from \"./Role.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Role.vue?vue&type=style&index=0&id=aac18396&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 \"aac18396\",\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:\"role\"},[_c('input',{attrs:{\"id\":\"role\",\"type\":\"text\",\"placeholder\":_vm.t('settings', 'Your role'),\"autocapitalize\":\"none\",\"autocomplete\":\"on\",\"autocorrect\":\"off\"},domProps:{\"value\":_vm.role},on:{\"input\":_vm.onRoleChange}}),_vm._v(\" \"),_c('div',{staticClass:\"role__actions-container\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.showCheckmarkIcon)?_c('span',{staticClass:\"icon-checkmark\"}):(_vm.showErrorIcon)?_c('span',{staticClass:\"icon-error\"}):_vm._e()])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :account-property=\"accountProperty\"\n\t\t\tlabel-for=\"role\"\n\t\t\t:scope.sync=\"primaryRole.scope\" />\n\n\t\t<Role :role.sync=\"primaryRole.value\"\n\t\t\t:scope.sync=\"primaryRole.scope\" />\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport Role from './Role'\nimport HeaderBar from '../shared/HeaderBar'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants'\n\nconst { roleMap: { primaryRole } } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'RoleSection',\n\n\tcomponents: {\n\t\tRole,\n\t\tHeaderBar,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.ROLE,\n\t\t\tprimaryRole,\n\t\t}\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RoleSection.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!./RoleSection.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!./RoleSection.vue?vue&type=style&index=0&id=f3d959c2&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!./RoleSection.vue?vue&type=style&index=0&id=f3d959c2&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RoleSection.vue?vue&type=template&id=f3d959c2&scoped=true&\"\nimport script from \"./RoleSection.vue?vue&type=script&lang=js&\"\nexport * from \"./RoleSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RoleSection.vue?vue&type=style&index=0&id=f3d959c2&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 \"f3d959c2\",\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('section',[_c('HeaderBar',{attrs:{\"account-property\":_vm.accountProperty,\"label-for\":\"role\",\"scope\":_vm.primaryRole.scope},on:{\"update:scope\":function($event){return _vm.$set(_vm.primaryRole, \"scope\", $event)}}}),_vm._v(\" \"),_c('Role',{attrs:{\"role\":_vm.primaryRole.value,\"scope\":_vm.primaryRole.scope},on:{\"update:role\":function($event){return _vm.$set(_vm.primaryRole, \"value\", $event)},\"update:scope\":function($event){return _vm.$set(_vm.primaryRole, \"scope\", $event)}}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"headline\">\n\t\t<input id=\"headline\"\n\t\t\ttype=\"text\"\n\t\t\t:placeholder=\"t('settings', 'Your headline')\"\n\t\t\t:value=\"headline\"\n\t\t\tautocapitalize=\"none\"\n\t\t\tautocomplete=\"on\"\n\t\t\tautocorrect=\"off\"\n\t\t\t@input=\"onHeadlineChange\">\n\n\t\t<div class=\"headline__actions-container\">\n\t\t\t<transition name=\"fade\">\n\t\t\t\t<span v-if=\"showCheckmarkIcon\" class=\"icon-checkmark\" />\n\t\t\t\t<span v-else-if=\"showErrorIcon\" class=\"icon-error\" />\n\t\t\t</transition>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { showError } from '@nextcloud/dialogs'\nimport { emit } from '@nextcloud/event-bus'\nimport debounce from 'debounce'\n\nimport { ACCOUNT_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants'\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService'\n\nexport default {\n\tname: 'Headline',\n\n\tprops: {\n\t\theadline: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialHeadline: this.headline,\n\t\t\tlocalScope: this.scope,\n\t\t\tshowCheckmarkIcon: false,\n\t\t\tshowErrorIcon: false,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonHeadlineChange(e) {\n\t\t\tthis.$emit('update:headline', e.target.value)\n\t\t\tthis.debounceHeadlineChange(e.target.value.trim())\n\t\t},\n\n\t\tdebounceHeadlineChange: debounce(async function(headline) {\n\t\t\tawait this.updatePrimaryHeadline(headline)\n\t\t}, 500),\n\n\t\tasync updatePrimaryHeadline(headline) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(ACCOUNT_PROPERTY_ENUM.HEADLINE, headline)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\theadline,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update headline'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ headline, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tthis.initialHeadline = headline\n\t\t\t\temit('settings:headline:updated', headline)\n\t\t\t\tthis.showCheckmarkIcon = true\n\t\t\t\tsetTimeout(() => { this.showCheckmarkIcon = false }, 2000)\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t\tthis.showErrorIcon = true\n\t\t\t\tsetTimeout(() => { this.showErrorIcon = false }, 2000)\n\t\t\t}\n\t\t},\n\n\t\tonScopeChange(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.headline {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\theight: 34px;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\t}\n\n\t.headline__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Headline.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!./Headline.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!./Headline.vue?vue&type=style&index=0&id=64e0e0bd&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!./Headline.vue?vue&type=style&index=0&id=64e0e0bd&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Headline.vue?vue&type=template&id=64e0e0bd&scoped=true&\"\nimport script from \"./Headline.vue?vue&type=script&lang=js&\"\nexport * from \"./Headline.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Headline.vue?vue&type=style&index=0&id=64e0e0bd&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 \"64e0e0bd\",\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:\"headline\"},[_c('input',{attrs:{\"id\":\"headline\",\"type\":\"text\",\"placeholder\":_vm.t('settings', 'Your headline'),\"autocapitalize\":\"none\",\"autocomplete\":\"on\",\"autocorrect\":\"off\"},domProps:{\"value\":_vm.headline},on:{\"input\":_vm.onHeadlineChange}}),_vm._v(\" \"),_c('div',{staticClass:\"headline__actions-container\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.showCheckmarkIcon)?_c('span',{staticClass:\"icon-checkmark\"}):(_vm.showErrorIcon)?_c('span',{staticClass:\"icon-error\"}):_vm._e()])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :account-property=\"accountProperty\"\n\t\t\tlabel-for=\"headline\"\n\t\t\t:scope.sync=\"primaryHeadline.scope\" />\n\n\t\t<Headline :headline.sync=\"primaryHeadline.value\"\n\t\t\t:scope.sync=\"primaryHeadline.scope\" />\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport Headline from './Headline'\nimport HeaderBar from '../shared/HeaderBar'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants'\n\nconst { headlineMap: { primaryHeadline } } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'HeadlineSection',\n\n\tcomponents: {\n\t\tHeadline,\n\t\tHeaderBar,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE,\n\t\t\tprimaryHeadline,\n\t\t}\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeadlineSection.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!./HeadlineSection.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!./HeadlineSection.vue?vue&type=style&index=0&id=187bb5da&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!./HeadlineSection.vue?vue&type=style&index=0&id=187bb5da&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./HeadlineSection.vue?vue&type=template&id=187bb5da&scoped=true&\"\nimport script from \"./HeadlineSection.vue?vue&type=script&lang=js&\"\nexport * from \"./HeadlineSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./HeadlineSection.vue?vue&type=style&index=0&id=187bb5da&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 \"187bb5da\",\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('section',[_c('HeaderBar',{attrs:{\"account-property\":_vm.accountProperty,\"label-for\":\"headline\",\"scope\":_vm.primaryHeadline.scope},on:{\"update:scope\":function($event){return _vm.$set(_vm.primaryHeadline, \"scope\", $event)}}}),_vm._v(\" \"),_c('Headline',{attrs:{\"headline\":_vm.primaryHeadline.value,\"scope\":_vm.primaryHeadline.scope},on:{\"update:headline\":function($event){return _vm.$set(_vm.primaryHeadline, \"value\", $event)},\"update:scope\":function($event){return _vm.$set(_vm.primaryHeadline, \"scope\", $event)}}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"biography\">\n\t\t<textarea id=\"biography\"\n\t\t\t:placeholder=\"t('settings', 'Your biography')\"\n\t\t\t:value=\"biography\"\n\t\t\trows=\"8\"\n\t\t\tautocapitalize=\"none\"\n\t\t\tautocomplete=\"off\"\n\t\t\tautocorrect=\"off\"\n\t\t\t@input=\"onBiographyChange\" />\n\n\t\t<div class=\"biography__actions-container\">\n\t\t\t<transition name=\"fade\">\n\t\t\t\t<span v-if=\"showCheckmarkIcon\" class=\"icon-checkmark\" />\n\t\t\t\t<span v-else-if=\"showErrorIcon\" class=\"icon-error\" />\n\t\t\t</transition>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { showError } from '@nextcloud/dialogs'\nimport { emit } from '@nextcloud/event-bus'\nimport debounce from 'debounce'\n\nimport { ACCOUNT_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants'\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService'\n\nexport default {\n\tname: 'Biography',\n\n\tprops: {\n\t\tbiography: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialBiography: this.biography,\n\t\t\tlocalScope: this.scope,\n\t\t\tshowCheckmarkIcon: false,\n\t\t\tshowErrorIcon: false,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonBiographyChange(e) {\n\t\t\tthis.$emit('update:biography', e.target.value)\n\t\t\tthis.debounceBiographyChange(e.target.value.trim())\n\t\t},\n\n\t\tdebounceBiographyChange: debounce(async function(biography) {\n\t\t\tawait this.updatePrimaryBiography(biography)\n\t\t}, 500),\n\n\t\tasync updatePrimaryBiography(biography) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(ACCOUNT_PROPERTY_ENUM.BIOGRAPHY, biography)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tbiography,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update biography'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ biography, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tthis.initialBiography = biography\n\t\t\t\temit('settings:biography:updated', biography)\n\t\t\t\tthis.showCheckmarkIcon = true\n\t\t\t\tsetTimeout(() => { this.showCheckmarkIcon = false }, 2000)\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t\tthis.showErrorIcon = true\n\t\t\t\tsetTimeout(() => { this.showErrorIcon = false }, 2000)\n\t\t\t}\n\t\t},\n\n\t\tonScopeChange(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.biography {\n\tdisplay: grid;\n\talign-items: center;\n\n\ttextarea {\n\t\tresize: vertical;\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t\tmargin: 3px 3px 3px 0;\n\t\tpadding: 7px 6px;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 1px solid var(--color-border-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tcursor: text;\n\n\t\t&:hover,\n\t\t&:focus,\n\t\t&:active {\n\t\t\tborder-color: var(--color-primary-element) !important;\n\t\t\toutline: none !important;\n\t\t}\n\t}\n\n\t.biography__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\talign-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\t\tmargin-bottom: 5px;\n\n\t\t.icon-checkmark,\n\t\t.icon-error {\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\tfloat: none;\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Biography.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!./Biography.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!./Biography.vue?vue&type=style&index=0&id=0fbf56a9&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!./Biography.vue?vue&type=style&index=0&id=0fbf56a9&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Biography.vue?vue&type=template&id=0fbf56a9&scoped=true&\"\nimport script from \"./Biography.vue?vue&type=script&lang=js&\"\nexport * from \"./Biography.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Biography.vue?vue&type=style&index=0&id=0fbf56a9&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 \"0fbf56a9\",\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:\"biography\"},[_c('textarea',{attrs:{\"id\":\"biography\",\"placeholder\":_vm.t('settings', 'Your biography'),\"rows\":\"8\",\"autocapitalize\":\"none\",\"autocomplete\":\"off\",\"autocorrect\":\"off\"},domProps:{\"value\":_vm.biography},on:{\"input\":_vm.onBiographyChange}}),_vm._v(\" \"),_c('div',{staticClass:\"biography__actions-container\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.showCheckmarkIcon)?_c('span',{staticClass:\"icon-checkmark\"}):(_vm.showErrorIcon)?_c('span',{staticClass:\"icon-error\"}):_vm._e()])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :account-property=\"accountProperty\"\n\t\t\tlabel-for=\"biography\"\n\t\t\t:scope.sync=\"primaryBiography.scope\" />\n\n\t\t<Biography :biography.sync=\"primaryBiography.value\"\n\t\t\t:scope.sync=\"primaryBiography.scope\" />\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport Biography from './Biography'\nimport HeaderBar from '../shared/HeaderBar'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants'\n\nconst { biographyMap: { primaryBiography } } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'BiographySection',\n\n\tcomponents: {\n\t\tBiography,\n\t\tHeaderBar,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY,\n\t\t\tprimaryBiography,\n\t\t}\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BiographySection.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!./BiographySection.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!./BiographySection.vue?vue&type=style&index=0&id=cfa727da&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!./BiographySection.vue?vue&type=style&index=0&id=cfa727da&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./BiographySection.vue?vue&type=template&id=cfa727da&scoped=true&\"\nimport script from \"./BiographySection.vue?vue&type=script&lang=js&\"\nexport * from \"./BiographySection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BiographySection.vue?vue&type=style&index=0&id=cfa727da&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 \"cfa727da\",\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('section',[_c('HeaderBar',{attrs:{\"account-property\":_vm.accountProperty,\"label-for\":\"biography\",\"scope\":_vm.primaryBiography.scope},on:{\"update:scope\":function($event){return _vm.$set(_vm.primaryBiography, \"scope\", $event)}}}),_vm._v(\" \"),_c('Biography',{attrs:{\"biography\":_vm.primaryBiography.value,\"scope\":_vm.primaryBiography.scope},on:{\"update:biography\":function($event){return _vm.$set(_vm.primaryBiography, \"value\", $event)},\"update:scope\":function($event){return _vm.$set(_vm.primaryBiography, \"scope\", $event)}}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2021 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\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 */\n\nimport axios from '@nextcloud/axios'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport confirmPassword from '@nextcloud/password-confirmation'\n\n/**\n * Save the visibility of the profile parameter\n *\n * @param {string} paramId the profile parameter ID\n * @param {string} visibility the visibility\n * @return {object}\n */\nexport const saveProfileParameterVisibility = async (paramId, visibility) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('/profile/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tparamId,\n\t\tvisibility,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save profile default\n *\n * @param {boolean} isEnabled the default\n * @return {object}\n */\nexport const saveProfileDefault = async (isEnabled) => {\n\t// Convert to string for compatibility\n\tisEnabled = isEnabled ? '1' : '0'\n\n\tconst url = generateOcsUrl('/apps/provisioning_api/api/v1/config/apps/{appId}/{key}', {\n\t\tappId: 'settings',\n\t\tkey: 'profile_enabled_by_default',\n\t})\n\n\tawait confirmPassword()\n\n\tconst res = await axios.post(url, {\n\t\tvalue: isEnabled,\n\t})\n\n\treturn res.data\n}\n","/**\n * @copyright 2021 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\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 */\n\n/*\n * SYNC to be kept in sync with `core/Db/ProfileConfig.php`\n */\n\n/** Enum of profile visibility constants */\nexport const VISIBILITY_ENUM = Object.freeze({\n\tSHOW: 'show',\n\tSHOW_USERS_ONLY: 'show_users_only',\n\tHIDE: 'hide',\n})\n\n/**\n * Enum of profile visibility constants to properties\n */\nexport const VISIBILITY_PROPERTY_ENUM = Object.freeze({\n\t[VISIBILITY_ENUM.SHOW]: {\n\t\tname: VISIBILITY_ENUM.SHOW,\n\t\tlabel: t('settings', 'Show to everyone'),\n\t},\n\t[VISIBILITY_ENUM.SHOW_USERS_ONLY]: {\n\t\tname: VISIBILITY_ENUM.SHOW_USERS_ONLY,\n\t\tlabel: t('settings', 'Show to logged in users only'),\n\t},\n\t[VISIBILITY_ENUM.HIDE]: {\n\t\tname: VISIBILITY_ENUM.HIDE,\n\t\tlabel: t('settings', 'Hide'),\n\t},\n})\n","<!--\n\t- @copyright 2021 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"visibility-container\"\n\t\t:class=\"{ disabled }\">\n\t\t<label :for=\"inputId\">\n\t\t\t{{ t('settings', '{displayId}', { displayId }) }}\n\t\t</label>\n\t\t<Multiselect :id=\"inputId\"\n\t\t\tclass=\"visibility-container__multiselect\"\n\t\t\t:options=\"visibilityOptions\"\n\t\t\ttrack-by=\"name\"\n\t\t\tlabel=\"label\"\n\t\t\t:value=\"visibilityObject\"\n\t\t\t@change=\"onVisibilityChange\" />\n\t</div>\n</template>\n\n<script>\nimport { showError } from '@nextcloud/dialogs'\nimport { loadState } from '@nextcloud/initial-state'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\n\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\n\nimport { saveProfileParameterVisibility } from '../../../service/ProfileService'\nimport { validateStringInput } from '../../../utils/validate'\nimport { VISIBILITY_PROPERTY_ENUM } from '../../../constants/ProfileConstants'\n\nconst { profileEnabled } = loadState('settings', 'personalInfoParameters', false)\n\nexport default {\n\tname: 'VisibilityDropdown',\n\n\tcomponents: {\n\t\tMultiselect,\n\t},\n\n\tprops: {\n\t\tparamId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdisplayId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tvisibility: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialVisibility: this.visibility,\n\t\t\tprofileEnabled,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tdisabled() {\n\t\t\treturn !this.profileEnabled\n\t\t},\n\n\t\tinputId() {\n\t\t\treturn `profile-visibility-${this.paramId}`\n\t\t},\n\n\t\tvisibilityObject() {\n\t\t\treturn VISIBILITY_PROPERTY_ENUM[this.visibility]\n\t\t},\n\n\t\tvisibilityOptions() {\n\t\t\treturn Object.values(VISIBILITY_PROPERTY_ENUM)\n\t\t},\n\t},\n\n\tmounted() {\n\t\tsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\t},\n\n\tmethods: {\n\t\tasync onVisibilityChange(visibilityObject) {\n\t\t\t// This check is needed as the argument is null when selecting the same option\n\t\t\tif (visibilityObject !== null) {\n\t\t\t\tconst { name: visibility } = visibilityObject\n\t\t\t\tthis.$emit('update:visibility', visibility)\n\n\t\t\t\tif (validateStringInput(visibility)) {\n\t\t\t\t\tawait this.updateVisibility(visibility)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tasync updateVisibility(visibility) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await saveProfileParameterVisibility(this.paramId, visibility)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tvisibility,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update visibility of {displayId}', { displayId: this.displayId }),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ visibility, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tthis.initialVisibility = visibility\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tthis.logger.error(errorMessage, error)\n\t\t\t}\n\t\t},\n\n\t\thandleProfileEnabledUpdate(profileEnabled) {\n\t\t\tthis.profileEnabled = profileEnabled\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.visibility-container {\n\tdisplay: flex;\n\twidth: max-content;\n\n\t&.disabled {\n\t\tfilter: grayscale(1);\n\t\topacity: 0.5;\n\t\tcursor: default;\n\t\tpointer-events: none;\n\n\t\t& *,\n\t\t&::v-deep * {\n\t\t\tcursor: default;\n\t\t\tpointer-events: none;\n\t\t}\n\t}\n\n\tlabel {\n\t\tcolor: var(--color-text-lighter);\n\t\twidth: 150px;\n\t\tline-height: 50px;\n\t}\n\n\t&__multiselect {\n\t\twidth: 260px;\n\t\tmax-width: 40vw;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VisibilityDropdown.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!./VisibilityDropdown.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!./VisibilityDropdown.vue?vue&type=style&index=0&id=4643b0e2&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!./VisibilityDropdown.vue?vue&type=style&index=0&id=4643b0e2&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./VisibilityDropdown.vue?vue&type=template&id=4643b0e2&scoped=true&\"\nimport script from \"./VisibilityDropdown.vue?vue&type=script&lang=js&\"\nexport * from \"./VisibilityDropdown.vue?vue&type=script&lang=js&\"\nimport style0 from \"./VisibilityDropdown.vue?vue&type=style&index=0&id=4643b0e2&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 \"4643b0e2\",\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:\"visibility-container\",class:{ disabled: _vm.disabled }},[_c('label',{attrs:{\"for\":_vm.inputId}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', '{displayId}', { displayId: _vm.displayId }))+\"\\n\\t\")]),_vm._v(\" \"),_c('Multiselect',{staticClass:\"visibility-container__multiselect\",attrs:{\"id\":_vm.inputId,\"options\":_vm.visibilityOptions,\"track-by\":\"name\",\"label\":\"label\",\"value\":_vm.visibilityObject},on:{\"change\":_vm.onVisibilityChange}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<!-- TODO remove this inline margin placeholder once the settings layout is updated -->\n\t<section id=\"profile-visibility\"\n\t\t:style=\"{ marginLeft }\">\n\t\t<HeaderBar :account-property=\"heading\" />\n\n\t\t<em :class=\"{ disabled }\">\n\t\t\t{{ t('settings', 'The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to \"Show to everyone\" and scope is set to \"Private\", \"Private\" is respected.') }}\n\t\t</em>\n\n\t\t<div class=\"visibility-dropdowns\"\n\t\t\t:style=\"{\n\t\t\t\tgridTemplateRows: `repeat(${rows}, 44px)`,\n\t\t\t}\">\n\t\t\t<VisibilityDropdown v-for=\"param in visibilityParams\"\n\t\t\t\t:key=\"param.id\"\n\t\t\t\t:param-id=\"param.id\"\n\t\t\t\t:display-id=\"param.displayId\"\n\t\t\t\t:visibility.sync=\"param.visibility\" />\n\t\t</div>\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\n\nimport HeaderBar from '../shared/HeaderBar'\nimport VisibilityDropdown from './VisibilityDropdown'\nimport { PROFILE_READABLE_ENUM } from '../../../constants/AccountPropertyConstants'\n\nconst { profileConfig } = loadState('settings', 'profileParameters', {})\nconst { profileEnabled } = loadState('settings', 'personalInfoParameters', false)\n\nconst compareParams = (a, b) => {\n\tif (a.appId === b.appId || (a.appId !== 'core' && b.appId !== 'core')) {\n\t\treturn a.displayId.localeCompare(b.displayId)\n\t} else if (a.appId === 'core') {\n\t\treturn 1\n\t} else {\n\t\treturn -1\n\t}\n}\n\nexport default {\n\tname: 'ProfileVisibilitySection',\n\n\tcomponents: {\n\t\tHeaderBar,\n\t\tVisibilityDropdown,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\theading: PROFILE_READABLE_ENUM.PROFILE_VISIBILITY,\n\t\t\tprofileEnabled,\n\t\t\tvisibilityParams: Object.entries(profileConfig)\n\t\t\t\t.map(([paramId, { appId, displayId, visibility }]) => ({ id: paramId, appId, displayId, visibility }))\n\t\t\t\t.sort(compareParams),\n\t\t\t// TODO remove this when not used once the settings layout is updated\n\t\t\tmarginLeft: window.matchMedia('(min-width: 1600px)').matches\n\t\t\t\t? window.getComputedStyle(document.getElementById('personal-settings-avatar-container')).getPropertyValue('width').trim()\n\t\t\t\t: '0px',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tdisabled() {\n\t\t\treturn !this.profileEnabled\n\t\t},\n\n\t\trows() {\n\t\t\treturn Math.ceil(this.visibilityParams.length / 2)\n\t\t},\n\t},\n\n\tmounted() {\n\t\tsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\t\t// TODO remove this when not used once the settings layout is updated\n\t\twindow.onresize = () => {\n\t\t\tthis.marginLeft = window.matchMedia('(min-width: 1600px)').matches\n\t\t\t\t? window.getComputedStyle(document.getElementById('personal-settings-avatar-container')).getPropertyValue('width').trim()\n\t\t\t\t: '0px'\n\t\t}\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\t},\n\n\tmethods: {\n\t\thandleProfileEnabledUpdate(profileEnabled) {\n\t\t\tthis.profileEnabled = profileEnabled\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 30px;\n\tmax-width: 100vw;\n\n\tem {\n\t\tdisplay: block;\n\t\tmargin: 16px 0;\n\n\t\t&.disabled {\n\t\t\tfilter: grayscale(1);\n\t\t\topacity: 0.5;\n\t\t\tcursor: default;\n\t\t\tpointer-events: none;\n\n\t\t\t& *,\n\t\t\t&::v-deep * {\n\t\t\t\tcursor: default;\n\t\t\t\tpointer-events: none;\n\t\t\t}\n\t\t}\n\t}\n\n\t.visibility-dropdowns {\n\t\tdisplay: grid;\n\t\tgap: 10px 40px;\n\t}\n\n\t@media (min-width: 1200px) {\n\t\twidth: 940px;\n\n\t\t.visibility-dropdowns {\n\t\t\tgrid-auto-flow: column;\n\t\t}\n\t}\n\n\t@media (max-width: 1200px) {\n\t\twidth: 470px;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileVisibilitySection.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!./ProfileVisibilitySection.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!./ProfileVisibilitySection.vue?vue&type=style&index=0&id=16df62f8&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!./ProfileVisibilitySection.vue?vue&type=style&index=0&id=16df62f8&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ProfileVisibilitySection.vue?vue&type=template&id=16df62f8&scoped=true&\"\nimport script from \"./ProfileVisibilitySection.vue?vue&type=script&lang=js&\"\nexport * from \"./ProfileVisibilitySection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProfileVisibilitySection.vue?vue&type=style&index=0&id=16df62f8&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 \"16df62f8\",\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('section',{style:({ marginLeft: _vm.marginLeft }),attrs:{\"id\":\"profile-visibility\"}},[_c('HeaderBar',{attrs:{\"account-property\":_vm.heading}}),_vm._v(\" \"),_c('em',{class:{ disabled: _vm.disabled }},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to \"Show to everyone\" and scope is set to \"Private\", \"Private\" is respected.'))+\"\\n\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"visibility-dropdowns\",style:({\n\t\t\tgridTemplateRows: (\"repeat(\" + _vm.rows + \", 44px)\"),\n\t\t})},_vm._l((_vm.visibilityParams),function(param){return _c('VisibilityDropdown',{key:param.id,attrs:{\"param-id\":param.id,\"display-id\":param.displayId,\"visibility\":param.visibility},on:{\"update:visibility\":function($event){return _vm.$set(param, \"visibility\", $event)}}})}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\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 */\n\nimport Vue from 'vue'\nimport { getRequestToken } from '@nextcloud/auth'\nimport { loadState } from '@nextcloud/initial-state'\nimport { translate as t } from '@nextcloud/l10n'\nimport '@nextcloud/dialogs/styles/toast.scss'\n\nimport logger from './logger'\n\nimport DisplayNameSection from './components/PersonalInfo/DisplayNameSection/DisplayNameSection'\nimport EmailSection from './components/PersonalInfo/EmailSection/EmailSection'\nimport LanguageSection from './components/PersonalInfo/LanguageSection/LanguageSection'\nimport ProfileSection from './components/PersonalInfo/ProfileSection/ProfileSection'\nimport OrganisationSection from './components/PersonalInfo/OrganisationSection/OrganisationSection'\nimport RoleSection from './components/PersonalInfo/RoleSection/RoleSection'\nimport HeadlineSection from './components/PersonalInfo/HeadlineSection/HeadlineSection'\nimport BiographySection from './components/PersonalInfo/BiographySection/BiographySection'\nimport ProfileVisibilitySection from './components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection'\n\n__webpack_nonce__ = btoa(getRequestToken())\n\nconst profileEnabledGlobally = loadState('settings', 'profileEnabledGlobally', true)\n\nVue.mixin({\n\tprops: {\n\t\tlogger,\n\t},\n\tmethods: {\n\t\tt,\n\t},\n})\n\nconst DisplayNameView = Vue.extend(DisplayNameSection)\nconst EmailView = Vue.extend(EmailSection)\nconst LanguageView = Vue.extend(LanguageSection)\n\nnew DisplayNameView().$mount('#vue-displayname-section')\nnew EmailView().$mount('#vue-email-section')\nnew LanguageView().$mount('#vue-language-section')\n\nif (profileEnabledGlobally) {\n\tconst ProfileView = Vue.extend(ProfileSection)\n\tconst OrganisationView = Vue.extend(OrganisationSection)\n\tconst RoleView = Vue.extend(RoleSection)\n\tconst HeadlineView = Vue.extend(HeadlineSection)\n\tconst BiographyView = Vue.extend(BiographySection)\n\tconst ProfileVisibilityView = Vue.extend(ProfileVisibilitySection)\n\n\tnew ProfileView().$mount('#vue-profile-section')\n\tnew OrganisationView().$mount('#vue-organisation-section')\n\tnew RoleView().$mount('#vue-role-section')\n\tnew HeadlineView().$mount('#vue-headline-section')\n\tnew BiographyView().$mount('#vue-biography-section')\n\tnew ProfileVisibilityView().$mount('#vue-profile-visibility-section')\n}\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, \".biography[data-v-0fbf56a9]{display:grid;align-items:center}.biography textarea[data-v-0fbf56a9]{resize:vertical;grid-area:1/1;width:100%;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.biography textarea[data-v-0fbf56a9]:hover,.biography textarea[data-v-0fbf56a9]:focus,.biography textarea[data-v-0fbf56a9]:active{border-color:var(--color-primary-element) !important;outline:none !important}.biography .biography__actions-container[data-v-0fbf56a9]{grid-area:1/1;justify-self:flex-end;align-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px;margin-bottom:5px}.biography .biography__actions-container .icon-checkmark[data-v-0fbf56a9],.biography .biography__actions-container .icon-error[data-v-0fbf56a9]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-0fbf56a9],.fade-leave-to[data-v-0fbf56a9]{opacity:0}.fade-enter-active[data-v-0fbf56a9]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-0fbf56a9]{transition:opacity 300ms ease-out}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/BiographySection/Biography.vue\"],\"names\":[],\"mappings\":\"AAyHA,4BACC,YAAA,CACA,kBAAA,CAEA,qCACC,eAAA,CACA,aAAA,CACA,UAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAEA,kIAGC,oDAAA,CACA,uBAAA,CAIF,0DACC,aAAA,CACA,qBAAA,CACA,mBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CACA,iBAAA,CAEA,gJAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA\",\"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.biography {\\n\\tdisplay: grid;\\n\\talign-items: center;\\n\\n\\ttextarea {\\n\\t\\tresize: vertical;\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\twidth: 100%;\\n\\t\\tmargin: 3px 3px 3px 0;\\n\\t\\tpadding: 7px 6px;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder: 1px solid var(--color-border-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tfont-family: var(--font-face);\\n\\t\\tcursor: text;\\n\\n\\t\\t&:hover,\\n\\t\\t&:focus,\\n\\t\\t&:active {\\n\\t\\t\\tborder-color: var(--color-primary-element) !important;\\n\\t\\t\\toutline: none !important;\\n\\t\\t}\\n\\t}\\n\\n\\t.biography__actions-container {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\tjustify-self: flex-end;\\n\\t\\talign-self: flex-end;\\n\\t\\theight: 30px;\\n\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 2px;\\n\\t\\tmargin-right: 5px;\\n\\t\\tmargin-bottom: 5px;\\n\\n\\t\\t.icon-checkmark,\\n\\t\\t.icon-error {\\n\\t\\t\\theight: 30px !important;\\n\\t\\t\\tmin-height: 30px !important;\\n\\t\\t\\twidth: 30px !important;\\n\\t\\t\\tmin-width: 30px !important;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tfloat: none;\\n\\t\\t}\\n\\t}\\n}\\n\\n.fade-enter,\\n.fade-leave-to {\\n\\topacity: 0;\\n}\\n\\n.fade-enter-active {\\n\\ttransition: opacity 200ms ease-out;\\n}\\n\\n.fade-leave-active {\\n\\ttransition: opacity 300ms ease-out;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"section[data-v-cfa727da]{padding:10px 10px}section[data-v-cfa727da] button:disabled{cursor:default}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/BiographySection/BiographySection.vue\"],\"names\":[],\"mappings\":\"AA6DA,yBACC,iBAAA,CAEA,yCACC,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\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".displayname[data-v-3418897a]{display:grid;align-items:center}.displayname input[data-v-3418897a]{grid-area:1/1;width:100%;height:34px;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.displayname .displayname__actions-container[data-v-3418897a]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.displayname .displayname__actions-container .icon-checkmark[data-v-3418897a],.displayname .displayname__actions-container .icon-error[data-v-3418897a]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-3418897a],.fade-leave-to[data-v-3418897a]{opacity:0}.fade-enter-active[data-v-3418897a]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-3418897a]{transition:opacity 300ms ease-out}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayName.vue\"],\"names\":[],\"mappings\":\"AA8HA,8BACC,YAAA,CACA,kBAAA,CAEA,oCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAGD,8DACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,wJAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA\",\"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.displayname {\\n\\tdisplay: grid;\\n\\talign-items: center;\\n\\n\\tinput {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\twidth: 100%;\\n\\t\\theight: 34px;\\n\\t\\tmargin: 3px 3px 3px 0;\\n\\t\\tpadding: 7px 6px;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder: 1px solid var(--color-border-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tfont-family: var(--font-face);\\n\\t\\tcursor: text;\\n\\t}\\n\\n\\t.displayname__actions-container {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\tjustify-self: flex-end;\\n\\t\\theight: 30px;\\n\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 2px;\\n\\t\\tmargin-right: 5px;\\n\\n\\t\\t.icon-checkmark,\\n\\t\\t.icon-error {\\n\\t\\t\\theight: 30px !important;\\n\\t\\t\\tmin-height: 30px !important;\\n\\t\\t\\twidth: 30px !important;\\n\\t\\t\\tmin-width: 30px !important;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tfloat: none;\\n\\t\\t}\\n\\t}\\n}\\n\\n.fade-enter,\\n.fade-leave-to {\\n\\topacity: 0;\\n}\\n\\n.fade-enter-active {\\n\\ttransition: opacity 200ms ease-out;\\n}\\n\\n.fade-leave-active {\\n\\ttransition: opacity 300ms ease-out;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"section[data-v-b8a748f4]{padding:10px 10px}section[data-v-b8a748f4] button:disabled{cursor:default}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayNameSection.vue\"],\"names\":[],\"mappings\":\"AA8EA,yBACC,iBAAA,CAEA,yCACC,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\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".email[data-v-2c097054]{display:grid;align-items:center}.email input[data-v-2c097054]{grid-area:1/1;width:100%;height:34px;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.email .email__actions-container[data-v-2c097054]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.email .email__actions-container .email__actions[data-v-2c097054]{opacity:.4 !important}.email .email__actions-container .email__actions[data-v-2c097054]:hover,.email .email__actions-container .email__actions[data-v-2c097054]:focus,.email .email__actions-container .email__actions[data-v-2c097054]:active{opacity:.8 !important}.email .email__actions-container .email__actions[data-v-2c097054] button{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important}.email .email__actions-container .icon-checkmark[data-v-2c097054],.email .email__actions-container .icon-error[data-v-2c097054]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-2c097054],.fade-leave-to[data-v-2c097054]{opacity:0}.fade-enter-active[data-v-2c097054]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-2c097054]{transition:opacity 300ms ease-out}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/EmailSection/Email.vue\"],\"names\":[],\"mappings\":\"AAoWA,wBACC,YAAA,CACA,kBAAA,CAEA,8BACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAGD,kDACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,kEACC,qBAAA,CAEA,yNAGC,qBAAA,CAGD,yEACC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CAIF,gIAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.email {\\n\\tdisplay: grid;\\n\\talign-items: center;\\n\\n\\tinput {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\twidth: 100%;\\n\\t\\theight: 34px;\\n\\t\\tmargin: 3px 3px 3px 0;\\n\\t\\tpadding: 7px 6px;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder: 1px solid var(--color-border-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tfont-family: var(--font-face);\\n\\t\\tcursor: text;\\n\\t}\\n\\n\\t.email__actions-container {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\tjustify-self: flex-end;\\n\\t\\theight: 30px;\\n\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 2px;\\n\\t\\tmargin-right: 5px;\\n\\n\\t\\t.email__actions {\\n\\t\\t\\topacity: 0.4 !important;\\n\\n\\t\\t\\t&:hover,\\n\\t\\t\\t&:focus,\\n\\t\\t\\t&:active {\\n\\t\\t\\t\\topacity: 0.8 !important;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&::v-deep button {\\n\\t\\t\\t\\theight: 30px !important;\\n\\t\\t\\t\\tmin-height: 30px !important;\\n\\t\\t\\t\\twidth: 30px !important;\\n\\t\\t\\t\\tmin-width: 30px !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.icon-checkmark,\\n\\t\\t.icon-error {\\n\\t\\t\\theight: 30px !important;\\n\\t\\t\\tmin-height: 30px !important;\\n\\t\\t\\twidth: 30px !important;\\n\\t\\t\\tmin-width: 30px !important;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tfloat: none;\\n\\t\\t}\\n\\t}\\n}\\n\\n.fade-enter,\\n.fade-leave-to {\\n\\topacity: 0;\\n}\\n\\n.fade-enter-active {\\n\\ttransition: opacity 200ms ease-out;\\n}\\n\\n.fade-leave-active {\\n\\ttransition: opacity 300ms ease-out;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"section[data-v-845b669e]{padding:10px 10px}section[data-v-845b669e] button:disabled{cursor:default}section .additional-emails-label[data-v-845b669e]{display:block;margin-top:16px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue\"],\"names\":[],\"mappings\":\"AA+LA,yBACC,iBAAA,CAEA,yCACC,cAAA,CAGD,kDACC,aAAA,CACA,eAAA\",\"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\\n\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\n\\t}\\n\\n\\t.additional-emails-label {\\n\\t\\tdisplay: block;\\n\\t\\tmargin-top: 16px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".headline[data-v-64e0e0bd]{display:grid;align-items:center}.headline input[data-v-64e0e0bd]{grid-area:1/1;width:100%;height:34px;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.headline .headline__actions-container[data-v-64e0e0bd]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.headline .headline__actions-container .icon-checkmark[data-v-64e0e0bd],.headline .headline__actions-container .icon-error[data-v-64e0e0bd]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-64e0e0bd],.fade-leave-to[data-v-64e0e0bd]{opacity:0}.fade-enter-active[data-v-64e0e0bd]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-64e0e0bd]{transition:opacity 300ms ease-out}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/HeadlineSection/Headline.vue\"],\"names\":[],\"mappings\":\"AAyHA,2BACC,YAAA,CACA,kBAAA,CAEA,iCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAGD,wDACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,4IAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA\",\"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.headline {\\n\\tdisplay: grid;\\n\\talign-items: center;\\n\\n\\tinput {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\twidth: 100%;\\n\\t\\theight: 34px;\\n\\t\\tmargin: 3px 3px 3px 0;\\n\\t\\tpadding: 7px 6px;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder: 1px solid var(--color-border-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tfont-family: var(--font-face);\\n\\t\\tcursor: text;\\n\\t}\\n\\n\\t.headline__actions-container {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\tjustify-self: flex-end;\\n\\t\\theight: 30px;\\n\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 2px;\\n\\t\\tmargin-right: 5px;\\n\\n\\t\\t.icon-checkmark,\\n\\t\\t.icon-error {\\n\\t\\t\\theight: 30px !important;\\n\\t\\t\\tmin-height: 30px !important;\\n\\t\\t\\twidth: 30px !important;\\n\\t\\t\\tmin-width: 30px !important;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tfloat: none;\\n\\t\\t}\\n\\t}\\n}\\n\\n.fade-enter,\\n.fade-leave-to {\\n\\topacity: 0;\\n}\\n\\n.fade-enter-active {\\n\\ttransition: opacity 200ms ease-out;\\n}\\n\\n.fade-leave-active {\\n\\ttransition: opacity 300ms ease-out;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"section[data-v-187bb5da]{padding:10px 10px}section[data-v-187bb5da] button:disabled{cursor:default}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/HeadlineSection/HeadlineSection.vue\"],\"names\":[],\"mappings\":\"AA6DA,yBACC,iBAAA,CAEA,yCACC,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\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".language[data-v-5396d706]{display:grid}.language select[data-v-5396d706]{width:100%;height:34px;margin:3px 3px 3px 0;padding:6px 16px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background:var(--icon-triangle-s-000) no-repeat right 4px center;font-family:var(--font-face);appearance:none;cursor:pointer}.language a[data-v-5396d706]{color:var(--color-main-text);text-decoration:none;width:max-content}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue\"],\"names\":[],\"mappings\":\"AA+IA,2BACC,YAAA,CAEA,kCACC,UAAA,CACA,WAAA,CACA,oBAAA,CACA,gBAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,gEAAA,CACA,4BAAA,CACA,eAAA,CACA,cAAA,CAGD,6BACC,4BAAA,CACA,oBAAA,CACA,iBAAA\",\"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.language {\\n\\tdisplay: grid;\\n\\n\\tselect {\\n\\t\\twidth: 100%;\\n\\t\\theight: 34px;\\n\\t\\tmargin: 3px 3px 3px 0;\\n\\t\\tpadding: 6px 16px;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder: 1px solid var(--color-border-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground: var(--icon-triangle-s-000) no-repeat right 4px center;\\n\\t\\tfont-family: var(--font-face);\\n\\t\\tappearance: none;\\n\\t\\tcursor: pointer;\\n\\t}\\n\\n\\ta {\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\ttext-decoration: none;\\n\\t\\twidth: max-content;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"section[data-v-16883898]{padding:10px 10px}section[data-v-16883898] button:disabled{cursor:default}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue\"],\"names\":[],\"mappings\":\"AA2EA,yBACC,iBAAA,CAEA,yCACC,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\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".organisation[data-v-591cd6b6]{display:grid;align-items:center}.organisation input[data-v-591cd6b6]{grid-area:1/1;width:100%;height:34px;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.organisation .organisation__actions-container[data-v-591cd6b6]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.organisation .organisation__actions-container .icon-checkmark[data-v-591cd6b6],.organisation .organisation__actions-container .icon-error[data-v-591cd6b6]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-591cd6b6],.fade-leave-to[data-v-591cd6b6]{opacity:0}.fade-enter-active[data-v-591cd6b6]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-591cd6b6]{transition:opacity 300ms ease-out}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/OrganisationSection/Organisation.vue\"],\"names\":[],\"mappings\":\"AAyHA,+BACC,YAAA,CACA,kBAAA,CAEA,qCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAGD,gEACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,4JAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA\",\"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.organisation {\\n\\tdisplay: grid;\\n\\talign-items: center;\\n\\n\\tinput {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\twidth: 100%;\\n\\t\\theight: 34px;\\n\\t\\tmargin: 3px 3px 3px 0;\\n\\t\\tpadding: 7px 6px;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder: 1px solid var(--color-border-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tfont-family: var(--font-face);\\n\\t\\tcursor: text;\\n\\t}\\n\\n\\t.organisation__actions-container {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\tjustify-self: flex-end;\\n\\t\\theight: 30px;\\n\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 2px;\\n\\t\\tmargin-right: 5px;\\n\\n\\t\\t.icon-checkmark,\\n\\t\\t.icon-error {\\n\\t\\t\\theight: 30px !important;\\n\\t\\t\\tmin-height: 30px !important;\\n\\t\\t\\twidth: 30px !important;\\n\\t\\t\\tmin-width: 30px !important;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tfloat: none;\\n\\t\\t}\\n\\t}\\n}\\n\\n.fade-enter,\\n.fade-leave-to {\\n\\topacity: 0;\\n}\\n\\n.fade-enter-active {\\n\\ttransition: opacity 200ms ease-out;\\n}\\n\\n.fade-leave-active {\\n\\ttransition: opacity 300ms ease-out;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"section[data-v-43146ff7]{padding:10px 10px}section[data-v-43146ff7] button:disabled{cursor:default}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/OrganisationSection/OrganisationSection.vue\"],\"names\":[],\"mappings\":\"AA6DA,yBACC,iBAAA,CAEA,yCACC,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\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"html{scroll-behavior:smooth}@media screen and (prefers-reduced-motion: reduce){html{scroll-behavior:auto}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue\"],\"names\":[],\"mappings\":\"AA4DA,KACC,sBAAA,CAEA,mDAHD,KAIE,oBAAA,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\\nhtml {\\n\\tscroll-behavior: smooth;\\n\\n\\t@media screen and (prefers-reduced-motion: reduce) {\\n\\t\\tscroll-behavior: auto;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"a[data-v-73817e9f]{display:block;height:44px;width:290px;line-height:44px;padding:0 16px;margin:14px auto;border-radius:var(--border-radius-pill);opacity:.4;background-color:rgba(0,0,0,0)}a .anchor-icon[data-v-73817e9f]{display:inline-block;vertical-align:middle;margin-top:6px;margin-right:8px}a[data-v-73817e9f]:hover,a[data-v-73817e9f]:focus,a[data-v-73817e9f]:active{opacity:.8;background-color:rgba(127,127,127,.25)}a.disabled[data-v-73817e9f]{pointer-events:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue\"],\"names\":[],\"mappings\":\"AAsEA,mBACC,aAAA,CACA,WAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,gBAAA,CACA,uCAAA,CACA,UAAA,CACA,8BAAA,CAEA,gCACC,oBAAA,CACA,qBAAA,CACA,cAAA,CACA,gBAAA,CAGD,4EAGC,UAAA,CACA,sCAAA,CAGD,4BACC,mBAAA\",\"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\\na {\\n\\tdisplay: block;\\n\\theight: 44px;\\n\\twidth: 290px;\\n\\tline-height: 44px;\\n\\tpadding: 0 16px;\\n\\tmargin: 14px auto;\\n\\tborder-radius: var(--border-radius-pill);\\n\\topacity: 0.4;\\n\\tbackground-color: transparent;\\n\\n\\t.anchor-icon {\\n\\t\\tdisplay: inline-block;\\n\\t\\tvertical-align: middle;\\n\\t\\tmargin-top: 6px;\\n\\t\\tmargin-right: 8px;\\n\\t}\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\topacity: 0.8;\\n\\t\\tbackground-color: rgba(127, 127, 127, .25);\\n\\t}\\n\\n\\t&.disabled {\\n\\t\\tpointer-events: none;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".preview-card[data-v-79bf7437]{display:flex;flex-direction:column;position:relative;width:290px;height:116px;margin:14px auto;border-radius:var(--border-radius-large);background-color:var(--color-main-background);font-weight:bold;box-shadow:0 2px 9px var(--color-box-shadow)}.preview-card[data-v-79bf7437]:hover,.preview-card[data-v-79bf7437]:focus,.preview-card[data-v-79bf7437]:active{box-shadow:0 2px 12px var(--color-box-shadow)}.preview-card[data-v-79bf7437]:focus-visible{outline:var(--color-main-text) solid 1px;outline-offset:3px}.preview-card.disabled[data-v-79bf7437]{filter:grayscale(1);opacity:.5;cursor:default;box-shadow:0 0 3px var(--color-box-shadow)}.preview-card.disabled *[data-v-79bf7437],.preview-card.disabled[data-v-79bf7437] *{cursor:default}.preview-card__avatar[data-v-79bf7437]{position:absolute !important;top:40px;left:18px;z-index:1}.preview-card__avatar[data-v-79bf7437]:not(.avatardiv--unknown){box-shadow:0 0 0 3px var(--color-main-background) !important}.preview-card__header[data-v-79bf7437],.preview-card__footer[data-v-79bf7437]{position:relative;width:auto}.preview-card__header span[data-v-79bf7437],.preview-card__footer span[data-v-79bf7437]{position:absolute;left:78px;overflow:hidden;text-overflow:ellipsis;word-break:break-all}@supports(-webkit-line-clamp: 2){.preview-card__header span[data-v-79bf7437],.preview-card__footer span[data-v-79bf7437]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.preview-card__header[data-v-79bf7437]{height:70px;border-radius:var(--border-radius-large) var(--border-radius-large) 0 0}.preview-card__header span[data-v-79bf7437]{bottom:0;color:var(--color-primary-text);font-size:18px;font-weight:bold;margin:0 4px 8px 0}.preview-card__footer[data-v-79bf7437]{height:46px}.preview-card__footer span[data-v-79bf7437]{top:0;color:var(--color-text-maxcontrast);font-size:14px;font-weight:normal;margin:4px 4px 0 0;line-height:1.3}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue\"],\"names\":[],\"mappings\":\"AA6FA,+BACC,YAAA,CACA,qBAAA,CACA,iBAAA,CACA,WAAA,CACA,YAAA,CACA,gBAAA,CACA,wCAAA,CACA,6CAAA,CACA,gBAAA,CACA,4CAAA,CAEA,gHAGC,6CAAA,CAGD,6CACC,wCAAA,CACA,kBAAA,CAGD,wCACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,0CAAA,CAEA,oFAEC,cAAA,CAIF,uCAEC,4BAAA,CACA,QAAA,CACA,SAAA,CACA,SAAA,CAEA,gEACC,4DAAA,CAIF,8EAEC,iBAAA,CACA,UAAA,CAEA,wFACC,iBAAA,CACA,SAAA,CACA,eAAA,CACA,sBAAA,CACA,oBAAA,CAEA,iCAPD,wFAQE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,uCACC,WAAA,CACA,uEAAA,CAEA,4CACC,QAAA,CACA,+BAAA,CACA,cAAA,CACA,gBAAA,CACA,kBAAA,CAIF,uCACC,WAAA,CAEA,4CACC,KAAA,CACA,mCAAA,CACA,cAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA\",\"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.preview-card {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tposition: relative;\\n\\twidth: 290px;\\n\\theight: 116px;\\n\\tmargin: 14px auto;\\n\\tborder-radius: var(--border-radius-large);\\n\\tbackground-color: var(--color-main-background);\\n\\tfont-weight: bold;\\n\\tbox-shadow: 0 2px 9px var(--color-box-shadow);\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\tbox-shadow: 0 2px 12px var(--color-box-shadow);\\n\\t}\\n\\n\\t&:focus-visible {\\n\\t\\toutline: var(--color-main-text) solid 1px;\\n\\t\\toutline-offset: 3px;\\n\\t}\\n\\n\\t&.disabled {\\n\\t\\tfilter: grayscale(1);\\n\\t\\topacity: 0.5;\\n\\t\\tcursor: default;\\n\\t\\tbox-shadow: 0 0 3px var(--color-box-shadow);\\n\\n\\t\\t& *,\\n\\t\\t&::v-deep * {\\n\\t\\t\\tcursor: default;\\n\\t\\t}\\n\\t}\\n\\n\\t&__avatar {\\n\\t\\t// Override Avatar component position to fix positioning on rerender\\n\\t\\tposition: absolute !important;\\n\\t\\ttop: 40px;\\n\\t\\tleft: 18px;\\n\\t\\tz-index: 1;\\n\\n\\t\\t&:not(.avatardiv--unknown) {\\n\\t\\t\\tbox-shadow: 0 0 0 3px var(--color-main-background) !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&__header,\\n\\t&__footer {\\n\\t\\tposition: relative;\\n\\t\\twidth: auto;\\n\\n\\t\\tspan {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tleft: 78px;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\tword-break: break-all;\\n\\n\\t\\t\\t@supports (-webkit-line-clamp: 2) {\\n\\t\\t\\t\\tdisplay: -webkit-box;\\n\\t\\t\\t\\t-webkit-line-clamp: 2;\\n\\t\\t\\t\\t-webkit-box-orient: vertical;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__header {\\n\\t\\theight: 70px;\\n\\t\\tborder-radius: var(--border-radius-large) var(--border-radius-large) 0 0;\\n\\n\\t\\tspan {\\n\\t\\t\\tbottom: 0;\\n\\t\\t\\tcolor: var(--color-primary-text);\\n\\t\\t\\tfont-size: 18px;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tmargin: 0 4px 8px 0;\\n\\t\\t}\\n\\t}\\n\\n\\t&__footer {\\n\\t\\theight: 46px;\\n\\n\\t\\tspan {\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\tfont-size: 14px;\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t\\tmargin: 4px 4px 0 0;\\n\\t\\t\\tline-height: 1.3;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"section[data-v-252753e6]{padding:10px 10px}section[data-v-252753e6] button:disabled{cursor:default}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue\"],\"names\":[],\"mappings\":\"AAkGA,yBACC,iBAAA,CAEA,yCACC,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\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"section[data-v-16df62f8]{padding:30px;max-width:100vw}section em[data-v-16df62f8]{display:block;margin:16px 0}section em.disabled[data-v-16df62f8]{filter:grayscale(1);opacity:.5;cursor:default;pointer-events:none}section em.disabled *[data-v-16df62f8],section em.disabled[data-v-16df62f8] *{cursor:default;pointer-events:none}section .visibility-dropdowns[data-v-16df62f8]{display:grid;gap:10px 40px}@media(min-width: 1200px){section[data-v-16df62f8]{width:940px}section .visibility-dropdowns[data-v-16df62f8]{grid-auto-flow:column}}@media(max-width: 1200px){section[data-v-16df62f8]{width:470px}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue\"],\"names\":[],\"mappings\":\"AAyHA,yBACC,YAAA,CACA,eAAA,CAEA,4BACC,aAAA,CACA,aAAA,CAEA,qCACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,mBAAA,CAEA,8EAEC,cAAA,CACA,mBAAA,CAKH,+CACC,YAAA,CACA,aAAA,CAGD,0BA3BD,yBA4BE,WAAA,CAEA,+CACC,qBAAA,CAAA,CAIF,0BAnCD,yBAoCE,WAAA,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\\nsection {\\n\\tpadding: 30px;\\n\\tmax-width: 100vw;\\n\\n\\tem {\\n\\t\\tdisplay: block;\\n\\t\\tmargin: 16px 0;\\n\\n\\t\\t&.disabled {\\n\\t\\t\\tfilter: grayscale(1);\\n\\t\\t\\topacity: 0.5;\\n\\t\\t\\tcursor: default;\\n\\t\\t\\tpointer-events: none;\\n\\n\\t\\t\\t& *,\\n\\t\\t\\t&::v-deep * {\\n\\t\\t\\t\\tcursor: default;\\n\\t\\t\\t\\tpointer-events: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t.visibility-dropdowns {\\n\\t\\tdisplay: grid;\\n\\t\\tgap: 10px 40px;\\n\\t}\\n\\n\\t@media (min-width: 1200px) {\\n\\t\\twidth: 940px;\\n\\n\\t\\t.visibility-dropdowns {\\n\\t\\t\\tgrid-auto-flow: column;\\n\\t\\t}\\n\\t}\\n\\n\\t@media (max-width: 1200px) {\\n\\t\\twidth: 470px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".visibility-container[data-v-4643b0e2]{display:flex;width:max-content}.visibility-container.disabled[data-v-4643b0e2]{filter:grayscale(1);opacity:.5;cursor:default;pointer-events:none}.visibility-container.disabled *[data-v-4643b0e2],.visibility-container.disabled[data-v-4643b0e2] *{cursor:default;pointer-events:none}.visibility-container label[data-v-4643b0e2]{color:var(--color-text-lighter);width:150px;line-height:50px}.visibility-container__multiselect[data-v-4643b0e2]{width:260px;max-width:40vw}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue\"],\"names\":[],\"mappings\":\"AAwJA,uCACC,YAAA,CACA,iBAAA,CAEA,gDACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,mBAAA,CAEA,oGAEC,cAAA,CACA,mBAAA,CAIF,6CACC,+BAAA,CACA,WAAA,CACA,gBAAA,CAGD,oDACC,WAAA,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.visibility-container {\\n\\tdisplay: flex;\\n\\twidth: max-content;\\n\\n\\t&.disabled {\\n\\t\\tfilter: grayscale(1);\\n\\t\\topacity: 0.5;\\n\\t\\tcursor: default;\\n\\t\\tpointer-events: none;\\n\\n\\t\\t& *,\\n\\t\\t&::v-deep * {\\n\\t\\t\\tcursor: default;\\n\\t\\t\\tpointer-events: none;\\n\\t\\t}\\n\\t}\\n\\n\\tlabel {\\n\\t\\tcolor: var(--color-text-lighter);\\n\\t\\twidth: 150px;\\n\\t\\tline-height: 50px;\\n\\t}\\n\\n\\t&__multiselect {\\n\\t\\twidth: 260px;\\n\\t\\tmax-width: 40vw;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".role[data-v-aac18396]{display:grid;align-items:center}.role input[data-v-aac18396]{grid-area:1/1;width:100%;height:34px;margin:3px 3px 3px 0;padding:7px 6px;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);background-color:var(--color-main-background);font-family:var(--font-face);cursor:text}.role .role__actions-container[data-v-aac18396]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.role .role__actions-container .icon-checkmark[data-v-aac18396],.role .role__actions-container .icon-error[data-v-aac18396]{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important;top:0;right:0;float:none}.fade-enter[data-v-aac18396],.fade-leave-to[data-v-aac18396]{opacity:0}.fade-enter-active[data-v-aac18396]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-aac18396]{transition:opacity 300ms ease-out}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/RoleSection/Role.vue\"],\"names\":[],\"mappings\":\"AAyHA,uBACC,YAAA,CACA,kBAAA,CAEA,6BACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAAA,CACA,yCAAA,CACA,kCAAA,CACA,6CAAA,CACA,4BAAA,CACA,WAAA,CAGD,gDACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,4HAEC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA\",\"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.role {\\n\\tdisplay: grid;\\n\\talign-items: center;\\n\\n\\tinput {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\twidth: 100%;\\n\\t\\theight: 34px;\\n\\t\\tmargin: 3px 3px 3px 0;\\n\\t\\tpadding: 7px 6px;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder: 1px solid var(--color-border-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tfont-family: var(--font-face);\\n\\t\\tcursor: text;\\n\\t}\\n\\n\\t.role__actions-container {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\tjustify-self: flex-end;\\n\\t\\theight: 30px;\\n\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 2px;\\n\\t\\tmargin-right: 5px;\\n\\n\\t\\t.icon-checkmark,\\n\\t\\t.icon-error {\\n\\t\\t\\theight: 30px !important;\\n\\t\\t\\tmin-height: 30px !important;\\n\\t\\t\\twidth: 30px !important;\\n\\t\\t\\tmin-width: 30px !important;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tfloat: none;\\n\\t\\t}\\n\\t}\\n}\\n\\n.fade-enter,\\n.fade-leave-to {\\n\\topacity: 0;\\n}\\n\\n.fade-enter-active {\\n\\ttransition: opacity 200ms ease-out;\\n}\\n\\n.fade-leave-active {\\n\\ttransition: opacity 300ms ease-out;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"section[data-v-f3d959c2]{padding:10px 10px}section[data-v-f3d959c2] button:disabled{cursor:default}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/RoleSection/RoleSection.vue\"],\"names\":[],\"mappings\":\"AA6DA,yBACC,iBAAA,CAEA,yCACC,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\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".federation-actions[data-v-b51d8bee],.federation-actions--additional[data-v-b51d8bee]{opacity:.4 !important}.federation-actions[data-v-b51d8bee]:hover,.federation-actions[data-v-b51d8bee]:focus,.federation-actions[data-v-b51d8bee]:active,.federation-actions--additional[data-v-b51d8bee]:hover,.federation-actions--additional[data-v-b51d8bee]:focus,.federation-actions--additional[data-v-b51d8bee]:active{opacity:.8 !important}.federation-actions--additional[data-v-b51d8bee] button{padding-bottom:7px;height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/shared/FederationControl.vue\"],\"names\":[],\"mappings\":\"AAsLA,sFAEC,qBAAA,CAEA,wSAGC,qBAAA,CAKD,wDAEC,kBAAA,CACA,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA\",\"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.federation-actions,\\n.federation-actions--additional {\\n\\topacity: 0.4 !important;\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\topacity: 0.8 !important;\\n\\t}\\n}\\n\\n.federation-actions--additional {\\n\\t&::v-deep button {\\n\\t\\t// TODO remove this hack\\n\\t\\tpadding-bottom: 7px;\\n\\t\\theight: 30px !important;\\n\\t\\tmin-height: 30px !important;\\n\\t\\twidth: 30px !important;\\n\\t\\tmin-width: 30px !important;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".federation-actions__btn[data-v-d2e8b360] p{width:150px !important;padding:8px 0 !important;color:var(--color-main-text) !important;font-size:12.8px !important;line-height:1.5em !important}.federation-actions__btn--active[data-v-d2e8b360]{background-color:var(--color-primary-light) !important;box-shadow:inset 2px 0 var(--color-primary) !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue\"],\"names\":[],\"mappings\":\"AA0FC,4CACC,sBAAA,CACA,wBAAA,CACA,uCAAA,CACA,2BAAA,CACA,4BAAA,CAIF,kDACC,sDAAA,CACA,sDAAA\",\"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.federation-actions__btn {\\n\\t&::v-deep p {\\n\\t\\twidth: 150px !important;\\n\\t\\tpadding: 8px 0 !important;\\n\\t\\tcolor: var(--color-main-text) !important;\\n\\t\\tfont-size: 12.8px !important;\\n\\t\\tline-height: 1.5em !important;\\n\\t}\\n}\\n\\n.federation-actions__btn--active {\\n\\tbackground-color: var(--color-primary-light) !important;\\n\\tbox-shadow: inset 2px 0 var(--color-primary) !important;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"h3[data-v-19038f0c]{display:inline-flex;width:100%;margin:12px 0 0 0;font-size:16px;color:var(--color-text-light)}h3.profile-property[data-v-19038f0c]{height:38px}h3.setting-property[data-v-19038f0c]{height:32px}h3 label[data-v-19038f0c]{cursor:pointer}.federation-control[data-v-19038f0c]{margin:-12px 0 0 8px}.button-vue[data-v-19038f0c]{margin:-6px 0 0 auto !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue\"],\"names\":[],\"mappings\":\"AA0HA,oBACC,mBAAA,CACA,UAAA,CACA,iBAAA,CACA,cAAA,CACA,6BAAA,CAEA,qCACC,WAAA,CAGD,qCACC,WAAA,CAGD,0BACC,cAAA,CAIF,qCACC,oBAAA,CAGD,6BACC,+BAAA\",\"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\\nh3 {\\n\\tdisplay: inline-flex;\\n\\twidth: 100%;\\n\\tmargin: 12px 0 0 0;\\n\\tfont-size: 16px;\\n\\tcolor: var(--color-text-light);\\n\\n\\t&.profile-property {\\n\\t\\theight: 38px;\\n\\t}\\n\\n\\t&.setting-property {\\n\\t\\theight: 32px;\\n\\t}\\n\\n\\tlabel {\\n\\t\\tcursor: pointer;\\n\\t}\\n}\\n\\n.federation-control {\\n\\tmargin: -12px 0 0 8px;\\n}\\n\\n.button-vue {\\n\\tmargin: -6px 0 0 auto !important;\\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 = 4418;","__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\t4418: 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));","__webpack_require__.nc = undefined;","// 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__(95979); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","getLoggerBuilder","setApp","detectUser","build","ACCOUNT_PROPERTY_ENUM","Object","freeze","ADDRESS","AVATAR","BIOGRAPHY","DISPLAYNAME","EMAIL_COLLECTION","EMAIL","HEADLINE","NOTIFICATION_EMAIL","ORGANISATION","PHONE","PROFILE_ENABLED","ROLE","TWITTER","WEBSITE","ACCOUNT_PROPERTY_READABLE_ENUM","t","PROFILE_READABLE_ENUM","PROFILE_VISIBILITY","PROPERTY_READABLE_KEYS_ENUM","ACCOUNT_SETTING_PROPERTY_ENUM","LANGUAGE","ACCOUNT_SETTING_PROPERTY_READABLE_ENUM","SCOPE_ENUM","PRIVATE","LOCAL","FEDERATED","PUBLISHED","PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM","UNPUBLISHED_READABLE_PROPERTIES","SCOPE_SUFFIX","SCOPE_PROPERTY_ENUM","name","displayName","tooltip","tooltipDisabled","iconClass","DEFAULT_ADDITIONAL_EMAIL_SCOPE","VERIFICATION_ENUM","NOT_VERIFIED","VERIFICATION_IN_PROGRESS","VERIFIED","VALIDATE_EMAIL_REGEX","savePrimaryAccountProperty","accountProperty","value","userId","getCurrentUser","uid","url","generateOcsUrl","confirmPassword","axios","key","res","data","savePrimaryAccountPropertyScope","scope","validateStringInput","input","validateEmail","test","slice","length","encodeURIComponent","replace","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","domProps","on","onDisplayNameChange","_v","_e","class","activeScope","isSupportedScope","$event","stopPropagation","preventDefault","updateScope","apply","arguments","_s","additional","ariaLabel","scopeIcon","disabled","_l","federationScope","changeScope","supportedScopes","includes","isSettingProperty","isProfileProperty","labelFor","localScope","onScopeChange","isEditable","isMultiValueSupported","isValidSection","onAddAdditional","scopedSlots","_u","fn","proxy","displayNameChangeSupported","primaryDisplayName","$set","savePrimaryEmail","email","saveAdditionalEmail","saveNotificationEmail","removeAdditionalEmail","collection","updateAdditionalEmail","prevEmail","newEmail","savePrimaryEmailScope","saveAdditionalEmailScope","collectionScope","ref","inputId","inputPlaceholder","onEmailChange","primary","federationDisabled","deleteDisabled","deleteEmailLabel","deleteEmail","isNotificationEmail","setNotificationMailLabel","setNotificationMailDisabled","setNotificationMail","primaryEmail","onAddAdditionalEmail","notificationEmail","onUpdateEmail","onUpdateNotificationEmail","additionalEmails","additionalEmail","index","parseInt","locallyVerified","onDeleteAdditionalEmail","code","undefined","onLanguageChange","commonLanguage","language","otherLanguage","commonLanguages","otherLanguages","_g","$listeners","profileEnabled","onEnableProfileChange","profilePageLink","organisation","onOrganisationChange","primaryOrganisation","role","onRoleChange","primaryRole","headline","onHeadlineChange","primaryHeadline","biography","onBiographyChange","primaryBiography","saveProfileParameterVisibility","paramId","visibility","VISIBILITY_ENUM","SHOW","SHOW_USERS_ONLY","HIDE","VISIBILITY_PROPERTY_ENUM","label","displayId","visibilityOptions","visibilityObject","onVisibilityChange","style","marginLeft","heading","gridTemplateRows","rows","param","id","__webpack_nonce__","btoa","getRequestToken","profileEnabledGlobally","loadState","Vue","props","logger","methods","DisplayNameView","DisplayNameSection","EmailView","EmailSection","LanguageView","LanguageSection","$mount","ProfileView","ProfileSection","OrganisationView","OrganisationSection","RoleView","RoleSection","HeadlineView","HeadlineSection","BiographyView","BiographySection","ProfileVisibilityView","ProfileVisibilitySection","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/settings-vue-settings-personal-security.js b/dist/settings-vue-settings-personal-security.js
index 3561691b0a2..cdab77b9b87 100644
--- a/dist/settings-vue-settings-personal-security.js
+++ b/dist/settings-vue-settings-personal-security.js
@@ -1,3 +1,3 @@
/*! For license information please see settings-vue-settings-personal-security.js.LICENSE.txt */
-!function(){"use strict";var n,e={68680:function(n,e,o){var i=o(16453),a=o(20144),r=o(72268),s=o.n(r),c=o(34741),p=o(4820),l=o(10128),d=o.n(l),u=o(79753),A=o(33476),h={ie:/(?:MSIE|Trident|Trident\/7.0; rv)[ :](\d+)/,edge:/^Mozilla\/5\.0 \([^)]+\) AppleWebKit\/[0-9.]+ \(KHTML, like Gecko\) Chrome\/[0-9.]+ (?:Mobile Safari|Safari)\/[0-9.]+ Edge\/[0-9.]+$/,firefox:/^Mozilla\/5\.0 \([^)]*(Windows|OS X|Linux)[^)]+\) Gecko\/[0-9.]+ Firefox\/(\d+)(?:\.\d)?$/,chrome:/^Mozilla\/5\.0 \([^)]*(Windows|OS X|Linux)[^)]+\) AppleWebKit\/[0-9.]+ \(KHTML, like Gecko\) Chrome\/(\d+)[0-9.]+ (?:Mobile Safari|Safari)\/[0-9.]+$/,safari:/^Mozilla\/5\.0 \([^)]*(Windows|OS X)[^)]+\) AppleWebKit\/[0-9.]+ \(KHTML, like Gecko\)(?: Version\/([0-9]+)[0-9.]+)? Safari\/[0-9.A-Z]+$/,androidChrome:/Android.*(?:; (.*) Build\/).*Chrome\/(\d+)[0-9.]+/,iphone:/ *CPU +iPhone +OS +([0-9]+)_(?:[0-9_])+ +like +Mac +OS +X */,ipad:/\(iPad; *CPU +OS +([0-9]+)_(?:[0-9_])+ +like +Mac +OS +X */,iosClient:/^Mozilla\/5\.0 \(iOS\) (?:ownCloud|Nextcloud)-iOS.*$/,androidClient:/^Mozilla\/5\.0 \(Android\) (?:ownCloud|Nextcloud)-android.*$/,iosTalkClient:/^Mozilla\/5\.0 \(iOS\) Nextcloud-Talk.*$/,androidTalkClient:/^Mozilla\/5\.0 \(Android\) Nextcloud-Talk.*$/,davx5:/DAV(?:droid|x5)\/([^ ]+)/,webPirate:/(Sailfish).*WebPirate\/(\d+)/,sailfishBrowser:/(Sailfish).*SailfishBrowser\/(\d+)/},f={ie:t("setting","Internet Explorer"),edge:t("setting","Edge"),firefox:t("setting","Firefox"),chrome:t("setting","Google Chrome"),safari:t("setting","Safari"),androidChrome:t("setting","Google Chrome for Android"),iphone:t("setting","iPhone"),ipad:t("setting","iPad"),iosClient:t("setting","{productName} iOS app",{productName:window.oc_defaults.productName}),androidClient:t("setting","{productName} Android app",{productName:window.oc_defaults.productName}),iosTalkClient:t("setting","{productName} Talk for iOS",{productName:window.oc_defaults.productName}),androidTalkClient:t("setting","{productName} Talk for Android",{productName:window.oc_defaults.productName}),davx5:"DAVx5",webPirate:"WebPirate",sailfishBrowser:"SailfishBrowser"},m={ie:"icon-desktop",edge:"icon-desktop",firefox:"icon-desktop",chrome:"icon-desktop",safari:"icon-desktop",androidChrome:"icon-phone",iphone:"icon-phone",ipad:"icon-tablet",iosClient:"icon-phone",androidClient:"icon-phone",iosTalkClient:"icon-phone",androidTalkClient:"icon-phone",davx5:"icon-phone",webPirate:"icon-link",sailfishBrowser:"icon-link"},g={name:"AuthToken",components:{Actions:A.Actions,ActionButton:A.ActionButton,ActionCheckbox:A.ActionCheckbox},props:{token:{type:Object,required:!0}},data:function(){return{showMore:this.token.canScope||this.token.canDelete,renaming:!1,newName:"",actionOpen:!1}},computed:{lastActivityRelative:function(){return OC.Util.relativeModifiedDate(1e3*this.token.lastActivity)},lastActivity:function(){return OC.Util.formatDate(1e3*this.token.lastActivity,"LLL")},iconName:function(){var n=this.token.name.match(/Mozilla\/5\.0 \((\w+)\) (?:mirall|csyncoC)\/(\d+\.\d+\.\d+)/),e="";n&&(this.token.name=t("settings","Sync client - {os}",{os:n[1],version:n[2]}),e="icon-desktop");var o=this.token.name,i=this.token.name;for(var a in h){var r=o.match(h[a]);r&&(i=r[2]&&r[1]?f[a]+" "+r[2]+" - "+r[1]:r[1]?f[a]+" "+r[1]:f[a],e=m[a])}return this.token.current&&(i=t("settings","This session")),{icon:e,name:i}},wiping:function(){return 2===this.token.type}},methods:{startRename:function(){var n=this;this.actionOpen=!1,this.newName=this.token.name,this.renaming=!0,this.$nextTick((function(){n.$refs.input.select()}))},cancelRename:function(){this.renaming=!1},revoke:function(){this.actionOpen=!1,this.$emit("delete",this.token)},rename:function(){this.renaming=!1,this.$emit("rename",this.token,this.newName)},wipe:function(){this.actionOpen=!1,this.$emit("wipe",this.token)}}},v=o(93379),C=o.n(v),k=o(7795),w=o.n(k),y=o(90569),b=o.n(y),x=o(3565),_=o.n(x),T=o(19216),O=o.n(T),N=o(44589),P=o.n(N),B=o(16010),S={};S.styleTagTransform=P(),S.setAttributes=_(),S.insert=b().bind(null,"head"),S.domAPI=w(),S.insertStyleElement=O(),C()(B.Z,S),B.Z&&B.Z.locals&&B.Z.locals;var D=o(51900),E=(0,D.Z)(g,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("tr",{class:n.wiping,attrs:{"data-id":n.token.id}},[e("td",{staticClass:"client"},[e("div",{class:n.iconName.icon})]),n._v(" "),e("td",{staticClass:"token-name"},[n.token.canRename&&n.renaming?e("input",{directives:[{name:"model",rawName:"v-model",value:n.newName,expression:"newName"}],ref:"input",attrs:{type:"text"},domProps:{value:n.newName},on:{keyup:[function(t){return!t.type.indexOf("key")&&n._k(t.keyCode,"enter",13,t.key,"Enter")?null:n.rename.apply(null,arguments)},function(t){return!t.type.indexOf("key")&&n._k(t.keyCode,"esc",27,t.key,["Esc","Escape"])?null:n.cancelRename.apply(null,arguments)}],blur:n.cancelRename,input:function(t){t.target.composing||(n.newName=t.target.value)}}}):e("span",[n._v(n._s(n.iconName.name))]),n._v(" "),n.wiping?e("span",{staticClass:"wiping-warning"},[n._v("("+n._s(n.t("settings","Marked for remote wipe"))+")")]):n._e()]),n._v(" "),e("td",[e("span",{directives:[{name:"tooltip",rawName:"v-tooltip",value:n.lastActivity,expression:"lastActivity"}],staticClass:"last-activity"},[n._v(n._s(n.lastActivityRelative))])]),n._v(" "),e("td",{staticClass:"more"},[n.token.current?n._e():e("Actions",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.t("settings","Device settings"),container:"body"},expression:"{\n\t\t\t\tcontent: t('settings', 'Device settings'),\n\t\t\t\tcontainer: 'body'\n\t\t\t}",modifiers:{auto:!0}}],attrs:{open:n.actionOpen},on:{"update:open":function(t){n.actionOpen=t}}},[1===n.token.type?e("ActionCheckbox",{attrs:{checked:n.token.scope.filesystem},on:{change:function(t){return t.stopPropagation(),t.preventDefault(),n.$emit("toggle-scope",n.token,"filesystem",!n.token.scope.filesystem)}}},[n._v("\n\t\t\t\t"+n._s(n.t("settings","Allow filesystem access"))+"\n\t\t\t")]):n._e(),n._v(" "),n.token.canRename?e("ActionButton",{attrs:{icon:"icon-rename"},on:{click:function(t){return t.stopPropagation(),t.preventDefault(),n.startRename.apply(null,arguments)}}},[n._v("\n\t\t\t\t"+n._s(n.t("settings","Rename"))+"\n\t\t\t")]):n._e(),n._v(" "),n.token.canDelete?[2!==n.token.type?[e("ActionButton",{attrs:{icon:"icon-delete"},on:{click:function(t){return t.stopPropagation(),t.preventDefault(),n.revoke.apply(null,arguments)}}},[n._v("\n\t\t\t\t\t\t"+n._s(n.t("settings","Revoke"))+"\n\t\t\t\t\t")]),n._v(" "),e("ActionButton",{attrs:{icon:"icon-delete"},on:{click:function(t){return t.stopPropagation(),t.preventDefault(),n.wipe.apply(null,arguments)}}},[n._v("\n\t\t\t\t\t\t"+n._s(n.t("settings","Wipe device"))+"\n\t\t\t\t\t")])]:2===n.token.type?e("ActionButton",{attrs:{icon:"icon-delete",title:n.t("settings","Revoke")},on:{click:function(t){return t.stopPropagation(),t.preventDefault(),n.revoke.apply(null,arguments)}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("settings","Revoking this token might prevent the wiping of your device if it has not started the wipe yet."))+"\n\t\t\t\t")]):n._e()]:n._e()],2)],1)])}),[],!1,null,"1c8c3140",null),R={name:"AuthTokenList",components:{AuthToken:E.exports},props:{tokens:{type:Array,required:!0}},computed:{sortedTokens:function(){return this.tokens.slice().sort((function(n,t){var e=parseInt(n.lastActivity,10);return parseInt(t.lastActivity,10)-e}))}},methods:{toggleScope:function(n,t,e){this.$emit("toggle-scope",n,t,e)},rename:function(n,t){this.$emit("rename",n,t)},onDelete:function(n){this.$emit("delete",n)},onWipe:function(n){this.$emit("wipe",n)}}},$=o(52442),U={};U.styleTagTransform=P(),U.setAttributes=_(),U.insert=b().bind(null,"head"),U.domAPI=w(),U.insertStyleElement=O(),C()($.Z,U),$.Z&&$.Z.locals&&$.Z.locals;var Z=o(47719),M={};M.styleTagTransform=P(),M.setAttributes=_(),M.insert=b().bind(null,"head"),M.domAPI=w(),M.insertStyleElement=O(),C()(Z.Z,M),Z.Z&&Z.Z.locals&&Z.Z.locals;var j=(0,D.Z)(R,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("table",{attrs:{id:"app-tokens-table"}},[n.tokens.length?e("thead",[e("tr",[e("th"),n._v(" "),e("th",[n._v(n._s(n.t("settings","Device")))]),n._v(" "),e("th",[n._v(n._s(n.t("settings","Last activity")))]),n._v(" "),e("th")])]):n._e(),n._v(" "),e("tbody",{staticClass:"token-list"},n._l(n.sortedTokens,(function(t){return e("AuthToken",{key:t.id,attrs:{token:t},on:{"toggle-scope":n.toggleScope,rename:n.rename,delete:n.onDelete,wipe:n.onWipe}})})),1)])}),[],!1,null,"4f8ceff3",null).exports,q=o(147),W=o.n(q),G=o(1412),L=o.n(G);function I(n,t){var e=Object.keys(n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(n);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable}))),e.push.apply(e,o)}return e}function z(n){for(var t=1;t<arguments.length;t++){var e=null!=arguments[t]?arguments[t]:{};t%2?I(Object(e),!0).forEach((function(t){F(n,t,e[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(e)):I(Object(e)).forEach((function(t){Object.defineProperty(n,t,Object.getOwnPropertyDescriptor(e,t))}))}return n}function F(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}var Q={name:"AuthTokenSetupDialogue",components:{QR:W(),Button:L()},props:{add:{type:Function,required:!0}},data:function(){return{adding:!1,loading:!1,deviceName:"",appPassword:"",loginName:"",passwordCopied:!1,showQR:!1,qrUrl:"",hoveringCopyButton:!1}},computed:{copyTooltipOptions:function(){var n={hideOnTargetClick:!1,trigger:"manual"};return this.passwordCopied?z(z({},n),{},{content:t("settings","Copied!"),show:!0}):z(z({},n),{},{content:t("settings","Copy"),show:this.hoveringCopyButton})}},methods:{selectInput:function(n){n.currentTarget.select()},submit:function(){var n=this;d()().then((function(){return n.loading=!0,n.add(n.deviceName)})).then((function(t){n.adding=!0,n.loginName=t.loginName,n.appPassword=t.token;var e=window.location.protocol+"//"+window.location.host+(0,u.getRootUrl)();n.qrUrl="nc://login/user:".concat(t.loginName,"&password:").concat(t.token,"&server:").concat(e),n.$nextTick((function(){n.$refs.appPassword.select()}))})).catch((function(e){console.error("could not create a new app password",e),OC.Notification.showTemporary(t("settings","Error while creating device token")),n.reset()}))},onCopyPassword:function(){var n=this;this.passwordCopied=!0,this.$refs.clipboardButton.blur(),setTimeout((function(){n.passwordCopied=!1}),3e3)},onCopyPasswordFailed:function(){OC.Notification.showTemporary(t("settings","Could not copy app password. Please copy it manually."))},reset:function(){this.adding=!1,this.loading=!1,this.showQR=!1,this.qrUrl="",this.deviceName="",this.appPassword="",this.loginName=""}}},K=o(97127),H={};H.styleTagTransform=P(),H.setAttributes=_(),H.insert=b().bind(null,"head"),H.domAPI=w(),H.insertStyleElement=O(),C()(K.Z,H),K.Z&&K.Z.locals&&K.Z.locals;var X=(0,D.Z)(Q,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return n.adding?e("div",[n._v("\n\t"+n._s(n.t("settings","Use the credentials below to configure your app or device."))+"\n\t"+n._s(n.t("settings","For security reasons this password will only be shown once."))+"\n\t"),e("div",{staticClass:"app-password-row"},[e("span",{staticClass:"app-password-label"},[n._v(n._s(n.t("settings","Username")))]),n._v(" "),e("input",{staticClass:"monospaced",attrs:{type:"text",readonly:"readonly"},domProps:{value:n.loginName},on:{focus:n.selectInput}})]),n._v(" "),e("div",{staticClass:"app-password-row"},[e("span",{staticClass:"app-password-label"},[n._v(n._s(n.t("settings","Password")))]),n._v(" "),e("input",{ref:"appPassword",staticClass:"monospaced",attrs:{type:"text",readonly:"readonly"},domProps:{value:n.appPassword},on:{focus:n.selectInput}}),n._v(" "),e("a",{directives:[{name:"tooltip",rawName:"v-tooltip",value:n.copyTooltipOptions,expression:"copyTooltipOptions"},{name:"clipboard",rawName:"v-clipboard:copy",value:n.appPassword,expression:"appPassword",arg:"copy"},{name:"clipboard",rawName:"v-clipboard:success",value:n.onCopyPassword,expression:"onCopyPassword",arg:"success"},{name:"clipboard",rawName:"v-clipboard:error",value:n.onCopyPasswordFailed,expression:"onCopyPasswordFailed",arg:"error"}],ref:"clipboardButton",staticClass:"icon icon-clippy",on:{mouseover:function(t){n.hoveringCopyButton=!0},mouseleave:function(t){n.hoveringCopyButton=!1}}}),n._v(" "),e("Button",{on:{click:n.reset}},[n._v("\n\t\t\t"+n._s(n.t("settings","Done"))+"\n\t\t")])],1),n._v(" "),e("div",{staticClass:"app-password-row"},[e("span",{staticClass:"app-password-label"}),n._v(" "),n.showQR?e("QR",{attrs:{value:n.qrUrl}}):e("a",{on:{click:function(t){n.showQR=!0}}},[n._v("\n\t\t\t"+n._s(n.t("settings","Show QR code for mobile apps"))+"\n\t\t")])],1)]):e("div",[e("input",{directives:[{name:"model",rawName:"v-model",value:n.deviceName,expression:"deviceName"}],attrs:{type:"text",maxlength:120,disabled:n.loading,placeholder:n.t("settings","App name")},domProps:{value:n.deviceName},on:{keydown:function(t){return!t.type.indexOf("key")&&n._k(t.keyCode,"enter",13,t.key,"Enter")?null:n.submit.apply(null,arguments)},input:function(t){t.target.composing||(n.deviceName=t.target.value)}}}),n._v(" "),e("Button",{attrs:{disabled:n.loading},on:{click:n.submit}},[n._v("\n\t\t"+n._s(n.t("settings","Create new app password"))+"\n\t")])],1)}),[],!1,null,"6a24fa34",null),V=X.exports;function J(n,t,e,o,i,a,r){try{var s=n[a](r),c=s.value}catch(n){return void e(n)}s.done?t(c):Promise.resolve(c).then(o,i)}var Y=function(n){return function(t){return n(t),t}},nn={name:"AuthTokenSection",components:{AuthTokenSetupDialogue:V,AuthTokenList:j},props:{tokens:{type:Array,required:!0},canCreateToken:{type:Boolean,required:!0}},data:function(){return{baseUrl:(0,u.generateUrl)("/settings/personal/authtokens")}},methods:{addNewToken:function(n){var e=this;console.debug("creating a new app token",n);var o={name:n};return p.default.post(this.baseUrl,o).then((function(n){return n.data})).then(Y((function(){return console.debug("app token created")}))).then(Y((function(n){return e.tokens.push(n.deviceToken)}))).catch((function(n){throw console.error.bind("could not create app password",n),OC.Notification.showTemporary(t("settings","Error while creating device token")),n}))},toggleTokenScope:function(n,e,o){console.debug("updating app token scope",n.id,e,o);var i=n.scope[e];return n.scope[e]=o,this.updateToken(n).then(Y((function(){return console.debug("app token scope updated")}))).catch((function(o){throw console.error.bind("could not update app token scope",o),OC.Notification.showTemporary(t("settings","Error while updating device token scope")),n.scope[e]=i,o}))},rename:function(n,e){console.debug("renaming app token",n.id,n.name,e);var o=n.name;return n.name=e,this.updateToken(n).then(Y((function(){return console.debug("app token name updated")}))).catch((function(e){console.error.bind("could not update app token name",e),OC.Notification.showTemporary(t("settings","Error while updating device token name")),n.name=o}))},updateToken:function(n){return p.default.put(this.baseUrl+"/"+n.id,n).then((function(n){return n.data}))},deleteToken:function(n){var e=this;return console.debug("deleting app token",n),this.tokens=this.tokens.filter((function(t){return t!==n})),p.default.delete(this.baseUrl+"/"+n.id).then((function(n){return n.data})).then(Y((function(){return console.debug("app token deleted")}))).catch((function(o){console.error.bind("could not delete app token",o),OC.Notification.showTemporary(t("settings","Error while deleting the token")),e.tokens.push(n)}))},wipeToken:function(n){var e,o=this;return(e=regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return console.debug("wiping app token",n),e.prev=1,e.next=4,d()();case 4:return e.next=6,new Promise((function(n){OC.dialogs.confirm(t("settings","Do you really want to wipe your data from this device?"),t("settings","Confirm wipe"),n,!0)}));case 6:if(e.sent){e.next=9;break}return console.debug("wipe aborted by user"),e.abrupt("return");case 9:return e.next=11,p.default.post(o.baseUrl+"/wipe/"+n.id);case 11:console.debug("app token marked for wipe"),n.type=2,e.next=19;break;case 15:e.prev=15,e.t0=e.catch(1),console.error("could not wipe app token",e.t0),OC.Notification.showTemporary(t("settings","Error while wiping the device with the token"));case 19:case"end":return e.stop()}}),e,null,[[1,15]])})),function(){var n=this,t=arguments;return new Promise((function(o,i){var a=e.apply(n,t);function r(n){J(a,o,i,r,s,"next",n)}function s(n){J(a,o,i,r,s,"throw",n)}r(void 0)}))})()}}},tn=nn,en=(0,D.Z)(tn,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"section",attrs:{id:"security"}},[e("h2",[n._v(n._s(n.t("settings","Devices & sessions",{},void 0,{sanitize:!1})))]),n._v(" "),e("p",{staticClass:"settings-hint hidden-when-empty"},[n._v("\n\t\t"+n._s(n.t("settings","Web, desktop and mobile clients currently logged in to your account."))+"\n\t")]),n._v(" "),e("AuthTokenList",{attrs:{tokens:n.tokens},on:{"toggle-scope":n.toggleTokenScope,rename:n.rename,delete:n.deleteToken,wipe:n.wipeToken}}),n._v(" "),n.canCreateToken?e("AuthTokenSetupDialogue",{attrs:{add:n.addNewToken}}):n._e()],1)}),[],!1,null,"451cdc4a",null).exports;o.nc=btoa(OC.requestToken),a.default.use(s()),a.default.use(c.default,{defaultHtml:!1}),a.default.prototype.t=t,new(a.default.extend(en))({propsData:{tokens:(0,i.loadState)("settings","app_tokens"),canCreateToken:(0,i.loadState)("settings","can_create_app_token")}}).$mount("#security-authtokens")},16010:function(n,t,e){var o=e(87537),i=e.n(o),a=e(23645),r=e.n(a)()(i());r.push([n.id,".wiping[data-v-1c8c3140]{background-color:var(--color-background-darker)}td[data-v-1c8c3140]{border-top:1px solid var(--color-border);max-width:200px;white-space:normal;vertical-align:middle;position:relative}td.client[data-v-1c8c3140],td.more[data-v-1c8c3140]{overflow:visible;position:relative;width:44px;height:44px}td.token-name[data-v-1c8c3140]{padding:10px 6px}td.token-name.token-rename[data-v-1c8c3140]{padding:0}td.token-name input[data-v-1c8c3140]{width:100%;margin:0}td.token-name .wiping-warning[data-v-1c8c3140]{color:var(--color-text-lighter)}td.more[data-v-1c8c3140]{padding:0 10px}td.client div[data-v-1c8c3140]{opacity:.57;width:44px;height:44px}","",{version:3,sources:["webpack://./apps/settings/src/components/AuthToken.vue"],names:[],mappings:"AAiQA,yBACC,+CAAA,CAGD,oBACC,wCAAA,CACA,eAAA,CACA,kBAAA,CACA,qBAAA,CACA,iBAAA,CAEA,oDACC,gBAAA,CACA,iBAAA,CACA,UAAA,CACA,WAAA,CAGD,+BACC,gBAAA,CAEA,4CACC,SAAA,CAGD,qCACC,UAAA,CACA,QAAA,CAGF,+CACC,+BAAA,CAGD,yBAEC,cAAA,CAMA,+BACC,WAAA,CACA,UAAA,CACA,WAAA",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.wiping {\n\tbackground-color: var(--color-background-darker);\n}\n\ntd {\n\tborder-top: 1px solid var(--color-border);\n\tmax-width: 200px;\n\twhite-space: normal;\n\tvertical-align: middle;\n\tposition: relative;\n\n\t&%icon {\n\t\toverflow: visible;\n\t\tposition: relative;\n\t\twidth: 44px;\n\t\theight: 44px;\n\t}\n\n\t&.token-name {\n\t\tpadding: 10px 6px;\n\n\t\t&.token-rename {\n\t\t\tpadding: 0;\n\t\t}\n\n\t\tinput {\n\t\t\twidth: 100%;\n\t\t\tmargin: 0;\n\t\t}\n\t}\n\t&.token-name .wiping-warning {\n\t\tcolor: var(--color-text-lighter);\n\t}\n\n\t&.more {\n\t\t@extend %icon;\n\t\tpadding: 0 10px;\n\t}\n\n\t&.client {\n\t\t@extend %icon;\n\n\t\tdiv {\n\t\t\topacity: 0.57;\n\t\t\twidth: 44px;\n\t\t\theight: 44px;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),t.Z=r},52442:function(n,t,e){var o=e(87537),i=e.n(o),a=e(23645),r=e.n(a)()(i());r.push([n.id,"table[data-v-4f8ceff3]{width:100%;min-height:50px;padding-top:5px;max-width:580px}table th[data-v-4f8ceff3]{opacity:.5;padding:10px 0}.token-list td>a.icon-more[data-v-4f8ceff3]{transition:opacity var(--animation-quick)}.token-list a.icon-more[data-v-4f8ceff3]{padding:14px;display:block;width:44px;height:44px;opacity:.5}.token-list tr:hover td>a.icon[data-v-4f8ceff3],.token-list tr td>a.icon[data-v-4f8ceff3]:focus,.token-list tr.active td>a.icon[data-v-4f8ceff3]{opacity:1}","",{version:3,sources:["webpack://./apps/settings/src/components/AuthTokenList.vue"],names:[],mappings:"AAwFA,uBACC,UAAA,CACA,eAAA,CACA,eAAA,CACA,eAAA,CAEA,0BACC,UAAA,CACA,cAAA,CAKD,4CACC,yCAAA,CAGD,yCACC,YAAA,CACA,aAAA,CACA,UAAA,CACA,WAAA,CACA,UAAA,CAIA,iJAGC,SAAA",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\ntable {\n\twidth: 100%;\n\tmin-height: 50px;\n\tpadding-top: 5px;\n\tmax-width: 580px;\n\n\tth {\n\t\topacity: .5;\n\t\tpadding: 10px 0;\n\t}\n}\n\n.token-list {\n\ttd > a.icon-more {\n\t\ttransition: opacity var(--animation-quick);\n\t}\n\n\ta.icon-more {\n\t\tpadding: 14px;\n\t\tdisplay: block;\n\t\twidth: 44px;\n\t\theight: 44px;\n\t\topacity: .5;\n\t}\n\n\ttr {\n\t\t&:hover td > a.icon,\n\t\ttd > a.icon:focus,\n\t\t&.active td > a.icon {\n\t\t\topacity: 1;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),t.Z=r},47719:function(n,t,e){var o=e(87537),i=e.n(o),a=e(23645),r=e.n(a)()(i());r.push([n.id,"#app-tokens-table tr>*:nth-child(2){padding-left:6px}#app-tokens-table tr>*:nth-child(3){text-align:right}","",{version:3,sources:["webpack://./apps/settings/src/components/AuthTokenList.vue"],names:[],mappings:"AA8HC,oCACC,gBAAA,CAGD,oCACC,gBAAA",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#app-tokens-table {\n\ttr > *:nth-child(2) {\n\t\tpadding-left: 6px;\n\t}\n\n\ttr > *:nth-child(3) {\n\t\ttext-align: right;\n\t}\n}\n"],sourceRoot:""}]),t.Z=r},97127:function(n,t,e){var o=e(87537),i=e.n(o),a=e(23645),r=e.n(a)()(i());r.push([n.id,".app-password-row[data-v-6a24fa34]{display:table-row}.app-password-row .icon[data-v-6a24fa34]{background-size:16px 16px;display:inline-block;position:relative;top:3px;margin-left:5px;margin-right:8px}.app-password-label[data-v-6a24fa34]{display:table-cell;padding-right:1em;text-align:right;vertical-align:middle}.monospaced[data-v-6a24fa34]{width:245px;font-family:monospace}.button-vue[data-v-6a24fa34]{display:inline-block;margin:3px 3px 3px 3px}","",{version:3,sources:["webpack://./apps/settings/src/components/AuthTokenSetupDialogue.vue"],names:[],mappings:"AAqLA,mCACC,iBAAA,CAEA,yCACC,yBAAA,CACA,oBAAA,CACA,iBAAA,CACA,OAAA,CACA,eAAA,CACA,gBAAA,CAKF,qCACC,kBAAA,CACA,iBAAA,CACA,gBAAA,CACA,qBAAA,CAGD,6BACC,WAAA,CACA,qBAAA,CAGD,6BACC,oBAAA,CACA,sBAAA",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.app-password-row {\n\tdisplay: table-row;\n\n\t.icon {\n\t\tbackground-size: 16px 16px;\n\t\tdisplay: inline-block;\n\t\tposition: relative;\n\t\ttop: 3px;\n\t\tmargin-left: 5px;\n\t\tmargin-right: 8px;\n\t}\n\n}\n\n.app-password-label {\n\tdisplay: table-cell;\n\tpadding-right: 1em;\n\ttext-align: right;\n\tvertical-align: middle;\n}\n\n.monospaced {\n\twidth: 245px;\n\tfont-family: monospace;\n}\n\n.button-vue{\n\tdisplay:inline-block;\n\tmargin: 3px 3px 3px 3px;\n}\n\n"],sourceRoot:""}]),t.Z=r}},o={};function i(n){var t=o[n];if(void 0!==t)return t.exports;var a=o[n]={id:n,loaded:!1,exports:{}};return e[n].call(a.exports,a,a.exports,i),a.loaded=!0,a.exports}i.m=e,i.amdD=function(){throw new Error("define cannot be used indirect")},i.amdO={},n=[],i.O=function(t,e,o,a){if(!e){var r=1/0;for(l=0;l<n.length;l++){e=n[l][0],o=n[l][1],a=n[l][2];for(var s=!0,c=0;c<e.length;c++)(!1&a||r>=a)&&Object.keys(i.O).every((function(n){return i.O[n](e[c])}))?e.splice(c--,1):(s=!1,a<r&&(r=a));if(s){n.splice(l--,1);var p=o();void 0!==p&&(t=p)}}return t}a=a||0;for(var l=n.length;l>0&&n[l-1][2]>a;l--)n[l]=n[l-1];n[l]=[e,o,a]},i.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return i.d(t,{a:t}),t},i.d=function(n,t){for(var e in t)i.o(t,e)&&!i.o(n,e)&&Object.defineProperty(n,e,{enumerable:!0,get:t[e]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),i.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},i.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},i.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n},i.j=4783,function(){i.b=document.baseURI||self.location.href;var n={4783:0};i.O.j=function(t){return 0===n[t]};var t=function(t,e){var o,a,r=e[0],s=e[1],c=e[2],p=0;if(r.some((function(t){return 0!==n[t]}))){for(o in s)i.o(s,o)&&(i.m[o]=s[o]);if(c)var l=c(i)}for(t&&t(e);p<r.length;p++)a=r[p],i.o(n,a)&&n[a]&&n[a][0](),n[a]=0;return i.O(l)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(t.bind(null,0)),e.push=t.bind(null,e.push.bind(e))}();var a=i.O(void 0,[7874],(function(){return i(68680)}));a=i.O(a)}();
-//# sourceMappingURL=settings-vue-settings-personal-security.js.map?v=7805e60d140683b86204 \ No newline at end of file
+!function(){"use strict";var n,e={68680:function(n,e,o){var i=o(16453),a=o(20144),r=o(72268),s=o.n(r),c=o(34741),p=o(4820),l=o(10128),d=o.n(l),u=o(79753),A=o(33476),h={ie:/(?:MSIE|Trident|Trident\/7.0; rv)[ :](\d+)/,edge:/^Mozilla\/5\.0 \([^)]+\) AppleWebKit\/[0-9.]+ \(KHTML, like Gecko\) Chrome\/[0-9.]+ (?:Mobile Safari|Safari)\/[0-9.]+ Edge\/[0-9.]+$/,firefox:/^Mozilla\/5\.0 \([^)]*(Windows|OS X|Linux)[^)]+\) Gecko\/[0-9.]+ Firefox\/(\d+)(?:\.\d)?$/,chrome:/^Mozilla\/5\.0 \([^)]*(Windows|OS X|Linux)[^)]+\) AppleWebKit\/[0-9.]+ \(KHTML, like Gecko\) Chrome\/(\d+)[0-9.]+ (?:Mobile Safari|Safari)\/[0-9.]+$/,safari:/^Mozilla\/5\.0 \([^)]*(Windows|OS X)[^)]+\) AppleWebKit\/[0-9.]+ \(KHTML, like Gecko\)(?: Version\/([0-9]+)[0-9.]+)? Safari\/[0-9.A-Z]+$/,androidChrome:/Android.*(?:; (.*) Build\/).*Chrome\/(\d+)[0-9.]+/,iphone:/ *CPU +iPhone +OS +([0-9]+)_(?:[0-9_])+ +like +Mac +OS +X */,ipad:/\(iPad; *CPU +OS +([0-9]+)_(?:[0-9_])+ +like +Mac +OS +X */,iosClient:/^Mozilla\/5\.0 \(iOS\) (?:ownCloud|Nextcloud)-iOS.*$/,androidClient:/^Mozilla\/5\.0 \(Android\) (?:ownCloud|Nextcloud)-android.*$/,iosTalkClient:/^Mozilla\/5\.0 \(iOS\) Nextcloud-Talk.*$/,androidTalkClient:/^Mozilla\/5\.0 \(Android\) Nextcloud-Talk.*$/,davx5:/DAV(?:droid|x5)\/([^ ]+)/,webPirate:/(Sailfish).*WebPirate\/(\d+)/,sailfishBrowser:/(Sailfish).*SailfishBrowser\/(\d+)/},f={ie:t("setting","Internet Explorer"),edge:t("setting","Edge"),firefox:t("setting","Firefox"),chrome:t("setting","Google Chrome"),safari:t("setting","Safari"),androidChrome:t("setting","Google Chrome for Android"),iphone:t("setting","iPhone"),ipad:t("setting","iPad"),iosClient:t("setting","{productName} iOS app",{productName:window.oc_defaults.productName}),androidClient:t("setting","{productName} Android app",{productName:window.oc_defaults.productName}),iosTalkClient:t("setting","{productName} Talk for iOS",{productName:window.oc_defaults.productName}),androidTalkClient:t("setting","{productName} Talk for Android",{productName:window.oc_defaults.productName}),davx5:"DAVx5",webPirate:"WebPirate",sailfishBrowser:"SailfishBrowser"},m={ie:"icon-desktop",edge:"icon-desktop",firefox:"icon-desktop",chrome:"icon-desktop",safari:"icon-desktop",androidChrome:"icon-phone",iphone:"icon-phone",ipad:"icon-tablet",iosClient:"icon-phone",androidClient:"icon-phone",iosTalkClient:"icon-phone",androidTalkClient:"icon-phone",davx5:"icon-phone",webPirate:"icon-link",sailfishBrowser:"icon-link"},g={name:"AuthToken",components:{Actions:A.Actions,ActionButton:A.ActionButton,ActionCheckbox:A.ActionCheckbox},props:{token:{type:Object,required:!0}},data:function(){return{showMore:this.token.canScope||this.token.canDelete,renaming:!1,newName:"",actionOpen:!1}},computed:{lastActivityRelative:function(){return OC.Util.relativeModifiedDate(1e3*this.token.lastActivity)},lastActivity:function(){return OC.Util.formatDate(1e3*this.token.lastActivity,"LLL")},iconName:function(){var n=this.token.name.match(/Mozilla\/5\.0 \((\w+)\) (?:mirall|csyncoC)\/(\d+\.\d+\.\d+)/),e="";n&&(this.token.name=t("settings","Sync client - {os}",{os:n[1],version:n[2]}),e="icon-desktop");var o=this.token.name,i=this.token.name;for(var a in h){var r=o.match(h[a]);r&&(i=r[2]&&r[1]?f[a]+" "+r[2]+" - "+r[1]:r[1]?f[a]+" "+r[1]:f[a],e=m[a])}return this.token.current&&(i=t("settings","This session")),{icon:e,name:i}},wiping:function(){return 2===this.token.type}},methods:{startRename:function(){var n=this;this.actionOpen=!1,this.newName=this.token.name,this.renaming=!0,this.$nextTick((function(){n.$refs.input.select()}))},cancelRename:function(){this.renaming=!1},revoke:function(){this.actionOpen=!1,this.$emit("delete",this.token)},rename:function(){this.renaming=!1,this.$emit("rename",this.token,this.newName)},wipe:function(){this.actionOpen=!1,this.$emit("wipe",this.token)}}},v=o(93379),C=o.n(v),k=o(7795),w=o.n(k),y=o(90569),b=o.n(y),x=o(3565),_=o.n(x),T=o(19216),O=o.n(T),N=o(44589),P=o.n(N),B=o(16010),S={};S.styleTagTransform=P(),S.setAttributes=_(),S.insert=b().bind(null,"head"),S.domAPI=w(),S.insertStyleElement=O(),C()(B.Z,S),B.Z&&B.Z.locals&&B.Z.locals;var D=o(51900),E=(0,D.Z)(g,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("tr",{class:n.wiping,attrs:{"data-id":n.token.id}},[e("td",{staticClass:"client"},[e("div",{class:n.iconName.icon})]),n._v(" "),e("td",{staticClass:"token-name"},[n.token.canRename&&n.renaming?e("input",{directives:[{name:"model",rawName:"v-model",value:n.newName,expression:"newName"}],ref:"input",attrs:{type:"text"},domProps:{value:n.newName},on:{keyup:[function(t){return!t.type.indexOf("key")&&n._k(t.keyCode,"enter",13,t.key,"Enter")?null:n.rename.apply(null,arguments)},function(t){return!t.type.indexOf("key")&&n._k(t.keyCode,"esc",27,t.key,["Esc","Escape"])?null:n.cancelRename.apply(null,arguments)}],blur:n.cancelRename,input:function(t){t.target.composing||(n.newName=t.target.value)}}}):e("span",[n._v(n._s(n.iconName.name))]),n._v(" "),n.wiping?e("span",{staticClass:"wiping-warning"},[n._v("("+n._s(n.t("settings","Marked for remote wipe"))+")")]):n._e()]),n._v(" "),e("td",[e("span",{directives:[{name:"tooltip",rawName:"v-tooltip",value:n.lastActivity,expression:"lastActivity"}],staticClass:"last-activity"},[n._v(n._s(n.lastActivityRelative))])]),n._v(" "),e("td",{staticClass:"more"},[n.token.current?n._e():e("Actions",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.t("settings","Device settings"),container:"body"},expression:"{\n\t\t\t\tcontent: t('settings', 'Device settings'),\n\t\t\t\tcontainer: 'body'\n\t\t\t}",modifiers:{auto:!0}}],attrs:{open:n.actionOpen},on:{"update:open":function(t){n.actionOpen=t}}},[1===n.token.type?e("ActionCheckbox",{attrs:{checked:n.token.scope.filesystem},on:{change:function(t){return t.stopPropagation(),t.preventDefault(),n.$emit("toggle-scope",n.token,"filesystem",!n.token.scope.filesystem)}}},[n._v("\n\t\t\t\t"+n._s(n.t("settings","Allow filesystem access"))+"\n\t\t\t")]):n._e(),n._v(" "),n.token.canRename?e("ActionButton",{attrs:{icon:"icon-rename"},on:{click:function(t){return t.stopPropagation(),t.preventDefault(),n.startRename.apply(null,arguments)}}},[n._v("\n\t\t\t\t"+n._s(n.t("settings","Rename"))+"\n\t\t\t")]):n._e(),n._v(" "),n.token.canDelete?[2!==n.token.type?[e("ActionButton",{attrs:{icon:"icon-delete"},on:{click:function(t){return t.stopPropagation(),t.preventDefault(),n.revoke.apply(null,arguments)}}},[n._v("\n\t\t\t\t\t\t"+n._s(n.t("settings","Revoke"))+"\n\t\t\t\t\t")]),n._v(" "),e("ActionButton",{attrs:{icon:"icon-delete"},on:{click:function(t){return t.stopPropagation(),t.preventDefault(),n.wipe.apply(null,arguments)}}},[n._v("\n\t\t\t\t\t\t"+n._s(n.t("settings","Wipe device"))+"\n\t\t\t\t\t")])]:2===n.token.type?e("ActionButton",{attrs:{icon:"icon-delete",title:n.t("settings","Revoke")},on:{click:function(t){return t.stopPropagation(),t.preventDefault(),n.revoke.apply(null,arguments)}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("settings","Revoking this token might prevent the wiping of your device if it has not started the wipe yet."))+"\n\t\t\t\t")]):n._e()]:n._e()],2)],1)])}),[],!1,null,"1c8c3140",null),R={name:"AuthTokenList",components:{AuthToken:E.exports},props:{tokens:{type:Array,required:!0}},computed:{sortedTokens:function(){return this.tokens.slice().sort((function(n,t){var e=parseInt(n.lastActivity,10);return parseInt(t.lastActivity,10)-e}))}},methods:{toggleScope:function(n,t,e){this.$emit("toggle-scope",n,t,e)},rename:function(n,t){this.$emit("rename",n,t)},onDelete:function(n){this.$emit("delete",n)},onWipe:function(n){this.$emit("wipe",n)}}},$=o(52442),U={};U.styleTagTransform=P(),U.setAttributes=_(),U.insert=b().bind(null,"head"),U.domAPI=w(),U.insertStyleElement=O(),C()($.Z,U),$.Z&&$.Z.locals&&$.Z.locals;var Z=o(47719),M={};M.styleTagTransform=P(),M.setAttributes=_(),M.insert=b().bind(null,"head"),M.domAPI=w(),M.insertStyleElement=O(),C()(Z.Z,M),Z.Z&&Z.Z.locals&&Z.Z.locals;var j=(0,D.Z)(R,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("table",{attrs:{id:"app-tokens-table"}},[n.tokens.length?e("thead",[e("tr",[e("th"),n._v(" "),e("th",[n._v(n._s(n.t("settings","Device")))]),n._v(" "),e("th",[n._v(n._s(n.t("settings","Last activity")))]),n._v(" "),e("th")])]):n._e(),n._v(" "),e("tbody",{staticClass:"token-list"},n._l(n.sortedTokens,(function(t){return e("AuthToken",{key:t.id,attrs:{token:t},on:{"toggle-scope":n.toggleScope,rename:n.rename,delete:n.onDelete,wipe:n.onWipe}})})),1)])}),[],!1,null,"4f8ceff3",null).exports,q=o(147),W=o.n(q),G=o(1412),L=o.n(G);function I(n,t){var e=Object.keys(n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(n);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable}))),e.push.apply(e,o)}return e}function z(n){for(var t=1;t<arguments.length;t++){var e=null!=arguments[t]?arguments[t]:{};t%2?I(Object(e),!0).forEach((function(t){F(n,t,e[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(e)):I(Object(e)).forEach((function(t){Object.defineProperty(n,t,Object.getOwnPropertyDescriptor(e,t))}))}return n}function F(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}var Q={name:"AuthTokenSetupDialogue",components:{QR:W(),Button:L()},props:{add:{type:Function,required:!0}},data:function(){return{adding:!1,loading:!1,deviceName:"",appPassword:"",loginName:"",passwordCopied:!1,showQR:!1,qrUrl:"",hoveringCopyButton:!1}},computed:{copyTooltipOptions:function(){var n={hideOnTargetClick:!1,trigger:"manual"};return this.passwordCopied?z(z({},n),{},{content:t("settings","Copied!"),show:!0}):z(z({},n),{},{content:t("settings","Copy"),show:this.hoveringCopyButton})}},methods:{selectInput:function(n){n.currentTarget.select()},submit:function(){var n=this;d()().then((function(){return n.loading=!0,n.add(n.deviceName)})).then((function(t){n.adding=!0,n.loginName=t.loginName,n.appPassword=t.token;var e=window.location.protocol+"//"+window.location.host+(0,u.getRootUrl)();n.qrUrl="nc://login/user:".concat(t.loginName,"&password:").concat(t.token,"&server:").concat(e),n.$nextTick((function(){n.$refs.appPassword.select()}))})).catch((function(e){console.error("could not create a new app password",e),OC.Notification.showTemporary(t("settings","Error while creating device token")),n.reset()}))},onCopyPassword:function(){var n=this;this.passwordCopied=!0,this.$refs.clipboardButton.blur(),setTimeout((function(){n.passwordCopied=!1}),3e3)},onCopyPasswordFailed:function(){OC.Notification.showTemporary(t("settings","Could not copy app password. Please copy it manually."))},reset:function(){this.adding=!1,this.loading=!1,this.showQR=!1,this.qrUrl="",this.deviceName="",this.appPassword="",this.loginName=""}}},K=o(97127),H={};H.styleTagTransform=P(),H.setAttributes=_(),H.insert=b().bind(null,"head"),H.domAPI=w(),H.insertStyleElement=O(),C()(K.Z,H),K.Z&&K.Z.locals&&K.Z.locals;var X=(0,D.Z)(Q,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return n.adding?e("div",[n._v("\n\t"+n._s(n.t("settings","Use the credentials below to configure your app or device."))+"\n\t"+n._s(n.t("settings","For security reasons this password will only be shown once."))+"\n\t"),e("div",{staticClass:"app-password-row"},[e("span",{staticClass:"app-password-label"},[n._v(n._s(n.t("settings","Username")))]),n._v(" "),e("input",{staticClass:"monospaced",attrs:{type:"text",readonly:"readonly"},domProps:{value:n.loginName},on:{focus:n.selectInput}})]),n._v(" "),e("div",{staticClass:"app-password-row"},[e("span",{staticClass:"app-password-label"},[n._v(n._s(n.t("settings","Password")))]),n._v(" "),e("input",{ref:"appPassword",staticClass:"monospaced",attrs:{type:"text",readonly:"readonly"},domProps:{value:n.appPassword},on:{focus:n.selectInput}}),n._v(" "),e("a",{directives:[{name:"tooltip",rawName:"v-tooltip",value:n.copyTooltipOptions,expression:"copyTooltipOptions"},{name:"clipboard",rawName:"v-clipboard:copy",value:n.appPassword,expression:"appPassword",arg:"copy"},{name:"clipboard",rawName:"v-clipboard:success",value:n.onCopyPassword,expression:"onCopyPassword",arg:"success"},{name:"clipboard",rawName:"v-clipboard:error",value:n.onCopyPasswordFailed,expression:"onCopyPasswordFailed",arg:"error"}],ref:"clipboardButton",staticClass:"icon icon-clippy",on:{mouseover:function(t){n.hoveringCopyButton=!0},mouseleave:function(t){n.hoveringCopyButton=!1}}}),n._v(" "),e("Button",{on:{click:n.reset}},[n._v("\n\t\t\t"+n._s(n.t("settings","Done"))+"\n\t\t")])],1),n._v(" "),e("div",{staticClass:"app-password-row"},[e("span",{staticClass:"app-password-label"}),n._v(" "),n.showQR?e("QR",{attrs:{value:n.qrUrl}}):e("a",{on:{click:function(t){n.showQR=!0}}},[n._v("\n\t\t\t"+n._s(n.t("settings","Show QR code for mobile apps"))+"\n\t\t")])],1)]):e("div",[e("input",{directives:[{name:"model",rawName:"v-model",value:n.deviceName,expression:"deviceName"}],attrs:{type:"text",maxlength:120,disabled:n.loading,placeholder:n.t("settings","App name")},domProps:{value:n.deviceName},on:{keydown:function(t){return!t.type.indexOf("key")&&n._k(t.keyCode,"enter",13,t.key,"Enter")?null:n.submit.apply(null,arguments)},input:function(t){t.target.composing||(n.deviceName=t.target.value)}}}),n._v(" "),e("Button",{attrs:{disabled:n.loading},on:{click:n.submit}},[n._v("\n\t\t"+n._s(n.t("settings","Create new app password"))+"\n\t")])],1)}),[],!1,null,"6a24fa34",null),V=X.exports;function J(n,t,e,o,i,a,r){try{var s=n[a](r),c=s.value}catch(n){return void e(n)}s.done?t(c):Promise.resolve(c).then(o,i)}var Y=function(n){return function(t){return n(t),t}},nn={name:"AuthTokenSection",components:{AuthTokenSetupDialogue:V,AuthTokenList:j},props:{tokens:{type:Array,required:!0},canCreateToken:{type:Boolean,required:!0}},data:function(){return{baseUrl:(0,u.generateUrl)("/settings/personal/authtokens")}},methods:{addNewToken:function(n){var e=this;console.debug("creating a new app token",n);var o={name:n};return p.default.post(this.baseUrl,o).then((function(n){return n.data})).then(Y((function(){return console.debug("app token created")}))).then(Y((function(n){return e.tokens.push(n.deviceToken)}))).catch((function(n){throw console.error.bind("could not create app password",n),OC.Notification.showTemporary(t("settings","Error while creating device token")),n}))},toggleTokenScope:function(n,e,o){console.debug("updating app token scope",n.id,e,o);var i=n.scope[e];return n.scope[e]=o,this.updateToken(n).then(Y((function(){return console.debug("app token scope updated")}))).catch((function(o){throw console.error.bind("could not update app token scope",o),OC.Notification.showTemporary(t("settings","Error while updating device token scope")),n.scope[e]=i,o}))},rename:function(n,e){console.debug("renaming app token",n.id,n.name,e);var o=n.name;return n.name=e,this.updateToken(n).then(Y((function(){return console.debug("app token name updated")}))).catch((function(e){console.error.bind("could not update app token name",e),OC.Notification.showTemporary(t("settings","Error while updating device token name")),n.name=o}))},updateToken:function(n){return p.default.put(this.baseUrl+"/"+n.id,n).then((function(n){return n.data}))},deleteToken:function(n){var e=this;return console.debug("deleting app token",n),this.tokens=this.tokens.filter((function(t){return t!==n})),p.default.delete(this.baseUrl+"/"+n.id).then((function(n){return n.data})).then(Y((function(){return console.debug("app token deleted")}))).catch((function(o){console.error.bind("could not delete app token",o),OC.Notification.showTemporary(t("settings","Error while deleting the token")),e.tokens.push(n)}))},wipeToken:function(n){var e,o=this;return(e=regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return console.debug("wiping app token",n),e.prev=1,e.next=4,d()();case 4:return e.next=6,new Promise((function(n){OC.dialogs.confirm(t("settings","Do you really want to wipe your data from this device?"),t("settings","Confirm wipe"),n,!0)}));case 6:if(e.sent){e.next=9;break}return console.debug("wipe aborted by user"),e.abrupt("return");case 9:return e.next=11,p.default.post(o.baseUrl+"/wipe/"+n.id);case 11:console.debug("app token marked for wipe"),n.type=2,e.next=19;break;case 15:e.prev=15,e.t0=e.catch(1),console.error("could not wipe app token",e.t0),OC.Notification.showTemporary(t("settings","Error while wiping the device with the token"));case 19:case"end":return e.stop()}}),e,null,[[1,15]])})),function(){var n=this,t=arguments;return new Promise((function(o,i){var a=e.apply(n,t);function r(n){J(a,o,i,r,s,"next",n)}function s(n){J(a,o,i,r,s,"throw",n)}r(void 0)}))})()}}},tn=nn,en=(0,D.Z)(tn,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"section",attrs:{id:"security"}},[e("h2",[n._v(n._s(n.t("settings","Devices & sessions",{},void 0,{sanitize:!1})))]),n._v(" "),e("p",{staticClass:"settings-hint hidden-when-empty"},[n._v("\n\t\t"+n._s(n.t("settings","Web, desktop and mobile clients currently logged in to your account."))+"\n\t")]),n._v(" "),e("AuthTokenList",{attrs:{tokens:n.tokens},on:{"toggle-scope":n.toggleTokenScope,rename:n.rename,delete:n.deleteToken,wipe:n.wipeToken}}),n._v(" "),n.canCreateToken?e("AuthTokenSetupDialogue",{attrs:{add:n.addNewToken}}):n._e()],1)}),[],!1,null,"451cdc4a",null).exports;o.nc=btoa(OC.requestToken),a.default.use(s()),a.default.use(c.default,{defaultHtml:!1}),a.default.prototype.t=t,new(a.default.extend(en))({propsData:{tokens:(0,i.loadState)("settings","app_tokens"),canCreateToken:(0,i.loadState)("settings","can_create_app_token")}}).$mount("#security-authtokens")},16010:function(n,t,e){var o=e(87537),i=e.n(o),a=e(23645),r=e.n(a)()(i());r.push([n.id,".wiping[data-v-1c8c3140]{background-color:var(--color-background-darker)}td[data-v-1c8c3140]{border-top:1px solid var(--color-border);max-width:200px;white-space:normal;vertical-align:middle;position:relative}td.client[data-v-1c8c3140],td.more[data-v-1c8c3140]{overflow:visible;position:relative;width:44px;height:44px}td.token-name[data-v-1c8c3140]{padding:10px 6px}td.token-name.token-rename[data-v-1c8c3140]{padding:0}td.token-name input[data-v-1c8c3140]{width:100%;margin:0}td.token-name .wiping-warning[data-v-1c8c3140]{color:var(--color-text-lighter)}td.more[data-v-1c8c3140]{padding:0 10px}td.client div[data-v-1c8c3140]{opacity:.57;width:44px;height:44px}","",{version:3,sources:["webpack://./apps/settings/src/components/AuthToken.vue"],names:[],mappings:"AAiQA,yBACC,+CAAA,CAGD,oBACC,wCAAA,CACA,eAAA,CACA,kBAAA,CACA,qBAAA,CACA,iBAAA,CAEA,oDACC,gBAAA,CACA,iBAAA,CACA,UAAA,CACA,WAAA,CAGD,+BACC,gBAAA,CAEA,4CACC,SAAA,CAGD,qCACC,UAAA,CACA,QAAA,CAGF,+CACC,+BAAA,CAGD,yBAEC,cAAA,CAMA,+BACC,WAAA,CACA,UAAA,CACA,WAAA",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.wiping {\n\tbackground-color: var(--color-background-darker);\n}\n\ntd {\n\tborder-top: 1px solid var(--color-border);\n\tmax-width: 200px;\n\twhite-space: normal;\n\tvertical-align: middle;\n\tposition: relative;\n\n\t&%icon {\n\t\toverflow: visible;\n\t\tposition: relative;\n\t\twidth: 44px;\n\t\theight: 44px;\n\t}\n\n\t&.token-name {\n\t\tpadding: 10px 6px;\n\n\t\t&.token-rename {\n\t\t\tpadding: 0;\n\t\t}\n\n\t\tinput {\n\t\t\twidth: 100%;\n\t\t\tmargin: 0;\n\t\t}\n\t}\n\t&.token-name .wiping-warning {\n\t\tcolor: var(--color-text-lighter);\n\t}\n\n\t&.more {\n\t\t@extend %icon;\n\t\tpadding: 0 10px;\n\t}\n\n\t&.client {\n\t\t@extend %icon;\n\n\t\tdiv {\n\t\t\topacity: 0.57;\n\t\t\twidth: 44px;\n\t\t\theight: 44px;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),t.Z=r},52442:function(n,t,e){var o=e(87537),i=e.n(o),a=e(23645),r=e.n(a)()(i());r.push([n.id,"table[data-v-4f8ceff3]{width:100%;min-height:50px;padding-top:5px;max-width:580px}table th[data-v-4f8ceff3]{opacity:.5;padding:10px 0}.token-list td>a.icon-more[data-v-4f8ceff3]{transition:opacity var(--animation-quick)}.token-list a.icon-more[data-v-4f8ceff3]{padding:14px;display:block;width:44px;height:44px;opacity:.5}.token-list tr:hover td>a.icon[data-v-4f8ceff3],.token-list tr td>a.icon[data-v-4f8ceff3]:focus,.token-list tr.active td>a.icon[data-v-4f8ceff3]{opacity:1}","",{version:3,sources:["webpack://./apps/settings/src/components/AuthTokenList.vue"],names:[],mappings:"AAwFA,uBACC,UAAA,CACA,eAAA,CACA,eAAA,CACA,eAAA,CAEA,0BACC,UAAA,CACA,cAAA,CAKD,4CACC,yCAAA,CAGD,yCACC,YAAA,CACA,aAAA,CACA,UAAA,CACA,WAAA,CACA,UAAA,CAIA,iJAGC,SAAA",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\ntable {\n\twidth: 100%;\n\tmin-height: 50px;\n\tpadding-top: 5px;\n\tmax-width: 580px;\n\n\tth {\n\t\topacity: .5;\n\t\tpadding: 10px 0;\n\t}\n}\n\n.token-list {\n\ttd > a.icon-more {\n\t\ttransition: opacity var(--animation-quick);\n\t}\n\n\ta.icon-more {\n\t\tpadding: 14px;\n\t\tdisplay: block;\n\t\twidth: 44px;\n\t\theight: 44px;\n\t\topacity: .5;\n\t}\n\n\ttr {\n\t\t&:hover td > a.icon,\n\t\ttd > a.icon:focus,\n\t\t&.active td > a.icon {\n\t\t\topacity: 1;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),t.Z=r},47719:function(n,t,e){var o=e(87537),i=e.n(o),a=e(23645),r=e.n(a)()(i());r.push([n.id,"#app-tokens-table tr>*:nth-child(2){padding-left:6px}#app-tokens-table tr>*:nth-child(3){text-align:right}","",{version:3,sources:["webpack://./apps/settings/src/components/AuthTokenList.vue"],names:[],mappings:"AA8HC,oCACC,gBAAA,CAGD,oCACC,gBAAA",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#app-tokens-table {\n\ttr > *:nth-child(2) {\n\t\tpadding-left: 6px;\n\t}\n\n\ttr > *:nth-child(3) {\n\t\ttext-align: right;\n\t}\n}\n"],sourceRoot:""}]),t.Z=r},97127:function(n,t,e){var o=e(87537),i=e.n(o),a=e(23645),r=e.n(a)()(i());r.push([n.id,".app-password-row[data-v-6a24fa34]{display:table-row}.app-password-row .icon[data-v-6a24fa34]{background-size:16px 16px;display:inline-block;position:relative;top:3px;margin-left:5px;margin-right:8px}.app-password-label[data-v-6a24fa34]{display:table-cell;padding-right:1em;text-align:right;vertical-align:middle}.monospaced[data-v-6a24fa34]{width:245px;font-family:monospace}.button-vue[data-v-6a24fa34]{display:inline-block;margin:3px 3px 3px 3px}","",{version:3,sources:["webpack://./apps/settings/src/components/AuthTokenSetupDialogue.vue"],names:[],mappings:"AAqLA,mCACC,iBAAA,CAEA,yCACC,yBAAA,CACA,oBAAA,CACA,iBAAA,CACA,OAAA,CACA,eAAA,CACA,gBAAA,CAKF,qCACC,kBAAA,CACA,iBAAA,CACA,gBAAA,CACA,qBAAA,CAGD,6BACC,WAAA,CACA,qBAAA,CAGD,6BACC,oBAAA,CACA,sBAAA",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.app-password-row {\n\tdisplay: table-row;\n\n\t.icon {\n\t\tbackground-size: 16px 16px;\n\t\tdisplay: inline-block;\n\t\tposition: relative;\n\t\ttop: 3px;\n\t\tmargin-left: 5px;\n\t\tmargin-right: 8px;\n\t}\n\n}\n\n.app-password-label {\n\tdisplay: table-cell;\n\tpadding-right: 1em;\n\ttext-align: right;\n\tvertical-align: middle;\n}\n\n.monospaced {\n\twidth: 245px;\n\tfont-family: monospace;\n}\n\n.button-vue{\n\tdisplay:inline-block;\n\tmargin: 3px 3px 3px 3px;\n}\n\n"],sourceRoot:""}]),t.Z=r}},o={};function i(n){var t=o[n];if(void 0!==t)return t.exports;var a=o[n]={id:n,loaded:!1,exports:{}};return e[n].call(a.exports,a,a.exports,i),a.loaded=!0,a.exports}i.m=e,i.amdD=function(){throw new Error("define cannot be used indirect")},i.amdO={},n=[],i.O=function(t,e,o,a){if(!e){var r=1/0;for(l=0;l<n.length;l++){e=n[l][0],o=n[l][1],a=n[l][2];for(var s=!0,c=0;c<e.length;c++)(!1&a||r>=a)&&Object.keys(i.O).every((function(n){return i.O[n](e[c])}))?e.splice(c--,1):(s=!1,a<r&&(r=a));if(s){n.splice(l--,1);var p=o();void 0!==p&&(t=p)}}return t}a=a||0;for(var l=n.length;l>0&&n[l-1][2]>a;l--)n[l]=n[l-1];n[l]=[e,o,a]},i.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return i.d(t,{a:t}),t},i.d=function(n,t){for(var e in t)i.o(t,e)&&!i.o(n,e)&&Object.defineProperty(n,e,{enumerable:!0,get:t[e]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),i.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},i.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},i.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n},i.j=4783,function(){i.b=document.baseURI||self.location.href;var n={4783:0};i.O.j=function(t){return 0===n[t]};var t=function(t,e){var o,a,r=e[0],s=e[1],c=e[2],p=0;if(r.some((function(t){return 0!==n[t]}))){for(o in s)i.o(s,o)&&(i.m[o]=s[o]);if(c)var l=c(i)}for(t&&t(e);p<r.length;p++)a=r[p],i.o(n,a)&&n[a]&&n[a][0](),n[a]=0;return i.O(l)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(t.bind(null,0)),e.push=t.bind(null,e.push.bind(e))}(),i.nc=void 0;var a=i.O(void 0,[7874],(function(){return i(68680)}));a=i.O(a)}();
+//# sourceMappingURL=settings-vue-settings-personal-security.js.map?v=c9e73c88534be44180a8 \ No newline at end of file
diff --git a/dist/settings-vue-settings-personal-security.js.map b/dist/settings-vue-settings-personal-security.js.map
index 4759f36ebc6..681863fee2b 100644
--- a/dist/settings-vue-settings-personal-security.js.map
+++ b/dist/settings-vue-settings-personal-security.js.map
@@ -1 +1 @@
-{"version":3,"file":"settings-vue-settings-personal-security.js?v=7805e60d140683b86204","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/settings/src/components/AuthToken.vue","webpack:///nextcloud/apps/settings/src/components/AuthToken.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/AuthToken.vue?9f62","webpack://nextcloud/./apps/settings/src/components/AuthToken.vue?1338","webpack:///nextcloud/apps/settings/src/components/AuthToken.vue?vue&type=template&id=1c8c3140&scoped=true&","webpack:///nextcloud/apps/settings/src/components/AuthTokenList.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/AuthTokenList.vue","webpack://nextcloud/./apps/settings/src/components/AuthTokenList.vue?f7c9","webpack://nextcloud/./apps/settings/src/components/AuthTokenList.vue?515d","webpack://nextcloud/./apps/settings/src/components/AuthTokenList.vue?90cb","webpack:///nextcloud/apps/settings/src/components/AuthTokenList.vue?vue&type=template&id=4f8ceff3&scoped=true&","webpack:///nextcloud/apps/settings/src/components/AuthTokenSetupDialogue.vue","webpack:///nextcloud/apps/settings/src/components/AuthTokenSetupDialogue.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/AuthTokenSetupDialogue.vue?e711","webpack://nextcloud/./apps/settings/src/components/AuthTokenSetupDialogue.vue?521c","webpack:///nextcloud/apps/settings/src/components/AuthTokenSetupDialogue.vue?vue&type=template&id=6a24fa34&scoped=true&","webpack:///nextcloud/apps/settings/src/components/AuthTokenSection.vue","webpack:///nextcloud/apps/settings/src/components/AuthTokenSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/AuthTokenSection.vue?e9d0","webpack:///nextcloud/apps/settings/src/components/AuthTokenSection.vue?vue&type=template&id=451cdc4a&scoped=true&","webpack:///nextcloud/apps/settings/src/main-personal-security.js","webpack:///nextcloud/apps/settings/src/components/AuthToken.vue?vue&type=style&index=0&id=1c8c3140&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/AuthTokenList.vue?vue&type=style&index=0&id=4f8ceff3&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/AuthTokenList.vue?vue&type=style&index=1&lang=scss&","webpack:///nextcloud/apps/settings/src/components/AuthTokenSetupDialogue.vue?vue&type=style&index=0&id=6a24fa34&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 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\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\n<template>\n\t<tr :data-id=\"token.id\"\n\t\t:class=\"wiping\">\n\t\t<td class=\"client\">\n\t\t\t<div :class=\"iconName.icon\" />\n\t\t</td>\n\t\t<td class=\"token-name\">\n\t\t\t<input v-if=\"token.canRename && renaming\"\n\t\t\t\tref=\"input\"\n\t\t\t\tv-model=\"newName\"\n\t\t\t\ttype=\"text\"\n\t\t\t\t@keyup.enter=\"rename\"\n\t\t\t\t@blur=\"cancelRename\"\n\t\t\t\t@keyup.esc=\"cancelRename\">\n\t\t\t<span v-else>{{ iconName.name }}</span>\n\t\t\t<span v-if=\"wiping\" class=\"wiping-warning\">({{ t('settings', 'Marked for remote wipe') }})</span>\n\t\t</td>\n\t\t<td>\n\t\t\t<span v-tooltip=\"lastActivity\" class=\"last-activity\">{{ lastActivityRelative }}</span>\n\t\t</td>\n\t\t<td class=\"more\">\n\t\t\t<Actions v-if=\"!token.current\"\n\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\tcontent: t('settings', 'Device settings'),\n\t\t\t\t\tcontainer: 'body'\n\t\t\t\t}\"\n\t\t\t\t:open.sync=\"actionOpen\">\n\t\t\t\t<ActionCheckbox v-if=\"token.type === 1\"\n\t\t\t\t\t:checked=\"token.scope.filesystem\"\n\t\t\t\t\t@change.stop.prevent=\"$emit('toggle-scope', token, 'filesystem', !token.scope.filesystem)\">\n\t\t\t\t\t<!-- TODO: add text/longtext with some description -->\n\t\t\t\t\t{{ t('settings', 'Allow filesystem access') }}\n\t\t\t\t</ActionCheckbox>\n\t\t\t\t<ActionButton v-if=\"token.canRename\"\n\t\t\t\t\ticon=\"icon-rename\"\n\t\t\t\t\t@click.stop.prevent=\"startRename\">\n\t\t\t\t\t<!-- TODO: add text/longtext with some description -->\n\t\t\t\t\t{{ t('settings', 'Rename') }}\n\t\t\t\t</ActionButton>\n\n\t\t\t\t<!-- revoke & wipe -->\n\t\t\t\t<template v-if=\"token.canDelete\">\n\t\t\t\t\t<template v-if=\"token.type !== 2\">\n\t\t\t\t\t\t<ActionButton icon=\"icon-delete\"\n\t\t\t\t\t\t\t@click.stop.prevent=\"revoke\">\n\t\t\t\t\t\t\t<!-- TODO: add text/longtext with some description -->\n\t\t\t\t\t\t\t{{ t('settings', 'Revoke') }}\n\t\t\t\t\t\t</ActionButton>\n\t\t\t\t\t\t<ActionButton icon=\"icon-delete\"\n\t\t\t\t\t\t\t@click.stop.prevent=\"wipe\">\n\t\t\t\t\t\t\t{{ t('settings', 'Wipe device') }}\n\t\t\t\t\t\t</ActionButton>\n\t\t\t\t\t</template>\n\t\t\t\t\t<ActionButton v-else-if=\"token.type === 2\"\n\t\t\t\t\t\ticon=\"icon-delete\"\n\t\t\t\t\t\t:title=\"t('settings', 'Revoke')\"\n\t\t\t\t\t\t@click.stop.prevent=\"revoke\">\n\t\t\t\t\t\t{{ t('settings', 'Revoking this token might prevent the wiping of your device if it has not started the wipe yet.') }}\n\t\t\t\t\t</ActionButton>\n\t\t\t\t</template>\n\t\t\t</Actions>\n\t\t</td>\n\t</tr>\n</template>\n\n<script>\nimport {\n\tActions,\n\tActionButton,\n\tActionCheckbox,\n} from '@nextcloud/vue'\n\n// When using capture groups the following parts are extracted the first is used as the version number, the second as the OS\nconst userAgentMap = {\n\tie: /(?:MSIE|Trident|Trident\\/7.0; rv)[ :](\\d+)/,\n\t// Microsoft Edge User Agent from https://msdn.microsoft.com/en-us/library/hh869301(v=vs.85).aspx\n\tedge: /^Mozilla\\/5\\.0 \\([^)]+\\) AppleWebKit\\/[0-9.]+ \\(KHTML, like Gecko\\) Chrome\\/[0-9.]+ (?:Mobile Safari|Safari)\\/[0-9.]+ Edge\\/[0-9.]+$/,\n\t// Firefox User Agent from https://developer.mozilla.org/en-US/docs/Web/HTTP/Gecko_user_agent_string_reference\n\tfirefox: /^Mozilla\\/5\\.0 \\([^)]*(Windows|OS X|Linux)[^)]+\\) Gecko\\/[0-9.]+ Firefox\\/(\\d+)(?:\\.\\d)?$/,\n\t// Chrome User Agent from https://developer.chrome.com/multidevice/user-agent\n\tchrome: /^Mozilla\\/5\\.0 \\([^)]*(Windows|OS X|Linux)[^)]+\\) AppleWebKit\\/[0-9.]+ \\(KHTML, like Gecko\\) Chrome\\/(\\d+)[0-9.]+ (?:Mobile Safari|Safari)\\/[0-9.]+$/,\n\t// Safari User Agent from http://www.useragentstring.com/pages/Safari/\n\tsafari: /^Mozilla\\/5\\.0 \\([^)]*(Windows|OS X)[^)]+\\) AppleWebKit\\/[0-9.]+ \\(KHTML, like Gecko\\)(?: Version\\/([0-9]+)[0-9.]+)? Safari\\/[0-9.A-Z]+$/,\n\t// Android Chrome user agent: https://developers.google.com/chrome/mobile/docs/user-agent\n\tandroidChrome: /Android.*(?:; (.*) Build\\/).*Chrome\\/(\\d+)[0-9.]+/,\n\tiphone: / *CPU +iPhone +OS +([0-9]+)_(?:[0-9_])+ +like +Mac +OS +X */,\n\tipad: /\\(iPad; *CPU +OS +([0-9]+)_(?:[0-9_])+ +like +Mac +OS +X */,\n\tiosClient: /^Mozilla\\/5\\.0 \\(iOS\\) (?:ownCloud|Nextcloud)-iOS.*$/,\n\tandroidClient: /^Mozilla\\/5\\.0 \\(Android\\) (?:ownCloud|Nextcloud)-android.*$/,\n\tiosTalkClient: /^Mozilla\\/5\\.0 \\(iOS\\) Nextcloud-Talk.*$/,\n\tandroidTalkClient: /^Mozilla\\/5\\.0 \\(Android\\) Nextcloud-Talk.*$/,\n\t// DAVx5/3.3.8-beta2-gplay (2021/01/02; dav4jvm; okhttp/4.9.0) Android/10\n\tdavx5: /DAV(?:droid|x5)\\/([^ ]+)/,\n\t// Mozilla/5.0 (U; Linux; Maemo; Jolla; Sailfish; like Android 4.3) AppleWebKit/538.1 (KHTML, like Gecko) WebPirate/2.0 like Mobile Safari/538.1 (compatible)\n\twebPirate: /(Sailfish).*WebPirate\\/(\\d+)/,\n\t// Mozilla/5.0 (Maemo; Linux; U; Jolla; Sailfish; Mobile; rv:31.0) Gecko/31.0 Firefox/31.0 SailfishBrowser/1.0\n\tsailfishBrowser: /(Sailfish).*SailfishBrowser\\/(\\d+)/,\n}\nconst nameMap = {\n\tie: t('setting', 'Internet Explorer'),\n\tedge: t('setting', 'Edge'),\n\tfirefox: t('setting', 'Firefox'),\n\tchrome: t('setting', 'Google Chrome'),\n\tsafari: t('setting', 'Safari'),\n\tandroidChrome: t('setting', 'Google Chrome for Android'),\n\tiphone: t('setting', 'iPhone'),\n\tipad: t('setting', 'iPad'),\n\tiosClient: t('setting', '{productName} iOS app', { productName: window.oc_defaults.productName }),\n\tandroidClient: t('setting', '{productName} Android app', { productName: window.oc_defaults.productName }),\n\tiosTalkClient: t('setting', '{productName} Talk for iOS', { productName: window.oc_defaults.productName }),\n\tandroidTalkClient: t('setting', '{productName} Talk for Android', { productName: window.oc_defaults.productName }),\n\tdavx5: 'DAVx5',\n\twebPirate: 'WebPirate',\n\tsailfishBrowser: 'SailfishBrowser',\n}\nconst iconMap = {\n\tie: 'icon-desktop',\n\tedge: 'icon-desktop',\n\tfirefox: 'icon-desktop',\n\tchrome: 'icon-desktop',\n\tsafari: 'icon-desktop',\n\tandroidChrome: 'icon-phone',\n\tiphone: 'icon-phone',\n\tipad: 'icon-tablet',\n\tiosClient: 'icon-phone',\n\tandroidClient: 'icon-phone',\n\tiosTalkClient: 'icon-phone',\n\tandroidTalkClient: 'icon-phone',\n\tdavx5: 'icon-phone',\n\twebPirate: 'icon-link',\n\tsailfishBrowser: 'icon-link',\n}\n\nexport default {\n\tname: 'AuthToken',\n\tcomponents: {\n\t\tActions,\n\t\tActionButton,\n\t\tActionCheckbox,\n\t},\n\tprops: {\n\t\ttoken: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tshowMore: this.token.canScope || this.token.canDelete,\n\t\t\trenaming: false,\n\t\t\tnewName: '',\n\t\t\tactionOpen: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tlastActivityRelative() {\n\t\t\treturn OC.Util.relativeModifiedDate(this.token.lastActivity * 1000)\n\t\t},\n\t\tlastActivity() {\n\t\t\treturn OC.Util.formatDate(this.token.lastActivity * 1000, 'LLL')\n\t\t},\n\t\ticonName() {\n\t\t\t// pretty format sync client user agent\n\t\t\tconst matches = this.token.name.match(/Mozilla\\/5\\.0 \\((\\w+)\\) (?:mirall|csyncoC)\\/(\\d+\\.\\d+\\.\\d+)/)\n\n\t\t\tlet icon = ''\n\t\t\tif (matches) {\n\t\t\t\t/* eslint-disable-next-line */\n\t\t\t\tthis.token.name = t('settings', 'Sync client - {os}', {\n\t\t\t\t\tos: matches[1],\n\t\t\t\t\tversion: matches[2],\n\t\t\t\t})\n\t\t\t\ticon = 'icon-desktop'\n\t\t\t}\n\n\t\t\t// preserve title for cases where we format it further\n\t\t\tconst title = this.token.name\n\t\t\tlet name = this.token.name\n\t\t\tfor (const client in userAgentMap) {\n\t\t\t\tconst matches = title.match(userAgentMap[client])\n\t\t\t\tif (matches) {\n\t\t\t\t\tif (matches[2] && matches[1]) { // version number and os\n\t\t\t\t\t\tname = nameMap[client] + ' ' + matches[2] + ' - ' + matches[1]\n\t\t\t\t\t} else if (matches[1]) { // only version number\n\t\t\t\t\t\tname = nameMap[client] + ' ' + matches[1]\n\t\t\t\t\t} else {\n\t\t\t\t\t\tname = nameMap[client]\n\t\t\t\t\t}\n\n\t\t\t\t\ticon = iconMap[client]\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.token.current) {\n\t\t\t\tname = t('settings', 'This session')\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\ticon,\n\t\t\t\tname,\n\t\t\t}\n\t\t},\n\t\twiping() {\n\t\t\treturn this.token.type === 2\n\t\t},\n\t},\n\tmethods: {\n\t\tstartRename() {\n\t\t\t// Close action (popover menu)\n\t\t\tthis.actionOpen = false\n\n\t\t\tthis.newName = this.token.name\n\t\t\tthis.renaming = true\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.$refs.input.select()\n\t\t\t})\n\t\t},\n\t\tcancelRename() {\n\t\t\tthis.renaming = false\n\t\t},\n\t\trevoke() {\n\t\t\tthis.actionOpen = false\n\t\t\tthis.$emit('delete', this.token)\n\t\t},\n\t\trename() {\n\t\t\tthis.renaming = false\n\t\t\tthis.$emit('rename', this.token, this.newName)\n\t\t},\n\t\twipe() {\n\t\t\tthis.actionOpen = false\n\t\t\tthis.$emit('wipe', this.token)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.wiping {\n\t\tbackground-color: var(--color-background-darker);\n\t}\n\n\ttd {\n\t\tborder-top: 1px solid var(--color-border);\n\t\tmax-width: 200px;\n\t\twhite-space: normal;\n\t\tvertical-align: middle;\n\t\tposition: relative;\n\n\t\t&%icon {\n\t\t\toverflow: visible;\n\t\t\tposition: relative;\n\t\t\twidth: 44px;\n\t\t\theight: 44px;\n\t\t}\n\n\t\t&.token-name {\n\t\t\tpadding: 10px 6px;\n\n\t\t\t&.token-rename {\n\t\t\t\tpadding: 0;\n\t\t\t}\n\n\t\t\tinput {\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t}\n\t\t&.token-name .wiping-warning {\n\t\t\tcolor: var(--color-text-lighter);\n\t\t}\n\n\t\t&.more {\n\t\t\t@extend %icon;\n\t\t\tpadding: 0 10px;\n\t\t}\n\n\t\t&.client {\n\t\t\t@extend %icon;\n\n\t\t\tdiv {\n\t\t\t\topacity: 0.57;\n\t\t\t\twidth: 44px;\n\t\t\t\theight: 44px;\n\t\t\t}\n\t\t}\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthToken.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!./AuthToken.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!./AuthToken.vue?vue&type=style&index=0&id=1c8c3140&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!./AuthToken.vue?vue&type=style&index=0&id=1c8c3140&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AuthToken.vue?vue&type=template&id=1c8c3140&scoped=true&\"\nimport script from \"./AuthToken.vue?vue&type=script&lang=js&\"\nexport * from \"./AuthToken.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AuthToken.vue?vue&type=style&index=0&id=1c8c3140&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 \"1c8c3140\",\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('tr',{class:_vm.wiping,attrs:{\"data-id\":_vm.token.id}},[_c('td',{staticClass:\"client\"},[_c('div',{class:_vm.iconName.icon})]),_vm._v(\" \"),_c('td',{staticClass:\"token-name\"},[(_vm.token.canRename && _vm.renaming)?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newName),expression:\"newName\"}],ref:\"input\",attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.newName)},on:{\"keyup\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.rename.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }return _vm.cancelRename.apply(null, arguments)}],\"blur\":_vm.cancelRename,\"input\":function($event){if($event.target.composing){ return; }_vm.newName=$event.target.value}}}):_c('span',[_vm._v(_vm._s(_vm.iconName.name))]),_vm._v(\" \"),(_vm.wiping)?_c('span',{staticClass:\"wiping-warning\"},[_vm._v(\"(\"+_vm._s(_vm.t('settings', 'Marked for remote wipe'))+\")\")]):_vm._e()]),_vm._v(\" \"),_c('td',[_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(_vm.lastActivity),expression:\"lastActivity\"}],staticClass:\"last-activity\"},[_vm._v(_vm._s(_vm.lastActivityRelative))])]),_vm._v(\" \"),_c('td',{staticClass:\"more\"},[(!_vm.token.current)?_c('Actions',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\tcontent: _vm.t('settings', 'Device settings'),\n\t\t\t\tcontainer: 'body'\n\t\t\t}),expression:\"{\\n\\t\\t\\t\\tcontent: t('settings', 'Device settings'),\\n\\t\\t\\t\\tcontainer: 'body'\\n\\t\\t\\t}\",modifiers:{\"auto\":true}}],attrs:{\"open\":_vm.actionOpen},on:{\"update:open\":function($event){_vm.actionOpen=$event}}},[(_vm.token.type === 1)?_c('ActionCheckbox',{attrs:{\"checked\":_vm.token.scope.filesystem},on:{\"change\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.$emit('toggle-scope', _vm.token, 'filesystem', !_vm.token.scope.filesystem)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Allow filesystem access'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.token.canRename)?_c('ActionButton',{attrs:{\"icon\":\"icon-rename\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.startRename.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Rename'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.token.canDelete)?[(_vm.token.type !== 2)?[_c('ActionButton',{attrs:{\"icon\":\"icon-delete\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.revoke.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Revoke'))+\"\\n\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionButton',{attrs:{\"icon\":\"icon-delete\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.wipe.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Wipe device'))+\"\\n\\t\\t\\t\\t\\t\")])]:(_vm.token.type === 2)?_c('ActionButton',{attrs:{\"icon\":\"icon-delete\",\"title\":_vm.t('settings', 'Revoke')},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.revoke.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Revoking this token might prevent the wiping of your device if it has not started the wipe yet.'))+\"\\n\\t\\t\\t\\t\")]):_vm._e()]:_vm._e()],2):_vm._e()],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthTokenList.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!./AuthTokenList.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\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\n<template>\n\t<table id=\"app-tokens-table\">\n\t\t<thead v-if=\"tokens.length\">\n\t\t\t<tr>\n\t\t\t\t<th />\n\t\t\t\t<th>{{ t('settings', 'Device') }}</th>\n\t\t\t\t<th>{{ t('settings', 'Last activity') }}</th>\n\t\t\t\t<th />\n\t\t\t</tr>\n\t\t</thead>\n\t\t<tbody class=\"token-list\">\n\t\t\t<AuthToken v-for=\"token in sortedTokens\"\n\t\t\t\t:key=\"token.id\"\n\t\t\t\t:token=\"token\"\n\t\t\t\t@toggle-scope=\"toggleScope\"\n\t\t\t\t@rename=\"rename\"\n\t\t\t\t@delete=\"onDelete\"\n\t\t\t\t@wipe=\"onWipe\" />\n\t\t</tbody>\n\t</table>\n</template>\n\n<script>\nimport AuthToken from './AuthToken'\n\nexport default {\n\tname: 'AuthTokenList',\n\tcomponents: {\n\t\tAuthToken,\n\t},\n\tprops: {\n\t\ttokens: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomputed: {\n\t\tsortedTokens() {\n\t\t\treturn this.tokens.slice().sort((t1, t2) => {\n\t\t\t\tconst ts1 = parseInt(t1.lastActivity, 10)\n\t\t\t\tconst ts2 = parseInt(t2.lastActivity, 10)\n\t\t\t\treturn ts2 - ts1\n\t\t\t})\n\t\t},\n\t},\n\tmethods: {\n\t\ttoggleScope(token, scope, value) {\n\t\t\t// Just pass it on\n\t\t\tthis.$emit('toggle-scope', token, scope, value)\n\t\t},\n\t\trename(token, newName) {\n\t\t\t// Just pass it on\n\t\t\tthis.$emit('rename', token, newName)\n\t\t},\n\t\tonDelete(token) {\n\t\t\t// Just pass it on\n\t\t\tthis.$emit('delete', token)\n\t\t},\n\t\tonWipe(token) {\n\t\t\t// Just pass it on\n\t\t\tthis.$emit('wipe', token)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\ttable {\n\t\twidth: 100%;\n\t\tmin-height: 50px;\n\t\tpadding-top: 5px;\n\t\tmax-width: 580px;\n\n\t\tth {\n\t\t\topacity: .5;\n\t\t\tpadding: 10px 0;\n\t\t}\n\t}\n\n\t.token-list {\n\t\ttd > a.icon-more {\n\t\t\ttransition: opacity var(--animation-quick);\n\t\t}\n\n\t\ta.icon-more {\n\t\t\tpadding: 14px;\n\t\t\tdisplay: block;\n\t\t\twidth: 44px;\n\t\t\theight: 44px;\n\t\t\topacity: .5;\n\t\t}\n\n\t\ttr {\n\t\t\t&:hover td > a.icon,\n\t\t\ttd > a.icon:focus,\n\t\t\t&.active td > a.icon {\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\t}\n</style>\n\n<!-- some styles are not scoped to make them work on subcomponents -->\n<style lang=\"scss\">\n\t#app-tokens-table {\n\t\ttr > *:nth-child(2) {\n\t\t\tpadding-left: 6px;\n\t\t}\n\n\t\ttr > *:nth-child(3) {\n\t\t\ttext-align: right;\n\t\t}\n\t}\n</style>\n","\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!./AuthTokenList.vue?vue&type=style&index=0&id=4f8ceff3&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!./AuthTokenList.vue?vue&type=style&index=0&id=4f8ceff3&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","\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!./AuthTokenList.vue?vue&type=style&index=1&lang=scss&\";\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!./AuthTokenList.vue?vue&type=style&index=1&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AuthTokenList.vue?vue&type=template&id=4f8ceff3&scoped=true&\"\nimport script from \"./AuthTokenList.vue?vue&type=script&lang=js&\"\nexport * from \"./AuthTokenList.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AuthTokenList.vue?vue&type=style&index=0&id=4f8ceff3&lang=scss&scoped=true&\"\nimport style1 from \"./AuthTokenList.vue?vue&type=style&index=1&lang=scss&\"\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 \"4f8ceff3\",\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('table',{attrs:{\"id\":\"app-tokens-table\"}},[(_vm.tokens.length)?_c('thead',[_c('tr',[_c('th'),_vm._v(\" \"),_c('th',[_vm._v(_vm._s(_vm.t('settings', 'Device')))]),_vm._v(\" \"),_c('th',[_vm._v(_vm._s(_vm.t('settings', 'Last activity')))]),_vm._v(\" \"),_c('th')])]):_vm._e(),_vm._v(\" \"),_c('tbody',{staticClass:\"token-list\"},_vm._l((_vm.sortedTokens),function(token){return _c('AuthToken',{key:token.id,attrs:{\"token\":token},on:{\"toggle-scope\":_vm.toggleScope,\"rename\":_vm.rename,\"delete\":_vm.onDelete,\"wipe\":_vm.onWipe}})}),1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\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\n<template>\n\t<div v-if=\"!adding\">\n\t\t<input v-model=\"deviceName\"\n\t\t\ttype=\"text\"\n\t\t\t:maxlength=\"120\"\n\t\t\t:disabled=\"loading\"\n\t\t\t:placeholder=\"t('settings', 'App name')\"\n\t\t\t@keydown.enter=\"submit\">\n\t\t<Button :disabled=\"loading\"\n\t\t\t@click=\"submit\">\n\t\t\t{{ t('settings', 'Create new app password') }}\n\t\t</Button>\n\t</div>\n\t<div v-else>\n\t\t{{ t('settings', 'Use the credentials below to configure your app or device.') }}\n\t\t{{ t('settings', 'For security reasons this password will only be shown once.') }}\n\t\t<div class=\"app-password-row\">\n\t\t\t<span class=\"app-password-label\">{{ t('settings', 'Username') }}</span>\n\t\t\t<input :value=\"loginName\"\n\t\t\t\ttype=\"text\"\n\t\t\t\tclass=\"monospaced\"\n\t\t\t\treadonly=\"readonly\"\n\t\t\t\t@focus=\"selectInput\">\n\t\t</div>\n\t\t<div class=\"app-password-row\">\n\t\t\t<span class=\"app-password-label\">{{ t('settings', 'Password') }}</span>\n\t\t\t<input ref=\"appPassword\"\n\t\t\t\t:value=\"appPassword\"\n\t\t\t\ttype=\"text\"\n\t\t\t\tclass=\"monospaced\"\n\t\t\t\treadonly=\"readonly\"\n\t\t\t\t@focus=\"selectInput\">\n\t\t\t<a ref=\"clipboardButton\"\n\t\t\t\tv-tooltip=\"copyTooltipOptions\"\n\t\t\t\tv-clipboard:copy=\"appPassword\"\n\t\t\t\tv-clipboard:success=\"onCopyPassword\"\n\t\t\t\tv-clipboard:error=\"onCopyPasswordFailed\"\n\t\t\t\tclass=\"icon icon-clippy\"\n\t\t\t\t@mouseover=\"hoveringCopyButton = true\"\n\t\t\t\t@mouseleave=\"hoveringCopyButton = false\" />\n\t\t\t<Button @click=\"reset\">\n\t\t\t\t{{ t('settings', 'Done') }}\n\t\t\t</Button>\n\t\t</div>\n\t\t<div class=\"app-password-row\">\n\t\t\t<span class=\"app-password-label\" />\n\t\t\t<a v-if=\"!showQR\"\n\t\t\t\t@click=\"showQR = true\">\n\t\t\t\t{{ t('settings', 'Show QR code for mobile apps') }}\n\t\t\t</a>\n\t\t\t<QR v-else\n\t\t\t\t:value=\"qrUrl\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport QR from '@chenfengyuan/vue-qrcode'\nimport confirmPassword from '@nextcloud/password-confirmation'\nimport { getRootUrl } from '@nextcloud/router'\nimport Button from '@nextcloud/vue/dist/Components/Button'\n\nexport default {\n\tname: 'AuthTokenSetupDialogue',\n\tcomponents: {\n\t\tQR,\n\t\tButton,\n\t},\n\tprops: {\n\t\tadd: {\n\t\t\ttype: Function,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tadding: false,\n\t\t\tloading: false,\n\t\t\tdeviceName: '',\n\t\t\tappPassword: '',\n\t\t\tloginName: '',\n\t\t\tpasswordCopied: false,\n\t\t\tshowQR: false,\n\t\t\tqrUrl: '',\n\t\t\thoveringCopyButton: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tcopyTooltipOptions() {\n\t\t\tconst base = {\n\t\t\t\thideOnTargetClick: false,\n\t\t\t\ttrigger: 'manual',\n\t\t\t}\n\n\t\t\tif (this.passwordCopied) {\n\t\t\t\treturn {\n\t\t\t\t\t...base,\n\t\t\t\t\tcontent: t('settings', 'Copied!'),\n\t\t\t\t\tshow: true,\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn {\n\t\t\t\t\t...base,\n\t\t\t\t\tcontent: t('settings', 'Copy'),\n\t\t\t\t\tshow: this.hoveringCopyButton,\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\tselectInput(e) {\n\t\t\te.currentTarget.select()\n\t\t},\n\t\tsubmit() {\n\t\t\tconfirmPassword()\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.loading = true\n\t\t\t\t\treturn this.add(this.deviceName)\n\t\t\t\t})\n\t\t\t\t.then(token => {\n\t\t\t\t\tthis.adding = true\n\t\t\t\t\tthis.loginName = token.loginName\n\t\t\t\t\tthis.appPassword = token.token\n\n\t\t\t\t\tconst server = window.location.protocol + '//' + window.location.host + getRootUrl()\n\t\t\t\t\tthis.qrUrl = `nc://login/user:${token.loginName}&password:${token.token}&server:${server}`\n\n\t\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t\tthis.$refs.appPassword.select()\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\t.catch(err => {\n\t\t\t\t\tconsole.error('could not create a new app password', err)\n\t\t\t\t\tOC.Notification.showTemporary(t('settings', 'Error while creating device token'))\n\n\t\t\t\t\tthis.reset()\n\t\t\t\t})\n\t\t},\n\t\tonCopyPassword() {\n\t\t\tthis.passwordCopied = true\n\t\t\tthis.$refs.clipboardButton.blur()\n\t\t\tsetTimeout(() => { this.passwordCopied = false }, 3000)\n\t\t},\n\t\tonCopyPasswordFailed() {\n\t\t\tOC.Notification.showTemporary(t('settings', 'Could not copy app password. Please copy it manually.'))\n\t\t},\n\t\treset() {\n\t\t\tthis.adding = false\n\t\t\tthis.loading = false\n\t\t\tthis.showQR = false\n\t\t\tthis.qrUrl = ''\n\t\t\tthis.deviceName = ''\n\t\t\tthis.appPassword = ''\n\t\t\tthis.loginName = ''\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.app-password-row {\n\t\tdisplay: table-row;\n\n\t\t.icon {\n\t\t\tbackground-size: 16px 16px;\n\t\t\tdisplay: inline-block;\n\t\t\tposition: relative;\n\t\t\ttop: 3px;\n\t\t\tmargin-left: 5px;\n\t\t\tmargin-right: 8px;\n\t\t}\n\n\t}\n\n\t.app-password-label {\n\t\tdisplay: table-cell;\n\t\tpadding-right: 1em;\n\t\ttext-align: right;\n\t\tvertical-align: middle;\n\t}\n\n\t.monospaced {\n\t\twidth: 245px;\n\t\tfont-family: monospace;\n\t}\n\n\t.button-vue{\n\t\tdisplay:inline-block;\n\t\tmargin: 3px 3px 3px 3px;\n\t}\n\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthTokenSetupDialogue.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!./AuthTokenSetupDialogue.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!./AuthTokenSetupDialogue.vue?vue&type=style&index=0&id=6a24fa34&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!./AuthTokenSetupDialogue.vue?vue&type=style&index=0&id=6a24fa34&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AuthTokenSetupDialogue.vue?vue&type=template&id=6a24fa34&scoped=true&\"\nimport script from \"./AuthTokenSetupDialogue.vue?vue&type=script&lang=js&\"\nexport * from \"./AuthTokenSetupDialogue.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AuthTokenSetupDialogue.vue?vue&type=style&index=0&id=6a24fa34&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 \"6a24fa34\",\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 (!_vm.adding)?_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.deviceName),expression:\"deviceName\"}],attrs:{\"type\":\"text\",\"maxlength\":120,\"disabled\":_vm.loading,\"placeholder\":_vm.t('settings', 'App name')},domProps:{\"value\":(_vm.deviceName)},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.submit.apply(null, arguments)},\"input\":function($event){if($event.target.composing){ return; }_vm.deviceName=$event.target.value}}}),_vm._v(\" \"),_c('Button',{attrs:{\"disabled\":_vm.loading},on:{\"click\":_vm.submit}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Create new app password'))+\"\\n\\t\")])],1):_c('div',[_vm._v(\"\\n\\t\"+_vm._s(_vm.t('settings', 'Use the credentials below to configure your app or device.'))+\"\\n\\t\"+_vm._s(_vm.t('settings', 'For security reasons this password will only be shown once.'))+\"\\n\\t\"),_c('div',{staticClass:\"app-password-row\"},[_c('span',{staticClass:\"app-password-label\"},[_vm._v(_vm._s(_vm.t('settings', 'Username')))]),_vm._v(\" \"),_c('input',{staticClass:\"monospaced\",attrs:{\"type\":\"text\",\"readonly\":\"readonly\"},domProps:{\"value\":_vm.loginName},on:{\"focus\":_vm.selectInput}})]),_vm._v(\" \"),_c('div',{staticClass:\"app-password-row\"},[_c('span',{staticClass:\"app-password-label\"},[_vm._v(_vm._s(_vm.t('settings', 'Password')))]),_vm._v(\" \"),_c('input',{ref:\"appPassword\",staticClass:\"monospaced\",attrs:{\"type\":\"text\",\"readonly\":\"readonly\"},domProps:{\"value\":_vm.appPassword},on:{\"focus\":_vm.selectInput}}),_vm._v(\" \"),_c('a',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(_vm.copyTooltipOptions),expression:\"copyTooltipOptions\"},{name:\"clipboard\",rawName:\"v-clipboard:copy\",value:(_vm.appPassword),expression:\"appPassword\",arg:\"copy\"},{name:\"clipboard\",rawName:\"v-clipboard:success\",value:(_vm.onCopyPassword),expression:\"onCopyPassword\",arg:\"success\"},{name:\"clipboard\",rawName:\"v-clipboard:error\",value:(_vm.onCopyPasswordFailed),expression:\"onCopyPasswordFailed\",arg:\"error\"}],ref:\"clipboardButton\",staticClass:\"icon icon-clippy\",on:{\"mouseover\":function($event){_vm.hoveringCopyButton = true},\"mouseleave\":function($event){_vm.hoveringCopyButton = false}}}),_vm._v(\" \"),_c('Button',{on:{\"click\":_vm.reset}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Done'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('div',{staticClass:\"app-password-row\"},[_c('span',{staticClass:\"app-password-label\"}),_vm._v(\" \"),(!_vm.showQR)?_c('a',{on:{\"click\":function($event){_vm.showQR = true}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show QR code for mobile apps'))+\"\\n\\t\\t\")]):_c('QR',{attrs:{\"value\":_vm.qrUrl}})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\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\n<template>\n\t<div id=\"security\" class=\"section\">\n\t\t<h2>{{ t('settings', 'Devices & sessions', {}, undefined, {sanitize: false}) }}</h2>\n\t\t<p class=\"settings-hint hidden-when-empty\">\n\t\t\t{{ t('settings', 'Web, desktop and mobile clients currently logged in to your account.') }}\n\t\t</p>\n\t\t<AuthTokenList :tokens=\"tokens\"\n\t\t\t@toggle-scope=\"toggleTokenScope\"\n\t\t\t@rename=\"rename\"\n\t\t\t@delete=\"deleteToken\"\n\t\t\t@wipe=\"wipeToken\" />\n\t\t<AuthTokenSetupDialogue v-if=\"canCreateToken\" :add=\"addNewToken\" />\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport confirmPassword from '@nextcloud/password-confirmation'\nimport { generateUrl } from '@nextcloud/router'\n\nimport AuthTokenList from './AuthTokenList'\nimport AuthTokenSetupDialogue from './AuthTokenSetupDialogue'\n\nconst confirm = () => {\n\treturn new Promise(resolve => {\n\t\tOC.dialogs.confirm(\n\t\t\tt('settings', 'Do you really want to wipe your data from this device?'),\n\t\t\tt('settings', 'Confirm wipe'),\n\t\t\tresolve,\n\t\t\ttrue\n\t\t)\n\t})\n}\n\n/**\n * Tap into a promise without losing the value\n *\n * @param {Function} cb the callback\n * @return {any} val the value\n */\nconst tap = cb => val => {\n\tcb(val)\n\treturn val\n}\n\nexport default {\n\tname: 'AuthTokenSection',\n\tcomponents: {\n\t\tAuthTokenSetupDialogue,\n\t\tAuthTokenList,\n\t},\n\tprops: {\n\t\ttokens: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\tcanCreateToken: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tbaseUrl: generateUrl('/settings/personal/authtokens'),\n\t\t}\n\t},\n\tmethods: {\n\t\taddNewToken(name) {\n\t\t\tconsole.debug('creating a new app token', name)\n\n\t\t\tconst data = {\n\t\t\t\tname,\n\t\t\t}\n\t\t\treturn axios.post(this.baseUrl, data)\n\t\t\t\t.then(resp => resp.data)\n\t\t\t\t.then(tap(() => console.debug('app token created')))\n\t\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\t\t.then(tap(data => this.tokens.push(data.deviceToken)))\n\t\t\t\t.catch(err => {\n\t\t\t\t\tconsole.error.bind('could not create app password', err)\n\t\t\t\t\tOC.Notification.showTemporary(t('settings', 'Error while creating device token'))\n\t\t\t\t\tthrow err\n\t\t\t\t})\n\t\t},\n\t\ttoggleTokenScope(token, scope, value) {\n\t\t\tconsole.debug('updating app token scope', token.id, scope, value)\n\n\t\t\tconst oldVal = token.scope[scope]\n\t\t\ttoken.scope[scope] = value\n\n\t\t\treturn this.updateToken(token)\n\t\t\t\t.then(tap(() => console.debug('app token scope updated')))\n\t\t\t\t.catch(err => {\n\t\t\t\t\tconsole.error.bind('could not update app token scope', err)\n\t\t\t\t\tOC.Notification.showTemporary(t('settings', 'Error while updating device token scope'))\n\n\t\t\t\t\t// Restore\n\t\t\t\t\ttoken.scope[scope] = oldVal\n\n\t\t\t\t\tthrow err\n\t\t\t\t})\n\t\t},\n\t\trename(token, newName) {\n\t\t\tconsole.debug('renaming app token', token.id, token.name, newName)\n\n\t\t\tconst oldName = token.name\n\t\t\ttoken.name = newName\n\n\t\t\treturn this.updateToken(token)\n\t\t\t\t.then(tap(() => console.debug('app token name updated')))\n\t\t\t\t.catch(err => {\n\t\t\t\t\tconsole.error.bind('could not update app token name', err)\n\t\t\t\t\tOC.Notification.showTemporary(t('settings', 'Error while updating device token name'))\n\n\t\t\t\t\t// Restore\n\t\t\t\t\ttoken.name = oldName\n\t\t\t\t})\n\t\t},\n\t\tupdateToken(token) {\n\t\t\treturn axios.put(this.baseUrl + '/' + token.id, token)\n\t\t\t\t.then(resp => resp.data)\n\t\t},\n\t\tdeleteToken(token) {\n\t\t\tconsole.debug('deleting app token', token)\n\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.tokens = this.tokens.filter(t => t !== token)\n\n\t\t\treturn axios.delete(this.baseUrl + '/' + token.id)\n\t\t\t\t.then(resp => resp.data)\n\t\t\t\t.then(tap(() => console.debug('app token deleted')))\n\t\t\t\t.catch(err => {\n\t\t\t\t\tconsole.error.bind('could not delete app token', err)\n\t\t\t\t\tOC.Notification.showTemporary(t('settings', 'Error while deleting the token'))\n\n\t\t\t\t\t// Restore\n\t\t\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\t\t\tthis.tokens.push(token)\n\t\t\t\t})\n\t\t},\n\t\tasync wipeToken(token) {\n\t\t\tconsole.debug('wiping app token', token)\n\n\t\t\ttry {\n\t\t\t\tawait confirmPassword()\n\n\t\t\t\tif (!(await confirm())) {\n\t\t\t\t\tconsole.debug('wipe aborted by user')\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tawait axios.post(this.baseUrl + '/wipe/' + token.id)\n\t\t\t\tconsole.debug('app token marked for wipe')\n\n\t\t\t\ttoken.type = 2\n\t\t\t} catch (err) {\n\t\t\t\tconsole.error('could not wipe app token', err)\n\t\t\t\tOC.Notification.showTemporary(t('settings', 'Error while wiping the device with the token'))\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthTokenSection.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!./AuthTokenSection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AuthTokenSection.vue?vue&type=template&id=451cdc4a&scoped=true&\"\nimport script from \"./AuthTokenSection.vue?vue&type=script&lang=js&\"\nexport * from \"./AuthTokenSection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"451cdc4a\",\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\",attrs:{\"id\":\"security\"}},[_c('h2',[_vm._v(_vm._s(_vm.t('settings', 'Devices & sessions', {}, undefined, {sanitize: false})))]),_vm._v(\" \"),_c('p',{staticClass:\"settings-hint hidden-when-empty\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Web, desktop and mobile clients currently logged in to your account.'))+\"\\n\\t\")]),_vm._v(\" \"),_c('AuthTokenList',{attrs:{\"tokens\":_vm.tokens},on:{\"toggle-scope\":_vm.toggleTokenScope,\"rename\":_vm.rename,\"delete\":_vm.deleteToken,\"wipe\":_vm.wipeToken}}),_vm._v(\" \"),(_vm.canCreateToken)?_c('AuthTokenSetupDialogue',{attrs:{\"add\":_vm.addNewToken}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport { loadState } from '@nextcloud/initial-state'\nimport Vue from 'vue'\nimport VueClipboard from 'vue-clipboard2'\nimport VTooltip from 'v-tooltip'\n\nimport AuthTokenSection from './components/AuthTokenSection'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(OC.requestToken)\n\nVue.use(VueClipboard)\nVue.use(VTooltip, { defaultHtml: false })\nVue.prototype.t = t\n\nconst View = Vue.extend(AuthTokenSection)\nnew View({\n\tpropsData: {\n\t\ttokens: loadState('settings', 'app_tokens'),\n\t\tcanCreateToken: loadState('settings', 'can_create_app_token'),\n\t},\n}).$mount('#security-authtokens')\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, \".wiping[data-v-1c8c3140]{background-color:var(--color-background-darker)}td[data-v-1c8c3140]{border-top:1px solid var(--color-border);max-width:200px;white-space:normal;vertical-align:middle;position:relative}td.client[data-v-1c8c3140],td.more[data-v-1c8c3140]{overflow:visible;position:relative;width:44px;height:44px}td.token-name[data-v-1c8c3140]{padding:10px 6px}td.token-name.token-rename[data-v-1c8c3140]{padding:0}td.token-name input[data-v-1c8c3140]{width:100%;margin:0}td.token-name .wiping-warning[data-v-1c8c3140]{color:var(--color-text-lighter)}td.more[data-v-1c8c3140]{padding:0 10px}td.client div[data-v-1c8c3140]{opacity:.57;width:44px;height:44px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AuthToken.vue\"],\"names\":[],\"mappings\":\"AAiQA,yBACC,+CAAA,CAGD,oBACC,wCAAA,CACA,eAAA,CACA,kBAAA,CACA,qBAAA,CACA,iBAAA,CAEA,oDACC,gBAAA,CACA,iBAAA,CACA,UAAA,CACA,WAAA,CAGD,+BACC,gBAAA,CAEA,4CACC,SAAA,CAGD,qCACC,UAAA,CACA,QAAA,CAGF,+CACC,+BAAA,CAGD,yBAEC,cAAA,CAMA,+BACC,WAAA,CACA,UAAA,CACA,WAAA\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.wiping {\\n\\tbackground-color: var(--color-background-darker);\\n}\\n\\ntd {\\n\\tborder-top: 1px solid var(--color-border);\\n\\tmax-width: 200px;\\n\\twhite-space: normal;\\n\\tvertical-align: middle;\\n\\tposition: relative;\\n\\n\\t&%icon {\\n\\t\\toverflow: visible;\\n\\t\\tposition: relative;\\n\\t\\twidth: 44px;\\n\\t\\theight: 44px;\\n\\t}\\n\\n\\t&.token-name {\\n\\t\\tpadding: 10px 6px;\\n\\n\\t\\t&.token-rename {\\n\\t\\t\\tpadding: 0;\\n\\t\\t}\\n\\n\\t\\tinput {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tmargin: 0;\\n\\t\\t}\\n\\t}\\n\\t&.token-name .wiping-warning {\\n\\t\\tcolor: var(--color-text-lighter);\\n\\t}\\n\\n\\t&.more {\\n\\t\\t@extend %icon;\\n\\t\\tpadding: 0 10px;\\n\\t}\\n\\n\\t&.client {\\n\\t\\t@extend %icon;\\n\\n\\t\\tdiv {\\n\\t\\t\\topacity: 0.57;\\n\\t\\t\\twidth: 44px;\\n\\t\\t\\theight: 44px;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"table[data-v-4f8ceff3]{width:100%;min-height:50px;padding-top:5px;max-width:580px}table th[data-v-4f8ceff3]{opacity:.5;padding:10px 0}.token-list td>a.icon-more[data-v-4f8ceff3]{transition:opacity var(--animation-quick)}.token-list a.icon-more[data-v-4f8ceff3]{padding:14px;display:block;width:44px;height:44px;opacity:.5}.token-list tr:hover td>a.icon[data-v-4f8ceff3],.token-list tr td>a.icon[data-v-4f8ceff3]:focus,.token-list tr.active td>a.icon[data-v-4f8ceff3]{opacity:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AuthTokenList.vue\"],\"names\":[],\"mappings\":\"AAwFA,uBACC,UAAA,CACA,eAAA,CACA,eAAA,CACA,eAAA,CAEA,0BACC,UAAA,CACA,cAAA,CAKD,4CACC,yCAAA,CAGD,yCACC,YAAA,CACA,aAAA,CACA,UAAA,CACA,WAAA,CACA,UAAA,CAIA,iJAGC,SAAA\",\"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\\ntable {\\n\\twidth: 100%;\\n\\tmin-height: 50px;\\n\\tpadding-top: 5px;\\n\\tmax-width: 580px;\\n\\n\\tth {\\n\\t\\topacity: .5;\\n\\t\\tpadding: 10px 0;\\n\\t}\\n}\\n\\n.token-list {\\n\\ttd > a.icon-more {\\n\\t\\ttransition: opacity var(--animation-quick);\\n\\t}\\n\\n\\ta.icon-more {\\n\\t\\tpadding: 14px;\\n\\t\\tdisplay: block;\\n\\t\\twidth: 44px;\\n\\t\\theight: 44px;\\n\\t\\topacity: .5;\\n\\t}\\n\\n\\ttr {\\n\\t\\t&:hover td > a.icon,\\n\\t\\ttd > a.icon:focus,\\n\\t\\t&.active td > a.icon {\\n\\t\\t\\topacity: 1;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"#app-tokens-table tr>*:nth-child(2){padding-left:6px}#app-tokens-table tr>*:nth-child(3){text-align:right}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AuthTokenList.vue\"],\"names\":[],\"mappings\":\"AA8HC,oCACC,gBAAA,CAGD,oCACC,gBAAA\",\"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#app-tokens-table {\\n\\ttr > *:nth-child(2) {\\n\\t\\tpadding-left: 6px;\\n\\t}\\n\\n\\ttr > *:nth-child(3) {\\n\\t\\ttext-align: right;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".app-password-row[data-v-6a24fa34]{display:table-row}.app-password-row .icon[data-v-6a24fa34]{background-size:16px 16px;display:inline-block;position:relative;top:3px;margin-left:5px;margin-right:8px}.app-password-label[data-v-6a24fa34]{display:table-cell;padding-right:1em;text-align:right;vertical-align:middle}.monospaced[data-v-6a24fa34]{width:245px;font-family:monospace}.button-vue[data-v-6a24fa34]{display:inline-block;margin:3px 3px 3px 3px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AuthTokenSetupDialogue.vue\"],\"names\":[],\"mappings\":\"AAqLA,mCACC,iBAAA,CAEA,yCACC,yBAAA,CACA,oBAAA,CACA,iBAAA,CACA,OAAA,CACA,eAAA,CACA,gBAAA,CAKF,qCACC,kBAAA,CACA,iBAAA,CACA,gBAAA,CACA,qBAAA,CAGD,6BACC,WAAA,CACA,qBAAA,CAGD,6BACC,oBAAA,CACA,sBAAA\",\"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.app-password-row {\\n\\tdisplay: table-row;\\n\\n\\t.icon {\\n\\t\\tbackground-size: 16px 16px;\\n\\t\\tdisplay: inline-block;\\n\\t\\tposition: relative;\\n\\t\\ttop: 3px;\\n\\t\\tmargin-left: 5px;\\n\\t\\tmargin-right: 8px;\\n\\t}\\n\\n}\\n\\n.app-password-label {\\n\\tdisplay: table-cell;\\n\\tpadding-right: 1em;\\n\\ttext-align: right;\\n\\tvertical-align: middle;\\n}\\n\\n.monospaced {\\n\\twidth: 245px;\\n\\tfont-family: monospace;\\n}\\n\\n.button-vue{\\n\\tdisplay:inline-block;\\n\\tmargin: 3px 3px 3px 3px;\\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 = 4783;","__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\t4783: 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__(68680); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","component","_vm","this","_h","$createElement","_c","_self","class","wiping","attrs","token","id","staticClass","iconName","icon","_v","canRename","renaming","directives","name","rawName","value","expression","ref","domProps","on","$event","type","indexOf","_k","keyCode","key","rename","apply","arguments","cancelRename","target","composing","newName","_s","t","_e","lastActivityRelative","current","content","container","modifiers","actionOpen","scope","filesystem","stopPropagation","preventDefault","$emit","startRename","revoke","wipe","tokens","_l","toggleScope","onDelete","onWipe","adding","loginName","selectInput","appPassword","arg","hoveringCopyButton","reset","showQR","qrUrl","loading","submit","deviceName","undefined","sanitize","toggleTokenScope","deleteToken","wipeToken","addNewToken","__webpack_nonce__","btoa","OC","requestToken","Vue","VueClipboard","VTooltip","defaultHtml","AuthTokenSection","propsData","loadState","canCreateToken","$mount","___CSS_LOADER_EXPORT___","push","module","__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","Object","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"settings-vue-settings-personal-security.js?v=c9e73c88534be44180a8","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/settings/src/components/AuthToken.vue","webpack:///nextcloud/apps/settings/src/components/AuthToken.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/AuthToken.vue?9f62","webpack://nextcloud/./apps/settings/src/components/AuthToken.vue?1338","webpack:///nextcloud/apps/settings/src/components/AuthToken.vue?vue&type=template&id=1c8c3140&scoped=true&","webpack:///nextcloud/apps/settings/src/components/AuthTokenList.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/AuthTokenList.vue","webpack://nextcloud/./apps/settings/src/components/AuthTokenList.vue?f7c9","webpack://nextcloud/./apps/settings/src/components/AuthTokenList.vue?515d","webpack://nextcloud/./apps/settings/src/components/AuthTokenList.vue?90cb","webpack:///nextcloud/apps/settings/src/components/AuthTokenList.vue?vue&type=template&id=4f8ceff3&scoped=true&","webpack:///nextcloud/apps/settings/src/components/AuthTokenSetupDialogue.vue","webpack:///nextcloud/apps/settings/src/components/AuthTokenSetupDialogue.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/AuthTokenSetupDialogue.vue?e711","webpack://nextcloud/./apps/settings/src/components/AuthTokenSetupDialogue.vue?521c","webpack:///nextcloud/apps/settings/src/components/AuthTokenSetupDialogue.vue?vue&type=template&id=6a24fa34&scoped=true&","webpack:///nextcloud/apps/settings/src/components/AuthTokenSection.vue","webpack:///nextcloud/apps/settings/src/components/AuthTokenSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/AuthTokenSection.vue?e9d0","webpack:///nextcloud/apps/settings/src/components/AuthTokenSection.vue?vue&type=template&id=451cdc4a&scoped=true&","webpack:///nextcloud/apps/settings/src/main-personal-security.js","webpack:///nextcloud/apps/settings/src/components/AuthToken.vue?vue&type=style&index=0&id=1c8c3140&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/AuthTokenList.vue?vue&type=style&index=0&id=4f8ceff3&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/AuthTokenList.vue?vue&type=style&index=1&lang=scss&","webpack:///nextcloud/apps/settings/src/components/AuthTokenSetupDialogue.vue?vue&type=style&index=0&id=6a24fa34&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/runtime/nonce","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 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\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\n<template>\n\t<tr :data-id=\"token.id\"\n\t\t:class=\"wiping\">\n\t\t<td class=\"client\">\n\t\t\t<div :class=\"iconName.icon\" />\n\t\t</td>\n\t\t<td class=\"token-name\">\n\t\t\t<input v-if=\"token.canRename && renaming\"\n\t\t\t\tref=\"input\"\n\t\t\t\tv-model=\"newName\"\n\t\t\t\ttype=\"text\"\n\t\t\t\t@keyup.enter=\"rename\"\n\t\t\t\t@blur=\"cancelRename\"\n\t\t\t\t@keyup.esc=\"cancelRename\">\n\t\t\t<span v-else>{{ iconName.name }}</span>\n\t\t\t<span v-if=\"wiping\" class=\"wiping-warning\">({{ t('settings', 'Marked for remote wipe') }})</span>\n\t\t</td>\n\t\t<td>\n\t\t\t<span v-tooltip=\"lastActivity\" class=\"last-activity\">{{ lastActivityRelative }}</span>\n\t\t</td>\n\t\t<td class=\"more\">\n\t\t\t<Actions v-if=\"!token.current\"\n\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\tcontent: t('settings', 'Device settings'),\n\t\t\t\t\tcontainer: 'body'\n\t\t\t\t}\"\n\t\t\t\t:open.sync=\"actionOpen\">\n\t\t\t\t<ActionCheckbox v-if=\"token.type === 1\"\n\t\t\t\t\t:checked=\"token.scope.filesystem\"\n\t\t\t\t\t@change.stop.prevent=\"$emit('toggle-scope', token, 'filesystem', !token.scope.filesystem)\">\n\t\t\t\t\t<!-- TODO: add text/longtext with some description -->\n\t\t\t\t\t{{ t('settings', 'Allow filesystem access') }}\n\t\t\t\t</ActionCheckbox>\n\t\t\t\t<ActionButton v-if=\"token.canRename\"\n\t\t\t\t\ticon=\"icon-rename\"\n\t\t\t\t\t@click.stop.prevent=\"startRename\">\n\t\t\t\t\t<!-- TODO: add text/longtext with some description -->\n\t\t\t\t\t{{ t('settings', 'Rename') }}\n\t\t\t\t</ActionButton>\n\n\t\t\t\t<!-- revoke & wipe -->\n\t\t\t\t<template v-if=\"token.canDelete\">\n\t\t\t\t\t<template v-if=\"token.type !== 2\">\n\t\t\t\t\t\t<ActionButton icon=\"icon-delete\"\n\t\t\t\t\t\t\t@click.stop.prevent=\"revoke\">\n\t\t\t\t\t\t\t<!-- TODO: add text/longtext with some description -->\n\t\t\t\t\t\t\t{{ t('settings', 'Revoke') }}\n\t\t\t\t\t\t</ActionButton>\n\t\t\t\t\t\t<ActionButton icon=\"icon-delete\"\n\t\t\t\t\t\t\t@click.stop.prevent=\"wipe\">\n\t\t\t\t\t\t\t{{ t('settings', 'Wipe device') }}\n\t\t\t\t\t\t</ActionButton>\n\t\t\t\t\t</template>\n\t\t\t\t\t<ActionButton v-else-if=\"token.type === 2\"\n\t\t\t\t\t\ticon=\"icon-delete\"\n\t\t\t\t\t\t:title=\"t('settings', 'Revoke')\"\n\t\t\t\t\t\t@click.stop.prevent=\"revoke\">\n\t\t\t\t\t\t{{ t('settings', 'Revoking this token might prevent the wiping of your device if it has not started the wipe yet.') }}\n\t\t\t\t\t</ActionButton>\n\t\t\t\t</template>\n\t\t\t</Actions>\n\t\t</td>\n\t</tr>\n</template>\n\n<script>\nimport {\n\tActions,\n\tActionButton,\n\tActionCheckbox,\n} from '@nextcloud/vue'\n\n// When using capture groups the following parts are extracted the first is used as the version number, the second as the OS\nconst userAgentMap = {\n\tie: /(?:MSIE|Trident|Trident\\/7.0; rv)[ :](\\d+)/,\n\t// Microsoft Edge User Agent from https://msdn.microsoft.com/en-us/library/hh869301(v=vs.85).aspx\n\tedge: /^Mozilla\\/5\\.0 \\([^)]+\\) AppleWebKit\\/[0-9.]+ \\(KHTML, like Gecko\\) Chrome\\/[0-9.]+ (?:Mobile Safari|Safari)\\/[0-9.]+ Edge\\/[0-9.]+$/,\n\t// Firefox User Agent from https://developer.mozilla.org/en-US/docs/Web/HTTP/Gecko_user_agent_string_reference\n\tfirefox: /^Mozilla\\/5\\.0 \\([^)]*(Windows|OS X|Linux)[^)]+\\) Gecko\\/[0-9.]+ Firefox\\/(\\d+)(?:\\.\\d)?$/,\n\t// Chrome User Agent from https://developer.chrome.com/multidevice/user-agent\n\tchrome: /^Mozilla\\/5\\.0 \\([^)]*(Windows|OS X|Linux)[^)]+\\) AppleWebKit\\/[0-9.]+ \\(KHTML, like Gecko\\) Chrome\\/(\\d+)[0-9.]+ (?:Mobile Safari|Safari)\\/[0-9.]+$/,\n\t// Safari User Agent from http://www.useragentstring.com/pages/Safari/\n\tsafari: /^Mozilla\\/5\\.0 \\([^)]*(Windows|OS X)[^)]+\\) AppleWebKit\\/[0-9.]+ \\(KHTML, like Gecko\\)(?: Version\\/([0-9]+)[0-9.]+)? Safari\\/[0-9.A-Z]+$/,\n\t// Android Chrome user agent: https://developers.google.com/chrome/mobile/docs/user-agent\n\tandroidChrome: /Android.*(?:; (.*) Build\\/).*Chrome\\/(\\d+)[0-9.]+/,\n\tiphone: / *CPU +iPhone +OS +([0-9]+)_(?:[0-9_])+ +like +Mac +OS +X */,\n\tipad: /\\(iPad; *CPU +OS +([0-9]+)_(?:[0-9_])+ +like +Mac +OS +X */,\n\tiosClient: /^Mozilla\\/5\\.0 \\(iOS\\) (?:ownCloud|Nextcloud)-iOS.*$/,\n\tandroidClient: /^Mozilla\\/5\\.0 \\(Android\\) (?:ownCloud|Nextcloud)-android.*$/,\n\tiosTalkClient: /^Mozilla\\/5\\.0 \\(iOS\\) Nextcloud-Talk.*$/,\n\tandroidTalkClient: /^Mozilla\\/5\\.0 \\(Android\\) Nextcloud-Talk.*$/,\n\t// DAVx5/3.3.8-beta2-gplay (2021/01/02; dav4jvm; okhttp/4.9.0) Android/10\n\tdavx5: /DAV(?:droid|x5)\\/([^ ]+)/,\n\t// Mozilla/5.0 (U; Linux; Maemo; Jolla; Sailfish; like Android 4.3) AppleWebKit/538.1 (KHTML, like Gecko) WebPirate/2.0 like Mobile Safari/538.1 (compatible)\n\twebPirate: /(Sailfish).*WebPirate\\/(\\d+)/,\n\t// Mozilla/5.0 (Maemo; Linux; U; Jolla; Sailfish; Mobile; rv:31.0) Gecko/31.0 Firefox/31.0 SailfishBrowser/1.0\n\tsailfishBrowser: /(Sailfish).*SailfishBrowser\\/(\\d+)/,\n}\nconst nameMap = {\n\tie: t('setting', 'Internet Explorer'),\n\tedge: t('setting', 'Edge'),\n\tfirefox: t('setting', 'Firefox'),\n\tchrome: t('setting', 'Google Chrome'),\n\tsafari: t('setting', 'Safari'),\n\tandroidChrome: t('setting', 'Google Chrome for Android'),\n\tiphone: t('setting', 'iPhone'),\n\tipad: t('setting', 'iPad'),\n\tiosClient: t('setting', '{productName} iOS app', { productName: window.oc_defaults.productName }),\n\tandroidClient: t('setting', '{productName} Android app', { productName: window.oc_defaults.productName }),\n\tiosTalkClient: t('setting', '{productName} Talk for iOS', { productName: window.oc_defaults.productName }),\n\tandroidTalkClient: t('setting', '{productName} Talk for Android', { productName: window.oc_defaults.productName }),\n\tdavx5: 'DAVx5',\n\twebPirate: 'WebPirate',\n\tsailfishBrowser: 'SailfishBrowser',\n}\nconst iconMap = {\n\tie: 'icon-desktop',\n\tedge: 'icon-desktop',\n\tfirefox: 'icon-desktop',\n\tchrome: 'icon-desktop',\n\tsafari: 'icon-desktop',\n\tandroidChrome: 'icon-phone',\n\tiphone: 'icon-phone',\n\tipad: 'icon-tablet',\n\tiosClient: 'icon-phone',\n\tandroidClient: 'icon-phone',\n\tiosTalkClient: 'icon-phone',\n\tandroidTalkClient: 'icon-phone',\n\tdavx5: 'icon-phone',\n\twebPirate: 'icon-link',\n\tsailfishBrowser: 'icon-link',\n}\n\nexport default {\n\tname: 'AuthToken',\n\tcomponents: {\n\t\tActions,\n\t\tActionButton,\n\t\tActionCheckbox,\n\t},\n\tprops: {\n\t\ttoken: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tshowMore: this.token.canScope || this.token.canDelete,\n\t\t\trenaming: false,\n\t\t\tnewName: '',\n\t\t\tactionOpen: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tlastActivityRelative() {\n\t\t\treturn OC.Util.relativeModifiedDate(this.token.lastActivity * 1000)\n\t\t},\n\t\tlastActivity() {\n\t\t\treturn OC.Util.formatDate(this.token.lastActivity * 1000, 'LLL')\n\t\t},\n\t\ticonName() {\n\t\t\t// pretty format sync client user agent\n\t\t\tconst matches = this.token.name.match(/Mozilla\\/5\\.0 \\((\\w+)\\) (?:mirall|csyncoC)\\/(\\d+\\.\\d+\\.\\d+)/)\n\n\t\t\tlet icon = ''\n\t\t\tif (matches) {\n\t\t\t\t/* eslint-disable-next-line */\n\t\t\t\tthis.token.name = t('settings', 'Sync client - {os}', {\n\t\t\t\t\tos: matches[1],\n\t\t\t\t\tversion: matches[2],\n\t\t\t\t})\n\t\t\t\ticon = 'icon-desktop'\n\t\t\t}\n\n\t\t\t// preserve title for cases where we format it further\n\t\t\tconst title = this.token.name\n\t\t\tlet name = this.token.name\n\t\t\tfor (const client in userAgentMap) {\n\t\t\t\tconst matches = title.match(userAgentMap[client])\n\t\t\t\tif (matches) {\n\t\t\t\t\tif (matches[2] && matches[1]) { // version number and os\n\t\t\t\t\t\tname = nameMap[client] + ' ' + matches[2] + ' - ' + matches[1]\n\t\t\t\t\t} else if (matches[1]) { // only version number\n\t\t\t\t\t\tname = nameMap[client] + ' ' + matches[1]\n\t\t\t\t\t} else {\n\t\t\t\t\t\tname = nameMap[client]\n\t\t\t\t\t}\n\n\t\t\t\t\ticon = iconMap[client]\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.token.current) {\n\t\t\t\tname = t('settings', 'This session')\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\ticon,\n\t\t\t\tname,\n\t\t\t}\n\t\t},\n\t\twiping() {\n\t\t\treturn this.token.type === 2\n\t\t},\n\t},\n\tmethods: {\n\t\tstartRename() {\n\t\t\t// Close action (popover menu)\n\t\t\tthis.actionOpen = false\n\n\t\t\tthis.newName = this.token.name\n\t\t\tthis.renaming = true\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.$refs.input.select()\n\t\t\t})\n\t\t},\n\t\tcancelRename() {\n\t\t\tthis.renaming = false\n\t\t},\n\t\trevoke() {\n\t\t\tthis.actionOpen = false\n\t\t\tthis.$emit('delete', this.token)\n\t\t},\n\t\trename() {\n\t\t\tthis.renaming = false\n\t\t\tthis.$emit('rename', this.token, this.newName)\n\t\t},\n\t\twipe() {\n\t\t\tthis.actionOpen = false\n\t\t\tthis.$emit('wipe', this.token)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.wiping {\n\t\tbackground-color: var(--color-background-darker);\n\t}\n\n\ttd {\n\t\tborder-top: 1px solid var(--color-border);\n\t\tmax-width: 200px;\n\t\twhite-space: normal;\n\t\tvertical-align: middle;\n\t\tposition: relative;\n\n\t\t&%icon {\n\t\t\toverflow: visible;\n\t\t\tposition: relative;\n\t\t\twidth: 44px;\n\t\t\theight: 44px;\n\t\t}\n\n\t\t&.token-name {\n\t\t\tpadding: 10px 6px;\n\n\t\t\t&.token-rename {\n\t\t\t\tpadding: 0;\n\t\t\t}\n\n\t\t\tinput {\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t}\n\t\t&.token-name .wiping-warning {\n\t\t\tcolor: var(--color-text-lighter);\n\t\t}\n\n\t\t&.more {\n\t\t\t@extend %icon;\n\t\t\tpadding: 0 10px;\n\t\t}\n\n\t\t&.client {\n\t\t\t@extend %icon;\n\n\t\t\tdiv {\n\t\t\t\topacity: 0.57;\n\t\t\t\twidth: 44px;\n\t\t\t\theight: 44px;\n\t\t\t}\n\t\t}\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthToken.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!./AuthToken.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!./AuthToken.vue?vue&type=style&index=0&id=1c8c3140&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!./AuthToken.vue?vue&type=style&index=0&id=1c8c3140&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AuthToken.vue?vue&type=template&id=1c8c3140&scoped=true&\"\nimport script from \"./AuthToken.vue?vue&type=script&lang=js&\"\nexport * from \"./AuthToken.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AuthToken.vue?vue&type=style&index=0&id=1c8c3140&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 \"1c8c3140\",\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('tr',{class:_vm.wiping,attrs:{\"data-id\":_vm.token.id}},[_c('td',{staticClass:\"client\"},[_c('div',{class:_vm.iconName.icon})]),_vm._v(\" \"),_c('td',{staticClass:\"token-name\"},[(_vm.token.canRename && _vm.renaming)?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newName),expression:\"newName\"}],ref:\"input\",attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.newName)},on:{\"keyup\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.rename.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }return _vm.cancelRename.apply(null, arguments)}],\"blur\":_vm.cancelRename,\"input\":function($event){if($event.target.composing){ return; }_vm.newName=$event.target.value}}}):_c('span',[_vm._v(_vm._s(_vm.iconName.name))]),_vm._v(\" \"),(_vm.wiping)?_c('span',{staticClass:\"wiping-warning\"},[_vm._v(\"(\"+_vm._s(_vm.t('settings', 'Marked for remote wipe'))+\")\")]):_vm._e()]),_vm._v(\" \"),_c('td',[_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(_vm.lastActivity),expression:\"lastActivity\"}],staticClass:\"last-activity\"},[_vm._v(_vm._s(_vm.lastActivityRelative))])]),_vm._v(\" \"),_c('td',{staticClass:\"more\"},[(!_vm.token.current)?_c('Actions',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\tcontent: _vm.t('settings', 'Device settings'),\n\t\t\t\tcontainer: 'body'\n\t\t\t}),expression:\"{\\n\\t\\t\\t\\tcontent: t('settings', 'Device settings'),\\n\\t\\t\\t\\tcontainer: 'body'\\n\\t\\t\\t}\",modifiers:{\"auto\":true}}],attrs:{\"open\":_vm.actionOpen},on:{\"update:open\":function($event){_vm.actionOpen=$event}}},[(_vm.token.type === 1)?_c('ActionCheckbox',{attrs:{\"checked\":_vm.token.scope.filesystem},on:{\"change\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.$emit('toggle-scope', _vm.token, 'filesystem', !_vm.token.scope.filesystem)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Allow filesystem access'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.token.canRename)?_c('ActionButton',{attrs:{\"icon\":\"icon-rename\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.startRename.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Rename'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.token.canDelete)?[(_vm.token.type !== 2)?[_c('ActionButton',{attrs:{\"icon\":\"icon-delete\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.revoke.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Revoke'))+\"\\n\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionButton',{attrs:{\"icon\":\"icon-delete\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.wipe.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Wipe device'))+\"\\n\\t\\t\\t\\t\\t\")])]:(_vm.token.type === 2)?_c('ActionButton',{attrs:{\"icon\":\"icon-delete\",\"title\":_vm.t('settings', 'Revoke')},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.revoke.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Revoking this token might prevent the wiping of your device if it has not started the wipe yet.'))+\"\\n\\t\\t\\t\\t\")]):_vm._e()]:_vm._e()],2):_vm._e()],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthTokenList.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!./AuthTokenList.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\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\n<template>\n\t<table id=\"app-tokens-table\">\n\t\t<thead v-if=\"tokens.length\">\n\t\t\t<tr>\n\t\t\t\t<th />\n\t\t\t\t<th>{{ t('settings', 'Device') }}</th>\n\t\t\t\t<th>{{ t('settings', 'Last activity') }}</th>\n\t\t\t\t<th />\n\t\t\t</tr>\n\t\t</thead>\n\t\t<tbody class=\"token-list\">\n\t\t\t<AuthToken v-for=\"token in sortedTokens\"\n\t\t\t\t:key=\"token.id\"\n\t\t\t\t:token=\"token\"\n\t\t\t\t@toggle-scope=\"toggleScope\"\n\t\t\t\t@rename=\"rename\"\n\t\t\t\t@delete=\"onDelete\"\n\t\t\t\t@wipe=\"onWipe\" />\n\t\t</tbody>\n\t</table>\n</template>\n\n<script>\nimport AuthToken from './AuthToken'\n\nexport default {\n\tname: 'AuthTokenList',\n\tcomponents: {\n\t\tAuthToken,\n\t},\n\tprops: {\n\t\ttokens: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomputed: {\n\t\tsortedTokens() {\n\t\t\treturn this.tokens.slice().sort((t1, t2) => {\n\t\t\t\tconst ts1 = parseInt(t1.lastActivity, 10)\n\t\t\t\tconst ts2 = parseInt(t2.lastActivity, 10)\n\t\t\t\treturn ts2 - ts1\n\t\t\t})\n\t\t},\n\t},\n\tmethods: {\n\t\ttoggleScope(token, scope, value) {\n\t\t\t// Just pass it on\n\t\t\tthis.$emit('toggle-scope', token, scope, value)\n\t\t},\n\t\trename(token, newName) {\n\t\t\t// Just pass it on\n\t\t\tthis.$emit('rename', token, newName)\n\t\t},\n\t\tonDelete(token) {\n\t\t\t// Just pass it on\n\t\t\tthis.$emit('delete', token)\n\t\t},\n\t\tonWipe(token) {\n\t\t\t// Just pass it on\n\t\t\tthis.$emit('wipe', token)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\ttable {\n\t\twidth: 100%;\n\t\tmin-height: 50px;\n\t\tpadding-top: 5px;\n\t\tmax-width: 580px;\n\n\t\tth {\n\t\t\topacity: .5;\n\t\t\tpadding: 10px 0;\n\t\t}\n\t}\n\n\t.token-list {\n\t\ttd > a.icon-more {\n\t\t\ttransition: opacity var(--animation-quick);\n\t\t}\n\n\t\ta.icon-more {\n\t\t\tpadding: 14px;\n\t\t\tdisplay: block;\n\t\t\twidth: 44px;\n\t\t\theight: 44px;\n\t\t\topacity: .5;\n\t\t}\n\n\t\ttr {\n\t\t\t&:hover td > a.icon,\n\t\t\ttd > a.icon:focus,\n\t\t\t&.active td > a.icon {\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\t}\n</style>\n\n<!-- some styles are not scoped to make them work on subcomponents -->\n<style lang=\"scss\">\n\t#app-tokens-table {\n\t\ttr > *:nth-child(2) {\n\t\t\tpadding-left: 6px;\n\t\t}\n\n\t\ttr > *:nth-child(3) {\n\t\t\ttext-align: right;\n\t\t}\n\t}\n</style>\n","\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!./AuthTokenList.vue?vue&type=style&index=0&id=4f8ceff3&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!./AuthTokenList.vue?vue&type=style&index=0&id=4f8ceff3&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","\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!./AuthTokenList.vue?vue&type=style&index=1&lang=scss&\";\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!./AuthTokenList.vue?vue&type=style&index=1&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AuthTokenList.vue?vue&type=template&id=4f8ceff3&scoped=true&\"\nimport script from \"./AuthTokenList.vue?vue&type=script&lang=js&\"\nexport * from \"./AuthTokenList.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AuthTokenList.vue?vue&type=style&index=0&id=4f8ceff3&lang=scss&scoped=true&\"\nimport style1 from \"./AuthTokenList.vue?vue&type=style&index=1&lang=scss&\"\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 \"4f8ceff3\",\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('table',{attrs:{\"id\":\"app-tokens-table\"}},[(_vm.tokens.length)?_c('thead',[_c('tr',[_c('th'),_vm._v(\" \"),_c('th',[_vm._v(_vm._s(_vm.t('settings', 'Device')))]),_vm._v(\" \"),_c('th',[_vm._v(_vm._s(_vm.t('settings', 'Last activity')))]),_vm._v(\" \"),_c('th')])]):_vm._e(),_vm._v(\" \"),_c('tbody',{staticClass:\"token-list\"},_vm._l((_vm.sortedTokens),function(token){return _c('AuthToken',{key:token.id,attrs:{\"token\":token},on:{\"toggle-scope\":_vm.toggleScope,\"rename\":_vm.rename,\"delete\":_vm.onDelete,\"wipe\":_vm.onWipe}})}),1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\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\n<template>\n\t<div v-if=\"!adding\">\n\t\t<input v-model=\"deviceName\"\n\t\t\ttype=\"text\"\n\t\t\t:maxlength=\"120\"\n\t\t\t:disabled=\"loading\"\n\t\t\t:placeholder=\"t('settings', 'App name')\"\n\t\t\t@keydown.enter=\"submit\">\n\t\t<Button :disabled=\"loading\"\n\t\t\t@click=\"submit\">\n\t\t\t{{ t('settings', 'Create new app password') }}\n\t\t</Button>\n\t</div>\n\t<div v-else>\n\t\t{{ t('settings', 'Use the credentials below to configure your app or device.') }}\n\t\t{{ t('settings', 'For security reasons this password will only be shown once.') }}\n\t\t<div class=\"app-password-row\">\n\t\t\t<span class=\"app-password-label\">{{ t('settings', 'Username') }}</span>\n\t\t\t<input :value=\"loginName\"\n\t\t\t\ttype=\"text\"\n\t\t\t\tclass=\"monospaced\"\n\t\t\t\treadonly=\"readonly\"\n\t\t\t\t@focus=\"selectInput\">\n\t\t</div>\n\t\t<div class=\"app-password-row\">\n\t\t\t<span class=\"app-password-label\">{{ t('settings', 'Password') }}</span>\n\t\t\t<input ref=\"appPassword\"\n\t\t\t\t:value=\"appPassword\"\n\t\t\t\ttype=\"text\"\n\t\t\t\tclass=\"monospaced\"\n\t\t\t\treadonly=\"readonly\"\n\t\t\t\t@focus=\"selectInput\">\n\t\t\t<a ref=\"clipboardButton\"\n\t\t\t\tv-tooltip=\"copyTooltipOptions\"\n\t\t\t\tv-clipboard:copy=\"appPassword\"\n\t\t\t\tv-clipboard:success=\"onCopyPassword\"\n\t\t\t\tv-clipboard:error=\"onCopyPasswordFailed\"\n\t\t\t\tclass=\"icon icon-clippy\"\n\t\t\t\t@mouseover=\"hoveringCopyButton = true\"\n\t\t\t\t@mouseleave=\"hoveringCopyButton = false\" />\n\t\t\t<Button @click=\"reset\">\n\t\t\t\t{{ t('settings', 'Done') }}\n\t\t\t</Button>\n\t\t</div>\n\t\t<div class=\"app-password-row\">\n\t\t\t<span class=\"app-password-label\" />\n\t\t\t<a v-if=\"!showQR\"\n\t\t\t\t@click=\"showQR = true\">\n\t\t\t\t{{ t('settings', 'Show QR code for mobile apps') }}\n\t\t\t</a>\n\t\t\t<QR v-else\n\t\t\t\t:value=\"qrUrl\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport QR from '@chenfengyuan/vue-qrcode'\nimport confirmPassword from '@nextcloud/password-confirmation'\nimport { getRootUrl } from '@nextcloud/router'\nimport Button from '@nextcloud/vue/dist/Components/Button'\n\nexport default {\n\tname: 'AuthTokenSetupDialogue',\n\tcomponents: {\n\t\tQR,\n\t\tButton,\n\t},\n\tprops: {\n\t\tadd: {\n\t\t\ttype: Function,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tadding: false,\n\t\t\tloading: false,\n\t\t\tdeviceName: '',\n\t\t\tappPassword: '',\n\t\t\tloginName: '',\n\t\t\tpasswordCopied: false,\n\t\t\tshowQR: false,\n\t\t\tqrUrl: '',\n\t\t\thoveringCopyButton: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tcopyTooltipOptions() {\n\t\t\tconst base = {\n\t\t\t\thideOnTargetClick: false,\n\t\t\t\ttrigger: 'manual',\n\t\t\t}\n\n\t\t\tif (this.passwordCopied) {\n\t\t\t\treturn {\n\t\t\t\t\t...base,\n\t\t\t\t\tcontent: t('settings', 'Copied!'),\n\t\t\t\t\tshow: true,\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn {\n\t\t\t\t\t...base,\n\t\t\t\t\tcontent: t('settings', 'Copy'),\n\t\t\t\t\tshow: this.hoveringCopyButton,\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\tselectInput(e) {\n\t\t\te.currentTarget.select()\n\t\t},\n\t\tsubmit() {\n\t\t\tconfirmPassword()\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.loading = true\n\t\t\t\t\treturn this.add(this.deviceName)\n\t\t\t\t})\n\t\t\t\t.then(token => {\n\t\t\t\t\tthis.adding = true\n\t\t\t\t\tthis.loginName = token.loginName\n\t\t\t\t\tthis.appPassword = token.token\n\n\t\t\t\t\tconst server = window.location.protocol + '//' + window.location.host + getRootUrl()\n\t\t\t\t\tthis.qrUrl = `nc://login/user:${token.loginName}&password:${token.token}&server:${server}`\n\n\t\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t\tthis.$refs.appPassword.select()\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\t.catch(err => {\n\t\t\t\t\tconsole.error('could not create a new app password', err)\n\t\t\t\t\tOC.Notification.showTemporary(t('settings', 'Error while creating device token'))\n\n\t\t\t\t\tthis.reset()\n\t\t\t\t})\n\t\t},\n\t\tonCopyPassword() {\n\t\t\tthis.passwordCopied = true\n\t\t\tthis.$refs.clipboardButton.blur()\n\t\t\tsetTimeout(() => { this.passwordCopied = false }, 3000)\n\t\t},\n\t\tonCopyPasswordFailed() {\n\t\t\tOC.Notification.showTemporary(t('settings', 'Could not copy app password. Please copy it manually.'))\n\t\t},\n\t\treset() {\n\t\t\tthis.adding = false\n\t\t\tthis.loading = false\n\t\t\tthis.showQR = false\n\t\t\tthis.qrUrl = ''\n\t\t\tthis.deviceName = ''\n\t\t\tthis.appPassword = ''\n\t\t\tthis.loginName = ''\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.app-password-row {\n\t\tdisplay: table-row;\n\n\t\t.icon {\n\t\t\tbackground-size: 16px 16px;\n\t\t\tdisplay: inline-block;\n\t\t\tposition: relative;\n\t\t\ttop: 3px;\n\t\t\tmargin-left: 5px;\n\t\t\tmargin-right: 8px;\n\t\t}\n\n\t}\n\n\t.app-password-label {\n\t\tdisplay: table-cell;\n\t\tpadding-right: 1em;\n\t\ttext-align: right;\n\t\tvertical-align: middle;\n\t}\n\n\t.monospaced {\n\t\twidth: 245px;\n\t\tfont-family: monospace;\n\t}\n\n\t.button-vue{\n\t\tdisplay:inline-block;\n\t\tmargin: 3px 3px 3px 3px;\n\t}\n\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthTokenSetupDialogue.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!./AuthTokenSetupDialogue.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!./AuthTokenSetupDialogue.vue?vue&type=style&index=0&id=6a24fa34&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!./AuthTokenSetupDialogue.vue?vue&type=style&index=0&id=6a24fa34&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AuthTokenSetupDialogue.vue?vue&type=template&id=6a24fa34&scoped=true&\"\nimport script from \"./AuthTokenSetupDialogue.vue?vue&type=script&lang=js&\"\nexport * from \"./AuthTokenSetupDialogue.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AuthTokenSetupDialogue.vue?vue&type=style&index=0&id=6a24fa34&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 \"6a24fa34\",\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 (!_vm.adding)?_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.deviceName),expression:\"deviceName\"}],attrs:{\"type\":\"text\",\"maxlength\":120,\"disabled\":_vm.loading,\"placeholder\":_vm.t('settings', 'App name')},domProps:{\"value\":(_vm.deviceName)},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.submit.apply(null, arguments)},\"input\":function($event){if($event.target.composing){ return; }_vm.deviceName=$event.target.value}}}),_vm._v(\" \"),_c('Button',{attrs:{\"disabled\":_vm.loading},on:{\"click\":_vm.submit}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Create new app password'))+\"\\n\\t\")])],1):_c('div',[_vm._v(\"\\n\\t\"+_vm._s(_vm.t('settings', 'Use the credentials below to configure your app or device.'))+\"\\n\\t\"+_vm._s(_vm.t('settings', 'For security reasons this password will only be shown once.'))+\"\\n\\t\"),_c('div',{staticClass:\"app-password-row\"},[_c('span',{staticClass:\"app-password-label\"},[_vm._v(_vm._s(_vm.t('settings', 'Username')))]),_vm._v(\" \"),_c('input',{staticClass:\"monospaced\",attrs:{\"type\":\"text\",\"readonly\":\"readonly\"},domProps:{\"value\":_vm.loginName},on:{\"focus\":_vm.selectInput}})]),_vm._v(\" \"),_c('div',{staticClass:\"app-password-row\"},[_c('span',{staticClass:\"app-password-label\"},[_vm._v(_vm._s(_vm.t('settings', 'Password')))]),_vm._v(\" \"),_c('input',{ref:\"appPassword\",staticClass:\"monospaced\",attrs:{\"type\":\"text\",\"readonly\":\"readonly\"},domProps:{\"value\":_vm.appPassword},on:{\"focus\":_vm.selectInput}}),_vm._v(\" \"),_c('a',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(_vm.copyTooltipOptions),expression:\"copyTooltipOptions\"},{name:\"clipboard\",rawName:\"v-clipboard:copy\",value:(_vm.appPassword),expression:\"appPassword\",arg:\"copy\"},{name:\"clipboard\",rawName:\"v-clipboard:success\",value:(_vm.onCopyPassword),expression:\"onCopyPassword\",arg:\"success\"},{name:\"clipboard\",rawName:\"v-clipboard:error\",value:(_vm.onCopyPasswordFailed),expression:\"onCopyPasswordFailed\",arg:\"error\"}],ref:\"clipboardButton\",staticClass:\"icon icon-clippy\",on:{\"mouseover\":function($event){_vm.hoveringCopyButton = true},\"mouseleave\":function($event){_vm.hoveringCopyButton = false}}}),_vm._v(\" \"),_c('Button',{on:{\"click\":_vm.reset}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Done'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('div',{staticClass:\"app-password-row\"},[_c('span',{staticClass:\"app-password-label\"}),_vm._v(\" \"),(!_vm.showQR)?_c('a',{on:{\"click\":function($event){_vm.showQR = true}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show QR code for mobile apps'))+\"\\n\\t\\t\")]):_c('QR',{attrs:{\"value\":_vm.qrUrl}})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\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\n<template>\n\t<div id=\"security\" class=\"section\">\n\t\t<h2>{{ t('settings', 'Devices & sessions', {}, undefined, {sanitize: false}) }}</h2>\n\t\t<p class=\"settings-hint hidden-when-empty\">\n\t\t\t{{ t('settings', 'Web, desktop and mobile clients currently logged in to your account.') }}\n\t\t</p>\n\t\t<AuthTokenList :tokens=\"tokens\"\n\t\t\t@toggle-scope=\"toggleTokenScope\"\n\t\t\t@rename=\"rename\"\n\t\t\t@delete=\"deleteToken\"\n\t\t\t@wipe=\"wipeToken\" />\n\t\t<AuthTokenSetupDialogue v-if=\"canCreateToken\" :add=\"addNewToken\" />\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport confirmPassword from '@nextcloud/password-confirmation'\nimport { generateUrl } from '@nextcloud/router'\n\nimport AuthTokenList from './AuthTokenList'\nimport AuthTokenSetupDialogue from './AuthTokenSetupDialogue'\n\nconst confirm = () => {\n\treturn new Promise(resolve => {\n\t\tOC.dialogs.confirm(\n\t\t\tt('settings', 'Do you really want to wipe your data from this device?'),\n\t\t\tt('settings', 'Confirm wipe'),\n\t\t\tresolve,\n\t\t\ttrue\n\t\t)\n\t})\n}\n\n/**\n * Tap into a promise without losing the value\n *\n * @param {Function} cb the callback\n * @return {any} val the value\n */\nconst tap = cb => val => {\n\tcb(val)\n\treturn val\n}\n\nexport default {\n\tname: 'AuthTokenSection',\n\tcomponents: {\n\t\tAuthTokenSetupDialogue,\n\t\tAuthTokenList,\n\t},\n\tprops: {\n\t\ttokens: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\tcanCreateToken: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tbaseUrl: generateUrl('/settings/personal/authtokens'),\n\t\t}\n\t},\n\tmethods: {\n\t\taddNewToken(name) {\n\t\t\tconsole.debug('creating a new app token', name)\n\n\t\t\tconst data = {\n\t\t\t\tname,\n\t\t\t}\n\t\t\treturn axios.post(this.baseUrl, data)\n\t\t\t\t.then(resp => resp.data)\n\t\t\t\t.then(tap(() => console.debug('app token created')))\n\t\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\t\t.then(tap(data => this.tokens.push(data.deviceToken)))\n\t\t\t\t.catch(err => {\n\t\t\t\t\tconsole.error.bind('could not create app password', err)\n\t\t\t\t\tOC.Notification.showTemporary(t('settings', 'Error while creating device token'))\n\t\t\t\t\tthrow err\n\t\t\t\t})\n\t\t},\n\t\ttoggleTokenScope(token, scope, value) {\n\t\t\tconsole.debug('updating app token scope', token.id, scope, value)\n\n\t\t\tconst oldVal = token.scope[scope]\n\t\t\ttoken.scope[scope] = value\n\n\t\t\treturn this.updateToken(token)\n\t\t\t\t.then(tap(() => console.debug('app token scope updated')))\n\t\t\t\t.catch(err => {\n\t\t\t\t\tconsole.error.bind('could not update app token scope', err)\n\t\t\t\t\tOC.Notification.showTemporary(t('settings', 'Error while updating device token scope'))\n\n\t\t\t\t\t// Restore\n\t\t\t\t\ttoken.scope[scope] = oldVal\n\n\t\t\t\t\tthrow err\n\t\t\t\t})\n\t\t},\n\t\trename(token, newName) {\n\t\t\tconsole.debug('renaming app token', token.id, token.name, newName)\n\n\t\t\tconst oldName = token.name\n\t\t\ttoken.name = newName\n\n\t\t\treturn this.updateToken(token)\n\t\t\t\t.then(tap(() => console.debug('app token name updated')))\n\t\t\t\t.catch(err => {\n\t\t\t\t\tconsole.error.bind('could not update app token name', err)\n\t\t\t\t\tOC.Notification.showTemporary(t('settings', 'Error while updating device token name'))\n\n\t\t\t\t\t// Restore\n\t\t\t\t\ttoken.name = oldName\n\t\t\t\t})\n\t\t},\n\t\tupdateToken(token) {\n\t\t\treturn axios.put(this.baseUrl + '/' + token.id, token)\n\t\t\t\t.then(resp => resp.data)\n\t\t},\n\t\tdeleteToken(token) {\n\t\t\tconsole.debug('deleting app token', token)\n\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.tokens = this.tokens.filter(t => t !== token)\n\n\t\t\treturn axios.delete(this.baseUrl + '/' + token.id)\n\t\t\t\t.then(resp => resp.data)\n\t\t\t\t.then(tap(() => console.debug('app token deleted')))\n\t\t\t\t.catch(err => {\n\t\t\t\t\tconsole.error.bind('could not delete app token', err)\n\t\t\t\t\tOC.Notification.showTemporary(t('settings', 'Error while deleting the token'))\n\n\t\t\t\t\t// Restore\n\t\t\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\t\t\tthis.tokens.push(token)\n\t\t\t\t})\n\t\t},\n\t\tasync wipeToken(token) {\n\t\t\tconsole.debug('wiping app token', token)\n\n\t\t\ttry {\n\t\t\t\tawait confirmPassword()\n\n\t\t\t\tif (!(await confirm())) {\n\t\t\t\t\tconsole.debug('wipe aborted by user')\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tawait axios.post(this.baseUrl + '/wipe/' + token.id)\n\t\t\t\tconsole.debug('app token marked for wipe')\n\n\t\t\t\ttoken.type = 2\n\t\t\t} catch (err) {\n\t\t\t\tconsole.error('could not wipe app token', err)\n\t\t\t\tOC.Notification.showTemporary(t('settings', 'Error while wiping the device with the token'))\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthTokenSection.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!./AuthTokenSection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AuthTokenSection.vue?vue&type=template&id=451cdc4a&scoped=true&\"\nimport script from \"./AuthTokenSection.vue?vue&type=script&lang=js&\"\nexport * from \"./AuthTokenSection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"451cdc4a\",\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\",attrs:{\"id\":\"security\"}},[_c('h2',[_vm._v(_vm._s(_vm.t('settings', 'Devices & sessions', {}, undefined, {sanitize: false})))]),_vm._v(\" \"),_c('p',{staticClass:\"settings-hint hidden-when-empty\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Web, desktop and mobile clients currently logged in to your account.'))+\"\\n\\t\")]),_vm._v(\" \"),_c('AuthTokenList',{attrs:{\"tokens\":_vm.tokens},on:{\"toggle-scope\":_vm.toggleTokenScope,\"rename\":_vm.rename,\"delete\":_vm.deleteToken,\"wipe\":_vm.wipeToken}}),_vm._v(\" \"),(_vm.canCreateToken)?_c('AuthTokenSetupDialogue',{attrs:{\"add\":_vm.addNewToken}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport { loadState } from '@nextcloud/initial-state'\nimport Vue from 'vue'\nimport VueClipboard from 'vue-clipboard2'\nimport VTooltip from 'v-tooltip'\n\nimport AuthTokenSection from './components/AuthTokenSection'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(OC.requestToken)\n\nVue.use(VueClipboard)\nVue.use(VTooltip, { defaultHtml: false })\nVue.prototype.t = t\n\nconst View = Vue.extend(AuthTokenSection)\nnew View({\n\tpropsData: {\n\t\ttokens: loadState('settings', 'app_tokens'),\n\t\tcanCreateToken: loadState('settings', 'can_create_app_token'),\n\t},\n}).$mount('#security-authtokens')\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, \".wiping[data-v-1c8c3140]{background-color:var(--color-background-darker)}td[data-v-1c8c3140]{border-top:1px solid var(--color-border);max-width:200px;white-space:normal;vertical-align:middle;position:relative}td.client[data-v-1c8c3140],td.more[data-v-1c8c3140]{overflow:visible;position:relative;width:44px;height:44px}td.token-name[data-v-1c8c3140]{padding:10px 6px}td.token-name.token-rename[data-v-1c8c3140]{padding:0}td.token-name input[data-v-1c8c3140]{width:100%;margin:0}td.token-name .wiping-warning[data-v-1c8c3140]{color:var(--color-text-lighter)}td.more[data-v-1c8c3140]{padding:0 10px}td.client div[data-v-1c8c3140]{opacity:.57;width:44px;height:44px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AuthToken.vue\"],\"names\":[],\"mappings\":\"AAiQA,yBACC,+CAAA,CAGD,oBACC,wCAAA,CACA,eAAA,CACA,kBAAA,CACA,qBAAA,CACA,iBAAA,CAEA,oDACC,gBAAA,CACA,iBAAA,CACA,UAAA,CACA,WAAA,CAGD,+BACC,gBAAA,CAEA,4CACC,SAAA,CAGD,qCACC,UAAA,CACA,QAAA,CAGF,+CACC,+BAAA,CAGD,yBAEC,cAAA,CAMA,+BACC,WAAA,CACA,UAAA,CACA,WAAA\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.wiping {\\n\\tbackground-color: var(--color-background-darker);\\n}\\n\\ntd {\\n\\tborder-top: 1px solid var(--color-border);\\n\\tmax-width: 200px;\\n\\twhite-space: normal;\\n\\tvertical-align: middle;\\n\\tposition: relative;\\n\\n\\t&%icon {\\n\\t\\toverflow: visible;\\n\\t\\tposition: relative;\\n\\t\\twidth: 44px;\\n\\t\\theight: 44px;\\n\\t}\\n\\n\\t&.token-name {\\n\\t\\tpadding: 10px 6px;\\n\\n\\t\\t&.token-rename {\\n\\t\\t\\tpadding: 0;\\n\\t\\t}\\n\\n\\t\\tinput {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tmargin: 0;\\n\\t\\t}\\n\\t}\\n\\t&.token-name .wiping-warning {\\n\\t\\tcolor: var(--color-text-lighter);\\n\\t}\\n\\n\\t&.more {\\n\\t\\t@extend %icon;\\n\\t\\tpadding: 0 10px;\\n\\t}\\n\\n\\t&.client {\\n\\t\\t@extend %icon;\\n\\n\\t\\tdiv {\\n\\t\\t\\topacity: 0.57;\\n\\t\\t\\twidth: 44px;\\n\\t\\t\\theight: 44px;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"table[data-v-4f8ceff3]{width:100%;min-height:50px;padding-top:5px;max-width:580px}table th[data-v-4f8ceff3]{opacity:.5;padding:10px 0}.token-list td>a.icon-more[data-v-4f8ceff3]{transition:opacity var(--animation-quick)}.token-list a.icon-more[data-v-4f8ceff3]{padding:14px;display:block;width:44px;height:44px;opacity:.5}.token-list tr:hover td>a.icon[data-v-4f8ceff3],.token-list tr td>a.icon[data-v-4f8ceff3]:focus,.token-list tr.active td>a.icon[data-v-4f8ceff3]{opacity:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AuthTokenList.vue\"],\"names\":[],\"mappings\":\"AAwFA,uBACC,UAAA,CACA,eAAA,CACA,eAAA,CACA,eAAA,CAEA,0BACC,UAAA,CACA,cAAA,CAKD,4CACC,yCAAA,CAGD,yCACC,YAAA,CACA,aAAA,CACA,UAAA,CACA,WAAA,CACA,UAAA,CAIA,iJAGC,SAAA\",\"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\\ntable {\\n\\twidth: 100%;\\n\\tmin-height: 50px;\\n\\tpadding-top: 5px;\\n\\tmax-width: 580px;\\n\\n\\tth {\\n\\t\\topacity: .5;\\n\\t\\tpadding: 10px 0;\\n\\t}\\n}\\n\\n.token-list {\\n\\ttd > a.icon-more {\\n\\t\\ttransition: opacity var(--animation-quick);\\n\\t}\\n\\n\\ta.icon-more {\\n\\t\\tpadding: 14px;\\n\\t\\tdisplay: block;\\n\\t\\twidth: 44px;\\n\\t\\theight: 44px;\\n\\t\\topacity: .5;\\n\\t}\\n\\n\\ttr {\\n\\t\\t&:hover td > a.icon,\\n\\t\\ttd > a.icon:focus,\\n\\t\\t&.active td > a.icon {\\n\\t\\t\\topacity: 1;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"#app-tokens-table tr>*:nth-child(2){padding-left:6px}#app-tokens-table tr>*:nth-child(3){text-align:right}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AuthTokenList.vue\"],\"names\":[],\"mappings\":\"AA8HC,oCACC,gBAAA,CAGD,oCACC,gBAAA\",\"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#app-tokens-table {\\n\\ttr > *:nth-child(2) {\\n\\t\\tpadding-left: 6px;\\n\\t}\\n\\n\\ttr > *:nth-child(3) {\\n\\t\\ttext-align: right;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".app-password-row[data-v-6a24fa34]{display:table-row}.app-password-row .icon[data-v-6a24fa34]{background-size:16px 16px;display:inline-block;position:relative;top:3px;margin-left:5px;margin-right:8px}.app-password-label[data-v-6a24fa34]{display:table-cell;padding-right:1em;text-align:right;vertical-align:middle}.monospaced[data-v-6a24fa34]{width:245px;font-family:monospace}.button-vue[data-v-6a24fa34]{display:inline-block;margin:3px 3px 3px 3px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AuthTokenSetupDialogue.vue\"],\"names\":[],\"mappings\":\"AAqLA,mCACC,iBAAA,CAEA,yCACC,yBAAA,CACA,oBAAA,CACA,iBAAA,CACA,OAAA,CACA,eAAA,CACA,gBAAA,CAKF,qCACC,kBAAA,CACA,iBAAA,CACA,gBAAA,CACA,qBAAA,CAGD,6BACC,WAAA,CACA,qBAAA,CAGD,6BACC,oBAAA,CACA,sBAAA\",\"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.app-password-row {\\n\\tdisplay: table-row;\\n\\n\\t.icon {\\n\\t\\tbackground-size: 16px 16px;\\n\\t\\tdisplay: inline-block;\\n\\t\\tposition: relative;\\n\\t\\ttop: 3px;\\n\\t\\tmargin-left: 5px;\\n\\t\\tmargin-right: 8px;\\n\\t}\\n\\n}\\n\\n.app-password-label {\\n\\tdisplay: table-cell;\\n\\tpadding-right: 1em;\\n\\ttext-align: right;\\n\\tvertical-align: middle;\\n}\\n\\n.monospaced {\\n\\twidth: 245px;\\n\\tfont-family: monospace;\\n}\\n\\n.button-vue{\\n\\tdisplay:inline-block;\\n\\tmargin: 3px 3px 3px 3px;\\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 = 4783;","__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\t4783: 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));","__webpack_require__.nc = undefined;","// 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__(68680); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","component","_vm","this","_h","$createElement","_c","_self","class","wiping","attrs","token","id","staticClass","iconName","icon","_v","canRename","renaming","directives","name","rawName","value","expression","ref","domProps","on","$event","type","indexOf","_k","keyCode","key","rename","apply","arguments","cancelRename","target","composing","newName","_s","t","_e","lastActivityRelative","current","content","container","modifiers","actionOpen","scope","filesystem","stopPropagation","preventDefault","$emit","startRename","revoke","wipe","tokens","_l","toggleScope","onDelete","onWipe","adding","loginName","selectInput","appPassword","arg","hoveringCopyButton","reset","showQR","qrUrl","loading","submit","deviceName","undefined","sanitize","toggleTokenScope","deleteToken","wipeToken","addNewToken","__webpack_nonce__","btoa","OC","requestToken","Vue","VueClipboard","VTooltip","defaultHtml","AuthTokenSection","propsData","loadState","canCreateToken","$mount","___CSS_LOADER_EXPORT___","push","module","__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","Object","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/settings-vue-settings-personal-webauthn.js b/dist/settings-vue-settings-personal-webauthn.js
index ba15640e707..51b88828a14 100644
--- a/dist/settings-vue-settings-personal-webauthn.js
+++ b/dist/settings-vue-settings-personal-webauthn.js
@@ -1,3 +1,3 @@
/*! For license information please see settings-vue-settings-personal-webauthn.js.LICENSE.txt */
-!function(){"use strict";var e,n={9802:function(e,n,r){var i=r(20144),a=r(16453),o=r(10128),s=r.n(o),c=r(66415),u=r.n(c),d=(0,r(17499).IY)().setApp("settings").detectUser().build(),l=r(4820),h=r(79753);function p(t,e,n,r,i,a,o){try{var s=t[a](o),c=s.value}catch(t){return void n(t)}s.done?e(c):Promise.resolve(c).then(r,i)}function g(t){return function(){var e=this,n=arguments;return new Promise((function(r,i){var a=t.apply(e,n);function o(t){p(a,r,i,o,s,"next",t)}function s(t){p(a,r,i,o,s,"throw",t)}o(void 0)}))}}function f(){return(f=g(regeneratorRuntime.mark((function t(){var e,n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e=(0,h.generateUrl)("/settings/api/personal/webauthn/registration"),t.next=3,l.default.get(e);case 3:return n=t.sent,t.abrupt("return",n.data);case 5:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function v(t,e){return A.apply(this,arguments)}function A(){return(A=g(regeneratorRuntime.mark((function t(e,n){var r,i;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=(0,h.generateUrl)("/settings/api/personal/webauthn/registration"),t.next=3,l.default.post(r,{name:e,data:n});case 3:return i=t.sent,t.abrupt("return",i.data);case 5:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function b(t){return m.apply(this,arguments)}function m(){return(m=g(regeneratorRuntime.mark((function t(e){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=(0,h.generateUrl)("/settings/api/personal/webauthn/registration/".concat(e)),t.next=3,l.default.delete(n);case 3:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function w(t,e,n,r,i,a,o){try{var s=t[a](o),c=s.value}catch(t){return void n(t)}s.done?e(c):Promise.resolve(c).then(r,i)}function y(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}var R=function(t){return function(e){return d.debug(t),e}},S=Object.freeze({READY:1,REGISTRATION:2,NAMING:3,PERSIST:4}),C={name:"AddDevice",props:{httpWarning:Boolean,isHttps:{type:Boolean,default:!1},isLocalhost:{type:Boolean,default:!1}},data:function(){return{name:"",credential:{},RegistrationSteps:S,step:S.READY}},methods:{arrayToBase64String:function(t){return btoa(String.fromCharCode.apply(String,function(t){if(Array.isArray(t))return y(t)}(e=t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(e)||function(t,e){if(t){if("string"==typeof t)return y(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(t,e):void 0}}(e)||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.")}()));var e},start:function(){var t=this;return this.step=S.REGISTRATION,console.debug("Starting WebAuthn registration"),s()().then(this.getRegistrationData).then(this.register.bind(this)).then((function(){t.step=S.NAMING})).catch((function(e){console.error(e.name,e.message),t.step=S.READY}))},getRegistrationData:function(){return console.debug("Fetching webauthn registration data"),function(){return f.apply(this,arguments)}().then((function(t){return console.debug(t),t.challenge=Uint8Array.from(function(t){var e=(t=t.replace(/-/g,"+").replace(/_/g,"/")).length%4;if(e){if(1===e)throw new Error("InvalidLengthError: Input base64url string is the wrong length to determine padding");t+=new Array(5-e).join("=")}return window.atob(t)}(t.challenge),(function(t){return t.charCodeAt(0)})),t.user.id=Uint8Array.from(t.user.id,(function(t){return t.charCodeAt(0)})),t})).catch((function(e){throw console.error("Error getting webauthn registration data from server",e),new Error(t("settings","Server error while trying to add WebAuthn device"))}))},register:function(t){var e=this;return console.debug("starting webauthn registration"),navigator.credentials.create({publicKey:t}).then((function(t){e.credential={id:t.id,type:t.type,rawId:e.arrayToBase64String(new Uint8Array(t.rawId)),response:{clientDataJSON:e.arrayToBase64String(new Uint8Array(t.response.clientDataJSON)),attestationObject:e.arrayToBase64String(new Uint8Array(t.response.attestationObject))}}}))},submit:function(){var t=this;return this.step=S.PERSIST,s()().then(R("confirmed password")).then(this.saveRegistrationData).then(R("registration data saved")).then((function(){return t.reset()})).then(R("app reset")).catch(console.error.bind(this))},saveRegistrationData:function(){var e,n=this;return(e=regeneratorRuntime.mark((function e(){var r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,v(n.name,JSON.stringify(n.credential));case 3:r=e.sent,d.info("new device added",{device:r}),n.$emit("added",r),e.next=12;break;case 8:throw e.prev=8,e.t0=e.catch(0),d.error("Error persisting webauthn registration",{error:e.t0}),new Error(t("settings","Server error while trying to complete WebAuthn device registration"));case 12:case"end":return e.stop()}}),e,null,[[0,8]])})),function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function o(t){w(a,r,i,o,s,"next",t)}function s(t){w(a,r,i,o,s,"throw",t)}o(void 0)}))})()},reset:function(){this.name="",this.registrationData={},this.step=S.READY}}},T=C,I=r(93379),x=r.n(I),D=r(7795),E=r.n(D),P=r(90569),_=r.n(P),N=r(3565),O=r.n(N),B=r(19216),k=r.n(B),U=r(44589),G=r.n(U),L=r(65262),W={};W.styleTagTransform=G(),W.setAttributes=O(),W.insert=_().bind(null,"head"),W.domAPI=E(),W.insertStyleElement=k(),x()(L.Z,W),L.Z&&L.Z.locals&&L.Z.locals;var Y=r(51900),j=(0,Y.Z)(T,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.isHttps||t.isLocalhost?n("div",[t.step===t.RegistrationSteps.READY?n("div",[n("button",{on:{click:t.start}},[t._v("\n\t\t\t"+t._s(t.t("settings","Add WebAuthn device"))+"\n\t\t")])]):t.step===t.RegistrationSteps.REGISTRATION?n("div",{staticClass:"new-webauthn-device"},[n("span",{staticClass:"icon-loading-small webauthn-loading"}),t._v("\n\t\t"+t._s(t.t("settings","Please authorize your WebAuthn device."))+"\n\t")]):t.step===t.RegistrationSteps.NAMING?n("div",{staticClass:"new-webauthn-device"},[n("span",{staticClass:"icon-loading-small webauthn-loading"}),t._v(" "),n("input",{directives:[{name:"model",rawName:"v-model",value:t.name,expression:"name"}],attrs:{type:"text",placeholder:t.t("settings","Name your device")},domProps:{value:t.name},on:{":keyup":function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t.submit.apply(null,arguments)},input:function(e){e.target.composing||(t.name=e.target.value)}}}),t._v(" "),n("button",{on:{click:t.submit}},[t._v("\n\t\t\t"+t._s(t.t("settings","Add"))+"\n\t\t")])]):t.step===t.RegistrationSteps.PERSIST?n("div",{staticClass:"new-webauthn-device"},[n("span",{staticClass:"icon-loading-small webauthn-loading"}),t._v("\n\t\t"+t._s(t.t("settings","Adding your device …"))+"\n\t")]):n("div",[t._v("\n\t\tInvalid registration step. This should not have happened.\n\t")])]):n("div",[t._v("\n\t"+t._s(t.t("settings","Passwordless authentication requires a secure connection."))+"\n")])}),[],!1,null,"f9b952b4",null),K=j.exports,Z=r(79440),F=r.n(Z),M=r(56286),q={name:"Device",components:{ActionButton:r.n(M)(),Actions:F()},props:{name:{type:String,required:!0}}},H=r(98816),$={};$.styleTagTransform=G(),$.setAttributes=O(),$.insert=_().bind(null,"head"),$.domAPI=E(),$.insertStyleElement=k(),x()(H.Z,$),H.Z&&H.Z.locals&&H.Z.locals;var z=(0,Y.Z)(q,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"webauthn-device"},[n("span",{staticClass:"icon-webauthn-device"}),t._v("\n\t"+t._s(t.name||t.t("settings","Unnamed device"))+"\n\t"),n("Actions",{attrs:{"force-menu":!0}},[n("ActionButton",{attrs:{icon:"icon-delete"},on:{click:function(e){return t.$emit("delete")}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Delete"))+"\n\t\t")])],1)],1)}),[],!1,null,"187f22d4",null).exports;function J(t,e,n,r,i,a,o){try{var s=t[a](o),c=s.value}catch(t){return void n(t)}s.done?e(c):Promise.resolve(c).then(r,i)}var Q=u()("name"),V={components:{AddDevice:K,Device:z},props:{initialDevices:{type:Array,required:!0},isHttps:{type:Boolean,default:!1},isLocalhost:{type:Boolean,default:!1},hasPublicKeyCredential:{type:Boolean,default:!1}},data:function(){return{devices:this.initialDevices}},computed:{sortedDevices:function(){return Q(this.devices)}},methods:{deviceAdded:function(t){d.debug("adding new device to the list ".concat(t.id)),this.devices.push(t)},deleteDevice:function(t){var e,n=this;return(e=regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return d.info("deleting webauthn device ".concat(t)),e.next=3,s()();case 3:return e.next=5,b(t);case 5:n.devices=n.devices.filter((function(e){return e.id!==t})),d.info("webauthn device ".concat(t," removed successfully"));case 7:case"end":return e.stop()}}),e)})),function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function o(t){J(a,r,i,o,s,"next",t)}function s(t){J(a,r,i,o,s,"throw",t)}o(void 0)}))})()}}},X=V,tt=(0,Y.Z)(X,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"section",attrs:{id:"security-webauthn"}},[n("h2",[t._v(t._s(t.t("settings","Passwordless Authentication")))]),t._v(" "),n("p",{staticClass:"settings-hint hidden-when-empty"},[t._v("\n\t\t"+t._s(t.t("settings","Set up your account for passwordless authentication following the FIDO2 standard."))+"\n\t")]),t._v(" "),0===t.devices.length?n("p",[t._v("\n\t\t"+t._s(t.t("settings","No devices configured."))+"\n\t")]):n("p",[t._v("\n\t\t"+t._s(t.t("settings","The following devices are configured for your account:"))+"\n\t")]),t._v(" "),t._l(t.sortedDevices,(function(e){return n("Device",{key:e.id,attrs:{name:e.name},on:{delete:function(n){return t.deleteDevice(e.id)}}})})),t._v(" "),t.hasPublicKeyCredential?t._e():n("p",{staticClass:"warning"},[t._v("\n\t\t"+t._s(t.t("settings","Your browser does not support WebAuthn."))+"\n\t")]),t._v(" "),t.hasPublicKeyCredential?n("AddDevice",{attrs:{"is-https":t.isHttps,"is-localhost":t.isLocalhost},on:{added:t.deviceAdded}}):t._e()],2)}),[],!1,null,"662cb041",null).exports;r.nc=btoa(OC.requestToken),i.default.prototype.t=t,new(i.default.extend(tt))({propsData:{initialDevices:(0,a.loadState)("settings","webauthn-devices"),isHttps:"https:"===window.location.protocol,isLocalhost:"localhost"===window.location.hostname,hasPublicKeyCredential:void 0!==window.PublicKeyCredential}}).$mount("#security-webauthn")},65262:function(t,e,n){var r=n(87537),i=n.n(r),a=n(23645),o=n.n(a)()(i());o.push([t.id,"\n.webauthn-loading[data-v-f9b952b4] {\n\tdisplay: inline-block;\n\tvertical-align: sub;\n\tmargin-left: 2px;\n\tmargin-right: 2px;\n}\n.new-webauthn-device[data-v-f9b952b4] {\n\tline-height: 300%;\n}\n","",{version:3,sources:["webpack://./apps/settings/src/components/WebAuthn/AddDevice.vue"],names:[],mappings:";AAgNA;CACA,qBAAA;CACA,mBAAA;CACA,gBAAA;CACA,iBAAA;AACA;AAEA;CACA,iBAAA;AACA",sourcesContent:["\x3c!--\n - @copyright 2020, Roeland Jago Douma <roeland@famdouma.nl>\n -\n - @author Roeland Jago Douma <roeland@famdouma.nl>\n -\n - @license GNU AGPL version 3 or any later version\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 --\x3e\n\n<template>\n\t<div v-if=\"!isHttps && !isLocalhost\">\n\t\t{{ t('settings', 'Passwordless authentication requires a secure connection.') }}\n\t</div>\n\t<div v-else>\n\t\t<div v-if=\"step === RegistrationSteps.READY\">\n\t\t\t<button @click=\"start\">\n\t\t\t\t{{ t('settings', 'Add WebAuthn device') }}\n\t\t\t</button>\n\t\t</div>\n\n\t\t<div v-else-if=\"step === RegistrationSteps.REGISTRATION\"\n\t\t\tclass=\"new-webauthn-device\">\n\t\t\t<span class=\"icon-loading-small webauthn-loading\" />\n\t\t\t{{ t('settings', 'Please authorize your WebAuthn device.') }}\n\t\t</div>\n\n\t\t<div v-else-if=\"step === RegistrationSteps.NAMING\"\n\t\t\tclass=\"new-webauthn-device\">\n\t\t\t<span class=\"icon-loading-small webauthn-loading\" />\n\t\t\t<input v-model=\"name\"\n\t\t\t\ttype=\"text\"\n\t\t\t\t:placeholder=\"t('settings', 'Name your device')\"\n\t\t\t\t@:keyup.enter=\"submit\">\n\t\t\t<button @click=\"submit\">\n\t\t\t\t{{ t('settings', 'Add') }}\n\t\t\t</button>\n\t\t</div>\n\n\t\t<div v-else-if=\"step === RegistrationSteps.PERSIST\"\n\t\t\tclass=\"new-webauthn-device\">\n\t\t\t<span class=\"icon-loading-small webauthn-loading\" />\n\t\t\t{{ t('settings', 'Adding your device …') }}\n\t\t</div>\n\n\t\t<div v-else>\n\t\t\tInvalid registration step. This should not have happened.\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport confirmPassword from '@nextcloud/password-confirmation'\n\nimport logger from '../../logger'\nimport {\n\tstartRegistration,\n\tfinishRegistration,\n} from '../../service/WebAuthnRegistrationSerice'\n\nconst logAndPass = (text) => (data) => {\n\tlogger.debug(text)\n\treturn data\n}\n\nconst RegistrationSteps = Object.freeze({\n\tREADY: 1,\n\tREGISTRATION: 2,\n\tNAMING: 3,\n\tPERSIST: 4,\n})\n\nexport default {\n\tname: 'AddDevice',\n\tprops: {\n\t\thttpWarning: Boolean,\n\t\tisHttps: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisLocalhost: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tname: '',\n\t\t\tcredential: {},\n\t\t\tRegistrationSteps,\n\t\t\tstep: RegistrationSteps.READY,\n\t\t}\n\t},\n\tmethods: {\n\t\tarrayToBase64String(a) {\n\t\t\treturn btoa(String.fromCharCode(...a))\n\t\t},\n\t\tstart() {\n\t\t\tthis.step = RegistrationSteps.REGISTRATION\n\t\t\tconsole.debug('Starting WebAuthn registration')\n\n\t\t\treturn confirmPassword()\n\t\t\t\t.then(this.getRegistrationData)\n\t\t\t\t.then(this.register.bind(this))\n\t\t\t\t.then(() => { this.step = RegistrationSteps.NAMING })\n\t\t\t\t.catch(err => {\n\t\t\t\t\tconsole.error(err.name, err.message)\n\t\t\t\t\tthis.step = RegistrationSteps.READY\n\t\t\t\t})\n\t\t},\n\n\t\tgetRegistrationData() {\n\t\t\tconsole.debug('Fetching webauthn registration data')\n\n\t\t\tconst base64urlDecode = function(input) {\n\t\t\t\t// Replace non-url compatible chars with base64 standard chars\n\t\t\t\tinput = input\n\t\t\t\t\t.replace(/-/g, '+')\n\t\t\t\t\t.replace(/_/g, '/')\n\n\t\t\t\t// Pad out with standard base64 required padding characters\n\t\t\t\tconst pad = input.length % 4\n\t\t\t\tif (pad) {\n\t\t\t\t\tif (pad === 1) {\n\t\t\t\t\t\tthrow new Error('InvalidLengthError: Input base64url string is the wrong length to determine padding')\n\t\t\t\t\t}\n\t\t\t\t\tinput += new Array(5 - pad).join('=')\n\t\t\t\t}\n\n\t\t\t\treturn window.atob(input)\n\t\t\t}\n\n\t\t\treturn startRegistration()\n\t\t\t\t.then(publicKey => {\n\t\t\t\t\tconsole.debug(publicKey)\n\t\t\t\t\tpublicKey.challenge = Uint8Array.from(base64urlDecode(publicKey.challenge), c => c.charCodeAt(0))\n\t\t\t\t\tpublicKey.user.id = Uint8Array.from(publicKey.user.id, c => c.charCodeAt(0))\n\t\t\t\t\treturn publicKey\n\t\t\t\t})\n\t\t\t\t.catch(err => {\n\t\t\t\t\tconsole.error('Error getting webauthn registration data from server', err)\n\t\t\t\t\tthrow new Error(t('settings', 'Server error while trying to add WebAuthn device'))\n\t\t\t\t})\n\t\t},\n\n\t\tregister(publicKey) {\n\t\t\tconsole.debug('starting webauthn registration')\n\n\t\t\treturn navigator.credentials.create({ publicKey })\n\t\t\t\t.then(data => {\n\t\t\t\t\tthis.credential = {\n\t\t\t\t\t\tid: data.id,\n\t\t\t\t\t\ttype: data.type,\n\t\t\t\t\t\trawId: this.arrayToBase64String(new Uint8Array(data.rawId)),\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tclientDataJSON: this.arrayToBase64String(new Uint8Array(data.response.clientDataJSON)),\n\t\t\t\t\t\t\tattestationObject: this.arrayToBase64String(new Uint8Array(data.response.attestationObject)),\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t},\n\n\t\tsubmit() {\n\t\t\tthis.step = RegistrationSteps.PERSIST\n\n\t\t\treturn confirmPassword()\n\t\t\t\t.then(logAndPass('confirmed password'))\n\t\t\t\t.then(this.saveRegistrationData)\n\t\t\t\t.then(logAndPass('registration data saved'))\n\t\t\t\t.then(() => this.reset())\n\t\t\t\t.then(logAndPass('app reset'))\n\t\t\t\t.catch(console.error.bind(this))\n\t\t},\n\n\t\tasync saveRegistrationData() {\n\t\t\ttry {\n\t\t\t\tconst device = await finishRegistration(this.name, JSON.stringify(this.credential))\n\n\t\t\t\tlogger.info('new device added', { device })\n\n\t\t\t\tthis.$emit('added', device)\n\t\t\t} catch (err) {\n\t\t\t\tlogger.error('Error persisting webauthn registration', { error: err })\n\t\t\t\tthrow new Error(t('settings', 'Server error while trying to complete WebAuthn device registration'))\n\t\t\t}\n\t\t},\n\n\t\treset() {\n\t\t\tthis.name = ''\n\t\t\tthis.registrationData = {}\n\t\t\tthis.step = RegistrationSteps.READY\n\t\t},\n\t},\n}\n<\/script>\n\n<style scoped>\n\t.webauthn-loading {\n\t\tdisplay: inline-block;\n\t\tvertical-align: sub;\n\t\tmargin-left: 2px;\n\t\tmargin-right: 2px;\n\t}\n\n\t.new-webauthn-device {\n\t\tline-height: 300%;\n\t}\n</style>\n"],sourceRoot:""}]),e.Z=o},98816:function(t,e,n){var r=n(87537),i=n.n(r),a=n(23645),o=n.n(a)()(i());o.push([t.id,"\n.webauthn-device[data-v-187f22d4] {\n\tline-height: 300%;\n\tdisplay: flex;\n}\n.icon-webauthn-device[data-v-187f22d4] {\n\tdisplay: inline-block;\n\tbackground-size: 100%;\n\tpadding: 3px;\n\tmargin: 3px;\n}\n","",{version:3,sources:["webpack://./apps/settings/src/components/WebAuthn/Device.vue"],names:[],mappings:";AAqDA;CACA,iBAAA;CACA,aAAA;AACA;AAEA;CACA,qBAAA;CACA,qBAAA;CACA,YAAA;CACA,WAAA;AACA",sourcesContent:["\x3c!--\n - @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\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 --\x3e\n\n<template>\n\t<div class=\"webauthn-device\">\n\t\t<span class=\"icon-webauthn-device\" />\n\t\t{{ name || t('settings', 'Unnamed device') }}\n\t\t<Actions :force-menu=\"true\">\n\t\t\t<ActionButton icon=\"icon-delete\" @click=\"$emit('delete')\">\n\t\t\t\t{{ t('settings', 'Delete') }}\n\t\t\t</ActionButton>\n\t\t</Actions>\n\t</div>\n</template>\n\n<script>\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\n\nexport default {\n\tname: 'Device',\n\tcomponents: {\n\t\tActionButton,\n\t\tActions,\n\t},\n\tprops: {\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n}\n<\/script>\n\n<style scoped>\n\t.webauthn-device {\n\t\tline-height: 300%;\n\t\tdisplay: flex;\n\t}\n\n\t.icon-webauthn-device {\n\t\tdisplay: inline-block;\n\t\tbackground-size: 100%;\n\t\tpadding: 3px;\n\t\tmargin: 3px;\n\t}\n</style>\n"],sourceRoot:""}]),e.Z=o}},r={};function i(t){var e=r[t];if(void 0!==e)return e.exports;var a=r[t]={id:t,loaded:!1,exports:{}};return n[t].call(a.exports,a,a.exports,i),a.loaded=!0,a.exports}i.m=n,i.amdD=function(){throw new Error("define cannot be used indirect")},i.amdO={},e=[],i.O=function(t,n,r,a){if(!n){var o=1/0;for(d=0;d<e.length;d++){n=e[d][0],r=e[d][1],a=e[d][2];for(var s=!0,c=0;c<n.length;c++)(!1&a||o>=a)&&Object.keys(i.O).every((function(t){return i.O[t](n[c])}))?n.splice(c--,1):(s=!1,a<o&&(o=a));if(s){e.splice(d--,1);var u=r();void 0!==u&&(t=u)}}return t}a=a||0;for(var d=e.length;d>0&&e[d-1][2]>a;d--)e[d]=e[d-1];e[d]=[n,r,a]},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,{a:e}),e},i.d=function(t,e){for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},i.j=1602,function(){i.b=document.baseURI||self.location.href;var t={1602:0};i.O.j=function(e){return 0===t[e]};var e=function(e,n){var r,a,o=n[0],s=n[1],c=n[2],u=0;if(o.some((function(e){return 0!==t[e]}))){for(r in s)i.o(s,r)&&(i.m[r]=s[r]);if(c)var d=c(i)}for(e&&e(n);u<o.length;u++)a=o[u],i.o(t,a)&&t[a]&&t[a][0](),t[a]=0;return i.O(d)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))}();var a=i.O(void 0,[7874],(function(){return i(9802)}));a=i.O(a)}();
-//# sourceMappingURL=settings-vue-settings-personal-webauthn.js.map?v=a86cde6cd97c03701d3d \ No newline at end of file
+!function(){"use strict";var e,n={9802:function(e,n,r){var i=r(20144),a=r(16453),o=r(10128),s=r.n(o),c=r(66415),u=r.n(c),d=(0,r(17499).IY)().setApp("settings").detectUser().build(),l=r(4820),h=r(79753);function p(t,e,n,r,i,a,o){try{var s=t[a](o),c=s.value}catch(t){return void n(t)}s.done?e(c):Promise.resolve(c).then(r,i)}function g(t){return function(){var e=this,n=arguments;return new Promise((function(r,i){var a=t.apply(e,n);function o(t){p(a,r,i,o,s,"next",t)}function s(t){p(a,r,i,o,s,"throw",t)}o(void 0)}))}}function f(){return(f=g(regeneratorRuntime.mark((function t(){var e,n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e=(0,h.generateUrl)("/settings/api/personal/webauthn/registration"),t.next=3,l.default.get(e);case 3:return n=t.sent,t.abrupt("return",n.data);case 5:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function v(t,e){return A.apply(this,arguments)}function A(){return(A=g(regeneratorRuntime.mark((function t(e,n){var r,i;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=(0,h.generateUrl)("/settings/api/personal/webauthn/registration"),t.next=3,l.default.post(r,{name:e,data:n});case 3:return i=t.sent,t.abrupt("return",i.data);case 5:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function b(t){return m.apply(this,arguments)}function m(){return(m=g(regeneratorRuntime.mark((function t(e){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=(0,h.generateUrl)("/settings/api/personal/webauthn/registration/".concat(e)),t.next=3,l.default.delete(n);case 3:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function w(t,e,n,r,i,a,o){try{var s=t[a](o),c=s.value}catch(t){return void n(t)}s.done?e(c):Promise.resolve(c).then(r,i)}function y(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}var R=function(t){return function(e){return d.debug(t),e}},S=Object.freeze({READY:1,REGISTRATION:2,NAMING:3,PERSIST:4}),C={name:"AddDevice",props:{httpWarning:Boolean,isHttps:{type:Boolean,default:!1},isLocalhost:{type:Boolean,default:!1}},data:function(){return{name:"",credential:{},RegistrationSteps:S,step:S.READY}},methods:{arrayToBase64String:function(t){return btoa(String.fromCharCode.apply(String,function(t){if(Array.isArray(t))return y(t)}(e=t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(e)||function(t,e){if(t){if("string"==typeof t)return y(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(t,e):void 0}}(e)||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.")}()));var e},start:function(){var t=this;return this.step=S.REGISTRATION,console.debug("Starting WebAuthn registration"),s()().then(this.getRegistrationData).then(this.register.bind(this)).then((function(){t.step=S.NAMING})).catch((function(e){console.error(e.name,e.message),t.step=S.READY}))},getRegistrationData:function(){return console.debug("Fetching webauthn registration data"),function(){return f.apply(this,arguments)}().then((function(t){return console.debug(t),t.challenge=Uint8Array.from(function(t){var e=(t=t.replace(/-/g,"+").replace(/_/g,"/")).length%4;if(e){if(1===e)throw new Error("InvalidLengthError: Input base64url string is the wrong length to determine padding");t+=new Array(5-e).join("=")}return window.atob(t)}(t.challenge),(function(t){return t.charCodeAt(0)})),t.user.id=Uint8Array.from(t.user.id,(function(t){return t.charCodeAt(0)})),t})).catch((function(e){throw console.error("Error getting webauthn registration data from server",e),new Error(t("settings","Server error while trying to add WebAuthn device"))}))},register:function(t){var e=this;return console.debug("starting webauthn registration"),navigator.credentials.create({publicKey:t}).then((function(t){e.credential={id:t.id,type:t.type,rawId:e.arrayToBase64String(new Uint8Array(t.rawId)),response:{clientDataJSON:e.arrayToBase64String(new Uint8Array(t.response.clientDataJSON)),attestationObject:e.arrayToBase64String(new Uint8Array(t.response.attestationObject))}}}))},submit:function(){var t=this;return this.step=S.PERSIST,s()().then(R("confirmed password")).then(this.saveRegistrationData).then(R("registration data saved")).then((function(){return t.reset()})).then(R("app reset")).catch(console.error.bind(this))},saveRegistrationData:function(){var e,n=this;return(e=regeneratorRuntime.mark((function e(){var r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,v(n.name,JSON.stringify(n.credential));case 3:r=e.sent,d.info("new device added",{device:r}),n.$emit("added",r),e.next=12;break;case 8:throw e.prev=8,e.t0=e.catch(0),d.error("Error persisting webauthn registration",{error:e.t0}),new Error(t("settings","Server error while trying to complete WebAuthn device registration"));case 12:case"end":return e.stop()}}),e,null,[[0,8]])})),function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function o(t){w(a,r,i,o,s,"next",t)}function s(t){w(a,r,i,o,s,"throw",t)}o(void 0)}))})()},reset:function(){this.name="",this.registrationData={},this.step=S.READY}}},T=C,I=r(93379),x=r.n(I),D=r(7795),E=r.n(D),P=r(90569),_=r.n(P),N=r(3565),O=r.n(N),B=r(19216),k=r.n(B),U=r(44589),G=r.n(U),L=r(65262),W={};W.styleTagTransform=G(),W.setAttributes=O(),W.insert=_().bind(null,"head"),W.domAPI=E(),W.insertStyleElement=k(),x()(L.Z,W),L.Z&&L.Z.locals&&L.Z.locals;var Y=r(51900),j=(0,Y.Z)(T,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.isHttps||t.isLocalhost?n("div",[t.step===t.RegistrationSteps.READY?n("div",[n("button",{on:{click:t.start}},[t._v("\n\t\t\t"+t._s(t.t("settings","Add WebAuthn device"))+"\n\t\t")])]):t.step===t.RegistrationSteps.REGISTRATION?n("div",{staticClass:"new-webauthn-device"},[n("span",{staticClass:"icon-loading-small webauthn-loading"}),t._v("\n\t\t"+t._s(t.t("settings","Please authorize your WebAuthn device."))+"\n\t")]):t.step===t.RegistrationSteps.NAMING?n("div",{staticClass:"new-webauthn-device"},[n("span",{staticClass:"icon-loading-small webauthn-loading"}),t._v(" "),n("input",{directives:[{name:"model",rawName:"v-model",value:t.name,expression:"name"}],attrs:{type:"text",placeholder:t.t("settings","Name your device")},domProps:{value:t.name},on:{":keyup":function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t.submit.apply(null,arguments)},input:function(e){e.target.composing||(t.name=e.target.value)}}}),t._v(" "),n("button",{on:{click:t.submit}},[t._v("\n\t\t\t"+t._s(t.t("settings","Add"))+"\n\t\t")])]):t.step===t.RegistrationSteps.PERSIST?n("div",{staticClass:"new-webauthn-device"},[n("span",{staticClass:"icon-loading-small webauthn-loading"}),t._v("\n\t\t"+t._s(t.t("settings","Adding your device …"))+"\n\t")]):n("div",[t._v("\n\t\tInvalid registration step. This should not have happened.\n\t")])]):n("div",[t._v("\n\t"+t._s(t.t("settings","Passwordless authentication requires a secure connection."))+"\n")])}),[],!1,null,"f9b952b4",null),K=j.exports,Z=r(79440),F=r.n(Z),M=r(56286),q={name:"Device",components:{ActionButton:r.n(M)(),Actions:F()},props:{name:{type:String,required:!0}}},H=r(98816),$={};$.styleTagTransform=G(),$.setAttributes=O(),$.insert=_().bind(null,"head"),$.domAPI=E(),$.insertStyleElement=k(),x()(H.Z,$),H.Z&&H.Z.locals&&H.Z.locals;var z=(0,Y.Z)(q,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"webauthn-device"},[n("span",{staticClass:"icon-webauthn-device"}),t._v("\n\t"+t._s(t.name||t.t("settings","Unnamed device"))+"\n\t"),n("Actions",{attrs:{"force-menu":!0}},[n("ActionButton",{attrs:{icon:"icon-delete"},on:{click:function(e){return t.$emit("delete")}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Delete"))+"\n\t\t")])],1)],1)}),[],!1,null,"187f22d4",null).exports;function J(t,e,n,r,i,a,o){try{var s=t[a](o),c=s.value}catch(t){return void n(t)}s.done?e(c):Promise.resolve(c).then(r,i)}var Q=u()("name"),V={components:{AddDevice:K,Device:z},props:{initialDevices:{type:Array,required:!0},isHttps:{type:Boolean,default:!1},isLocalhost:{type:Boolean,default:!1},hasPublicKeyCredential:{type:Boolean,default:!1}},data:function(){return{devices:this.initialDevices}},computed:{sortedDevices:function(){return Q(this.devices)}},methods:{deviceAdded:function(t){d.debug("adding new device to the list ".concat(t.id)),this.devices.push(t)},deleteDevice:function(t){var e,n=this;return(e=regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return d.info("deleting webauthn device ".concat(t)),e.next=3,s()();case 3:return e.next=5,b(t);case 5:n.devices=n.devices.filter((function(e){return e.id!==t})),d.info("webauthn device ".concat(t," removed successfully"));case 7:case"end":return e.stop()}}),e)})),function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function o(t){J(a,r,i,o,s,"next",t)}function s(t){J(a,r,i,o,s,"throw",t)}o(void 0)}))})()}}},X=V,tt=(0,Y.Z)(X,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"section",attrs:{id:"security-webauthn"}},[n("h2",[t._v(t._s(t.t("settings","Passwordless Authentication")))]),t._v(" "),n("p",{staticClass:"settings-hint hidden-when-empty"},[t._v("\n\t\t"+t._s(t.t("settings","Set up your account for passwordless authentication following the FIDO2 standard."))+"\n\t")]),t._v(" "),0===t.devices.length?n("p",[t._v("\n\t\t"+t._s(t.t("settings","No devices configured."))+"\n\t")]):n("p",[t._v("\n\t\t"+t._s(t.t("settings","The following devices are configured for your account:"))+"\n\t")]),t._v(" "),t._l(t.sortedDevices,(function(e){return n("Device",{key:e.id,attrs:{name:e.name},on:{delete:function(n){return t.deleteDevice(e.id)}}})})),t._v(" "),t.hasPublicKeyCredential?t._e():n("p",{staticClass:"warning"},[t._v("\n\t\t"+t._s(t.t("settings","Your browser does not support WebAuthn."))+"\n\t")]),t._v(" "),t.hasPublicKeyCredential?n("AddDevice",{attrs:{"is-https":t.isHttps,"is-localhost":t.isLocalhost},on:{added:t.deviceAdded}}):t._e()],2)}),[],!1,null,"662cb041",null).exports;r.nc=btoa(OC.requestToken),i.default.prototype.t=t,new(i.default.extend(tt))({propsData:{initialDevices:(0,a.loadState)("settings","webauthn-devices"),isHttps:"https:"===window.location.protocol,isLocalhost:"localhost"===window.location.hostname,hasPublicKeyCredential:void 0!==window.PublicKeyCredential}}).$mount("#security-webauthn")},65262:function(t,e,n){var r=n(87537),i=n.n(r),a=n(23645),o=n.n(a)()(i());o.push([t.id,"\n.webauthn-loading[data-v-f9b952b4] {\n\tdisplay: inline-block;\n\tvertical-align: sub;\n\tmargin-left: 2px;\n\tmargin-right: 2px;\n}\n.new-webauthn-device[data-v-f9b952b4] {\n\tline-height: 300%;\n}\n","",{version:3,sources:["webpack://./apps/settings/src/components/WebAuthn/AddDevice.vue"],names:[],mappings:";AAgNA;CACA,qBAAA;CACA,mBAAA;CACA,gBAAA;CACA,iBAAA;AACA;AAEA;CACA,iBAAA;AACA",sourcesContent:["\x3c!--\n - @copyright 2020, Roeland Jago Douma <roeland@famdouma.nl>\n -\n - @author Roeland Jago Douma <roeland@famdouma.nl>\n -\n - @license GNU AGPL version 3 or any later version\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 --\x3e\n\n<template>\n\t<div v-if=\"!isHttps && !isLocalhost\">\n\t\t{{ t('settings', 'Passwordless authentication requires a secure connection.') }}\n\t</div>\n\t<div v-else>\n\t\t<div v-if=\"step === RegistrationSteps.READY\">\n\t\t\t<button @click=\"start\">\n\t\t\t\t{{ t('settings', 'Add WebAuthn device') }}\n\t\t\t</button>\n\t\t</div>\n\n\t\t<div v-else-if=\"step === RegistrationSteps.REGISTRATION\"\n\t\t\tclass=\"new-webauthn-device\">\n\t\t\t<span class=\"icon-loading-small webauthn-loading\" />\n\t\t\t{{ t('settings', 'Please authorize your WebAuthn device.') }}\n\t\t</div>\n\n\t\t<div v-else-if=\"step === RegistrationSteps.NAMING\"\n\t\t\tclass=\"new-webauthn-device\">\n\t\t\t<span class=\"icon-loading-small webauthn-loading\" />\n\t\t\t<input v-model=\"name\"\n\t\t\t\ttype=\"text\"\n\t\t\t\t:placeholder=\"t('settings', 'Name your device')\"\n\t\t\t\t@:keyup.enter=\"submit\">\n\t\t\t<button @click=\"submit\">\n\t\t\t\t{{ t('settings', 'Add') }}\n\t\t\t</button>\n\t\t</div>\n\n\t\t<div v-else-if=\"step === RegistrationSteps.PERSIST\"\n\t\t\tclass=\"new-webauthn-device\">\n\t\t\t<span class=\"icon-loading-small webauthn-loading\" />\n\t\t\t{{ t('settings', 'Adding your device …') }}\n\t\t</div>\n\n\t\t<div v-else>\n\t\t\tInvalid registration step. This should not have happened.\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport confirmPassword from '@nextcloud/password-confirmation'\n\nimport logger from '../../logger'\nimport {\n\tstartRegistration,\n\tfinishRegistration,\n} from '../../service/WebAuthnRegistrationSerice'\n\nconst logAndPass = (text) => (data) => {\n\tlogger.debug(text)\n\treturn data\n}\n\nconst RegistrationSteps = Object.freeze({\n\tREADY: 1,\n\tREGISTRATION: 2,\n\tNAMING: 3,\n\tPERSIST: 4,\n})\n\nexport default {\n\tname: 'AddDevice',\n\tprops: {\n\t\thttpWarning: Boolean,\n\t\tisHttps: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisLocalhost: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tname: '',\n\t\t\tcredential: {},\n\t\t\tRegistrationSteps,\n\t\t\tstep: RegistrationSteps.READY,\n\t\t}\n\t},\n\tmethods: {\n\t\tarrayToBase64String(a) {\n\t\t\treturn btoa(String.fromCharCode(...a))\n\t\t},\n\t\tstart() {\n\t\t\tthis.step = RegistrationSteps.REGISTRATION\n\t\t\tconsole.debug('Starting WebAuthn registration')\n\n\t\t\treturn confirmPassword()\n\t\t\t\t.then(this.getRegistrationData)\n\t\t\t\t.then(this.register.bind(this))\n\t\t\t\t.then(() => { this.step = RegistrationSteps.NAMING })\n\t\t\t\t.catch(err => {\n\t\t\t\t\tconsole.error(err.name, err.message)\n\t\t\t\t\tthis.step = RegistrationSteps.READY\n\t\t\t\t})\n\t\t},\n\n\t\tgetRegistrationData() {\n\t\t\tconsole.debug('Fetching webauthn registration data')\n\n\t\t\tconst base64urlDecode = function(input) {\n\t\t\t\t// Replace non-url compatible chars with base64 standard chars\n\t\t\t\tinput = input\n\t\t\t\t\t.replace(/-/g, '+')\n\t\t\t\t\t.replace(/_/g, '/')\n\n\t\t\t\t// Pad out with standard base64 required padding characters\n\t\t\t\tconst pad = input.length % 4\n\t\t\t\tif (pad) {\n\t\t\t\t\tif (pad === 1) {\n\t\t\t\t\t\tthrow new Error('InvalidLengthError: Input base64url string is the wrong length to determine padding')\n\t\t\t\t\t}\n\t\t\t\t\tinput += new Array(5 - pad).join('=')\n\t\t\t\t}\n\n\t\t\t\treturn window.atob(input)\n\t\t\t}\n\n\t\t\treturn startRegistration()\n\t\t\t\t.then(publicKey => {\n\t\t\t\t\tconsole.debug(publicKey)\n\t\t\t\t\tpublicKey.challenge = Uint8Array.from(base64urlDecode(publicKey.challenge), c => c.charCodeAt(0))\n\t\t\t\t\tpublicKey.user.id = Uint8Array.from(publicKey.user.id, c => c.charCodeAt(0))\n\t\t\t\t\treturn publicKey\n\t\t\t\t})\n\t\t\t\t.catch(err => {\n\t\t\t\t\tconsole.error('Error getting webauthn registration data from server', err)\n\t\t\t\t\tthrow new Error(t('settings', 'Server error while trying to add WebAuthn device'))\n\t\t\t\t})\n\t\t},\n\n\t\tregister(publicKey) {\n\t\t\tconsole.debug('starting webauthn registration')\n\n\t\t\treturn navigator.credentials.create({ publicKey })\n\t\t\t\t.then(data => {\n\t\t\t\t\tthis.credential = {\n\t\t\t\t\t\tid: data.id,\n\t\t\t\t\t\ttype: data.type,\n\t\t\t\t\t\trawId: this.arrayToBase64String(new Uint8Array(data.rawId)),\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tclientDataJSON: this.arrayToBase64String(new Uint8Array(data.response.clientDataJSON)),\n\t\t\t\t\t\t\tattestationObject: this.arrayToBase64String(new Uint8Array(data.response.attestationObject)),\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t},\n\n\t\tsubmit() {\n\t\t\tthis.step = RegistrationSteps.PERSIST\n\n\t\t\treturn confirmPassword()\n\t\t\t\t.then(logAndPass('confirmed password'))\n\t\t\t\t.then(this.saveRegistrationData)\n\t\t\t\t.then(logAndPass('registration data saved'))\n\t\t\t\t.then(() => this.reset())\n\t\t\t\t.then(logAndPass('app reset'))\n\t\t\t\t.catch(console.error.bind(this))\n\t\t},\n\n\t\tasync saveRegistrationData() {\n\t\t\ttry {\n\t\t\t\tconst device = await finishRegistration(this.name, JSON.stringify(this.credential))\n\n\t\t\t\tlogger.info('new device added', { device })\n\n\t\t\t\tthis.$emit('added', device)\n\t\t\t} catch (err) {\n\t\t\t\tlogger.error('Error persisting webauthn registration', { error: err })\n\t\t\t\tthrow new Error(t('settings', 'Server error while trying to complete WebAuthn device registration'))\n\t\t\t}\n\t\t},\n\n\t\treset() {\n\t\t\tthis.name = ''\n\t\t\tthis.registrationData = {}\n\t\t\tthis.step = RegistrationSteps.READY\n\t\t},\n\t},\n}\n<\/script>\n\n<style scoped>\n\t.webauthn-loading {\n\t\tdisplay: inline-block;\n\t\tvertical-align: sub;\n\t\tmargin-left: 2px;\n\t\tmargin-right: 2px;\n\t}\n\n\t.new-webauthn-device {\n\t\tline-height: 300%;\n\t}\n</style>\n"],sourceRoot:""}]),e.Z=o},98816:function(t,e,n){var r=n(87537),i=n.n(r),a=n(23645),o=n.n(a)()(i());o.push([t.id,"\n.webauthn-device[data-v-187f22d4] {\n\tline-height: 300%;\n\tdisplay: flex;\n}\n.icon-webauthn-device[data-v-187f22d4] {\n\tdisplay: inline-block;\n\tbackground-size: 100%;\n\tpadding: 3px;\n\tmargin: 3px;\n}\n","",{version:3,sources:["webpack://./apps/settings/src/components/WebAuthn/Device.vue"],names:[],mappings:";AAqDA;CACA,iBAAA;CACA,aAAA;AACA;AAEA;CACA,qBAAA;CACA,qBAAA;CACA,YAAA;CACA,WAAA;AACA",sourcesContent:["\x3c!--\n - @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\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 --\x3e\n\n<template>\n\t<div class=\"webauthn-device\">\n\t\t<span class=\"icon-webauthn-device\" />\n\t\t{{ name || t('settings', 'Unnamed device') }}\n\t\t<Actions :force-menu=\"true\">\n\t\t\t<ActionButton icon=\"icon-delete\" @click=\"$emit('delete')\">\n\t\t\t\t{{ t('settings', 'Delete') }}\n\t\t\t</ActionButton>\n\t\t</Actions>\n\t</div>\n</template>\n\n<script>\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\n\nexport default {\n\tname: 'Device',\n\tcomponents: {\n\t\tActionButton,\n\t\tActions,\n\t},\n\tprops: {\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n}\n<\/script>\n\n<style scoped>\n\t.webauthn-device {\n\t\tline-height: 300%;\n\t\tdisplay: flex;\n\t}\n\n\t.icon-webauthn-device {\n\t\tdisplay: inline-block;\n\t\tbackground-size: 100%;\n\t\tpadding: 3px;\n\t\tmargin: 3px;\n\t}\n</style>\n"],sourceRoot:""}]),e.Z=o}},r={};function i(t){var e=r[t];if(void 0!==e)return e.exports;var a=r[t]={id:t,loaded:!1,exports:{}};return n[t].call(a.exports,a,a.exports,i),a.loaded=!0,a.exports}i.m=n,i.amdD=function(){throw new Error("define cannot be used indirect")},i.amdO={},e=[],i.O=function(t,n,r,a){if(!n){var o=1/0;for(d=0;d<e.length;d++){n=e[d][0],r=e[d][1],a=e[d][2];for(var s=!0,c=0;c<n.length;c++)(!1&a||o>=a)&&Object.keys(i.O).every((function(t){return i.O[t](n[c])}))?n.splice(c--,1):(s=!1,a<o&&(o=a));if(s){e.splice(d--,1);var u=r();void 0!==u&&(t=u)}}return t}a=a||0;for(var d=e.length;d>0&&e[d-1][2]>a;d--)e[d]=e[d-1];e[d]=[n,r,a]},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,{a:e}),e},i.d=function(t,e){for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},i.j=1602,function(){i.b=document.baseURI||self.location.href;var t={1602:0};i.O.j=function(e){return 0===t[e]};var e=function(e,n){var r,a,o=n[0],s=n[1],c=n[2],u=0;if(o.some((function(e){return 0!==t[e]}))){for(r in s)i.o(s,r)&&(i.m[r]=s[r]);if(c)var d=c(i)}for(e&&e(n);u<o.length;u++)a=o[u],i.o(t,a)&&t[a]&&t[a][0](),t[a]=0;return i.O(d)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))}(),i.nc=void 0;var a=i.O(void 0,[7874],(function(){return i(9802)}));a=i.O(a)}();
+//# sourceMappingURL=settings-vue-settings-personal-webauthn.js.map?v=1c991d5a6671660e7d3d \ No newline at end of file
diff --git a/dist/settings-vue-settings-personal-webauthn.js.map b/dist/settings-vue-settings-personal-webauthn.js.map
index c2cbba9fe77..988c29393c7 100644
--- a/dist/settings-vue-settings-personal-webauthn.js.map
+++ b/dist/settings-vue-settings-personal-webauthn.js.map
@@ -1 +1 @@
-{"version":3,"file":"settings-vue-settings-personal-webauthn.js?v=a86cde6cd97c03701d3d","mappings":";6BAAIA,4FCwBJ,GAAeC,WAAAA,MACbC,OAAO,YACPC,aACAC,0YCCK,4GACAC,GAAMC,EAAAA,EAAAA,aAAY,gDADlB,SAGaC,EAAAA,QAAAA,IAAUF,GAHvB,cAGAG,EAHA,yBAICA,EAAKC,MAJN,kEAWA,SAAeC,EAAtB,qFAAO,WAAkCC,EAAMF,GAAxC,+FACAJ,GAAMC,EAAAA,EAAAA,aAAY,gDADlB,SAGaC,EAAAA,QAAAA,KAAWF,EAAK,CAAEM,KAAAA,EAAMF,KAAAA,IAHrC,cAGAD,EAHA,yBAICA,EAAKC,MAJN,kEAUA,SAAeG,EAAtB,mFAAO,WAAkCC,GAAlC,6FACAR,GAAMC,EAAAA,EAAAA,aAAY,gDAAD,OAAiDO,IADlE,SAGAN,EAAAA,QAAAA,OAAaF,GAHb,qSCsBP,qCAEA,OADA,WACA,IAGA,iBACA,QACA,eACA,SACA,YAGA,GACA,iBACA,OACA,oBACA,SACA,aACA,YAEA,aACA,aACA,aAGA,KAbA,WAcA,OACA,QACA,cACA,oBACA,eAGA,SACA,oBADA,SACA,GACA,yqBAEA,MAJA,WAIA,WAIA,OAHA,yBACA,gDAEA,MACA,+BACA,+BACA,oCACA,mBACA,gCACA,mBAIA,oBAlBA,WAuCA,OApBA,qDD/FO,WAAP,+BCmHA,GACA,kBAIA,OAHA,iBACA,4BArBA,YAOA,OALA,IACA,kBACA,mBAGA,SACA,MACA,SACA,uGAEA,4BAGA,sBAMA,qDACA,2EACA,KAEA,mBAEA,MADA,wEACA,gFAIA,SApDA,SAoDA,cAGA,OAFA,gDAEA,4CACA,kBACA,cACA,QACA,YACA,qDACA,UACA,gFACA,4FAMA,OArEA,WAqEA,WAGA,OAFA,oBAEA,MACA,8BACA,gCACA,mCACA,qCACA,qBACA,iCAGA,qBAjFA,WAiFA,2KAEA,uCAFA,OAEA,EAFA,OAIA,sCAEA,mBANA,sDAQA,+DACA,8FATA,0OAaA,MA9FA,WA+FA,aACA,yBACA,qBCzM4L,qICWxLS,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,eCbIM,GAAY,OACd,GCTW,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAASF,EAAIM,SAAYN,EAAIO,YAAoIH,EAAG,MAAM,CAAEJ,EAAIQ,OAASR,EAAIS,kBAAkBC,MAAON,EAAG,MAAM,CAACA,EAAG,SAAS,CAACO,GAAG,CAAC,MAAQX,EAAIY,QAAQ,CAACZ,EAAIa,GAAG,WAAWb,EAAIc,GAAGd,EAAIe,EAAE,WAAY,wBAAwB,cAAef,EAAIQ,OAASR,EAAIS,kBAAkBO,aAAcZ,EAAG,MAAM,CAACa,YAAY,uBAAuB,CAACb,EAAG,OAAO,CAACa,YAAY,wCAAwCjB,EAAIa,GAAG,SAASb,EAAIc,GAAGd,EAAIe,EAAE,WAAY,2CAA2C,UAAWf,EAAIQ,OAASR,EAAIS,kBAAkBS,OAAQd,EAAG,MAAM,CAACa,YAAY,uBAAuB,CAACb,EAAG,OAAO,CAACa,YAAY,wCAAwCjB,EAAIa,GAAG,KAAKT,EAAG,QAAQ,CAACe,WAAW,CAAC,CAAC7B,KAAK,QAAQ8B,QAAQ,UAAUC,MAAOrB,EAAQ,KAAEsB,WAAW,SAASC,MAAM,CAAC,KAAO,OAAO,YAAcvB,EAAIe,EAAE,WAAY,qBAAqBS,SAAS,CAAC,MAASxB,EAAQ,MAAGW,GAAG,CAAC,SAAS,SAASc,GAAQ,OAAIA,EAAOC,KAAKC,QAAQ,QAAQ3B,EAAI4B,GAAGH,EAAOI,QAAQ,QAAQ,GAAGJ,EAAOK,IAAI,SAAkB,KAAc9B,EAAI+B,OAAOC,MAAM,KAAMC,YAAY,MAAQ,SAASR,GAAWA,EAAOS,OAAOC,YAAqBnC,EAAIV,KAAKmC,EAAOS,OAAOb,WAAUrB,EAAIa,GAAG,KAAKT,EAAG,SAAS,CAACO,GAAG,CAAC,MAAQX,EAAI+B,SAAS,CAAC/B,EAAIa,GAAG,WAAWb,EAAIc,GAAGd,EAAIe,EAAE,WAAY,QAAQ,cAAef,EAAIQ,OAASR,EAAIS,kBAAkB2B,QAAShC,EAAG,MAAM,CAACa,YAAY,uBAAuB,CAACb,EAAG,OAAO,CAACa,YAAY,wCAAwCjB,EAAIa,GAAG,SAASb,EAAIc,GAAGd,EAAIe,EAAE,WAAY,yBAAyB,UAAUX,EAAG,MAAM,CAACJ,EAAIa,GAAG,2EAA5gDT,EAAG,MAAM,CAACJ,EAAIa,GAAG,OAAOb,EAAIc,GAAGd,EAAIe,EAAE,WAAY,8DAA8D,UAC5N,IDWpB,EACA,KACA,WACA,MAIF,EAAehB,EAAiB,uCEnByJ,ECqCzL,CACA,cACA,YACA,sBACA,aAEA,OACA,MACA,YACA,0BCnCI,EAAU,GAEd,EAAQL,kBAAoB,IAC5B,EAAQC,cAAgB,IAElB,EAAQC,OAAS,SAAc,KAAM,QAE3C,EAAQC,OAAS,IACjB,EAAQC,mBAAqB,IAEhB,IAAI,IAAS,GAKJ,KAAW,YAAiB,WALlD,ICFA,GAXgB,OACd,GCTW,WAAa,IAAIE,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACa,YAAY,mBAAmB,CAACb,EAAG,OAAO,CAACa,YAAY,yBAAyBjB,EAAIa,GAAG,OAAOb,EAAIc,GAAGd,EAAIV,MAAQU,EAAIe,EAAE,WAAY,mBAAmB,QAAQX,EAAG,UAAU,CAACmB,MAAM,CAAC,cAAa,IAAO,CAACnB,EAAG,eAAe,CAACmB,MAAM,CAAC,KAAO,eAAeZ,GAAG,CAAC,MAAQ,SAASc,GAAQ,OAAOzB,EAAIqC,MAAM,aAAa,CAACrC,EAAIa,GAAG,WAAWb,EAAIc,GAAGd,EAAIe,EAAE,WAAY,WAAW,aAAa,IAAI,KAC/c,IDWpB,EACA,KACA,WACA,MAI8B,iIEuChC,kBAEA,GACA,YACA,YACA,UAEA,OACA,gBACA,WACA,aAEA,SACA,aACA,YAEA,aACA,aACA,YAEA,wBACA,aACA,aAGA,KAvBA,WAwBA,OACA,8BAGA,UACA,cADA,WAEA,yBAGA,SACA,YADA,SACA,GACA,uDAEA,sBAEA,aANA,SAMA,sJACA,8CADA,SAGA,MAHA,uBAIA,KAJA,OAMA,2DAEA,6DARA,8NCnG0L,ICkB1L,IAXgB,OACd,GCRW,WAAa,IAAIf,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACa,YAAY,UAAUM,MAAM,CAAC,GAAK,sBAAsB,CAACnB,EAAG,KAAK,CAACJ,EAAIa,GAAGb,EAAIc,GAAGd,EAAIe,EAAE,WAAY,mCAAmCf,EAAIa,GAAG,KAAKT,EAAG,IAAI,CAACa,YAAY,mCAAmC,CAACjB,EAAIa,GAAG,SAASb,EAAIc,GAAGd,EAAIe,EAAE,WAAY,sFAAsF,UAAUf,EAAIa,GAAG,KAA6B,IAAvBb,EAAIsC,QAAQC,OAAcnC,EAAG,IAAI,CAACJ,EAAIa,GAAG,SAASb,EAAIc,GAAGd,EAAIe,EAAE,WAAY,2BAA2B,UAAUX,EAAG,IAAI,CAACJ,EAAIa,GAAG,SAASb,EAAIc,GAAGd,EAAIe,EAAE,WAAY,2DAA2D,UAAUf,EAAIa,GAAG,KAAKb,EAAIwC,GAAIxC,EAAiB,eAAE,SAASyC,GAAQ,OAAOrC,EAAG,SAAS,CAAC0B,IAAIW,EAAOjD,GAAG+B,MAAM,CAAC,KAAOkB,EAAOnD,MAAMqB,GAAG,CAAC,OAAS,SAASc,GAAQ,OAAOzB,EAAI0C,aAAaD,EAAOjD,WAAUQ,EAAIa,GAAG,KAAOb,EAAI2C,uBAAuJ3C,EAAI4C,KAAnIxC,EAAG,IAAI,CAACa,YAAY,WAAW,CAACjB,EAAIa,GAAG,SAASb,EAAIc,GAAGd,EAAIe,EAAE,WAAY,4CAA4C,UAAmBf,EAAIa,GAAG,KAAMb,EAA0B,uBAAEI,EAAG,YAAY,CAACmB,MAAM,CAAC,WAAWvB,EAAIM,QAAQ,eAAeN,EAAIO,aAAaI,GAAG,CAAC,MAAQX,EAAI6C,eAAe7C,EAAI4C,MAAM,KACvqC,IDUpB,EACA,KACA,WACA,MAI8B,QEUhCE,EAAAA,GAAoBC,KAAKC,GAAGC,cAE5BC,EAAAA,QAAAA,UAAAA,EAAkBnC,EAIlB,IAFamC,EAAAA,QAAAA,OAAWC,IAExB,CAAS,CACRC,UAAW,CACVC,gBAHcC,EAAAA,EAAAA,WAAU,WAAY,oBAIpChD,QAAsC,WAA7BiD,OAAOC,SAASC,SACzBlD,YAA0C,cAA7BgD,OAAOC,SAASE,SAC7Bf,4BAAgE,IAAhCY,OAAOI,uBAEtCC,OAAO,gFCtCNC,QAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOvE,GAAI,6MAA8M,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,mEAAmE,MAAQ,GAAG,SAAW,+EAA+E,eAAiB,CAAC,+9MAAw9M,WAAa,MAEj7N,gECJIqE,QAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOvE,GAAI,uNAAwN,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,gEAAgE,MAAQ,GAAG,SAAW,uFAAuF,eAAiB,CAAC,yyDAAkyD,WAAa,MAE1wE,QCNIwE,EAA2B,GAG/B,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaE,QAGrB,IAAIN,EAASC,EAAyBE,GAAY,CACjD1E,GAAI0E,EACJI,QAAQ,EACRD,QAAS,IAUV,OANAE,EAAoBL,GAAUM,KAAKT,EAAOM,QAASN,EAAQA,EAAOM,QAASJ,GAG3EF,EAAOO,QAAS,EAGTP,EAAOM,QAIfJ,EAAoBQ,EAAIF,EC5BxBN,EAAoBS,KAAO,WAC1B,MAAM,IAAIC,MAAM,mCCDjBV,EAAoBW,KAAO,GtBAvBjG,EAAW,GACfsF,EAAoBY,EAAI,SAASC,EAAQC,EAAUC,EAAIC,GACtD,IAAGF,EAAH,CAMA,IAAIG,EAAeC,EAAAA,EACnB,IAASC,EAAI,EAAGA,EAAIzG,EAAS4D,OAAQ6C,IAAK,CACrCL,EAAWpG,EAASyG,GAAG,GACvBJ,EAAKrG,EAASyG,GAAG,GACjBH,EAAWtG,EAASyG,GAAG,GAE3B,IAJA,IAGIC,GAAY,EACPC,EAAI,EAAGA,EAAIP,EAASxC,OAAQ+C,MACpB,EAAXL,GAAsBC,GAAgBD,IAAaM,OAAOC,KAAKvB,EAAoBY,GAAGY,OAAM,SAAS3D,GAAO,OAAOmC,EAAoBY,EAAE/C,GAAKiD,EAASO,OAC3JP,EAASW,OAAOJ,IAAK,IAErBD,GAAY,EACTJ,EAAWC,IAAcA,EAAeD,IAG7C,GAAGI,EAAW,CACb1G,EAAS+G,OAAON,IAAK,GACrB,IAAIO,EAAIX,SACEZ,IAANuB,IAAiBb,EAASa,IAGhC,OAAOb,EAzBNG,EAAWA,GAAY,EACvB,IAAI,IAAIG,EAAIzG,EAAS4D,OAAQ6C,EAAI,GAAKzG,EAASyG,EAAI,GAAG,GAAKH,EAAUG,IAAKzG,EAASyG,GAAKzG,EAASyG,EAAI,GACrGzG,EAASyG,GAAK,CAACL,EAAUC,EAAIC,IuBJ/BhB,EAAoB2B,EAAI,SAAS7B,GAChC,IAAI8B,EAAS9B,GAAUA,EAAO+B,WAC7B,WAAa,OAAO/B,EAAgB,SACpC,WAAa,OAAOA,GAErB,OADAE,EAAoB8B,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,GCLR5B,EAAoB8B,EAAI,SAAS1B,EAAS4B,GACzC,IAAI,IAAInE,KAAOmE,EACXhC,EAAoBiC,EAAED,EAAYnE,KAASmC,EAAoBiC,EAAE7B,EAASvC,IAC5EyD,OAAOY,eAAe9B,EAASvC,EAAK,CAAEsE,YAAY,EAAMC,IAAKJ,EAAWnE,MCJ3EmC,EAAoBqC,EAAI,WACvB,GAA0B,iBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAOtG,MAAQ,IAAIuG,SAAS,cAAb,GACd,MAAOC,GACR,GAAsB,iBAAXlD,OAAqB,OAAOA,QALjB,GCAxBU,EAAoBiC,EAAI,SAASQ,EAAKC,GAAQ,OAAOpB,OAAOqB,UAAUC,eAAerC,KAAKkC,EAAKC,ICC/F1C,EAAoB0B,EAAI,SAAStB,GACX,oBAAXyC,QAA0BA,OAAOC,aAC1CxB,OAAOY,eAAe9B,EAASyC,OAAOC,YAAa,CAAE1F,MAAO,WAE7DkE,OAAOY,eAAe9B,EAAS,aAAc,CAAEhD,OAAO,KCLvD4C,EAAoB+C,IAAM,SAASjD,GAGlC,OAFAA,EAAOkD,MAAQ,GACVlD,EAAOmD,WAAUnD,EAAOmD,SAAW,IACjCnD,GCHRE,EAAoBqB,EAAI,gBCAxBrB,EAAoBkD,EAAIC,SAASC,SAAWC,KAAK9D,SAAS+D,KAK1D,IAAIC,EAAkB,CACrB,KAAM,GAaPvD,EAAoBY,EAAES,EAAI,SAASmC,GAAW,OAAoC,IAA7BD,EAAgBC,IAGrE,IAAIC,EAAuB,SAASC,EAA4BvI,GAC/D,IAKI8E,EAAUuD,EALV1C,EAAW3F,EAAK,GAChBwI,EAAcxI,EAAK,GACnByI,EAAUzI,EAAK,GAGIgG,EAAI,EAC3B,GAAGL,EAAS+C,MAAK,SAAStI,GAAM,OAA+B,IAAxBgI,EAAgBhI,MAAe,CACrE,IAAI0E,KAAY0D,EACZ3D,EAAoBiC,EAAE0B,EAAa1D,KACrCD,EAAoBQ,EAAEP,GAAY0D,EAAY1D,IAGhD,GAAG2D,EAAS,IAAI/C,EAAS+C,EAAQ5D,GAGlC,IADG0D,GAA4BA,EAA2BvI,GACrDgG,EAAIL,EAASxC,OAAQ6C,IACzBqC,EAAU1C,EAASK,GAChBnB,EAAoBiC,EAAEsB,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBC,GAAW,EAE5B,OAAOxD,EAAoBY,EAAEC,IAG1BiD,EAAqBT,KAA4B,sBAAIA,KAA4B,uBAAK,GAC1FS,EAAmBC,QAAQN,EAAqBO,KAAK,KAAM,IAC3DF,EAAmBjE,KAAO4D,EAAqBO,KAAK,KAAMF,EAAmBjE,KAAKmE,KAAKF,OC/CvF,IAAIG,EAAsBjE,EAAoBY,OAAET,EAAW,CAAC,OAAO,WAAa,OAAOH,EAAoB,SAC3GiE,EAAsBjE,EAAoBY,EAAEqD","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/settings/src/logger.js","webpack:///nextcloud/apps/settings/src/service/WebAuthnRegistrationSerice.js","webpack:///nextcloud/apps/settings/src/components/WebAuthn/AddDevice.vue","webpack:///nextcloud/apps/settings/src/components/WebAuthn/AddDevice.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/WebAuthn/AddDevice.vue?110a","webpack://nextcloud/./apps/settings/src/components/WebAuthn/AddDevice.vue?5011","webpack:///nextcloud/apps/settings/src/components/WebAuthn/AddDevice.vue?vue&type=template&id=f9b952b4&scoped=true&","webpack:///nextcloud/apps/settings/src/components/WebAuthn/Device.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/WebAuthn/Device.vue","webpack://nextcloud/./apps/settings/src/components/WebAuthn/Device.vue?828a","webpack://nextcloud/./apps/settings/src/components/WebAuthn/Device.vue?06c3","webpack:///nextcloud/apps/settings/src/components/WebAuthn/Device.vue?vue&type=template&id=187f22d4&scoped=true&","webpack:///nextcloud/apps/settings/src/components/WebAuthn/Section.vue","webpack:///nextcloud/apps/settings/src/components/WebAuthn/Section.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/WebAuthn/Section.vue?3346","webpack:///nextcloud/apps/settings/src/components/WebAuthn/Section.vue?vue&type=template&id=662cb041&scoped=true&","webpack:///nextcloud/apps/settings/src/main-personal-webauth.js","webpack:///nextcloud/apps/settings/src/components/WebAuthn/AddDevice.vue?vue&type=style&index=0&id=f9b952b4&scoped=true&lang=css&","webpack:///nextcloud/apps/settings/src/components/WebAuthn/Device.vue?vue&type=style&index=0&id=187f22d4&scoped=true&lang=css&","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 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('settings')\n\t.detectUser()\n\t.build()\n","/**\n * @copyright 2020, Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\n\n/**\n *\n */\nexport async function startRegistration() {\n\tconst url = generateUrl('/settings/api/personal/webauthn/registration')\n\n\tconst resp = await axios.get(url)\n\treturn resp.data\n}\n\n/**\n * @param {any} name -\n * @param {any} data -\n */\nexport async function finishRegistration(name, data) {\n\tconst url = generateUrl('/settings/api/personal/webauthn/registration')\n\n\tconst resp = await axios.post(url, { name, data })\n\treturn resp.data\n}\n\n/**\n * @param {any} id -\n */\nexport async function removeRegistration(id) {\n\tconst url = generateUrl(`/settings/api/personal/webauthn/registration/${id}`)\n\n\tawait axios.delete(url)\n}\n","<!--\n - @copyright 2020, Roeland Jago Douma <roeland@famdouma.nl>\n -\n - @author Roeland Jago Douma <roeland@famdouma.nl>\n -\n - @license GNU AGPL version 3 or any later version\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\n<template>\n\t<div v-if=\"!isHttps && !isLocalhost\">\n\t\t{{ t('settings', 'Passwordless authentication requires a secure connection.') }}\n\t</div>\n\t<div v-else>\n\t\t<div v-if=\"step === RegistrationSteps.READY\">\n\t\t\t<button @click=\"start\">\n\t\t\t\t{{ t('settings', 'Add WebAuthn device') }}\n\t\t\t</button>\n\t\t</div>\n\n\t\t<div v-else-if=\"step === RegistrationSteps.REGISTRATION\"\n\t\t\tclass=\"new-webauthn-device\">\n\t\t\t<span class=\"icon-loading-small webauthn-loading\" />\n\t\t\t{{ t('settings', 'Please authorize your WebAuthn device.') }}\n\t\t</div>\n\n\t\t<div v-else-if=\"step === RegistrationSteps.NAMING\"\n\t\t\tclass=\"new-webauthn-device\">\n\t\t\t<span class=\"icon-loading-small webauthn-loading\" />\n\t\t\t<input v-model=\"name\"\n\t\t\t\ttype=\"text\"\n\t\t\t\t:placeholder=\"t('settings', 'Name your device')\"\n\t\t\t\t@:keyup.enter=\"submit\">\n\t\t\t<button @click=\"submit\">\n\t\t\t\t{{ t('settings', 'Add') }}\n\t\t\t</button>\n\t\t</div>\n\n\t\t<div v-else-if=\"step === RegistrationSteps.PERSIST\"\n\t\t\tclass=\"new-webauthn-device\">\n\t\t\t<span class=\"icon-loading-small webauthn-loading\" />\n\t\t\t{{ t('settings', 'Adding your device …') }}\n\t\t</div>\n\n\t\t<div v-else>\n\t\t\tInvalid registration step. This should not have happened.\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport confirmPassword from '@nextcloud/password-confirmation'\n\nimport logger from '../../logger'\nimport {\n\tstartRegistration,\n\tfinishRegistration,\n} from '../../service/WebAuthnRegistrationSerice'\n\nconst logAndPass = (text) => (data) => {\n\tlogger.debug(text)\n\treturn data\n}\n\nconst RegistrationSteps = Object.freeze({\n\tREADY: 1,\n\tREGISTRATION: 2,\n\tNAMING: 3,\n\tPERSIST: 4,\n})\n\nexport default {\n\tname: 'AddDevice',\n\tprops: {\n\t\thttpWarning: Boolean,\n\t\tisHttps: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisLocalhost: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tname: '',\n\t\t\tcredential: {},\n\t\t\tRegistrationSteps,\n\t\t\tstep: RegistrationSteps.READY,\n\t\t}\n\t},\n\tmethods: {\n\t\tarrayToBase64String(a) {\n\t\t\treturn btoa(String.fromCharCode(...a))\n\t\t},\n\t\tstart() {\n\t\t\tthis.step = RegistrationSteps.REGISTRATION\n\t\t\tconsole.debug('Starting WebAuthn registration')\n\n\t\t\treturn confirmPassword()\n\t\t\t\t.then(this.getRegistrationData)\n\t\t\t\t.then(this.register.bind(this))\n\t\t\t\t.then(() => { this.step = RegistrationSteps.NAMING })\n\t\t\t\t.catch(err => {\n\t\t\t\t\tconsole.error(err.name, err.message)\n\t\t\t\t\tthis.step = RegistrationSteps.READY\n\t\t\t\t})\n\t\t},\n\n\t\tgetRegistrationData() {\n\t\t\tconsole.debug('Fetching webauthn registration data')\n\n\t\t\tconst base64urlDecode = function(input) {\n\t\t\t\t// Replace non-url compatible chars with base64 standard chars\n\t\t\t\tinput = input\n\t\t\t\t\t.replace(/-/g, '+')\n\t\t\t\t\t.replace(/_/g, '/')\n\n\t\t\t\t// Pad out with standard base64 required padding characters\n\t\t\t\tconst pad = input.length % 4\n\t\t\t\tif (pad) {\n\t\t\t\t\tif (pad === 1) {\n\t\t\t\t\t\tthrow new Error('InvalidLengthError: Input base64url string is the wrong length to determine padding')\n\t\t\t\t\t}\n\t\t\t\t\tinput += new Array(5 - pad).join('=')\n\t\t\t\t}\n\n\t\t\t\treturn window.atob(input)\n\t\t\t}\n\n\t\t\treturn startRegistration()\n\t\t\t\t.then(publicKey => {\n\t\t\t\t\tconsole.debug(publicKey)\n\t\t\t\t\tpublicKey.challenge = Uint8Array.from(base64urlDecode(publicKey.challenge), c => c.charCodeAt(0))\n\t\t\t\t\tpublicKey.user.id = Uint8Array.from(publicKey.user.id, c => c.charCodeAt(0))\n\t\t\t\t\treturn publicKey\n\t\t\t\t})\n\t\t\t\t.catch(err => {\n\t\t\t\t\tconsole.error('Error getting webauthn registration data from server', err)\n\t\t\t\t\tthrow new Error(t('settings', 'Server error while trying to add WebAuthn device'))\n\t\t\t\t})\n\t\t},\n\n\t\tregister(publicKey) {\n\t\t\tconsole.debug('starting webauthn registration')\n\n\t\t\treturn navigator.credentials.create({ publicKey })\n\t\t\t\t.then(data => {\n\t\t\t\t\tthis.credential = {\n\t\t\t\t\t\tid: data.id,\n\t\t\t\t\t\ttype: data.type,\n\t\t\t\t\t\trawId: this.arrayToBase64String(new Uint8Array(data.rawId)),\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tclientDataJSON: this.arrayToBase64String(new Uint8Array(data.response.clientDataJSON)),\n\t\t\t\t\t\t\tattestationObject: this.arrayToBase64String(new Uint8Array(data.response.attestationObject)),\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t},\n\n\t\tsubmit() {\n\t\t\tthis.step = RegistrationSteps.PERSIST\n\n\t\t\treturn confirmPassword()\n\t\t\t\t.then(logAndPass('confirmed password'))\n\t\t\t\t.then(this.saveRegistrationData)\n\t\t\t\t.then(logAndPass('registration data saved'))\n\t\t\t\t.then(() => this.reset())\n\t\t\t\t.then(logAndPass('app reset'))\n\t\t\t\t.catch(console.error.bind(this))\n\t\t},\n\n\t\tasync saveRegistrationData() {\n\t\t\ttry {\n\t\t\t\tconst device = await finishRegistration(this.name, JSON.stringify(this.credential))\n\n\t\t\t\tlogger.info('new device added', { device })\n\n\t\t\t\tthis.$emit('added', device)\n\t\t\t} catch (err) {\n\t\t\t\tlogger.error('Error persisting webauthn registration', { error: err })\n\t\t\t\tthrow new Error(t('settings', 'Server error while trying to complete WebAuthn device registration'))\n\t\t\t}\n\t\t},\n\n\t\treset() {\n\t\t\tthis.name = ''\n\t\t\tthis.registrationData = {}\n\t\t\tthis.step = RegistrationSteps.READY\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\t.webauthn-loading {\n\t\tdisplay: inline-block;\n\t\tvertical-align: sub;\n\t\tmargin-left: 2px;\n\t\tmargin-right: 2px;\n\t}\n\n\t.new-webauthn-device {\n\t\tline-height: 300%;\n\t}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddDevice.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!./AddDevice.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/vue-loader/lib/index.js??vue-loader-options!./AddDevice.vue?vue&type=style&index=0&id=f9b952b4&scoped=true&lang=css&\";\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/vue-loader/lib/index.js??vue-loader-options!./AddDevice.vue?vue&type=style&index=0&id=f9b952b4&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AddDevice.vue?vue&type=template&id=f9b952b4&scoped=true&\"\nimport script from \"./AddDevice.vue?vue&type=script&lang=js&\"\nexport * from \"./AddDevice.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AddDevice.vue?vue&type=style&index=0&id=f9b952b4&scoped=true&lang=css&\"\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 \"f9b952b4\",\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 (!_vm.isHttps && !_vm.isLocalhost)?_c('div',[_vm._v(\"\\n\\t\"+_vm._s(_vm.t('settings', 'Passwordless authentication requires a secure connection.'))+\"\\n\")]):_c('div',[(_vm.step === _vm.RegistrationSteps.READY)?_c('div',[_c('button',{on:{\"click\":_vm.start}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Add WebAuthn device'))+\"\\n\\t\\t\")])]):(_vm.step === _vm.RegistrationSteps.REGISTRATION)?_c('div',{staticClass:\"new-webauthn-device\"},[_c('span',{staticClass:\"icon-loading-small webauthn-loading\"}),_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Please authorize your WebAuthn device.'))+\"\\n\\t\")]):(_vm.step === _vm.RegistrationSteps.NAMING)?_c('div',{staticClass:\"new-webauthn-device\"},[_c('span',{staticClass:\"icon-loading-small webauthn-loading\"}),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.name),expression:\"name\"}],attrs:{\"type\":\"text\",\"placeholder\":_vm.t('settings', 'Name your device')},domProps:{\"value\":(_vm.name)},on:{\":keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.submit.apply(null, arguments)},\"input\":function($event){if($event.target.composing){ return; }_vm.name=$event.target.value}}}),_vm._v(\" \"),_c('button',{on:{\"click\":_vm.submit}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Add'))+\"\\n\\t\\t\")])]):(_vm.step === _vm.RegistrationSteps.PERSIST)?_c('div',{staticClass:\"new-webauthn-device\"},[_c('span',{staticClass:\"icon-loading-small webauthn-loading\"}),_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Adding your device …'))+\"\\n\\t\")]):_c('div',[_vm._v(\"\\n\\t\\tInvalid registration step. This should not have happened.\\n\\t\")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Device.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!./Device.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\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\n<template>\n\t<div class=\"webauthn-device\">\n\t\t<span class=\"icon-webauthn-device\" />\n\t\t{{ name || t('settings', 'Unnamed device') }}\n\t\t<Actions :force-menu=\"true\">\n\t\t\t<ActionButton icon=\"icon-delete\" @click=\"$emit('delete')\">\n\t\t\t\t{{ t('settings', 'Delete') }}\n\t\t\t</ActionButton>\n\t\t</Actions>\n\t</div>\n</template>\n\n<script>\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\n\nexport default {\n\tname: 'Device',\n\tcomponents: {\n\t\tActionButton,\n\t\tActions,\n\t},\n\tprops: {\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\t.webauthn-device {\n\t\tline-height: 300%;\n\t\tdisplay: flex;\n\t}\n\n\t.icon-webauthn-device {\n\t\tdisplay: inline-block;\n\t\tbackground-size: 100%;\n\t\tpadding: 3px;\n\t\tmargin: 3px;\n\t}\n</style>\n","\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/vue-loader/lib/index.js??vue-loader-options!./Device.vue?vue&type=style&index=0&id=187f22d4&scoped=true&lang=css&\";\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/vue-loader/lib/index.js??vue-loader-options!./Device.vue?vue&type=style&index=0&id=187f22d4&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Device.vue?vue&type=template&id=187f22d4&scoped=true&\"\nimport script from \"./Device.vue?vue&type=script&lang=js&\"\nexport * from \"./Device.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Device.vue?vue&type=style&index=0&id=187f22d4&scoped=true&lang=css&\"\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 \"187f22d4\",\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:\"webauthn-device\"},[_c('span',{staticClass:\"icon-webauthn-device\"}),_vm._v(\"\\n\\t\"+_vm._s(_vm.name || _vm.t('settings', 'Unnamed device'))+\"\\n\\t\"),_c('Actions',{attrs:{\"force-menu\":true}},[_c('ActionButton',{attrs:{\"icon\":\"icon-delete\"},on:{\"click\":function($event){return _vm.$emit('delete')}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Delete'))+\"\\n\\t\\t\")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2020, Roeland Jago Douma <roeland@famdouma.nl>\n -\n - @author Roeland Jago Douma <roeland@famdouma.nl>\n -\n - @license GNU AGPL version 3 or any later version\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\n<template>\n\t<div id=\"security-webauthn\" class=\"section\">\n\t\t<h2>{{ t('settings', 'Passwordless Authentication') }}</h2>\n\t\t<p class=\"settings-hint hidden-when-empty\">\n\t\t\t{{ t('settings', 'Set up your account for passwordless authentication following the FIDO2 standard.') }}\n\t\t</p>\n\t\t<p v-if=\"devices.length === 0\">\n\t\t\t{{ t('settings', 'No devices configured.') }}\n\t\t</p>\n\t\t<p v-else>\n\t\t\t{{ t('settings', 'The following devices are configured for your account:') }}\n\t\t</p>\n\t\t<Device v-for=\"device in sortedDevices\"\n\t\t\t:key=\"device.id\"\n\t\t\t:name=\"device.name\"\n\t\t\t@delete=\"deleteDevice(device.id)\" />\n\n\t\t<p v-if=\"!hasPublicKeyCredential\" class=\"warning\">\n\t\t\t{{ t('settings', 'Your browser does not support WebAuthn.') }}\n\t\t</p>\n\n\t\t<AddDevice v-if=\"hasPublicKeyCredential\"\n\t\t\t:is-https=\"isHttps\"\n\t\t\t:is-localhost=\"isLocalhost\"\n\t\t\t@added=\"deviceAdded\" />\n\t</div>\n</template>\n\n<script>\nimport confirmPassword from '@nextcloud/password-confirmation'\nimport sortBy from 'lodash/fp/sortBy'\n\nimport AddDevice from './AddDevice'\nimport Device from './Device'\nimport logger from '../../logger'\nimport { removeRegistration } from '../../service/WebAuthnRegistrationSerice'\n\nconst sortByName = sortBy('name')\n\nexport default {\n\tcomponents: {\n\t\tAddDevice,\n\t\tDevice,\n\t},\n\tprops: {\n\t\tinitialDevices: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\tisHttps: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisLocalhost: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\thasPublicKeyCredential: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tdevices: this.initialDevices,\n\t\t}\n\t},\n\tcomputed: {\n\t\tsortedDevices() {\n\t\t\treturn sortByName(this.devices)\n\t\t},\n\t},\n\tmethods: {\n\t\tdeviceAdded(device) {\n\t\t\tlogger.debug(`adding new device to the list ${device.id}`)\n\n\t\t\tthis.devices.push(device)\n\t\t},\n\t\tasync deleteDevice(id) {\n\t\t\tlogger.info(`deleting webauthn device ${id}`)\n\n\t\t\tawait confirmPassword()\n\t\t\tawait removeRegistration(id)\n\n\t\t\tthis.devices = this.devices.filter(d => d.id !== id)\n\n\t\t\tlogger.info(`webauthn device ${id} removed successfully`)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Section.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!./Section.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Section.vue?vue&type=template&id=662cb041&scoped=true&\"\nimport script from \"./Section.vue?vue&type=script&lang=js&\"\nexport * from \"./Section.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"662cb041\",\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\",attrs:{\"id\":\"security-webauthn\"}},[_c('h2',[_vm._v(_vm._s(_vm.t('settings', 'Passwordless Authentication')))]),_vm._v(\" \"),_c('p',{staticClass:\"settings-hint hidden-when-empty\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Set up your account for passwordless authentication following the FIDO2 standard.'))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.devices.length === 0)?_c('p',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'No devices configured.'))+\"\\n\\t\")]):_c('p',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'The following devices are configured for your account:'))+\"\\n\\t\")]),_vm._v(\" \"),_vm._l((_vm.sortedDevices),function(device){return _c('Device',{key:device.id,attrs:{\"name\":device.name},on:{\"delete\":function($event){return _vm.deleteDevice(device.id)}}})}),_vm._v(\" \"),(!_vm.hasPublicKeyCredential)?_c('p',{staticClass:\"warning\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Your browser does not support WebAuthn.'))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.hasPublicKeyCredential)?_c('AddDevice',{attrs:{\"is-https\":_vm.isHttps,\"is-localhost\":_vm.isLocalhost},on:{\"added\":_vm.deviceAdded}}):_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2020, Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport Vue from 'vue'\nimport { loadState } from '@nextcloud/initial-state'\n\nimport WebAuthnSection from './components/WebAuthn/Section'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(OC.requestToken)\n\nVue.prototype.t = t\n\nconst View = Vue.extend(WebAuthnSection)\nconst devices = loadState('settings', 'webauthn-devices')\nnew View({\n\tpropsData: {\n\t\tinitialDevices: devices,\n\t\tisHttps: window.location.protocol === 'https:',\n\t\tisLocalhost: window.location.hostname === 'localhost',\n\t\thasPublicKeyCredential: typeof (window.PublicKeyCredential) !== 'undefined',\n\t},\n}).$mount('#security-webauthn')\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, \"\\n.webauthn-loading[data-v-f9b952b4] {\\n\\tdisplay: inline-block;\\n\\tvertical-align: sub;\\n\\tmargin-left: 2px;\\n\\tmargin-right: 2px;\\n}\\n.new-webauthn-device[data-v-f9b952b4] {\\n\\tline-height: 300%;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/WebAuthn/AddDevice.vue\"],\"names\":[],\"mappings\":\";AAgNA;CACA,qBAAA;CACA,mBAAA;CACA,gBAAA;CACA,iBAAA;AACA;AAEA;CACA,iBAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright 2020, Roeland Jago Douma <roeland@famdouma.nl>\\n -\\n - @author Roeland Jago Douma <roeland@famdouma.nl>\\n -\\n - @license GNU AGPL version 3 or any later version\\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\\n<template>\\n\\t<div v-if=\\\"!isHttps && !isLocalhost\\\">\\n\\t\\t{{ t('settings', 'Passwordless authentication requires a secure connection.') }}\\n\\t</div>\\n\\t<div v-else>\\n\\t\\t<div v-if=\\\"step === RegistrationSteps.READY\\\">\\n\\t\\t\\t<button @click=\\\"start\\\">\\n\\t\\t\\t\\t{{ t('settings', 'Add WebAuthn device') }}\\n\\t\\t\\t</button>\\n\\t\\t</div>\\n\\n\\t\\t<div v-else-if=\\\"step === RegistrationSteps.REGISTRATION\\\"\\n\\t\\t\\tclass=\\\"new-webauthn-device\\\">\\n\\t\\t\\t<span class=\\\"icon-loading-small webauthn-loading\\\" />\\n\\t\\t\\t{{ t('settings', 'Please authorize your WebAuthn device.') }}\\n\\t\\t</div>\\n\\n\\t\\t<div v-else-if=\\\"step === RegistrationSteps.NAMING\\\"\\n\\t\\t\\tclass=\\\"new-webauthn-device\\\">\\n\\t\\t\\t<span class=\\\"icon-loading-small webauthn-loading\\\" />\\n\\t\\t\\t<input v-model=\\\"name\\\"\\n\\t\\t\\t\\ttype=\\\"text\\\"\\n\\t\\t\\t\\t:placeholder=\\\"t('settings', 'Name your device')\\\"\\n\\t\\t\\t\\t@:keyup.enter=\\\"submit\\\">\\n\\t\\t\\t<button @click=\\\"submit\\\">\\n\\t\\t\\t\\t{{ t('settings', 'Add') }}\\n\\t\\t\\t</button>\\n\\t\\t</div>\\n\\n\\t\\t<div v-else-if=\\\"step === RegistrationSteps.PERSIST\\\"\\n\\t\\t\\tclass=\\\"new-webauthn-device\\\">\\n\\t\\t\\t<span class=\\\"icon-loading-small webauthn-loading\\\" />\\n\\t\\t\\t{{ t('settings', 'Adding your device …') }}\\n\\t\\t</div>\\n\\n\\t\\t<div v-else>\\n\\t\\t\\tInvalid registration step. This should not have happened.\\n\\t\\t</div>\\n\\t</div>\\n</template>\\n\\n<script>\\nimport confirmPassword from '@nextcloud/password-confirmation'\\n\\nimport logger from '../../logger'\\nimport {\\n\\tstartRegistration,\\n\\tfinishRegistration,\\n} from '../../service/WebAuthnRegistrationSerice'\\n\\nconst logAndPass = (text) => (data) => {\\n\\tlogger.debug(text)\\n\\treturn data\\n}\\n\\nconst RegistrationSteps = Object.freeze({\\n\\tREADY: 1,\\n\\tREGISTRATION: 2,\\n\\tNAMING: 3,\\n\\tPERSIST: 4,\\n})\\n\\nexport default {\\n\\tname: 'AddDevice',\\n\\tprops: {\\n\\t\\thttpWarning: Boolean,\\n\\t\\tisHttps: {\\n\\t\\t\\ttype: Boolean,\\n\\t\\t\\tdefault: false,\\n\\t\\t},\\n\\t\\tisLocalhost: {\\n\\t\\t\\ttype: Boolean,\\n\\t\\t\\tdefault: false,\\n\\t\\t},\\n\\t},\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tname: '',\\n\\t\\t\\tcredential: {},\\n\\t\\t\\tRegistrationSteps,\\n\\t\\t\\tstep: RegistrationSteps.READY,\\n\\t\\t}\\n\\t},\\n\\tmethods: {\\n\\t\\tarrayToBase64String(a) {\\n\\t\\t\\treturn btoa(String.fromCharCode(...a))\\n\\t\\t},\\n\\t\\tstart() {\\n\\t\\t\\tthis.step = RegistrationSteps.REGISTRATION\\n\\t\\t\\tconsole.debug('Starting WebAuthn registration')\\n\\n\\t\\t\\treturn confirmPassword()\\n\\t\\t\\t\\t.then(this.getRegistrationData)\\n\\t\\t\\t\\t.then(this.register.bind(this))\\n\\t\\t\\t\\t.then(() => { this.step = RegistrationSteps.NAMING })\\n\\t\\t\\t\\t.catch(err => {\\n\\t\\t\\t\\t\\tconsole.error(err.name, err.message)\\n\\t\\t\\t\\t\\tthis.step = RegistrationSteps.READY\\n\\t\\t\\t\\t})\\n\\t\\t},\\n\\n\\t\\tgetRegistrationData() {\\n\\t\\t\\tconsole.debug('Fetching webauthn registration data')\\n\\n\\t\\t\\tconst base64urlDecode = function(input) {\\n\\t\\t\\t\\t// Replace non-url compatible chars with base64 standard chars\\n\\t\\t\\t\\tinput = input\\n\\t\\t\\t\\t\\t.replace(/-/g, '+')\\n\\t\\t\\t\\t\\t.replace(/_/g, '/')\\n\\n\\t\\t\\t\\t// Pad out with standard base64 required padding characters\\n\\t\\t\\t\\tconst pad = input.length % 4\\n\\t\\t\\t\\tif (pad) {\\n\\t\\t\\t\\t\\tif (pad === 1) {\\n\\t\\t\\t\\t\\t\\tthrow new Error('InvalidLengthError: Input base64url string is the wrong length to determine padding')\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tinput += new Array(5 - pad).join('=')\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn window.atob(input)\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn startRegistration()\\n\\t\\t\\t\\t.then(publicKey => {\\n\\t\\t\\t\\t\\tconsole.debug(publicKey)\\n\\t\\t\\t\\t\\tpublicKey.challenge = Uint8Array.from(base64urlDecode(publicKey.challenge), c => c.charCodeAt(0))\\n\\t\\t\\t\\t\\tpublicKey.user.id = Uint8Array.from(publicKey.user.id, c => c.charCodeAt(0))\\n\\t\\t\\t\\t\\treturn publicKey\\n\\t\\t\\t\\t})\\n\\t\\t\\t\\t.catch(err => {\\n\\t\\t\\t\\t\\tconsole.error('Error getting webauthn registration data from server', err)\\n\\t\\t\\t\\t\\tthrow new Error(t('settings', 'Server error while trying to add WebAuthn device'))\\n\\t\\t\\t\\t})\\n\\t\\t},\\n\\n\\t\\tregister(publicKey) {\\n\\t\\t\\tconsole.debug('starting webauthn registration')\\n\\n\\t\\t\\treturn navigator.credentials.create({ publicKey })\\n\\t\\t\\t\\t.then(data => {\\n\\t\\t\\t\\t\\tthis.credential = {\\n\\t\\t\\t\\t\\t\\tid: data.id,\\n\\t\\t\\t\\t\\t\\ttype: data.type,\\n\\t\\t\\t\\t\\t\\trawId: this.arrayToBase64String(new Uint8Array(data.rawId)),\\n\\t\\t\\t\\t\\t\\tresponse: {\\n\\t\\t\\t\\t\\t\\t\\tclientDataJSON: this.arrayToBase64String(new Uint8Array(data.response.clientDataJSON)),\\n\\t\\t\\t\\t\\t\\t\\tattestationObject: this.arrayToBase64String(new Uint8Array(data.response.attestationObject)),\\n\\t\\t\\t\\t\\t\\t},\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t})\\n\\t\\t},\\n\\n\\t\\tsubmit() {\\n\\t\\t\\tthis.step = RegistrationSteps.PERSIST\\n\\n\\t\\t\\treturn confirmPassword()\\n\\t\\t\\t\\t.then(logAndPass('confirmed password'))\\n\\t\\t\\t\\t.then(this.saveRegistrationData)\\n\\t\\t\\t\\t.then(logAndPass('registration data saved'))\\n\\t\\t\\t\\t.then(() => this.reset())\\n\\t\\t\\t\\t.then(logAndPass('app reset'))\\n\\t\\t\\t\\t.catch(console.error.bind(this))\\n\\t\\t},\\n\\n\\t\\tasync saveRegistrationData() {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tconst device = await finishRegistration(this.name, JSON.stringify(this.credential))\\n\\n\\t\\t\\t\\tlogger.info('new device added', { device })\\n\\n\\t\\t\\t\\tthis.$emit('added', device)\\n\\t\\t\\t} catch (err) {\\n\\t\\t\\t\\tlogger.error('Error persisting webauthn registration', { error: err })\\n\\t\\t\\t\\tthrow new Error(t('settings', 'Server error while trying to complete WebAuthn device registration'))\\n\\t\\t\\t}\\n\\t\\t},\\n\\n\\t\\treset() {\\n\\t\\t\\tthis.name = ''\\n\\t\\t\\tthis.registrationData = {}\\n\\t\\t\\tthis.step = RegistrationSteps.READY\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style scoped>\\n\\t.webauthn-loading {\\n\\t\\tdisplay: inline-block;\\n\\t\\tvertical-align: sub;\\n\\t\\tmargin-left: 2px;\\n\\t\\tmargin-right: 2px;\\n\\t}\\n\\n\\t.new-webauthn-device {\\n\\t\\tline-height: 300%;\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"\\n.webauthn-device[data-v-187f22d4] {\\n\\tline-height: 300%;\\n\\tdisplay: flex;\\n}\\n.icon-webauthn-device[data-v-187f22d4] {\\n\\tdisplay: inline-block;\\n\\tbackground-size: 100%;\\n\\tpadding: 3px;\\n\\tmargin: 3px;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/WebAuthn/Device.vue\"],\"names\":[],\"mappings\":\";AAqDA;CACA,iBAAA;CACA,aAAA;AACA;AAEA;CACA,qBAAA;CACA,qBAAA;CACA,YAAA;CACA,WAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\\n -\\n - @author 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\\n -\\n - @license GNU AGPL version 3 or any later version\\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\\n<template>\\n\\t<div class=\\\"webauthn-device\\\">\\n\\t\\t<span class=\\\"icon-webauthn-device\\\" />\\n\\t\\t{{ name || t('settings', 'Unnamed device') }}\\n\\t\\t<Actions :force-menu=\\\"true\\\">\\n\\t\\t\\t<ActionButton icon=\\\"icon-delete\\\" @click=\\\"$emit('delete')\\\">\\n\\t\\t\\t\\t{{ t('settings', 'Delete') }}\\n\\t\\t\\t</ActionButton>\\n\\t\\t</Actions>\\n\\t</div>\\n</template>\\n\\n<script>\\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\\n\\nexport default {\\n\\tname: 'Device',\\n\\tcomponents: {\\n\\t\\tActionButton,\\n\\t\\tActions,\\n\\t},\\n\\tprops: {\\n\\t\\tname: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style scoped>\\n\\t.webauthn-device {\\n\\t\\tline-height: 300%;\\n\\t\\tdisplay: flex;\\n\\t}\\n\\n\\t.icon-webauthn-device {\\n\\t\\tdisplay: inline-block;\\n\\t\\tbackground-size: 100%;\\n\\t\\tpadding: 3px;\\n\\t\\tmargin: 3px;\\n\\t}\\n</style>\\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 = 1602;","__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\t1602: 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__(9802); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","getLoggerBuilder","setApp","detectUser","build","url","generateUrl","axios","resp","data","finishRegistration","name","removeRegistration","id","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","component","_vm","this","_h","$createElement","_c","_self","isHttps","isLocalhost","step","RegistrationSteps","READY","on","start","_v","_s","t","REGISTRATION","staticClass","NAMING","directives","rawName","value","expression","attrs","domProps","$event","type","indexOf","_k","keyCode","key","submit","apply","arguments","target","composing","PERSIST","$emit","devices","length","_l","device","deleteDevice","hasPublicKeyCredential","_e","deviceAdded","__webpack_nonce__","btoa","OC","requestToken","Vue","WebAuthnSection","propsData","initialDevices","loadState","window","location","protocol","hostname","PublicKeyCredential","$mount","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","Object","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"settings-vue-settings-personal-webauthn.js?v=1c991d5a6671660e7d3d","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/settings/src/logger.js","webpack:///nextcloud/apps/settings/src/service/WebAuthnRegistrationSerice.js","webpack:///nextcloud/apps/settings/src/components/WebAuthn/AddDevice.vue","webpack:///nextcloud/apps/settings/src/components/WebAuthn/AddDevice.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/WebAuthn/AddDevice.vue?110a","webpack://nextcloud/./apps/settings/src/components/WebAuthn/AddDevice.vue?5011","webpack:///nextcloud/apps/settings/src/components/WebAuthn/AddDevice.vue?vue&type=template&id=f9b952b4&scoped=true&","webpack:///nextcloud/apps/settings/src/components/WebAuthn/Device.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/WebAuthn/Device.vue","webpack://nextcloud/./apps/settings/src/components/WebAuthn/Device.vue?828a","webpack://nextcloud/./apps/settings/src/components/WebAuthn/Device.vue?06c3","webpack:///nextcloud/apps/settings/src/components/WebAuthn/Device.vue?vue&type=template&id=187f22d4&scoped=true&","webpack:///nextcloud/apps/settings/src/components/WebAuthn/Section.vue","webpack:///nextcloud/apps/settings/src/components/WebAuthn/Section.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/WebAuthn/Section.vue?3346","webpack:///nextcloud/apps/settings/src/components/WebAuthn/Section.vue?vue&type=template&id=662cb041&scoped=true&","webpack:///nextcloud/apps/settings/src/main-personal-webauth.js","webpack:///nextcloud/apps/settings/src/components/WebAuthn/AddDevice.vue?vue&type=style&index=0&id=f9b952b4&scoped=true&lang=css&","webpack:///nextcloud/apps/settings/src/components/WebAuthn/Device.vue?vue&type=style&index=0&id=187f22d4&scoped=true&lang=css&","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/runtime/nonce","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 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('settings')\n\t.detectUser()\n\t.build()\n","/**\n * @copyright 2020, Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\n\n/**\n *\n */\nexport async function startRegistration() {\n\tconst url = generateUrl('/settings/api/personal/webauthn/registration')\n\n\tconst resp = await axios.get(url)\n\treturn resp.data\n}\n\n/**\n * @param {any} name -\n * @param {any} data -\n */\nexport async function finishRegistration(name, data) {\n\tconst url = generateUrl('/settings/api/personal/webauthn/registration')\n\n\tconst resp = await axios.post(url, { name, data })\n\treturn resp.data\n}\n\n/**\n * @param {any} id -\n */\nexport async function removeRegistration(id) {\n\tconst url = generateUrl(`/settings/api/personal/webauthn/registration/${id}`)\n\n\tawait axios.delete(url)\n}\n","<!--\n - @copyright 2020, Roeland Jago Douma <roeland@famdouma.nl>\n -\n - @author Roeland Jago Douma <roeland@famdouma.nl>\n -\n - @license GNU AGPL version 3 or any later version\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\n<template>\n\t<div v-if=\"!isHttps && !isLocalhost\">\n\t\t{{ t('settings', 'Passwordless authentication requires a secure connection.') }}\n\t</div>\n\t<div v-else>\n\t\t<div v-if=\"step === RegistrationSteps.READY\">\n\t\t\t<button @click=\"start\">\n\t\t\t\t{{ t('settings', 'Add WebAuthn device') }}\n\t\t\t</button>\n\t\t</div>\n\n\t\t<div v-else-if=\"step === RegistrationSteps.REGISTRATION\"\n\t\t\tclass=\"new-webauthn-device\">\n\t\t\t<span class=\"icon-loading-small webauthn-loading\" />\n\t\t\t{{ t('settings', 'Please authorize your WebAuthn device.') }}\n\t\t</div>\n\n\t\t<div v-else-if=\"step === RegistrationSteps.NAMING\"\n\t\t\tclass=\"new-webauthn-device\">\n\t\t\t<span class=\"icon-loading-small webauthn-loading\" />\n\t\t\t<input v-model=\"name\"\n\t\t\t\ttype=\"text\"\n\t\t\t\t:placeholder=\"t('settings', 'Name your device')\"\n\t\t\t\t@:keyup.enter=\"submit\">\n\t\t\t<button @click=\"submit\">\n\t\t\t\t{{ t('settings', 'Add') }}\n\t\t\t</button>\n\t\t</div>\n\n\t\t<div v-else-if=\"step === RegistrationSteps.PERSIST\"\n\t\t\tclass=\"new-webauthn-device\">\n\t\t\t<span class=\"icon-loading-small webauthn-loading\" />\n\t\t\t{{ t('settings', 'Adding your device …') }}\n\t\t</div>\n\n\t\t<div v-else>\n\t\t\tInvalid registration step. This should not have happened.\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport confirmPassword from '@nextcloud/password-confirmation'\n\nimport logger from '../../logger'\nimport {\n\tstartRegistration,\n\tfinishRegistration,\n} from '../../service/WebAuthnRegistrationSerice'\n\nconst logAndPass = (text) => (data) => {\n\tlogger.debug(text)\n\treturn data\n}\n\nconst RegistrationSteps = Object.freeze({\n\tREADY: 1,\n\tREGISTRATION: 2,\n\tNAMING: 3,\n\tPERSIST: 4,\n})\n\nexport default {\n\tname: 'AddDevice',\n\tprops: {\n\t\thttpWarning: Boolean,\n\t\tisHttps: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisLocalhost: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tname: '',\n\t\t\tcredential: {},\n\t\t\tRegistrationSteps,\n\t\t\tstep: RegistrationSteps.READY,\n\t\t}\n\t},\n\tmethods: {\n\t\tarrayToBase64String(a) {\n\t\t\treturn btoa(String.fromCharCode(...a))\n\t\t},\n\t\tstart() {\n\t\t\tthis.step = RegistrationSteps.REGISTRATION\n\t\t\tconsole.debug('Starting WebAuthn registration')\n\n\t\t\treturn confirmPassword()\n\t\t\t\t.then(this.getRegistrationData)\n\t\t\t\t.then(this.register.bind(this))\n\t\t\t\t.then(() => { this.step = RegistrationSteps.NAMING })\n\t\t\t\t.catch(err => {\n\t\t\t\t\tconsole.error(err.name, err.message)\n\t\t\t\t\tthis.step = RegistrationSteps.READY\n\t\t\t\t})\n\t\t},\n\n\t\tgetRegistrationData() {\n\t\t\tconsole.debug('Fetching webauthn registration data')\n\n\t\t\tconst base64urlDecode = function(input) {\n\t\t\t\t// Replace non-url compatible chars with base64 standard chars\n\t\t\t\tinput = input\n\t\t\t\t\t.replace(/-/g, '+')\n\t\t\t\t\t.replace(/_/g, '/')\n\n\t\t\t\t// Pad out with standard base64 required padding characters\n\t\t\t\tconst pad = input.length % 4\n\t\t\t\tif (pad) {\n\t\t\t\t\tif (pad === 1) {\n\t\t\t\t\t\tthrow new Error('InvalidLengthError: Input base64url string is the wrong length to determine padding')\n\t\t\t\t\t}\n\t\t\t\t\tinput += new Array(5 - pad).join('=')\n\t\t\t\t}\n\n\t\t\t\treturn window.atob(input)\n\t\t\t}\n\n\t\t\treturn startRegistration()\n\t\t\t\t.then(publicKey => {\n\t\t\t\t\tconsole.debug(publicKey)\n\t\t\t\t\tpublicKey.challenge = Uint8Array.from(base64urlDecode(publicKey.challenge), c => c.charCodeAt(0))\n\t\t\t\t\tpublicKey.user.id = Uint8Array.from(publicKey.user.id, c => c.charCodeAt(0))\n\t\t\t\t\treturn publicKey\n\t\t\t\t})\n\t\t\t\t.catch(err => {\n\t\t\t\t\tconsole.error('Error getting webauthn registration data from server', err)\n\t\t\t\t\tthrow new Error(t('settings', 'Server error while trying to add WebAuthn device'))\n\t\t\t\t})\n\t\t},\n\n\t\tregister(publicKey) {\n\t\t\tconsole.debug('starting webauthn registration')\n\n\t\t\treturn navigator.credentials.create({ publicKey })\n\t\t\t\t.then(data => {\n\t\t\t\t\tthis.credential = {\n\t\t\t\t\t\tid: data.id,\n\t\t\t\t\t\ttype: data.type,\n\t\t\t\t\t\trawId: this.arrayToBase64String(new Uint8Array(data.rawId)),\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tclientDataJSON: this.arrayToBase64String(new Uint8Array(data.response.clientDataJSON)),\n\t\t\t\t\t\t\tattestationObject: this.arrayToBase64String(new Uint8Array(data.response.attestationObject)),\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t},\n\n\t\tsubmit() {\n\t\t\tthis.step = RegistrationSteps.PERSIST\n\n\t\t\treturn confirmPassword()\n\t\t\t\t.then(logAndPass('confirmed password'))\n\t\t\t\t.then(this.saveRegistrationData)\n\t\t\t\t.then(logAndPass('registration data saved'))\n\t\t\t\t.then(() => this.reset())\n\t\t\t\t.then(logAndPass('app reset'))\n\t\t\t\t.catch(console.error.bind(this))\n\t\t},\n\n\t\tasync saveRegistrationData() {\n\t\t\ttry {\n\t\t\t\tconst device = await finishRegistration(this.name, JSON.stringify(this.credential))\n\n\t\t\t\tlogger.info('new device added', { device })\n\n\t\t\t\tthis.$emit('added', device)\n\t\t\t} catch (err) {\n\t\t\t\tlogger.error('Error persisting webauthn registration', { error: err })\n\t\t\t\tthrow new Error(t('settings', 'Server error while trying to complete WebAuthn device registration'))\n\t\t\t}\n\t\t},\n\n\t\treset() {\n\t\t\tthis.name = ''\n\t\t\tthis.registrationData = {}\n\t\t\tthis.step = RegistrationSteps.READY\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\t.webauthn-loading {\n\t\tdisplay: inline-block;\n\t\tvertical-align: sub;\n\t\tmargin-left: 2px;\n\t\tmargin-right: 2px;\n\t}\n\n\t.new-webauthn-device {\n\t\tline-height: 300%;\n\t}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddDevice.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!./AddDevice.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/vue-loader/lib/index.js??vue-loader-options!./AddDevice.vue?vue&type=style&index=0&id=f9b952b4&scoped=true&lang=css&\";\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/vue-loader/lib/index.js??vue-loader-options!./AddDevice.vue?vue&type=style&index=0&id=f9b952b4&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AddDevice.vue?vue&type=template&id=f9b952b4&scoped=true&\"\nimport script from \"./AddDevice.vue?vue&type=script&lang=js&\"\nexport * from \"./AddDevice.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AddDevice.vue?vue&type=style&index=0&id=f9b952b4&scoped=true&lang=css&\"\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 \"f9b952b4\",\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 (!_vm.isHttps && !_vm.isLocalhost)?_c('div',[_vm._v(\"\\n\\t\"+_vm._s(_vm.t('settings', 'Passwordless authentication requires a secure connection.'))+\"\\n\")]):_c('div',[(_vm.step === _vm.RegistrationSteps.READY)?_c('div',[_c('button',{on:{\"click\":_vm.start}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Add WebAuthn device'))+\"\\n\\t\\t\")])]):(_vm.step === _vm.RegistrationSteps.REGISTRATION)?_c('div',{staticClass:\"new-webauthn-device\"},[_c('span',{staticClass:\"icon-loading-small webauthn-loading\"}),_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Please authorize your WebAuthn device.'))+\"\\n\\t\")]):(_vm.step === _vm.RegistrationSteps.NAMING)?_c('div',{staticClass:\"new-webauthn-device\"},[_c('span',{staticClass:\"icon-loading-small webauthn-loading\"}),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.name),expression:\"name\"}],attrs:{\"type\":\"text\",\"placeholder\":_vm.t('settings', 'Name your device')},domProps:{\"value\":(_vm.name)},on:{\":keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.submit.apply(null, arguments)},\"input\":function($event){if($event.target.composing){ return; }_vm.name=$event.target.value}}}),_vm._v(\" \"),_c('button',{on:{\"click\":_vm.submit}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Add'))+\"\\n\\t\\t\")])]):(_vm.step === _vm.RegistrationSteps.PERSIST)?_c('div',{staticClass:\"new-webauthn-device\"},[_c('span',{staticClass:\"icon-loading-small webauthn-loading\"}),_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Adding your device …'))+\"\\n\\t\")]):_c('div',[_vm._v(\"\\n\\t\\tInvalid registration step. This should not have happened.\\n\\t\")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Device.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!./Device.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\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\n<template>\n\t<div class=\"webauthn-device\">\n\t\t<span class=\"icon-webauthn-device\" />\n\t\t{{ name || t('settings', 'Unnamed device') }}\n\t\t<Actions :force-menu=\"true\">\n\t\t\t<ActionButton icon=\"icon-delete\" @click=\"$emit('delete')\">\n\t\t\t\t{{ t('settings', 'Delete') }}\n\t\t\t</ActionButton>\n\t\t</Actions>\n\t</div>\n</template>\n\n<script>\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\n\nexport default {\n\tname: 'Device',\n\tcomponents: {\n\t\tActionButton,\n\t\tActions,\n\t},\n\tprops: {\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\t.webauthn-device {\n\t\tline-height: 300%;\n\t\tdisplay: flex;\n\t}\n\n\t.icon-webauthn-device {\n\t\tdisplay: inline-block;\n\t\tbackground-size: 100%;\n\t\tpadding: 3px;\n\t\tmargin: 3px;\n\t}\n</style>\n","\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/vue-loader/lib/index.js??vue-loader-options!./Device.vue?vue&type=style&index=0&id=187f22d4&scoped=true&lang=css&\";\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/vue-loader/lib/index.js??vue-loader-options!./Device.vue?vue&type=style&index=0&id=187f22d4&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Device.vue?vue&type=template&id=187f22d4&scoped=true&\"\nimport script from \"./Device.vue?vue&type=script&lang=js&\"\nexport * from \"./Device.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Device.vue?vue&type=style&index=0&id=187f22d4&scoped=true&lang=css&\"\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 \"187f22d4\",\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:\"webauthn-device\"},[_c('span',{staticClass:\"icon-webauthn-device\"}),_vm._v(\"\\n\\t\"+_vm._s(_vm.name || _vm.t('settings', 'Unnamed device'))+\"\\n\\t\"),_c('Actions',{attrs:{\"force-menu\":true}},[_c('ActionButton',{attrs:{\"icon\":\"icon-delete\"},on:{\"click\":function($event){return _vm.$emit('delete')}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Delete'))+\"\\n\\t\\t\")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2020, Roeland Jago Douma <roeland@famdouma.nl>\n -\n - @author Roeland Jago Douma <roeland@famdouma.nl>\n -\n - @license GNU AGPL version 3 or any later version\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\n<template>\n\t<div id=\"security-webauthn\" class=\"section\">\n\t\t<h2>{{ t('settings', 'Passwordless Authentication') }}</h2>\n\t\t<p class=\"settings-hint hidden-when-empty\">\n\t\t\t{{ t('settings', 'Set up your account for passwordless authentication following the FIDO2 standard.') }}\n\t\t</p>\n\t\t<p v-if=\"devices.length === 0\">\n\t\t\t{{ t('settings', 'No devices configured.') }}\n\t\t</p>\n\t\t<p v-else>\n\t\t\t{{ t('settings', 'The following devices are configured for your account:') }}\n\t\t</p>\n\t\t<Device v-for=\"device in sortedDevices\"\n\t\t\t:key=\"device.id\"\n\t\t\t:name=\"device.name\"\n\t\t\t@delete=\"deleteDevice(device.id)\" />\n\n\t\t<p v-if=\"!hasPublicKeyCredential\" class=\"warning\">\n\t\t\t{{ t('settings', 'Your browser does not support WebAuthn.') }}\n\t\t</p>\n\n\t\t<AddDevice v-if=\"hasPublicKeyCredential\"\n\t\t\t:is-https=\"isHttps\"\n\t\t\t:is-localhost=\"isLocalhost\"\n\t\t\t@added=\"deviceAdded\" />\n\t</div>\n</template>\n\n<script>\nimport confirmPassword from '@nextcloud/password-confirmation'\nimport sortBy from 'lodash/fp/sortBy'\n\nimport AddDevice from './AddDevice'\nimport Device from './Device'\nimport logger from '../../logger'\nimport { removeRegistration } from '../../service/WebAuthnRegistrationSerice'\n\nconst sortByName = sortBy('name')\n\nexport default {\n\tcomponents: {\n\t\tAddDevice,\n\t\tDevice,\n\t},\n\tprops: {\n\t\tinitialDevices: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\tisHttps: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisLocalhost: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\thasPublicKeyCredential: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tdevices: this.initialDevices,\n\t\t}\n\t},\n\tcomputed: {\n\t\tsortedDevices() {\n\t\t\treturn sortByName(this.devices)\n\t\t},\n\t},\n\tmethods: {\n\t\tdeviceAdded(device) {\n\t\t\tlogger.debug(`adding new device to the list ${device.id}`)\n\n\t\t\tthis.devices.push(device)\n\t\t},\n\t\tasync deleteDevice(id) {\n\t\t\tlogger.info(`deleting webauthn device ${id}`)\n\n\t\t\tawait confirmPassword()\n\t\t\tawait removeRegistration(id)\n\n\t\t\tthis.devices = this.devices.filter(d => d.id !== id)\n\n\t\t\tlogger.info(`webauthn device ${id} removed successfully`)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Section.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!./Section.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Section.vue?vue&type=template&id=662cb041&scoped=true&\"\nimport script from \"./Section.vue?vue&type=script&lang=js&\"\nexport * from \"./Section.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"662cb041\",\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\",attrs:{\"id\":\"security-webauthn\"}},[_c('h2',[_vm._v(_vm._s(_vm.t('settings', 'Passwordless Authentication')))]),_vm._v(\" \"),_c('p',{staticClass:\"settings-hint hidden-when-empty\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Set up your account for passwordless authentication following the FIDO2 standard.'))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.devices.length === 0)?_c('p',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'No devices configured.'))+\"\\n\\t\")]):_c('p',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'The following devices are configured for your account:'))+\"\\n\\t\")]),_vm._v(\" \"),_vm._l((_vm.sortedDevices),function(device){return _c('Device',{key:device.id,attrs:{\"name\":device.name},on:{\"delete\":function($event){return _vm.deleteDevice(device.id)}}})}),_vm._v(\" \"),(!_vm.hasPublicKeyCredential)?_c('p',{staticClass:\"warning\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Your browser does not support WebAuthn.'))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.hasPublicKeyCredential)?_c('AddDevice',{attrs:{\"is-https\":_vm.isHttps,\"is-localhost\":_vm.isLocalhost},on:{\"added\":_vm.deviceAdded}}):_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2020, Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport Vue from 'vue'\nimport { loadState } from '@nextcloud/initial-state'\n\nimport WebAuthnSection from './components/WebAuthn/Section'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(OC.requestToken)\n\nVue.prototype.t = t\n\nconst View = Vue.extend(WebAuthnSection)\nconst devices = loadState('settings', 'webauthn-devices')\nnew View({\n\tpropsData: {\n\t\tinitialDevices: devices,\n\t\tisHttps: window.location.protocol === 'https:',\n\t\tisLocalhost: window.location.hostname === 'localhost',\n\t\thasPublicKeyCredential: typeof (window.PublicKeyCredential) !== 'undefined',\n\t},\n}).$mount('#security-webauthn')\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, \"\\n.webauthn-loading[data-v-f9b952b4] {\\n\\tdisplay: inline-block;\\n\\tvertical-align: sub;\\n\\tmargin-left: 2px;\\n\\tmargin-right: 2px;\\n}\\n.new-webauthn-device[data-v-f9b952b4] {\\n\\tline-height: 300%;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/WebAuthn/AddDevice.vue\"],\"names\":[],\"mappings\":\";AAgNA;CACA,qBAAA;CACA,mBAAA;CACA,gBAAA;CACA,iBAAA;AACA;AAEA;CACA,iBAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright 2020, Roeland Jago Douma <roeland@famdouma.nl>\\n -\\n - @author Roeland Jago Douma <roeland@famdouma.nl>\\n -\\n - @license GNU AGPL version 3 or any later version\\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\\n<template>\\n\\t<div v-if=\\\"!isHttps && !isLocalhost\\\">\\n\\t\\t{{ t('settings', 'Passwordless authentication requires a secure connection.') }}\\n\\t</div>\\n\\t<div v-else>\\n\\t\\t<div v-if=\\\"step === RegistrationSteps.READY\\\">\\n\\t\\t\\t<button @click=\\\"start\\\">\\n\\t\\t\\t\\t{{ t('settings', 'Add WebAuthn device') }}\\n\\t\\t\\t</button>\\n\\t\\t</div>\\n\\n\\t\\t<div v-else-if=\\\"step === RegistrationSteps.REGISTRATION\\\"\\n\\t\\t\\tclass=\\\"new-webauthn-device\\\">\\n\\t\\t\\t<span class=\\\"icon-loading-small webauthn-loading\\\" />\\n\\t\\t\\t{{ t('settings', 'Please authorize your WebAuthn device.') }}\\n\\t\\t</div>\\n\\n\\t\\t<div v-else-if=\\\"step === RegistrationSteps.NAMING\\\"\\n\\t\\t\\tclass=\\\"new-webauthn-device\\\">\\n\\t\\t\\t<span class=\\\"icon-loading-small webauthn-loading\\\" />\\n\\t\\t\\t<input v-model=\\\"name\\\"\\n\\t\\t\\t\\ttype=\\\"text\\\"\\n\\t\\t\\t\\t:placeholder=\\\"t('settings', 'Name your device')\\\"\\n\\t\\t\\t\\t@:keyup.enter=\\\"submit\\\">\\n\\t\\t\\t<button @click=\\\"submit\\\">\\n\\t\\t\\t\\t{{ t('settings', 'Add') }}\\n\\t\\t\\t</button>\\n\\t\\t</div>\\n\\n\\t\\t<div v-else-if=\\\"step === RegistrationSteps.PERSIST\\\"\\n\\t\\t\\tclass=\\\"new-webauthn-device\\\">\\n\\t\\t\\t<span class=\\\"icon-loading-small webauthn-loading\\\" />\\n\\t\\t\\t{{ t('settings', 'Adding your device …') }}\\n\\t\\t</div>\\n\\n\\t\\t<div v-else>\\n\\t\\t\\tInvalid registration step. This should not have happened.\\n\\t\\t</div>\\n\\t</div>\\n</template>\\n\\n<script>\\nimport confirmPassword from '@nextcloud/password-confirmation'\\n\\nimport logger from '../../logger'\\nimport {\\n\\tstartRegistration,\\n\\tfinishRegistration,\\n} from '../../service/WebAuthnRegistrationSerice'\\n\\nconst logAndPass = (text) => (data) => {\\n\\tlogger.debug(text)\\n\\treturn data\\n}\\n\\nconst RegistrationSteps = Object.freeze({\\n\\tREADY: 1,\\n\\tREGISTRATION: 2,\\n\\tNAMING: 3,\\n\\tPERSIST: 4,\\n})\\n\\nexport default {\\n\\tname: 'AddDevice',\\n\\tprops: {\\n\\t\\thttpWarning: Boolean,\\n\\t\\tisHttps: {\\n\\t\\t\\ttype: Boolean,\\n\\t\\t\\tdefault: false,\\n\\t\\t},\\n\\t\\tisLocalhost: {\\n\\t\\t\\ttype: Boolean,\\n\\t\\t\\tdefault: false,\\n\\t\\t},\\n\\t},\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tname: '',\\n\\t\\t\\tcredential: {},\\n\\t\\t\\tRegistrationSteps,\\n\\t\\t\\tstep: RegistrationSteps.READY,\\n\\t\\t}\\n\\t},\\n\\tmethods: {\\n\\t\\tarrayToBase64String(a) {\\n\\t\\t\\treturn btoa(String.fromCharCode(...a))\\n\\t\\t},\\n\\t\\tstart() {\\n\\t\\t\\tthis.step = RegistrationSteps.REGISTRATION\\n\\t\\t\\tconsole.debug('Starting WebAuthn registration')\\n\\n\\t\\t\\treturn confirmPassword()\\n\\t\\t\\t\\t.then(this.getRegistrationData)\\n\\t\\t\\t\\t.then(this.register.bind(this))\\n\\t\\t\\t\\t.then(() => { this.step = RegistrationSteps.NAMING })\\n\\t\\t\\t\\t.catch(err => {\\n\\t\\t\\t\\t\\tconsole.error(err.name, err.message)\\n\\t\\t\\t\\t\\tthis.step = RegistrationSteps.READY\\n\\t\\t\\t\\t})\\n\\t\\t},\\n\\n\\t\\tgetRegistrationData() {\\n\\t\\t\\tconsole.debug('Fetching webauthn registration data')\\n\\n\\t\\t\\tconst base64urlDecode = function(input) {\\n\\t\\t\\t\\t// Replace non-url compatible chars with base64 standard chars\\n\\t\\t\\t\\tinput = input\\n\\t\\t\\t\\t\\t.replace(/-/g, '+')\\n\\t\\t\\t\\t\\t.replace(/_/g, '/')\\n\\n\\t\\t\\t\\t// Pad out with standard base64 required padding characters\\n\\t\\t\\t\\tconst pad = input.length % 4\\n\\t\\t\\t\\tif (pad) {\\n\\t\\t\\t\\t\\tif (pad === 1) {\\n\\t\\t\\t\\t\\t\\tthrow new Error('InvalidLengthError: Input base64url string is the wrong length to determine padding')\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tinput += new Array(5 - pad).join('=')\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn window.atob(input)\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn startRegistration()\\n\\t\\t\\t\\t.then(publicKey => {\\n\\t\\t\\t\\t\\tconsole.debug(publicKey)\\n\\t\\t\\t\\t\\tpublicKey.challenge = Uint8Array.from(base64urlDecode(publicKey.challenge), c => c.charCodeAt(0))\\n\\t\\t\\t\\t\\tpublicKey.user.id = Uint8Array.from(publicKey.user.id, c => c.charCodeAt(0))\\n\\t\\t\\t\\t\\treturn publicKey\\n\\t\\t\\t\\t})\\n\\t\\t\\t\\t.catch(err => {\\n\\t\\t\\t\\t\\tconsole.error('Error getting webauthn registration data from server', err)\\n\\t\\t\\t\\t\\tthrow new Error(t('settings', 'Server error while trying to add WebAuthn device'))\\n\\t\\t\\t\\t})\\n\\t\\t},\\n\\n\\t\\tregister(publicKey) {\\n\\t\\t\\tconsole.debug('starting webauthn registration')\\n\\n\\t\\t\\treturn navigator.credentials.create({ publicKey })\\n\\t\\t\\t\\t.then(data => {\\n\\t\\t\\t\\t\\tthis.credential = {\\n\\t\\t\\t\\t\\t\\tid: data.id,\\n\\t\\t\\t\\t\\t\\ttype: data.type,\\n\\t\\t\\t\\t\\t\\trawId: this.arrayToBase64String(new Uint8Array(data.rawId)),\\n\\t\\t\\t\\t\\t\\tresponse: {\\n\\t\\t\\t\\t\\t\\t\\tclientDataJSON: this.arrayToBase64String(new Uint8Array(data.response.clientDataJSON)),\\n\\t\\t\\t\\t\\t\\t\\tattestationObject: this.arrayToBase64String(new Uint8Array(data.response.attestationObject)),\\n\\t\\t\\t\\t\\t\\t},\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t})\\n\\t\\t},\\n\\n\\t\\tsubmit() {\\n\\t\\t\\tthis.step = RegistrationSteps.PERSIST\\n\\n\\t\\t\\treturn confirmPassword()\\n\\t\\t\\t\\t.then(logAndPass('confirmed password'))\\n\\t\\t\\t\\t.then(this.saveRegistrationData)\\n\\t\\t\\t\\t.then(logAndPass('registration data saved'))\\n\\t\\t\\t\\t.then(() => this.reset())\\n\\t\\t\\t\\t.then(logAndPass('app reset'))\\n\\t\\t\\t\\t.catch(console.error.bind(this))\\n\\t\\t},\\n\\n\\t\\tasync saveRegistrationData() {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tconst device = await finishRegistration(this.name, JSON.stringify(this.credential))\\n\\n\\t\\t\\t\\tlogger.info('new device added', { device })\\n\\n\\t\\t\\t\\tthis.$emit('added', device)\\n\\t\\t\\t} catch (err) {\\n\\t\\t\\t\\tlogger.error('Error persisting webauthn registration', { error: err })\\n\\t\\t\\t\\tthrow new Error(t('settings', 'Server error while trying to complete WebAuthn device registration'))\\n\\t\\t\\t}\\n\\t\\t},\\n\\n\\t\\treset() {\\n\\t\\t\\tthis.name = ''\\n\\t\\t\\tthis.registrationData = {}\\n\\t\\t\\tthis.step = RegistrationSteps.READY\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style scoped>\\n\\t.webauthn-loading {\\n\\t\\tdisplay: inline-block;\\n\\t\\tvertical-align: sub;\\n\\t\\tmargin-left: 2px;\\n\\t\\tmargin-right: 2px;\\n\\t}\\n\\n\\t.new-webauthn-device {\\n\\t\\tline-height: 300%;\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"\\n.webauthn-device[data-v-187f22d4] {\\n\\tline-height: 300%;\\n\\tdisplay: flex;\\n}\\n.icon-webauthn-device[data-v-187f22d4] {\\n\\tdisplay: inline-block;\\n\\tbackground-size: 100%;\\n\\tpadding: 3px;\\n\\tmargin: 3px;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/WebAuthn/Device.vue\"],\"names\":[],\"mappings\":\";AAqDA;CACA,iBAAA;CACA,aAAA;AACA;AAEA;CACA,qBAAA;CACA,qBAAA;CACA,YAAA;CACA,WAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\\n -\\n - @author 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\\n -\\n - @license GNU AGPL version 3 or any later version\\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\\n<template>\\n\\t<div class=\\\"webauthn-device\\\">\\n\\t\\t<span class=\\\"icon-webauthn-device\\\" />\\n\\t\\t{{ name || t('settings', 'Unnamed device') }}\\n\\t\\t<Actions :force-menu=\\\"true\\\">\\n\\t\\t\\t<ActionButton icon=\\\"icon-delete\\\" @click=\\\"$emit('delete')\\\">\\n\\t\\t\\t\\t{{ t('settings', 'Delete') }}\\n\\t\\t\\t</ActionButton>\\n\\t\\t</Actions>\\n\\t</div>\\n</template>\\n\\n<script>\\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\\n\\nexport default {\\n\\tname: 'Device',\\n\\tcomponents: {\\n\\t\\tActionButton,\\n\\t\\tActions,\\n\\t},\\n\\tprops: {\\n\\t\\tname: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style scoped>\\n\\t.webauthn-device {\\n\\t\\tline-height: 300%;\\n\\t\\tdisplay: flex;\\n\\t}\\n\\n\\t.icon-webauthn-device {\\n\\t\\tdisplay: inline-block;\\n\\t\\tbackground-size: 100%;\\n\\t\\tpadding: 3px;\\n\\t\\tmargin: 3px;\\n\\t}\\n</style>\\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 = 1602;","__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\t1602: 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));","__webpack_require__.nc = undefined;","// 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__(9802); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","getLoggerBuilder","setApp","detectUser","build","url","generateUrl","axios","resp","data","finishRegistration","name","removeRegistration","id","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","component","_vm","this","_h","$createElement","_c","_self","isHttps","isLocalhost","step","RegistrationSteps","READY","on","start","_v","_s","t","REGISTRATION","staticClass","NAMING","directives","rawName","value","expression","attrs","domProps","$event","type","indexOf","_k","keyCode","key","submit","apply","arguments","target","composing","PERSIST","$emit","devices","length","_l","device","deleteDevice","hasPublicKeyCredential","_e","deviceAdded","__webpack_nonce__","btoa","OC","requestToken","Vue","WebAuthnSection","propsData","initialDevices","loadState","window","location","protocol","hostname","PublicKeyCredential","$mount","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","Object","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/systemtags-systemtags.js b/dist/systemtags-systemtags.js
index 2c9fb218382..cf8dc1cdbd3 100644
--- a/dist/systemtags-systemtags.js
+++ b/dist/systemtags-systemtags.js
@@ -1,3 +1,3 @@
/*! For license information please see systemtags-systemtags.js.LICENSE.txt */
-!function(){var e,i={30213:function(){OCA.SystemTags||(OCA.SystemTags={}),OCA.SystemTags.App={initFileList:function(e){return this._fileList||(this._fileList=new OCA.SystemTags.FileList(e,{id:"systemtags",fileActions:this._createFileActions(),config:OCA.Files.App.getFilesConfig(),shown:!0}),this._fileList.appName=t("systemtags","Tags")),this._fileList},removeFileList:function(){this._fileList&&this._fileList.$fileList.empty()},_createFileActions:function(){var t=new OCA.Files.FileActions;return t.registerDefaultActions(),t.merge(OCA.Files.fileActions),this._globalActionsInitialized||(this._onActionsUpdated=_.bind(this._onActionsUpdated,this),OCA.Files.fileActions.on("setDefault.app-systemtags",this._onActionsUpdated),OCA.Files.fileActions.on("registerAction.app-systemtags",this._onActionsUpdated),this._globalActionsInitialized=!0),t.register("dir","Open",OC.PERMISSION_READ,"",(function(t,e){OCA.Files.App.setActiveView("files",{silent:!0}),OCA.Files.App.fileList.changeDirectory(OC.joinPaths(e.$file.attr("data-path"),t),!0,!0)})),t.setDefault("dir","Open"),t},_onActionsUpdated:function(t){this._fileList&&(t.action?this._fileList.fileActions.registerAction(t.action):t.defaultAction&&this._fileList.fileActions.setDefault(t.defaultAction.mime,t.defaultAction.name))},destroy:function(){OCA.Files.fileActions.off("setDefault.app-systemtags",this._onActionsUpdated),OCA.Files.fileActions.off("registerAction.app-systemtags",this._onActionsUpdated),this.removeFileList(),this._fileList=null,delete this._globalActionsInitialized}},window.addEventListener("DOMContentLoaded",(function(){$("#app-content-systemtagsfilter").on("show",(function(t){OCA.SystemTags.App.initFileList($(t.target))})),$("#app-content-systemtagsfilter").on("hide",(function(){OCA.SystemTags.App.removeFileList()}))}))},22609:function(){OCA.SystemTags=_.extend({},OCA.SystemTags),OCA.SystemTags||(OCA.SystemTags={}),OCA.SystemTags.FilesPlugin={ignoreLists:["trashbin","files.public"],attach:function(t){if(!(this.ignoreLists.indexOf(t.id)>=0||OCA.SystemTags.View)){var e=new OCA.SystemTags.SystemTagsInfoView;t.registerDetailView(e),OCA.SystemTags.View=e}}},OC.Plugins.register("OCA.Files.FileList",OCA.SystemTags.FilesPlugin)},19294:function(t,e,i){"use strict";i(30213),i(99641),i(22609),i(36670);var s=i(93379),n=i.n(s),l=i(7795),o=i.n(l),a=i(90569),r=i.n(a),c=i(3565),d=i.n(c),f=i(19216),u=i.n(f),h=i(44589),g=i.n(h),p=i(79891),m={};m.styleTagTransform=g(),m.setAttributes=d(),m.insert=r().bind(null,"head"),m.domAPI=o(),m.insertStyleElement=u(),n()(p.Z,m),p.Z&&p.Z.locals&&p.Z.locals,window.OCA.SystemTags=OCA.SystemTags},99641:function(){var e;(e=function(t,e){this.initialize(t,e)}).prototype=_.extend({},OCA.Files.FileList.prototype,{id:"systemtagsfilter",appName:t("systemtags","Tagged files"),_systemTagIds:[],_lastUsedTags:[],_clientSideSort:!0,_allowSelection:!1,_filterField:null,initialize:function(t,e){if(OCA.Files.FileList.prototype.initialize.apply(this,arguments),!this.initialized){e&&e.systemTagIds&&(this._systemTagIds=e.systemTagIds),OC.Plugins.attach("OCA.SystemTags.FileList",this);var i=this.$el.find("#controls").empty();_.defer(_.bind(this._getLastUsedTags,this)),this._initFilterField(i)}},destroy:function(){this.$filterField.remove(),OCA.Files.FileList.prototype.destroy.apply(this,arguments)},_getLastUsedTags:function(){var t=this;$.ajax({type:"GET",url:OC.generateUrl("/apps/systemtags/lastused"),success:function(e){t._lastUsedTags=e}})},_initFilterField:function(e){var i=this;return this.$filterField=$('<input type="hidden" name="tags"/>'),e.append(this.$filterField),this.$filterField.select2({placeholder:t("systemtags","Select tags to filter by"),allowClear:!1,multiple:!0,toggleSelect:!0,separator:",",query:_.bind(this._queryTagsAutocomplete,this),id:function(t){return t.id},initSelection:function(t,e){var i=$(t).val().trim();if(i){var s=i.split(","),n=[];OC.SystemTags.collection.fetch({success:function(){_.each(s,(function(t){var e=OC.SystemTags.collection.get(t);_.isUndefined(e)||n.push(e.toJSON())})),e(n)}})}else e([])},formatResult:function(t){return OC.SystemTags.getDescriptiveTag(t)},formatSelection:function(t){return OC.SystemTags.getDescriptiveTag(t)[0].outerHTML},sortResults:function(t){return t.sort((function(t,e){var s=i._lastUsedTags.indexOf(t.id),n=i._lastUsedTags.indexOf(e.id);return s!==n?-1===n?-1:-1===s?1:s<n?-1:1:OC.Util.naturalSortCompare(t.name,e.name)})),t},escapeMarkup:function(t){return t},formatNoMatches:function(){return t("systemtags","No tags found")}}),this.$filterField.on("change",_.bind(this._onTagsChanged,this)),this.$filterField},_queryTagsAutocomplete:function(t){OC.SystemTags.collection.fetch({success:function(){var e=OC.SystemTags.collection.filterByName(t.term);t.callback({results:_.invoke(e,"toJSON")})}})},_onUrlChanged:function(t){if(t.dir){var e=_.filter(t.dir.split("/"),(function(t){return""!==t.trim()}));this.$filterField.select2("val",e||[]),this._systemTagIds=e,this.reload()}},_onTagsChanged:function(t){var e=$(t.target).val().trim();this._systemTagIds=""!==e?e.split(","):[],this.$el.trigger($.Event("changeDirectory",{dir:this._systemTagIds.join("/")})),this.reload()},updateEmptyContent:function(){var e=this.getCurrentDirectory();"/"===e?(this._systemTagIds.length?this.$el.find("#emptycontent").html('<div class="icon-systemtags"></div><h2>'+t("systemtags","No files found for the selected tags")+"</h2>"):this.$el.find("#emptycontent").html('<div class="icon-systemtags"></div><h2>'+t("systemtags","Please select tags to filter by")+"</h2>"),this.$el.find("#emptycontent").toggleClass("hidden",!this.isEmpty),this.$el.find("#filestable thead th").toggleClass("hidden",this.isEmpty)):OCA.Files.FileList.prototype.updateEmptyContent.apply(this,arguments)},getDirectoryPermissions:function(){return OC.PERMISSION_READ|OC.PERMISSION_DELETE},updateStorageStatistics:function(){},reload:function(){if(this._setCurrentDir("/",!1),!this._systemTagIds.length)return this.updateEmptyContent(),this.setFiles([]),$.Deferred().resolve();this._selectedFiles={},this._selectionSummary.clear(),this._currentFileModel&&this._currentFileModel.off(),this._currentFileModel=null,this.$el.find(".select-all").prop("checked",!1),this.showMask(),this._reloadCall=this.filesClient.getFilteredFiles({systemTagIds:this._systemTagIds},{properties:this._getWebdavProperties()}),this._detailsView&&this._updateDetailsView(null);var t=this.reloadCallback.bind(this);return this._reloadCall.then(t,t)},reloadCallback:function(t,e){return e&&e.unshift({}),OCA.Files.FileList.prototype.reloadCallback.call(this,t,e)}}),OCA.SystemTags.FileList=e},36670:function(){!function(t){function e(t){var e=t.toJSON();return OC.isUserAdmin()||e.canAssign||(e.locked=!0),e}var i=t.Files.DetailFileInfoView.extend({_rendered:!1,className:"systemTagsInfoView",name:"systemTags",id:"systemTagsInfoView",_inputView:null,initialize:function(t){var i=this;t=t||{},this._inputView=new OC.SystemTags.SystemTagsInputField({multiple:!0,allowActions:!0,allowCreate:!0,isAdmin:OC.isUserAdmin(),initSelection:function(t,s){s(i.selectedTagsCollection.map(e))}}),this.selectedTagsCollection=new OC.SystemTags.SystemTagsMappingCollection([],{objectType:"files"}),this._inputView.collection.on("change:name",this._onTagRenamedGlobally,this),this._inputView.collection.on("remove",this._onTagDeletedGlobally,this),this._inputView.on("select",this._onSelectTag,this),this._inputView.on("deselect",this._onDeselectTag,this)},_onSelectTag:function(t){this.selectedTagsCollection.create(t.toJSON())},_onDeselectTag:function(t){this.selectedTagsCollection.get(t).destroy()},_onTagRenamedGlobally:function(t){var e=this.selectedTagsCollection.get(t.id);e&&e.set(t.toJSON())},_onTagDeletedGlobally:function(t){this.selectedTagsCollection.remove(t)},setFileInfo:function(t){var i=this;this._rendered||this.render(),t&&(this.selectedTagsCollection.setObjectId(t.id),this.selectedTagsCollection.fetch({success:function(t){t.fetched=!0;var s=t.map(e);i._inputView.setData(s),s.length>0&&i.show()}})),this.hide()},render:function(){this.$el.append(this._inputView.$el),this._inputView.render()},isVisible:function(){return!this.$el.hasClass("hidden")},show:function(){this.$el.removeClass("hidden")},hide:function(){this.$el.addClass("hidden")},toggle:function(){this.$el.toggleClass("hidden")},openDropdown:function(){this.$el.find(".systemTagsInputField").select2("open")},remove:function(){this._inputView.remove()}});t.SystemTags.SystemTagsInfoView=i}(OCA)},79891:function(t,e,i){"use strict";var s=i(87537),n=i.n(s),l=i(23645),o=i.n(l)()(n());o.push([t.id,"#app-content-systemtagsfilter .select2-container{width:30%;margin-left:10px}#app-sidebar .app-sidebar-header__action .tag-label{cursor:pointer;padding:13px 0;display:flex;color:var(--color-text-light);position:relative;margin-top:-20px}","",{version:3,sources:["webpack://./apps/systemtags/src/css/systemtagsfilelist.scss"],names:[],mappings:"AASA,iDACC,SAAA,CACA,gBAAA,CAGD,oDACC,cAAA,CACA,cAAA,CACA,YAAA,CACA,6BAAA,CACA,iBAAA,CACA,gBAAA",sourcesContent:["/*\n * Copyright (c) 2016\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n *\n */\n#app-content-systemtagsfilter .select2-container {\n\twidth: 30%;\n\tmargin-left: 10px;\n}\n\n#app-sidebar .app-sidebar-header__action .tag-label {\n\tcursor: pointer;\n\tpadding: 13px 0;\n\tdisplay: flex;\n\tcolor: var(--color-text-light);\n\tposition: relative;\n\tmargin-top: -20px;\n}\n"],sourceRoot:""}]),e.Z=o}},s={};function n(t){var e=s[t];if(void 0!==e)return e.exports;var l=s[t]={id:t,loaded:!1,exports:{}};return i[t].call(l.exports,l,l.exports,n),l.loaded=!0,l.exports}n.m=i,n.amdD=function(){throw new Error("define cannot be used indirect")},n.amdO={},e=[],n.O=function(t,i,s,l){if(!i){var o=1/0;for(d=0;d<e.length;d++){i=e[d][0],s=e[d][1],l=e[d][2];for(var a=!0,r=0;r<i.length;r++)(!1&l||o>=l)&&Object.keys(n.O).every((function(t){return n.O[t](i[r])}))?i.splice(r--,1):(a=!1,l<o&&(o=l));if(a){e.splice(d--,1);var c=s();void 0!==c&&(t=c)}}return t}l=l||0;for(var d=e.length;d>0&&e[d-1][2]>l;d--)e[d]=e[d-1];e[d]=[i,s,l]},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,{a:e}),e},n.d=function(t,e){for(var i in e)n.o(e,i)&&!n.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},n.j=9698,function(){n.b=document.baseURI||self.location.href;var t={9698:0};n.O.j=function(e){return 0===t[e]};var e=function(e,i){var s,l,o=i[0],a=i[1],r=i[2],c=0;if(o.some((function(e){return 0!==t[e]}))){for(s in a)n.o(a,s)&&(n.m[s]=a[s]);if(r)var d=r(n)}for(e&&e(i);c<o.length;c++)l=o[c],n.o(t,l)&&t[l]&&t[l][0](),t[l]=0;return n.O(d)},i=self.webpackChunknextcloud=self.webpackChunknextcloud||[];i.forEach(e.bind(null,0)),i.push=e.bind(null,i.push.bind(i))}();var l=n.O(void 0,[7874],(function(){return n(19294)}));l=n.O(l)}();
-//# sourceMappingURL=systemtags-systemtags.js.map?v=d2a532e75d0fabee2171 \ No newline at end of file
+!function(){var e,i={30213:function(){OCA.SystemTags||(OCA.SystemTags={}),OCA.SystemTags.App={initFileList:function(e){return this._fileList||(this._fileList=new OCA.SystemTags.FileList(e,{id:"systemtags",fileActions:this._createFileActions(),config:OCA.Files.App.getFilesConfig(),shown:!0}),this._fileList.appName=t("systemtags","Tags")),this._fileList},removeFileList:function(){this._fileList&&this._fileList.$fileList.empty()},_createFileActions:function(){var t=new OCA.Files.FileActions;return t.registerDefaultActions(),t.merge(OCA.Files.fileActions),this._globalActionsInitialized||(this._onActionsUpdated=_.bind(this._onActionsUpdated,this),OCA.Files.fileActions.on("setDefault.app-systemtags",this._onActionsUpdated),OCA.Files.fileActions.on("registerAction.app-systemtags",this._onActionsUpdated),this._globalActionsInitialized=!0),t.register("dir","Open",OC.PERMISSION_READ,"",(function(t,e){OCA.Files.App.setActiveView("files",{silent:!0}),OCA.Files.App.fileList.changeDirectory(OC.joinPaths(e.$file.attr("data-path"),t),!0,!0)})),t.setDefault("dir","Open"),t},_onActionsUpdated:function(t){this._fileList&&(t.action?this._fileList.fileActions.registerAction(t.action):t.defaultAction&&this._fileList.fileActions.setDefault(t.defaultAction.mime,t.defaultAction.name))},destroy:function(){OCA.Files.fileActions.off("setDefault.app-systemtags",this._onActionsUpdated),OCA.Files.fileActions.off("registerAction.app-systemtags",this._onActionsUpdated),this.removeFileList(),this._fileList=null,delete this._globalActionsInitialized}},window.addEventListener("DOMContentLoaded",(function(){$("#app-content-systemtagsfilter").on("show",(function(t){OCA.SystemTags.App.initFileList($(t.target))})),$("#app-content-systemtagsfilter").on("hide",(function(){OCA.SystemTags.App.removeFileList()}))}))},22609:function(){OCA.SystemTags=_.extend({},OCA.SystemTags),OCA.SystemTags||(OCA.SystemTags={}),OCA.SystemTags.FilesPlugin={ignoreLists:["trashbin","files.public"],attach:function(t){if(!(this.ignoreLists.indexOf(t.id)>=0||OCA.SystemTags.View)){var e=new OCA.SystemTags.SystemTagsInfoView;t.registerDetailView(e),OCA.SystemTags.View=e}}},OC.Plugins.register("OCA.Files.FileList",OCA.SystemTags.FilesPlugin)},19294:function(t,e,i){"use strict";i(30213),i(99641),i(22609),i(36670);var s=i(93379),n=i.n(s),l=i(7795),o=i.n(l),a=i(90569),r=i.n(a),c=i(3565),d=i.n(c),f=i(19216),u=i.n(f),h=i(44589),g=i.n(h),p=i(79891),m={};m.styleTagTransform=g(),m.setAttributes=d(),m.insert=r().bind(null,"head"),m.domAPI=o(),m.insertStyleElement=u(),n()(p.Z,m),p.Z&&p.Z.locals&&p.Z.locals,window.OCA.SystemTags=OCA.SystemTags},99641:function(){var e;(e=function(t,e){this.initialize(t,e)}).prototype=_.extend({},OCA.Files.FileList.prototype,{id:"systemtagsfilter",appName:t("systemtags","Tagged files"),_systemTagIds:[],_lastUsedTags:[],_clientSideSort:!0,_allowSelection:!1,_filterField:null,initialize:function(t,e){if(OCA.Files.FileList.prototype.initialize.apply(this,arguments),!this.initialized){e&&e.systemTagIds&&(this._systemTagIds=e.systemTagIds),OC.Plugins.attach("OCA.SystemTags.FileList",this);var i=this.$el.find("#controls").empty();_.defer(_.bind(this._getLastUsedTags,this)),this._initFilterField(i)}},destroy:function(){this.$filterField.remove(),OCA.Files.FileList.prototype.destroy.apply(this,arguments)},_getLastUsedTags:function(){var t=this;$.ajax({type:"GET",url:OC.generateUrl("/apps/systemtags/lastused"),success:function(e){t._lastUsedTags=e}})},_initFilterField:function(e){var i=this;return this.$filterField=$('<input type="hidden" name="tags"/>'),e.append(this.$filterField),this.$filterField.select2({placeholder:t("systemtags","Select tags to filter by"),allowClear:!1,multiple:!0,toggleSelect:!0,separator:",",query:_.bind(this._queryTagsAutocomplete,this),id:function(t){return t.id},initSelection:function(t,e){var i=$(t).val().trim();if(i){var s=i.split(","),n=[];OC.SystemTags.collection.fetch({success:function(){_.each(s,(function(t){var e=OC.SystemTags.collection.get(t);_.isUndefined(e)||n.push(e.toJSON())})),e(n)}})}else e([])},formatResult:function(t){return OC.SystemTags.getDescriptiveTag(t)},formatSelection:function(t){return OC.SystemTags.getDescriptiveTag(t)[0].outerHTML},sortResults:function(t){return t.sort((function(t,e){var s=i._lastUsedTags.indexOf(t.id),n=i._lastUsedTags.indexOf(e.id);return s!==n?-1===n?-1:-1===s?1:s<n?-1:1:OC.Util.naturalSortCompare(t.name,e.name)})),t},escapeMarkup:function(t){return t},formatNoMatches:function(){return t("systemtags","No tags found")}}),this.$filterField.on("change",_.bind(this._onTagsChanged,this)),this.$filterField},_queryTagsAutocomplete:function(t){OC.SystemTags.collection.fetch({success:function(){var e=OC.SystemTags.collection.filterByName(t.term);t.callback({results:_.invoke(e,"toJSON")})}})},_onUrlChanged:function(t){if(t.dir){var e=_.filter(t.dir.split("/"),(function(t){return""!==t.trim()}));this.$filterField.select2("val",e||[]),this._systemTagIds=e,this.reload()}},_onTagsChanged:function(t){var e=$(t.target).val().trim();this._systemTagIds=""!==e?e.split(","):[],this.$el.trigger($.Event("changeDirectory",{dir:this._systemTagIds.join("/")})),this.reload()},updateEmptyContent:function(){var e=this.getCurrentDirectory();"/"===e?(this._systemTagIds.length?this.$el.find("#emptycontent").html('<div class="icon-systemtags"></div><h2>'+t("systemtags","No files found for the selected tags")+"</h2>"):this.$el.find("#emptycontent").html('<div class="icon-systemtags"></div><h2>'+t("systemtags","Please select tags to filter by")+"</h2>"),this.$el.find("#emptycontent").toggleClass("hidden",!this.isEmpty),this.$el.find("#filestable thead th").toggleClass("hidden",this.isEmpty)):OCA.Files.FileList.prototype.updateEmptyContent.apply(this,arguments)},getDirectoryPermissions:function(){return OC.PERMISSION_READ|OC.PERMISSION_DELETE},updateStorageStatistics:function(){},reload:function(){if(this._setCurrentDir("/",!1),!this._systemTagIds.length)return this.updateEmptyContent(),this.setFiles([]),$.Deferred().resolve();this._selectedFiles={},this._selectionSummary.clear(),this._currentFileModel&&this._currentFileModel.off(),this._currentFileModel=null,this.$el.find(".select-all").prop("checked",!1),this.showMask(),this._reloadCall=this.filesClient.getFilteredFiles({systemTagIds:this._systemTagIds},{properties:this._getWebdavProperties()}),this._detailsView&&this._updateDetailsView(null);var t=this.reloadCallback.bind(this);return this._reloadCall.then(t,t)},reloadCallback:function(t,e){return e&&e.unshift({}),OCA.Files.FileList.prototype.reloadCallback.call(this,t,e)}}),OCA.SystemTags.FileList=e},36670:function(){!function(t){function e(t){var e=t.toJSON();return OC.isUserAdmin()||e.canAssign||(e.locked=!0),e}var i=t.Files.DetailFileInfoView.extend({_rendered:!1,className:"systemTagsInfoView",name:"systemTags",id:"systemTagsInfoView",_inputView:null,initialize:function(t){var i=this;t=t||{},this._inputView=new OC.SystemTags.SystemTagsInputField({multiple:!0,allowActions:!0,allowCreate:!0,isAdmin:OC.isUserAdmin(),initSelection:function(t,s){s(i.selectedTagsCollection.map(e))}}),this.selectedTagsCollection=new OC.SystemTags.SystemTagsMappingCollection([],{objectType:"files"}),this._inputView.collection.on("change:name",this._onTagRenamedGlobally,this),this._inputView.collection.on("remove",this._onTagDeletedGlobally,this),this._inputView.on("select",this._onSelectTag,this),this._inputView.on("deselect",this._onDeselectTag,this)},_onSelectTag:function(t){this.selectedTagsCollection.create(t.toJSON())},_onDeselectTag:function(t){this.selectedTagsCollection.get(t).destroy()},_onTagRenamedGlobally:function(t){var e=this.selectedTagsCollection.get(t.id);e&&e.set(t.toJSON())},_onTagDeletedGlobally:function(t){this.selectedTagsCollection.remove(t)},setFileInfo:function(t){var i=this;this._rendered||this.render(),t&&(this.selectedTagsCollection.setObjectId(t.id),this.selectedTagsCollection.fetch({success:function(t){t.fetched=!0;var s=t.map(e);i._inputView.setData(s),s.length>0&&i.show()}})),this.hide()},render:function(){this.$el.append(this._inputView.$el),this._inputView.render()},isVisible:function(){return!this.$el.hasClass("hidden")},show:function(){this.$el.removeClass("hidden")},hide:function(){this.$el.addClass("hidden")},toggle:function(){this.$el.toggleClass("hidden")},openDropdown:function(){this.$el.find(".systemTagsInputField").select2("open")},remove:function(){this._inputView.remove()}});t.SystemTags.SystemTagsInfoView=i}(OCA)},79891:function(t,e,i){"use strict";var s=i(87537),n=i.n(s),l=i(23645),o=i.n(l)()(n());o.push([t.id,"#app-content-systemtagsfilter .select2-container{width:30%;margin-left:10px}#app-sidebar .app-sidebar-header__action .tag-label{cursor:pointer;padding:13px 0;display:flex;color:var(--color-text-light);position:relative;margin-top:-20px}","",{version:3,sources:["webpack://./apps/systemtags/src/css/systemtagsfilelist.scss"],names:[],mappings:"AASA,iDACC,SAAA,CACA,gBAAA,CAGD,oDACC,cAAA,CACA,cAAA,CACA,YAAA,CACA,6BAAA,CACA,iBAAA,CACA,gBAAA",sourcesContent:["/*\n * Copyright (c) 2016\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n *\n */\n#app-content-systemtagsfilter .select2-container {\n\twidth: 30%;\n\tmargin-left: 10px;\n}\n\n#app-sidebar .app-sidebar-header__action .tag-label {\n\tcursor: pointer;\n\tpadding: 13px 0;\n\tdisplay: flex;\n\tcolor: var(--color-text-light);\n\tposition: relative;\n\tmargin-top: -20px;\n}\n"],sourceRoot:""}]),e.Z=o}},s={};function n(t){var e=s[t];if(void 0!==e)return e.exports;var l=s[t]={id:t,loaded:!1,exports:{}};return i[t].call(l.exports,l,l.exports,n),l.loaded=!0,l.exports}n.m=i,n.amdD=function(){throw new Error("define cannot be used indirect")},n.amdO={},e=[],n.O=function(t,i,s,l){if(!i){var o=1/0;for(d=0;d<e.length;d++){i=e[d][0],s=e[d][1],l=e[d][2];for(var a=!0,r=0;r<i.length;r++)(!1&l||o>=l)&&Object.keys(n.O).every((function(t){return n.O[t](i[r])}))?i.splice(r--,1):(a=!1,l<o&&(o=l));if(a){e.splice(d--,1);var c=s();void 0!==c&&(t=c)}}return t}l=l||0;for(var d=e.length;d>0&&e[d-1][2]>l;d--)e[d]=e[d-1];e[d]=[i,s,l]},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,{a:e}),e},n.d=function(t,e){for(var i in e)n.o(e,i)&&!n.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},n.j=9698,function(){n.b=document.baseURI||self.location.href;var t={9698:0};n.O.j=function(e){return 0===t[e]};var e=function(e,i){var s,l,o=i[0],a=i[1],r=i[2],c=0;if(o.some((function(e){return 0!==t[e]}))){for(s in a)n.o(a,s)&&(n.m[s]=a[s]);if(r)var d=r(n)}for(e&&e(i);c<o.length;c++)l=o[c],n.o(t,l)&&t[l]&&t[l][0](),t[l]=0;return n.O(d)},i=self.webpackChunknextcloud=self.webpackChunknextcloud||[];i.forEach(e.bind(null,0)),i.push=e.bind(null,i.push.bind(i))}(),n.nc=void 0;var l=n.O(void 0,[7874],(function(){return n(19294)}));l=n.O(l)}();
+//# sourceMappingURL=systemtags-systemtags.js.map?v=8eca3de81e89d6efedfd \ No newline at end of file
diff --git a/dist/systemtags-systemtags.js.map b/dist/systemtags-systemtags.js.map
index 7e0febe6f66..bf49952b8d7 100644
--- a/dist/systemtags-systemtags.js.map
+++ b/dist/systemtags-systemtags.js.map
@@ -1 +1 @@
-{"version":3,"file":"systemtags-systemtags.js?v=d2a532e75d0fabee2171","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/systemtags/src/app.js","webpack:///nextcloud/apps/systemtags/src/filesplugin.js","webpack://nextcloud/./apps/systemtags/src/css/systemtagsfilelist.scss?3cf4","webpack:///nextcloud/apps/systemtags/src/systemtags.js","webpack:///nextcloud/apps/systemtags/src/systemtagsfilelist.js","webpack:///nextcloud/apps/systemtags/src/systemtagsinfoview.js","webpack:///nextcloud/apps/systemtags/src/css/systemtagsfilelist.scss","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 (c) 2015 Vincent Petry <pvince81@owncloud.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n(function() {\n\tif (!OCA.SystemTags) {\n\t\t/**\n\t\t * @namespace\n\t\t */\n\t\tOCA.SystemTags = {}\n\t}\n\n\tOCA.SystemTags.App = {\n\n\t\tinitFileList($el) {\n\t\t\tif (this._fileList) {\n\t\t\t\treturn this._fileList\n\t\t\t}\n\n\t\t\tthis._fileList = new OCA.SystemTags.FileList(\n\t\t\t\t$el,\n\t\t\t\t{\n\t\t\t\t\tid: 'systemtags',\n\t\t\t\t\tfileActions: this._createFileActions(),\n\t\t\t\t\tconfig: OCA.Files.App.getFilesConfig(),\n\t\t\t\t\t// The file list is created when a \"show\" event is handled,\n\t\t\t\t\t// so it should be marked as \"shown\" like it would have been\n\t\t\t\t\t// done if handling the event with the file list already\n\t\t\t\t\t// created.\n\t\t\t\t\tshown: true,\n\t\t\t\t}\n\t\t\t)\n\n\t\t\tthis._fileList.appName = t('systemtags', 'Tags')\n\t\t\treturn this._fileList\n\t\t},\n\n\t\tremoveFileList() {\n\t\t\tif (this._fileList) {\n\t\t\t\tthis._fileList.$fileList.empty()\n\t\t\t}\n\t\t},\n\n\t\t_createFileActions() {\n\t\t\t// inherit file actions from the files app\n\t\t\tconst fileActions = new OCA.Files.FileActions()\n\t\t\t// note: not merging the legacy actions because legacy apps are not\n\t\t\t// compatible with the sharing overview and need to be adapted first\n\t\t\tfileActions.registerDefaultActions()\n\t\t\tfileActions.merge(OCA.Files.fileActions)\n\n\t\t\tif (!this._globalActionsInitialized) {\n\t\t\t\t// in case actions are registered later\n\t\t\t\tthis._onActionsUpdated = _.bind(this._onActionsUpdated, this)\n\t\t\t\tOCA.Files.fileActions.on('setDefault.app-systemtags', this._onActionsUpdated)\n\t\t\t\tOCA.Files.fileActions.on('registerAction.app-systemtags', this._onActionsUpdated)\n\t\t\t\tthis._globalActionsInitialized = true\n\t\t\t}\n\n\t\t\t// when the user clicks on a folder, redirect to the corresponding\n\t\t\t// folder in the files app instead of opening it directly\n\t\t\tfileActions.register('dir', 'Open', OC.PERMISSION_READ, '', function(filename, context) {\n\t\t\t\tOCA.Files.App.setActiveView('files', { silent: true })\n\t\t\t\tOCA.Files.App.fileList.changeDirectory(OC.joinPaths(context.$file.attr('data-path'), filename), true, true)\n\t\t\t})\n\t\t\tfileActions.setDefault('dir', 'Open')\n\t\t\treturn fileActions\n\t\t},\n\n\t\t_onActionsUpdated(ev) {\n\t\t\tif (!this._fileList) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (ev.action) {\n\t\t\t\tthis._fileList.fileActions.registerAction(ev.action)\n\t\t\t} else if (ev.defaultAction) {\n\t\t\t\tthis._fileList.fileActions.setDefault(\n\t\t\t\t\tev.defaultAction.mime,\n\t\t\t\t\tev.defaultAction.name\n\t\t\t\t)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Destroy the app\n\t\t */\n\t\tdestroy() {\n\t\t\tOCA.Files.fileActions.off('setDefault.app-systemtags', this._onActionsUpdated)\n\t\t\tOCA.Files.fileActions.off('registerAction.app-systemtags', this._onActionsUpdated)\n\t\t\tthis.removeFileList()\n\t\t\tthis._fileList = null\n\t\t\tdelete this._globalActionsInitialized\n\t\t},\n\t}\n\n})()\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\t$('#app-content-systemtagsfilter').on('show', function(e) {\n\t\tOCA.SystemTags.App.initFileList($(e.target))\n\t})\n\t$('#app-content-systemtagsfilter').on('hide', function() {\n\t\tOCA.SystemTags.App.removeFileList()\n\t})\n})\n","/**\n * Copyright (c) 2015 Vincent Petry <pvince81@owncloud.com>\n *\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n(function() {\n\tOCA.SystemTags = _.extend({}, OCA.SystemTags)\n\tif (!OCA.SystemTags) {\n\t\t/**\n\t\t * @namespace\n\t\t */\n\t\tOCA.SystemTags = {}\n\t}\n\n\t/**\n\t * @namespace\n\t */\n\tOCA.SystemTags.FilesPlugin = {\n\t\tignoreLists: [\n\t\t\t'trashbin',\n\t\t\t'files.public',\n\t\t],\n\n\t\tattach(fileList) {\n\t\t\tif (this.ignoreLists.indexOf(fileList.id) >= 0) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// only create and attach once\n\t\t\t// FIXME: this should likely be done on a different code path now\n\t\t\t// for the sidebar to only have it registered once\n\t\t\tif (!OCA.SystemTags.View) {\n\t\t\t\tconst systemTagsInfoView = new OCA.SystemTags.SystemTagsInfoView()\n\t\t\t\tfileList.registerDetailView(systemTagsInfoView)\n\t\t\t\tOCA.SystemTags.View = systemTagsInfoView\n\t\t\t}\n\t\t},\n\t}\n\n})()\n\nOC.Plugins.register('OCA.Files.FileList', OCA.SystemTags.FilesPlugin)\n","\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/sass-loader/dist/cjs.js!./systemtagsfilelist.scss\";\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/sass-loader/dist/cjs.js!./systemtagsfilelist.scss\";\n export default content && content.locals ? content.locals : undefined;\n","/**\n * @copyright Copyright (c) 2016 Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport './app'\nimport './systemtagsfilelist'\nimport './filesplugin'\nimport './systemtagsinfoview'\nimport './css/systemtagsfilelist.scss'\n\nwindow.OCA.SystemTags = OCA.SystemTags\n","/**\n * Copyright (c) 2016 Vincent Petry <pvince81@owncloud.com>\n *\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n(function() {\n\t/**\n\t * @class OCA.SystemTags.FileList\n\t * @augments OCA.Files.FileList\n\t *\n\t * @classdesc SystemTags file list.\n\t * Contains a list of files filtered by system tags.\n\t *\n\t * @param {object} $el container element with existing markup for the #controls and a table\n\t * @param {Array} [options] map of options, see other parameters\n\t * @param {Array.<string>} [options.systemTagIds] array of system tag ids to\n\t * filter by\n\t */\n\tconst FileList = function($el, options) {\n\t\tthis.initialize($el, options)\n\t}\n\tFileList.prototype = _.extend(\n\t\t{},\n\t\tOCA.Files.FileList.prototype,\n\t\t/** @lends OCA.SystemTags.FileList.prototype */ {\n\t\t\tid: 'systemtagsfilter',\n\t\t\tappName: t('systemtags', 'Tagged files'),\n\n\t\t\t/**\n\t\t\t * Array of system tag ids to filter by\n\t\t\t *\n\t\t\t * @type {Array.<string>}\n\t\t\t */\n\t\t\t_systemTagIds: [],\n\t\t\t_lastUsedTags: [],\n\n\t\t\t_clientSideSort: true,\n\t\t\t_allowSelection: false,\n\n\t\t\t_filterField: null,\n\n\t\t\t/**\n\t\t\t * @private\n\t\t\t * @param {object} $el container element\n\t\t\t * @param {object} [options] map of options, see other parameters\n\t\t\t */\n\t\t\tinitialize($el, options) {\n\t\t\t\tOCA.Files.FileList.prototype.initialize.apply(this, arguments)\n\t\t\t\tif (this.initialized) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tif (options && options.systemTagIds) {\n\t\t\t\t\tthis._systemTagIds = options.systemTagIds\n\t\t\t\t}\n\n\t\t\t\tOC.Plugins.attach('OCA.SystemTags.FileList', this)\n\n\t\t\t\tconst $controls = this.$el.find('#controls').empty()\n\n\t\t\t\t_.defer(_.bind(this._getLastUsedTags, this))\n\t\t\t\tthis._initFilterField($controls)\n\t\t\t},\n\n\t\t\tdestroy() {\n\t\t\t\tthis.$filterField.remove()\n\n\t\t\t\tOCA.Files.FileList.prototype.destroy.apply(this, arguments)\n\t\t\t},\n\n\t\t\t_getLastUsedTags() {\n\t\t\t\tconst self = this\n\t\t\t\t$.ajax({\n\t\t\t\t\ttype: 'GET',\n\t\t\t\t\turl: OC.generateUrl('/apps/systemtags/lastused'),\n\t\t\t\t\tsuccess(response) {\n\t\t\t\t\t\tself._lastUsedTags = response\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t},\n\n\t\t\t_initFilterField($container) {\n\t\t\t\tconst self = this\n\t\t\t\tthis.$filterField = $('<input type=\"hidden\" name=\"tags\"/>')\n\t\t\t\t$container.append(this.$filterField)\n\t\t\t\tthis.$filterField.select2({\n\t\t\t\t\tplaceholder: t('systemtags', 'Select tags to filter by'),\n\t\t\t\t\tallowClear: false,\n\t\t\t\t\tmultiple: true,\n\t\t\t\t\ttoggleSelect: true,\n\t\t\t\t\tseparator: ',',\n\t\t\t\t\tquery: _.bind(this._queryTagsAutocomplete, this),\n\n\t\t\t\t\tid(tag) {\n\t\t\t\t\t\treturn tag.id\n\t\t\t\t\t},\n\n\t\t\t\t\tinitSelection(element, callback) {\n\t\t\t\t\t\tconst val = $(element)\n\t\t\t\t\t\t\t.val()\n\t\t\t\t\t\t\t.trim()\n\t\t\t\t\t\tif (val) {\n\t\t\t\t\t\t\tconst tagIds = val.split(',')\n\t\t\t\t\t\t\tconst tags = []\n\n\t\t\t\t\t\t\tOC.SystemTags.collection.fetch({\n\t\t\t\t\t\t\t\tsuccess() {\n\t\t\t\t\t\t\t\t\t_.each(tagIds, function(tagId) {\n\t\t\t\t\t\t\t\t\t\tconst tag = OC.SystemTags.collection.get(\n\t\t\t\t\t\t\t\t\t\t\ttagId\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\tif (!_.isUndefined(tag)) {\n\t\t\t\t\t\t\t\t\t\t\ttags.push(tag.toJSON())\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t})\n\n\t\t\t\t\t\t\t\t\tcallback(tags)\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// eslint-disable-next-line n/no-callback-literal\n\t\t\t\t\t\t\tcallback([])\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\n\t\t\t\t\tformatResult(tag) {\n\t\t\t\t\t\treturn OC.SystemTags.getDescriptiveTag(tag)\n\t\t\t\t\t},\n\n\t\t\t\t\tformatSelection(tag) {\n\t\t\t\t\t\treturn OC.SystemTags.getDescriptiveTag(tag)[0]\n\t\t\t\t\t\t\t.outerHTML\n\t\t\t\t\t},\n\n\t\t\t\t\tsortResults(results) {\n\t\t\t\t\t\tresults.sort(function(a, b) {\n\t\t\t\t\t\t\tconst aLastUsed = self._lastUsedTags.indexOf(a.id)\n\t\t\t\t\t\t\tconst bLastUsed = self._lastUsedTags.indexOf(b.id)\n\n\t\t\t\t\t\t\tif (aLastUsed !== bLastUsed) {\n\t\t\t\t\t\t\t\tif (bLastUsed === -1) {\n\t\t\t\t\t\t\t\t\treturn -1\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (aLastUsed === -1) {\n\t\t\t\t\t\t\t\t\treturn 1\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn aLastUsed < bLastUsed ? -1 : 1\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Both not found\n\t\t\t\t\t\t\treturn OC.Util.naturalSortCompare(a.name, b.name)\n\t\t\t\t\t\t})\n\t\t\t\t\t\treturn results\n\t\t\t\t\t},\n\n\t\t\t\t\tescapeMarkup(m) {\n\t\t\t\t\t\t// prevent double markup escape\n\t\t\t\t\t\treturn m\n\t\t\t\t\t},\n\t\t\t\t\tformatNoMatches() {\n\t\t\t\t\t\treturn t('systemtags', 'No tags found')\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tthis.$filterField.on(\n\t\t\t\t\t'change',\n\t\t\t\t\t_.bind(this._onTagsChanged, this)\n\t\t\t\t)\n\t\t\t\treturn this.$filterField\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Autocomplete function for dropdown results\n\t\t\t *\n\t\t\t * @param {object} query select2 query object\n\t\t\t */\n\t\t\t_queryTagsAutocomplete(query) {\n\t\t\t\tOC.SystemTags.collection.fetch({\n\t\t\t\t\tsuccess() {\n\t\t\t\t\t\tconst results = OC.SystemTags.collection.filterByName(\n\t\t\t\t\t\t\tquery.term\n\t\t\t\t\t\t)\n\n\t\t\t\t\t\tquery.callback({\n\t\t\t\t\t\t\tresults: _.invoke(results, 'toJSON'),\n\t\t\t\t\t\t})\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Event handler for when the URL changed\n\t\t\t *\n\t\t\t * @param {Event} e the urlchanged event\n\t\t\t */\n\t\t\t_onUrlChanged(e) {\n\t\t\t\tif (e.dir) {\n\t\t\t\t\tconst tags = _.filter(e.dir.split('/'), function(val) {\n\t\t\t\t\t\treturn val.trim() !== ''\n\t\t\t\t\t})\n\t\t\t\t\tthis.$filterField.select2('val', tags || [])\n\t\t\t\t\tthis._systemTagIds = tags\n\t\t\t\t\tthis.reload()\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t_onTagsChanged(ev) {\n\t\t\t\tconst val = $(ev.target)\n\t\t\t\t\t.val()\n\t\t\t\t\t.trim()\n\t\t\t\tif (val !== '') {\n\t\t\t\t\tthis._systemTagIds = val.split(',')\n\t\t\t\t} else {\n\t\t\t\t\tthis._systemTagIds = []\n\t\t\t\t}\n\n\t\t\t\tthis.$el.trigger(\n\t\t\t\t\t$.Event('changeDirectory', {\n\t\t\t\t\t\tdir: this._systemTagIds.join('/'),\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t\tthis.reload()\n\t\t\t},\n\n\t\t\tupdateEmptyContent() {\n\t\t\t\tconst dir = this.getCurrentDirectory()\n\t\t\t\tif (dir === '/') {\n\t\t\t\t\t// root has special permissions\n\t\t\t\t\tif (!this._systemTagIds.length) {\n\t\t\t\t\t\t// no tags selected\n\t\t\t\t\t\tthis.$el\n\t\t\t\t\t\t\t.find('#emptycontent')\n\t\t\t\t\t\t\t.html(\n\t\t\t\t\t\t\t\t'<div class=\"icon-systemtags\"></div>'\n\t\t\t\t\t\t\t\t\t+ '<h2>'\n\t\t\t\t\t\t\t\t\t+ t(\n\t\t\t\t\t\t\t\t\t\t'systemtags',\n\t\t\t\t\t\t\t\t\t\t'Please select tags to filter by'\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t+ '</h2>'\n\t\t\t\t\t\t\t)\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// tags selected but no results\n\t\t\t\t\t\tthis.$el\n\t\t\t\t\t\t\t.find('#emptycontent')\n\t\t\t\t\t\t\t.html(\n\t\t\t\t\t\t\t\t'<div class=\"icon-systemtags\"></div>'\n\t\t\t\t\t\t\t\t\t+ '<h2>'\n\t\t\t\t\t\t\t\t\t+ t(\n\t\t\t\t\t\t\t\t\t\t'systemtags',\n\t\t\t\t\t\t\t\t\t\t'No files found for the selected tags'\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t+ '</h2>'\n\t\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\tthis.$el\n\t\t\t\t\t\t.find('#emptycontent')\n\t\t\t\t\t\t.toggleClass('hidden', !this.isEmpty)\n\t\t\t\t\tthis.$el\n\t\t\t\t\t\t.find('#filestable thead th')\n\t\t\t\t\t\t.toggleClass('hidden', this.isEmpty)\n\t\t\t\t} else {\n\t\t\t\t\tOCA.Files.FileList.prototype.updateEmptyContent.apply(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\targuments\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tgetDirectoryPermissions() {\n\t\t\t\treturn OC.PERMISSION_READ | OC.PERMISSION_DELETE\n\t\t\t},\n\n\t\t\tupdateStorageStatistics() {\n\t\t\t\t// no op because it doesn't have\n\t\t\t\t// storage info like free space / used space\n\t\t\t},\n\n\t\t\treload() {\n\t\t\t\t// there is only root\n\t\t\t\tthis._setCurrentDir('/', false)\n\n\t\t\t\tif (!this._systemTagIds.length) {\n\t\t\t\t\t// don't reload\n\t\t\t\t\tthis.updateEmptyContent()\n\t\t\t\t\tthis.setFiles([])\n\t\t\t\t\treturn $.Deferred().resolve()\n\t\t\t\t}\n\n\t\t\t\tthis._selectedFiles = {}\n\t\t\t\tthis._selectionSummary.clear()\n\t\t\t\tif (this._currentFileModel) {\n\t\t\t\t\tthis._currentFileModel.off()\n\t\t\t\t}\n\t\t\t\tthis._currentFileModel = null\n\t\t\t\tthis.$el.find('.select-all').prop('checked', false)\n\t\t\t\tthis.showMask()\n\t\t\t\tthis._reloadCall = this.filesClient.getFilteredFiles(\n\t\t\t\t\t{\n\t\t\t\t\t\tsystemTagIds: this._systemTagIds,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tproperties: this._getWebdavProperties(),\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\tif (this._detailsView) {\n\t\t\t\t\t// close sidebar\n\t\t\t\t\tthis._updateDetailsView(null)\n\t\t\t\t}\n\t\t\t\tconst callBack = this.reloadCallback.bind(this)\n\t\t\t\treturn this._reloadCall.then(callBack, callBack)\n\t\t\t},\n\n\t\t\treloadCallback(status, result) {\n\t\t\t\tif (result) {\n\t\t\t\t\t// prepend empty dir info because original handler\n\t\t\t\t\tresult.unshift({})\n\t\t\t\t}\n\n\t\t\t\treturn OCA.Files.FileList.prototype.reloadCallback.call(\n\t\t\t\t\tthis,\n\t\t\t\t\tstatus,\n\t\t\t\t\tresult\n\t\t\t\t)\n\t\t\t},\n\t\t}\n\t)\n\n\tOCA.SystemTags.FileList = FileList\n})()\n","/**\n * Copyright (c) 2015\n *\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n(function(OCA) {\n\n\t/**\n\t * @param {any} model -\n\t */\n\tfunction modelToSelection(model) {\n\t\tconst data = model.toJSON()\n\t\tif (!OC.isUserAdmin() && !data.canAssign) {\n\t\t\tdata.locked = true\n\t\t}\n\t\treturn data\n\t}\n\n\t/**\n\t * @class OCA.SystemTags.SystemTagsInfoView\n\t * @classdesc\n\t *\n\t * Displays a file's system tags\n\t *\n\t */\n\tconst SystemTagsInfoView = OCA.Files.DetailFileInfoView.extend(\n\t\t/** @lends OCA.SystemTags.SystemTagsInfoView.prototype */ {\n\n\t\t\t_rendered: false,\n\n\t\t\tclassName: 'systemTagsInfoView',\n\t\t\tname: 'systemTags',\n\n\t\t\t/* required by the new files sidebar to check if the view is unique */\n\t\t\tid: 'systemTagsInfoView',\n\n\t\t\t/**\n\t\t\t * @type {OC.SystemTags.SystemTagsInputField}\n\t\t\t */\n\t\t\t_inputView: null,\n\n\t\t\tinitialize(options) {\n\t\t\t\tconst self = this\n\t\t\t\toptions = options || {}\n\n\t\t\t\tthis._inputView = new OC.SystemTags.SystemTagsInputField({\n\t\t\t\t\tmultiple: true,\n\t\t\t\t\tallowActions: true,\n\t\t\t\t\tallowCreate: true,\n\t\t\t\t\tisAdmin: OC.isUserAdmin(),\n\t\t\t\t\tinitSelection(element, callback) {\n\t\t\t\t\t\tcallback(self.selectedTagsCollection.map(modelToSelection))\n\t\t\t\t\t},\n\t\t\t\t})\n\n\t\t\t\tthis.selectedTagsCollection = new OC.SystemTags.SystemTagsMappingCollection([], { objectType: 'files' })\n\n\t\t\t\tthis._inputView.collection.on('change:name', this._onTagRenamedGlobally, this)\n\t\t\t\tthis._inputView.collection.on('remove', this._onTagDeletedGlobally, this)\n\n\t\t\t\tthis._inputView.on('select', this._onSelectTag, this)\n\t\t\t\tthis._inputView.on('deselect', this._onDeselectTag, this)\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Event handler whenever a tag was selected\n\t\t\t *\n\t\t\t * @param {object} tag the tag to create\n\t\t\t */\n\t\t\t_onSelectTag(tag) {\n\t\t\t// create a mapping entry for this tag\n\t\t\t\tthis.selectedTagsCollection.create(tag.toJSON())\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Event handler whenever a tag gets deselected.\n\t\t\t * Removes the selected tag from the mapping collection.\n\t\t\t *\n\t\t\t * @param {string} tagId tag id\n\t\t\t */\n\t\t\t_onDeselectTag(tagId) {\n\t\t\t\tthis.selectedTagsCollection.get(tagId).destroy()\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Event handler whenever a tag was renamed globally.\n\t\t\t *\n\t\t\t * This will automatically adjust the tag mapping collection to\n\t\t\t * container the new name.\n\t\t\t *\n\t\t\t * @param {OC.Backbone.Model} changedTag tag model that has changed\n\t\t\t */\n\t\t\t_onTagRenamedGlobally(changedTag) {\n\t\t\t// also rename it in the selection, if applicable\n\t\t\t\tconst selectedTagMapping = this.selectedTagsCollection.get(changedTag.id)\n\t\t\t\tif (selectedTagMapping) {\n\t\t\t\t\tselectedTagMapping.set(changedTag.toJSON())\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Event handler whenever a tag was deleted globally.\n\t\t\t *\n\t\t\t * This will automatically adjust the tag mapping collection to\n\t\t\t * container the new name.\n\t\t\t *\n\t\t\t * @param {OC.Backbone.Model} tagId tag model that has changed\n\t\t\t */\n\t\t\t_onTagDeletedGlobally(tagId) {\n\t\t\t// also rename it in the selection, if applicable\n\t\t\t\tthis.selectedTagsCollection.remove(tagId)\n\t\t\t},\n\n\t\t\tsetFileInfo(fileInfo) {\n\t\t\t\tconst self = this\n\t\t\t\tif (!this._rendered) {\n\t\t\t\t\tthis.render()\n\t\t\t\t}\n\n\t\t\t\tif (fileInfo) {\n\t\t\t\t\tthis.selectedTagsCollection.setObjectId(fileInfo.id)\n\t\t\t\t\tthis.selectedTagsCollection.fetch({\n\t\t\t\t\t\tsuccess(collection) {\n\t\t\t\t\t\t\tcollection.fetched = true\n\n\t\t\t\t\t\t\tconst appliedTags = collection.map(modelToSelection)\n\t\t\t\t\t\t\tself._inputView.setData(appliedTags)\n\t\t\t\t\t\t\tif (appliedTags.length > 0) {\n\t\t\t\t\t\t\t\tself.show()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tthis.hide()\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Renders this details view\n\t\t\t */\n\t\t\trender() {\n\t\t\t\tthis.$el.append(this._inputView.$el)\n\t\t\t\tthis._inputView.render()\n\t\t\t},\n\n\t\t\tisVisible() {\n\t\t\t\treturn !this.$el.hasClass('hidden')\n\t\t\t},\n\n\t\t\tshow() {\n\t\t\t\tthis.$el.removeClass('hidden')\n\t\t\t},\n\n\t\t\thide() {\n\t\t\t\tthis.$el.addClass('hidden')\n\t\t\t},\n\n\t\t\ttoggle() {\n\t\t\t\tthis.$el.toggleClass('hidden')\n\t\t\t},\n\n\t\t\topenDropdown() {\n\t\t\t\tthis.$el.find('.systemTagsInputField').select2('open')\n\t\t\t},\n\n\t\t\tremove() {\n\t\t\t\tthis._inputView.remove()\n\t\t\t},\n\t\t})\n\n\tOCA.SystemTags.SystemTagsInfoView = SystemTagsInfoView\n\n})(OCA)\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, \"#app-content-systemtagsfilter .select2-container{width:30%;margin-left:10px}#app-sidebar .app-sidebar-header__action .tag-label{cursor:pointer;padding:13px 0;display:flex;color:var(--color-text-light);position:relative;margin-top:-20px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/systemtags/src/css/systemtagsfilelist.scss\"],\"names\":[],\"mappings\":\"AASA,iDACC,SAAA,CACA,gBAAA,CAGD,oDACC,cAAA,CACA,cAAA,CACA,YAAA,CACA,6BAAA,CACA,iBAAA,CACA,gBAAA\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2016\\n *\\n * This file is licensed under the Affero General Public License version 3\\n * or later.\\n *\\n * See the COPYING-README file.\\n *\\n */\\n#app-content-systemtagsfilter .select2-container {\\n\\twidth: 30%;\\n\\tmargin-left: 10px;\\n}\\n\\n#app-sidebar .app-sidebar-header__action .tag-label {\\n\\tcursor: pointer;\\n\\tpadding: 13px 0;\\n\\tdisplay: flex;\\n\\tcolor: var(--color-text-light);\\n\\tposition: relative;\\n\\tmargin-top: -20px;\\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 = 9698;","__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\t9698: 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__(19294); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","OCA","SystemTags","App","initFileList","$el","this","_fileList","FileList","id","fileActions","_createFileActions","config","Files","getFilesConfig","shown","appName","t","removeFileList","$fileList","empty","FileActions","registerDefaultActions","merge","_globalActionsInitialized","_onActionsUpdated","_","bind","on","register","OC","PERMISSION_READ","filename","context","setActiveView","silent","fileList","changeDirectory","joinPaths","$file","attr","setDefault","ev","action","registerAction","defaultAction","mime","name","destroy","off","window","addEventListener","$","e","target","extend","FilesPlugin","ignoreLists","attach","indexOf","View","systemTagsInfoView","SystemTagsInfoView","registerDetailView","Plugins","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","initialize","prototype","_systemTagIds","_lastUsedTags","_clientSideSort","_allowSelection","_filterField","apply","arguments","initialized","systemTagIds","$controls","find","defer","_getLastUsedTags","_initFilterField","$filterField","remove","self","ajax","type","url","generateUrl","success","response","$container","append","select2","placeholder","allowClear","multiple","toggleSelect","separator","query","_queryTagsAutocomplete","tag","initSelection","element","callback","val","trim","tagIds","split","tags","collection","fetch","each","tagId","get","isUndefined","push","toJSON","formatResult","getDescriptiveTag","formatSelection","outerHTML","sortResults","results","sort","a","b","aLastUsed","bLastUsed","Util","naturalSortCompare","escapeMarkup","m","formatNoMatches","_onTagsChanged","filterByName","term","invoke","_onUrlChanged","dir","filter","reload","trigger","Event","join","updateEmptyContent","getCurrentDirectory","length","html","toggleClass","isEmpty","getDirectoryPermissions","PERMISSION_DELETE","updateStorageStatistics","_setCurrentDir","setFiles","Deferred","resolve","_selectedFiles","_selectionSummary","clear","_currentFileModel","prop","showMask","_reloadCall","filesClient","getFilteredFiles","properties","_getWebdavProperties","_detailsView","_updateDetailsView","callBack","reloadCallback","then","status","result","unshift","call","modelToSelection","model","data","isUserAdmin","canAssign","locked","DetailFileInfoView","_rendered","className","_inputView","SystemTagsInputField","allowActions","allowCreate","isAdmin","selectedTagsCollection","map","SystemTagsMappingCollection","objectType","_onTagRenamedGlobally","_onTagDeletedGlobally","_onSelectTag","_onDeselectTag","create","changedTag","selectedTagMapping","set","setFileInfo","fileInfo","render","setObjectId","fetched","appliedTags","setData","show","hide","isVisible","hasClass","removeClass","addClass","toggle","openDropdown","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","amdD","Error","amdO","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","definition","o","defineProperty","enumerable","g","globalThis","Function","obj","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","children","document","baseURI","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"systemtags-systemtags.js?v=8eca3de81e89d6efedfd","mappings":";gBAAIA,sBC0BEC,IAAIC,aAIRD,IAAIC,WAAa,IAGlBD,IAAIC,WAAWC,IAAM,CAEpBC,aAFoB,SAEPC,GACZ,OAAIC,KAAKC,YAITD,KAAKC,UAAY,IAAIN,IAAIC,WAAWM,SACnCH,EACA,CACCI,GAAI,aACJC,YAAaJ,KAAKK,qBAClBC,OAAQX,IAAIY,MAAMV,IAAIW,iBAKtBC,OAAO,IAITT,KAAKC,UAAUS,QAAUC,EAAE,aAAc,SAjBjCX,KAAKC,WAqBdW,eAzBoB,WA0BfZ,KAAKC,WACRD,KAAKC,UAAUY,UAAUC,SAI3BT,mBA/BoB,WAiCnB,IAAMD,EAAc,IAAIT,IAAIY,MAAMQ,YAqBlC,OAlBAX,EAAYY,yBACZZ,EAAYa,MAAMtB,IAAIY,MAAMH,aAEvBJ,KAAKkB,4BAETlB,KAAKmB,kBAAoBC,EAAEC,KAAKrB,KAAKmB,kBAAmBnB,MACxDL,IAAIY,MAAMH,YAAYkB,GAAG,4BAA6BtB,KAAKmB,mBAC3DxB,IAAIY,MAAMH,YAAYkB,GAAG,gCAAiCtB,KAAKmB,mBAC/DnB,KAAKkB,2BAA4B,GAKlCd,EAAYmB,SAAS,MAAO,OAAQC,GAAGC,gBAAiB,IAAI,SAASC,EAAUC,GAC9EhC,IAAIY,MAAMV,IAAI+B,cAAc,QAAS,CAAEC,QAAQ,IAC/ClC,IAAIY,MAAMV,IAAIiC,SAASC,gBAAgBP,GAAGQ,UAAUL,EAAQM,MAAMC,KAAK,aAAcR,IAAW,GAAM,MAEvGtB,EAAY+B,WAAW,MAAO,QACvB/B,GAGRe,kBAzDoB,SAyDFiB,GACZpC,KAAKC,YAINmC,EAAGC,OACNrC,KAAKC,UAAUG,YAAYkC,eAAeF,EAAGC,QACnCD,EAAGG,eACbvC,KAAKC,UAAUG,YAAY+B,WAC1BC,EAAGG,cAAcC,KACjBJ,EAAGG,cAAcE,QAQpBC,QA3EoB,WA4EnB/C,IAAIY,MAAMH,YAAYuC,IAAI,4BAA6B3C,KAAKmB,mBAC5DxB,IAAIY,MAAMH,YAAYuC,IAAI,gCAAiC3C,KAAKmB,mBAChEnB,KAAKY,iBACLZ,KAAKC,UAAY,YACVD,KAAKkB,4BAMf0B,OAAOC,iBAAiB,oBAAoB,WAC3CC,EAAE,iCAAiCxB,GAAG,QAAQ,SAASyB,GACtDpD,IAAIC,WAAWC,IAAIC,aAAagD,EAAEC,EAAEC,YAErCF,EAAE,iCAAiCxB,GAAG,QAAQ,WAC7C3B,IAAIC,WAAWC,IAAIe,yCCnGpBjB,IAAIC,WAAawB,EAAE6B,OAAO,GAAItD,IAAIC,YAC7BD,IAAIC,aAIRD,IAAIC,WAAa,IAMlBD,IAAIC,WAAWsD,YAAc,CAC5BC,YAAa,CACZ,WACA,gBAGDC,OAN4B,SAMrBtB,GACN,KAAI9B,KAAKmD,YAAYE,QAAQvB,EAAS3B,KAAO,GAOxCR,IAAIC,WAAW0D,MAAM,CACzB,IAAMC,EAAqB,IAAI5D,IAAIC,WAAW4D,mBAC9C1B,EAAS2B,mBAAmBF,GAC5B5D,IAAIC,WAAW0D,KAAOC,KAO1B/B,GAAGkC,QAAQnC,SAAS,qBAAsB5B,IAAIC,WAAWsD,0NCjDrDS,EAAU,GAEdA,EAAQC,kBAAoB,IAC5BD,EAAQE,cAAgB,IAElBF,EAAQG,OAAS,SAAc,KAAM,QAE3CH,EAAQI,OAAS,IACjBJ,EAAQK,mBAAqB,IAEhB,IAAI,IAASL,GAKJ,KAAW,YAAiB,WCGlDf,OAAOjD,IAAIC,WAAaD,IAAIC,6BCL5B,IAaOM,GAAAA,EAAW,SAASH,EAAK4D,GAC9B3D,KAAKiE,WAAWlE,EAAK4D,KAEbO,UAAY9C,EAAE6B,OACtB,GACAtD,IAAIY,MAAML,SAASgE,UAC6B,CAC/C/D,GAAI,mBACJO,QAASC,EAAE,aAAc,gBAOzBwD,cAAe,GACfC,cAAe,GAEfC,iBAAiB,EACjBC,iBAAiB,EAEjBC,aAAc,KAOdN,WAtB+C,SAsBpClE,EAAK4D,GAEf,GADAhE,IAAIY,MAAML,SAASgE,UAAUD,WAAWO,MAAMxE,KAAMyE,YAChDzE,KAAK0E,YAAT,CAIIf,GAAWA,EAAQgB,eACtB3E,KAAKmE,cAAgBR,EAAQgB,cAG9BnD,GAAGkC,QAAQN,OAAO,0BAA2BpD,MAE7C,IAAM4E,EAAY5E,KAAKD,IAAI8E,KAAK,aAAa/D,QAE7CM,EAAE0D,MAAM1D,EAAEC,KAAKrB,KAAK+E,iBAAkB/E,OACtCA,KAAKgF,iBAAiBJ,KAGvBlC,QAxC+C,WAyC9C1C,KAAKiF,aAAaC,SAElBvF,IAAIY,MAAML,SAASgE,UAAUxB,QAAQ8B,MAAMxE,KAAMyE,YAGlDM,iBA9C+C,WA+C9C,IAAMI,EAAOnF,KACb8C,EAAEsC,KAAK,CACNC,KAAM,MACNC,IAAK9D,GAAG+D,YAAY,6BACpBC,QAHM,SAGEC,GACPN,EAAKf,cAAgBqB,MAKxBT,iBAzD+C,SAyD9BU,GAChB,IAAMP,EAAOnF,KAqFb,OApFAA,KAAKiF,aAAenC,EAAE,sCACtB4C,EAAWC,OAAO3F,KAAKiF,cACvBjF,KAAKiF,aAAaW,QAAQ,CACzBC,YAAalF,EAAE,aAAc,4BAC7BmF,YAAY,EACZC,UAAU,EACVC,cAAc,EACdC,UAAW,IACXC,MAAO9E,EAAEC,KAAKrB,KAAKmG,uBAAwBnG,MAE3CG,GARyB,SAQtBiG,GACF,OAAOA,EAAIjG,IAGZkG,cAZyB,SAYXC,EAASC,GACtB,IAAMC,EAAM1D,EAAEwD,GACZE,MACAC,OACF,GAAID,EAAK,CACR,IAAME,EAASF,EAAIG,MAAM,KACnBC,EAAO,GAEbpF,GAAG5B,WAAWiH,WAAWC,MAAM,CAC9BtB,QAD8B,WAE7BpE,EAAE2F,KAAKL,GAAQ,SAASM,GACvB,IAAMZ,EAAM5E,GAAG5B,WAAWiH,WAAWI,IACpCD,GAEI5F,EAAE8F,YAAYd,IAClBQ,EAAKO,KAAKf,EAAIgB,aAIhBb,EAASK,WAKXL,EAAS,KAIXc,aAxCyB,SAwCZjB,GACZ,OAAO5E,GAAG5B,WAAW0H,kBAAkBlB,IAGxCmB,gBA5CyB,SA4CTnB,GACf,OAAO5E,GAAG5B,WAAW0H,kBAAkBlB,GAAK,GAC1CoB,WAGHC,YAjDyB,SAiDbC,GAkBX,OAjBAA,EAAQC,MAAK,SAASC,EAAGC,GACxB,IAAMC,EAAY3C,EAAKf,cAAcf,QAAQuE,EAAEzH,IACzC4H,EAAY5C,EAAKf,cAAcf,QAAQwE,EAAE1H,IAE/C,OAAI2H,IAAcC,GACE,IAAfA,GACK,GAEU,IAAfD,EACI,EAEDA,EAAYC,GAAa,EAAI,EAI9BvG,GAAGwG,KAAKC,mBAAmBL,EAAEnF,KAAMoF,EAAEpF,SAEtCiF,GAGRQ,aAtEyB,SAsEZC,GAEZ,OAAOA,GAERC,gBA1EyB,WA2ExB,OAAOzH,EAAE,aAAc,oBAGzBX,KAAKiF,aAAa3D,GACjB,SACAF,EAAEC,KAAKrB,KAAKqI,eAAgBrI,OAEtBA,KAAKiF,cAQbkB,uBAvJ+C,SAuJxBD,GACtB1E,GAAG5B,WAAWiH,WAAWC,MAAM,CAC9BtB,QAD8B,WAE7B,IAAMkC,EAAUlG,GAAG5B,WAAWiH,WAAWyB,aACxCpC,EAAMqC,MAGPrC,EAAMK,SAAS,CACdmB,QAAStG,EAAEoH,OAAOd,EAAS,gBAW/Be,cA1K+C,SA0KjC1F,GACb,GAAIA,EAAE2F,IAAK,CACV,IAAM9B,EAAOxF,EAAEuH,OAAO5F,EAAE2F,IAAI/B,MAAM,MAAM,SAASH,GAChD,MAAsB,KAAfA,EAAIC,UAEZzG,KAAKiF,aAAaW,QAAQ,MAAOgB,GAAQ,IACzC5G,KAAKmE,cAAgByC,EACrB5G,KAAK4I,WAIPP,eArL+C,SAqLhCjG,GACd,IAAMoE,EAAM1D,EAAEV,EAAGY,QACfwD,MACAC,OAEDzG,KAAKmE,cADM,KAARqC,EACkBA,EAAIG,MAAM,KAEV,GAGtB3G,KAAKD,IAAI8I,QACR/F,EAAEgG,MAAM,kBAAmB,CAC1BJ,IAAK1I,KAAKmE,cAAc4E,KAAK,QAG/B/I,KAAK4I,UAGNI,mBAvM+C,WAwM9C,IAAMN,EAAM1I,KAAKiJ,sBACL,MAARP,GAEE1I,KAAKmE,cAAc+E,OAevBlJ,KAAKD,IACH8E,KAAK,iBACLsE,KACA,0CAEGxI,EACD,aACA,wCAEC,SAtBLX,KAAKD,IACH8E,KAAK,iBACLsE,KACA,0CAEGxI,EACD,aACA,mCAEC,SAgBNX,KAAKD,IACH8E,KAAK,iBACLuE,YAAY,UAAWpJ,KAAKqJ,SAC9BrJ,KAAKD,IACH8E,KAAK,wBACLuE,YAAY,SAAUpJ,KAAKqJ,UAE7B1J,IAAIY,MAAML,SAASgE,UAAU8E,mBAAmBxE,MAC/CxE,KACAyE,YAKH6E,wBApP+C,WAqP9C,OAAO9H,GAAGC,gBAAkBD,GAAG+H,mBAGhCC,wBAxP+C,aA6P/CZ,OA7P+C,WAiQ9C,GAFA5I,KAAKyJ,eAAe,KAAK,IAEpBzJ,KAAKmE,cAAc+E,OAIvB,OAFAlJ,KAAKgJ,qBACLhJ,KAAK0J,SAAS,IACP5G,EAAE6G,WAAWC,UAGrB5J,KAAK6J,eAAiB,GACtB7J,KAAK8J,kBAAkBC,QACnB/J,KAAKgK,mBACRhK,KAAKgK,kBAAkBrH,MAExB3C,KAAKgK,kBAAoB,KACzBhK,KAAKD,IAAI8E,KAAK,eAAeoF,KAAK,WAAW,GAC7CjK,KAAKkK,WACLlK,KAAKmK,YAAcnK,KAAKoK,YAAYC,iBACnC,CACC1F,aAAc3E,KAAKmE,eAEpB,CACCmG,WAAYtK,KAAKuK,yBAGfvK,KAAKwK,cAERxK,KAAKyK,mBAAmB,MAEzB,IAAMC,EAAW1K,KAAK2K,eAAetJ,KAAKrB,MAC1C,OAAOA,KAAKmK,YAAYS,KAAKF,EAAUA,IAGxCC,eAhS+C,SAgShCE,EAAQC,GAMtB,OALIA,GAEHA,EAAOC,QAAQ,IAGTpL,IAAIY,MAAML,SAASgE,UAAUyG,eAAeK,KAClDhL,KACA6K,EACAC,MAMJnL,IAAIC,WAAWM,SAAWA,qBChU3B,SAAUP,GAKT,SAASsL,EAAiBC,GACzB,IAAMC,EAAOD,EAAM9D,SAInB,OAHK5F,GAAG4J,eAAkBD,EAAKE,YAC9BF,EAAKG,QAAS,GAERH,EAUR,IAAM3H,EAAqB7D,EAAIY,MAAMgL,mBAAmBtI,OACG,CAEzDuI,WAAW,EAEXC,UAAW,qBACXhJ,KAAM,aAGNtC,GAAI,qBAKJuL,WAAY,KAEZzH,WAfyD,SAe9CN,GACV,IAAMwB,EAAOnF,KACb2D,EAAUA,GAAW,GAErB3D,KAAK0L,WAAa,IAAIlK,GAAG5B,WAAW+L,qBAAqB,CACxD5F,UAAU,EACV6F,cAAc,EACdC,aAAa,EACbC,QAAStK,GAAG4J,cACZ/E,cALwD,SAK1CC,EAASC,GACtBA,EAASpB,EAAK4G,uBAAuBC,IAAIf,OAI3CjL,KAAK+L,uBAAyB,IAAIvK,GAAG5B,WAAWqM,4BAA4B,GAAI,CAAEC,WAAY,UAE9FlM,KAAK0L,WAAW7E,WAAWvF,GAAG,cAAetB,KAAKmM,sBAAuBnM,MACzEA,KAAK0L,WAAW7E,WAAWvF,GAAG,SAAUtB,KAAKoM,sBAAuBpM,MAEpEA,KAAK0L,WAAWpK,GAAG,SAAUtB,KAAKqM,aAAcrM,MAChDA,KAAK0L,WAAWpK,GAAG,WAAYtB,KAAKsM,eAAgBtM,OAQrDqM,aA3CyD,SA2C5CjG,GAEZpG,KAAK+L,uBAAuBQ,OAAOnG,EAAIgB,WASxCkF,eAtDyD,SAsD1CtF,GACdhH,KAAK+L,uBAAuB9E,IAAID,GAAOtE,WAWxCyJ,sBAlEyD,SAkEnCK,GAErB,IAAMC,EAAqBzM,KAAK+L,uBAAuB9E,IAAIuF,EAAWrM,IAClEsM,GACHA,EAAmBC,IAAIF,EAAWpF,WAYpCgF,sBAlFyD,SAkFnCpF,GAErBhH,KAAK+L,uBAAuB7G,OAAO8B,IAGpC2F,YAvFyD,SAuF7CC,GACX,IAAMzH,EAAOnF,KACRA,KAAKwL,WACTxL,KAAK6M,SAGFD,IACH5M,KAAK+L,uBAAuBe,YAAYF,EAASzM,IACjDH,KAAK+L,uBAAuBjF,MAAM,CACjCtB,QADiC,SACzBqB,GACPA,EAAWkG,SAAU,EAErB,IAAMC,EAAcnG,EAAWmF,IAAIf,GACnC9F,EAAKuG,WAAWuB,QAAQD,GACpBA,EAAY9D,OAAS,GACxB/D,EAAK+H,WAMTlN,KAAKmN,QAMNN,OAlHyD,WAmHxD7M,KAAKD,IAAI4F,OAAO3F,KAAK0L,WAAW3L,KAChCC,KAAK0L,WAAWmB,UAGjBO,UAvHyD,WAwHxD,OAAQpN,KAAKD,IAAIsN,SAAS,WAG3BH,KA3HyD,WA4HxDlN,KAAKD,IAAIuN,YAAY,WAGtBH,KA/HyD,WAgIxDnN,KAAKD,IAAIwN,SAAS,WAGnBC,OAnIyD,WAoIxDxN,KAAKD,IAAIqJ,YAAY,WAGtBqE,aAvIyD,WAwIxDzN,KAAKD,IAAI8E,KAAK,yBAAyBe,QAAQ,SAGhDV,OA3IyD,WA4IxDlF,KAAK0L,WAAWxG,YAInBvF,EAAIC,WAAW4D,mBAAqBA,EArKrC,CAuKG7D,4EC9LC+N,QAA0B,GAA4B,KAE1DA,EAAwBvG,KAAK,CAACwG,EAAOxN,GAAI,+OAAgP,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,+DAA+D,MAAQ,GAAG,SAAW,kGAAkG,eAAiB,CAAC,6cAA6c,WAAa,MAEv9B,QCNIyN,EAA2B,GAG/B,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaE,QAGrB,IAAIN,EAASC,EAAyBE,GAAY,CACjD3N,GAAI2N,EACJI,QAAQ,EACRD,QAAS,IAUV,OANAE,EAAoBL,GAAU9C,KAAK2C,EAAOM,QAASN,EAAQA,EAAOM,QAASJ,GAG3EF,EAAOO,QAAS,EAGTP,EAAOM,QAIfJ,EAAoB1F,EAAIgG,EC5BxBN,EAAoBO,KAAO,WAC1B,MAAM,IAAIC,MAAM,mCCDjBR,EAAoBS,KAAO,GVAvB5O,EAAW,GACfmO,EAAoBU,EAAI,SAASzD,EAAQ0D,EAAUC,EAAIC,GACtD,IAAGF,EAAH,CAMA,IAAIG,EAAeC,EAAAA,EACnB,IAASC,EAAI,EAAGA,EAAInP,EAASwJ,OAAQ2F,IAAK,CACrCL,EAAW9O,EAASmP,GAAG,GACvBJ,EAAK/O,EAASmP,GAAG,GACjBH,EAAWhP,EAASmP,GAAG,GAE3B,IAJA,IAGIC,GAAY,EACPC,EAAI,EAAGA,EAAIP,EAAStF,OAAQ6F,MACpB,EAAXL,GAAsBC,GAAgBD,IAAaM,OAAOC,KAAKpB,EAAoBU,GAAGW,OAAM,SAASC,GAAO,OAAOtB,EAAoBU,EAAEY,GAAKX,EAASO,OAC3JP,EAASY,OAAOL,IAAK,IAErBD,GAAY,EACTJ,EAAWC,IAAcA,EAAeD,IAG7C,GAAGI,EAAW,CACbpP,EAAS0P,OAAOP,IAAK,GACrB,IAAIQ,EAAIZ,SACET,IAANqB,IAAiBvE,EAASuE,IAGhC,OAAOvE,EAzBN4D,EAAWA,GAAY,EACvB,IAAI,IAAIG,EAAInP,EAASwJ,OAAQ2F,EAAI,GAAKnP,EAASmP,EAAI,GAAG,GAAKH,EAAUG,IAAKnP,EAASmP,GAAKnP,EAASmP,EAAI,GACrGnP,EAASmP,GAAK,CAACL,EAAUC,EAAIC,IWJ/Bb,EAAoByB,EAAI,SAAS3B,GAChC,IAAI4B,EAAS5B,GAAUA,EAAO6B,WAC7B,WAAa,OAAO7B,EAAgB,SACpC,WAAa,OAAOA,GAErB,OADAE,EAAoB4B,EAAEF,EAAQ,CAAE3H,EAAG2H,IAC5BA,GCLR1B,EAAoB4B,EAAI,SAASxB,EAASyB,GACzC,IAAI,IAAIP,KAAOO,EACX7B,EAAoB8B,EAAED,EAAYP,KAAStB,EAAoB8B,EAAE1B,EAASkB,IAC5EH,OAAOY,eAAe3B,EAASkB,EAAK,CAAEU,YAAY,EAAM5I,IAAKyI,EAAWP,MCJ3EtB,EAAoBiC,EAAI,WACvB,GAA0B,iBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAO/P,MAAQ,IAAIgQ,SAAS,cAAb,GACd,MAAOjN,GACR,GAAsB,iBAAXH,OAAqB,OAAOA,QALjB,GCAxBiL,EAAoB8B,EAAI,SAASM,EAAKhG,GAAQ,OAAO+E,OAAO9K,UAAUgM,eAAelF,KAAKiF,EAAKhG,ICC/F4D,EAAoBwB,EAAI,SAASpB,GACX,oBAAXkC,QAA0BA,OAAOC,aAC1CpB,OAAOY,eAAe3B,EAASkC,OAAOC,YAAa,CAAEC,MAAO,WAE7DrB,OAAOY,eAAe3B,EAAS,aAAc,CAAEoC,OAAO,KCLvDxC,EAAoByC,IAAM,SAAS3C,GAGlC,OAFAA,EAAO4C,MAAQ,GACV5C,EAAO6C,WAAU7C,EAAO6C,SAAW,IACjC7C,GCHRE,EAAoBkB,EAAI,gBCAxBlB,EAAoBhG,EAAI4I,SAASC,SAAWvL,KAAKwL,SAASC,KAK1D,IAAIC,EAAkB,CACrB,KAAM,GAaPhD,EAAoBU,EAAEQ,EAAI,SAAS+B,GAAW,OAAoC,IAA7BD,EAAgBC,IAGrE,IAAIC,EAAuB,SAASC,EAA4B7F,GAC/D,IAKI2C,EAAUgD,EALVtC,EAAWrD,EAAK,GAChB8F,EAAc9F,EAAK,GACnB+F,EAAU/F,EAAK,GAGI0D,EAAI,EAC3B,GAAGL,EAAS2C,MAAK,SAAShR,GAAM,OAA+B,IAAxB0Q,EAAgB1Q,MAAe,CACrE,IAAI2N,KAAYmD,EACZpD,EAAoB8B,EAAEsB,EAAanD,KACrCD,EAAoB1F,EAAE2F,GAAYmD,EAAYnD,IAGhD,GAAGoD,EAAS,IAAIpG,EAASoG,EAAQrD,GAGlC,IADGmD,GAA4BA,EAA2B7F,GACrD0D,EAAIL,EAAStF,OAAQ2F,IACzBiC,EAAUtC,EAASK,GAChBhB,EAAoB8B,EAAEkB,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBC,GAAW,EAE5B,OAAOjD,EAAoBU,EAAEzD,IAG1BsG,EAAqBjM,KAA4B,sBAAIA,KAA4B,uBAAK,GAC1FiM,EAAmBC,QAAQN,EAAqB1P,KAAK,KAAM,IAC3D+P,EAAmBjK,KAAO4J,EAAqB1P,KAAK,KAAM+P,EAAmBjK,KAAK9F,KAAK+P,OClDvFvD,EAAoByD,QAAKtD,ECGzB,IAAIuD,EAAsB1D,EAAoBU,OAAEP,EAAW,CAAC,OAAO,WAAa,OAAOH,EAAoB,UAC3G0D,EAAsB1D,EAAoBU,EAAEgD","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/systemtags/src/app.js","webpack:///nextcloud/apps/systemtags/src/filesplugin.js","webpack://nextcloud/./apps/systemtags/src/css/systemtagsfilelist.scss?3cf4","webpack:///nextcloud/apps/systemtags/src/systemtags.js","webpack:///nextcloud/apps/systemtags/src/systemtagsfilelist.js","webpack:///nextcloud/apps/systemtags/src/systemtagsinfoview.js","webpack:///nextcloud/apps/systemtags/src/css/systemtagsfilelist.scss","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/runtime/nonce","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 (c) 2015 Vincent Petry <pvince81@owncloud.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n(function() {\n\tif (!OCA.SystemTags) {\n\t\t/**\n\t\t * @namespace\n\t\t */\n\t\tOCA.SystemTags = {}\n\t}\n\n\tOCA.SystemTags.App = {\n\n\t\tinitFileList($el) {\n\t\t\tif (this._fileList) {\n\t\t\t\treturn this._fileList\n\t\t\t}\n\n\t\t\tthis._fileList = new OCA.SystemTags.FileList(\n\t\t\t\t$el,\n\t\t\t\t{\n\t\t\t\t\tid: 'systemtags',\n\t\t\t\t\tfileActions: this._createFileActions(),\n\t\t\t\t\tconfig: OCA.Files.App.getFilesConfig(),\n\t\t\t\t\t// The file list is created when a \"show\" event is handled,\n\t\t\t\t\t// so it should be marked as \"shown\" like it would have been\n\t\t\t\t\t// done if handling the event with the file list already\n\t\t\t\t\t// created.\n\t\t\t\t\tshown: true,\n\t\t\t\t}\n\t\t\t)\n\n\t\t\tthis._fileList.appName = t('systemtags', 'Tags')\n\t\t\treturn this._fileList\n\t\t},\n\n\t\tremoveFileList() {\n\t\t\tif (this._fileList) {\n\t\t\t\tthis._fileList.$fileList.empty()\n\t\t\t}\n\t\t},\n\n\t\t_createFileActions() {\n\t\t\t// inherit file actions from the files app\n\t\t\tconst fileActions = new OCA.Files.FileActions()\n\t\t\t// note: not merging the legacy actions because legacy apps are not\n\t\t\t// compatible with the sharing overview and need to be adapted first\n\t\t\tfileActions.registerDefaultActions()\n\t\t\tfileActions.merge(OCA.Files.fileActions)\n\n\t\t\tif (!this._globalActionsInitialized) {\n\t\t\t\t// in case actions are registered later\n\t\t\t\tthis._onActionsUpdated = _.bind(this._onActionsUpdated, this)\n\t\t\t\tOCA.Files.fileActions.on('setDefault.app-systemtags', this._onActionsUpdated)\n\t\t\t\tOCA.Files.fileActions.on('registerAction.app-systemtags', this._onActionsUpdated)\n\t\t\t\tthis._globalActionsInitialized = true\n\t\t\t}\n\n\t\t\t// when the user clicks on a folder, redirect to the corresponding\n\t\t\t// folder in the files app instead of opening it directly\n\t\t\tfileActions.register('dir', 'Open', OC.PERMISSION_READ, '', function(filename, context) {\n\t\t\t\tOCA.Files.App.setActiveView('files', { silent: true })\n\t\t\t\tOCA.Files.App.fileList.changeDirectory(OC.joinPaths(context.$file.attr('data-path'), filename), true, true)\n\t\t\t})\n\t\t\tfileActions.setDefault('dir', 'Open')\n\t\t\treturn fileActions\n\t\t},\n\n\t\t_onActionsUpdated(ev) {\n\t\t\tif (!this._fileList) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (ev.action) {\n\t\t\t\tthis._fileList.fileActions.registerAction(ev.action)\n\t\t\t} else if (ev.defaultAction) {\n\t\t\t\tthis._fileList.fileActions.setDefault(\n\t\t\t\t\tev.defaultAction.mime,\n\t\t\t\t\tev.defaultAction.name\n\t\t\t\t)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Destroy the app\n\t\t */\n\t\tdestroy() {\n\t\t\tOCA.Files.fileActions.off('setDefault.app-systemtags', this._onActionsUpdated)\n\t\t\tOCA.Files.fileActions.off('registerAction.app-systemtags', this._onActionsUpdated)\n\t\t\tthis.removeFileList()\n\t\t\tthis._fileList = null\n\t\t\tdelete this._globalActionsInitialized\n\t\t},\n\t}\n\n})()\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\t$('#app-content-systemtagsfilter').on('show', function(e) {\n\t\tOCA.SystemTags.App.initFileList($(e.target))\n\t})\n\t$('#app-content-systemtagsfilter').on('hide', function() {\n\t\tOCA.SystemTags.App.removeFileList()\n\t})\n})\n","/**\n * Copyright (c) 2015 Vincent Petry <pvince81@owncloud.com>\n *\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n(function() {\n\tOCA.SystemTags = _.extend({}, OCA.SystemTags)\n\tif (!OCA.SystemTags) {\n\t\t/**\n\t\t * @namespace\n\t\t */\n\t\tOCA.SystemTags = {}\n\t}\n\n\t/**\n\t * @namespace\n\t */\n\tOCA.SystemTags.FilesPlugin = {\n\t\tignoreLists: [\n\t\t\t'trashbin',\n\t\t\t'files.public',\n\t\t],\n\n\t\tattach(fileList) {\n\t\t\tif (this.ignoreLists.indexOf(fileList.id) >= 0) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// only create and attach once\n\t\t\t// FIXME: this should likely be done on a different code path now\n\t\t\t// for the sidebar to only have it registered once\n\t\t\tif (!OCA.SystemTags.View) {\n\t\t\t\tconst systemTagsInfoView = new OCA.SystemTags.SystemTagsInfoView()\n\t\t\t\tfileList.registerDetailView(systemTagsInfoView)\n\t\t\t\tOCA.SystemTags.View = systemTagsInfoView\n\t\t\t}\n\t\t},\n\t}\n\n})()\n\nOC.Plugins.register('OCA.Files.FileList', OCA.SystemTags.FilesPlugin)\n","\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/sass-loader/dist/cjs.js!./systemtagsfilelist.scss\";\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/sass-loader/dist/cjs.js!./systemtagsfilelist.scss\";\n export default content && content.locals ? content.locals : undefined;\n","/**\n * @copyright Copyright (c) 2016 Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport './app'\nimport './systemtagsfilelist'\nimport './filesplugin'\nimport './systemtagsinfoview'\nimport './css/systemtagsfilelist.scss'\n\nwindow.OCA.SystemTags = OCA.SystemTags\n","/**\n * Copyright (c) 2016 Vincent Petry <pvince81@owncloud.com>\n *\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n(function() {\n\t/**\n\t * @class OCA.SystemTags.FileList\n\t * @augments OCA.Files.FileList\n\t *\n\t * @classdesc SystemTags file list.\n\t * Contains a list of files filtered by system tags.\n\t *\n\t * @param {object} $el container element with existing markup for the #controls and a table\n\t * @param {Array} [options] map of options, see other parameters\n\t * @param {Array.<string>} [options.systemTagIds] array of system tag ids to\n\t * filter by\n\t */\n\tconst FileList = function($el, options) {\n\t\tthis.initialize($el, options)\n\t}\n\tFileList.prototype = _.extend(\n\t\t{},\n\t\tOCA.Files.FileList.prototype,\n\t\t/** @lends OCA.SystemTags.FileList.prototype */ {\n\t\t\tid: 'systemtagsfilter',\n\t\t\tappName: t('systemtags', 'Tagged files'),\n\n\t\t\t/**\n\t\t\t * Array of system tag ids to filter by\n\t\t\t *\n\t\t\t * @type {Array.<string>}\n\t\t\t */\n\t\t\t_systemTagIds: [],\n\t\t\t_lastUsedTags: [],\n\n\t\t\t_clientSideSort: true,\n\t\t\t_allowSelection: false,\n\n\t\t\t_filterField: null,\n\n\t\t\t/**\n\t\t\t * @private\n\t\t\t * @param {object} $el container element\n\t\t\t * @param {object} [options] map of options, see other parameters\n\t\t\t */\n\t\t\tinitialize($el, options) {\n\t\t\t\tOCA.Files.FileList.prototype.initialize.apply(this, arguments)\n\t\t\t\tif (this.initialized) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tif (options && options.systemTagIds) {\n\t\t\t\t\tthis._systemTagIds = options.systemTagIds\n\t\t\t\t}\n\n\t\t\t\tOC.Plugins.attach('OCA.SystemTags.FileList', this)\n\n\t\t\t\tconst $controls = this.$el.find('#controls').empty()\n\n\t\t\t\t_.defer(_.bind(this._getLastUsedTags, this))\n\t\t\t\tthis._initFilterField($controls)\n\t\t\t},\n\n\t\t\tdestroy() {\n\t\t\t\tthis.$filterField.remove()\n\n\t\t\t\tOCA.Files.FileList.prototype.destroy.apply(this, arguments)\n\t\t\t},\n\n\t\t\t_getLastUsedTags() {\n\t\t\t\tconst self = this\n\t\t\t\t$.ajax({\n\t\t\t\t\ttype: 'GET',\n\t\t\t\t\turl: OC.generateUrl('/apps/systemtags/lastused'),\n\t\t\t\t\tsuccess(response) {\n\t\t\t\t\t\tself._lastUsedTags = response\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t},\n\n\t\t\t_initFilterField($container) {\n\t\t\t\tconst self = this\n\t\t\t\tthis.$filterField = $('<input type=\"hidden\" name=\"tags\"/>')\n\t\t\t\t$container.append(this.$filterField)\n\t\t\t\tthis.$filterField.select2({\n\t\t\t\t\tplaceholder: t('systemtags', 'Select tags to filter by'),\n\t\t\t\t\tallowClear: false,\n\t\t\t\t\tmultiple: true,\n\t\t\t\t\ttoggleSelect: true,\n\t\t\t\t\tseparator: ',',\n\t\t\t\t\tquery: _.bind(this._queryTagsAutocomplete, this),\n\n\t\t\t\t\tid(tag) {\n\t\t\t\t\t\treturn tag.id\n\t\t\t\t\t},\n\n\t\t\t\t\tinitSelection(element, callback) {\n\t\t\t\t\t\tconst val = $(element)\n\t\t\t\t\t\t\t.val()\n\t\t\t\t\t\t\t.trim()\n\t\t\t\t\t\tif (val) {\n\t\t\t\t\t\t\tconst tagIds = val.split(',')\n\t\t\t\t\t\t\tconst tags = []\n\n\t\t\t\t\t\t\tOC.SystemTags.collection.fetch({\n\t\t\t\t\t\t\t\tsuccess() {\n\t\t\t\t\t\t\t\t\t_.each(tagIds, function(tagId) {\n\t\t\t\t\t\t\t\t\t\tconst tag = OC.SystemTags.collection.get(\n\t\t\t\t\t\t\t\t\t\t\ttagId\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\tif (!_.isUndefined(tag)) {\n\t\t\t\t\t\t\t\t\t\t\ttags.push(tag.toJSON())\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t})\n\n\t\t\t\t\t\t\t\t\tcallback(tags)\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// eslint-disable-next-line n/no-callback-literal\n\t\t\t\t\t\t\tcallback([])\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\n\t\t\t\t\tformatResult(tag) {\n\t\t\t\t\t\treturn OC.SystemTags.getDescriptiveTag(tag)\n\t\t\t\t\t},\n\n\t\t\t\t\tformatSelection(tag) {\n\t\t\t\t\t\treturn OC.SystemTags.getDescriptiveTag(tag)[0]\n\t\t\t\t\t\t\t.outerHTML\n\t\t\t\t\t},\n\n\t\t\t\t\tsortResults(results) {\n\t\t\t\t\t\tresults.sort(function(a, b) {\n\t\t\t\t\t\t\tconst aLastUsed = self._lastUsedTags.indexOf(a.id)\n\t\t\t\t\t\t\tconst bLastUsed = self._lastUsedTags.indexOf(b.id)\n\n\t\t\t\t\t\t\tif (aLastUsed !== bLastUsed) {\n\t\t\t\t\t\t\t\tif (bLastUsed === -1) {\n\t\t\t\t\t\t\t\t\treturn -1\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (aLastUsed === -1) {\n\t\t\t\t\t\t\t\t\treturn 1\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn aLastUsed < bLastUsed ? -1 : 1\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Both not found\n\t\t\t\t\t\t\treturn OC.Util.naturalSortCompare(a.name, b.name)\n\t\t\t\t\t\t})\n\t\t\t\t\t\treturn results\n\t\t\t\t\t},\n\n\t\t\t\t\tescapeMarkup(m) {\n\t\t\t\t\t\t// prevent double markup escape\n\t\t\t\t\t\treturn m\n\t\t\t\t\t},\n\t\t\t\t\tformatNoMatches() {\n\t\t\t\t\t\treturn t('systemtags', 'No tags found')\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tthis.$filterField.on(\n\t\t\t\t\t'change',\n\t\t\t\t\t_.bind(this._onTagsChanged, this)\n\t\t\t\t)\n\t\t\t\treturn this.$filterField\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Autocomplete function for dropdown results\n\t\t\t *\n\t\t\t * @param {object} query select2 query object\n\t\t\t */\n\t\t\t_queryTagsAutocomplete(query) {\n\t\t\t\tOC.SystemTags.collection.fetch({\n\t\t\t\t\tsuccess() {\n\t\t\t\t\t\tconst results = OC.SystemTags.collection.filterByName(\n\t\t\t\t\t\t\tquery.term\n\t\t\t\t\t\t)\n\n\t\t\t\t\t\tquery.callback({\n\t\t\t\t\t\t\tresults: _.invoke(results, 'toJSON'),\n\t\t\t\t\t\t})\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Event handler for when the URL changed\n\t\t\t *\n\t\t\t * @param {Event} e the urlchanged event\n\t\t\t */\n\t\t\t_onUrlChanged(e) {\n\t\t\t\tif (e.dir) {\n\t\t\t\t\tconst tags = _.filter(e.dir.split('/'), function(val) {\n\t\t\t\t\t\treturn val.trim() !== ''\n\t\t\t\t\t})\n\t\t\t\t\tthis.$filterField.select2('val', tags || [])\n\t\t\t\t\tthis._systemTagIds = tags\n\t\t\t\t\tthis.reload()\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t_onTagsChanged(ev) {\n\t\t\t\tconst val = $(ev.target)\n\t\t\t\t\t.val()\n\t\t\t\t\t.trim()\n\t\t\t\tif (val !== '') {\n\t\t\t\t\tthis._systemTagIds = val.split(',')\n\t\t\t\t} else {\n\t\t\t\t\tthis._systemTagIds = []\n\t\t\t\t}\n\n\t\t\t\tthis.$el.trigger(\n\t\t\t\t\t$.Event('changeDirectory', {\n\t\t\t\t\t\tdir: this._systemTagIds.join('/'),\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t\tthis.reload()\n\t\t\t},\n\n\t\t\tupdateEmptyContent() {\n\t\t\t\tconst dir = this.getCurrentDirectory()\n\t\t\t\tif (dir === '/') {\n\t\t\t\t\t// root has special permissions\n\t\t\t\t\tif (!this._systemTagIds.length) {\n\t\t\t\t\t\t// no tags selected\n\t\t\t\t\t\tthis.$el\n\t\t\t\t\t\t\t.find('#emptycontent')\n\t\t\t\t\t\t\t.html(\n\t\t\t\t\t\t\t\t'<div class=\"icon-systemtags\"></div>'\n\t\t\t\t\t\t\t\t\t+ '<h2>'\n\t\t\t\t\t\t\t\t\t+ t(\n\t\t\t\t\t\t\t\t\t\t'systemtags',\n\t\t\t\t\t\t\t\t\t\t'Please select tags to filter by'\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t+ '</h2>'\n\t\t\t\t\t\t\t)\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// tags selected but no results\n\t\t\t\t\t\tthis.$el\n\t\t\t\t\t\t\t.find('#emptycontent')\n\t\t\t\t\t\t\t.html(\n\t\t\t\t\t\t\t\t'<div class=\"icon-systemtags\"></div>'\n\t\t\t\t\t\t\t\t\t+ '<h2>'\n\t\t\t\t\t\t\t\t\t+ t(\n\t\t\t\t\t\t\t\t\t\t'systemtags',\n\t\t\t\t\t\t\t\t\t\t'No files found for the selected tags'\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t+ '</h2>'\n\t\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\tthis.$el\n\t\t\t\t\t\t.find('#emptycontent')\n\t\t\t\t\t\t.toggleClass('hidden', !this.isEmpty)\n\t\t\t\t\tthis.$el\n\t\t\t\t\t\t.find('#filestable thead th')\n\t\t\t\t\t\t.toggleClass('hidden', this.isEmpty)\n\t\t\t\t} else {\n\t\t\t\t\tOCA.Files.FileList.prototype.updateEmptyContent.apply(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\targuments\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tgetDirectoryPermissions() {\n\t\t\t\treturn OC.PERMISSION_READ | OC.PERMISSION_DELETE\n\t\t\t},\n\n\t\t\tupdateStorageStatistics() {\n\t\t\t\t// no op because it doesn't have\n\t\t\t\t// storage info like free space / used space\n\t\t\t},\n\n\t\t\treload() {\n\t\t\t\t// there is only root\n\t\t\t\tthis._setCurrentDir('/', false)\n\n\t\t\t\tif (!this._systemTagIds.length) {\n\t\t\t\t\t// don't reload\n\t\t\t\t\tthis.updateEmptyContent()\n\t\t\t\t\tthis.setFiles([])\n\t\t\t\t\treturn $.Deferred().resolve()\n\t\t\t\t}\n\n\t\t\t\tthis._selectedFiles = {}\n\t\t\t\tthis._selectionSummary.clear()\n\t\t\t\tif (this._currentFileModel) {\n\t\t\t\t\tthis._currentFileModel.off()\n\t\t\t\t}\n\t\t\t\tthis._currentFileModel = null\n\t\t\t\tthis.$el.find('.select-all').prop('checked', false)\n\t\t\t\tthis.showMask()\n\t\t\t\tthis._reloadCall = this.filesClient.getFilteredFiles(\n\t\t\t\t\t{\n\t\t\t\t\t\tsystemTagIds: this._systemTagIds,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tproperties: this._getWebdavProperties(),\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\tif (this._detailsView) {\n\t\t\t\t\t// close sidebar\n\t\t\t\t\tthis._updateDetailsView(null)\n\t\t\t\t}\n\t\t\t\tconst callBack = this.reloadCallback.bind(this)\n\t\t\t\treturn this._reloadCall.then(callBack, callBack)\n\t\t\t},\n\n\t\t\treloadCallback(status, result) {\n\t\t\t\tif (result) {\n\t\t\t\t\t// prepend empty dir info because original handler\n\t\t\t\t\tresult.unshift({})\n\t\t\t\t}\n\n\t\t\t\treturn OCA.Files.FileList.prototype.reloadCallback.call(\n\t\t\t\t\tthis,\n\t\t\t\t\tstatus,\n\t\t\t\t\tresult\n\t\t\t\t)\n\t\t\t},\n\t\t}\n\t)\n\n\tOCA.SystemTags.FileList = FileList\n})()\n","/**\n * Copyright (c) 2015\n *\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Vincent Petry <vincent@nextcloud.com>\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 */\n\n(function(OCA) {\n\n\t/**\n\t * @param {any} model -\n\t */\n\tfunction modelToSelection(model) {\n\t\tconst data = model.toJSON()\n\t\tif (!OC.isUserAdmin() && !data.canAssign) {\n\t\t\tdata.locked = true\n\t\t}\n\t\treturn data\n\t}\n\n\t/**\n\t * @class OCA.SystemTags.SystemTagsInfoView\n\t * @classdesc\n\t *\n\t * Displays a file's system tags\n\t *\n\t */\n\tconst SystemTagsInfoView = OCA.Files.DetailFileInfoView.extend(\n\t\t/** @lends OCA.SystemTags.SystemTagsInfoView.prototype */ {\n\n\t\t\t_rendered: false,\n\n\t\t\tclassName: 'systemTagsInfoView',\n\t\t\tname: 'systemTags',\n\n\t\t\t/* required by the new files sidebar to check if the view is unique */\n\t\t\tid: 'systemTagsInfoView',\n\n\t\t\t/**\n\t\t\t * @type {OC.SystemTags.SystemTagsInputField}\n\t\t\t */\n\t\t\t_inputView: null,\n\n\t\t\tinitialize(options) {\n\t\t\t\tconst self = this\n\t\t\t\toptions = options || {}\n\n\t\t\t\tthis._inputView = new OC.SystemTags.SystemTagsInputField({\n\t\t\t\t\tmultiple: true,\n\t\t\t\t\tallowActions: true,\n\t\t\t\t\tallowCreate: true,\n\t\t\t\t\tisAdmin: OC.isUserAdmin(),\n\t\t\t\t\tinitSelection(element, callback) {\n\t\t\t\t\t\tcallback(self.selectedTagsCollection.map(modelToSelection))\n\t\t\t\t\t},\n\t\t\t\t})\n\n\t\t\t\tthis.selectedTagsCollection = new OC.SystemTags.SystemTagsMappingCollection([], { objectType: 'files' })\n\n\t\t\t\tthis._inputView.collection.on('change:name', this._onTagRenamedGlobally, this)\n\t\t\t\tthis._inputView.collection.on('remove', this._onTagDeletedGlobally, this)\n\n\t\t\t\tthis._inputView.on('select', this._onSelectTag, this)\n\t\t\t\tthis._inputView.on('deselect', this._onDeselectTag, this)\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Event handler whenever a tag was selected\n\t\t\t *\n\t\t\t * @param {object} tag the tag to create\n\t\t\t */\n\t\t\t_onSelectTag(tag) {\n\t\t\t// create a mapping entry for this tag\n\t\t\t\tthis.selectedTagsCollection.create(tag.toJSON())\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Event handler whenever a tag gets deselected.\n\t\t\t * Removes the selected tag from the mapping collection.\n\t\t\t *\n\t\t\t * @param {string} tagId tag id\n\t\t\t */\n\t\t\t_onDeselectTag(tagId) {\n\t\t\t\tthis.selectedTagsCollection.get(tagId).destroy()\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Event handler whenever a tag was renamed globally.\n\t\t\t *\n\t\t\t * This will automatically adjust the tag mapping collection to\n\t\t\t * container the new name.\n\t\t\t *\n\t\t\t * @param {OC.Backbone.Model} changedTag tag model that has changed\n\t\t\t */\n\t\t\t_onTagRenamedGlobally(changedTag) {\n\t\t\t// also rename it in the selection, if applicable\n\t\t\t\tconst selectedTagMapping = this.selectedTagsCollection.get(changedTag.id)\n\t\t\t\tif (selectedTagMapping) {\n\t\t\t\t\tselectedTagMapping.set(changedTag.toJSON())\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Event handler whenever a tag was deleted globally.\n\t\t\t *\n\t\t\t * This will automatically adjust the tag mapping collection to\n\t\t\t * container the new name.\n\t\t\t *\n\t\t\t * @param {OC.Backbone.Model} tagId tag model that has changed\n\t\t\t */\n\t\t\t_onTagDeletedGlobally(tagId) {\n\t\t\t// also rename it in the selection, if applicable\n\t\t\t\tthis.selectedTagsCollection.remove(tagId)\n\t\t\t},\n\n\t\t\tsetFileInfo(fileInfo) {\n\t\t\t\tconst self = this\n\t\t\t\tif (!this._rendered) {\n\t\t\t\t\tthis.render()\n\t\t\t\t}\n\n\t\t\t\tif (fileInfo) {\n\t\t\t\t\tthis.selectedTagsCollection.setObjectId(fileInfo.id)\n\t\t\t\t\tthis.selectedTagsCollection.fetch({\n\t\t\t\t\t\tsuccess(collection) {\n\t\t\t\t\t\t\tcollection.fetched = true\n\n\t\t\t\t\t\t\tconst appliedTags = collection.map(modelToSelection)\n\t\t\t\t\t\t\tself._inputView.setData(appliedTags)\n\t\t\t\t\t\t\tif (appliedTags.length > 0) {\n\t\t\t\t\t\t\t\tself.show()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tthis.hide()\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Renders this details view\n\t\t\t */\n\t\t\trender() {\n\t\t\t\tthis.$el.append(this._inputView.$el)\n\t\t\t\tthis._inputView.render()\n\t\t\t},\n\n\t\t\tisVisible() {\n\t\t\t\treturn !this.$el.hasClass('hidden')\n\t\t\t},\n\n\t\t\tshow() {\n\t\t\t\tthis.$el.removeClass('hidden')\n\t\t\t},\n\n\t\t\thide() {\n\t\t\t\tthis.$el.addClass('hidden')\n\t\t\t},\n\n\t\t\ttoggle() {\n\t\t\t\tthis.$el.toggleClass('hidden')\n\t\t\t},\n\n\t\t\topenDropdown() {\n\t\t\t\tthis.$el.find('.systemTagsInputField').select2('open')\n\t\t\t},\n\n\t\t\tremove() {\n\t\t\t\tthis._inputView.remove()\n\t\t\t},\n\t\t})\n\n\tOCA.SystemTags.SystemTagsInfoView = SystemTagsInfoView\n\n})(OCA)\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, \"#app-content-systemtagsfilter .select2-container{width:30%;margin-left:10px}#app-sidebar .app-sidebar-header__action .tag-label{cursor:pointer;padding:13px 0;display:flex;color:var(--color-text-light);position:relative;margin-top:-20px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/systemtags/src/css/systemtagsfilelist.scss\"],\"names\":[],\"mappings\":\"AASA,iDACC,SAAA,CACA,gBAAA,CAGD,oDACC,cAAA,CACA,cAAA,CACA,YAAA,CACA,6BAAA,CACA,iBAAA,CACA,gBAAA\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2016\\n *\\n * This file is licensed under the Affero General Public License version 3\\n * or later.\\n *\\n * See the COPYING-README file.\\n *\\n */\\n#app-content-systemtagsfilter .select2-container {\\n\\twidth: 30%;\\n\\tmargin-left: 10px;\\n}\\n\\n#app-sidebar .app-sidebar-header__action .tag-label {\\n\\tcursor: pointer;\\n\\tpadding: 13px 0;\\n\\tdisplay: flex;\\n\\tcolor: var(--color-text-light);\\n\\tposition: relative;\\n\\tmargin-top: -20px;\\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 = 9698;","__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\t9698: 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));","__webpack_require__.nc = undefined;","// 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__(19294); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","OCA","SystemTags","App","initFileList","$el","this","_fileList","FileList","id","fileActions","_createFileActions","config","Files","getFilesConfig","shown","appName","t","removeFileList","$fileList","empty","FileActions","registerDefaultActions","merge","_globalActionsInitialized","_onActionsUpdated","_","bind","on","register","OC","PERMISSION_READ","filename","context","setActiveView","silent","fileList","changeDirectory","joinPaths","$file","attr","setDefault","ev","action","registerAction","defaultAction","mime","name","destroy","off","window","addEventListener","$","e","target","extend","FilesPlugin","ignoreLists","attach","indexOf","View","systemTagsInfoView","SystemTagsInfoView","registerDetailView","Plugins","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","initialize","prototype","_systemTagIds","_lastUsedTags","_clientSideSort","_allowSelection","_filterField","apply","arguments","initialized","systemTagIds","$controls","find","defer","_getLastUsedTags","_initFilterField","$filterField","remove","self","ajax","type","url","generateUrl","success","response","$container","append","select2","placeholder","allowClear","multiple","toggleSelect","separator","query","_queryTagsAutocomplete","tag","initSelection","element","callback","val","trim","tagIds","split","tags","collection","fetch","each","tagId","get","isUndefined","push","toJSON","formatResult","getDescriptiveTag","formatSelection","outerHTML","sortResults","results","sort","a","b","aLastUsed","bLastUsed","Util","naturalSortCompare","escapeMarkup","m","formatNoMatches","_onTagsChanged","filterByName","term","invoke","_onUrlChanged","dir","filter","reload","trigger","Event","join","updateEmptyContent","getCurrentDirectory","length","html","toggleClass","isEmpty","getDirectoryPermissions","PERMISSION_DELETE","updateStorageStatistics","_setCurrentDir","setFiles","Deferred","resolve","_selectedFiles","_selectionSummary","clear","_currentFileModel","prop","showMask","_reloadCall","filesClient","getFilteredFiles","properties","_getWebdavProperties","_detailsView","_updateDetailsView","callBack","reloadCallback","then","status","result","unshift","call","modelToSelection","model","data","isUserAdmin","canAssign","locked","DetailFileInfoView","_rendered","className","_inputView","SystemTagsInputField","allowActions","allowCreate","isAdmin","selectedTagsCollection","map","SystemTagsMappingCollection","objectType","_onTagRenamedGlobally","_onTagDeletedGlobally","_onSelectTag","_onDeselectTag","create","changedTag","selectedTagMapping","set","setFileInfo","fileInfo","render","setObjectId","fetched","appliedTags","setData","show","hide","isVisible","hasClass","removeClass","addClass","toggle","openDropdown","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","amdD","Error","amdO","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","definition","o","defineProperty","enumerable","g","globalThis","Function","obj","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","children","document","baseURI","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/twofactor_backupcodes-settings.js b/dist/twofactor_backupcodes-settings.js
index 0e2a0480c51..3b206d1f241 100644
--- a/dist/twofactor_backupcodes-settings.js
+++ b/dist/twofactor_backupcodes-settings.js
@@ -1,3 +1,3 @@
/*! For license information please see twofactor_backupcodes-settings.js.LICENSE.txt */
-!function(){"use strict";var e,n={13895:function(e,n,o){var a=o(16453),r=o(20144),s=o(10128),c=o.n(s),d={name:"PersonalSettings",data:function(){return{generatingCodes:!1}},computed:{downloadUrl:function(){return this.codes?"data:text/plain,"+encodeURIComponent(this.codes.reduce((function(t,e){return t+e+"\r\n"}),"")):""},downloadFilename:function(){return(OC.theme.name||"Nextcloud")+"-backup-codes.txt"},enabled:function(){return this.$store.state.enabled},total:function(){return this.$store.state.total},used:function(){return this.$store.state.used},codes:function(){return this.$store.state.codes},name:function(){return OC.theme.name||"Nextcloud"},haveCodes:function(){return this.codes&&this.codes.length>0}},methods:{generateBackupCodes:function(){var e=this;c()().then((function(){e.generatingCodes=!0,e.$store.dispatch("generate").then((function(t){e.generatingCodes=!1})).catch((function(n){throw OC.Notification.showTemporary(t("twofactor_backupcodes","An error occurred while generating your backup codes")),e.generatingCodes=!1,n}))})).catch(console.error.bind(this))},getPrintData:function(t){return t?t.reduce((function(t,e){return t+e+"<br>"}),""):""},printCodes:function(){var e,n,o;e=this.getPrintData(this.codes),n=OC.theme.name||"Nextcloud",(o=window.open("",t("twofactor_backupcodes","{name} backup codes",{name:n}))).document.write("<h1>"+t("twofactor_backupcodes","{name} backup codes",{name:n})+"</h1>"),o.document.write("<pre>"+e+"</pre>"),o.print(),o.close()}}},u=o(93379),i=o.n(u),l=o(7795),p=o.n(l),f=o(90569),b=o.n(f),h=o(3565),m=o.n(h),g=o(19216),v=o.n(g),k=o(44589),w=o.n(k),C=o(94319),_={};_.styleTagTransform=w(),_.setAttributes=m(),_.insert=b().bind(null,"head"),_.domAPI=p(),_.insertStyleElement=v(),i()(C.Z,_),C.Z&&C.Z.locals&&C.Z.locals;var y=(0,o(51900).Z)(d,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[t.enabled?[n("p",[t.haveCodes?[t._v("\n\t\t\t\t"+t._s(t.t("twofactor_backupcodes","These are your backup codes. Please save and/or print them as you will not be able to read the codes again later"))+"\n\t\t\t\t"),n("ul",t._l(t.codes,(function(e){return n("li",{key:e,staticClass:"backup-code"},[t._v("\n\t\t\t\t\t\t"+t._s(e)+"\n\t\t\t\t\t")])})),0),t._v(" "),n("a",{staticClass:"button primary",attrs:{href:t.downloadUrl,download:t.downloadFilename}},[t._v(t._s(t.t("twofactor_backupcodes","Save backup codes")))]),t._v(" "),n("button",{staticClass:"button",on:{click:t.printCodes}},[t._v("\n\t\t\t\t\t"+t._s(t.t("twofactor_backupcodes","Print backup codes"))+"\n\t\t\t\t")])]:[t._v("\n\t\t\t\t"+t._s(t.t("twofactor_backupcodes","Backup codes have been generated. {used} of {total} codes have been used.",{used:t.used,total:t.total}))+"\n\t\t\t")]],2),t._v(" "),n("p",[n("button",{attrs:{id:"generate-backup-codes"},on:{click:t.generateBackupCodes}},[t._v("\n\t\t\t\t"+t._s(t.t("twofactor_backupcodes","Regenerate backup codes"))+"\n\t\t\t")])]),t._v(" "),n("p",[n("em",[t._v("\n\t\t\t\t"+t._s(t.t("twofactor_backupcodes","If you regenerate backup codes, you automatically invalidate old codes."))+"\n\t\t\t")])])]:n("button",{attrs:{id:"generate-backup-codes",disabled:t.generatingCodes},on:{click:t.generateBackupCodes}},[t._v("\n\t\t"+t._s(t.t("twofactor_backupcodes","Generate backup codes"))+"\n\t\t"),n("span",{class:{"icon-loading-small":t.generatingCodes}})])],2)}),[],!1,null,"00d0b868",null).exports,A=o(20629),O=o(4820),x=o(79753);r.default.use(A.ZP);var P={setEnabled:function(t,e){r.default.set(t,"enabled",e)},setTotal:function(t,e){r.default.set(t,"total",e)},setUsed:function(t,e){r.default.set(t,"used",e)},setCodes:function(t,e){r.default.set(t,"codes",e)}},S={generate:function(t){var e,n=t.commit;return n("setEnabled",!1),(e=(0,x.generateUrl)("/apps/twofactor_backupcodes/settings/create"),O.default.post(e,{}).then((function(t){return t.data}))).then((function(t){var e=t.codes,o=t.state;return n("setEnabled",o.enabled),n("setTotal",o.total),n("setUsed",o.used),n("setCodes",e),!0}))}},B=new A.yh({strict:!1,state:{enabled:!1,total:0,used:0,codes:[]},mutations:P,actions:S});r.default.prototype.t=t;var T=(0,a.loadState)("twofactor_backupcodes","state");B.replaceState(T),new(r.default.extend(y))({store:B}).$mount("#twofactor-backupcodes-settings")},94319:function(t,e,n){var o=n(87537),a=n.n(o),r=n(23645),s=n.n(r)()(a());s.push([t.id,"\n.backup-code[data-v-00d0b868] {\n\tfont-family: monospace;\n\tletter-spacing: 0.02em;\n\tfont-size: 1.2em;\n}\n.button[data-v-00d0b868] {\n\tdisplay: inline-block;\n}\n","",{version:3,sources:["webpack://./apps/twofactor_backupcodes/src/views/PersonalSettings.vue"],names:[],mappings:";AAyHA;CACA,sBAAA;CACA,sBAAA;CACA,gBAAA;AACA;AACA;CACA,qBAAA;AACA",sourcesContent:["<template>\n\t<div>\n\t\t<button v-if=\"!enabled\"\n\t\t\tid=\"generate-backup-codes\"\n\t\t\t:disabled=\"generatingCodes\"\n\t\t\t@click=\"generateBackupCodes\">\n\t\t\t{{ t('twofactor_backupcodes', 'Generate backup codes') }}\n\t\t\t<span :class=\"{'icon-loading-small': generatingCodes}\" />\n\t\t</button>\n\t\t<template v-else>\n\t\t\t<p>\n\t\t\t\t<template v-if=\"!haveCodes\">\n\t\t\t\t\t{{ t('twofactor_backupcodes', 'Backup codes have been generated. {used} of {total} codes have been used.', {used, total}) }}\n\t\t\t\t</template>\n\t\t\t\t<template v-else>\n\t\t\t\t\t{{ t('twofactor_backupcodes', 'These are your backup codes. Please save and/or print them as you will not be able to read the codes again later') }}\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li v-for=\"code in codes\" :key=\"code\" class=\"backup-code\">\n\t\t\t\t\t\t\t{{ code }}\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t\t<a :href=\"downloadUrl\"\n\t\t\t\t\t\tclass=\"button primary\"\n\t\t\t\t\t\t:download=\"downloadFilename\">{{ t('twofactor_backupcodes', 'Save backup codes') }}</a>\n\t\t\t\t\t<button class=\"button\"\n\t\t\t\t\t\t@click=\"printCodes\">\n\t\t\t\t\t\t{{ t('twofactor_backupcodes', 'Print backup codes') }}\n\t\t\t\t\t</button>\n\t\t\t\t</template>\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<button id=\"generate-backup-codes\"\n\t\t\t\t\t@click=\"generateBackupCodes\">\n\t\t\t\t\t{{ t('twofactor_backupcodes', 'Regenerate backup codes') }}\n\t\t\t\t</button>\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<em>\n\t\t\t\t\t{{ t('twofactor_backupcodes', 'If you regenerate backup codes, you automatically invalidate old codes.') }}\n\t\t\t\t</em>\n\t\t\t</p>\n\t\t</template>\n\t</div>\n</template>\n\n<script>\nimport confirmPassword from '@nextcloud/password-confirmation'\nimport { print } from '../service/PrintService'\n\nexport default {\n\tname: 'PersonalSettings',\n\tdata() {\n\t\treturn {\n\t\t\tgeneratingCodes: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tdownloadUrl() {\n\t\t\tif (!this.codes) {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\treturn 'data:text/plain,' + encodeURIComponent(this.codes.reduce((prev, code) => {\n\t\t\t\treturn prev + code + '\\r\\n'\n\t\t\t}, ''))\n\t\t},\n\t\tdownloadFilename() {\n\t\t\tconst name = OC.theme.name || 'Nextcloud'\n\t\t\treturn name + '-backup-codes.txt'\n\t\t},\n\t\tenabled() {\n\t\t\treturn this.$store.state.enabled\n\t\t},\n\t\ttotal() {\n\t\t\treturn this.$store.state.total\n\t\t},\n\t\tused() {\n\t\t\treturn this.$store.state.used\n\t\t},\n\t\tcodes() {\n\t\t\treturn this.$store.state.codes\n\t\t},\n\t\tname() {\n\t\t\treturn OC.theme.name || 'Nextcloud'\n\t\t},\n\t\thaveCodes() {\n\t\t\treturn this.codes && this.codes.length > 0\n\t\t},\n\t},\n\tmethods: {\n\t\tgenerateBackupCodes() {\n\t\t\tconfirmPassword().then(() => {\n\t\t\t\t// Hide old codes\n\t\t\t\tthis.generatingCodes = true\n\n\t\t\t\tthis.$store.dispatch('generate').then(data => {\n\t\t\t\t\tthis.generatingCodes = false\n\t\t\t\t}).catch(err => {\n\t\t\t\t\tOC.Notification.showTemporary(t('twofactor_backupcodes', 'An error occurred while generating your backup codes'))\n\t\t\t\t\tthis.generatingCodes = false\n\t\t\t\t\tthrow err\n\t\t\t\t})\n\t\t\t}).catch(console.error.bind(this))\n\t\t},\n\n\t\tgetPrintData(codes) {\n\t\t\tif (!codes) {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\treturn codes.reduce((prev, code) => {\n\t\t\t\treturn prev + code + '<br>'\n\t\t\t}, '')\n\t\t},\n\n\t\tprintCodes() {\n\t\t\tprint(this.getPrintData(this.codes))\n\t\t},\n\t},\n}\n<\/script>\n\n<style scoped>\n\t.backup-code {\n\t\tfont-family: monospace;\n\t\tletter-spacing: 0.02em;\n\t\tfont-size: 1.2em;\n\t}\n\t.button {\n\t\tdisplay: inline-block;\n\t}\n</style>\n"],sourceRoot:""}]),e.Z=s}},o={};function a(t){var e=o[t];if(void 0!==e)return e.exports;var r=o[t]={id:t,loaded:!1,exports:{}};return n[t].call(r.exports,r,r.exports,a),r.loaded=!0,r.exports}a.m=n,a.amdD=function(){throw new Error("define cannot be used indirect")},a.amdO={},e=[],a.O=function(t,n,o,r){if(!n){var s=1/0;for(i=0;i<e.length;i++){n=e[i][0],o=e[i][1],r=e[i][2];for(var c=!0,d=0;d<n.length;d++)(!1&r||s>=r)&&Object.keys(a.O).every((function(t){return a.O[t](n[d])}))?n.splice(d--,1):(c=!1,r<s&&(s=r));if(c){e.splice(i--,1);var u=o();void 0!==u&&(t=u)}}return t}r=r||0;for(var i=e.length;i>0&&e[i-1][2]>r;i--)e[i]=e[i-1];e[i]=[n,o,r]},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,{a:e}),e},a.d=function(t,e){for(var n in e)a.o(e,n)&&!a.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},a.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},a.j=2870,function(){a.b=document.baseURI||self.location.href;var t={2870:0};a.O.j=function(e){return 0===t[e]};var e=function(e,n){var o,r,s=n[0],c=n[1],d=n[2],u=0;if(s.some((function(e){return 0!==t[e]}))){for(o in c)a.o(c,o)&&(a.m[o]=c[o]);if(d)var i=d(a)}for(e&&e(n);u<s.length;u++)r=s[u],a.o(t,r)&&t[r]&&t[r][0](),t[r]=0;return a.O(i)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))}();var r=a.O(void 0,[7874],(function(){return a(13895)}));r=a.O(r)}();
-//# sourceMappingURL=twofactor_backupcodes-settings.js.map?v=86dc82a9ffe833f7e544 \ No newline at end of file
+!function(){"use strict";var e,n={13895:function(e,n,o){var a=o(16453),r=o(20144),s=o(10128),c=o.n(s),d={name:"PersonalSettings",data:function(){return{generatingCodes:!1}},computed:{downloadUrl:function(){return this.codes?"data:text/plain,"+encodeURIComponent(this.codes.reduce((function(t,e){return t+e+"\r\n"}),"")):""},downloadFilename:function(){return(OC.theme.name||"Nextcloud")+"-backup-codes.txt"},enabled:function(){return this.$store.state.enabled},total:function(){return this.$store.state.total},used:function(){return this.$store.state.used},codes:function(){return this.$store.state.codes},name:function(){return OC.theme.name||"Nextcloud"},haveCodes:function(){return this.codes&&this.codes.length>0}},methods:{generateBackupCodes:function(){var e=this;c()().then((function(){e.generatingCodes=!0,e.$store.dispatch("generate").then((function(t){e.generatingCodes=!1})).catch((function(n){throw OC.Notification.showTemporary(t("twofactor_backupcodes","An error occurred while generating your backup codes")),e.generatingCodes=!1,n}))})).catch(console.error.bind(this))},getPrintData:function(t){return t?t.reduce((function(t,e){return t+e+"<br>"}),""):""},printCodes:function(){var e,n,o;e=this.getPrintData(this.codes),n=OC.theme.name||"Nextcloud",(o=window.open("",t("twofactor_backupcodes","{name} backup codes",{name:n}))).document.write("<h1>"+t("twofactor_backupcodes","{name} backup codes",{name:n})+"</h1>"),o.document.write("<pre>"+e+"</pre>"),o.print(),o.close()}}},u=o(93379),i=o.n(u),l=o(7795),p=o.n(l),f=o(90569),b=o.n(f),h=o(3565),m=o.n(h),g=o(19216),v=o.n(g),k=o(44589),w=o.n(k),C=o(94319),_={};_.styleTagTransform=w(),_.setAttributes=m(),_.insert=b().bind(null,"head"),_.domAPI=p(),_.insertStyleElement=v(),i()(C.Z,_),C.Z&&C.Z.locals&&C.Z.locals;var y=(0,o(51900).Z)(d,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[t.enabled?[n("p",[t.haveCodes?[t._v("\n\t\t\t\t"+t._s(t.t("twofactor_backupcodes","These are your backup codes. Please save and/or print them as you will not be able to read the codes again later"))+"\n\t\t\t\t"),n("ul",t._l(t.codes,(function(e){return n("li",{key:e,staticClass:"backup-code"},[t._v("\n\t\t\t\t\t\t"+t._s(e)+"\n\t\t\t\t\t")])})),0),t._v(" "),n("a",{staticClass:"button primary",attrs:{href:t.downloadUrl,download:t.downloadFilename}},[t._v(t._s(t.t("twofactor_backupcodes","Save backup codes")))]),t._v(" "),n("button",{staticClass:"button",on:{click:t.printCodes}},[t._v("\n\t\t\t\t\t"+t._s(t.t("twofactor_backupcodes","Print backup codes"))+"\n\t\t\t\t")])]:[t._v("\n\t\t\t\t"+t._s(t.t("twofactor_backupcodes","Backup codes have been generated. {used} of {total} codes have been used.",{used:t.used,total:t.total}))+"\n\t\t\t")]],2),t._v(" "),n("p",[n("button",{attrs:{id:"generate-backup-codes"},on:{click:t.generateBackupCodes}},[t._v("\n\t\t\t\t"+t._s(t.t("twofactor_backupcodes","Regenerate backup codes"))+"\n\t\t\t")])]),t._v(" "),n("p",[n("em",[t._v("\n\t\t\t\t"+t._s(t.t("twofactor_backupcodes","If you regenerate backup codes, you automatically invalidate old codes."))+"\n\t\t\t")])])]:n("button",{attrs:{id:"generate-backup-codes",disabled:t.generatingCodes},on:{click:t.generateBackupCodes}},[t._v("\n\t\t"+t._s(t.t("twofactor_backupcodes","Generate backup codes"))+"\n\t\t"),n("span",{class:{"icon-loading-small":t.generatingCodes}})])],2)}),[],!1,null,"00d0b868",null).exports,A=o(20629),O=o(4820),x=o(79753);r.default.use(A.ZP);var P={setEnabled:function(t,e){r.default.set(t,"enabled",e)},setTotal:function(t,e){r.default.set(t,"total",e)},setUsed:function(t,e){r.default.set(t,"used",e)},setCodes:function(t,e){r.default.set(t,"codes",e)}},S={generate:function(t){var e,n=t.commit;return n("setEnabled",!1),(e=(0,x.generateUrl)("/apps/twofactor_backupcodes/settings/create"),O.default.post(e,{}).then((function(t){return t.data}))).then((function(t){var e=t.codes,o=t.state;return n("setEnabled",o.enabled),n("setTotal",o.total),n("setUsed",o.used),n("setCodes",e),!0}))}},B=new A.yh({strict:!1,state:{enabled:!1,total:0,used:0,codes:[]},mutations:P,actions:S});r.default.prototype.t=t;var T=(0,a.loadState)("twofactor_backupcodes","state");B.replaceState(T),new(r.default.extend(y))({store:B}).$mount("#twofactor-backupcodes-settings")},94319:function(t,e,n){var o=n(87537),a=n.n(o),r=n(23645),s=n.n(r)()(a());s.push([t.id,"\n.backup-code[data-v-00d0b868] {\n\tfont-family: monospace;\n\tletter-spacing: 0.02em;\n\tfont-size: 1.2em;\n}\n.button[data-v-00d0b868] {\n\tdisplay: inline-block;\n}\n","",{version:3,sources:["webpack://./apps/twofactor_backupcodes/src/views/PersonalSettings.vue"],names:[],mappings:";AAyHA;CACA,sBAAA;CACA,sBAAA;CACA,gBAAA;AACA;AACA;CACA,qBAAA;AACA",sourcesContent:["<template>\n\t<div>\n\t\t<button v-if=\"!enabled\"\n\t\t\tid=\"generate-backup-codes\"\n\t\t\t:disabled=\"generatingCodes\"\n\t\t\t@click=\"generateBackupCodes\">\n\t\t\t{{ t('twofactor_backupcodes', 'Generate backup codes') }}\n\t\t\t<span :class=\"{'icon-loading-small': generatingCodes}\" />\n\t\t</button>\n\t\t<template v-else>\n\t\t\t<p>\n\t\t\t\t<template v-if=\"!haveCodes\">\n\t\t\t\t\t{{ t('twofactor_backupcodes', 'Backup codes have been generated. {used} of {total} codes have been used.', {used, total}) }}\n\t\t\t\t</template>\n\t\t\t\t<template v-else>\n\t\t\t\t\t{{ t('twofactor_backupcodes', 'These are your backup codes. Please save and/or print them as you will not be able to read the codes again later') }}\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li v-for=\"code in codes\" :key=\"code\" class=\"backup-code\">\n\t\t\t\t\t\t\t{{ code }}\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t\t<a :href=\"downloadUrl\"\n\t\t\t\t\t\tclass=\"button primary\"\n\t\t\t\t\t\t:download=\"downloadFilename\">{{ t('twofactor_backupcodes', 'Save backup codes') }}</a>\n\t\t\t\t\t<button class=\"button\"\n\t\t\t\t\t\t@click=\"printCodes\">\n\t\t\t\t\t\t{{ t('twofactor_backupcodes', 'Print backup codes') }}\n\t\t\t\t\t</button>\n\t\t\t\t</template>\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<button id=\"generate-backup-codes\"\n\t\t\t\t\t@click=\"generateBackupCodes\">\n\t\t\t\t\t{{ t('twofactor_backupcodes', 'Regenerate backup codes') }}\n\t\t\t\t</button>\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<em>\n\t\t\t\t\t{{ t('twofactor_backupcodes', 'If you regenerate backup codes, you automatically invalidate old codes.') }}\n\t\t\t\t</em>\n\t\t\t</p>\n\t\t</template>\n\t</div>\n</template>\n\n<script>\nimport confirmPassword from '@nextcloud/password-confirmation'\nimport { print } from '../service/PrintService'\n\nexport default {\n\tname: 'PersonalSettings',\n\tdata() {\n\t\treturn {\n\t\t\tgeneratingCodes: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tdownloadUrl() {\n\t\t\tif (!this.codes) {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\treturn 'data:text/plain,' + encodeURIComponent(this.codes.reduce((prev, code) => {\n\t\t\t\treturn prev + code + '\\r\\n'\n\t\t\t}, ''))\n\t\t},\n\t\tdownloadFilename() {\n\t\t\tconst name = OC.theme.name || 'Nextcloud'\n\t\t\treturn name + '-backup-codes.txt'\n\t\t},\n\t\tenabled() {\n\t\t\treturn this.$store.state.enabled\n\t\t},\n\t\ttotal() {\n\t\t\treturn this.$store.state.total\n\t\t},\n\t\tused() {\n\t\t\treturn this.$store.state.used\n\t\t},\n\t\tcodes() {\n\t\t\treturn this.$store.state.codes\n\t\t},\n\t\tname() {\n\t\t\treturn OC.theme.name || 'Nextcloud'\n\t\t},\n\t\thaveCodes() {\n\t\t\treturn this.codes && this.codes.length > 0\n\t\t},\n\t},\n\tmethods: {\n\t\tgenerateBackupCodes() {\n\t\t\tconfirmPassword().then(() => {\n\t\t\t\t// Hide old codes\n\t\t\t\tthis.generatingCodes = true\n\n\t\t\t\tthis.$store.dispatch('generate').then(data => {\n\t\t\t\t\tthis.generatingCodes = false\n\t\t\t\t}).catch(err => {\n\t\t\t\t\tOC.Notification.showTemporary(t('twofactor_backupcodes', 'An error occurred while generating your backup codes'))\n\t\t\t\t\tthis.generatingCodes = false\n\t\t\t\t\tthrow err\n\t\t\t\t})\n\t\t\t}).catch(console.error.bind(this))\n\t\t},\n\n\t\tgetPrintData(codes) {\n\t\t\tif (!codes) {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\treturn codes.reduce((prev, code) => {\n\t\t\t\treturn prev + code + '<br>'\n\t\t\t}, '')\n\t\t},\n\n\t\tprintCodes() {\n\t\t\tprint(this.getPrintData(this.codes))\n\t\t},\n\t},\n}\n<\/script>\n\n<style scoped>\n\t.backup-code {\n\t\tfont-family: monospace;\n\t\tletter-spacing: 0.02em;\n\t\tfont-size: 1.2em;\n\t}\n\t.button {\n\t\tdisplay: inline-block;\n\t}\n</style>\n"],sourceRoot:""}]),e.Z=s}},o={};function a(t){var e=o[t];if(void 0!==e)return e.exports;var r=o[t]={id:t,loaded:!1,exports:{}};return n[t].call(r.exports,r,r.exports,a),r.loaded=!0,r.exports}a.m=n,a.amdD=function(){throw new Error("define cannot be used indirect")},a.amdO={},e=[],a.O=function(t,n,o,r){if(!n){var s=1/0;for(i=0;i<e.length;i++){n=e[i][0],o=e[i][1],r=e[i][2];for(var c=!0,d=0;d<n.length;d++)(!1&r||s>=r)&&Object.keys(a.O).every((function(t){return a.O[t](n[d])}))?n.splice(d--,1):(c=!1,r<s&&(s=r));if(c){e.splice(i--,1);var u=o();void 0!==u&&(t=u)}}return t}r=r||0;for(var i=e.length;i>0&&e[i-1][2]>r;i--)e[i]=e[i-1];e[i]=[n,o,r]},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,{a:e}),e},a.d=function(t,e){for(var n in e)a.o(e,n)&&!a.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},a.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},a.j=2870,function(){a.b=document.baseURI||self.location.href;var t={2870:0};a.O.j=function(e){return 0===t[e]};var e=function(e,n){var o,r,s=n[0],c=n[1],d=n[2],u=0;if(s.some((function(e){return 0!==t[e]}))){for(o in c)a.o(c,o)&&(a.m[o]=c[o]);if(d)var i=d(a)}for(e&&e(n);u<s.length;u++)r=s[u],a.o(t,r)&&t[r]&&t[r][0](),t[r]=0;return a.O(i)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))}(),a.nc=void 0;var r=a.O(void 0,[7874],(function(){return a(13895)}));r=a.O(r)}();
+//# sourceMappingURL=twofactor_backupcodes-settings.js.map?v=5c46552b13286b50d76a \ No newline at end of file
diff --git a/dist/twofactor_backupcodes-settings.js.map b/dist/twofactor_backupcodes-settings.js.map
index 6acbb1dc222..e0b7bb76ecd 100644
--- a/dist/twofactor_backupcodes-settings.js.map
+++ b/dist/twofactor_backupcodes-settings.js.map
@@ -1 +1 @@
-{"version":3,"file":"twofactor_backupcodes-settings.js?v=86dc82a9ffe833f7e544","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/twofactor_backupcodes/src/views/PersonalSettings.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/twofactor_backupcodes/src/views/PersonalSettings.vue","webpack:///nextcloud/apps/twofactor_backupcodes/src/service/PrintService.js","webpack://nextcloud/./apps/twofactor_backupcodes/src/views/PersonalSettings.vue?4d0b","webpack://nextcloud/./apps/twofactor_backupcodes/src/views/PersonalSettings.vue?81a7","webpack:///nextcloud/apps/twofactor_backupcodes/src/views/PersonalSettings.vue?vue&type=template&id=00d0b868&scoped=true&","webpack:///nextcloud/apps/twofactor_backupcodes/src/store.js","webpack:///nextcloud/apps/twofactor_backupcodes/src/service/BackupCodesService.js","webpack:///nextcloud/apps/twofactor_backupcodes/src/settings.js","webpack:///nextcloud/apps/twofactor_backupcodes/src/views/PersonalSettings.vue?vue&type=style&index=0&id=00d0b868&scoped=true&lang=css&","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};","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PersonalSettings.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!./PersonalSettings.vue?vue&type=script&lang=js&\"","<template>\n\t<div>\n\t\t<button v-if=\"!enabled\"\n\t\t\tid=\"generate-backup-codes\"\n\t\t\t:disabled=\"generatingCodes\"\n\t\t\t@click=\"generateBackupCodes\">\n\t\t\t{{ t('twofactor_backupcodes', 'Generate backup codes') }}\n\t\t\t<span :class=\"{'icon-loading-small': generatingCodes}\" />\n\t\t</button>\n\t\t<template v-else>\n\t\t\t<p>\n\t\t\t\t<template v-if=\"!haveCodes\">\n\t\t\t\t\t{{ t('twofactor_backupcodes', 'Backup codes have been generated. {used} of {total} codes have been used.', {used, total}) }}\n\t\t\t\t</template>\n\t\t\t\t<template v-else>\n\t\t\t\t\t{{ t('twofactor_backupcodes', 'These are your backup codes. Please save and/or print them as you will not be able to read the codes again later') }}\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li v-for=\"code in codes\" :key=\"code\" class=\"backup-code\">\n\t\t\t\t\t\t\t{{ code }}\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t\t<a :href=\"downloadUrl\"\n\t\t\t\t\t\tclass=\"button primary\"\n\t\t\t\t\t\t:download=\"downloadFilename\">{{ t('twofactor_backupcodes', 'Save backup codes') }}</a>\n\t\t\t\t\t<button class=\"button\"\n\t\t\t\t\t\t@click=\"printCodes\">\n\t\t\t\t\t\t{{ t('twofactor_backupcodes', 'Print backup codes') }}\n\t\t\t\t\t</button>\n\t\t\t\t</template>\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<button id=\"generate-backup-codes\"\n\t\t\t\t\t@click=\"generateBackupCodes\">\n\t\t\t\t\t{{ t('twofactor_backupcodes', 'Regenerate backup codes') }}\n\t\t\t\t</button>\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<em>\n\t\t\t\t\t{{ t('twofactor_backupcodes', 'If you regenerate backup codes, you automatically invalidate old codes.') }}\n\t\t\t\t</em>\n\t\t\t</p>\n\t\t</template>\n\t</div>\n</template>\n\n<script>\nimport confirmPassword from '@nextcloud/password-confirmation'\nimport { print } from '../service/PrintService'\n\nexport default {\n\tname: 'PersonalSettings',\n\tdata() {\n\t\treturn {\n\t\t\tgeneratingCodes: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tdownloadUrl() {\n\t\t\tif (!this.codes) {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\treturn 'data:text/plain,' + encodeURIComponent(this.codes.reduce((prev, code) => {\n\t\t\t\treturn prev + code + '\\r\\n'\n\t\t\t}, ''))\n\t\t},\n\t\tdownloadFilename() {\n\t\t\tconst name = OC.theme.name || 'Nextcloud'\n\t\t\treturn name + '-backup-codes.txt'\n\t\t},\n\t\tenabled() {\n\t\t\treturn this.$store.state.enabled\n\t\t},\n\t\ttotal() {\n\t\t\treturn this.$store.state.total\n\t\t},\n\t\tused() {\n\t\t\treturn this.$store.state.used\n\t\t},\n\t\tcodes() {\n\t\t\treturn this.$store.state.codes\n\t\t},\n\t\tname() {\n\t\t\treturn OC.theme.name || 'Nextcloud'\n\t\t},\n\t\thaveCodes() {\n\t\t\treturn this.codes && this.codes.length > 0\n\t\t},\n\t},\n\tmethods: {\n\t\tgenerateBackupCodes() {\n\t\t\tconfirmPassword().then(() => {\n\t\t\t\t// Hide old codes\n\t\t\t\tthis.generatingCodes = true\n\n\t\t\t\tthis.$store.dispatch('generate').then(data => {\n\t\t\t\t\tthis.generatingCodes = false\n\t\t\t\t}).catch(err => {\n\t\t\t\t\tOC.Notification.showTemporary(t('twofactor_backupcodes', 'An error occurred while generating your backup codes'))\n\t\t\t\t\tthis.generatingCodes = false\n\t\t\t\t\tthrow err\n\t\t\t\t})\n\t\t\t}).catch(console.error.bind(this))\n\t\t},\n\n\t\tgetPrintData(codes) {\n\t\t\tif (!codes) {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\treturn codes.reduce((prev, code) => {\n\t\t\t\treturn prev + code + '<br>'\n\t\t\t}, '')\n\t\t},\n\n\t\tprintCodes() {\n\t\t\tprint(this.getPrintData(this.codes))\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\t.backup-code {\n\t\tfont-family: monospace;\n\t\tletter-spacing: 0.02em;\n\t\tfont-size: 1.2em;\n\t}\n\t.button {\n\t\tdisplay: inline-block;\n\t}\n</style>\n","/**\n * @copyright Copyright (c) 2016 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\n/**\n * @param {any} data -\n */\nexport function print(data) {\n\tconst name = OC.theme.name || 'Nextcloud'\n\tconst newTab = window.open('', t('twofactor_backupcodes', '{name} backup codes', { name }))\n\tnewTab.document.write('<h1>' + t('twofactor_backupcodes', '{name} backup codes', { name }) + '</h1>')\n\tnewTab.document.write('<pre>' + data + '</pre>')\n\tnewTab.print()\n\tnewTab.close()\n}\n","\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/vue-loader/lib/index.js??vue-loader-options!./PersonalSettings.vue?vue&type=style&index=0&id=00d0b868&scoped=true&lang=css&\";\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/vue-loader/lib/index.js??vue-loader-options!./PersonalSettings.vue?vue&type=style&index=0&id=00d0b868&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PersonalSettings.vue?vue&type=template&id=00d0b868&scoped=true&\"\nimport script from \"./PersonalSettings.vue?vue&type=script&lang=js&\"\nexport * from \"./PersonalSettings.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PersonalSettings.vue?vue&type=style&index=0&id=00d0b868&scoped=true&lang=css&\"\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 \"00d0b868\",\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',[(!_vm.enabled)?_c('button',{attrs:{\"id\":\"generate-backup-codes\",\"disabled\":_vm.generatingCodes},on:{\"click\":_vm.generateBackupCodes}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('twofactor_backupcodes', 'Generate backup codes'))+\"\\n\\t\\t\"),_c('span',{class:{'icon-loading-small': _vm.generatingCodes}})]):[_c('p',[(!_vm.haveCodes)?[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('twofactor_backupcodes', 'Backup codes have been generated. {used} of {total} codes have been used.', {used: _vm.used, total: _vm.total}))+\"\\n\\t\\t\\t\")]:[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('twofactor_backupcodes', 'These are your backup codes. Please save and/or print them as you will not be able to read the codes again later'))+\"\\n\\t\\t\\t\\t\"),_c('ul',_vm._l((_vm.codes),function(code){return _c('li',{key:code,staticClass:\"backup-code\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(code)+\"\\n\\t\\t\\t\\t\\t\")])}),0),_vm._v(\" \"),_c('a',{staticClass:\"button primary\",attrs:{\"href\":_vm.downloadUrl,\"download\":_vm.downloadFilename}},[_vm._v(_vm._s(_vm.t('twofactor_backupcodes', 'Save backup codes')))]),_vm._v(\" \"),_c('button',{staticClass:\"button\",on:{\"click\":_vm.printCodes}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('twofactor_backupcodes', 'Print backup codes'))+\"\\n\\t\\t\\t\\t\")])]],2),_vm._v(\" \"),_c('p',[_c('button',{attrs:{\"id\":\"generate-backup-codes\"},on:{\"click\":_vm.generateBackupCodes}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('twofactor_backupcodes', 'Regenerate backup codes'))+\"\\n\\t\\t\\t\")])]),_vm._v(\" \"),_c('p',[_c('em',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('twofactor_backupcodes', 'If you regenerate backup codes, you automatically invalidate old codes.'))+\"\\n\\t\\t\\t\")])])]],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2019 Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport Vue from 'vue'\nimport Vuex, { Store } from 'vuex'\nimport { generateCodes } from './service/BackupCodesService'\n\nVue.use(Vuex)\n\nconst state = {\n\tenabled: false,\n\ttotal: 0,\n\tused: 0,\n\tcodes: [],\n}\n\nconst mutations = {\n\tsetEnabled(state, enabled) {\n\t\tVue.set(state, 'enabled', enabled)\n\t},\n\tsetTotal(state, total) {\n\t\tVue.set(state, 'total', total)\n\t},\n\tsetUsed(state, used) {\n\t\tVue.set(state, 'used', used)\n\t},\n\tsetCodes(state, codes) {\n\t\tVue.set(state, 'codes', codes)\n\t},\n}\n\nconst actions = {\n\tgenerate({ commit }) {\n\t\tcommit('setEnabled', false)\n\n\t\treturn generateCodes().then(({ codes, state }) => {\n\t\t\tcommit('setEnabled', state.enabled)\n\t\t\tcommit('setTotal', state.total)\n\t\t\tcommit('setUsed', state.used)\n\t\t\tcommit('setCodes', codes)\n\t\t\treturn true\n\t\t})\n\t},\n}\n\nexport default new Store({\n\tstrict: process.env.NODE_ENV !== 'production',\n\tstate,\n\tmutations,\n\tactions,\n})\n","/**\n * @copyright Copyright (c) 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport Axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\n\n/**\n *\n */\nexport function generateCodes() {\n\tconst url = generateUrl('/apps/twofactor_backupcodes/settings/create')\n\n\treturn Axios.post(url, {}).then(resp => resp.data)\n}\n","/**\n * @copyright Copyright (c) 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport { loadState } from '@nextcloud/initial-state'\nimport Vue from 'vue'\n\nimport PersonalSettings from './views/PersonalSettings'\nimport store from './store'\n\nVue.prototype.t = t\n\nconst initialState = loadState('twofactor_backupcodes', 'state')\nstore.replaceState(initialState)\n\nconst View = Vue.extend(PersonalSettings)\nnew View({\n\tstore,\n}).$mount('#twofactor-backupcodes-settings')\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, \"\\n.backup-code[data-v-00d0b868] {\\n\\tfont-family: monospace;\\n\\tletter-spacing: 0.02em;\\n\\tfont-size: 1.2em;\\n}\\n.button[data-v-00d0b868] {\\n\\tdisplay: inline-block;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/twofactor_backupcodes/src/views/PersonalSettings.vue\"],\"names\":[],\"mappings\":\";AAyHA;CACA,sBAAA;CACA,sBAAA;CACA,gBAAA;AACA;AACA;CACA,qBAAA;AACA\",\"sourcesContent\":[\"<template>\\n\\t<div>\\n\\t\\t<button v-if=\\\"!enabled\\\"\\n\\t\\t\\tid=\\\"generate-backup-codes\\\"\\n\\t\\t\\t:disabled=\\\"generatingCodes\\\"\\n\\t\\t\\t@click=\\\"generateBackupCodes\\\">\\n\\t\\t\\t{{ t('twofactor_backupcodes', 'Generate backup codes') }}\\n\\t\\t\\t<span :class=\\\"{'icon-loading-small': generatingCodes}\\\" />\\n\\t\\t</button>\\n\\t\\t<template v-else>\\n\\t\\t\\t<p>\\n\\t\\t\\t\\t<template v-if=\\\"!haveCodes\\\">\\n\\t\\t\\t\\t\\t{{ t('twofactor_backupcodes', 'Backup codes have been generated. {used} of {total} codes have been used.', {used, total}) }}\\n\\t\\t\\t\\t</template>\\n\\t\\t\\t\\t<template v-else>\\n\\t\\t\\t\\t\\t{{ t('twofactor_backupcodes', 'These are your backup codes. Please save and/or print them as you will not be able to read the codes again later') }}\\n\\t\\t\\t\\t\\t<ul>\\n\\t\\t\\t\\t\\t\\t<li v-for=\\\"code in codes\\\" :key=\\\"code\\\" class=\\\"backup-code\\\">\\n\\t\\t\\t\\t\\t\\t\\t{{ code }}\\n\\t\\t\\t\\t\\t\\t</li>\\n\\t\\t\\t\\t\\t</ul>\\n\\t\\t\\t\\t\\t<a :href=\\\"downloadUrl\\\"\\n\\t\\t\\t\\t\\t\\tclass=\\\"button primary\\\"\\n\\t\\t\\t\\t\\t\\t:download=\\\"downloadFilename\\\">{{ t('twofactor_backupcodes', 'Save backup codes') }}</a>\\n\\t\\t\\t\\t\\t<button class=\\\"button\\\"\\n\\t\\t\\t\\t\\t\\t@click=\\\"printCodes\\\">\\n\\t\\t\\t\\t\\t\\t{{ t('twofactor_backupcodes', 'Print backup codes') }}\\n\\t\\t\\t\\t\\t</button>\\n\\t\\t\\t\\t</template>\\n\\t\\t\\t</p>\\n\\t\\t\\t<p>\\n\\t\\t\\t\\t<button id=\\\"generate-backup-codes\\\"\\n\\t\\t\\t\\t\\t@click=\\\"generateBackupCodes\\\">\\n\\t\\t\\t\\t\\t{{ t('twofactor_backupcodes', 'Regenerate backup codes') }}\\n\\t\\t\\t\\t</button>\\n\\t\\t\\t</p>\\n\\t\\t\\t<p>\\n\\t\\t\\t\\t<em>\\n\\t\\t\\t\\t\\t{{ t('twofactor_backupcodes', 'If you regenerate backup codes, you automatically invalidate old codes.') }}\\n\\t\\t\\t\\t</em>\\n\\t\\t\\t</p>\\n\\t\\t</template>\\n\\t</div>\\n</template>\\n\\n<script>\\nimport confirmPassword from '@nextcloud/password-confirmation'\\nimport { print } from '../service/PrintService'\\n\\nexport default {\\n\\tname: 'PersonalSettings',\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tgeneratingCodes: false,\\n\\t\\t}\\n\\t},\\n\\tcomputed: {\\n\\t\\tdownloadUrl() {\\n\\t\\t\\tif (!this.codes) {\\n\\t\\t\\t\\treturn ''\\n\\t\\t\\t}\\n\\t\\t\\treturn 'data:text/plain,' + encodeURIComponent(this.codes.reduce((prev, code) => {\\n\\t\\t\\t\\treturn prev + code + '\\\\r\\\\n'\\n\\t\\t\\t}, ''))\\n\\t\\t},\\n\\t\\tdownloadFilename() {\\n\\t\\t\\tconst name = OC.theme.name || 'Nextcloud'\\n\\t\\t\\treturn name + '-backup-codes.txt'\\n\\t\\t},\\n\\t\\tenabled() {\\n\\t\\t\\treturn this.$store.state.enabled\\n\\t\\t},\\n\\t\\ttotal() {\\n\\t\\t\\treturn this.$store.state.total\\n\\t\\t},\\n\\t\\tused() {\\n\\t\\t\\treturn this.$store.state.used\\n\\t\\t},\\n\\t\\tcodes() {\\n\\t\\t\\treturn this.$store.state.codes\\n\\t\\t},\\n\\t\\tname() {\\n\\t\\t\\treturn OC.theme.name || 'Nextcloud'\\n\\t\\t},\\n\\t\\thaveCodes() {\\n\\t\\t\\treturn this.codes && this.codes.length > 0\\n\\t\\t},\\n\\t},\\n\\tmethods: {\\n\\t\\tgenerateBackupCodes() {\\n\\t\\t\\tconfirmPassword().then(() => {\\n\\t\\t\\t\\t// Hide old codes\\n\\t\\t\\t\\tthis.generatingCodes = true\\n\\n\\t\\t\\t\\tthis.$store.dispatch('generate').then(data => {\\n\\t\\t\\t\\t\\tthis.generatingCodes = false\\n\\t\\t\\t\\t}).catch(err => {\\n\\t\\t\\t\\t\\tOC.Notification.showTemporary(t('twofactor_backupcodes', 'An error occurred while generating your backup codes'))\\n\\t\\t\\t\\t\\tthis.generatingCodes = false\\n\\t\\t\\t\\t\\tthrow err\\n\\t\\t\\t\\t})\\n\\t\\t\\t}).catch(console.error.bind(this))\\n\\t\\t},\\n\\n\\t\\tgetPrintData(codes) {\\n\\t\\t\\tif (!codes) {\\n\\t\\t\\t\\treturn ''\\n\\t\\t\\t}\\n\\t\\t\\treturn codes.reduce((prev, code) => {\\n\\t\\t\\t\\treturn prev + code + '<br>'\\n\\t\\t\\t}, '')\\n\\t\\t},\\n\\n\\t\\tprintCodes() {\\n\\t\\t\\tprint(this.getPrintData(this.codes))\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style scoped>\\n\\t.backup-code {\\n\\t\\tfont-family: monospace;\\n\\t\\tletter-spacing: 0.02em;\\n\\t\\tfont-size: 1.2em;\\n\\t}\\n\\t.button {\\n\\t\\tdisplay: inline-block;\\n\\t}\\n</style>\\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 = 2870;","__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\t2870: 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__(13895); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","data","name","newTab","OC","theme","window","open","t","document","write","print","close","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_c","_self","enabled","haveCodes","_v","_s","_l","code","key","staticClass","attrs","downloadUrl","downloadFilename","on","printCodes","used","total","generateBackupCodes","generatingCodes","class","Vue","Vuex","mutations","setEnabled","state","setTotal","setUsed","setCodes","codes","actions","generate","url","commit","generateUrl","Axios","then","resp","Store","strict","process","initialState","loadState","store","replaceState","PersonalSettings","$mount","___CSS_LOADER_EXPORT___","push","module","id","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","children","b","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":"twofactor_backupcodes-settings.js?v=5c46552b13286b50d76a","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/twofactor_backupcodes/src/views/PersonalSettings.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/twofactor_backupcodes/src/views/PersonalSettings.vue","webpack:///nextcloud/apps/twofactor_backupcodes/src/service/PrintService.js","webpack://nextcloud/./apps/twofactor_backupcodes/src/views/PersonalSettings.vue?4d0b","webpack://nextcloud/./apps/twofactor_backupcodes/src/views/PersonalSettings.vue?81a7","webpack:///nextcloud/apps/twofactor_backupcodes/src/views/PersonalSettings.vue?vue&type=template&id=00d0b868&scoped=true&","webpack:///nextcloud/apps/twofactor_backupcodes/src/store.js","webpack:///nextcloud/apps/twofactor_backupcodes/src/service/BackupCodesService.js","webpack:///nextcloud/apps/twofactor_backupcodes/src/settings.js","webpack:///nextcloud/apps/twofactor_backupcodes/src/views/PersonalSettings.vue?vue&type=style&index=0&id=00d0b868&scoped=true&lang=css&","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/runtime/nonce","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};","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PersonalSettings.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!./PersonalSettings.vue?vue&type=script&lang=js&\"","<template>\n\t<div>\n\t\t<button v-if=\"!enabled\"\n\t\t\tid=\"generate-backup-codes\"\n\t\t\t:disabled=\"generatingCodes\"\n\t\t\t@click=\"generateBackupCodes\">\n\t\t\t{{ t('twofactor_backupcodes', 'Generate backup codes') }}\n\t\t\t<span :class=\"{'icon-loading-small': generatingCodes}\" />\n\t\t</button>\n\t\t<template v-else>\n\t\t\t<p>\n\t\t\t\t<template v-if=\"!haveCodes\">\n\t\t\t\t\t{{ t('twofactor_backupcodes', 'Backup codes have been generated. {used} of {total} codes have been used.', {used, total}) }}\n\t\t\t\t</template>\n\t\t\t\t<template v-else>\n\t\t\t\t\t{{ t('twofactor_backupcodes', 'These are your backup codes. Please save and/or print them as you will not be able to read the codes again later') }}\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li v-for=\"code in codes\" :key=\"code\" class=\"backup-code\">\n\t\t\t\t\t\t\t{{ code }}\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t\t<a :href=\"downloadUrl\"\n\t\t\t\t\t\tclass=\"button primary\"\n\t\t\t\t\t\t:download=\"downloadFilename\">{{ t('twofactor_backupcodes', 'Save backup codes') }}</a>\n\t\t\t\t\t<button class=\"button\"\n\t\t\t\t\t\t@click=\"printCodes\">\n\t\t\t\t\t\t{{ t('twofactor_backupcodes', 'Print backup codes') }}\n\t\t\t\t\t</button>\n\t\t\t\t</template>\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<button id=\"generate-backup-codes\"\n\t\t\t\t\t@click=\"generateBackupCodes\">\n\t\t\t\t\t{{ t('twofactor_backupcodes', 'Regenerate backup codes') }}\n\t\t\t\t</button>\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<em>\n\t\t\t\t\t{{ t('twofactor_backupcodes', 'If you regenerate backup codes, you automatically invalidate old codes.') }}\n\t\t\t\t</em>\n\t\t\t</p>\n\t\t</template>\n\t</div>\n</template>\n\n<script>\nimport confirmPassword from '@nextcloud/password-confirmation'\nimport { print } from '../service/PrintService'\n\nexport default {\n\tname: 'PersonalSettings',\n\tdata() {\n\t\treturn {\n\t\t\tgeneratingCodes: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tdownloadUrl() {\n\t\t\tif (!this.codes) {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\treturn 'data:text/plain,' + encodeURIComponent(this.codes.reduce((prev, code) => {\n\t\t\t\treturn prev + code + '\\r\\n'\n\t\t\t}, ''))\n\t\t},\n\t\tdownloadFilename() {\n\t\t\tconst name = OC.theme.name || 'Nextcloud'\n\t\t\treturn name + '-backup-codes.txt'\n\t\t},\n\t\tenabled() {\n\t\t\treturn this.$store.state.enabled\n\t\t},\n\t\ttotal() {\n\t\t\treturn this.$store.state.total\n\t\t},\n\t\tused() {\n\t\t\treturn this.$store.state.used\n\t\t},\n\t\tcodes() {\n\t\t\treturn this.$store.state.codes\n\t\t},\n\t\tname() {\n\t\t\treturn OC.theme.name || 'Nextcloud'\n\t\t},\n\t\thaveCodes() {\n\t\t\treturn this.codes && this.codes.length > 0\n\t\t},\n\t},\n\tmethods: {\n\t\tgenerateBackupCodes() {\n\t\t\tconfirmPassword().then(() => {\n\t\t\t\t// Hide old codes\n\t\t\t\tthis.generatingCodes = true\n\n\t\t\t\tthis.$store.dispatch('generate').then(data => {\n\t\t\t\t\tthis.generatingCodes = false\n\t\t\t\t}).catch(err => {\n\t\t\t\t\tOC.Notification.showTemporary(t('twofactor_backupcodes', 'An error occurred while generating your backup codes'))\n\t\t\t\t\tthis.generatingCodes = false\n\t\t\t\t\tthrow err\n\t\t\t\t})\n\t\t\t}).catch(console.error.bind(this))\n\t\t},\n\n\t\tgetPrintData(codes) {\n\t\t\tif (!codes) {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\treturn codes.reduce((prev, code) => {\n\t\t\t\treturn prev + code + '<br>'\n\t\t\t}, '')\n\t\t},\n\n\t\tprintCodes() {\n\t\t\tprint(this.getPrintData(this.codes))\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\t.backup-code {\n\t\tfont-family: monospace;\n\t\tletter-spacing: 0.02em;\n\t\tfont-size: 1.2em;\n\t}\n\t.button {\n\t\tdisplay: inline-block;\n\t}\n</style>\n","/**\n * @copyright Copyright (c) 2016 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\n/**\n * @param {any} data -\n */\nexport function print(data) {\n\tconst name = OC.theme.name || 'Nextcloud'\n\tconst newTab = window.open('', t('twofactor_backupcodes', '{name} backup codes', { name }))\n\tnewTab.document.write('<h1>' + t('twofactor_backupcodes', '{name} backup codes', { name }) + '</h1>')\n\tnewTab.document.write('<pre>' + data + '</pre>')\n\tnewTab.print()\n\tnewTab.close()\n}\n","\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/vue-loader/lib/index.js??vue-loader-options!./PersonalSettings.vue?vue&type=style&index=0&id=00d0b868&scoped=true&lang=css&\";\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/vue-loader/lib/index.js??vue-loader-options!./PersonalSettings.vue?vue&type=style&index=0&id=00d0b868&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PersonalSettings.vue?vue&type=template&id=00d0b868&scoped=true&\"\nimport script from \"./PersonalSettings.vue?vue&type=script&lang=js&\"\nexport * from \"./PersonalSettings.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PersonalSettings.vue?vue&type=style&index=0&id=00d0b868&scoped=true&lang=css&\"\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 \"00d0b868\",\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',[(!_vm.enabled)?_c('button',{attrs:{\"id\":\"generate-backup-codes\",\"disabled\":_vm.generatingCodes},on:{\"click\":_vm.generateBackupCodes}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('twofactor_backupcodes', 'Generate backup codes'))+\"\\n\\t\\t\"),_c('span',{class:{'icon-loading-small': _vm.generatingCodes}})]):[_c('p',[(!_vm.haveCodes)?[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('twofactor_backupcodes', 'Backup codes have been generated. {used} of {total} codes have been used.', {used: _vm.used, total: _vm.total}))+\"\\n\\t\\t\\t\")]:[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('twofactor_backupcodes', 'These are your backup codes. Please save and/or print them as you will not be able to read the codes again later'))+\"\\n\\t\\t\\t\\t\"),_c('ul',_vm._l((_vm.codes),function(code){return _c('li',{key:code,staticClass:\"backup-code\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(code)+\"\\n\\t\\t\\t\\t\\t\")])}),0),_vm._v(\" \"),_c('a',{staticClass:\"button primary\",attrs:{\"href\":_vm.downloadUrl,\"download\":_vm.downloadFilename}},[_vm._v(_vm._s(_vm.t('twofactor_backupcodes', 'Save backup codes')))]),_vm._v(\" \"),_c('button',{staticClass:\"button\",on:{\"click\":_vm.printCodes}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('twofactor_backupcodes', 'Print backup codes'))+\"\\n\\t\\t\\t\\t\")])]],2),_vm._v(\" \"),_c('p',[_c('button',{attrs:{\"id\":\"generate-backup-codes\"},on:{\"click\":_vm.generateBackupCodes}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('twofactor_backupcodes', 'Regenerate backup codes'))+\"\\n\\t\\t\\t\")])]),_vm._v(\" \"),_c('p',[_c('em',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('twofactor_backupcodes', 'If you regenerate backup codes, you automatically invalidate old codes.'))+\"\\n\\t\\t\\t\")])])]],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2019 Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport Vue from 'vue'\nimport Vuex, { Store } from 'vuex'\nimport { generateCodes } from './service/BackupCodesService'\n\nVue.use(Vuex)\n\nconst state = {\n\tenabled: false,\n\ttotal: 0,\n\tused: 0,\n\tcodes: [],\n}\n\nconst mutations = {\n\tsetEnabled(state, enabled) {\n\t\tVue.set(state, 'enabled', enabled)\n\t},\n\tsetTotal(state, total) {\n\t\tVue.set(state, 'total', total)\n\t},\n\tsetUsed(state, used) {\n\t\tVue.set(state, 'used', used)\n\t},\n\tsetCodes(state, codes) {\n\t\tVue.set(state, 'codes', codes)\n\t},\n}\n\nconst actions = {\n\tgenerate({ commit }) {\n\t\tcommit('setEnabled', false)\n\n\t\treturn generateCodes().then(({ codes, state }) => {\n\t\t\tcommit('setEnabled', state.enabled)\n\t\t\tcommit('setTotal', state.total)\n\t\t\tcommit('setUsed', state.used)\n\t\t\tcommit('setCodes', codes)\n\t\t\treturn true\n\t\t})\n\t},\n}\n\nexport default new Store({\n\tstrict: process.env.NODE_ENV !== 'production',\n\tstate,\n\tmutations,\n\tactions,\n})\n","/**\n * @copyright Copyright (c) 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport Axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\n\n/**\n *\n */\nexport function generateCodes() {\n\tconst url = generateUrl('/apps/twofactor_backupcodes/settings/create')\n\n\treturn Axios.post(url, {}).then(resp => resp.data)\n}\n","/**\n * @copyright Copyright (c) 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport { loadState } from '@nextcloud/initial-state'\nimport Vue from 'vue'\n\nimport PersonalSettings from './views/PersonalSettings'\nimport store from './store'\n\nVue.prototype.t = t\n\nconst initialState = loadState('twofactor_backupcodes', 'state')\nstore.replaceState(initialState)\n\nconst View = Vue.extend(PersonalSettings)\nnew View({\n\tstore,\n}).$mount('#twofactor-backupcodes-settings')\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, \"\\n.backup-code[data-v-00d0b868] {\\n\\tfont-family: monospace;\\n\\tletter-spacing: 0.02em;\\n\\tfont-size: 1.2em;\\n}\\n.button[data-v-00d0b868] {\\n\\tdisplay: inline-block;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/twofactor_backupcodes/src/views/PersonalSettings.vue\"],\"names\":[],\"mappings\":\";AAyHA;CACA,sBAAA;CACA,sBAAA;CACA,gBAAA;AACA;AACA;CACA,qBAAA;AACA\",\"sourcesContent\":[\"<template>\\n\\t<div>\\n\\t\\t<button v-if=\\\"!enabled\\\"\\n\\t\\t\\tid=\\\"generate-backup-codes\\\"\\n\\t\\t\\t:disabled=\\\"generatingCodes\\\"\\n\\t\\t\\t@click=\\\"generateBackupCodes\\\">\\n\\t\\t\\t{{ t('twofactor_backupcodes', 'Generate backup codes') }}\\n\\t\\t\\t<span :class=\\\"{'icon-loading-small': generatingCodes}\\\" />\\n\\t\\t</button>\\n\\t\\t<template v-else>\\n\\t\\t\\t<p>\\n\\t\\t\\t\\t<template v-if=\\\"!haveCodes\\\">\\n\\t\\t\\t\\t\\t{{ t('twofactor_backupcodes', 'Backup codes have been generated. {used} of {total} codes have been used.', {used, total}) }}\\n\\t\\t\\t\\t</template>\\n\\t\\t\\t\\t<template v-else>\\n\\t\\t\\t\\t\\t{{ t('twofactor_backupcodes', 'These are your backup codes. Please save and/or print them as you will not be able to read the codes again later') }}\\n\\t\\t\\t\\t\\t<ul>\\n\\t\\t\\t\\t\\t\\t<li v-for=\\\"code in codes\\\" :key=\\\"code\\\" class=\\\"backup-code\\\">\\n\\t\\t\\t\\t\\t\\t\\t{{ code }}\\n\\t\\t\\t\\t\\t\\t</li>\\n\\t\\t\\t\\t\\t</ul>\\n\\t\\t\\t\\t\\t<a :href=\\\"downloadUrl\\\"\\n\\t\\t\\t\\t\\t\\tclass=\\\"button primary\\\"\\n\\t\\t\\t\\t\\t\\t:download=\\\"downloadFilename\\\">{{ t('twofactor_backupcodes', 'Save backup codes') }}</a>\\n\\t\\t\\t\\t\\t<button class=\\\"button\\\"\\n\\t\\t\\t\\t\\t\\t@click=\\\"printCodes\\\">\\n\\t\\t\\t\\t\\t\\t{{ t('twofactor_backupcodes', 'Print backup codes') }}\\n\\t\\t\\t\\t\\t</button>\\n\\t\\t\\t\\t</template>\\n\\t\\t\\t</p>\\n\\t\\t\\t<p>\\n\\t\\t\\t\\t<button id=\\\"generate-backup-codes\\\"\\n\\t\\t\\t\\t\\t@click=\\\"generateBackupCodes\\\">\\n\\t\\t\\t\\t\\t{{ t('twofactor_backupcodes', 'Regenerate backup codes') }}\\n\\t\\t\\t\\t</button>\\n\\t\\t\\t</p>\\n\\t\\t\\t<p>\\n\\t\\t\\t\\t<em>\\n\\t\\t\\t\\t\\t{{ t('twofactor_backupcodes', 'If you regenerate backup codes, you automatically invalidate old codes.') }}\\n\\t\\t\\t\\t</em>\\n\\t\\t\\t</p>\\n\\t\\t</template>\\n\\t</div>\\n</template>\\n\\n<script>\\nimport confirmPassword from '@nextcloud/password-confirmation'\\nimport { print } from '../service/PrintService'\\n\\nexport default {\\n\\tname: 'PersonalSettings',\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tgeneratingCodes: false,\\n\\t\\t}\\n\\t},\\n\\tcomputed: {\\n\\t\\tdownloadUrl() {\\n\\t\\t\\tif (!this.codes) {\\n\\t\\t\\t\\treturn ''\\n\\t\\t\\t}\\n\\t\\t\\treturn 'data:text/plain,' + encodeURIComponent(this.codes.reduce((prev, code) => {\\n\\t\\t\\t\\treturn prev + code + '\\\\r\\\\n'\\n\\t\\t\\t}, ''))\\n\\t\\t},\\n\\t\\tdownloadFilename() {\\n\\t\\t\\tconst name = OC.theme.name || 'Nextcloud'\\n\\t\\t\\treturn name + '-backup-codes.txt'\\n\\t\\t},\\n\\t\\tenabled() {\\n\\t\\t\\treturn this.$store.state.enabled\\n\\t\\t},\\n\\t\\ttotal() {\\n\\t\\t\\treturn this.$store.state.total\\n\\t\\t},\\n\\t\\tused() {\\n\\t\\t\\treturn this.$store.state.used\\n\\t\\t},\\n\\t\\tcodes() {\\n\\t\\t\\treturn this.$store.state.codes\\n\\t\\t},\\n\\t\\tname() {\\n\\t\\t\\treturn OC.theme.name || 'Nextcloud'\\n\\t\\t},\\n\\t\\thaveCodes() {\\n\\t\\t\\treturn this.codes && this.codes.length > 0\\n\\t\\t},\\n\\t},\\n\\tmethods: {\\n\\t\\tgenerateBackupCodes() {\\n\\t\\t\\tconfirmPassword().then(() => {\\n\\t\\t\\t\\t// Hide old codes\\n\\t\\t\\t\\tthis.generatingCodes = true\\n\\n\\t\\t\\t\\tthis.$store.dispatch('generate').then(data => {\\n\\t\\t\\t\\t\\tthis.generatingCodes = false\\n\\t\\t\\t\\t}).catch(err => {\\n\\t\\t\\t\\t\\tOC.Notification.showTemporary(t('twofactor_backupcodes', 'An error occurred while generating your backup codes'))\\n\\t\\t\\t\\t\\tthis.generatingCodes = false\\n\\t\\t\\t\\t\\tthrow err\\n\\t\\t\\t\\t})\\n\\t\\t\\t}).catch(console.error.bind(this))\\n\\t\\t},\\n\\n\\t\\tgetPrintData(codes) {\\n\\t\\t\\tif (!codes) {\\n\\t\\t\\t\\treturn ''\\n\\t\\t\\t}\\n\\t\\t\\treturn codes.reduce((prev, code) => {\\n\\t\\t\\t\\treturn prev + code + '<br>'\\n\\t\\t\\t}, '')\\n\\t\\t},\\n\\n\\t\\tprintCodes() {\\n\\t\\t\\tprint(this.getPrintData(this.codes))\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style scoped>\\n\\t.backup-code {\\n\\t\\tfont-family: monospace;\\n\\t\\tletter-spacing: 0.02em;\\n\\t\\tfont-size: 1.2em;\\n\\t}\\n\\t.button {\\n\\t\\tdisplay: inline-block;\\n\\t}\\n</style>\\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 = 2870;","__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\t2870: 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));","__webpack_require__.nc = undefined;","// 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__(13895); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","data","name","newTab","OC","theme","window","open","t","document","write","print","close","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_c","_self","enabled","haveCodes","_v","_s","_l","code","key","staticClass","attrs","downloadUrl","downloadFilename","on","printCodes","used","total","generateBackupCodes","generatingCodes","class","Vue","Vuex","mutations","setEnabled","state","setTotal","setUsed","setCodes","codes","actions","generate","url","commit","generateUrl","Axios","then","resp","Store","strict","process","initialState","loadState","store","replaceState","PersonalSettings","$mount","___CSS_LOADER_EXPORT___","push","module","id","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","children","b","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/updatenotification-updatenotification.js b/dist/updatenotification-updatenotification.js
index 93649619c08..d543fee5ece 100644
--- a/dist/updatenotification-updatenotification.js
+++ b/dist/updatenotification-updatenotification.js
@@ -1,3 +1,3 @@
/*! For license information please see updatenotification-updatenotification.js.LICENSE.txt */
-!function(){"use strict";var e,a={36267:function(e,a,i){var o=i(20144),s=i(79753),r=i(26533),p=i.n(r),l=i(7811),c=i.n(l),d=i(34741),u=i(2649),h=i.n(u);d.VTooltip.options.defaultHtml=!1;var f={name:"UpdateNotification",components:{Multiselect:c(),PopoverMenu:p()},directives:{ClickOutside:h(),tooltip:d.VTooltip},data:function(){return{newVersionString:"",lastCheckedDate:"",isUpdateChecked:!1,webUpdaterEnabled:!0,isWebUpdaterRecommended:!0,updaterEnabled:!0,versionIsEol:!1,downloadLink:"",isNewVersionAvailable:!1,hasValidSubscription:!1,updateServerURL:"",changelogURL:"",whatsNewData:[],currentChannel:"",channels:[],notifyGroups:"",availableGroups:[],isDefaultUpdateServerURL:!0,enableChangeWatcher:!1,availableAppUpdates:[],missingAppUpdates:[],appStoreFailed:!1,appStoreDisabled:!1,isListFetched:!1,hideMissingUpdates:!1,hideAvailableUpdates:!0,openedWhatsNew:!1,openedUpdateChannelMenu:!1}},_$el:null,_$notifyGroups:null,computed:{newVersionAvailableString:function(){return t("updatenotification","A new version is available: <strong>{newVersionString}</strong>",{newVersionString:this.newVersionString})},noteDelayedStableString:function(){return t("updatenotification","Note that after a new release the update only shows up after the first minor release or later. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found. Learn more about updates and release channels at {link}").replace("{link}",'<a href="https://nextcloud.com/release-channels/">https://nextcloud.com/release-channels/</a>')},lastCheckedOnString:function(){return t("updatenotification","Checked on {lastCheckedDate}",{lastCheckedDate:this.lastCheckedDate})},statusText:function(){return this.isListFetched?this.appStoreDisabled?t("updatenotification","Please make sure your config.php does not set <samp>appstoreenabled</samp> to false."):this.appStoreFailed?t("updatenotification","Could not connect to the App Store or no updates have been returned at all. Search manually for updates or make sure your server has access to the internet and can connect to the App Store."):0===this.missingAppUpdates.length?t("updatenotification","<strong>All</strong> apps have a compatible version for this Nextcloud version available.",this):n("updatenotification","<strong>%n</strong> app has no compatible version for this Nextcloud version available.","<strong>%n</strong> apps have no compatible version for this Nextcloud version available.",this.missingAppUpdates.length):t("updatenotification","Checking apps for compatible versions")},whatsNew:function(){if(0===this.whatsNewData.length)return null;var n=[];for(var e in this.whatsNewData)n[e]={icon:"icon-checkmark",longtext:this.whatsNewData[e]};return this.changelogURL&&n.push({href:this.changelogURL,text:t("updatenotification","View changelog"),icon:"icon-link",target:"_blank",action:""}),n},channelList:function(){var n=[];return n.push({text:t("updatenotification","Enterprise"),longtext:t("updatenotification","For enterprise use. Provides always the latest patch level, but will not update to the next major release immediately. That update happens once Nextcloud GmbH has done additional hardening and testing for large-scale and mission-critical deployments. This channel is only available to customers and provides the Nextcloud Enterprise package."),icon:"icon-star",active:"enterprise"===this.currentChannel,disabled:!this.hasValidSubscription,action:this.changeReleaseChannelToEnterprise}),n.push({text:t("updatenotification","Stable"),longtext:t("updatenotification","The most recent stable version. It is suited for regular use and will always update to the latest major version."),icon:"icon-checkmark",active:"stable"===this.currentChannel,action:this.changeReleaseChannelToStable}),n.push({text:t("updatenotification","Beta"),longtext:t("updatenotification","A pre-release version only for testing new features, not for production environments."),icon:"icon-category-customization",active:"beta"===this.currentChannel,action:this.changeReleaseChannelToBeta}),this.isNonDefaultChannel&&n.push({text:this.currentChannel,icon:"icon-rename",active:!0}),n},isNonDefaultChannel:function(){return"enterprise"!==this.currentChannel&&"stable"!==this.currentChannel&&"beta"!==this.currentChannel},localizedChannelName:function(){switch(this.currentChannel){case"enterprise":return t("updatenotification","Enterprise");case"stable":return t("updatenotification","Stable");case"beta":return t("updatenotification","Beta");default:return this.currentChannel}}},watch:{notifyGroups:function(n){if(this.enableChangeWatcher){var t=[];_.each(n,(function(n){t.push(n.value)})),OCP.AppConfig.setValue("updatenotification","notify_groups",JSON.stringify(t))}},isNewVersionAvailable:function(){this.isNewVersionAvailable&&$.ajax({url:(0,s.generateOcsUrl)("apps/updatenotification/api/v1/applist/{newVersion}",{newVersion:this.newVersion}),type:"GET",beforeSend:function(n){n.setRequestHeader("Accept","application/json")},success:function(n){this.availableAppUpdates=n.ocs.data.available,this.missingAppUpdates=n.ocs.data.missing,this.isListFetched=!0,this.appStoreFailed=!1}.bind(this),error:function(n){this.availableAppUpdates=[],this.missingAppUpdates=[],this.appStoreDisabled=n.responseJSON.ocs.data.appstore_disabled,this.isListFetched=!0,this.appStoreFailed=!0}.bind(this)})}},beforeMount:function(){var n=JSON.parse($("#updatenotification").attr("data-json"));this.newVersion=n.newVersion,this.newVersionString=n.newVersionString,this.lastCheckedDate=n.lastChecked,this.isUpdateChecked=n.isUpdateChecked,this.webUpdaterEnabled=n.webUpdaterEnabled,this.isWebUpdaterRecommended=n.isWebUpdaterRecommended,this.updaterEnabled=n.updaterEnabled,this.downloadLink=n.downloadLink,this.isNewVersionAvailable=n.isNewVersionAvailable,this.updateServerURL=n.updateServerURL,this.currentChannel=n.currentChannel,this.channels=n.channels,this.notifyGroups=n.notifyGroups,this.isDefaultUpdateServerURL=n.isDefaultUpdateServerURL,this.versionIsEol=n.versionIsEol,this.hasValidSubscription=n.hasValidSubscription,n.changes&&n.changes.changelogURL&&(this.changelogURL=n.changes.changelogURL),n.changes&&n.changes.whatsNew&&(n.changes.whatsNew.admin&&(this.whatsNewData=this.whatsNewData.concat(n.changes.whatsNew.admin)),this.whatsNewData=this.whatsNewData.concat(n.changes.whatsNew.regular))},mounted:function(){this._$el=$(this.$el),this._$notifyGroups=this._$el.find("#oca_updatenotification_groups_list"),this._$notifyGroups.on("change",function(){this.$emit("input")}.bind(this)),$.ajax({url:(0,s.generateOcsUrl)("cloud/groups"),dataType:"json",success:function(n){var t=[];$.each(n.ocs.data.groups,(function(n,e){t.push({value:e,label:e})})),this.availableGroups=t,this.enableChangeWatcher=!0}.bind(this)})},methods:{clickUpdaterButton:function(){$.ajax({url:(0,s.generateUrl)("/apps/updatenotification/credentials")}).success((function(n){var t=document.createElement("form");t.setAttribute("method","post"),t.setAttribute("action",(0,s.getRootUrl)()+"/updater/");var e=document.createElement("input");e.setAttribute("type","hidden"),e.setAttribute("name","updater-secret-input"),e.setAttribute("value",n),t.appendChild(e),document.body.appendChild(t),t.submit()}))},changeReleaseChannelToEnterprise:function(){this.changeReleaseChannel("enterprise")},changeReleaseChannelToStable:function(){this.changeReleaseChannel("stable")},changeReleaseChannelToBeta:function(){this.changeReleaseChannel("beta")},changeReleaseChannel:function(n){this.currentChannel=n,$.ajax({url:(0,s.generateUrl)("/apps/updatenotification/channel"),type:"POST",data:{channel:this.currentChannel},success:function(n){OC.msg.finishedAction("#channel_save_msg",n)}}),this.openedUpdateChannelMenu=!1},toggleUpdateChannelMenu:function(){this.openedUpdateChannelMenu=!this.openedUpdateChannelMenu},toggleHideMissingUpdates:function(){this.hideMissingUpdates=!this.hideMissingUpdates},toggleHideAvailableUpdates:function(){this.hideAvailableUpdates=!this.hideAvailableUpdates},toggleMenu:function(){this.openedWhatsNew=!this.openedWhatsNew},closeUpdateChannelMenu:function(){this.openedUpdateChannelMenu=!1},hideMenu:function(){this.openedWhatsNew=!1}}},v=i(93379),A=i.n(v),m=i(7795),g=i.n(m),C=i(90569),b=i.n(C),w=i(3565),U=i.n(w),k=i(19216),y=i.n(k),x=i(44589),N=i.n(x),S=i(41044),E={};E.styleTagTransform=N(),E.setAttributes=U(),E.insert=b().bind(null,"head"),E.domAPI=g(),E.insertStyleElement=y(),A()(S.Z,E),S.Z&&S.Z.locals&&S.Z.locals;var D=i(16722),M={};M.styleTagTransform=N(),M.setAttributes=U(),M.insert=b().bind(null,"head"),M.domAPI=g(),M.insertStyleElement=y(),A()(D.Z,M),D.Z&&D.Z.locals&&D.Z.locals;var L=(0,i(51900).Z)(f,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"followupsection",attrs:{id:"updatenotification"}},[e("div",{staticClass:"update"},[n.isNewVersionAvailable?[n.versionIsEol?e("p",[e("span",{staticClass:"warning"},[e("span",{staticClass:"icon icon-error-white"}),n._v("\n\t\t\t\t\t"+n._s(n.t("updatenotification","The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible."))+"\n\t\t\t\t")])]):n._e(),n._v(" "),e("p",[e("span",{domProps:{innerHTML:n._s(n.newVersionAvailableString)}}),e("br"),n._v(" "),n.isListFetched?n._e():e("span",{staticClass:"icon icon-loading-small"}),n._v(" "),e("span",{domProps:{innerHTML:n._s(n.statusText)}})]),n._v(" "),n.missingAppUpdates.length?[e("h3",{on:{click:n.toggleHideMissingUpdates}},[n._v("\n\t\t\t\t\t"+n._s(n.t("updatenotification","Apps missing compatible version"))+"\n\t\t\t\t\t"),n.hideMissingUpdates?n._e():e("span",{staticClass:"icon icon-triangle-n"}),n._v(" "),n.hideMissingUpdates?e("span",{staticClass:"icon icon-triangle-s"}):n._e()]),n._v(" "),n.hideMissingUpdates?n._e():e("ul",{staticClass:"applist"},n._l(n.missingAppUpdates,(function(t,a){return e("li",{key:a},[e("a",{attrs:{href:"https://apps.nextcloud.com/apps/"+t.appId,title:n.t("settings","View in store")}},[n._v(n._s(t.appName)+" ↗")])])})),0)]:n._e(),n._v(" "),n.availableAppUpdates.length?[e("h3",{on:{click:n.toggleHideAvailableUpdates}},[n._v("\n\t\t\t\t\t"+n._s(n.t("updatenotification","Apps with compatible version"))+"\n\t\t\t\t\t"),n.hideAvailableUpdates?n._e():e("span",{staticClass:"icon icon-triangle-n"}),n._v(" "),n.hideAvailableUpdates?e("span",{staticClass:"icon icon-triangle-s"}):n._e()]),n._v(" "),n.hideAvailableUpdates?n._e():e("ul",{staticClass:"applist"},n._l(n.availableAppUpdates,(function(t,a){return e("li",{key:a},[e("a",{attrs:{href:"https://apps.nextcloud.com/apps/"+t.appId,title:n.t("settings","View in store")}},[n._v(n._s(t.appName)+" ↗")])])})),0)]:n._e(),n._v(" "),!n.isWebUpdaterRecommended&&n.updaterEnabled&&n.webUpdaterEnabled?[e("h3",{staticClass:"warning"},[n._v("\n\t\t\t\t\t"+n._s(n.t("updatenotification","Please note that the web updater is not recommended with more than 100 users! Please use the command line updater instead!"))+"\n\t\t\t\t")])]:n._e(),n._v(" "),e("div",[n.updaterEnabled&&n.webUpdaterEnabled?e("a",{staticClass:"button primary",attrs:{href:"#"},on:{click:n.clickUpdaterButton}},[n._v(n._s(n.t("updatenotification","Open updater")))]):n._e(),n._v(" "),n.downloadLink?e("a",{staticClass:"button",class:{hidden:!n.updaterEnabled},attrs:{href:n.downloadLink}},[n._v(n._s(n.t("updatenotification","Download now")))]):n._e(),n._v(" "),n.updaterEnabled&&!n.webUpdaterEnabled?e("span",[n._v("\n\t\t\t\t\t"+n._s(n.t("updatenotification","Please use the command line updater to update."))+"\n\t\t\t\t")]):n._e(),n._v(" "),n.whatsNew?e("div",{staticClass:"whatsNew"},[e("div",{staticClass:"toggleWhatsNew"},[e("a",{directives:[{name:"click-outside",rawName:"v-click-outside",value:n.hideMenu,expression:"hideMenu"}],staticClass:"button",on:{click:n.toggleMenu}},[n._v(n._s(n.t("updatenotification","What's new?")))]),n._v(" "),e("div",{staticClass:"popovermenu",class:{"menu-center":!0,open:n.openedWhatsNew}},[e("PopoverMenu",{attrs:{menu:n.whatsNew}})],1)])]):n._e()])]:n.isUpdateChecked?[n._v("\n\t\t\t"+n._s(n.t("updatenotification","Your version is up to date."))+"\n\t\t\t"),e("span",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:n.lastCheckedOnString,expression:"lastCheckedOnString",modifiers:{auto:!0}}],staticClass:"icon-info svg"})]:[n._v("\n\t\t\t"+n._s(n.t("updatenotification","The update check is not yet finished. Please refresh the page."))+"\n\t\t")],n._v(" "),n.isDefaultUpdateServerURL?n._e():[e("p",{staticClass:"topMargin"},[e("em",[n._v(n._s(n.t("updatenotification","A non-default update server is in use to be checked for updates:"))+" "),e("code",[n._v(n._s(n.updateServerURL))])])])]],2),n._v(" "),e("div",[n._v("\n\t\t"+n._s(n.t("updatenotification","You can change the update channel below which also affects the apps management page. E.g. after switching to the beta channel, beta app updates will be offered to you in the apps management page."))+"\n\t")]),n._v(" "),e("h3",{staticClass:"update-channel-selector"},[n._v("\n\t\t"+n._s(n.t("updatenotification","Update channel:"))+"\n\t\t"),e("div",{directives:[{name:"click-outside",rawName:"v-click-outside",value:n.closeUpdateChannelMenu,expression:"closeUpdateChannelMenu"}],staticClass:"update-menu"},[e("span",{staticClass:"icon-update-menu",on:{click:n.toggleUpdateChannelMenu}},[n._v("\n\t\t\t\t"+n._s(n.localizedChannelName)+"\n\t\t\t\t"),e("span",{staticClass:"icon-triangle-s"})]),n._v(" "),e("div",{staticClass:"popovermenu menu menu-center",class:{"show-menu":n.openedUpdateChannelMenu}},[e("PopoverMenu",{attrs:{menu:n.channelList}})],1)])]),n._v(" "),e("span",{staticClass:"msg",attrs:{id:"channel_save_msg"}}),e("br"),n._v(" "),e("p",[e("em",[n._v(n._s(n.t("updatenotification","You can always update to a newer version. But you can never downgrade to a more stable version.")))]),e("br"),n._v(" "),e("em",{domProps:{innerHTML:n._s(n.noteDelayedStableString)}})]),n._v(" "),e("p",{attrs:{id:"oca_updatenotification_groups"}},[n._v("\n\t\t"+n._s(n.t("updatenotification","Notify members of the following groups about available updates:"))+"\n\t\t"),e("Multiselect",{attrs:{options:n.availableGroups,multiple:!0,label:"label","track-by":"value","tag-width":75},model:{value:n.notifyGroups,callback:function(t){n.notifyGroups=t},expression:"notifyGroups"}}),e("br"),n._v(" "),"daily"===n.currentChannel||"git"===n.currentChannel?e("em",[n._v(n._s(n.t("updatenotification","Only notifications for app updates are available.")))]):n._e(),n._v(" "),"daily"===n.currentChannel?e("em",[n._v(n._s(n.t("updatenotification","The selected update channel makes dedicated notifications for the server obsolete.")))]):n._e(),n._v(" "),"git"===n.currentChannel?e("em",[n._v(n._s(n.t("updatenotification","The selected update channel does not support updates of the server.")))]):n._e()],1)])}),[],!1,null,"418946e4",null).exports;o.default.mixin({methods:{t:function(n,t,e,a,i){return OC.L10N.translate(n,t,e,a,i)},n:function(n,t,e,a,i,o){return OC.L10N.translatePlural(n,t,e,a,i,o)}}}),new o.default({el:"#updatenotification",render:function(n){return n(L)}})},41044:function(n,t,e){var a=e(87537),i=e.n(a),o=e(23645),s=e.n(o)()(i());s.push([n.id,"#updatenotification[data-v-418946e4]{margin-top:-25px;margin-bottom:200px}#updatenotification div.update[data-v-418946e4],#updatenotification p[data-v-418946e4]:not(.inlineblock){margin-bottom:25px}#updatenotification h2.inlineblock[data-v-418946e4]{margin-top:25px}#updatenotification h3[data-v-418946e4]{cursor:pointer}#updatenotification h3 .icon[data-v-418946e4]{cursor:pointer}#updatenotification h3[data-v-418946e4]:first-of-type{margin-top:0}#updatenotification h3.update-channel-selector[data-v-418946e4]{display:inline-block;cursor:inherit}#updatenotification .icon[data-v-418946e4]{display:inline-block;margin-bottom:-3px}#updatenotification .icon-triangle-s[data-v-418946e4],#updatenotification .icon-triangle-n[data-v-418946e4]{opacity:.5}#updatenotification .whatsNew[data-v-418946e4]{display:inline-block}#updatenotification .toggleWhatsNew[data-v-418946e4]{position:relative}#updatenotification .popovermenu[data-v-418946e4]{margin-top:5px;width:300px}#updatenotification .popovermenu p[data-v-418946e4]{margin-bottom:0;width:100%}#updatenotification .applist[data-v-418946e4]{margin-bottom:25px}#updatenotification .update-menu[data-v-418946e4]{position:relative;cursor:pointer;margin-left:3px;display:inline-block}#updatenotification .update-menu .icon-update-menu[data-v-418946e4]{cursor:inherit}#updatenotification .update-menu .icon-update-menu .icon-triangle-s[data-v-418946e4]{display:inline-block;vertical-align:middle;cursor:inherit;opacity:1}#updatenotification .update-menu .popovermenu[data-v-418946e4]{display:none;top:28px}#updatenotification .update-menu .popovermenu.show-menu[data-v-418946e4]{display:block}","",{version:3,sources:["webpack://./apps/updatenotification/src/components/UpdateNotification.vue"],names:[],mappings:"AAwcA,qCACC,gBAAA,CACA,mBAAA,CACA,yGAEC,kBAAA,CAED,oDACC,eAAA,CAED,wCACC,cAAA,CACA,8CACC,cAAA,CAED,sDACC,YAAA,CAED,gEACC,oBAAA,CACA,cAAA,CAGF,2CACC,oBAAA,CACA,kBAAA,CAED,4GACC,UAAA,CAED,+CACC,oBAAA,CAED,qDACC,iBAAA,CAED,kDAKC,cAAA,CACA,WAAA,CALA,oDACC,eAAA,CACA,UAAA,CAKF,8CACC,kBAAA,CAGD,kDACC,iBAAA,CACA,cAAA,CACA,eAAA,CACA,oBAAA,CACA,oEACC,cAAA,CACA,qFACC,oBAAA,CACA,qBAAA,CACA,cAAA,CACA,SAAA,CAGF,+DACC,YAAA,CACA,QAAA,CACA,yEACC,aAAA",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n#updatenotification {\n\tmargin-top: -25px;\n\tmargin-bottom: 200px;\n\tdiv.update,\n\tp:not(.inlineblock) {\n\t\tmargin-bottom: 25px;\n\t}\n\th2.inlineblock {\n\t\tmargin-top: 25px;\n\t}\n\th3 {\n\t\tcursor: pointer;\n\t\t.icon {\n\t\t\tcursor: pointer;\n\t\t}\n\t\t&:first-of-type {\n\t\t\tmargin-top: 0;\n\t\t}\n\t\t&.update-channel-selector {\n\t\t\tdisplay: inline-block;\n\t\t\tcursor: inherit;\n\t\t}\n\t}\n\t.icon {\n\t\tdisplay: inline-block;\n\t\tmargin-bottom: -3px;\n\t}\n\t.icon-triangle-s, .icon-triangle-n {\n\t\topacity: 0.5;\n\t}\n\t.whatsNew {\n\t\tdisplay: inline-block;\n\t}\n\t.toggleWhatsNew {\n\t\tposition: relative;\n\t}\n\t.popovermenu {\n\t\tp {\n\t\t\tmargin-bottom: 0;\n\t\t\twidth: 100%;\n\t\t}\n\t\tmargin-top: 5px;\n\t\twidth: 300px;\n\t}\n\t.applist {\n\t\tmargin-bottom: 25px;\n\t}\n\n\t.update-menu {\n\t\tposition: relative;\n\t\tcursor: pointer;\n\t\tmargin-left: 3px;\n\t\tdisplay: inline-block;\n\t\t.icon-update-menu {\n\t\t\tcursor: inherit;\n\t\t\t.icon-triangle-s {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tvertical-align: middle;\n\t\t\t\tcursor: inherit;\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\t\t.popovermenu {\n\t\t\tdisplay: none;\n\t\t\ttop: 28px;\n\t\t\t&.show-menu {\n\t\t\t\tdisplay: block;\n\t\t\t}\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),t.Z=s},16722:function(n,t,e){var a=e(87537),i=e.n(a),o=e(23645),s=e.n(o)()(i());s.push([n.id,"#updatenotification .popovermenu{margin-top:5px;width:300px}#updatenotification .popovermenu p{margin-top:5px;width:100%}#updatenotification .update-menu .icon-star:hover,#updatenotification .update-menu .icon-star:focus{background-image:var(--icon-star-000)}#updatenotification .topMargin{margin-top:15px}","",{version:3,sources:["webpack://./apps/updatenotification/src/components/UpdateNotification.vue"],names:[],mappings:"AAkhBA,iCAKC,cAAA,CACA,WAAA,CALA,mCACC,cAAA,CACA,UAAA,CAMF,oGAEC,qCAAA,CAED,+BACC,eAAA",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* override needed to make menu wider */\n#updatenotification .popovermenu {\n\tp {\n\t\tmargin-top: 5px;\n\t\twidth: 100%;\n\t}\n\tmargin-top: 5px;\n\twidth: 300px;\n}\n/* override needed to replace yellow hover state with a dark one */\n#updatenotification .update-menu .icon-star:hover,\n#updatenotification .update-menu .icon-star:focus {\n\tbackground-image: var(--icon-star-000);\n}\n#updatenotification .topMargin {\n\tmargin-top: 15px;\n}\n"],sourceRoot:""}]),t.Z=s}},i={};function o(n){var t=i[n];if(void 0!==t)return t.exports;var e=i[n]={id:n,loaded:!1,exports:{}};return a[n].call(e.exports,e,e.exports,o),e.loaded=!0,e.exports}o.m=a,o.amdD=function(){throw new Error("define cannot be used indirect")},o.amdO={},e=[],o.O=function(n,t,a,i){if(!t){var s=1/0;for(c=0;c<e.length;c++){t=e[c][0],a=e[c][1],i=e[c][2];for(var r=!0,p=0;p<t.length;p++)(!1&i||s>=i)&&Object.keys(o.O).every((function(n){return o.O[n](t[p])}))?t.splice(p--,1):(r=!1,i<s&&(s=i));if(r){e.splice(c--,1);var l=a();void 0!==l&&(n=l)}}return n}i=i||0;for(var c=e.length;c>0&&e[c-1][2]>i;c--)e[c]=e[c-1];e[c]=[t,a,i]},o.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return o.d(t,{a:t}),t},o.d=function(n,t){for(var e in t)o.o(t,e)&&!o.o(n,e)&&Object.defineProperty(n,e,{enumerable:!0,get:t[e]})},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),o.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},o.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},o.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n},o.j=7292,function(){o.b=document.baseURI||self.location.href;var n={7292:0};o.O.j=function(t){return 0===n[t]};var t=function(t,e){var a,i,s=e[0],r=e[1],p=e[2],l=0;if(s.some((function(t){return 0!==n[t]}))){for(a in r)o.o(r,a)&&(o.m[a]=r[a]);if(p)var c=p(o)}for(t&&t(e);l<s.length;l++)i=s[l],o.o(n,i)&&n[i]&&n[i][0](),n[i]=0;return o.O(c)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(t.bind(null,0)),e.push=t.bind(null,e.push.bind(e))}();var s=o.O(void 0,[7874],(function(){return o(36267)}));s=o.O(s)}();
-//# sourceMappingURL=updatenotification-updatenotification.js.map?v=d45c580623911e9ec4d6 \ No newline at end of file
+!function(){"use strict";var e,a={36267:function(e,a,i){var o=i(20144),s=i(79753),r=i(26533),p=i.n(r),l=i(7811),c=i.n(l),d=i(34741),u=i(2649),h=i.n(u);d.VTooltip.options.defaultHtml=!1;var f={name:"UpdateNotification",components:{Multiselect:c(),PopoverMenu:p()},directives:{ClickOutside:h(),tooltip:d.VTooltip},data:function(){return{newVersionString:"",lastCheckedDate:"",isUpdateChecked:!1,webUpdaterEnabled:!0,isWebUpdaterRecommended:!0,updaterEnabled:!0,versionIsEol:!1,downloadLink:"",isNewVersionAvailable:!1,hasValidSubscription:!1,updateServerURL:"",changelogURL:"",whatsNewData:[],currentChannel:"",channels:[],notifyGroups:"",availableGroups:[],isDefaultUpdateServerURL:!0,enableChangeWatcher:!1,availableAppUpdates:[],missingAppUpdates:[],appStoreFailed:!1,appStoreDisabled:!1,isListFetched:!1,hideMissingUpdates:!1,hideAvailableUpdates:!0,openedWhatsNew:!1,openedUpdateChannelMenu:!1}},_$el:null,_$notifyGroups:null,computed:{newVersionAvailableString:function(){return t("updatenotification","A new version is available: <strong>{newVersionString}</strong>",{newVersionString:this.newVersionString})},noteDelayedStableString:function(){return t("updatenotification","Note that after a new release the update only shows up after the first minor release or later. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found. Learn more about updates and release channels at {link}").replace("{link}",'<a href="https://nextcloud.com/release-channels/">https://nextcloud.com/release-channels/</a>')},lastCheckedOnString:function(){return t("updatenotification","Checked on {lastCheckedDate}",{lastCheckedDate:this.lastCheckedDate})},statusText:function(){return this.isListFetched?this.appStoreDisabled?t("updatenotification","Please make sure your config.php does not set <samp>appstoreenabled</samp> to false."):this.appStoreFailed?t("updatenotification","Could not connect to the App Store or no updates have been returned at all. Search manually for updates or make sure your server has access to the internet and can connect to the App Store."):0===this.missingAppUpdates.length?t("updatenotification","<strong>All</strong> apps have a compatible version for this Nextcloud version available.",this):n("updatenotification","<strong>%n</strong> app has no compatible version for this Nextcloud version available.","<strong>%n</strong> apps have no compatible version for this Nextcloud version available.",this.missingAppUpdates.length):t("updatenotification","Checking apps for compatible versions")},whatsNew:function(){if(0===this.whatsNewData.length)return null;var n=[];for(var e in this.whatsNewData)n[e]={icon:"icon-checkmark",longtext:this.whatsNewData[e]};return this.changelogURL&&n.push({href:this.changelogURL,text:t("updatenotification","View changelog"),icon:"icon-link",target:"_blank",action:""}),n},channelList:function(){var n=[];return n.push({text:t("updatenotification","Enterprise"),longtext:t("updatenotification","For enterprise use. Provides always the latest patch level, but will not update to the next major release immediately. That update happens once Nextcloud GmbH has done additional hardening and testing for large-scale and mission-critical deployments. This channel is only available to customers and provides the Nextcloud Enterprise package."),icon:"icon-star",active:"enterprise"===this.currentChannel,disabled:!this.hasValidSubscription,action:this.changeReleaseChannelToEnterprise}),n.push({text:t("updatenotification","Stable"),longtext:t("updatenotification","The most recent stable version. It is suited for regular use and will always update to the latest major version."),icon:"icon-checkmark",active:"stable"===this.currentChannel,action:this.changeReleaseChannelToStable}),n.push({text:t("updatenotification","Beta"),longtext:t("updatenotification","A pre-release version only for testing new features, not for production environments."),icon:"icon-category-customization",active:"beta"===this.currentChannel,action:this.changeReleaseChannelToBeta}),this.isNonDefaultChannel&&n.push({text:this.currentChannel,icon:"icon-rename",active:!0}),n},isNonDefaultChannel:function(){return"enterprise"!==this.currentChannel&&"stable"!==this.currentChannel&&"beta"!==this.currentChannel},localizedChannelName:function(){switch(this.currentChannel){case"enterprise":return t("updatenotification","Enterprise");case"stable":return t("updatenotification","Stable");case"beta":return t("updatenotification","Beta");default:return this.currentChannel}}},watch:{notifyGroups:function(n){if(this.enableChangeWatcher){var t=[];_.each(n,(function(n){t.push(n.value)})),OCP.AppConfig.setValue("updatenotification","notify_groups",JSON.stringify(t))}},isNewVersionAvailable:function(){this.isNewVersionAvailable&&$.ajax({url:(0,s.generateOcsUrl)("apps/updatenotification/api/v1/applist/{newVersion}",{newVersion:this.newVersion}),type:"GET",beforeSend:function(n){n.setRequestHeader("Accept","application/json")},success:function(n){this.availableAppUpdates=n.ocs.data.available,this.missingAppUpdates=n.ocs.data.missing,this.isListFetched=!0,this.appStoreFailed=!1}.bind(this),error:function(n){this.availableAppUpdates=[],this.missingAppUpdates=[],this.appStoreDisabled=n.responseJSON.ocs.data.appstore_disabled,this.isListFetched=!0,this.appStoreFailed=!0}.bind(this)})}},beforeMount:function(){var n=JSON.parse($("#updatenotification").attr("data-json"));this.newVersion=n.newVersion,this.newVersionString=n.newVersionString,this.lastCheckedDate=n.lastChecked,this.isUpdateChecked=n.isUpdateChecked,this.webUpdaterEnabled=n.webUpdaterEnabled,this.isWebUpdaterRecommended=n.isWebUpdaterRecommended,this.updaterEnabled=n.updaterEnabled,this.downloadLink=n.downloadLink,this.isNewVersionAvailable=n.isNewVersionAvailable,this.updateServerURL=n.updateServerURL,this.currentChannel=n.currentChannel,this.channels=n.channels,this.notifyGroups=n.notifyGroups,this.isDefaultUpdateServerURL=n.isDefaultUpdateServerURL,this.versionIsEol=n.versionIsEol,this.hasValidSubscription=n.hasValidSubscription,n.changes&&n.changes.changelogURL&&(this.changelogURL=n.changes.changelogURL),n.changes&&n.changes.whatsNew&&(n.changes.whatsNew.admin&&(this.whatsNewData=this.whatsNewData.concat(n.changes.whatsNew.admin)),this.whatsNewData=this.whatsNewData.concat(n.changes.whatsNew.regular))},mounted:function(){this._$el=$(this.$el),this._$notifyGroups=this._$el.find("#oca_updatenotification_groups_list"),this._$notifyGroups.on("change",function(){this.$emit("input")}.bind(this)),$.ajax({url:(0,s.generateOcsUrl)("cloud/groups"),dataType:"json",success:function(n){var t=[];$.each(n.ocs.data.groups,(function(n,e){t.push({value:e,label:e})})),this.availableGroups=t,this.enableChangeWatcher=!0}.bind(this)})},methods:{clickUpdaterButton:function(){$.ajax({url:(0,s.generateUrl)("/apps/updatenotification/credentials")}).success((function(n){var t=document.createElement("form");t.setAttribute("method","post"),t.setAttribute("action",(0,s.getRootUrl)()+"/updater/");var e=document.createElement("input");e.setAttribute("type","hidden"),e.setAttribute("name","updater-secret-input"),e.setAttribute("value",n),t.appendChild(e),document.body.appendChild(t),t.submit()}))},changeReleaseChannelToEnterprise:function(){this.changeReleaseChannel("enterprise")},changeReleaseChannelToStable:function(){this.changeReleaseChannel("stable")},changeReleaseChannelToBeta:function(){this.changeReleaseChannel("beta")},changeReleaseChannel:function(n){this.currentChannel=n,$.ajax({url:(0,s.generateUrl)("/apps/updatenotification/channel"),type:"POST",data:{channel:this.currentChannel},success:function(n){OC.msg.finishedAction("#channel_save_msg",n)}}),this.openedUpdateChannelMenu=!1},toggleUpdateChannelMenu:function(){this.openedUpdateChannelMenu=!this.openedUpdateChannelMenu},toggleHideMissingUpdates:function(){this.hideMissingUpdates=!this.hideMissingUpdates},toggleHideAvailableUpdates:function(){this.hideAvailableUpdates=!this.hideAvailableUpdates},toggleMenu:function(){this.openedWhatsNew=!this.openedWhatsNew},closeUpdateChannelMenu:function(){this.openedUpdateChannelMenu=!1},hideMenu:function(){this.openedWhatsNew=!1}}},v=i(93379),A=i.n(v),m=i(7795),g=i.n(m),C=i(90569),b=i.n(C),w=i(3565),U=i.n(w),k=i(19216),y=i.n(k),x=i(44589),N=i.n(x),S=i(41044),E={};E.styleTagTransform=N(),E.setAttributes=U(),E.insert=b().bind(null,"head"),E.domAPI=g(),E.insertStyleElement=y(),A()(S.Z,E),S.Z&&S.Z.locals&&S.Z.locals;var D=i(16722),M={};M.styleTagTransform=N(),M.setAttributes=U(),M.insert=b().bind(null,"head"),M.domAPI=g(),M.insertStyleElement=y(),A()(D.Z,M),D.Z&&D.Z.locals&&D.Z.locals;var L=(0,i(51900).Z)(f,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"followupsection",attrs:{id:"updatenotification"}},[e("div",{staticClass:"update"},[n.isNewVersionAvailable?[n.versionIsEol?e("p",[e("span",{staticClass:"warning"},[e("span",{staticClass:"icon icon-error-white"}),n._v("\n\t\t\t\t\t"+n._s(n.t("updatenotification","The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible."))+"\n\t\t\t\t")])]):n._e(),n._v(" "),e("p",[e("span",{domProps:{innerHTML:n._s(n.newVersionAvailableString)}}),e("br"),n._v(" "),n.isListFetched?n._e():e("span",{staticClass:"icon icon-loading-small"}),n._v(" "),e("span",{domProps:{innerHTML:n._s(n.statusText)}})]),n._v(" "),n.missingAppUpdates.length?[e("h3",{on:{click:n.toggleHideMissingUpdates}},[n._v("\n\t\t\t\t\t"+n._s(n.t("updatenotification","Apps missing compatible version"))+"\n\t\t\t\t\t"),n.hideMissingUpdates?n._e():e("span",{staticClass:"icon icon-triangle-n"}),n._v(" "),n.hideMissingUpdates?e("span",{staticClass:"icon icon-triangle-s"}):n._e()]),n._v(" "),n.hideMissingUpdates?n._e():e("ul",{staticClass:"applist"},n._l(n.missingAppUpdates,(function(t,a){return e("li",{key:a},[e("a",{attrs:{href:"https://apps.nextcloud.com/apps/"+t.appId,title:n.t("settings","View in store")}},[n._v(n._s(t.appName)+" ↗")])])})),0)]:n._e(),n._v(" "),n.availableAppUpdates.length?[e("h3",{on:{click:n.toggleHideAvailableUpdates}},[n._v("\n\t\t\t\t\t"+n._s(n.t("updatenotification","Apps with compatible version"))+"\n\t\t\t\t\t"),n.hideAvailableUpdates?n._e():e("span",{staticClass:"icon icon-triangle-n"}),n._v(" "),n.hideAvailableUpdates?e("span",{staticClass:"icon icon-triangle-s"}):n._e()]),n._v(" "),n.hideAvailableUpdates?n._e():e("ul",{staticClass:"applist"},n._l(n.availableAppUpdates,(function(t,a){return e("li",{key:a},[e("a",{attrs:{href:"https://apps.nextcloud.com/apps/"+t.appId,title:n.t("settings","View in store")}},[n._v(n._s(t.appName)+" ↗")])])})),0)]:n._e(),n._v(" "),!n.isWebUpdaterRecommended&&n.updaterEnabled&&n.webUpdaterEnabled?[e("h3",{staticClass:"warning"},[n._v("\n\t\t\t\t\t"+n._s(n.t("updatenotification","Please note that the web updater is not recommended with more than 100 users! Please use the command line updater instead!"))+"\n\t\t\t\t")])]:n._e(),n._v(" "),e("div",[n.updaterEnabled&&n.webUpdaterEnabled?e("a",{staticClass:"button primary",attrs:{href:"#"},on:{click:n.clickUpdaterButton}},[n._v(n._s(n.t("updatenotification","Open updater")))]):n._e(),n._v(" "),n.downloadLink?e("a",{staticClass:"button",class:{hidden:!n.updaterEnabled},attrs:{href:n.downloadLink}},[n._v(n._s(n.t("updatenotification","Download now")))]):n._e(),n._v(" "),n.updaterEnabled&&!n.webUpdaterEnabled?e("span",[n._v("\n\t\t\t\t\t"+n._s(n.t("updatenotification","Please use the command line updater to update."))+"\n\t\t\t\t")]):n._e(),n._v(" "),n.whatsNew?e("div",{staticClass:"whatsNew"},[e("div",{staticClass:"toggleWhatsNew"},[e("a",{directives:[{name:"click-outside",rawName:"v-click-outside",value:n.hideMenu,expression:"hideMenu"}],staticClass:"button",on:{click:n.toggleMenu}},[n._v(n._s(n.t("updatenotification","What's new?")))]),n._v(" "),e("div",{staticClass:"popovermenu",class:{"menu-center":!0,open:n.openedWhatsNew}},[e("PopoverMenu",{attrs:{menu:n.whatsNew}})],1)])]):n._e()])]:n.isUpdateChecked?[n._v("\n\t\t\t"+n._s(n.t("updatenotification","Your version is up to date."))+"\n\t\t\t"),e("span",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:n.lastCheckedOnString,expression:"lastCheckedOnString",modifiers:{auto:!0}}],staticClass:"icon-info svg"})]:[n._v("\n\t\t\t"+n._s(n.t("updatenotification","The update check is not yet finished. Please refresh the page."))+"\n\t\t")],n._v(" "),n.isDefaultUpdateServerURL?n._e():[e("p",{staticClass:"topMargin"},[e("em",[n._v(n._s(n.t("updatenotification","A non-default update server is in use to be checked for updates:"))+" "),e("code",[n._v(n._s(n.updateServerURL))])])])]],2),n._v(" "),e("div",[n._v("\n\t\t"+n._s(n.t("updatenotification","You can change the update channel below which also affects the apps management page. E.g. after switching to the beta channel, beta app updates will be offered to you in the apps management page."))+"\n\t")]),n._v(" "),e("h3",{staticClass:"update-channel-selector"},[n._v("\n\t\t"+n._s(n.t("updatenotification","Update channel:"))+"\n\t\t"),e("div",{directives:[{name:"click-outside",rawName:"v-click-outside",value:n.closeUpdateChannelMenu,expression:"closeUpdateChannelMenu"}],staticClass:"update-menu"},[e("span",{staticClass:"icon-update-menu",on:{click:n.toggleUpdateChannelMenu}},[n._v("\n\t\t\t\t"+n._s(n.localizedChannelName)+"\n\t\t\t\t"),e("span",{staticClass:"icon-triangle-s"})]),n._v(" "),e("div",{staticClass:"popovermenu menu menu-center",class:{"show-menu":n.openedUpdateChannelMenu}},[e("PopoverMenu",{attrs:{menu:n.channelList}})],1)])]),n._v(" "),e("span",{staticClass:"msg",attrs:{id:"channel_save_msg"}}),e("br"),n._v(" "),e("p",[e("em",[n._v(n._s(n.t("updatenotification","You can always update to a newer version. But you can never downgrade to a more stable version.")))]),e("br"),n._v(" "),e("em",{domProps:{innerHTML:n._s(n.noteDelayedStableString)}})]),n._v(" "),e("p",{attrs:{id:"oca_updatenotification_groups"}},[n._v("\n\t\t"+n._s(n.t("updatenotification","Notify members of the following groups about available updates:"))+"\n\t\t"),e("Multiselect",{attrs:{options:n.availableGroups,multiple:!0,label:"label","track-by":"value","tag-width":75},model:{value:n.notifyGroups,callback:function(t){n.notifyGroups=t},expression:"notifyGroups"}}),e("br"),n._v(" "),"daily"===n.currentChannel||"git"===n.currentChannel?e("em",[n._v(n._s(n.t("updatenotification","Only notifications for app updates are available.")))]):n._e(),n._v(" "),"daily"===n.currentChannel?e("em",[n._v(n._s(n.t("updatenotification","The selected update channel makes dedicated notifications for the server obsolete.")))]):n._e(),n._v(" "),"git"===n.currentChannel?e("em",[n._v(n._s(n.t("updatenotification","The selected update channel does not support updates of the server.")))]):n._e()],1)])}),[],!1,null,"418946e4",null).exports;o.default.mixin({methods:{t:function(n,t,e,a,i){return OC.L10N.translate(n,t,e,a,i)},n:function(n,t,e,a,i,o){return OC.L10N.translatePlural(n,t,e,a,i,o)}}}),new o.default({el:"#updatenotification",render:function(n){return n(L)}})},41044:function(n,t,e){var a=e(87537),i=e.n(a),o=e(23645),s=e.n(o)()(i());s.push([n.id,"#updatenotification[data-v-418946e4]{margin-top:-25px;margin-bottom:200px}#updatenotification div.update[data-v-418946e4],#updatenotification p[data-v-418946e4]:not(.inlineblock){margin-bottom:25px}#updatenotification h2.inlineblock[data-v-418946e4]{margin-top:25px}#updatenotification h3[data-v-418946e4]{cursor:pointer}#updatenotification h3 .icon[data-v-418946e4]{cursor:pointer}#updatenotification h3[data-v-418946e4]:first-of-type{margin-top:0}#updatenotification h3.update-channel-selector[data-v-418946e4]{display:inline-block;cursor:inherit}#updatenotification .icon[data-v-418946e4]{display:inline-block;margin-bottom:-3px}#updatenotification .icon-triangle-s[data-v-418946e4],#updatenotification .icon-triangle-n[data-v-418946e4]{opacity:.5}#updatenotification .whatsNew[data-v-418946e4]{display:inline-block}#updatenotification .toggleWhatsNew[data-v-418946e4]{position:relative}#updatenotification .popovermenu[data-v-418946e4]{margin-top:5px;width:300px}#updatenotification .popovermenu p[data-v-418946e4]{margin-bottom:0;width:100%}#updatenotification .applist[data-v-418946e4]{margin-bottom:25px}#updatenotification .update-menu[data-v-418946e4]{position:relative;cursor:pointer;margin-left:3px;display:inline-block}#updatenotification .update-menu .icon-update-menu[data-v-418946e4]{cursor:inherit}#updatenotification .update-menu .icon-update-menu .icon-triangle-s[data-v-418946e4]{display:inline-block;vertical-align:middle;cursor:inherit;opacity:1}#updatenotification .update-menu .popovermenu[data-v-418946e4]{display:none;top:28px}#updatenotification .update-menu .popovermenu.show-menu[data-v-418946e4]{display:block}","",{version:3,sources:["webpack://./apps/updatenotification/src/components/UpdateNotification.vue"],names:[],mappings:"AAwcA,qCACC,gBAAA,CACA,mBAAA,CACA,yGAEC,kBAAA,CAED,oDACC,eAAA,CAED,wCACC,cAAA,CACA,8CACC,cAAA,CAED,sDACC,YAAA,CAED,gEACC,oBAAA,CACA,cAAA,CAGF,2CACC,oBAAA,CACA,kBAAA,CAED,4GACC,UAAA,CAED,+CACC,oBAAA,CAED,qDACC,iBAAA,CAED,kDAKC,cAAA,CACA,WAAA,CALA,oDACC,eAAA,CACA,UAAA,CAKF,8CACC,kBAAA,CAGD,kDACC,iBAAA,CACA,cAAA,CACA,eAAA,CACA,oBAAA,CACA,oEACC,cAAA,CACA,qFACC,oBAAA,CACA,qBAAA,CACA,cAAA,CACA,SAAA,CAGF,+DACC,YAAA,CACA,QAAA,CACA,yEACC,aAAA",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n#updatenotification {\n\tmargin-top: -25px;\n\tmargin-bottom: 200px;\n\tdiv.update,\n\tp:not(.inlineblock) {\n\t\tmargin-bottom: 25px;\n\t}\n\th2.inlineblock {\n\t\tmargin-top: 25px;\n\t}\n\th3 {\n\t\tcursor: pointer;\n\t\t.icon {\n\t\t\tcursor: pointer;\n\t\t}\n\t\t&:first-of-type {\n\t\t\tmargin-top: 0;\n\t\t}\n\t\t&.update-channel-selector {\n\t\t\tdisplay: inline-block;\n\t\t\tcursor: inherit;\n\t\t}\n\t}\n\t.icon {\n\t\tdisplay: inline-block;\n\t\tmargin-bottom: -3px;\n\t}\n\t.icon-triangle-s, .icon-triangle-n {\n\t\topacity: 0.5;\n\t}\n\t.whatsNew {\n\t\tdisplay: inline-block;\n\t}\n\t.toggleWhatsNew {\n\t\tposition: relative;\n\t}\n\t.popovermenu {\n\t\tp {\n\t\t\tmargin-bottom: 0;\n\t\t\twidth: 100%;\n\t\t}\n\t\tmargin-top: 5px;\n\t\twidth: 300px;\n\t}\n\t.applist {\n\t\tmargin-bottom: 25px;\n\t}\n\n\t.update-menu {\n\t\tposition: relative;\n\t\tcursor: pointer;\n\t\tmargin-left: 3px;\n\t\tdisplay: inline-block;\n\t\t.icon-update-menu {\n\t\t\tcursor: inherit;\n\t\t\t.icon-triangle-s {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tvertical-align: middle;\n\t\t\t\tcursor: inherit;\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\t\t.popovermenu {\n\t\t\tdisplay: none;\n\t\t\ttop: 28px;\n\t\t\t&.show-menu {\n\t\t\t\tdisplay: block;\n\t\t\t}\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),t.Z=s},16722:function(n,t,e){var a=e(87537),i=e.n(a),o=e(23645),s=e.n(o)()(i());s.push([n.id,"#updatenotification .popovermenu{margin-top:5px;width:300px}#updatenotification .popovermenu p{margin-top:5px;width:100%}#updatenotification .update-menu .icon-star:hover,#updatenotification .update-menu .icon-star:focus{background-image:var(--icon-star-000)}#updatenotification .topMargin{margin-top:15px}","",{version:3,sources:["webpack://./apps/updatenotification/src/components/UpdateNotification.vue"],names:[],mappings:"AAkhBA,iCAKC,cAAA,CACA,WAAA,CALA,mCACC,cAAA,CACA,UAAA,CAMF,oGAEC,qCAAA,CAED,+BACC,eAAA",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* override needed to make menu wider */\n#updatenotification .popovermenu {\n\tp {\n\t\tmargin-top: 5px;\n\t\twidth: 100%;\n\t}\n\tmargin-top: 5px;\n\twidth: 300px;\n}\n/* override needed to replace yellow hover state with a dark one */\n#updatenotification .update-menu .icon-star:hover,\n#updatenotification .update-menu .icon-star:focus {\n\tbackground-image: var(--icon-star-000);\n}\n#updatenotification .topMargin {\n\tmargin-top: 15px;\n}\n"],sourceRoot:""}]),t.Z=s}},i={};function o(n){var t=i[n];if(void 0!==t)return t.exports;var e=i[n]={id:n,loaded:!1,exports:{}};return a[n].call(e.exports,e,e.exports,o),e.loaded=!0,e.exports}o.m=a,o.amdD=function(){throw new Error("define cannot be used indirect")},o.amdO={},e=[],o.O=function(n,t,a,i){if(!t){var s=1/0;for(c=0;c<e.length;c++){t=e[c][0],a=e[c][1],i=e[c][2];for(var r=!0,p=0;p<t.length;p++)(!1&i||s>=i)&&Object.keys(o.O).every((function(n){return o.O[n](t[p])}))?t.splice(p--,1):(r=!1,i<s&&(s=i));if(r){e.splice(c--,1);var l=a();void 0!==l&&(n=l)}}return n}i=i||0;for(var c=e.length;c>0&&e[c-1][2]>i;c--)e[c]=e[c-1];e[c]=[t,a,i]},o.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return o.d(t,{a:t}),t},o.d=function(n,t){for(var e in t)o.o(t,e)&&!o.o(n,e)&&Object.defineProperty(n,e,{enumerable:!0,get:t[e]})},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),o.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},o.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},o.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n},o.j=7292,function(){o.b=document.baseURI||self.location.href;var n={7292:0};o.O.j=function(t){return 0===n[t]};var t=function(t,e){var a,i,s=e[0],r=e[1],p=e[2],l=0;if(s.some((function(t){return 0!==n[t]}))){for(a in r)o.o(r,a)&&(o.m[a]=r[a]);if(p)var c=p(o)}for(t&&t(e);l<s.length;l++)i=s[l],o.o(n,i)&&n[i]&&n[i][0](),n[i]=0;return o.O(c)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(t.bind(null,0)),e.push=t.bind(null,e.push.bind(e))}(),o.nc=void 0;var s=o.O(void 0,[7874],(function(){return o(36267)}));s=o.O(s)}();
+//# sourceMappingURL=updatenotification-updatenotification.js.map?v=3965d91a99f3ff47d6bf \ No newline at end of file
diff --git a/dist/updatenotification-updatenotification.js.map b/dist/updatenotification-updatenotification.js.map
index bc497b41fac..a4c206bbb52 100644
--- a/dist/updatenotification-updatenotification.js.map
+++ b/dist/updatenotification-updatenotification.js.map
@@ -1 +1 @@
-{"version":3,"file":"updatenotification-updatenotification.js?v=d45c580623911e9ec4d6","mappings":";6BAAIA,0HCkIJ,EAAAC,SAAA,uBAEA,ICpI+L,EDoI/L,CACA,0BACA,YACA,gBACA,iBAEA,YACA,iBACA,oBAEA,KAVA,WAWA,OACA,oBACA,mBACA,mBACA,qBACA,2BACA,kBACA,gBACA,gBACA,yBACA,wBACA,mBACA,gBACA,gBACA,kBACA,YACA,gBACA,mBACA,4BACA,uBAEA,uBACA,qBACA,kBACA,oBACA,iBACA,sBACA,wBACA,kBACA,6BAIA,UACA,oBAEA,UACA,0BADA,WAEA,iGACA,0CAIA,wBAPA,WAQA,uSACA,mHAGA,oBAZA,WAaA,8DACA,wCAIA,WAlBA,WAmBA,0BAIA,sBACA,+GAGA,oBACA,wNAGA,kCACA,yHACA,4OAbA,iEAgBA,SApCA,WAqCA,gCACA,YAEA,SACA,+BACA,2DAWA,OATA,mBACA,QACA,uBACA,8CACA,iBACA,gBACA,YAGA,GAGA,YAxDA,WAyDA,SAmCA,OAjCA,QACA,0CACA,yXACA,iBACA,0CACA,oCACA,+CAGA,QACA,sCACA,oJACA,sBACA,sCACA,2CAGA,QACA,oCACA,yHACA,mCACA,oCACA,yCAGA,0BACA,QACA,yBACA,mBACA,YAIA,GAGA,oBA/FA,WAgGA,wGAGA,qBAnGA,WAoGA,4BACA,iBACA,4CACA,aACA,wCACA,WACA,sCACA,QACA,8BAKA,OACA,aADA,SACA,GACA,6BAIA,SACA,sBACA,mBAGA,iFAEA,sBAbA,WAcA,4BAIA,QACA,6GACA,WACA,WAHA,SAGA,GACA,iDAEA,oBACA,8CACA,0CACA,sBACA,wBACA,WACA,kBACA,4BACA,0BACA,gEACA,sBACA,wBACA,eAIA,YAxMA,WA0MA,6DAEA,6BACA,yCACA,mCACA,uCACA,2CACA,uDACA,qCACA,iCACA,mDACA,uCACA,qCACA,yBACA,iCACA,yDACA,iCACA,iDACA,oCACA,0CAEA,gCACA,2BACA,sEAEA,yEAGA,QAtOA,WAuOA,sBACA,0EACA,2CACA,qBACA,YAEA,QACA,yCACA,gBACA,oBACA,SACA,wCACA,6BAGA,uBACA,6BACA,cAIA,SAIA,mB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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/updatenotification/src/components/UpdateNotification.vue","webpack:///nextcloud/apps/updatenotification/src/components/UpdateNotification.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/updatenotification/src/components/UpdateNotification.vue?a637","webpack://nextcloud/./apps/updatenotification/src/components/UpdateNotification.vue?fbe8","webpack://nextcloud/./apps/updatenotification/src/components/UpdateNotification.vue?1fb0","webpack:///nextcloud/apps/updatenotification/src/components/UpdateNotification.vue?vue&type=template&id=418946e4&scoped=true&","webpack:///nextcloud/apps/updatenotification/src/init.js","webpack:///nextcloud/apps/updatenotification/src/components/UpdateNotification.vue?vue&type=style&index=0&id=418946e4&lang=scss&scoped=true&","webpack:///nextcloud/apps/updatenotification/src/components/UpdateNotification.vue?vue&type=style&index=1&lang=scss&","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};","<template>\n\t<div id=\"updatenotification\" class=\"followupsection\">\n\t\t<div class=\"update\">\n\t\t\t<template v-if=\"isNewVersionAvailable\">\n\t\t\t\t<p v-if=\"versionIsEol\">\n\t\t\t\t\t<span class=\"warning\">\n\t\t\t\t\t\t<span class=\"icon icon-error-white\" />\n\t\t\t\t\t\t{{ t('updatenotification', 'The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible.') }}\n\t\t\t\t\t</span>\n\t\t\t\t</p>\n\n\t\t\t\t<p>\n\t\t\t\t\t<span v-html=\"newVersionAvailableString\" /><br>\n\t\t\t\t\t<span v-if=\"!isListFetched\" class=\"icon icon-loading-small\" />\n\t\t\t\t\t<span v-html=\"statusText\" />\n\t\t\t\t</p>\n\n\t\t\t\t<template v-if=\"missingAppUpdates.length\">\n\t\t\t\t\t<h3 @click=\"toggleHideMissingUpdates\">\n\t\t\t\t\t\t{{ t('updatenotification', 'Apps missing compatible version') }}\n\t\t\t\t\t\t<span v-if=\"!hideMissingUpdates\" class=\"icon icon-triangle-n\" />\n\t\t\t\t\t\t<span v-if=\"hideMissingUpdates\" class=\"icon icon-triangle-s\" />\n\t\t\t\t\t</h3>\n\t\t\t\t\t<ul v-if=\"!hideMissingUpdates\" class=\"applist\">\n\t\t\t\t\t\t<li v-for=\"(app, index) in missingAppUpdates\" :key=\"index\">\n\t\t\t\t\t\t\t<a :href=\"'https://apps.nextcloud.com/apps/' + app.appId\" :title=\"t('settings', 'View in store')\">{{ app.appName }} ↗</a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</template>\n\n\t\t\t\t<template v-if=\"availableAppUpdates.length\">\n\t\t\t\t\t<h3 @click=\"toggleHideAvailableUpdates\">\n\t\t\t\t\t\t{{ t('updatenotification', 'Apps with compatible version') }}\n\t\t\t\t\t\t<span v-if=\"!hideAvailableUpdates\" class=\"icon icon-triangle-n\" />\n\t\t\t\t\t\t<span v-if=\"hideAvailableUpdates\" class=\"icon icon-triangle-s\" />\n\t\t\t\t\t</h3>\n\t\t\t\t\t<ul v-if=\"!hideAvailableUpdates\" class=\"applist\">\n\t\t\t\t\t\t<li v-for=\"(app, index) in availableAppUpdates\" :key=\"index\">\n\t\t\t\t\t\t\t<a :href=\"'https://apps.nextcloud.com/apps/' + app.appId\" :title=\"t('settings', 'View in store')\">{{ app.appName }} ↗</a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</template>\n\n\t\t\t\t<template v-if=\"!isWebUpdaterRecommended && updaterEnabled && webUpdaterEnabled\">\n\t\t\t\t\t<h3 class=\"warning\">\n\t\t\t\t\t\t{{ t('updatenotification', 'Please note that the web updater is not recommended with more than 100 users! Please use the command line updater instead!') }}\n\t\t\t\t\t</h3>\n\t\t\t\t</template>\n\n\t\t\t\t<div>\n\t\t\t\t\t<a v-if=\"updaterEnabled && webUpdaterEnabled\"\n\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\tclass=\"button primary\"\n\t\t\t\t\t\t@click=\"clickUpdaterButton\">{{ t('updatenotification', 'Open updater') }}</a>\n\t\t\t\t\t<a v-if=\"downloadLink\"\n\t\t\t\t\t\t:href=\"downloadLink\"\n\t\t\t\t\t\tclass=\"button\"\n\t\t\t\t\t\t:class=\"{ hidden: !updaterEnabled }\">{{ t('updatenotification', 'Download now') }}</a>\n\t\t\t\t\t<span v-if=\"updaterEnabled && !webUpdaterEnabled\">\n\t\t\t\t\t\t{{ t('updatenotification', 'Please use the command line updater to update.') }}\n\t\t\t\t\t</span>\n\t\t\t\t\t<div v-if=\"whatsNew\" class=\"whatsNew\">\n\t\t\t\t\t\t<div class=\"toggleWhatsNew\">\n\t\t\t\t\t\t\t<a v-click-outside=\"hideMenu\" class=\"button\" @click=\"toggleMenu\">{{ t('updatenotification', 'What\\'s new?') }}</a>\n\t\t\t\t\t\t\t<div class=\"popovermenu\" :class=\"{ 'menu-center': true, open: openedWhatsNew }\">\n\t\t\t\t\t\t\t\t<PopoverMenu :menu=\"whatsNew\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t\t<template v-else-if=\"!isUpdateChecked\">\n\t\t\t\t{{ t('updatenotification', 'The update check is not yet finished. Please refresh the page.') }}\n\t\t\t</template>\n\t\t\t<template v-else>\n\t\t\t\t{{ t('updatenotification', 'Your version is up to date.') }}\n\t\t\t\t<span v-tooltip.auto=\"lastCheckedOnString\" class=\"icon-info svg\" />\n\t\t\t</template>\n\n\t\t\t<template v-if=\"!isDefaultUpdateServerURL\">\n\t\t\t\t<p class=\"topMargin\">\n\t\t\t\t\t<em>{{ t('updatenotification', 'A non-default update server is in use to be checked for updates:') }} <code>{{ updateServerURL }}</code></em>\n\t\t\t\t</p>\n\t\t\t</template>\n\t\t</div>\n\n\t\t<div>\n\t\t\t{{ t('updatenotification', 'You can change the update channel below which also affects the apps management page. E.g. after switching to the beta channel, beta app updates will be offered to you in the apps management page.') }}\n\t\t</div>\n\n\t\t<h3 class=\"update-channel-selector\">\n\t\t\t{{ t('updatenotification', 'Update channel:') }}\n\t\t\t<div v-click-outside=\"closeUpdateChannelMenu\" class=\"update-menu\">\n\t\t\t\t<span class=\"icon-update-menu\" @click=\"toggleUpdateChannelMenu\">\n\t\t\t\t\t{{ localizedChannelName }}\n\t\t\t\t\t<span class=\"icon-triangle-s\" />\n\t\t\t\t</span>\n\t\t\t\t<div class=\"popovermenu menu menu-center\" :class=\"{ 'show-menu': openedUpdateChannelMenu}\">\n\t\t\t\t\t<PopoverMenu :menu=\"channelList\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</h3>\n\t\t<span id=\"channel_save_msg\" class=\"msg\" /><br>\n\t\t<p>\n\t\t\t<em>{{ t('updatenotification', 'You can always update to a newer version. But you can never downgrade to a more stable version.') }}</em><br>\n\t\t\t<em v-html=\"noteDelayedStableString\" />\n\t\t</p>\n\n\t\t<p id=\"oca_updatenotification_groups\">\n\t\t\t{{ t('updatenotification', 'Notify members of the following groups about available updates:') }}\n\t\t\t<Multiselect v-model=\"notifyGroups\"\n\t\t\t\t:options=\"availableGroups\"\n\t\t\t\t:multiple=\"true\"\n\t\t\t\tlabel=\"label\"\n\t\t\t\ttrack-by=\"value\"\n\t\t\t\t:tag-width=\"75\" /><br>\n\t\t\t<em v-if=\"currentChannel === 'daily' || currentChannel === 'git'\">{{ t('updatenotification', 'Only notifications for app updates are available.') }}</em>\n\t\t\t<em v-if=\"currentChannel === 'daily'\">{{ t('updatenotification', 'The selected update channel makes dedicated notifications for the server obsolete.') }}</em>\n\t\t\t<em v-if=\"currentChannel === 'git'\">{{ t('updatenotification', 'The selected update channel does not support updates of the server.') }}</em>\n\t\t</p>\n\t</div>\n</template>\n\n<script>\nimport { generateUrl, getRootUrl, generateOcsUrl } from '@nextcloud/router'\nimport PopoverMenu from '@nextcloud/vue/dist/Components/PopoverMenu'\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\nimport { VTooltip } from 'v-tooltip'\nimport ClickOutside from 'vue-click-outside'\n\nVTooltip.options.defaultHtml = false\n\nexport default {\n\tname: 'UpdateNotification',\n\tcomponents: {\n\t\tMultiselect,\n\t\tPopoverMenu,\n\t},\n\tdirectives: {\n\t\tClickOutside,\n\t\ttooltip: VTooltip,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tnewVersionString: '',\n\t\t\tlastCheckedDate: '',\n\t\t\tisUpdateChecked: false,\n\t\t\twebUpdaterEnabled: true,\n\t\t\tisWebUpdaterRecommended: true,\n\t\t\tupdaterEnabled: true,\n\t\t\tversionIsEol: false,\n\t\t\tdownloadLink: '',\n\t\t\tisNewVersionAvailable: false,\n\t\t\thasValidSubscription: false,\n\t\t\tupdateServerURL: '',\n\t\t\tchangelogURL: '',\n\t\t\twhatsNewData: [],\n\t\t\tcurrentChannel: '',\n\t\t\tchannels: [],\n\t\t\tnotifyGroups: '',\n\t\t\tavailableGroups: [],\n\t\t\tisDefaultUpdateServerURL: true,\n\t\t\tenableChangeWatcher: false,\n\n\t\t\tavailableAppUpdates: [],\n\t\t\tmissingAppUpdates: [],\n\t\t\tappStoreFailed: false,\n\t\t\tappStoreDisabled: false,\n\t\t\tisListFetched: false,\n\t\t\thideMissingUpdates: false,\n\t\t\thideAvailableUpdates: true,\n\t\t\topenedWhatsNew: false,\n\t\t\topenedUpdateChannelMenu: false,\n\t\t}\n\t},\n\n\t_$el: null,\n\t_$notifyGroups: null,\n\n\tcomputed: {\n\t\tnewVersionAvailableString() {\n\t\t\treturn t('updatenotification', 'A new version is available: <strong>{newVersionString}</strong>', {\n\t\t\t\tnewVersionString: this.newVersionString,\n\t\t\t})\n\t\t},\n\n\t\tnoteDelayedStableString() {\n\t\t\treturn t('updatenotification', 'Note that after a new release the update only shows up after the first minor release or later. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found. Learn more about updates and release channels at {link}')\n\t\t\t\t.replace('{link}', '<a href=\"https://nextcloud.com/release-channels/\">https://nextcloud.com/release-channels/</a>')\n\t\t},\n\n\t\tlastCheckedOnString() {\n\t\t\treturn t('updatenotification', 'Checked on {lastCheckedDate}', {\n\t\t\t\tlastCheckedDate: this.lastCheckedDate,\n\t\t\t})\n\t\t},\n\n\t\tstatusText() {\n\t\t\tif (!this.isListFetched) {\n\t\t\t\treturn t('updatenotification', 'Checking apps for compatible versions')\n\t\t\t}\n\n\t\t\tif (this.appStoreDisabled) {\n\t\t\t\treturn t('updatenotification', 'Please make sure your config.php does not set <samp>appstoreenabled</samp> to false.')\n\t\t\t}\n\n\t\t\tif (this.appStoreFailed) {\n\t\t\t\treturn t('updatenotification', 'Could not connect to the App Store or no updates have been returned at all. Search manually for updates or make sure your server has access to the internet and can connect to the App Store.')\n\t\t\t}\n\n\t\t\treturn this.missingAppUpdates.length === 0\n\t\t\t\t? t('updatenotification', '<strong>All</strong> apps have a compatible version for this Nextcloud version available.', this)\n\t\t\t\t: n('updatenotification', '<strong>%n</strong> app has no compatible version for this Nextcloud version available.', '<strong>%n</strong> apps have no compatible version for this Nextcloud version available.', this.missingAppUpdates.length)\n\t\t},\n\n\t\twhatsNew() {\n\t\t\tif (this.whatsNewData.length === 0) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t\tconst whatsNew = []\n\t\t\tfor (const i in this.whatsNewData) {\n\t\t\t\twhatsNew[i] = { icon: 'icon-checkmark', longtext: this.whatsNewData[i] }\n\t\t\t}\n\t\t\tif (this.changelogURL) {\n\t\t\t\twhatsNew.push({\n\t\t\t\t\thref: this.changelogURL,\n\t\t\t\t\ttext: t('updatenotification', 'View changelog'),\n\t\t\t\t\ticon: 'icon-link',\n\t\t\t\t\ttarget: '_blank',\n\t\t\t\t\taction: '',\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn whatsNew\n\t\t},\n\n\t\tchannelList() {\n\t\t\tconst channelList = []\n\n\t\t\tchannelList.push({\n\t\t\t\ttext: t('updatenotification', 'Enterprise'),\n\t\t\t\tlongtext: t('updatenotification', 'For enterprise use. Provides always the latest patch level, but will not update to the next major release immediately. That update happens once Nextcloud GmbH has done additional hardening and testing for large-scale and mission-critical deployments. This channel is only available to customers and provides the Nextcloud Enterprise package.'),\n\t\t\t\ticon: 'icon-star',\n\t\t\t\tactive: this.currentChannel === 'enterprise',\n\t\t\t\tdisabled: !this.hasValidSubscription,\n\t\t\t\taction: this.changeReleaseChannelToEnterprise,\n\t\t\t})\n\n\t\t\tchannelList.push({\n\t\t\t\ttext: t('updatenotification', 'Stable'),\n\t\t\t\tlongtext: t('updatenotification', 'The most recent stable version. It is suited for regular use and will always update to the latest major version.'),\n\t\t\t\ticon: 'icon-checkmark',\n\t\t\t\tactive: this.currentChannel === 'stable',\n\t\t\t\taction: this.changeReleaseChannelToStable,\n\t\t\t})\n\n\t\t\tchannelList.push({\n\t\t\t\ttext: t('updatenotification', 'Beta'),\n\t\t\t\tlongtext: t('updatenotification', 'A pre-release version only for testing new features, not for production environments.'),\n\t\t\t\ticon: 'icon-category-customization',\n\t\t\t\tactive: this.currentChannel === 'beta',\n\t\t\t\taction: this.changeReleaseChannelToBeta,\n\t\t\t})\n\n\t\t\tif (this.isNonDefaultChannel) {\n\t\t\t\tchannelList.push({\n\t\t\t\t\ttext: this.currentChannel,\n\t\t\t\t\ticon: 'icon-rename',\n\t\t\t\t\tactive: true,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\treturn channelList\n\t\t},\n\n\t\tisNonDefaultChannel() {\n\t\t\treturn this.currentChannel !== 'enterprise' && this.currentChannel !== 'stable' && this.currentChannel !== 'beta'\n\t\t},\n\n\t\tlocalizedChannelName() {\n\t\t\tswitch (this.currentChannel) {\n\t\t\tcase 'enterprise':\n\t\t\t\treturn t('updatenotification', 'Enterprise')\n\t\t\tcase 'stable':\n\t\t\t\treturn t('updatenotification', 'Stable')\n\t\t\tcase 'beta':\n\t\t\t\treturn t('updatenotification', 'Beta')\n\t\t\tdefault:\n\t\t\t\treturn this.currentChannel\n\t\t\t}\n\t\t},\n\t},\n\n\twatch: {\n\t\tnotifyGroups(selectedOptions) {\n\t\t\tif (!this.enableChangeWatcher) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst selectedGroups = []\n\t\t\t_.each(selectedOptions, function(group) {\n\t\t\t\tselectedGroups.push(group.value)\n\t\t\t})\n\n\t\t\tOCP.AppConfig.setValue('updatenotification', 'notify_groups', JSON.stringify(selectedGroups))\n\t\t},\n\t\tisNewVersionAvailable() {\n\t\t\tif (!this.isNewVersionAvailable) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t$.ajax({\n\t\t\t\turl: generateOcsUrl('apps/updatenotification/api/v1/applist/{newVersion}', { newVersion: this.newVersion }),\n\t\t\t\ttype: 'GET',\n\t\t\t\tbeforeSend(request) {\n\t\t\t\t\trequest.setRequestHeader('Accept', 'application/json')\n\t\t\t\t},\n\t\t\t\tsuccess: function(response) {\n\t\t\t\t\tthis.availableAppUpdates = response.ocs.data.available\n\t\t\t\t\tthis.missingAppUpdates = response.ocs.data.missing\n\t\t\t\t\tthis.isListFetched = true\n\t\t\t\t\tthis.appStoreFailed = false\n\t\t\t\t}.bind(this),\n\t\t\t\terror: function(xhr) {\n\t\t\t\t\tthis.availableAppUpdates = []\n\t\t\t\t\tthis.missingAppUpdates = []\n\t\t\t\t\tthis.appStoreDisabled = xhr.responseJSON.ocs.data.appstore_disabled\n\t\t\t\t\tthis.isListFetched = true\n\t\t\t\t\tthis.appStoreFailed = true\n\t\t\t\t}.bind(this),\n\t\t\t})\n\t\t},\n\t},\n\tbeforeMount() {\n\t\t// Parse server data\n\t\tconst data = JSON.parse($('#updatenotification').attr('data-json'))\n\n\t\tthis.newVersion = data.newVersion\n\t\tthis.newVersionString = data.newVersionString\n\t\tthis.lastCheckedDate = data.lastChecked\n\t\tthis.isUpdateChecked = data.isUpdateChecked\n\t\tthis.webUpdaterEnabled = data.webUpdaterEnabled\n\t\tthis.isWebUpdaterRecommended = data.isWebUpdaterRecommended\n\t\tthis.updaterEnabled = data.updaterEnabled\n\t\tthis.downloadLink = data.downloadLink\n\t\tthis.isNewVersionAvailable = data.isNewVersionAvailable\n\t\tthis.updateServerURL = data.updateServerURL\n\t\tthis.currentChannel = data.currentChannel\n\t\tthis.channels = data.channels\n\t\tthis.notifyGroups = data.notifyGroups\n\t\tthis.isDefaultUpdateServerURL = data.isDefaultUpdateServerURL\n\t\tthis.versionIsEol = data.versionIsEol\n\t\tthis.hasValidSubscription = data.hasValidSubscription\n\t\tif (data.changes && data.changes.changelogURL) {\n\t\t\tthis.changelogURL = data.changes.changelogURL\n\t\t}\n\t\tif (data.changes && data.changes.whatsNew) {\n\t\t\tif (data.changes.whatsNew.admin) {\n\t\t\t\tthis.whatsNewData = this.whatsNewData.concat(data.changes.whatsNew.admin)\n\t\t\t}\n\t\t\tthis.whatsNewData = this.whatsNewData.concat(data.changes.whatsNew.regular)\n\t\t}\n\t},\n\tmounted() {\n\t\tthis._$el = $(this.$el)\n\t\tthis._$notifyGroups = this._$el.find('#oca_updatenotification_groups_list')\n\t\tthis._$notifyGroups.on('change', function() {\n\t\t\tthis.$emit('input')\n\t\t}.bind(this))\n\n\t\t$.ajax({\n\t\t\turl: generateOcsUrl('cloud/groups'),\n\t\t\tdataType: 'json',\n\t\t\tsuccess: function(data) {\n\t\t\t\tconst results = []\n\t\t\t\t$.each(data.ocs.data.groups, function(i, group) {\n\t\t\t\t\tresults.push({ value: group, label: group })\n\t\t\t\t})\n\n\t\t\t\tthis.availableGroups = results\n\t\t\t\tthis.enableChangeWatcher = true\n\t\t\t}.bind(this),\n\t\t})\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Creates a new authentication token and loads the updater URL\n\t\t */\n\t\tclickUpdaterButton() {\n\t\t\t$.ajax({\n\t\t\t\turl: generateUrl('/apps/updatenotification/credentials'),\n\t\t\t}).success(function(token) {\n\t\t\t\t// create a form to send a proper post request to the updater\n\t\t\t\tconst form = document.createElement('form')\n\t\t\t\tform.setAttribute('method', 'post')\n\t\t\t\tform.setAttribute('action', getRootUrl() + '/updater/')\n\n\t\t\t\tconst hiddenField = document.createElement('input')\n\t\t\t\thiddenField.setAttribute('type', 'hidden')\n\t\t\t\thiddenField.setAttribute('name', 'updater-secret-input')\n\t\t\t\thiddenField.setAttribute('value', token)\n\n\t\t\t\tform.appendChild(hiddenField)\n\n\t\t\t\tdocument.body.appendChild(form)\n\t\t\t\tform.submit()\n\t\t\t})\n\t\t},\n\t\tchangeReleaseChannelToEnterprise() {\n\t\t\tthis.changeReleaseChannel('enterprise')\n\t\t},\n\t\tchangeReleaseChannelToStable() {\n\t\t\tthis.changeReleaseChannel('stable')\n\t\t},\n\t\tchangeReleaseChannelToBeta() {\n\t\t\tthis.changeReleaseChannel('beta')\n\t\t},\n\t\tchangeReleaseChannel(channel) {\n\t\t\tthis.currentChannel = channel\n\n\t\t\t$.ajax({\n\t\t\t\turl: generateUrl('/apps/updatenotification/channel'),\n\t\t\t\ttype: 'POST',\n\t\t\t\tdata: {\n\t\t\t\t\tchannel: this.currentChannel,\n\t\t\t\t},\n\t\t\t\tsuccess(data) {\n\t\t\t\t\tOC.msg.finishedAction('#channel_save_msg', data)\n\t\t\t\t},\n\t\t\t})\n\n\t\t\tthis.openedUpdateChannelMenu = false\n\t\t},\n\t\ttoggleUpdateChannelMenu() {\n\t\t\tthis.openedUpdateChannelMenu = !this.openedUpdateChannelMenu\n\t\t},\n\t\ttoggleHideMissingUpdates() {\n\t\t\tthis.hideMissingUpdates = !this.hideMissingUpdates\n\t\t},\n\t\ttoggleHideAvailableUpdates() {\n\t\t\tthis.hideAvailableUpdates = !this.hideAvailableUpdates\n\t\t},\n\t\ttoggleMenu() {\n\t\t\tthis.openedWhatsNew = !this.openedWhatsNew\n\t\t},\n\t\tcloseUpdateChannelMenu() {\n\t\t\tthis.openedUpdateChannelMenu = false\n\t\t},\n\t\thideMenu() {\n\t\t\tthis.openedWhatsNew = false\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t#updatenotification {\n\t\tmargin-top: -25px;\n\t\tmargin-bottom: 200px;\n\t\tdiv.update,\n\t\tp:not(.inlineblock) {\n\t\t\tmargin-bottom: 25px;\n\t\t}\n\t\th2.inlineblock {\n\t\t\tmargin-top: 25px;\n\t\t}\n\t\th3 {\n\t\t\tcursor: pointer;\n\t\t\t.icon {\n\t\t\t\tcursor: pointer;\n\t\t\t}\n\t\t\t&:first-of-type {\n\t\t\t\tmargin-top: 0;\n\t\t\t}\n\t\t\t&.update-channel-selector {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tcursor: inherit;\n\t\t\t}\n\t\t}\n\t\t.icon {\n\t\t\tdisplay: inline-block;\n\t\t\tmargin-bottom: -3px;\n\t\t}\n\t\t.icon-triangle-s, .icon-triangle-n {\n\t\t\topacity: 0.5;\n\t\t}\n\t\t.whatsNew {\n\t\t\tdisplay: inline-block;\n\t\t}\n\t\t.toggleWhatsNew {\n\t\t\tposition: relative;\n\t\t}\n\t\t.popovermenu {\n\t\t\tp {\n\t\t\t\tmargin-bottom: 0;\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t\tmargin-top: 5px;\n\t\t\twidth: 300px;\n\t\t}\n\t\t.applist {\n\t\t\tmargin-bottom: 25px;\n\t\t}\n\n\t\t.update-menu {\n\t\t\tposition: relative;\n\t\t\tcursor: pointer;\n\t\t\tmargin-left: 3px;\n\t\t\tdisplay: inline-block;\n\t\t\t.icon-update-menu {\n\t\t\t\tcursor: inherit;\n\t\t\t\t.icon-triangle-s {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tvertical-align: middle;\n\t\t\t\t\tcursor: inherit;\n\t\t\t\t\topacity: 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\t.popovermenu {\n\t\t\t\tdisplay: none;\n\t\t\t\ttop: 28px;\n\t\t\t\t&.show-menu {\n\t\t\t\t\tdisplay: block;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n</style>\n<style lang=\"scss\">\n\t/* override needed to make menu wider */\n\t#updatenotification .popovermenu {\n\t\tp {\n\t\t\tmargin-top: 5px;\n\t\t\twidth: 100%;\n\t\t}\n\t\tmargin-top: 5px;\n\t\twidth: 300px;\n\t}\n\t/* override needed to replace yellow hover state with a dark one */\n\t#updatenotification .update-menu .icon-star:hover,\n\t#updatenotification .update-menu .icon-star:focus {\n\t\tbackground-image: var(--icon-star-000);\n\t}\n\t#updatenotification .topMargin {\n\t\tmargin-top: 15px;\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdateNotification.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!./UpdateNotification.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!./UpdateNotification.vue?vue&type=style&index=0&id=418946e4&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!./UpdateNotification.vue?vue&type=style&index=0&id=418946e4&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","\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!./UpdateNotification.vue?vue&type=style&index=1&lang=scss&\";\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!./UpdateNotification.vue?vue&type=style&index=1&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UpdateNotification.vue?vue&type=template&id=418946e4&scoped=true&\"\nimport script from \"./UpdateNotification.vue?vue&type=script&lang=js&\"\nexport * from \"./UpdateNotification.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UpdateNotification.vue?vue&type=style&index=0&id=418946e4&lang=scss&scoped=true&\"\nimport style1 from \"./UpdateNotification.vue?vue&type=style&index=1&lang=scss&\"\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 \"418946e4\",\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:\"followupsection\",attrs:{\"id\":\"updatenotification\"}},[_c('div',{staticClass:\"update\"},[(_vm.isNewVersionAvailable)?[(_vm.versionIsEol)?_c('p',[_c('span',{staticClass:\"warning\"},[_c('span',{staticClass:\"icon icon-error-white\"}),_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('updatenotification', 'The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible.'))+\"\\n\\t\\t\\t\\t\")])]):_vm._e(),_vm._v(\" \"),_c('p',[_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.newVersionAvailableString)}}),_c('br'),_vm._v(\" \"),(!_vm.isListFetched)?_c('span',{staticClass:\"icon icon-loading-small\"}):_vm._e(),_vm._v(\" \"),_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.statusText)}})]),_vm._v(\" \"),(_vm.missingAppUpdates.length)?[_c('h3',{on:{\"click\":_vm.toggleHideMissingUpdates}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('updatenotification', 'Apps missing compatible version'))+\"\\n\\t\\t\\t\\t\\t\"),(!_vm.hideMissingUpdates)?_c('span',{staticClass:\"icon icon-triangle-n\"}):_vm._e(),_vm._v(\" \"),(_vm.hideMissingUpdates)?_c('span',{staticClass:\"icon icon-triangle-s\"}):_vm._e()]),_vm._v(\" \"),(!_vm.hideMissingUpdates)?_c('ul',{staticClass:\"applist\"},_vm._l((_vm.missingAppUpdates),function(app,index){return _c('li',{key:index},[_c('a',{attrs:{\"href\":'https://apps.nextcloud.com/apps/' + app.appId,\"title\":_vm.t('settings', 'View in store')}},[_vm._v(_vm._s(app.appName)+\" ↗\")])])}),0):_vm._e()]:_vm._e(),_vm._v(\" \"),(_vm.availableAppUpdates.length)?[_c('h3',{on:{\"click\":_vm.toggleHideAvailableUpdates}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('updatenotification', 'Apps with compatible version'))+\"\\n\\t\\t\\t\\t\\t\"),(!_vm.hideAvailableUpdates)?_c('span',{staticClass:\"icon icon-triangle-n\"}):_vm._e(),_vm._v(\" \"),(_vm.hideAvailableUpdates)?_c('span',{staticClass:\"icon icon-triangle-s\"}):_vm._e()]),_vm._v(\" \"),(!_vm.hideAvailableUpdates)?_c('ul',{staticClass:\"applist\"},_vm._l((_vm.availableAppUpdates),function(app,index){return _c('li',{key:index},[_c('a',{attrs:{\"href\":'https://apps.nextcloud.com/apps/' + app.appId,\"title\":_vm.t('settings', 'View in store')}},[_vm._v(_vm._s(app.appName)+\" ↗\")])])}),0):_vm._e()]:_vm._e(),_vm._v(\" \"),(!_vm.isWebUpdaterRecommended && _vm.updaterEnabled && _vm.webUpdaterEnabled)?[_c('h3',{staticClass:\"warning\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('updatenotification', 'Please note that the web updater is not recommended with more than 100 users! Please use the command line updater instead!'))+\"\\n\\t\\t\\t\\t\")])]:_vm._e(),_vm._v(\" \"),_c('div',[(_vm.updaterEnabled && _vm.webUpdaterEnabled)?_c('a',{staticClass:\"button primary\",attrs:{\"href\":\"#\"},on:{\"click\":_vm.clickUpdaterButton}},[_vm._v(_vm._s(_vm.t('updatenotification', 'Open updater')))]):_vm._e(),_vm._v(\" \"),(_vm.downloadLink)?_c('a',{staticClass:\"button\",class:{ hidden: !_vm.updaterEnabled },attrs:{\"href\":_vm.downloadLink}},[_vm._v(_vm._s(_vm.t('updatenotification', 'Download now')))]):_vm._e(),_vm._v(\" \"),(_vm.updaterEnabled && !_vm.webUpdaterEnabled)?_c('span',[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('updatenotification', 'Please use the command line updater to update.'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.whatsNew)?_c('div',{staticClass:\"whatsNew\"},[_c('div',{staticClass:\"toggleWhatsNew\"},[_c('a',{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:(_vm.hideMenu),expression:\"hideMenu\"}],staticClass:\"button\",on:{\"click\":_vm.toggleMenu}},[_vm._v(_vm._s(_vm.t('updatenotification', 'What\\'s new?')))]),_vm._v(\" \"),_c('div',{staticClass:\"popovermenu\",class:{ 'menu-center': true, open: _vm.openedWhatsNew }},[_c('PopoverMenu',{attrs:{\"menu\":_vm.whatsNew}})],1)])]):_vm._e()])]:(!_vm.isUpdateChecked)?[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('updatenotification', 'The update check is not yet finished. Please refresh the page.'))+\"\\n\\t\\t\")]:[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('updatenotification', 'Your version is up to date.'))+\"\\n\\t\\t\\t\"),_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.lastCheckedOnString),expression:\"lastCheckedOnString\",modifiers:{\"auto\":true}}],staticClass:\"icon-info svg\"})],_vm._v(\" \"),(!_vm.isDefaultUpdateServerURL)?[_c('p',{staticClass:\"topMargin\"},[_c('em',[_vm._v(_vm._s(_vm.t('updatenotification', 'A non-default update server is in use to be checked for updates:'))+\" \"),_c('code',[_vm._v(_vm._s(_vm.updateServerURL))])])])]:_vm._e()],2),_vm._v(\" \"),_c('div',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('updatenotification', 'You can change the update channel below which also affects the apps management page. E.g. after switching to the beta channel, beta app updates will be offered to you in the apps management page.'))+\"\\n\\t\")]),_vm._v(\" \"),_c('h3',{staticClass:\"update-channel-selector\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('updatenotification', 'Update channel:'))+\"\\n\\t\\t\"),_c('div',{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:(_vm.closeUpdateChannelMenu),expression:\"closeUpdateChannelMenu\"}],staticClass:\"update-menu\"},[_c('span',{staticClass:\"icon-update-menu\",on:{\"click\":_vm.toggleUpdateChannelMenu}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.localizedChannelName)+\"\\n\\t\\t\\t\\t\"),_c('span',{staticClass:\"icon-triangle-s\"})]),_vm._v(\" \"),_c('div',{staticClass:\"popovermenu menu menu-center\",class:{ 'show-menu': _vm.openedUpdateChannelMenu}},[_c('PopoverMenu',{attrs:{\"menu\":_vm.channelList}})],1)])]),_vm._v(\" \"),_c('span',{staticClass:\"msg\",attrs:{\"id\":\"channel_save_msg\"}}),_c('br'),_vm._v(\" \"),_c('p',[_c('em',[_vm._v(_vm._s(_vm.t('updatenotification', 'You can always update to a newer version. But you can never downgrade to a more stable version.')))]),_c('br'),_vm._v(\" \"),_c('em',{domProps:{\"innerHTML\":_vm._s(_vm.noteDelayedStableString)}})]),_vm._v(\" \"),_c('p',{attrs:{\"id\":\"oca_updatenotification_groups\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('updatenotification', 'Notify members of the following groups about available updates:'))+\"\\n\\t\\t\"),_c('Multiselect',{attrs:{\"options\":_vm.availableGroups,\"multiple\":true,\"label\":\"label\",\"track-by\":\"value\",\"tag-width\":75},model:{value:(_vm.notifyGroups),callback:function ($$v) {_vm.notifyGroups=$$v},expression:\"notifyGroups\"}}),_c('br'),_vm._v(\" \"),(_vm.currentChannel === 'daily' || _vm.currentChannel === 'git')?_c('em',[_vm._v(_vm._s(_vm.t('updatenotification', 'Only notifications for app updates are available.')))]):_vm._e(),_vm._v(\" \"),(_vm.currentChannel === 'daily')?_c('em',[_vm._v(_vm._s(_vm.t('updatenotification', 'The selected update channel makes dedicated notifications for the server obsolete.')))]):_vm._e(),_vm._v(\" \"),(_vm.currentChannel === 'git')?_c('em',[_vm._v(_vm._s(_vm.t('updatenotification', 'The selected update channel does not support updates of the server.')))]):_vm._e()],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2018 Joas Schilling <coding@schilljs.com>\n *\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport Vue from 'vue'\nimport Root from './components/UpdateNotification'\n\nVue.mixin({\n\tmethods: {\n\t\tt(app, text, vars, count, options) {\n\t\t\treturn OC.L10N.translate(app, text, vars, count, options)\n\t\t},\n\t\tn(app, textSingular, textPlural, count, vars, options) {\n\t\t\treturn OC.L10N.translatePlural(app, textSingular, textPlural, count, vars, options)\n\t\t},\n\t},\n})\n\n// eslint-disable-next-line no-new\nnew Vue({\n\tel: '#updatenotification',\n\trender: h => h(Root),\n})\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, \"#updatenotification[data-v-418946e4]{margin-top:-25px;margin-bottom:200px}#updatenotification div.update[data-v-418946e4],#updatenotification p[data-v-418946e4]:not(.inlineblock){margin-bottom:25px}#updatenotification h2.inlineblock[data-v-418946e4]{margin-top:25px}#updatenotification h3[data-v-418946e4]{cursor:pointer}#updatenotification h3 .icon[data-v-418946e4]{cursor:pointer}#updatenotification h3[data-v-418946e4]:first-of-type{margin-top:0}#updatenotification h3.update-channel-selector[data-v-418946e4]{display:inline-block;cursor:inherit}#updatenotification .icon[data-v-418946e4]{display:inline-block;margin-bottom:-3px}#updatenotification .icon-triangle-s[data-v-418946e4],#updatenotification .icon-triangle-n[data-v-418946e4]{opacity:.5}#updatenotification .whatsNew[data-v-418946e4]{display:inline-block}#updatenotification .toggleWhatsNew[data-v-418946e4]{position:relative}#updatenotification .popovermenu[data-v-418946e4]{margin-top:5px;width:300px}#updatenotification .popovermenu p[data-v-418946e4]{margin-bottom:0;width:100%}#updatenotification .applist[data-v-418946e4]{margin-bottom:25px}#updatenotification .update-menu[data-v-418946e4]{position:relative;cursor:pointer;margin-left:3px;display:inline-block}#updatenotification .update-menu .icon-update-menu[data-v-418946e4]{cursor:inherit}#updatenotification .update-menu .icon-update-menu .icon-triangle-s[data-v-418946e4]{display:inline-block;vertical-align:middle;cursor:inherit;opacity:1}#updatenotification .update-menu .popovermenu[data-v-418946e4]{display:none;top:28px}#updatenotification .update-menu .popovermenu.show-menu[data-v-418946e4]{display:block}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/updatenotification/src/components/UpdateNotification.vue\"],\"names\":[],\"mappings\":\"AAwcA,qCACC,gBAAA,CACA,mBAAA,CACA,yGAEC,kBAAA,CAED,oDACC,eAAA,CAED,wCACC,cAAA,CACA,8CACC,cAAA,CAED,sDACC,YAAA,CAED,gEACC,oBAAA,CACA,cAAA,CAGF,2CACC,oBAAA,CACA,kBAAA,CAED,4GACC,UAAA,CAED,+CACC,oBAAA,CAED,qDACC,iBAAA,CAED,kDAKC,cAAA,CACA,WAAA,CALA,oDACC,eAAA,CACA,UAAA,CAKF,8CACC,kBAAA,CAGD,kDACC,iBAAA,CACA,cAAA,CACA,eAAA,CACA,oBAAA,CACA,oEACC,cAAA,CACA,qFACC,oBAAA,CACA,qBAAA,CACA,cAAA,CACA,SAAA,CAGF,+DACC,YAAA,CACA,QAAA,CACA,yEACC,aAAA\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n#updatenotification {\\n\\tmargin-top: -25px;\\n\\tmargin-bottom: 200px;\\n\\tdiv.update,\\n\\tp:not(.inlineblock) {\\n\\t\\tmargin-bottom: 25px;\\n\\t}\\n\\th2.inlineblock {\\n\\t\\tmargin-top: 25px;\\n\\t}\\n\\th3 {\\n\\t\\tcursor: pointer;\\n\\t\\t.icon {\\n\\t\\t\\tcursor: pointer;\\n\\t\\t}\\n\\t\\t&:first-of-type {\\n\\t\\t\\tmargin-top: 0;\\n\\t\\t}\\n\\t\\t&.update-channel-selector {\\n\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\tcursor: inherit;\\n\\t\\t}\\n\\t}\\n\\t.icon {\\n\\t\\tdisplay: inline-block;\\n\\t\\tmargin-bottom: -3px;\\n\\t}\\n\\t.icon-triangle-s, .icon-triangle-n {\\n\\t\\topacity: 0.5;\\n\\t}\\n\\t.whatsNew {\\n\\t\\tdisplay: inline-block;\\n\\t}\\n\\t.toggleWhatsNew {\\n\\t\\tposition: relative;\\n\\t}\\n\\t.popovermenu {\\n\\t\\tp {\\n\\t\\t\\tmargin-bottom: 0;\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\t\\tmargin-top: 5px;\\n\\t\\twidth: 300px;\\n\\t}\\n\\t.applist {\\n\\t\\tmargin-bottom: 25px;\\n\\t}\\n\\n\\t.update-menu {\\n\\t\\tposition: relative;\\n\\t\\tcursor: pointer;\\n\\t\\tmargin-left: 3px;\\n\\t\\tdisplay: inline-block;\\n\\t\\t.icon-update-menu {\\n\\t\\t\\tcursor: inherit;\\n\\t\\t\\t.icon-triangle-s {\\n\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t\\tvertical-align: middle;\\n\\t\\t\\t\\tcursor: inherit;\\n\\t\\t\\t\\topacity: 1;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t.popovermenu {\\n\\t\\t\\tdisplay: none;\\n\\t\\t\\ttop: 28px;\\n\\t\\t\\t&.show-menu {\\n\\t\\t\\t\\tdisplay: block;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"#updatenotification .popovermenu{margin-top:5px;width:300px}#updatenotification .popovermenu p{margin-top:5px;width:100%}#updatenotification .update-menu .icon-star:hover,#updatenotification .update-menu .icon-star:focus{background-image:var(--icon-star-000)}#updatenotification .topMargin{margin-top:15px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/updatenotification/src/components/UpdateNotification.vue\"],\"names\":[],\"mappings\":\"AAkhBA,iCAKC,cAAA,CACA,WAAA,CALA,mCACC,cAAA,CACA,UAAA,CAMF,oGAEC,qCAAA,CAED,+BACC,eAAA\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n/* override needed to make menu wider */\\n#updatenotification .popovermenu {\\n\\tp {\\n\\t\\tmargin-top: 5px;\\n\\t\\twidth: 100%;\\n\\t}\\n\\tmargin-top: 5px;\\n\\twidth: 300px;\\n}\\n/* override needed to replace yellow hover state with a dark one */\\n#updatenotification .update-menu .icon-star:hover,\\n#updatenotification .update-menu .icon-star:focus {\\n\\tbackground-image: var(--icon-star-000);\\n}\\n#updatenotification .topMargin {\\n\\tmargin-top: 15px;\\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 = 7292;","__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\t7292: 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__(36267); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","VTooltip","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","_v","_s","t","_e","domProps","newVersionAvailableString","isListFetched","statusText","missingAppUpdates","on","toggleHideMissingUpdates","hideMissingUpdates","_l","app","index","key","appId","appName","availableAppUpdates","toggleHideAvailableUpdates","hideAvailableUpdates","isWebUpdaterRecommended","updaterEnabled","webUpdaterEnabled","clickUpdaterButton","class","hidden","downloadLink","directives","name","rawName","value","expression","toggleMenu","open","openedWhatsNew","whatsNew","isUpdateChecked","modifiers","isDefaultUpdateServerURL","updateServerURL","toggleUpdateChannelMenu","localizedChannelName","openedUpdateChannelMenu","channelList","noteDelayedStableString","availableGroups","model","callback","$$v","notifyGroups","currentChannel","Vue","methods","text","vars","count","OC","L10N","translate","n","textSingular","textPlural","translatePlural","el","render","h","Root","___CSS_LOADER_EXPORT___","push","module","id","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","splice","r","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"updatenotification-updatenotification.js?v=3965d91a99f3ff47d6bf","mappings":";6BAAIA,0HCkIJ,EAAAC,SAAA,uBAEA,ICpI+L,EDoI/L,CACA,0BACA,YACA,gBACA,iBAEA,YACA,iBACA,oBAEA,KAVA,WAWA,OACA,oBACA,mBACA,mBACA,qBACA,2BACA,kBACA,gBACA,gBACA,yBACA,wBACA,mBACA,gBACA,gBACA,kBACA,YACA,gBACA,mBACA,4BACA,uBAEA,uBACA,qBACA,kBACA,oBACA,iBACA,sBACA,wBACA,kBACA,6BAIA,UACA,oBAEA,UACA,0BADA,WAEA,iGACA,0CAIA,wBAPA,WAQA,uSACA,mHAGA,oBAZA,WAaA,8DACA,wCAIA,WAlBA,WAmBA,0BAIA,sBACA,+GAGA,oBACA,wNAGA,kCACA,yHACA,4OAbA,iEAgBA,SApCA,WAqCA,gCACA,YAEA,SACA,+BACA,2DAWA,OATA,mBACA,QACA,uBACA,8CACA,iBACA,gBACA,YAGA,GAGA,YAxDA,WAyDA,SAmCA,OAjCA,QACA,0CACA,yXACA,iBACA,0CACA,oCACA,+CAGA,QACA,sCACA,oJACA,sBACA,sCACA,2CAGA,QACA,oCACA,yHACA,mCACA,oCACA,yCAGA,0BACA,QACA,yBACA,mBACA,YAIA,GAGA,oBA/FA,WAgGA,wGAGA,qBAnGA,WAoGA,4BACA,iBACA,4CACA,aACA,wCACA,WACA,sCACA,QACA,8BAKA,OACA,aADA,SACA,GACA,6BAIA,SACA,sBACA,mBAGA,iFAEA,sBAbA,WAcA,4BAIA,QACA,6GACA,WACA,WAHA,SAGA,GACA,iDAEA,oBACA,8CACA,0CACA,sBACA,wBACA,WACA,kBACA,4BACA,0BACA,gEACA,sBACA,wBACA,eAIA,YAxMA,WA0MA,6DAEA,6BACA,yCACA,mCACA,uCACA,2CACA,uDACA,qCACA,iCACA,mDACA,uCACA,qCACA,yBACA,iCACA,yDACA,iCACA,iDACA,oCACA,0CAEA,gCACA,2BACA,sEAEA,yEAGA,QAtOA,WAuOA,sBACA,0EACA,2CACA,qBACA,YAEA,QACA,yCACA,gBACA,oBACA,SACA,wCACA,6BAGA,uBACA,6BACA,cAIA,SAIA,mB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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/updatenotification/src/components/UpdateNotification.vue","webpack:///nextcloud/apps/updatenotification/src/components/UpdateNotification.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/updatenotification/src/components/UpdateNotification.vue?a637","webpack://nextcloud/./apps/updatenotification/src/components/UpdateNotification.vue?fbe8","webpack://nextcloud/./apps/updatenotification/src/components/UpdateNotification.vue?1fb0","webpack:///nextcloud/apps/updatenotification/src/components/UpdateNotification.vue?vue&type=template&id=418946e4&scoped=true&","webpack:///nextcloud/apps/updatenotification/src/init.js","webpack:///nextcloud/apps/updatenotification/src/components/UpdateNotification.vue?vue&type=style&index=0&id=418946e4&lang=scss&scoped=true&","webpack:///nextcloud/apps/updatenotification/src/components/UpdateNotification.vue?vue&type=style&index=1&lang=scss&","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/runtime/nonce","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};","<template>\n\t<div id=\"updatenotification\" class=\"followupsection\">\n\t\t<div class=\"update\">\n\t\t\t<template v-if=\"isNewVersionAvailable\">\n\t\t\t\t<p v-if=\"versionIsEol\">\n\t\t\t\t\t<span class=\"warning\">\n\t\t\t\t\t\t<span class=\"icon icon-error-white\" />\n\t\t\t\t\t\t{{ t('updatenotification', 'The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible.') }}\n\t\t\t\t\t</span>\n\t\t\t\t</p>\n\n\t\t\t\t<p>\n\t\t\t\t\t<span v-html=\"newVersionAvailableString\" /><br>\n\t\t\t\t\t<span v-if=\"!isListFetched\" class=\"icon icon-loading-small\" />\n\t\t\t\t\t<span v-html=\"statusText\" />\n\t\t\t\t</p>\n\n\t\t\t\t<template v-if=\"missingAppUpdates.length\">\n\t\t\t\t\t<h3 @click=\"toggleHideMissingUpdates\">\n\t\t\t\t\t\t{{ t('updatenotification', 'Apps missing compatible version') }}\n\t\t\t\t\t\t<span v-if=\"!hideMissingUpdates\" class=\"icon icon-triangle-n\" />\n\t\t\t\t\t\t<span v-if=\"hideMissingUpdates\" class=\"icon icon-triangle-s\" />\n\t\t\t\t\t</h3>\n\t\t\t\t\t<ul v-if=\"!hideMissingUpdates\" class=\"applist\">\n\t\t\t\t\t\t<li v-for=\"(app, index) in missingAppUpdates\" :key=\"index\">\n\t\t\t\t\t\t\t<a :href=\"'https://apps.nextcloud.com/apps/' + app.appId\" :title=\"t('settings', 'View in store')\">{{ app.appName }} ↗</a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</template>\n\n\t\t\t\t<template v-if=\"availableAppUpdates.length\">\n\t\t\t\t\t<h3 @click=\"toggleHideAvailableUpdates\">\n\t\t\t\t\t\t{{ t('updatenotification', 'Apps with compatible version') }}\n\t\t\t\t\t\t<span v-if=\"!hideAvailableUpdates\" class=\"icon icon-triangle-n\" />\n\t\t\t\t\t\t<span v-if=\"hideAvailableUpdates\" class=\"icon icon-triangle-s\" />\n\t\t\t\t\t</h3>\n\t\t\t\t\t<ul v-if=\"!hideAvailableUpdates\" class=\"applist\">\n\t\t\t\t\t\t<li v-for=\"(app, index) in availableAppUpdates\" :key=\"index\">\n\t\t\t\t\t\t\t<a :href=\"'https://apps.nextcloud.com/apps/' + app.appId\" :title=\"t('settings', 'View in store')\">{{ app.appName }} ↗</a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</template>\n\n\t\t\t\t<template v-if=\"!isWebUpdaterRecommended && updaterEnabled && webUpdaterEnabled\">\n\t\t\t\t\t<h3 class=\"warning\">\n\t\t\t\t\t\t{{ t('updatenotification', 'Please note that the web updater is not recommended with more than 100 users! Please use the command line updater instead!') }}\n\t\t\t\t\t</h3>\n\t\t\t\t</template>\n\n\t\t\t\t<div>\n\t\t\t\t\t<a v-if=\"updaterEnabled && webUpdaterEnabled\"\n\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\tclass=\"button primary\"\n\t\t\t\t\t\t@click=\"clickUpdaterButton\">{{ t('updatenotification', 'Open updater') }}</a>\n\t\t\t\t\t<a v-if=\"downloadLink\"\n\t\t\t\t\t\t:href=\"downloadLink\"\n\t\t\t\t\t\tclass=\"button\"\n\t\t\t\t\t\t:class=\"{ hidden: !updaterEnabled }\">{{ t('updatenotification', 'Download now') }}</a>\n\t\t\t\t\t<span v-if=\"updaterEnabled && !webUpdaterEnabled\">\n\t\t\t\t\t\t{{ t('updatenotification', 'Please use the command line updater to update.') }}\n\t\t\t\t\t</span>\n\t\t\t\t\t<div v-if=\"whatsNew\" class=\"whatsNew\">\n\t\t\t\t\t\t<div class=\"toggleWhatsNew\">\n\t\t\t\t\t\t\t<a v-click-outside=\"hideMenu\" class=\"button\" @click=\"toggleMenu\">{{ t('updatenotification', 'What\\'s new?') }}</a>\n\t\t\t\t\t\t\t<div class=\"popovermenu\" :class=\"{ 'menu-center': true, open: openedWhatsNew }\">\n\t\t\t\t\t\t\t\t<PopoverMenu :menu=\"whatsNew\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t\t<template v-else-if=\"!isUpdateChecked\">\n\t\t\t\t{{ t('updatenotification', 'The update check is not yet finished. Please refresh the page.') }}\n\t\t\t</template>\n\t\t\t<template v-else>\n\t\t\t\t{{ t('updatenotification', 'Your version is up to date.') }}\n\t\t\t\t<span v-tooltip.auto=\"lastCheckedOnString\" class=\"icon-info svg\" />\n\t\t\t</template>\n\n\t\t\t<template v-if=\"!isDefaultUpdateServerURL\">\n\t\t\t\t<p class=\"topMargin\">\n\t\t\t\t\t<em>{{ t('updatenotification', 'A non-default update server is in use to be checked for updates:') }} <code>{{ updateServerURL }}</code></em>\n\t\t\t\t</p>\n\t\t\t</template>\n\t\t</div>\n\n\t\t<div>\n\t\t\t{{ t('updatenotification', 'You can change the update channel below which also affects the apps management page. E.g. after switching to the beta channel, beta app updates will be offered to you in the apps management page.') }}\n\t\t</div>\n\n\t\t<h3 class=\"update-channel-selector\">\n\t\t\t{{ t('updatenotification', 'Update channel:') }}\n\t\t\t<div v-click-outside=\"closeUpdateChannelMenu\" class=\"update-menu\">\n\t\t\t\t<span class=\"icon-update-menu\" @click=\"toggleUpdateChannelMenu\">\n\t\t\t\t\t{{ localizedChannelName }}\n\t\t\t\t\t<span class=\"icon-triangle-s\" />\n\t\t\t\t</span>\n\t\t\t\t<div class=\"popovermenu menu menu-center\" :class=\"{ 'show-menu': openedUpdateChannelMenu}\">\n\t\t\t\t\t<PopoverMenu :menu=\"channelList\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</h3>\n\t\t<span id=\"channel_save_msg\" class=\"msg\" /><br>\n\t\t<p>\n\t\t\t<em>{{ t('updatenotification', 'You can always update to a newer version. But you can never downgrade to a more stable version.') }}</em><br>\n\t\t\t<em v-html=\"noteDelayedStableString\" />\n\t\t</p>\n\n\t\t<p id=\"oca_updatenotification_groups\">\n\t\t\t{{ t('updatenotification', 'Notify members of the following groups about available updates:') }}\n\t\t\t<Multiselect v-model=\"notifyGroups\"\n\t\t\t\t:options=\"availableGroups\"\n\t\t\t\t:multiple=\"true\"\n\t\t\t\tlabel=\"label\"\n\t\t\t\ttrack-by=\"value\"\n\t\t\t\t:tag-width=\"75\" /><br>\n\t\t\t<em v-if=\"currentChannel === 'daily' || currentChannel === 'git'\">{{ t('updatenotification', 'Only notifications for app updates are available.') }}</em>\n\t\t\t<em v-if=\"currentChannel === 'daily'\">{{ t('updatenotification', 'The selected update channel makes dedicated notifications for the server obsolete.') }}</em>\n\t\t\t<em v-if=\"currentChannel === 'git'\">{{ t('updatenotification', 'The selected update channel does not support updates of the server.') }}</em>\n\t\t</p>\n\t</div>\n</template>\n\n<script>\nimport { generateUrl, getRootUrl, generateOcsUrl } from '@nextcloud/router'\nimport PopoverMenu from '@nextcloud/vue/dist/Components/PopoverMenu'\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\nimport { VTooltip } from 'v-tooltip'\nimport ClickOutside from 'vue-click-outside'\n\nVTooltip.options.defaultHtml = false\n\nexport default {\n\tname: 'UpdateNotification',\n\tcomponents: {\n\t\tMultiselect,\n\t\tPopoverMenu,\n\t},\n\tdirectives: {\n\t\tClickOutside,\n\t\ttooltip: VTooltip,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tnewVersionString: '',\n\t\t\tlastCheckedDate: '',\n\t\t\tisUpdateChecked: false,\n\t\t\twebUpdaterEnabled: true,\n\t\t\tisWebUpdaterRecommended: true,\n\t\t\tupdaterEnabled: true,\n\t\t\tversionIsEol: false,\n\t\t\tdownloadLink: '',\n\t\t\tisNewVersionAvailable: false,\n\t\t\thasValidSubscription: false,\n\t\t\tupdateServerURL: '',\n\t\t\tchangelogURL: '',\n\t\t\twhatsNewData: [],\n\t\t\tcurrentChannel: '',\n\t\t\tchannels: [],\n\t\t\tnotifyGroups: '',\n\t\t\tavailableGroups: [],\n\t\t\tisDefaultUpdateServerURL: true,\n\t\t\tenableChangeWatcher: false,\n\n\t\t\tavailableAppUpdates: [],\n\t\t\tmissingAppUpdates: [],\n\t\t\tappStoreFailed: false,\n\t\t\tappStoreDisabled: false,\n\t\t\tisListFetched: false,\n\t\t\thideMissingUpdates: false,\n\t\t\thideAvailableUpdates: true,\n\t\t\topenedWhatsNew: false,\n\t\t\topenedUpdateChannelMenu: false,\n\t\t}\n\t},\n\n\t_$el: null,\n\t_$notifyGroups: null,\n\n\tcomputed: {\n\t\tnewVersionAvailableString() {\n\t\t\treturn t('updatenotification', 'A new version is available: <strong>{newVersionString}</strong>', {\n\t\t\t\tnewVersionString: this.newVersionString,\n\t\t\t})\n\t\t},\n\n\t\tnoteDelayedStableString() {\n\t\t\treturn t('updatenotification', 'Note that after a new release the update only shows up after the first minor release or later. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found. Learn more about updates and release channels at {link}')\n\t\t\t\t.replace('{link}', '<a href=\"https://nextcloud.com/release-channels/\">https://nextcloud.com/release-channels/</a>')\n\t\t},\n\n\t\tlastCheckedOnString() {\n\t\t\treturn t('updatenotification', 'Checked on {lastCheckedDate}', {\n\t\t\t\tlastCheckedDate: this.lastCheckedDate,\n\t\t\t})\n\t\t},\n\n\t\tstatusText() {\n\t\t\tif (!this.isListFetched) {\n\t\t\t\treturn t('updatenotification', 'Checking apps for compatible versions')\n\t\t\t}\n\n\t\t\tif (this.appStoreDisabled) {\n\t\t\t\treturn t('updatenotification', 'Please make sure your config.php does not set <samp>appstoreenabled</samp> to false.')\n\t\t\t}\n\n\t\t\tif (this.appStoreFailed) {\n\t\t\t\treturn t('updatenotification', 'Could not connect to the App Store or no updates have been returned at all. Search manually for updates or make sure your server has access to the internet and can connect to the App Store.')\n\t\t\t}\n\n\t\t\treturn this.missingAppUpdates.length === 0\n\t\t\t\t? t('updatenotification', '<strong>All</strong> apps have a compatible version for this Nextcloud version available.', this)\n\t\t\t\t: n('updatenotification', '<strong>%n</strong> app has no compatible version for this Nextcloud version available.', '<strong>%n</strong> apps have no compatible version for this Nextcloud version available.', this.missingAppUpdates.length)\n\t\t},\n\n\t\twhatsNew() {\n\t\t\tif (this.whatsNewData.length === 0) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t\tconst whatsNew = []\n\t\t\tfor (const i in this.whatsNewData) {\n\t\t\t\twhatsNew[i] = { icon: 'icon-checkmark', longtext: this.whatsNewData[i] }\n\t\t\t}\n\t\t\tif (this.changelogURL) {\n\t\t\t\twhatsNew.push({\n\t\t\t\t\thref: this.changelogURL,\n\t\t\t\t\ttext: t('updatenotification', 'View changelog'),\n\t\t\t\t\ticon: 'icon-link',\n\t\t\t\t\ttarget: '_blank',\n\t\t\t\t\taction: '',\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn whatsNew\n\t\t},\n\n\t\tchannelList() {\n\t\t\tconst channelList = []\n\n\t\t\tchannelList.push({\n\t\t\t\ttext: t('updatenotification', 'Enterprise'),\n\t\t\t\tlongtext: t('updatenotification', 'For enterprise use. Provides always the latest patch level, but will not update to the next major release immediately. That update happens once Nextcloud GmbH has done additional hardening and testing for large-scale and mission-critical deployments. This channel is only available to customers and provides the Nextcloud Enterprise package.'),\n\t\t\t\ticon: 'icon-star',\n\t\t\t\tactive: this.currentChannel === 'enterprise',\n\t\t\t\tdisabled: !this.hasValidSubscription,\n\t\t\t\taction: this.changeReleaseChannelToEnterprise,\n\t\t\t})\n\n\t\t\tchannelList.push({\n\t\t\t\ttext: t('updatenotification', 'Stable'),\n\t\t\t\tlongtext: t('updatenotification', 'The most recent stable version. It is suited for regular use and will always update to the latest major version.'),\n\t\t\t\ticon: 'icon-checkmark',\n\t\t\t\tactive: this.currentChannel === 'stable',\n\t\t\t\taction: this.changeReleaseChannelToStable,\n\t\t\t})\n\n\t\t\tchannelList.push({\n\t\t\t\ttext: t('updatenotification', 'Beta'),\n\t\t\t\tlongtext: t('updatenotification', 'A pre-release version only for testing new features, not for production environments.'),\n\t\t\t\ticon: 'icon-category-customization',\n\t\t\t\tactive: this.currentChannel === 'beta',\n\t\t\t\taction: this.changeReleaseChannelToBeta,\n\t\t\t})\n\n\t\t\tif (this.isNonDefaultChannel) {\n\t\t\t\tchannelList.push({\n\t\t\t\t\ttext: this.currentChannel,\n\t\t\t\t\ticon: 'icon-rename',\n\t\t\t\t\tactive: true,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\treturn channelList\n\t\t},\n\n\t\tisNonDefaultChannel() {\n\t\t\treturn this.currentChannel !== 'enterprise' && this.currentChannel !== 'stable' && this.currentChannel !== 'beta'\n\t\t},\n\n\t\tlocalizedChannelName() {\n\t\t\tswitch (this.currentChannel) {\n\t\t\tcase 'enterprise':\n\t\t\t\treturn t('updatenotification', 'Enterprise')\n\t\t\tcase 'stable':\n\t\t\t\treturn t('updatenotification', 'Stable')\n\t\t\tcase 'beta':\n\t\t\t\treturn t('updatenotification', 'Beta')\n\t\t\tdefault:\n\t\t\t\treturn this.currentChannel\n\t\t\t}\n\t\t},\n\t},\n\n\twatch: {\n\t\tnotifyGroups(selectedOptions) {\n\t\t\tif (!this.enableChangeWatcher) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst selectedGroups = []\n\t\t\t_.each(selectedOptions, function(group) {\n\t\t\t\tselectedGroups.push(group.value)\n\t\t\t})\n\n\t\t\tOCP.AppConfig.setValue('updatenotification', 'notify_groups', JSON.stringify(selectedGroups))\n\t\t},\n\t\tisNewVersionAvailable() {\n\t\t\tif (!this.isNewVersionAvailable) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t$.ajax({\n\t\t\t\turl: generateOcsUrl('apps/updatenotification/api/v1/applist/{newVersion}', { newVersion: this.newVersion }),\n\t\t\t\ttype: 'GET',\n\t\t\t\tbeforeSend(request) {\n\t\t\t\t\trequest.setRequestHeader('Accept', 'application/json')\n\t\t\t\t},\n\t\t\t\tsuccess: function(response) {\n\t\t\t\t\tthis.availableAppUpdates = response.ocs.data.available\n\t\t\t\t\tthis.missingAppUpdates = response.ocs.data.missing\n\t\t\t\t\tthis.isListFetched = true\n\t\t\t\t\tthis.appStoreFailed = false\n\t\t\t\t}.bind(this),\n\t\t\t\terror: function(xhr) {\n\t\t\t\t\tthis.availableAppUpdates = []\n\t\t\t\t\tthis.missingAppUpdates = []\n\t\t\t\t\tthis.appStoreDisabled = xhr.responseJSON.ocs.data.appstore_disabled\n\t\t\t\t\tthis.isListFetched = true\n\t\t\t\t\tthis.appStoreFailed = true\n\t\t\t\t}.bind(this),\n\t\t\t})\n\t\t},\n\t},\n\tbeforeMount() {\n\t\t// Parse server data\n\t\tconst data = JSON.parse($('#updatenotification').attr('data-json'))\n\n\t\tthis.newVersion = data.newVersion\n\t\tthis.newVersionString = data.newVersionString\n\t\tthis.lastCheckedDate = data.lastChecked\n\t\tthis.isUpdateChecked = data.isUpdateChecked\n\t\tthis.webUpdaterEnabled = data.webUpdaterEnabled\n\t\tthis.isWebUpdaterRecommended = data.isWebUpdaterRecommended\n\t\tthis.updaterEnabled = data.updaterEnabled\n\t\tthis.downloadLink = data.downloadLink\n\t\tthis.isNewVersionAvailable = data.isNewVersionAvailable\n\t\tthis.updateServerURL = data.updateServerURL\n\t\tthis.currentChannel = data.currentChannel\n\t\tthis.channels = data.channels\n\t\tthis.notifyGroups = data.notifyGroups\n\t\tthis.isDefaultUpdateServerURL = data.isDefaultUpdateServerURL\n\t\tthis.versionIsEol = data.versionIsEol\n\t\tthis.hasValidSubscription = data.hasValidSubscription\n\t\tif (data.changes && data.changes.changelogURL) {\n\t\t\tthis.changelogURL = data.changes.changelogURL\n\t\t}\n\t\tif (data.changes && data.changes.whatsNew) {\n\t\t\tif (data.changes.whatsNew.admin) {\n\t\t\t\tthis.whatsNewData = this.whatsNewData.concat(data.changes.whatsNew.admin)\n\t\t\t}\n\t\t\tthis.whatsNewData = this.whatsNewData.concat(data.changes.whatsNew.regular)\n\t\t}\n\t},\n\tmounted() {\n\t\tthis._$el = $(this.$el)\n\t\tthis._$notifyGroups = this._$el.find('#oca_updatenotification_groups_list')\n\t\tthis._$notifyGroups.on('change', function() {\n\t\t\tthis.$emit('input')\n\t\t}.bind(this))\n\n\t\t$.ajax({\n\t\t\turl: generateOcsUrl('cloud/groups'),\n\t\t\tdataType: 'json',\n\t\t\tsuccess: function(data) {\n\t\t\t\tconst results = []\n\t\t\t\t$.each(data.ocs.data.groups, function(i, group) {\n\t\t\t\t\tresults.push({ value: group, label: group })\n\t\t\t\t})\n\n\t\t\t\tthis.availableGroups = results\n\t\t\t\tthis.enableChangeWatcher = true\n\t\t\t}.bind(this),\n\t\t})\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Creates a new authentication token and loads the updater URL\n\t\t */\n\t\tclickUpdaterButton() {\n\t\t\t$.ajax({\n\t\t\t\turl: generateUrl('/apps/updatenotification/credentials'),\n\t\t\t}).success(function(token) {\n\t\t\t\t// create a form to send a proper post request to the updater\n\t\t\t\tconst form = document.createElement('form')\n\t\t\t\tform.setAttribute('method', 'post')\n\t\t\t\tform.setAttribute('action', getRootUrl() + '/updater/')\n\n\t\t\t\tconst hiddenField = document.createElement('input')\n\t\t\t\thiddenField.setAttribute('type', 'hidden')\n\t\t\t\thiddenField.setAttribute('name', 'updater-secret-input')\n\t\t\t\thiddenField.setAttribute('value', token)\n\n\t\t\t\tform.appendChild(hiddenField)\n\n\t\t\t\tdocument.body.appendChild(form)\n\t\t\t\tform.submit()\n\t\t\t})\n\t\t},\n\t\tchangeReleaseChannelToEnterprise() {\n\t\t\tthis.changeReleaseChannel('enterprise')\n\t\t},\n\t\tchangeReleaseChannelToStable() {\n\t\t\tthis.changeReleaseChannel('stable')\n\t\t},\n\t\tchangeReleaseChannelToBeta() {\n\t\t\tthis.changeReleaseChannel('beta')\n\t\t},\n\t\tchangeReleaseChannel(channel) {\n\t\t\tthis.currentChannel = channel\n\n\t\t\t$.ajax({\n\t\t\t\turl: generateUrl('/apps/updatenotification/channel'),\n\t\t\t\ttype: 'POST',\n\t\t\t\tdata: {\n\t\t\t\t\tchannel: this.currentChannel,\n\t\t\t\t},\n\t\t\t\tsuccess(data) {\n\t\t\t\t\tOC.msg.finishedAction('#channel_save_msg', data)\n\t\t\t\t},\n\t\t\t})\n\n\t\t\tthis.openedUpdateChannelMenu = false\n\t\t},\n\t\ttoggleUpdateChannelMenu() {\n\t\t\tthis.openedUpdateChannelMenu = !this.openedUpdateChannelMenu\n\t\t},\n\t\ttoggleHideMissingUpdates() {\n\t\t\tthis.hideMissingUpdates = !this.hideMissingUpdates\n\t\t},\n\t\ttoggleHideAvailableUpdates() {\n\t\t\tthis.hideAvailableUpdates = !this.hideAvailableUpdates\n\t\t},\n\t\ttoggleMenu() {\n\t\t\tthis.openedWhatsNew = !this.openedWhatsNew\n\t\t},\n\t\tcloseUpdateChannelMenu() {\n\t\t\tthis.openedUpdateChannelMenu = false\n\t\t},\n\t\thideMenu() {\n\t\t\tthis.openedWhatsNew = false\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t#updatenotification {\n\t\tmargin-top: -25px;\n\t\tmargin-bottom: 200px;\n\t\tdiv.update,\n\t\tp:not(.inlineblock) {\n\t\t\tmargin-bottom: 25px;\n\t\t}\n\t\th2.inlineblock {\n\t\t\tmargin-top: 25px;\n\t\t}\n\t\th3 {\n\t\t\tcursor: pointer;\n\t\t\t.icon {\n\t\t\t\tcursor: pointer;\n\t\t\t}\n\t\t\t&:first-of-type {\n\t\t\t\tmargin-top: 0;\n\t\t\t}\n\t\t\t&.update-channel-selector {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tcursor: inherit;\n\t\t\t}\n\t\t}\n\t\t.icon {\n\t\t\tdisplay: inline-block;\n\t\t\tmargin-bottom: -3px;\n\t\t}\n\t\t.icon-triangle-s, .icon-triangle-n {\n\t\t\topacity: 0.5;\n\t\t}\n\t\t.whatsNew {\n\t\t\tdisplay: inline-block;\n\t\t}\n\t\t.toggleWhatsNew {\n\t\t\tposition: relative;\n\t\t}\n\t\t.popovermenu {\n\t\t\tp {\n\t\t\t\tmargin-bottom: 0;\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t\tmargin-top: 5px;\n\t\t\twidth: 300px;\n\t\t}\n\t\t.applist {\n\t\t\tmargin-bottom: 25px;\n\t\t}\n\n\t\t.update-menu {\n\t\t\tposition: relative;\n\t\t\tcursor: pointer;\n\t\t\tmargin-left: 3px;\n\t\t\tdisplay: inline-block;\n\t\t\t.icon-update-menu {\n\t\t\t\tcursor: inherit;\n\t\t\t\t.icon-triangle-s {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tvertical-align: middle;\n\t\t\t\t\tcursor: inherit;\n\t\t\t\t\topacity: 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\t.popovermenu {\n\t\t\t\tdisplay: none;\n\t\t\t\ttop: 28px;\n\t\t\t\t&.show-menu {\n\t\t\t\t\tdisplay: block;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n</style>\n<style lang=\"scss\">\n\t/* override needed to make menu wider */\n\t#updatenotification .popovermenu {\n\t\tp {\n\t\t\tmargin-top: 5px;\n\t\t\twidth: 100%;\n\t\t}\n\t\tmargin-top: 5px;\n\t\twidth: 300px;\n\t}\n\t/* override needed to replace yellow hover state with a dark one */\n\t#updatenotification .update-menu .icon-star:hover,\n\t#updatenotification .update-menu .icon-star:focus {\n\t\tbackground-image: var(--icon-star-000);\n\t}\n\t#updatenotification .topMargin {\n\t\tmargin-top: 15px;\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdateNotification.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!./UpdateNotification.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!./UpdateNotification.vue?vue&type=style&index=0&id=418946e4&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!./UpdateNotification.vue?vue&type=style&index=0&id=418946e4&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","\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!./UpdateNotification.vue?vue&type=style&index=1&lang=scss&\";\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!./UpdateNotification.vue?vue&type=style&index=1&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UpdateNotification.vue?vue&type=template&id=418946e4&scoped=true&\"\nimport script from \"./UpdateNotification.vue?vue&type=script&lang=js&\"\nexport * from \"./UpdateNotification.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UpdateNotification.vue?vue&type=style&index=0&id=418946e4&lang=scss&scoped=true&\"\nimport style1 from \"./UpdateNotification.vue?vue&type=style&index=1&lang=scss&\"\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 \"418946e4\",\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:\"followupsection\",attrs:{\"id\":\"updatenotification\"}},[_c('div',{staticClass:\"update\"},[(_vm.isNewVersionAvailable)?[(_vm.versionIsEol)?_c('p',[_c('span',{staticClass:\"warning\"},[_c('span',{staticClass:\"icon icon-error-white\"}),_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('updatenotification', 'The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible.'))+\"\\n\\t\\t\\t\\t\")])]):_vm._e(),_vm._v(\" \"),_c('p',[_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.newVersionAvailableString)}}),_c('br'),_vm._v(\" \"),(!_vm.isListFetched)?_c('span',{staticClass:\"icon icon-loading-small\"}):_vm._e(),_vm._v(\" \"),_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.statusText)}})]),_vm._v(\" \"),(_vm.missingAppUpdates.length)?[_c('h3',{on:{\"click\":_vm.toggleHideMissingUpdates}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('updatenotification', 'Apps missing compatible version'))+\"\\n\\t\\t\\t\\t\\t\"),(!_vm.hideMissingUpdates)?_c('span',{staticClass:\"icon icon-triangle-n\"}):_vm._e(),_vm._v(\" \"),(_vm.hideMissingUpdates)?_c('span',{staticClass:\"icon icon-triangle-s\"}):_vm._e()]),_vm._v(\" \"),(!_vm.hideMissingUpdates)?_c('ul',{staticClass:\"applist\"},_vm._l((_vm.missingAppUpdates),function(app,index){return _c('li',{key:index},[_c('a',{attrs:{\"href\":'https://apps.nextcloud.com/apps/' + app.appId,\"title\":_vm.t('settings', 'View in store')}},[_vm._v(_vm._s(app.appName)+\" ↗\")])])}),0):_vm._e()]:_vm._e(),_vm._v(\" \"),(_vm.availableAppUpdates.length)?[_c('h3',{on:{\"click\":_vm.toggleHideAvailableUpdates}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('updatenotification', 'Apps with compatible version'))+\"\\n\\t\\t\\t\\t\\t\"),(!_vm.hideAvailableUpdates)?_c('span',{staticClass:\"icon icon-triangle-n\"}):_vm._e(),_vm._v(\" \"),(_vm.hideAvailableUpdates)?_c('span',{staticClass:\"icon icon-triangle-s\"}):_vm._e()]),_vm._v(\" \"),(!_vm.hideAvailableUpdates)?_c('ul',{staticClass:\"applist\"},_vm._l((_vm.availableAppUpdates),function(app,index){return _c('li',{key:index},[_c('a',{attrs:{\"href\":'https://apps.nextcloud.com/apps/' + app.appId,\"title\":_vm.t('settings', 'View in store')}},[_vm._v(_vm._s(app.appName)+\" ↗\")])])}),0):_vm._e()]:_vm._e(),_vm._v(\" \"),(!_vm.isWebUpdaterRecommended && _vm.updaterEnabled && _vm.webUpdaterEnabled)?[_c('h3',{staticClass:\"warning\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('updatenotification', 'Please note that the web updater is not recommended with more than 100 users! Please use the command line updater instead!'))+\"\\n\\t\\t\\t\\t\")])]:_vm._e(),_vm._v(\" \"),_c('div',[(_vm.updaterEnabled && _vm.webUpdaterEnabled)?_c('a',{staticClass:\"button primary\",attrs:{\"href\":\"#\"},on:{\"click\":_vm.clickUpdaterButton}},[_vm._v(_vm._s(_vm.t('updatenotification', 'Open updater')))]):_vm._e(),_vm._v(\" \"),(_vm.downloadLink)?_c('a',{staticClass:\"button\",class:{ hidden: !_vm.updaterEnabled },attrs:{\"href\":_vm.downloadLink}},[_vm._v(_vm._s(_vm.t('updatenotification', 'Download now')))]):_vm._e(),_vm._v(\" \"),(_vm.updaterEnabled && !_vm.webUpdaterEnabled)?_c('span',[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('updatenotification', 'Please use the command line updater to update.'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.whatsNew)?_c('div',{staticClass:\"whatsNew\"},[_c('div',{staticClass:\"toggleWhatsNew\"},[_c('a',{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:(_vm.hideMenu),expression:\"hideMenu\"}],staticClass:\"button\",on:{\"click\":_vm.toggleMenu}},[_vm._v(_vm._s(_vm.t('updatenotification', 'What\\'s new?')))]),_vm._v(\" \"),_c('div',{staticClass:\"popovermenu\",class:{ 'menu-center': true, open: _vm.openedWhatsNew }},[_c('PopoverMenu',{attrs:{\"menu\":_vm.whatsNew}})],1)])]):_vm._e()])]:(!_vm.isUpdateChecked)?[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('updatenotification', 'The update check is not yet finished. Please refresh the page.'))+\"\\n\\t\\t\")]:[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('updatenotification', 'Your version is up to date.'))+\"\\n\\t\\t\\t\"),_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.lastCheckedOnString),expression:\"lastCheckedOnString\",modifiers:{\"auto\":true}}],staticClass:\"icon-info svg\"})],_vm._v(\" \"),(!_vm.isDefaultUpdateServerURL)?[_c('p',{staticClass:\"topMargin\"},[_c('em',[_vm._v(_vm._s(_vm.t('updatenotification', 'A non-default update server is in use to be checked for updates:'))+\" \"),_c('code',[_vm._v(_vm._s(_vm.updateServerURL))])])])]:_vm._e()],2),_vm._v(\" \"),_c('div',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('updatenotification', 'You can change the update channel below which also affects the apps management page. E.g. after switching to the beta channel, beta app updates will be offered to you in the apps management page.'))+\"\\n\\t\")]),_vm._v(\" \"),_c('h3',{staticClass:\"update-channel-selector\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('updatenotification', 'Update channel:'))+\"\\n\\t\\t\"),_c('div',{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:(_vm.closeUpdateChannelMenu),expression:\"closeUpdateChannelMenu\"}],staticClass:\"update-menu\"},[_c('span',{staticClass:\"icon-update-menu\",on:{\"click\":_vm.toggleUpdateChannelMenu}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.localizedChannelName)+\"\\n\\t\\t\\t\\t\"),_c('span',{staticClass:\"icon-triangle-s\"})]),_vm._v(\" \"),_c('div',{staticClass:\"popovermenu menu menu-center\",class:{ 'show-menu': _vm.openedUpdateChannelMenu}},[_c('PopoverMenu',{attrs:{\"menu\":_vm.channelList}})],1)])]),_vm._v(\" \"),_c('span',{staticClass:\"msg\",attrs:{\"id\":\"channel_save_msg\"}}),_c('br'),_vm._v(\" \"),_c('p',[_c('em',[_vm._v(_vm._s(_vm.t('updatenotification', 'You can always update to a newer version. But you can never downgrade to a more stable version.')))]),_c('br'),_vm._v(\" \"),_c('em',{domProps:{\"innerHTML\":_vm._s(_vm.noteDelayedStableString)}})]),_vm._v(\" \"),_c('p',{attrs:{\"id\":\"oca_updatenotification_groups\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('updatenotification', 'Notify members of the following groups about available updates:'))+\"\\n\\t\\t\"),_c('Multiselect',{attrs:{\"options\":_vm.availableGroups,\"multiple\":true,\"label\":\"label\",\"track-by\":\"value\",\"tag-width\":75},model:{value:(_vm.notifyGroups),callback:function ($$v) {_vm.notifyGroups=$$v},expression:\"notifyGroups\"}}),_c('br'),_vm._v(\" \"),(_vm.currentChannel === 'daily' || _vm.currentChannel === 'git')?_c('em',[_vm._v(_vm._s(_vm.t('updatenotification', 'Only notifications for app updates are available.')))]):_vm._e(),_vm._v(\" \"),(_vm.currentChannel === 'daily')?_c('em',[_vm._v(_vm._s(_vm.t('updatenotification', 'The selected update channel makes dedicated notifications for the server obsolete.')))]):_vm._e(),_vm._v(\" \"),(_vm.currentChannel === 'git')?_c('em',[_vm._v(_vm._s(_vm.t('updatenotification', 'The selected update channel does not support updates of the server.')))]):_vm._e()],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2018 Joas Schilling <coding@schilljs.com>\n *\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport Vue from 'vue'\nimport Root from './components/UpdateNotification'\n\nVue.mixin({\n\tmethods: {\n\t\tt(app, text, vars, count, options) {\n\t\t\treturn OC.L10N.translate(app, text, vars, count, options)\n\t\t},\n\t\tn(app, textSingular, textPlural, count, vars, options) {\n\t\t\treturn OC.L10N.translatePlural(app, textSingular, textPlural, count, vars, options)\n\t\t},\n\t},\n})\n\n// eslint-disable-next-line no-new\nnew Vue({\n\tel: '#updatenotification',\n\trender: h => h(Root),\n})\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, \"#updatenotification[data-v-418946e4]{margin-top:-25px;margin-bottom:200px}#updatenotification div.update[data-v-418946e4],#updatenotification p[data-v-418946e4]:not(.inlineblock){margin-bottom:25px}#updatenotification h2.inlineblock[data-v-418946e4]{margin-top:25px}#updatenotification h3[data-v-418946e4]{cursor:pointer}#updatenotification h3 .icon[data-v-418946e4]{cursor:pointer}#updatenotification h3[data-v-418946e4]:first-of-type{margin-top:0}#updatenotification h3.update-channel-selector[data-v-418946e4]{display:inline-block;cursor:inherit}#updatenotification .icon[data-v-418946e4]{display:inline-block;margin-bottom:-3px}#updatenotification .icon-triangle-s[data-v-418946e4],#updatenotification .icon-triangle-n[data-v-418946e4]{opacity:.5}#updatenotification .whatsNew[data-v-418946e4]{display:inline-block}#updatenotification .toggleWhatsNew[data-v-418946e4]{position:relative}#updatenotification .popovermenu[data-v-418946e4]{margin-top:5px;width:300px}#updatenotification .popovermenu p[data-v-418946e4]{margin-bottom:0;width:100%}#updatenotification .applist[data-v-418946e4]{margin-bottom:25px}#updatenotification .update-menu[data-v-418946e4]{position:relative;cursor:pointer;margin-left:3px;display:inline-block}#updatenotification .update-menu .icon-update-menu[data-v-418946e4]{cursor:inherit}#updatenotification .update-menu .icon-update-menu .icon-triangle-s[data-v-418946e4]{display:inline-block;vertical-align:middle;cursor:inherit;opacity:1}#updatenotification .update-menu .popovermenu[data-v-418946e4]{display:none;top:28px}#updatenotification .update-menu .popovermenu.show-menu[data-v-418946e4]{display:block}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/updatenotification/src/components/UpdateNotification.vue\"],\"names\":[],\"mappings\":\"AAwcA,qCACC,gBAAA,CACA,mBAAA,CACA,yGAEC,kBAAA,CAED,oDACC,eAAA,CAED,wCACC,cAAA,CACA,8CACC,cAAA,CAED,sDACC,YAAA,CAED,gEACC,oBAAA,CACA,cAAA,CAGF,2CACC,oBAAA,CACA,kBAAA,CAED,4GACC,UAAA,CAED,+CACC,oBAAA,CAED,qDACC,iBAAA,CAED,kDAKC,cAAA,CACA,WAAA,CALA,oDACC,eAAA,CACA,UAAA,CAKF,8CACC,kBAAA,CAGD,kDACC,iBAAA,CACA,cAAA,CACA,eAAA,CACA,oBAAA,CACA,oEACC,cAAA,CACA,qFACC,oBAAA,CACA,qBAAA,CACA,cAAA,CACA,SAAA,CAGF,+DACC,YAAA,CACA,QAAA,CACA,yEACC,aAAA\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n#updatenotification {\\n\\tmargin-top: -25px;\\n\\tmargin-bottom: 200px;\\n\\tdiv.update,\\n\\tp:not(.inlineblock) {\\n\\t\\tmargin-bottom: 25px;\\n\\t}\\n\\th2.inlineblock {\\n\\t\\tmargin-top: 25px;\\n\\t}\\n\\th3 {\\n\\t\\tcursor: pointer;\\n\\t\\t.icon {\\n\\t\\t\\tcursor: pointer;\\n\\t\\t}\\n\\t\\t&:first-of-type {\\n\\t\\t\\tmargin-top: 0;\\n\\t\\t}\\n\\t\\t&.update-channel-selector {\\n\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\tcursor: inherit;\\n\\t\\t}\\n\\t}\\n\\t.icon {\\n\\t\\tdisplay: inline-block;\\n\\t\\tmargin-bottom: -3px;\\n\\t}\\n\\t.icon-triangle-s, .icon-triangle-n {\\n\\t\\topacity: 0.5;\\n\\t}\\n\\t.whatsNew {\\n\\t\\tdisplay: inline-block;\\n\\t}\\n\\t.toggleWhatsNew {\\n\\t\\tposition: relative;\\n\\t}\\n\\t.popovermenu {\\n\\t\\tp {\\n\\t\\t\\tmargin-bottom: 0;\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\t\\tmargin-top: 5px;\\n\\t\\twidth: 300px;\\n\\t}\\n\\t.applist {\\n\\t\\tmargin-bottom: 25px;\\n\\t}\\n\\n\\t.update-menu {\\n\\t\\tposition: relative;\\n\\t\\tcursor: pointer;\\n\\t\\tmargin-left: 3px;\\n\\t\\tdisplay: inline-block;\\n\\t\\t.icon-update-menu {\\n\\t\\t\\tcursor: inherit;\\n\\t\\t\\t.icon-triangle-s {\\n\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t\\tvertical-align: middle;\\n\\t\\t\\t\\tcursor: inherit;\\n\\t\\t\\t\\topacity: 1;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t.popovermenu {\\n\\t\\t\\tdisplay: none;\\n\\t\\t\\ttop: 28px;\\n\\t\\t\\t&.show-menu {\\n\\t\\t\\t\\tdisplay: block;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"#updatenotification .popovermenu{margin-top:5px;width:300px}#updatenotification .popovermenu p{margin-top:5px;width:100%}#updatenotification .update-menu .icon-star:hover,#updatenotification .update-menu .icon-star:focus{background-image:var(--icon-star-000)}#updatenotification .topMargin{margin-top:15px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/updatenotification/src/components/UpdateNotification.vue\"],\"names\":[],\"mappings\":\"AAkhBA,iCAKC,cAAA,CACA,WAAA,CALA,mCACC,cAAA,CACA,UAAA,CAMF,oGAEC,qCAAA,CAED,+BACC,eAAA\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n/* override needed to make menu wider */\\n#updatenotification .popovermenu {\\n\\tp {\\n\\t\\tmargin-top: 5px;\\n\\t\\twidth: 100%;\\n\\t}\\n\\tmargin-top: 5px;\\n\\twidth: 300px;\\n}\\n/* override needed to replace yellow hover state with a dark one */\\n#updatenotification .update-menu .icon-star:hover,\\n#updatenotification .update-menu .icon-star:focus {\\n\\tbackground-image: var(--icon-star-000);\\n}\\n#updatenotification .topMargin {\\n\\tmargin-top: 15px;\\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 = 7292;","__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\t7292: 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));","__webpack_require__.nc = undefined;","// 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__(36267); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","VTooltip","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","_v","_s","t","_e","domProps","newVersionAvailableString","isListFetched","statusText","missingAppUpdates","on","toggleHideMissingUpdates","hideMissingUpdates","_l","app","index","key","appId","appName","availableAppUpdates","toggleHideAvailableUpdates","hideAvailableUpdates","isWebUpdaterRecommended","updaterEnabled","webUpdaterEnabled","clickUpdaterButton","class","hidden","downloadLink","directives","name","rawName","value","expression","toggleMenu","open","openedWhatsNew","whatsNew","isUpdateChecked","modifiers","isDefaultUpdateServerURL","updateServerURL","toggleUpdateChannelMenu","localizedChannelName","openedUpdateChannelMenu","channelList","noteDelayedStableString","availableGroups","model","callback","$$v","notifyGroups","currentChannel","Vue","methods","text","vars","count","OC","L10N","translate","n","textSingular","textPlural","translatePlural","el","render","h","Root","___CSS_LOADER_EXPORT___","push","module","id","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","splice","r","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/user_status-dashboard.js b/dist/user_status-dashboard.js
index 3993f8b13dd..618a769f1ec 100644
--- a/dist/user_status-dashboard.js
+++ b/dist/user_status-dashboard.js
@@ -1,3 +1,3 @@
/*! For license information please see user_status-dashboard.js.LICENSE.txt */
-!function(){var n,s={93365:function(n,t,s){var e={"./af":36026,"./af.js":36026,"./ar":28093,"./ar-dz":41943,"./ar-dz.js":41943,"./ar-kw":23969,"./ar-kw.js":23969,"./ar-ly":40594,"./ar-ly.js":40594,"./ar-ma":18369,"./ar-ma.js":18369,"./ar-sa":32579,"./ar-sa.js":32579,"./ar-tn":76442,"./ar-tn.js":76442,"./ar.js":28093,"./az":86425,"./az.js":86425,"./be":22004,"./be.js":22004,"./bg":42982,"./bg.js":42982,"./bm":21067,"./bm.js":21067,"./bn":8366,"./bn-bd":63837,"./bn-bd.js":63837,"./bn.js":8366,"./bo":95040,"./bo.js":95040,"./br":521,"./br.js":521,"./bs":83242,"./bs.js":83242,"./ca":73046,"./ca.js":73046,"./cs":25794,"./cs.js":25794,"./cv":28231,"./cv.js":28231,"./cy":10927,"./cy.js":10927,"./da":42832,"./da.js":42832,"./de":29415,"./de-at":3331,"./de-at.js":3331,"./de-ch":45524,"./de-ch.js":45524,"./de.js":29415,"./dv":44700,"./dv.js":44700,"./el":88752,"./el.js":88752,"./en-au":90444,"./en-au.js":90444,"./en-ca":65959,"./en-ca.js":65959,"./en-gb":62762,"./en-gb.js":62762,"./en-ie":40909,"./en-ie.js":40909,"./en-il":79909,"./en-il.js":79909,"./en-in":87942,"./en-in.js":87942,"./en-nz":75200,"./en-nz.js":75200,"./en-sg":21415,"./en-sg.js":21415,"./eo":27447,"./eo.js":27447,"./es":86756,"./es-do":47049,"./es-do.js":47049,"./es-mx":15915,"./es-mx.js":15915,"./es-us":57133,"./es-us.js":57133,"./es.js":86756,"./et":72182,"./et.js":72182,"./eu":14419,"./eu.js":14419,"./fa":2916,"./fa.js":2916,"./fi":49964,"./fi.js":49964,"./fil":16448,"./fil.js":16448,"./fo":26094,"./fo.js":26094,"./fr":35833,"./fr-ca":56994,"./fr-ca.js":56994,"./fr-ch":2740,"./fr-ch.js":2740,"./fr.js":35833,"./fy":69542,"./fy.js":69542,"./ga":93264,"./ga.js":93264,"./gd":77457,"./gd.js":77457,"./gl":83043,"./gl.js":83043,"./gom-deva":24034,"./gom-deva.js":24034,"./gom-latn":28379,"./gom-latn.js":28379,"./gu":406,"./gu.js":406,"./he":73219,"./he.js":73219,"./hi":99834,"./hi.js":99834,"./hr":28754,"./hr.js":28754,"./hu":93945,"./hu.js":93945,"./hy-am":81319,"./hy-am.js":81319,"./id":24875,"./id.js":24875,"./is":23724,"./is.js":23724,"./it":79906,"./it-ch":34303,"./it-ch.js":34303,"./it.js":79906,"./ja":77105,"./ja.js":77105,"./jv":15026,"./jv.js":15026,"./ka":67416,"./ka.js":67416,"./kk":79734,"./kk.js":79734,"./km":60757,"./km.js":60757,"./kn":58369,"./kn.js":58369,"./ko":77687,"./ko.js":77687,"./ku":95544,"./ku.js":95544,"./ky":85431,"./ky.js":85431,"./lb":13613,"./lb.js":13613,"./lo":34252,"./lo.js":34252,"./lt":84619,"./lt.js":84619,"./lv":93760,"./lv.js":93760,"./me":93393,"./me.js":93393,"./mi":12369,"./mi.js":12369,"./mk":48664,"./mk.js":48664,"./ml":23099,"./ml.js":23099,"./mn":98539,"./mn.js":98539,"./mr":778,"./mr.js":778,"./ms":39970,"./ms-my":82625,"./ms-my.js":82625,"./ms.js":39970,"./mt":15714,"./mt.js":15714,"./my":53055,"./my.js":53055,"./nb":73945,"./nb.js":73945,"./ne":63645,"./ne.js":63645,"./nl":4829,"./nl-be":12823,"./nl-be.js":12823,"./nl.js":4829,"./nn":23756,"./nn.js":23756,"./oc-lnc":41228,"./oc-lnc.js":41228,"./pa-in":97877,"./pa-in.js":97877,"./pl":53066,"./pl.js":53066,"./pt":28677,"./pt-br":81592,"./pt-br.js":81592,"./pt.js":28677,"./ro":32722,"./ro.js":32722,"./ru":59138,"./ru.js":59138,"./sd":32568,"./sd.js":32568,"./se":49753,"./se.js":49753,"./si":58024,"./si.js":58024,"./sk":31058,"./sk.js":31058,"./sl":43452,"./sl.js":43452,"./sq":2795,"./sq.js":2795,"./sr":26976,"./sr-cyrl":38819,"./sr-cyrl.js":38819,"./sr.js":26976,"./ss":7467,"./ss.js":7467,"./sv":42787,"./sv.js":42787,"./sw":80298,"./sw.js":80298,"./ta":57532,"./ta.js":57532,"./te":76076,"./te.js":76076,"./tet":40452,"./tet.js":40452,"./tg":64794,"./tg.js":64794,"./th":48245,"./th.js":48245,"./tk":8870,"./tk.js":8870,"./tl-ph":36056,"./tl-ph.js":36056,"./tlh":15249,"./tlh.js":15249,"./tr":22053,"./tr.js":22053,"./tzl":39871,"./tzl.js":39871,"./tzm":39574,"./tzm-latn":19210,"./tzm-latn.js":19210,"./tzm.js":39574,"./ug-cn":91532,"./ug-cn.js":91532,"./uk":11432,"./uk.js":11432,"./ur":88523,"./ur.js":88523,"./uz":54958,"./uz-latn":68735,"./uz-latn.js":68735,"./uz.js":54958,"./vi":83398,"./vi.js":83398,"./x-pseudo":56665,"./x-pseudo.js":56665,"./yo":11642,"./yo.js":11642,"./zh-cn":5462,"./zh-cn.js":5462,"./zh-hk":92530,"./zh-hk.js":92530,"./zh-mo":41650,"./zh-mo.js":41650,"./zh-tw":97333,"./zh-tw.js":97333};function a(n){var t=r(n);return s(t)}function r(n){if(!s.o(e,n)){var t=new Error("Cannot find module '"+n+"'");throw t.code="MODULE_NOT_FOUND",t}return e[n]}a.keys=function(){return Object.keys(e)},a.resolve=r,n.exports=a,a.id=93365},70505:function(n,s,e){"use strict";var a=e(20144),r=e(22200),o=e(9944),u=e(66164),i=e(28017),j=e.n(i),l=e(97e3),c=e.n(l),d=e(16453),m=e(80351),f=e.n(m),p={name:"Dashboard",components:{Avatar:j(),DashboardWidget:u.Z,DashboardWidgetItem:u.v,EmptyContent:c()},data:function(){return{statuses:[],loading:!0}},computed:{items:function(){var n=this;return this.statuses.map((function(s){var e=s.icon||"",a=s.message||"";""===a&&("away"===s.status&&(a=t("user_status","Away")),"dnd"===s.status&&(a=t("user_status","Do not disturb")));var r,o=""!==s.icon?"".concat(e," ").concat(a):a;return r=null===s.icon&&""===a&&null===s.timestamp?"":null===s.icon&&""===a&&null!==s.timestamp?f()(s.timestamp,"X").fromNow():null!==s.timestamp?n.t("user_status","{status}, {timestamp}",{status:o,timestamp:f()(s.timestamp,"X").fromNow()},null,{escape:!1,sanitize:!1}):o,{mainText:s.displayName,subText:r,avatarUsername:s.userId}}))}},mounted:function(){try{this.statuses=(0,d.loadState)("user_status","dashboard_data"),this.loading=!1}catch(n){console.error(n)}}},h=e(93379),b=e.n(h),v=e(7795),y=e.n(v),g=e(90569),k=e.n(g),w=e(3565),z=e.n(w),x=e(19216),O=e.n(x),_=e(44589),A=e.n(_),C=e(43973),D={};D.styleTagTransform=A(),D.setAttributes=z(),D.insert=k().bind(null,"head"),D.domAPI=y(),D.insertStyleElement=O(),b()(C.Z,D),C.Z&&C.Z.locals&&C.Z.locals;var T=(0,e(51900).Z)(p,(function(){var n=this,t=n.$createElement,s=n._self._c||t;return s("DashboardWidget",{attrs:{id:"user-status_panel",items:n.items,loading:n.loading},scopedSlots:n._u([{key:"default",fn:function(t){var e=t.item;return[s("DashboardWidgetItem",{attrs:{"main-text":e.mainText,"sub-text":e.subText},scopedSlots:n._u([{key:"avatar",fn:function(){return[s("Avatar",{staticClass:"item-avatar",attrs:{size:44,user:e.avatarUsername,"display-name":e.mainText,"show-user-status":!1,"show-user-status-compact":!1}})]},proxy:!0}],null,!0)})]}},{key:"empty-content",fn:function(){return[s("EmptyContent",{attrs:{id:"user_status-widget-empty-content",icon:"icon-user-status"}},[n._v("\n\t\t\t"+n._s(n.t("user_status","No recent status changes"))+"\n\t\t")])]},proxy:!0}])})}),[],!1,null,null,null).exports;e.nc=btoa((0,r.getRequestToken)()),a.default.prototype.t=o.translate,a.default.prototype.n=o.translatePlural,a.default.prototype.OC=OC,a.default.prototype.OCA=OCA,document.addEventListener("DOMContentLoaded",(function(){OCA.Dashboard.register("user_status",(function(n){new(a.default.extend(T))({propsData:{}}).$mount(n)}))}))},43973:function(n,t,s){"use strict";var e=s(87537),a=s.n(e),r=s(23645),o=s.n(r)()(a());o.push([n.id,"#user_status-widget-empty-content{text-align:center;margin-top:5vh}","",{version:3,sources:["webpack://./apps/user_status/src/views/Dashboard.vue"],names:[],mappings:"AAqHA,kCACC,iBAAA,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#user_status-widget-empty-content {\n\ttext-align: center;\n\tmargin-top: 5vh;\n}\n"],sourceRoot:""}]),t.Z=o}},e={};function a(n){var t=e[n];if(void 0!==t)return t.exports;var r=e[n]={id:n,loaded:!1,exports:{}};return s[n].call(r.exports,r,r.exports,a),r.loaded=!0,r.exports}a.m=s,a.amdD=function(){throw new Error("define cannot be used indirect")},a.amdO={},n=[],a.O=function(t,s,e,r){if(!s){var o=1/0;for(l=0;l<n.length;l++){s=n[l][0],e=n[l][1],r=n[l][2];for(var u=!0,i=0;i<s.length;i++)(!1&r||o>=r)&&Object.keys(a.O).every((function(n){return a.O[n](s[i])}))?s.splice(i--,1):(u=!1,r<o&&(o=r));if(u){n.splice(l--,1);var j=e();void 0!==j&&(t=j)}}return t}r=r||0;for(var l=n.length;l>0&&n[l-1][2]>r;l--)n[l]=n[l-1];n[l]=[s,e,r]},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 s in t)a.o(t,s)&&!a.o(n,s)&&Object.defineProperty(n,s,{enumerable:!0,get:t[s]})},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=7063,function(){a.b=document.baseURI||self.location.href;var n={7063:0};a.O.j=function(t){return 0===n[t]};var t=function(t,s){var e,r,o=s[0],u=s[1],i=s[2],j=0;if(o.some((function(t){return 0!==n[t]}))){for(e in u)a.o(u,e)&&(a.m[e]=u[e]);if(i)var l=i(a)}for(t&&t(s);j<o.length;j++)r=o[j],a.o(n,r)&&n[r]&&n[r][0](),n[r]=0;return a.O(l)},s=self.webpackChunknextcloud=self.webpackChunknextcloud||[];s.forEach(t.bind(null,0)),s.push=t.bind(null,s.push.bind(s))}();var r=a.O(void 0,[7874],(function(){return a(70505)}));r=a.O(r)}();
-//# sourceMappingURL=user_status-dashboard.js.map?v=ffcd1928128256504033 \ No newline at end of file
+!function(){var n,s={93365:function(n,t,s){var e={"./af":36026,"./af.js":36026,"./ar":28093,"./ar-dz":41943,"./ar-dz.js":41943,"./ar-kw":23969,"./ar-kw.js":23969,"./ar-ly":40594,"./ar-ly.js":40594,"./ar-ma":18369,"./ar-ma.js":18369,"./ar-sa":32579,"./ar-sa.js":32579,"./ar-tn":76442,"./ar-tn.js":76442,"./ar.js":28093,"./az":86425,"./az.js":86425,"./be":22004,"./be.js":22004,"./bg":42982,"./bg.js":42982,"./bm":21067,"./bm.js":21067,"./bn":8366,"./bn-bd":63837,"./bn-bd.js":63837,"./bn.js":8366,"./bo":95040,"./bo.js":95040,"./br":521,"./br.js":521,"./bs":83242,"./bs.js":83242,"./ca":73046,"./ca.js":73046,"./cs":25794,"./cs.js":25794,"./cv":28231,"./cv.js":28231,"./cy":10927,"./cy.js":10927,"./da":42832,"./da.js":42832,"./de":29415,"./de-at":3331,"./de-at.js":3331,"./de-ch":45524,"./de-ch.js":45524,"./de.js":29415,"./dv":44700,"./dv.js":44700,"./el":88752,"./el.js":88752,"./en-au":90444,"./en-au.js":90444,"./en-ca":65959,"./en-ca.js":65959,"./en-gb":62762,"./en-gb.js":62762,"./en-ie":40909,"./en-ie.js":40909,"./en-il":79909,"./en-il.js":79909,"./en-in":87942,"./en-in.js":87942,"./en-nz":75200,"./en-nz.js":75200,"./en-sg":21415,"./en-sg.js":21415,"./eo":27447,"./eo.js":27447,"./es":86756,"./es-do":47049,"./es-do.js":47049,"./es-mx":15915,"./es-mx.js":15915,"./es-us":57133,"./es-us.js":57133,"./es.js":86756,"./et":72182,"./et.js":72182,"./eu":14419,"./eu.js":14419,"./fa":2916,"./fa.js":2916,"./fi":49964,"./fi.js":49964,"./fil":16448,"./fil.js":16448,"./fo":26094,"./fo.js":26094,"./fr":35833,"./fr-ca":56994,"./fr-ca.js":56994,"./fr-ch":2740,"./fr-ch.js":2740,"./fr.js":35833,"./fy":69542,"./fy.js":69542,"./ga":93264,"./ga.js":93264,"./gd":77457,"./gd.js":77457,"./gl":83043,"./gl.js":83043,"./gom-deva":24034,"./gom-deva.js":24034,"./gom-latn":28379,"./gom-latn.js":28379,"./gu":406,"./gu.js":406,"./he":73219,"./he.js":73219,"./hi":99834,"./hi.js":99834,"./hr":28754,"./hr.js":28754,"./hu":93945,"./hu.js":93945,"./hy-am":81319,"./hy-am.js":81319,"./id":24875,"./id.js":24875,"./is":23724,"./is.js":23724,"./it":79906,"./it-ch":34303,"./it-ch.js":34303,"./it.js":79906,"./ja":77105,"./ja.js":77105,"./jv":15026,"./jv.js":15026,"./ka":67416,"./ka.js":67416,"./kk":79734,"./kk.js":79734,"./km":60757,"./km.js":60757,"./kn":58369,"./kn.js":58369,"./ko":77687,"./ko.js":77687,"./ku":95544,"./ku.js":95544,"./ky":85431,"./ky.js":85431,"./lb":13613,"./lb.js":13613,"./lo":34252,"./lo.js":34252,"./lt":84619,"./lt.js":84619,"./lv":93760,"./lv.js":93760,"./me":93393,"./me.js":93393,"./mi":12369,"./mi.js":12369,"./mk":48664,"./mk.js":48664,"./ml":23099,"./ml.js":23099,"./mn":98539,"./mn.js":98539,"./mr":778,"./mr.js":778,"./ms":39970,"./ms-my":82625,"./ms-my.js":82625,"./ms.js":39970,"./mt":15714,"./mt.js":15714,"./my":53055,"./my.js":53055,"./nb":73945,"./nb.js":73945,"./ne":63645,"./ne.js":63645,"./nl":4829,"./nl-be":12823,"./nl-be.js":12823,"./nl.js":4829,"./nn":23756,"./nn.js":23756,"./oc-lnc":41228,"./oc-lnc.js":41228,"./pa-in":97877,"./pa-in.js":97877,"./pl":53066,"./pl.js":53066,"./pt":28677,"./pt-br":81592,"./pt-br.js":81592,"./pt.js":28677,"./ro":32722,"./ro.js":32722,"./ru":59138,"./ru.js":59138,"./sd":32568,"./sd.js":32568,"./se":49753,"./se.js":49753,"./si":58024,"./si.js":58024,"./sk":31058,"./sk.js":31058,"./sl":43452,"./sl.js":43452,"./sq":2795,"./sq.js":2795,"./sr":26976,"./sr-cyrl":38819,"./sr-cyrl.js":38819,"./sr.js":26976,"./ss":7467,"./ss.js":7467,"./sv":42787,"./sv.js":42787,"./sw":80298,"./sw.js":80298,"./ta":57532,"./ta.js":57532,"./te":76076,"./te.js":76076,"./tet":40452,"./tet.js":40452,"./tg":64794,"./tg.js":64794,"./th":48245,"./th.js":48245,"./tk":8870,"./tk.js":8870,"./tl-ph":36056,"./tl-ph.js":36056,"./tlh":15249,"./tlh.js":15249,"./tr":22053,"./tr.js":22053,"./tzl":39871,"./tzl.js":39871,"./tzm":39574,"./tzm-latn":19210,"./tzm-latn.js":19210,"./tzm.js":39574,"./ug-cn":91532,"./ug-cn.js":91532,"./uk":11432,"./uk.js":11432,"./ur":88523,"./ur.js":88523,"./uz":54958,"./uz-latn":68735,"./uz-latn.js":68735,"./uz.js":54958,"./vi":83398,"./vi.js":83398,"./x-pseudo":56665,"./x-pseudo.js":56665,"./yo":11642,"./yo.js":11642,"./zh-cn":5462,"./zh-cn.js":5462,"./zh-hk":92530,"./zh-hk.js":92530,"./zh-mo":41650,"./zh-mo.js":41650,"./zh-tw":97333,"./zh-tw.js":97333};function a(n){var t=r(n);return s(t)}function r(n){if(!s.o(e,n)){var t=new Error("Cannot find module '"+n+"'");throw t.code="MODULE_NOT_FOUND",t}return e[n]}a.keys=function(){return Object.keys(e)},a.resolve=r,n.exports=a,a.id=93365},70505:function(n,s,e){"use strict";var a=e(20144),r=e(22200),o=e(9944),u=e(66164),i=e(28017),j=e.n(i),l=e(97e3),c=e.n(l),d=e(16453),m=e(80351),f=e.n(m),p={name:"Dashboard",components:{Avatar:j(),DashboardWidget:u.Z,DashboardWidgetItem:u.v,EmptyContent:c()},data:function(){return{statuses:[],loading:!0}},computed:{items:function(){var n=this;return this.statuses.map((function(s){var e=s.icon||"",a=s.message||"";""===a&&("away"===s.status&&(a=t("user_status","Away")),"dnd"===s.status&&(a=t("user_status","Do not disturb")));var r,o=""!==s.icon?"".concat(e," ").concat(a):a;return r=null===s.icon&&""===a&&null===s.timestamp?"":null===s.icon&&""===a&&null!==s.timestamp?f()(s.timestamp,"X").fromNow():null!==s.timestamp?n.t("user_status","{status}, {timestamp}",{status:o,timestamp:f()(s.timestamp,"X").fromNow()},null,{escape:!1,sanitize:!1}):o,{mainText:s.displayName,subText:r,avatarUsername:s.userId}}))}},mounted:function(){try{this.statuses=(0,d.loadState)("user_status","dashboard_data"),this.loading=!1}catch(n){console.error(n)}}},h=e(93379),b=e.n(h),v=e(7795),y=e.n(v),g=e(90569),k=e.n(g),w=e(3565),z=e.n(w),x=e(19216),O=e.n(x),_=e(44589),A=e.n(_),C=e(43973),D={};D.styleTagTransform=A(),D.setAttributes=z(),D.insert=k().bind(null,"head"),D.domAPI=y(),D.insertStyleElement=O(),b()(C.Z,D),C.Z&&C.Z.locals&&C.Z.locals;var T=(0,e(51900).Z)(p,(function(){var n=this,t=n.$createElement,s=n._self._c||t;return s("DashboardWidget",{attrs:{id:"user-status_panel",items:n.items,loading:n.loading},scopedSlots:n._u([{key:"default",fn:function(t){var e=t.item;return[s("DashboardWidgetItem",{attrs:{"main-text":e.mainText,"sub-text":e.subText},scopedSlots:n._u([{key:"avatar",fn:function(){return[s("Avatar",{staticClass:"item-avatar",attrs:{size:44,user:e.avatarUsername,"display-name":e.mainText,"show-user-status":!1,"show-user-status-compact":!1}})]},proxy:!0}],null,!0)})]}},{key:"empty-content",fn:function(){return[s("EmptyContent",{attrs:{id:"user_status-widget-empty-content",icon:"icon-user-status"}},[n._v("\n\t\t\t"+n._s(n.t("user_status","No recent status changes"))+"\n\t\t")])]},proxy:!0}])})}),[],!1,null,null,null).exports;e.nc=btoa((0,r.getRequestToken)()),a.default.prototype.t=o.translate,a.default.prototype.n=o.translatePlural,a.default.prototype.OC=OC,a.default.prototype.OCA=OCA,document.addEventListener("DOMContentLoaded",(function(){OCA.Dashboard.register("user_status",(function(n){new(a.default.extend(T))({propsData:{}}).$mount(n)}))}))},43973:function(n,t,s){"use strict";var e=s(87537),a=s.n(e),r=s(23645),o=s.n(r)()(a());o.push([n.id,"#user_status-widget-empty-content{text-align:center;margin-top:5vh}","",{version:3,sources:["webpack://./apps/user_status/src/views/Dashboard.vue"],names:[],mappings:"AAqHA,kCACC,iBAAA,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#user_status-widget-empty-content {\n\ttext-align: center;\n\tmargin-top: 5vh;\n}\n"],sourceRoot:""}]),t.Z=o}},e={};function a(n){var t=e[n];if(void 0!==t)return t.exports;var r=e[n]={id:n,loaded:!1,exports:{}};return s[n].call(r.exports,r,r.exports,a),r.loaded=!0,r.exports}a.m=s,a.amdD=function(){throw new Error("define cannot be used indirect")},a.amdO={},n=[],a.O=function(t,s,e,r){if(!s){var o=1/0;for(l=0;l<n.length;l++){s=n[l][0],e=n[l][1],r=n[l][2];for(var u=!0,i=0;i<s.length;i++)(!1&r||o>=r)&&Object.keys(a.O).every((function(n){return a.O[n](s[i])}))?s.splice(i--,1):(u=!1,r<o&&(o=r));if(u){n.splice(l--,1);var j=e();void 0!==j&&(t=j)}}return t}r=r||0;for(var l=n.length;l>0&&n[l-1][2]>r;l--)n[l]=n[l-1];n[l]=[s,e,r]},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 s in t)a.o(t,s)&&!a.o(n,s)&&Object.defineProperty(n,s,{enumerable:!0,get:t[s]})},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=7063,function(){a.b=document.baseURI||self.location.href;var n={7063:0};a.O.j=function(t){return 0===n[t]};var t=function(t,s){var e,r,o=s[0],u=s[1],i=s[2],j=0;if(o.some((function(t){return 0!==n[t]}))){for(e in u)a.o(u,e)&&(a.m[e]=u[e]);if(i)var l=i(a)}for(t&&t(s);j<o.length;j++)r=o[j],a.o(n,r)&&n[r]&&n[r][0](),n[r]=0;return a.O(l)},s=self.webpackChunknextcloud=self.webpackChunknextcloud||[];s.forEach(t.bind(null,0)),s.push=t.bind(null,s.push.bind(s))}(),a.nc=void 0;var r=a.O(void 0,[7874],(function(){return a(70505)}));r=a.O(r)}();
+//# sourceMappingURL=user_status-dashboard.js.map?v=5ddf3d0cd3d0fd6d358e \ No newline at end of file
diff --git a/dist/user_status-dashboard.js.map b/dist/user_status-dashboard.js.map
index 121691c5b68..19659d783e0 100644
--- a/dist/user_status-dashboard.js.map
+++ b/dist/user_status-dashboard.js.map
@@ -1 +1 @@
-{"version":3,"file":"user_status-dashboard.js?v=ffcd1928128256504033","mappings":";gBAAIA,2BCAJ,IAAIC,EAAM,CACT,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,MACX,aAAc,MACd,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,IACR,UAAW,IACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,KACX,aAAc,KACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,KACX,aAAc,KACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,gBAAiB,MACjB,aAAc,MACd,gBAAiB,MACjB,OAAQ,IACR,UAAW,IACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,IACR,UAAW,IACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,MACX,aAAc,MACd,UAAW,KACX,OAAQ,MACR,UAAW,MACX,WAAY,MACZ,cAAe,MACf,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,YAAa,MACb,eAAgB,MAChB,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,UAAW,MACX,aAAc,MACd,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,QAAS,MACT,aAAc,MACd,gBAAiB,MACjB,WAAY,MACZ,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,YAAa,MACb,eAAgB,MAChB,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,gBAAiB,MACjB,OAAQ,MACR,UAAW,MACX,UAAW,KACX,aAAc,KACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,OAIf,SAASC,EAAeC,GACvB,IAAIC,EAAKC,EAAsBF,GAC/B,OAAOG,EAAoBF,GAE5B,SAASC,EAAsBF,GAC9B,IAAIG,EAAoBC,EAAEN,EAAKE,GAAM,CACpC,IAAIK,EAAI,IAAIC,MAAM,uBAAyBN,EAAM,KAEjD,MADAK,EAAEE,KAAO,mBACHF,EAEP,OAAOP,EAAIE,GAEZD,EAAeS,KAAO,WACrB,OAAOC,OAAOD,KAAKV,IAEpBC,EAAeW,QAAUR,EACzBS,EAAOC,QAAUb,EACjBA,EAAeE,GAAK,+JCnSkK,ECsDtL,CACA,iBACA,YACA,WACA,oBACA,wBACA,kBAEA,KARA,WASA,OACA,YACA,aAGA,UACA,MADA,WACA,WACA,sCACA,iBACA,gBACA,SACA,oBACA,2BAEA,mBACA,sCAGA,IAEA,EAFA,2CAgBA,OAZA,EADA,0CACA,GACA,0CACA,+BACA,mBACA,2CACA,SACA,0CACA,8BAEA,EAGA,CACA,uBACA,UACA,8BAKA,QAnDA,WAoDA,IACA,8DACA,gBACA,SACA,qJCnGIY,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,kBAAkB,CAACE,MAAM,CAAC,GAAK,oBAAoB,MAAQN,EAAIO,MAAM,QAAUP,EAAIQ,SAASC,YAAYT,EAAIU,GAAG,CAAC,CAACC,IAAI,UAAUC,GAAG,SAASC,GAC9O,IAAIC,EAAOD,EAAIC,KACf,MAAO,CAACV,EAAG,sBAAsB,CAACE,MAAM,CAAC,YAAYQ,EAAKC,SAAS,WAAWD,EAAKE,SAASP,YAAYT,EAAIU,GAAG,CAAC,CAACC,IAAI,SAASC,GAAG,WAAW,MAAO,CAACR,EAAG,SAAS,CAACa,YAAY,cAAcX,MAAM,CAAC,KAAO,GAAG,KAAOQ,EAAKI,eAAe,eAAeJ,EAAKC,SAAS,oBAAmB,EAAM,4BAA2B,OAAWI,OAAM,IAAO,MAAK,QAAW,CAACR,IAAI,gBAAgBC,GAAG,WAAW,MAAO,CAACR,EAAG,eAAe,CAACE,MAAM,CAAC,GAAK,mCAAmC,KAAO,qBAAqB,CAACN,EAAIoB,GAAG,WAAWpB,EAAIqB,GAAGrB,EAAIsB,EAAE,cAAe,6BAA6B,cAAcH,OAAM,SACnjB,IDSpB,EACA,KACA,KACA,MAI8B,QEShCI,EAAAA,GAAoBC,MAAKC,EAAAA,EAAAA,oBAEzBC,EAAAA,QAAAA,UAAAA,EAAkBC,EAAAA,UAClBD,EAAAA,QAAAA,UAAAA,EAAkBE,EAAAA,gBAClBF,EAAAA,QAAAA,UAAAA,GAAmBG,GACnBH,EAAAA,QAAAA,UAAAA,IAAoBI,IAEpBC,SAASC,iBAAiB,oBAAoB,WAC7CF,IAAIG,UAAUC,SAAS,eAAe,SAACC,GAEtC,IADaT,EAAAA,QAAAA,OAAWO,GACxB,CAAS,CACRG,UAAW,KACTC,OAAOF,gFCrCRG,QAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAAC/C,EAAOV,GAAI,sEAAuE,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,wDAAwD,MAAQ,GAAG,SAAW,8BAA8B,eAAiB,CAAC,iUAAiU,WAAa,MAEvlB,QCNI0D,EAA2B,GAG/B,SAASxD,EAAoByD,GAE5B,IAAIC,EAAeF,EAAyBC,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAajD,QAGrB,IAAID,EAASgD,EAAyBC,GAAY,CACjD3D,GAAI2D,EACJG,QAAQ,EACRnD,QAAS,IAUV,OANAoD,EAAoBJ,GAAUK,KAAKtD,EAAOC,QAASD,EAAQA,EAAOC,QAAST,GAG3EQ,EAAOoD,QAAS,EAGTpD,EAAOC,QAIfT,EAAoB+D,EAAIF,EC5BxB7D,EAAoBgE,KAAO,WAC1B,MAAM,IAAI7D,MAAM,mCCDjBH,EAAoBiE,KAAO,GXAvBvE,EAAW,GACfM,EAAoBkE,EAAI,SAASC,EAAQC,EAAUxC,EAAIyC,GACtD,IAAGD,EAAH,CAMA,IAAIE,EAAeC,EAAAA,EACnB,IAASC,EAAI,EAAGA,EAAI9E,EAAS+E,OAAQD,IAAK,CACrCJ,EAAW1E,EAAS8E,GAAG,GACvB5C,EAAKlC,EAAS8E,GAAG,GACjBH,EAAW3E,EAAS8E,GAAG,GAE3B,IAJA,IAGIE,GAAY,EACPC,EAAI,EAAGA,EAAIP,EAASK,OAAQE,MACpB,EAAXN,GAAsBC,GAAgBD,IAAa/D,OAAOD,KAAKL,EAAoBkE,GAAGU,OAAM,SAASjD,GAAO,OAAO3B,EAAoBkE,EAAEvC,GAAKyC,EAASO,OAC3JP,EAASS,OAAOF,IAAK,IAErBD,GAAY,EACTL,EAAWC,IAAcA,EAAeD,IAG7C,GAAGK,EAAW,CACbhF,EAASmF,OAAOL,IAAK,GACrB,IAAIM,EAAIlD,SACE+B,IAANmB,IAAiBX,EAASW,IAGhC,OAAOX,EAzBNE,EAAWA,GAAY,EACvB,IAAI,IAAIG,EAAI9E,EAAS+E,OAAQD,EAAI,GAAK9E,EAAS8E,EAAI,GAAG,GAAKH,EAAUG,IAAK9E,EAAS8E,GAAK9E,EAAS8E,EAAI,GACrG9E,EAAS8E,GAAK,CAACJ,EAAUxC,EAAIyC,IYJ/BrE,EAAoB+E,EAAI,SAASvE,GAChC,IAAIwE,EAASxE,GAAUA,EAAOyE,WAC7B,WAAa,OAAOzE,EAAgB,SACpC,WAAa,OAAOA,GAErB,OADAR,EAAoBkF,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,GCLRhF,EAAoBkF,EAAI,SAASzE,EAAS2E,GACzC,IAAI,IAAIzD,KAAOyD,EACXpF,EAAoBC,EAAEmF,EAAYzD,KAAS3B,EAAoBC,EAAEQ,EAASkB,IAC5ErB,OAAO+E,eAAe5E,EAASkB,EAAK,CAAE2D,YAAY,EAAMC,IAAKH,EAAWzD,MCJ3E3B,EAAoBwF,EAAI,WACvB,GAA0B,iBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAOxE,MAAQ,IAAIyE,SAAS,cAAb,GACd,MAAOxF,GACR,GAAsB,iBAAXyF,OAAqB,OAAOA,QALjB,GCAxB3F,EAAoBC,EAAI,SAAS2F,EAAKC,GAAQ,OAAOvF,OAAOwF,UAAUC,eAAejC,KAAK8B,EAAKC,ICC/F7F,EAAoB8E,EAAI,SAASrE,GACX,oBAAXuF,QAA0BA,OAAOC,aAC1C3F,OAAO+E,eAAe5E,EAASuF,OAAOC,YAAa,CAAEC,MAAO,WAE7D5F,OAAO+E,eAAe5E,EAAS,aAAc,CAAEyF,OAAO,KCLvDlG,EAAoBmG,IAAM,SAAS3F,GAGlC,OAFAA,EAAO4F,MAAQ,GACV5F,EAAO6F,WAAU7F,EAAO6F,SAAW,IACjC7F,GCHRR,EAAoB2E,EAAI,gBCAxB3E,EAAoBsG,EAAIvD,SAASwD,SAAWC,KAAKC,SAASC,KAK1D,IAAIC,EAAkB,CACrB,KAAM,GAaP3G,EAAoBkE,EAAES,EAAI,SAASiC,GAAW,OAAoC,IAA7BD,EAAgBC,IAGrE,IAAIC,EAAuB,SAASC,EAA4BC,GAC/D,IAKItD,EAAUmD,EALVxC,EAAW2C,EAAK,GAChBC,EAAcD,EAAK,GACnBE,EAAUF,EAAK,GAGIvC,EAAI,EAC3B,GAAGJ,EAAS8C,MAAK,SAASpH,GAAM,OAA+B,IAAxB6G,EAAgB7G,MAAe,CACrE,IAAI2D,KAAYuD,EACZhH,EAAoBC,EAAE+G,EAAavD,KACrCzD,EAAoB+D,EAAEN,GAAYuD,EAAYvD,IAGhD,GAAGwD,EAAS,IAAI9C,EAAS8C,EAAQjH,GAGlC,IADG8G,GAA4BA,EAA2BC,GACrDvC,EAAIJ,EAASK,OAAQD,IACzBoC,EAAUxC,EAASI,GAChBxE,EAAoBC,EAAE0G,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBC,GAAW,EAE5B,OAAO5G,EAAoBkE,EAAEC,IAG1BgD,EAAqBX,KAA4B,sBAAIA,KAA4B,uBAAK,GAC1FW,EAAmBC,QAAQP,EAAqBQ,KAAK,KAAM,IAC3DF,EAAmB5D,KAAOsD,EAAqBQ,KAAK,KAAMF,EAAmB5D,KAAK8D,KAAKF,OC/CvF,IAAIG,EAAsBtH,EAAoBkE,OAAEP,EAAW,CAAC,OAAO,WAAa,OAAO3D,EAAoB,UAC3GsH,EAAsBtH,EAAoBkE,EAAEoD","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/node_modules/@nextcloud/moment/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/apps/user_status/src/views/Dashboard.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/user_status/src/views/Dashboard.vue","webpack://nextcloud/./apps/user_status/src/views/Dashboard.vue?0926","webpack://nextcloud/./apps/user_status/src/views/Dashboard.vue?d681","webpack:///nextcloud/apps/user_status/src/views/Dashboard.vue?vue&type=template&id=630fd03c&","webpack:///nextcloud/apps/user_status/src/dashboard.js","webpack:///nextcloud/apps/user_status/src/views/Dashboard.vue?vue&type=style&index=0&lang=scss&","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};","var map = {\n\t\"./af\": 36026,\n\t\"./af.js\": 36026,\n\t\"./ar\": 28093,\n\t\"./ar-dz\": 41943,\n\t\"./ar-dz.js\": 41943,\n\t\"./ar-kw\": 23969,\n\t\"./ar-kw.js\": 23969,\n\t\"./ar-ly\": 40594,\n\t\"./ar-ly.js\": 40594,\n\t\"./ar-ma\": 18369,\n\t\"./ar-ma.js\": 18369,\n\t\"./ar-sa\": 32579,\n\t\"./ar-sa.js\": 32579,\n\t\"./ar-tn\": 76442,\n\t\"./ar-tn.js\": 76442,\n\t\"./ar.js\": 28093,\n\t\"./az\": 86425,\n\t\"./az.js\": 86425,\n\t\"./be\": 22004,\n\t\"./be.js\": 22004,\n\t\"./bg\": 42982,\n\t\"./bg.js\": 42982,\n\t\"./bm\": 21067,\n\t\"./bm.js\": 21067,\n\t\"./bn\": 8366,\n\t\"./bn-bd\": 63837,\n\t\"./bn-bd.js\": 63837,\n\t\"./bn.js\": 8366,\n\t\"./bo\": 95040,\n\t\"./bo.js\": 95040,\n\t\"./br\": 521,\n\t\"./br.js\": 521,\n\t\"./bs\": 83242,\n\t\"./bs.js\": 83242,\n\t\"./ca\": 73046,\n\t\"./ca.js\": 73046,\n\t\"./cs\": 25794,\n\t\"./cs.js\": 25794,\n\t\"./cv\": 28231,\n\t\"./cv.js\": 28231,\n\t\"./cy\": 10927,\n\t\"./cy.js\": 10927,\n\t\"./da\": 42832,\n\t\"./da.js\": 42832,\n\t\"./de\": 29415,\n\t\"./de-at\": 3331,\n\t\"./de-at.js\": 3331,\n\t\"./de-ch\": 45524,\n\t\"./de-ch.js\": 45524,\n\t\"./de.js\": 29415,\n\t\"./dv\": 44700,\n\t\"./dv.js\": 44700,\n\t\"./el\": 88752,\n\t\"./el.js\": 88752,\n\t\"./en-au\": 90444,\n\t\"./en-au.js\": 90444,\n\t\"./en-ca\": 65959,\n\t\"./en-ca.js\": 65959,\n\t\"./en-gb\": 62762,\n\t\"./en-gb.js\": 62762,\n\t\"./en-ie\": 40909,\n\t\"./en-ie.js\": 40909,\n\t\"./en-il\": 79909,\n\t\"./en-il.js\": 79909,\n\t\"./en-in\": 87942,\n\t\"./en-in.js\": 87942,\n\t\"./en-nz\": 75200,\n\t\"./en-nz.js\": 75200,\n\t\"./en-sg\": 21415,\n\t\"./en-sg.js\": 21415,\n\t\"./eo\": 27447,\n\t\"./eo.js\": 27447,\n\t\"./es\": 86756,\n\t\"./es-do\": 47049,\n\t\"./es-do.js\": 47049,\n\t\"./es-mx\": 15915,\n\t\"./es-mx.js\": 15915,\n\t\"./es-us\": 57133,\n\t\"./es-us.js\": 57133,\n\t\"./es.js\": 86756,\n\t\"./et\": 72182,\n\t\"./et.js\": 72182,\n\t\"./eu\": 14419,\n\t\"./eu.js\": 14419,\n\t\"./fa\": 2916,\n\t\"./fa.js\": 2916,\n\t\"./fi\": 49964,\n\t\"./fi.js\": 49964,\n\t\"./fil\": 16448,\n\t\"./fil.js\": 16448,\n\t\"./fo\": 26094,\n\t\"./fo.js\": 26094,\n\t\"./fr\": 35833,\n\t\"./fr-ca\": 56994,\n\t\"./fr-ca.js\": 56994,\n\t\"./fr-ch\": 2740,\n\t\"./fr-ch.js\": 2740,\n\t\"./fr.js\": 35833,\n\t\"./fy\": 69542,\n\t\"./fy.js\": 69542,\n\t\"./ga\": 93264,\n\t\"./ga.js\": 93264,\n\t\"./gd\": 77457,\n\t\"./gd.js\": 77457,\n\t\"./gl\": 83043,\n\t\"./gl.js\": 83043,\n\t\"./gom-deva\": 24034,\n\t\"./gom-deva.js\": 24034,\n\t\"./gom-latn\": 28379,\n\t\"./gom-latn.js\": 28379,\n\t\"./gu\": 406,\n\t\"./gu.js\": 406,\n\t\"./he\": 73219,\n\t\"./he.js\": 73219,\n\t\"./hi\": 99834,\n\t\"./hi.js\": 99834,\n\t\"./hr\": 28754,\n\t\"./hr.js\": 28754,\n\t\"./hu\": 93945,\n\t\"./hu.js\": 93945,\n\t\"./hy-am\": 81319,\n\t\"./hy-am.js\": 81319,\n\t\"./id\": 24875,\n\t\"./id.js\": 24875,\n\t\"./is\": 23724,\n\t\"./is.js\": 23724,\n\t\"./it\": 79906,\n\t\"./it-ch\": 34303,\n\t\"./it-ch.js\": 34303,\n\t\"./it.js\": 79906,\n\t\"./ja\": 77105,\n\t\"./ja.js\": 77105,\n\t\"./jv\": 15026,\n\t\"./jv.js\": 15026,\n\t\"./ka\": 67416,\n\t\"./ka.js\": 67416,\n\t\"./kk\": 79734,\n\t\"./kk.js\": 79734,\n\t\"./km\": 60757,\n\t\"./km.js\": 60757,\n\t\"./kn\": 58369,\n\t\"./kn.js\": 58369,\n\t\"./ko\": 77687,\n\t\"./ko.js\": 77687,\n\t\"./ku\": 95544,\n\t\"./ku.js\": 95544,\n\t\"./ky\": 85431,\n\t\"./ky.js\": 85431,\n\t\"./lb\": 13613,\n\t\"./lb.js\": 13613,\n\t\"./lo\": 34252,\n\t\"./lo.js\": 34252,\n\t\"./lt\": 84619,\n\t\"./lt.js\": 84619,\n\t\"./lv\": 93760,\n\t\"./lv.js\": 93760,\n\t\"./me\": 93393,\n\t\"./me.js\": 93393,\n\t\"./mi\": 12369,\n\t\"./mi.js\": 12369,\n\t\"./mk\": 48664,\n\t\"./mk.js\": 48664,\n\t\"./ml\": 23099,\n\t\"./ml.js\": 23099,\n\t\"./mn\": 98539,\n\t\"./mn.js\": 98539,\n\t\"./mr\": 778,\n\t\"./mr.js\": 778,\n\t\"./ms\": 39970,\n\t\"./ms-my\": 82625,\n\t\"./ms-my.js\": 82625,\n\t\"./ms.js\": 39970,\n\t\"./mt\": 15714,\n\t\"./mt.js\": 15714,\n\t\"./my\": 53055,\n\t\"./my.js\": 53055,\n\t\"./nb\": 73945,\n\t\"./nb.js\": 73945,\n\t\"./ne\": 63645,\n\t\"./ne.js\": 63645,\n\t\"./nl\": 4829,\n\t\"./nl-be\": 12823,\n\t\"./nl-be.js\": 12823,\n\t\"./nl.js\": 4829,\n\t\"./nn\": 23756,\n\t\"./nn.js\": 23756,\n\t\"./oc-lnc\": 41228,\n\t\"./oc-lnc.js\": 41228,\n\t\"./pa-in\": 97877,\n\t\"./pa-in.js\": 97877,\n\t\"./pl\": 53066,\n\t\"./pl.js\": 53066,\n\t\"./pt\": 28677,\n\t\"./pt-br\": 81592,\n\t\"./pt-br.js\": 81592,\n\t\"./pt.js\": 28677,\n\t\"./ro\": 32722,\n\t\"./ro.js\": 32722,\n\t\"./ru\": 59138,\n\t\"./ru.js\": 59138,\n\t\"./sd\": 32568,\n\t\"./sd.js\": 32568,\n\t\"./se\": 49753,\n\t\"./se.js\": 49753,\n\t\"./si\": 58024,\n\t\"./si.js\": 58024,\n\t\"./sk\": 31058,\n\t\"./sk.js\": 31058,\n\t\"./sl\": 43452,\n\t\"./sl.js\": 43452,\n\t\"./sq\": 2795,\n\t\"./sq.js\": 2795,\n\t\"./sr\": 26976,\n\t\"./sr-cyrl\": 38819,\n\t\"./sr-cyrl.js\": 38819,\n\t\"./sr.js\": 26976,\n\t\"./ss\": 7467,\n\t\"./ss.js\": 7467,\n\t\"./sv\": 42787,\n\t\"./sv.js\": 42787,\n\t\"./sw\": 80298,\n\t\"./sw.js\": 80298,\n\t\"./ta\": 57532,\n\t\"./ta.js\": 57532,\n\t\"./te\": 76076,\n\t\"./te.js\": 76076,\n\t\"./tet\": 40452,\n\t\"./tet.js\": 40452,\n\t\"./tg\": 64794,\n\t\"./tg.js\": 64794,\n\t\"./th\": 48245,\n\t\"./th.js\": 48245,\n\t\"./tk\": 8870,\n\t\"./tk.js\": 8870,\n\t\"./tl-ph\": 36056,\n\t\"./tl-ph.js\": 36056,\n\t\"./tlh\": 15249,\n\t\"./tlh.js\": 15249,\n\t\"./tr\": 22053,\n\t\"./tr.js\": 22053,\n\t\"./tzl\": 39871,\n\t\"./tzl.js\": 39871,\n\t\"./tzm\": 39574,\n\t\"./tzm-latn\": 19210,\n\t\"./tzm-latn.js\": 19210,\n\t\"./tzm.js\": 39574,\n\t\"./ug-cn\": 91532,\n\t\"./ug-cn.js\": 91532,\n\t\"./uk\": 11432,\n\t\"./uk.js\": 11432,\n\t\"./ur\": 88523,\n\t\"./ur.js\": 88523,\n\t\"./uz\": 54958,\n\t\"./uz-latn\": 68735,\n\t\"./uz-latn.js\": 68735,\n\t\"./uz.js\": 54958,\n\t\"./vi\": 83398,\n\t\"./vi.js\": 83398,\n\t\"./x-pseudo\": 56665,\n\t\"./x-pseudo.js\": 56665,\n\t\"./yo\": 11642,\n\t\"./yo.js\": 11642,\n\t\"./zh-cn\": 5462,\n\t\"./zh-cn.js\": 5462,\n\t\"./zh-hk\": 92530,\n\t\"./zh-hk.js\": 92530,\n\t\"./zh-mo\": 41650,\n\t\"./zh-mo.js\": 41650,\n\t\"./zh-tw\": 97333,\n\t\"./zh-tw.js\": 97333\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 93365;","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dashboard.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!./Dashboard.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2020 Georg Ehrke <oc.list@georgehrke.com>\n - @author Georg Ehrke <oc.list@georgehrke.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<DashboardWidget id=\"user-status_panel\"\n\t\t:items=\"items\"\n\t\t:loading=\"loading\">\n\t\t<template #default=\"{ item }\">\n\t\t\t<DashboardWidgetItem :main-text=\"item.mainText\"\n\t\t\t\t:sub-text=\"item.subText\">\n\t\t\t\t<template #avatar>\n\t\t\t\t\t<Avatar class=\"item-avatar\"\n\t\t\t\t\t\t:size=\"44\"\n\t\t\t\t\t\t:user=\"item.avatarUsername\"\n\t\t\t\t\t\t:display-name=\"item.mainText\"\n\t\t\t\t\t\t:show-user-status=\"false\"\n\t\t\t\t\t\t:show-user-status-compact=\"false\" />\n\t\t\t\t</template>\n\t\t\t</DashboardWidgetItem>\n\t\t</template>\n\t\t<template #empty-content>\n\t\t\t<EmptyContent id=\"user_status-widget-empty-content\"\n\t\t\t\ticon=\"icon-user-status\">\n\t\t\t\t{{ t('user_status', 'No recent status changes') }}\n\t\t\t</EmptyContent>\n\t\t</template>\n\t</DashboardWidget>\n</template>\n\n<script>\nimport { DashboardWidget, DashboardWidgetItem } from '@nextcloud/vue-dashboard'\nimport Avatar from '@nextcloud/vue/dist/Components/Avatar'\nimport EmptyContent from '@nextcloud/vue/dist/Components/EmptyContent'\nimport { loadState } from '@nextcloud/initial-state'\nimport moment from '@nextcloud/moment'\n\nexport default {\n\tname: 'Dashboard',\n\tcomponents: {\n\t\tAvatar,\n\t\tDashboardWidget,\n\t\tDashboardWidgetItem,\n\t\tEmptyContent,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tstatuses: [],\n\t\t\tloading: true,\n\t\t}\n\t},\n\tcomputed: {\n\t\titems() {\n\t\t\treturn this.statuses.map((item) => {\n\t\t\t\tconst icon = item.icon || ''\n\t\t\t\tlet message = item.message || ''\n\t\t\t\tif (message === '') {\n\t\t\t\t\tif (item.status === 'away') {\n\t\t\t\t\t\tmessage = t('user_status', 'Away')\n\t\t\t\t\t}\n\t\t\t\t\tif (item.status === 'dnd') {\n\t\t\t\t\t\tmessage = t('user_status', 'Do not disturb')\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst status = item.icon !== '' ? `${icon} ${message}` : message\n\n\t\t\t\tlet subText\n\t\t\t\tif (item.icon === null && message === '' && item.timestamp === null) {\n\t\t\t\t\tsubText = ''\n\t\t\t\t} else if (item.icon === null && message === '' && item.timestamp !== null) {\n\t\t\t\t\tsubText = moment(item.timestamp, 'X').fromNow()\n\t\t\t\t} else if (item.timestamp !== null) {\n\t\t\t\t\tsubText = this.t('user_status', '{status}, {timestamp}', {\n\t\t\t\t\t\tstatus,\n\t\t\t\t\t\ttimestamp: moment(item.timestamp, 'X').fromNow(),\n\t\t\t\t\t}, null, { escape: false, sanitize: false })\n\t\t\t\t} else {\n\t\t\t\t\tsubText = status\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tmainText: item.displayName,\n\t\t\t\t\tsubText,\n\t\t\t\t\tavatarUsername: item.userId,\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t},\n\tmounted() {\n\t\ttry {\n\t\t\tthis.statuses = loadState('user_status', 'dashboard_data')\n\t\t\tthis.loading = false\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n#user_status-widget-empty-content {\n\ttext-align: center;\n\tmargin-top: 5vh;\n}\n</style>\n","\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!./Dashboard.vue?vue&type=style&index=0&lang=scss&\";\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!./Dashboard.vue?vue&type=style&index=0&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Dashboard.vue?vue&type=template&id=630fd03c&\"\nimport script from \"./Dashboard.vue?vue&type=script&lang=js&\"\nexport * from \"./Dashboard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Dashboard.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('DashboardWidget',{attrs:{\"id\":\"user-status_panel\",\"items\":_vm.items,\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('DashboardWidgetItem',{attrs:{\"main-text\":item.mainText,\"sub-text\":item.subText},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('Avatar',{staticClass:\"item-avatar\",attrs:{\"size\":44,\"user\":item.avatarUsername,\"display-name\":item.mainText,\"show-user-status\":false,\"show-user-status-compact\":false}})]},proxy:true}],null,true)})]}},{key:\"empty-content\",fn:function(){return [_c('EmptyContent',{attrs:{\"id\":\"user_status-widget-empty-content\",\"icon\":\"icon-user-status\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('user_status', 'No recent status changes'))+\"\\n\\t\\t\")])]},proxy:true}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\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 */\n\nimport Vue from 'vue'\nimport { getRequestToken } from '@nextcloud/auth'\nimport { translate, translatePlural } from '@nextcloud/l10n'\nimport Dashboard from './views/Dashboard'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nVue.prototype.t = translate\nVue.prototype.n = translatePlural\nVue.prototype.OC = OC\nVue.prototype.OCA = OCA\n\ndocument.addEventListener('DOMContentLoaded', function() {\n\tOCA.Dashboard.register('user_status', (el) => {\n\t\tconst View = Vue.extend(Dashboard)\n\t\tnew View({\n\t\t\tpropsData: {},\n\t\t}).$mount(el)\n\t})\n\n})\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, \"#user_status-widget-empty-content{text-align:center;margin-top:5vh}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/user_status/src/views/Dashboard.vue\"],\"names\":[],\"mappings\":\"AAqHA,kCACC,iBAAA,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#user_status-widget-empty-content {\\n\\ttext-align: center;\\n\\tmargin-top: 5vh;\\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 = 7063;","__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\t7063: 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__(70505); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_c","_self","attrs","items","loading","scopedSlots","_u","key","fn","ref","item","mainText","subText","staticClass","avatarUsername","proxy","_v","_s","t","__webpack_nonce__","btoa","getRequestToken","Vue","translate","translatePlural","OC","OCA","document","addEventListener","Dashboard","register","el","propsData","$mount","___CSS_LOADER_EXPORT___","push","__webpack_module_cache__","moduleId","cachedModule","undefined","loaded","__webpack_modules__","call","m","amdD","amdO","O","result","chunkIds","priority","notFulfilled","Infinity","i","length","fulfilled","j","every","splice","r","n","getter","__esModule","d","a","definition","defineProperty","enumerable","get","g","globalThis","Function","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","children","b","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"user_status-dashboard.js?v=5ddf3d0cd3d0fd6d358e","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/node_modules/@nextcloud/moment/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/apps/user_status/src/views/Dashboard.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/user_status/src/views/Dashboard.vue","webpack://nextcloud/./apps/user_status/src/views/Dashboard.vue?0926","webpack://nextcloud/./apps/user_status/src/views/Dashboard.vue?d681","webpack:///nextcloud/apps/user_status/src/views/Dashboard.vue?vue&type=template&id=630fd03c&","webpack:///nextcloud/apps/user_status/src/dashboard.js","webpack:///nextcloud/apps/user_status/src/views/Dashboard.vue?vue&type=style&index=0&lang=scss&","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/runtime/nonce","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};","var map = {\n\t\"./af\": 36026,\n\t\"./af.js\": 36026,\n\t\"./ar\": 28093,\n\t\"./ar-dz\": 41943,\n\t\"./ar-dz.js\": 41943,\n\t\"./ar-kw\": 23969,\n\t\"./ar-kw.js\": 23969,\n\t\"./ar-ly\": 40594,\n\t\"./ar-ly.js\": 40594,\n\t\"./ar-ma\": 18369,\n\t\"./ar-ma.js\": 18369,\n\t\"./ar-sa\": 32579,\n\t\"./ar-sa.js\": 32579,\n\t\"./ar-tn\": 76442,\n\t\"./ar-tn.js\": 76442,\n\t\"./ar.js\": 28093,\n\t\"./az\": 86425,\n\t\"./az.js\": 86425,\n\t\"./be\": 22004,\n\t\"./be.js\": 22004,\n\t\"./bg\": 42982,\n\t\"./bg.js\": 42982,\n\t\"./bm\": 21067,\n\t\"./bm.js\": 21067,\n\t\"./bn\": 8366,\n\t\"./bn-bd\": 63837,\n\t\"./bn-bd.js\": 63837,\n\t\"./bn.js\": 8366,\n\t\"./bo\": 95040,\n\t\"./bo.js\": 95040,\n\t\"./br\": 521,\n\t\"./br.js\": 521,\n\t\"./bs\": 83242,\n\t\"./bs.js\": 83242,\n\t\"./ca\": 73046,\n\t\"./ca.js\": 73046,\n\t\"./cs\": 25794,\n\t\"./cs.js\": 25794,\n\t\"./cv\": 28231,\n\t\"./cv.js\": 28231,\n\t\"./cy\": 10927,\n\t\"./cy.js\": 10927,\n\t\"./da\": 42832,\n\t\"./da.js\": 42832,\n\t\"./de\": 29415,\n\t\"./de-at\": 3331,\n\t\"./de-at.js\": 3331,\n\t\"./de-ch\": 45524,\n\t\"./de-ch.js\": 45524,\n\t\"./de.js\": 29415,\n\t\"./dv\": 44700,\n\t\"./dv.js\": 44700,\n\t\"./el\": 88752,\n\t\"./el.js\": 88752,\n\t\"./en-au\": 90444,\n\t\"./en-au.js\": 90444,\n\t\"./en-ca\": 65959,\n\t\"./en-ca.js\": 65959,\n\t\"./en-gb\": 62762,\n\t\"./en-gb.js\": 62762,\n\t\"./en-ie\": 40909,\n\t\"./en-ie.js\": 40909,\n\t\"./en-il\": 79909,\n\t\"./en-il.js\": 79909,\n\t\"./en-in\": 87942,\n\t\"./en-in.js\": 87942,\n\t\"./en-nz\": 75200,\n\t\"./en-nz.js\": 75200,\n\t\"./en-sg\": 21415,\n\t\"./en-sg.js\": 21415,\n\t\"./eo\": 27447,\n\t\"./eo.js\": 27447,\n\t\"./es\": 86756,\n\t\"./es-do\": 47049,\n\t\"./es-do.js\": 47049,\n\t\"./es-mx\": 15915,\n\t\"./es-mx.js\": 15915,\n\t\"./es-us\": 57133,\n\t\"./es-us.js\": 57133,\n\t\"./es.js\": 86756,\n\t\"./et\": 72182,\n\t\"./et.js\": 72182,\n\t\"./eu\": 14419,\n\t\"./eu.js\": 14419,\n\t\"./fa\": 2916,\n\t\"./fa.js\": 2916,\n\t\"./fi\": 49964,\n\t\"./fi.js\": 49964,\n\t\"./fil\": 16448,\n\t\"./fil.js\": 16448,\n\t\"./fo\": 26094,\n\t\"./fo.js\": 26094,\n\t\"./fr\": 35833,\n\t\"./fr-ca\": 56994,\n\t\"./fr-ca.js\": 56994,\n\t\"./fr-ch\": 2740,\n\t\"./fr-ch.js\": 2740,\n\t\"./fr.js\": 35833,\n\t\"./fy\": 69542,\n\t\"./fy.js\": 69542,\n\t\"./ga\": 93264,\n\t\"./ga.js\": 93264,\n\t\"./gd\": 77457,\n\t\"./gd.js\": 77457,\n\t\"./gl\": 83043,\n\t\"./gl.js\": 83043,\n\t\"./gom-deva\": 24034,\n\t\"./gom-deva.js\": 24034,\n\t\"./gom-latn\": 28379,\n\t\"./gom-latn.js\": 28379,\n\t\"./gu\": 406,\n\t\"./gu.js\": 406,\n\t\"./he\": 73219,\n\t\"./he.js\": 73219,\n\t\"./hi\": 99834,\n\t\"./hi.js\": 99834,\n\t\"./hr\": 28754,\n\t\"./hr.js\": 28754,\n\t\"./hu\": 93945,\n\t\"./hu.js\": 93945,\n\t\"./hy-am\": 81319,\n\t\"./hy-am.js\": 81319,\n\t\"./id\": 24875,\n\t\"./id.js\": 24875,\n\t\"./is\": 23724,\n\t\"./is.js\": 23724,\n\t\"./it\": 79906,\n\t\"./it-ch\": 34303,\n\t\"./it-ch.js\": 34303,\n\t\"./it.js\": 79906,\n\t\"./ja\": 77105,\n\t\"./ja.js\": 77105,\n\t\"./jv\": 15026,\n\t\"./jv.js\": 15026,\n\t\"./ka\": 67416,\n\t\"./ka.js\": 67416,\n\t\"./kk\": 79734,\n\t\"./kk.js\": 79734,\n\t\"./km\": 60757,\n\t\"./km.js\": 60757,\n\t\"./kn\": 58369,\n\t\"./kn.js\": 58369,\n\t\"./ko\": 77687,\n\t\"./ko.js\": 77687,\n\t\"./ku\": 95544,\n\t\"./ku.js\": 95544,\n\t\"./ky\": 85431,\n\t\"./ky.js\": 85431,\n\t\"./lb\": 13613,\n\t\"./lb.js\": 13613,\n\t\"./lo\": 34252,\n\t\"./lo.js\": 34252,\n\t\"./lt\": 84619,\n\t\"./lt.js\": 84619,\n\t\"./lv\": 93760,\n\t\"./lv.js\": 93760,\n\t\"./me\": 93393,\n\t\"./me.js\": 93393,\n\t\"./mi\": 12369,\n\t\"./mi.js\": 12369,\n\t\"./mk\": 48664,\n\t\"./mk.js\": 48664,\n\t\"./ml\": 23099,\n\t\"./ml.js\": 23099,\n\t\"./mn\": 98539,\n\t\"./mn.js\": 98539,\n\t\"./mr\": 778,\n\t\"./mr.js\": 778,\n\t\"./ms\": 39970,\n\t\"./ms-my\": 82625,\n\t\"./ms-my.js\": 82625,\n\t\"./ms.js\": 39970,\n\t\"./mt\": 15714,\n\t\"./mt.js\": 15714,\n\t\"./my\": 53055,\n\t\"./my.js\": 53055,\n\t\"./nb\": 73945,\n\t\"./nb.js\": 73945,\n\t\"./ne\": 63645,\n\t\"./ne.js\": 63645,\n\t\"./nl\": 4829,\n\t\"./nl-be\": 12823,\n\t\"./nl-be.js\": 12823,\n\t\"./nl.js\": 4829,\n\t\"./nn\": 23756,\n\t\"./nn.js\": 23756,\n\t\"./oc-lnc\": 41228,\n\t\"./oc-lnc.js\": 41228,\n\t\"./pa-in\": 97877,\n\t\"./pa-in.js\": 97877,\n\t\"./pl\": 53066,\n\t\"./pl.js\": 53066,\n\t\"./pt\": 28677,\n\t\"./pt-br\": 81592,\n\t\"./pt-br.js\": 81592,\n\t\"./pt.js\": 28677,\n\t\"./ro\": 32722,\n\t\"./ro.js\": 32722,\n\t\"./ru\": 59138,\n\t\"./ru.js\": 59138,\n\t\"./sd\": 32568,\n\t\"./sd.js\": 32568,\n\t\"./se\": 49753,\n\t\"./se.js\": 49753,\n\t\"./si\": 58024,\n\t\"./si.js\": 58024,\n\t\"./sk\": 31058,\n\t\"./sk.js\": 31058,\n\t\"./sl\": 43452,\n\t\"./sl.js\": 43452,\n\t\"./sq\": 2795,\n\t\"./sq.js\": 2795,\n\t\"./sr\": 26976,\n\t\"./sr-cyrl\": 38819,\n\t\"./sr-cyrl.js\": 38819,\n\t\"./sr.js\": 26976,\n\t\"./ss\": 7467,\n\t\"./ss.js\": 7467,\n\t\"./sv\": 42787,\n\t\"./sv.js\": 42787,\n\t\"./sw\": 80298,\n\t\"./sw.js\": 80298,\n\t\"./ta\": 57532,\n\t\"./ta.js\": 57532,\n\t\"./te\": 76076,\n\t\"./te.js\": 76076,\n\t\"./tet\": 40452,\n\t\"./tet.js\": 40452,\n\t\"./tg\": 64794,\n\t\"./tg.js\": 64794,\n\t\"./th\": 48245,\n\t\"./th.js\": 48245,\n\t\"./tk\": 8870,\n\t\"./tk.js\": 8870,\n\t\"./tl-ph\": 36056,\n\t\"./tl-ph.js\": 36056,\n\t\"./tlh\": 15249,\n\t\"./tlh.js\": 15249,\n\t\"./tr\": 22053,\n\t\"./tr.js\": 22053,\n\t\"./tzl\": 39871,\n\t\"./tzl.js\": 39871,\n\t\"./tzm\": 39574,\n\t\"./tzm-latn\": 19210,\n\t\"./tzm-latn.js\": 19210,\n\t\"./tzm.js\": 39574,\n\t\"./ug-cn\": 91532,\n\t\"./ug-cn.js\": 91532,\n\t\"./uk\": 11432,\n\t\"./uk.js\": 11432,\n\t\"./ur\": 88523,\n\t\"./ur.js\": 88523,\n\t\"./uz\": 54958,\n\t\"./uz-latn\": 68735,\n\t\"./uz-latn.js\": 68735,\n\t\"./uz.js\": 54958,\n\t\"./vi\": 83398,\n\t\"./vi.js\": 83398,\n\t\"./x-pseudo\": 56665,\n\t\"./x-pseudo.js\": 56665,\n\t\"./yo\": 11642,\n\t\"./yo.js\": 11642,\n\t\"./zh-cn\": 5462,\n\t\"./zh-cn.js\": 5462,\n\t\"./zh-hk\": 92530,\n\t\"./zh-hk.js\": 92530,\n\t\"./zh-mo\": 41650,\n\t\"./zh-mo.js\": 41650,\n\t\"./zh-tw\": 97333,\n\t\"./zh-tw.js\": 97333\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 93365;","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dashboard.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!./Dashboard.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2020 Georg Ehrke <oc.list@georgehrke.com>\n - @author Georg Ehrke <oc.list@georgehrke.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<DashboardWidget id=\"user-status_panel\"\n\t\t:items=\"items\"\n\t\t:loading=\"loading\">\n\t\t<template #default=\"{ item }\">\n\t\t\t<DashboardWidgetItem :main-text=\"item.mainText\"\n\t\t\t\t:sub-text=\"item.subText\">\n\t\t\t\t<template #avatar>\n\t\t\t\t\t<Avatar class=\"item-avatar\"\n\t\t\t\t\t\t:size=\"44\"\n\t\t\t\t\t\t:user=\"item.avatarUsername\"\n\t\t\t\t\t\t:display-name=\"item.mainText\"\n\t\t\t\t\t\t:show-user-status=\"false\"\n\t\t\t\t\t\t:show-user-status-compact=\"false\" />\n\t\t\t\t</template>\n\t\t\t</DashboardWidgetItem>\n\t\t</template>\n\t\t<template #empty-content>\n\t\t\t<EmptyContent id=\"user_status-widget-empty-content\"\n\t\t\t\ticon=\"icon-user-status\">\n\t\t\t\t{{ t('user_status', 'No recent status changes') }}\n\t\t\t</EmptyContent>\n\t\t</template>\n\t</DashboardWidget>\n</template>\n\n<script>\nimport { DashboardWidget, DashboardWidgetItem } from '@nextcloud/vue-dashboard'\nimport Avatar from '@nextcloud/vue/dist/Components/Avatar'\nimport EmptyContent from '@nextcloud/vue/dist/Components/EmptyContent'\nimport { loadState } from '@nextcloud/initial-state'\nimport moment from '@nextcloud/moment'\n\nexport default {\n\tname: 'Dashboard',\n\tcomponents: {\n\t\tAvatar,\n\t\tDashboardWidget,\n\t\tDashboardWidgetItem,\n\t\tEmptyContent,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tstatuses: [],\n\t\t\tloading: true,\n\t\t}\n\t},\n\tcomputed: {\n\t\titems() {\n\t\t\treturn this.statuses.map((item) => {\n\t\t\t\tconst icon = item.icon || ''\n\t\t\t\tlet message = item.message || ''\n\t\t\t\tif (message === '') {\n\t\t\t\t\tif (item.status === 'away') {\n\t\t\t\t\t\tmessage = t('user_status', 'Away')\n\t\t\t\t\t}\n\t\t\t\t\tif (item.status === 'dnd') {\n\t\t\t\t\t\tmessage = t('user_status', 'Do not disturb')\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst status = item.icon !== '' ? `${icon} ${message}` : message\n\n\t\t\t\tlet subText\n\t\t\t\tif (item.icon === null && message === '' && item.timestamp === null) {\n\t\t\t\t\tsubText = ''\n\t\t\t\t} else if (item.icon === null && message === '' && item.timestamp !== null) {\n\t\t\t\t\tsubText = moment(item.timestamp, 'X').fromNow()\n\t\t\t\t} else if (item.timestamp !== null) {\n\t\t\t\t\tsubText = this.t('user_status', '{status}, {timestamp}', {\n\t\t\t\t\t\tstatus,\n\t\t\t\t\t\ttimestamp: moment(item.timestamp, 'X').fromNow(),\n\t\t\t\t\t}, null, { escape: false, sanitize: false })\n\t\t\t\t} else {\n\t\t\t\t\tsubText = status\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tmainText: item.displayName,\n\t\t\t\t\tsubText,\n\t\t\t\t\tavatarUsername: item.userId,\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t},\n\tmounted() {\n\t\ttry {\n\t\t\tthis.statuses = loadState('user_status', 'dashboard_data')\n\t\t\tthis.loading = false\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n#user_status-widget-empty-content {\n\ttext-align: center;\n\tmargin-top: 5vh;\n}\n</style>\n","\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!./Dashboard.vue?vue&type=style&index=0&lang=scss&\";\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!./Dashboard.vue?vue&type=style&index=0&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Dashboard.vue?vue&type=template&id=630fd03c&\"\nimport script from \"./Dashboard.vue?vue&type=script&lang=js&\"\nexport * from \"./Dashboard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Dashboard.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('DashboardWidget',{attrs:{\"id\":\"user-status_panel\",\"items\":_vm.items,\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('DashboardWidgetItem',{attrs:{\"main-text\":item.mainText,\"sub-text\":item.subText},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('Avatar',{staticClass:\"item-avatar\",attrs:{\"size\":44,\"user\":item.avatarUsername,\"display-name\":item.mainText,\"show-user-status\":false,\"show-user-status-compact\":false}})]},proxy:true}],null,true)})]}},{key:\"empty-content\",fn:function(){return [_c('EmptyContent',{attrs:{\"id\":\"user_status-widget-empty-content\",\"icon\":\"icon-user-status\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('user_status', 'No recent status changes'))+\"\\n\\t\\t\")])]},proxy:true}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\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 */\n\nimport Vue from 'vue'\nimport { getRequestToken } from '@nextcloud/auth'\nimport { translate, translatePlural } from '@nextcloud/l10n'\nimport Dashboard from './views/Dashboard'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nVue.prototype.t = translate\nVue.prototype.n = translatePlural\nVue.prototype.OC = OC\nVue.prototype.OCA = OCA\n\ndocument.addEventListener('DOMContentLoaded', function() {\n\tOCA.Dashboard.register('user_status', (el) => {\n\t\tconst View = Vue.extend(Dashboard)\n\t\tnew View({\n\t\t\tpropsData: {},\n\t\t}).$mount(el)\n\t})\n\n})\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, \"#user_status-widget-empty-content{text-align:center;margin-top:5vh}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/user_status/src/views/Dashboard.vue\"],\"names\":[],\"mappings\":\"AAqHA,kCACC,iBAAA,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#user_status-widget-empty-content {\\n\\ttext-align: center;\\n\\tmargin-top: 5vh;\\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 = 7063;","__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\t7063: 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));","__webpack_require__.nc = undefined;","// 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__(70505); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_c","_self","attrs","items","loading","scopedSlots","_u","key","fn","ref","item","mainText","subText","staticClass","avatarUsername","proxy","_v","_s","t","__webpack_nonce__","btoa","getRequestToken","Vue","translate","translatePlural","OC","OCA","document","addEventListener","Dashboard","register","el","propsData","$mount","___CSS_LOADER_EXPORT___","push","__webpack_module_cache__","moduleId","cachedModule","undefined","loaded","__webpack_modules__","call","m","amdD","amdO","O","result","chunkIds","priority","notFulfilled","Infinity","i","length","fulfilled","j","every","splice","r","n","getter","__esModule","d","a","definition","defineProperty","enumerable","get","g","globalThis","Function","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","children","b","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/user_status-menu.js b/dist/user_status-menu.js
index 6fb04a61047..c17de056841 100644
--- a/dist/user_status-menu.js
+++ b/dist/user_status-menu.js
@@ -1,3 +1,3 @@
/*! For license information please see user_status-menu.js.LICENSE.txt */
-!function(){var e,n,r,s={93365:function(t,e,n){var r={"./af":36026,"./af.js":36026,"./ar":28093,"./ar-dz":41943,"./ar-dz.js":41943,"./ar-kw":23969,"./ar-kw.js":23969,"./ar-ly":40594,"./ar-ly.js":40594,"./ar-ma":18369,"./ar-ma.js":18369,"./ar-sa":32579,"./ar-sa.js":32579,"./ar-tn":76442,"./ar-tn.js":76442,"./ar.js":28093,"./az":86425,"./az.js":86425,"./be":22004,"./be.js":22004,"./bg":42982,"./bg.js":42982,"./bm":21067,"./bm.js":21067,"./bn":8366,"./bn-bd":63837,"./bn-bd.js":63837,"./bn.js":8366,"./bo":95040,"./bo.js":95040,"./br":521,"./br.js":521,"./bs":83242,"./bs.js":83242,"./ca":73046,"./ca.js":73046,"./cs":25794,"./cs.js":25794,"./cv":28231,"./cv.js":28231,"./cy":10927,"./cy.js":10927,"./da":42832,"./da.js":42832,"./de":29415,"./de-at":3331,"./de-at.js":3331,"./de-ch":45524,"./de-ch.js":45524,"./de.js":29415,"./dv":44700,"./dv.js":44700,"./el":88752,"./el.js":88752,"./en-au":90444,"./en-au.js":90444,"./en-ca":65959,"./en-ca.js":65959,"./en-gb":62762,"./en-gb.js":62762,"./en-ie":40909,"./en-ie.js":40909,"./en-il":79909,"./en-il.js":79909,"./en-in":87942,"./en-in.js":87942,"./en-nz":75200,"./en-nz.js":75200,"./en-sg":21415,"./en-sg.js":21415,"./eo":27447,"./eo.js":27447,"./es":86756,"./es-do":47049,"./es-do.js":47049,"./es-mx":15915,"./es-mx.js":15915,"./es-us":57133,"./es-us.js":57133,"./es.js":86756,"./et":72182,"./et.js":72182,"./eu":14419,"./eu.js":14419,"./fa":2916,"./fa.js":2916,"./fi":49964,"./fi.js":49964,"./fil":16448,"./fil.js":16448,"./fo":26094,"./fo.js":26094,"./fr":35833,"./fr-ca":56994,"./fr-ca.js":56994,"./fr-ch":2740,"./fr-ch.js":2740,"./fr.js":35833,"./fy":69542,"./fy.js":69542,"./ga":93264,"./ga.js":93264,"./gd":77457,"./gd.js":77457,"./gl":83043,"./gl.js":83043,"./gom-deva":24034,"./gom-deva.js":24034,"./gom-latn":28379,"./gom-latn.js":28379,"./gu":406,"./gu.js":406,"./he":73219,"./he.js":73219,"./hi":99834,"./hi.js":99834,"./hr":28754,"./hr.js":28754,"./hu":93945,"./hu.js":93945,"./hy-am":81319,"./hy-am.js":81319,"./id":24875,"./id.js":24875,"./is":23724,"./is.js":23724,"./it":79906,"./it-ch":34303,"./it-ch.js":34303,"./it.js":79906,"./ja":77105,"./ja.js":77105,"./jv":15026,"./jv.js":15026,"./ka":67416,"./ka.js":67416,"./kk":79734,"./kk.js":79734,"./km":60757,"./km.js":60757,"./kn":58369,"./kn.js":58369,"./ko":77687,"./ko.js":77687,"./ku":95544,"./ku.js":95544,"./ky":85431,"./ky.js":85431,"./lb":13613,"./lb.js":13613,"./lo":34252,"./lo.js":34252,"./lt":84619,"./lt.js":84619,"./lv":93760,"./lv.js":93760,"./me":93393,"./me.js":93393,"./mi":12369,"./mi.js":12369,"./mk":48664,"./mk.js":48664,"./ml":23099,"./ml.js":23099,"./mn":98539,"./mn.js":98539,"./mr":778,"./mr.js":778,"./ms":39970,"./ms-my":82625,"./ms-my.js":82625,"./ms.js":39970,"./mt":15714,"./mt.js":15714,"./my":53055,"./my.js":53055,"./nb":73945,"./nb.js":73945,"./ne":63645,"./ne.js":63645,"./nl":4829,"./nl-be":12823,"./nl-be.js":12823,"./nl.js":4829,"./nn":23756,"./nn.js":23756,"./oc-lnc":41228,"./oc-lnc.js":41228,"./pa-in":97877,"./pa-in.js":97877,"./pl":53066,"./pl.js":53066,"./pt":28677,"./pt-br":81592,"./pt-br.js":81592,"./pt.js":28677,"./ro":32722,"./ro.js":32722,"./ru":59138,"./ru.js":59138,"./sd":32568,"./sd.js":32568,"./se":49753,"./se.js":49753,"./si":58024,"./si.js":58024,"./sk":31058,"./sk.js":31058,"./sl":43452,"./sl.js":43452,"./sq":2795,"./sq.js":2795,"./sr":26976,"./sr-cyrl":38819,"./sr-cyrl.js":38819,"./sr.js":26976,"./ss":7467,"./ss.js":7467,"./sv":42787,"./sv.js":42787,"./sw":80298,"./sw.js":80298,"./ta":57532,"./ta.js":57532,"./te":76076,"./te.js":76076,"./tet":40452,"./tet.js":40452,"./tg":64794,"./tg.js":64794,"./th":48245,"./th.js":48245,"./tk":8870,"./tk.js":8870,"./tl-ph":36056,"./tl-ph.js":36056,"./tlh":15249,"./tlh.js":15249,"./tr":22053,"./tr.js":22053,"./tzl":39871,"./tzl.js":39871,"./tzm":39574,"./tzm-latn":19210,"./tzm-latn.js":19210,"./tzm.js":39574,"./ug-cn":91532,"./ug-cn.js":91532,"./uk":11432,"./uk.js":11432,"./ur":88523,"./ur.js":88523,"./uz":54958,"./uz-latn":68735,"./uz-latn.js":68735,"./uz.js":54958,"./vi":83398,"./vi.js":83398,"./x-pseudo":56665,"./x-pseudo.js":56665,"./yo":11642,"./yo.js":11642,"./zh-cn":5462,"./zh-cn.js":5462,"./zh-hk":92530,"./zh-hk.js":92530,"./zh-mo":41650,"./zh-mo.js":41650,"./zh-tw":97333,"./zh-tw.js":97333};function s(t){var e=a(t);return n(e)}function a(t){if(!n.o(r,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return r[t]}s.keys=function(){return Object.keys(r)},s.resolve=a,t.exports=s,s.id=93365},40814:function(e,n,r){"use strict";var s=r(20144),a=r(22200),o=r(79753),i=r(16453),u=r(74854),c=r(20296),l=r.n(c),d=r(4820);function m(t,e,n,r,s,a,o){try{var i=t[a](o),u=i.value}catch(t){return void n(t)}i.done?e(u):Promise.resolve(u).then(r,s)}var f=function(){var t,e=(t=regeneratorRuntime.mark((function t(e){var n,r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=(0,o.generateUrl)("/apps/user_status/heartbeat"),t.next=3,d.default.put(n,{status:e?"away":"online"});case 3:return r=t.sent,t.abrupt("return",r.data);case 5:case"end":return t.stop()}}),t)})),function(){var e=this,n=arguments;return new Promise((function(r,s){var a=t.apply(e,n);function o(t){m(a,r,s,o,i,"next",t)}function i(t){m(a,r,s,o,i,"throw",t)}o(void 0)}))});return function(t){return e.apply(this,arguments)}}(),p=r(84387);function v(t,e,n,r,s,a,o){try{var i=t[a](o),u=i.value}catch(t){return void n(t)}i.done?e(u):Promise.resolve(u).then(r,s)}var h=(0,i.loadState)("user_status","profileEnabled",!1).profileEnabled,g={name:"UserStatus",components:{SetStatusModal:function(){return Promise.all([r.e(7874),r.e(8299)]).then(r.bind(r,37323))}},mixins:[p.Z],props:{inline:{type:Boolean,default:!1}},data:function(){return{displayName:(0,a.getCurrentUser)().displayName,heartbeatInterval:null,isAway:!1,isModalOpen:!1,loadingProfilePage:!1,mouseMoveListener:null,profileEnabled:h,setAwayTimeout:null}},computed:{profilePageLink:function(){return this.profileEnabled?(0,o.generateUrl)("/u/{userId}",{userId:(0,a.getCurrentUser)().uid}):null}},mounted:function(){var t=this;(0,u.subscribe)("settings:display-name:updated",this.handleDisplayNameUpdate),(0,u.subscribe)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate),this.$store.dispatch("loadStatusFromInitialState"),OC.config.session_keepalive&&(this.heartbeatInterval=setInterval(this._backgroundHeartbeat.bind(this),3e5),this.setAwayTimeout=function(){t.isAway=!0},this.mouseMoveListener=l()((function(){var e=t.isAway;t.isAway=!1,clearTimeout(t.setAwayTimeout),setTimeout(t.setAwayTimeout,12e4),e&&t._backgroundHeartbeat()}),2e3,!0),window.addEventListener("mousemove",this.mouseMoveListener,{capture:!0,passive:!0}),this._backgroundHeartbeat()),(0,u.subscribe)("user_status:status.updated",this.handleUserStatusUpdated)},beforeDestroy:function(){(0,u.unsubscribe)("settings:display-name:updated",this.handleDisplayNameUpdate),(0,u.unsubscribe)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate),window.removeEventListener("mouseMove",this.mouseMoveListener),clearInterval(this.heartbeatInterval),(0,u.unsubscribe)("user_status:status.updated",this.handleUserStatusUpdated)},methods:{handleDisplayNameUpdate:function(t){this.displayName=t},handleProfileEnabledUpdate:function(t){this.profileEnabled=t},loadProfilePage:function(){this.profileEnabled&&(this.loadingProfilePage=!0)},openModal:function(){this.isModalOpen=!0},closeModal:function(){this.isModalOpen=!1},_backgroundHeartbeat:function(){var t,e=this;return(t=regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,f(e.isAway);case 3:if(null==(n=t.sent)||!n.userId){t.next=8;break}e.$store.dispatch("setStatusFromHeartbeat",n),t.next=10;break;case 8:return t.next=10,e.$store.dispatch("reFetchStatusFromServer");case 10:t.next=15;break;case 12:t.prev=12,t.t0=t.catch(0),console.debug("Failed sending heartbeat, got: "+(null===(r=t.t0.response)||void 0===r?void 0:r.status));case 15:case"end":return t.stop()}}),t,null,[[0,12]])})),function(){var e=this,n=arguments;return new Promise((function(r,s){var a=t.apply(e,n);function o(t){v(a,r,s,o,i,"next",t)}function i(t){v(a,r,s,o,i,"throw",t)}o(void 0)}))})()},handleUserStatusUpdated:function(t){OC.getCurrentUser().uid===t.userId&&this.$store.dispatch("setStatusFromObject",{status:t.status,icon:t.icon,message:t.message})}}},A=g,b=r(93379),j=r.n(b),y=r(7795),w=r.n(y),C=r(90569),x=r.n(C),_=r(3565),k=r.n(_),S=r(19216),P=r.n(S),O=r(44589),I=r.n(O),U=r(79483),D={};D.styleTagTransform=I(),D.setAttributes=k(),D.insert=x().bind(null,"head"),D.domAPI=w(),D.insertStyleElement=P(),j()(U.Z,D),U.Z&&U.Z.locals&&U.Z.locals;var M=(0,r(51900).Z)(A,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("li",[n("div",{staticClass:"user-status-menu-item"},[t.inline?t._e():n("a",{staticClass:"user-status-menu-item__header",attrs:{href:t.profilePageLink},on:{click:t.loadProfilePage}},[n("div",{staticClass:"user-status-menu-item__header-content"},[n("div",{staticClass:"user-status-menu-item__header-content-displayname"},[t._v(t._s(t.displayName))]),t._v(" "),t.loadingProfilePage?n("div",{staticClass:"icon-loading-small"}):n("div",{staticClass:"user-status-menu-item__header-content-placeholder"})]),t._v(" "),t.profileEnabled?n("div",[t._v("\n\t\t\t\t"+t._s(t.t("user_status","View profile"))+"\n\t\t\t")]):t._e()]),t._v(" "),n(t.inline?"button":"a",{tag:"toggle",staticClass:"user-status-menu-item__toggle",class:{"user-status-menu-item__toggle--inline":t.inline},attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),t.openModal.apply(null,arguments)}}},[n("span",{staticClass:"user-status-menu-item__toggle-icon",class:t.statusIcon}),t._v("\n\t\t\t"+t._s(t.visibleMessage)+"\n\t\t")])],1),t._v(" "),t.isModalOpen?n("SetStatusModal",{on:{close:t.closeModal}}):t._e()],1)}),[],!1,null,"5879d4bb",null),E=M.exports,R=r(20629);function T(t,e,n,r,s,a,o){try{var i=t[a](o),u=i.value}catch(t){return void n(t)}i.done?e(u):Promise.resolve(u).then(r,s)}var z=function(){var t,e=(t=regeneratorRuntime.mark((function t(){var e,n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e=(0,o.generateOcsUrl)("apps/user_status/api/v1/predefined_statuses?format=json"),t.next=3,d.default.get(e);case 3:return n=t.sent,t.abrupt("return",n.data.ocs.data);case 5:case"end":return t.stop()}}),t)})),function(){var e=this,n=arguments;return new Promise((function(r,s){var a=t.apply(e,n);function o(t){T(a,r,s,o,i,"next",t)}function i(t){T(a,r,s,o,i,"throw",t)}o(void 0)}))});return function(){return e.apply(this,arguments)}}();function B(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(t){if("string"==typeof t)return F(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?F(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,s=function(){};return{s:s,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:s}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,i=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return o=t.done,t},e:function(t){i=!0,a=t},f:function(){try{o||null==n.return||n.return()}finally{if(i)throw a}}}}function F(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function $(t,e,n,r,s,a,o){try{var i=t[a](o),u=i.value}catch(t){return void n(t)}i.done?e(u):Promise.resolve(u).then(r,s)}var N={loadAllPredefinedStatuses:function(t){return(e=regeneratorRuntime.mark((function e(){var n,r,s,a,o,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.state,r=t.commit,!(n.predefinedStatuses.length>0)){e.next=3;break}return e.abrupt("return");case 3:return e.next=5,z();case 5:s=e.sent,a=B(s);try{for(a.s();!(o=a.n()).done;)i=o.value,r("addPredefinedStatus",i)}catch(t){a.e(t)}finally{a.f()}case 8:case"end":return e.stop()}}),e)})),function(){var t=this,n=arguments;return new Promise((function(r,s){var a=e.apply(t,n);function o(t){$(a,r,s,o,i,"next",t)}function i(t){$(a,r,s,o,i,"throw",t)}o(void 0)}))})();var e}},L={state:{predefinedStatuses:[]},mutations:{addPredefinedStatus:function(t,e){t.predefinedStatuses.push(e)}},getters:{},actions:N};function q(t,e,n,r,s,a,o){try{var i=t[a](o),u=i.value}catch(t){return void n(t)}i.done?e(u):Promise.resolve(u).then(r,s)}function Z(t){return function(){var e=this,n=arguments;return new Promise((function(r,s){var a=t.apply(e,n);function o(t){q(a,r,s,o,i,"next",t)}function i(t){q(a,r,s,o,i,"throw",t)}o(void 0)}))}}var H=function(){var t=Z(regeneratorRuntime.mark((function t(){var e,n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e=(0,o.generateOcsUrl)("apps/user_status/api/v1/user_status"),t.next=3,d.default.get(e);case 3:return n=t.sent,t.abrupt("return",n.data.ocs.data);case 5:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}(),G=function(){var t=Z(regeneratorRuntime.mark((function t(e){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=(0,o.generateOcsUrl)("apps/user_status/api/v1/user_status/status"),t.next=3,d.default.put(n,{statusType:e});case 3:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),Q=function(){var t=Z(regeneratorRuntime.mark((function t(e){var n,r,s=arguments;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=s.length>1&&void 0!==s[1]?s[1]:null,r=(0,o.generateOcsUrl)("apps/user_status/api/v1/user_status/message/predefined?format=json"),t.next=4,d.default.put(r,{messageId:e,clearAt:n});case 4:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),W=function(){var t=Z(regeneratorRuntime.mark((function t(e){var n,r,s,a=arguments;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=a.length>1&&void 0!==a[1]?a[1]:null,r=a.length>2&&void 0!==a[2]?a[2]:null,s=(0,o.generateOcsUrl)("apps/user_status/api/v1/user_status/message/custom?format=json"),t.next=5,d.default.put(s,{message:e,statusIcon:n,clearAt:r});case 5:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),J=function(){var t=Z(regeneratorRuntime.mark((function t(){var e;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e=(0,o.generateOcsUrl)("apps/user_status/api/v1/user_status/message?format=json"),t.next=3,d.default.delete(e);case 3:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}(),K=r(64039),V=r(80351),X=r.n(V),Y=function(t){if(null===t)return null;var e=(0,K.n)();if("period"===t.type)return e.setSeconds(e.getSeconds()+t.time),Math.floor(e.getTime()/1e3);if("end-of"===t.type)switch(t.time){case"day":case"week":return Number(X()(e).endOf(t.time).format("X"))}return"_time"===t.type?t.time:null};function tt(t,e,n,r,s,a,o){try{var i=t[a](o),u=i.value}catch(t){return void n(t)}i.done?e(u):Promise.resolve(u).then(r,s)}function et(t){return function(){var e=this,n=arguments;return new Promise((function(r,s){var a=t.apply(e,n);function o(t){tt(a,r,s,o,i,"next",t)}function i(t){tt(a,r,s,o,i,"throw",t)}o(void 0)}))}}var nt={state:{status:null,statusIsUserDefined:null,message:null,icon:null,clearAt:null,messageIsPredefined:null,messageId:null},mutations:{setStatus:function(t,e){var n=e.statusType;t.status=n,t.statusIsUserDefined=!0},setPredefinedMessage:function(t,e){var n=e.messageId,r=e.clearAt,s=e.message,a=e.icon;t.messageId=n,t.messageIsPredefined=!0,t.message=s,t.icon=a,t.clearAt=r},setCustomMessage:function(t,e){var n=e.message,r=e.icon,s=e.clearAt;t.messageId=null,t.messageIsPredefined=!1,t.message=n,t.icon=r,t.clearAt=s},clearMessage:function(t){t.messageId=null,t.messageIsPredefined=!1,t.message=null,t.icon=null,t.clearAt=null},loadStatusFromServer:function(t,e){var n=e.status,r=e.statusIsUserDefined,s=e.message,a=e.icon,o=e.clearAt,i=e.messageIsPredefined,u=e.messageId;t.status=n,t.message=s,t.icon=a,void 0!==r&&(t.statusIsUserDefined=r),void 0!==o&&(t.clearAt=o),void 0!==i&&(t.messageIsPredefined=i),void 0!==u&&(t.messageId=u)}},getters:{},actions:{setStatus:function(t,e){return et(regeneratorRuntime.mark((function n(){var r,s,o,i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return s=t.commit,o=t.state,i=e.statusType,n.next=4,G(i);case 4:s("setStatus",{statusType:i}),(0,u.emit)("user_status:status.updated",{status:o.status,message:o.message,icon:o.icon,clearAt:o.clearAt,userId:null===(r=(0,a.getCurrentUser)())||void 0===r?void 0:r.uid});case 6:case"end":return n.stop()}}),n)})))()},setStatusFromObject:function(t,e){return et(regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:r=t.commit,t.state,r("loadStatusFromServer",e);case 2:case"end":return n.stop()}}),n)})))()},setPredefinedMessage:function(t,e){return et(regeneratorRuntime.mark((function n(){var r,s,o,i,c,l,d,m,f,p;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return s=t.commit,o=t.rootState,i=t.state,c=e.messageId,l=e.clearAt,d=Y(l),n.next=5,Q(c,d);case 5:m=o.predefinedStatuses.predefinedStatuses.find((function(t){return t.id===c})),f=m.message,p=m.icon,s("setPredefinedMessage",{messageId:c,clearAt:d,message:f,icon:p}),(0,u.emit)("user_status:status.updated",{status:i.status,message:i.message,icon:i.icon,clearAt:i.clearAt,userId:null===(r=(0,a.getCurrentUser)())||void 0===r?void 0:r.uid});case 9:case"end":return n.stop()}}),n)})))()},setCustomMessage:function(t,e){return et(regeneratorRuntime.mark((function n(){var r,s,o,i,c,l,d;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return s=t.commit,o=t.state,i=e.message,c=e.icon,l=e.clearAt,d=Y(l),n.next=5,W(i,c,d);case 5:s("setCustomMessage",{message:i,icon:c,clearAt:d}),(0,u.emit)("user_status:status.updated",{status:o.status,message:o.message,icon:o.icon,clearAt:o.clearAt,userId:null===(r=(0,a.getCurrentUser)())||void 0===r?void 0:r.uid});case 7:case"end":return n.stop()}}),n)})))()},clearMessage:function(t){return et(regeneratorRuntime.mark((function e(){var n,r,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.commit,s=t.state,e.next=3,J();case 3:r("clearMessage"),(0,u.emit)("user_status:status.updated",{status:s.status,message:s.message,icon:s.icon,clearAt:s.clearAt,userId:null===(n=(0,a.getCurrentUser)())||void 0===n?void 0:n.uid});case 5:case"end":return e.stop()}}),e)})))()},reFetchStatusFromServer:function(t){return et(regeneratorRuntime.mark((function e(){var n,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.commit,e.next=3,H();case 3:r=e.sent,n("loadStatusFromServer",r);case 5:case"end":return e.stop()}}),e)})))()},setStatusFromHeartbeat:function(t,e){return et(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:(0,t.commit)("loadStatusFromServer",e);case 2:case"end":return n.stop()}}),n)})))()},loadStatusFromInitialState:function(t){(0,t.commit)("loadStatusFromServer",(0,i.loadState)("user_status","status"))}}};s.default.use(R.ZP);var rt=new R.yh({modules:{predefinedStatuses:L,userStatus:nt},strict:!0}),st=r(28017),at=r.n(st);r.nc=btoa((0,a.getRequestToken)()),s.default.prototype.t=t,s.default.prototype.$t=t;var ot=document.getElementById("avatardiv-menu"),it=(0,i.loadState)("user_status","status"),ut={preloadedUserStatus:{message:it.message,icon:it.icon,status:it.status},user:ot.dataset.user,displayName:ot.dataset.displayname,url:ot.dataset.avatar,disableMenu:!0,disableTooltip:!0};new(s.default.extend(at()))({propsData:ut}).$mount("#avatardiv-menu"),new s.default({el:'li[data-id="user_status-menuitem"]',name:"UserStatusRoot",render:function(t){return t(E)},store:rt}),document.addEventListener("DOMContentLoaded",(function(){OCA.Dashboard&&OCA.Dashboard.registerStatus("status",(function(t){return new(s.default.extend(E))({propsData:{inline:!0},store:rt}).$mount(t)}))}))},84387:function(t,e,n){"use strict";var r=n(20629),s=n(26932);function a(t,e,n,r,s,a,o){try{var i=t[a](o),u=i.value}catch(t){return void n(t)}i.done?e(u):Promise.resolve(u).then(r,s)}function o(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function i(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?o(Object(n),!0).forEach((function(e){u(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function u(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}e.Z={computed:i(i({},(0,r.rn)({statusType:function(t){return t.userStatus.status},statusIsUserDefined:function(t){return t.userStatus.statusIsUserDefined},customIcon:function(t){return t.userStatus.icon},customMessage:function(t){return t.userStatus.message}})),{},{visibleMessage:function(){if(this.customIcon&&this.customMessage)return"".concat(this.customIcon," ").concat(this.customMessage);if(this.customMessage)return this.customMessage;if(this.statusIsUserDefined)switch(this.statusType){case"online":return this.$t("user_status","Online");case"away":return this.$t("user_status","Away");case"dnd":return this.$t("user_status","Do not disturb");case"invisible":return this.$t("user_status","Invisible");case"offline":return this.$t("user_status","Offline")}return this.$t("user_status","Set status")},statusIcon:function(){switch(this.statusType){case"online":return"icon-user-status-online";case"away":return"icon-user-status-away";case"dnd":return"icon-user-status-dnd";case"invisible":case"offline":return"icon-user-status-invisible"}return""}}),methods:{changeStatus:function(t){var e,n=this;return(e=regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,n.$store.dispatch("setStatus",{statusType:t});case 3:e.next=9;break;case 5:e.prev=5,e.t0=e.catch(0),(0,s.x2)(n.$t("user_status","There was an error saving the new status")),console.debug(e.t0);case 9:case"end":return e.stop()}}),e,null,[[0,5]])})),function(){var t=this,n=arguments;return new Promise((function(r,s){var o=e.apply(t,n);function i(t){a(o,r,s,i,u,"next",t)}function u(t){a(o,r,s,i,u,"throw",t)}i(void 0)}))})()}}}},64039:function(t,e,n){"use strict";n.d(e,{n:function(){return r}});var r=function(){return new Date}},79483:function(t,e,n){"use strict";var r=n(87537),s=n.n(r),a=n(23645),o=n.n(a)()(s());o.push([t.id,".user-status-menu-item__header[data-v-5879d4bb]{display:flex !important;flex-direction:column !important;width:auto !important;height:66px !important;padding:10px 12px 5px 12px !important;align-items:flex-start !important;color:var(--color-main-text) !important}.user-status-menu-item__header[data-v-5879d4bb]:not([href]){height:var(--header-menu-item-height) !important;color:var(--color-text-maxcontrast) !important;cursor:default !important}.user-status-menu-item__header:not([href]) *[data-v-5879d4bb]{cursor:default !important}.user-status-menu-item__header[data-v-5879d4bb]:not([href]):hover{background-color:rgba(0,0,0,0) !important}.user-status-menu-item__header-content[data-v-5879d4bb]{display:inline-flex !important;font-weight:bold !important;gap:0 10px !important;width:auto}.user-status-menu-item__header-content-displayname[data-v-5879d4bb]{width:auto}.user-status-menu-item__header-content-placeholder[data-v-5879d4bb]{width:16px !important;height:24px !important;margin-right:10px !important;visibility:hidden !important}.user-status-menu-item__header span[data-v-5879d4bb]{color:var(--color-text-maxcontrast) !important}.user-status-menu-item__toggle-icon[data-v-5879d4bb]{width:16px;height:16px;margin-right:10px;opacity:1 !important;background-size:16px}.user-status-menu-item__toggle--inline[data-v-5879d4bb]{width:auto;min-width:44px;height:44px;margin:0;border:0;border-radius:var(--border-radius-pill);background-color:var(--color-background-translucent);font-size:inherit;font-weight:normal;-webkit-backdrop-filter:var(--background-blur);backdrop-filter:var(--background-blur)}.user-status-menu-item__toggle--inline[data-v-5879d4bb]:active,.user-status-menu-item__toggle--inline[data-v-5879d4bb]:hover,.user-status-menu-item__toggle--inline[data-v-5879d4bb]:focus{background-color:var(--color-background-hover)}.user-status-menu-item__toggle--inline[data-v-5879d4bb]:focus{border:2px solid var(--color-main-text) !important}li[data-v-5879d4bb]{list-style-type:none}","",{version:3,sources:["webpack://./apps/user_status/src/UserStatus.vue"],names:[],mappings:"AAgOC,gDACC,uBAAA,CACA,gCAAA,CACA,qBAAA,CACA,sBAAA,CACA,qCAAA,CACA,iCAAA,CACA,uCAAA,CAEA,4DACC,gDAAA,CACA,8CAAA,CACA,yBAAA,CAEA,8DACC,yBAAA,CAGD,kEACC,yCAAA,CAIF,wDACC,8BAAA,CACA,2BAAA,CACA,qBAAA,CACA,UAAA,CAEA,oEACC,UAAA,CAGD,oEACC,qBAAA,CACA,sBAAA,CACA,4BAAA,CACA,4BAAA,CAIF,qDACC,8CAAA,CAKD,qDACC,UAAA,CACA,WAAA,CACA,iBAAA,CACA,oBAAA,CACA,oBAAA,CAID,wDACC,UAAA,CACA,cAAA,CACA,WAAA,CACA,QAAA,CACA,QAAA,CACA,uCAAA,CACA,oDAAA,CACA,iBAAA,CACA,kBAAA,CAEA,8CAAA,CACA,sCAAA,CAEA,2LAGC,8CAAA,CAED,8DACC,kDAAA,CAMJ,oBACC,oBAAA",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.user-status-menu-item {\n\t&__header {\n\t\tdisplay: flex !important;\n\t\tflex-direction: column !important;\n\t\twidth: auto !important;\n\t\theight: 44px * 1.5 !important;\n\t\tpadding: 10px 12px 5px 12px !important;\n\t\talign-items: flex-start !important;\n\t\tcolor: var(--color-main-text) !important;\n\n\t\t&:not([href]) {\n\t\t\theight: var(--header-menu-item-height) !important;\n\t\t\tcolor: var(--color-text-maxcontrast) !important;\n\t\t\tcursor: default !important;\n\n\t\t\t& * {\n\t\t\t\tcursor: default !important;\n\t\t\t}\n\n\t\t\t&:hover {\n\t\t\t\tbackground-color: transparent !important;\n\t\t\t}\n\t\t}\n\n\t\t&-content {\n\t\t\tdisplay: inline-flex !important;\n\t\t\tfont-weight: bold !important;\n\t\t\tgap: 0 10px !important;\n\t\t\twidth: auto;\n\n\t\t\t&-displayname {\n\t\t\t\twidth: auto;\n\t\t\t}\n\n\t\t\t&-placeholder {\n\t\t\t\twidth: 16px !important;\n\t\t\t\theight: 24px !important;\n\t\t\t\tmargin-right: 10px !important;\n\t\t\t\tvisibility: hidden !important;\n\t\t\t}\n\t\t}\n\n\t\tspan {\n\t\t\tcolor: var(--color-text-maxcontrast) !important;\n\t\t}\n\t}\n\n\t&__toggle {\n\t\t&-icon {\n\t\t\twidth: 16px;\n\t\t\theight: 16px;\n\t\t\tmargin-right: 10px;\n\t\t\topacity: 1 !important;\n\t\t\tbackground-size: 16px;\n\t\t}\n\n\t\t// In dashboard\n\t\t&--inline {\n\t\t\twidth: auto;\n\t\t\tmin-width: 44px;\n\t\t\theight: 44px;\n\t\t\tmargin: 0;\n\t\t\tborder: 0;\n\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\tbackground-color: var(--color-background-translucent);\n\t\t\tfont-size: inherit;\n\t\t\tfont-weight: normal;\n\n\t\t\t-webkit-backdrop-filter: var(--background-blur);\n\t\t\tbackdrop-filter: var(--background-blur);\n\n\t\t\t&:active,\n\t\t\t&:hover,\n\t\t\t&:focus {\n\t\t\t\tbackground-color: var(--color-background-hover);\n\t\t\t}\n\t\t\t&:focus {\n\t\t\t\tborder: 2px solid var(--color-main-text)!important;\n\t\t\t}\n\t\t}\n\t}\n}\n\nli {\n\tlist-style-type: none;\n}\n\n"],sourceRoot:""}]),e.Z=o}},a={};function o(t){var e=a[t];if(void 0!==e)return e.exports;var n=a[t]={id:t,loaded:!1,exports:{}};return s[t].call(n.exports,n,n.exports,o),n.loaded=!0,n.exports}o.m=s,o.amdD=function(){throw new Error("define cannot be used indirect")},o.amdO={},e=[],o.O=function(t,n,r,s){if(!n){var a=1/0;for(l=0;l<e.length;l++){n=e[l][0],r=e[l][1],s=e[l][2];for(var i=!0,u=0;u<n.length;u++)(!1&s||a>=s)&&Object.keys(o.O).every((function(t){return o.O[t](n[u])}))?n.splice(u--,1):(i=!1,s<a&&(a=s));if(i){e.splice(l--,1);var c=r();void 0!==c&&(t=c)}}return t}s=s||0;for(var l=e.length;l>0&&e[l-1][2]>s;l--)e[l]=e[l-1];e[l]=[n,r,s]},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,{a:e}),e},o.d=function(t,e){for(var n in e)o.o(e,n)&&!o.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},o.f={},o.e=function(t){return Promise.all(Object.keys(o.f).reduce((function(e,n){return o.f[n](t,e),e}),[]))},o.u=function(t){return"user-status-modal-"+t+".js?v=b2f975dbe50f5e918a41"},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n={},r="nextcloud:",o.l=function(t,e,s,a){if(n[t])n[t].push(e);else{var i,u;if(void 0!==s)for(var c=document.getElementsByTagName("script"),l=0;l<c.length;l++){var d=c[l];if(d.getAttribute("src")==t||d.getAttribute("data-webpack")==r+s){i=d;break}}i||(u=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,o.nc&&i.setAttribute("nonce",o.nc),i.setAttribute("data-webpack",r+s),i.src=t),n[t]=[e];var m=function(e,r){i.onerror=i.onload=null,clearTimeout(f);var s=n[t];if(delete n[t],i.parentNode&&i.parentNode.removeChild(i),s&&s.forEach((function(t){return t(r)})),e)return e(r)},f=setTimeout(m.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=m.bind(null,i.onerror),i.onload=m.bind(null,i.onload),u&&document.head.appendChild(i)}},o.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},o.j=2613,function(){var t;o.g.importScripts&&(t=o.g.location+"");var e=o.g.document;if(!t&&e&&(e.currentScript&&(t=e.currentScript.src),!t)){var n=e.getElementsByTagName("script");n.length&&(t=n[n.length-1].src)}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),o.p=t}(),function(){o.b=document.baseURI||self.location.href;var t={2613:0};o.f.j=function(e,n){var r=o.o(t,e)?t[e]:void 0;if(0!==r)if(r)n.push(r[2]);else{var s=new Promise((function(n,s){r=t[e]=[n,s]}));n.push(r[2]=s);var a=o.p+o.u(e),i=new Error;o.l(a,(function(n){if(o.o(t,e)&&(0!==(r=t[e])&&(t[e]=void 0),r)){var s=n&&("load"===n.type?"missing":n.type),a=n&&n.target&&n.target.src;i.message="Loading chunk "+e+" failed.\n("+s+": "+a+")",i.name="ChunkLoadError",i.type=s,i.request=a,r[1](i)}}),"chunk-"+e,e)}},o.O.j=function(e){return 0===t[e]};var e=function(e,n){var r,s,a=n[0],i=n[1],u=n[2],c=0;if(a.some((function(e){return 0!==t[e]}))){for(r in i)o.o(i,r)&&(o.m[r]=i[r]);if(u)var l=u(o)}for(e&&e(n);c<a.length;c++)s=a[c],o.o(t,s)&&t[s]&&t[s][0](),t[s]=0;return o.O(l)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))}();var i=o.O(void 0,[7874],(function(){return o(40814)}));i=o.O(i)}();
-//# sourceMappingURL=user_status-menu.js.map?v=a0fab0c873cf1f3faf88 \ No newline at end of file
+!function(){var e,n,r,s={93365:function(t,e,n){var r={"./af":36026,"./af.js":36026,"./ar":28093,"./ar-dz":41943,"./ar-dz.js":41943,"./ar-kw":23969,"./ar-kw.js":23969,"./ar-ly":40594,"./ar-ly.js":40594,"./ar-ma":18369,"./ar-ma.js":18369,"./ar-sa":32579,"./ar-sa.js":32579,"./ar-tn":76442,"./ar-tn.js":76442,"./ar.js":28093,"./az":86425,"./az.js":86425,"./be":22004,"./be.js":22004,"./bg":42982,"./bg.js":42982,"./bm":21067,"./bm.js":21067,"./bn":8366,"./bn-bd":63837,"./bn-bd.js":63837,"./bn.js":8366,"./bo":95040,"./bo.js":95040,"./br":521,"./br.js":521,"./bs":83242,"./bs.js":83242,"./ca":73046,"./ca.js":73046,"./cs":25794,"./cs.js":25794,"./cv":28231,"./cv.js":28231,"./cy":10927,"./cy.js":10927,"./da":42832,"./da.js":42832,"./de":29415,"./de-at":3331,"./de-at.js":3331,"./de-ch":45524,"./de-ch.js":45524,"./de.js":29415,"./dv":44700,"./dv.js":44700,"./el":88752,"./el.js":88752,"./en-au":90444,"./en-au.js":90444,"./en-ca":65959,"./en-ca.js":65959,"./en-gb":62762,"./en-gb.js":62762,"./en-ie":40909,"./en-ie.js":40909,"./en-il":79909,"./en-il.js":79909,"./en-in":87942,"./en-in.js":87942,"./en-nz":75200,"./en-nz.js":75200,"./en-sg":21415,"./en-sg.js":21415,"./eo":27447,"./eo.js":27447,"./es":86756,"./es-do":47049,"./es-do.js":47049,"./es-mx":15915,"./es-mx.js":15915,"./es-us":57133,"./es-us.js":57133,"./es.js":86756,"./et":72182,"./et.js":72182,"./eu":14419,"./eu.js":14419,"./fa":2916,"./fa.js":2916,"./fi":49964,"./fi.js":49964,"./fil":16448,"./fil.js":16448,"./fo":26094,"./fo.js":26094,"./fr":35833,"./fr-ca":56994,"./fr-ca.js":56994,"./fr-ch":2740,"./fr-ch.js":2740,"./fr.js":35833,"./fy":69542,"./fy.js":69542,"./ga":93264,"./ga.js":93264,"./gd":77457,"./gd.js":77457,"./gl":83043,"./gl.js":83043,"./gom-deva":24034,"./gom-deva.js":24034,"./gom-latn":28379,"./gom-latn.js":28379,"./gu":406,"./gu.js":406,"./he":73219,"./he.js":73219,"./hi":99834,"./hi.js":99834,"./hr":28754,"./hr.js":28754,"./hu":93945,"./hu.js":93945,"./hy-am":81319,"./hy-am.js":81319,"./id":24875,"./id.js":24875,"./is":23724,"./is.js":23724,"./it":79906,"./it-ch":34303,"./it-ch.js":34303,"./it.js":79906,"./ja":77105,"./ja.js":77105,"./jv":15026,"./jv.js":15026,"./ka":67416,"./ka.js":67416,"./kk":79734,"./kk.js":79734,"./km":60757,"./km.js":60757,"./kn":58369,"./kn.js":58369,"./ko":77687,"./ko.js":77687,"./ku":95544,"./ku.js":95544,"./ky":85431,"./ky.js":85431,"./lb":13613,"./lb.js":13613,"./lo":34252,"./lo.js":34252,"./lt":84619,"./lt.js":84619,"./lv":93760,"./lv.js":93760,"./me":93393,"./me.js":93393,"./mi":12369,"./mi.js":12369,"./mk":48664,"./mk.js":48664,"./ml":23099,"./ml.js":23099,"./mn":98539,"./mn.js":98539,"./mr":778,"./mr.js":778,"./ms":39970,"./ms-my":82625,"./ms-my.js":82625,"./ms.js":39970,"./mt":15714,"./mt.js":15714,"./my":53055,"./my.js":53055,"./nb":73945,"./nb.js":73945,"./ne":63645,"./ne.js":63645,"./nl":4829,"./nl-be":12823,"./nl-be.js":12823,"./nl.js":4829,"./nn":23756,"./nn.js":23756,"./oc-lnc":41228,"./oc-lnc.js":41228,"./pa-in":97877,"./pa-in.js":97877,"./pl":53066,"./pl.js":53066,"./pt":28677,"./pt-br":81592,"./pt-br.js":81592,"./pt.js":28677,"./ro":32722,"./ro.js":32722,"./ru":59138,"./ru.js":59138,"./sd":32568,"./sd.js":32568,"./se":49753,"./se.js":49753,"./si":58024,"./si.js":58024,"./sk":31058,"./sk.js":31058,"./sl":43452,"./sl.js":43452,"./sq":2795,"./sq.js":2795,"./sr":26976,"./sr-cyrl":38819,"./sr-cyrl.js":38819,"./sr.js":26976,"./ss":7467,"./ss.js":7467,"./sv":42787,"./sv.js":42787,"./sw":80298,"./sw.js":80298,"./ta":57532,"./ta.js":57532,"./te":76076,"./te.js":76076,"./tet":40452,"./tet.js":40452,"./tg":64794,"./tg.js":64794,"./th":48245,"./th.js":48245,"./tk":8870,"./tk.js":8870,"./tl-ph":36056,"./tl-ph.js":36056,"./tlh":15249,"./tlh.js":15249,"./tr":22053,"./tr.js":22053,"./tzl":39871,"./tzl.js":39871,"./tzm":39574,"./tzm-latn":19210,"./tzm-latn.js":19210,"./tzm.js":39574,"./ug-cn":91532,"./ug-cn.js":91532,"./uk":11432,"./uk.js":11432,"./ur":88523,"./ur.js":88523,"./uz":54958,"./uz-latn":68735,"./uz-latn.js":68735,"./uz.js":54958,"./vi":83398,"./vi.js":83398,"./x-pseudo":56665,"./x-pseudo.js":56665,"./yo":11642,"./yo.js":11642,"./zh-cn":5462,"./zh-cn.js":5462,"./zh-hk":92530,"./zh-hk.js":92530,"./zh-mo":41650,"./zh-mo.js":41650,"./zh-tw":97333,"./zh-tw.js":97333};function s(t){var e=a(t);return n(e)}function a(t){if(!n.o(r,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return r[t]}s.keys=function(){return Object.keys(r)},s.resolve=a,t.exports=s,s.id=93365},40814:function(e,n,r){"use strict";var s=r(20144),a=r(22200),o=r(79753),i=r(16453),u=r(74854),c=r(20296),l=r.n(c),d=r(4820);function m(t,e,n,r,s,a,o){try{var i=t[a](o),u=i.value}catch(t){return void n(t)}i.done?e(u):Promise.resolve(u).then(r,s)}var f=function(){var t,e=(t=regeneratorRuntime.mark((function t(e){var n,r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=(0,o.generateUrl)("/apps/user_status/heartbeat"),t.next=3,d.default.put(n,{status:e?"away":"online"});case 3:return r=t.sent,t.abrupt("return",r.data);case 5:case"end":return t.stop()}}),t)})),function(){var e=this,n=arguments;return new Promise((function(r,s){var a=t.apply(e,n);function o(t){m(a,r,s,o,i,"next",t)}function i(t){m(a,r,s,o,i,"throw",t)}o(void 0)}))});return function(t){return e.apply(this,arguments)}}(),p=r(84387);function v(t,e,n,r,s,a,o){try{var i=t[a](o),u=i.value}catch(t){return void n(t)}i.done?e(u):Promise.resolve(u).then(r,s)}var h=(0,i.loadState)("user_status","profileEnabled",!1).profileEnabled,g={name:"UserStatus",components:{SetStatusModal:function(){return Promise.all([r.e(7874),r.e(8299)]).then(r.bind(r,37323))}},mixins:[p.Z],props:{inline:{type:Boolean,default:!1}},data:function(){return{displayName:(0,a.getCurrentUser)().displayName,heartbeatInterval:null,isAway:!1,isModalOpen:!1,loadingProfilePage:!1,mouseMoveListener:null,profileEnabled:h,setAwayTimeout:null}},computed:{profilePageLink:function(){return this.profileEnabled?(0,o.generateUrl)("/u/{userId}",{userId:(0,a.getCurrentUser)().uid}):null}},mounted:function(){var t=this;(0,u.subscribe)("settings:display-name:updated",this.handleDisplayNameUpdate),(0,u.subscribe)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate),this.$store.dispatch("loadStatusFromInitialState"),OC.config.session_keepalive&&(this.heartbeatInterval=setInterval(this._backgroundHeartbeat.bind(this),3e5),this.setAwayTimeout=function(){t.isAway=!0},this.mouseMoveListener=l()((function(){var e=t.isAway;t.isAway=!1,clearTimeout(t.setAwayTimeout),setTimeout(t.setAwayTimeout,12e4),e&&t._backgroundHeartbeat()}),2e3,!0),window.addEventListener("mousemove",this.mouseMoveListener,{capture:!0,passive:!0}),this._backgroundHeartbeat()),(0,u.subscribe)("user_status:status.updated",this.handleUserStatusUpdated)},beforeDestroy:function(){(0,u.unsubscribe)("settings:display-name:updated",this.handleDisplayNameUpdate),(0,u.unsubscribe)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate),window.removeEventListener("mouseMove",this.mouseMoveListener),clearInterval(this.heartbeatInterval),(0,u.unsubscribe)("user_status:status.updated",this.handleUserStatusUpdated)},methods:{handleDisplayNameUpdate:function(t){this.displayName=t},handleProfileEnabledUpdate:function(t){this.profileEnabled=t},loadProfilePage:function(){this.profileEnabled&&(this.loadingProfilePage=!0)},openModal:function(){this.isModalOpen=!0},closeModal:function(){this.isModalOpen=!1},_backgroundHeartbeat:function(){var t,e=this;return(t=regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,f(e.isAway);case 3:if(null==(n=t.sent)||!n.userId){t.next=8;break}e.$store.dispatch("setStatusFromHeartbeat",n),t.next=10;break;case 8:return t.next=10,e.$store.dispatch("reFetchStatusFromServer");case 10:t.next=15;break;case 12:t.prev=12,t.t0=t.catch(0),console.debug("Failed sending heartbeat, got: "+(null===(r=t.t0.response)||void 0===r?void 0:r.status));case 15:case"end":return t.stop()}}),t,null,[[0,12]])})),function(){var e=this,n=arguments;return new Promise((function(r,s){var a=t.apply(e,n);function o(t){v(a,r,s,o,i,"next",t)}function i(t){v(a,r,s,o,i,"throw",t)}o(void 0)}))})()},handleUserStatusUpdated:function(t){OC.getCurrentUser().uid===t.userId&&this.$store.dispatch("setStatusFromObject",{status:t.status,icon:t.icon,message:t.message})}}},A=g,b=r(93379),j=r.n(b),y=r(7795),w=r.n(y),C=r(90569),x=r.n(C),_=r(3565),k=r.n(_),S=r(19216),P=r.n(S),O=r(44589),I=r.n(O),U=r(79483),D={};D.styleTagTransform=I(),D.setAttributes=k(),D.insert=x().bind(null,"head"),D.domAPI=w(),D.insertStyleElement=P(),j()(U.Z,D),U.Z&&U.Z.locals&&U.Z.locals;var M=(0,r(51900).Z)(A,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("li",[n("div",{staticClass:"user-status-menu-item"},[t.inline?t._e():n("a",{staticClass:"user-status-menu-item__header",attrs:{href:t.profilePageLink},on:{click:t.loadProfilePage}},[n("div",{staticClass:"user-status-menu-item__header-content"},[n("div",{staticClass:"user-status-menu-item__header-content-displayname"},[t._v(t._s(t.displayName))]),t._v(" "),t.loadingProfilePage?n("div",{staticClass:"icon-loading-small"}):n("div",{staticClass:"user-status-menu-item__header-content-placeholder"})]),t._v(" "),t.profileEnabled?n("div",[t._v("\n\t\t\t\t"+t._s(t.t("user_status","View profile"))+"\n\t\t\t")]):t._e()]),t._v(" "),n(t.inline?"button":"a",{tag:"toggle",staticClass:"user-status-menu-item__toggle",class:{"user-status-menu-item__toggle--inline":t.inline},attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),t.openModal.apply(null,arguments)}}},[n("span",{staticClass:"user-status-menu-item__toggle-icon",class:t.statusIcon}),t._v("\n\t\t\t"+t._s(t.visibleMessage)+"\n\t\t")])],1),t._v(" "),t.isModalOpen?n("SetStatusModal",{on:{close:t.closeModal}}):t._e()],1)}),[],!1,null,"5879d4bb",null),E=M.exports,R=r(20629);function T(t,e,n,r,s,a,o){try{var i=t[a](o),u=i.value}catch(t){return void n(t)}i.done?e(u):Promise.resolve(u).then(r,s)}var z=function(){var t,e=(t=regeneratorRuntime.mark((function t(){var e,n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e=(0,o.generateOcsUrl)("apps/user_status/api/v1/predefined_statuses?format=json"),t.next=3,d.default.get(e);case 3:return n=t.sent,t.abrupt("return",n.data.ocs.data);case 5:case"end":return t.stop()}}),t)})),function(){var e=this,n=arguments;return new Promise((function(r,s){var a=t.apply(e,n);function o(t){T(a,r,s,o,i,"next",t)}function i(t){T(a,r,s,o,i,"throw",t)}o(void 0)}))});return function(){return e.apply(this,arguments)}}();function B(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(t){if("string"==typeof t)return F(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?F(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,s=function(){};return{s:s,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:s}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,i=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return o=t.done,t},e:function(t){i=!0,a=t},f:function(){try{o||null==n.return||n.return()}finally{if(i)throw a}}}}function F(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function $(t,e,n,r,s,a,o){try{var i=t[a](o),u=i.value}catch(t){return void n(t)}i.done?e(u):Promise.resolve(u).then(r,s)}var N={loadAllPredefinedStatuses:function(t){return(e=regeneratorRuntime.mark((function e(){var n,r,s,a,o,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.state,r=t.commit,!(n.predefinedStatuses.length>0)){e.next=3;break}return e.abrupt("return");case 3:return e.next=5,z();case 5:s=e.sent,a=B(s);try{for(a.s();!(o=a.n()).done;)i=o.value,r("addPredefinedStatus",i)}catch(t){a.e(t)}finally{a.f()}case 8:case"end":return e.stop()}}),e)})),function(){var t=this,n=arguments;return new Promise((function(r,s){var a=e.apply(t,n);function o(t){$(a,r,s,o,i,"next",t)}function i(t){$(a,r,s,o,i,"throw",t)}o(void 0)}))})();var e}},L={state:{predefinedStatuses:[]},mutations:{addPredefinedStatus:function(t,e){t.predefinedStatuses.push(e)}},getters:{},actions:N};function q(t,e,n,r,s,a,o){try{var i=t[a](o),u=i.value}catch(t){return void n(t)}i.done?e(u):Promise.resolve(u).then(r,s)}function Z(t){return function(){var e=this,n=arguments;return new Promise((function(r,s){var a=t.apply(e,n);function o(t){q(a,r,s,o,i,"next",t)}function i(t){q(a,r,s,o,i,"throw",t)}o(void 0)}))}}var H=function(){var t=Z(regeneratorRuntime.mark((function t(){var e,n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e=(0,o.generateOcsUrl)("apps/user_status/api/v1/user_status"),t.next=3,d.default.get(e);case 3:return n=t.sent,t.abrupt("return",n.data.ocs.data);case 5:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}(),G=function(){var t=Z(regeneratorRuntime.mark((function t(e){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=(0,o.generateOcsUrl)("apps/user_status/api/v1/user_status/status"),t.next=3,d.default.put(n,{statusType:e});case 3:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),Q=function(){var t=Z(regeneratorRuntime.mark((function t(e){var n,r,s=arguments;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=s.length>1&&void 0!==s[1]?s[1]:null,r=(0,o.generateOcsUrl)("apps/user_status/api/v1/user_status/message/predefined?format=json"),t.next=4,d.default.put(r,{messageId:e,clearAt:n});case 4:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),W=function(){var t=Z(regeneratorRuntime.mark((function t(e){var n,r,s,a=arguments;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=a.length>1&&void 0!==a[1]?a[1]:null,r=a.length>2&&void 0!==a[2]?a[2]:null,s=(0,o.generateOcsUrl)("apps/user_status/api/v1/user_status/message/custom?format=json"),t.next=5,d.default.put(s,{message:e,statusIcon:n,clearAt:r});case 5:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),J=function(){var t=Z(regeneratorRuntime.mark((function t(){var e;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e=(0,o.generateOcsUrl)("apps/user_status/api/v1/user_status/message?format=json"),t.next=3,d.default.delete(e);case 3:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}(),K=r(64039),V=r(80351),X=r.n(V),Y=function(t){if(null===t)return null;var e=(0,K.n)();if("period"===t.type)return e.setSeconds(e.getSeconds()+t.time),Math.floor(e.getTime()/1e3);if("end-of"===t.type)switch(t.time){case"day":case"week":return Number(X()(e).endOf(t.time).format("X"))}return"_time"===t.type?t.time:null};function tt(t,e,n,r,s,a,o){try{var i=t[a](o),u=i.value}catch(t){return void n(t)}i.done?e(u):Promise.resolve(u).then(r,s)}function et(t){return function(){var e=this,n=arguments;return new Promise((function(r,s){var a=t.apply(e,n);function o(t){tt(a,r,s,o,i,"next",t)}function i(t){tt(a,r,s,o,i,"throw",t)}o(void 0)}))}}var nt={state:{status:null,statusIsUserDefined:null,message:null,icon:null,clearAt:null,messageIsPredefined:null,messageId:null},mutations:{setStatus:function(t,e){var n=e.statusType;t.status=n,t.statusIsUserDefined=!0},setPredefinedMessage:function(t,e){var n=e.messageId,r=e.clearAt,s=e.message,a=e.icon;t.messageId=n,t.messageIsPredefined=!0,t.message=s,t.icon=a,t.clearAt=r},setCustomMessage:function(t,e){var n=e.message,r=e.icon,s=e.clearAt;t.messageId=null,t.messageIsPredefined=!1,t.message=n,t.icon=r,t.clearAt=s},clearMessage:function(t){t.messageId=null,t.messageIsPredefined=!1,t.message=null,t.icon=null,t.clearAt=null},loadStatusFromServer:function(t,e){var n=e.status,r=e.statusIsUserDefined,s=e.message,a=e.icon,o=e.clearAt,i=e.messageIsPredefined,u=e.messageId;t.status=n,t.message=s,t.icon=a,void 0!==r&&(t.statusIsUserDefined=r),void 0!==o&&(t.clearAt=o),void 0!==i&&(t.messageIsPredefined=i),void 0!==u&&(t.messageId=u)}},getters:{},actions:{setStatus:function(t,e){return et(regeneratorRuntime.mark((function n(){var r,s,o,i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return s=t.commit,o=t.state,i=e.statusType,n.next=4,G(i);case 4:s("setStatus",{statusType:i}),(0,u.emit)("user_status:status.updated",{status:o.status,message:o.message,icon:o.icon,clearAt:o.clearAt,userId:null===(r=(0,a.getCurrentUser)())||void 0===r?void 0:r.uid});case 6:case"end":return n.stop()}}),n)})))()},setStatusFromObject:function(t,e){return et(regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:r=t.commit,t.state,r("loadStatusFromServer",e);case 2:case"end":return n.stop()}}),n)})))()},setPredefinedMessage:function(t,e){return et(regeneratorRuntime.mark((function n(){var r,s,o,i,c,l,d,m,f,p;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return s=t.commit,o=t.rootState,i=t.state,c=e.messageId,l=e.clearAt,d=Y(l),n.next=5,Q(c,d);case 5:m=o.predefinedStatuses.predefinedStatuses.find((function(t){return t.id===c})),f=m.message,p=m.icon,s("setPredefinedMessage",{messageId:c,clearAt:d,message:f,icon:p}),(0,u.emit)("user_status:status.updated",{status:i.status,message:i.message,icon:i.icon,clearAt:i.clearAt,userId:null===(r=(0,a.getCurrentUser)())||void 0===r?void 0:r.uid});case 9:case"end":return n.stop()}}),n)})))()},setCustomMessage:function(t,e){return et(regeneratorRuntime.mark((function n(){var r,s,o,i,c,l,d;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return s=t.commit,o=t.state,i=e.message,c=e.icon,l=e.clearAt,d=Y(l),n.next=5,W(i,c,d);case 5:s("setCustomMessage",{message:i,icon:c,clearAt:d}),(0,u.emit)("user_status:status.updated",{status:o.status,message:o.message,icon:o.icon,clearAt:o.clearAt,userId:null===(r=(0,a.getCurrentUser)())||void 0===r?void 0:r.uid});case 7:case"end":return n.stop()}}),n)})))()},clearMessage:function(t){return et(regeneratorRuntime.mark((function e(){var n,r,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.commit,s=t.state,e.next=3,J();case 3:r("clearMessage"),(0,u.emit)("user_status:status.updated",{status:s.status,message:s.message,icon:s.icon,clearAt:s.clearAt,userId:null===(n=(0,a.getCurrentUser)())||void 0===n?void 0:n.uid});case 5:case"end":return e.stop()}}),e)})))()},reFetchStatusFromServer:function(t){return et(regeneratorRuntime.mark((function e(){var n,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.commit,e.next=3,H();case 3:r=e.sent,n("loadStatusFromServer",r);case 5:case"end":return e.stop()}}),e)})))()},setStatusFromHeartbeat:function(t,e){return et(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:(0,t.commit)("loadStatusFromServer",e);case 2:case"end":return n.stop()}}),n)})))()},loadStatusFromInitialState:function(t){(0,t.commit)("loadStatusFromServer",(0,i.loadState)("user_status","status"))}}};s.default.use(R.ZP);var rt=new R.yh({modules:{predefinedStatuses:L,userStatus:nt},strict:!0}),st=r(28017),at=r.n(st);r.nc=btoa((0,a.getRequestToken)()),s.default.prototype.t=t,s.default.prototype.$t=t;var ot=document.getElementById("avatardiv-menu"),it=(0,i.loadState)("user_status","status"),ut={preloadedUserStatus:{message:it.message,icon:it.icon,status:it.status},user:ot.dataset.user,displayName:ot.dataset.displayname,url:ot.dataset.avatar,disableMenu:!0,disableTooltip:!0};new(s.default.extend(at()))({propsData:ut}).$mount("#avatardiv-menu"),new s.default({el:'li[data-id="user_status-menuitem"]',name:"UserStatusRoot",render:function(t){return t(E)},store:rt}),document.addEventListener("DOMContentLoaded",(function(){OCA.Dashboard&&OCA.Dashboard.registerStatus("status",(function(t){return new(s.default.extend(E))({propsData:{inline:!0},store:rt}).$mount(t)}))}))},84387:function(t,e,n){"use strict";var r=n(20629),s=n(26932);function a(t,e,n,r,s,a,o){try{var i=t[a](o),u=i.value}catch(t){return void n(t)}i.done?e(u):Promise.resolve(u).then(r,s)}function o(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function i(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?o(Object(n),!0).forEach((function(e){u(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function u(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}e.Z={computed:i(i({},(0,r.rn)({statusType:function(t){return t.userStatus.status},statusIsUserDefined:function(t){return t.userStatus.statusIsUserDefined},customIcon:function(t){return t.userStatus.icon},customMessage:function(t){return t.userStatus.message}})),{},{visibleMessage:function(){if(this.customIcon&&this.customMessage)return"".concat(this.customIcon," ").concat(this.customMessage);if(this.customMessage)return this.customMessage;if(this.statusIsUserDefined)switch(this.statusType){case"online":return this.$t("user_status","Online");case"away":return this.$t("user_status","Away");case"dnd":return this.$t("user_status","Do not disturb");case"invisible":return this.$t("user_status","Invisible");case"offline":return this.$t("user_status","Offline")}return this.$t("user_status","Set status")},statusIcon:function(){switch(this.statusType){case"online":return"icon-user-status-online";case"away":return"icon-user-status-away";case"dnd":return"icon-user-status-dnd";case"invisible":case"offline":return"icon-user-status-invisible"}return""}}),methods:{changeStatus:function(t){var e,n=this;return(e=regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,n.$store.dispatch("setStatus",{statusType:t});case 3:e.next=9;break;case 5:e.prev=5,e.t0=e.catch(0),(0,s.x2)(n.$t("user_status","There was an error saving the new status")),console.debug(e.t0);case 9:case"end":return e.stop()}}),e,null,[[0,5]])})),function(){var t=this,n=arguments;return new Promise((function(r,s){var o=e.apply(t,n);function i(t){a(o,r,s,i,u,"next",t)}function u(t){a(o,r,s,i,u,"throw",t)}i(void 0)}))})()}}}},64039:function(t,e,n){"use strict";n.d(e,{n:function(){return r}});var r=function(){return new Date}},79483:function(t,e,n){"use strict";var r=n(87537),s=n.n(r),a=n(23645),o=n.n(a)()(s());o.push([t.id,".user-status-menu-item__header[data-v-5879d4bb]{display:flex !important;flex-direction:column !important;width:auto !important;height:66px !important;padding:10px 12px 5px 12px !important;align-items:flex-start !important;color:var(--color-main-text) !important}.user-status-menu-item__header[data-v-5879d4bb]:not([href]){height:var(--header-menu-item-height) !important;color:var(--color-text-maxcontrast) !important;cursor:default !important}.user-status-menu-item__header:not([href]) *[data-v-5879d4bb]{cursor:default !important}.user-status-menu-item__header[data-v-5879d4bb]:not([href]):hover{background-color:rgba(0,0,0,0) !important}.user-status-menu-item__header-content[data-v-5879d4bb]{display:inline-flex !important;font-weight:bold !important;gap:0 10px !important;width:auto}.user-status-menu-item__header-content-displayname[data-v-5879d4bb]{width:auto}.user-status-menu-item__header-content-placeholder[data-v-5879d4bb]{width:16px !important;height:24px !important;margin-right:10px !important;visibility:hidden !important}.user-status-menu-item__header span[data-v-5879d4bb]{color:var(--color-text-maxcontrast) !important}.user-status-menu-item__toggle-icon[data-v-5879d4bb]{width:16px;height:16px;margin-right:10px;opacity:1 !important;background-size:16px}.user-status-menu-item__toggle--inline[data-v-5879d4bb]{width:auto;min-width:44px;height:44px;margin:0;border:0;border-radius:var(--border-radius-pill);background-color:var(--color-background-translucent);font-size:inherit;font-weight:normal;-webkit-backdrop-filter:var(--background-blur);backdrop-filter:var(--background-blur)}.user-status-menu-item__toggle--inline[data-v-5879d4bb]:active,.user-status-menu-item__toggle--inline[data-v-5879d4bb]:hover,.user-status-menu-item__toggle--inline[data-v-5879d4bb]:focus{background-color:var(--color-background-hover)}.user-status-menu-item__toggle--inline[data-v-5879d4bb]:focus{border:2px solid var(--color-main-text) !important}li[data-v-5879d4bb]{list-style-type:none}","",{version:3,sources:["webpack://./apps/user_status/src/UserStatus.vue"],names:[],mappings:"AAgOC,gDACC,uBAAA,CACA,gCAAA,CACA,qBAAA,CACA,sBAAA,CACA,qCAAA,CACA,iCAAA,CACA,uCAAA,CAEA,4DACC,gDAAA,CACA,8CAAA,CACA,yBAAA,CAEA,8DACC,yBAAA,CAGD,kEACC,yCAAA,CAIF,wDACC,8BAAA,CACA,2BAAA,CACA,qBAAA,CACA,UAAA,CAEA,oEACC,UAAA,CAGD,oEACC,qBAAA,CACA,sBAAA,CACA,4BAAA,CACA,4BAAA,CAIF,qDACC,8CAAA,CAKD,qDACC,UAAA,CACA,WAAA,CACA,iBAAA,CACA,oBAAA,CACA,oBAAA,CAID,wDACC,UAAA,CACA,cAAA,CACA,WAAA,CACA,QAAA,CACA,QAAA,CACA,uCAAA,CACA,oDAAA,CACA,iBAAA,CACA,kBAAA,CAEA,8CAAA,CACA,sCAAA,CAEA,2LAGC,8CAAA,CAED,8DACC,kDAAA,CAMJ,oBACC,oBAAA",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.user-status-menu-item {\n\t&__header {\n\t\tdisplay: flex !important;\n\t\tflex-direction: column !important;\n\t\twidth: auto !important;\n\t\theight: 44px * 1.5 !important;\n\t\tpadding: 10px 12px 5px 12px !important;\n\t\talign-items: flex-start !important;\n\t\tcolor: var(--color-main-text) !important;\n\n\t\t&:not([href]) {\n\t\t\theight: var(--header-menu-item-height) !important;\n\t\t\tcolor: var(--color-text-maxcontrast) !important;\n\t\t\tcursor: default !important;\n\n\t\t\t& * {\n\t\t\t\tcursor: default !important;\n\t\t\t}\n\n\t\t\t&:hover {\n\t\t\t\tbackground-color: transparent !important;\n\t\t\t}\n\t\t}\n\n\t\t&-content {\n\t\t\tdisplay: inline-flex !important;\n\t\t\tfont-weight: bold !important;\n\t\t\tgap: 0 10px !important;\n\t\t\twidth: auto;\n\n\t\t\t&-displayname {\n\t\t\t\twidth: auto;\n\t\t\t}\n\n\t\t\t&-placeholder {\n\t\t\t\twidth: 16px !important;\n\t\t\t\theight: 24px !important;\n\t\t\t\tmargin-right: 10px !important;\n\t\t\t\tvisibility: hidden !important;\n\t\t\t}\n\t\t}\n\n\t\tspan {\n\t\t\tcolor: var(--color-text-maxcontrast) !important;\n\t\t}\n\t}\n\n\t&__toggle {\n\t\t&-icon {\n\t\t\twidth: 16px;\n\t\t\theight: 16px;\n\t\t\tmargin-right: 10px;\n\t\t\topacity: 1 !important;\n\t\t\tbackground-size: 16px;\n\t\t}\n\n\t\t// In dashboard\n\t\t&--inline {\n\t\t\twidth: auto;\n\t\t\tmin-width: 44px;\n\t\t\theight: 44px;\n\t\t\tmargin: 0;\n\t\t\tborder: 0;\n\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\tbackground-color: var(--color-background-translucent);\n\t\t\tfont-size: inherit;\n\t\t\tfont-weight: normal;\n\n\t\t\t-webkit-backdrop-filter: var(--background-blur);\n\t\t\tbackdrop-filter: var(--background-blur);\n\n\t\t\t&:active,\n\t\t\t&:hover,\n\t\t\t&:focus {\n\t\t\t\tbackground-color: var(--color-background-hover);\n\t\t\t}\n\t\t\t&:focus {\n\t\t\t\tborder: 2px solid var(--color-main-text)!important;\n\t\t\t}\n\t\t}\n\t}\n}\n\nli {\n\tlist-style-type: none;\n}\n\n"],sourceRoot:""}]),e.Z=o}},a={};function o(t){var e=a[t];if(void 0!==e)return e.exports;var n=a[t]={id:t,loaded:!1,exports:{}};return s[t].call(n.exports,n,n.exports,o),n.loaded=!0,n.exports}o.m=s,o.amdD=function(){throw new Error("define cannot be used indirect")},o.amdO={},e=[],o.O=function(t,n,r,s){if(!n){var a=1/0;for(l=0;l<e.length;l++){n=e[l][0],r=e[l][1],s=e[l][2];for(var i=!0,u=0;u<n.length;u++)(!1&s||a>=s)&&Object.keys(o.O).every((function(t){return o.O[t](n[u])}))?n.splice(u--,1):(i=!1,s<a&&(a=s));if(i){e.splice(l--,1);var c=r();void 0!==c&&(t=c)}}return t}s=s||0;for(var l=e.length;l>0&&e[l-1][2]>s;l--)e[l]=e[l-1];e[l]=[n,r,s]},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,{a:e}),e},o.d=function(t,e){for(var n in e)o.o(e,n)&&!o.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},o.f={},o.e=function(t){return Promise.all(Object.keys(o.f).reduce((function(e,n){return o.f[n](t,e),e}),[]))},o.u=function(t){return"user-status-modal-"+t+".js?v=b2f975dbe50f5e918a41"},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n={},r="nextcloud:",o.l=function(t,e,s,a){if(n[t])n[t].push(e);else{var i,u;if(void 0!==s)for(var c=document.getElementsByTagName("script"),l=0;l<c.length;l++){var d=c[l];if(d.getAttribute("src")==t||d.getAttribute("data-webpack")==r+s){i=d;break}}i||(u=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,o.nc&&i.setAttribute("nonce",o.nc),i.setAttribute("data-webpack",r+s),i.src=t),n[t]=[e];var m=function(e,r){i.onerror=i.onload=null,clearTimeout(f);var s=n[t];if(delete n[t],i.parentNode&&i.parentNode.removeChild(i),s&&s.forEach((function(t){return t(r)})),e)return e(r)},f=setTimeout(m.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=m.bind(null,i.onerror),i.onload=m.bind(null,i.onload),u&&document.head.appendChild(i)}},o.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},o.j=2613,function(){var t;o.g.importScripts&&(t=o.g.location+"");var e=o.g.document;if(!t&&e&&(e.currentScript&&(t=e.currentScript.src),!t)){var n=e.getElementsByTagName("script");n.length&&(t=n[n.length-1].src)}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),o.p=t}(),function(){o.b=document.baseURI||self.location.href;var t={2613:0};o.f.j=function(e,n){var r=o.o(t,e)?t[e]:void 0;if(0!==r)if(r)n.push(r[2]);else{var s=new Promise((function(n,s){r=t[e]=[n,s]}));n.push(r[2]=s);var a=o.p+o.u(e),i=new Error;o.l(a,(function(n){if(o.o(t,e)&&(0!==(r=t[e])&&(t[e]=void 0),r)){var s=n&&("load"===n.type?"missing":n.type),a=n&&n.target&&n.target.src;i.message="Loading chunk "+e+" failed.\n("+s+": "+a+")",i.name="ChunkLoadError",i.type=s,i.request=a,r[1](i)}}),"chunk-"+e,e)}},o.O.j=function(e){return 0===t[e]};var e=function(e,n){var r,s,a=n[0],i=n[1],u=n[2],c=0;if(a.some((function(e){return 0!==t[e]}))){for(r in i)o.o(i,r)&&(o.m[r]=i[r]);if(u)var l=u(o)}for(e&&e(n);c<a.length;c++)s=a[c],o.o(t,s)&&t[s]&&t[s][0](),t[s]=0;return o.O(l)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))}(),o.nc=void 0;var i=o.O(void 0,[7874],(function(){return o(40814)}));i=o.O(i)}();
+//# sourceMappingURL=user_status-menu.js.map?v=d411dad3f0d8dec91a39 \ No newline at end of file
diff --git a/dist/user_status-menu.js.map b/dist/user_status-menu.js.map
index 714c842239c..c3f7ebfd4a6 100644
--- a/dist/user_status-menu.js.map
+++ b/dist/user_status-menu.js.map
@@ -1 +1 @@
-{"version":3,"file":"user_status-menu.js?v=a0fab0c873cf1f3faf88","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/node_modules/@nextcloud/moment/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/apps/user_status/src/services/heartbeatService.js","webpack:///nextcloud/apps/user_status/src/UserStatus.vue","webpack:///nextcloud/apps/user_status/src/UserStatus.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/user_status/src/UserStatus.vue?b527","webpack://nextcloud/./apps/user_status/src/UserStatus.vue?d74a","webpack:///nextcloud/apps/user_status/src/UserStatus.vue?vue&type=template&id=5879d4bb&scoped=true&","webpack:///nextcloud/apps/user_status/src/services/predefinedStatusService.js","webpack:///nextcloud/apps/user_status/src/store/predefinedStatuses.js","webpack:///nextcloud/apps/user_status/src/services/statusService.js","webpack:///nextcloud/apps/user_status/src/services/clearAtService.js","webpack:///nextcloud/apps/user_status/src/store/userStatus.js","webpack:///nextcloud/apps/user_status/src/store/index.js","webpack:///nextcloud/apps/user_status/src/menu.js","webpack:///nextcloud/apps/user_status/src/mixins/OnlineStatusMixin.js","webpack:///nextcloud/apps/user_status/src/services/dateService.js","webpack:///nextcloud/apps/user_status/src/UserStatus.vue?vue&type=style&index=0&id=5879d4bb&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/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","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/publicPath","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};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","var map = {\n\t\"./af\": 36026,\n\t\"./af.js\": 36026,\n\t\"./ar\": 28093,\n\t\"./ar-dz\": 41943,\n\t\"./ar-dz.js\": 41943,\n\t\"./ar-kw\": 23969,\n\t\"./ar-kw.js\": 23969,\n\t\"./ar-ly\": 40594,\n\t\"./ar-ly.js\": 40594,\n\t\"./ar-ma\": 18369,\n\t\"./ar-ma.js\": 18369,\n\t\"./ar-sa\": 32579,\n\t\"./ar-sa.js\": 32579,\n\t\"./ar-tn\": 76442,\n\t\"./ar-tn.js\": 76442,\n\t\"./ar.js\": 28093,\n\t\"./az\": 86425,\n\t\"./az.js\": 86425,\n\t\"./be\": 22004,\n\t\"./be.js\": 22004,\n\t\"./bg\": 42982,\n\t\"./bg.js\": 42982,\n\t\"./bm\": 21067,\n\t\"./bm.js\": 21067,\n\t\"./bn\": 8366,\n\t\"./bn-bd\": 63837,\n\t\"./bn-bd.js\": 63837,\n\t\"./bn.js\": 8366,\n\t\"./bo\": 95040,\n\t\"./bo.js\": 95040,\n\t\"./br\": 521,\n\t\"./br.js\": 521,\n\t\"./bs\": 83242,\n\t\"./bs.js\": 83242,\n\t\"./ca\": 73046,\n\t\"./ca.js\": 73046,\n\t\"./cs\": 25794,\n\t\"./cs.js\": 25794,\n\t\"./cv\": 28231,\n\t\"./cv.js\": 28231,\n\t\"./cy\": 10927,\n\t\"./cy.js\": 10927,\n\t\"./da\": 42832,\n\t\"./da.js\": 42832,\n\t\"./de\": 29415,\n\t\"./de-at\": 3331,\n\t\"./de-at.js\": 3331,\n\t\"./de-ch\": 45524,\n\t\"./de-ch.js\": 45524,\n\t\"./de.js\": 29415,\n\t\"./dv\": 44700,\n\t\"./dv.js\": 44700,\n\t\"./el\": 88752,\n\t\"./el.js\": 88752,\n\t\"./en-au\": 90444,\n\t\"./en-au.js\": 90444,\n\t\"./en-ca\": 65959,\n\t\"./en-ca.js\": 65959,\n\t\"./en-gb\": 62762,\n\t\"./en-gb.js\": 62762,\n\t\"./en-ie\": 40909,\n\t\"./en-ie.js\": 40909,\n\t\"./en-il\": 79909,\n\t\"./en-il.js\": 79909,\n\t\"./en-in\": 87942,\n\t\"./en-in.js\": 87942,\n\t\"./en-nz\": 75200,\n\t\"./en-nz.js\": 75200,\n\t\"./en-sg\": 21415,\n\t\"./en-sg.js\": 21415,\n\t\"./eo\": 27447,\n\t\"./eo.js\": 27447,\n\t\"./es\": 86756,\n\t\"./es-do\": 47049,\n\t\"./es-do.js\": 47049,\n\t\"./es-mx\": 15915,\n\t\"./es-mx.js\": 15915,\n\t\"./es-us\": 57133,\n\t\"./es-us.js\": 57133,\n\t\"./es.js\": 86756,\n\t\"./et\": 72182,\n\t\"./et.js\": 72182,\n\t\"./eu\": 14419,\n\t\"./eu.js\": 14419,\n\t\"./fa\": 2916,\n\t\"./fa.js\": 2916,\n\t\"./fi\": 49964,\n\t\"./fi.js\": 49964,\n\t\"./fil\": 16448,\n\t\"./fil.js\": 16448,\n\t\"./fo\": 26094,\n\t\"./fo.js\": 26094,\n\t\"./fr\": 35833,\n\t\"./fr-ca\": 56994,\n\t\"./fr-ca.js\": 56994,\n\t\"./fr-ch\": 2740,\n\t\"./fr-ch.js\": 2740,\n\t\"./fr.js\": 35833,\n\t\"./fy\": 69542,\n\t\"./fy.js\": 69542,\n\t\"./ga\": 93264,\n\t\"./ga.js\": 93264,\n\t\"./gd\": 77457,\n\t\"./gd.js\": 77457,\n\t\"./gl\": 83043,\n\t\"./gl.js\": 83043,\n\t\"./gom-deva\": 24034,\n\t\"./gom-deva.js\": 24034,\n\t\"./gom-latn\": 28379,\n\t\"./gom-latn.js\": 28379,\n\t\"./gu\": 406,\n\t\"./gu.js\": 406,\n\t\"./he\": 73219,\n\t\"./he.js\": 73219,\n\t\"./hi\": 99834,\n\t\"./hi.js\": 99834,\n\t\"./hr\": 28754,\n\t\"./hr.js\": 28754,\n\t\"./hu\": 93945,\n\t\"./hu.js\": 93945,\n\t\"./hy-am\": 81319,\n\t\"./hy-am.js\": 81319,\n\t\"./id\": 24875,\n\t\"./id.js\": 24875,\n\t\"./is\": 23724,\n\t\"./is.js\": 23724,\n\t\"./it\": 79906,\n\t\"./it-ch\": 34303,\n\t\"./it-ch.js\": 34303,\n\t\"./it.js\": 79906,\n\t\"./ja\": 77105,\n\t\"./ja.js\": 77105,\n\t\"./jv\": 15026,\n\t\"./jv.js\": 15026,\n\t\"./ka\": 67416,\n\t\"./ka.js\": 67416,\n\t\"./kk\": 79734,\n\t\"./kk.js\": 79734,\n\t\"./km\": 60757,\n\t\"./km.js\": 60757,\n\t\"./kn\": 58369,\n\t\"./kn.js\": 58369,\n\t\"./ko\": 77687,\n\t\"./ko.js\": 77687,\n\t\"./ku\": 95544,\n\t\"./ku.js\": 95544,\n\t\"./ky\": 85431,\n\t\"./ky.js\": 85431,\n\t\"./lb\": 13613,\n\t\"./lb.js\": 13613,\n\t\"./lo\": 34252,\n\t\"./lo.js\": 34252,\n\t\"./lt\": 84619,\n\t\"./lt.js\": 84619,\n\t\"./lv\": 93760,\n\t\"./lv.js\": 93760,\n\t\"./me\": 93393,\n\t\"./me.js\": 93393,\n\t\"./mi\": 12369,\n\t\"./mi.js\": 12369,\n\t\"./mk\": 48664,\n\t\"./mk.js\": 48664,\n\t\"./ml\": 23099,\n\t\"./ml.js\": 23099,\n\t\"./mn\": 98539,\n\t\"./mn.js\": 98539,\n\t\"./mr\": 778,\n\t\"./mr.js\": 778,\n\t\"./ms\": 39970,\n\t\"./ms-my\": 82625,\n\t\"./ms-my.js\": 82625,\n\t\"./ms.js\": 39970,\n\t\"./mt\": 15714,\n\t\"./mt.js\": 15714,\n\t\"./my\": 53055,\n\t\"./my.js\": 53055,\n\t\"./nb\": 73945,\n\t\"./nb.js\": 73945,\n\t\"./ne\": 63645,\n\t\"./ne.js\": 63645,\n\t\"./nl\": 4829,\n\t\"./nl-be\": 12823,\n\t\"./nl-be.js\": 12823,\n\t\"./nl.js\": 4829,\n\t\"./nn\": 23756,\n\t\"./nn.js\": 23756,\n\t\"./oc-lnc\": 41228,\n\t\"./oc-lnc.js\": 41228,\n\t\"./pa-in\": 97877,\n\t\"./pa-in.js\": 97877,\n\t\"./pl\": 53066,\n\t\"./pl.js\": 53066,\n\t\"./pt\": 28677,\n\t\"./pt-br\": 81592,\n\t\"./pt-br.js\": 81592,\n\t\"./pt.js\": 28677,\n\t\"./ro\": 32722,\n\t\"./ro.js\": 32722,\n\t\"./ru\": 59138,\n\t\"./ru.js\": 59138,\n\t\"./sd\": 32568,\n\t\"./sd.js\": 32568,\n\t\"./se\": 49753,\n\t\"./se.js\": 49753,\n\t\"./si\": 58024,\n\t\"./si.js\": 58024,\n\t\"./sk\": 31058,\n\t\"./sk.js\": 31058,\n\t\"./sl\": 43452,\n\t\"./sl.js\": 43452,\n\t\"./sq\": 2795,\n\t\"./sq.js\": 2795,\n\t\"./sr\": 26976,\n\t\"./sr-cyrl\": 38819,\n\t\"./sr-cyrl.js\": 38819,\n\t\"./sr.js\": 26976,\n\t\"./ss\": 7467,\n\t\"./ss.js\": 7467,\n\t\"./sv\": 42787,\n\t\"./sv.js\": 42787,\n\t\"./sw\": 80298,\n\t\"./sw.js\": 80298,\n\t\"./ta\": 57532,\n\t\"./ta.js\": 57532,\n\t\"./te\": 76076,\n\t\"./te.js\": 76076,\n\t\"./tet\": 40452,\n\t\"./tet.js\": 40452,\n\t\"./tg\": 64794,\n\t\"./tg.js\": 64794,\n\t\"./th\": 48245,\n\t\"./th.js\": 48245,\n\t\"./tk\": 8870,\n\t\"./tk.js\": 8870,\n\t\"./tl-ph\": 36056,\n\t\"./tl-ph.js\": 36056,\n\t\"./tlh\": 15249,\n\t\"./tlh.js\": 15249,\n\t\"./tr\": 22053,\n\t\"./tr.js\": 22053,\n\t\"./tzl\": 39871,\n\t\"./tzl.js\": 39871,\n\t\"./tzm\": 39574,\n\t\"./tzm-latn\": 19210,\n\t\"./tzm-latn.js\": 19210,\n\t\"./tzm.js\": 39574,\n\t\"./ug-cn\": 91532,\n\t\"./ug-cn.js\": 91532,\n\t\"./uk\": 11432,\n\t\"./uk.js\": 11432,\n\t\"./ur\": 88523,\n\t\"./ur.js\": 88523,\n\t\"./uz\": 54958,\n\t\"./uz-latn\": 68735,\n\t\"./uz-latn.js\": 68735,\n\t\"./uz.js\": 54958,\n\t\"./vi\": 83398,\n\t\"./vi.js\": 83398,\n\t\"./x-pseudo\": 56665,\n\t\"./x-pseudo.js\": 56665,\n\t\"./yo\": 11642,\n\t\"./yo.js\": 11642,\n\t\"./zh-cn\": 5462,\n\t\"./zh-cn.js\": 5462,\n\t\"./zh-hk\": 92530,\n\t\"./zh-hk.js\": 92530,\n\t\"./zh-mo\": 41650,\n\t\"./zh-mo.js\": 41650,\n\t\"./zh-tw\": 97333,\n\t\"./zh-tw.js\": 97333\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 93365;","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\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 */\n\nimport HttpClient from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\n\n/**\n * Sends a heartbeat\n *\n * @param {boolean} isAway Whether or not the user is active\n * @return {Promise<void>}\n */\nconst sendHeartbeat = async (isAway) => {\n\tconst url = generateUrl('/apps/user_status/heartbeat')\n\tconst response = await HttpClient.put(url, {\n\t\tstatus: isAway ? 'away' : 'online',\n\t})\n\treturn response.data\n}\n\nexport {\n\tsendHeartbeat,\n}\n","<!--\n - @copyright Copyright (c) 2020 Georg Ehrke <oc.list@georgehrke.com>\n - @author Georg Ehrke <oc.list@georgehrke.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<li>\n\t\t<div class=\"user-status-menu-item\">\n\t\t\t<!-- Username display -->\n\t\t\t<a v-if=\"!inline\"\n\t\t\t\tclass=\"user-status-menu-item__header\"\n\t\t\t\t:href=\"profilePageLink\"\n\t\t\t\t@click=\"loadProfilePage\">\n\t\t\t\t<div class=\"user-status-menu-item__header-content\">\n\t\t\t\t\t<div class=\"user-status-menu-item__header-content-displayname\">{{ displayName }}</div>\n\t\t\t\t\t<div v-if=\"!loadingProfilePage\" class=\"user-status-menu-item__header-content-placeholder\" />\n\t\t\t\t\t<div v-else class=\"icon-loading-small\" />\n\t\t\t\t</div>\n\t\t\t\t<div v-if=\"profileEnabled\">\n\t\t\t\t\t{{ t('user_status', 'View profile') }}\n\t\t\t\t</div>\n\t\t\t</a>\n\n\t\t\t<!-- Status modal toggle -->\n\t\t\t<toggle :is=\"inline ? 'button' : 'a'\"\n\t\t\t\t:class=\"{'user-status-menu-item__toggle--inline': inline}\"\n\t\t\t\tclass=\"user-status-menu-item__toggle\"\n\t\t\t\thref=\"#\"\n\t\t\t\t@click.prevent.stop=\"openModal\">\n\t\t\t\t<span :class=\"statusIcon\" class=\"user-status-menu-item__toggle-icon\" />\n\t\t\t\t{{ visibleMessage }}\n\t\t\t</toggle>\n\t\t</div>\n\n\t\t<!-- Status management modal -->\n\t\t<SetStatusModal v-if=\"isModalOpen\"\n\t\t\t@close=\"closeModal\" />\n\t</li>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { loadState } from '@nextcloud/initial-state'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport debounce from 'debounce'\n\nimport { sendHeartbeat } from './services/heartbeatService'\nimport OnlineStatusMixin from './mixins/OnlineStatusMixin'\n\nconst { profileEnabled } = loadState('user_status', 'profileEnabled', false)\n\nexport default {\n\tname: 'UserStatus',\n\n\tcomponents: {\n\t\tSetStatusModal: () => import(/* webpackChunkName: 'user-status-modal' */'./components/SetStatusModal'),\n\t},\n\tmixins: [OnlineStatusMixin],\n\n\tprops: {\n\t\tinline: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tdisplayName: getCurrentUser().displayName,\n\t\t\theartbeatInterval: null,\n\t\t\tisAway: false,\n\t\t\tisModalOpen: false,\n\t\t\tloadingProfilePage: false,\n\t\t\tmouseMoveListener: null,\n\t\t\tprofileEnabled,\n\t\t\tsetAwayTimeout: null,\n\t\t}\n\t},\n\tcomputed: {\n\t\t/**\n\t\t * The profile page link\n\t\t *\n\t\t * @return {string | null}\n\t\t */\n\t\tprofilePageLink() {\n\t\t\tif (this.profileEnabled) {\n\t\t\t\treturn generateUrl('/u/{userId}', { userId: getCurrentUser().uid })\n\t\t\t}\n\t\t\t// Since an anchor element is used rather than a button,\n\t\t\t// this hack removes href if the profile is disabled so that disabling pointer-events is not needed to prevent a click from opening a page\n\t\t\t// and to allow the hover event for styling\n\t\t\treturn null\n\t\t},\n\t},\n\n\t/**\n\t * Loads the current user's status from initial state\n\t * and stores it in Vuex\n\t */\n\tmounted() {\n\t\tsubscribe('settings:display-name:updated', this.handleDisplayNameUpdate)\n\t\tsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\n\t\tthis.$store.dispatch('loadStatusFromInitialState')\n\n\t\tif (OC.config.session_keepalive) {\n\t\t\t// Send the latest status to the server every 5 minutes\n\t\t\tthis.heartbeatInterval = setInterval(this._backgroundHeartbeat.bind(this), 1000 * 60 * 5)\n\t\t\tthis.setAwayTimeout = () => {\n\t\t\t\tthis.isAway = true\n\t\t\t}\n\t\t\t// Catch mouse movements, but debounce to once every 30 seconds\n\t\t\tthis.mouseMoveListener = debounce(() => {\n\t\t\t\tconst wasAway = this.isAway\n\t\t\t\tthis.isAway = false\n\t\t\t\t// Reset the two minute counter\n\t\t\t\tclearTimeout(this.setAwayTimeout)\n\t\t\t\t// If the user did not move the mouse within two minutes,\n\t\t\t\t// mark them as away\n\t\t\t\tsetTimeout(this.setAwayTimeout, 1000 * 60 * 2)\n\n\t\t\t\tif (wasAway) {\n\t\t\t\t\tthis._backgroundHeartbeat()\n\t\t\t\t}\n\t\t\t}, 1000 * 2, true)\n\t\t\twindow.addEventListener('mousemove', this.mouseMoveListener, {\n\t\t\t\tcapture: true,\n\t\t\t\tpassive: true,\n\t\t\t})\n\n\t\t\tthis._backgroundHeartbeat()\n\t\t}\n\t\tsubscribe('user_status:status.updated', this.handleUserStatusUpdated)\n\t},\n\n\t/**\n\t * Some housekeeping before destroying the component\n\t */\n\tbeforeDestroy() {\n\t\tunsubscribe('settings:display-name:updated', this.handleDisplayNameUpdate)\n\t\tunsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\t\twindow.removeEventListener('mouseMove', this.mouseMoveListener)\n\t\tclearInterval(this.heartbeatInterval)\n\t\tunsubscribe('user_status:status.updated', this.handleUserStatusUpdated)\n\t},\n\n\tmethods: {\n\t\thandleDisplayNameUpdate(displayName) {\n\t\t\tthis.displayName = displayName\n\t\t},\n\n\t\thandleProfileEnabledUpdate(profileEnabled) {\n\t\t\tthis.profileEnabled = profileEnabled\n\t\t},\n\n\t\tloadProfilePage() {\n\t\t\tif (this.profileEnabled) {\n\t\t\t\tthis.loadingProfilePage = true\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Opens the modal to set a custom status\n\t\t */\n\t\topenModal() {\n\t\t\tthis.isModalOpen = true\n\t\t},\n\t\t/**\n\t\t * Closes the modal\n\t\t */\n\t\tcloseModal() {\n\t\t\tthis.isModalOpen = false\n\t\t},\n\n\t\t/**\n\t\t * Sends the status heartbeat to the server\n\t\t *\n\t\t * @return {Promise<void>}\n\t\t * @private\n\t\t */\n\t\tasync _backgroundHeartbeat() {\n\t\t\ttry {\n\t\t\t\tconst status = await sendHeartbeat(this.isAway)\n\t\t\t\tif (status?.userId) {\n\t\t\t\t\tthis.$store.dispatch('setStatusFromHeartbeat', status)\n\t\t\t\t} else {\n\t\t\t\t\tawait this.$store.dispatch('reFetchStatusFromServer')\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.debug('Failed sending heartbeat, got: ' + error.response?.status)\n\t\t\t}\n\t\t},\n\t\thandleUserStatusUpdated(state) {\n\t\t\tif (OC.getCurrentUser().uid === state.userId) {\n\t\t\t\tthis.$store.dispatch('setStatusFromObject', {\n\t\t\t\t\tstatus: state.status,\n\t\t\t\t\ticon: state.icon,\n\t\t\t\t\tmessage: state.message,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.user-status-menu-item {\n\t&__header {\n\t\tdisplay: flex !important;\n\t\tflex-direction: column !important;\n\t\twidth: auto !important;\n\t\theight: 44px * 1.5 !important;\n\t\tpadding: 10px 12px 5px 12px !important;\n\t\talign-items: flex-start !important;\n\t\tcolor: var(--color-main-text) !important;\n\n\t\t&:not([href]) {\n\t\t\theight: var(--header-menu-item-height) !important;\n\t\t\tcolor: var(--color-text-maxcontrast) !important;\n\t\t\tcursor: default !important;\n\n\t\t\t& * {\n\t\t\t\tcursor: default !important;\n\t\t\t}\n\n\t\t\t&:hover {\n\t\t\t\tbackground-color: transparent !important;\n\t\t\t}\n\t\t}\n\n\t\t&-content {\n\t\t\tdisplay: inline-flex !important;\n\t\t\tfont-weight: bold !important;\n\t\t\tgap: 0 10px !important;\n\t\t\twidth: auto;\n\n\t\t\t&-displayname {\n\t\t\t\twidth: auto;\n\t\t\t}\n\n\t\t\t&-placeholder {\n\t\t\t\twidth: 16px !important;\n\t\t\t\theight: 24px !important;\n\t\t\t\tmargin-right: 10px !important;\n\t\t\t\tvisibility: hidden !important;\n\t\t\t}\n\t\t}\n\n\t\tspan {\n\t\t\tcolor: var(--color-text-maxcontrast) !important;\n\t\t}\n\t}\n\n\t&__toggle {\n\t\t&-icon {\n\t\t\twidth: 16px;\n\t\t\theight: 16px;\n\t\t\tmargin-right: 10px;\n\t\t\topacity: 1 !important;\n\t\t\tbackground-size: 16px;\n\t\t}\n\n\t\t// In dashboard\n\t\t&--inline {\n\t\t\twidth: auto;\n\t\t\tmin-width: 44px;\n\t\t\theight: 44px;\n\t\t\tmargin: 0;\n\t\t\tborder: 0;\n\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\tbackground-color: var(--color-background-translucent);\n\t\t\tfont-size: inherit;\n\t\t\tfont-weight: normal;\n\n\t\t\t-webkit-backdrop-filter: var(--background-blur);\n\t\t\tbackdrop-filter: var(--background-blur);\n\n\t\t\t&:active,\n\t\t\t&:hover,\n\t\t\t&:focus {\n\t\t\t\tbackground-color: var(--color-background-hover);\n\t\t\t}\n\t\t\t&:focus {\n\t\t\t\tborder: 2px solid var(--color-main-text)!important;\n\t\t\t}\n\t\t}\n\t}\n}\n\nli {\n\tlist-style-type: none;\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!./UserStatus.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!./UserStatus.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!./UserStatus.vue?vue&type=style&index=0&id=5879d4bb&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!./UserStatus.vue?vue&type=style&index=0&id=5879d4bb&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserStatus.vue?vue&type=template&id=5879d4bb&scoped=true&\"\nimport script from \"./UserStatus.vue?vue&type=script&lang=js&\"\nexport * from \"./UserStatus.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UserStatus.vue?vue&type=style&index=0&id=5879d4bb&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 \"5879d4bb\",\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('li',[_c('div',{staticClass:\"user-status-menu-item\"},[(!_vm.inline)?_c('a',{staticClass:\"user-status-menu-item__header\",attrs:{\"href\":_vm.profilePageLink},on:{\"click\":_vm.loadProfilePage}},[_c('div',{staticClass:\"user-status-menu-item__header-content\"},[_c('div',{staticClass:\"user-status-menu-item__header-content-displayname\"},[_vm._v(_vm._s(_vm.displayName))]),_vm._v(\" \"),(!_vm.loadingProfilePage)?_c('div',{staticClass:\"user-status-menu-item__header-content-placeholder\"}):_c('div',{staticClass:\"icon-loading-small\"})]),_vm._v(\" \"),(_vm.profileEnabled)?_c('div',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('user_status', 'View profile'))+\"\\n\\t\\t\\t\")]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c(_vm.inline ? 'button' : 'a',{tag:\"toggle\",staticClass:\"user-status-menu-item__toggle\",class:{'user-status-menu-item__toggle--inline': _vm.inline},attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.openModal.apply(null, arguments)}}},[_c('span',{staticClass:\"user-status-menu-item__toggle-icon\",class:_vm.statusIcon}),_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.visibleMessage)+\"\\n\\t\\t\")])],1),_vm._v(\" \"),(_vm.isModalOpen)?_c('SetStatusModal',{on:{\"close\":_vm.closeModal}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\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 */\n\nimport HttpClient from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n * Fetches all predefined statuses from the server\n *\n * @return {Promise<void>}\n */\nconst fetchAllPredefinedStatuses = async () => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/predefined_statuses?format=json')\n\tconst response = await HttpClient.get(url)\n\n\treturn response.data.ocs.data\n}\n\nexport {\n\tfetchAllPredefinedStatuses,\n}\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\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 */\n\nimport { fetchAllPredefinedStatuses } from '../services/predefinedStatusService'\n\nconst state = {\n\tpredefinedStatuses: [],\n}\n\nconst mutations = {\n\n\t/**\n\t * Adds a predefined status to the state\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} status The status to add\n\t */\n\taddPredefinedStatus(state, status) {\n\t\tstate.predefinedStatuses.push(status)\n\t},\n}\n\nconst getters = {}\n\nconst actions = {\n\n\t/**\n\t * Loads all predefined statuses from the server\n\t *\n\t * @param {object} vuex The Vuex components\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state -\n\t */\n\tasync loadAllPredefinedStatuses({ state, commit }) {\n\t\tif (state.predefinedStatuses.length > 0) {\n\t\t\treturn\n\t\t}\n\n\t\tconst statuses = await fetchAllPredefinedStatuses()\n\t\tfor (const status of statuses) {\n\t\t\tcommit('addPredefinedStatus', status)\n\t\t}\n\t},\n\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\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 */\n\nimport HttpClient from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n * Fetches the current user-status\n *\n * @return {Promise<object>}\n */\nconst fetchCurrentStatus = async () => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status')\n\tconst response = await HttpClient.get(url)\n\n\treturn response.data.ocs.data\n}\n\n/**\n * Sets the status\n *\n * @param {string} statusType The status (online / away / dnd / invisible)\n * @return {Promise<void>}\n */\nconst setStatus = async (statusType) => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status/status')\n\tawait HttpClient.put(url, {\n\t\tstatusType,\n\t})\n}\n\n/**\n * Sets a message based on our predefined statuses\n *\n * @param {string} messageId The id of the message, taken from predefined status service\n * @param {number | null} clearAt When to automatically clean the status\n * @return {Promise<void>}\n */\nconst setPredefinedMessage = async (messageId, clearAt = null) => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status/message/predefined?format=json')\n\tawait HttpClient.put(url, {\n\t\tmessageId,\n\t\tclearAt,\n\t})\n}\n\n/**\n * Sets a custom message\n *\n * @param {string} message The user-defined message\n * @param {string | null} statusIcon The user-defined icon\n * @param {number | null} clearAt When to automatically clean the status\n * @return {Promise<void>}\n */\nconst setCustomMessage = async (message, statusIcon = null, clearAt = null) => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status/message/custom?format=json')\n\tawait HttpClient.put(url, {\n\t\tmessage,\n\t\tstatusIcon,\n\t\tclearAt,\n\t})\n}\n\n/**\n * Clears the current status of the user\n *\n * @return {Promise<void>}\n */\nconst clearMessage = async () => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status/message?format=json')\n\tawait HttpClient.delete(url)\n}\n\nexport {\n\tfetchCurrentStatus,\n\tsetStatus,\n\tsetCustomMessage,\n\tsetPredefinedMessage,\n\tclearMessage,\n}\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\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 */\n\nimport {\n\tdateFactory,\n} from './dateService'\nimport moment from '@nextcloud/moment'\n\n/**\n * Calculates the actual clearAt timestamp\n *\n * @param {object | null} clearAt The clear-at config\n * @return {number | null}\n */\nconst getTimestampForClearAt = (clearAt) => {\n\tif (clearAt === null) {\n\t\treturn null\n\t}\n\n\tconst date = dateFactory()\n\n\tif (clearAt.type === 'period') {\n\t\tdate.setSeconds(date.getSeconds() + clearAt.time)\n\t\treturn Math.floor(date.getTime() / 1000)\n\t}\n\tif (clearAt.type === 'end-of') {\n\t\tswitch (clearAt.time) {\n\t\tcase 'day':\n\t\tcase 'week':\n\t\t\treturn Number(moment(date).endOf(clearAt.time).format('X'))\n\t\t}\n\t}\n\t// This is not an officially supported type\n\t// but only used internally to show the remaining time\n\t// in the Set Status Modal\n\tif (clearAt.type === '_time') {\n\t\treturn clearAt.time\n\t}\n\n\treturn null\n}\n\nexport {\n\tgetTimestampForClearAt,\n}\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\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 */\n\nimport {\n\tfetchCurrentStatus,\n\tsetStatus,\n\tsetPredefinedMessage,\n\tsetCustomMessage,\n\tclearMessage,\n} from '../services/statusService'\nimport { loadState } from '@nextcloud/initial-state'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getTimestampForClearAt } from '../services/clearAtService'\nimport { emit } from '@nextcloud/event-bus'\n\nconst state = {\n\t// Status (online / away / dnd / invisible / offline)\n\tstatus: null,\n\t// Whether or not the status is user-defined\n\tstatusIsUserDefined: null,\n\t// A custom message set by the user\n\tmessage: null,\n\t// The icon selected by the user\n\ticon: null,\n\t// When to automatically clean the status\n\tclearAt: null,\n\t// Whether or not the message is predefined\n\t// (and can automatically be translated by Nextcloud)\n\tmessageIsPredefined: null,\n\t// The id of the message in case it's predefined\n\tmessageId: null,\n}\n\nconst mutations = {\n\n\t/**\n\t * Sets a new status\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} data The destructuring object\n\t * @param {string} data.statusType The new status type\n\t */\n\tsetStatus(state, { statusType }) {\n\t\tstate.status = statusType\n\t\tstate.statusIsUserDefined = true\n\t},\n\n\t/**\n\t * Sets a message using a predefined message\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} data The destructuring object\n\t * @param {string} data.messageId The messageId\n\t * @param {number | null} data.clearAt When to automatically clear the status\n\t * @param {string} data.message The message\n\t * @param {string} data.icon The icon\n\t */\n\tsetPredefinedMessage(state, { messageId, clearAt, message, icon }) {\n\t\tstate.messageId = messageId\n\t\tstate.messageIsPredefined = true\n\n\t\tstate.message = message\n\t\tstate.icon = icon\n\t\tstate.clearAt = clearAt\n\t},\n\n\t/**\n\t * Sets a custom message\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} data The destructuring object\n\t * @param {string} data.message The message\n\t * @param {string} data.icon The icon\n\t * @param {number} data.clearAt When to automatically clear the status\n\t */\n\tsetCustomMessage(state, { message, icon, clearAt }) {\n\t\tstate.messageId = null\n\t\tstate.messageIsPredefined = false\n\n\t\tstate.message = message\n\t\tstate.icon = icon\n\t\tstate.clearAt = clearAt\n\t},\n\n\t/**\n\t * Clears the status\n\t *\n\t * @param {object} state The Vuex state\n\t */\n\tclearMessage(state) {\n\t\tstate.messageId = null\n\t\tstate.messageIsPredefined = false\n\n\t\tstate.message = null\n\t\tstate.icon = null\n\t\tstate.clearAt = null\n\t},\n\n\t/**\n\t * Loads the status from initial state\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} data The destructuring object\n\t * @param {string} data.status The status type\n\t * @param {boolean} data.statusIsUserDefined Whether or not this status is user-defined\n\t * @param {string} data.message The message\n\t * @param {string} data.icon The icon\n\t * @param {number} data.clearAt When to automatically clear the status\n\t * @param {boolean} data.messageIsPredefined Whether or not the message is predefined\n\t * @param {string} data.messageId The id of the predefined message\n\t */\n\tloadStatusFromServer(state, { status, statusIsUserDefined, message, icon, clearAt, messageIsPredefined, messageId }) {\n\t\tstate.status = status\n\t\tstate.message = message\n\t\tstate.icon = icon\n\n\t\t// Don't overwrite certain values if the refreshing comes in via short updates\n\t\t// E.g. from talk participant list which only has the status, message and icon\n\t\tif (typeof statusIsUserDefined !== 'undefined') {\n\t\t\tstate.statusIsUserDefined = statusIsUserDefined\n\t\t}\n\t\tif (typeof clearAt !== 'undefined') {\n\t\t\tstate.clearAt = clearAt\n\t\t}\n\t\tif (typeof messageIsPredefined !== 'undefined') {\n\t\t\tstate.messageIsPredefined = messageIsPredefined\n\t\t}\n\t\tif (typeof messageId !== 'undefined') {\n\t\t\tstate.messageId = messageId\n\t\t}\n\t},\n}\n\nconst getters = {}\n\nconst actions = {\n\n\t/**\n\t * Sets a new status\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state The Vuex state object\n\t * @param {object} data The data destructuring object\n\t * @param {string} data.statusType The new status type\n\t * @return {Promise<void>}\n\t */\n\tasync setStatus({ commit, state }, { statusType }) {\n\t\tawait setStatus(statusType)\n\t\tcommit('setStatus', { statusType })\n\t\temit('user_status:status.updated', {\n\t\t\tstatus: state.status,\n\t\t\tmessage: state.message,\n\t\t\ticon: state.icon,\n\t\t\tclearAt: state.clearAt,\n\t\t\tuserId: getCurrentUser()?.uid,\n\t\t})\n\t},\n\n\t/**\n\t * Update status from 'user_status:status.updated' update.\n\t * This doesn't trigger another 'user_status:status.updated'\n\t * event.\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state The Vuex state object\n\t * @param {string} status The new status\n\t * @return {Promise<void>}\n\t */\n\tasync setStatusFromObject({ commit, state }, status) {\n\t\tcommit('loadStatusFromServer', status)\n\t},\n\n\t/**\n\t * Sets a message using a predefined message\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state The Vuex state object\n\t * @param {object} vuex.rootState The Vuex root state\n\t * @param {object} data The data destructuring object\n\t * @param {string} data.messageId The messageId\n\t * @param {object | null} data.clearAt When to automatically clear the status\n\t * @return {Promise<void>}\n\t */\n\tasync setPredefinedMessage({ commit, rootState, state }, { messageId, clearAt }) {\n\t\tconst resolvedClearAt = getTimestampForClearAt(clearAt)\n\n\t\tawait setPredefinedMessage(messageId, resolvedClearAt)\n\t\tconst status = rootState.predefinedStatuses.predefinedStatuses.find((status) => status.id === messageId)\n\t\tconst { message, icon } = status\n\n\t\tcommit('setPredefinedMessage', { messageId, clearAt: resolvedClearAt, message, icon })\n\t\temit('user_status:status.updated', {\n\t\t\tstatus: state.status,\n\t\t\tmessage: state.message,\n\t\t\ticon: state.icon,\n\t\t\tclearAt: state.clearAt,\n\t\t\tuserId: getCurrentUser()?.uid,\n\t\t})\n\t},\n\n\t/**\n\t * Sets a custom message\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state The Vuex state object\n\t * @param {object} data The data destructuring object\n\t * @param {string} data.message The message\n\t * @param {string} data.icon The icon\n\t * @param {object | null} data.clearAt When to automatically clear the status\n\t * @return {Promise<void>}\n\t */\n\tasync setCustomMessage({ commit, state }, { message, icon, clearAt }) {\n\t\tconst resolvedClearAt = getTimestampForClearAt(clearAt)\n\n\t\tawait setCustomMessage(message, icon, resolvedClearAt)\n\t\tcommit('setCustomMessage', { message, icon, clearAt: resolvedClearAt })\n\t\temit('user_status:status.updated', {\n\t\t\tstatus: state.status,\n\t\t\tmessage: state.message,\n\t\t\ticon: state.icon,\n\t\t\tclearAt: state.clearAt,\n\t\t\tuserId: getCurrentUser()?.uid,\n\t\t})\n\t},\n\n\t/**\n\t * Clears the status\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state The Vuex state object\n\t * @return {Promise<void>}\n\t */\n\tasync clearMessage({ commit, state }) {\n\t\tawait clearMessage()\n\t\tcommit('clearMessage')\n\t\temit('user_status:status.updated', {\n\t\t\tstatus: state.status,\n\t\t\tmessage: state.message,\n\t\t\ticon: state.icon,\n\t\t\tclearAt: state.clearAt,\n\t\t\tuserId: getCurrentUser()?.uid,\n\t\t})\n\t},\n\n\t/**\n\t * Re-fetches the status from the server\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @return {Promise<void>}\n\t */\n\tasync reFetchStatusFromServer({ commit }) {\n\t\tconst status = await fetchCurrentStatus()\n\t\tcommit('loadStatusFromServer', status)\n\t},\n\n\t/**\n\t * Stores the status we got in the reply of the heartbeat\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} status The data destructuring object\n\t * @param {string} status.status The status type\n\t * @param {boolean} status.statusIsUserDefined Whether or not this status is user-defined\n\t * @param {string} status.message The message\n\t * @param {string} status.icon The icon\n\t * @param {number} status.clearAt When to automatically clear the status\n\t * @param {boolean} status.messageIsPredefined Whether or not the message is predefined\n\t * @param {string} status.messageId The id of the predefined message\n\t * @return {Promise<void>}\n\t */\n\tasync setStatusFromHeartbeat({ commit }, status) {\n\t\tcommit('loadStatusFromServer', status)\n\t},\n\n\t/**\n\t * Loads the server from the initial state\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t */\n\tloadStatusFromInitialState({ commit }) {\n\t\tconst status = loadState('user_status', 'status')\n\t\tcommit('loadStatusFromServer', status)\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\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 */\n\nimport Vue from 'vue'\nimport Vuex, { Store } from 'vuex'\nimport predefinedStatuses from './predefinedStatuses'\nimport userStatus from './userStatus'\n\nVue.use(Vuex)\n\nexport default new Store({\n\tmodules: {\n\t\tpredefinedStatuses,\n\t\tuserStatus,\n\t},\n\tstrict: true,\n})\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nimport Vue from 'vue'\nimport { getRequestToken } from '@nextcloud/auth'\nimport UserStatus from './UserStatus'\nimport store from './store'\nimport Avatar from '@nextcloud/vue/dist/Components/Avatar'\nimport { loadState } from '@nextcloud/initial-state'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nVue.prototype.t = t\nVue.prototype.$t = t\n\nconst avatarDiv = document.getElementById('avatardiv-menu')\nconst userStatusData = loadState('user_status', 'status')\nconst propsData = {\n\tpreloadedUserStatus: {\n\t\tmessage: userStatusData.message,\n\t\ticon: userStatusData.icon,\n\t\tstatus: userStatusData.status\n\t},\n\tuser: avatarDiv.dataset.user,\n\tdisplayName: avatarDiv.dataset.displayname,\n\turl: avatarDiv.dataset.avatar,\n\tdisableMenu: true,\n\tdisableTooltip: true,\n}\n\nconst AvatarInMenu = Vue.extend(Avatar)\nnew AvatarInMenu({ propsData }).$mount('#avatardiv-menu')\n\n// Register settings menu entry\nexport default new Vue({\n\tel: 'li[data-id=\"user_status-menuitem\"]',\n\t// eslint-disable-next-line vue/match-component-file-name\n\tname: 'UserStatusRoot',\n\trender: h => h(UserStatus),\n\tstore,\n})\n\n// Register dashboard status\ndocument.addEventListener('DOMContentLoaded', function() {\n\tif (!OCA.Dashboard) {\n\t\treturn\n\t}\n\n\tOCA.Dashboard.registerStatus('status', (el) => {\n\t\tconst Dashboard = Vue.extend(UserStatus)\n\t\treturn new Dashboard({\n\t\t\tpropsData: {\n\t\t\t\tinline: true,\n\t\t\t},\n\t\t\tstore,\n\t\t}).$mount(el)\n\t})\n})\n","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport { mapState } from 'vuex'\nimport { showError } from '@nextcloud/dialogs'\n\nexport default {\n\tcomputed: {\n\t\t...mapState({\n\t\t\tstatusType: state => state.userStatus.status,\n\t\t\tstatusIsUserDefined: state => state.userStatus.statusIsUserDefined,\n\t\t\tcustomIcon: state => state.userStatus.icon,\n\t\t\tcustomMessage: state => state.userStatus.message,\n\t\t}),\n\n\t\t/**\n\t\t * The message displayed in the top right corner\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tvisibleMessage() {\n\t\t\tif (this.customIcon && this.customMessage) {\n\t\t\t\treturn `${this.customIcon} ${this.customMessage}`\n\t\t\t}\n\n\t\t\tif (this.customMessage) {\n\t\t\t\treturn this.customMessage\n\t\t\t}\n\n\t\t\tif (this.statusIsUserDefined) {\n\t\t\t\tswitch (this.statusType) {\n\t\t\t\tcase 'online':\n\t\t\t\t\treturn this.$t('user_status', 'Online')\n\n\t\t\t\tcase 'away':\n\t\t\t\t\treturn this.$t('user_status', 'Away')\n\n\t\t\t\tcase 'dnd':\n\t\t\t\t\treturn this.$t('user_status', 'Do not disturb')\n\n\t\t\t\tcase 'invisible':\n\t\t\t\t\treturn this.$t('user_status', 'Invisible')\n\n\t\t\t\tcase 'offline':\n\t\t\t\t\treturn this.$t('user_status', 'Offline')\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this.$t('user_status', 'Set status')\n\t\t},\n\n\t\t/**\n\t\t * The status indicator icon\n\t\t *\n\t\t * @return {string | null}\n\t\t */\n\t\tstatusIcon() {\n\t\t\tswitch (this.statusType) {\n\t\t\tcase 'online':\n\t\t\t\treturn 'icon-user-status-online'\n\n\t\t\tcase 'away':\n\t\t\t\treturn 'icon-user-status-away'\n\n\t\t\tcase 'dnd':\n\t\t\t\treturn 'icon-user-status-dnd'\n\n\t\t\tcase 'invisible':\n\t\t\tcase 'offline':\n\t\t\t\treturn 'icon-user-status-invisible'\n\t\t\t}\n\n\t\t\treturn ''\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Changes the user-status\n\t\t *\n\t\t * @param {string} statusType (online / away / dnd / invisible)\n\t\t */\n\t\tasync changeStatus(statusType) {\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('setStatus', { statusType })\n\t\t\t} catch (err) {\n\t\t\t\tshowError(this.$t('user_status', 'There was an error saving the new status'))\n\t\t\t\tconsole.debug(err)\n\t\t\t}\n\t\t},\n\t},\n}\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\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 */\n\nconst dateFactory = () => {\n\treturn new Date()\n}\n\nexport {\n\tdateFactory,\n}\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, \".user-status-menu-item__header[data-v-5879d4bb]{display:flex !important;flex-direction:column !important;width:auto !important;height:66px !important;padding:10px 12px 5px 12px !important;align-items:flex-start !important;color:var(--color-main-text) !important}.user-status-menu-item__header[data-v-5879d4bb]:not([href]){height:var(--header-menu-item-height) !important;color:var(--color-text-maxcontrast) !important;cursor:default !important}.user-status-menu-item__header:not([href]) *[data-v-5879d4bb]{cursor:default !important}.user-status-menu-item__header[data-v-5879d4bb]:not([href]):hover{background-color:rgba(0,0,0,0) !important}.user-status-menu-item__header-content[data-v-5879d4bb]{display:inline-flex !important;font-weight:bold !important;gap:0 10px !important;width:auto}.user-status-menu-item__header-content-displayname[data-v-5879d4bb]{width:auto}.user-status-menu-item__header-content-placeholder[data-v-5879d4bb]{width:16px !important;height:24px !important;margin-right:10px !important;visibility:hidden !important}.user-status-menu-item__header span[data-v-5879d4bb]{color:var(--color-text-maxcontrast) !important}.user-status-menu-item__toggle-icon[data-v-5879d4bb]{width:16px;height:16px;margin-right:10px;opacity:1 !important;background-size:16px}.user-status-menu-item__toggle--inline[data-v-5879d4bb]{width:auto;min-width:44px;height:44px;margin:0;border:0;border-radius:var(--border-radius-pill);background-color:var(--color-background-translucent);font-size:inherit;font-weight:normal;-webkit-backdrop-filter:var(--background-blur);backdrop-filter:var(--background-blur)}.user-status-menu-item__toggle--inline[data-v-5879d4bb]:active,.user-status-menu-item__toggle--inline[data-v-5879d4bb]:hover,.user-status-menu-item__toggle--inline[data-v-5879d4bb]:focus{background-color:var(--color-background-hover)}.user-status-menu-item__toggle--inline[data-v-5879d4bb]:focus{border:2px solid var(--color-main-text) !important}li[data-v-5879d4bb]{list-style-type:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/user_status/src/UserStatus.vue\"],\"names\":[],\"mappings\":\"AAgOC,gDACC,uBAAA,CACA,gCAAA,CACA,qBAAA,CACA,sBAAA,CACA,qCAAA,CACA,iCAAA,CACA,uCAAA,CAEA,4DACC,gDAAA,CACA,8CAAA,CACA,yBAAA,CAEA,8DACC,yBAAA,CAGD,kEACC,yCAAA,CAIF,wDACC,8BAAA,CACA,2BAAA,CACA,qBAAA,CACA,UAAA,CAEA,oEACC,UAAA,CAGD,oEACC,qBAAA,CACA,sBAAA,CACA,4BAAA,CACA,4BAAA,CAIF,qDACC,8CAAA,CAKD,qDACC,UAAA,CACA,WAAA,CACA,iBAAA,CACA,oBAAA,CACA,oBAAA,CAID,wDACC,UAAA,CACA,cAAA,CACA,WAAA,CACA,QAAA,CACA,QAAA,CACA,uCAAA,CACA,oDAAA,CACA,iBAAA,CACA,kBAAA,CAEA,8CAAA,CACA,sCAAA,CAEA,2LAGC,8CAAA,CAED,8DACC,kDAAA,CAMJ,oBACC,oBAAA\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.user-status-menu-item {\\n\\t&__header {\\n\\t\\tdisplay: flex !important;\\n\\t\\tflex-direction: column !important;\\n\\t\\twidth: auto !important;\\n\\t\\theight: 44px * 1.5 !important;\\n\\t\\tpadding: 10px 12px 5px 12px !important;\\n\\t\\talign-items: flex-start !important;\\n\\t\\tcolor: var(--color-main-text) !important;\\n\\n\\t\\t&:not([href]) {\\n\\t\\t\\theight: var(--header-menu-item-height) !important;\\n\\t\\t\\tcolor: var(--color-text-maxcontrast) !important;\\n\\t\\t\\tcursor: default !important;\\n\\n\\t\\t\\t& * {\\n\\t\\t\\t\\tcursor: default !important;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&:hover {\\n\\t\\t\\t\\tbackground-color: transparent !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&-content {\\n\\t\\t\\tdisplay: inline-flex !important;\\n\\t\\t\\tfont-weight: bold !important;\\n\\t\\t\\tgap: 0 10px !important;\\n\\t\\t\\twidth: auto;\\n\\n\\t\\t\\t&-displayname {\\n\\t\\t\\t\\twidth: auto;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-placeholder {\\n\\t\\t\\t\\twidth: 16px !important;\\n\\t\\t\\t\\theight: 24px !important;\\n\\t\\t\\t\\tmargin-right: 10px !important;\\n\\t\\t\\t\\tvisibility: hidden !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\tspan {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast) !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&__toggle {\\n\\t\\t&-icon {\\n\\t\\t\\twidth: 16px;\\n\\t\\t\\theight: 16px;\\n\\t\\t\\tmargin-right: 10px;\\n\\t\\t\\topacity: 1 !important;\\n\\t\\t\\tbackground-size: 16px;\\n\\t\\t}\\n\\n\\t\\t// In dashboard\\n\\t\\t&--inline {\\n\\t\\t\\twidth: auto;\\n\\t\\t\\tmin-width: 44px;\\n\\t\\t\\theight: 44px;\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tborder: 0;\\n\\t\\t\\tborder-radius: var(--border-radius-pill);\\n\\t\\t\\tbackground-color: var(--color-background-translucent);\\n\\t\\t\\tfont-size: inherit;\\n\\t\\t\\tfont-weight: normal;\\n\\n\\t\\t\\t-webkit-backdrop-filter: var(--background-blur);\\n\\t\\t\\tbackdrop-filter: var(--background-blur);\\n\\n\\t\\t\\t&:active,\\n\\t\\t\\t&:hover,\\n\\t\\t\\t&:focus {\\n\\t\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t\\t}\\n\\t\\t\\t&:focus {\\n\\t\\t\\t\\tborder: 2px solid var(--color-main-text)!important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\nli {\\n\\tlist-style-type: none;\\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__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + \"user-status-modal\" + \"-\" + chunkId + \".js?v=\" + \"b2f975dbe50f5e918a41\" + \"\";\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 = 2613;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__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\t2613: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\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__(40814); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","sendHeartbeat","isAway","url","generateUrl","HttpClient","status","response","data","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","component","_vm","this","_h","$createElement","_c","_self","staticClass","inline","_e","attrs","profilePageLink","on","loadProfilePage","_v","_s","displayName","loadingProfilePage","t","tag","class","$event","preventDefault","stopPropagation","openModal","apply","arguments","statusIcon","visibleMessage","closeModal","fetchAllPredefinedStatuses","generateOcsUrl","ocs","actions","loadAllPredefinedStatuses","state","commit","predefinedStatuses","length","statuses","mutations","addPredefinedStatus","push","getters","fetchCurrentStatus","setStatus","statusType","setPredefinedMessage","messageId","clearAt","setCustomMessage","message","clearMessage","getTimestampForClearAt","date","dateFactory","type","setSeconds","getSeconds","time","Math","floor","getTime","Number","moment","endOf","format","statusIsUserDefined","icon","messageIsPredefined","loadStatusFromServer","emit","userId","getCurrentUser","uid","setStatusFromObject","rootState","resolvedClearAt","find","reFetchStatusFromServer","setStatusFromHeartbeat","loadStatusFromInitialState","loadState","Vue","Vuex","Store","modules","userStatus","strict","__webpack_nonce__","btoa","getRequestToken","avatarDiv","document","getElementById","userStatusData","propsData","preloadedUserStatus","user","dataset","displayname","avatar","disableMenu","disableTooltip","Avatar","$mount","el","name","render","h","UserStatus","store","addEventListener","OCA","Dashboard","registerStatus","computed","mapState","customIcon","customMessage","$t","methods","changeStatus","$store","dispatch","showError","console","debug","Date","___CSS_LOADER_EXPORT___","__webpack_module_cache__","moduleId","cachedModule","undefined","loaded","__webpack_modules__","call","m","amdD","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","key","splice","r","n","getter","__esModule","d","a","definition","defineProperty","enumerable","get","f","chunkId","Promise","all","reduce","promises","u","g","globalThis","Function","window","obj","prop","prototype","hasOwnProperty","l","done","script","needAttach","scripts","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","forEach","setTimeout","bind","target","head","appendChild","Symbol","toStringTag","value","nmd","paths","children","scriptUrl","importScripts","location","currentScript","replace","p","b","baseURI","self","href","installedChunks","installedChunkData","promise","reject","error","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"user_status-menu.js?v=d411dad3f0d8dec91a39","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/node_modules/@nextcloud/moment/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/apps/user_status/src/services/heartbeatService.js","webpack:///nextcloud/apps/user_status/src/UserStatus.vue","webpack:///nextcloud/apps/user_status/src/UserStatus.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/user_status/src/UserStatus.vue?b527","webpack://nextcloud/./apps/user_status/src/UserStatus.vue?d74a","webpack:///nextcloud/apps/user_status/src/UserStatus.vue?vue&type=template&id=5879d4bb&scoped=true&","webpack:///nextcloud/apps/user_status/src/services/predefinedStatusService.js","webpack:///nextcloud/apps/user_status/src/store/predefinedStatuses.js","webpack:///nextcloud/apps/user_status/src/services/statusService.js","webpack:///nextcloud/apps/user_status/src/services/clearAtService.js","webpack:///nextcloud/apps/user_status/src/store/userStatus.js","webpack:///nextcloud/apps/user_status/src/store/index.js","webpack:///nextcloud/apps/user_status/src/menu.js","webpack:///nextcloud/apps/user_status/src/mixins/OnlineStatusMixin.js","webpack:///nextcloud/apps/user_status/src/services/dateService.js","webpack:///nextcloud/apps/user_status/src/UserStatus.vue?vue&type=style&index=0&id=5879d4bb&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/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","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/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","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};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","var map = {\n\t\"./af\": 36026,\n\t\"./af.js\": 36026,\n\t\"./ar\": 28093,\n\t\"./ar-dz\": 41943,\n\t\"./ar-dz.js\": 41943,\n\t\"./ar-kw\": 23969,\n\t\"./ar-kw.js\": 23969,\n\t\"./ar-ly\": 40594,\n\t\"./ar-ly.js\": 40594,\n\t\"./ar-ma\": 18369,\n\t\"./ar-ma.js\": 18369,\n\t\"./ar-sa\": 32579,\n\t\"./ar-sa.js\": 32579,\n\t\"./ar-tn\": 76442,\n\t\"./ar-tn.js\": 76442,\n\t\"./ar.js\": 28093,\n\t\"./az\": 86425,\n\t\"./az.js\": 86425,\n\t\"./be\": 22004,\n\t\"./be.js\": 22004,\n\t\"./bg\": 42982,\n\t\"./bg.js\": 42982,\n\t\"./bm\": 21067,\n\t\"./bm.js\": 21067,\n\t\"./bn\": 8366,\n\t\"./bn-bd\": 63837,\n\t\"./bn-bd.js\": 63837,\n\t\"./bn.js\": 8366,\n\t\"./bo\": 95040,\n\t\"./bo.js\": 95040,\n\t\"./br\": 521,\n\t\"./br.js\": 521,\n\t\"./bs\": 83242,\n\t\"./bs.js\": 83242,\n\t\"./ca\": 73046,\n\t\"./ca.js\": 73046,\n\t\"./cs\": 25794,\n\t\"./cs.js\": 25794,\n\t\"./cv\": 28231,\n\t\"./cv.js\": 28231,\n\t\"./cy\": 10927,\n\t\"./cy.js\": 10927,\n\t\"./da\": 42832,\n\t\"./da.js\": 42832,\n\t\"./de\": 29415,\n\t\"./de-at\": 3331,\n\t\"./de-at.js\": 3331,\n\t\"./de-ch\": 45524,\n\t\"./de-ch.js\": 45524,\n\t\"./de.js\": 29415,\n\t\"./dv\": 44700,\n\t\"./dv.js\": 44700,\n\t\"./el\": 88752,\n\t\"./el.js\": 88752,\n\t\"./en-au\": 90444,\n\t\"./en-au.js\": 90444,\n\t\"./en-ca\": 65959,\n\t\"./en-ca.js\": 65959,\n\t\"./en-gb\": 62762,\n\t\"./en-gb.js\": 62762,\n\t\"./en-ie\": 40909,\n\t\"./en-ie.js\": 40909,\n\t\"./en-il\": 79909,\n\t\"./en-il.js\": 79909,\n\t\"./en-in\": 87942,\n\t\"./en-in.js\": 87942,\n\t\"./en-nz\": 75200,\n\t\"./en-nz.js\": 75200,\n\t\"./en-sg\": 21415,\n\t\"./en-sg.js\": 21415,\n\t\"./eo\": 27447,\n\t\"./eo.js\": 27447,\n\t\"./es\": 86756,\n\t\"./es-do\": 47049,\n\t\"./es-do.js\": 47049,\n\t\"./es-mx\": 15915,\n\t\"./es-mx.js\": 15915,\n\t\"./es-us\": 57133,\n\t\"./es-us.js\": 57133,\n\t\"./es.js\": 86756,\n\t\"./et\": 72182,\n\t\"./et.js\": 72182,\n\t\"./eu\": 14419,\n\t\"./eu.js\": 14419,\n\t\"./fa\": 2916,\n\t\"./fa.js\": 2916,\n\t\"./fi\": 49964,\n\t\"./fi.js\": 49964,\n\t\"./fil\": 16448,\n\t\"./fil.js\": 16448,\n\t\"./fo\": 26094,\n\t\"./fo.js\": 26094,\n\t\"./fr\": 35833,\n\t\"./fr-ca\": 56994,\n\t\"./fr-ca.js\": 56994,\n\t\"./fr-ch\": 2740,\n\t\"./fr-ch.js\": 2740,\n\t\"./fr.js\": 35833,\n\t\"./fy\": 69542,\n\t\"./fy.js\": 69542,\n\t\"./ga\": 93264,\n\t\"./ga.js\": 93264,\n\t\"./gd\": 77457,\n\t\"./gd.js\": 77457,\n\t\"./gl\": 83043,\n\t\"./gl.js\": 83043,\n\t\"./gom-deva\": 24034,\n\t\"./gom-deva.js\": 24034,\n\t\"./gom-latn\": 28379,\n\t\"./gom-latn.js\": 28379,\n\t\"./gu\": 406,\n\t\"./gu.js\": 406,\n\t\"./he\": 73219,\n\t\"./he.js\": 73219,\n\t\"./hi\": 99834,\n\t\"./hi.js\": 99834,\n\t\"./hr\": 28754,\n\t\"./hr.js\": 28754,\n\t\"./hu\": 93945,\n\t\"./hu.js\": 93945,\n\t\"./hy-am\": 81319,\n\t\"./hy-am.js\": 81319,\n\t\"./id\": 24875,\n\t\"./id.js\": 24875,\n\t\"./is\": 23724,\n\t\"./is.js\": 23724,\n\t\"./it\": 79906,\n\t\"./it-ch\": 34303,\n\t\"./it-ch.js\": 34303,\n\t\"./it.js\": 79906,\n\t\"./ja\": 77105,\n\t\"./ja.js\": 77105,\n\t\"./jv\": 15026,\n\t\"./jv.js\": 15026,\n\t\"./ka\": 67416,\n\t\"./ka.js\": 67416,\n\t\"./kk\": 79734,\n\t\"./kk.js\": 79734,\n\t\"./km\": 60757,\n\t\"./km.js\": 60757,\n\t\"./kn\": 58369,\n\t\"./kn.js\": 58369,\n\t\"./ko\": 77687,\n\t\"./ko.js\": 77687,\n\t\"./ku\": 95544,\n\t\"./ku.js\": 95544,\n\t\"./ky\": 85431,\n\t\"./ky.js\": 85431,\n\t\"./lb\": 13613,\n\t\"./lb.js\": 13613,\n\t\"./lo\": 34252,\n\t\"./lo.js\": 34252,\n\t\"./lt\": 84619,\n\t\"./lt.js\": 84619,\n\t\"./lv\": 93760,\n\t\"./lv.js\": 93760,\n\t\"./me\": 93393,\n\t\"./me.js\": 93393,\n\t\"./mi\": 12369,\n\t\"./mi.js\": 12369,\n\t\"./mk\": 48664,\n\t\"./mk.js\": 48664,\n\t\"./ml\": 23099,\n\t\"./ml.js\": 23099,\n\t\"./mn\": 98539,\n\t\"./mn.js\": 98539,\n\t\"./mr\": 778,\n\t\"./mr.js\": 778,\n\t\"./ms\": 39970,\n\t\"./ms-my\": 82625,\n\t\"./ms-my.js\": 82625,\n\t\"./ms.js\": 39970,\n\t\"./mt\": 15714,\n\t\"./mt.js\": 15714,\n\t\"./my\": 53055,\n\t\"./my.js\": 53055,\n\t\"./nb\": 73945,\n\t\"./nb.js\": 73945,\n\t\"./ne\": 63645,\n\t\"./ne.js\": 63645,\n\t\"./nl\": 4829,\n\t\"./nl-be\": 12823,\n\t\"./nl-be.js\": 12823,\n\t\"./nl.js\": 4829,\n\t\"./nn\": 23756,\n\t\"./nn.js\": 23756,\n\t\"./oc-lnc\": 41228,\n\t\"./oc-lnc.js\": 41228,\n\t\"./pa-in\": 97877,\n\t\"./pa-in.js\": 97877,\n\t\"./pl\": 53066,\n\t\"./pl.js\": 53066,\n\t\"./pt\": 28677,\n\t\"./pt-br\": 81592,\n\t\"./pt-br.js\": 81592,\n\t\"./pt.js\": 28677,\n\t\"./ro\": 32722,\n\t\"./ro.js\": 32722,\n\t\"./ru\": 59138,\n\t\"./ru.js\": 59138,\n\t\"./sd\": 32568,\n\t\"./sd.js\": 32568,\n\t\"./se\": 49753,\n\t\"./se.js\": 49753,\n\t\"./si\": 58024,\n\t\"./si.js\": 58024,\n\t\"./sk\": 31058,\n\t\"./sk.js\": 31058,\n\t\"./sl\": 43452,\n\t\"./sl.js\": 43452,\n\t\"./sq\": 2795,\n\t\"./sq.js\": 2795,\n\t\"./sr\": 26976,\n\t\"./sr-cyrl\": 38819,\n\t\"./sr-cyrl.js\": 38819,\n\t\"./sr.js\": 26976,\n\t\"./ss\": 7467,\n\t\"./ss.js\": 7467,\n\t\"./sv\": 42787,\n\t\"./sv.js\": 42787,\n\t\"./sw\": 80298,\n\t\"./sw.js\": 80298,\n\t\"./ta\": 57532,\n\t\"./ta.js\": 57532,\n\t\"./te\": 76076,\n\t\"./te.js\": 76076,\n\t\"./tet\": 40452,\n\t\"./tet.js\": 40452,\n\t\"./tg\": 64794,\n\t\"./tg.js\": 64794,\n\t\"./th\": 48245,\n\t\"./th.js\": 48245,\n\t\"./tk\": 8870,\n\t\"./tk.js\": 8870,\n\t\"./tl-ph\": 36056,\n\t\"./tl-ph.js\": 36056,\n\t\"./tlh\": 15249,\n\t\"./tlh.js\": 15249,\n\t\"./tr\": 22053,\n\t\"./tr.js\": 22053,\n\t\"./tzl\": 39871,\n\t\"./tzl.js\": 39871,\n\t\"./tzm\": 39574,\n\t\"./tzm-latn\": 19210,\n\t\"./tzm-latn.js\": 19210,\n\t\"./tzm.js\": 39574,\n\t\"./ug-cn\": 91532,\n\t\"./ug-cn.js\": 91532,\n\t\"./uk\": 11432,\n\t\"./uk.js\": 11432,\n\t\"./ur\": 88523,\n\t\"./ur.js\": 88523,\n\t\"./uz\": 54958,\n\t\"./uz-latn\": 68735,\n\t\"./uz-latn.js\": 68735,\n\t\"./uz.js\": 54958,\n\t\"./vi\": 83398,\n\t\"./vi.js\": 83398,\n\t\"./x-pseudo\": 56665,\n\t\"./x-pseudo.js\": 56665,\n\t\"./yo\": 11642,\n\t\"./yo.js\": 11642,\n\t\"./zh-cn\": 5462,\n\t\"./zh-cn.js\": 5462,\n\t\"./zh-hk\": 92530,\n\t\"./zh-hk.js\": 92530,\n\t\"./zh-mo\": 41650,\n\t\"./zh-mo.js\": 41650,\n\t\"./zh-tw\": 97333,\n\t\"./zh-tw.js\": 97333\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 93365;","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\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 */\n\nimport HttpClient from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\n\n/**\n * Sends a heartbeat\n *\n * @param {boolean} isAway Whether or not the user is active\n * @return {Promise<void>}\n */\nconst sendHeartbeat = async (isAway) => {\n\tconst url = generateUrl('/apps/user_status/heartbeat')\n\tconst response = await HttpClient.put(url, {\n\t\tstatus: isAway ? 'away' : 'online',\n\t})\n\treturn response.data\n}\n\nexport {\n\tsendHeartbeat,\n}\n","<!--\n - @copyright Copyright (c) 2020 Georg Ehrke <oc.list@georgehrke.com>\n - @author Georg Ehrke <oc.list@georgehrke.com>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<li>\n\t\t<div class=\"user-status-menu-item\">\n\t\t\t<!-- Username display -->\n\t\t\t<a v-if=\"!inline\"\n\t\t\t\tclass=\"user-status-menu-item__header\"\n\t\t\t\t:href=\"profilePageLink\"\n\t\t\t\t@click=\"loadProfilePage\">\n\t\t\t\t<div class=\"user-status-menu-item__header-content\">\n\t\t\t\t\t<div class=\"user-status-menu-item__header-content-displayname\">{{ displayName }}</div>\n\t\t\t\t\t<div v-if=\"!loadingProfilePage\" class=\"user-status-menu-item__header-content-placeholder\" />\n\t\t\t\t\t<div v-else class=\"icon-loading-small\" />\n\t\t\t\t</div>\n\t\t\t\t<div v-if=\"profileEnabled\">\n\t\t\t\t\t{{ t('user_status', 'View profile') }}\n\t\t\t\t</div>\n\t\t\t</a>\n\n\t\t\t<!-- Status modal toggle -->\n\t\t\t<toggle :is=\"inline ? 'button' : 'a'\"\n\t\t\t\t:class=\"{'user-status-menu-item__toggle--inline': inline}\"\n\t\t\t\tclass=\"user-status-menu-item__toggle\"\n\t\t\t\thref=\"#\"\n\t\t\t\t@click.prevent.stop=\"openModal\">\n\t\t\t\t<span :class=\"statusIcon\" class=\"user-status-menu-item__toggle-icon\" />\n\t\t\t\t{{ visibleMessage }}\n\t\t\t</toggle>\n\t\t</div>\n\n\t\t<!-- Status management modal -->\n\t\t<SetStatusModal v-if=\"isModalOpen\"\n\t\t\t@close=\"closeModal\" />\n\t</li>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { loadState } from '@nextcloud/initial-state'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport debounce from 'debounce'\n\nimport { sendHeartbeat } from './services/heartbeatService'\nimport OnlineStatusMixin from './mixins/OnlineStatusMixin'\n\nconst { profileEnabled } = loadState('user_status', 'profileEnabled', false)\n\nexport default {\n\tname: 'UserStatus',\n\n\tcomponents: {\n\t\tSetStatusModal: () => import(/* webpackChunkName: 'user-status-modal' */'./components/SetStatusModal'),\n\t},\n\tmixins: [OnlineStatusMixin],\n\n\tprops: {\n\t\tinline: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tdisplayName: getCurrentUser().displayName,\n\t\t\theartbeatInterval: null,\n\t\t\tisAway: false,\n\t\t\tisModalOpen: false,\n\t\t\tloadingProfilePage: false,\n\t\t\tmouseMoveListener: null,\n\t\t\tprofileEnabled,\n\t\t\tsetAwayTimeout: null,\n\t\t}\n\t},\n\tcomputed: {\n\t\t/**\n\t\t * The profile page link\n\t\t *\n\t\t * @return {string | null}\n\t\t */\n\t\tprofilePageLink() {\n\t\t\tif (this.profileEnabled) {\n\t\t\t\treturn generateUrl('/u/{userId}', { userId: getCurrentUser().uid })\n\t\t\t}\n\t\t\t// Since an anchor element is used rather than a button,\n\t\t\t// this hack removes href if the profile is disabled so that disabling pointer-events is not needed to prevent a click from opening a page\n\t\t\t// and to allow the hover event for styling\n\t\t\treturn null\n\t\t},\n\t},\n\n\t/**\n\t * Loads the current user's status from initial state\n\t * and stores it in Vuex\n\t */\n\tmounted() {\n\t\tsubscribe('settings:display-name:updated', this.handleDisplayNameUpdate)\n\t\tsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\n\t\tthis.$store.dispatch('loadStatusFromInitialState')\n\n\t\tif (OC.config.session_keepalive) {\n\t\t\t// Send the latest status to the server every 5 minutes\n\t\t\tthis.heartbeatInterval = setInterval(this._backgroundHeartbeat.bind(this), 1000 * 60 * 5)\n\t\t\tthis.setAwayTimeout = () => {\n\t\t\t\tthis.isAway = true\n\t\t\t}\n\t\t\t// Catch mouse movements, but debounce to once every 30 seconds\n\t\t\tthis.mouseMoveListener = debounce(() => {\n\t\t\t\tconst wasAway = this.isAway\n\t\t\t\tthis.isAway = false\n\t\t\t\t// Reset the two minute counter\n\t\t\t\tclearTimeout(this.setAwayTimeout)\n\t\t\t\t// If the user did not move the mouse within two minutes,\n\t\t\t\t// mark them as away\n\t\t\t\tsetTimeout(this.setAwayTimeout, 1000 * 60 * 2)\n\n\t\t\t\tif (wasAway) {\n\t\t\t\t\tthis._backgroundHeartbeat()\n\t\t\t\t}\n\t\t\t}, 1000 * 2, true)\n\t\t\twindow.addEventListener('mousemove', this.mouseMoveListener, {\n\t\t\t\tcapture: true,\n\t\t\t\tpassive: true,\n\t\t\t})\n\n\t\t\tthis._backgroundHeartbeat()\n\t\t}\n\t\tsubscribe('user_status:status.updated', this.handleUserStatusUpdated)\n\t},\n\n\t/**\n\t * Some housekeeping before destroying the component\n\t */\n\tbeforeDestroy() {\n\t\tunsubscribe('settings:display-name:updated', this.handleDisplayNameUpdate)\n\t\tunsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\t\twindow.removeEventListener('mouseMove', this.mouseMoveListener)\n\t\tclearInterval(this.heartbeatInterval)\n\t\tunsubscribe('user_status:status.updated', this.handleUserStatusUpdated)\n\t},\n\n\tmethods: {\n\t\thandleDisplayNameUpdate(displayName) {\n\t\t\tthis.displayName = displayName\n\t\t},\n\n\t\thandleProfileEnabledUpdate(profileEnabled) {\n\t\t\tthis.profileEnabled = profileEnabled\n\t\t},\n\n\t\tloadProfilePage() {\n\t\t\tif (this.profileEnabled) {\n\t\t\t\tthis.loadingProfilePage = true\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Opens the modal to set a custom status\n\t\t */\n\t\topenModal() {\n\t\t\tthis.isModalOpen = true\n\t\t},\n\t\t/**\n\t\t * Closes the modal\n\t\t */\n\t\tcloseModal() {\n\t\t\tthis.isModalOpen = false\n\t\t},\n\n\t\t/**\n\t\t * Sends the status heartbeat to the server\n\t\t *\n\t\t * @return {Promise<void>}\n\t\t * @private\n\t\t */\n\t\tasync _backgroundHeartbeat() {\n\t\t\ttry {\n\t\t\t\tconst status = await sendHeartbeat(this.isAway)\n\t\t\t\tif (status?.userId) {\n\t\t\t\t\tthis.$store.dispatch('setStatusFromHeartbeat', status)\n\t\t\t\t} else {\n\t\t\t\t\tawait this.$store.dispatch('reFetchStatusFromServer')\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.debug('Failed sending heartbeat, got: ' + error.response?.status)\n\t\t\t}\n\t\t},\n\t\thandleUserStatusUpdated(state) {\n\t\t\tif (OC.getCurrentUser().uid === state.userId) {\n\t\t\t\tthis.$store.dispatch('setStatusFromObject', {\n\t\t\t\t\tstatus: state.status,\n\t\t\t\t\ticon: state.icon,\n\t\t\t\t\tmessage: state.message,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.user-status-menu-item {\n\t&__header {\n\t\tdisplay: flex !important;\n\t\tflex-direction: column !important;\n\t\twidth: auto !important;\n\t\theight: 44px * 1.5 !important;\n\t\tpadding: 10px 12px 5px 12px !important;\n\t\talign-items: flex-start !important;\n\t\tcolor: var(--color-main-text) !important;\n\n\t\t&:not([href]) {\n\t\t\theight: var(--header-menu-item-height) !important;\n\t\t\tcolor: var(--color-text-maxcontrast) !important;\n\t\t\tcursor: default !important;\n\n\t\t\t& * {\n\t\t\t\tcursor: default !important;\n\t\t\t}\n\n\t\t\t&:hover {\n\t\t\t\tbackground-color: transparent !important;\n\t\t\t}\n\t\t}\n\n\t\t&-content {\n\t\t\tdisplay: inline-flex !important;\n\t\t\tfont-weight: bold !important;\n\t\t\tgap: 0 10px !important;\n\t\t\twidth: auto;\n\n\t\t\t&-displayname {\n\t\t\t\twidth: auto;\n\t\t\t}\n\n\t\t\t&-placeholder {\n\t\t\t\twidth: 16px !important;\n\t\t\t\theight: 24px !important;\n\t\t\t\tmargin-right: 10px !important;\n\t\t\t\tvisibility: hidden !important;\n\t\t\t}\n\t\t}\n\n\t\tspan {\n\t\t\tcolor: var(--color-text-maxcontrast) !important;\n\t\t}\n\t}\n\n\t&__toggle {\n\t\t&-icon {\n\t\t\twidth: 16px;\n\t\t\theight: 16px;\n\t\t\tmargin-right: 10px;\n\t\t\topacity: 1 !important;\n\t\t\tbackground-size: 16px;\n\t\t}\n\n\t\t// In dashboard\n\t\t&--inline {\n\t\t\twidth: auto;\n\t\t\tmin-width: 44px;\n\t\t\theight: 44px;\n\t\t\tmargin: 0;\n\t\t\tborder: 0;\n\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\tbackground-color: var(--color-background-translucent);\n\t\t\tfont-size: inherit;\n\t\t\tfont-weight: normal;\n\n\t\t\t-webkit-backdrop-filter: var(--background-blur);\n\t\t\tbackdrop-filter: var(--background-blur);\n\n\t\t\t&:active,\n\t\t\t&:hover,\n\t\t\t&:focus {\n\t\t\t\tbackground-color: var(--color-background-hover);\n\t\t\t}\n\t\t\t&:focus {\n\t\t\t\tborder: 2px solid var(--color-main-text)!important;\n\t\t\t}\n\t\t}\n\t}\n}\n\nli {\n\tlist-style-type: none;\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!./UserStatus.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!./UserStatus.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!./UserStatus.vue?vue&type=style&index=0&id=5879d4bb&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!./UserStatus.vue?vue&type=style&index=0&id=5879d4bb&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserStatus.vue?vue&type=template&id=5879d4bb&scoped=true&\"\nimport script from \"./UserStatus.vue?vue&type=script&lang=js&\"\nexport * from \"./UserStatus.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UserStatus.vue?vue&type=style&index=0&id=5879d4bb&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 \"5879d4bb\",\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('li',[_c('div',{staticClass:\"user-status-menu-item\"},[(!_vm.inline)?_c('a',{staticClass:\"user-status-menu-item__header\",attrs:{\"href\":_vm.profilePageLink},on:{\"click\":_vm.loadProfilePage}},[_c('div',{staticClass:\"user-status-menu-item__header-content\"},[_c('div',{staticClass:\"user-status-menu-item__header-content-displayname\"},[_vm._v(_vm._s(_vm.displayName))]),_vm._v(\" \"),(!_vm.loadingProfilePage)?_c('div',{staticClass:\"user-status-menu-item__header-content-placeholder\"}):_c('div',{staticClass:\"icon-loading-small\"})]),_vm._v(\" \"),(_vm.profileEnabled)?_c('div',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('user_status', 'View profile'))+\"\\n\\t\\t\\t\")]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c(_vm.inline ? 'button' : 'a',{tag:\"toggle\",staticClass:\"user-status-menu-item__toggle\",class:{'user-status-menu-item__toggle--inline': _vm.inline},attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.openModal.apply(null, arguments)}}},[_c('span',{staticClass:\"user-status-menu-item__toggle-icon\",class:_vm.statusIcon}),_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.visibleMessage)+\"\\n\\t\\t\")])],1),_vm._v(\" \"),(_vm.isModalOpen)?_c('SetStatusModal',{on:{\"close\":_vm.closeModal}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\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 */\n\nimport HttpClient from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n * Fetches all predefined statuses from the server\n *\n * @return {Promise<void>}\n */\nconst fetchAllPredefinedStatuses = async () => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/predefined_statuses?format=json')\n\tconst response = await HttpClient.get(url)\n\n\treturn response.data.ocs.data\n}\n\nexport {\n\tfetchAllPredefinedStatuses,\n}\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\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 */\n\nimport { fetchAllPredefinedStatuses } from '../services/predefinedStatusService'\n\nconst state = {\n\tpredefinedStatuses: [],\n}\n\nconst mutations = {\n\n\t/**\n\t * Adds a predefined status to the state\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} status The status to add\n\t */\n\taddPredefinedStatus(state, status) {\n\t\tstate.predefinedStatuses.push(status)\n\t},\n}\n\nconst getters = {}\n\nconst actions = {\n\n\t/**\n\t * Loads all predefined statuses from the server\n\t *\n\t * @param {object} vuex The Vuex components\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state -\n\t */\n\tasync loadAllPredefinedStatuses({ state, commit }) {\n\t\tif (state.predefinedStatuses.length > 0) {\n\t\t\treturn\n\t\t}\n\n\t\tconst statuses = await fetchAllPredefinedStatuses()\n\t\tfor (const status of statuses) {\n\t\t\tcommit('addPredefinedStatus', status)\n\t\t}\n\t},\n\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\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 */\n\nimport HttpClient from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n * Fetches the current user-status\n *\n * @return {Promise<object>}\n */\nconst fetchCurrentStatus = async () => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status')\n\tconst response = await HttpClient.get(url)\n\n\treturn response.data.ocs.data\n}\n\n/**\n * Sets the status\n *\n * @param {string} statusType The status (online / away / dnd / invisible)\n * @return {Promise<void>}\n */\nconst setStatus = async (statusType) => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status/status')\n\tawait HttpClient.put(url, {\n\t\tstatusType,\n\t})\n}\n\n/**\n * Sets a message based on our predefined statuses\n *\n * @param {string} messageId The id of the message, taken from predefined status service\n * @param {number | null} clearAt When to automatically clean the status\n * @return {Promise<void>}\n */\nconst setPredefinedMessage = async (messageId, clearAt = null) => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status/message/predefined?format=json')\n\tawait HttpClient.put(url, {\n\t\tmessageId,\n\t\tclearAt,\n\t})\n}\n\n/**\n * Sets a custom message\n *\n * @param {string} message The user-defined message\n * @param {string | null} statusIcon The user-defined icon\n * @param {number | null} clearAt When to automatically clean the status\n * @return {Promise<void>}\n */\nconst setCustomMessage = async (message, statusIcon = null, clearAt = null) => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status/message/custom?format=json')\n\tawait HttpClient.put(url, {\n\t\tmessage,\n\t\tstatusIcon,\n\t\tclearAt,\n\t})\n}\n\n/**\n * Clears the current status of the user\n *\n * @return {Promise<void>}\n */\nconst clearMessage = async () => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status/message?format=json')\n\tawait HttpClient.delete(url)\n}\n\nexport {\n\tfetchCurrentStatus,\n\tsetStatus,\n\tsetCustomMessage,\n\tsetPredefinedMessage,\n\tclearMessage,\n}\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\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 */\n\nimport {\n\tdateFactory,\n} from './dateService'\nimport moment from '@nextcloud/moment'\n\n/**\n * Calculates the actual clearAt timestamp\n *\n * @param {object | null} clearAt The clear-at config\n * @return {number | null}\n */\nconst getTimestampForClearAt = (clearAt) => {\n\tif (clearAt === null) {\n\t\treturn null\n\t}\n\n\tconst date = dateFactory()\n\n\tif (clearAt.type === 'period') {\n\t\tdate.setSeconds(date.getSeconds() + clearAt.time)\n\t\treturn Math.floor(date.getTime() / 1000)\n\t}\n\tif (clearAt.type === 'end-of') {\n\t\tswitch (clearAt.time) {\n\t\tcase 'day':\n\t\tcase 'week':\n\t\t\treturn Number(moment(date).endOf(clearAt.time).format('X'))\n\t\t}\n\t}\n\t// This is not an officially supported type\n\t// but only used internally to show the remaining time\n\t// in the Set Status Modal\n\tif (clearAt.type === '_time') {\n\t\treturn clearAt.time\n\t}\n\n\treturn null\n}\n\nexport {\n\tgetTimestampForClearAt,\n}\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\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 */\n\nimport {\n\tfetchCurrentStatus,\n\tsetStatus,\n\tsetPredefinedMessage,\n\tsetCustomMessage,\n\tclearMessage,\n} from '../services/statusService'\nimport { loadState } from '@nextcloud/initial-state'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getTimestampForClearAt } from '../services/clearAtService'\nimport { emit } from '@nextcloud/event-bus'\n\nconst state = {\n\t// Status (online / away / dnd / invisible / offline)\n\tstatus: null,\n\t// Whether or not the status is user-defined\n\tstatusIsUserDefined: null,\n\t// A custom message set by the user\n\tmessage: null,\n\t// The icon selected by the user\n\ticon: null,\n\t// When to automatically clean the status\n\tclearAt: null,\n\t// Whether or not the message is predefined\n\t// (and can automatically be translated by Nextcloud)\n\tmessageIsPredefined: null,\n\t// The id of the message in case it's predefined\n\tmessageId: null,\n}\n\nconst mutations = {\n\n\t/**\n\t * Sets a new status\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} data The destructuring object\n\t * @param {string} data.statusType The new status type\n\t */\n\tsetStatus(state, { statusType }) {\n\t\tstate.status = statusType\n\t\tstate.statusIsUserDefined = true\n\t},\n\n\t/**\n\t * Sets a message using a predefined message\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} data The destructuring object\n\t * @param {string} data.messageId The messageId\n\t * @param {number | null} data.clearAt When to automatically clear the status\n\t * @param {string} data.message The message\n\t * @param {string} data.icon The icon\n\t */\n\tsetPredefinedMessage(state, { messageId, clearAt, message, icon }) {\n\t\tstate.messageId = messageId\n\t\tstate.messageIsPredefined = true\n\n\t\tstate.message = message\n\t\tstate.icon = icon\n\t\tstate.clearAt = clearAt\n\t},\n\n\t/**\n\t * Sets a custom message\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} data The destructuring object\n\t * @param {string} data.message The message\n\t * @param {string} data.icon The icon\n\t * @param {number} data.clearAt When to automatically clear the status\n\t */\n\tsetCustomMessage(state, { message, icon, clearAt }) {\n\t\tstate.messageId = null\n\t\tstate.messageIsPredefined = false\n\n\t\tstate.message = message\n\t\tstate.icon = icon\n\t\tstate.clearAt = clearAt\n\t},\n\n\t/**\n\t * Clears the status\n\t *\n\t * @param {object} state The Vuex state\n\t */\n\tclearMessage(state) {\n\t\tstate.messageId = null\n\t\tstate.messageIsPredefined = false\n\n\t\tstate.message = null\n\t\tstate.icon = null\n\t\tstate.clearAt = null\n\t},\n\n\t/**\n\t * Loads the status from initial state\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} data The destructuring object\n\t * @param {string} data.status The status type\n\t * @param {boolean} data.statusIsUserDefined Whether or not this status is user-defined\n\t * @param {string} data.message The message\n\t * @param {string} data.icon The icon\n\t * @param {number} data.clearAt When to automatically clear the status\n\t * @param {boolean} data.messageIsPredefined Whether or not the message is predefined\n\t * @param {string} data.messageId The id of the predefined message\n\t */\n\tloadStatusFromServer(state, { status, statusIsUserDefined, message, icon, clearAt, messageIsPredefined, messageId }) {\n\t\tstate.status = status\n\t\tstate.message = message\n\t\tstate.icon = icon\n\n\t\t// Don't overwrite certain values if the refreshing comes in via short updates\n\t\t// E.g. from talk participant list which only has the status, message and icon\n\t\tif (typeof statusIsUserDefined !== 'undefined') {\n\t\t\tstate.statusIsUserDefined = statusIsUserDefined\n\t\t}\n\t\tif (typeof clearAt !== 'undefined') {\n\t\t\tstate.clearAt = clearAt\n\t\t}\n\t\tif (typeof messageIsPredefined !== 'undefined') {\n\t\t\tstate.messageIsPredefined = messageIsPredefined\n\t\t}\n\t\tif (typeof messageId !== 'undefined') {\n\t\t\tstate.messageId = messageId\n\t\t}\n\t},\n}\n\nconst getters = {}\n\nconst actions = {\n\n\t/**\n\t * Sets a new status\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state The Vuex state object\n\t * @param {object} data The data destructuring object\n\t * @param {string} data.statusType The new status type\n\t * @return {Promise<void>}\n\t */\n\tasync setStatus({ commit, state }, { statusType }) {\n\t\tawait setStatus(statusType)\n\t\tcommit('setStatus', { statusType })\n\t\temit('user_status:status.updated', {\n\t\t\tstatus: state.status,\n\t\t\tmessage: state.message,\n\t\t\ticon: state.icon,\n\t\t\tclearAt: state.clearAt,\n\t\t\tuserId: getCurrentUser()?.uid,\n\t\t})\n\t},\n\n\t/**\n\t * Update status from 'user_status:status.updated' update.\n\t * This doesn't trigger another 'user_status:status.updated'\n\t * event.\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state The Vuex state object\n\t * @param {string} status The new status\n\t * @return {Promise<void>}\n\t */\n\tasync setStatusFromObject({ commit, state }, status) {\n\t\tcommit('loadStatusFromServer', status)\n\t},\n\n\t/**\n\t * Sets a message using a predefined message\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state The Vuex state object\n\t * @param {object} vuex.rootState The Vuex root state\n\t * @param {object} data The data destructuring object\n\t * @param {string} data.messageId The messageId\n\t * @param {object | null} data.clearAt When to automatically clear the status\n\t * @return {Promise<void>}\n\t */\n\tasync setPredefinedMessage({ commit, rootState, state }, { messageId, clearAt }) {\n\t\tconst resolvedClearAt = getTimestampForClearAt(clearAt)\n\n\t\tawait setPredefinedMessage(messageId, resolvedClearAt)\n\t\tconst status = rootState.predefinedStatuses.predefinedStatuses.find((status) => status.id === messageId)\n\t\tconst { message, icon } = status\n\n\t\tcommit('setPredefinedMessage', { messageId, clearAt: resolvedClearAt, message, icon })\n\t\temit('user_status:status.updated', {\n\t\t\tstatus: state.status,\n\t\t\tmessage: state.message,\n\t\t\ticon: state.icon,\n\t\t\tclearAt: state.clearAt,\n\t\t\tuserId: getCurrentUser()?.uid,\n\t\t})\n\t},\n\n\t/**\n\t * Sets a custom message\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state The Vuex state object\n\t * @param {object} data The data destructuring object\n\t * @param {string} data.message The message\n\t * @param {string} data.icon The icon\n\t * @param {object | null} data.clearAt When to automatically clear the status\n\t * @return {Promise<void>}\n\t */\n\tasync setCustomMessage({ commit, state }, { message, icon, clearAt }) {\n\t\tconst resolvedClearAt = getTimestampForClearAt(clearAt)\n\n\t\tawait setCustomMessage(message, icon, resolvedClearAt)\n\t\tcommit('setCustomMessage', { message, icon, clearAt: resolvedClearAt })\n\t\temit('user_status:status.updated', {\n\t\t\tstatus: state.status,\n\t\t\tmessage: state.message,\n\t\t\ticon: state.icon,\n\t\t\tclearAt: state.clearAt,\n\t\t\tuserId: getCurrentUser()?.uid,\n\t\t})\n\t},\n\n\t/**\n\t * Clears the status\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state The Vuex state object\n\t * @return {Promise<void>}\n\t */\n\tasync clearMessage({ commit, state }) {\n\t\tawait clearMessage()\n\t\tcommit('clearMessage')\n\t\temit('user_status:status.updated', {\n\t\t\tstatus: state.status,\n\t\t\tmessage: state.message,\n\t\t\ticon: state.icon,\n\t\t\tclearAt: state.clearAt,\n\t\t\tuserId: getCurrentUser()?.uid,\n\t\t})\n\t},\n\n\t/**\n\t * Re-fetches the status from the server\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @return {Promise<void>}\n\t */\n\tasync reFetchStatusFromServer({ commit }) {\n\t\tconst status = await fetchCurrentStatus()\n\t\tcommit('loadStatusFromServer', status)\n\t},\n\n\t/**\n\t * Stores the status we got in the reply of the heartbeat\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} status The data destructuring object\n\t * @param {string} status.status The status type\n\t * @param {boolean} status.statusIsUserDefined Whether or not this status is user-defined\n\t * @param {string} status.message The message\n\t * @param {string} status.icon The icon\n\t * @param {number} status.clearAt When to automatically clear the status\n\t * @param {boolean} status.messageIsPredefined Whether or not the message is predefined\n\t * @param {string} status.messageId The id of the predefined message\n\t * @return {Promise<void>}\n\t */\n\tasync setStatusFromHeartbeat({ commit }, status) {\n\t\tcommit('loadStatusFromServer', status)\n\t},\n\n\t/**\n\t * Loads the server from the initial state\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t */\n\tloadStatusFromInitialState({ commit }) {\n\t\tconst status = loadState('user_status', 'status')\n\t\tcommit('loadStatusFromServer', status)\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\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 */\n\nimport Vue from 'vue'\nimport Vuex, { Store } from 'vuex'\nimport predefinedStatuses from './predefinedStatuses'\nimport userStatus from './userStatus'\n\nVue.use(Vuex)\n\nexport default new Store({\n\tmodules: {\n\t\tpredefinedStatuses,\n\t\tuserStatus,\n\t},\n\tstrict: true,\n})\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nimport Vue from 'vue'\nimport { getRequestToken } from '@nextcloud/auth'\nimport UserStatus from './UserStatus'\nimport store from './store'\nimport Avatar from '@nextcloud/vue/dist/Components/Avatar'\nimport { loadState } from '@nextcloud/initial-state'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nVue.prototype.t = t\nVue.prototype.$t = t\n\nconst avatarDiv = document.getElementById('avatardiv-menu')\nconst userStatusData = loadState('user_status', 'status')\nconst propsData = {\n\tpreloadedUserStatus: {\n\t\tmessage: userStatusData.message,\n\t\ticon: userStatusData.icon,\n\t\tstatus: userStatusData.status\n\t},\n\tuser: avatarDiv.dataset.user,\n\tdisplayName: avatarDiv.dataset.displayname,\n\turl: avatarDiv.dataset.avatar,\n\tdisableMenu: true,\n\tdisableTooltip: true,\n}\n\nconst AvatarInMenu = Vue.extend(Avatar)\nnew AvatarInMenu({ propsData }).$mount('#avatardiv-menu')\n\n// Register settings menu entry\nexport default new Vue({\n\tel: 'li[data-id=\"user_status-menuitem\"]',\n\t// eslint-disable-next-line vue/match-component-file-name\n\tname: 'UserStatusRoot',\n\trender: h => h(UserStatus),\n\tstore,\n})\n\n// Register dashboard status\ndocument.addEventListener('DOMContentLoaded', function() {\n\tif (!OCA.Dashboard) {\n\t\treturn\n\t}\n\n\tOCA.Dashboard.registerStatus('status', (el) => {\n\t\tconst Dashboard = Vue.extend(UserStatus)\n\t\treturn new Dashboard({\n\t\t\tpropsData: {\n\t\t\t\tinline: true,\n\t\t\t},\n\t\t\tstore,\n\t\t}).$mount(el)\n\t})\n})\n","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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 */\n\nimport { mapState } from 'vuex'\nimport { showError } from '@nextcloud/dialogs'\n\nexport default {\n\tcomputed: {\n\t\t...mapState({\n\t\t\tstatusType: state => state.userStatus.status,\n\t\t\tstatusIsUserDefined: state => state.userStatus.statusIsUserDefined,\n\t\t\tcustomIcon: state => state.userStatus.icon,\n\t\t\tcustomMessage: state => state.userStatus.message,\n\t\t}),\n\n\t\t/**\n\t\t * The message displayed in the top right corner\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tvisibleMessage() {\n\t\t\tif (this.customIcon && this.customMessage) {\n\t\t\t\treturn `${this.customIcon} ${this.customMessage}`\n\t\t\t}\n\n\t\t\tif (this.customMessage) {\n\t\t\t\treturn this.customMessage\n\t\t\t}\n\n\t\t\tif (this.statusIsUserDefined) {\n\t\t\t\tswitch (this.statusType) {\n\t\t\t\tcase 'online':\n\t\t\t\t\treturn this.$t('user_status', 'Online')\n\n\t\t\t\tcase 'away':\n\t\t\t\t\treturn this.$t('user_status', 'Away')\n\n\t\t\t\tcase 'dnd':\n\t\t\t\t\treturn this.$t('user_status', 'Do not disturb')\n\n\t\t\t\tcase 'invisible':\n\t\t\t\t\treturn this.$t('user_status', 'Invisible')\n\n\t\t\t\tcase 'offline':\n\t\t\t\t\treturn this.$t('user_status', 'Offline')\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this.$t('user_status', 'Set status')\n\t\t},\n\n\t\t/**\n\t\t * The status indicator icon\n\t\t *\n\t\t * @return {string | null}\n\t\t */\n\t\tstatusIcon() {\n\t\t\tswitch (this.statusType) {\n\t\t\tcase 'online':\n\t\t\t\treturn 'icon-user-status-online'\n\n\t\t\tcase 'away':\n\t\t\t\treturn 'icon-user-status-away'\n\n\t\t\tcase 'dnd':\n\t\t\t\treturn 'icon-user-status-dnd'\n\n\t\t\tcase 'invisible':\n\t\t\tcase 'offline':\n\t\t\t\treturn 'icon-user-status-invisible'\n\t\t\t}\n\n\t\t\treturn ''\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Changes the user-status\n\t\t *\n\t\t * @param {string} statusType (online / away / dnd / invisible)\n\t\t */\n\t\tasync changeStatus(statusType) {\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('setStatus', { statusType })\n\t\t\t} catch (err) {\n\t\t\t\tshowError(this.$t('user_status', 'There was an error saving the new status'))\n\t\t\t\tconsole.debug(err)\n\t\t\t}\n\t\t},\n\t},\n}\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\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 */\n\nconst dateFactory = () => {\n\treturn new Date()\n}\n\nexport {\n\tdateFactory,\n}\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, \".user-status-menu-item__header[data-v-5879d4bb]{display:flex !important;flex-direction:column !important;width:auto !important;height:66px !important;padding:10px 12px 5px 12px !important;align-items:flex-start !important;color:var(--color-main-text) !important}.user-status-menu-item__header[data-v-5879d4bb]:not([href]){height:var(--header-menu-item-height) !important;color:var(--color-text-maxcontrast) !important;cursor:default !important}.user-status-menu-item__header:not([href]) *[data-v-5879d4bb]{cursor:default !important}.user-status-menu-item__header[data-v-5879d4bb]:not([href]):hover{background-color:rgba(0,0,0,0) !important}.user-status-menu-item__header-content[data-v-5879d4bb]{display:inline-flex !important;font-weight:bold !important;gap:0 10px !important;width:auto}.user-status-menu-item__header-content-displayname[data-v-5879d4bb]{width:auto}.user-status-menu-item__header-content-placeholder[data-v-5879d4bb]{width:16px !important;height:24px !important;margin-right:10px !important;visibility:hidden !important}.user-status-menu-item__header span[data-v-5879d4bb]{color:var(--color-text-maxcontrast) !important}.user-status-menu-item__toggle-icon[data-v-5879d4bb]{width:16px;height:16px;margin-right:10px;opacity:1 !important;background-size:16px}.user-status-menu-item__toggle--inline[data-v-5879d4bb]{width:auto;min-width:44px;height:44px;margin:0;border:0;border-radius:var(--border-radius-pill);background-color:var(--color-background-translucent);font-size:inherit;font-weight:normal;-webkit-backdrop-filter:var(--background-blur);backdrop-filter:var(--background-blur)}.user-status-menu-item__toggle--inline[data-v-5879d4bb]:active,.user-status-menu-item__toggle--inline[data-v-5879d4bb]:hover,.user-status-menu-item__toggle--inline[data-v-5879d4bb]:focus{background-color:var(--color-background-hover)}.user-status-menu-item__toggle--inline[data-v-5879d4bb]:focus{border:2px solid var(--color-main-text) !important}li[data-v-5879d4bb]{list-style-type:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/user_status/src/UserStatus.vue\"],\"names\":[],\"mappings\":\"AAgOC,gDACC,uBAAA,CACA,gCAAA,CACA,qBAAA,CACA,sBAAA,CACA,qCAAA,CACA,iCAAA,CACA,uCAAA,CAEA,4DACC,gDAAA,CACA,8CAAA,CACA,yBAAA,CAEA,8DACC,yBAAA,CAGD,kEACC,yCAAA,CAIF,wDACC,8BAAA,CACA,2BAAA,CACA,qBAAA,CACA,UAAA,CAEA,oEACC,UAAA,CAGD,oEACC,qBAAA,CACA,sBAAA,CACA,4BAAA,CACA,4BAAA,CAIF,qDACC,8CAAA,CAKD,qDACC,UAAA,CACA,WAAA,CACA,iBAAA,CACA,oBAAA,CACA,oBAAA,CAID,wDACC,UAAA,CACA,cAAA,CACA,WAAA,CACA,QAAA,CACA,QAAA,CACA,uCAAA,CACA,oDAAA,CACA,iBAAA,CACA,kBAAA,CAEA,8CAAA,CACA,sCAAA,CAEA,2LAGC,8CAAA,CAED,8DACC,kDAAA,CAMJ,oBACC,oBAAA\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.user-status-menu-item {\\n\\t&__header {\\n\\t\\tdisplay: flex !important;\\n\\t\\tflex-direction: column !important;\\n\\t\\twidth: auto !important;\\n\\t\\theight: 44px * 1.5 !important;\\n\\t\\tpadding: 10px 12px 5px 12px !important;\\n\\t\\talign-items: flex-start !important;\\n\\t\\tcolor: var(--color-main-text) !important;\\n\\n\\t\\t&:not([href]) {\\n\\t\\t\\theight: var(--header-menu-item-height) !important;\\n\\t\\t\\tcolor: var(--color-text-maxcontrast) !important;\\n\\t\\t\\tcursor: default !important;\\n\\n\\t\\t\\t& * {\\n\\t\\t\\t\\tcursor: default !important;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&:hover {\\n\\t\\t\\t\\tbackground-color: transparent !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&-content {\\n\\t\\t\\tdisplay: inline-flex !important;\\n\\t\\t\\tfont-weight: bold !important;\\n\\t\\t\\tgap: 0 10px !important;\\n\\t\\t\\twidth: auto;\\n\\n\\t\\t\\t&-displayname {\\n\\t\\t\\t\\twidth: auto;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-placeholder {\\n\\t\\t\\t\\twidth: 16px !important;\\n\\t\\t\\t\\theight: 24px !important;\\n\\t\\t\\t\\tmargin-right: 10px !important;\\n\\t\\t\\t\\tvisibility: hidden !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\tspan {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast) !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&__toggle {\\n\\t\\t&-icon {\\n\\t\\t\\twidth: 16px;\\n\\t\\t\\theight: 16px;\\n\\t\\t\\tmargin-right: 10px;\\n\\t\\t\\topacity: 1 !important;\\n\\t\\t\\tbackground-size: 16px;\\n\\t\\t}\\n\\n\\t\\t// In dashboard\\n\\t\\t&--inline {\\n\\t\\t\\twidth: auto;\\n\\t\\t\\tmin-width: 44px;\\n\\t\\t\\theight: 44px;\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tborder: 0;\\n\\t\\t\\tborder-radius: var(--border-radius-pill);\\n\\t\\t\\tbackground-color: var(--color-background-translucent);\\n\\t\\t\\tfont-size: inherit;\\n\\t\\t\\tfont-weight: normal;\\n\\n\\t\\t\\t-webkit-backdrop-filter: var(--background-blur);\\n\\t\\t\\tbackdrop-filter: var(--background-blur);\\n\\n\\t\\t\\t&:active,\\n\\t\\t\\t&:hover,\\n\\t\\t\\t&:focus {\\n\\t\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t\\t}\\n\\t\\t\\t&:focus {\\n\\t\\t\\t\\tborder: 2px solid var(--color-main-text)!important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\nli {\\n\\tlist-style-type: none;\\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__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + \"user-status-modal\" + \"-\" + chunkId + \".js?v=\" + \"b2f975dbe50f5e918a41\" + \"\";\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 = 2613;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__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\t2613: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\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));","__webpack_require__.nc = undefined;","// 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__(40814); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","sendHeartbeat","isAway","url","generateUrl","HttpClient","status","response","data","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","component","_vm","this","_h","$createElement","_c","_self","staticClass","inline","_e","attrs","profilePageLink","on","loadProfilePage","_v","_s","displayName","loadingProfilePage","t","tag","class","$event","preventDefault","stopPropagation","openModal","apply","arguments","statusIcon","visibleMessage","closeModal","fetchAllPredefinedStatuses","generateOcsUrl","ocs","actions","loadAllPredefinedStatuses","state","commit","predefinedStatuses","length","statuses","mutations","addPredefinedStatus","push","getters","fetchCurrentStatus","setStatus","statusType","setPredefinedMessage","messageId","clearAt","setCustomMessage","message","clearMessage","getTimestampForClearAt","date","dateFactory","type","setSeconds","getSeconds","time","Math","floor","getTime","Number","moment","endOf","format","statusIsUserDefined","icon","messageIsPredefined","loadStatusFromServer","emit","userId","getCurrentUser","uid","setStatusFromObject","rootState","resolvedClearAt","find","reFetchStatusFromServer","setStatusFromHeartbeat","loadStatusFromInitialState","loadState","Vue","Vuex","Store","modules","userStatus","strict","__webpack_nonce__","btoa","getRequestToken","avatarDiv","document","getElementById","userStatusData","propsData","preloadedUserStatus","user","dataset","displayname","avatar","disableMenu","disableTooltip","Avatar","$mount","el","name","render","h","UserStatus","store","addEventListener","OCA","Dashboard","registerStatus","computed","mapState","customIcon","customMessage","$t","methods","changeStatus","$store","dispatch","showError","console","debug","Date","___CSS_LOADER_EXPORT___","__webpack_module_cache__","moduleId","cachedModule","undefined","loaded","__webpack_modules__","call","m","amdD","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","key","splice","r","n","getter","__esModule","d","a","definition","defineProperty","enumerable","get","f","chunkId","Promise","all","reduce","promises","u","g","globalThis","Function","window","obj","prop","prototype","hasOwnProperty","l","done","script","needAttach","scripts","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","forEach","setTimeout","bind","target","head","appendChild","Symbol","toStringTag","value","nmd","paths","children","scriptUrl","importScripts","location","currentScript","replace","p","b","baseURI","self","href","installedChunks","installedChunkData","promise","reject","error","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/weather_status-weather-status.js b/dist/weather_status-weather-status.js
index aab2112ea15..22226f843ba 100644
--- a/dist/weather_status-weather-status.js
+++ b/dist/weather_status-weather-status.js
@@ -1,3 +1,3 @@
/*! For license information please see weather_status-weather-status.js.LICENSE.txt */
-!function(){var M,n={93365:function(M,t,n){var u={"./af":36026,"./af.js":36026,"./ar":28093,"./ar-dz":41943,"./ar-dz.js":41943,"./ar-kw":23969,"./ar-kw.js":23969,"./ar-ly":40594,"./ar-ly.js":40594,"./ar-ma":18369,"./ar-ma.js":18369,"./ar-sa":32579,"./ar-sa.js":32579,"./ar-tn":76442,"./ar-tn.js":76442,"./ar.js":28093,"./az":86425,"./az.js":86425,"./be":22004,"./be.js":22004,"./bg":42982,"./bg.js":42982,"./bm":21067,"./bm.js":21067,"./bn":8366,"./bn-bd":63837,"./bn-bd.js":63837,"./bn.js":8366,"./bo":95040,"./bo.js":95040,"./br":521,"./br.js":521,"./bs":83242,"./bs.js":83242,"./ca":73046,"./ca.js":73046,"./cs":25794,"./cs.js":25794,"./cv":28231,"./cv.js":28231,"./cy":10927,"./cy.js":10927,"./da":42832,"./da.js":42832,"./de":29415,"./de-at":3331,"./de-at.js":3331,"./de-ch":45524,"./de-ch.js":45524,"./de.js":29415,"./dv":44700,"./dv.js":44700,"./el":88752,"./el.js":88752,"./en-au":90444,"./en-au.js":90444,"./en-ca":65959,"./en-ca.js":65959,"./en-gb":62762,"./en-gb.js":62762,"./en-ie":40909,"./en-ie.js":40909,"./en-il":79909,"./en-il.js":79909,"./en-in":87942,"./en-in.js":87942,"./en-nz":75200,"./en-nz.js":75200,"./en-sg":21415,"./en-sg.js":21415,"./eo":27447,"./eo.js":27447,"./es":86756,"./es-do":47049,"./es-do.js":47049,"./es-mx":15915,"./es-mx.js":15915,"./es-us":57133,"./es-us.js":57133,"./es.js":86756,"./et":72182,"./et.js":72182,"./eu":14419,"./eu.js":14419,"./fa":2916,"./fa.js":2916,"./fi":49964,"./fi.js":49964,"./fil":16448,"./fil.js":16448,"./fo":26094,"./fo.js":26094,"./fr":35833,"./fr-ca":56994,"./fr-ca.js":56994,"./fr-ch":2740,"./fr-ch.js":2740,"./fr.js":35833,"./fy":69542,"./fy.js":69542,"./ga":93264,"./ga.js":93264,"./gd":77457,"./gd.js":77457,"./gl":83043,"./gl.js":83043,"./gom-deva":24034,"./gom-deva.js":24034,"./gom-latn":28379,"./gom-latn.js":28379,"./gu":406,"./gu.js":406,"./he":73219,"./he.js":73219,"./hi":99834,"./hi.js":99834,"./hr":28754,"./hr.js":28754,"./hu":93945,"./hu.js":93945,"./hy-am":81319,"./hy-am.js":81319,"./id":24875,"./id.js":24875,"./is":23724,"./is.js":23724,"./it":79906,"./it-ch":34303,"./it-ch.js":34303,"./it.js":79906,"./ja":77105,"./ja.js":77105,"./jv":15026,"./jv.js":15026,"./ka":67416,"./ka.js":67416,"./kk":79734,"./kk.js":79734,"./km":60757,"./km.js":60757,"./kn":58369,"./kn.js":58369,"./ko":77687,"./ko.js":77687,"./ku":95544,"./ku.js":95544,"./ky":85431,"./ky.js":85431,"./lb":13613,"./lb.js":13613,"./lo":34252,"./lo.js":34252,"./lt":84619,"./lt.js":84619,"./lv":93760,"./lv.js":93760,"./me":93393,"./me.js":93393,"./mi":12369,"./mi.js":12369,"./mk":48664,"./mk.js":48664,"./ml":23099,"./ml.js":23099,"./mn":98539,"./mn.js":98539,"./mr":778,"./mr.js":778,"./ms":39970,"./ms-my":82625,"./ms-my.js":82625,"./ms.js":39970,"./mt":15714,"./mt.js":15714,"./my":53055,"./my.js":53055,"./nb":73945,"./nb.js":73945,"./ne":63645,"./ne.js":63645,"./nl":4829,"./nl-be":12823,"./nl-be.js":12823,"./nl.js":4829,"./nn":23756,"./nn.js":23756,"./oc-lnc":41228,"./oc-lnc.js":41228,"./pa-in":97877,"./pa-in.js":97877,"./pl":53066,"./pl.js":53066,"./pt":28677,"./pt-br":81592,"./pt-br.js":81592,"./pt.js":28677,"./ro":32722,"./ro.js":32722,"./ru":59138,"./ru.js":59138,"./sd":32568,"./sd.js":32568,"./se":49753,"./se.js":49753,"./si":58024,"./si.js":58024,"./sk":31058,"./sk.js":31058,"./sl":43452,"./sl.js":43452,"./sq":2795,"./sq.js":2795,"./sr":26976,"./sr-cyrl":38819,"./sr-cyrl.js":38819,"./sr.js":26976,"./ss":7467,"./ss.js":7467,"./sv":42787,"./sv.js":42787,"./sw":80298,"./sw.js":80298,"./ta":57532,"./ta.js":57532,"./te":76076,"./te.js":76076,"./tet":40452,"./tet.js":40452,"./tg":64794,"./tg.js":64794,"./th":48245,"./th.js":48245,"./tk":8870,"./tk.js":8870,"./tl-ph":36056,"./tl-ph.js":36056,"./tlh":15249,"./tlh.js":15249,"./tr":22053,"./tr.js":22053,"./tzl":39871,"./tzl.js":39871,"./tzm":39574,"./tzm-latn":19210,"./tzm-latn.js":19210,"./tzm.js":39574,"./ug-cn":91532,"./ug-cn.js":91532,"./uk":11432,"./uk.js":11432,"./ur":88523,"./ur.js":88523,"./uz":54958,"./uz-latn":68735,"./uz-latn.js":68735,"./uz.js":54958,"./vi":83398,"./vi.js":83398,"./x-pseudo":56665,"./x-pseudo.js":56665,"./yo":11642,"./yo.js":11642,"./zh-cn":5462,"./zh-cn.js":5462,"./zh-hk":92530,"./zh-hk.js":92530,"./zh-mo":41650,"./zh-mo.js":41650,"./zh-tw":97333,"./zh-tw.js":97333};function e(M){var t=N(M);return n(t)}function N(M){if(!n.o(u,M)){var t=new Error("Cannot find module '"+M+"'");throw t.code="MODULE_NOT_FOUND",t}return u[M]}e.keys=function(){return Object.keys(u)},e.resolve=N,M.exports=e,e.id=93365},76149:function(M,n,u){"use strict";var e=u(20144),N=u(22200),A=u(26932),j=u(80351),i=u.n(j),D=u(9944),r=u(79440),L=u.n(r),g=u(56286),I=u.n(g),a=u(88408),y=u.n(a),s=u(74466),c=u.n(s),o=u(33521),T=u.n(o),w=u(41009),C=u.n(w),z=u(4820),x=u(79753);function E(M,t,n,u,e,N,A){try{var j=M[N](A),i=j.value}catch(M){return void n(M)}j.done?t(i):Promise.resolve(i).then(u,e)}function l(M){return function(){var t=this,n=arguments;return new Promise((function(u,e){var N=M.apply(t,n);function A(M){E(N,u,e,A,j,"next",M)}function j(M){E(N,u,e,A,j,"throw",M)}A(void 0)}))}}var h=function(){var M=l(regeneratorRuntime.mark((function M(t,n){var u,e;return regeneratorRuntime.wrap((function(M){for(;;)switch(M.prev=M.next){case 0:return u=(0,x.generateOcsUrl)("apps/weather_status/api/v1/location"),M.next=3,z.default.put(u,{address:"",lat:t,lon:n});case 3:return e=M.sent,M.abrupt("return",e.data.ocs.data);case 5:case"end":return M.stop()}}),M)})));return function(t,n){return M.apply(this,arguments)}}(),d=function(){var M=l(regeneratorRuntime.mark((function M(t){var n,u;return regeneratorRuntime.wrap((function(M){for(;;)switch(M.prev=M.next){case 0:return n=(0,x.generateOcsUrl)("apps/weather_status/api/v1/location"),M.next=3,z.default.put(n,{address:t,lat:null,lon:null});case 3:return u=M.sent,M.abrupt("return",u.data.ocs.data);case 5:case"end":return M.stop()}}),M)})));return function(t){return M.apply(this,arguments)}}(),O=function(){var M=l(regeneratorRuntime.mark((function M(t){var n,u;return regeneratorRuntime.wrap((function(M){for(;;)switch(M.prev=M.next){case 0:return n=(0,x.generateOcsUrl)("apps/weather_status/api/v1/mode"),M.next=3,z.default.put(n,{mode:t});case 3:return u=M.sent,M.abrupt("return",u.data.ocs.data);case 5:case"end":return M.stop()}}),M)})));return function(t){return M.apply(this,arguments)}}(),Q=function(){var M=l(regeneratorRuntime.mark((function M(){var t,n;return regeneratorRuntime.wrap((function(M){for(;;)switch(M.prev=M.next){case 0:return t=(0,x.generateOcsUrl)("apps/weather_status/api/v1/use-personal"),M.next=3,z.default.put(t);case 3:return n=M.sent,M.abrupt("return",n.data.ocs.data);case 5:case"end":return M.stop()}}),M)})));return function(){return M.apply(this,arguments)}}(),S=function(){var M=l(regeneratorRuntime.mark((function M(){var t,n;return regeneratorRuntime.wrap((function(M){for(;;)switch(M.prev=M.next){case 0:return t=(0,x.generateOcsUrl)("apps/weather_status/api/v1/location"),M.next=3,z.default.get(t);case 3:return n=M.sent,M.abrupt("return",n.data.ocs.data);case 5:case"end":return M.stop()}}),M)})));return function(){return M.apply(this,arguments)}}(),m=function(){var M=l(regeneratorRuntime.mark((function M(){var t,n;return regeneratorRuntime.wrap((function(M){for(;;)switch(M.prev=M.next){case 0:return t=(0,x.generateOcsUrl)("apps/weather_status/api/v1/forecast"),M.next=3,z.default.get(t);case 3:return n=M.sent,M.abrupt("return",n.data.ocs.data);case 5:case"end":return M.stop()}}),M)})));return function(){return M.apply(this,arguments)}}(),k=function(){var M=l(regeneratorRuntime.mark((function M(){var t,n;return regeneratorRuntime.wrap((function(M){for(;;)switch(M.prev=M.next){case 0:return t=(0,x.generateOcsUrl)("apps/weather_status/api/v1/favorites"),M.next=3,z.default.get(t);case 3:return n=M.sent,M.abrupt("return",n.data.ocs.data);case 5:case"end":return M.stop()}}),M)})));return function(){return M.apply(this,arguments)}}(),Y=function(){var M=l(regeneratorRuntime.mark((function M(t){var n,u;return regeneratorRuntime.wrap((function(M){for(;;)switch(M.prev=M.next){case 0:return n=(0,x.generateOcsUrl)("apps/weather_status/api/v1/favorites"),M.next=3,z.default.put(n,{favorites:t});case 3:return u=M.sent,M.abrupt("return",u.data.ocs.data);case 5:case"end":return M.stop()}}),M)})));return function(t){return M.apply(this,arguments)}}();function p(M,t,n,u,e,N,A){try{var j=M[N](A),i=j.value}catch(M){return void n(M)}j.done?t(i):Promise.resolve(i).then(u,e)}function v(M){return function(){var t=this,n=arguments;return new Promise((function(u,e){var N=M.apply(t,n);function A(M){p(N,u,e,A,j,"next",M)}function j(M){p(N,u,e,A,j,"throw",M)}A(void 0)}))}}var f={clearsky_day:{icon:"icon-clearsky-day",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} clear sky later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} clear sky",{temperature:M,unit:n})}},clearsky_night:{icon:"icon-clearsky-night",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} clear sky later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} clear sky",{temperature:M,unit:n})}},cloudy:{icon:"icon-cloudy",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} cloudy later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} cloudy",{temperature:M,unit:n})}},fair_day:{icon:"icon-fair-day",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} fair weather later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} fair weather",{temperature:M,unit:n})}},fair_night:{icon:"icon-fair-night",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} fair weather later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} fair weather",{temperature:M,unit:n})}},partlycloudy_day:{icon:"icon-partlycloudy-day",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} partly cloudy later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} partly cloudy",{temperature:M,unit:n})}},partlycloudy_night:{icon:"icon-partlycloudy-night",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} partly cloudy later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} partly cloudy",{temperature:M,unit:n})}},fog:{icon:"icon-fog",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} foggy later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} foggy",{temperature:M,unit:n})}},lightrain:{icon:"icon-lightrain",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} light rainfall later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} light rainfall",{temperature:M,unit:n})}},rain:{icon:"icon-rain",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} rainfall later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} rainfall",{temperature:M,unit:n})}},heavyrain:{icon:"icon-heavyrain",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} heavy rainfall later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} heavy rainfall",{temperature:M,unit:n})}},rainshowers_day:{icon:"icon-rainshowers-day",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} rainfall showers later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} rainfall showers",{temperature:M,unit:n})}},rainshowers_night:{icon:"icon-rainshowers-night",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} rainfall showers later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} rainfall showers",{temperature:M,unit:n})}},lightrainshowers_day:{icon:"icon-light-rainshowers-day",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} light rainfall showers later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} light rainfall showers",{temperature:M,unit:n})}},lightrainshowers_night:{icon:"icon-light-rainshowers-night",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} light rainfall showers later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} light rainfall showers",{temperature:M,unit:n})}},heavyrainshowers_day:{icon:"icon-heavy-rainshowers-day",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} heavy rainfall showers later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} heavy rainfall showers",{temperature:M,unit:n})}},heavyrainshowers_night:{icon:"icon-heavy-rainshowers-night",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} heavy rainfall showers later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} heavy rainfall showers",{temperature:M,unit:n})}}},U={name:"App",components:{Actions:L(),ActionButton:I(),ActionInput:y(),ActionLink:c(),ActionSeparator:T(),ActionText:C()},props:{inline:{type:Boolean,default:!1}},data:function(){return{locale:(0,D.getLocale)(),loading:!0,errorMessage:"",mode:1,address:null,lat:null,lon:null,offset:5,forecasts:[],loop:null,favorites:[],showFavorites:!1}},computed:{useFahrenheitLocale:function(){return["en_US","en_MH","en_FM","en_PW","en_KY","en_LR"].includes(this.locale)},temperatureUnit:function(){return this.useFahrenheitLocale?"°F":"°C"},locationText:function(){return t("weather_status","More weather for {adr}",{adr:this.address})},temperature:function(){return this.getTemperature(this.forecasts,0)},futureTemperature:function(){return this.getTemperature(this.forecasts,this.offset)},weatherCode:function(){return this.getWeatherCode(this.forecasts,0)},futureWeatherCode:function(){return this.getWeatherCode(this.forecasts,this.offset)},weatherIcon:function(){return this.getWeatherIcon(this.weatherCode,this.loading)},futureWeatherIcon:function(){return this.getWeatherIcon(this.futureWeatherCode,this.loading)},currentWeatherMessage:function(){return this.loading?t("weather_status","Loading weather"):this.errorMessage?this.errorMessage:this.getWeatherMessage(this.weatherCode,this.temperature)},forecastMessage:function(){return this.loading?t("weather_status","Loading weather"):this.getWeatherMessage(this.futureWeatherCode,this.futureTemperature,!0)},weatherLinkTarget:function(){return"https://www.windy.com/-Rain-thunder-rain?rain,"+this.lat+","+this.lon+",11"},gotWeather:function(){return this.address&&!this.errorMessage},addRemoveFavoriteIcon:function(){return this.currentAddressIsFavorite?"icon-starred":"icon-star"},addRemoveFavoriteText:function(){return this.currentAddressIsFavorite?t("weather_status","Remove from favorites"):t("weather_status","Add as favorite")},currentAddressIsFavorite:function(){var M=this;return this.favorites.find((function(t){return t===M.address}))},toggleFavoritesIcon:function(){return this.showFavorites?"icon-triangle-s":"icon-triangle-e"},displayedFavorites:function(){return this.showFavorites?this.favorites:[]}},mounted:function(){this.initWeatherStatus()},methods:{initWeatherStatus:function(){var M=this;return v(regeneratorRuntime.mark((function n(){var u,e;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,S();case 3:return u=n.sent,M.lat=u.lat,M.lon=u.lon,M.address=u.address,M.mode=u.mode,1===M.mode?M.askBrowserLocation():2===M.mode&&M.startLoop(),n.next=11,k();case 11:e=n.sent,M.favorites=e,n.next=22;break;case 15:if(n.prev=15,n.t0=n.catch(0),"ECONNABORTED"!==(null===n.t0||void 0===n.t0?void 0:n.t0.code)){n.next=20;break}return console.info("The weather status request was cancelled because the user navigates."),n.abrupt("return");case 20:n.t0.response&&401===n.t0.response.status?(0,A.x2)(t("weather_status","You are not logged in.")):(0,A.x2)(t("weather_status","There was an error getting the weather status information.")),console.error(n.t0);case 22:case"end":return n.stop()}}),n,null,[[0,15]])})))()},startLoop:function(){var M=this;clearInterval(this.loop),this.lat&&this.lon?(this.loop=setInterval((function(){return M.getForecast()}),36e5),this.getForecast()):this.loading=!1},askBrowserLocation:function(){var M=this;this.loading=!0,this.errorMessage="",navigator.geolocation&&window.isSecureContext?navigator.geolocation.getCurrentPosition((function(t){console.debug("browser location success"),M.lat=t.coords.latitude,M.lon=t.coords.longitude,M.saveMode(1),M.mode=1,M.saveLocation(M.lat,M.lon)}),(function(t){console.debug("location permission refused"),console.debug(t),M.saveMode(2),M.mode=2,M.lat&&M.lon?M.startLoop():M.usePersonalAddress()})):(console.debug("no secure context!"),this.saveMode(2),this.mode=2,this.startLoop())},getForecast:function(){var M=this;return v(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,m();case 3:M.forecasts=n.sent,n.next=10;break;case 6:n.prev=6,n.t0=n.catch(0),M.errorMessage=t("weather_status","No weather information found"),console.debug(n.t0);case 10:M.loading=!1;case 11:case"end":return n.stop()}}),n,null,[[0,6]])})))()},setAddress:function(M){var n=this;return v(regeneratorRuntime.mark((function u(){var e;return regeneratorRuntime.wrap((function(u){for(;;)switch(u.prev=u.next){case 0:return n.loading=!0,n.errorMessage="",u.prev=2,u.next=5,d(M);case 5:(e=u.sent).success?(n.lat=e.lat,n.lon=e.lon,n.address=e.address,n.mode=2,n.startLoop()):(n.errorMessage=t("weather_status","Location not found"),n.loading=!1),u.next=13;break;case 9:u.prev=9,u.t0=u.catch(2),u.t0.response&&401===u.t0.response.status?(0,A.x2)(t("weather_status","You are not logged in.")):(0,A.x2)(t("weather_status","There was an error setting the location address.")),n.loading=!1;case 13:case"end":return u.stop()}}),u,null,[[2,9]])})))()},saveLocation:function(M,n){var u=this;return v(regeneratorRuntime.mark((function e(){var N;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,h(M,n);case 3:N=e.sent,u.address=N.address,u.startLoop(),e.next=12;break;case 8:e.prev=8,e.t0=e.catch(0),e.t0.response&&401===e.t0.response.status?(0,A.x2)(t("weather_status","You are not logged in.")):(0,A.x2)(t("weather_status","There was an error setting the location.")),console.debug(e.t0);case 12:case"end":return e.stop()}}),e,null,[[0,8]])})))()},saveMode:function(M){return v(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,O(M);case 3:n.next=9;break;case 5:n.prev=5,n.t0=n.catch(0),n.t0.response&&401===n.t0.response.status?(0,A.x2)(t("weather_status","You are not logged in.")):(0,A.x2)(t("weather_status","There was an error saving the mode.")),console.debug(n.t0);case 9:case"end":return n.stop()}}),n,null,[[0,5]])})))()},onBrowserLocationClick:function(){this.askBrowserLocation()},usePersonalAddress:function(){var M=this;return v(regeneratorRuntime.mark((function n(){var u;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return M.loading=!0,n.prev=1,n.next=4,Q();case 4:u=n.sent,M.lat=u.lat,M.lon=u.lon,M.address=u.address,M.mode=2,M.startLoop(),n.next=17;break;case 12:n.prev=12,n.t0=n.catch(1),n.t0.response&&401===n.t0.response.status?(0,A.x2)(t("weather_status","You are not logged in.")):(0,A.x2)(t("weather_status","There was an error using personal address.")),console.debug(n.t0),M.loading=!1;case 17:case"end":return n.stop()}}),n,null,[[1,12]])})))()},onAddressSubmit:function(){var M=this.$refs.addressInput.$el.querySelector('input[type="text"]').value;this.setAddress(M)},getLocalizedTemperature:function(M){return this.useFahrenheitLocale?1.8*M+32:M},onAddRemoveFavoriteClick:function(){var M=this.currentAddressIsFavorite;if(M){var t=this.favorites.indexOf(M);-1!==t&&this.favorites.splice(t,1)}else this.favorites.push(this.address);Y(this.favorites)},onFavoriteClick:function(M,t){if(M.target.classList.contains("action-button__icon")){var n=this.favorites.indexOf(t);-1!==n&&this.favorites.splice(n,1),Y(this.favorites)}else t!==this.address&&this.setAddress(t)},formatTime:function(M){return i()(M).format("LT")},getTemperature:function(M){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return M.length>t?M[t].data.instant.details.air_temperature:""},getWeatherCode:function(M){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return M.length>t?M[t].data.next_1_hours.summary.symbol_code:""},getWeatherIcon:function(M,t){return t?"icon-loading-small":M&&M in f?f[M].icon:"icon-fair-day"},getWeatherMessage:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return M&&M in f?f[M].text(Math.round(this.getLocalizedTemperature(n)),this.temperatureUnit,u):t("weather_status","Set location for weather")}}},b=U,Z=u(93379),G=u.n(Z),W=u(7795),B=u.n(W),P=u(90569),_=u.n(P),R=u(3565),F=u.n(R),J=u(19216),H=u.n(J),V=u(44589),X=u.n(V),q=u(62554),$={};$.styleTagTransform=X(),$.setAttributes=F(),$.insert=_().bind(null,"head"),$.domAPI=B(),$.insertStyleElement=H(),G()(q.Z,$),q.Z&&q.Z.locals&&q.Z.locals;var K=(0,u(51900).Z)(b,(function(){var M=this,t=M.$createElement,n=M._self._c||t;return n("li",{class:{inline:M.inline}},[n("div",{attrs:{id:"weather-status-menu-item"}},[n("Actions",{staticClass:"weather-status-menu-item__subheader",attrs:{"default-icon":M.weatherIcon,"menu-title":M.currentWeatherMessage}},[M.gotWeather?n("ActionText",{attrs:{icon:M.futureWeatherIcon}},[M._v("\n\t\t\t\t"+M._s(M.forecastMessage)+"\n\t\t\t")]):M._e(),M._v(" "),M.gotWeather?n("ActionLink",{attrs:{icon:"icon-address",target:"_blank",href:M.weatherLinkTarget,"close-after-click":!0}},[M._v("\n\t\t\t\t"+M._s(M.locationText)+"\n\t\t\t")]):M._e(),M._v(" "),M.gotWeather?n("ActionButton",{attrs:{icon:M.addRemoveFavoriteIcon},on:{click:M.onAddRemoveFavoriteClick}},[M._v("\n\t\t\t\t"+M._s(M.addRemoveFavoriteText)+"\n\t\t\t")]):M._e(),M._v(" "),M.address&&!M.errorMessage?n("ActionSeparator"):M._e(),M._v(" "),n("ActionButton",{attrs:{icon:"icon-crosshair","close-after-click":!0},on:{click:M.onBrowserLocationClick}},[M._v("\n\t\t\t\t"+M._s(M.t("weather_status","Detect location"))+"\n\t\t\t")]),M._v(" "),n("ActionInput",{ref:"addressInput",attrs:{disabled:!1,icon:"icon-rename",type:"text",value:""},on:{submit:M.onAddressSubmit}},[M._v("\n\t\t\t\t"+M._s(M.t("weather_status","Set custom address"))+"\n\t\t\t")]),M._v(" "),n("ActionButton",{directives:[{name:"show",rawName:"v-show",value:M.favorites.length>0,expression:"favorites.length > 0"}],attrs:{icon:M.toggleFavoritesIcon},on:{click:function(t){M.showFavorites=!M.showFavorites}}},[M._v("\n\t\t\t\t"+M._s(M.t("weather_status","Favorites"))+"\n\t\t\t")]),M._v(" "),M._l(M.displayedFavorites,(function(t){return n("ActionButton",{key:t,attrs:{icon:"icon-starred"},on:{click:function(n){return M.onFavoriteClick(n,t)}}},[M._v("\n\t\t\t\t"+M._s(t)+"\n\t\t\t")])}))],2)],1)])}),[],!1,null,null,null).exports;u.nc=btoa((0,N.getRequestToken)()),e.default.prototype.t=t,document.addEventListener("DOMContentLoaded",(function(){OCA.Dashboard&&OCA.Dashboard.registerStatus("weather",(function(M){return new(e.default.extend(K))({propsData:{inline:!0}}).$mount(M)}))}))},62554:function(M,t,n){"use strict";var u=n(87537),e=n.n(u),N=n(23645),A=n.n(N),j=n(61667),i=n.n(j),D=new URL(n(87320),n.b),r=new URL(n(3953),n.b),L=new URL(n(71211),n.b),g=new URL(n(87760),n.b),I=new URL(n(30570),n.b),a=new URL(n(74351),n.b),y=new URL(n(26625),n.b),s=new URL(n(16767),n.b),c=new URL(n(53748),n.b),o=new URL(n(26320),n.b),T=new URL(n(26157),n.b),w=new URL(n(37837),n.b),C=new URL(n(94776),n.b),z=new URL(n(14593),n.b),x=new URL(n(53107),n.b),E=new URL(n(97251),n.b),l=new URL(n(18138),n.b),h=new URL(n(53254),n.b),d=new URL(n(50663),n.b),O=new URL(n(75322),n.b),Q=A()(e()),S=i()(D),m=i()(r),k=i()(L),Y=i()(g),p=i()(I),v=i()(a),f=i()(y),U=i()(s),b=i()(c),Z=i()(o),G=i()(T),W=i()(w),B=i()(C),P=i()(z),_=i()(x),R=i()(E),F=i()(l),J=i()(h),H=i()(d),V=i()(O);Q.push([M.id,".icon-weather-status{background-image:url("+S+")}body.theme--dark .icon-weather-status{background-image:url("+m+")}.icon-clearsky-day{background-image:url("+k+")}.icon-clearsky-night{background-image:url("+Y+")}.icon-cloudy{background-image:url("+p+")}.icon-fair-day{background-image:url("+v+")}.icon-fair-night{background-image:url("+f+")}.icon-partlycloudy-day{background-image:url("+U+")}.icon-partlycloudy-night{background-image:url("+b+")}.icon-fog{background-image:url("+Z+")}.icon-lightrain{background-image:url("+G+")}.icon-rain{background-image:url("+W+")}.icon-heavyrain{background-image:url("+B+")}.icon-light-rainshowers-day{background-image:url("+P+")}.icon-light-rainshowers-night{background-image:url("+_+")}.icon-rainshowers-day{background-image:url("+R+")}.icon-rainshowers-night{background-image:url("+F+")}.icon-heavy-rainshowers-day{background-image:url("+J+")}.icon-heavy-rainshowers-night{background-image:url("+H+")}.icon-crosshair{background-color:var(--color-main-text);padding:0 !important;mask:url("+V+") no-repeat;mask-size:18px 18px;mask-position:center;-webkit-mask:url("+V+") no-repeat;-webkit-mask-size:18px 18px;-webkit-mask-position:center;min-width:44px !important;min-height:44px !important}li:not(.inline) .weather-status-menu-item__header{display:block;align-items:center;color:var(--color-main-text);padding:10px 12px 5px 12px;box-sizing:border-box;opacity:1;white-space:nowrap;width:100%;text-align:center;max-width:250px;text-overflow:ellipsis;min-width:175px}li:not(.inline) .weather-status-menu-item__subheader{width:100%}li:not(.inline) .weather-status-menu-item__subheader .trigger>.icon{background-color:var(--color-main-background);background-size:16px;border:0;border-radius:0;font-weight:normal;padding-left:40px}li:not(.inline) .weather-status-menu-item__subheader .trigger>.icon:hover,li:not(.inline) .weather-status-menu-item__subheader .trigger>.icon:focus{box-shadow:inset 4px 0 var(--color-primary-element)}.inline .weather-status-menu-item__subheader{width:100%}.inline .weather-status-menu-item__subheader .trigger>.icon{background-size:16px;border:0;border-radius:var(--border-radius-pill);font-weight:normal;padding-left:40px}.inline .weather-status-menu-item__subheader .trigger>.icon.icon-loading-small::after{left:21px}li{list-style-type:none}","",{version:3,sources:["webpack://./apps/weather_status/src/App.vue"],names:[],mappings:"AAwgBA,qBACC,wDAAA,CAED,sCACC,wDAAA,CAED,mBACC,wDAAA,CAED,qBACC,wDAAA,CAED,aACC,wDAAA,CAED,eACC,wDAAA,CAED,iBACC,wDAAA,CAED,uBACC,wDAAA,CAED,yBACC,wDAAA,CAED,UACC,wDAAA,CAED,gBACC,yDAAA,CAED,WACC,yDAAA,CAED,gBACC,yDAAA,CAED,4BACC,yDAAA,CAED,8BACC,yDAAA,CAED,sBACC,yDAAA,CAED,wBACC,yDAAA,CAED,4BACC,yDAAA,CAED,8BACC,yDAAA,CAED,gBACI,uCAAA,CACA,oBAAA,CACA,uDAAA,CACA,mBAAA,CACA,oBAAA,CACA,+DAAA,CACA,2BAAA,CACA,4BAAA,CACA,yBAAA,CACA,0BAAA,CAIH,kDACC,aAAA,CACA,kBAAA,CACA,4BAAA,CACA,0BAAA,CACA,qBAAA,CACA,SAAA,CACA,kBAAA,CACA,UAAA,CACA,iBAAA,CACA,eAAA,CACA,sBAAA,CACA,eAAA,CAGD,qDACC,UAAA,CAEA,oEACC,6CAAA,CACA,oBAAA,CACA,QAAA,CACA,eAAA,CACA,kBAAA,CACA,iBAAA,CAEA,oJAEC,mDAAA,CAMJ,6CACC,UAAA,CAEA,4DACC,oBAAA,CACA,QAAA,CACA,uCAAA,CACA,kBAAA,CACA,iBAAA,CAGC,sFACC,SAAA,CAMJ,GACC,oBAAA",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.icon-weather-status {\n\tbackground-image: url('./../img/app-dark.svg');\n}\nbody.theme--dark .icon-weather-status {\n\tbackground-image: url('./../img/app.svg');\n}\n.icon-clearsky-day {\n\tbackground-image: url('./../img/sun.svg');\n}\n.icon-clearsky-night {\n\tbackground-image: url('./../img/moon.svg');\n}\n.icon-cloudy {\n\tbackground-image: url('./../img/cloud-cloud.svg');\n}\n.icon-fair-day {\n\tbackground-image: url('./../img/sun-small-cloud.svg');\n}\n.icon-fair-night {\n\tbackground-image: url('./../img/moon-small-cloud.svg');\n}\n.icon-partlycloudy-day {\n\tbackground-image: url('./../img/sun-cloud.svg');\n}\n.icon-partlycloudy-night {\n\tbackground-image: url('./../img/moon-cloud.svg');\n}\n.icon-fog {\n\tbackground-image: url('./../img/fog.svg');\n}\n.icon-lightrain {\n\tbackground-image: url('./../img/light-rain.svg');\n}\n.icon-rain {\n\tbackground-image: url('./../img/rain.svg');\n}\n.icon-heavyrain {\n\tbackground-image: url('./../img/heavy-rain.svg');\n}\n.icon-light-rainshowers-day {\n\tbackground-image: url('./../img/sun-cloud-light-rain.svg');\n}\n.icon-light-rainshowers-night {\n\tbackground-image: url('./../img/moon-cloud-light-rain.svg');\n}\n.icon-rainshowers-day {\n\tbackground-image: url('./../img/sun-cloud-rain.svg');\n}\n.icon-rainshowers-night {\n\tbackground-image: url('./../img/moon-cloud-rain.svg');\n}\n.icon-heavy-rainshowers-day {\n\tbackground-image: url('./../img/sun-cloud-heavy-rain.svg');\n}\n.icon-heavy-rainshowers-night {\n\tbackground-image: url('./../img/moon-cloud-heavy-rain.svg');\n}\n.icon-crosshair {\n background-color: var(--color-main-text);\n padding: 0 !important;\n mask: url(./../img/cross.svg) no-repeat;\n mask-size: 18px 18px;\n mask-position: center;\n -webkit-mask: url(./../img/cross.svg) no-repeat;\n -webkit-mask-size: 18px 18px;\n -webkit-mask-position: center;\n min-width: 44px !important;\n min-height: 44px !important;\n}\n\nli:not(.inline) .weather-status-menu-item {\n\t&__header {\n\t\tdisplay: block;\n\t\talign-items: center;\n\t\tcolor: var(--color-main-text);\n\t\tpadding: 10px 12px 5px 12px;\n\t\tbox-sizing: border-box;\n\t\topacity: 1;\n\t\twhite-space: nowrap;\n\t\twidth: 100%;\n\t\ttext-align: center;\n\t\tmax-width: 250px;\n\t\ttext-overflow: ellipsis;\n\t\tmin-width: 175px;\n\t}\n\n\t&__subheader {\n\t\twidth: 100%;\n\n\t\t.trigger > .icon {\n\t\t\tbackground-color: var(--color-main-background);\n\t\t\tbackground-size: 16px;\n\t\t\tborder: 0;\n\t\t\tborder-radius: 0;\n\t\t\tfont-weight: normal;\n\t\t\tpadding-left: 40px;\n\n\t\t\t&:hover,\n\t\t\t&:focus {\n\t\t\t\tbox-shadow: inset 4px 0 var(--color-primary-element);\n\t\t\t}\n\t\t}\n\t}\n}\n\n.inline .weather-status-menu-item__subheader {\n\twidth: 100%;\n\n\t.trigger > .icon {\n\t\tbackground-size: 16px;\n\t\tborder: 0;\n\t\tborder-radius: var(--border-radius-pill);\n\t\tfont-weight: normal;\n\t\tpadding-left: 40px;\n\n\t\t&.icon-loading-small {\n\t\t\t&::after {\n\t\t\t\tleft: 21px;\n\t\t\t}\n\t\t}\n\t}\n}\n\nli {\n\tlist-style-type: none;\n}\n"],sourceRoot:""}]),t.Z=Q},87320:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgwLjUiIGhlaWdodD0iMjgwLjUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE0MC4yMiAyMTAuMDRjMzguNDggMCA2OS43OC0zMS4zIDY5Ljc4LTY5Ljc4cy0zMS4zLTY5Ljc4LTY5Ljc4LTY5Ljc4Yy0zOC40NyAwLTY5Ljc4IDMxLjMtNjkuNzggNjkuNzhzMzEuMyA2OS43OCA2OS43OCA2OS43OE0xMzIuOCAzOC45YTcuNDMgNy40MyAwIDAwMTQuODUgMFY3LjQ0YTcuNDMgNy40MyAwIDAwLTE0Ljg1IDBWMzguOU0xMzIuOCAyNDEuNjN2MzEuNDZhNy40MyA3LjQzIDAgMDAxNC44NSAwdi0zMS40NmE3LjQzIDcuNDMgMCAwMC0xNC44NSAwTTg5LjU0IDU5LjkxYTcuNDMgNy40MyAwIDAwNi40My0xMS4xNEw4MC4yNCAyMS41M2E3LjQzIDcuNDMgMCAwMC0xMi44NiA3LjQzTDgzLjEgNTYuMmE3LjQyIDcuNDIgMCAwMDYuNDMgMy43MU0xODcuMiAyMjEuNjJhNy40MyA3LjQzIDAgMDAtMi43MiAxMC4xNEwyMDAuMiAyNTlhNy40MiA3LjQyIDAgMTAxMi44Ni03LjQybC0xNS43My0yNy4yNWE3LjQzIDcuNDMgMCAwMC0xMC4xNS0yLjcxTTE4Ljc2IDcwLjE0YTcuNDMgNy40MyAwIDAwMi43MiAxMC4xNUw0OC43MiA5NmE3LjQyIDcuNDIgMCAxMDcuNDMtMTIuODZMMjguOSA2Ny40MmE3LjQzIDcuNDMgMCAwMC0xMC4xNCAyLjcyTTI1OC45NyAyMDAuMjRsLTI3LjI1LTE1LjczYTcuNDMgNy40MyAwIDAwLTcuNDIgMTIuODdsMjcuMjQgMTUuNzNhNy40IDcuNCAwIDAwMTAuMTQtMi43MiA3LjQzIDcuNDMgMCAwMC0yLjcxLTEwLjE1TTQ2LjI4IDE0MC4yN2MwLTQuMS0zLjMzLTcuNDItNy40My03LjQySDcuNGE3LjQzIDcuNDMgMCAwMDAgMTQuODVoMzEuNDZjNC4xIDAgNy40My0zLjMzIDcuNDMtNy40M00yNzMuMDUgMTMyLjg1aC0zMS40NmE3LjQzIDcuNDMgMCAwMDAgMTQuODVoMzEuNDZhNy40MyA3LjQzIDAgMDAwLTE0Ljg1TTQ4LjczIDE4NC41MUwyMS41IDIwMC4yNGE3LjQzIDcuNDMgMCAxMDcuNDIgMTIuODZsMjcuMjUtMTUuNzNhNy40MyA3LjQzIDAgMDAtNy40My0xMi44Nk0yNTEuNTQgNjcuNDJMMjI0LjMgODMuMTVBNy40MyA3LjQzIDAgMDAyMzEuNzIgOTZsMjcuMjQtMTUuNzNhNy40MyA3LjQzIDAgMDAtNy40Mi0xMi44Nk04My4xIDIyNC4zNGwtMTUuNzMgMjcuMjRhNy40MyA3LjQzIDAgMDAxMi44NyA3LjQzbDE1LjczLTI3LjI1YTcuNDMgNy40MyAwIDAwLTEyLjg3LTcuNDJNMTg3LjIgNTguOTFhNy40IDcuNCAwIDAwMTAuMTQtMi43MWwxNS43My0yNy4yNWE3LjQzIDcuNDMgMCAxMC0xMi44Ni03LjQybC0xNS43MyAyNy4yNGE3LjQzIDcuNDMgMCAwMDIuNzEgMTAuMTQiLz48L3N2Zz4="},3953:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgwLjUiIGhlaWdodD0iMjgwLjUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iI2ZmZiI+PHBhdGggZD0iTTE0MC4yMiAyMTAuMDRjMzguNDggMCA2OS43OC0zMS4zIDY5Ljc4LTY5Ljc4cy0zMS4zLTY5Ljc4LTY5Ljc4LTY5Ljc4Yy0zOC40NyAwLTY5Ljc4IDMxLjMtNjkuNzggNjkuNzhzMzEuMyA2OS43OCA2OS43OCA2OS43OE0xMzIuOCAzOC45YTcuNDMgNy40MyAwIDAwMTQuODUgMFY3LjQ0YTcuNDMgNy40MyAwIDAwLTE0Ljg1IDBWMzguOU0xMzIuOCAyNDEuNjN2MzEuNDZhNy40MyA3LjQzIDAgMDAxNC44NSAwdi0zMS40NmE3LjQzIDcuNDMgMCAwMC0xNC44NSAwTTg5LjU0IDU5LjkxYTcuNDMgNy40MyAwIDAwNi40My0xMS4xNEw4MC4yNCAyMS41M2E3LjQzIDcuNDMgMCAwMC0xMi44NiA3LjQzTDgzLjEgNTYuMmE3LjQyIDcuNDIgMCAwMDYuNDMgMy43MU0xODcuMiAyMjEuNjJhNy40MyA3LjQzIDAgMDAtMi43MiAxMC4xNEwyMDAuMiAyNTlhNy40MiA3LjQyIDAgMTAxMi44Ni03LjQybC0xNS43My0yNy4yNWE3LjQzIDcuNDMgMCAwMC0xMC4xNS0yLjcxTTE4Ljc2IDcwLjE0YTcuNDMgNy40MyAwIDAwMi43MiAxMC4xNUw0OC43MiA5NmE3LjQyIDcuNDIgMCAxMDcuNDMtMTIuODZMMjguOSA2Ny40MmE3LjQzIDcuNDMgMCAwMC0xMC4xNCAyLjcyTTI1OC45NyAyMDAuMjRsLTI3LjI1LTE1LjczYTcuNDMgNy40MyAwIDAwLTcuNDIgMTIuODdsMjcuMjQgMTUuNzNhNy40IDcuNCAwIDAwMTAuMTQtMi43MiA3LjQzIDcuNDMgMCAwMC0yLjcxLTEwLjE1TTQ2LjI4IDE0MC4yN2MwLTQuMS0zLjMzLTcuNDItNy40My03LjQySDcuNGE3LjQzIDcuNDMgMCAwMDAgMTQuODVoMzEuNDZjNC4xIDAgNy40My0zLjMzIDcuNDMtNy40M00yNzMuMDUgMTMyLjg1aC0zMS40NmE3LjQzIDcuNDMgMCAwMDAgMTQuODVoMzEuNDZhNy40MyA3LjQzIDAgMDAwLTE0Ljg1TTQ4LjczIDE4NC41MUwyMS41IDIwMC4yNGE3LjQzIDcuNDMgMCAxMDcuNDIgMTIuODZsMjcuMjUtMTUuNzNhNy40MyA3LjQzIDAgMDAtNy40My0xMi44Nk0yNTEuNTQgNjcuNDJMMjI0LjMgODMuMTVBNy40MyA3LjQzIDAgMDAyMzEuNzIgOTZsMjcuMjQtMTUuNzNhNy40MyA3LjQzIDAgMDAtNy40Mi0xMi44Nk04My4xIDIyNC4zNGwtMTUuNzMgMjcuMjRhNy40MyA3LjQzIDAgMDAxMi44NyA3LjQzbDE1LjczLTI3LjI1YTcuNDMgNy40MyAwIDAwLTEyLjg3LTcuNDJNMTg3LjIgNTguOTFhNy40IDcuNCAwIDAwMTAuMTQtMi43MWwxNS43My0yNy4yNWE3LjQzIDcuNDMgMCAxMC0xMi44Ni03LjQybC0xNS43MyAyNy4yNGE3LjQzIDcuNDMgMCAwMDIuNzEgMTAuMTQiLz48L2c+PC9zdmc+"},30570:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjk0LjcxIiBoZWlnaHQ9IjE4OS4xNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTA5LjAzIDExOS4yYzAtMjkuMTkgMjYuNC01Mi45NCA1OC44Ni01Mi45NCA3LjAyIDAgMTMuODEgMS4wOCAyMC4yOSAzLjIyYTU0LjM2IDU0LjM2IDAgMDEyNS4wNC0xNC4zNkE1MS45NSA1MS45NSAwIDAwMTY2LjkgMjYuM2MtNC4yMSAwLTguNDEuNTItMTIuNDggMS41Mi0zIC43NC02LjE1LS40NC03LjktMi45OWE1Ny4xMyA1Ny4xMyAwIDAwLTg1LjU4LTkuODQgNTYuOTUgNTYuOTUgMCAwMC0xOC4zMyAzNi42NSA3LjQyIDcuNDIgMCAwMS00LjIgNmMtLjY5LjM0LTEuMzguNjgtMi4wNSAxLjA2LS42Mi4zNC0xLjI5LjYtMS45OC43NkE0NC4zIDQ0LjMgMCAwMDkuOCA3NC42NmE0My4yIDQzLjIgMCAwMC05LjggMjcuNThjMCAyNC4xOSAxOS43OCA0My44NiA0NC4xIDQzLjg2aDUyLjk2YTQ4LjA0IDQ4LjA0IDAgMDExMi4wMy0yNC42M2MtLjAzLS43Ni0uMDUtMS41MS0uMDUtMi4yNyIgZmlsbD0iIzYxYzllNyIvPjxwYXRoIGQ9Ik0yNjkuMjUgMTIwLjRhNy40MyA3LjQzIDAgMDEtNC40Ni05LjUgMjguODUgMjguODUgMCAwMDEuNzItOS44MmMwLTE0LjEtMTAuMjctMjYuMTYtMjQuNy0zMC45YTQzLjYzIDQzLjYzIDAgMDAtMjEuMDgtMS41NWMtOS45IDEuNjgtMTguNzQgNi43LTI0LjUgMTQuMTJhNy40MyA3LjQzIDAgMDEtOC44IDIuMjYgNDkuMTIgNDkuMTIgMCAwMC0xOS41My0zLjk2Yy0yNC4yNyAwLTQ0LjAyIDE3LjEtNDQuMDIgMzguMSAwIDEuMzQuMDkgMi43My4yNiA0LjFhNy4zOSA3LjM5IDAgMDEtMi4yMyA2LjI2IDM0LjMgMzQuMyAwIDAwLTkuNzEgMTYuNTMgMzEuMDMgMzEuMDMgMCAwMC4wMiAxNC44NWM0IDE2LjEzIDIwLjYyIDI4LjI3IDQwLjQ2IDI4LjI3aDEwMC42M2MyMi44MiAwIDQxLjM4LTE2LjA0IDQxLjM4LTM1Ljc2IDAtMTQuNDUtOS45OS0yNy40MS0yNS40NC0zMyIgZmlsbD0iIzQ0OTJhOCIvPjwvc3ZnPg=="},75322:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iMTAiLz48cGF0aCBkPSJNMjIgMTJoLTRNNiAxMkgyTTEyIDZWMk0xMiAyMnYtNCIvPjwvc3ZnPg=="},26320:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjU0LjQ0IiBoZWlnaHQ9IjI1Ni4zOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjNjFjOWU3Ij48cGF0aCBkPSJNMjMzLjMgNzEuNThhNy40MiA3LjQyIDAgMDEtMi42My0zLjg0IDU1LjUgNTUuNSAwIDAwLTUzLjA4LTM5Ljg3Yy00LjUgMC05IC41NS0xMy4zNSAxLjYzLTMgLjc0LTYuMTUtLjQ1LTcuOS0zQTYxLjEgNjEuMSAwIDAwMTA2IC4wMSA2MC44OSA2MC44OSAwIDAwNjQuODMgMTZhNjAuODcgNjAuODcgMCAwMC0xOS42IDM5LjIgNy40MiA3LjQyIDAgMDEtNC4yIDZjLS43My4zNC0xLjQ3LjcyLTIuMiAxLjEyLS42MS4zNS0xLjI4LjYtMS45Ny43NUE0Ny40OCA0Ny40OCAwIDAwMTAuNSA3OS4zNyA0Ni4zIDQ2LjMgMCAwMDAgMTA4LjkyYzAgMjUuOTEgMjEuMiA0NyA0Ny4yNiA0N0gyMDQuNmMyNi4wNiAwIDQ3LjI3LTIxLjA5IDQ3LjI3LTQ3YTQ2LjYgNDYuNiAwIDAwLTE4LjU2LTM3LjM0TTIzMS4zMiAxODcuOTFjMC00LjEtMy4zMy03LjQzLTcuNDMtNy40M0gyOC44N2E3LjQyIDcuNDIgMCAxMDAgMTQuODZoMTk1LjAyYzQuMSAwIDcuNDMtMy4zNCA3LjQzLTcuNDNNMjEzLjE0IDI0MS41NEgxOC4xMmE3LjQzIDcuNDMgMCAwMDAgMTQuODVoMTk1LjAyYTcuNDIgNy40MiAwIDEwMC0xNC44NU02Mi4yOCAyMTEuNDNhNy40MiA3LjQyIDAgMTAwIDE0Ljg1aDcxLjQ3YTcuNDMgNy40MyAwIDAwMC0xNC44NUg2Mi4yOE0yNDcgMjExLjQzaC03MS40OGE3LjQyIDcuNDIgMCAxMDAgMTQuODVIMjQ3YTcuNDMgNy40MyAwIDAwMC0xNC44NSIvPjwvZz48L3N2Zz4="},94776:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjUxLjg4IiBoZWlnaHQ9IjI1OC42NCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjUxLjg1IDEwOC45YTQ2LjYgNDYuNiAwIDAwLTE4LjU2LTM3LjM0IDcuNDMgNy40MyAwIDAxLTIuNjMtMy44NSA1NS41IDU1LjUgMCAwMC01My4wOC0zOS44NmMtNC41IDAtOSAuNTQtMTMuMzUgMS42Mi0zIC43NC02LjE1LS40NS03LjktM0E2MS4xIDYxLjEgMCAwMDEwNiAwYTYwLjg5IDYwLjg5IDAgMDAtNDEuMTggMTUuOTcgNjAuODcgNjAuODcgMCAwMC0xOS42IDM5LjIgNy40MyA3LjQzIDAgMDEtNC4yIDZjLS43My4zNS0xLjQ3LjczLTIuMiAxLjEzLS42MS4zNC0xLjI4LjYtMS45Ny43NWE0Ny40OCA0Ny40OCAwIDAwLTI2LjM1IDE2LjNBNDYuMyA0Ni4zIDAgMDAtLjAxIDEwOC45YzAgMjUuOTIgMjEuMiA0NyA0Ny4yNiA0N0gyMDQuNmMyNi4wNyAwIDQ3LjI3LTIxLjA4IDQ3LjI3LTQ3IiBmaWxsPSIjNDQ5MmE4Ii8+PGcgZmlsbD0iIzYxYzllNyI+PHBhdGggZD0iTTY2LjY2IDIyMy40NGE3LjQyIDcuNDIgMCAwMDcuMS05LjZsLTguOTQtMjkuMThhNy40MiA3LjQyIDAgMTAtMTQuMiA0LjM1bDguOTQgMjkuMTdhNy40MyA3LjQzIDAgMDA3LjEgNS4yNk0xMDcuNCAyNTguNjJhNy40MyA3LjQzIDAgMDA3LjEtOS42bC04LjkzLTI5LjE4YTcuNDIgNy40MiAwIDEwLTE0LjIgNC4zNWw4Ljk0IDI5LjE4YTcuNDMgNy40MyAwIDAwNy4xIDUuMjVNMTU5LjIyIDIxMy4wNmE3LjQzIDcuNDMgMCAwMC00LjkzIDkuMjhsOC45NCAyOS4xN2E3LjQzIDcuNDMgMCAxMDE0LjItNC4zNUwxNjguNSAyMThhNy40MyA3LjQzIDAgMDAtOS4yNy00LjkzTTEyOC44NCAyMjMuNDRhNy40MSA3LjQxIDAgMDA3LjEtOS42bC04LjkzLTI5LjE4YTcuNDMgNy40MyAwIDEwLTE0LjIgNC4zNWw4Ljk0IDI5LjE3YTcuNDMgNy40MyAwIDAwNy4xIDUuMjZNMTkxLjAzIDIyMy40NGE3LjQxIDcuNDEgMCAwMDcuMS05LjZsLTguOTQtMjkuMThBNy40MiA3LjQyIDAgMTAxNzUgMTg5bDguOTQgMjkuMTdhNy40MyA3LjQzIDAgMDA3LjEgNS4yNiIvPjwvZz48L3N2Zz4="},26157:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjk0LjcxIiBoZWlnaHQ9IjI1OC41NyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjNjFjOWU3Ij48cGF0aCBkPSJNMTA5LjA0IDExOS4xOGMwLTI5LjIgMjYuNC01Mi45NSA1OC44Ny01Mi45NSA3IDAgMTMuOCAxLjA4IDIwLjI4IDMuMjJhNTQuMzIgNTQuMzIgMCAwMTI1LjA0LTE0LjM1IDUxLjkzIDUxLjkzIDAgMDAtNDYuMzItMjguODNjLTQuMjEgMC04LjQxLjUxLTEyLjQ3IDEuNTItMyAuNzUtNi4xNi0uNDUtNy45MS0zQTU3LjE1IDU3LjE1IDAgMDA5OS40Ni4wMmMtMTQuMyAwLTI3Ljk3IDUuMzEtMzguNTEgMTQuOTVhNTYuOTMgNTYuOTMgMCAwMC0xOC4zMyAzNi42NSA3LjQzIDcuNDMgMCAwMS00LjIgNmMtLjY4LjMyLTEuMzcuNjgtMi4wNSAxLjA1LS42Mi4zNS0xLjI5LjYtMS45OC43NUE0NC4zIDQ0LjMgMCAwMDkuOCA3NC42NCA0My4yIDQzLjIgMCAwMDAgMTAyLjJjMCAyNC4xOCAxOS43OCA0My44NiA0NC4xIDQzLjg2aDUyLjk2YTQ4LjA0IDQ4LjA0IDAgMDExMi4wMy0yNC42M2MtLjAzLS43Ni0uMDUtMS41MS0uMDUtMi4yNk02NC45OSAyNTguNTlhNy40NCA3LjQ0IDAgMDA3LjEtOS42bC04Ljk0LTI5LjE4YTcuNDMgNy40MyAwIDAwLTE0LjIgNC4zNWw4Ljk0IDI5LjE3YTcuNDMgNy40MyAwIDAwNy4xIDUuMjZNMTI3LjE3IDI1OC41OWE3LjQzIDcuNDMgMCAwMDcuMS05LjZsLTguOTQtMjkuMThhNy40MyA3LjQzIDAgMDAtMTQuMiA0LjM1bDguOTQgMjkuMTdhNy40MyA3LjQzIDAgMDA3LjEgNS4yNk0xODkuMzYgMjU4LjU5YTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45NC0yOS4xOGE3LjQzIDcuNDMgMCAwMC0xNC4yIDQuMzVsOC45NCAyOS4xN2E3LjQzIDcuNDMgMCAwMDcuMSA1LjI2Ii8+PC9nPjxwYXRoIGQ9Ik0yNjkuMjYgMTIwLjQyYTcuNDMgNy40MyAwIDAxLTQuNDYtOS41IDI4Ljg2IDI4Ljg2IDAgMDAxLjczLTkuODJjMC0xNC4xLTEwLjI4LTI2LjE1LTI0LjctMzAuOTFhNDMuNTcgNDMuNTcgMCAwMC0yMS4wOS0xLjU1Yy05LjkgMS42OS0xOC43NCA2LjctMjQuNDkgMTQuMTJhNy40MyA3LjQzIDAgMDEtOC44IDIuMjggNDkuMTIgNDkuMTIgMCAwMC0xOS41NC0zLjk2Yy0yNC4yNyAwLTQ0LjAyIDE3LjA5LTQ0LjAyIDM4LjA5IDAgMS4zNS4wOSAyLjczLjI2IDQuMWE3LjQzIDcuNDMgMCAwMS0yLjIzIDYuMjYgMzQuMjEgMzQuMjEgMCAwMC05LjcxIDE2LjUzIDMxLjAzIDMxLjAzIDAgMDAuMDMgMTQuODVjNCAxNi4xMyAyMC42MSAyOC4yNyA0MC40NSAyOC4yN2gxMDAuNjNjMjIuODIgMCA0MS4zOC0xNi4wNSA0MS4zOC0zNS43NiAwLTE0LjQ2LTkuOTgtMjcuNDEtMjUuNDQtMzMiIGZpbGw9IiM0NDkyYTgiLz48L3N2Zz4="},50663:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzE4Ljk0IiBoZWlnaHQ9IjI4OS42MiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjNjFjOWU3Ij48cGF0aCBkPSJNMjg1LjA0IDEyNy42YTcuNDIgNy40MiAwIDAxLTIuNjQtMy44NSA1NS41IDU1LjUgMCAwMC01My4wOC0zOS44NmMtNC41IDAtOSAuNTQtMTMuMzQgMS42Mi0zIC43NS02LjE1LS40NS03LjktM2E2MS4xIDYxLjEgMCAwMC01MC4zMy0yNi40OCA2MC44OSA2MC44OSAwIDAwLTQxLjE4IDE1Ljk4IDYwLjg4IDYwLjg4IDAgMDAtMTkuNiAzOS4xOSA3LjQyIDcuNDIgMCAwMS00LjIgNmMtLjczLjM1LTEuNDcuNzMtMi4yIDEuMTMtLjYyLjM0LTEuMjkuNi0xLjk4Ljc1YTQ3LjQ4IDQ3LjQ4IDAgMDAtMjYuMzUgMTYuMyA0Ni4yOSA0Ni4yOSAwIDAwLTEwLjUxIDI5LjU1YzAgMjUuOTIgMjEuMiA0NyA0Ny4yNyA0N2gxNTcuMzRjMjYuMDYgMCA0Ny4yNi0yMS4wOCA0Ny4yNi00N2E0Ni42IDQ2LjYgMCAwMC0xOC41Ni0zNy4zMyIgcGFpbnQtb3JkZXI9InN0cm9rZSBmaWxsIG1hcmtlcnMiLz48cGF0aCBkPSJNOTEuOTggMjg3LjFhNy40MSA3LjQxIDAgMDA3LjEtOS42bC04Ljk0LTI5LjE4YTcuNDMgNy40MyAwIDAwLTE0LjIgNC4zNWw4Ljk0IDI5LjE4YTcuNDMgNy40MyAwIDAwNy4xIDUuMjVNMTU0LjE2IDI4Ny4xYTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45NC0yOS4xOGE3LjQzIDcuNDMgMCAwMC0xNC4yIDQuMzVsOC45NCAyOS4xOGE3LjQzIDcuNDMgMCAwMDcuMSA1LjI1TTIxNi4zNSAyODcuMWE3LjQzIDcuNDMgMCAwMDcuMS05LjZsLTguOTQtMjkuMThhNy40MyA3LjQzIDAgMTAtMTQuMiA0LjM1bDguOTQgMjkuMThhNy40MyA3LjQzIDAgMDA3LjEgNS4yNU0xMTYuNTggMjU5Ljk3YTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45NC0yOS4xOGE3LjQzIDcuNDMgMCAwMC0xNC4yIDQuMzVsOC45NCAyOS4xN2E3LjQzIDcuNDMgMCAwMDcuMSA1LjI2TTE3OC43NiAyNTkuOTdhNy40MyA3LjQzIDAgMDA3LjEtOS42bC04Ljk0LTI5LjE4YTcuNDMgNy40MyAwIDEwLTE0LjIgNC4zNWw4Ljk0IDI5LjE3YTcuNDMgNy40MyAwIDAwNy4xIDUuMjZNMjc4LjMzIDI4Ny4wOWE3LjQzIDcuNDMgMCAwMDcuMS05LjZsLTguOTQtMjkuMThhNy40MyA3LjQzIDAgMTAtMTQuMiA0LjM1bDguOTQgMjkuMTdhNy40MyA3LjQzIDAgMDA3LjEgNS4yNk0yNDAuNzMgMjU5Ljk1YTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45NC0yOS4xOGE3LjQzIDcuNDMgMCAxMC0xNC4yIDQuMzVsOC45NCAyOS4xOGE3LjQzIDcuNDMgMCAwMDcuMSA1LjI1Ii8+PC9nPjxwYXRoIGQ9Ik03OS44Mi0uMDVjLTMuMzcgMS4wMi02LjY5IDIuMi05Ljk2IDMuNTQtNTcuNTUgMjMuNTctODUuMiA4OS41Ni02MS42MyAxNDcuMTIgOC4xOSAyMCAyMS42MSAzNi44NCAzOC44IDQ5LjA3YTYxLjYgNjEuNiAwIDAxLTEwLjgtMzQuODNjMC0xNC4zIDQuOTMtMjguMTMgMTMuOTYtMzkuMjJhNjIuNjYgNjIuNjYgMCAwMTUuOTktNi4zNiAxMjUuODIgMTI1LjgyIDAgMDEtMS42OS03MC4wOUExMjguNDMgMTI4LjQzIDAgMDE3OS44Mi0uMDV6IiBmaWxsPSIjZTFjMDE0Ii8+PC9zdmc+"},53107:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzE4Ljk0IiBoZWlnaHQ9IjI4OS42MiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjNjFjOWU3Ij48cGF0aCBkPSJNMjg1LjA0IDEyNy42YTcuNDIgNy40MiAwIDAxLTIuNjQtMy44NSA1NS41IDU1LjUgMCAwMC01My4wOC0zOS44NmMtNC41IDAtOSAuNTQtMTMuMzQgMS42Mi0zIC43NS02LjE1LS40NS03LjktM2E2MS4xIDYxLjEgMCAwMC01MC4zMy0yNi40OCA2MC44OSA2MC44OSAwIDAwLTQxLjE4IDE1Ljk4IDYwLjg4IDYwLjg4IDAgMDAtMTkuNiAzOS4xOSA3LjQyIDcuNDIgMCAwMS00LjIgNmMtLjczLjM1LTEuNDcuNzMtMi4yIDEuMTMtLjYyLjM0LTEuMjkuNi0xLjk4Ljc1YTQ3LjQ4IDQ3LjQ4IDAgMDAtMjYuMzUgMTYuMyA0Ni4yOSA0Ni4yOSAwIDAwLTEwLjUxIDI5LjU1YzAgMjUuOTIgMjEuMiA0NyA0Ny4yNyA0N2gxNTcuMzRjMjYuMDYgMCA0Ny4yNi0yMS4wOCA0Ny4yNi00N2E0Ni42IDQ2LjYgMCAwMC0xOC41Ni0zNy4zMyIgcGFpbnQtb3JkZXI9InN0cm9rZSBmaWxsIG1hcmtlcnMiLz48cGF0aCBkPSJNMTE5Ljk1IDI4OS42M2E3LjQxIDcuNDEgMCAwMDcuMS05LjZsLTguOTQtMjkuMThhNy40MyA3LjQzIDAgMDAtMTQuMiA0LjM1bDguOTQgMjkuMThhNy40MyA3LjQzIDAgMDA3LjEgNS4yNU0xODIuMTMgMjg5LjYzYTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45My0yOS4xOGE3LjQzIDcuNDMgMCAwMC0xNC4yIDQuMzVsOC45NCAyOS4xOGE3LjQzIDcuNDMgMCAwMDcuMSA1LjI1TTI0NC4zMiAyODkuNjNhNy40MyA3LjQzIDAgMDA3LjEtOS42bC04Ljk0LTI5LjE4YTcuNDMgNy40MyAwIDEwLTE0LjIgNC4zNWw4Ljk0IDI5LjE4YTcuNDMgNy40MyAwIDAwNy4xIDUuMjUiLz48L2c+PHBhdGggZD0iTTgwLjY2LS45Qzc3LjI5LjE0IDczLjk3IDEuMzIgNzAuNyAyLjY2IDEzLjE1IDI2LjIyLTE0LjUgOTIuMjEgOS4wNyAxNDkuNzdjOC4xOSAyMCAyMS42MSAzNi44NCAzOC44IDQ5LjA3QTYxLjYgNjEuNiAwIDAxMzcuMDcgMTY0YzAtMTQuMyA0LjkzLTI4LjEzIDEzLjk2LTM5LjIyYTYyLjY2IDYyLjY2IDAgMDE1Ljk5LTYuMzYgMTI1LjgyIDEyNS44MiAwIDAxLTEuNjktNzAuMDlBMTI4LjQzIDEyOC40MyAwIDAxODAuNjYtLjg5eiIgZmlsbD0iI2UxYzAxNCIvPjwvc3ZnPg=="},18138:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzE4Ljk0IiBoZWlnaHQ9IjI4OS42MiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjNjFjOWU3Ij48cGF0aCBkPSJNMjg1LjA0IDEyNy42YTcuNDIgNy40MiAwIDAxLTIuNjQtMy44NSA1NS41IDU1LjUgMCAwMC01My4wOC0zOS44NmMtNC41IDAtOSAuNTQtMTMuMzQgMS42Mi0zIC43NS02LjE1LS40NS03LjktM2E2MS4xIDYxLjEgMCAwMC01MC4zMy0yNi40OCA2MC44OSA2MC44OSAwIDAwLTQxLjE4IDE1Ljk4IDYwLjg4IDYwLjg4IDAgMDAtMTkuNiAzOS4xOSA3LjQyIDcuNDIgMCAwMS00LjIgNmMtLjczLjM1LTEuNDcuNzMtMi4yIDEuMTMtLjYyLjM0LTEuMjkuNi0xLjk4Ljc1YTQ3LjQ4IDQ3LjQ4IDAgMDAtMjYuMzUgMTYuMyA0Ni4yOSA0Ni4yOSAwIDAwLTEwLjUxIDI5LjU1YzAgMjUuOTIgMjEuMiA0NyA0Ny4yNyA0N2gxNTcuMzRjMjYuMDYgMCA0Ny4yNi0yMS4wOCA0Ny4yNi00N2E0Ni42IDQ2LjYgMCAwMC0xOC41Ni0zNy4zMyIgcGFpbnQtb3JkZXI9InN0cm9rZSBmaWxsIG1hcmtlcnMiLz48cGF0aCBkPSJNMTI1LjAzIDI4Ny45NGE3LjQxIDcuNDEgMCAwMDcuMS05LjZsLTguOTQtMjkuMThhNy40MyA3LjQzIDAgMDAtMTQuMiA0LjM1bDguOTQgMjkuMThhNy40MyA3LjQzIDAgMDA3LjEgNS4yNU0xODcuMjEgMjg3Ljk0YTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45My0yOS4xOGE3LjQzIDcuNDMgMCAwMC0xNC4yIDQuMzVsOC45NCAyOS4xOGE3LjQzIDcuNDMgMCAwMDcuMSA1LjI1TTI0OS40IDI4Ny45NGE3LjQzIDcuNDMgMCAwMDcuMS05LjZsLTguOTQtMjkuMThhNy40MyA3LjQzIDAgMTAtMTQuMiA0LjM1bDguOTQgMjkuMThhNy40MyA3LjQzIDAgMDA3LjEgNS4yNU0xNDkuNjMgMjYwLjhhNy40MyA3LjQzIDAgMDA3LjEtOS42bC04Ljk0LTI5LjE3YTcuNDMgNy40MyAwIDAwLTE0LjIgNC4zNWw4Ljk0IDI5LjE3YTcuNDMgNy40MyAwIDAwNy4xIDUuMjZNMjExLjgxIDI2MC44YTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45NC0yOS4xN2E3LjQzIDcuNDMgMCAxMC0xNC4yIDQuMzVsOC45NSAyOS4xN2E3LjQzIDcuNDMgMCAwMDcuMSA1LjI2Ii8+PC9nPjxwYXRoIGQ9Ik03OS44Mi0uMDVjLTMuMzcgMS4wMi02LjY5IDIuMi05Ljk2IDMuNTQtNTcuNTUgMjMuNTctODUuMiA4OS41Ni02MS42MyAxNDcuMTIgOC4xOSAyMCAyMS42MSAzNi44NCAzOC44IDQ5LjA3YTYxLjYgNjEuNiAwIDAxLTEwLjgtMzQuODNjMC0xNC4zIDQuOTMtMjguMTMgMTMuOTYtMzkuMjJhNjIuNjYgNjIuNjYgMCAwMTUuOTktNi4zNiAxMjUuODIgMTI1LjgyIDAgMDEtMS42OS03MC4wOUExMjguNDMgMTI4LjQzIDAgMDE3OS44Mi0uMDV6IiBmaWxsPSIjZTFjMDE0Ii8+PC9zdmc+"},53748:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjM4LjMiIGhlaWdodD0iMjI4LjU3IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGZpbGw9IiM2MWM5ZTciPjxwYXRoIGQ9Ik05MS42NCA2Ni41NEw4Ni40NiA4NS45bDE4LjUyLTcuNjYgMTYuOCAxMC45MS0xLjU1LTE5Ljk3IDE1LjU3LTEyLjYyLTE5LjQ4LTQuNjktNy4xOS0xOC43LTEwLjQ4IDE3LjA3LTIwLjAxIDEuMDQgMTMgMTUuMjZNMTc2Ljc5IDQ1LjQ2bC03LjY3LTEwLjMtMy41MSAxMi4zNS0xMi4xNyA0LjEgMTAuNjYgNy4xNi4xNCAxMi44NCAxMC4xLTcuOTIgMTIuMjcgMy44My00LjQyLTEyLjA2IDcuNDMtMTAuNDgtMTIuODMuNDgiLz48cGF0aCBkPSJNMjEyLjE3IDE1NS42NGE1LjI1IDUuMjUgMCAwMS0xLjg3LTIuNzMgMzkuNTIgMzkuNTIgMCAwMC0zNy43OS0yOC4zOGMtMy4yIDAtNi40LjM5LTkuNSAxLjE2YTUuMjkgNS4yOSAwIDAxLTUuNjMtMi4xNCA0My41IDQzLjUgMCAwMC02NS4xNC03LjQ4IDQzLjM1IDQzLjM1IDAgMDAtMTMuOTUgMjcuOSA1LjMgNS4zIDAgMDEtMyA0LjI4Yy0uNTIuMjQtMS4wNC41MS0xLjU2LjgtLjQ0LjI0LS45MS40Mi0xLjQuNTNhMzMuODQgMzMuODQgMCAwMC0xOC43NyAxMS42IDMyLjk5IDMyLjk5IDAgMDAtNy40OCAyMS4wNWMwIDE4LjQ0IDE1LjEgMzMuNDUgMzMuNjUgMzMuNDVoMTEyYzE4LjU2IDAgMzMuNjYtMTUgMzMuNjYtMzMuNDVhMzMuMiAzMy4yIDAgMDAtMTMuMjItMjYuNTkiIHBhaW50LW9yZGVyPSJzdHJva2UgZmlsbCBtYXJrZXJzIi8+PC9nPjxwYXRoIGQ9Ik04Mi45LS4zM2ExMTcuNjIgMTE3LjYyIDAgMDAtMTAuMyAzLjY3QzEzLjA2IDI3LjczLTE1LjU1IDk2IDguODQgMTU1LjU0YTExNi40MyAxMTYuNDMgMCAwMDI2LjM2IDM5LjI0IDQ1LjYyIDQ1LjYyIDAgMDEtMS44Ny0xMi45QTQ2LjMgNDYuMyAwIDAxNDMuNyAxNTIuN2wuMDEtLjAxYTQ2LjU5IDQ2LjU5IDAgMDEyMC41Mi0xNC40N0ExMzAuNCAxMzAuNCAwIDAxNTYuNyA1MC42IDEzMi44OCAxMzIuODggMCAwMTgyLjktLjMyeiIgZmlsbD0iI2UxYzAxNCIvPjwvc3ZnPg=="},26625:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjM4LjMiIGhlaWdodD0iMjI4LjU3IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGZpbGw9IiM2MWM5ZTciPjxwYXRoIGQ9Ik05OC40MyAxMDIuMTJsLTUuMTkgMTkuMzYgMTguNTMtNy42NSAxNi44IDEwLjktMS41Ni0xOS45NyAxNS41OC0xMi42MS0xOS40OS00LjctNy4xOC0xOC43LTEwLjQ4IDE3LjA4LTIwLjAyIDEuMDQgMTMuMDEgMTUuMjVNMTc2Ljc5IDQ1LjQ2bC03LjY3LTEwLjMtMy41MSAxMi4zNS0xMi4xNyA0LjEgMTAuNjYgNy4xNi4xNCAxMi44NCAxMC4xLTcuOTIgMTIuMjcgMy44My00LjQyLTEyLjA2IDcuNDMtMTAuNDgtMTIuODMuNDgiLz48cGF0aCBkPSJNMjIwLjc2IDE3OS41OWEzLjUzIDMuNTMgMCAwMS0xLjI2LTEuODQgMjYuNTQgMjYuNTQgMCAwMC0zMS43Ni0xOC4yOCAzLjU1IDMuNTUgMCAwMS0zLjc4LTEuNDQgMjkuMjEgMjkuMjEgMCAwMC01My4xMiAxMy43MiAzLjU2IDMuNTYgMCAwMS0yIDIuODdjLS4zNi4xNy0uNzEuMzUtMS4wNi41NC0uMy4xNi0uNjEuMjgtLjk1LjM1YTIyLjczIDIyLjczIDAgMDAtMTIuNiA3LjggMjIuMTUgMjIuMTUgMCAwMC01LjAyIDE0LjEzIDIyLjU2IDIyLjU2IDAgMDAyMi42IDIyLjQ3aDc1LjIzYTIyLjU2IDIyLjU2IDAgMDAyMi42LTIyLjQ3IDIyLjMgMjIuMyAwIDAwLTguODgtMTcuODUiIHBhaW50LW9yZGVyPSJzdHJva2UgZmlsbCBtYXJrZXJzIi8+PC9nPjxwYXRoIGQ9Ik04Mi40Ny0uMDJhMTE3LjYyIDExNy42MiAwIDAwLTEwLjMgMy42N0MxMi42MyAyOC4wMy0xNS45NyA5Ni4zIDguNDEgMTU1Ljg1YTExNS45MSAxMTUuOTEgMCAwMDYyLjkgNjMuNCAxMTYuMTggMTE2LjE4IDAgMDA1NC4zOSA4LjczYy0xNC40LTIuNzQtMjUuNDUtMTUuNDQtMjUuNDUtMzAuNTcgMC0zLjQ2LjU5LTYuODYgMS43LTEwLjA5YTEzMC40MiAxMzAuNDIgMCAwMS00MC4xMi01My4zNSAxMzAuNCAxMzAuNCAwIDAxLTUuNTYtODMuMDZBMTMyLjg4IDEzMi44OCAwIDAxODIuNDctLjAyeiIgZmlsbD0iI2UxYzAxNCIvPjwvc3ZnPg=="},87760:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTg5LjYzIiBoZWlnaHQ9IjIyOC40IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik02Mi4xMSAxMzRhMTMwLjQgMTMwLjQgMCAwMS01LjU1LTgzLjA1QTEzMi44OSAxMzIuODkgMCAwMTgyLjc2IDBhMTE3LjY0IDExNy42NCAwIDAwLTEwLjMgMy42N0MxMi45MiAyOC4wNy0xNS43IDk2LjM0IDguNyAxNTUuODhhMTE1LjkxIDExNS45MSAwIDAwNjIuODkgNjMuNCAxMTUuOTMgMTE1LjkzIDAgMDA4OS4zLjM2YzMuMzktMS4zOSA2LjctMi45MiA5LjkyLTQuNjJhMTMyLjY2IDEzMi42NiAwIDAxLTU0LjQtMTcuOTIgMTMwLjQ1IDEzMC40NSAwIDAxLTU0LjMtNjMuMSIgZmlsbD0iI2UxYzAxNCIvPjxwYXRoIGQ9Ik0xMjIuMTUgMTIzLjNsLTUuMTkgMTkuMzcgMTguNTItNy42NSAxNi44MSAxMC45LTEuNTYtMTkuOTcgMTUuNTgtMTIuNjEtMTkuNDktNC43LTcuMTgtMTguNy0xMC40OCAxNy4wOC0yMC4wMiAxLjA0IDEzLjAxIDE1LjI1TTE3Ni43OSA0NS40NmwtNy42Ny0xMC4zLTMuNTEgMTIuMzUtMTIuMTcgNC4xIDEwLjY2IDcuMTYuMTQgMTIuODQgMTAuMS03LjkyIDEyLjI3IDMuODMtNC40Mi0xMi4wNiA3LjQzLTEwLjQ4LTEyLjgzLjQ4IiBmaWxsPSIjNjFjOWU3Ii8+PC9zdmc+"},37837:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjUxLjg3IiBoZWlnaHQ9IjIyMy40NSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNDcuMjYgMTU1LjlIMjA0LjZjMjYuMDYgMCA0Ny4yNy0yMS4xIDQ3LjI3LTQ3YTQ2LjYgNDYuNiAwIDAwLTE4LjU2LTM3LjM0IDcuNDMgNy40MyAwIDAxLTIuNjQtMy44NSA1NS41IDU1LjUgMCAwMC01My4wOC0zOS44NmMtNC41IDAtOSAuNTQtMTMuMzQgMS42Mi0zIC43NC02LjE1LS40NS03LjktM0E2MS4xIDYxLjEgMCAwMDEwNi4wMSAwYTYwLjg5IDYwLjg5IDAgMDAtNDEuMTggMTUuOTggNjAuODggNjAuODggMCAwMC0xOS42IDM5LjE5IDcuNDIgNy40MiAwIDAxLTQuMiA2Yy0uNzQuMzUtMS40OC43My0yLjIgMS4xMy0uNjIuMzQtMS4yOS42LTEuOTguNzVhNDcuNDcgNDcuNDcgMCAwMC0yNi4zNSAxNi4zQTQ2LjMgNDYuMyAwIDAwMCAxMDguOWMwIDI1LjkyIDIxLjIgNDcgNDcuMjYgNDciIGZpbGw9IiM0NDkyYTgiLz48ZyBmaWxsPSIjNjFjOWU3Ij48cGF0aCBkPSJNNTUuNTUgMTc5Ljc0YTcuNDIgNy40MiAwIDAwLTQuOTIgOS4yOGw4Ljk0IDI5LjE3YTcuNDMgNy40MyAwIDEwMTQuMi00LjM1bC04Ljk0LTI5LjE3YTcuNDIgNy40MiAwIDAwLTkuMjgtNC45M00xMTcuNzQgMTc5Ljc0YTcuNDMgNy40MyAwIDAwLTQuOTMgOS4yOGw4Ljk0IDI5LjE3YTcuNDMgNy40MyAwIDAwMTQuMi00LjM1bC04Ljk0LTI5LjE3YTcuNDMgNy40MyAwIDAwLTkuMjctNC45M00xNzkuOTIgMTc5Ljc0YTcuNDMgNy40MyAwIDAwLTQuOTIgOS4yOGw4Ljk0IDI5LjE3YTcuNDMgNy40MyAwIDAwMTQuMi00LjM1bC04Ljk0LTI5LjE3YTcuNDMgNy40MyAwIDAwLTkuMjgtNC45MyIvPjwvZz48L3N2Zz4="},53254:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzA3LjE5IiBoZWlnaHQ9IjI5MS4zMyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNTUuNTcgOTIuNTRjMCA5LjI3IDMuNDMgMTguMDIgOS41NCAyNC43NmE2Mi4zNiA2Mi4zNiAwIDAxMjEuMjItMTAuMzggNzUuNzIgNzUuNzIgMCAwMTI1LjYxLTQ1LjggMzYuOTcgMzYuOTcgMCAwMC01Ni4zNyAzMS40IiBmaWxsPSIjZGVjNjBmIi8+PGcgZmlsbD0iIzYxYzllNyI+PHBhdGggZD0iTTI4OC42IDEyOS4zYTcuNDIgNy40MiAwIDAxLTIuNjMtMy44NUE1NS41IDU1LjUgMCAwMDIzMi45IDg1LjZjLTQuNSAwLTkgLjU0LTEzLjM0IDEuNjItMyAuNzUtNi4xNS0uNDUtNy45LTNhNjEuMSA2MS4xIDAgMDAtNTAuMzMtMjYuNDggNjAuODkgNjAuODkgMCAwMC00MS4xOCAxNS45OCA2MC44OCA2MC44OCAwIDAwLTE5LjYgMzkuMTkgNy40MiA3LjQyIDAgMDEtNC4yIDZjLS43My4zNS0xLjQ3LjczLTIuMiAxLjEzLS42Mi4zNC0xLjI5LjYtMS45OC43NWE0Ny40OCA0Ny40OCAwIDAwLTI2LjM1IDE2LjMgNDYuMjkgNDYuMjkgMCAwMC0xMC41MSAyOS41NWMwIDI1LjkyIDIxLjIgNDcgNDcuMjcgNDdIMjU5LjljMjYuMDYgMCA0Ny4yNi0yMS4wOCA0Ny4yNi00N2E0Ni42IDQ2LjYgMCAwMC0xOC41Ni0zNy4zM005NS4zNSAyNjMuNzdhNy40MSA3LjQxIDAgMDA3LjEtOS42bC04Ljk0LTI5LjE4YTcuNDMgNy40MyAwIDAwLTE0LjIgNC4zNWw4Ljk0IDI5LjE4YTcuNDMgNy40MyAwIDAwNy4xIDUuMjVNMTU3LjUzIDI2My43N2E3LjQzIDcuNDMgMCAwMDcuMS05LjZsLTguOTQtMjkuMThhNy40MyA3LjQzIDAgMDAtMTQuMiA0LjM1bDguOTQgMjkuMThhNy40MyA3LjQzIDAgMDA3LjEgNS4yNU0yMTkuNzIgMjYzLjc3YTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45NC0yOS4xOGE3LjQzIDcuNDMgMCAxMC0xNC4yIDQuMzVsOC45NCAyOS4xOGE3LjQzIDcuNDMgMCAwMDcuMSA1LjI1Ii8+PC9nPjxnIGZpbGw9IiNkZWM2MGYiPjxwYXRoIGQ9Ik04NS4wOCA3LjQ1djIwLjg5YTcuNDMgNy40MyAwIDAwMTQuODUgMFY3LjQ0YTcuNDMgNy40MyAwIDEwLTE0Ljg1IDBNNjAuNDEgNDQuMzZhNy40MyA3LjQzIDAgMDA2LjQyLTExLjE0TDU2LjQgMTUuMTJhNy40MyA3LjQzIDAgMDAtMTIuODYgNy40NGwxMC40NSAxOC4wOWE3LjQyIDcuNDIgMCAwMDYuNDMgMy43MU00MC42MSA1NEwyMi41MiA0My41NmE3LjQzIDcuNDMgMCAxMC03LjQzIDEyLjg2bDE4LjEgMTAuNDVBNy40MyA3LjQzIDAgMDA0MC42MiA1NE0zNS43MyA5Mi41NGMwLTQuMS0zLjMyLTcuNDMtNy40Mi03LjQzSDcuNGE3LjQzIDcuNDMgMCAwMDAgMTQuODVoMjAuOWM0LjEgMCA3LjQyLTMuMzIgNy40Mi03LjQyTTQwLjYxIDEzMS4wN2E3LjQzIDcuNDMgMCAxMC03LjQyLTEyLjg2bC0xOC4xIDEwLjQ0YTcuNDMgNy40MyAwIDEwNy40MyAxMi44N2wxOC4xLTEwLjQ1TTEyMC45IDQzLjM2YTcuNDIgNy40MiAwIDAwMTAuMTUtMi43MmwxMC40My0xOC4wOWE3LjQzIDcuNDMgMCAwMC0xMi44Ni03LjQybC0xMC40NSAxOC4xYTcuNDMgNy40MyAwIDAwMi43MiAxMC4xMyIvPjwvZz48ZyBmaWxsPSIjNjFjOWU3Ij48cGF0aCBkPSJNMTk0LjQxIDI5MC41OWE3LjQxIDcuNDEgMCAwMDcuMS05LjZsLTguOTQtMjkuMThhNy40MyA3LjQzIDAgMDAtMTQuMiA0LjM1bDguOTQgMjkuMTdhNy40MyA3LjQzIDAgMDA3LjEgNS4yNk0xMzIuNyAyODkuMzlhNy40MSA3LjQxIDAgMDA3LjEtOS42bC04Ljk1LTI5LjE4YTcuNDMgNy40MyAwIDAwLTE0LjIgNC4zNWw4Ljk0IDI5LjE3YTcuNDMgNy40MyAwIDAwNy4xIDUuMjZNMjgwLjE3IDI2MS42YTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45NC0yOS4xOGE3LjQzIDcuNDMgMCAxMC0xNC4yIDQuMzVsOC45NCAyOS4xOGE3LjQzIDcuNDMgMCAwMDcuMSA1LjI1TTI1NC44NiAyODguNDFhNy40MSA3LjQxIDAgMDA3LjEtOS42bC04Ljk0LTI5LjE4YTcuNDMgNy40MyAwIDAwLTE0LjIgNC4zNWw4Ljk0IDI5LjE4YTcuNDMgNy40MyAwIDAwNy4xIDUuMjUiLz48L2c+PC9zdmc+"},14593:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzA3LjE5IiBoZWlnaHQ9IjI5MS4zMyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNTUuNTcgOTIuNTRjMCA5LjI3IDMuNDMgMTguMDIgOS41NCAyNC43NmE2Mi4zNiA2Mi4zNiAwIDAxMjEuMjItMTAuMzggNzUuNzIgNzUuNzIgMCAwMTI1LjYxLTQ1LjggMzYuOTcgMzYuOTcgMCAwMC01Ni4zNyAzMS40IiBmaWxsPSIjZGVjNjBmIi8+PGcgZmlsbD0iIzYxYzllNyI+PHBhdGggZD0iTTI4OC42IDEyOS4zYTcuNDIgNy40MiAwIDAxLTIuNjMtMy44NUE1NS41IDU1LjUgMCAwMDIzMi45IDg1LjZjLTQuNSAwLTkgLjU0LTEzLjM0IDEuNjItMyAuNzUtNi4xNS0uNDUtNy45LTNhNjEuMSA2MS4xIDAgMDAtNTAuMzMtMjYuNDggNjAuODkgNjAuODkgMCAwMC00MS4xOCAxNS45OCA2MC44OCA2MC44OCAwIDAwLTE5LjYgMzkuMTkgNy40MiA3LjQyIDAgMDEtNC4yIDZjLS43My4zNS0xLjQ3LjczLTIuMiAxLjEzLS42Mi4zNC0xLjI5LjYtMS45OC43NWE0Ny40OCA0Ny40OCAwIDAwLTI2LjM1IDE2LjMgNDYuMjkgNDYuMjkgMCAwMC0xMC41MSAyOS41NWMwIDI1LjkyIDIxLjIgNDcgNDcuMjcgNDdIMjU5LjljMjYuMDYgMCA0Ny4yNi0yMS4wOCA0Ny4yNi00N2E0Ni42IDQ2LjYgMCAwMC0xOC41Ni0zNy4zM00xMjMuNTIgMjkxLjMzYTcuNDEgNy40MSAwIDAwNy4xLTkuNmwtOC45NC0yOS4xOGE3LjQzIDcuNDMgMCAwMC0xNC4yIDQuMzVsOC45NCAyOS4xOGE3LjQzIDcuNDMgMCAwMDcuMSA1LjI1TTE4NS43IDI5MS4zM2E3LjQzIDcuNDMgMCAwMDcuMS05LjZsLTguOTMtMjkuMThhNy40MyA3LjQzIDAgMDAtMTQuMiA0LjM1bDguOTQgMjkuMThhNy40MyA3LjQzIDAgMDA3LjEgNS4yNU0yNDcuODkgMjkxLjMzYTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45NC0yOS4xOGE3LjQzIDcuNDMgMCAxMC0xNC4yIDQuMzVsOC45NCAyOS4xOGE3LjQzIDcuNDMgMCAwMDcuMSA1LjI1Ii8+PC9nPjxnIGZpbGw9IiNkZWM2MGYiPjxwYXRoIGQ9Ik04NS4wOCA3LjQ1djIwLjg5YTcuNDMgNy40MyAwIDAwMTQuODUgMFY3LjQ0YTcuNDMgNy40MyAwIDEwLTE0Ljg1IDBNNjAuNDEgNDQuMzZhNy40MyA3LjQzIDAgMDA2LjQyLTExLjE0TDU2LjQgMTUuMTJhNy40MyA3LjQzIDAgMDAtMTIuODYgNy40NGwxMC40NSAxOC4wOWE3LjQyIDcuNDIgMCAwMDYuNDMgMy43MU00MC42MSA1NEwyMi41MiA0My41NmE3LjQzIDcuNDMgMCAxMC03LjQzIDEyLjg2bDE4LjEgMTAuNDVBNy40MyA3LjQzIDAgMDA0MC42MiA1NE0zNS43MyA5Mi41NGMwLTQuMS0zLjMyLTcuNDMtNy40Mi03LjQzSDcuNGE3LjQzIDcuNDMgMCAwMDAgMTQuODVoMjAuOWM0LjEgMCA3LjQyLTMuMzIgNy40Mi03LjQyTTQwLjYxIDEzMS4wN2E3LjQzIDcuNDMgMCAxMC03LjQyLTEyLjg2bC0xOC4xIDEwLjQ0YTcuNDMgNy40MyAwIDEwNy40MyAxMi44N2wxOC4xLTEwLjQ1TTEyMC45IDQzLjM2YTcuNDIgNy40MiAwIDAwMTAuMTUtMi43MmwxMC40My0xOC4wOWE3LjQzIDcuNDMgMCAwMC0xMi44Ni03LjQybC0xMC40NSAxOC4xYTcuNDMgNy40MyAwIDAwMi43MiAxMC4xMyIvPjwvZz48L3N2Zz4="},97251:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzA3LjE5IiBoZWlnaHQ9IjI5MS4zMyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNTUuNTcgOTIuNTRjMCA5LjI3IDMuNDMgMTguMDIgOS41NCAyNC43NmE2Mi4zNiA2Mi4zNiAwIDAxMjEuMjItMTAuMzggNzUuNzIgNzUuNzIgMCAwMTI1LjYxLTQ1LjggMzYuOTcgMzYuOTcgMCAwMC01Ni4zNyAzMS40IiBmaWxsPSIjZGVjNjBmIi8+PGcgZmlsbD0iIzYxYzllNyI+PHBhdGggZD0iTTI4OC42IDEyOS4zYTcuNDIgNy40MiAwIDAxLTIuNjMtMy44NUE1NS41IDU1LjUgMCAwMDIzMi45IDg1LjZjLTQuNSAwLTkgLjU0LTEzLjM0IDEuNjItMyAuNzUtNi4xNS0uNDUtNy45LTNhNjEuMSA2MS4xIDAgMDAtNTAuMzMtMjYuNDggNjAuODkgNjAuODkgMCAwMC00MS4xOCAxNS45OCA2MC44OCA2MC44OCAwIDAwLTE5LjYgMzkuMTkgNy40MiA3LjQyIDAgMDEtNC4yIDZjLS43My4zNS0xLjQ3LjczLTIuMiAxLjEzLS42Mi4zNC0xLjI5LjYtMS45OC43NWE0Ny40OCA0Ny40OCAwIDAwLTI2LjM1IDE2LjMgNDYuMjkgNDYuMjkgMCAwMC0xMC41MSAyOS41NWMwIDI1LjkyIDIxLjIgNDcgNDcuMjcgNDdIMjU5LjljMjYuMDYgMCA0Ny4yNi0yMS4wOCA0Ny4yNi00N2E0Ni42IDQ2LjYgMCAwMC0xOC41Ni0zNy4zM00xMTYuOTIgMjY0Ljk3YTcuNDEgNy40MSAwIDAwNy4xLTkuNmwtOC45NC0yOS4xOGE3LjQzIDcuNDMgMCAwMC0xNC4yIDQuMzVsOC45NCAyOS4xOGE3LjQzIDcuNDMgMCAwMDcuMSA1LjI1TTE3OS4xIDI2NC45N2E3LjQzIDcuNDMgMCAwMDcuMS05LjZsLTguOTMtMjkuMThhNy40MyA3LjQzIDAgMDAtMTQuMiA0LjM1bDguOTQgMjkuMThhNy40MyA3LjQzIDAgMDA3LjEgNS4yNU0yNDEuMjkgMjY0Ljk3YTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45NC0yOS4xOGE3LjQzIDcuNDMgMCAxMC0xNC4yIDQuMzVsOC45NCAyOS4xOGE3LjQzIDcuNDMgMCAwMDcuMSA1LjI1Ii8+PC9nPjxnIGZpbGw9IiNkZWM2MGYiPjxwYXRoIGQ9Ik04NS4wOCA3LjQ1djIwLjg5YTcuNDMgNy40MyAwIDAwMTQuODUgMFY3LjQ0YTcuNDMgNy40MyAwIDEwLTE0Ljg1IDBNNjAuNDEgNDQuMzZhNy40MyA3LjQzIDAgMDA2LjQyLTExLjE0TDU2LjQgMTUuMTJhNy40MyA3LjQzIDAgMDAtMTIuODYgNy40NGwxMC40NSAxOC4wOWE3LjQyIDcuNDIgMCAwMDYuNDMgMy43MU00MC42MSA1NEwyMi41MiA0My41NmE3LjQzIDcuNDMgMCAxMC03LjQzIDEyLjg2bDE4LjEgMTAuNDVBNy40MyA3LjQzIDAgMDA0MC42MiA1NE0zNS43MyA5Mi41NGMwLTQuMS0zLjMyLTcuNDMtNy40Mi03LjQzSDcuNGE3LjQzIDcuNDMgMCAwMDAgMTQuODVoMjAuOWM0LjEgMCA3LjQyLTMuMzIgNy40Mi03LjQyTTQwLjYxIDEzMS4wN2E3LjQzIDcuNDMgMCAxMC03LjQyLTEyLjg2bC0xOC4xIDEwLjQ0YTcuNDMgNy40MyAwIDEwNy40MyAxMi44N2wxOC4xLTEwLjQ1TTEyMC45IDQzLjM2YTcuNDIgNy40MiAwIDAwMTAuMTUtMi43MmwxMC40My0xOC4wOWE3LjQzIDcuNDMgMCAwMC0xMi44Ni03LjQybC0xMC40NSAxOC4xYTcuNDMgNy40MyAwIDAwMi43MiAxMC4xMyIvPjwvZz48cGF0aCBkPSJNMjE1Ljk4IDI5MS43OWE3LjQxIDcuNDEgMCAwMDcuMS05LjZMMjE0LjE1IDI1M2E3LjQzIDcuNDMgMCAwMC0xNC4yIDQuMzVsOC45NSAyOS4xN2E3LjQzIDcuNDMgMCAwMDcuMSA1LjI2TTE1NC4yNyAyOTAuNTlhNy40MSA3LjQxIDAgMDA3LjEtOS42bC04Ljk0LTI5LjE4YTcuNDMgNy40MyAwIDAwLTE0LjIgNC4zNWw4Ljk0IDI5LjE3YTcuNDMgNy40MyAwIDAwNy4xIDUuMjYiIGZpbGw9IiM2MWM5ZTciLz48L3N2Zz4="},16767:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzA3LjE5IiBoZWlnaHQ9IjIxMy42MSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjg4LjYgMTI5LjM3YTcuMzggNy4zOCAwIDAxLTIuNjMtMy44NCA1NS41MSA1NS41MSAwIDAwLTUzLjA4LTM5Ljg3Yy00LjUgMC05IC41NS0xMy4zNCAxLjYzLTMgLjc1LTYuMTUtLjQ1LTcuOS0zYTYxLjEgNjEuMSAwIDAwLTkxLjUxLTEwLjUgNjAuODkgNjAuODkgMCAwMC0xOS42IDM5LjIgNy40NCA3LjQ0IDAgMDEtNC4yIDZjLS43My4zNC0xLjQ3LjcxLTIuMiAxLjExLS42Mi4zNS0xLjI5LjYtMS45OC43NWE0Ny41NCA0Ny41NCAwIDAwLTI2LjM1IDE2LjMgNDYuMzMgNDYuMzMgMCAwMC0xMC41MSAyOS41NmMwIDI1LjkyIDIxLjIgNDcgNDcuMjcgNDdIMjU5LjljMjYuMDYgMCA0Ny4yNi0yMS4wOCA0Ny4yNi00N2E0Ni42MyA0Ni42MyAwIDAwLTE4LjU2LTM3LjM0IiBmaWxsPSIjNjFjOWU3Ii8+PGcgZmlsbD0iI2RlYzYwZiI+PHBhdGggZD0iTTU1LjU3IDkyLjU3YTM2LjcgMzYuNyAwIDAwOS41NCAyNC43NiA2Mi4zNiA2Mi4zNiAwIDAxMjEuMjItMTAuMzkgNzUuNjggNzUuNjggMCAwMTI1LjYxLTQ1Ljc4IDM2Ljk3IDM2Ljk3IDAgMDAtNTYuMzcgMzEuNDFNOTIuNSAzNS43N2M0LjEgMCA3LjQzLTMuMzMgNy40My03LjQzVjcuNDVhNy40MiA3LjQyIDAgMTAtMTQuODUgMHYyMC45YzAgNC4wOSAzLjMzIDcuNDIgNy40MyA3LjQyTTUzLjk3IDQwLjdhNy40MiA3LjQyIDAgMTAxMi44Ny03LjQybC0xMC40NS0xOC4xYTcuNDMgNy40MyAwIDAwLTEyLjg2IDcuNDNsMTAuNDQgMTguMU0xNS4xIDU2LjQ0bDE4LjA5IDEwLjQ1YTcuNDcgNy40NyAwIDAwMTAuMTQtMi43MiA3LjQzIDcuNDMgMCAwMC0yLjcxLTEwLjE1bC0xOC4xLTEwLjQ1YTcuNDMgNy40MyAwIDAwLTcuNDMgMTIuODdNNy40MiAxMDAuMDRIMjguM2E3LjQzIDcuNDMgMCAwMDAtMTQuODZINy40MWE3LjQyIDcuNDIgMCAxMDAgMTQuODZNNDMuMzMgMTIwLjk3YTcuNDIgNy40MiAwIDAwLTEwLjE0LTIuNzJsLTE4LjEgMTAuNDRhNy40MyA3LjQzIDAgMDA3LjQzIDEyLjg2bDE4LjEtMTAuNDRhNy40MyA3LjQzIDAgMDAyLjcxLTEwLjE0TTEyMC45IDQzLjM3YTcuNDIgNy40MiAwIDAwMTAuMTUtMi43MmwxMC40My0xOC4xYTcuNDMgNy40MyAwIDAwLTEyLjg2LTcuNDJsLTEwLjQ1IDE4LjFhNy40MyA3LjQzIDAgMDAyLjcyIDEwLjE0Ii8+PC9nPjwvc3ZnPg=="},74351:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgwLjUiIGhlaWdodD0iMjgwLjUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTI1NyAyMTkuNzRhNC4zIDQuMyAwIDAxLTEuNTMtMi4yNCAzMi4zOCAzMi4zOCAwIDAwLTMwLjk2LTIzLjI2Yy0yLjYzIDAtNS4yNS4zMi03Ljc4Ljk1YTQuMzMgNC4zMyAwIDAxLTQuNjEtMS43NSAzNS42MyAzNS42MyAwIDAwLTUzLjM4LTYuMTMgMzUuNTIgMzUuNTIgMCAwMC0xMS40MyAyMi44NyA0LjM0IDQuMzQgMCAwMS0yLjQ1IDMuNWMtLjQyLjItLjg2LjQyLTEuMjguNjUtLjM2LjItLjc1LjM1LTEuMTUuNDRhMjcuNzMgMjcuNzMgMCAwMC0xNS4zNyA5LjUgMjcuMDMgMjcuMDMgMCAwMC02LjEzIDE3LjI1IDI3LjUyIDI3LjUyIDAgMDAyNy41NiAyNy40aDkxLjc3YzE1LjIgMCAyNy41Ny0xMi4yOSAyNy41Ny0yNy40YTI3LjIgMjcuMiAwIDAwLTEwLjgyLTIxLjc4IiBmaWxsPSIjNjFjOWU3IiBwYWludC1vcmRlcj0ic3Ryb2tlIGZpbGwgbWFya2VycyIvPjxnIGZpbGw9IiNkZWM2MGYiPjxwYXRoIGQ9Ik0xNDAuMiA3MC43M0E2OS44NiA2OS44NiAwIDAwNzAuNCAxNDAuNWMwIDMzLjMzIDIzLjUgNjEuMjcgNTQuOCA2OC4xNGE0MC42IDQwLjYgMCAwMTEwLjAzLTUuMSA0OC42MSA0OC42MSAwIDAxMTQuNy0yNS41OGguMDFhNDguNTkgNDguNTkgMCAwMTUzLjUtOC4wNSA2OS4zNSA2OS4zNSAwIDAwNi41Mi0yOS40MSA2OS44NiA2OS44NiAwIDAwLTY5Ljc4LTY5Ljc4em0tLjkgMTMxLjQ0bC0uMS4wNC0uMDQuMDMuMTMtLjA3ek0xMzIuOCAzOC45YTcuNDMgNy40MyAwIDAwMTQuODUgMFY3LjQ0YTcuNDMgNy40MyAwIDAwLTE0Ljg1IDBWMzguOU04OS41NCA1OS45MWE3LjQzIDcuNDMgMCAwMDYuNDMtMTEuMTRMODAuMjQgMjEuNTNhNy40MyA3LjQzIDAgMDAtMTIuODYgNy40M0w4My4xIDU2LjJhNy40MiA3LjQyIDAgMDA2LjQzIDMuNzFNMTguNzYgNzAuMTRhNy40MyA3LjQzIDAgMDAyLjcyIDEwLjE1TDQ4LjcyIDk2YTcuNDIgNy40MiAwIDEwNy40My0xMi44NkwyOC45IDY3LjQyYTcuNDMgNy40MyAwIDAwLTEwLjE0IDIuNzJNNDYuMjggMTQwLjI3YzAtNC4xLTMuMzMtNy40Mi03LjQzLTcuNDJINy40YTcuNDMgNy40MyAwIDAwMCAxNC44NWgzMS40NmM0LjEgMCA3LjQzLTMuMzMgNy40My03LjQzTTI3My4wNSAxMzIuODVoLTMxLjQ2YTcuNDMgNy40MyAwIDAwMCAxNC44NWgzMS40NmE3LjQzIDcuNDMgMCAwMDAtMTQuODVNNDguNzMgMTg0LjUxTDIxLjUgMjAwLjI0YTcuNDMgNy40MyAwIDEwNy40MiAxMi44NmwyNy4yNS0xNS43M2E3LjQzIDcuNDMgMCAwMC03LjQzLTEyLjg2TTI1MS41NCA2Ny40MkwyMjQuMyA4My4xNUE3LjQzIDcuNDMgMCAwMDIzMS43MiA5NmwyNy4yNC0xNS43M2E3LjQzIDcuNDMgMCAwMC03LjQyLTEyLjg2TTgzLjEgMjI0LjM0bC0xNS43MyAyNy4yNGE3LjQzIDcuNDMgMCAwMDEyLjg3IDcuNDNsMTUuNzMtMjcuMjVhNy40MyA3LjQzIDAgMDAtMTIuODctNy40Mk0xODcuMiA1OC45MWE3LjQgNy40IDAgMDAxMC4xNC0yLjcxbDE1LjczLTI3LjI1YTcuNDMgNy40MyAwIDEwLTEyLjg2LTcuNDJsLTE1LjczIDI3LjI0YTcuNDMgNy40MyAwIDAwMi43MSAxMC4xNCIvPjwvZz48L3N2Zz4="},71211:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgwLjUiIGhlaWdodD0iMjgwLjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjZGVjNjBmIj48cGF0aCBkPSJNMTQwLjIyIDIxMC4wNGMzOC40OCAwIDY5Ljc4LTMxLjMgNjkuNzgtNjkuNzhzLTMxLjMtNjkuNzgtNjkuNzgtNjkuNzhjLTM4LjQ3IDAtNjkuNzggMzEuMy02OS43OCA2OS43OHMzMS4zIDY5Ljc4IDY5Ljc4IDY5Ljc4TTEzMi44IDM4LjlhNy40MyA3LjQzIDAgMDAxNC44NSAwVjcuNDRhNy40MyA3LjQzIDAgMDAtMTQuODUgMFYzOC45TTEzMi44IDI0MS42M3YzMS40NmE3LjQzIDcuNDMgMCAwMDE0Ljg1IDB2LTMxLjQ2YTcuNDMgNy40MyAwIDAwLTE0Ljg1IDBNODkuNTQgNTkuOTFhNy40MyA3LjQzIDAgMDA2LjQzLTExLjE0TDgwLjI0IDIxLjUzYTcuNDMgNy40MyAwIDAwLTEyLjg2IDcuNDNMODMuMSA1Ni4yYTcuNDIgNy40MiAwIDAwNi40MyAzLjcxTTE4Ny4yIDIyMS42MmE3LjQzIDcuNDMgMCAwMC0yLjcyIDEwLjE0TDIwMC4yIDI1OWE3LjQyIDcuNDIgMCAxMDEyLjg2LTcuNDJsLTE1LjczLTI3LjI1YTcuNDMgNy40MyAwIDAwLTEwLjE1LTIuNzFNMTguNzYgNzAuMTRhNy40MyA3LjQzIDAgMDAyLjcyIDEwLjE1TDQ4LjcyIDk2YTcuNDIgNy40MiAwIDEwNy40My0xMi44NkwyOC45IDY3LjQyYTcuNDMgNy40MyAwIDAwLTEwLjE0IDIuNzJNMjU4Ljk3IDIwMC4yNGwtMjcuMjUtMTUuNzNhNy40MyA3LjQzIDAgMDAtNy40MiAxMi44N2wyNy4yNCAxNS43M2E3LjQgNy40IDAgMDAxMC4xNC0yLjcyIDcuNDMgNy40MyAwIDAwLTIuNzEtMTAuMTVNNDYuMjggMTQwLjI3YzAtNC4xLTMuMzMtNy40Mi03LjQzLTcuNDJINy40YTcuNDMgNy40MyAwIDAwMCAxNC44NWgzMS40NmM0LjEgMCA3LjQzLTMuMzMgNy40My03LjQzTTI3My4wNSAxMzIuODVoLTMxLjQ2YTcuNDMgNy40MyAwIDAwMCAxNC44NWgzMS40NmE3LjQzIDcuNDMgMCAwMDAtMTQuODVNNDguNzMgMTg0LjUxTDIxLjUgMjAwLjI0YTcuNDMgNy40MyAwIDEwNy40MiAxMi44NmwyNy4yNS0xNS43M2E3LjQzIDcuNDMgMCAwMC03LjQzLTEyLjg2TTI1MS41NCA2Ny40MkwyMjQuMyA4My4xNUE3LjQzIDcuNDMgMCAwMDIzMS43MiA5NmwyNy4yNC0xNS43M2E3LjQzIDcuNDMgMCAwMC03LjQyLTEyLjg2TTgzLjEgMjI0LjM0bC0xNS43MyAyNy4yNGE3LjQzIDcuNDMgMCAwMDEyLjg3IDcuNDNsMTUuNzMtMjcuMjVhNy40MyA3LjQzIDAgMDAtMTIuODctNy40Mk0xODcuMiA1OC45MWE3LjQgNy40IDAgMDAxMC4xNC0yLjcxbDE1LjczLTI3LjI1YTcuNDMgNy40MyAwIDEwLTEyLjg2LTcuNDJsLTE1LjczIDI3LjI0YTcuNDMgNy40MyAwIDAwMi43MSAxMC4xNCIgZmlsbD0iI2RlYzYwZiIvPjwvZz48L3N2Zz4K"}},u={};function e(M){var t=u[M];if(void 0!==t)return t.exports;var N=u[M]={id:M,loaded:!1,exports:{}};return n[M].call(N.exports,N,N.exports,e),N.loaded=!0,N.exports}e.m=n,e.amdD=function(){throw new Error("define cannot be used indirect")},e.amdO={},M=[],e.O=function(t,n,u,N){if(!n){var A=1/0;for(r=0;r<M.length;r++){n=M[r][0],u=M[r][1],N=M[r][2];for(var j=!0,i=0;i<n.length;i++)(!1&N||A>=N)&&Object.keys(e.O).every((function(M){return e.O[M](n[i])}))?n.splice(i--,1):(j=!1,N<A&&(A=N));if(j){M.splice(r--,1);var D=u();void 0!==D&&(t=D)}}return t}N=N||0;for(var r=M.length;r>0&&M[r-1][2]>N;r--)M[r]=M[r-1];M[r]=[n,u,N]},e.n=function(M){var t=M&&M.__esModule?function(){return M.default}:function(){return M};return e.d(t,{a:t}),t},e.d=function(M,t){for(var n in t)e.o(t,n)&&!e.o(M,n)&&Object.defineProperty(M,n,{enumerable:!0,get:t[n]})},e.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(M){if("object"==typeof window)return window}}(),e.o=function(M,t){return Object.prototype.hasOwnProperty.call(M,t)},e.r=function(M){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(M,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(M,"__esModule",{value:!0})},e.nmd=function(M){return M.paths=[],M.children||(M.children=[]),M},e.j=5275,function(){e.b=document.baseURI||self.location.href;var M={5275:0};e.O.j=function(t){return 0===M[t]};var t=function(t,n){var u,N,A=n[0],j=n[1],i=n[2],D=0;if(A.some((function(t){return 0!==M[t]}))){for(u in j)e.o(j,u)&&(e.m[u]=j[u]);if(i)var r=i(e)}for(t&&t(n);D<A.length;D++)N=A[D],e.o(M,N)&&M[N]&&M[N][0](),M[N]=0;return e.O(r)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))}();var N=e.O(void 0,[7874],(function(){return e(76149)}));N=e.O(N)}();
-//# sourceMappingURL=weather_status-weather-status.js.map?v=6ddfba4a1a98da231004 \ No newline at end of file
+!function(){var M,n={93365:function(M,t,n){var u={"./af":36026,"./af.js":36026,"./ar":28093,"./ar-dz":41943,"./ar-dz.js":41943,"./ar-kw":23969,"./ar-kw.js":23969,"./ar-ly":40594,"./ar-ly.js":40594,"./ar-ma":18369,"./ar-ma.js":18369,"./ar-sa":32579,"./ar-sa.js":32579,"./ar-tn":76442,"./ar-tn.js":76442,"./ar.js":28093,"./az":86425,"./az.js":86425,"./be":22004,"./be.js":22004,"./bg":42982,"./bg.js":42982,"./bm":21067,"./bm.js":21067,"./bn":8366,"./bn-bd":63837,"./bn-bd.js":63837,"./bn.js":8366,"./bo":95040,"./bo.js":95040,"./br":521,"./br.js":521,"./bs":83242,"./bs.js":83242,"./ca":73046,"./ca.js":73046,"./cs":25794,"./cs.js":25794,"./cv":28231,"./cv.js":28231,"./cy":10927,"./cy.js":10927,"./da":42832,"./da.js":42832,"./de":29415,"./de-at":3331,"./de-at.js":3331,"./de-ch":45524,"./de-ch.js":45524,"./de.js":29415,"./dv":44700,"./dv.js":44700,"./el":88752,"./el.js":88752,"./en-au":90444,"./en-au.js":90444,"./en-ca":65959,"./en-ca.js":65959,"./en-gb":62762,"./en-gb.js":62762,"./en-ie":40909,"./en-ie.js":40909,"./en-il":79909,"./en-il.js":79909,"./en-in":87942,"./en-in.js":87942,"./en-nz":75200,"./en-nz.js":75200,"./en-sg":21415,"./en-sg.js":21415,"./eo":27447,"./eo.js":27447,"./es":86756,"./es-do":47049,"./es-do.js":47049,"./es-mx":15915,"./es-mx.js":15915,"./es-us":57133,"./es-us.js":57133,"./es.js":86756,"./et":72182,"./et.js":72182,"./eu":14419,"./eu.js":14419,"./fa":2916,"./fa.js":2916,"./fi":49964,"./fi.js":49964,"./fil":16448,"./fil.js":16448,"./fo":26094,"./fo.js":26094,"./fr":35833,"./fr-ca":56994,"./fr-ca.js":56994,"./fr-ch":2740,"./fr-ch.js":2740,"./fr.js":35833,"./fy":69542,"./fy.js":69542,"./ga":93264,"./ga.js":93264,"./gd":77457,"./gd.js":77457,"./gl":83043,"./gl.js":83043,"./gom-deva":24034,"./gom-deva.js":24034,"./gom-latn":28379,"./gom-latn.js":28379,"./gu":406,"./gu.js":406,"./he":73219,"./he.js":73219,"./hi":99834,"./hi.js":99834,"./hr":28754,"./hr.js":28754,"./hu":93945,"./hu.js":93945,"./hy-am":81319,"./hy-am.js":81319,"./id":24875,"./id.js":24875,"./is":23724,"./is.js":23724,"./it":79906,"./it-ch":34303,"./it-ch.js":34303,"./it.js":79906,"./ja":77105,"./ja.js":77105,"./jv":15026,"./jv.js":15026,"./ka":67416,"./ka.js":67416,"./kk":79734,"./kk.js":79734,"./km":60757,"./km.js":60757,"./kn":58369,"./kn.js":58369,"./ko":77687,"./ko.js":77687,"./ku":95544,"./ku.js":95544,"./ky":85431,"./ky.js":85431,"./lb":13613,"./lb.js":13613,"./lo":34252,"./lo.js":34252,"./lt":84619,"./lt.js":84619,"./lv":93760,"./lv.js":93760,"./me":93393,"./me.js":93393,"./mi":12369,"./mi.js":12369,"./mk":48664,"./mk.js":48664,"./ml":23099,"./ml.js":23099,"./mn":98539,"./mn.js":98539,"./mr":778,"./mr.js":778,"./ms":39970,"./ms-my":82625,"./ms-my.js":82625,"./ms.js":39970,"./mt":15714,"./mt.js":15714,"./my":53055,"./my.js":53055,"./nb":73945,"./nb.js":73945,"./ne":63645,"./ne.js":63645,"./nl":4829,"./nl-be":12823,"./nl-be.js":12823,"./nl.js":4829,"./nn":23756,"./nn.js":23756,"./oc-lnc":41228,"./oc-lnc.js":41228,"./pa-in":97877,"./pa-in.js":97877,"./pl":53066,"./pl.js":53066,"./pt":28677,"./pt-br":81592,"./pt-br.js":81592,"./pt.js":28677,"./ro":32722,"./ro.js":32722,"./ru":59138,"./ru.js":59138,"./sd":32568,"./sd.js":32568,"./se":49753,"./se.js":49753,"./si":58024,"./si.js":58024,"./sk":31058,"./sk.js":31058,"./sl":43452,"./sl.js":43452,"./sq":2795,"./sq.js":2795,"./sr":26976,"./sr-cyrl":38819,"./sr-cyrl.js":38819,"./sr.js":26976,"./ss":7467,"./ss.js":7467,"./sv":42787,"./sv.js":42787,"./sw":80298,"./sw.js":80298,"./ta":57532,"./ta.js":57532,"./te":76076,"./te.js":76076,"./tet":40452,"./tet.js":40452,"./tg":64794,"./tg.js":64794,"./th":48245,"./th.js":48245,"./tk":8870,"./tk.js":8870,"./tl-ph":36056,"./tl-ph.js":36056,"./tlh":15249,"./tlh.js":15249,"./tr":22053,"./tr.js":22053,"./tzl":39871,"./tzl.js":39871,"./tzm":39574,"./tzm-latn":19210,"./tzm-latn.js":19210,"./tzm.js":39574,"./ug-cn":91532,"./ug-cn.js":91532,"./uk":11432,"./uk.js":11432,"./ur":88523,"./ur.js":88523,"./uz":54958,"./uz-latn":68735,"./uz-latn.js":68735,"./uz.js":54958,"./vi":83398,"./vi.js":83398,"./x-pseudo":56665,"./x-pseudo.js":56665,"./yo":11642,"./yo.js":11642,"./zh-cn":5462,"./zh-cn.js":5462,"./zh-hk":92530,"./zh-hk.js":92530,"./zh-mo":41650,"./zh-mo.js":41650,"./zh-tw":97333,"./zh-tw.js":97333};function e(M){var t=N(M);return n(t)}function N(M){if(!n.o(u,M)){var t=new Error("Cannot find module '"+M+"'");throw t.code="MODULE_NOT_FOUND",t}return u[M]}e.keys=function(){return Object.keys(u)},e.resolve=N,M.exports=e,e.id=93365},76149:function(M,n,u){"use strict";var e=u(20144),N=u(22200),A=u(26932),j=u(80351),i=u.n(j),D=u(9944),r=u(79440),L=u.n(r),g=u(56286),I=u.n(g),a=u(88408),y=u.n(a),c=u(74466),s=u.n(c),o=u(33521),T=u.n(o),w=u(41009),C=u.n(w),z=u(4820),x=u(79753);function E(M,t,n,u,e,N,A){try{var j=M[N](A),i=j.value}catch(M){return void n(M)}j.done?t(i):Promise.resolve(i).then(u,e)}function l(M){return function(){var t=this,n=arguments;return new Promise((function(u,e){var N=M.apply(t,n);function A(M){E(N,u,e,A,j,"next",M)}function j(M){E(N,u,e,A,j,"throw",M)}A(void 0)}))}}var h=function(){var M=l(regeneratorRuntime.mark((function M(t,n){var u,e;return regeneratorRuntime.wrap((function(M){for(;;)switch(M.prev=M.next){case 0:return u=(0,x.generateOcsUrl)("apps/weather_status/api/v1/location"),M.next=3,z.default.put(u,{address:"",lat:t,lon:n});case 3:return e=M.sent,M.abrupt("return",e.data.ocs.data);case 5:case"end":return M.stop()}}),M)})));return function(t,n){return M.apply(this,arguments)}}(),d=function(){var M=l(regeneratorRuntime.mark((function M(t){var n,u;return regeneratorRuntime.wrap((function(M){for(;;)switch(M.prev=M.next){case 0:return n=(0,x.generateOcsUrl)("apps/weather_status/api/v1/location"),M.next=3,z.default.put(n,{address:t,lat:null,lon:null});case 3:return u=M.sent,M.abrupt("return",u.data.ocs.data);case 5:case"end":return M.stop()}}),M)})));return function(t){return M.apply(this,arguments)}}(),O=function(){var M=l(regeneratorRuntime.mark((function M(t){var n,u;return regeneratorRuntime.wrap((function(M){for(;;)switch(M.prev=M.next){case 0:return n=(0,x.generateOcsUrl)("apps/weather_status/api/v1/mode"),M.next=3,z.default.put(n,{mode:t});case 3:return u=M.sent,M.abrupt("return",u.data.ocs.data);case 5:case"end":return M.stop()}}),M)})));return function(t){return M.apply(this,arguments)}}(),Q=function(){var M=l(regeneratorRuntime.mark((function M(){var t,n;return regeneratorRuntime.wrap((function(M){for(;;)switch(M.prev=M.next){case 0:return t=(0,x.generateOcsUrl)("apps/weather_status/api/v1/use-personal"),M.next=3,z.default.put(t);case 3:return n=M.sent,M.abrupt("return",n.data.ocs.data);case 5:case"end":return M.stop()}}),M)})));return function(){return M.apply(this,arguments)}}(),S=function(){var M=l(regeneratorRuntime.mark((function M(){var t,n;return regeneratorRuntime.wrap((function(M){for(;;)switch(M.prev=M.next){case 0:return t=(0,x.generateOcsUrl)("apps/weather_status/api/v1/location"),M.next=3,z.default.get(t);case 3:return n=M.sent,M.abrupt("return",n.data.ocs.data);case 5:case"end":return M.stop()}}),M)})));return function(){return M.apply(this,arguments)}}(),m=function(){var M=l(regeneratorRuntime.mark((function M(){var t,n;return regeneratorRuntime.wrap((function(M){for(;;)switch(M.prev=M.next){case 0:return t=(0,x.generateOcsUrl)("apps/weather_status/api/v1/forecast"),M.next=3,z.default.get(t);case 3:return n=M.sent,M.abrupt("return",n.data.ocs.data);case 5:case"end":return M.stop()}}),M)})));return function(){return M.apply(this,arguments)}}(),k=function(){var M=l(regeneratorRuntime.mark((function M(){var t,n;return regeneratorRuntime.wrap((function(M){for(;;)switch(M.prev=M.next){case 0:return t=(0,x.generateOcsUrl)("apps/weather_status/api/v1/favorites"),M.next=3,z.default.get(t);case 3:return n=M.sent,M.abrupt("return",n.data.ocs.data);case 5:case"end":return M.stop()}}),M)})));return function(){return M.apply(this,arguments)}}(),Y=function(){var M=l(regeneratorRuntime.mark((function M(t){var n,u;return regeneratorRuntime.wrap((function(M){for(;;)switch(M.prev=M.next){case 0:return n=(0,x.generateOcsUrl)("apps/weather_status/api/v1/favorites"),M.next=3,z.default.put(n,{favorites:t});case 3:return u=M.sent,M.abrupt("return",u.data.ocs.data);case 5:case"end":return M.stop()}}),M)})));return function(t){return M.apply(this,arguments)}}();function p(M,t,n,u,e,N,A){try{var j=M[N](A),i=j.value}catch(M){return void n(M)}j.done?t(i):Promise.resolve(i).then(u,e)}function v(M){return function(){var t=this,n=arguments;return new Promise((function(u,e){var N=M.apply(t,n);function A(M){p(N,u,e,A,j,"next",M)}function j(M){p(N,u,e,A,j,"throw",M)}A(void 0)}))}}var f={clearsky_day:{icon:"icon-clearsky-day",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} clear sky later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} clear sky",{temperature:M,unit:n})}},clearsky_night:{icon:"icon-clearsky-night",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} clear sky later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} clear sky",{temperature:M,unit:n})}},cloudy:{icon:"icon-cloudy",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} cloudy later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} cloudy",{temperature:M,unit:n})}},fair_day:{icon:"icon-fair-day",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} fair weather later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} fair weather",{temperature:M,unit:n})}},fair_night:{icon:"icon-fair-night",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} fair weather later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} fair weather",{temperature:M,unit:n})}},partlycloudy_day:{icon:"icon-partlycloudy-day",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} partly cloudy later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} partly cloudy",{temperature:M,unit:n})}},partlycloudy_night:{icon:"icon-partlycloudy-night",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} partly cloudy later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} partly cloudy",{temperature:M,unit:n})}},fog:{icon:"icon-fog",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} foggy later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} foggy",{temperature:M,unit:n})}},lightrain:{icon:"icon-lightrain",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} light rainfall later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} light rainfall",{temperature:M,unit:n})}},rain:{icon:"icon-rain",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} rainfall later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} rainfall",{temperature:M,unit:n})}},heavyrain:{icon:"icon-heavyrain",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} heavy rainfall later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} heavy rainfall",{temperature:M,unit:n})}},rainshowers_day:{icon:"icon-rainshowers-day",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} rainfall showers later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} rainfall showers",{temperature:M,unit:n})}},rainshowers_night:{icon:"icon-rainshowers-night",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} rainfall showers later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} rainfall showers",{temperature:M,unit:n})}},lightrainshowers_day:{icon:"icon-light-rainshowers-day",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} light rainfall showers later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} light rainfall showers",{temperature:M,unit:n})}},lightrainshowers_night:{icon:"icon-light-rainshowers-night",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} light rainfall showers later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} light rainfall showers",{temperature:M,unit:n})}},heavyrainshowers_day:{icon:"icon-heavy-rainshowers-day",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} heavy rainfall showers later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} heavy rainfall showers",{temperature:M,unit:n})}},heavyrainshowers_night:{icon:"icon-heavy-rainshowers-night",text:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return u?t("weather_status","{temperature} {unit} heavy rainfall showers later today",{temperature:M,unit:n}):t("weather_status","{temperature} {unit} heavy rainfall showers",{temperature:M,unit:n})}}},U={name:"App",components:{Actions:L(),ActionButton:I(),ActionInput:y(),ActionLink:s(),ActionSeparator:T(),ActionText:C()},props:{inline:{type:Boolean,default:!1}},data:function(){return{locale:(0,D.getLocale)(),loading:!0,errorMessage:"",mode:1,address:null,lat:null,lon:null,offset:5,forecasts:[],loop:null,favorites:[],showFavorites:!1}},computed:{useFahrenheitLocale:function(){return["en_US","en_MH","en_FM","en_PW","en_KY","en_LR"].includes(this.locale)},temperatureUnit:function(){return this.useFahrenheitLocale?"°F":"°C"},locationText:function(){return t("weather_status","More weather for {adr}",{adr:this.address})},temperature:function(){return this.getTemperature(this.forecasts,0)},futureTemperature:function(){return this.getTemperature(this.forecasts,this.offset)},weatherCode:function(){return this.getWeatherCode(this.forecasts,0)},futureWeatherCode:function(){return this.getWeatherCode(this.forecasts,this.offset)},weatherIcon:function(){return this.getWeatherIcon(this.weatherCode,this.loading)},futureWeatherIcon:function(){return this.getWeatherIcon(this.futureWeatherCode,this.loading)},currentWeatherMessage:function(){return this.loading?t("weather_status","Loading weather"):this.errorMessage?this.errorMessage:this.getWeatherMessage(this.weatherCode,this.temperature)},forecastMessage:function(){return this.loading?t("weather_status","Loading weather"):this.getWeatherMessage(this.futureWeatherCode,this.futureTemperature,!0)},weatherLinkTarget:function(){return"https://www.windy.com/-Rain-thunder-rain?rain,"+this.lat+","+this.lon+",11"},gotWeather:function(){return this.address&&!this.errorMessage},addRemoveFavoriteIcon:function(){return this.currentAddressIsFavorite?"icon-starred":"icon-star"},addRemoveFavoriteText:function(){return this.currentAddressIsFavorite?t("weather_status","Remove from favorites"):t("weather_status","Add as favorite")},currentAddressIsFavorite:function(){var M=this;return this.favorites.find((function(t){return t===M.address}))},toggleFavoritesIcon:function(){return this.showFavorites?"icon-triangle-s":"icon-triangle-e"},displayedFavorites:function(){return this.showFavorites?this.favorites:[]}},mounted:function(){this.initWeatherStatus()},methods:{initWeatherStatus:function(){var M=this;return v(regeneratorRuntime.mark((function n(){var u,e;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,S();case 3:return u=n.sent,M.lat=u.lat,M.lon=u.lon,M.address=u.address,M.mode=u.mode,1===M.mode?M.askBrowserLocation():2===M.mode&&M.startLoop(),n.next=11,k();case 11:e=n.sent,M.favorites=e,n.next=22;break;case 15:if(n.prev=15,n.t0=n.catch(0),"ECONNABORTED"!==(null===n.t0||void 0===n.t0?void 0:n.t0.code)){n.next=20;break}return console.info("The weather status request was cancelled because the user navigates."),n.abrupt("return");case 20:n.t0.response&&401===n.t0.response.status?(0,A.x2)(t("weather_status","You are not logged in.")):(0,A.x2)(t("weather_status","There was an error getting the weather status information.")),console.error(n.t0);case 22:case"end":return n.stop()}}),n,null,[[0,15]])})))()},startLoop:function(){var M=this;clearInterval(this.loop),this.lat&&this.lon?(this.loop=setInterval((function(){return M.getForecast()}),36e5),this.getForecast()):this.loading=!1},askBrowserLocation:function(){var M=this;this.loading=!0,this.errorMessage="",navigator.geolocation&&window.isSecureContext?navigator.geolocation.getCurrentPosition((function(t){console.debug("browser location success"),M.lat=t.coords.latitude,M.lon=t.coords.longitude,M.saveMode(1),M.mode=1,M.saveLocation(M.lat,M.lon)}),(function(t){console.debug("location permission refused"),console.debug(t),M.saveMode(2),M.mode=2,M.lat&&M.lon?M.startLoop():M.usePersonalAddress()})):(console.debug("no secure context!"),this.saveMode(2),this.mode=2,this.startLoop())},getForecast:function(){var M=this;return v(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,m();case 3:M.forecasts=n.sent,n.next=10;break;case 6:n.prev=6,n.t0=n.catch(0),M.errorMessage=t("weather_status","No weather information found"),console.debug(n.t0);case 10:M.loading=!1;case 11:case"end":return n.stop()}}),n,null,[[0,6]])})))()},setAddress:function(M){var n=this;return v(regeneratorRuntime.mark((function u(){var e;return regeneratorRuntime.wrap((function(u){for(;;)switch(u.prev=u.next){case 0:return n.loading=!0,n.errorMessage="",u.prev=2,u.next=5,d(M);case 5:(e=u.sent).success?(n.lat=e.lat,n.lon=e.lon,n.address=e.address,n.mode=2,n.startLoop()):(n.errorMessage=t("weather_status","Location not found"),n.loading=!1),u.next=13;break;case 9:u.prev=9,u.t0=u.catch(2),u.t0.response&&401===u.t0.response.status?(0,A.x2)(t("weather_status","You are not logged in.")):(0,A.x2)(t("weather_status","There was an error setting the location address.")),n.loading=!1;case 13:case"end":return u.stop()}}),u,null,[[2,9]])})))()},saveLocation:function(M,n){var u=this;return v(regeneratorRuntime.mark((function e(){var N;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,h(M,n);case 3:N=e.sent,u.address=N.address,u.startLoop(),e.next=12;break;case 8:e.prev=8,e.t0=e.catch(0),e.t0.response&&401===e.t0.response.status?(0,A.x2)(t("weather_status","You are not logged in.")):(0,A.x2)(t("weather_status","There was an error setting the location.")),console.debug(e.t0);case 12:case"end":return e.stop()}}),e,null,[[0,8]])})))()},saveMode:function(M){return v(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,O(M);case 3:n.next=9;break;case 5:n.prev=5,n.t0=n.catch(0),n.t0.response&&401===n.t0.response.status?(0,A.x2)(t("weather_status","You are not logged in.")):(0,A.x2)(t("weather_status","There was an error saving the mode.")),console.debug(n.t0);case 9:case"end":return n.stop()}}),n,null,[[0,5]])})))()},onBrowserLocationClick:function(){this.askBrowserLocation()},usePersonalAddress:function(){var M=this;return v(regeneratorRuntime.mark((function n(){var u;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return M.loading=!0,n.prev=1,n.next=4,Q();case 4:u=n.sent,M.lat=u.lat,M.lon=u.lon,M.address=u.address,M.mode=2,M.startLoop(),n.next=17;break;case 12:n.prev=12,n.t0=n.catch(1),n.t0.response&&401===n.t0.response.status?(0,A.x2)(t("weather_status","You are not logged in.")):(0,A.x2)(t("weather_status","There was an error using personal address.")),console.debug(n.t0),M.loading=!1;case 17:case"end":return n.stop()}}),n,null,[[1,12]])})))()},onAddressSubmit:function(){var M=this.$refs.addressInput.$el.querySelector('input[type="text"]').value;this.setAddress(M)},getLocalizedTemperature:function(M){return this.useFahrenheitLocale?1.8*M+32:M},onAddRemoveFavoriteClick:function(){var M=this.currentAddressIsFavorite;if(M){var t=this.favorites.indexOf(M);-1!==t&&this.favorites.splice(t,1)}else this.favorites.push(this.address);Y(this.favorites)},onFavoriteClick:function(M,t){if(M.target.classList.contains("action-button__icon")){var n=this.favorites.indexOf(t);-1!==n&&this.favorites.splice(n,1),Y(this.favorites)}else t!==this.address&&this.setAddress(t)},formatTime:function(M){return i()(M).format("LT")},getTemperature:function(M){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return M.length>t?M[t].data.instant.details.air_temperature:""},getWeatherCode:function(M){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return M.length>t?M[t].data.next_1_hours.summary.symbol_code:""},getWeatherIcon:function(M,t){return t?"icon-loading-small":M&&M in f?f[M].icon:"icon-fair-day"},getWeatherMessage:function(M,n){var u=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return M&&M in f?f[M].text(Math.round(this.getLocalizedTemperature(n)),this.temperatureUnit,u):t("weather_status","Set location for weather")}}},b=U,Z=u(93379),G=u.n(Z),W=u(7795),B=u.n(W),P=u(90569),_=u.n(P),R=u(3565),F=u.n(R),J=u(19216),H=u.n(J),V=u(44589),X=u.n(V),q=u(62554),$={};$.styleTagTransform=X(),$.setAttributes=F(),$.insert=_().bind(null,"head"),$.domAPI=B(),$.insertStyleElement=H(),G()(q.Z,$),q.Z&&q.Z.locals&&q.Z.locals;var K=(0,u(51900).Z)(b,(function(){var M=this,t=M.$createElement,n=M._self._c||t;return n("li",{class:{inline:M.inline}},[n("div",{attrs:{id:"weather-status-menu-item"}},[n("Actions",{staticClass:"weather-status-menu-item__subheader",attrs:{"default-icon":M.weatherIcon,"menu-title":M.currentWeatherMessage}},[M.gotWeather?n("ActionText",{attrs:{icon:M.futureWeatherIcon}},[M._v("\n\t\t\t\t"+M._s(M.forecastMessage)+"\n\t\t\t")]):M._e(),M._v(" "),M.gotWeather?n("ActionLink",{attrs:{icon:"icon-address",target:"_blank",href:M.weatherLinkTarget,"close-after-click":!0}},[M._v("\n\t\t\t\t"+M._s(M.locationText)+"\n\t\t\t")]):M._e(),M._v(" "),M.gotWeather?n("ActionButton",{attrs:{icon:M.addRemoveFavoriteIcon},on:{click:M.onAddRemoveFavoriteClick}},[M._v("\n\t\t\t\t"+M._s(M.addRemoveFavoriteText)+"\n\t\t\t")]):M._e(),M._v(" "),M.address&&!M.errorMessage?n("ActionSeparator"):M._e(),M._v(" "),n("ActionButton",{attrs:{icon:"icon-crosshair","close-after-click":!0},on:{click:M.onBrowserLocationClick}},[M._v("\n\t\t\t\t"+M._s(M.t("weather_status","Detect location"))+"\n\t\t\t")]),M._v(" "),n("ActionInput",{ref:"addressInput",attrs:{disabled:!1,icon:"icon-rename",type:"text",value:""},on:{submit:M.onAddressSubmit}},[M._v("\n\t\t\t\t"+M._s(M.t("weather_status","Set custom address"))+"\n\t\t\t")]),M._v(" "),n("ActionButton",{directives:[{name:"show",rawName:"v-show",value:M.favorites.length>0,expression:"favorites.length > 0"}],attrs:{icon:M.toggleFavoritesIcon},on:{click:function(t){M.showFavorites=!M.showFavorites}}},[M._v("\n\t\t\t\t"+M._s(M.t("weather_status","Favorites"))+"\n\t\t\t")]),M._v(" "),M._l(M.displayedFavorites,(function(t){return n("ActionButton",{key:t,attrs:{icon:"icon-starred"},on:{click:function(n){return M.onFavoriteClick(n,t)}}},[M._v("\n\t\t\t\t"+M._s(t)+"\n\t\t\t")])}))],2)],1)])}),[],!1,null,null,null).exports;u.nc=btoa((0,N.getRequestToken)()),e.default.prototype.t=t,document.addEventListener("DOMContentLoaded",(function(){OCA.Dashboard&&OCA.Dashboard.registerStatus("weather",(function(M){return new(e.default.extend(K))({propsData:{inline:!0}}).$mount(M)}))}))},62554:function(M,t,n){"use strict";var u=n(87537),e=n.n(u),N=n(23645),A=n.n(N),j=n(61667),i=n.n(j),D=new URL(n(87320),n.b),r=new URL(n(3953),n.b),L=new URL(n(71211),n.b),g=new URL(n(87760),n.b),I=new URL(n(30570),n.b),a=new URL(n(74351),n.b),y=new URL(n(26625),n.b),c=new URL(n(16767),n.b),s=new URL(n(53748),n.b),o=new URL(n(26320),n.b),T=new URL(n(26157),n.b),w=new URL(n(37837),n.b),C=new URL(n(94776),n.b),z=new URL(n(14593),n.b),x=new URL(n(53107),n.b),E=new URL(n(97251),n.b),l=new URL(n(18138),n.b),h=new URL(n(53254),n.b),d=new URL(n(50663),n.b),O=new URL(n(75322),n.b),Q=A()(e()),S=i()(D),m=i()(r),k=i()(L),Y=i()(g),p=i()(I),v=i()(a),f=i()(y),U=i()(c),b=i()(s),Z=i()(o),G=i()(T),W=i()(w),B=i()(C),P=i()(z),_=i()(x),R=i()(E),F=i()(l),J=i()(h),H=i()(d),V=i()(O);Q.push([M.id,".icon-weather-status{background-image:url("+S+")}body.theme--dark .icon-weather-status{background-image:url("+m+")}.icon-clearsky-day{background-image:url("+k+")}.icon-clearsky-night{background-image:url("+Y+")}.icon-cloudy{background-image:url("+p+")}.icon-fair-day{background-image:url("+v+")}.icon-fair-night{background-image:url("+f+")}.icon-partlycloudy-day{background-image:url("+U+")}.icon-partlycloudy-night{background-image:url("+b+")}.icon-fog{background-image:url("+Z+")}.icon-lightrain{background-image:url("+G+")}.icon-rain{background-image:url("+W+")}.icon-heavyrain{background-image:url("+B+")}.icon-light-rainshowers-day{background-image:url("+P+")}.icon-light-rainshowers-night{background-image:url("+_+")}.icon-rainshowers-day{background-image:url("+R+")}.icon-rainshowers-night{background-image:url("+F+")}.icon-heavy-rainshowers-day{background-image:url("+J+")}.icon-heavy-rainshowers-night{background-image:url("+H+")}.icon-crosshair{background-color:var(--color-main-text);padding:0 !important;mask:url("+V+") no-repeat;mask-size:18px 18px;mask-position:center;-webkit-mask:url("+V+") no-repeat;-webkit-mask-size:18px 18px;-webkit-mask-position:center;min-width:44px !important;min-height:44px !important}li:not(.inline) .weather-status-menu-item__header{display:block;align-items:center;color:var(--color-main-text);padding:10px 12px 5px 12px;box-sizing:border-box;opacity:1;white-space:nowrap;width:100%;text-align:center;max-width:250px;text-overflow:ellipsis;min-width:175px}li:not(.inline) .weather-status-menu-item__subheader{width:100%}li:not(.inline) .weather-status-menu-item__subheader .trigger>.icon{background-color:var(--color-main-background);background-size:16px;border:0;border-radius:0;font-weight:normal;padding-left:40px}li:not(.inline) .weather-status-menu-item__subheader .trigger>.icon:hover,li:not(.inline) .weather-status-menu-item__subheader .trigger>.icon:focus{box-shadow:inset 4px 0 var(--color-primary-element)}.inline .weather-status-menu-item__subheader{width:100%}.inline .weather-status-menu-item__subheader .trigger>.icon{background-size:16px;border:0;border-radius:var(--border-radius-pill);font-weight:normal;padding-left:40px}.inline .weather-status-menu-item__subheader .trigger>.icon.icon-loading-small::after{left:21px}li{list-style-type:none}","",{version:3,sources:["webpack://./apps/weather_status/src/App.vue"],names:[],mappings:"AAwgBA,qBACC,wDAAA,CAED,sCACC,wDAAA,CAED,mBACC,wDAAA,CAED,qBACC,wDAAA,CAED,aACC,wDAAA,CAED,eACC,wDAAA,CAED,iBACC,wDAAA,CAED,uBACC,wDAAA,CAED,yBACC,wDAAA,CAED,UACC,wDAAA,CAED,gBACC,yDAAA,CAED,WACC,yDAAA,CAED,gBACC,yDAAA,CAED,4BACC,yDAAA,CAED,8BACC,yDAAA,CAED,sBACC,yDAAA,CAED,wBACC,yDAAA,CAED,4BACC,yDAAA,CAED,8BACC,yDAAA,CAED,gBACI,uCAAA,CACA,oBAAA,CACA,uDAAA,CACA,mBAAA,CACA,oBAAA,CACA,+DAAA,CACA,2BAAA,CACA,4BAAA,CACA,yBAAA,CACA,0BAAA,CAIH,kDACC,aAAA,CACA,kBAAA,CACA,4BAAA,CACA,0BAAA,CACA,qBAAA,CACA,SAAA,CACA,kBAAA,CACA,UAAA,CACA,iBAAA,CACA,eAAA,CACA,sBAAA,CACA,eAAA,CAGD,qDACC,UAAA,CAEA,oEACC,6CAAA,CACA,oBAAA,CACA,QAAA,CACA,eAAA,CACA,kBAAA,CACA,iBAAA,CAEA,oJAEC,mDAAA,CAMJ,6CACC,UAAA,CAEA,4DACC,oBAAA,CACA,QAAA,CACA,uCAAA,CACA,kBAAA,CACA,iBAAA,CAGC,sFACC,SAAA,CAMJ,GACC,oBAAA",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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.icon-weather-status {\n\tbackground-image: url('./../img/app-dark.svg');\n}\nbody.theme--dark .icon-weather-status {\n\tbackground-image: url('./../img/app.svg');\n}\n.icon-clearsky-day {\n\tbackground-image: url('./../img/sun.svg');\n}\n.icon-clearsky-night {\n\tbackground-image: url('./../img/moon.svg');\n}\n.icon-cloudy {\n\tbackground-image: url('./../img/cloud-cloud.svg');\n}\n.icon-fair-day {\n\tbackground-image: url('./../img/sun-small-cloud.svg');\n}\n.icon-fair-night {\n\tbackground-image: url('./../img/moon-small-cloud.svg');\n}\n.icon-partlycloudy-day {\n\tbackground-image: url('./../img/sun-cloud.svg');\n}\n.icon-partlycloudy-night {\n\tbackground-image: url('./../img/moon-cloud.svg');\n}\n.icon-fog {\n\tbackground-image: url('./../img/fog.svg');\n}\n.icon-lightrain {\n\tbackground-image: url('./../img/light-rain.svg');\n}\n.icon-rain {\n\tbackground-image: url('./../img/rain.svg');\n}\n.icon-heavyrain {\n\tbackground-image: url('./../img/heavy-rain.svg');\n}\n.icon-light-rainshowers-day {\n\tbackground-image: url('./../img/sun-cloud-light-rain.svg');\n}\n.icon-light-rainshowers-night {\n\tbackground-image: url('./../img/moon-cloud-light-rain.svg');\n}\n.icon-rainshowers-day {\n\tbackground-image: url('./../img/sun-cloud-rain.svg');\n}\n.icon-rainshowers-night {\n\tbackground-image: url('./../img/moon-cloud-rain.svg');\n}\n.icon-heavy-rainshowers-day {\n\tbackground-image: url('./../img/sun-cloud-heavy-rain.svg');\n}\n.icon-heavy-rainshowers-night {\n\tbackground-image: url('./../img/moon-cloud-heavy-rain.svg');\n}\n.icon-crosshair {\n background-color: var(--color-main-text);\n padding: 0 !important;\n mask: url(./../img/cross.svg) no-repeat;\n mask-size: 18px 18px;\n mask-position: center;\n -webkit-mask: url(./../img/cross.svg) no-repeat;\n -webkit-mask-size: 18px 18px;\n -webkit-mask-position: center;\n min-width: 44px !important;\n min-height: 44px !important;\n}\n\nli:not(.inline) .weather-status-menu-item {\n\t&__header {\n\t\tdisplay: block;\n\t\talign-items: center;\n\t\tcolor: var(--color-main-text);\n\t\tpadding: 10px 12px 5px 12px;\n\t\tbox-sizing: border-box;\n\t\topacity: 1;\n\t\twhite-space: nowrap;\n\t\twidth: 100%;\n\t\ttext-align: center;\n\t\tmax-width: 250px;\n\t\ttext-overflow: ellipsis;\n\t\tmin-width: 175px;\n\t}\n\n\t&__subheader {\n\t\twidth: 100%;\n\n\t\t.trigger > .icon {\n\t\t\tbackground-color: var(--color-main-background);\n\t\t\tbackground-size: 16px;\n\t\t\tborder: 0;\n\t\t\tborder-radius: 0;\n\t\t\tfont-weight: normal;\n\t\t\tpadding-left: 40px;\n\n\t\t\t&:hover,\n\t\t\t&:focus {\n\t\t\t\tbox-shadow: inset 4px 0 var(--color-primary-element);\n\t\t\t}\n\t\t}\n\t}\n}\n\n.inline .weather-status-menu-item__subheader {\n\twidth: 100%;\n\n\t.trigger > .icon {\n\t\tbackground-size: 16px;\n\t\tborder: 0;\n\t\tborder-radius: var(--border-radius-pill);\n\t\tfont-weight: normal;\n\t\tpadding-left: 40px;\n\n\t\t&.icon-loading-small {\n\t\t\t&::after {\n\t\t\t\tleft: 21px;\n\t\t\t}\n\t\t}\n\t}\n}\n\nli {\n\tlist-style-type: none;\n}\n"],sourceRoot:""}]),t.Z=Q},87320:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgwLjUiIGhlaWdodD0iMjgwLjUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE0MC4yMiAyMTAuMDRjMzguNDggMCA2OS43OC0zMS4zIDY5Ljc4LTY5Ljc4cy0zMS4zLTY5Ljc4LTY5Ljc4LTY5Ljc4Yy0zOC40NyAwLTY5Ljc4IDMxLjMtNjkuNzggNjkuNzhzMzEuMyA2OS43OCA2OS43OCA2OS43OE0xMzIuOCAzOC45YTcuNDMgNy40MyAwIDAwMTQuODUgMFY3LjQ0YTcuNDMgNy40MyAwIDAwLTE0Ljg1IDBWMzguOU0xMzIuOCAyNDEuNjN2MzEuNDZhNy40MyA3LjQzIDAgMDAxNC44NSAwdi0zMS40NmE3LjQzIDcuNDMgMCAwMC0xNC44NSAwTTg5LjU0IDU5LjkxYTcuNDMgNy40MyAwIDAwNi40My0xMS4xNEw4MC4yNCAyMS41M2E3LjQzIDcuNDMgMCAwMC0xMi44NiA3LjQzTDgzLjEgNTYuMmE3LjQyIDcuNDIgMCAwMDYuNDMgMy43MU0xODcuMiAyMjEuNjJhNy40MyA3LjQzIDAgMDAtMi43MiAxMC4xNEwyMDAuMiAyNTlhNy40MiA3LjQyIDAgMTAxMi44Ni03LjQybC0xNS43My0yNy4yNWE3LjQzIDcuNDMgMCAwMC0xMC4xNS0yLjcxTTE4Ljc2IDcwLjE0YTcuNDMgNy40MyAwIDAwMi43MiAxMC4xNUw0OC43MiA5NmE3LjQyIDcuNDIgMCAxMDcuNDMtMTIuODZMMjguOSA2Ny40MmE3LjQzIDcuNDMgMCAwMC0xMC4xNCAyLjcyTTI1OC45NyAyMDAuMjRsLTI3LjI1LTE1LjczYTcuNDMgNy40MyAwIDAwLTcuNDIgMTIuODdsMjcuMjQgMTUuNzNhNy40IDcuNCAwIDAwMTAuMTQtMi43MiA3LjQzIDcuNDMgMCAwMC0yLjcxLTEwLjE1TTQ2LjI4IDE0MC4yN2MwLTQuMS0zLjMzLTcuNDItNy40My03LjQySDcuNGE3LjQzIDcuNDMgMCAwMDAgMTQuODVoMzEuNDZjNC4xIDAgNy40My0zLjMzIDcuNDMtNy40M00yNzMuMDUgMTMyLjg1aC0zMS40NmE3LjQzIDcuNDMgMCAwMDAgMTQuODVoMzEuNDZhNy40MyA3LjQzIDAgMDAwLTE0Ljg1TTQ4LjczIDE4NC41MUwyMS41IDIwMC4yNGE3LjQzIDcuNDMgMCAxMDcuNDIgMTIuODZsMjcuMjUtMTUuNzNhNy40MyA3LjQzIDAgMDAtNy40My0xMi44Nk0yNTEuNTQgNjcuNDJMMjI0LjMgODMuMTVBNy40MyA3LjQzIDAgMDAyMzEuNzIgOTZsMjcuMjQtMTUuNzNhNy40MyA3LjQzIDAgMDAtNy40Mi0xMi44Nk04My4xIDIyNC4zNGwtMTUuNzMgMjcuMjRhNy40MyA3LjQzIDAgMDAxMi44NyA3LjQzbDE1LjczLTI3LjI1YTcuNDMgNy40MyAwIDAwLTEyLjg3LTcuNDJNMTg3LjIgNTguOTFhNy40IDcuNCAwIDAwMTAuMTQtMi43MWwxNS43My0yNy4yNWE3LjQzIDcuNDMgMCAxMC0xMi44Ni03LjQybC0xNS43MyAyNy4yNGE3LjQzIDcuNDMgMCAwMDIuNzEgMTAuMTQiLz48L3N2Zz4="},3953:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgwLjUiIGhlaWdodD0iMjgwLjUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iI2ZmZiI+PHBhdGggZD0iTTE0MC4yMiAyMTAuMDRjMzguNDggMCA2OS43OC0zMS4zIDY5Ljc4LTY5Ljc4cy0zMS4zLTY5Ljc4LTY5Ljc4LTY5Ljc4Yy0zOC40NyAwLTY5Ljc4IDMxLjMtNjkuNzggNjkuNzhzMzEuMyA2OS43OCA2OS43OCA2OS43OE0xMzIuOCAzOC45YTcuNDMgNy40MyAwIDAwMTQuODUgMFY3LjQ0YTcuNDMgNy40MyAwIDAwLTE0Ljg1IDBWMzguOU0xMzIuOCAyNDEuNjN2MzEuNDZhNy40MyA3LjQzIDAgMDAxNC44NSAwdi0zMS40NmE3LjQzIDcuNDMgMCAwMC0xNC44NSAwTTg5LjU0IDU5LjkxYTcuNDMgNy40MyAwIDAwNi40My0xMS4xNEw4MC4yNCAyMS41M2E3LjQzIDcuNDMgMCAwMC0xMi44NiA3LjQzTDgzLjEgNTYuMmE3LjQyIDcuNDIgMCAwMDYuNDMgMy43MU0xODcuMiAyMjEuNjJhNy40MyA3LjQzIDAgMDAtMi43MiAxMC4xNEwyMDAuMiAyNTlhNy40MiA3LjQyIDAgMTAxMi44Ni03LjQybC0xNS43My0yNy4yNWE3LjQzIDcuNDMgMCAwMC0xMC4xNS0yLjcxTTE4Ljc2IDcwLjE0YTcuNDMgNy40MyAwIDAwMi43MiAxMC4xNUw0OC43MiA5NmE3LjQyIDcuNDIgMCAxMDcuNDMtMTIuODZMMjguOSA2Ny40MmE3LjQzIDcuNDMgMCAwMC0xMC4xNCAyLjcyTTI1OC45NyAyMDAuMjRsLTI3LjI1LTE1LjczYTcuNDMgNy40MyAwIDAwLTcuNDIgMTIuODdsMjcuMjQgMTUuNzNhNy40IDcuNCAwIDAwMTAuMTQtMi43MiA3LjQzIDcuNDMgMCAwMC0yLjcxLTEwLjE1TTQ2LjI4IDE0MC4yN2MwLTQuMS0zLjMzLTcuNDItNy40My03LjQySDcuNGE3LjQzIDcuNDMgMCAwMDAgMTQuODVoMzEuNDZjNC4xIDAgNy40My0zLjMzIDcuNDMtNy40M00yNzMuMDUgMTMyLjg1aC0zMS40NmE3LjQzIDcuNDMgMCAwMDAgMTQuODVoMzEuNDZhNy40MyA3LjQzIDAgMDAwLTE0Ljg1TTQ4LjczIDE4NC41MUwyMS41IDIwMC4yNGE3LjQzIDcuNDMgMCAxMDcuNDIgMTIuODZsMjcuMjUtMTUuNzNhNy40MyA3LjQzIDAgMDAtNy40My0xMi44Nk0yNTEuNTQgNjcuNDJMMjI0LjMgODMuMTVBNy40MyA3LjQzIDAgMDAyMzEuNzIgOTZsMjcuMjQtMTUuNzNhNy40MyA3LjQzIDAgMDAtNy40Mi0xMi44Nk04My4xIDIyNC4zNGwtMTUuNzMgMjcuMjRhNy40MyA3LjQzIDAgMDAxMi44NyA3LjQzbDE1LjczLTI3LjI1YTcuNDMgNy40MyAwIDAwLTEyLjg3LTcuNDJNMTg3LjIgNTguOTFhNy40IDcuNCAwIDAwMTAuMTQtMi43MWwxNS43My0yNy4yNWE3LjQzIDcuNDMgMCAxMC0xMi44Ni03LjQybC0xNS43MyAyNy4yNGE3LjQzIDcuNDMgMCAwMDIuNzEgMTAuMTQiLz48L2c+PC9zdmc+"},30570:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjk0LjcxIiBoZWlnaHQ9IjE4OS4xNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTA5LjAzIDExOS4yYzAtMjkuMTkgMjYuNC01Mi45NCA1OC44Ni01Mi45NCA3LjAyIDAgMTMuODEgMS4wOCAyMC4yOSAzLjIyYTU0LjM2IDU0LjM2IDAgMDEyNS4wNC0xNC4zNkE1MS45NSA1MS45NSAwIDAwMTY2LjkgMjYuM2MtNC4yMSAwLTguNDEuNTItMTIuNDggMS41Mi0zIC43NC02LjE1LS40NC03LjktMi45OWE1Ny4xMyA1Ny4xMyAwIDAwLTg1LjU4LTkuODQgNTYuOTUgNTYuOTUgMCAwMC0xOC4zMyAzNi42NSA3LjQyIDcuNDIgMCAwMS00LjIgNmMtLjY5LjM0LTEuMzguNjgtMi4wNSAxLjA2LS42Mi4zNC0xLjI5LjYtMS45OC43NkE0NC4zIDQ0LjMgMCAwMDkuOCA3NC42NmE0My4yIDQzLjIgMCAwMC05LjggMjcuNThjMCAyNC4xOSAxOS43OCA0My44NiA0NC4xIDQzLjg2aDUyLjk2YTQ4LjA0IDQ4LjA0IDAgMDExMi4wMy0yNC42M2MtLjAzLS43Ni0uMDUtMS41MS0uMDUtMi4yNyIgZmlsbD0iIzYxYzllNyIvPjxwYXRoIGQ9Ik0yNjkuMjUgMTIwLjRhNy40MyA3LjQzIDAgMDEtNC40Ni05LjUgMjguODUgMjguODUgMCAwMDEuNzItOS44MmMwLTE0LjEtMTAuMjctMjYuMTYtMjQuNy0zMC45YTQzLjYzIDQzLjYzIDAgMDAtMjEuMDgtMS41NWMtOS45IDEuNjgtMTguNzQgNi43LTI0LjUgMTQuMTJhNy40MyA3LjQzIDAgMDEtOC44IDIuMjYgNDkuMTIgNDkuMTIgMCAwMC0xOS41My0zLjk2Yy0yNC4yNyAwLTQ0LjAyIDE3LjEtNDQuMDIgMzguMSAwIDEuMzQuMDkgMi43My4yNiA0LjFhNy4zOSA3LjM5IDAgMDEtMi4yMyA2LjI2IDM0LjMgMzQuMyAwIDAwLTkuNzEgMTYuNTMgMzEuMDMgMzEuMDMgMCAwMC4wMiAxNC44NWM0IDE2LjEzIDIwLjYyIDI4LjI3IDQwLjQ2IDI4LjI3aDEwMC42M2MyMi44MiAwIDQxLjM4LTE2LjA0IDQxLjM4LTM1Ljc2IDAtMTQuNDUtOS45OS0yNy40MS0yNS40NC0zMyIgZmlsbD0iIzQ0OTJhOCIvPjwvc3ZnPg=="},75322:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iMTAiLz48cGF0aCBkPSJNMjIgMTJoLTRNNiAxMkgyTTEyIDZWMk0xMiAyMnYtNCIvPjwvc3ZnPg=="},26320:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjU0LjQ0IiBoZWlnaHQ9IjI1Ni4zOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjNjFjOWU3Ij48cGF0aCBkPSJNMjMzLjMgNzEuNThhNy40MiA3LjQyIDAgMDEtMi42My0zLjg0IDU1LjUgNTUuNSAwIDAwLTUzLjA4LTM5Ljg3Yy00LjUgMC05IC41NS0xMy4zNSAxLjYzLTMgLjc0LTYuMTUtLjQ1LTcuOS0zQTYxLjEgNjEuMSAwIDAwMTA2IC4wMSA2MC44OSA2MC44OSAwIDAwNjQuODMgMTZhNjAuODcgNjAuODcgMCAwMC0xOS42IDM5LjIgNy40MiA3LjQyIDAgMDEtNC4yIDZjLS43My4zNC0xLjQ3LjcyLTIuMiAxLjEyLS42MS4zNS0xLjI4LjYtMS45Ny43NUE0Ny40OCA0Ny40OCAwIDAwMTAuNSA3OS4zNyA0Ni4zIDQ2LjMgMCAwMDAgMTA4LjkyYzAgMjUuOTEgMjEuMiA0NyA0Ny4yNiA0N0gyMDQuNmMyNi4wNiAwIDQ3LjI3LTIxLjA5IDQ3LjI3LTQ3YTQ2LjYgNDYuNiAwIDAwLTE4LjU2LTM3LjM0TTIzMS4zMiAxODcuOTFjMC00LjEtMy4zMy03LjQzLTcuNDMtNy40M0gyOC44N2E3LjQyIDcuNDIgMCAxMDAgMTQuODZoMTk1LjAyYzQuMSAwIDcuNDMtMy4zNCA3LjQzLTcuNDNNMjEzLjE0IDI0MS41NEgxOC4xMmE3LjQzIDcuNDMgMCAwMDAgMTQuODVoMTk1LjAyYTcuNDIgNy40MiAwIDEwMC0xNC44NU02Mi4yOCAyMTEuNDNhNy40MiA3LjQyIDAgMTAwIDE0Ljg1aDcxLjQ3YTcuNDMgNy40MyAwIDAwMC0xNC44NUg2Mi4yOE0yNDcgMjExLjQzaC03MS40OGE3LjQyIDcuNDIgMCAxMDAgMTQuODVIMjQ3YTcuNDMgNy40MyAwIDAwMC0xNC44NSIvPjwvZz48L3N2Zz4="},94776:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjUxLjg4IiBoZWlnaHQ9IjI1OC42NCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjUxLjg1IDEwOC45YTQ2LjYgNDYuNiAwIDAwLTE4LjU2LTM3LjM0IDcuNDMgNy40MyAwIDAxLTIuNjMtMy44NSA1NS41IDU1LjUgMCAwMC01My4wOC0zOS44NmMtNC41IDAtOSAuNTQtMTMuMzUgMS42Mi0zIC43NC02LjE1LS40NS03LjktM0E2MS4xIDYxLjEgMCAwMDEwNiAwYTYwLjg5IDYwLjg5IDAgMDAtNDEuMTggMTUuOTcgNjAuODcgNjAuODcgMCAwMC0xOS42IDM5LjIgNy40MyA3LjQzIDAgMDEtNC4yIDZjLS43My4zNS0xLjQ3LjczLTIuMiAxLjEzLS42MS4zNC0xLjI4LjYtMS45Ny43NWE0Ny40OCA0Ny40OCAwIDAwLTI2LjM1IDE2LjNBNDYuMyA0Ni4zIDAgMDAtLjAxIDEwOC45YzAgMjUuOTIgMjEuMiA0NyA0Ny4yNiA0N0gyMDQuNmMyNi4wNyAwIDQ3LjI3LTIxLjA4IDQ3LjI3LTQ3IiBmaWxsPSIjNDQ5MmE4Ii8+PGcgZmlsbD0iIzYxYzllNyI+PHBhdGggZD0iTTY2LjY2IDIyMy40NGE3LjQyIDcuNDIgMCAwMDcuMS05LjZsLTguOTQtMjkuMThhNy40MiA3LjQyIDAgMTAtMTQuMiA0LjM1bDguOTQgMjkuMTdhNy40MyA3LjQzIDAgMDA3LjEgNS4yNk0xMDcuNCAyNTguNjJhNy40MyA3LjQzIDAgMDA3LjEtOS42bC04LjkzLTI5LjE4YTcuNDIgNy40MiAwIDEwLTE0LjIgNC4zNWw4Ljk0IDI5LjE4YTcuNDMgNy40MyAwIDAwNy4xIDUuMjVNMTU5LjIyIDIxMy4wNmE3LjQzIDcuNDMgMCAwMC00LjkzIDkuMjhsOC45NCAyOS4xN2E3LjQzIDcuNDMgMCAxMDE0LjItNC4zNUwxNjguNSAyMThhNy40MyA3LjQzIDAgMDAtOS4yNy00LjkzTTEyOC44NCAyMjMuNDRhNy40MSA3LjQxIDAgMDA3LjEtOS42bC04LjkzLTI5LjE4YTcuNDMgNy40MyAwIDEwLTE0LjIgNC4zNWw4Ljk0IDI5LjE3YTcuNDMgNy40MyAwIDAwNy4xIDUuMjZNMTkxLjAzIDIyMy40NGE3LjQxIDcuNDEgMCAwMDcuMS05LjZsLTguOTQtMjkuMThBNy40MiA3LjQyIDAgMTAxNzUgMTg5bDguOTQgMjkuMTdhNy40MyA3LjQzIDAgMDA3LjEgNS4yNiIvPjwvZz48L3N2Zz4="},26157:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjk0LjcxIiBoZWlnaHQ9IjI1OC41NyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjNjFjOWU3Ij48cGF0aCBkPSJNMTA5LjA0IDExOS4xOGMwLTI5LjIgMjYuNC01Mi45NSA1OC44Ny01Mi45NSA3IDAgMTMuOCAxLjA4IDIwLjI4IDMuMjJhNTQuMzIgNTQuMzIgMCAwMTI1LjA0LTE0LjM1IDUxLjkzIDUxLjkzIDAgMDAtNDYuMzItMjguODNjLTQuMjEgMC04LjQxLjUxLTEyLjQ3IDEuNTItMyAuNzUtNi4xNi0uNDUtNy45MS0zQTU3LjE1IDU3LjE1IDAgMDA5OS40Ni4wMmMtMTQuMyAwLTI3Ljk3IDUuMzEtMzguNTEgMTQuOTVhNTYuOTMgNTYuOTMgMCAwMC0xOC4zMyAzNi42NSA3LjQzIDcuNDMgMCAwMS00LjIgNmMtLjY4LjMyLTEuMzcuNjgtMi4wNSAxLjA1LS42Mi4zNS0xLjI5LjYtMS45OC43NUE0NC4zIDQ0LjMgMCAwMDkuOCA3NC42NCA0My4yIDQzLjIgMCAwMDAgMTAyLjJjMCAyNC4xOCAxOS43OCA0My44NiA0NC4xIDQzLjg2aDUyLjk2YTQ4LjA0IDQ4LjA0IDAgMDExMi4wMy0yNC42M2MtLjAzLS43Ni0uMDUtMS41MS0uMDUtMi4yNk02NC45OSAyNTguNTlhNy40NCA3LjQ0IDAgMDA3LjEtOS42bC04Ljk0LTI5LjE4YTcuNDMgNy40MyAwIDAwLTE0LjIgNC4zNWw4Ljk0IDI5LjE3YTcuNDMgNy40MyAwIDAwNy4xIDUuMjZNMTI3LjE3IDI1OC41OWE3LjQzIDcuNDMgMCAwMDcuMS05LjZsLTguOTQtMjkuMThhNy40MyA3LjQzIDAgMDAtMTQuMiA0LjM1bDguOTQgMjkuMTdhNy40MyA3LjQzIDAgMDA3LjEgNS4yNk0xODkuMzYgMjU4LjU5YTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45NC0yOS4xOGE3LjQzIDcuNDMgMCAwMC0xNC4yIDQuMzVsOC45NCAyOS4xN2E3LjQzIDcuNDMgMCAwMDcuMSA1LjI2Ii8+PC9nPjxwYXRoIGQ9Ik0yNjkuMjYgMTIwLjQyYTcuNDMgNy40MyAwIDAxLTQuNDYtOS41IDI4Ljg2IDI4Ljg2IDAgMDAxLjczLTkuODJjMC0xNC4xLTEwLjI4LTI2LjE1LTI0LjctMzAuOTFhNDMuNTcgNDMuNTcgMCAwMC0yMS4wOS0xLjU1Yy05LjkgMS42OS0xOC43NCA2LjctMjQuNDkgMTQuMTJhNy40MyA3LjQzIDAgMDEtOC44IDIuMjggNDkuMTIgNDkuMTIgMCAwMC0xOS41NC0zLjk2Yy0yNC4yNyAwLTQ0LjAyIDE3LjA5LTQ0LjAyIDM4LjA5IDAgMS4zNS4wOSAyLjczLjI2IDQuMWE3LjQzIDcuNDMgMCAwMS0yLjIzIDYuMjYgMzQuMjEgMzQuMjEgMCAwMC05LjcxIDE2LjUzIDMxLjAzIDMxLjAzIDAgMDAuMDMgMTQuODVjNCAxNi4xMyAyMC42MSAyOC4yNyA0MC40NSAyOC4yN2gxMDAuNjNjMjIuODIgMCA0MS4zOC0xNi4wNSA0MS4zOC0zNS43NiAwLTE0LjQ2LTkuOTgtMjcuNDEtMjUuNDQtMzMiIGZpbGw9IiM0NDkyYTgiLz48L3N2Zz4="},50663:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzE4Ljk0IiBoZWlnaHQ9IjI4OS42MiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjNjFjOWU3Ij48cGF0aCBkPSJNMjg1LjA0IDEyNy42YTcuNDIgNy40MiAwIDAxLTIuNjQtMy44NSA1NS41IDU1LjUgMCAwMC01My4wOC0zOS44NmMtNC41IDAtOSAuNTQtMTMuMzQgMS42Mi0zIC43NS02LjE1LS40NS03LjktM2E2MS4xIDYxLjEgMCAwMC01MC4zMy0yNi40OCA2MC44OSA2MC44OSAwIDAwLTQxLjE4IDE1Ljk4IDYwLjg4IDYwLjg4IDAgMDAtMTkuNiAzOS4xOSA3LjQyIDcuNDIgMCAwMS00LjIgNmMtLjczLjM1LTEuNDcuNzMtMi4yIDEuMTMtLjYyLjM0LTEuMjkuNi0xLjk4Ljc1YTQ3LjQ4IDQ3LjQ4IDAgMDAtMjYuMzUgMTYuMyA0Ni4yOSA0Ni4yOSAwIDAwLTEwLjUxIDI5LjU1YzAgMjUuOTIgMjEuMiA0NyA0Ny4yNyA0N2gxNTcuMzRjMjYuMDYgMCA0Ny4yNi0yMS4wOCA0Ny4yNi00N2E0Ni42IDQ2LjYgMCAwMC0xOC41Ni0zNy4zMyIgcGFpbnQtb3JkZXI9InN0cm9rZSBmaWxsIG1hcmtlcnMiLz48cGF0aCBkPSJNOTEuOTggMjg3LjFhNy40MSA3LjQxIDAgMDA3LjEtOS42bC04Ljk0LTI5LjE4YTcuNDMgNy40MyAwIDAwLTE0LjIgNC4zNWw4Ljk0IDI5LjE4YTcuNDMgNy40MyAwIDAwNy4xIDUuMjVNMTU0LjE2IDI4Ny4xYTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45NC0yOS4xOGE3LjQzIDcuNDMgMCAwMC0xNC4yIDQuMzVsOC45NCAyOS4xOGE3LjQzIDcuNDMgMCAwMDcuMSA1LjI1TTIxNi4zNSAyODcuMWE3LjQzIDcuNDMgMCAwMDcuMS05LjZsLTguOTQtMjkuMThhNy40MyA3LjQzIDAgMTAtMTQuMiA0LjM1bDguOTQgMjkuMThhNy40MyA3LjQzIDAgMDA3LjEgNS4yNU0xMTYuNTggMjU5Ljk3YTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45NC0yOS4xOGE3LjQzIDcuNDMgMCAwMC0xNC4yIDQuMzVsOC45NCAyOS4xN2E3LjQzIDcuNDMgMCAwMDcuMSA1LjI2TTE3OC43NiAyNTkuOTdhNy40MyA3LjQzIDAgMDA3LjEtOS42bC04Ljk0LTI5LjE4YTcuNDMgNy40MyAwIDEwLTE0LjIgNC4zNWw4Ljk0IDI5LjE3YTcuNDMgNy40MyAwIDAwNy4xIDUuMjZNMjc4LjMzIDI4Ny4wOWE3LjQzIDcuNDMgMCAwMDcuMS05LjZsLTguOTQtMjkuMThhNy40MyA3LjQzIDAgMTAtMTQuMiA0LjM1bDguOTQgMjkuMTdhNy40MyA3LjQzIDAgMDA3LjEgNS4yNk0yNDAuNzMgMjU5Ljk1YTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45NC0yOS4xOGE3LjQzIDcuNDMgMCAxMC0xNC4yIDQuMzVsOC45NCAyOS4xOGE3LjQzIDcuNDMgMCAwMDcuMSA1LjI1Ii8+PC9nPjxwYXRoIGQ9Ik03OS44Mi0uMDVjLTMuMzcgMS4wMi02LjY5IDIuMi05Ljk2IDMuNTQtNTcuNTUgMjMuNTctODUuMiA4OS41Ni02MS42MyAxNDcuMTIgOC4xOSAyMCAyMS42MSAzNi44NCAzOC44IDQ5LjA3YTYxLjYgNjEuNiAwIDAxLTEwLjgtMzQuODNjMC0xNC4zIDQuOTMtMjguMTMgMTMuOTYtMzkuMjJhNjIuNjYgNjIuNjYgMCAwMTUuOTktNi4zNiAxMjUuODIgMTI1LjgyIDAgMDEtMS42OS03MC4wOUExMjguNDMgMTI4LjQzIDAgMDE3OS44Mi0uMDV6IiBmaWxsPSIjZTFjMDE0Ii8+PC9zdmc+"},53107:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzE4Ljk0IiBoZWlnaHQ9IjI4OS42MiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjNjFjOWU3Ij48cGF0aCBkPSJNMjg1LjA0IDEyNy42YTcuNDIgNy40MiAwIDAxLTIuNjQtMy44NSA1NS41IDU1LjUgMCAwMC01My4wOC0zOS44NmMtNC41IDAtOSAuNTQtMTMuMzQgMS42Mi0zIC43NS02LjE1LS40NS03LjktM2E2MS4xIDYxLjEgMCAwMC01MC4zMy0yNi40OCA2MC44OSA2MC44OSAwIDAwLTQxLjE4IDE1Ljk4IDYwLjg4IDYwLjg4IDAgMDAtMTkuNiAzOS4xOSA3LjQyIDcuNDIgMCAwMS00LjIgNmMtLjczLjM1LTEuNDcuNzMtMi4yIDEuMTMtLjYyLjM0LTEuMjkuNi0xLjk4Ljc1YTQ3LjQ4IDQ3LjQ4IDAgMDAtMjYuMzUgMTYuMyA0Ni4yOSA0Ni4yOSAwIDAwLTEwLjUxIDI5LjU1YzAgMjUuOTIgMjEuMiA0NyA0Ny4yNyA0N2gxNTcuMzRjMjYuMDYgMCA0Ny4yNi0yMS4wOCA0Ny4yNi00N2E0Ni42IDQ2LjYgMCAwMC0xOC41Ni0zNy4zMyIgcGFpbnQtb3JkZXI9InN0cm9rZSBmaWxsIG1hcmtlcnMiLz48cGF0aCBkPSJNMTE5Ljk1IDI4OS42M2E3LjQxIDcuNDEgMCAwMDcuMS05LjZsLTguOTQtMjkuMThhNy40MyA3LjQzIDAgMDAtMTQuMiA0LjM1bDguOTQgMjkuMThhNy40MyA3LjQzIDAgMDA3LjEgNS4yNU0xODIuMTMgMjg5LjYzYTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45My0yOS4xOGE3LjQzIDcuNDMgMCAwMC0xNC4yIDQuMzVsOC45NCAyOS4xOGE3LjQzIDcuNDMgMCAwMDcuMSA1LjI1TTI0NC4zMiAyODkuNjNhNy40MyA3LjQzIDAgMDA3LjEtOS42bC04Ljk0LTI5LjE4YTcuNDMgNy40MyAwIDEwLTE0LjIgNC4zNWw4Ljk0IDI5LjE4YTcuNDMgNy40MyAwIDAwNy4xIDUuMjUiLz48L2c+PHBhdGggZD0iTTgwLjY2LS45Qzc3LjI5LjE0IDczLjk3IDEuMzIgNzAuNyAyLjY2IDEzLjE1IDI2LjIyLTE0LjUgOTIuMjEgOS4wNyAxNDkuNzdjOC4xOSAyMCAyMS42MSAzNi44NCAzOC44IDQ5LjA3QTYxLjYgNjEuNiAwIDAxMzcuMDcgMTY0YzAtMTQuMyA0LjkzLTI4LjEzIDEzLjk2LTM5LjIyYTYyLjY2IDYyLjY2IDAgMDE1Ljk5LTYuMzYgMTI1LjgyIDEyNS44MiAwIDAxLTEuNjktNzAuMDlBMTI4LjQzIDEyOC40MyAwIDAxODAuNjYtLjg5eiIgZmlsbD0iI2UxYzAxNCIvPjwvc3ZnPg=="},18138:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzE4Ljk0IiBoZWlnaHQ9IjI4OS42MiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjNjFjOWU3Ij48cGF0aCBkPSJNMjg1LjA0IDEyNy42YTcuNDIgNy40MiAwIDAxLTIuNjQtMy44NSA1NS41IDU1LjUgMCAwMC01My4wOC0zOS44NmMtNC41IDAtOSAuNTQtMTMuMzQgMS42Mi0zIC43NS02LjE1LS40NS03LjktM2E2MS4xIDYxLjEgMCAwMC01MC4zMy0yNi40OCA2MC44OSA2MC44OSAwIDAwLTQxLjE4IDE1Ljk4IDYwLjg4IDYwLjg4IDAgMDAtMTkuNiAzOS4xOSA3LjQyIDcuNDIgMCAwMS00LjIgNmMtLjczLjM1LTEuNDcuNzMtMi4yIDEuMTMtLjYyLjM0LTEuMjkuNi0xLjk4Ljc1YTQ3LjQ4IDQ3LjQ4IDAgMDAtMjYuMzUgMTYuMyA0Ni4yOSA0Ni4yOSAwIDAwLTEwLjUxIDI5LjU1YzAgMjUuOTIgMjEuMiA0NyA0Ny4yNyA0N2gxNTcuMzRjMjYuMDYgMCA0Ny4yNi0yMS4wOCA0Ny4yNi00N2E0Ni42IDQ2LjYgMCAwMC0xOC41Ni0zNy4zMyIgcGFpbnQtb3JkZXI9InN0cm9rZSBmaWxsIG1hcmtlcnMiLz48cGF0aCBkPSJNMTI1LjAzIDI4Ny45NGE3LjQxIDcuNDEgMCAwMDcuMS05LjZsLTguOTQtMjkuMThhNy40MyA3LjQzIDAgMDAtMTQuMiA0LjM1bDguOTQgMjkuMThhNy40MyA3LjQzIDAgMDA3LjEgNS4yNU0xODcuMjEgMjg3Ljk0YTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45My0yOS4xOGE3LjQzIDcuNDMgMCAwMC0xNC4yIDQuMzVsOC45NCAyOS4xOGE3LjQzIDcuNDMgMCAwMDcuMSA1LjI1TTI0OS40IDI4Ny45NGE3LjQzIDcuNDMgMCAwMDcuMS05LjZsLTguOTQtMjkuMThhNy40MyA3LjQzIDAgMTAtMTQuMiA0LjM1bDguOTQgMjkuMThhNy40MyA3LjQzIDAgMDA3LjEgNS4yNU0xNDkuNjMgMjYwLjhhNy40MyA3LjQzIDAgMDA3LjEtOS42bC04Ljk0LTI5LjE3YTcuNDMgNy40MyAwIDAwLTE0LjIgNC4zNWw4Ljk0IDI5LjE3YTcuNDMgNy40MyAwIDAwNy4xIDUuMjZNMjExLjgxIDI2MC44YTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45NC0yOS4xN2E3LjQzIDcuNDMgMCAxMC0xNC4yIDQuMzVsOC45NSAyOS4xN2E3LjQzIDcuNDMgMCAwMDcuMSA1LjI2Ii8+PC9nPjxwYXRoIGQ9Ik03OS44Mi0uMDVjLTMuMzcgMS4wMi02LjY5IDIuMi05Ljk2IDMuNTQtNTcuNTUgMjMuNTctODUuMiA4OS41Ni02MS42MyAxNDcuMTIgOC4xOSAyMCAyMS42MSAzNi44NCAzOC44IDQ5LjA3YTYxLjYgNjEuNiAwIDAxLTEwLjgtMzQuODNjMC0xNC4zIDQuOTMtMjguMTMgMTMuOTYtMzkuMjJhNjIuNjYgNjIuNjYgMCAwMTUuOTktNi4zNiAxMjUuODIgMTI1LjgyIDAgMDEtMS42OS03MC4wOUExMjguNDMgMTI4LjQzIDAgMDE3OS44Mi0uMDV6IiBmaWxsPSIjZTFjMDE0Ii8+PC9zdmc+"},53748:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjM4LjMiIGhlaWdodD0iMjI4LjU3IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGZpbGw9IiM2MWM5ZTciPjxwYXRoIGQ9Ik05MS42NCA2Ni41NEw4Ni40NiA4NS45bDE4LjUyLTcuNjYgMTYuOCAxMC45MS0xLjU1LTE5Ljk3IDE1LjU3LTEyLjYyLTE5LjQ4LTQuNjktNy4xOS0xOC43LTEwLjQ4IDE3LjA3LTIwLjAxIDEuMDQgMTMgMTUuMjZNMTc2Ljc5IDQ1LjQ2bC03LjY3LTEwLjMtMy41MSAxMi4zNS0xMi4xNyA0LjEgMTAuNjYgNy4xNi4xNCAxMi44NCAxMC4xLTcuOTIgMTIuMjcgMy44My00LjQyLTEyLjA2IDcuNDMtMTAuNDgtMTIuODMuNDgiLz48cGF0aCBkPSJNMjEyLjE3IDE1NS42NGE1LjI1IDUuMjUgMCAwMS0xLjg3LTIuNzMgMzkuNTIgMzkuNTIgMCAwMC0zNy43OS0yOC4zOGMtMy4yIDAtNi40LjM5LTkuNSAxLjE2YTUuMjkgNS4yOSAwIDAxLTUuNjMtMi4xNCA0My41IDQzLjUgMCAwMC02NS4xNC03LjQ4IDQzLjM1IDQzLjM1IDAgMDAtMTMuOTUgMjcuOSA1LjMgNS4zIDAgMDEtMyA0LjI4Yy0uNTIuMjQtMS4wNC41MS0xLjU2LjgtLjQ0LjI0LS45MS40Mi0xLjQuNTNhMzMuODQgMzMuODQgMCAwMC0xOC43NyAxMS42IDMyLjk5IDMyLjk5IDAgMDAtNy40OCAyMS4wNWMwIDE4LjQ0IDE1LjEgMzMuNDUgMzMuNjUgMzMuNDVoMTEyYzE4LjU2IDAgMzMuNjYtMTUgMzMuNjYtMzMuNDVhMzMuMiAzMy4yIDAgMDAtMTMuMjItMjYuNTkiIHBhaW50LW9yZGVyPSJzdHJva2UgZmlsbCBtYXJrZXJzIi8+PC9nPjxwYXRoIGQ9Ik04Mi45LS4zM2ExMTcuNjIgMTE3LjYyIDAgMDAtMTAuMyAzLjY3QzEzLjA2IDI3LjczLTE1LjU1IDk2IDguODQgMTU1LjU0YTExNi40MyAxMTYuNDMgMCAwMDI2LjM2IDM5LjI0IDQ1LjYyIDQ1LjYyIDAgMDEtMS44Ny0xMi45QTQ2LjMgNDYuMyAwIDAxNDMuNyAxNTIuN2wuMDEtLjAxYTQ2LjU5IDQ2LjU5IDAgMDEyMC41Mi0xNC40N0ExMzAuNCAxMzAuNCAwIDAxNTYuNyA1MC42IDEzMi44OCAxMzIuODggMCAwMTgyLjktLjMyeiIgZmlsbD0iI2UxYzAxNCIvPjwvc3ZnPg=="},26625:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjM4LjMiIGhlaWdodD0iMjI4LjU3IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGZpbGw9IiM2MWM5ZTciPjxwYXRoIGQ9Ik05OC40MyAxMDIuMTJsLTUuMTkgMTkuMzYgMTguNTMtNy42NSAxNi44IDEwLjktMS41Ni0xOS45NyAxNS41OC0xMi42MS0xOS40OS00LjctNy4xOC0xOC43LTEwLjQ4IDE3LjA4LTIwLjAyIDEuMDQgMTMuMDEgMTUuMjVNMTc2Ljc5IDQ1LjQ2bC03LjY3LTEwLjMtMy41MSAxMi4zNS0xMi4xNyA0LjEgMTAuNjYgNy4xNi4xNCAxMi44NCAxMC4xLTcuOTIgMTIuMjcgMy44My00LjQyLTEyLjA2IDcuNDMtMTAuNDgtMTIuODMuNDgiLz48cGF0aCBkPSJNMjIwLjc2IDE3OS41OWEzLjUzIDMuNTMgMCAwMS0xLjI2LTEuODQgMjYuNTQgMjYuNTQgMCAwMC0zMS43Ni0xOC4yOCAzLjU1IDMuNTUgMCAwMS0zLjc4LTEuNDQgMjkuMjEgMjkuMjEgMCAwMC01My4xMiAxMy43MiAzLjU2IDMuNTYgMCAwMS0yIDIuODdjLS4zNi4xNy0uNzEuMzUtMS4wNi41NC0uMy4xNi0uNjEuMjgtLjk1LjM1YTIyLjczIDIyLjczIDAgMDAtMTIuNiA3LjggMjIuMTUgMjIuMTUgMCAwMC01LjAyIDE0LjEzIDIyLjU2IDIyLjU2IDAgMDAyMi42IDIyLjQ3aDc1LjIzYTIyLjU2IDIyLjU2IDAgMDAyMi42LTIyLjQ3IDIyLjMgMjIuMyAwIDAwLTguODgtMTcuODUiIHBhaW50LW9yZGVyPSJzdHJva2UgZmlsbCBtYXJrZXJzIi8+PC9nPjxwYXRoIGQ9Ik04Mi40Ny0uMDJhMTE3LjYyIDExNy42MiAwIDAwLTEwLjMgMy42N0MxMi42MyAyOC4wMy0xNS45NyA5Ni4zIDguNDEgMTU1Ljg1YTExNS45MSAxMTUuOTEgMCAwMDYyLjkgNjMuNCAxMTYuMTggMTE2LjE4IDAgMDA1NC4zOSA4LjczYy0xNC40LTIuNzQtMjUuNDUtMTUuNDQtMjUuNDUtMzAuNTcgMC0zLjQ2LjU5LTYuODYgMS43LTEwLjA5YTEzMC40MiAxMzAuNDIgMCAwMS00MC4xMi01My4zNSAxMzAuNCAxMzAuNCAwIDAxLTUuNTYtODMuMDZBMTMyLjg4IDEzMi44OCAwIDAxODIuNDctLjAyeiIgZmlsbD0iI2UxYzAxNCIvPjwvc3ZnPg=="},87760:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTg5LjYzIiBoZWlnaHQ9IjIyOC40IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik02Mi4xMSAxMzRhMTMwLjQgMTMwLjQgMCAwMS01LjU1LTgzLjA1QTEzMi44OSAxMzIuODkgMCAwMTgyLjc2IDBhMTE3LjY0IDExNy42NCAwIDAwLTEwLjMgMy42N0MxMi45MiAyOC4wNy0xNS43IDk2LjM0IDguNyAxNTUuODhhMTE1LjkxIDExNS45MSAwIDAwNjIuODkgNjMuNCAxMTUuOTMgMTE1LjkzIDAgMDA4OS4zLjM2YzMuMzktMS4zOSA2LjctMi45MiA5LjkyLTQuNjJhMTMyLjY2IDEzMi42NiAwIDAxLTU0LjQtMTcuOTIgMTMwLjQ1IDEzMC40NSAwIDAxLTU0LjMtNjMuMSIgZmlsbD0iI2UxYzAxNCIvPjxwYXRoIGQ9Ik0xMjIuMTUgMTIzLjNsLTUuMTkgMTkuMzcgMTguNTItNy42NSAxNi44MSAxMC45LTEuNTYtMTkuOTcgMTUuNTgtMTIuNjEtMTkuNDktNC43LTcuMTgtMTguNy0xMC40OCAxNy4wOC0yMC4wMiAxLjA0IDEzLjAxIDE1LjI1TTE3Ni43OSA0NS40NmwtNy42Ny0xMC4zLTMuNTEgMTIuMzUtMTIuMTcgNC4xIDEwLjY2IDcuMTYuMTQgMTIuODQgMTAuMS03LjkyIDEyLjI3IDMuODMtNC40Mi0xMi4wNiA3LjQzLTEwLjQ4LTEyLjgzLjQ4IiBmaWxsPSIjNjFjOWU3Ii8+PC9zdmc+"},37837:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjUxLjg3IiBoZWlnaHQ9IjIyMy40NSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNDcuMjYgMTU1LjlIMjA0LjZjMjYuMDYgMCA0Ny4yNy0yMS4xIDQ3LjI3LTQ3YTQ2LjYgNDYuNiAwIDAwLTE4LjU2LTM3LjM0IDcuNDMgNy40MyAwIDAxLTIuNjQtMy44NSA1NS41IDU1LjUgMCAwMC01My4wOC0zOS44NmMtNC41IDAtOSAuNTQtMTMuMzQgMS42Mi0zIC43NC02LjE1LS40NS03LjktM0E2MS4xIDYxLjEgMCAwMDEwNi4wMSAwYTYwLjg5IDYwLjg5IDAgMDAtNDEuMTggMTUuOTggNjAuODggNjAuODggMCAwMC0xOS42IDM5LjE5IDcuNDIgNy40MiAwIDAxLTQuMiA2Yy0uNzQuMzUtMS40OC43My0yLjIgMS4xMy0uNjIuMzQtMS4yOS42LTEuOTguNzVhNDcuNDcgNDcuNDcgMCAwMC0yNi4zNSAxNi4zQTQ2LjMgNDYuMyAwIDAwMCAxMDguOWMwIDI1LjkyIDIxLjIgNDcgNDcuMjYgNDciIGZpbGw9IiM0NDkyYTgiLz48ZyBmaWxsPSIjNjFjOWU3Ij48cGF0aCBkPSJNNTUuNTUgMTc5Ljc0YTcuNDIgNy40MiAwIDAwLTQuOTIgOS4yOGw4Ljk0IDI5LjE3YTcuNDMgNy40MyAwIDEwMTQuMi00LjM1bC04Ljk0LTI5LjE3YTcuNDIgNy40MiAwIDAwLTkuMjgtNC45M00xMTcuNzQgMTc5Ljc0YTcuNDMgNy40MyAwIDAwLTQuOTMgOS4yOGw4Ljk0IDI5LjE3YTcuNDMgNy40MyAwIDAwMTQuMi00LjM1bC04Ljk0LTI5LjE3YTcuNDMgNy40MyAwIDAwLTkuMjctNC45M00xNzkuOTIgMTc5Ljc0YTcuNDMgNy40MyAwIDAwLTQuOTIgOS4yOGw4Ljk0IDI5LjE3YTcuNDMgNy40MyAwIDAwMTQuMi00LjM1bC04Ljk0LTI5LjE3YTcuNDMgNy40MyAwIDAwLTkuMjgtNC45MyIvPjwvZz48L3N2Zz4="},53254:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzA3LjE5IiBoZWlnaHQ9IjI5MS4zMyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNTUuNTcgOTIuNTRjMCA5LjI3IDMuNDMgMTguMDIgOS41NCAyNC43NmE2Mi4zNiA2Mi4zNiAwIDAxMjEuMjItMTAuMzggNzUuNzIgNzUuNzIgMCAwMTI1LjYxLTQ1LjggMzYuOTcgMzYuOTcgMCAwMC01Ni4zNyAzMS40IiBmaWxsPSIjZGVjNjBmIi8+PGcgZmlsbD0iIzYxYzllNyI+PHBhdGggZD0iTTI4OC42IDEyOS4zYTcuNDIgNy40MiAwIDAxLTIuNjMtMy44NUE1NS41IDU1LjUgMCAwMDIzMi45IDg1LjZjLTQuNSAwLTkgLjU0LTEzLjM0IDEuNjItMyAuNzUtNi4xNS0uNDUtNy45LTNhNjEuMSA2MS4xIDAgMDAtNTAuMzMtMjYuNDggNjAuODkgNjAuODkgMCAwMC00MS4xOCAxNS45OCA2MC44OCA2MC44OCAwIDAwLTE5LjYgMzkuMTkgNy40MiA3LjQyIDAgMDEtNC4yIDZjLS43My4zNS0xLjQ3LjczLTIuMiAxLjEzLS42Mi4zNC0xLjI5LjYtMS45OC43NWE0Ny40OCA0Ny40OCAwIDAwLTI2LjM1IDE2LjMgNDYuMjkgNDYuMjkgMCAwMC0xMC41MSAyOS41NWMwIDI1LjkyIDIxLjIgNDcgNDcuMjcgNDdIMjU5LjljMjYuMDYgMCA0Ny4yNi0yMS4wOCA0Ny4yNi00N2E0Ni42IDQ2LjYgMCAwMC0xOC41Ni0zNy4zM005NS4zNSAyNjMuNzdhNy40MSA3LjQxIDAgMDA3LjEtOS42bC04Ljk0LTI5LjE4YTcuNDMgNy40MyAwIDAwLTE0LjIgNC4zNWw4Ljk0IDI5LjE4YTcuNDMgNy40MyAwIDAwNy4xIDUuMjVNMTU3LjUzIDI2My43N2E3LjQzIDcuNDMgMCAwMDcuMS05LjZsLTguOTQtMjkuMThhNy40MyA3LjQzIDAgMDAtMTQuMiA0LjM1bDguOTQgMjkuMThhNy40MyA3LjQzIDAgMDA3LjEgNS4yNU0yMTkuNzIgMjYzLjc3YTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45NC0yOS4xOGE3LjQzIDcuNDMgMCAxMC0xNC4yIDQuMzVsOC45NCAyOS4xOGE3LjQzIDcuNDMgMCAwMDcuMSA1LjI1Ii8+PC9nPjxnIGZpbGw9IiNkZWM2MGYiPjxwYXRoIGQ9Ik04NS4wOCA3LjQ1djIwLjg5YTcuNDMgNy40MyAwIDAwMTQuODUgMFY3LjQ0YTcuNDMgNy40MyAwIDEwLTE0Ljg1IDBNNjAuNDEgNDQuMzZhNy40MyA3LjQzIDAgMDA2LjQyLTExLjE0TDU2LjQgMTUuMTJhNy40MyA3LjQzIDAgMDAtMTIuODYgNy40NGwxMC40NSAxOC4wOWE3LjQyIDcuNDIgMCAwMDYuNDMgMy43MU00MC42MSA1NEwyMi41MiA0My41NmE3LjQzIDcuNDMgMCAxMC03LjQzIDEyLjg2bDE4LjEgMTAuNDVBNy40MyA3LjQzIDAgMDA0MC42MiA1NE0zNS43MyA5Mi41NGMwLTQuMS0zLjMyLTcuNDMtNy40Mi03LjQzSDcuNGE3LjQzIDcuNDMgMCAwMDAgMTQuODVoMjAuOWM0LjEgMCA3LjQyLTMuMzIgNy40Mi03LjQyTTQwLjYxIDEzMS4wN2E3LjQzIDcuNDMgMCAxMC03LjQyLTEyLjg2bC0xOC4xIDEwLjQ0YTcuNDMgNy40MyAwIDEwNy40MyAxMi44N2wxOC4xLTEwLjQ1TTEyMC45IDQzLjM2YTcuNDIgNy40MiAwIDAwMTAuMTUtMi43MmwxMC40My0xOC4wOWE3LjQzIDcuNDMgMCAwMC0xMi44Ni03LjQybC0xMC40NSAxOC4xYTcuNDMgNy40MyAwIDAwMi43MiAxMC4xMyIvPjwvZz48ZyBmaWxsPSIjNjFjOWU3Ij48cGF0aCBkPSJNMTk0LjQxIDI5MC41OWE3LjQxIDcuNDEgMCAwMDcuMS05LjZsLTguOTQtMjkuMThhNy40MyA3LjQzIDAgMDAtMTQuMiA0LjM1bDguOTQgMjkuMTdhNy40MyA3LjQzIDAgMDA3LjEgNS4yNk0xMzIuNyAyODkuMzlhNy40MSA3LjQxIDAgMDA3LjEtOS42bC04Ljk1LTI5LjE4YTcuNDMgNy40MyAwIDAwLTE0LjIgNC4zNWw4Ljk0IDI5LjE3YTcuNDMgNy40MyAwIDAwNy4xIDUuMjZNMjgwLjE3IDI2MS42YTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45NC0yOS4xOGE3LjQzIDcuNDMgMCAxMC0xNC4yIDQuMzVsOC45NCAyOS4xOGE3LjQzIDcuNDMgMCAwMDcuMSA1LjI1TTI1NC44NiAyODguNDFhNy40MSA3LjQxIDAgMDA3LjEtOS42bC04Ljk0LTI5LjE4YTcuNDMgNy40MyAwIDAwLTE0LjIgNC4zNWw4Ljk0IDI5LjE4YTcuNDMgNy40MyAwIDAwNy4xIDUuMjUiLz48L2c+PC9zdmc+"},14593:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzA3LjE5IiBoZWlnaHQ9IjI5MS4zMyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNTUuNTcgOTIuNTRjMCA5LjI3IDMuNDMgMTguMDIgOS41NCAyNC43NmE2Mi4zNiA2Mi4zNiAwIDAxMjEuMjItMTAuMzggNzUuNzIgNzUuNzIgMCAwMTI1LjYxLTQ1LjggMzYuOTcgMzYuOTcgMCAwMC01Ni4zNyAzMS40IiBmaWxsPSIjZGVjNjBmIi8+PGcgZmlsbD0iIzYxYzllNyI+PHBhdGggZD0iTTI4OC42IDEyOS4zYTcuNDIgNy40MiAwIDAxLTIuNjMtMy44NUE1NS41IDU1LjUgMCAwMDIzMi45IDg1LjZjLTQuNSAwLTkgLjU0LTEzLjM0IDEuNjItMyAuNzUtNi4xNS0uNDUtNy45LTNhNjEuMSA2MS4xIDAgMDAtNTAuMzMtMjYuNDggNjAuODkgNjAuODkgMCAwMC00MS4xOCAxNS45OCA2MC44OCA2MC44OCAwIDAwLTE5LjYgMzkuMTkgNy40MiA3LjQyIDAgMDEtNC4yIDZjLS43My4zNS0xLjQ3LjczLTIuMiAxLjEzLS42Mi4zNC0xLjI5LjYtMS45OC43NWE0Ny40OCA0Ny40OCAwIDAwLTI2LjM1IDE2LjMgNDYuMjkgNDYuMjkgMCAwMC0xMC41MSAyOS41NWMwIDI1LjkyIDIxLjIgNDcgNDcuMjcgNDdIMjU5LjljMjYuMDYgMCA0Ny4yNi0yMS4wOCA0Ny4yNi00N2E0Ni42IDQ2LjYgMCAwMC0xOC41Ni0zNy4zM00xMjMuNTIgMjkxLjMzYTcuNDEgNy40MSAwIDAwNy4xLTkuNmwtOC45NC0yOS4xOGE3LjQzIDcuNDMgMCAwMC0xNC4yIDQuMzVsOC45NCAyOS4xOGE3LjQzIDcuNDMgMCAwMDcuMSA1LjI1TTE4NS43IDI5MS4zM2E3LjQzIDcuNDMgMCAwMDcuMS05LjZsLTguOTMtMjkuMThhNy40MyA3LjQzIDAgMDAtMTQuMiA0LjM1bDguOTQgMjkuMThhNy40MyA3LjQzIDAgMDA3LjEgNS4yNU0yNDcuODkgMjkxLjMzYTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45NC0yOS4xOGE3LjQzIDcuNDMgMCAxMC0xNC4yIDQuMzVsOC45NCAyOS4xOGE3LjQzIDcuNDMgMCAwMDcuMSA1LjI1Ii8+PC9nPjxnIGZpbGw9IiNkZWM2MGYiPjxwYXRoIGQ9Ik04NS4wOCA3LjQ1djIwLjg5YTcuNDMgNy40MyAwIDAwMTQuODUgMFY3LjQ0YTcuNDMgNy40MyAwIDEwLTE0Ljg1IDBNNjAuNDEgNDQuMzZhNy40MyA3LjQzIDAgMDA2LjQyLTExLjE0TDU2LjQgMTUuMTJhNy40MyA3LjQzIDAgMDAtMTIuODYgNy40NGwxMC40NSAxOC4wOWE3LjQyIDcuNDIgMCAwMDYuNDMgMy43MU00MC42MSA1NEwyMi41MiA0My41NmE3LjQzIDcuNDMgMCAxMC03LjQzIDEyLjg2bDE4LjEgMTAuNDVBNy40MyA3LjQzIDAgMDA0MC42MiA1NE0zNS43MyA5Mi41NGMwLTQuMS0zLjMyLTcuNDMtNy40Mi03LjQzSDcuNGE3LjQzIDcuNDMgMCAwMDAgMTQuODVoMjAuOWM0LjEgMCA3LjQyLTMuMzIgNy40Mi03LjQyTTQwLjYxIDEzMS4wN2E3LjQzIDcuNDMgMCAxMC03LjQyLTEyLjg2bC0xOC4xIDEwLjQ0YTcuNDMgNy40MyAwIDEwNy40MyAxMi44N2wxOC4xLTEwLjQ1TTEyMC45IDQzLjM2YTcuNDIgNy40MiAwIDAwMTAuMTUtMi43MmwxMC40My0xOC4wOWE3LjQzIDcuNDMgMCAwMC0xMi44Ni03LjQybC0xMC40NSAxOC4xYTcuNDMgNy40MyAwIDAwMi43MiAxMC4xMyIvPjwvZz48L3N2Zz4="},97251:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzA3LjE5IiBoZWlnaHQ9IjI5MS4zMyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNTUuNTcgOTIuNTRjMCA5LjI3IDMuNDMgMTguMDIgOS41NCAyNC43NmE2Mi4zNiA2Mi4zNiAwIDAxMjEuMjItMTAuMzggNzUuNzIgNzUuNzIgMCAwMTI1LjYxLTQ1LjggMzYuOTcgMzYuOTcgMCAwMC01Ni4zNyAzMS40IiBmaWxsPSIjZGVjNjBmIi8+PGcgZmlsbD0iIzYxYzllNyI+PHBhdGggZD0iTTI4OC42IDEyOS4zYTcuNDIgNy40MiAwIDAxLTIuNjMtMy44NUE1NS41IDU1LjUgMCAwMDIzMi45IDg1LjZjLTQuNSAwLTkgLjU0LTEzLjM0IDEuNjItMyAuNzUtNi4xNS0uNDUtNy45LTNhNjEuMSA2MS4xIDAgMDAtNTAuMzMtMjYuNDggNjAuODkgNjAuODkgMCAwMC00MS4xOCAxNS45OCA2MC44OCA2MC44OCAwIDAwLTE5LjYgMzkuMTkgNy40MiA3LjQyIDAgMDEtNC4yIDZjLS43My4zNS0xLjQ3LjczLTIuMiAxLjEzLS42Mi4zNC0xLjI5LjYtMS45OC43NWE0Ny40OCA0Ny40OCAwIDAwLTI2LjM1IDE2LjMgNDYuMjkgNDYuMjkgMCAwMC0xMC41MSAyOS41NWMwIDI1LjkyIDIxLjIgNDcgNDcuMjcgNDdIMjU5LjljMjYuMDYgMCA0Ny4yNi0yMS4wOCA0Ny4yNi00N2E0Ni42IDQ2LjYgMCAwMC0xOC41Ni0zNy4zM00xMTYuOTIgMjY0Ljk3YTcuNDEgNy40MSAwIDAwNy4xLTkuNmwtOC45NC0yOS4xOGE3LjQzIDcuNDMgMCAwMC0xNC4yIDQuMzVsOC45NCAyOS4xOGE3LjQzIDcuNDMgMCAwMDcuMSA1LjI1TTE3OS4xIDI2NC45N2E3LjQzIDcuNDMgMCAwMDcuMS05LjZsLTguOTMtMjkuMThhNy40MyA3LjQzIDAgMDAtMTQuMiA0LjM1bDguOTQgMjkuMThhNy40MyA3LjQzIDAgMDA3LjEgNS4yNU0yNDEuMjkgMjY0Ljk3YTcuNDMgNy40MyAwIDAwNy4xLTkuNmwtOC45NC0yOS4xOGE3LjQzIDcuNDMgMCAxMC0xNC4yIDQuMzVsOC45NCAyOS4xOGE3LjQzIDcuNDMgMCAwMDcuMSA1LjI1Ii8+PC9nPjxnIGZpbGw9IiNkZWM2MGYiPjxwYXRoIGQ9Ik04NS4wOCA3LjQ1djIwLjg5YTcuNDMgNy40MyAwIDAwMTQuODUgMFY3LjQ0YTcuNDMgNy40MyAwIDEwLTE0Ljg1IDBNNjAuNDEgNDQuMzZhNy40MyA3LjQzIDAgMDA2LjQyLTExLjE0TDU2LjQgMTUuMTJhNy40MyA3LjQzIDAgMDAtMTIuODYgNy40NGwxMC40NSAxOC4wOWE3LjQyIDcuNDIgMCAwMDYuNDMgMy43MU00MC42MSA1NEwyMi41MiA0My41NmE3LjQzIDcuNDMgMCAxMC03LjQzIDEyLjg2bDE4LjEgMTAuNDVBNy40MyA3LjQzIDAgMDA0MC42MiA1NE0zNS43MyA5Mi41NGMwLTQuMS0zLjMyLTcuNDMtNy40Mi03LjQzSDcuNGE3LjQzIDcuNDMgMCAwMDAgMTQuODVoMjAuOWM0LjEgMCA3LjQyLTMuMzIgNy40Mi03LjQyTTQwLjYxIDEzMS4wN2E3LjQzIDcuNDMgMCAxMC03LjQyLTEyLjg2bC0xOC4xIDEwLjQ0YTcuNDMgNy40MyAwIDEwNy40MyAxMi44N2wxOC4xLTEwLjQ1TTEyMC45IDQzLjM2YTcuNDIgNy40MiAwIDAwMTAuMTUtMi43MmwxMC40My0xOC4wOWE3LjQzIDcuNDMgMCAwMC0xMi44Ni03LjQybC0xMC40NSAxOC4xYTcuNDMgNy40MyAwIDAwMi43MiAxMC4xMyIvPjwvZz48cGF0aCBkPSJNMjE1Ljk4IDI5MS43OWE3LjQxIDcuNDEgMCAwMDcuMS05LjZMMjE0LjE1IDI1M2E3LjQzIDcuNDMgMCAwMC0xNC4yIDQuMzVsOC45NSAyOS4xN2E3LjQzIDcuNDMgMCAwMDcuMSA1LjI2TTE1NC4yNyAyOTAuNTlhNy40MSA3LjQxIDAgMDA3LjEtOS42bC04Ljk0LTI5LjE4YTcuNDMgNy40MyAwIDAwLTE0LjIgNC4zNWw4Ljk0IDI5LjE3YTcuNDMgNy40MyAwIDAwNy4xIDUuMjYiIGZpbGw9IiM2MWM5ZTciLz48L3N2Zz4="},16767:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzA3LjE5IiBoZWlnaHQ9IjIxMy42MSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjg4LjYgMTI5LjM3YTcuMzggNy4zOCAwIDAxLTIuNjMtMy44NCA1NS41MSA1NS41MSAwIDAwLTUzLjA4LTM5Ljg3Yy00LjUgMC05IC41NS0xMy4zNCAxLjYzLTMgLjc1LTYuMTUtLjQ1LTcuOS0zYTYxLjEgNjEuMSAwIDAwLTkxLjUxLTEwLjUgNjAuODkgNjAuODkgMCAwMC0xOS42IDM5LjIgNy40NCA3LjQ0IDAgMDEtNC4yIDZjLS43My4zNC0xLjQ3LjcxLTIuMiAxLjExLS42Mi4zNS0xLjI5LjYtMS45OC43NWE0Ny41NCA0Ny41NCAwIDAwLTI2LjM1IDE2LjMgNDYuMzMgNDYuMzMgMCAwMC0xMC41MSAyOS41NmMwIDI1LjkyIDIxLjIgNDcgNDcuMjcgNDdIMjU5LjljMjYuMDYgMCA0Ny4yNi0yMS4wOCA0Ny4yNi00N2E0Ni42MyA0Ni42MyAwIDAwLTE4LjU2LTM3LjM0IiBmaWxsPSIjNjFjOWU3Ii8+PGcgZmlsbD0iI2RlYzYwZiI+PHBhdGggZD0iTTU1LjU3IDkyLjU3YTM2LjcgMzYuNyAwIDAwOS41NCAyNC43NiA2Mi4zNiA2Mi4zNiAwIDAxMjEuMjItMTAuMzkgNzUuNjggNzUuNjggMCAwMTI1LjYxLTQ1Ljc4IDM2Ljk3IDM2Ljk3IDAgMDAtNTYuMzcgMzEuNDFNOTIuNSAzNS43N2M0LjEgMCA3LjQzLTMuMzMgNy40My03LjQzVjcuNDVhNy40MiA3LjQyIDAgMTAtMTQuODUgMHYyMC45YzAgNC4wOSAzLjMzIDcuNDIgNy40MyA3LjQyTTUzLjk3IDQwLjdhNy40MiA3LjQyIDAgMTAxMi44Ny03LjQybC0xMC40NS0xOC4xYTcuNDMgNy40MyAwIDAwLTEyLjg2IDcuNDNsMTAuNDQgMTguMU0xNS4xIDU2LjQ0bDE4LjA5IDEwLjQ1YTcuNDcgNy40NyAwIDAwMTAuMTQtMi43MiA3LjQzIDcuNDMgMCAwMC0yLjcxLTEwLjE1bC0xOC4xLTEwLjQ1YTcuNDMgNy40MyAwIDAwLTcuNDMgMTIuODdNNy40MiAxMDAuMDRIMjguM2E3LjQzIDcuNDMgMCAwMDAtMTQuODZINy40MWE3LjQyIDcuNDIgMCAxMDAgMTQuODZNNDMuMzMgMTIwLjk3YTcuNDIgNy40MiAwIDAwLTEwLjE0LTIuNzJsLTE4LjEgMTAuNDRhNy40MyA3LjQzIDAgMDA3LjQzIDEyLjg2bDE4LjEtMTAuNDRhNy40MyA3LjQzIDAgMDAyLjcxLTEwLjE0TTEyMC45IDQzLjM3YTcuNDIgNy40MiAwIDAwMTAuMTUtMi43MmwxMC40My0xOC4xYTcuNDMgNy40MyAwIDAwLTEyLjg2LTcuNDJsLTEwLjQ1IDE4LjFhNy40MyA3LjQzIDAgMDAyLjcyIDEwLjE0Ii8+PC9nPjwvc3ZnPg=="},74351:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgwLjUiIGhlaWdodD0iMjgwLjUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTI1NyAyMTkuNzRhNC4zIDQuMyAwIDAxLTEuNTMtMi4yNCAzMi4zOCAzMi4zOCAwIDAwLTMwLjk2LTIzLjI2Yy0yLjYzIDAtNS4yNS4zMi03Ljc4Ljk1YTQuMzMgNC4zMyAwIDAxLTQuNjEtMS43NSAzNS42MyAzNS42MyAwIDAwLTUzLjM4LTYuMTMgMzUuNTIgMzUuNTIgMCAwMC0xMS40MyAyMi44NyA0LjM0IDQuMzQgMCAwMS0yLjQ1IDMuNWMtLjQyLjItLjg2LjQyLTEuMjguNjUtLjM2LjItLjc1LjM1LTEuMTUuNDRhMjcuNzMgMjcuNzMgMCAwMC0xNS4zNyA5LjUgMjcuMDMgMjcuMDMgMCAwMC02LjEzIDE3LjI1IDI3LjUyIDI3LjUyIDAgMDAyNy41NiAyNy40aDkxLjc3YzE1LjIgMCAyNy41Ny0xMi4yOSAyNy41Ny0yNy40YTI3LjIgMjcuMiAwIDAwLTEwLjgyLTIxLjc4IiBmaWxsPSIjNjFjOWU3IiBwYWludC1vcmRlcj0ic3Ryb2tlIGZpbGwgbWFya2VycyIvPjxnIGZpbGw9IiNkZWM2MGYiPjxwYXRoIGQ9Ik0xNDAuMiA3MC43M0E2OS44NiA2OS44NiAwIDAwNzAuNCAxNDAuNWMwIDMzLjMzIDIzLjUgNjEuMjcgNTQuOCA2OC4xNGE0MC42IDQwLjYgMCAwMTEwLjAzLTUuMSA0OC42MSA0OC42MSAwIDAxMTQuNy0yNS41OGguMDFhNDguNTkgNDguNTkgMCAwMTUzLjUtOC4wNSA2OS4zNSA2OS4zNSAwIDAwNi41Mi0yOS40MSA2OS44NiA2OS44NiAwIDAwLTY5Ljc4LTY5Ljc4em0tLjkgMTMxLjQ0bC0uMS4wNC0uMDQuMDMuMTMtLjA3ek0xMzIuOCAzOC45YTcuNDMgNy40MyAwIDAwMTQuODUgMFY3LjQ0YTcuNDMgNy40MyAwIDAwLTE0Ljg1IDBWMzguOU04OS41NCA1OS45MWE3LjQzIDcuNDMgMCAwMDYuNDMtMTEuMTRMODAuMjQgMjEuNTNhNy40MyA3LjQzIDAgMDAtMTIuODYgNy40M0w4My4xIDU2LjJhNy40MiA3LjQyIDAgMDA2LjQzIDMuNzFNMTguNzYgNzAuMTRhNy40MyA3LjQzIDAgMDAyLjcyIDEwLjE1TDQ4LjcyIDk2YTcuNDIgNy40MiAwIDEwNy40My0xMi44NkwyOC45IDY3LjQyYTcuNDMgNy40MyAwIDAwLTEwLjE0IDIuNzJNNDYuMjggMTQwLjI3YzAtNC4xLTMuMzMtNy40Mi03LjQzLTcuNDJINy40YTcuNDMgNy40MyAwIDAwMCAxNC44NWgzMS40NmM0LjEgMCA3LjQzLTMuMzMgNy40My03LjQzTTI3My4wNSAxMzIuODVoLTMxLjQ2YTcuNDMgNy40MyAwIDAwMCAxNC44NWgzMS40NmE3LjQzIDcuNDMgMCAwMDAtMTQuODVNNDguNzMgMTg0LjUxTDIxLjUgMjAwLjI0YTcuNDMgNy40MyAwIDEwNy40MiAxMi44NmwyNy4yNS0xNS43M2E3LjQzIDcuNDMgMCAwMC03LjQzLTEyLjg2TTI1MS41NCA2Ny40MkwyMjQuMyA4My4xNUE3LjQzIDcuNDMgMCAwMDIzMS43MiA5NmwyNy4yNC0xNS43M2E3LjQzIDcuNDMgMCAwMC03LjQyLTEyLjg2TTgzLjEgMjI0LjM0bC0xNS43MyAyNy4yNGE3LjQzIDcuNDMgMCAwMDEyLjg3IDcuNDNsMTUuNzMtMjcuMjVhNy40MyA3LjQzIDAgMDAtMTIuODctNy40Mk0xODcuMiA1OC45MWE3LjQgNy40IDAgMDAxMC4xNC0yLjcxbDE1LjczLTI3LjI1YTcuNDMgNy40MyAwIDEwLTEyLjg2LTcuNDJsLTE1LjczIDI3LjI0YTcuNDMgNy40MyAwIDAwMi43MSAxMC4xNCIvPjwvZz48L3N2Zz4="},71211:function(M){"use strict";M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgwLjUiIGhlaWdodD0iMjgwLjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjZGVjNjBmIj48cGF0aCBkPSJNMTQwLjIyIDIxMC4wNGMzOC40OCAwIDY5Ljc4LTMxLjMgNjkuNzgtNjkuNzhzLTMxLjMtNjkuNzgtNjkuNzgtNjkuNzhjLTM4LjQ3IDAtNjkuNzggMzEuMy02OS43OCA2OS43OHMzMS4zIDY5Ljc4IDY5Ljc4IDY5Ljc4TTEzMi44IDM4LjlhNy40MyA3LjQzIDAgMDAxNC44NSAwVjcuNDRhNy40MyA3LjQzIDAgMDAtMTQuODUgMFYzOC45TTEzMi44IDI0MS42M3YzMS40NmE3LjQzIDcuNDMgMCAwMDE0Ljg1IDB2LTMxLjQ2YTcuNDMgNy40MyAwIDAwLTE0Ljg1IDBNODkuNTQgNTkuOTFhNy40MyA3LjQzIDAgMDA2LjQzLTExLjE0TDgwLjI0IDIxLjUzYTcuNDMgNy40MyAwIDAwLTEyLjg2IDcuNDNMODMuMSA1Ni4yYTcuNDIgNy40MiAwIDAwNi40MyAzLjcxTTE4Ny4yIDIyMS42MmE3LjQzIDcuNDMgMCAwMC0yLjcyIDEwLjE0TDIwMC4yIDI1OWE3LjQyIDcuNDIgMCAxMDEyLjg2LTcuNDJsLTE1LjczLTI3LjI1YTcuNDMgNy40MyAwIDAwLTEwLjE1LTIuNzFNMTguNzYgNzAuMTRhNy40MyA3LjQzIDAgMDAyLjcyIDEwLjE1TDQ4LjcyIDk2YTcuNDIgNy40MiAwIDEwNy40My0xMi44NkwyOC45IDY3LjQyYTcuNDMgNy40MyAwIDAwLTEwLjE0IDIuNzJNMjU4Ljk3IDIwMC4yNGwtMjcuMjUtMTUuNzNhNy40MyA3LjQzIDAgMDAtNy40MiAxMi44N2wyNy4yNCAxNS43M2E3LjQgNy40IDAgMDAxMC4xNC0yLjcyIDcuNDMgNy40MyAwIDAwLTIuNzEtMTAuMTVNNDYuMjggMTQwLjI3YzAtNC4xLTMuMzMtNy40Mi03LjQzLTcuNDJINy40YTcuNDMgNy40MyAwIDAwMCAxNC44NWgzMS40NmM0LjEgMCA3LjQzLTMuMzMgNy40My03LjQzTTI3My4wNSAxMzIuODVoLTMxLjQ2YTcuNDMgNy40MyAwIDAwMCAxNC44NWgzMS40NmE3LjQzIDcuNDMgMCAwMDAtMTQuODVNNDguNzMgMTg0LjUxTDIxLjUgMjAwLjI0YTcuNDMgNy40MyAwIDEwNy40MiAxMi44NmwyNy4yNS0xNS43M2E3LjQzIDcuNDMgMCAwMC03LjQzLTEyLjg2TTI1MS41NCA2Ny40MkwyMjQuMyA4My4xNUE3LjQzIDcuNDMgMCAwMDIzMS43MiA5NmwyNy4yNC0xNS43M2E3LjQzIDcuNDMgMCAwMC03LjQyLTEyLjg2TTgzLjEgMjI0LjM0bC0xNS43MyAyNy4yNGE3LjQzIDcuNDMgMCAwMDEyLjg3IDcuNDNsMTUuNzMtMjcuMjVhNy40MyA3LjQzIDAgMDAtMTIuODctNy40Mk0xODcuMiA1OC45MWE3LjQgNy40IDAgMDAxMC4xNC0yLjcxbDE1LjczLTI3LjI1YTcuNDMgNy40MyAwIDEwLTEyLjg2LTcuNDJsLTE1LjczIDI3LjI0YTcuNDMgNy40MyAwIDAwMi43MSAxMC4xNCIgZmlsbD0iI2RlYzYwZiIvPjwvZz48L3N2Zz4K"}},u={};function e(M){var t=u[M];if(void 0!==t)return t.exports;var N=u[M]={id:M,loaded:!1,exports:{}};return n[M].call(N.exports,N,N.exports,e),N.loaded=!0,N.exports}e.m=n,e.amdD=function(){throw new Error("define cannot be used indirect")},e.amdO={},M=[],e.O=function(t,n,u,N){if(!n){var A=1/0;for(r=0;r<M.length;r++){n=M[r][0],u=M[r][1],N=M[r][2];for(var j=!0,i=0;i<n.length;i++)(!1&N||A>=N)&&Object.keys(e.O).every((function(M){return e.O[M](n[i])}))?n.splice(i--,1):(j=!1,N<A&&(A=N));if(j){M.splice(r--,1);var D=u();void 0!==D&&(t=D)}}return t}N=N||0;for(var r=M.length;r>0&&M[r-1][2]>N;r--)M[r]=M[r-1];M[r]=[n,u,N]},e.n=function(M){var t=M&&M.__esModule?function(){return M.default}:function(){return M};return e.d(t,{a:t}),t},e.d=function(M,t){for(var n in t)e.o(t,n)&&!e.o(M,n)&&Object.defineProperty(M,n,{enumerable:!0,get:t[n]})},e.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(M){if("object"==typeof window)return window}}(),e.o=function(M,t){return Object.prototype.hasOwnProperty.call(M,t)},e.r=function(M){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(M,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(M,"__esModule",{value:!0})},e.nmd=function(M){return M.paths=[],M.children||(M.children=[]),M},e.j=5275,function(){e.b=document.baseURI||self.location.href;var M={5275:0};e.O.j=function(t){return 0===M[t]};var t=function(t,n){var u,N,A=n[0],j=n[1],i=n[2],D=0;if(A.some((function(t){return 0!==M[t]}))){for(u in j)e.o(j,u)&&(e.m[u]=j[u]);if(i)var r=i(e)}for(t&&t(n);D<A.length;D++)N=A[D],e.o(M,N)&&M[N]&&M[N][0](),M[N]=0;return e.O(r)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))}(),e.nc=void 0;var N=e.O(void 0,[7874],(function(){return e(76149)}));N=e.O(N)}();
+//# sourceMappingURL=weather_status-weather-status.js.map?v=b7e1ad0a5bdf2e2e2dfe \ No newline at end of file
diff --git a/dist/weather_status-weather-status.js.map b/dist/weather_status-weather-status.js.map
index 40a740621a3..1cd719db937 100644
--- a/dist/weather_status-weather-status.js.map
+++ b/dist/weather_status-weather-status.js.map
@@ -1 +1 @@
-{"version":3,"file":"weather_status-weather-status.js?v=6ddfba4a1a98da231004","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/node_modules/@nextcloud/moment/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/apps/weather_status/src/services/weatherStatusService.js","webpack:///nextcloud/apps/weather_status/src/App.vue","webpack:///nextcloud/apps/weather_status/src/App.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/weather_status/src/App.vue?aa30","webpack://nextcloud/./apps/weather_status/src/App.vue?02d4","webpack:///nextcloud/apps/weather_status/src/App.vue?vue&type=template&id=6acc2acd&","webpack:///nextcloud/apps/weather_status/src/weather-status.js","webpack:///nextcloud/apps/weather_status/src/App.vue?vue&type=style&index=0&lang=scss&","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};","var map = {\n\t\"./af\": 36026,\n\t\"./af.js\": 36026,\n\t\"./ar\": 28093,\n\t\"./ar-dz\": 41943,\n\t\"./ar-dz.js\": 41943,\n\t\"./ar-kw\": 23969,\n\t\"./ar-kw.js\": 23969,\n\t\"./ar-ly\": 40594,\n\t\"./ar-ly.js\": 40594,\n\t\"./ar-ma\": 18369,\n\t\"./ar-ma.js\": 18369,\n\t\"./ar-sa\": 32579,\n\t\"./ar-sa.js\": 32579,\n\t\"./ar-tn\": 76442,\n\t\"./ar-tn.js\": 76442,\n\t\"./ar.js\": 28093,\n\t\"./az\": 86425,\n\t\"./az.js\": 86425,\n\t\"./be\": 22004,\n\t\"./be.js\": 22004,\n\t\"./bg\": 42982,\n\t\"./bg.js\": 42982,\n\t\"./bm\": 21067,\n\t\"./bm.js\": 21067,\n\t\"./bn\": 8366,\n\t\"./bn-bd\": 63837,\n\t\"./bn-bd.js\": 63837,\n\t\"./bn.js\": 8366,\n\t\"./bo\": 95040,\n\t\"./bo.js\": 95040,\n\t\"./br\": 521,\n\t\"./br.js\": 521,\n\t\"./bs\": 83242,\n\t\"./bs.js\": 83242,\n\t\"./ca\": 73046,\n\t\"./ca.js\": 73046,\n\t\"./cs\": 25794,\n\t\"./cs.js\": 25794,\n\t\"./cv\": 28231,\n\t\"./cv.js\": 28231,\n\t\"./cy\": 10927,\n\t\"./cy.js\": 10927,\n\t\"./da\": 42832,\n\t\"./da.js\": 42832,\n\t\"./de\": 29415,\n\t\"./de-at\": 3331,\n\t\"./de-at.js\": 3331,\n\t\"./de-ch\": 45524,\n\t\"./de-ch.js\": 45524,\n\t\"./de.js\": 29415,\n\t\"./dv\": 44700,\n\t\"./dv.js\": 44700,\n\t\"./el\": 88752,\n\t\"./el.js\": 88752,\n\t\"./en-au\": 90444,\n\t\"./en-au.js\": 90444,\n\t\"./en-ca\": 65959,\n\t\"./en-ca.js\": 65959,\n\t\"./en-gb\": 62762,\n\t\"./en-gb.js\": 62762,\n\t\"./en-ie\": 40909,\n\t\"./en-ie.js\": 40909,\n\t\"./en-il\": 79909,\n\t\"./en-il.js\": 79909,\n\t\"./en-in\": 87942,\n\t\"./en-in.js\": 87942,\n\t\"./en-nz\": 75200,\n\t\"./en-nz.js\": 75200,\n\t\"./en-sg\": 21415,\n\t\"./en-sg.js\": 21415,\n\t\"./eo\": 27447,\n\t\"./eo.js\": 27447,\n\t\"./es\": 86756,\n\t\"./es-do\": 47049,\n\t\"./es-do.js\": 47049,\n\t\"./es-mx\": 15915,\n\t\"./es-mx.js\": 15915,\n\t\"./es-us\": 57133,\n\t\"./es-us.js\": 57133,\n\t\"./es.js\": 86756,\n\t\"./et\": 72182,\n\t\"./et.js\": 72182,\n\t\"./eu\": 14419,\n\t\"./eu.js\": 14419,\n\t\"./fa\": 2916,\n\t\"./fa.js\": 2916,\n\t\"./fi\": 49964,\n\t\"./fi.js\": 49964,\n\t\"./fil\": 16448,\n\t\"./fil.js\": 16448,\n\t\"./fo\": 26094,\n\t\"./fo.js\": 26094,\n\t\"./fr\": 35833,\n\t\"./fr-ca\": 56994,\n\t\"./fr-ca.js\": 56994,\n\t\"./fr-ch\": 2740,\n\t\"./fr-ch.js\": 2740,\n\t\"./fr.js\": 35833,\n\t\"./fy\": 69542,\n\t\"./fy.js\": 69542,\n\t\"./ga\": 93264,\n\t\"./ga.js\": 93264,\n\t\"./gd\": 77457,\n\t\"./gd.js\": 77457,\n\t\"./gl\": 83043,\n\t\"./gl.js\": 83043,\n\t\"./gom-deva\": 24034,\n\t\"./gom-deva.js\": 24034,\n\t\"./gom-latn\": 28379,\n\t\"./gom-latn.js\": 28379,\n\t\"./gu\": 406,\n\t\"./gu.js\": 406,\n\t\"./he\": 73219,\n\t\"./he.js\": 73219,\n\t\"./hi\": 99834,\n\t\"./hi.js\": 99834,\n\t\"./hr\": 28754,\n\t\"./hr.js\": 28754,\n\t\"./hu\": 93945,\n\t\"./hu.js\": 93945,\n\t\"./hy-am\": 81319,\n\t\"./hy-am.js\": 81319,\n\t\"./id\": 24875,\n\t\"./id.js\": 24875,\n\t\"./is\": 23724,\n\t\"./is.js\": 23724,\n\t\"./it\": 79906,\n\t\"./it-ch\": 34303,\n\t\"./it-ch.js\": 34303,\n\t\"./it.js\": 79906,\n\t\"./ja\": 77105,\n\t\"./ja.js\": 77105,\n\t\"./jv\": 15026,\n\t\"./jv.js\": 15026,\n\t\"./ka\": 67416,\n\t\"./ka.js\": 67416,\n\t\"./kk\": 79734,\n\t\"./kk.js\": 79734,\n\t\"./km\": 60757,\n\t\"./km.js\": 60757,\n\t\"./kn\": 58369,\n\t\"./kn.js\": 58369,\n\t\"./ko\": 77687,\n\t\"./ko.js\": 77687,\n\t\"./ku\": 95544,\n\t\"./ku.js\": 95544,\n\t\"./ky\": 85431,\n\t\"./ky.js\": 85431,\n\t\"./lb\": 13613,\n\t\"./lb.js\": 13613,\n\t\"./lo\": 34252,\n\t\"./lo.js\": 34252,\n\t\"./lt\": 84619,\n\t\"./lt.js\": 84619,\n\t\"./lv\": 93760,\n\t\"./lv.js\": 93760,\n\t\"./me\": 93393,\n\t\"./me.js\": 93393,\n\t\"./mi\": 12369,\n\t\"./mi.js\": 12369,\n\t\"./mk\": 48664,\n\t\"./mk.js\": 48664,\n\t\"./ml\": 23099,\n\t\"./ml.js\": 23099,\n\t\"./mn\": 98539,\n\t\"./mn.js\": 98539,\n\t\"./mr\": 778,\n\t\"./mr.js\": 778,\n\t\"./ms\": 39970,\n\t\"./ms-my\": 82625,\n\t\"./ms-my.js\": 82625,\n\t\"./ms.js\": 39970,\n\t\"./mt\": 15714,\n\t\"./mt.js\": 15714,\n\t\"./my\": 53055,\n\t\"./my.js\": 53055,\n\t\"./nb\": 73945,\n\t\"./nb.js\": 73945,\n\t\"./ne\": 63645,\n\t\"./ne.js\": 63645,\n\t\"./nl\": 4829,\n\t\"./nl-be\": 12823,\n\t\"./nl-be.js\": 12823,\n\t\"./nl.js\": 4829,\n\t\"./nn\": 23756,\n\t\"./nn.js\": 23756,\n\t\"./oc-lnc\": 41228,\n\t\"./oc-lnc.js\": 41228,\n\t\"./pa-in\": 97877,\n\t\"./pa-in.js\": 97877,\n\t\"./pl\": 53066,\n\t\"./pl.js\": 53066,\n\t\"./pt\": 28677,\n\t\"./pt-br\": 81592,\n\t\"./pt-br.js\": 81592,\n\t\"./pt.js\": 28677,\n\t\"./ro\": 32722,\n\t\"./ro.js\": 32722,\n\t\"./ru\": 59138,\n\t\"./ru.js\": 59138,\n\t\"./sd\": 32568,\n\t\"./sd.js\": 32568,\n\t\"./se\": 49753,\n\t\"./se.js\": 49753,\n\t\"./si\": 58024,\n\t\"./si.js\": 58024,\n\t\"./sk\": 31058,\n\t\"./sk.js\": 31058,\n\t\"./sl\": 43452,\n\t\"./sl.js\": 43452,\n\t\"./sq\": 2795,\n\t\"./sq.js\": 2795,\n\t\"./sr\": 26976,\n\t\"./sr-cyrl\": 38819,\n\t\"./sr-cyrl.js\": 38819,\n\t\"./sr.js\": 26976,\n\t\"./ss\": 7467,\n\t\"./ss.js\": 7467,\n\t\"./sv\": 42787,\n\t\"./sv.js\": 42787,\n\t\"./sw\": 80298,\n\t\"./sw.js\": 80298,\n\t\"./ta\": 57532,\n\t\"./ta.js\": 57532,\n\t\"./te\": 76076,\n\t\"./te.js\": 76076,\n\t\"./tet\": 40452,\n\t\"./tet.js\": 40452,\n\t\"./tg\": 64794,\n\t\"./tg.js\": 64794,\n\t\"./th\": 48245,\n\t\"./th.js\": 48245,\n\t\"./tk\": 8870,\n\t\"./tk.js\": 8870,\n\t\"./tl-ph\": 36056,\n\t\"./tl-ph.js\": 36056,\n\t\"./tlh\": 15249,\n\t\"./tlh.js\": 15249,\n\t\"./tr\": 22053,\n\t\"./tr.js\": 22053,\n\t\"./tzl\": 39871,\n\t\"./tzl.js\": 39871,\n\t\"./tzm\": 39574,\n\t\"./tzm-latn\": 19210,\n\t\"./tzm-latn.js\": 19210,\n\t\"./tzm.js\": 39574,\n\t\"./ug-cn\": 91532,\n\t\"./ug-cn.js\": 91532,\n\t\"./uk\": 11432,\n\t\"./uk.js\": 11432,\n\t\"./ur\": 88523,\n\t\"./ur.js\": 88523,\n\t\"./uz\": 54958,\n\t\"./uz-latn\": 68735,\n\t\"./uz-latn.js\": 68735,\n\t\"./uz.js\": 54958,\n\t\"./vi\": 83398,\n\t\"./vi.js\": 83398,\n\t\"./x-pseudo\": 56665,\n\t\"./x-pseudo.js\": 56665,\n\t\"./yo\": 11642,\n\t\"./yo.js\": 11642,\n\t\"./zh-cn\": 5462,\n\t\"./zh-cn.js\": 5462,\n\t\"./zh-hk\": 92530,\n\t\"./zh-hk.js\": 92530,\n\t\"./zh-mo\": 41650,\n\t\"./zh-mo.js\": 41650,\n\t\"./zh-tw\": 97333,\n\t\"./zh-tw.js\": 97333\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 93365;","/**\n * @copyright Copyright (c) 2020, Julien Veyssier\n *\n * @author Julien Veyssier <eneiluj@posteo.net>\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 */\n\nimport HttpClient from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n *\n *\n * @param {string} lat the latitude\n * @param {string} lon the longitude\n * @return {Promise<object>}\n */\nconst setLocation = async (lat, lon) => {\n\tconst url = generateOcsUrl('apps/weather_status/api/v1/location')\n\tconst response = await HttpClient.put(url, {\n\t\taddress: '',\n\t\tlat,\n\t\tlon,\n\t})\n\n\treturn response.data.ocs.data\n}\n\n/**\n *\n * @param {string} address The location\n * @return {Promise<object>}\n */\nconst setAddress = async (address) => {\n\tconst url = generateOcsUrl('apps/weather_status/api/v1/location')\n\tconst response = await HttpClient.put(url, {\n\t\taddress,\n\t\tlat: null,\n\t\tlon: null,\n\t})\n\n\treturn response.data.ocs.data\n}\n\n/**\n *\n * @param {string} mode can be 1 browser or 2 custom\n * @return {Promise<object>}\n */\nconst setMode = async (mode) => {\n\tconst url = generateOcsUrl('apps/weather_status/api/v1/mode')\n\tconst response = await HttpClient.put(url, {\n\t\tmode,\n\t})\n\n\treturn response.data.ocs.data\n}\n\n/**\n *\n * @return {Promise<object>}\n */\nconst usePersonalAddress = async () => {\n\tconst url = generateOcsUrl('apps/weather_status/api/v1/use-personal')\n\tconst response = await HttpClient.put(url)\n\n\treturn response.data.ocs.data\n}\n\n/**\n * Fetches the location information for current user\n *\n * @return {Promise<object>}\n */\nconst getLocation = async () => {\n\tconst url = generateOcsUrl('apps/weather_status/api/v1/location')\n\tconst response = await HttpClient.get(url)\n\n\treturn response.data.ocs.data\n}\n\n/**\n * Fetches the weather forecast\n *\n * @return {Promise<object>}\n */\nconst fetchForecast = async () => {\n\tconst url = generateOcsUrl('apps/weather_status/api/v1/forecast')\n\tconst response = await HttpClient.get(url)\n\n\treturn response.data.ocs.data\n}\n\n/**\n * Fetches the location favorites\n *\n * @return {Promise<object>}\n */\nconst getFavorites = async () => {\n\tconst url = generateOcsUrl('apps/weather_status/api/v1/favorites')\n\tconst response = await HttpClient.get(url)\n\n\treturn response.data.ocs.data\n}\n\n/**\n *\n * @param {Array} favorites List of favorite addresses\n * @return {Promise<object>}\n */\nconst saveFavorites = async (favorites) => {\n\tconst url = generateOcsUrl('apps/weather_status/api/v1/favorites')\n\tconst response = await HttpClient.put(url, {\n\t\tfavorites,\n\t})\n\n\treturn response.data.ocs.data\n}\n\nexport {\n\tusePersonalAddress,\n\tsetMode,\n\tgetLocation,\n\tsetLocation,\n\tsetAddress,\n\tfetchForecast,\n\tgetFavorites,\n\tsaveFavorites,\n}\n","<!--\n - @copyright Copyright (c) 2020 Julien Veyssier <eneiluj@posteo.net>\n - @author Julien Veyssier <eneiluj@posteo.net>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<li :class=\"{ inline }\">\n\t\t<div id=\"weather-status-menu-item\">\n\t\t\t<Actions class=\"weather-status-menu-item__subheader\"\n\t\t\t\t:default-icon=\"weatherIcon\"\n\t\t\t\t:menu-title=\"currentWeatherMessage\">\n\t\t\t\t<ActionText v-if=\"gotWeather\"\n\t\t\t\t\t:icon=\"futureWeatherIcon\">\n\t\t\t\t\t{{ forecastMessage }}\n\t\t\t\t</ActionText>\n\t\t\t\t<ActionLink v-if=\"gotWeather\"\n\t\t\t\t\ticon=\"icon-address\"\n\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t:href=\"weatherLinkTarget\"\n\t\t\t\t\t:close-after-click=\"true\">\n\t\t\t\t\t{{ locationText }}\n\t\t\t\t</ActionLink>\n\t\t\t\t<ActionButton v-if=\"gotWeather\"\n\t\t\t\t\t:icon=\"addRemoveFavoriteIcon\"\n\t\t\t\t\t@click=\"onAddRemoveFavoriteClick\">\n\t\t\t\t\t{{ addRemoveFavoriteText }}\n\t\t\t\t</ActionButton>\n\t\t\t\t<ActionSeparator v-if=\"address && !errorMessage\" />\n\t\t\t\t<ActionButton icon=\"icon-crosshair\"\n\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t@click=\"onBrowserLocationClick\">\n\t\t\t\t\t{{ t('weather_status', 'Detect location') }}\n\t\t\t\t</ActionButton>\n\t\t\t\t<ActionInput ref=\"addressInput\"\n\t\t\t\t\t:disabled=\"false\"\n\t\t\t\t\ticon=\"icon-rename\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tvalue=\"\"\n\t\t\t\t\t@submit=\"onAddressSubmit\">\n\t\t\t\t\t{{ t('weather_status', 'Set custom address') }}\n\t\t\t\t</ActionInput>\n\t\t\t\t<ActionButton v-show=\"favorites.length > 0\"\n\t\t\t\t\t:icon=\"toggleFavoritesIcon\"\n\t\t\t\t\t@click=\"showFavorites = !showFavorites\">\n\t\t\t\t\t{{ t('weather_status', 'Favorites') }}\n\t\t\t\t</ActionButton>\n\t\t\t\t<ActionButton v-for=\"f in displayedFavorites\"\n\t\t\t\t\t:key=\"f\"\n\t\t\t\t\ticon=\"icon-starred\"\n\t\t\t\t\t@click=\"onFavoriteClick($event, f)\">\n\t\t\t\t\t{{ f }}\n\t\t\t\t</ActionButton>\n\t\t\t</Actions>\n\t\t</div>\n\t</li>\n</template>\n\n<script>\nimport { showError } from '@nextcloud/dialogs'\nimport moment from '@nextcloud/moment'\nimport { getLocale } from '@nextcloud/l10n'\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport ActionInput from '@nextcloud/vue/dist/Components/ActionInput'\nimport ActionLink from '@nextcloud/vue/dist/Components/ActionLink'\nimport ActionSeparator from '@nextcloud/vue/dist/Components/ActionSeparator'\nimport ActionText from '@nextcloud/vue/dist/Components/ActionText'\nimport * as network from './services/weatherStatusService'\n\nconst MODE_BROWSER_LOCATION = 1\nconst MODE_MANUAL_LOCATION = 2\nconst weatherOptions = {\n\tclearsky_day: {\n\t\ticon: 'icon-clearsky-day',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} clear sky later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} clear sky', { temperature, unit }),\n\t},\n\tclearsky_night: {\n\t\ticon: 'icon-clearsky-night',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} clear sky later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} clear sky', { temperature, unit }),\n\t},\n\tcloudy: {\n\t\ticon: 'icon-cloudy',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} cloudy later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} cloudy', { temperature, unit }),\n\t},\n\tfair_day: {\n\t\ticon: 'icon-fair-day',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} fair weather later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} fair weather', { temperature, unit }),\n\t},\n\tfair_night: {\n\t\ticon: 'icon-fair-night',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} fair weather later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} fair weather', { temperature, unit }),\n\t},\n\tpartlycloudy_day: {\n\t\ticon: 'icon-partlycloudy-day',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} partly cloudy later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} partly cloudy', { temperature, unit }),\n\t},\n\tpartlycloudy_night: {\n\t\ticon: 'icon-partlycloudy-night',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} partly cloudy later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} partly cloudy', { temperature, unit }),\n\t},\n\tfog: {\n\t\ticon: 'icon-fog',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} foggy later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} foggy', { temperature, unit }),\n\t},\n\tlightrain: {\n\t\ticon: 'icon-lightrain',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} light rainfall later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} light rainfall', { temperature, unit }),\n\t},\n\train: {\n\t\ticon: 'icon-rain',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} rainfall later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} rainfall', { temperature, unit }),\n\t},\n\theavyrain: {\n\t\ticon: 'icon-heavyrain',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} heavy rainfall later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} heavy rainfall', { temperature, unit }),\n\t},\n\trainshowers_day: {\n\t\ticon: 'icon-rainshowers-day',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} rainfall showers later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} rainfall showers', { temperature, unit }),\n\t},\n\trainshowers_night: {\n\t\ticon: 'icon-rainshowers-night',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} rainfall showers later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} rainfall showers', { temperature, unit }),\n\t},\n\tlightrainshowers_day: {\n\t\ticon: 'icon-light-rainshowers-day',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} light rainfall showers later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} light rainfall showers', { temperature, unit }),\n\t},\n\tlightrainshowers_night: {\n\t\ticon: 'icon-light-rainshowers-night',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} light rainfall showers later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} light rainfall showers', { temperature, unit }),\n\t},\n\theavyrainshowers_day: {\n\t\ticon: 'icon-heavy-rainshowers-day',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} heavy rainfall showers later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} heavy rainfall showers', { temperature, unit }),\n\t},\n\theavyrainshowers_night: {\n\t\ticon: 'icon-heavy-rainshowers-night',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} heavy rainfall showers later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} heavy rainfall showers', { temperature, unit }),\n\t},\n}\n\nexport default {\n\tname: 'App',\n\tcomponents: {\n\t\tActions, ActionButton, ActionInput, ActionLink, ActionSeparator, ActionText,\n\t},\n\tprops: {\n\t\tinline: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tlocale: getLocale(),\n\t\t\tloading: true,\n\t\t\terrorMessage: '',\n\t\t\tmode: MODE_BROWSER_LOCATION,\n\t\t\taddress: null,\n\t\t\tlat: null,\n\t\t\tlon: null,\n\t\t\t// how many hours ahead do we want to see the forecast?\n\t\t\toffset: 5,\n\t\t\tforecasts: [],\n\t\t\tloop: null,\n\t\t\tfavorites: [],\n\t\t\tshowFavorites: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tuseFahrenheitLocale() {\n\t\t\treturn ['en_US', 'en_MH', 'en_FM', 'en_PW', 'en_KY', 'en_LR'].includes(this.locale)\n\t\t},\n\t\ttemperatureUnit() {\n\t\t\treturn this.useFahrenheitLocale ? '°F' : '°C'\n\t\t},\n\t\tlocationText() {\n\t\t\treturn t('weather_status', 'More weather for {adr}', { adr: this.address })\n\t\t},\n\t\ttemperature() {\n\t\t\treturn this.getTemperature(this.forecasts, 0)\n\t\t},\n\t\tfutureTemperature() {\n\t\t\treturn this.getTemperature(this.forecasts, this.offset)\n\t\t},\n\t\tweatherCode() {\n\t\t\treturn this.getWeatherCode(this.forecasts, 0)\n\t\t},\n\t\tfutureWeatherCode() {\n\t\t\treturn this.getWeatherCode(this.forecasts, this.offset)\n\t\t},\n\t\tweatherIcon() {\n\t\t\treturn this.getWeatherIcon(this.weatherCode, this.loading)\n\t\t},\n\t\tfutureWeatherIcon() {\n\t\t\treturn this.getWeatherIcon(this.futureWeatherCode, this.loading)\n\t\t},\n\t\t/**\n\t\t * The message displayed in the top right corner\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tcurrentWeatherMessage() {\n\t\t\tif (this.loading) {\n\t\t\t\treturn t('weather_status', 'Loading weather')\n\t\t\t} else if (this.errorMessage) {\n\t\t\t\treturn this.errorMessage\n\t\t\t} else {\n\t\t\t\treturn this.getWeatherMessage(this.weatherCode, this.temperature)\n\t\t\t}\n\t\t},\n\t\tforecastMessage() {\n\t\t\tif (this.loading) {\n\t\t\t\treturn t('weather_status', 'Loading weather')\n\t\t\t} else {\n\t\t\t\treturn this.getWeatherMessage(this.futureWeatherCode, this.futureTemperature, true)\n\t\t\t}\n\t\t},\n\t\tweatherLinkTarget() {\n\t\t\treturn 'https://www.windy.com/-Rain-thunder-rain?rain,' + this.lat + ',' + this.lon + ',11'\n\t\t},\n\t\tgotWeather() {\n\t\t\treturn this.address && !this.errorMessage\n\t\t},\n\t\taddRemoveFavoriteIcon() {\n\t\t\treturn this.currentAddressIsFavorite\n\t\t\t\t? 'icon-starred'\n\t\t\t\t: 'icon-star'\n\t\t},\n\t\taddRemoveFavoriteText() {\n\t\t\treturn this.currentAddressIsFavorite\n\t\t\t\t? t('weather_status', 'Remove from favorites')\n\t\t\t\t: t('weather_status', 'Add as favorite')\n\t\t},\n\t\tcurrentAddressIsFavorite() {\n\t\t\treturn this.favorites.find((f) => {\n\t\t\t\treturn f === this.address\n\t\t\t})\n\t\t},\n\t\ttoggleFavoritesIcon() {\n\t\t\treturn this.showFavorites\n\t\t\t\t? 'icon-triangle-s'\n\t\t\t\t: 'icon-triangle-e'\n\t\t},\n\t\tdisplayedFavorites() {\n\t\t\treturn this.showFavorites\n\t\t\t\t? this.favorites\n\t\t\t\t: []\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.initWeatherStatus()\n\t},\n\tmethods: {\n\t\tasync initWeatherStatus() {\n\t\t\ttry {\n\t\t\t\tconst loc = await network.getLocation()\n\t\t\t\tthis.lat = loc.lat\n\t\t\t\tthis.lon = loc.lon\n\t\t\t\tthis.address = loc.address\n\t\t\t\tthis.mode = loc.mode\n\n\t\t\t\tif (this.mode === MODE_BROWSER_LOCATION) {\n\t\t\t\t\tthis.askBrowserLocation()\n\t\t\t\t} else if (this.mode === MODE_MANUAL_LOCATION) {\n\t\t\t\t\tthis.startLoop()\n\t\t\t\t}\n\t\t\t\tconst favs = await network.getFavorites()\n\t\t\t\tthis.favorites = favs\n\t\t\t} catch (err) {\n\t\t\t\tif (err?.code === 'ECONNABORTED') {\n\t\t\t\t\tconsole.info('The weather status request was cancelled because the user navigates.')\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tif (err.response && err.response.status === 401) {\n\t\t\t\t\tshowError(t('weather_status', 'You are not logged in.'))\n\t\t\t\t} else {\n\t\t\t\t\tshowError(t('weather_status', 'There was an error getting the weather status information.'))\n\t\t\t\t}\n\t\t\t\tconsole.error(err)\n\t\t\t}\n\t\t},\n\t\tstartLoop() {\n\t\t\tclearInterval(this.loop)\n\t\t\tif (this.lat && this.lon) {\n\t\t\t\tthis.loop = setInterval(() => this.getForecast(), 60 * 1000 * 60)\n\t\t\t\tthis.getForecast()\n\t\t\t} else {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t\taskBrowserLocation() {\n\t\t\tthis.loading = true\n\t\t\tthis.errorMessage = ''\n\t\t\tif (navigator.geolocation && window.isSecureContext) {\n\t\t\t\tnavigator.geolocation.getCurrentPosition((position) => {\n\t\t\t\t\tconsole.debug('browser location success')\n\t\t\t\t\tthis.lat = position.coords.latitude\n\t\t\t\t\tthis.lon = position.coords.longitude\n\t\t\t\t\tthis.saveMode(MODE_BROWSER_LOCATION)\n\t\t\t\t\tthis.mode = MODE_BROWSER_LOCATION\n\t\t\t\t\tthis.saveLocation(this.lat, this.lon)\n\t\t\t\t},\n\t\t\t\t(error) => {\n\t\t\t\t\tconsole.debug('location permission refused')\n\t\t\t\t\tconsole.debug(error)\n\t\t\t\t\tthis.saveMode(MODE_MANUAL_LOCATION)\n\t\t\t\t\tthis.mode = MODE_MANUAL_LOCATION\n\t\t\t\t\t// fallback on what we have if possible\n\t\t\t\t\tif (this.lat && this.lon) {\n\t\t\t\t\t\tthis.startLoop()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.usePersonalAddress()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tconsole.debug('no secure context!')\n\t\t\t\tthis.saveMode(MODE_MANUAL_LOCATION)\n\t\t\t\tthis.mode = MODE_MANUAL_LOCATION\n\t\t\t\tthis.startLoop()\n\t\t\t}\n\t\t},\n\t\tasync getForecast() {\n\t\t\ttry {\n\t\t\t\tthis.forecasts = await network.fetchForecast()\n\t\t\t} catch (err) {\n\t\t\t\tthis.errorMessage = t('weather_status', 'No weather information found')\n\t\t\t\tconsole.debug(err)\n\t\t\t}\n\t\t\tthis.loading = false\n\t\t},\n\t\tasync setAddress(address) {\n\t\t\tthis.loading = true\n\t\t\tthis.errorMessage = ''\n\t\t\ttry {\n\t\t\t\tconst loc = await network.setAddress(address)\n\t\t\t\tif (loc.success) {\n\t\t\t\t\tthis.lat = loc.lat\n\t\t\t\t\tthis.lon = loc.lon\n\t\t\t\t\tthis.address = loc.address\n\t\t\t\t\tthis.mode = MODE_MANUAL_LOCATION\n\t\t\t\t\tthis.startLoop()\n\t\t\t\t} else {\n\t\t\t\t\tthis.errorMessage = t('weather_status', 'Location not found')\n\t\t\t\t\tthis.loading = false\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\tif (err.response && err.response.status === 401) {\n\t\t\t\t\tshowError(t('weather_status', 'You are not logged in.'))\n\t\t\t\t} else {\n\t\t\t\t\tshowError(t('weather_status', 'There was an error setting the location address.'))\n\t\t\t\t}\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t\tasync saveLocation(lat, lon) {\n\t\t\ttry {\n\t\t\t\tconst loc = await network.setLocation(lat, lon)\n\t\t\t\tthis.address = loc.address\n\t\t\t\tthis.startLoop()\n\t\t\t} catch (err) {\n\t\t\t\tif (err.response && err.response.status === 401) {\n\t\t\t\t\tshowError(t('weather_status', 'You are not logged in.'))\n\t\t\t\t} else {\n\t\t\t\t\tshowError(t('weather_status', 'There was an error setting the location.'))\n\t\t\t\t}\n\t\t\t\tconsole.debug(err)\n\t\t\t}\n\t\t},\n\t\tasync saveMode(mode) {\n\t\t\ttry {\n\t\t\t\tawait network.setMode(mode)\n\t\t\t} catch (err) {\n\t\t\t\tif (err.response && err.response.status === 401) {\n\t\t\t\t\tshowError(t('weather_status', 'You are not logged in.'))\n\t\t\t\t} else {\n\t\t\t\t\tshowError(t('weather_status', 'There was an error saving the mode.'))\n\t\t\t\t}\n\t\t\t\tconsole.debug(err)\n\t\t\t}\n\t\t},\n\t\tonBrowserLocationClick() {\n\t\t\tthis.askBrowserLocation()\n\t\t},\n\t\tasync usePersonalAddress() {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tconst loc = await network.usePersonalAddress()\n\t\t\t\tthis.lat = loc.lat\n\t\t\t\tthis.lon = loc.lon\n\t\t\t\tthis.address = loc.address\n\t\t\t\tthis.mode = MODE_MANUAL_LOCATION\n\t\t\t\tthis.startLoop()\n\t\t\t} catch (err) {\n\t\t\t\tif (err.response && err.response.status === 401) {\n\t\t\t\t\tshowError(t('weather_status', 'You are not logged in.'))\n\t\t\t\t} else {\n\t\t\t\t\tshowError(t('weather_status', 'There was an error using personal address.'))\n\t\t\t\t}\n\t\t\t\tconsole.debug(err)\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t\tonAddressSubmit() {\n\t\t\tconst newAddress = this.$refs.addressInput.$el.querySelector('input[type=\"text\"]').value\n\t\t\tthis.setAddress(newAddress)\n\t\t},\n\t\tgetLocalizedTemperature(celcius) {\n\t\t\treturn this.useFahrenheitLocale\n\t\t\t\t? (celcius * (9 / 5)) + 32\n\t\t\t\t: celcius\n\t\t},\n\t\tonAddRemoveFavoriteClick() {\n\t\t\tconst currentIsFavorite = this.currentAddressIsFavorite\n\t\t\tif (currentIsFavorite) {\n\t\t\t\tconst i = this.favorites.indexOf(currentIsFavorite)\n\t\t\t\tif (i !== -1) {\n\t\t\t\t\tthis.favorites.splice(i, 1)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.favorites.push(this.address)\n\t\t\t}\n\t\t\tnetwork.saveFavorites(this.favorites)\n\t\t},\n\t\tonFavoriteClick(e, favAddress) {\n\t\t\t// clicked on the icon\n\t\t\tif (e.target.classList.contains('action-button__icon')) {\n\t\t\t\tconst i = this.favorites.indexOf(favAddress)\n\t\t\t\tif (i !== -1) {\n\t\t\t\t\tthis.favorites.splice(i, 1)\n\t\t\t\t}\n\t\t\t\tnetwork.saveFavorites(this.favorites)\n\t\t\t} else if (favAddress !== this.address) {\n\t\t\t\t// clicked on the text\n\t\t\t\tthis.setAddress(favAddress)\n\t\t\t}\n\t\t},\n\t\tformatTime(time) {\n\t\t\treturn moment(time).format('LT')\n\t\t},\n\t\tgetTemperature(forecasts, offset = 0) {\n\t\t\treturn forecasts.length > offset ? forecasts[offset].data.instant.details.air_temperature : ''\n\t\t},\n\t\tgetWeatherCode(forecasts, offset = 0) {\n\t\t\treturn forecasts.length > offset ? forecasts[offset].data.next_1_hours.summary.symbol_code : ''\n\t\t},\n\t\tgetWeatherIcon(weatherCode, loading) {\n\t\t\tif (loading) {\n\t\t\t\treturn 'icon-loading-small'\n\t\t\t} else {\n\t\t\t\treturn weatherCode && weatherCode in weatherOptions\n\t\t\t\t\t? weatherOptions[weatherCode].icon\n\t\t\t\t\t: 'icon-fair-day'\n\t\t\t}\n\t\t},\n\t\tgetWeatherMessage(weatherCode, temperature, later = false) {\n\t\t\treturn weatherCode && weatherCode in weatherOptions\n\t\t\t\t? weatherOptions[weatherCode].text(\n\t\t\t\t\tMath.round(this.getLocalizedTemperature(temperature)),\n\t\t\t\t\tthis.temperatureUnit,\n\t\t\t\t\tlater\n\t\t\t\t)\n\t\t\t\t: t('weather_status', 'Set location for weather')\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n.icon-weather-status {\n\tbackground-image: url('./../img/app-dark.svg');\n}\nbody.theme--dark .icon-weather-status {\n\tbackground-image: url('./../img/app.svg');\n}\n.icon-clearsky-day {\n\tbackground-image: url('./../img/sun.svg');\n}\n.icon-clearsky-night {\n\tbackground-image: url('./../img/moon.svg');\n}\n.icon-cloudy {\n\tbackground-image: url('./../img/cloud-cloud.svg');\n}\n.icon-fair-day {\n\tbackground-image: url('./../img/sun-small-cloud.svg');\n}\n.icon-fair-night {\n\tbackground-image: url('./../img/moon-small-cloud.svg');\n}\n.icon-partlycloudy-day {\n\tbackground-image: url('./../img/sun-cloud.svg');\n}\n.icon-partlycloudy-night {\n\tbackground-image: url('./../img/moon-cloud.svg');\n}\n.icon-fog {\n\tbackground-image: url('./../img/fog.svg');\n}\n.icon-lightrain {\n\tbackground-image: url('./../img/light-rain.svg');\n}\n.icon-rain {\n\tbackground-image: url('./../img/rain.svg');\n}\n.icon-heavyrain {\n\tbackground-image: url('./../img/heavy-rain.svg');\n}\n.icon-light-rainshowers-day {\n\tbackground-image: url('./../img/sun-cloud-light-rain.svg');\n}\n.icon-light-rainshowers-night {\n\tbackground-image: url('./../img/moon-cloud-light-rain.svg');\n}\n.icon-rainshowers-day {\n\tbackground-image: url('./../img/sun-cloud-rain.svg');\n}\n.icon-rainshowers-night {\n\tbackground-image: url('./../img/moon-cloud-rain.svg');\n}\n.icon-heavy-rainshowers-day {\n\tbackground-image: url('./../img/sun-cloud-heavy-rain.svg');\n}\n.icon-heavy-rainshowers-night {\n\tbackground-image: url('./../img/moon-cloud-heavy-rain.svg');\n}\n.icon-crosshair {\n background-color: var(--color-main-text);\n padding: 0 !important;\n mask: url(./../img/cross.svg) no-repeat;\n mask-size: 18px 18px;\n mask-position: center;\n -webkit-mask: url(./../img/cross.svg) no-repeat;\n -webkit-mask-size: 18px 18px;\n -webkit-mask-position: center;\n min-width: 44px !important;\n min-height: 44px !important;\n}\n\nli:not(.inline) .weather-status-menu-item {\n\t&__header {\n\t\tdisplay: block;\n\t\talign-items: center;\n\t\tcolor: var(--color-main-text);\n\t\tpadding: 10px 12px 5px 12px;\n\t\tbox-sizing: border-box;\n\t\topacity: 1;\n\t\twhite-space: nowrap;\n\t\twidth: 100%;\n\t\ttext-align: center;\n\t\tmax-width: 250px;\n\t\ttext-overflow: ellipsis;\n\t\tmin-width: 175px;\n\t}\n\n\t&__subheader {\n\t\twidth: 100%;\n\n\t\t.trigger > .icon {\n\t\t\tbackground-color: var(--color-main-background);\n\t\t\tbackground-size: 16px;\n\t\t\tborder: 0;\n\t\t\tborder-radius: 0;\n\t\t\tfont-weight: normal;\n\t\t\tpadding-left: 40px;\n\n\t\t\t&:hover,\n\t\t\t&:focus {\n\t\t\t\tbox-shadow: inset 4px 0 var(--color-primary-element);\n\t\t\t}\n\t\t}\n\t}\n}\n\n.inline .weather-status-menu-item__subheader {\n\twidth: 100%;\n\n\t.trigger > .icon {\n\t\tbackground-size: 16px;\n\t\tborder: 0;\n\t\tborder-radius: var(--border-radius-pill);\n\t\tfont-weight: normal;\n\t\tpadding-left: 40px;\n\n\t\t&.icon-loading-small {\n\t\t\t&::after {\n\t\t\t\tleft: 21px;\n\t\t\t}\n\t\t}\n\t}\n}\n\nli {\n\tlist-style-type: none;\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.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!./App.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!./App.vue?vue&type=style&index=0&lang=scss&\";\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!./App.vue?vue&type=style&index=0&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=6acc2acd&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{class:{ inline: _vm.inline }},[_c('div',{attrs:{\"id\":\"weather-status-menu-item\"}},[_c('Actions',{staticClass:\"weather-status-menu-item__subheader\",attrs:{\"default-icon\":_vm.weatherIcon,\"menu-title\":_vm.currentWeatherMessage}},[(_vm.gotWeather)?_c('ActionText',{attrs:{\"icon\":_vm.futureWeatherIcon}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.forecastMessage)+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.gotWeather)?_c('ActionLink',{attrs:{\"icon\":\"icon-address\",\"target\":\"_blank\",\"href\":_vm.weatherLinkTarget,\"close-after-click\":true}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.locationText)+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.gotWeather)?_c('ActionButton',{attrs:{\"icon\":_vm.addRemoveFavoriteIcon},on:{\"click\":_vm.onAddRemoveFavoriteClick}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.addRemoveFavoriteText)+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.address && !_vm.errorMessage)?_c('ActionSeparator'):_vm._e(),_vm._v(\" \"),_c('ActionButton',{attrs:{\"icon\":\"icon-crosshair\",\"close-after-click\":true},on:{\"click\":_vm.onBrowserLocationClick}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('weather_status', 'Detect location'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionInput',{ref:\"addressInput\",attrs:{\"disabled\":false,\"icon\":\"icon-rename\",\"type\":\"text\",\"value\":\"\"},on:{\"submit\":_vm.onAddressSubmit}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('weather_status', 'Set custom address'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionButton',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.favorites.length > 0),expression:\"favorites.length > 0\"}],attrs:{\"icon\":_vm.toggleFavoritesIcon},on:{\"click\":function($event){_vm.showFavorites = !_vm.showFavorites}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('weather_status', 'Favorites'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_vm._l((_vm.displayedFavorites),function(f){return _c('ActionButton',{key:f,attrs:{\"icon\":\"icon-starred\"},on:{\"click\":function($event){return _vm.onFavoriteClick($event, f)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(f)+\"\\n\\t\\t\\t\")])})],2)],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2016 Julien Veyssier <eneiluj@posteo.net>\n *\n * @author Julien Veyssier <eneiluj@posteo.net>\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 */\n\nimport Vue from 'vue'\nimport { getRequestToken } from '@nextcloud/auth'\nimport App from './App'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nVue.prototype.t = t\n\ndocument.addEventListener('DOMContentLoaded', function() {\n\tif (!OCA.Dashboard) {\n\t\treturn\n\t}\n\n\tOCA.Dashboard.registerStatus('weather', (el) => {\n\t\tconst Dashboard = Vue.extend(App)\n\t\treturn new Dashboard({\n\t\t\tpropsData: {\n\t\t\t\tinline: true,\n\t\t\t},\n\t\t}).$mount(el)\n\t})\n})\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\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"./../img/app-dark.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"./../img/app.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(\"./../img/sun.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_3___ = new URL(\"./../img/moon.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_4___ = new URL(\"./../img/cloud-cloud.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_5___ = new URL(\"./../img/sun-small-cloud.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_6___ = new URL(\"./../img/moon-small-cloud.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_7___ = new URL(\"./../img/sun-cloud.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_8___ = new URL(\"./../img/moon-cloud.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_9___ = new URL(\"./../img/fog.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_10___ = new URL(\"./../img/light-rain.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_11___ = new URL(\"./../img/rain.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_12___ = new URL(\"./../img/heavy-rain.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_13___ = new URL(\"./../img/sun-cloud-light-rain.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_14___ = new URL(\"./../img/moon-cloud-light-rain.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_15___ = new URL(\"./../img/sun-cloud-rain.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_16___ = new URL(\"./../img/moon-cloud-rain.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_17___ = new URL(\"./../img/sun-cloud-heavy-rain.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_18___ = new URL(\"./../img/moon-cloud-heavy-rain.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_19___ = new URL(\"./../img/cross.svg\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\nvar ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___);\nvar ___CSS_LOADER_URL_REPLACEMENT_5___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_5___);\nvar ___CSS_LOADER_URL_REPLACEMENT_6___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_6___);\nvar ___CSS_LOADER_URL_REPLACEMENT_7___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___);\nvar ___CSS_LOADER_URL_REPLACEMENT_8___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_8___);\nvar ___CSS_LOADER_URL_REPLACEMENT_9___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_9___);\nvar ___CSS_LOADER_URL_REPLACEMENT_10___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_10___);\nvar ___CSS_LOADER_URL_REPLACEMENT_11___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_11___);\nvar ___CSS_LOADER_URL_REPLACEMENT_12___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_12___);\nvar ___CSS_LOADER_URL_REPLACEMENT_13___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_13___);\nvar ___CSS_LOADER_URL_REPLACEMENT_14___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_14___);\nvar ___CSS_LOADER_URL_REPLACEMENT_15___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_15___);\nvar ___CSS_LOADER_URL_REPLACEMENT_16___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_16___);\nvar ___CSS_LOADER_URL_REPLACEMENT_17___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_17___);\nvar ___CSS_LOADER_URL_REPLACEMENT_18___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_18___);\nvar ___CSS_LOADER_URL_REPLACEMENT_19___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_19___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".icon-weather-status{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \")}body.theme--dark .icon-weather-status{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \")}.icon-clearsky-day{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \")}.icon-clearsky-night{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \")}.icon-cloudy{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \")}.icon-fair-day{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_5___ + \")}.icon-fair-night{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_6___ + \")}.icon-partlycloudy-day{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_7___ + \")}.icon-partlycloudy-night{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_8___ + \")}.icon-fog{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \")}.icon-lightrain{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_10___ + \")}.icon-rain{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_11___ + \")}.icon-heavyrain{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_12___ + \")}.icon-light-rainshowers-day{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_13___ + \")}.icon-light-rainshowers-night{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \")}.icon-rainshowers-day{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \")}.icon-rainshowers-night{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_16___ + \")}.icon-heavy-rainshowers-day{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_17___ + \")}.icon-heavy-rainshowers-night{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_18___ + \")}.icon-crosshair{background-color:var(--color-main-text);padding:0 !important;mask:url(\" + ___CSS_LOADER_URL_REPLACEMENT_19___ + \") no-repeat;mask-size:18px 18px;mask-position:center;-webkit-mask:url(\" + ___CSS_LOADER_URL_REPLACEMENT_19___ + \") no-repeat;-webkit-mask-size:18px 18px;-webkit-mask-position:center;min-width:44px !important;min-height:44px !important}li:not(.inline) .weather-status-menu-item__header{display:block;align-items:center;color:var(--color-main-text);padding:10px 12px 5px 12px;box-sizing:border-box;opacity:1;white-space:nowrap;width:100%;text-align:center;max-width:250px;text-overflow:ellipsis;min-width:175px}li:not(.inline) .weather-status-menu-item__subheader{width:100%}li:not(.inline) .weather-status-menu-item__subheader .trigger>.icon{background-color:var(--color-main-background);background-size:16px;border:0;border-radius:0;font-weight:normal;padding-left:40px}li:not(.inline) .weather-status-menu-item__subheader .trigger>.icon:hover,li:not(.inline) .weather-status-menu-item__subheader .trigger>.icon:focus{box-shadow:inset 4px 0 var(--color-primary-element)}.inline .weather-status-menu-item__subheader{width:100%}.inline .weather-status-menu-item__subheader .trigger>.icon{background-size:16px;border:0;border-radius:var(--border-radius-pill);font-weight:normal;padding-left:40px}.inline .weather-status-menu-item__subheader .trigger>.icon.icon-loading-small::after{left:21px}li{list-style-type:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/weather_status/src/App.vue\"],\"names\":[],\"mappings\":\"AAwgBA,qBACC,wDAAA,CAED,sCACC,wDAAA,CAED,mBACC,wDAAA,CAED,qBACC,wDAAA,CAED,aACC,wDAAA,CAED,eACC,wDAAA,CAED,iBACC,wDAAA,CAED,uBACC,wDAAA,CAED,yBACC,wDAAA,CAED,UACC,wDAAA,CAED,gBACC,yDAAA,CAED,WACC,yDAAA,CAED,gBACC,yDAAA,CAED,4BACC,yDAAA,CAED,8BACC,yDAAA,CAED,sBACC,yDAAA,CAED,wBACC,yDAAA,CAED,4BACC,yDAAA,CAED,8BACC,yDAAA,CAED,gBACI,uCAAA,CACA,oBAAA,CACA,uDAAA,CACA,mBAAA,CACA,oBAAA,CACA,+DAAA,CACA,2BAAA,CACA,4BAAA,CACA,yBAAA,CACA,0BAAA,CAIH,kDACC,aAAA,CACA,kBAAA,CACA,4BAAA,CACA,0BAAA,CACA,qBAAA,CACA,SAAA,CACA,kBAAA,CACA,UAAA,CACA,iBAAA,CACA,eAAA,CACA,sBAAA,CACA,eAAA,CAGD,qDACC,UAAA,CAEA,oEACC,6CAAA,CACA,oBAAA,CACA,QAAA,CACA,eAAA,CACA,kBAAA,CACA,iBAAA,CAEA,oJAEC,mDAAA,CAMJ,6CACC,UAAA,CAEA,4DACC,oBAAA,CACA,QAAA,CACA,uCAAA,CACA,kBAAA,CACA,iBAAA,CAGC,sFACC,SAAA,CAMJ,GACC,oBAAA\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.icon-weather-status {\\n\\tbackground-image: url('./../img/app-dark.svg');\\n}\\nbody.theme--dark .icon-weather-status {\\n\\tbackground-image: url('./../img/app.svg');\\n}\\n.icon-clearsky-day {\\n\\tbackground-image: url('./../img/sun.svg');\\n}\\n.icon-clearsky-night {\\n\\tbackground-image: url('./../img/moon.svg');\\n}\\n.icon-cloudy {\\n\\tbackground-image: url('./../img/cloud-cloud.svg');\\n}\\n.icon-fair-day {\\n\\tbackground-image: url('./../img/sun-small-cloud.svg');\\n}\\n.icon-fair-night {\\n\\tbackground-image: url('./../img/moon-small-cloud.svg');\\n}\\n.icon-partlycloudy-day {\\n\\tbackground-image: url('./../img/sun-cloud.svg');\\n}\\n.icon-partlycloudy-night {\\n\\tbackground-image: url('./../img/moon-cloud.svg');\\n}\\n.icon-fog {\\n\\tbackground-image: url('./../img/fog.svg');\\n}\\n.icon-lightrain {\\n\\tbackground-image: url('./../img/light-rain.svg');\\n}\\n.icon-rain {\\n\\tbackground-image: url('./../img/rain.svg');\\n}\\n.icon-heavyrain {\\n\\tbackground-image: url('./../img/heavy-rain.svg');\\n}\\n.icon-light-rainshowers-day {\\n\\tbackground-image: url('./../img/sun-cloud-light-rain.svg');\\n}\\n.icon-light-rainshowers-night {\\n\\tbackground-image: url('./../img/moon-cloud-light-rain.svg');\\n}\\n.icon-rainshowers-day {\\n\\tbackground-image: url('./../img/sun-cloud-rain.svg');\\n}\\n.icon-rainshowers-night {\\n\\tbackground-image: url('./../img/moon-cloud-rain.svg');\\n}\\n.icon-heavy-rainshowers-day {\\n\\tbackground-image: url('./../img/sun-cloud-heavy-rain.svg');\\n}\\n.icon-heavy-rainshowers-night {\\n\\tbackground-image: url('./../img/moon-cloud-heavy-rain.svg');\\n}\\n.icon-crosshair {\\n background-color: var(--color-main-text);\\n padding: 0 !important;\\n mask: url(./../img/cross.svg) no-repeat;\\n mask-size: 18px 18px;\\n mask-position: center;\\n -webkit-mask: url(./../img/cross.svg) no-repeat;\\n -webkit-mask-size: 18px 18px;\\n -webkit-mask-position: center;\\n min-width: 44px !important;\\n min-height: 44px !important;\\n}\\n\\nli:not(.inline) .weather-status-menu-item {\\n\\t&__header {\\n\\t\\tdisplay: block;\\n\\t\\talign-items: center;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tpadding: 10px 12px 5px 12px;\\n\\t\\tbox-sizing: border-box;\\n\\t\\topacity: 1;\\n\\t\\twhite-space: nowrap;\\n\\t\\twidth: 100%;\\n\\t\\ttext-align: center;\\n\\t\\tmax-width: 250px;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\tmin-width: 175px;\\n\\t}\\n\\n\\t&__subheader {\\n\\t\\twidth: 100%;\\n\\n\\t\\t.trigger > .icon {\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tbackground-size: 16px;\\n\\t\\t\\tborder: 0;\\n\\t\\t\\tborder-radius: 0;\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t\\tpadding-left: 40px;\\n\\n\\t\\t\\t&:hover,\\n\\t\\t\\t&:focus {\\n\\t\\t\\t\\tbox-shadow: inset 4px 0 var(--color-primary-element);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\n.inline .weather-status-menu-item__subheader {\\n\\twidth: 100%;\\n\\n\\t.trigger > .icon {\\n\\t\\tbackground-size: 16px;\\n\\t\\tborder: 0;\\n\\t\\tborder-radius: var(--border-radius-pill);\\n\\t\\tfont-weight: normal;\\n\\t\\tpadding-left: 40px;\\n\\n\\t\\t&.icon-loading-small {\\n\\t\\t\\t&::after {\\n\\t\\t\\t\\tleft: 21px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\nli {\\n\\tlist-style-type: none;\\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 = 5275;","__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\t5275: 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__(76149); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","setLocation","lat","lon","url","generateOcsUrl","HttpClient","address","response","data","ocs","setAddress","setMode","mode","usePersonalAddress","getLocation","fetchForecast","getFavorites","saveFavorites","favorites","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_c","_self","class","inline","attrs","staticClass","weatherIcon","currentWeatherMessage","futureWeatherIcon","_v","_s","forecastMessage","_e","weatherLinkTarget","locationText","addRemoveFavoriteIcon","on","onAddRemoveFavoriteClick","addRemoveFavoriteText","errorMessage","onBrowserLocationClick","t","ref","onAddressSubmit","directives","name","rawName","value","length","expression","toggleFavoritesIcon","$event","showFavorites","_l","f","key","onFavoriteClick","__webpack_nonce__","btoa","getRequestToken","Vue","document","addEventListener","OCA","Dashboard","registerStatus","el","App","propsData","$mount","___CSS_LOADER_URL_IMPORT_0___","URL","___CSS_LOADER_URL_IMPORT_1___","___CSS_LOADER_URL_IMPORT_2___","___CSS_LOADER_URL_IMPORT_3___","___CSS_LOADER_URL_IMPORT_4___","___CSS_LOADER_URL_IMPORT_5___","___CSS_LOADER_URL_IMPORT_6___","___CSS_LOADER_URL_IMPORT_7___","___CSS_LOADER_URL_IMPORT_8___","___CSS_LOADER_URL_IMPORT_9___","___CSS_LOADER_URL_IMPORT_10___","___CSS_LOADER_URL_IMPORT_11___","___CSS_LOADER_URL_IMPORT_12___","___CSS_LOADER_URL_IMPORT_13___","___CSS_LOADER_URL_IMPORT_14___","___CSS_LOADER_URL_IMPORT_15___","___CSS_LOADER_URL_IMPORT_16___","___CSS_LOADER_URL_IMPORT_17___","___CSS_LOADER_URL_IMPORT_18___","___CSS_LOADER_URL_IMPORT_19___","___CSS_LOADER_EXPORT___","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_REPLACEMENT_1___","___CSS_LOADER_URL_REPLACEMENT_2___","___CSS_LOADER_URL_REPLACEMENT_3___","___CSS_LOADER_URL_REPLACEMENT_4___","___CSS_LOADER_URL_REPLACEMENT_5___","___CSS_LOADER_URL_REPLACEMENT_6___","___CSS_LOADER_URL_REPLACEMENT_7___","___CSS_LOADER_URL_REPLACEMENT_8___","___CSS_LOADER_URL_REPLACEMENT_9___","___CSS_LOADER_URL_REPLACEMENT_10___","___CSS_LOADER_URL_REPLACEMENT_11___","___CSS_LOADER_URL_REPLACEMENT_12___","___CSS_LOADER_URL_REPLACEMENT_13___","___CSS_LOADER_URL_REPLACEMENT_14___","___CSS_LOADER_URL_REPLACEMENT_15___","___CSS_LOADER_URL_REPLACEMENT_16___","___CSS_LOADER_URL_REPLACEMENT_17___","___CSS_LOADER_URL_REPLACEMENT_18___","___CSS_LOADER_URL_REPLACEMENT_19___","push","__webpack_module_cache__","moduleId","cachedModule","undefined","loaded","__webpack_modules__","call","m","amdD","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","splice","r","n","getter","__esModule","d","a","definition","defineProperty","enumerable","get","g","globalThis","Function","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","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":"weather_status-weather-status.js?v=b7e1ad0a5bdf2e2e2dfe","mappings":";gBAAIA,2BCAJ,IAAIC,EAAM,CACT,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,MACX,aAAc,MACd,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,IACR,UAAW,IACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,KACX,aAAc,KACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,KACX,aAAc,KACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,gBAAiB,MACjB,aAAc,MACd,gBAAiB,MACjB,OAAQ,IACR,UAAW,IACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,IACR,UAAW,IACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,MACX,aAAc,MACd,UAAW,KACX,OAAQ,MACR,UAAW,MACX,WAAY,MACZ,cAAe,MACf,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,YAAa,MACb,eAAgB,MAChB,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,UAAW,MACX,aAAc,MACd,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,QAAS,MACT,aAAc,MACd,gBAAiB,MACjB,WAAY,MACZ,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,YAAa,MACb,eAAgB,MAChB,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,gBAAiB,MACjB,OAAQ,MACR,UAAW,MACX,UAAW,KACX,aAAc,KACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,OAIf,SAASC,EAAeC,GACvB,IAAIC,EAAKC,EAAsBF,GAC/B,OAAOG,EAAoBF,GAE5B,SAASC,EAAsBF,GAC9B,IAAIG,EAAoBC,EAAEN,EAAKE,GAAM,CACpC,IAAIK,EAAI,IAAIC,MAAM,uBAAyBN,EAAM,KAEjD,MADAK,EAAEE,KAAO,mBACHF,EAEP,OAAOP,EAAIE,GAEZD,EAAeS,KAAO,WACrB,OAAOC,OAAOD,KAAKV,IAEpBC,EAAeW,QAAUR,EACzBS,EAAOC,QAAUb,EACjBA,EAAeE,GAAK,sjBCnQpB,IAAMY,EAAW,4CAAG,WAAOC,EAAKC,GAAZ,+FACbC,GAAMC,EAAAA,EAAAA,gBAAe,uCADR,SAEIC,EAAAA,QAAAA,IAAeF,EAAK,CAC1CG,QAAS,GACTL,IAAAA,EACAC,IAAAA,IALkB,cAEbK,EAFa,yBAQZA,EAASC,KAAKC,IAAID,MARN,2CAAH,wDAgBXE,EAAU,4CAAG,WAAOJ,GAAP,+FACZH,GAAMC,EAAAA,EAAAA,gBAAe,uCADT,SAEKC,EAAAA,QAAAA,IAAeF,EAAK,CAC1CG,QAAAA,EACAL,IAAK,KACLC,IAAK,OALY,cAEZK,EAFY,yBAQXA,EAASC,KAAKC,IAAID,MARP,2CAAH,sDAgBVG,EAAO,4CAAG,WAAOC,GAAP,+FACTT,GAAMC,EAAAA,EAAAA,gBAAe,mCADZ,SAEQC,EAAAA,QAAAA,IAAeF,EAAK,CAC1CS,KAAAA,IAHc,cAETL,EAFS,yBAMRA,EAASC,KAAKC,IAAID,MANV,2CAAH,sDAaPK,EAAkB,4CAAG,4GACpBV,GAAMC,EAAAA,EAAAA,gBAAe,2CADD,SAEHC,EAAAA,QAAAA,IAAeF,GAFZ,cAEpBI,EAFoB,yBAInBA,EAASC,KAAKC,IAAID,MAJC,2CAAH,qDAYlBM,EAAW,4CAAG,4GACbX,GAAMC,EAAAA,EAAAA,gBAAe,uCADR,SAEIC,EAAAA,QAAAA,IAAeF,GAFnB,cAEbI,EAFa,yBAIZA,EAASC,KAAKC,IAAID,MAJN,2CAAH,qDAYXO,EAAa,4CAAG,4GACfZ,GAAMC,EAAAA,EAAAA,gBAAe,uCADN,SAEEC,EAAAA,QAAAA,IAAeF,GAFjB,cAEfI,EAFe,yBAIdA,EAASC,KAAKC,IAAID,MAJJ,2CAAH,qDAYbQ,EAAY,4CAAG,4GACdb,GAAMC,EAAAA,EAAAA,gBAAe,wCADP,SAEGC,EAAAA,QAAAA,IAAeF,GAFlB,cAEdI,EAFc,yBAIbA,EAASC,KAAKC,IAAID,MAJL,2CAAH,qDAYZS,EAAa,4CAAG,WAAOC,GAAP,+FACff,GAAMC,EAAAA,EAAAA,gBAAe,wCADN,SAEEC,EAAAA,QAAAA,IAAeF,EAAK,CAC1Ce,UAAAA,IAHoB,cAEfX,EAFe,yBAMdA,EAASC,KAAKC,IAAID,MANJ,2CAAH,kXCxCnB,IAEA,GACA,cACA,yBACA,0FACA,wFACA,8EAEA,gBACA,2BACA,0FACA,wFACA,8EAEA,QACA,mBACA,0FACA,qFACA,2EAEA,UACA,qBACA,0FACA,2FACA,iFAEA,YACA,uBACA,0FACA,2FACA,iFAEA,kBACA,6BACA,0FACA,4FACA,kFAEA,oBACA,+BACA,0FACA,4FACA,kFAEA,KACA,gBACA,0FACA,oFACA,0EAEA,WACA,sBACA,0FACA,6FACA,mFAEA,MACA,iBACA,0FACA,uFACA,6EAEA,WACA,sBACA,0FACA,6FACA,mFAEA,iBACA,4BACA,0FACA,+FACA,qFAEA,mBACA,8BACA,0FACA,+FACA,qFAEA,sBACA,kCACA,0FACA,qGACA,2FAEA,wBACA,oCACA,0FACA,qGACA,2FAEA,sBACA,kCACA,0FACA,qGACA,2FAEA,wBACA,oCACA,0FACA,qGACA,4FAIA,GACA,WACA,YACA,gGAEA,OACA,QACA,aACA,aAGA,KAXA,WAYA,OACA,yBACA,WACA,gBACA,KA3HA,EA4HA,aACA,SACA,SAEA,SACA,aACA,UACA,aACA,mBAGA,UACA,oBADA,WAEA,+EAEA,gBAJA,WAKA,2CAEA,aAPA,WAQA,wEAEA,YAVA,WAWA,8CAEA,kBAbA,WAcA,wDAEA,YAhBA,WAiBA,8CAEA,kBAnBA,WAoBA,wDAEA,YAtBA,WAuBA,2DAEA,kBAzBA,WA0BA,iEAOA,sBAjCA,WAkCA,oBACA,sCACA,kBACA,kBAEA,2DAGA,gBA1CA,WA2CA,oBACA,sCAEA,0EAGA,kBAjDA,WAkDA,oFAEA,WApDA,WAqDA,yCAEA,sBAvDA,WAwDA,qCACA,eACA,aAEA,sBA5DA,WA6DA,qCACA,4CACA,uCAEA,yBAjEA,WAiEA,WACA,wCACA,yBAGA,oBAtEA,WAuEA,0BACA,kBACA,mBAEA,mBA3EA,WA4EA,0BACA,eACA,KAGA,QA7GA,WA8GA,0BAEA,SACA,kBADA,WACA,2KAEA,IAFA,cAEA,EAFA,OAGA,YACA,YACA,oBACA,cAlOA,IAoOA,OACA,uBApOA,IAqOA,QACA,cAXA,UAaA,IAbA,QAaA,EAbA,OAcA,cAdA,qDAgBA,+DAhBA,wBAiBA,qFAjBA,2BAoBA,2CACA,uDAEA,0FAEA,oBAzBA,6DA4BA,UA7BA,WA6BA,WACA,yBACA,oBACA,iEACA,oBAEA,iBAGA,mBAtCA,WAsCA,WACA,gBACA,qBACA,8CACA,sDACA,0CACA,wBACA,yBACA,WAzQA,GA0QA,OA1QA,EA2QA,+BAEA,YACA,6CACA,iBACA,WA/QA,GAgRA,OAhRA,EAkRA,aACA,cAEA,2BAIA,oCACA,cA1RA,GA2RA,UA3RA,EA4RA,mBAGA,YArEA,WAqEA,mKAEA,IAFA,OAEA,YAFA,uDAIA,kEACA,oBALA,QAOA,aAPA,4DASA,WA9EA,SA8EA,0JACA,aACA,kBAFA,kBAIA,KAJA,QAIA,EAJA,QAKA,SACA,YACA,YACA,oBACA,OAjTA,EAkTA,gBAEA,wDACA,cAbA,gDAgBA,2CACA,uDAEA,gFAEA,aArBA,4DAwBA,aAtGA,SAsGA,8KAEA,OAFA,OAEA,EAFA,OAGA,oBACA,cAJA,gDAMA,2CACA,uDAEA,wEAEA,oBAXA,4DAcA,SApHA,SAoHA,2JAEA,KAFA,sDAIA,2CACA,uDAEA,mEAEA,oBATA,2DAYA,uBAhIA,WAiIA,2BAEA,mBAnIA,WAmIA,uJACA,aADA,kBAGA,IAHA,OAGA,EAHA,OAIA,YACA,YACA,oBACA,OApWA,EAqWA,cARA,kDAUA,2CACA,uDAEA,0EAEA,oBACA,aAhBA,6DAmBA,gBAtJA,WAuJA,4EACA,oBAEA,wBA1JA,SA0JA,GACA,gCACA,SACA,GAEA,yBA/JA,WAgKA,oCACA,MACA,iCACA,OACA,gCAGA,kCAEA,mBAEA,gBA3KA,SA2KA,KAEA,uDACA,iCACA,OACA,2BAEA,uBACA,kBAEA,oBAGA,WAxLA,SAwLA,GACA,4BAEA,eA3LA,SA2LA,kEACA,gEAEA,eA9LA,SA8LA,kEACA,iEAEA,eAjMA,SAiMA,KACA,SACA,qBAEA,UACA,UACA,iBAGA,kBA1MA,SA0MA,mEACA,iBACA,UACA,4CACA,qBACA,GAEA,kDCjgB0K,qICWtKW,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,KAAK,CAACE,MAAM,CAAEC,OAAQP,EAAIO,SAAU,CAACH,EAAG,MAAM,CAACI,MAAM,CAAC,GAAK,6BAA6B,CAACJ,EAAG,UAAU,CAACK,YAAY,sCAAsCD,MAAM,CAAC,eAAeR,EAAIU,YAAY,aAAaV,EAAIW,wBAAwB,CAAEX,EAAc,WAAEI,EAAG,aAAa,CAACI,MAAM,CAAC,KAAOR,EAAIY,oBAAoB,CAACZ,EAAIa,GAAG,aAAab,EAAIc,GAAGd,EAAIe,iBAAiB,cAAcf,EAAIgB,KAAKhB,EAAIa,GAAG,KAAMb,EAAc,WAAEI,EAAG,aAAa,CAACI,MAAM,CAAC,KAAO,eAAe,OAAS,SAAS,KAAOR,EAAIiB,kBAAkB,qBAAoB,IAAO,CAACjB,EAAIa,GAAG,aAAab,EAAIc,GAAGd,EAAIkB,cAAc,cAAclB,EAAIgB,KAAKhB,EAAIa,GAAG,KAAMb,EAAc,WAAEI,EAAG,eAAe,CAACI,MAAM,CAAC,KAAOR,EAAImB,uBAAuBC,GAAG,CAAC,MAAQpB,EAAIqB,2BAA2B,CAACrB,EAAIa,GAAG,aAAab,EAAIc,GAAGd,EAAIsB,uBAAuB,cAActB,EAAIgB,KAAKhB,EAAIa,GAAG,KAAMb,EAAInB,UAAYmB,EAAIuB,aAAcnB,EAAG,mBAAmBJ,EAAIgB,KAAKhB,EAAIa,GAAG,KAAKT,EAAG,eAAe,CAACI,MAAM,CAAC,KAAO,iBAAiB,qBAAoB,GAAMY,GAAG,CAAC,MAAQpB,EAAIwB,yBAAyB,CAACxB,EAAIa,GAAG,aAAab,EAAIc,GAAGd,EAAIyB,EAAE,iBAAkB,oBAAoB,cAAczB,EAAIa,GAAG,KAAKT,EAAG,cAAc,CAACsB,IAAI,eAAelB,MAAM,CAAC,UAAW,EAAM,KAAO,cAAc,KAAO,OAAO,MAAQ,IAAIY,GAAG,CAAC,OAASpB,EAAI2B,kBAAkB,CAAC3B,EAAIa,GAAG,aAAab,EAAIc,GAAGd,EAAIyB,EAAE,iBAAkB,uBAAuB,cAAczB,EAAIa,GAAG,KAAKT,EAAG,eAAe,CAACwB,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASC,MAAO/B,EAAIP,UAAUuC,OAAS,EAAGC,WAAW,yBAAyBzB,MAAM,CAAC,KAAOR,EAAIkC,qBAAqBd,GAAG,CAAC,MAAQ,SAASe,GAAQnC,EAAIoC,eAAiBpC,EAAIoC,iBAAiB,CAACpC,EAAIa,GAAG,aAAab,EAAIc,GAAGd,EAAIyB,EAAE,iBAAkB,cAAc,cAAczB,EAAIa,GAAG,KAAKb,EAAIqC,GAAIrC,EAAsB,oBAAE,SAASsC,GAAG,OAAOlC,EAAG,eAAe,CAACmC,IAAID,EAAE9B,MAAM,CAAC,KAAO,gBAAgBY,GAAG,CAAC,MAAQ,SAASe,GAAQ,OAAOnC,EAAIwC,gBAAgBL,EAAQG,MAAM,CAACtC,EAAIa,GAAG,aAAab,EAAIc,GAAGwB,GAAG,kBAAiB,IAAI,OACv8D,IDWpB,EACA,KACA,KACA,MAI8B,QEQhCG,EAAAA,GAAoBC,MAAKC,EAAAA,EAAAA,oBAEzBC,EAAAA,QAAAA,UAAAA,EAAkBnB,EAElBoB,SAASC,iBAAiB,oBAAoB,WACxCC,IAAIC,WAITD,IAAIC,UAAUC,eAAe,WAAW,SAACC,GAExC,OAAO,IADWN,EAAAA,QAAAA,OAAWO,GACtB,CAAc,CACpBC,UAAW,CACV7C,QAAQ,KAEP8C,OAAOH,6GCtCRI,EAAgC,IAAIC,IAAI,cACxCC,EAAgC,IAAID,IAAI,aACxCE,EAAgC,IAAIF,IAAI,cACxCG,EAAgC,IAAIH,IAAI,cACxCI,EAAgC,IAAIJ,IAAI,cACxCK,EAAgC,IAAIL,IAAI,cACxCM,EAAgC,IAAIN,IAAI,cACxCO,EAAgC,IAAIP,IAAI,cACxCQ,EAAgC,IAAIR,IAAI,cACxCS,EAAgC,IAAIT,IAAI,cACxCU,EAAiC,IAAIV,IAAI,cACzCW,EAAiC,IAAIX,IAAI,cACzCY,EAAiC,IAAIZ,IAAI,cACzCa,EAAiC,IAAIb,IAAI,cACzCc,EAAiC,IAAId,IAAI,cACzCe,EAAiC,IAAIf,IAAI,cACzCgB,EAAiC,IAAIhB,IAAI,cACzCiB,EAAiC,IAAIjB,IAAI,cACzCkB,EAAiC,IAAIlB,IAAI,cACzCmB,EAAiC,IAAInB,IAAI,cACzCoB,EAA0B,IAA4B,KACtDC,EAAqC,IAAgCtB,GACrEuB,EAAqC,IAAgCrB,GACrEsB,EAAqC,IAAgCrB,GACrEsB,EAAqC,IAAgCrB,GACrEsB,EAAqC,IAAgCrB,GACrEsB,EAAqC,IAAgCrB,GACrEsB,EAAqC,IAAgCrB,GACrEsB,EAAqC,IAAgCrB,GACrEsB,EAAqC,IAAgCrB,GACrEsB,EAAqC,IAAgCrB,GACrEsB,EAAsC,IAAgCrB,GACtEsB,EAAsC,IAAgCrB,GACtEsB,EAAsC,IAAgCrB,GACtEsB,EAAsC,IAAgCrB,GACtEsB,EAAsC,IAAgCrB,GACtEsB,EAAsC,IAAgCrB,GACtEsB,EAAsC,IAAgCrB,GACtEsB,EAAsC,IAAgCrB,GACtEsB,EAAsC,IAAgCrB,GACtEsB,EAAsC,IAAgCrB,GAE1EC,EAAwBqB,KAAK,CAAC3H,EAAOV,GAAI,6CAA+CiH,EAAqC,gEAAkEC,EAAqC,6CAA+CC,EAAqC,+CAAiDC,EAAqC,uCAAyCC,EAAqC,yCAA2CC,EAAqC,2CAA6CC,EAAqC,iDAAmDC,EAAqC,mDAAqDC,EAAqC,oCAAsCC,EAAqC,0CAA4CC,EAAsC,qCAAuCC,EAAsC,0CAA4CC,EAAsC,sDAAwDC,EAAsC,wDAA0DC,EAAsC,gDAAkDC,EAAsC,kDAAoDC,EAAsC,sDAAwDC,EAAsC,wDAA0DC,EAAsC,2FAA6FC,EAAsC,yEAA2EA,EAAsC,mrCAAorC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,+CAA+C,MAAQ,GAAG,SAAW,+wBAA+wB,eAAiB,CAAC,+/HAA+/H,WAAa,MAE/8P,+ziCC/CIE,EAA2B,GAG/B,SAASpI,EAAoBqI,GAE5B,IAAIC,EAAeF,EAAyBC,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAa7H,QAGrB,IAAID,EAAS4H,EAAyBC,GAAY,CACjDvI,GAAIuI,EACJG,QAAQ,EACR/H,QAAS,IAUV,OANAgI,EAAoBJ,GAAUK,KAAKlI,EAAOC,QAASD,EAAQA,EAAOC,QAAST,GAG3EQ,EAAOgI,QAAS,EAGThI,EAAOC,QAIfT,EAAoB2I,EAAIF,EC5BxBzI,EAAoB4I,KAAO,WAC1B,MAAM,IAAIzI,MAAM,mCCDjBH,EAAoB6I,KAAO,GZAvBnJ,EAAW,GACfM,EAAoB8I,EAAI,SAASC,EAAQC,EAAUC,EAAIC,GACtD,IAAGF,EAAH,CAMA,IAAIG,EAAeC,EAAAA,EACnB,IAASC,EAAI,EAAGA,EAAI3J,EAASyE,OAAQkF,IAAK,CACrCL,EAAWtJ,EAAS2J,GAAG,GACvBJ,EAAKvJ,EAAS2J,GAAG,GACjBH,EAAWxJ,EAAS2J,GAAG,GAE3B,IAJA,IAGIC,GAAY,EACPC,EAAI,EAAGA,EAAIP,EAAS7E,OAAQoF,MACpB,EAAXL,GAAsBC,GAAgBD,IAAa5I,OAAOD,KAAKL,EAAoB8I,GAAGU,OAAM,SAAS9E,GAAO,OAAO1E,EAAoB8I,EAAEpE,GAAKsE,EAASO,OAC3JP,EAASS,OAAOF,IAAK,IAErBD,GAAY,EACTJ,EAAWC,IAAcA,EAAeD,IAG7C,GAAGI,EAAW,CACb5J,EAAS+J,OAAOJ,IAAK,GACrB,IAAIK,EAAIT,SACEV,IAANmB,IAAiBX,EAASW,IAGhC,OAAOX,EAzBNG,EAAWA,GAAY,EACvB,IAAI,IAAIG,EAAI3J,EAASyE,OAAQkF,EAAI,GAAK3J,EAAS2J,EAAI,GAAG,GAAKH,EAAUG,IAAK3J,EAAS2J,GAAK3J,EAAS2J,EAAI,GACrG3J,EAAS2J,GAAK,CAACL,EAAUC,EAAIC,IaJ/BlJ,EAAoB2J,EAAI,SAASnJ,GAChC,IAAIoJ,EAASpJ,GAAUA,EAAOqJ,WAC7B,WAAa,OAAOrJ,EAAgB,SACpC,WAAa,OAAOA,GAErB,OADAR,EAAoB8J,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,GCLR5J,EAAoB8J,EAAI,SAASrJ,EAASuJ,GACzC,IAAI,IAAItF,KAAOsF,EACXhK,EAAoBC,EAAE+J,EAAYtF,KAAS1E,EAAoBC,EAAEQ,EAASiE,IAC5EpE,OAAO2J,eAAexJ,EAASiE,EAAK,CAAEwF,YAAY,EAAMC,IAAKH,EAAWtF,MCJ3E1E,EAAoBoK,EAAI,WACvB,GAA0B,iBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAOjI,MAAQ,IAAIkI,SAAS,cAAb,GACd,MAAOpK,GACR,GAAsB,iBAAXqK,OAAqB,OAAOA,QALjB,GCAxBvK,EAAoBC,EAAI,SAASuK,EAAKC,GAAQ,OAAOnK,OAAOoK,UAAUC,eAAejC,KAAK8B,EAAKC,ICC/FzK,EAAoB0J,EAAI,SAASjJ,GACX,oBAAXmK,QAA0BA,OAAOC,aAC1CvK,OAAO2J,eAAexJ,EAASmK,OAAOC,YAAa,CAAE3G,MAAO,WAE7D5D,OAAO2J,eAAexJ,EAAS,aAAc,CAAEyD,OAAO,KCLvDlE,EAAoB8K,IAAM,SAAStK,GAGlC,OAFAA,EAAOuK,MAAQ,GACVvK,EAAOwK,WAAUxK,EAAOwK,SAAW,IACjCxK,GCHRR,EAAoBuJ,EAAI,gBCAxBvJ,EAAoBiL,EAAIjG,SAASkG,SAAWC,KAAKC,SAASC,KAK1D,IAAIC,EAAkB,CACrB,KAAM,GAaPtL,EAAoB8I,EAAES,EAAI,SAASgC,GAAW,OAAoC,IAA7BD,EAAgBC,IAGrE,IAAIC,EAAuB,SAASC,EAA4BvK,GAC/D,IAKImH,EAAUkD,EALVvC,EAAW9H,EAAK,GAChBwK,EAAcxK,EAAK,GACnByK,EAAUzK,EAAK,GAGImI,EAAI,EAC3B,GAAGL,EAAS4C,MAAK,SAAS9L,GAAM,OAA+B,IAAxBwL,EAAgBxL,MAAe,CACrE,IAAIuI,KAAYqD,EACZ1L,EAAoBC,EAAEyL,EAAarD,KACrCrI,EAAoB2I,EAAEN,GAAYqD,EAAYrD,IAGhD,GAAGsD,EAAS,IAAI5C,EAAS4C,EAAQ3L,GAGlC,IADGyL,GAA4BA,EAA2BvK,GACrDmI,EAAIL,EAAS7E,OAAQkF,IACzBkC,EAAUvC,EAASK,GAChBrJ,EAAoBC,EAAEqL,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBC,GAAW,EAE5B,OAAOvL,EAAoB8I,EAAEC,IAG1B8C,EAAqBV,KAA4B,sBAAIA,KAA4B,uBAAK,GAC1FU,EAAmBC,QAAQN,EAAqBO,KAAK,KAAM,IAC3DF,EAAmB1D,KAAOqD,EAAqBO,KAAK,KAAMF,EAAmB1D,KAAK4D,KAAKF,OClDvF7L,EAAoBgM,QAAKzD,ECGzB,IAAI0D,EAAsBjM,EAAoB8I,OAAEP,EAAW,CAAC,OAAO,WAAa,OAAOvI,EAAoB,UAC3GiM,EAAsBjM,EAAoB8I,EAAEmD","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/node_modules/@nextcloud/moment/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/apps/weather_status/src/services/weatherStatusService.js","webpack:///nextcloud/apps/weather_status/src/App.vue","webpack:///nextcloud/apps/weather_status/src/App.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/weather_status/src/App.vue?aa30","webpack://nextcloud/./apps/weather_status/src/App.vue?02d4","webpack:///nextcloud/apps/weather_status/src/App.vue?vue&type=template&id=6acc2acd&","webpack:///nextcloud/apps/weather_status/src/weather-status.js","webpack:///nextcloud/apps/weather_status/src/App.vue?vue&type=style&index=0&lang=scss&","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/runtime/nonce","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};","var map = {\n\t\"./af\": 36026,\n\t\"./af.js\": 36026,\n\t\"./ar\": 28093,\n\t\"./ar-dz\": 41943,\n\t\"./ar-dz.js\": 41943,\n\t\"./ar-kw\": 23969,\n\t\"./ar-kw.js\": 23969,\n\t\"./ar-ly\": 40594,\n\t\"./ar-ly.js\": 40594,\n\t\"./ar-ma\": 18369,\n\t\"./ar-ma.js\": 18369,\n\t\"./ar-sa\": 32579,\n\t\"./ar-sa.js\": 32579,\n\t\"./ar-tn\": 76442,\n\t\"./ar-tn.js\": 76442,\n\t\"./ar.js\": 28093,\n\t\"./az\": 86425,\n\t\"./az.js\": 86425,\n\t\"./be\": 22004,\n\t\"./be.js\": 22004,\n\t\"./bg\": 42982,\n\t\"./bg.js\": 42982,\n\t\"./bm\": 21067,\n\t\"./bm.js\": 21067,\n\t\"./bn\": 8366,\n\t\"./bn-bd\": 63837,\n\t\"./bn-bd.js\": 63837,\n\t\"./bn.js\": 8366,\n\t\"./bo\": 95040,\n\t\"./bo.js\": 95040,\n\t\"./br\": 521,\n\t\"./br.js\": 521,\n\t\"./bs\": 83242,\n\t\"./bs.js\": 83242,\n\t\"./ca\": 73046,\n\t\"./ca.js\": 73046,\n\t\"./cs\": 25794,\n\t\"./cs.js\": 25794,\n\t\"./cv\": 28231,\n\t\"./cv.js\": 28231,\n\t\"./cy\": 10927,\n\t\"./cy.js\": 10927,\n\t\"./da\": 42832,\n\t\"./da.js\": 42832,\n\t\"./de\": 29415,\n\t\"./de-at\": 3331,\n\t\"./de-at.js\": 3331,\n\t\"./de-ch\": 45524,\n\t\"./de-ch.js\": 45524,\n\t\"./de.js\": 29415,\n\t\"./dv\": 44700,\n\t\"./dv.js\": 44700,\n\t\"./el\": 88752,\n\t\"./el.js\": 88752,\n\t\"./en-au\": 90444,\n\t\"./en-au.js\": 90444,\n\t\"./en-ca\": 65959,\n\t\"./en-ca.js\": 65959,\n\t\"./en-gb\": 62762,\n\t\"./en-gb.js\": 62762,\n\t\"./en-ie\": 40909,\n\t\"./en-ie.js\": 40909,\n\t\"./en-il\": 79909,\n\t\"./en-il.js\": 79909,\n\t\"./en-in\": 87942,\n\t\"./en-in.js\": 87942,\n\t\"./en-nz\": 75200,\n\t\"./en-nz.js\": 75200,\n\t\"./en-sg\": 21415,\n\t\"./en-sg.js\": 21415,\n\t\"./eo\": 27447,\n\t\"./eo.js\": 27447,\n\t\"./es\": 86756,\n\t\"./es-do\": 47049,\n\t\"./es-do.js\": 47049,\n\t\"./es-mx\": 15915,\n\t\"./es-mx.js\": 15915,\n\t\"./es-us\": 57133,\n\t\"./es-us.js\": 57133,\n\t\"./es.js\": 86756,\n\t\"./et\": 72182,\n\t\"./et.js\": 72182,\n\t\"./eu\": 14419,\n\t\"./eu.js\": 14419,\n\t\"./fa\": 2916,\n\t\"./fa.js\": 2916,\n\t\"./fi\": 49964,\n\t\"./fi.js\": 49964,\n\t\"./fil\": 16448,\n\t\"./fil.js\": 16448,\n\t\"./fo\": 26094,\n\t\"./fo.js\": 26094,\n\t\"./fr\": 35833,\n\t\"./fr-ca\": 56994,\n\t\"./fr-ca.js\": 56994,\n\t\"./fr-ch\": 2740,\n\t\"./fr-ch.js\": 2740,\n\t\"./fr.js\": 35833,\n\t\"./fy\": 69542,\n\t\"./fy.js\": 69542,\n\t\"./ga\": 93264,\n\t\"./ga.js\": 93264,\n\t\"./gd\": 77457,\n\t\"./gd.js\": 77457,\n\t\"./gl\": 83043,\n\t\"./gl.js\": 83043,\n\t\"./gom-deva\": 24034,\n\t\"./gom-deva.js\": 24034,\n\t\"./gom-latn\": 28379,\n\t\"./gom-latn.js\": 28379,\n\t\"./gu\": 406,\n\t\"./gu.js\": 406,\n\t\"./he\": 73219,\n\t\"./he.js\": 73219,\n\t\"./hi\": 99834,\n\t\"./hi.js\": 99834,\n\t\"./hr\": 28754,\n\t\"./hr.js\": 28754,\n\t\"./hu\": 93945,\n\t\"./hu.js\": 93945,\n\t\"./hy-am\": 81319,\n\t\"./hy-am.js\": 81319,\n\t\"./id\": 24875,\n\t\"./id.js\": 24875,\n\t\"./is\": 23724,\n\t\"./is.js\": 23724,\n\t\"./it\": 79906,\n\t\"./it-ch\": 34303,\n\t\"./it-ch.js\": 34303,\n\t\"./it.js\": 79906,\n\t\"./ja\": 77105,\n\t\"./ja.js\": 77105,\n\t\"./jv\": 15026,\n\t\"./jv.js\": 15026,\n\t\"./ka\": 67416,\n\t\"./ka.js\": 67416,\n\t\"./kk\": 79734,\n\t\"./kk.js\": 79734,\n\t\"./km\": 60757,\n\t\"./km.js\": 60757,\n\t\"./kn\": 58369,\n\t\"./kn.js\": 58369,\n\t\"./ko\": 77687,\n\t\"./ko.js\": 77687,\n\t\"./ku\": 95544,\n\t\"./ku.js\": 95544,\n\t\"./ky\": 85431,\n\t\"./ky.js\": 85431,\n\t\"./lb\": 13613,\n\t\"./lb.js\": 13613,\n\t\"./lo\": 34252,\n\t\"./lo.js\": 34252,\n\t\"./lt\": 84619,\n\t\"./lt.js\": 84619,\n\t\"./lv\": 93760,\n\t\"./lv.js\": 93760,\n\t\"./me\": 93393,\n\t\"./me.js\": 93393,\n\t\"./mi\": 12369,\n\t\"./mi.js\": 12369,\n\t\"./mk\": 48664,\n\t\"./mk.js\": 48664,\n\t\"./ml\": 23099,\n\t\"./ml.js\": 23099,\n\t\"./mn\": 98539,\n\t\"./mn.js\": 98539,\n\t\"./mr\": 778,\n\t\"./mr.js\": 778,\n\t\"./ms\": 39970,\n\t\"./ms-my\": 82625,\n\t\"./ms-my.js\": 82625,\n\t\"./ms.js\": 39970,\n\t\"./mt\": 15714,\n\t\"./mt.js\": 15714,\n\t\"./my\": 53055,\n\t\"./my.js\": 53055,\n\t\"./nb\": 73945,\n\t\"./nb.js\": 73945,\n\t\"./ne\": 63645,\n\t\"./ne.js\": 63645,\n\t\"./nl\": 4829,\n\t\"./nl-be\": 12823,\n\t\"./nl-be.js\": 12823,\n\t\"./nl.js\": 4829,\n\t\"./nn\": 23756,\n\t\"./nn.js\": 23756,\n\t\"./oc-lnc\": 41228,\n\t\"./oc-lnc.js\": 41228,\n\t\"./pa-in\": 97877,\n\t\"./pa-in.js\": 97877,\n\t\"./pl\": 53066,\n\t\"./pl.js\": 53066,\n\t\"./pt\": 28677,\n\t\"./pt-br\": 81592,\n\t\"./pt-br.js\": 81592,\n\t\"./pt.js\": 28677,\n\t\"./ro\": 32722,\n\t\"./ro.js\": 32722,\n\t\"./ru\": 59138,\n\t\"./ru.js\": 59138,\n\t\"./sd\": 32568,\n\t\"./sd.js\": 32568,\n\t\"./se\": 49753,\n\t\"./se.js\": 49753,\n\t\"./si\": 58024,\n\t\"./si.js\": 58024,\n\t\"./sk\": 31058,\n\t\"./sk.js\": 31058,\n\t\"./sl\": 43452,\n\t\"./sl.js\": 43452,\n\t\"./sq\": 2795,\n\t\"./sq.js\": 2795,\n\t\"./sr\": 26976,\n\t\"./sr-cyrl\": 38819,\n\t\"./sr-cyrl.js\": 38819,\n\t\"./sr.js\": 26976,\n\t\"./ss\": 7467,\n\t\"./ss.js\": 7467,\n\t\"./sv\": 42787,\n\t\"./sv.js\": 42787,\n\t\"./sw\": 80298,\n\t\"./sw.js\": 80298,\n\t\"./ta\": 57532,\n\t\"./ta.js\": 57532,\n\t\"./te\": 76076,\n\t\"./te.js\": 76076,\n\t\"./tet\": 40452,\n\t\"./tet.js\": 40452,\n\t\"./tg\": 64794,\n\t\"./tg.js\": 64794,\n\t\"./th\": 48245,\n\t\"./th.js\": 48245,\n\t\"./tk\": 8870,\n\t\"./tk.js\": 8870,\n\t\"./tl-ph\": 36056,\n\t\"./tl-ph.js\": 36056,\n\t\"./tlh\": 15249,\n\t\"./tlh.js\": 15249,\n\t\"./tr\": 22053,\n\t\"./tr.js\": 22053,\n\t\"./tzl\": 39871,\n\t\"./tzl.js\": 39871,\n\t\"./tzm\": 39574,\n\t\"./tzm-latn\": 19210,\n\t\"./tzm-latn.js\": 19210,\n\t\"./tzm.js\": 39574,\n\t\"./ug-cn\": 91532,\n\t\"./ug-cn.js\": 91532,\n\t\"./uk\": 11432,\n\t\"./uk.js\": 11432,\n\t\"./ur\": 88523,\n\t\"./ur.js\": 88523,\n\t\"./uz\": 54958,\n\t\"./uz-latn\": 68735,\n\t\"./uz-latn.js\": 68735,\n\t\"./uz.js\": 54958,\n\t\"./vi\": 83398,\n\t\"./vi.js\": 83398,\n\t\"./x-pseudo\": 56665,\n\t\"./x-pseudo.js\": 56665,\n\t\"./yo\": 11642,\n\t\"./yo.js\": 11642,\n\t\"./zh-cn\": 5462,\n\t\"./zh-cn.js\": 5462,\n\t\"./zh-hk\": 92530,\n\t\"./zh-hk.js\": 92530,\n\t\"./zh-mo\": 41650,\n\t\"./zh-mo.js\": 41650,\n\t\"./zh-tw\": 97333,\n\t\"./zh-tw.js\": 97333\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 93365;","/**\n * @copyright Copyright (c) 2020, Julien Veyssier\n *\n * @author Julien Veyssier <eneiluj@posteo.net>\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 */\n\nimport HttpClient from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n *\n *\n * @param {string} lat the latitude\n * @param {string} lon the longitude\n * @return {Promise<object>}\n */\nconst setLocation = async (lat, lon) => {\n\tconst url = generateOcsUrl('apps/weather_status/api/v1/location')\n\tconst response = await HttpClient.put(url, {\n\t\taddress: '',\n\t\tlat,\n\t\tlon,\n\t})\n\n\treturn response.data.ocs.data\n}\n\n/**\n *\n * @param {string} address The location\n * @return {Promise<object>}\n */\nconst setAddress = async (address) => {\n\tconst url = generateOcsUrl('apps/weather_status/api/v1/location')\n\tconst response = await HttpClient.put(url, {\n\t\taddress,\n\t\tlat: null,\n\t\tlon: null,\n\t})\n\n\treturn response.data.ocs.data\n}\n\n/**\n *\n * @param {string} mode can be 1 browser or 2 custom\n * @return {Promise<object>}\n */\nconst setMode = async (mode) => {\n\tconst url = generateOcsUrl('apps/weather_status/api/v1/mode')\n\tconst response = await HttpClient.put(url, {\n\t\tmode,\n\t})\n\n\treturn response.data.ocs.data\n}\n\n/**\n *\n * @return {Promise<object>}\n */\nconst usePersonalAddress = async () => {\n\tconst url = generateOcsUrl('apps/weather_status/api/v1/use-personal')\n\tconst response = await HttpClient.put(url)\n\n\treturn response.data.ocs.data\n}\n\n/**\n * Fetches the location information for current user\n *\n * @return {Promise<object>}\n */\nconst getLocation = async () => {\n\tconst url = generateOcsUrl('apps/weather_status/api/v1/location')\n\tconst response = await HttpClient.get(url)\n\n\treturn response.data.ocs.data\n}\n\n/**\n * Fetches the weather forecast\n *\n * @return {Promise<object>}\n */\nconst fetchForecast = async () => {\n\tconst url = generateOcsUrl('apps/weather_status/api/v1/forecast')\n\tconst response = await HttpClient.get(url)\n\n\treturn response.data.ocs.data\n}\n\n/**\n * Fetches the location favorites\n *\n * @return {Promise<object>}\n */\nconst getFavorites = async () => {\n\tconst url = generateOcsUrl('apps/weather_status/api/v1/favorites')\n\tconst response = await HttpClient.get(url)\n\n\treturn response.data.ocs.data\n}\n\n/**\n *\n * @param {Array} favorites List of favorite addresses\n * @return {Promise<object>}\n */\nconst saveFavorites = async (favorites) => {\n\tconst url = generateOcsUrl('apps/weather_status/api/v1/favorites')\n\tconst response = await HttpClient.put(url, {\n\t\tfavorites,\n\t})\n\n\treturn response.data.ocs.data\n}\n\nexport {\n\tusePersonalAddress,\n\tsetMode,\n\tgetLocation,\n\tsetLocation,\n\tsetAddress,\n\tfetchForecast,\n\tgetFavorites,\n\tsaveFavorites,\n}\n","<!--\n - @copyright Copyright (c) 2020 Julien Veyssier <eneiluj@posteo.net>\n - @author Julien Veyssier <eneiluj@posteo.net>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<li :class=\"{ inline }\">\n\t\t<div id=\"weather-status-menu-item\">\n\t\t\t<Actions class=\"weather-status-menu-item__subheader\"\n\t\t\t\t:default-icon=\"weatherIcon\"\n\t\t\t\t:menu-title=\"currentWeatherMessage\">\n\t\t\t\t<ActionText v-if=\"gotWeather\"\n\t\t\t\t\t:icon=\"futureWeatherIcon\">\n\t\t\t\t\t{{ forecastMessage }}\n\t\t\t\t</ActionText>\n\t\t\t\t<ActionLink v-if=\"gotWeather\"\n\t\t\t\t\ticon=\"icon-address\"\n\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t:href=\"weatherLinkTarget\"\n\t\t\t\t\t:close-after-click=\"true\">\n\t\t\t\t\t{{ locationText }}\n\t\t\t\t</ActionLink>\n\t\t\t\t<ActionButton v-if=\"gotWeather\"\n\t\t\t\t\t:icon=\"addRemoveFavoriteIcon\"\n\t\t\t\t\t@click=\"onAddRemoveFavoriteClick\">\n\t\t\t\t\t{{ addRemoveFavoriteText }}\n\t\t\t\t</ActionButton>\n\t\t\t\t<ActionSeparator v-if=\"address && !errorMessage\" />\n\t\t\t\t<ActionButton icon=\"icon-crosshair\"\n\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t@click=\"onBrowserLocationClick\">\n\t\t\t\t\t{{ t('weather_status', 'Detect location') }}\n\t\t\t\t</ActionButton>\n\t\t\t\t<ActionInput ref=\"addressInput\"\n\t\t\t\t\t:disabled=\"false\"\n\t\t\t\t\ticon=\"icon-rename\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tvalue=\"\"\n\t\t\t\t\t@submit=\"onAddressSubmit\">\n\t\t\t\t\t{{ t('weather_status', 'Set custom address') }}\n\t\t\t\t</ActionInput>\n\t\t\t\t<ActionButton v-show=\"favorites.length > 0\"\n\t\t\t\t\t:icon=\"toggleFavoritesIcon\"\n\t\t\t\t\t@click=\"showFavorites = !showFavorites\">\n\t\t\t\t\t{{ t('weather_status', 'Favorites') }}\n\t\t\t\t</ActionButton>\n\t\t\t\t<ActionButton v-for=\"f in displayedFavorites\"\n\t\t\t\t\t:key=\"f\"\n\t\t\t\t\ticon=\"icon-starred\"\n\t\t\t\t\t@click=\"onFavoriteClick($event, f)\">\n\t\t\t\t\t{{ f }}\n\t\t\t\t</ActionButton>\n\t\t\t</Actions>\n\t\t</div>\n\t</li>\n</template>\n\n<script>\nimport { showError } from '@nextcloud/dialogs'\nimport moment from '@nextcloud/moment'\nimport { getLocale } from '@nextcloud/l10n'\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport ActionInput from '@nextcloud/vue/dist/Components/ActionInput'\nimport ActionLink from '@nextcloud/vue/dist/Components/ActionLink'\nimport ActionSeparator from '@nextcloud/vue/dist/Components/ActionSeparator'\nimport ActionText from '@nextcloud/vue/dist/Components/ActionText'\nimport * as network from './services/weatherStatusService'\n\nconst MODE_BROWSER_LOCATION = 1\nconst MODE_MANUAL_LOCATION = 2\nconst weatherOptions = {\n\tclearsky_day: {\n\t\ticon: 'icon-clearsky-day',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} clear sky later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} clear sky', { temperature, unit }),\n\t},\n\tclearsky_night: {\n\t\ticon: 'icon-clearsky-night',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} clear sky later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} clear sky', { temperature, unit }),\n\t},\n\tcloudy: {\n\t\ticon: 'icon-cloudy',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} cloudy later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} cloudy', { temperature, unit }),\n\t},\n\tfair_day: {\n\t\ticon: 'icon-fair-day',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} fair weather later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} fair weather', { temperature, unit }),\n\t},\n\tfair_night: {\n\t\ticon: 'icon-fair-night',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} fair weather later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} fair weather', { temperature, unit }),\n\t},\n\tpartlycloudy_day: {\n\t\ticon: 'icon-partlycloudy-day',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} partly cloudy later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} partly cloudy', { temperature, unit }),\n\t},\n\tpartlycloudy_night: {\n\t\ticon: 'icon-partlycloudy-night',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} partly cloudy later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} partly cloudy', { temperature, unit }),\n\t},\n\tfog: {\n\t\ticon: 'icon-fog',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} foggy later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} foggy', { temperature, unit }),\n\t},\n\tlightrain: {\n\t\ticon: 'icon-lightrain',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} light rainfall later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} light rainfall', { temperature, unit }),\n\t},\n\train: {\n\t\ticon: 'icon-rain',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} rainfall later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} rainfall', { temperature, unit }),\n\t},\n\theavyrain: {\n\t\ticon: 'icon-heavyrain',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} heavy rainfall later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} heavy rainfall', { temperature, unit }),\n\t},\n\trainshowers_day: {\n\t\ticon: 'icon-rainshowers-day',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} rainfall showers later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} rainfall showers', { temperature, unit }),\n\t},\n\trainshowers_night: {\n\t\ticon: 'icon-rainshowers-night',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} rainfall showers later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} rainfall showers', { temperature, unit }),\n\t},\n\tlightrainshowers_day: {\n\t\ticon: 'icon-light-rainshowers-day',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} light rainfall showers later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} light rainfall showers', { temperature, unit }),\n\t},\n\tlightrainshowers_night: {\n\t\ticon: 'icon-light-rainshowers-night',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} light rainfall showers later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} light rainfall showers', { temperature, unit }),\n\t},\n\theavyrainshowers_day: {\n\t\ticon: 'icon-heavy-rainshowers-day',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} heavy rainfall showers later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} heavy rainfall showers', { temperature, unit }),\n\t},\n\theavyrainshowers_night: {\n\t\ticon: 'icon-heavy-rainshowers-night',\n\t\ttext: (temperature, unit, later = false) => later\n\t\t\t? t('weather_status', '{temperature} {unit} heavy rainfall showers later today', { temperature, unit })\n\t\t\t: t('weather_status', '{temperature} {unit} heavy rainfall showers', { temperature, unit }),\n\t},\n}\n\nexport default {\n\tname: 'App',\n\tcomponents: {\n\t\tActions, ActionButton, ActionInput, ActionLink, ActionSeparator, ActionText,\n\t},\n\tprops: {\n\t\tinline: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tlocale: getLocale(),\n\t\t\tloading: true,\n\t\t\terrorMessage: '',\n\t\t\tmode: MODE_BROWSER_LOCATION,\n\t\t\taddress: null,\n\t\t\tlat: null,\n\t\t\tlon: null,\n\t\t\t// how many hours ahead do we want to see the forecast?\n\t\t\toffset: 5,\n\t\t\tforecasts: [],\n\t\t\tloop: null,\n\t\t\tfavorites: [],\n\t\t\tshowFavorites: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tuseFahrenheitLocale() {\n\t\t\treturn ['en_US', 'en_MH', 'en_FM', 'en_PW', 'en_KY', 'en_LR'].includes(this.locale)\n\t\t},\n\t\ttemperatureUnit() {\n\t\t\treturn this.useFahrenheitLocale ? '°F' : '°C'\n\t\t},\n\t\tlocationText() {\n\t\t\treturn t('weather_status', 'More weather for {adr}', { adr: this.address })\n\t\t},\n\t\ttemperature() {\n\t\t\treturn this.getTemperature(this.forecasts, 0)\n\t\t},\n\t\tfutureTemperature() {\n\t\t\treturn this.getTemperature(this.forecasts, this.offset)\n\t\t},\n\t\tweatherCode() {\n\t\t\treturn this.getWeatherCode(this.forecasts, 0)\n\t\t},\n\t\tfutureWeatherCode() {\n\t\t\treturn this.getWeatherCode(this.forecasts, this.offset)\n\t\t},\n\t\tweatherIcon() {\n\t\t\treturn this.getWeatherIcon(this.weatherCode, this.loading)\n\t\t},\n\t\tfutureWeatherIcon() {\n\t\t\treturn this.getWeatherIcon(this.futureWeatherCode, this.loading)\n\t\t},\n\t\t/**\n\t\t * The message displayed in the top right corner\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tcurrentWeatherMessage() {\n\t\t\tif (this.loading) {\n\t\t\t\treturn t('weather_status', 'Loading weather')\n\t\t\t} else if (this.errorMessage) {\n\t\t\t\treturn this.errorMessage\n\t\t\t} else {\n\t\t\t\treturn this.getWeatherMessage(this.weatherCode, this.temperature)\n\t\t\t}\n\t\t},\n\t\tforecastMessage() {\n\t\t\tif (this.loading) {\n\t\t\t\treturn t('weather_status', 'Loading weather')\n\t\t\t} else {\n\t\t\t\treturn this.getWeatherMessage(this.futureWeatherCode, this.futureTemperature, true)\n\t\t\t}\n\t\t},\n\t\tweatherLinkTarget() {\n\t\t\treturn 'https://www.windy.com/-Rain-thunder-rain?rain,' + this.lat + ',' + this.lon + ',11'\n\t\t},\n\t\tgotWeather() {\n\t\t\treturn this.address && !this.errorMessage\n\t\t},\n\t\taddRemoveFavoriteIcon() {\n\t\t\treturn this.currentAddressIsFavorite\n\t\t\t\t? 'icon-starred'\n\t\t\t\t: 'icon-star'\n\t\t},\n\t\taddRemoveFavoriteText() {\n\t\t\treturn this.currentAddressIsFavorite\n\t\t\t\t? t('weather_status', 'Remove from favorites')\n\t\t\t\t: t('weather_status', 'Add as favorite')\n\t\t},\n\t\tcurrentAddressIsFavorite() {\n\t\t\treturn this.favorites.find((f) => {\n\t\t\t\treturn f === this.address\n\t\t\t})\n\t\t},\n\t\ttoggleFavoritesIcon() {\n\t\t\treturn this.showFavorites\n\t\t\t\t? 'icon-triangle-s'\n\t\t\t\t: 'icon-triangle-e'\n\t\t},\n\t\tdisplayedFavorites() {\n\t\t\treturn this.showFavorites\n\t\t\t\t? this.favorites\n\t\t\t\t: []\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.initWeatherStatus()\n\t},\n\tmethods: {\n\t\tasync initWeatherStatus() {\n\t\t\ttry {\n\t\t\t\tconst loc = await network.getLocation()\n\t\t\t\tthis.lat = loc.lat\n\t\t\t\tthis.lon = loc.lon\n\t\t\t\tthis.address = loc.address\n\t\t\t\tthis.mode = loc.mode\n\n\t\t\t\tif (this.mode === MODE_BROWSER_LOCATION) {\n\t\t\t\t\tthis.askBrowserLocation()\n\t\t\t\t} else if (this.mode === MODE_MANUAL_LOCATION) {\n\t\t\t\t\tthis.startLoop()\n\t\t\t\t}\n\t\t\t\tconst favs = await network.getFavorites()\n\t\t\t\tthis.favorites = favs\n\t\t\t} catch (err) {\n\t\t\t\tif (err?.code === 'ECONNABORTED') {\n\t\t\t\t\tconsole.info('The weather status request was cancelled because the user navigates.')\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tif (err.response && err.response.status === 401) {\n\t\t\t\t\tshowError(t('weather_status', 'You are not logged in.'))\n\t\t\t\t} else {\n\t\t\t\t\tshowError(t('weather_status', 'There was an error getting the weather status information.'))\n\t\t\t\t}\n\t\t\t\tconsole.error(err)\n\t\t\t}\n\t\t},\n\t\tstartLoop() {\n\t\t\tclearInterval(this.loop)\n\t\t\tif (this.lat && this.lon) {\n\t\t\t\tthis.loop = setInterval(() => this.getForecast(), 60 * 1000 * 60)\n\t\t\t\tthis.getForecast()\n\t\t\t} else {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t\taskBrowserLocation() {\n\t\t\tthis.loading = true\n\t\t\tthis.errorMessage = ''\n\t\t\tif (navigator.geolocation && window.isSecureContext) {\n\t\t\t\tnavigator.geolocation.getCurrentPosition((position) => {\n\t\t\t\t\tconsole.debug('browser location success')\n\t\t\t\t\tthis.lat = position.coords.latitude\n\t\t\t\t\tthis.lon = position.coords.longitude\n\t\t\t\t\tthis.saveMode(MODE_BROWSER_LOCATION)\n\t\t\t\t\tthis.mode = MODE_BROWSER_LOCATION\n\t\t\t\t\tthis.saveLocation(this.lat, this.lon)\n\t\t\t\t},\n\t\t\t\t(error) => {\n\t\t\t\t\tconsole.debug('location permission refused')\n\t\t\t\t\tconsole.debug(error)\n\t\t\t\t\tthis.saveMode(MODE_MANUAL_LOCATION)\n\t\t\t\t\tthis.mode = MODE_MANUAL_LOCATION\n\t\t\t\t\t// fallback on what we have if possible\n\t\t\t\t\tif (this.lat && this.lon) {\n\t\t\t\t\t\tthis.startLoop()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.usePersonalAddress()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tconsole.debug('no secure context!')\n\t\t\t\tthis.saveMode(MODE_MANUAL_LOCATION)\n\t\t\t\tthis.mode = MODE_MANUAL_LOCATION\n\t\t\t\tthis.startLoop()\n\t\t\t}\n\t\t},\n\t\tasync getForecast() {\n\t\t\ttry {\n\t\t\t\tthis.forecasts = await network.fetchForecast()\n\t\t\t} catch (err) {\n\t\t\t\tthis.errorMessage = t('weather_status', 'No weather information found')\n\t\t\t\tconsole.debug(err)\n\t\t\t}\n\t\t\tthis.loading = false\n\t\t},\n\t\tasync setAddress(address) {\n\t\t\tthis.loading = true\n\t\t\tthis.errorMessage = ''\n\t\t\ttry {\n\t\t\t\tconst loc = await network.setAddress(address)\n\t\t\t\tif (loc.success) {\n\t\t\t\t\tthis.lat = loc.lat\n\t\t\t\t\tthis.lon = loc.lon\n\t\t\t\t\tthis.address = loc.address\n\t\t\t\t\tthis.mode = MODE_MANUAL_LOCATION\n\t\t\t\t\tthis.startLoop()\n\t\t\t\t} else {\n\t\t\t\t\tthis.errorMessage = t('weather_status', 'Location not found')\n\t\t\t\t\tthis.loading = false\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\tif (err.response && err.response.status === 401) {\n\t\t\t\t\tshowError(t('weather_status', 'You are not logged in.'))\n\t\t\t\t} else {\n\t\t\t\t\tshowError(t('weather_status', 'There was an error setting the location address.'))\n\t\t\t\t}\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t\tasync saveLocation(lat, lon) {\n\t\t\ttry {\n\t\t\t\tconst loc = await network.setLocation(lat, lon)\n\t\t\t\tthis.address = loc.address\n\t\t\t\tthis.startLoop()\n\t\t\t} catch (err) {\n\t\t\t\tif (err.response && err.response.status === 401) {\n\t\t\t\t\tshowError(t('weather_status', 'You are not logged in.'))\n\t\t\t\t} else {\n\t\t\t\t\tshowError(t('weather_status', 'There was an error setting the location.'))\n\t\t\t\t}\n\t\t\t\tconsole.debug(err)\n\t\t\t}\n\t\t},\n\t\tasync saveMode(mode) {\n\t\t\ttry {\n\t\t\t\tawait network.setMode(mode)\n\t\t\t} catch (err) {\n\t\t\t\tif (err.response && err.response.status === 401) {\n\t\t\t\t\tshowError(t('weather_status', 'You are not logged in.'))\n\t\t\t\t} else {\n\t\t\t\t\tshowError(t('weather_status', 'There was an error saving the mode.'))\n\t\t\t\t}\n\t\t\t\tconsole.debug(err)\n\t\t\t}\n\t\t},\n\t\tonBrowserLocationClick() {\n\t\t\tthis.askBrowserLocation()\n\t\t},\n\t\tasync usePersonalAddress() {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tconst loc = await network.usePersonalAddress()\n\t\t\t\tthis.lat = loc.lat\n\t\t\t\tthis.lon = loc.lon\n\t\t\t\tthis.address = loc.address\n\t\t\t\tthis.mode = MODE_MANUAL_LOCATION\n\t\t\t\tthis.startLoop()\n\t\t\t} catch (err) {\n\t\t\t\tif (err.response && err.response.status === 401) {\n\t\t\t\t\tshowError(t('weather_status', 'You are not logged in.'))\n\t\t\t\t} else {\n\t\t\t\t\tshowError(t('weather_status', 'There was an error using personal address.'))\n\t\t\t\t}\n\t\t\t\tconsole.debug(err)\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t\tonAddressSubmit() {\n\t\t\tconst newAddress = this.$refs.addressInput.$el.querySelector('input[type=\"text\"]').value\n\t\t\tthis.setAddress(newAddress)\n\t\t},\n\t\tgetLocalizedTemperature(celcius) {\n\t\t\treturn this.useFahrenheitLocale\n\t\t\t\t? (celcius * (9 / 5)) + 32\n\t\t\t\t: celcius\n\t\t},\n\t\tonAddRemoveFavoriteClick() {\n\t\t\tconst currentIsFavorite = this.currentAddressIsFavorite\n\t\t\tif (currentIsFavorite) {\n\t\t\t\tconst i = this.favorites.indexOf(currentIsFavorite)\n\t\t\t\tif (i !== -1) {\n\t\t\t\t\tthis.favorites.splice(i, 1)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.favorites.push(this.address)\n\t\t\t}\n\t\t\tnetwork.saveFavorites(this.favorites)\n\t\t},\n\t\tonFavoriteClick(e, favAddress) {\n\t\t\t// clicked on the icon\n\t\t\tif (e.target.classList.contains('action-button__icon')) {\n\t\t\t\tconst i = this.favorites.indexOf(favAddress)\n\t\t\t\tif (i !== -1) {\n\t\t\t\t\tthis.favorites.splice(i, 1)\n\t\t\t\t}\n\t\t\t\tnetwork.saveFavorites(this.favorites)\n\t\t\t} else if (favAddress !== this.address) {\n\t\t\t\t// clicked on the text\n\t\t\t\tthis.setAddress(favAddress)\n\t\t\t}\n\t\t},\n\t\tformatTime(time) {\n\t\t\treturn moment(time).format('LT')\n\t\t},\n\t\tgetTemperature(forecasts, offset = 0) {\n\t\t\treturn forecasts.length > offset ? forecasts[offset].data.instant.details.air_temperature : ''\n\t\t},\n\t\tgetWeatherCode(forecasts, offset = 0) {\n\t\t\treturn forecasts.length > offset ? forecasts[offset].data.next_1_hours.summary.symbol_code : ''\n\t\t},\n\t\tgetWeatherIcon(weatherCode, loading) {\n\t\t\tif (loading) {\n\t\t\t\treturn 'icon-loading-small'\n\t\t\t} else {\n\t\t\t\treturn weatherCode && weatherCode in weatherOptions\n\t\t\t\t\t? weatherOptions[weatherCode].icon\n\t\t\t\t\t: 'icon-fair-day'\n\t\t\t}\n\t\t},\n\t\tgetWeatherMessage(weatherCode, temperature, later = false) {\n\t\t\treturn weatherCode && weatherCode in weatherOptions\n\t\t\t\t? weatherOptions[weatherCode].text(\n\t\t\t\t\tMath.round(this.getLocalizedTemperature(temperature)),\n\t\t\t\t\tthis.temperatureUnit,\n\t\t\t\t\tlater\n\t\t\t\t)\n\t\t\t\t: t('weather_status', 'Set location for weather')\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n.icon-weather-status {\n\tbackground-image: url('./../img/app-dark.svg');\n}\nbody.theme--dark .icon-weather-status {\n\tbackground-image: url('./../img/app.svg');\n}\n.icon-clearsky-day {\n\tbackground-image: url('./../img/sun.svg');\n}\n.icon-clearsky-night {\n\tbackground-image: url('./../img/moon.svg');\n}\n.icon-cloudy {\n\tbackground-image: url('./../img/cloud-cloud.svg');\n}\n.icon-fair-day {\n\tbackground-image: url('./../img/sun-small-cloud.svg');\n}\n.icon-fair-night {\n\tbackground-image: url('./../img/moon-small-cloud.svg');\n}\n.icon-partlycloudy-day {\n\tbackground-image: url('./../img/sun-cloud.svg');\n}\n.icon-partlycloudy-night {\n\tbackground-image: url('./../img/moon-cloud.svg');\n}\n.icon-fog {\n\tbackground-image: url('./../img/fog.svg');\n}\n.icon-lightrain {\n\tbackground-image: url('./../img/light-rain.svg');\n}\n.icon-rain {\n\tbackground-image: url('./../img/rain.svg');\n}\n.icon-heavyrain {\n\tbackground-image: url('./../img/heavy-rain.svg');\n}\n.icon-light-rainshowers-day {\n\tbackground-image: url('./../img/sun-cloud-light-rain.svg');\n}\n.icon-light-rainshowers-night {\n\tbackground-image: url('./../img/moon-cloud-light-rain.svg');\n}\n.icon-rainshowers-day {\n\tbackground-image: url('./../img/sun-cloud-rain.svg');\n}\n.icon-rainshowers-night {\n\tbackground-image: url('./../img/moon-cloud-rain.svg');\n}\n.icon-heavy-rainshowers-day {\n\tbackground-image: url('./../img/sun-cloud-heavy-rain.svg');\n}\n.icon-heavy-rainshowers-night {\n\tbackground-image: url('./../img/moon-cloud-heavy-rain.svg');\n}\n.icon-crosshair {\n background-color: var(--color-main-text);\n padding: 0 !important;\n mask: url(./../img/cross.svg) no-repeat;\n mask-size: 18px 18px;\n mask-position: center;\n -webkit-mask: url(./../img/cross.svg) no-repeat;\n -webkit-mask-size: 18px 18px;\n -webkit-mask-position: center;\n min-width: 44px !important;\n min-height: 44px !important;\n}\n\nli:not(.inline) .weather-status-menu-item {\n\t&__header {\n\t\tdisplay: block;\n\t\talign-items: center;\n\t\tcolor: var(--color-main-text);\n\t\tpadding: 10px 12px 5px 12px;\n\t\tbox-sizing: border-box;\n\t\topacity: 1;\n\t\twhite-space: nowrap;\n\t\twidth: 100%;\n\t\ttext-align: center;\n\t\tmax-width: 250px;\n\t\ttext-overflow: ellipsis;\n\t\tmin-width: 175px;\n\t}\n\n\t&__subheader {\n\t\twidth: 100%;\n\n\t\t.trigger > .icon {\n\t\t\tbackground-color: var(--color-main-background);\n\t\t\tbackground-size: 16px;\n\t\t\tborder: 0;\n\t\t\tborder-radius: 0;\n\t\t\tfont-weight: normal;\n\t\t\tpadding-left: 40px;\n\n\t\t\t&:hover,\n\t\t\t&:focus {\n\t\t\t\tbox-shadow: inset 4px 0 var(--color-primary-element);\n\t\t\t}\n\t\t}\n\t}\n}\n\n.inline .weather-status-menu-item__subheader {\n\twidth: 100%;\n\n\t.trigger > .icon {\n\t\tbackground-size: 16px;\n\t\tborder: 0;\n\t\tborder-radius: var(--border-radius-pill);\n\t\tfont-weight: normal;\n\t\tpadding-left: 40px;\n\n\t\t&.icon-loading-small {\n\t\t\t&::after {\n\t\t\t\tleft: 21px;\n\t\t\t}\n\t\t}\n\t}\n}\n\nli {\n\tlist-style-type: none;\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.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!./App.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!./App.vue?vue&type=style&index=0&lang=scss&\";\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!./App.vue?vue&type=style&index=0&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=6acc2acd&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{class:{ inline: _vm.inline }},[_c('div',{attrs:{\"id\":\"weather-status-menu-item\"}},[_c('Actions',{staticClass:\"weather-status-menu-item__subheader\",attrs:{\"default-icon\":_vm.weatherIcon,\"menu-title\":_vm.currentWeatherMessage}},[(_vm.gotWeather)?_c('ActionText',{attrs:{\"icon\":_vm.futureWeatherIcon}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.forecastMessage)+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.gotWeather)?_c('ActionLink',{attrs:{\"icon\":\"icon-address\",\"target\":\"_blank\",\"href\":_vm.weatherLinkTarget,\"close-after-click\":true}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.locationText)+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.gotWeather)?_c('ActionButton',{attrs:{\"icon\":_vm.addRemoveFavoriteIcon},on:{\"click\":_vm.onAddRemoveFavoriteClick}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.addRemoveFavoriteText)+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.address && !_vm.errorMessage)?_c('ActionSeparator'):_vm._e(),_vm._v(\" \"),_c('ActionButton',{attrs:{\"icon\":\"icon-crosshair\",\"close-after-click\":true},on:{\"click\":_vm.onBrowserLocationClick}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('weather_status', 'Detect location'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionInput',{ref:\"addressInput\",attrs:{\"disabled\":false,\"icon\":\"icon-rename\",\"type\":\"text\",\"value\":\"\"},on:{\"submit\":_vm.onAddressSubmit}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('weather_status', 'Set custom address'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionButton',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.favorites.length > 0),expression:\"favorites.length > 0\"}],attrs:{\"icon\":_vm.toggleFavoritesIcon},on:{\"click\":function($event){_vm.showFavorites = !_vm.showFavorites}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('weather_status', 'Favorites'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_vm._l((_vm.displayedFavorites),function(f){return _c('ActionButton',{key:f,attrs:{\"icon\":\"icon-starred\"},on:{\"click\":function($event){return _vm.onFavoriteClick($event, f)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(f)+\"\\n\\t\\t\\t\")])})],2)],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2016 Julien Veyssier <eneiluj@posteo.net>\n *\n * @author Julien Veyssier <eneiluj@posteo.net>\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 */\n\nimport Vue from 'vue'\nimport { getRequestToken } from '@nextcloud/auth'\nimport App from './App'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nVue.prototype.t = t\n\ndocument.addEventListener('DOMContentLoaded', function() {\n\tif (!OCA.Dashboard) {\n\t\treturn\n\t}\n\n\tOCA.Dashboard.registerStatus('weather', (el) => {\n\t\tconst Dashboard = Vue.extend(App)\n\t\treturn new Dashboard({\n\t\t\tpropsData: {\n\t\t\t\tinline: true,\n\t\t\t},\n\t\t}).$mount(el)\n\t})\n})\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\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"./../img/app-dark.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"./../img/app.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(\"./../img/sun.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_3___ = new URL(\"./../img/moon.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_4___ = new URL(\"./../img/cloud-cloud.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_5___ = new URL(\"./../img/sun-small-cloud.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_6___ = new URL(\"./../img/moon-small-cloud.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_7___ = new URL(\"./../img/sun-cloud.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_8___ = new URL(\"./../img/moon-cloud.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_9___ = new URL(\"./../img/fog.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_10___ = new URL(\"./../img/light-rain.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_11___ = new URL(\"./../img/rain.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_12___ = new URL(\"./../img/heavy-rain.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_13___ = new URL(\"./../img/sun-cloud-light-rain.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_14___ = new URL(\"./../img/moon-cloud-light-rain.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_15___ = new URL(\"./../img/sun-cloud-rain.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_16___ = new URL(\"./../img/moon-cloud-rain.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_17___ = new URL(\"./../img/sun-cloud-heavy-rain.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_18___ = new URL(\"./../img/moon-cloud-heavy-rain.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_19___ = new URL(\"./../img/cross.svg\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\nvar ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___);\nvar ___CSS_LOADER_URL_REPLACEMENT_5___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_5___);\nvar ___CSS_LOADER_URL_REPLACEMENT_6___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_6___);\nvar ___CSS_LOADER_URL_REPLACEMENT_7___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___);\nvar ___CSS_LOADER_URL_REPLACEMENT_8___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_8___);\nvar ___CSS_LOADER_URL_REPLACEMENT_9___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_9___);\nvar ___CSS_LOADER_URL_REPLACEMENT_10___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_10___);\nvar ___CSS_LOADER_URL_REPLACEMENT_11___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_11___);\nvar ___CSS_LOADER_URL_REPLACEMENT_12___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_12___);\nvar ___CSS_LOADER_URL_REPLACEMENT_13___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_13___);\nvar ___CSS_LOADER_URL_REPLACEMENT_14___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_14___);\nvar ___CSS_LOADER_URL_REPLACEMENT_15___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_15___);\nvar ___CSS_LOADER_URL_REPLACEMENT_16___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_16___);\nvar ___CSS_LOADER_URL_REPLACEMENT_17___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_17___);\nvar ___CSS_LOADER_URL_REPLACEMENT_18___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_18___);\nvar ___CSS_LOADER_URL_REPLACEMENT_19___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_19___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".icon-weather-status{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \")}body.theme--dark .icon-weather-status{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \")}.icon-clearsky-day{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \")}.icon-clearsky-night{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \")}.icon-cloudy{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \")}.icon-fair-day{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_5___ + \")}.icon-fair-night{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_6___ + \")}.icon-partlycloudy-day{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_7___ + \")}.icon-partlycloudy-night{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_8___ + \")}.icon-fog{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \")}.icon-lightrain{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_10___ + \")}.icon-rain{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_11___ + \")}.icon-heavyrain{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_12___ + \")}.icon-light-rainshowers-day{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_13___ + \")}.icon-light-rainshowers-night{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \")}.icon-rainshowers-day{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \")}.icon-rainshowers-night{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_16___ + \")}.icon-heavy-rainshowers-day{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_17___ + \")}.icon-heavy-rainshowers-night{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_18___ + \")}.icon-crosshair{background-color:var(--color-main-text);padding:0 !important;mask:url(\" + ___CSS_LOADER_URL_REPLACEMENT_19___ + \") no-repeat;mask-size:18px 18px;mask-position:center;-webkit-mask:url(\" + ___CSS_LOADER_URL_REPLACEMENT_19___ + \") no-repeat;-webkit-mask-size:18px 18px;-webkit-mask-position:center;min-width:44px !important;min-height:44px !important}li:not(.inline) .weather-status-menu-item__header{display:block;align-items:center;color:var(--color-main-text);padding:10px 12px 5px 12px;box-sizing:border-box;opacity:1;white-space:nowrap;width:100%;text-align:center;max-width:250px;text-overflow:ellipsis;min-width:175px}li:not(.inline) .weather-status-menu-item__subheader{width:100%}li:not(.inline) .weather-status-menu-item__subheader .trigger>.icon{background-color:var(--color-main-background);background-size:16px;border:0;border-radius:0;font-weight:normal;padding-left:40px}li:not(.inline) .weather-status-menu-item__subheader .trigger>.icon:hover,li:not(.inline) .weather-status-menu-item__subheader .trigger>.icon:focus{box-shadow:inset 4px 0 var(--color-primary-element)}.inline .weather-status-menu-item__subheader{width:100%}.inline .weather-status-menu-item__subheader .trigger>.icon{background-size:16px;border:0;border-radius:var(--border-radius-pill);font-weight:normal;padding-left:40px}.inline .weather-status-menu-item__subheader .trigger>.icon.icon-loading-small::after{left:21px}li{list-style-type:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/weather_status/src/App.vue\"],\"names\":[],\"mappings\":\"AAwgBA,qBACC,wDAAA,CAED,sCACC,wDAAA,CAED,mBACC,wDAAA,CAED,qBACC,wDAAA,CAED,aACC,wDAAA,CAED,eACC,wDAAA,CAED,iBACC,wDAAA,CAED,uBACC,wDAAA,CAED,yBACC,wDAAA,CAED,UACC,wDAAA,CAED,gBACC,yDAAA,CAED,WACC,yDAAA,CAED,gBACC,yDAAA,CAED,4BACC,yDAAA,CAED,8BACC,yDAAA,CAED,sBACC,yDAAA,CAED,wBACC,yDAAA,CAED,4BACC,yDAAA,CAED,8BACC,yDAAA,CAED,gBACI,uCAAA,CACA,oBAAA,CACA,uDAAA,CACA,mBAAA,CACA,oBAAA,CACA,+DAAA,CACA,2BAAA,CACA,4BAAA,CACA,yBAAA,CACA,0BAAA,CAIH,kDACC,aAAA,CACA,kBAAA,CACA,4BAAA,CACA,0BAAA,CACA,qBAAA,CACA,SAAA,CACA,kBAAA,CACA,UAAA,CACA,iBAAA,CACA,eAAA,CACA,sBAAA,CACA,eAAA,CAGD,qDACC,UAAA,CAEA,oEACC,6CAAA,CACA,oBAAA,CACA,QAAA,CACA,eAAA,CACA,kBAAA,CACA,iBAAA,CAEA,oJAEC,mDAAA,CAMJ,6CACC,UAAA,CAEA,4DACC,oBAAA,CACA,QAAA,CACA,uCAAA,CACA,kBAAA,CACA,iBAAA,CAGC,sFACC,SAAA,CAMJ,GACC,oBAAA\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.icon-weather-status {\\n\\tbackground-image: url('./../img/app-dark.svg');\\n}\\nbody.theme--dark .icon-weather-status {\\n\\tbackground-image: url('./../img/app.svg');\\n}\\n.icon-clearsky-day {\\n\\tbackground-image: url('./../img/sun.svg');\\n}\\n.icon-clearsky-night {\\n\\tbackground-image: url('./../img/moon.svg');\\n}\\n.icon-cloudy {\\n\\tbackground-image: url('./../img/cloud-cloud.svg');\\n}\\n.icon-fair-day {\\n\\tbackground-image: url('./../img/sun-small-cloud.svg');\\n}\\n.icon-fair-night {\\n\\tbackground-image: url('./../img/moon-small-cloud.svg');\\n}\\n.icon-partlycloudy-day {\\n\\tbackground-image: url('./../img/sun-cloud.svg');\\n}\\n.icon-partlycloudy-night {\\n\\tbackground-image: url('./../img/moon-cloud.svg');\\n}\\n.icon-fog {\\n\\tbackground-image: url('./../img/fog.svg');\\n}\\n.icon-lightrain {\\n\\tbackground-image: url('./../img/light-rain.svg');\\n}\\n.icon-rain {\\n\\tbackground-image: url('./../img/rain.svg');\\n}\\n.icon-heavyrain {\\n\\tbackground-image: url('./../img/heavy-rain.svg');\\n}\\n.icon-light-rainshowers-day {\\n\\tbackground-image: url('./../img/sun-cloud-light-rain.svg');\\n}\\n.icon-light-rainshowers-night {\\n\\tbackground-image: url('./../img/moon-cloud-light-rain.svg');\\n}\\n.icon-rainshowers-day {\\n\\tbackground-image: url('./../img/sun-cloud-rain.svg');\\n}\\n.icon-rainshowers-night {\\n\\tbackground-image: url('./../img/moon-cloud-rain.svg');\\n}\\n.icon-heavy-rainshowers-day {\\n\\tbackground-image: url('./../img/sun-cloud-heavy-rain.svg');\\n}\\n.icon-heavy-rainshowers-night {\\n\\tbackground-image: url('./../img/moon-cloud-heavy-rain.svg');\\n}\\n.icon-crosshair {\\n background-color: var(--color-main-text);\\n padding: 0 !important;\\n mask: url(./../img/cross.svg) no-repeat;\\n mask-size: 18px 18px;\\n mask-position: center;\\n -webkit-mask: url(./../img/cross.svg) no-repeat;\\n -webkit-mask-size: 18px 18px;\\n -webkit-mask-position: center;\\n min-width: 44px !important;\\n min-height: 44px !important;\\n}\\n\\nli:not(.inline) .weather-status-menu-item {\\n\\t&__header {\\n\\t\\tdisplay: block;\\n\\t\\talign-items: center;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tpadding: 10px 12px 5px 12px;\\n\\t\\tbox-sizing: border-box;\\n\\t\\topacity: 1;\\n\\t\\twhite-space: nowrap;\\n\\t\\twidth: 100%;\\n\\t\\ttext-align: center;\\n\\t\\tmax-width: 250px;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\tmin-width: 175px;\\n\\t}\\n\\n\\t&__subheader {\\n\\t\\twidth: 100%;\\n\\n\\t\\t.trigger > .icon {\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tbackground-size: 16px;\\n\\t\\t\\tborder: 0;\\n\\t\\t\\tborder-radius: 0;\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t\\tpadding-left: 40px;\\n\\n\\t\\t\\t&:hover,\\n\\t\\t\\t&:focus {\\n\\t\\t\\t\\tbox-shadow: inset 4px 0 var(--color-primary-element);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\n.inline .weather-status-menu-item__subheader {\\n\\twidth: 100%;\\n\\n\\t.trigger > .icon {\\n\\t\\tbackground-size: 16px;\\n\\t\\tborder: 0;\\n\\t\\tborder-radius: var(--border-radius-pill);\\n\\t\\tfont-weight: normal;\\n\\t\\tpadding-left: 40px;\\n\\n\\t\\t&.icon-loading-small {\\n\\t\\t\\t&::after {\\n\\t\\t\\t\\tleft: 21px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\nli {\\n\\tlist-style-type: none;\\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 = 5275;","__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\t5275: 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));","__webpack_require__.nc = undefined;","// 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__(76149); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","setLocation","lat","lon","url","generateOcsUrl","HttpClient","address","response","data","ocs","setAddress","setMode","mode","usePersonalAddress","getLocation","fetchForecast","getFavorites","saveFavorites","favorites","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_c","_self","class","inline","attrs","staticClass","weatherIcon","currentWeatherMessage","futureWeatherIcon","_v","_s","forecastMessage","_e","weatherLinkTarget","locationText","addRemoveFavoriteIcon","on","onAddRemoveFavoriteClick","addRemoveFavoriteText","errorMessage","onBrowserLocationClick","t","ref","onAddressSubmit","directives","name","rawName","value","length","expression","toggleFavoritesIcon","$event","showFavorites","_l","f","key","onFavoriteClick","__webpack_nonce__","btoa","getRequestToken","Vue","document","addEventListener","OCA","Dashboard","registerStatus","el","App","propsData","$mount","___CSS_LOADER_URL_IMPORT_0___","URL","___CSS_LOADER_URL_IMPORT_1___","___CSS_LOADER_URL_IMPORT_2___","___CSS_LOADER_URL_IMPORT_3___","___CSS_LOADER_URL_IMPORT_4___","___CSS_LOADER_URL_IMPORT_5___","___CSS_LOADER_URL_IMPORT_6___","___CSS_LOADER_URL_IMPORT_7___","___CSS_LOADER_URL_IMPORT_8___","___CSS_LOADER_URL_IMPORT_9___","___CSS_LOADER_URL_IMPORT_10___","___CSS_LOADER_URL_IMPORT_11___","___CSS_LOADER_URL_IMPORT_12___","___CSS_LOADER_URL_IMPORT_13___","___CSS_LOADER_URL_IMPORT_14___","___CSS_LOADER_URL_IMPORT_15___","___CSS_LOADER_URL_IMPORT_16___","___CSS_LOADER_URL_IMPORT_17___","___CSS_LOADER_URL_IMPORT_18___","___CSS_LOADER_URL_IMPORT_19___","___CSS_LOADER_EXPORT___","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_REPLACEMENT_1___","___CSS_LOADER_URL_REPLACEMENT_2___","___CSS_LOADER_URL_REPLACEMENT_3___","___CSS_LOADER_URL_REPLACEMENT_4___","___CSS_LOADER_URL_REPLACEMENT_5___","___CSS_LOADER_URL_REPLACEMENT_6___","___CSS_LOADER_URL_REPLACEMENT_7___","___CSS_LOADER_URL_REPLACEMENT_8___","___CSS_LOADER_URL_REPLACEMENT_9___","___CSS_LOADER_URL_REPLACEMENT_10___","___CSS_LOADER_URL_REPLACEMENT_11___","___CSS_LOADER_URL_REPLACEMENT_12___","___CSS_LOADER_URL_REPLACEMENT_13___","___CSS_LOADER_URL_REPLACEMENT_14___","___CSS_LOADER_URL_REPLACEMENT_15___","___CSS_LOADER_URL_REPLACEMENT_16___","___CSS_LOADER_URL_REPLACEMENT_17___","___CSS_LOADER_URL_REPLACEMENT_18___","___CSS_LOADER_URL_REPLACEMENT_19___","push","__webpack_module_cache__","moduleId","cachedModule","undefined","loaded","__webpack_modules__","call","m","amdD","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","splice","r","n","getter","__esModule","d","a","definition","defineProperty","enumerable","get","g","globalThis","Function","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/workflowengine-workflowengine.js b/dist/workflowengine-workflowengine.js
index 9db14ce5db7..a7f3f195a45 100644
--- a/dist/workflowengine-workflowengine.js
+++ b/dist/workflowengine-workflowengine.js
@@ -1,3 +1,3 @@
/*! For license information please see workflowengine-workflowengine.js.LICENSE.txt */
-!function(){var n,e={82730:function(n,e,i){"use strict";var o=i(20144),r=i(20629),a=i(4820),s=i(16453),l=i(79753),c=0===(0,s.loadState)("workflowengine","scope")?"global":"user",u=function(t){return(0,l.generateOcsUrl)("apps/workflowengine/api/v1/workflows/{scopeValue}",{scopeValue:c})+t+"?format=json"},p=i(10128),d=i.n(p);function A(t,n,e,i,o,r,a){try{var s=t[r](a),l=s.value}catch(t){return void e(t)}s.done?n(l):Promise.resolve(l).then(i,o)}function m(t){return function(){var n=this,e=arguments;return new Promise((function(i,o){var r=t.apply(n,e);function a(t){A(r,i,o,a,s,"next",t)}function s(t){A(r,i,o,a,s,"throw",t)}a(void 0)}))}}function f(t,n){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable}))),e.push.apply(e,i)}return e}function h(t){for(var n=1;n<arguments.length;n++){var e=null!=arguments[n]?arguments[n]:{};n%2?f(Object(e),!0).forEach((function(n){g(t,n,e[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):f(Object(e)).forEach((function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))}))}return t}function g(t,n,e){return n in t?Object.defineProperty(t,n,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[n]=e,t}o.default.use(r.ZP);var v=new r.yh({state:{rules:[],scope:(0,s.loadState)("workflowengine","scope"),appstoreEnabled:(0,s.loadState)("workflowengine","appstoreenabled"),operations:(0,s.loadState)("workflowengine","operators"),plugins:o.default.observable({checks:{},operators:{}}),entities:(0,s.loadState)("workflowengine","entities"),events:(0,s.loadState)("workflowengine","entities").map((function(t){return t.events.map((function(n){return h({id:"".concat(t.id,"::").concat(n.eventName),entity:t},n)}))})).flat(),checks:(0,s.loadState)("workflowengine","checks")},mutations:{addRule:function(t,n){t.rules.push(h(h({},n),{},{valid:!0}))},updateRule:function(t,n){var e=t.rules.findIndex((function(t){return n.id===t.id})),i=Object.assign({},n);o.default.set(t.rules,e,i)},removeRule:function(t,n){var e=t.rules.findIndex((function(t){return n.id===t.id}));t.rules.splice(e,1)},addPluginCheck:function(t,n){o.default.set(t.plugins.checks,n.class,n)},addPluginOperator:function(t,n){n=Object.assign({color:"var(--color-primary-element)"},n,t.operations[n.id]||{}),void 0!==t.operations[n.id]&&o.default.set(t.operations,n.id,n)}},actions:{fetchRules:function(t){return m(regeneratorRuntime.mark((function n(){var e,i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,a.default.get(u(""));case 2:e=n.sent,i=e.data,Object.values(i.ocs.data).flat().forEach((function(n){t.commit("addRule",n)}));case 5:case"end":return n.stop()}}),n)})))()},createNewRule:function(t,n){var e=null,i=[];!1===n.isComplex&&""===n.fixedEntity&&(i=[(e=(e=t.state.entities.find((function(t){return n.entities&&n.entities[0]===t.id})))||Object.values(t.state.entities)[0]).events[0].eventName]),t.commit("addRule",{id:-(new Date).getTime(),class:n.id,entity:e?e.id:n.fixedEntity,events:i,name:"",checks:[{class:null,operator:null,value:""}],operation:n.operation||""})},updateRule:function(t,n){t.commit("updateRule",h(h({},n),{},{events:"string"==typeof n.events?JSON.parse(n.events):n.events}))},removeRule:function(t,n){t.commit("removeRule",n)},pushUpdateRule:function(t,n){return m(regeneratorRuntime.mark((function e(){var i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(0!==t.state.scope){e.next=3;break}return e.next=3,d()();case 3:if(!(n.id<0)){e.next=9;break}return e.next=6,a.default.post(u(""),n);case 6:i=e.sent,e.next=12;break;case 9:return e.next=11,a.default.put(u("/".concat(n.id)),n);case 11:i=e.sent;case 12:o.default.set(n,"id",i.data.ocs.data.id),t.commit("updateRule",n);case 14:case"end":return e.stop()}}),e)})))()},deleteRule:function(t,n){return m(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,d()();case 2:return e.next=4,a.default.delete(u("/".concat(n.id)));case 4:t.commit("removeRule",n);case 5:case"end":return e.stop()}}),e)})))()},setValid:function(t,n){var e=n.rule,i=n.valid;e.valid=i,t.commit("updateRule",e)}},getters:{getRules:function(t){return t.rules.filter((function(n){return void 0!==t.operations[n.class]})).sort((function(t,n){return t.id-n.id||n.class-t.class}))},getOperationForRule:function(t){return function(n){return t.operations[n.class]}},getEntityForOperation:function(t){return function(n){return t.entities.find((function(t){return n.fixedEntity===t.id}))}},getEventsForOperation:function(t){return function(n){return t.events}},getChecksForEntity:function(t){return function(n){return Object.values(t.checks).filter((function(t){return t.supportedEntities.indexOf(n)>-1||0===t.supportedEntities.length})).map((function(n){return t.plugins.checks[n.id]})).reduce((function(t,n){return t[n.class]=n,t}),{})}}}}),C=i(15168),w=i.n(C),b=i(79440),x=i.n(b),k=i(56286),y=i.n(k),_=i(7811),j=i.n(_),O=i(26932),R={name:"Event",components:{Multiselect:j()},props:{rule:{type:Object,required:!0}},computed:{entity:function(){return this.$store.getters.getEntityForOperation(this.operation)},operation:function(){return this.$store.getters.getOperationForRule(this.rule)},allEvents:function(){return this.$store.getters.getEventsForOperation(this.operation)},currentEvent:function(){var t=this;return this.allEvents.filter((function(n){return n.entity.id===t.rule.entity&&-1!==t.rule.events.indexOf(n.eventName)}))}},methods:{updateEvent:function(n){if(0!==n.length){var e,i=this.rule.entity,o=n.map((function(t){return t.entity.id})).filter((function(t,n,e){return e.indexOf(t)===n}));e=o.length>1?o.filter((function(t){return t!==i}))[0]:o[0],this.$set(this.rule,"entity",e),this.$set(this.rule,"events",n.filter((function(t){return t.entity.id===e})).map((function(t){return t.eventName}))),this.$emit("update",this.rule)}else(0,O.K2)(t("workflowengine","At least one event must be selected"))}}},V=i(93379),E=i.n(V),P=i(7795),B=i.n(P),T=i(90569),S=i.n(T),D=i(3565),F=i.n(D),$=i(19216),U=i.n($),M=i(44589),I=i.n(M),z=i(71605),G={};G.styleTagTransform=I(),G.setAttributes=F(),G.insert=S().bind(null,"head"),G.domAPI=B(),G.insertStyleElement=U(),E()(z.Z,G),z.Z&&z.Z.locals&&z.Z.locals;var L=i(51900),N=(0,L.Z)(R,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{staticClass:"event"},[t.operation.isComplex&&""!==t.operation.fixedEntity?e("div",{staticClass:"isComplex"},[e("img",{staticClass:"option__icon",attrs:{src:t.entity.icon}}),t._v(" "),e("span",{staticClass:"option__title option__title_single"},[t._v(t._s(t.operation.triggerHint))])]):e("Multiselect",{attrs:{value:t.currentEvent,options:t.allEvents,"track-by":"id",multiple:!0,"auto-limit":!1,disabled:t.allEvents.length<=1},on:{input:t.updateEvent},scopedSlots:t._u([{key:"selection",fn:function(n){var i=n.values,o=n.isOpen;return[i.length&&!o?e("div",{staticClass:"eventlist"},[e("img",{staticClass:"option__icon",attrs:{src:i[0].entity.icon}}),t._v(" "),t._l(i,(function(n,o){return e("span",{key:n.id,staticClass:"text option__title option__title_single"},[t._v(t._s(n.displayName)+" "),o+1<i.length?e("span",[t._v(", ")]):t._e()])}))],2):t._e()]}},{key:"option",fn:function(n){return[e("img",{staticClass:"option__icon",attrs:{src:n.option.entity.icon}}),t._v(" "),e("span",{staticClass:"option__title"},[t._v(t._s(n.option.displayName))])]}}])})],1)}),[],!1,null,"f3569276",null).exports,Z=i(2649),W=i.n(Z),q={name:"Check",components:{ActionButton:y(),Actions:x(),Multiselect:j()},directives:{ClickOutside:W()},props:{check:{type:Object,required:!0},rule:{type:Object,required:!0}},data:function(){return{deleteVisible:!1,currentOption:null,currentOperator:null,options:[],valid:!1}},computed:{checks:function(){return this.$store.getters.getChecksForEntity(this.rule.entity)},operators:function(){if(!this.currentOption)return[];var t=this.checks[this.currentOption.class].operators;return"function"==typeof t?t(this.check):t},currentComponent:function(){return this.currentOption?this.checks[this.currentOption.class].component:[]},valuePlaceholder:function(){return this.currentOption&&this.currentOption.placeholder?this.currentOption.placeholder(this.check):""}},watch:{"check.operator":function(){this.validate()}},mounted:function(){var t=this;this.options=Object.values(this.checks),this.currentOption=this.checks[this.check.class],this.currentOperator=this.operators.find((function(n){return n.operator===t.check.operator})),null===this.check.class&&this.$nextTick((function(){return t.$refs.checkSelector.$el.focus()})),this.validate()},methods:{showDelete:function(){this.deleteVisible=!0},hideDelete:function(){this.deleteVisible=!1},validate:function(){this.valid=!0,this.currentOption&&this.currentOption.validate&&(this.valid=!!this.currentOption.validate(this.check)),this.check.invalid=!this.valid,this.$emit("validate",this.valid)},updateCheck:function(){var t=this,n=this.operators.findIndex((function(n){return t.check.operator===n.operator}));this.check.class===this.currentOption.class&&-1!==n||(this.currentOperator=this.operators[0]),this.check.class=this.currentOption.class,this.check.operator=this.currentOperator.operator,this.validate(),this.$emit("update",this.check)}}},Y=i(38530),H={};H.styleTagTransform=I(),H.setAttributes=F(),H.insert=S().bind(null,"head"),H.domAPI=B(),H.insertStyleElement=U(),E()(Y.Z,H),Y.Z&&Y.Z.locals&&Y.Z.locals;var J=(0,L.Z)(q,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{directives:[{name:"click-outside",rawName:"v-click-outside",value:t.hideDelete,expression:"hideDelete"}],staticClass:"check",on:{click:t.showDelete}},[e("Multiselect",{ref:"checkSelector",attrs:{options:t.options,label:"name","track-by":"class","allow-empty":!1,placeholder:t.t("workflowengine","Select a filter")},on:{input:t.updateCheck},model:{value:t.currentOption,callback:function(n){t.currentOption=n},expression:"currentOption"}}),t._v(" "),e("Multiselect",{staticClass:"comparator",attrs:{disabled:!t.currentOption,options:t.operators,label:"name","track-by":"operator","allow-empty":!1,placeholder:t.t("workflowengine","Select a comparator")},on:{input:t.updateCheck},model:{value:t.currentOperator,callback:function(n){t.currentOperator=n},expression:"currentOperator"}}),t._v(" "),t.currentOperator&&t.currentComponent?e(t.currentOption.component,{tag:"component",staticClass:"option",attrs:{disabled:!t.currentOption,check:t.check},on:{input:t.updateCheck,valid:function(n){(t.valid=!0)&&t.validate()},invalid:function(n){!(t.valid=!1)&&t.validate()}},model:{value:t.check.value,callback:function(n){t.$set(t.check,"value",n)},expression:"check.value"}}):e("input",{directives:[{name:"model",rawName:"v-model",value:t.check.value,expression:"check.value"}],staticClass:"option",class:{invalid:!t.valid},attrs:{type:"text",disabled:!t.currentOption,placeholder:t.valuePlaceholder},domProps:{value:t.check.value},on:{input:[function(n){n.target.composing||t.$set(t.check,"value",n.target.value)},t.updateCheck]}}),t._v(" "),t.deleteVisible||!t.currentOption?e("Actions",[e("ActionButton",{attrs:{icon:"icon-close"},on:{click:function(n){return t.$emit("remove")}}})],1):t._e()],1)}),[],!1,null,"70cc784d",null).exports,Q={name:"Operation",props:{operation:{type:Object,required:!0},colored:{type:Boolean,default:!0}}},K=i(58444),X={};X.styleTagTransform=I(),X.setAttributes=F(),X.insert=S().bind(null,"head"),X.domAPI=B(),X.insertStyleElement=U(),E()(K.Z,X),K.Z&&K.Z.locals&&K.Z.locals;var tt=(0,L.Z)(Q,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{staticClass:"actions__item",class:{colored:t.colored},style:{backgroundColor:t.colored?t.operation.color:"transparent"}},[e("div",{staticClass:"icon",class:t.operation.iconClass,style:{backgroundImage:t.operation.iconClass?"":"url("+t.operation.icon+")"}}),t._v(" "),e("div",{staticClass:"actions__item__description"},[e("h3",[t._v(t._s(t.operation.name))]),t._v(" "),e("small",[t._v(t._s(t.operation.description))]),t._v(" "),e("div",[t.colored?e("button",[t._v("\n\t\t\t\t"+t._s(t.t("workflowengine","Add new flow"))+"\n\t\t\t")]):t._e()])]),t._v(" "),e("div",{staticClass:"actions__item_options"},[t._t("default")],2)])}),[],!1,null,"34495584",null).exports;function nt(t,n,e,i,o,r,a){try{var s=t[r](a),l=s.value}catch(t){return void e(t)}s.done?n(l):Promise.resolve(l).then(i,o)}function et(t){return function(){var n=this,e=arguments;return new Promise((function(i,o){var r=t.apply(n,e);function a(t){nt(r,i,o,a,s,"next",t)}function s(t){nt(r,i,o,a,s,"throw",t)}a(void 0)}))}}var it={name:"Rule",components:{Operation:tt,Check:J,Event:N,Actions:x(),ActionButton:y()},directives:{Tooltip:w()},props:{rule:{type:Object,required:!0}},data:function(){return{editing:!1,checks:[],error:null,dirty:this.rule.id<0,originalRule:null}},computed:{operation:function(){return this.$store.getters.getOperationForRule(this.rule)},ruleStatus:function(){return this.error||!this.rule.valid||0===this.rule.checks.length||this.rule.checks.some((function(t){return!0===t.invalid}))?{title:t("workflowengine","The configuration is invalid"),class:"icon-close-white invalid",tooltip:{placement:"bottom",show:!0,content:this.error}}:this.dirty?{title:t("workflowengine","Save"),class:"icon-confirm-white primary"}:{title:t("workflowengine","Active"),class:"icon icon-checkmark"}},lastCheckComplete:function(){var t=this.rule.checks[this.rule.checks.length-1];return void 0===t||null!==t.class}},mounted:function(){this.originalRule=JSON.parse(JSON.stringify(this.rule))},methods:{updateOperation:function(t){var n=this;return et(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.$set(n.rule,"operation",t),e.next=3,n.updateRule();case 3:case"end":return e.stop()}}),e)})))()},validate:function(t){this.error=null,this.$store.dispatch("updateRule",this.rule)},updateRule:function(){this.dirty||(this.dirty=!0),this.error=null,this.$store.dispatch("updateRule",this.rule)},saveRule:function(){var t=this;return et(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,t.$store.dispatch("pushUpdateRule",t.rule);case 3:t.dirty=!1,t.error=null,t.originalRule=JSON.parse(JSON.stringify(t.rule)),n.next=12;break;case 8:n.prev=8,n.t0=n.catch(0),console.error("Failed to save operation"),t.error=n.t0.response.data.ocs.meta.message;case 12:case"end":return n.stop()}}),n,null,[[0,8]])})))()},deleteRule:function(){var t=this;return et(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,t.$store.dispatch("deleteRule",t.rule);case 3:n.next=9;break;case 5:n.prev=5,n.t0=n.catch(0),console.error("Failed to delete operation"),t.error=n.t0.response.data.ocs.meta.message;case 9:case"end":return n.stop()}}),n,null,[[0,5]])})))()},cancelRule:function(){this.rule.id<0?this.$store.dispatch("removeRule",this.rule):(this.$store.dispatch("updateRule",this.originalRule),this.originalRule=JSON.parse(JSON.stringify(this.rule)),this.dirty=!1)},removeCheck:function(t){var n=this;return et(regeneratorRuntime.mark((function e(){var i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:(i=n.rule.checks.findIndex((function(n){return n===t})))>-1&&n.$delete(n.rule.checks,i),n.$store.dispatch("updateRule",n.rule);case 3:case"end":return e.stop()}}),e)})))()},onAddFilter:function(){this.rule.checks.push({class:null,operator:null,value:""})}}},ot=i(87742),rt={};function at(t,n){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable}))),e.push.apply(e,i)}return e}function st(t){for(var n=1;n<arguments.length;n++){var e=null!=arguments[n]?arguments[n]:{};n%2?at(Object(e),!0).forEach((function(n){lt(t,n,e[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):at(Object(e)).forEach((function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))}))}return t}function lt(t,n,e){return n in t?Object.defineProperty(t,n,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[n]=e,t}rt.styleTagTransform=I(),rt.setAttributes=F(),rt.insert=S().bind(null,"head"),rt.domAPI=B(),rt.insertStyleElement=U(),E()(ot.Z,rt),ot.Z&&ot.Z.locals&&ot.Z.locals;var ct={name:"Workflow",components:{Operation:tt,Rule:(0,L.Z)(it,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return t.operation?e("div",{staticClass:"section rule",style:{borderLeftColor:t.operation.color||""}},[e("div",{staticClass:"trigger"},[e("p",[e("span",[t._v(t._s(t.t("workflowengine","When")))]),t._v(" "),e("Event",{attrs:{rule:t.rule},on:{update:t.updateRule}})],1),t._v(" "),t._l(t.rule.checks,(function(n,i){return e("p",{key:i},[e("span",[t._v(t._s(t.t("workflowengine","and")))]),t._v(" "),e("Check",{attrs:{check:n,rule:t.rule},on:{update:t.updateRule,validate:t.validate,remove:function(e){return t.removeCheck(n)}}})],1)})),t._v(" "),e("p",[e("span"),t._v(" "),t.lastCheckComplete?e("input",{staticClass:"check--add",attrs:{type:"button",value:"Add a new filter"},on:{click:t.onAddFilter}}):t._e()])],2),t._v(" "),e("div",{staticClass:"flow-icon icon-confirm"}),t._v(" "),e("div",{staticClass:"action"},[e("Operation",{attrs:{operation:t.operation,colored:!1}},[t.operation.options?e(t.operation.options,{tag:"component",on:{input:t.updateOperation},model:{value:t.rule.operation,callback:function(n){t.$set(t.rule,"operation",n)},expression:"rule.operation"}}):t._e()],1),t._v(" "),e("div",{staticClass:"buttons"},[e("button",{staticClass:"status-button icon",class:t.ruleStatus.class,on:{click:t.saveRule}},[t._v("\n\t\t\t\t"+t._s(t.ruleStatus.title)+"\n\t\t\t")]),t._v(" "),t.rule.id<-1||t.dirty?e("button",{on:{click:t.cancelRule}},[t._v("\n\t\t\t\t"+t._s(t.t("workflowengine","Cancel"))+"\n\t\t\t")]):t.dirty?t._e():e("button",{on:{click:t.deleteRule}},[t._v("\n\t\t\t\t"+t._s(t.t("workflowengine","Delete"))+"\n\t\t\t")])]),t._v(" "),t.error?e("p",{staticClass:"error-message"},[t._v("\n\t\t\t"+t._s(t.error)+"\n\t\t")]):t._e()],1)]):t._e()}),[],!1,null,"225ba268",null).exports},data:function(){return{showMoreOperations:!1,appstoreUrl:(0,l.generateUrl)("settings/apps/workflow")}},computed:st(st(st({},(0,r.Se)({rules:"getRules"})),(0,r.rn)({appstoreEnabled:"appstoreEnabled",scope:"scope",operations:"operations"})),{},{hasMoreOperations:function(){return Object.keys(this.operations).length>3},getMainOperations:function(){return this.showMoreOperations?Object.values(this.operations):Object.values(this.operations).slice(0,3)},showAppStoreHint:function(){return 0===this.scope&&this.appstoreEnabled&&OC.isUserAdmin()}}),mounted:function(){this.$store.dispatch("fetchRules")},methods:{createNewRule:function(t){this.$store.dispatch("createNewRule",t)}}},ut=i(33855),pt={};pt.styleTagTransform=I(),pt.setAttributes=F(),pt.insert=S().bind(null,"head"),pt.domAPI=B(),pt.insertStyleElement=U(),E()(ut.Z,pt),ut.Z&&ut.Z.locals&&ut.Z.locals;var dt=(0,L.Z)(ct,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{attrs:{id:"workflowengine"}},[e("div",{staticClass:"section"},[e("h2",[t._v(t._s(t.t("workflowengine","Available flows")))]),t._v(" "),0===t.scope?e("p",{staticClass:"settings-hint"},[e("a",{attrs:{href:"https://nextcloud.com/developer/"}},[t._v(t._s(t.t("workflowengine","For details on how to write your own flow, check out the development documentation.")))])]):t._e(),t._v(" "),e("transition-group",{staticClass:"actions",attrs:{name:"slide",tag:"div"}},[t._l(t.getMainOperations,(function(n){return e("Operation",{key:n.id,attrs:{operation:n},nativeOn:{click:function(e){return t.createNewRule(n)}}})})),t._v(" "),t.showAppStoreHint?e("a",{key:"add",staticClass:"actions__item colored more",attrs:{href:t.appstoreUrl}},[e("div",{staticClass:"icon icon-add"}),t._v(" "),e("div",{staticClass:"actions__item__description"},[e("h3",[t._v(t._s(t.t("workflowengine","More flows")))]),t._v(" "),e("small",[t._v(t._s(t.t("workflowengine","Browse the App Store")))])])]):t._e()],2),t._v(" "),t.hasMoreOperations?e("div",{staticClass:"actions__more"},[e("button",{staticClass:"icon",class:t.showMoreOperations?"icon-triangle-n":"icon-triangle-s",on:{click:function(n){t.showMoreOperations=!t.showMoreOperations}}},[t._v("\n\t\t\t\t"+t._s(t.showMoreOperations?t.t("workflowengine","Show less"):t.t("workflowengine","Show more"))+"\n\t\t\t")])]):t._e(),t._v(" "),0===t.scope?e("h2",{staticClass:"configured-flows"},[t._v("\n\t\t\t"+t._s(t.t("workflowengine","Configured flows"))+"\n\t\t")]):e("h2",{staticClass:"configured-flows"},[t._v("\n\t\t\t"+t._s(t.t("workflowengine","Your flows"))+"\n\t\t")])],1),t._v(" "),t.rules.length>0?e("transition-group",{attrs:{name:"slide"}},t._l(t.rules,(function(t){return e("Rule",{key:t.id,attrs:{rule:t}})})),1):t._e()],1)}),[],!1,null,"7b3e4a56",null).exports,At=/^\/(.*)\/([gui]{0,3})$/,mt=/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\/(3[0-2]|[1-2][0-9]|[1-9])$/,ft=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9])$/,ht={props:{value:{type:String,default:""},check:{type:Object,default:function(){return{}}}},data:function(){return{newValue:""}},watch:{value:{immediate:!0,handler:function(t){this.updateInternalValue(t)}}},methods:{updateInternalValue:function(t){this.newValue=t}}};function gt(t,n){(null==n||n>t.length)&&(n=t.length);for(var e=0,i=new Array(n);e<n;e++)i[e]=t[e];return i}var vt={name:"FileMimeType",components:{Multiselect:j()},mixins:[ht],data:function(){return{predefinedTypes:[{icon:"icon-folder",label:t("workflowengine","Folder"),pattern:"httpd/unix-directory"},{icon:"icon-picture",label:t("workflowengine","Images"),pattern:"/image\\/.*/"},{iconUrl:(0,l.imagePath)("core","filetypes/x-office-document"),label:t("workflowengine","Office documents"),pattern:"/(vnd\\.(ms-|openxmlformats-|oasis\\.opendocument).*)$/"},{iconUrl:(0,l.imagePath)("core","filetypes/application-pdf"),label:t("workflowengine","PDF documents"),pattern:"application/pdf"}]}},computed:{options:function(){return[].concat(function(t){if(Array.isArray(t))return gt(t)}(t=this.predefinedTypes)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,n){if(t){if("string"==typeof t)return gt(t,n);var e=Object.prototype.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?gt(t,n):void 0}}(t)||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.")}(),[this.customValue]);var t},isPredefined:function(){var t=this;return!!this.predefinedTypes.find((function(n){return t.newValue===n.pattern}))},customValue:function(){return{icon:"icon-settings-dark",label:t("workflowengine","Custom mimetype"),pattern:""}},currentValue:function(){var n=this;return this.predefinedTypes.find((function(t){return n.newValue===t.pattern}))||{icon:"icon-settings-dark",label:t("workflowengine","Custom mimetype"),pattern:this.newValue}}},methods:{validateRegex:function(t){return null!==/^\/(.*)\/([gui]{0,3})$/.exec(t)},setValue:function(t){null!==t&&(this.newValue=t.pattern,this.$emit("input",this.newValue))},updateCustom:function(t){this.newValue=t.target.value,this.$emit("input",this.newValue)}}},Ct=i(1510),wt={};wt.styleTagTransform=I(),wt.setAttributes=F(),wt.insert=S().bind(null,"head"),wt.domAPI=B(),wt.insertStyleElement=U(),E()(Ct.Z,wt),Ct.Z&&Ct.Z.locals&&Ct.Z.locals;var bt=(0,L.Z)(vt,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",[e("Multiselect",{attrs:{value:t.currentValue,placeholder:t.t("workflowengine","Select a file type"),label:"label","track-by":"pattern",options:t.options,multiple:!1,tagging:!1},on:{input:t.setValue},scopedSlots:t._u([{key:"singleLabel",fn:function(n){return[n.option.icon?e("span",{staticClass:"option__icon",class:n.option.icon}):e("img",{attrs:{src:n.option.iconUrl}}),t._v(" "),e("span",{staticClass:"option__title option__title_single"},[t._v(t._s(n.option.label))])]}},{key:"option",fn:function(n){return[n.option.icon?e("span",{staticClass:"option__icon",class:n.option.icon}):e("img",{attrs:{src:n.option.iconUrl}}),t._v(" "),e("span",{staticClass:"option__title"},[t._v(t._s(n.option.label))])]}}])}),t._v(" "),t.isPredefined?t._e():e("input",{attrs:{type:"text",placeholder:t.t("workflowengine","e.g. httpd/unix-directory")},domProps:{value:t.currentValue.pattern},on:{input:t.updateCustom}})],1)}),[],!1,null,"8c011724",null).exports,xt=function t(n){var e={};if(1===n.nodeType){if(n.attributes.length>0){e["@attributes"]={};for(var i=0;i<n.attributes.length;i++){var o=n.attributes.item(i);e["@attributes"][o.nodeName]=o.nodeValue}}}else 3===n.nodeType&&(e=n.nodeValue);if(n.hasChildNodes())for(var r=0;r<n.childNodes.length;r++){var a=n.childNodes.item(r),s=a.nodeName;if(void 0===e[s])e[s]=t(a);else{if(void 0===e[s].push){var l=e[s];e[s]=[],e[s].push(l)}e[s].push(t(a))}}return e},kt=0,yt={name:"MultiselectTag",components:{Multiselect:j()},props:{label:{type:String,required:!0},value:{type:[String,Array],default:null},disabled:{type:Boolean,default:!1},multiple:{type:Boolean,default:!1}},data:function(){return{inputValObjects:[],tags:[]}},computed:{id:function(){return"settings-input-text-"+this.uuid}},watch:{value:function(t){this.inputValObjects=this.getValueObject()}},beforeCreate:function(){var t=this;this.uuid=kt.toString(),kt+=1,(0,a.default)({method:"PROPFIND",url:(0,l.generateRemoteUrl)("dav")+"/systemtags/",data:'<?xml version="1.0"?>\n\t\t\t\t\t<d:propfind xmlns:d="DAV:" xmlns:oc="http://owncloud.org/ns">\n\t\t\t\t\t <d:prop>\n\t\t\t\t\t\t<oc:id />\n\t\t\t\t\t\t<oc:display-name />\n\t\t\t\t\t\t<oc:user-visible />\n\t\t\t\t\t\t<oc:user-assignable />\n\t\t\t\t\t\t<oc:can-assign />\n\t\t\t\t\t </d:prop>\n\t\t\t\t\t</d:propfind>'}).then((function(t){return function(t){var n=xt(function(t){var n=null;try{n=(new DOMParser).parseFromString(t,"text/xml")}catch(t){console.error("Failed to parse xml document",t)}return n}(t)),e=n["d:multistatus"]["d:response"],i=[];for(var o in e){var r=e[o]["d:propstat"];"HTTP/1.1 200 OK"===r["d:status"]["#text"]&&i.push({id:r["d:prop"]["oc:id"]["#text"],displayName:r["d:prop"]["oc:display-name"]["#text"],canAssign:"true"===r["d:prop"]["oc:can-assign"]["#text"],userAssignable:"true"===r["d:prop"]["oc:user-assignable"]["#text"],userVisible:"true"===r["d:prop"]["oc:user-visible"]["#text"]})}return i}(t.data)})).then((function(n){t.tags=n,t.inputValObjects=t.getValueObject()})).catch(console.error.bind(this))},methods:{getValueObject:function(){var t=this;return 0===this.tags.length?[]:this.multiple?this.value.filter((function(t){return""!==t})).map((function(n){return t.tags.find((function(t){return t.id===n}))})):this.tags.find((function(n){return n.id===t.value}))},update:function(){this.multiple?this.$emit("input",this.inputValObjects.map((function(t){return t.id}))):null===this.inputValObjects?this.$emit("input",""):this.$emit("input",this.inputValObjects.id)},tagLabel:function(n){var e=n.displayName,i=n.userVisible,o=n.userAssignable;return!1===i?t("systemtags","%s (invisible)").replace("%s",e):!1===o?t("systemtags","%s (restricted)").replace("%s",e):e}}},_t={name:"FileSystemTag",components:{MultiselectTag:(0,L.Z)(yt,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("Multiselect",{staticClass:"multiselect-vue",attrs:{options:t.tags,"options-limit":5,placeholder:t.label,"track-by":"id","custom-label":t.tagLabel,multiple:t.multiple,"close-on-select":!1,"tag-width":60,disabled:t.disabled},on:{input:t.update},scopedSlots:t._u([{key:"option",fn:function(n){return[t._v("\n\t\t"+t._s(t.tagLabel(n.option))+"\n\t")]}}]),model:{value:t.inputValObjects,callback:function(n){t.inputValObjects=n},expression:"inputValObjects"}},[e("span",{attrs:{slot:"noResult"},slot:"noResult"},[t._v(t._s(t.t("core","No results")))])])}),[],!1,null,null,null).exports},props:{value:{type:String,default:""}},data:function(){return{newValue:[]}},watch:{value:function(){this.updateValue()}},beforeMount:function(){this.updateValue()},methods:{updateValue:function(){""!==this.value?this.newValue=this.value:this.newValue=null},update:function(){this.$emit("input",this.newValue||"")}}},jt=(0,L.Z)(_t,(function(){var t=this,n=t.$createElement;return(t._self._c||n)("MultiselectTag",{attrs:{multiple:!1,label:t.t("workflowengine","Select a tag")},on:{input:t.update},model:{value:t.newValue,callback:function(n){t.newValue=n},expression:"newValue"}})}),[],!1,null,"31f5522d",null).exports,Ot=function(){return[{operator:"matches",name:t("workflowengine","matches")},{operator:"!matches",name:t("workflowengine","does not match")},{operator:"is",name:t("workflowengine","is")},{operator:"!is",name:t("workflowengine","is not")}]},Rt=[{class:"OCA\\WorkflowEngine\\Check\\FileName",name:t("workflowengine","File name"),operators:Ot,placeholder:function(t){return"matches"===t.operator||"!matches"===t.operator?"/^dummy-.+$/i":"filename.txt"},validate:function(t){return"matches"!==t.operator&&"!matches"!==t.operator||!!(n=t.value)&&null!==At.exec(n);var n}},{class:"OCA\\WorkflowEngine\\Check\\FileMimeType",name:t("workflowengine","File MIME type"),operators:Ot,component:bt},{class:"OCA\\WorkflowEngine\\Check\\FileSize",name:t("workflowengine","File size (upload)"),operators:[{operator:"less",name:t("workflowengine","less")},{operator:"!greater",name:t("workflowengine","less or equals")},{operator:"!less",name:t("workflowengine","greater or equals")},{operator:"greater",name:t("workflowengine","greater")}],placeholder:function(t){return"5 MB"},validate:function(t){return!!t.value&&null!==t.value.match(/^[0-9]+[ ]?[kmgt]?b$/i)}},{class:"OCA\\WorkflowEngine\\Check\\RequestRemoteAddress",name:t("workflowengine","Request remote address"),operators:[{operator:"matchesIPv4",name:t("workflowengine","matches IPv4")},{operator:"!matchesIPv4",name:t("workflowengine","does not match IPv4")},{operator:"matchesIPv6",name:t("workflowengine","matches IPv6")},{operator:"!matchesIPv6",name:t("workflowengine","does not match IPv6")}],placeholder:function(t){return"matchesIPv6"===t.operator||"!matchesIPv6"===t.operator?"::1/128":"127.0.0.1/32"},validate:function(t){return"matchesIPv6"===t.operator||"!matchesIPv6"===t.operator?!!(n=t.value)&&null!==ft.exec(n):function(t){return!!t&&null!==mt.exec(t)}(t.value);var n}},{class:"OCA\\WorkflowEngine\\Check\\FileSystemTags",name:t("workflowengine","File system tag"),operators:[{operator:"is",name:t("workflowengine","is tagged with")},{operator:"!is",name:t("workflowengine","is not tagged with")}],component:jt}];function Vt(t,n){(null==n||n>t.length)&&(n=t.length);for(var e=0,i=new Array(n);e<n;e++)i[e]=t[e];return i}var Et={name:"RequestUserAgent",components:{Multiselect:j()},mixins:[ht],data:function(){return{newValue:"",predefinedTypes:[{pattern:"android",label:t("workflowengine","Android client"),icon:"icon-phone"},{pattern:"ios",label:t("workflowengine","iOS client"),icon:"icon-phone"},{pattern:"desktop",label:t("workflowengine","Desktop client"),icon:"icon-desktop"},{pattern:"mail",label:t("workflowengine","Thunderbird & Outlook addons"),icon:"icon-mail"}]}},computed:{options:function(){return[].concat(function(t){if(Array.isArray(t))return Vt(t)}(t=this.predefinedTypes)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,n){if(t){if("string"==typeof t)return Vt(t,n);var e=Object.prototype.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?Vt(t,n):void 0}}(t)||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.")}(),[this.customValue]);var t},matchingPredefined:function(){var t=this;return this.predefinedTypes.find((function(n){return t.newValue===n.pattern}))},isPredefined:function(){return!!this.matchingPredefined},customValue:function(){return{icon:"icon-settings-dark",label:t("workflowengine","Custom user agent"),pattern:""}},currentValue:function(){return this.matchingPredefined?this.matchingPredefined:{icon:"icon-settings-dark",label:t("workflowengine","Custom user agent"),pattern:this.newValue}}},methods:{validateRegex:function(t){return null!==/^\/(.*)\/([gui]{0,3})$/.exec(t)},setValue:function(t){null!==t&&(this.newValue=t.pattern,this.$emit("input",this.newValue))},updateCustom:function(t){this.newValue=t.target.value,this.$emit("input",this.newValue)}}},Pt=i(99055),Bt={};Bt.styleTagTransform=I(),Bt.setAttributes=F(),Bt.insert=S().bind(null,"head"),Bt.domAPI=B(),Bt.insertStyleElement=U(),E()(Pt.Z,Bt),Pt.Z&&Pt.Z.locals&&Pt.Z.locals;var Tt=(0,L.Z)(Et,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",[e("Multiselect",{attrs:{value:t.currentValue,placeholder:t.t("workflowengine","Select a user agent"),label:"label","track-by":"pattern",options:t.options,multiple:!1,tagging:!1},on:{input:t.setValue},scopedSlots:t._u([{key:"singleLabel",fn:function(n){return[e("span",{staticClass:"option__icon",class:n.option.icon}),t._v(" "),e("span",{staticClass:"option__title option__title_single",domProps:{innerHTML:t._s(n.option.label)}})]}},{key:"option",fn:function(n){return[e("span",{staticClass:"option__icon",class:n.option.icon}),t._v(" "),n.option.$groupLabel?e("span",{staticClass:"option__title",domProps:{innerHTML:t._s(n.option.$groupLabel)}}):e("span",{staticClass:"option__title",domProps:{innerHTML:t._s(n.option.label)}})]}}])}),t._v(" "),t.isPredefined?t._e():e("input",{attrs:{type:"text"},domProps:{value:t.currentValue.pattern},on:{input:t.updateCustom}})],1)}),[],!1,null,"475ac1e6",null).exports,St=i(80008),Dt=i.n(St),Ft=Dt().tz.names(),$t={name:"RequestTime",components:{Multiselect:j()},mixins:[ht],props:{value:{type:String,default:""}},data:function(){return{timezones:Ft,valid:!1,newValue:{startTime:null,endTime:null,timezone:Dt().tz.guess()}}},mounted:function(){this.validate()},methods:{updateInternalValue:function(t){try{var n=JSON.parse(t);2===n.length&&(this.newValue={startTime:n[0].split(" ",2)[0],endTime:n[1].split(" ",2)[0],timezone:n[0].split(" ",2)[1]})}catch(t){}},validate:function(){return this.valid=this.newValue.startTime&&null!==this.newValue.startTime.match(/^(0[0-9]|1[0-9]|2[0-3]|[0-9]):[0-5][0-9]$/i)&&this.newValue.endTime&&null!==this.newValue.endTime.match(/^(0[0-9]|1[0-9]|2[0-3]|[0-9]):[0-5][0-9]$/i)&&null!==Dt().tz.zone(this.newValue.timezone),this.valid?this.$emit("valid"):this.$emit("invalid"),this.valid},update:function(){if(null===this.newValue.timezone&&(this.newValue.timezone=Dt().tz.guess()),this.validate()){var t='["'.concat(this.newValue.startTime," ").concat(this.newValue.timezone,'","').concat(this.newValue.endTime," ").concat(this.newValue.timezone,'"]');this.$emit("input",t)}}}},Ut=i(76050),Mt={};Mt.styleTagTransform=I(),Mt.setAttributes=F(),Mt.insert=S().bind(null,"head"),Mt.domAPI=B(),Mt.insertStyleElement=U(),E()(Ut.Z,Mt),Ut.Z&&Ut.Z.locals&&Ut.Z.locals;var It=(0,L.Z)($t,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{staticClass:"timeslot"},[e("input",{directives:[{name:"model",rawName:"v-model",value:t.newValue.startTime,expression:"newValue.startTime"}],staticClass:"timeslot--start",attrs:{type:"text",placeholder:"e.g. 08:00"},domProps:{value:t.newValue.startTime},on:{input:[function(n){n.target.composing||t.$set(t.newValue,"startTime",n.target.value)},t.update]}}),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.newValue.endTime,expression:"newValue.endTime"}],attrs:{type:"text",placeholder:"e.g. 18:00"},domProps:{value:t.newValue.endTime},on:{input:[function(n){n.target.composing||t.$set(t.newValue,"endTime",n.target.value)},t.update]}}),t._v(" "),t.valid?t._e():e("p",{staticClass:"invalid-hint"},[t._v("\n\t\t"+t._s(t.t("workflowengine","Please enter a valid time span"))+"\n\t")]),t._v(" "),e("Multiselect",{directives:[{name:"show",rawName:"v-show",value:t.valid,expression:"valid"}],attrs:{options:t.timezones},on:{input:t.update},model:{value:t.newValue.timezone,callback:function(n){t.$set(t.newValue,"timezone",n)},expression:"newValue.timezone"}})],1)}),[],!1,null,"149baca9",null).exports;function zt(t,n){(null==n||n>t.length)&&(n=t.length);for(var e=0,i=new Array(n);e<n;e++)i[e]=t[e];return i}var Gt={name:"RequestURL",components:{Multiselect:j()},mixins:[ht],data:function(){return{newValue:"",predefinedTypes:[{label:t("workflowengine","Predefined URLs"),children:[{pattern:"webdav",label:t("workflowengine","Files WebDAV")}]}]}},computed:{options:function(){return[].concat(function(t){if(Array.isArray(t))return zt(t)}(t=this.predefinedTypes)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,n){if(t){if("string"==typeof t)return zt(t,n);var e=Object.prototype.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?zt(t,n):void 0}}(t)||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.")}(),[this.customValue]);var t},placeholder:function(){return"matches"===this.check.operator||"!matches"===this.check.operator?"/^https\\:\\/\\/localhost\\/index\\.php$/i":"https://localhost/index.php"},matchingPredefined:function(){var t=this;return this.predefinedTypes.map((function(t){return t.children})).flat().find((function(n){return t.newValue===n.pattern}))},isPredefined:function(){return!!this.matchingPredefined},customValue:function(){return{label:t("workflowengine","Others"),children:[{icon:"icon-settings-dark",label:t("workflowengine","Custom URL"),pattern:""}]}},currentValue:function(){return this.matchingPredefined?this.matchingPredefined:{icon:"icon-settings-dark",label:t("workflowengine","Custom URL"),pattern:this.newValue}}},methods:{validateRegex:function(t){return null!==/^\/(.*)\/([gui]{0,3})$/.exec(t)},setValue:function(t){null!==t&&(this.newValue=t.pattern,this.$emit("input",this.newValue))},updateCustom:function(t){this.newValue=t.target.value,this.$emit("input",this.newValue)}}},Lt=Gt,Nt=i(82999),Zt={};Zt.styleTagTransform=I(),Zt.setAttributes=F(),Zt.insert=S().bind(null,"head"),Zt.domAPI=B(),Zt.insertStyleElement=U(),E()(Nt.Z,Zt),Nt.Z&&Nt.Z.locals&&Nt.Z.locals;var Wt=(0,L.Z)(Lt,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",[e("Multiselect",{attrs:{value:t.currentValue,placeholder:t.t("workflowengine","Select a request URL"),label:"label","track-by":"pattern","group-values":"children","group-label":"label",options:t.options,multiple:!1,tagging:!1},on:{input:t.setValue},scopedSlots:t._u([{key:"singleLabel",fn:function(n){return[e("span",{staticClass:"option__icon",class:n.option.icon}),t._v(" "),e("span",{staticClass:"option__title option__title_single"},[t._v(t._s(n.option.label))])]}},{key:"option",fn:function(n){return[e("span",{staticClass:"option__icon",class:n.option.icon}),t._v(" "),e("span",{staticClass:"option__title"},[t._v(t._s(n.option.label)+" "+t._s(n.option.$groupLabel))])]}}])}),t._v(" "),t.isPredefined?t._e():e("input",{attrs:{type:"text",placeholder:t.placeholder},domProps:{value:t.currentValue.pattern},on:{input:t.updateCustom}})],1)}),[],!1,null,"dd8e16be",null).exports;function qt(t,n,e,i,o,r,a){try{var s=t[r](a),l=s.value}catch(t){return void e(t)}s.done?n(l):Promise.resolve(l).then(i,o)}var Yt=[],Ht={isLoading:!1},Jt={name:"RequestUserGroup",components:{Multiselect:j()},props:{value:{type:String,default:""},check:{type:Object,default:function(){return{}}}},data:function(){return{groups:Yt,status:Ht}},computed:{currentValue:function(){var t=this;return this.groups.find((function(n){return n.id===t.value}))||null}},mounted:function(){var t,n=this;return(t=regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(0!==n.groups.length){t.next=3;break}return t.next=3,n.searchAsync("");case 3:if(null!==n.currentValue){t.next=6;break}return t.next=6,n.searchAsync(n.value);case 6:case"end":return t.stop()}}),t)})),function(){var n=this,e=arguments;return new Promise((function(i,o){var r=t.apply(n,e);function a(t){qt(r,i,o,a,s,"next",t)}function s(t){qt(r,i,o,a,s,"throw",t)}a(void 0)}))})()},methods:{searchAsync:function(t){var n=this;if(!this.status.isLoading)return this.status.isLoading=!0,a.default.get((0,l.generateOcsUrl)("cloud/groups/details?limit=20&search={searchQuery}",{searchQuery:t})).then((function(t){t.data.ocs.data.groups.forEach((function(t){n.addGroup({id:t.id,displayname:t.displayname})})),n.status.isLoading=!1}),(function(t){console.error("Error while loading group list",t.response)}))},addGroup:function(t){-1===this.groups.findIndex((function(n){return n.id===t.id}))&&this.groups.push(t)}}},Qt=Jt,Kt=i(80787),Xt={};Xt.styleTagTransform=I(),Xt.setAttributes=F(),Xt.insert=S().bind(null,"head"),Xt.domAPI=B(),Xt.insertStyleElement=U(),E()(Kt.Z,Xt),Kt.Z&&Kt.Z.locals&&Kt.Z.locals;var tn=(0,L.Z)(Qt,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",[e("Multiselect",{attrs:{value:t.currentValue,loading:t.status.isLoading&&0===t.groups.length,options:t.groups,multiple:!1,label:"displayname","track-by":"id"},on:{"search-change":t.searchAsync,input:function(n){return t.$emit("input",n.id)}}})],1)}),[],!1,null,"79fa10a5",null).exports,nn=[{class:"OCA\\WorkflowEngine\\Check\\RequestURL",name:t("workflowengine","Request URL"),operators:[{operator:"is",name:t("workflowengine","is")},{operator:"!is",name:t("workflowengine","is not")},{operator:"matches",name:t("workflowengine","matches")},{operator:"!matches",name:t("workflowengine","does not match")}],component:Wt},{class:"OCA\\WorkflowEngine\\Check\\RequestTime",name:t("workflowengine","Request time"),operators:[{operator:"in",name:t("workflowengine","between")},{operator:"!in",name:t("workflowengine","not between")}],component:It},{class:"OCA\\WorkflowEngine\\Check\\RequestUserAgent",name:t("workflowengine","Request user agent"),operators:[{operator:"is",name:t("workflowengine","is")},{operator:"!is",name:t("workflowengine","is not")},{operator:"matches",name:t("workflowengine","matches")},{operator:"!matches",name:t("workflowengine","does not match")}],component:Tt},{class:"OCA\\WorkflowEngine\\Check\\UserGroupMembership",name:t("workflowengine","User group membership"),operators:[{operator:"is",name:t("workflowengine","is member of")},{operator:"!is",name:t("workflowengine","is not member of")}],component:tn}];function en(t){return function(t){if(Array.isArray(t))return on(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,n){if(t){if("string"==typeof t)return on(t,n);var e=Object.prototype.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?on(t,n):void 0}}(t)||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 on(t,n){(null==n||n>t.length)&&(n=t.length);for(var e=0,i=new Array(n);e<n;e++)i[e]=t[e];return i}var rn=[].concat(en(Rt),en(nn));window.OCA.WorkflowEngine=Object.assign({},OCA.WorkflowEngine,{registerCheck:function(t){v.commit("addPluginCheck",t)},registerOperator:function(t){v.commit("addPluginOperator",t)}}),rn.forEach((function(t){return window.OCA.WorkflowEngine.registerCheck(t)})),o.default.use(r.ZP),o.default.prototype.t=t,new(o.default.extend(dt))({store:v}).$mount("#workflowengine")},38530:function(t,n,e){"use strict";var i=e(87537),o=e.n(i),r=e(23645),a=e.n(r)()(o());a.push([t.id,".check[data-v-70cc784d]{display:flex;flex-wrap:wrap;width:100%;padding-right:20px}.check>*[data-v-70cc784d]:not(.close){width:180px}.check>.comparator[data-v-70cc784d]{min-width:130px;width:130px}.check>.option[data-v-70cc784d]{min-width:230px;width:230px}.check>.multiselect[data-v-70cc784d],.check>input[type=text][data-v-70cc784d]{margin-right:5px;margin-bottom:5px}.check .multiselect[data-v-70cc784d] .multiselect__content-wrapper li>span,.check .multiselect[data-v-70cc784d] .multiselect__single{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}input[type=text][data-v-70cc784d]{margin:0}[data-v-70cc784d]::placeholder{font-size:10px}button.action-item.action-item--single.icon-close[data-v-70cc784d]{height:44px;width:44px;margin-top:-5px;margin-bottom:-5px}.invalid[data-v-70cc784d]{border:1px solid var(--color-error) !important}","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Check.vue"],names:[],mappings:"AAsJA,wBACC,YAAA,CACA,cAAA,CACA,UAAA,CACA,kBAAA,CACA,sCACC,WAAA,CAED,oCACC,eAAA,CACA,WAAA,CAED,gCACC,eAAA,CACA,WAAA,CAED,8EAEC,gBAAA,CACA,iBAAA,CAGD,qIAEC,aAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CAGF,kCACC,QAAA,CAED,+BACC,cAAA,CAED,mEACC,WAAA,CACA,UAAA,CACA,eAAA,CACA,kBAAA,CAED,0BACC,8CAAA",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.check {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\twidth: 100%;\n\tpadding-right: 20px;\n\t& > *:not(.close) {\n\t\twidth: 180px;\n\t}\n\t& > .comparator {\n\t\tmin-width: 130px;\n\t\twidth: 130px;\n\t}\n\t& > .option {\n\t\tmin-width: 230px;\n\t\twidth: 230px;\n\t}\n\t& > .multiselect,\n\t& > input[type=text] {\n\t\tmargin-right: 5px;\n\t\tmargin-bottom: 5px;\n\t}\n\n\t.multiselect::v-deep .multiselect__content-wrapper li>span,\n\t.multiselect::v-deep .multiselect__single {\n\t\tdisplay: block;\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n}\ninput[type=text] {\n\tmargin: 0;\n}\n::placeholder {\n\tfont-size: 10px;\n}\nbutton.action-item.action-item--single.icon-close {\n\theight: 44px;\n\twidth: 44px;\n\tmargin-top: -5px;\n\tmargin-bottom: -5px;\n}\n.invalid {\n\tborder: 1px solid var(--color-error) !important;\n}\n"],sourceRoot:""}]),n.Z=a},76050:function(t,n,e){"use strict";var i=e(87537),o=e.n(i),r=e(23645),a=e.n(r)()(o());a.push([t.id,".timeslot[data-v-149baca9]{display:flex;flex-grow:1;flex-wrap:wrap;max-width:180px}.timeslot .multiselect[data-v-149baca9]{width:100%;margin-bottom:5px}.timeslot .multiselect[data-v-149baca9] .multiselect__tags:not(:hover):not(:focus):not(:active){border:1px solid rgba(0,0,0,0)}.timeslot input[type=text][data-v-149baca9]{width:50%;margin:0;margin-bottom:5px}.timeslot input[type=text].timeslot--start[data-v-149baca9]{margin-right:5px;width:calc(50% - 5px)}.timeslot .invalid-hint[data-v-149baca9]{color:var(--color-text-maxcontrast)}","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Checks/RequestTime.vue"],names:[],mappings:"AA+FA,2BACC,YAAA,CACA,WAAA,CACA,cAAA,CACA,eAAA,CAEA,wCACC,UAAA,CACA,iBAAA,CAGD,gGACC,8BAAA,CAGD,4CACC,SAAA,CACA,QAAA,CACA,iBAAA,CAEA,4DACC,gBAAA,CACA,qBAAA,CAIF,yCACC,mCAAA",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.timeslot {\n\tdisplay: flex;\n\tflex-grow: 1;\n\tflex-wrap: wrap;\n\tmax-width: 180px;\n\n\t.multiselect {\n\t\twidth: 100%;\n\t\tmargin-bottom: 5px;\n\t}\n\n\t.multiselect::v-deep .multiselect__tags:not(:hover):not(:focus):not(:active) {\n\t\tborder: 1px solid transparent;\n\t}\n\n\tinput[type=text] {\n\t\twidth: 50%;\n\t\tmargin: 0;\n\t\tmargin-bottom: 5px;\n\n\t\t&.timeslot--start {\n\t\t\tmargin-right: 5px;\n\t\t\twidth: calc(50% - 5px);\n\t\t}\n\t}\n\n\t.invalid-hint {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n}\n"],sourceRoot:""}]),n.Z=a},71605:function(t,n,e){"use strict";var i=e(87537),o=e.n(i),r=e(23645),a=e.n(r)()(o());a.push([t.id,".event[data-v-f3569276]{margin-bottom:5px}.isComplex img[data-v-f3569276]{vertical-align:text-top}.isComplex span[data-v-f3569276]{padding-top:2px;display:inline-block}.multiselect[data-v-f3569276]{width:100%;max-width:550px;margin-top:4px}.multiselect[data-v-f3569276] .multiselect__single{display:flex}.multiselect[data-v-f3569276]:not(.multiselect--active) .multiselect__tags{background-color:var(--color-main-background) !important;border:1px solid rgba(0,0,0,0)}.multiselect[data-v-f3569276] .multiselect__tags{background-color:var(--color-main-background) !important;height:auto;min-height:34px}.multiselect[data-v-f3569276]:not(.multiselect--disabled) .multiselect__tags .multiselect__single{background-image:var(--icon-triangle-s-000);background-repeat:no-repeat;background-position:right center}input[data-v-f3569276]{border:1px solid rgba(0,0,0,0)}.option__title[data-v-f3569276]{margin-left:5px;color:var(--color-main-text)}.option__title_single[data-v-f3569276]{font-weight:900}.option__icon[data-v-f3569276]{width:16px;height:16px}.eventlist img[data-v-f3569276],.eventlist .text[data-v-f3569276]{vertical-align:middle}","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Event.vue"],names:[],mappings:"AAiFA,wBACC,iBAAA,CAGA,gCACC,uBAAA,CAED,iCACC,eAAA,CACA,oBAAA,CAGF,8BACC,UAAA,CACA,eAAA,CACA,cAAA,CAED,mDACC,YAAA,CAED,2EACC,wDAAA,CACA,8BAAA,CAGD,iDACC,wDAAA,CACA,WAAA,CACA,eAAA,CAGD,kGACC,2CAAA,CACA,2BAAA,CACA,gCAAA,CAGD,uBACC,8BAAA,CAGD,gCACC,eAAA,CACA,4BAAA,CAED,uCACC,eAAA,CAGD,+BACC,UAAA,CACA,WAAA,CAGD,kEAEC,qBAAA",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.event {\n\tmargin-bottom: 5px;\n}\n.isComplex {\n\timg {\n\t\tvertical-align: text-top;\n\t}\n\tspan {\n\t\tpadding-top: 2px;\n\t\tdisplay: inline-block;\n\t}\n}\n.multiselect {\n\twidth: 100%;\n\tmax-width: 550px;\n\tmargin-top: 4px;\n}\n.multiselect::v-deep .multiselect__single {\n\tdisplay: flex;\n}\n.multiselect:not(.multiselect--active)::v-deep .multiselect__tags {\n\tbackground-color: var(--color-main-background) !important;\n\tborder: 1px solid transparent;\n}\n\n.multiselect::v-deep .multiselect__tags {\n\tbackground-color: var(--color-main-background) !important;\n\theight: auto;\n\tmin-height: 34px;\n}\n\n.multiselect:not(.multiselect--disabled)::v-deep .multiselect__tags .multiselect__single {\n\tbackground-image: var(--icon-triangle-s-000);\n\tbackground-repeat: no-repeat;\n\tbackground-position: right center;\n}\n\ninput {\n\tborder: 1px solid transparent;\n}\n\n.option__title {\n\tmargin-left: 5px;\n\tcolor: var(--color-main-text);\n}\n.option__title_single {\n\tfont-weight: 900;\n}\n\n.option__icon {\n\twidth: 16px;\n\theight: 16px;\n}\n\n.eventlist img,\n.eventlist .text {\n\tvertical-align: middle;\n}\n"],sourceRoot:""}]),n.Z=a},58444:function(t,n,e){"use strict";var i=e(87537),o=e.n(i),r=e(23645),a=e.n(r)()(o());a.push([t.id,".actions__item[data-v-34495584]{display:flex;flex-wrap:wrap;flex-direction:column;flex-grow:1;margin-left:-1px;padding:10px;border-radius:var(--border-radius-large);margin-right:20px;margin-bottom:20px}.actions__item .icon[data-v-34495584]{display:block;width:100%;height:50px;background-size:50px 50px;background-position:center center;margin-top:10px;margin-bottom:10px;background-repeat:no-repeat}.actions__item__description[data-v-34495584]{text-align:center;flex-grow:1;display:flex;flex-direction:column}.actions__item_options[data-v-34495584]{width:100%;margin-top:10px;padding-left:60px}h3[data-v-34495584],small[data-v-34495584]{padding:6px;display:block}h3[data-v-34495584]{margin:0;padding:0;font-weight:600}small[data-v-34495584]{font-size:10pt;flex-grow:1}.colored[data-v-34495584]:not(.more){background-color:var(--color-primary-element)}.colored:not(.more) h3[data-v-34495584],.colored:not(.more) small[data-v-34495584]{color:var(--color-primary-text)}.actions__item[data-v-34495584]:not(.colored){flex-direction:row}.actions__item:not(.colored) .actions__item__description[data-v-34495584]{padding-top:5px;text-align:left;width:calc(100% - 105px)}.actions__item:not(.colored) .actions__item__description small[data-v-34495584]{padding:0}.actions__item:not(.colored) .icon[data-v-34495584]{width:50px;margin:0;margin-right:10px}.actions__item:not(.colored) .icon[data-v-34495584]:not(.icon-invert){filter:invert(1)}.colored .icon-invert[data-v-34495584]{filter:invert(1)}","",{version:3,sources:["webpack://./apps/workflowengine/src/styles/operation.scss"],names:[],mappings:"AAAA,gCACC,YAAA,CACA,cAAA,CACA,qBAAA,CACA,WAAA,CACA,gBAAA,CACA,YAAA,CACA,wCAAA,CACA,iBAAA,CACA,kBAAA,CAED,sCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,yBAAA,CACA,iCAAA,CACA,eAAA,CACA,kBAAA,CACA,2BAAA,CAED,6CACC,iBAAA,CACA,WAAA,CACA,YAAA,CACA,qBAAA,CAED,wCACC,UAAA,CACA,eAAA,CACA,iBAAA,CAED,2CACC,WAAA,CACA,aAAA,CAED,oBACC,QAAA,CACA,SAAA,CACA,eAAA,CAED,uBACC,cAAA,CACA,WAAA,CAGD,qCACC,6CAAA,CACA,mFACC,+BAAA,CAIF,8CACC,kBAAA,CAEA,0EACC,eAAA,CACA,eAAA,CACA,wBAAA,CACA,gFACC,SAAA,CAGF,oDACC,UAAA,CACA,QAAA,CACA,iBAAA,CACA,sEACC,gBAAA,CAKH,uCACC,gBAAA",sourcesContent:[".actions__item {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tflex-direction: column;\n\tflex-grow: 1;\n\tmargin-left: -1px;\n\tpadding: 10px;\n\tborder-radius: var(--border-radius-large);\n\tmargin-right: 20px;\n\tmargin-bottom: 20px;\n}\n.actions__item .icon {\n\tdisplay: block;\n\twidth: 100%;\n\theight: 50px;\n\tbackground-size: 50px 50px;\n\tbackground-position: center center;\n\tmargin-top: 10px;\n\tmargin-bottom: 10px;\n\tbackground-repeat: no-repeat;\n}\n.actions__item__description {\n\ttext-align: center;\n\tflex-grow: 1;\n\tdisplay: flex;\n\tflex-direction: column;\n}\n.actions__item_options {\n\twidth: 100%;\n\tmargin-top: 10px;\n\tpadding-left: 60px;\n}\nh3, small {\n\tpadding: 6px;\n\tdisplay: block;\n}\nh3 {\n\tmargin: 0;\n\tpadding: 0;\n\tfont-weight: 600;\n}\nsmall {\n\tfont-size: 10pt;\n\tflex-grow: 1;\n}\n\n.colored:not(.more) {\n\tbackground-color: var(--color-primary-element);\n\th3, small {\n\t\tcolor: var(--color-primary-text)\n\t}\n}\n\n.actions__item:not(.colored) {\n\tflex-direction: row;\n\n\t.actions__item__description {\n\t\tpadding-top: 5px;\n\t\ttext-align: left;\n\t\twidth: calc(100% - 105px);\n\t\tsmall {\n\t\t\tpadding: 0;\n\t\t}\n\t}\n\t.icon {\n\t\twidth: 50px;\n\t\tmargin: 0;\n\t\tmargin-right: 10px;\n\t\t&:not(.icon-invert) {\n\t\t\tfilter: invert(1);\n\t\t}\n\t}\n}\n\n.colored .icon-invert {\n\tfilter: invert(1);\n}\n"],sourceRoot:""}]),n.Z=a},87742:function(t,n,e){"use strict";var i=e(87537),o=e.n(i),r=e(23645),a=e.n(r)()(o());a.push([t.id,"button.icon[data-v-225ba268]{padding-left:32px;background-position:10px center}.buttons[data-v-225ba268]{display:block;overflow:hidden}.buttons button[data-v-225ba268]{float:right;height:34px}.error-message[data-v-225ba268]{float:right;margin-right:10px}.status-button[data-v-225ba268]{transition:.5s ease all;display:block;margin:3px 10px 3px auto}.status-button.primary[data-v-225ba268]{padding-left:32px;background-position:10px center}.status-button[data-v-225ba268]:not(.primary){background-color:var(--color-main-background)}.status-button.invalid[data-v-225ba268]{background-color:var(--color-warning);color:#fff;border:none}.status-button.icon-checkmark[data-v-225ba268]{border:1px solid var(--color-success)}.flow-icon[data-v-225ba268]{width:44px}.rule[data-v-225ba268]{display:flex;flex-wrap:wrap;border-left:5px solid var(--color-primary-element)}.rule .trigger[data-v-225ba268],.rule .action[data-v-225ba268]{flex-grow:1;min-height:100px;max-width:700px}.rule .action[data-v-225ba268]{max-width:400px;position:relative}.rule .icon-confirm[data-v-225ba268]{background-position:right 27px;padding-right:20px;margin-right:20px}.trigger p[data-v-225ba268],.action p[data-v-225ba268]{min-height:34px;display:flex}.trigger p>span[data-v-225ba268],.action p>span[data-v-225ba268]{min-width:50px;text-align:right;color:var(--color-text-maxcontrast);padding-right:10px;padding-top:6px}.trigger p .multiselect[data-v-225ba268],.action p .multiselect[data-v-225ba268]{flex-grow:1;max-width:300px}.trigger p:first-child span[data-v-225ba268]{padding-top:3px}.check--add[data-v-225ba268]{background-position:7px center;background-color:rgba(0,0,0,0);padding-left:6px;margin:0;width:180px;border-radius:var(--border-radius);color:var(--color-text-maxcontrast);font-weight:normal;text-align:left;font-size:1em}@media(max-width: 1400px){.rule[data-v-225ba268],.rule .trigger[data-v-225ba268],.rule .action[data-v-225ba268]{width:100%;max-width:100%}.rule .flow-icon[data-v-225ba268]{display:none}}","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Rule.vue"],names:[],mappings:"AA4KA,6BACC,iBAAA,CACA,+BAAA,CAGD,0BACC,aAAA,CACA,eAAA,CAEA,iCACC,WAAA,CACA,WAAA,CAIF,gCACC,WAAA,CACA,iBAAA,CAGD,gCACC,uBAAA,CACA,aAAA,CACA,wBAAA,CAED,wCACC,iBAAA,CACA,+BAAA,CAED,8CACC,6CAAA,CAED,wCACC,qCAAA,CACA,UAAA,CACA,WAAA,CAED,+CACC,qCAAA,CAGD,4BACC,UAAA,CAGD,uBACC,YAAA,CACA,cAAA,CACA,kDAAA,CAEA,+DACC,WAAA,CACA,gBAAA,CACA,eAAA,CAED,+BACC,eAAA,CACA,iBAAA,CAED,qCACC,8BAAA,CACA,kBAAA,CACA,iBAAA,CAGF,uDACC,eAAA,CACA,YAAA,CAEA,iEACC,cAAA,CACA,gBAAA,CACA,mCAAA,CACA,kBAAA,CACA,eAAA,CAED,iFACC,WAAA,CACA,eAAA,CAGF,6CACE,eAAA,CAGF,6BACC,8BAAA,CACA,8BAAA,CACA,gBAAA,CACA,QAAA,CACA,WAAA,CACA,kCAAA,CACA,mCAAA,CACA,kBAAA,CACA,eAAA,CACA,aAAA,CAGD,0BAEE,sFACC,UAAA,CACA,cAAA,CAED,kCACC,YAAA,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\nbutton.icon {\n\tpadding-left: 32px;\n\tbackground-position: 10px center;\n}\n\n.buttons {\n\tdisplay: block;\n\toverflow: hidden;\n\n\tbutton {\n\t\tfloat: right;\n\t\theight: 34px;\n\t}\n}\n\n.error-message {\n\tfloat: right;\n\tmargin-right: 10px;\n}\n\n.status-button {\n\ttransition: 0.5s ease all;\n\tdisplay: block;\n\tmargin: 3px 10px 3px auto;\n}\n.status-button.primary {\n\tpadding-left: 32px;\n\tbackground-position: 10px center;\n}\n.status-button:not(.primary) {\n\tbackground-color: var(--color-main-background);\n}\n.status-button.invalid {\n\tbackground-color: var(--color-warning);\n\tcolor: #fff;\n\tborder: none;\n}\n.status-button.icon-checkmark {\n\tborder: 1px solid var(--color-success);\n}\n\n.flow-icon {\n\twidth: 44px;\n}\n\n.rule {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tborder-left: 5px solid var(--color-primary-element);\n\n\t.trigger, .action {\n\t\tflex-grow: 1;\n\t\tmin-height: 100px;\n\t\tmax-width: 700px;\n\t}\n\t.action {\n\t\tmax-width: 400px;\n\t\tposition: relative;\n\t}\n\t.icon-confirm {\n\t\tbackground-position: right 27px;\n\t\tpadding-right: 20px;\n\t\tmargin-right: 20px;\n\t}\n}\n.trigger p, .action p {\n\tmin-height: 34px;\n\tdisplay: flex;\n\n\t& > span {\n\t\tmin-width: 50px;\n\t\ttext-align: right;\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tpadding-right: 10px;\n\t\tpadding-top: 6px;\n\t}\n\t.multiselect {\n\t\tflex-grow: 1;\n\t\tmax-width: 300px;\n\t}\n}\n.trigger p:first-child span {\n\t\tpadding-top: 3px;\n}\n\n.check--add {\n\tbackground-position: 7px center;\n\tbackground-color: transparent;\n\tpadding-left: 6px;\n\tmargin: 0;\n\twidth: 180px;\n\tborder-radius: var(--border-radius);\n\tcolor: var(--color-text-maxcontrast);\n\tfont-weight: normal;\n\ttext-align: left;\n\tfont-size: 1em;\n}\n\n@media (max-width:1400px) {\n\t.rule {\n\t\t&, .trigger, .action {\n\t\t\twidth: 100%;\n\t\t\tmax-width: 100%;\n\t\t}\n\t\t.flow-icon {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n\n"],sourceRoot:""}]),n.Z=a},33855:function(t,n,e){"use strict";var i=e(87537),o=e.n(i),r=e(23645),a=e.n(r)()(o());a.push([t.id,"#workflowengine[data-v-7b3e4a56]{border-bottom:1px solid var(--color-border)}.section[data-v-7b3e4a56]{max-width:100vw}.section h2.configured-flows[data-v-7b3e4a56]{margin-top:50px;margin-bottom:0}.actions[data-v-7b3e4a56]{display:flex;flex-wrap:wrap;max-width:1200px}.actions .actions__item[data-v-7b3e4a56]{max-width:280px;flex-basis:250px}button.icon[data-v-7b3e4a56]{padding-left:32px;background-position:10px center}.slide-enter-active[data-v-7b3e4a56]{-moz-transition-duration:.3s;-webkit-transition-duration:.3s;-o-transition-duration:.3s;transition-duration:.3s;-moz-transition-timing-function:ease-in;-webkit-transition-timing-function:ease-in;-o-transition-timing-function:ease-in;transition-timing-function:ease-in}.slide-leave-active[data-v-7b3e4a56]{-moz-transition-duration:.3s;-webkit-transition-duration:.3s;-o-transition-duration:.3s;transition-duration:.3s;-moz-transition-timing-function:cubic-bezier(0, 1, 0.5, 1);-webkit-transition-timing-function:cubic-bezier(0, 1, 0.5, 1);-o-transition-timing-function:cubic-bezier(0, 1, 0.5, 1);transition-timing-function:cubic-bezier(0, 1, 0.5, 1)}.slide-enter-to[data-v-7b3e4a56],.slide-leave[data-v-7b3e4a56]{max-height:500px;overflow:hidden}.slide-enter[data-v-7b3e4a56],.slide-leave-to[data-v-7b3e4a56]{overflow:hidden;max-height:0;padding-top:0;padding-bottom:0}.actions__item[data-v-7b3e4a56]{display:flex;flex-wrap:wrap;flex-direction:column;flex-grow:1;margin-left:-1px;padding:10px;border-radius:var(--border-radius-large);margin-right:20px;margin-bottom:20px}.actions__item .icon[data-v-7b3e4a56]{display:block;width:100%;height:50px;background-size:50px 50px;background-position:center center;margin-top:10px;margin-bottom:10px;background-repeat:no-repeat}.actions__item__description[data-v-7b3e4a56]{text-align:center;flex-grow:1;display:flex;flex-direction:column}.actions__item_options[data-v-7b3e4a56]{width:100%;margin-top:10px;padding-left:60px}h3[data-v-7b3e4a56],small[data-v-7b3e4a56]{padding:6px;display:block}h3[data-v-7b3e4a56]{margin:0;padding:0;font-weight:600}small[data-v-7b3e4a56]{font-size:10pt;flex-grow:1}.colored[data-v-7b3e4a56]:not(.more){background-color:var(--color-primary-element)}.colored:not(.more) h3[data-v-7b3e4a56],.colored:not(.more) small[data-v-7b3e4a56]{color:var(--color-primary-text)}.actions__item[data-v-7b3e4a56]:not(.colored){flex-direction:row}.actions__item:not(.colored) .actions__item__description[data-v-7b3e4a56]{padding-top:5px;text-align:left;width:calc(100% - 105px)}.actions__item:not(.colored) .actions__item__description small[data-v-7b3e4a56]{padding:0}.actions__item:not(.colored) .icon[data-v-7b3e4a56]{width:50px;margin:0;margin-right:10px}.actions__item:not(.colored) .icon[data-v-7b3e4a56]:not(.icon-invert){filter:invert(1)}.colored .icon-invert[data-v-7b3e4a56]{filter:invert(1)}.actions__item.more[data-v-7b3e4a56]{background-color:var(--color-background-dark)}","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Workflow.vue","webpack://./apps/workflowengine/src/styles/operation.scss"],names:[],mappings:"AAuGA,iCACC,2CAAA,CAED,0BACC,eAAA,CAEA,8CACC,eAAA,CACA,eAAA,CAGF,0BACC,YAAA,CACA,cAAA,CACA,gBAAA,CACA,yCACC,eAAA,CACA,gBAAA,CAIF,6BACC,iBAAA,CACA,+BAAA,CAGD,qCACC,4BAAA,CACA,+BAAA,CACA,0BAAA,CACA,uBAAA,CACA,uCAAA,CACA,0CAAA,CACA,qCAAA,CACA,kCAAA,CAGD,qCACC,4BAAA,CACA,+BAAA,CACA,0BAAA,CACA,uBAAA,CACA,0DAAA,CACA,6DAAA,CACA,wDAAA,CACA,qDAAA,CAGD,+DACC,gBAAA,CACA,eAAA,CAGD,+DACC,eAAA,CACA,YAAA,CACA,aAAA,CACA,gBAAA,CChKD,gCACC,YAAA,CACA,cAAA,CACA,qBAAA,CACA,WAAA,CACA,gBAAA,CACA,YAAA,CACA,wCAAA,CACA,iBAAA,CACA,kBAAA,CAED,sCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,yBAAA,CACA,iCAAA,CACA,eAAA,CACA,kBAAA,CACA,2BAAA,CAED,6CACC,iBAAA,CACA,WAAA,CACA,YAAA,CACA,qBAAA,CAED,wCACC,UAAA,CACA,eAAA,CACA,iBAAA,CAED,2CACC,WAAA,CACA,aAAA,CAED,oBACC,QAAA,CACA,SAAA,CACA,eAAA,CAED,uBACC,cAAA,CACA,WAAA,CAGD,qCACC,6CAAA,CACA,mFACC,+BAAA,CAIF,8CACC,kBAAA,CAEA,0EACC,eAAA,CACA,eAAA,CACA,wBAAA,CACA,gFACC,SAAA,CAGF,oDACC,UAAA,CACA,QAAA,CACA,iBAAA,CACA,sEACC,gBAAA,CAKH,uCACC,gBAAA,CD0FD,qCACC,6CAAA",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#workflowengine {\n\tborder-bottom: 1px solid var(--color-border);\n}\n.section {\n\tmax-width: 100vw;\n\n\th2.configured-flows {\n\t\tmargin-top: 50px;\n\t\tmargin-bottom: 0;\n\t}\n}\n.actions {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tmax-width: 1200px;\n\t.actions__item {\n\t\tmax-width: 280px;\n\t\tflex-basis: 250px;\n\t}\n}\n\nbutton.icon {\n\tpadding-left: 32px;\n\tbackground-position: 10px center;\n}\n\n.slide-enter-active {\n\t-moz-transition-duration: 0.3s;\n\t-webkit-transition-duration: 0.3s;\n\t-o-transition-duration: 0.3s;\n\ttransition-duration: 0.3s;\n\t-moz-transition-timing-function: ease-in;\n\t-webkit-transition-timing-function: ease-in;\n\t-o-transition-timing-function: ease-in;\n\ttransition-timing-function: ease-in;\n}\n\n.slide-leave-active {\n\t-moz-transition-duration: 0.3s;\n\t-webkit-transition-duration: 0.3s;\n\t-o-transition-duration: 0.3s;\n\ttransition-duration: 0.3s;\n\t-moz-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\t-webkit-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\t-o-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\ttransition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n}\n\n.slide-enter-to, .slide-leave {\n\tmax-height: 500px;\n\toverflow: hidden;\n}\n\n.slide-enter, .slide-leave-to {\n\toverflow: hidden;\n\tmax-height: 0;\n\tpadding-top: 0;\n\tpadding-bottom: 0;\n}\n\n@import "./../styles/operation";\n\n.actions__item.more {\n\tbackground-color: var(--color-background-dark);\n}\n',".actions__item {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tflex-direction: column;\n\tflex-grow: 1;\n\tmargin-left: -1px;\n\tpadding: 10px;\n\tborder-radius: var(--border-radius-large);\n\tmargin-right: 20px;\n\tmargin-bottom: 20px;\n}\n.actions__item .icon {\n\tdisplay: block;\n\twidth: 100%;\n\theight: 50px;\n\tbackground-size: 50px 50px;\n\tbackground-position: center center;\n\tmargin-top: 10px;\n\tmargin-bottom: 10px;\n\tbackground-repeat: no-repeat;\n}\n.actions__item__description {\n\ttext-align: center;\n\tflex-grow: 1;\n\tdisplay: flex;\n\tflex-direction: column;\n}\n.actions__item_options {\n\twidth: 100%;\n\tmargin-top: 10px;\n\tpadding-left: 60px;\n}\nh3, small {\n\tpadding: 6px;\n\tdisplay: block;\n}\nh3 {\n\tmargin: 0;\n\tpadding: 0;\n\tfont-weight: 600;\n}\nsmall {\n\tfont-size: 10pt;\n\tflex-grow: 1;\n}\n\n.colored:not(.more) {\n\tbackground-color: var(--color-primary-element);\n\th3, small {\n\t\tcolor: var(--color-primary-text)\n\t}\n}\n\n.actions__item:not(.colored) {\n\tflex-direction: row;\n\n\t.actions__item__description {\n\t\tpadding-top: 5px;\n\t\ttext-align: left;\n\t\twidth: calc(100% - 105px);\n\t\tsmall {\n\t\t\tpadding: 0;\n\t\t}\n\t}\n\t.icon {\n\t\twidth: 50px;\n\t\tmargin: 0;\n\t\tmargin-right: 10px;\n\t\t&:not(.icon-invert) {\n\t\t\tfilter: invert(1);\n\t\t}\n\t}\n}\n\n.colored .icon-invert {\n\tfilter: invert(1);\n}\n"],sourceRoot:""}]),n.Z=a},1510:function(t,n,e){"use strict";var i=e(87537),o=e.n(i),r=e(23645),a=e.n(r)()(o());a.push([t.id,"\n.multiselect[data-v-8c011724], input[type='text'][data-v-8c011724] {\n\twidth: 100%;\n}\n.multiselect[data-v-8c011724] .multiselect__content-wrapper li>span,\n.multiselect[data-v-8c011724] .multiselect__single {\n\tdisplay: flex;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Checks/FileMimeType.vue"],names:[],mappings:";AA4IA;CACA,WAAA;AACA;AACA;;CAEA,aAAA;CACA,mBAAA;CACA,gBAAA;CACA,uBAAA;AACA",sourcesContent:["\x3c!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\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 --\x3e\n\n<template>\n\t<div>\n\t\t<Multiselect :value=\"currentValue\"\n\t\t\t:placeholder=\"t('workflowengine', 'Select a file type')\"\n\t\t\tlabel=\"label\"\n\t\t\ttrack-by=\"pattern\"\n\t\t\t:options=\"options\"\n\t\t\t:multiple=\"false\"\n\t\t\t:tagging=\"false\"\n\t\t\t@input=\"setValue\">\n\t\t\t<template slot=\"singleLabel\" slot-scope=\"props\">\n\t\t\t\t<span v-if=\"props.option.icon\" class=\"option__icon\" :class=\"props.option.icon\" />\n\t\t\t\t<img v-else :src=\"props.option.iconUrl\">\n\t\t\t\t<span class=\"option__title option__title_single\">{{ props.option.label }}</span>\n\t\t\t</template>\n\t\t\t<template slot=\"option\" slot-scope=\"props\">\n\t\t\t\t<span v-if=\"props.option.icon\" class=\"option__icon\" :class=\"props.option.icon\" />\n\t\t\t\t<img v-else :src=\"props.option.iconUrl\">\n\t\t\t\t<span class=\"option__title\">{{ props.option.label }}</span>\n\t\t\t</template>\n\t\t</Multiselect>\n\t\t<input v-if=\"!isPredefined\"\n\t\t\ttype=\"text\"\n\t\t\t:value=\"currentValue.pattern\"\n\t\t\t:placeholder=\"t('workflowengine', 'e.g. httpd/unix-directory')\"\n\t\t\t@input=\"updateCustom\">\n\t</div>\n</template>\n\n<script>\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\nimport valueMixin from './../../mixins/valueMixin'\nimport { imagePath } from '@nextcloud/router'\n\nexport default {\n\tname: 'FileMimeType',\n\tcomponents: {\n\t\tMultiselect,\n\t},\n\tmixins: [\n\t\tvalueMixin,\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tpredefinedTypes: [\n\t\t\t\t{\n\t\t\t\t\ticon: 'icon-folder',\n\t\t\t\t\tlabel: t('workflowengine', 'Folder'),\n\t\t\t\t\tpattern: 'httpd/unix-directory',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ticon: 'icon-picture',\n\t\t\t\t\tlabel: t('workflowengine', 'Images'),\n\t\t\t\t\tpattern: '/image\\\\/.*/',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ticonUrl: imagePath('core', 'filetypes/x-office-document'),\n\t\t\t\t\tlabel: t('workflowengine', 'Office documents'),\n\t\t\t\t\tpattern: '/(vnd\\\\.(ms-|openxmlformats-|oasis\\\\.opendocument).*)$/',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ticonUrl: imagePath('core', 'filetypes/application-pdf'),\n\t\t\t\t\tlabel: t('workflowengine', 'PDF documents'),\n\t\t\t\t\tpattern: 'application/pdf',\n\t\t\t\t},\n\t\t\t],\n\t\t}\n\t},\n\tcomputed: {\n\t\toptions() {\n\t\t\treturn [...this.predefinedTypes, this.customValue]\n\t\t},\n\t\tisPredefined() {\n\t\t\tconst matchingPredefined = this.predefinedTypes.find((type) => this.newValue === type.pattern)\n\t\t\tif (matchingPredefined) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\tcustomValue() {\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom mimetype'),\n\t\t\t\tpattern: '',\n\t\t\t}\n\t\t},\n\t\tcurrentValue() {\n\t\t\tconst matchingPredefined = this.predefinedTypes.find((type) => this.newValue === type.pattern)\n\t\t\tif (matchingPredefined) {\n\t\t\t\treturn matchingPredefined\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom mimetype'),\n\t\t\t\tpattern: this.newValue,\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\tvalidateRegex(string) {\n\t\t\tconst regexRegex = /^\\/(.*)\\/([gui]{0,3})$/\n\t\t\tconst result = regexRegex.exec(string)\n\t\t\treturn result !== null\n\t\t},\n\t\tsetValue(value) {\n\t\t\tif (value !== null) {\n\t\t\t\tthis.newValue = value.pattern\n\t\t\t\tthis.$emit('input', this.newValue)\n\t\t\t}\n\t\t},\n\t\tupdateCustom(event) {\n\t\t\tthis.newValue = event.target.value\n\t\t\tthis.$emit('input', this.newValue)\n\t\t},\n\t},\n}\n<\/script>\n<style scoped>\n\t.multiselect, input[type='text'] {\n\t\twidth: 100%;\n\t}\n\t.multiselect >>> .multiselect__content-wrapper li>span,\n\t.multiselect >>> .multiselect__single {\n\t\tdisplay: flex;\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n</style>\n"],sourceRoot:""}]),n.Z=a},82999:function(t,n,e){"use strict";var i=e(87537),o=e.n(i),r=e(23645),a=e.n(r)()(o());a.push([t.id,"\n.multiselect[data-v-dd8e16be], input[type='text'][data-v-dd8e16be] {\n\twidth: 100%;\n}\n","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Checks/RequestURL.vue"],names:[],mappings:";AA2IA;CACA,WAAA;AACA",sourcesContent:["\x3c!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\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 --\x3e\n\n<template>\n\t<div>\n\t\t<Multiselect :value=\"currentValue\"\n\t\t\t:placeholder=\"t('workflowengine', 'Select a request URL')\"\n\t\t\tlabel=\"label\"\n\t\t\ttrack-by=\"pattern\"\n\t\t\tgroup-values=\"children\"\n\t\t\tgroup-label=\"label\"\n\t\t\t:options=\"options\"\n\t\t\t:multiple=\"false\"\n\t\t\t:tagging=\"false\"\n\t\t\t@input=\"setValue\">\n\t\t\t<template slot=\"singleLabel\" slot-scope=\"props\">\n\t\t\t\t<span class=\"option__icon\" :class=\"props.option.icon\" />\n\t\t\t\t<span class=\"option__title option__title_single\">{{ props.option.label }}</span>\n\t\t\t</template>\n\t\t\t<template slot=\"option\" slot-scope=\"props\">\n\t\t\t\t<span class=\"option__icon\" :class=\"props.option.icon\" />\n\t\t\t\t<span class=\"option__title\">{{ props.option.label }} {{ props.option.$groupLabel }}</span>\n\t\t\t</template>\n\t\t</Multiselect>\n\t\t<input v-if=\"!isPredefined\"\n\t\t\ttype=\"text\"\n\t\t\t:value=\"currentValue.pattern\"\n\t\t\t:placeholder=\"placeholder\"\n\t\t\t@input=\"updateCustom\">\n\t</div>\n</template>\n\n<script>\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\nimport valueMixin from '../../mixins/valueMixin'\n\nexport default {\n\tname: 'RequestURL',\n\tcomponents: {\n\t\tMultiselect,\n\t},\n\tmixins: [\n\t\tvalueMixin,\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tnewValue: '',\n\t\t\tpredefinedTypes: [\n\t\t\t\t{\n\t\t\t\t\tlabel: t('workflowengine', 'Predefined URLs'),\n\t\t\t\t\tchildren: [\n\t\t\t\t\t\t{ pattern: 'webdav', label: t('workflowengine', 'Files WebDAV') },\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t}\n\t},\n\tcomputed: {\n\t\toptions() {\n\t\t\treturn [...this.predefinedTypes, this.customValue]\n\t\t},\n\t\tplaceholder() {\n\t\t\tif (this.check.operator === 'matches' || this.check.operator === '!matches') {\n\t\t\t\treturn '/^https\\\\:\\\\/\\\\/localhost\\\\/index\\\\.php$/i'\n\t\t\t}\n\t\t\treturn 'https://localhost/index.php'\n\t\t},\n\t\tmatchingPredefined() {\n\t\t\treturn this.predefinedTypes\n\t\t\t\t.map(groups => groups.children)\n\t\t\t\t.flat()\n\t\t\t\t.find((type) => this.newValue === type.pattern)\n\t\t},\n\t\tisPredefined() {\n\t\t\treturn !!this.matchingPredefined\n\t\t},\n\t\tcustomValue() {\n\t\t\treturn {\n\t\t\t\tlabel: t('workflowengine', 'Others'),\n\t\t\t\tchildren: [\n\t\t\t\t\t{\n\t\t\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\t\t\tlabel: t('workflowengine', 'Custom URL'),\n\t\t\t\t\t\tpattern: '',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t}\n\t\t},\n\t\tcurrentValue() {\n\t\t\tif (this.matchingPredefined) {\n\t\t\t\treturn this.matchingPredefined\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom URL'),\n\t\t\t\tpattern: this.newValue,\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\tvalidateRegex(string) {\n\t\t\tconst regexRegex = /^\\/(.*)\\/([gui]{0,3})$/\n\t\t\tconst result = regexRegex.exec(string)\n\t\t\treturn result !== null\n\t\t},\n\t\tsetValue(value) {\n\t\t\t// TODO: check if value requires a regex and set the check operator according to that\n\t\t\tif (value !== null) {\n\t\t\t\tthis.newValue = value.pattern\n\t\t\t\tthis.$emit('input', this.newValue)\n\t\t\t}\n\t\t},\n\t\tupdateCustom(event) {\n\t\t\tthis.newValue = event.target.value\n\t\t\tthis.$emit('input', this.newValue)\n\t\t},\n\t},\n}\n<\/script>\n<style scoped>\n\t.multiselect, input[type='text'] {\n\t\twidth: 100%;\n\t}\n</style>\n"],sourceRoot:""}]),n.Z=a},99055:function(t,n,e){"use strict";var i=e(87537),o=e.n(i),r=e(23645),a=e.n(r)()(o());a.push([t.id,"\n.multiselect[data-v-475ac1e6], input[type='text'][data-v-475ac1e6] {\n\twidth: 100%;\n}\n.multiselect .multiselect__content-wrapper li>span[data-v-475ac1e6] {\n\tdisplay: flex;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n.multiselect[data-v-475ac1e6] .multiselect__single {\n\twidth: 100%;\n\tdisplay: flex;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n.option__icon[data-v-475ac1e6] {\n\tdisplay: inline-block;\n\tmin-width: 30px;\n\tbackground-position: left;\n}\n.option__title[data-v-475ac1e6] {\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Checks/RequestUserAgent.vue"],names:[],mappings:";AA8HA;CACA,WAAA;AACA;AAEA;CACA,aAAA;CACA,mBAAA;CACA,gBAAA;CACA,uBAAA;AACA;AACA;CACA,WAAA;CACA,aAAA;CACA,mBAAA;CACA,gBAAA;CACA,uBAAA;AACA;AACA;CACA,qBAAA;CACA,eAAA;CACA,yBAAA;AACA;AACA;CACA,mBAAA;CACA,gBAAA;CACA,uBAAA;AACA",sourcesContent:["\x3c!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\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 --\x3e\n\n<template>\n\t<div>\n\t\t<Multiselect :value=\"currentValue\"\n\t\t\t:placeholder=\"t('workflowengine', 'Select a user agent')\"\n\t\t\tlabel=\"label\"\n\t\t\ttrack-by=\"pattern\"\n\t\t\t:options=\"options\"\n\t\t\t:multiple=\"false\"\n\t\t\t:tagging=\"false\"\n\t\t\t@input=\"setValue\">\n\t\t\t<template slot=\"singleLabel\" slot-scope=\"props\">\n\t\t\t\t<span class=\"option__icon\" :class=\"props.option.icon\" />\n\t\t\t\t\x3c!-- v-html can be used here as t() always passes our translated strings though DOMPurify.sanitize --\x3e\n\t\t\t\t\x3c!-- eslint-disable-next-line vue/no-v-html --\x3e\n\t\t\t\t<span class=\"option__title option__title_single\" v-html=\"props.option.label\" />\n\t\t\t</template>\n\t\t\t<template slot=\"option\" slot-scope=\"props\">\n\t\t\t\t<span class=\"option__icon\" :class=\"props.option.icon\" />\n\t\t\t\t\x3c!-- eslint-disable-next-line vue/no-v-html --\x3e\n\t\t\t\t<span v-if=\"props.option.$groupLabel\" class=\"option__title\" v-html=\"props.option.$groupLabel\" />\n\t\t\t\t\x3c!-- eslint-disable-next-line vue/no-v-html --\x3e\n\t\t\t\t<span v-else class=\"option__title\" v-html=\"props.option.label\" />\n\t\t\t</template>\n\t\t</Multiselect>\n\t\t<input v-if=\"!isPredefined\"\n\t\t\ttype=\"text\"\n\t\t\t:value=\"currentValue.pattern\"\n\t\t\t@input=\"updateCustom\">\n\t</div>\n</template>\n\n<script>\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\nimport valueMixin from '../../mixins/valueMixin'\n\nexport default {\n\tname: 'RequestUserAgent',\n\tcomponents: {\n\t\tMultiselect,\n\t},\n\tmixins: [\n\t\tvalueMixin,\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tnewValue: '',\n\t\t\tpredefinedTypes: [\n\t\t\t\t{ pattern: 'android', label: t('workflowengine', 'Android client'), icon: 'icon-phone' },\n\t\t\t\t{ pattern: 'ios', label: t('workflowengine', 'iOS client'), icon: 'icon-phone' },\n\t\t\t\t{ pattern: 'desktop', label: t('workflowengine', 'Desktop client'), icon: 'icon-desktop' },\n\t\t\t\t{ pattern: 'mail', label: t('workflowengine', 'Thunderbird & Outlook addons'), icon: 'icon-mail' },\n\t\t\t],\n\t\t}\n\t},\n\tcomputed: {\n\t\toptions() {\n\t\t\treturn [...this.predefinedTypes, this.customValue]\n\t\t},\n\t\tmatchingPredefined() {\n\t\t\treturn this.predefinedTypes\n\t\t\t\t.find((type) => this.newValue === type.pattern)\n\t\t},\n\t\tisPredefined() {\n\t\t\treturn !!this.matchingPredefined\n\t\t},\n\t\tcustomValue() {\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom user agent'),\n\t\t\t\tpattern: '',\n\t\t\t}\n\t\t},\n\t\tcurrentValue() {\n\t\t\tif (this.matchingPredefined) {\n\t\t\t\treturn this.matchingPredefined\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom user agent'),\n\t\t\t\tpattern: this.newValue,\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\tvalidateRegex(string) {\n\t\t\tconst regexRegex = /^\\/(.*)\\/([gui]{0,3})$/\n\t\t\tconst result = regexRegex.exec(string)\n\t\t\treturn result !== null\n\t\t},\n\t\tsetValue(value) {\n\t\t\t// TODO: check if value requires a regex and set the check operator according to that\n\t\t\tif (value !== null) {\n\t\t\t\tthis.newValue = value.pattern\n\t\t\t\tthis.$emit('input', this.newValue)\n\t\t\t}\n\t\t},\n\t\tupdateCustom(event) {\n\t\t\tthis.newValue = event.target.value\n\t\t\tthis.$emit('input', this.newValue)\n\t\t},\n\t},\n}\n<\/script>\n<style scoped>\n\t.multiselect, input[type='text'] {\n\t\twidth: 100%;\n\t}\n\n\t.multiselect .multiselect__content-wrapper li>span {\n\t\tdisplay: flex;\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n\t.multiselect::v-deep .multiselect__single {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n\t.option__icon {\n\t\tdisplay: inline-block;\n\t\tmin-width: 30px;\n\t\tbackground-position: left;\n\t}\n\t.option__title {\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n</style>\n"],sourceRoot:""}]),n.Z=a},80787:function(t,n,e){"use strict";var i=e(87537),o=e.n(i),r=e(23645),a=e.n(r)()(o());a.push([t.id,"\n.multiselect[data-v-79fa10a5] {\n\twidth: 100%;\n}\n","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Checks/RequestUserGroup.vue"],names:[],mappings:";AA4GA;CACA,WAAA;AACA",sourcesContent:["\x3c!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\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 --\x3e\n\n<template>\n\t<div>\n\t\t<Multiselect :value=\"currentValue\"\n\t\t\t:loading=\"status.isLoading && groups.length === 0\"\n\t\t\t:options=\"groups\"\n\t\t\t:multiple=\"false\"\n\t\t\tlabel=\"displayname\"\n\t\t\ttrack-by=\"id\"\n\t\t\t@search-change=\"searchAsync\"\n\t\t\t@input=\"(value) => $emit('input', value.id)\" />\n\t</div>\n</template>\n\n<script>\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nconst groups = []\nconst status = {\n\tisLoading: false,\n}\n\nexport default {\n\tname: 'RequestUserGroup',\n\tcomponents: {\n\t\tMultiselect,\n\t},\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tcheck: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => { return {} },\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tgroups,\n\t\t\tstatus,\n\t\t}\n\t},\n\tcomputed: {\n\t\tcurrentValue() {\n\t\t\treturn this.groups.find(group => group.id === this.value) || null\n\t\t},\n\t},\n\tasync mounted() {\n\t\tif (this.groups.length === 0) {\n\t\t\tawait this.searchAsync('')\n\t\t}\n\t\tif (this.currentValue === null) {\n\t\t\tawait this.searchAsync(this.value)\n\t\t}\n\t},\n\tmethods: {\n\t\tsearchAsync(searchQuery) {\n\t\t\tif (this.status.isLoading) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.status.isLoading = true\n\t\t\treturn axios.get(generateOcsUrl('cloud/groups/details?limit=20&search={searchQuery}', { searchQuery })).then((response) => {\n\t\t\t\tresponse.data.ocs.data.groups.forEach((group) => {\n\t\t\t\t\tthis.addGroup({\n\t\t\t\t\t\tid: group.id,\n\t\t\t\t\t\tdisplayname: group.displayname,\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\tthis.status.isLoading = false\n\t\t\t}, (error) => {\n\t\t\t\tconsole.error('Error while loading group list', error.response)\n\t\t\t})\n\t\t},\n\t\taddGroup(group) {\n\t\t\tconst index = this.groups.findIndex((item) => item.id === group.id)\n\t\t\tif (index === -1) {\n\t\t\t\tthis.groups.push(group)\n\t\t\t}\n\t\t},\n\t},\n}\n<\/script>\n<style scoped>\n\t.multiselect {\n\t\twidth: 100%;\n\t}\n</style>\n"],sourceRoot:""}]),n.Z=a},46700:function(t,n,e){var i={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":2819,"./hi.js":2819,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function o(t){var n=r(t);return e(n)}function r(t){if(!e.o(i,t)){var n=new Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}return i[t]}o.keys=function(){return Object.keys(i)},o.resolve=r,t.exports=o,o.id=46700}},i={};function o(t){var n=i[t];if(void 0!==n)return n.exports;var r=i[t]={id:t,loaded:!1,exports:{}};return e[t].call(r.exports,r,r.exports,o),r.loaded=!0,r.exports}o.m=e,o.amdD=function(){throw new Error("define cannot be used indirect")},o.amdO={},n=[],o.O=function(t,e,i,r){if(!e){var a=1/0;for(u=0;u<n.length;u++){e=n[u][0],i=n[u][1],r=n[u][2];for(var s=!0,l=0;l<e.length;l++)(!1&r||a>=r)&&Object.keys(o.O).every((function(t){return o.O[t](e[l])}))?e.splice(l--,1):(s=!1,r<a&&(a=r));if(s){n.splice(u--,1);var c=i();void 0!==c&&(t=c)}}return t}r=r||0;for(var u=n.length;u>0&&n[u-1][2]>r;u--)n[u]=n[u-1];n[u]=[e,i,r]},o.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(n,{a:n}),n},o.d=function(t,n){for(var e in n)o.o(n,e)&&!o.o(t,e)&&Object.defineProperty(t,e,{enumerable:!0,get:n[e]})},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),o.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},o.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},o.j=8318,function(){o.b=document.baseURI||self.location.href;var t={8318:0};o.O.j=function(n){return 0===t[n]};var n=function(n,e){var i,r,a=e[0],s=e[1],l=e[2],c=0;if(a.some((function(n){return 0!==t[n]}))){for(i in s)o.o(s,i)&&(o.m[i]=s[i]);if(l)var u=l(o)}for(n&&n(e);c<a.length;c++)r=a[c],o.o(t,r)&&t[r]&&t[r][0](),t[r]=0;return o.O(u)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(n.bind(null,0)),e.push=n.bind(null,e.push.bind(e))}();var r=o.O(void 0,[7874],(function(){return o(82730)}));r=o.O(r)}();
-//# sourceMappingURL=workflowengine-workflowengine.js.map?v=4e37f659297a8685056b \ No newline at end of file
+!function(){var n,e={82730:function(n,e,i){"use strict";var o=i(20144),r=i(20629),a=i(4820),s=i(16453),l=i(79753),c=0===(0,s.loadState)("workflowengine","scope")?"global":"user",u=function(t){return(0,l.generateOcsUrl)("apps/workflowengine/api/v1/workflows/{scopeValue}",{scopeValue:c})+t+"?format=json"},p=i(10128),d=i.n(p);function A(t,n,e,i,o,r,a){try{var s=t[r](a),l=s.value}catch(t){return void e(t)}s.done?n(l):Promise.resolve(l).then(i,o)}function m(t){return function(){var n=this,e=arguments;return new Promise((function(i,o){var r=t.apply(n,e);function a(t){A(r,i,o,a,s,"next",t)}function s(t){A(r,i,o,a,s,"throw",t)}a(void 0)}))}}function f(t,n){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable}))),e.push.apply(e,i)}return e}function h(t){for(var n=1;n<arguments.length;n++){var e=null!=arguments[n]?arguments[n]:{};n%2?f(Object(e),!0).forEach((function(n){g(t,n,e[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):f(Object(e)).forEach((function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))}))}return t}function g(t,n,e){return n in t?Object.defineProperty(t,n,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[n]=e,t}o.default.use(r.ZP);var v=new r.yh({state:{rules:[],scope:(0,s.loadState)("workflowengine","scope"),appstoreEnabled:(0,s.loadState)("workflowengine","appstoreenabled"),operations:(0,s.loadState)("workflowengine","operators"),plugins:o.default.observable({checks:{},operators:{}}),entities:(0,s.loadState)("workflowengine","entities"),events:(0,s.loadState)("workflowengine","entities").map((function(t){return t.events.map((function(n){return h({id:"".concat(t.id,"::").concat(n.eventName),entity:t},n)}))})).flat(),checks:(0,s.loadState)("workflowengine","checks")},mutations:{addRule:function(t,n){t.rules.push(h(h({},n),{},{valid:!0}))},updateRule:function(t,n){var e=t.rules.findIndex((function(t){return n.id===t.id})),i=Object.assign({},n);o.default.set(t.rules,e,i)},removeRule:function(t,n){var e=t.rules.findIndex((function(t){return n.id===t.id}));t.rules.splice(e,1)},addPluginCheck:function(t,n){o.default.set(t.plugins.checks,n.class,n)},addPluginOperator:function(t,n){n=Object.assign({color:"var(--color-primary-element)"},n,t.operations[n.id]||{}),void 0!==t.operations[n.id]&&o.default.set(t.operations,n.id,n)}},actions:{fetchRules:function(t){return m(regeneratorRuntime.mark((function n(){var e,i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,a.default.get(u(""));case 2:e=n.sent,i=e.data,Object.values(i.ocs.data).flat().forEach((function(n){t.commit("addRule",n)}));case 5:case"end":return n.stop()}}),n)})))()},createNewRule:function(t,n){var e=null,i=[];!1===n.isComplex&&""===n.fixedEntity&&(i=[(e=(e=t.state.entities.find((function(t){return n.entities&&n.entities[0]===t.id})))||Object.values(t.state.entities)[0]).events[0].eventName]),t.commit("addRule",{id:-(new Date).getTime(),class:n.id,entity:e?e.id:n.fixedEntity,events:i,name:"",checks:[{class:null,operator:null,value:""}],operation:n.operation||""})},updateRule:function(t,n){t.commit("updateRule",h(h({},n),{},{events:"string"==typeof n.events?JSON.parse(n.events):n.events}))},removeRule:function(t,n){t.commit("removeRule",n)},pushUpdateRule:function(t,n){return m(regeneratorRuntime.mark((function e(){var i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(0!==t.state.scope){e.next=3;break}return e.next=3,d()();case 3:if(!(n.id<0)){e.next=9;break}return e.next=6,a.default.post(u(""),n);case 6:i=e.sent,e.next=12;break;case 9:return e.next=11,a.default.put(u("/".concat(n.id)),n);case 11:i=e.sent;case 12:o.default.set(n,"id",i.data.ocs.data.id),t.commit("updateRule",n);case 14:case"end":return e.stop()}}),e)})))()},deleteRule:function(t,n){return m(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,d()();case 2:return e.next=4,a.default.delete(u("/".concat(n.id)));case 4:t.commit("removeRule",n);case 5:case"end":return e.stop()}}),e)})))()},setValid:function(t,n){var e=n.rule,i=n.valid;e.valid=i,t.commit("updateRule",e)}},getters:{getRules:function(t){return t.rules.filter((function(n){return void 0!==t.operations[n.class]})).sort((function(t,n){return t.id-n.id||n.class-t.class}))},getOperationForRule:function(t){return function(n){return t.operations[n.class]}},getEntityForOperation:function(t){return function(n){return t.entities.find((function(t){return n.fixedEntity===t.id}))}},getEventsForOperation:function(t){return function(n){return t.events}},getChecksForEntity:function(t){return function(n){return Object.values(t.checks).filter((function(t){return t.supportedEntities.indexOf(n)>-1||0===t.supportedEntities.length})).map((function(n){return t.plugins.checks[n.id]})).reduce((function(t,n){return t[n.class]=n,t}),{})}}}}),C=i(15168),w=i.n(C),b=i(79440),x=i.n(b),k=i(56286),y=i.n(k),_=i(7811),j=i.n(_),O=i(26932),R={name:"Event",components:{Multiselect:j()},props:{rule:{type:Object,required:!0}},computed:{entity:function(){return this.$store.getters.getEntityForOperation(this.operation)},operation:function(){return this.$store.getters.getOperationForRule(this.rule)},allEvents:function(){return this.$store.getters.getEventsForOperation(this.operation)},currentEvent:function(){var t=this;return this.allEvents.filter((function(n){return n.entity.id===t.rule.entity&&-1!==t.rule.events.indexOf(n.eventName)}))}},methods:{updateEvent:function(n){if(0!==n.length){var e,i=this.rule.entity,o=n.map((function(t){return t.entity.id})).filter((function(t,n,e){return e.indexOf(t)===n}));e=o.length>1?o.filter((function(t){return t!==i}))[0]:o[0],this.$set(this.rule,"entity",e),this.$set(this.rule,"events",n.filter((function(t){return t.entity.id===e})).map((function(t){return t.eventName}))),this.$emit("update",this.rule)}else(0,O.K2)(t("workflowengine","At least one event must be selected"))}}},V=i(93379),E=i.n(V),P=i(7795),B=i.n(P),T=i(90569),S=i.n(T),D=i(3565),F=i.n(D),$=i(19216),U=i.n($),M=i(44589),I=i.n(M),z=i(71605),G={};G.styleTagTransform=I(),G.setAttributes=F(),G.insert=S().bind(null,"head"),G.domAPI=B(),G.insertStyleElement=U(),E()(z.Z,G),z.Z&&z.Z.locals&&z.Z.locals;var L=i(51900),N=(0,L.Z)(R,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{staticClass:"event"},[t.operation.isComplex&&""!==t.operation.fixedEntity?e("div",{staticClass:"isComplex"},[e("img",{staticClass:"option__icon",attrs:{src:t.entity.icon}}),t._v(" "),e("span",{staticClass:"option__title option__title_single"},[t._v(t._s(t.operation.triggerHint))])]):e("Multiselect",{attrs:{value:t.currentEvent,options:t.allEvents,"track-by":"id",multiple:!0,"auto-limit":!1,disabled:t.allEvents.length<=1},on:{input:t.updateEvent},scopedSlots:t._u([{key:"selection",fn:function(n){var i=n.values,o=n.isOpen;return[i.length&&!o?e("div",{staticClass:"eventlist"},[e("img",{staticClass:"option__icon",attrs:{src:i[0].entity.icon}}),t._v(" "),t._l(i,(function(n,o){return e("span",{key:n.id,staticClass:"text option__title option__title_single"},[t._v(t._s(n.displayName)+" "),o+1<i.length?e("span",[t._v(", ")]):t._e()])}))],2):t._e()]}},{key:"option",fn:function(n){return[e("img",{staticClass:"option__icon",attrs:{src:n.option.entity.icon}}),t._v(" "),e("span",{staticClass:"option__title"},[t._v(t._s(n.option.displayName))])]}}])})],1)}),[],!1,null,"f3569276",null).exports,Z=i(2649),W=i.n(Z),q={name:"Check",components:{ActionButton:y(),Actions:x(),Multiselect:j()},directives:{ClickOutside:W()},props:{check:{type:Object,required:!0},rule:{type:Object,required:!0}},data:function(){return{deleteVisible:!1,currentOption:null,currentOperator:null,options:[],valid:!1}},computed:{checks:function(){return this.$store.getters.getChecksForEntity(this.rule.entity)},operators:function(){if(!this.currentOption)return[];var t=this.checks[this.currentOption.class].operators;return"function"==typeof t?t(this.check):t},currentComponent:function(){return this.currentOption?this.checks[this.currentOption.class].component:[]},valuePlaceholder:function(){return this.currentOption&&this.currentOption.placeholder?this.currentOption.placeholder(this.check):""}},watch:{"check.operator":function(){this.validate()}},mounted:function(){var t=this;this.options=Object.values(this.checks),this.currentOption=this.checks[this.check.class],this.currentOperator=this.operators.find((function(n){return n.operator===t.check.operator})),null===this.check.class&&this.$nextTick((function(){return t.$refs.checkSelector.$el.focus()})),this.validate()},methods:{showDelete:function(){this.deleteVisible=!0},hideDelete:function(){this.deleteVisible=!1},validate:function(){this.valid=!0,this.currentOption&&this.currentOption.validate&&(this.valid=!!this.currentOption.validate(this.check)),this.check.invalid=!this.valid,this.$emit("validate",this.valid)},updateCheck:function(){var t=this,n=this.operators.findIndex((function(n){return t.check.operator===n.operator}));this.check.class===this.currentOption.class&&-1!==n||(this.currentOperator=this.operators[0]),this.check.class=this.currentOption.class,this.check.operator=this.currentOperator.operator,this.validate(),this.$emit("update",this.check)}}},Y=i(38530),H={};H.styleTagTransform=I(),H.setAttributes=F(),H.insert=S().bind(null,"head"),H.domAPI=B(),H.insertStyleElement=U(),E()(Y.Z,H),Y.Z&&Y.Z.locals&&Y.Z.locals;var J=(0,L.Z)(q,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{directives:[{name:"click-outside",rawName:"v-click-outside",value:t.hideDelete,expression:"hideDelete"}],staticClass:"check",on:{click:t.showDelete}},[e("Multiselect",{ref:"checkSelector",attrs:{options:t.options,label:"name","track-by":"class","allow-empty":!1,placeholder:t.t("workflowengine","Select a filter")},on:{input:t.updateCheck},model:{value:t.currentOption,callback:function(n){t.currentOption=n},expression:"currentOption"}}),t._v(" "),e("Multiselect",{staticClass:"comparator",attrs:{disabled:!t.currentOption,options:t.operators,label:"name","track-by":"operator","allow-empty":!1,placeholder:t.t("workflowengine","Select a comparator")},on:{input:t.updateCheck},model:{value:t.currentOperator,callback:function(n){t.currentOperator=n},expression:"currentOperator"}}),t._v(" "),t.currentOperator&&t.currentComponent?e(t.currentOption.component,{tag:"component",staticClass:"option",attrs:{disabled:!t.currentOption,check:t.check},on:{input:t.updateCheck,valid:function(n){(t.valid=!0)&&t.validate()},invalid:function(n){!(t.valid=!1)&&t.validate()}},model:{value:t.check.value,callback:function(n){t.$set(t.check,"value",n)},expression:"check.value"}}):e("input",{directives:[{name:"model",rawName:"v-model",value:t.check.value,expression:"check.value"}],staticClass:"option",class:{invalid:!t.valid},attrs:{type:"text",disabled:!t.currentOption,placeholder:t.valuePlaceholder},domProps:{value:t.check.value},on:{input:[function(n){n.target.composing||t.$set(t.check,"value",n.target.value)},t.updateCheck]}}),t._v(" "),t.deleteVisible||!t.currentOption?e("Actions",[e("ActionButton",{attrs:{icon:"icon-close"},on:{click:function(n){return t.$emit("remove")}}})],1):t._e()],1)}),[],!1,null,"70cc784d",null).exports,Q={name:"Operation",props:{operation:{type:Object,required:!0},colored:{type:Boolean,default:!0}}},K=i(58444),X={};X.styleTagTransform=I(),X.setAttributes=F(),X.insert=S().bind(null,"head"),X.domAPI=B(),X.insertStyleElement=U(),E()(K.Z,X),K.Z&&K.Z.locals&&K.Z.locals;var tt=(0,L.Z)(Q,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{staticClass:"actions__item",class:{colored:t.colored},style:{backgroundColor:t.colored?t.operation.color:"transparent"}},[e("div",{staticClass:"icon",class:t.operation.iconClass,style:{backgroundImage:t.operation.iconClass?"":"url("+t.operation.icon+")"}}),t._v(" "),e("div",{staticClass:"actions__item__description"},[e("h3",[t._v(t._s(t.operation.name))]),t._v(" "),e("small",[t._v(t._s(t.operation.description))]),t._v(" "),e("div",[t.colored?e("button",[t._v("\n\t\t\t\t"+t._s(t.t("workflowengine","Add new flow"))+"\n\t\t\t")]):t._e()])]),t._v(" "),e("div",{staticClass:"actions__item_options"},[t._t("default")],2)])}),[],!1,null,"34495584",null).exports;function nt(t,n,e,i,o,r,a){try{var s=t[r](a),l=s.value}catch(t){return void e(t)}s.done?n(l):Promise.resolve(l).then(i,o)}function et(t){return function(){var n=this,e=arguments;return new Promise((function(i,o){var r=t.apply(n,e);function a(t){nt(r,i,o,a,s,"next",t)}function s(t){nt(r,i,o,a,s,"throw",t)}a(void 0)}))}}var it={name:"Rule",components:{Operation:tt,Check:J,Event:N,Actions:x(),ActionButton:y()},directives:{Tooltip:w()},props:{rule:{type:Object,required:!0}},data:function(){return{editing:!1,checks:[],error:null,dirty:this.rule.id<0,originalRule:null}},computed:{operation:function(){return this.$store.getters.getOperationForRule(this.rule)},ruleStatus:function(){return this.error||!this.rule.valid||0===this.rule.checks.length||this.rule.checks.some((function(t){return!0===t.invalid}))?{title:t("workflowengine","The configuration is invalid"),class:"icon-close-white invalid",tooltip:{placement:"bottom",show:!0,content:this.error}}:this.dirty?{title:t("workflowengine","Save"),class:"icon-confirm-white primary"}:{title:t("workflowengine","Active"),class:"icon icon-checkmark"}},lastCheckComplete:function(){var t=this.rule.checks[this.rule.checks.length-1];return void 0===t||null!==t.class}},mounted:function(){this.originalRule=JSON.parse(JSON.stringify(this.rule))},methods:{updateOperation:function(t){var n=this;return et(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.$set(n.rule,"operation",t),e.next=3,n.updateRule();case 3:case"end":return e.stop()}}),e)})))()},validate:function(t){this.error=null,this.$store.dispatch("updateRule",this.rule)},updateRule:function(){this.dirty||(this.dirty=!0),this.error=null,this.$store.dispatch("updateRule",this.rule)},saveRule:function(){var t=this;return et(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,t.$store.dispatch("pushUpdateRule",t.rule);case 3:t.dirty=!1,t.error=null,t.originalRule=JSON.parse(JSON.stringify(t.rule)),n.next=12;break;case 8:n.prev=8,n.t0=n.catch(0),console.error("Failed to save operation"),t.error=n.t0.response.data.ocs.meta.message;case 12:case"end":return n.stop()}}),n,null,[[0,8]])})))()},deleteRule:function(){var t=this;return et(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,t.$store.dispatch("deleteRule",t.rule);case 3:n.next=9;break;case 5:n.prev=5,n.t0=n.catch(0),console.error("Failed to delete operation"),t.error=n.t0.response.data.ocs.meta.message;case 9:case"end":return n.stop()}}),n,null,[[0,5]])})))()},cancelRule:function(){this.rule.id<0?this.$store.dispatch("removeRule",this.rule):(this.$store.dispatch("updateRule",this.originalRule),this.originalRule=JSON.parse(JSON.stringify(this.rule)),this.dirty=!1)},removeCheck:function(t){var n=this;return et(regeneratorRuntime.mark((function e(){var i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:(i=n.rule.checks.findIndex((function(n){return n===t})))>-1&&n.$delete(n.rule.checks,i),n.$store.dispatch("updateRule",n.rule);case 3:case"end":return e.stop()}}),e)})))()},onAddFilter:function(){this.rule.checks.push({class:null,operator:null,value:""})}}},ot=i(87742),rt={};function at(t,n){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable}))),e.push.apply(e,i)}return e}function st(t){for(var n=1;n<arguments.length;n++){var e=null!=arguments[n]?arguments[n]:{};n%2?at(Object(e),!0).forEach((function(n){lt(t,n,e[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):at(Object(e)).forEach((function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))}))}return t}function lt(t,n,e){return n in t?Object.defineProperty(t,n,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[n]=e,t}rt.styleTagTransform=I(),rt.setAttributes=F(),rt.insert=S().bind(null,"head"),rt.domAPI=B(),rt.insertStyleElement=U(),E()(ot.Z,rt),ot.Z&&ot.Z.locals&&ot.Z.locals;var ct={name:"Workflow",components:{Operation:tt,Rule:(0,L.Z)(it,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return t.operation?e("div",{staticClass:"section rule",style:{borderLeftColor:t.operation.color||""}},[e("div",{staticClass:"trigger"},[e("p",[e("span",[t._v(t._s(t.t("workflowengine","When")))]),t._v(" "),e("Event",{attrs:{rule:t.rule},on:{update:t.updateRule}})],1),t._v(" "),t._l(t.rule.checks,(function(n,i){return e("p",{key:i},[e("span",[t._v(t._s(t.t("workflowengine","and")))]),t._v(" "),e("Check",{attrs:{check:n,rule:t.rule},on:{update:t.updateRule,validate:t.validate,remove:function(e){return t.removeCheck(n)}}})],1)})),t._v(" "),e("p",[e("span"),t._v(" "),t.lastCheckComplete?e("input",{staticClass:"check--add",attrs:{type:"button",value:"Add a new filter"},on:{click:t.onAddFilter}}):t._e()])],2),t._v(" "),e("div",{staticClass:"flow-icon icon-confirm"}),t._v(" "),e("div",{staticClass:"action"},[e("Operation",{attrs:{operation:t.operation,colored:!1}},[t.operation.options?e(t.operation.options,{tag:"component",on:{input:t.updateOperation},model:{value:t.rule.operation,callback:function(n){t.$set(t.rule,"operation",n)},expression:"rule.operation"}}):t._e()],1),t._v(" "),e("div",{staticClass:"buttons"},[e("button",{staticClass:"status-button icon",class:t.ruleStatus.class,on:{click:t.saveRule}},[t._v("\n\t\t\t\t"+t._s(t.ruleStatus.title)+"\n\t\t\t")]),t._v(" "),t.rule.id<-1||t.dirty?e("button",{on:{click:t.cancelRule}},[t._v("\n\t\t\t\t"+t._s(t.t("workflowengine","Cancel"))+"\n\t\t\t")]):t.dirty?t._e():e("button",{on:{click:t.deleteRule}},[t._v("\n\t\t\t\t"+t._s(t.t("workflowengine","Delete"))+"\n\t\t\t")])]),t._v(" "),t.error?e("p",{staticClass:"error-message"},[t._v("\n\t\t\t"+t._s(t.error)+"\n\t\t")]):t._e()],1)]):t._e()}),[],!1,null,"225ba268",null).exports},data:function(){return{showMoreOperations:!1,appstoreUrl:(0,l.generateUrl)("settings/apps/workflow")}},computed:st(st(st({},(0,r.Se)({rules:"getRules"})),(0,r.rn)({appstoreEnabled:"appstoreEnabled",scope:"scope",operations:"operations"})),{},{hasMoreOperations:function(){return Object.keys(this.operations).length>3},getMainOperations:function(){return this.showMoreOperations?Object.values(this.operations):Object.values(this.operations).slice(0,3)},showAppStoreHint:function(){return 0===this.scope&&this.appstoreEnabled&&OC.isUserAdmin()}}),mounted:function(){this.$store.dispatch("fetchRules")},methods:{createNewRule:function(t){this.$store.dispatch("createNewRule",t)}}},ut=i(33855),pt={};pt.styleTagTransform=I(),pt.setAttributes=F(),pt.insert=S().bind(null,"head"),pt.domAPI=B(),pt.insertStyleElement=U(),E()(ut.Z,pt),ut.Z&&ut.Z.locals&&ut.Z.locals;var dt=(0,L.Z)(ct,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{attrs:{id:"workflowengine"}},[e("div",{staticClass:"section"},[e("h2",[t._v(t._s(t.t("workflowengine","Available flows")))]),t._v(" "),0===t.scope?e("p",{staticClass:"settings-hint"},[e("a",{attrs:{href:"https://nextcloud.com/developer/"}},[t._v(t._s(t.t("workflowengine","For details on how to write your own flow, check out the development documentation.")))])]):t._e(),t._v(" "),e("transition-group",{staticClass:"actions",attrs:{name:"slide",tag:"div"}},[t._l(t.getMainOperations,(function(n){return e("Operation",{key:n.id,attrs:{operation:n},nativeOn:{click:function(e){return t.createNewRule(n)}}})})),t._v(" "),t.showAppStoreHint?e("a",{key:"add",staticClass:"actions__item colored more",attrs:{href:t.appstoreUrl}},[e("div",{staticClass:"icon icon-add"}),t._v(" "),e("div",{staticClass:"actions__item__description"},[e("h3",[t._v(t._s(t.t("workflowengine","More flows")))]),t._v(" "),e("small",[t._v(t._s(t.t("workflowengine","Browse the App Store")))])])]):t._e()],2),t._v(" "),t.hasMoreOperations?e("div",{staticClass:"actions__more"},[e("button",{staticClass:"icon",class:t.showMoreOperations?"icon-triangle-n":"icon-triangle-s",on:{click:function(n){t.showMoreOperations=!t.showMoreOperations}}},[t._v("\n\t\t\t\t"+t._s(t.showMoreOperations?t.t("workflowengine","Show less"):t.t("workflowengine","Show more"))+"\n\t\t\t")])]):t._e(),t._v(" "),0===t.scope?e("h2",{staticClass:"configured-flows"},[t._v("\n\t\t\t"+t._s(t.t("workflowengine","Configured flows"))+"\n\t\t")]):e("h2",{staticClass:"configured-flows"},[t._v("\n\t\t\t"+t._s(t.t("workflowengine","Your flows"))+"\n\t\t")])],1),t._v(" "),t.rules.length>0?e("transition-group",{attrs:{name:"slide"}},t._l(t.rules,(function(t){return e("Rule",{key:t.id,attrs:{rule:t}})})),1):t._e()],1)}),[],!1,null,"7b3e4a56",null).exports,At=/^\/(.*)\/([gui]{0,3})$/,mt=/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\/(3[0-2]|[1-2][0-9]|[1-9])$/,ft=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9])$/,ht={props:{value:{type:String,default:""},check:{type:Object,default:function(){return{}}}},data:function(){return{newValue:""}},watch:{value:{immediate:!0,handler:function(t){this.updateInternalValue(t)}}},methods:{updateInternalValue:function(t){this.newValue=t}}};function gt(t,n){(null==n||n>t.length)&&(n=t.length);for(var e=0,i=new Array(n);e<n;e++)i[e]=t[e];return i}var vt={name:"FileMimeType",components:{Multiselect:j()},mixins:[ht],data:function(){return{predefinedTypes:[{icon:"icon-folder",label:t("workflowengine","Folder"),pattern:"httpd/unix-directory"},{icon:"icon-picture",label:t("workflowengine","Images"),pattern:"/image\\/.*/"},{iconUrl:(0,l.imagePath)("core","filetypes/x-office-document"),label:t("workflowengine","Office documents"),pattern:"/(vnd\\.(ms-|openxmlformats-|oasis\\.opendocument).*)$/"},{iconUrl:(0,l.imagePath)("core","filetypes/application-pdf"),label:t("workflowengine","PDF documents"),pattern:"application/pdf"}]}},computed:{options:function(){return[].concat(function(t){if(Array.isArray(t))return gt(t)}(t=this.predefinedTypes)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,n){if(t){if("string"==typeof t)return gt(t,n);var e=Object.prototype.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?gt(t,n):void 0}}(t)||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.")}(),[this.customValue]);var t},isPredefined:function(){var t=this;return!!this.predefinedTypes.find((function(n){return t.newValue===n.pattern}))},customValue:function(){return{icon:"icon-settings-dark",label:t("workflowengine","Custom mimetype"),pattern:""}},currentValue:function(){var n=this;return this.predefinedTypes.find((function(t){return n.newValue===t.pattern}))||{icon:"icon-settings-dark",label:t("workflowengine","Custom mimetype"),pattern:this.newValue}}},methods:{validateRegex:function(t){return null!==/^\/(.*)\/([gui]{0,3})$/.exec(t)},setValue:function(t){null!==t&&(this.newValue=t.pattern,this.$emit("input",this.newValue))},updateCustom:function(t){this.newValue=t.target.value,this.$emit("input",this.newValue)}}},Ct=i(1510),wt={};wt.styleTagTransform=I(),wt.setAttributes=F(),wt.insert=S().bind(null,"head"),wt.domAPI=B(),wt.insertStyleElement=U(),E()(Ct.Z,wt),Ct.Z&&Ct.Z.locals&&Ct.Z.locals;var bt=(0,L.Z)(vt,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",[e("Multiselect",{attrs:{value:t.currentValue,placeholder:t.t("workflowengine","Select a file type"),label:"label","track-by":"pattern",options:t.options,multiple:!1,tagging:!1},on:{input:t.setValue},scopedSlots:t._u([{key:"singleLabel",fn:function(n){return[n.option.icon?e("span",{staticClass:"option__icon",class:n.option.icon}):e("img",{attrs:{src:n.option.iconUrl}}),t._v(" "),e("span",{staticClass:"option__title option__title_single"},[t._v(t._s(n.option.label))])]}},{key:"option",fn:function(n){return[n.option.icon?e("span",{staticClass:"option__icon",class:n.option.icon}):e("img",{attrs:{src:n.option.iconUrl}}),t._v(" "),e("span",{staticClass:"option__title"},[t._v(t._s(n.option.label))])]}}])}),t._v(" "),t.isPredefined?t._e():e("input",{attrs:{type:"text",placeholder:t.t("workflowengine","e.g. httpd/unix-directory")},domProps:{value:t.currentValue.pattern},on:{input:t.updateCustom}})],1)}),[],!1,null,"8c011724",null).exports,xt=function t(n){var e={};if(1===n.nodeType){if(n.attributes.length>0){e["@attributes"]={};for(var i=0;i<n.attributes.length;i++){var o=n.attributes.item(i);e["@attributes"][o.nodeName]=o.nodeValue}}}else 3===n.nodeType&&(e=n.nodeValue);if(n.hasChildNodes())for(var r=0;r<n.childNodes.length;r++){var a=n.childNodes.item(r),s=a.nodeName;if(void 0===e[s])e[s]=t(a);else{if(void 0===e[s].push){var l=e[s];e[s]=[],e[s].push(l)}e[s].push(t(a))}}return e},kt=0,yt={name:"MultiselectTag",components:{Multiselect:j()},props:{label:{type:String,required:!0},value:{type:[String,Array],default:null},disabled:{type:Boolean,default:!1},multiple:{type:Boolean,default:!1}},data:function(){return{inputValObjects:[],tags:[]}},computed:{id:function(){return"settings-input-text-"+this.uuid}},watch:{value:function(t){this.inputValObjects=this.getValueObject()}},beforeCreate:function(){var t=this;this.uuid=kt.toString(),kt+=1,(0,a.default)({method:"PROPFIND",url:(0,l.generateRemoteUrl)("dav")+"/systemtags/",data:'<?xml version="1.0"?>\n\t\t\t\t\t<d:propfind xmlns:d="DAV:" xmlns:oc="http://owncloud.org/ns">\n\t\t\t\t\t <d:prop>\n\t\t\t\t\t\t<oc:id />\n\t\t\t\t\t\t<oc:display-name />\n\t\t\t\t\t\t<oc:user-visible />\n\t\t\t\t\t\t<oc:user-assignable />\n\t\t\t\t\t\t<oc:can-assign />\n\t\t\t\t\t </d:prop>\n\t\t\t\t\t</d:propfind>'}).then((function(t){return function(t){var n=xt(function(t){var n=null;try{n=(new DOMParser).parseFromString(t,"text/xml")}catch(t){console.error("Failed to parse xml document",t)}return n}(t)),e=n["d:multistatus"]["d:response"],i=[];for(var o in e){var r=e[o]["d:propstat"];"HTTP/1.1 200 OK"===r["d:status"]["#text"]&&i.push({id:r["d:prop"]["oc:id"]["#text"],displayName:r["d:prop"]["oc:display-name"]["#text"],canAssign:"true"===r["d:prop"]["oc:can-assign"]["#text"],userAssignable:"true"===r["d:prop"]["oc:user-assignable"]["#text"],userVisible:"true"===r["d:prop"]["oc:user-visible"]["#text"]})}return i}(t.data)})).then((function(n){t.tags=n,t.inputValObjects=t.getValueObject()})).catch(console.error.bind(this))},methods:{getValueObject:function(){var t=this;return 0===this.tags.length?[]:this.multiple?this.value.filter((function(t){return""!==t})).map((function(n){return t.tags.find((function(t){return t.id===n}))})):this.tags.find((function(n){return n.id===t.value}))},update:function(){this.multiple?this.$emit("input",this.inputValObjects.map((function(t){return t.id}))):null===this.inputValObjects?this.$emit("input",""):this.$emit("input",this.inputValObjects.id)},tagLabel:function(n){var e=n.displayName,i=n.userVisible,o=n.userAssignable;return!1===i?t("systemtags","%s (invisible)").replace("%s",e):!1===o?t("systemtags","%s (restricted)").replace("%s",e):e}}},_t={name:"FileSystemTag",components:{MultiselectTag:(0,L.Z)(yt,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("Multiselect",{staticClass:"multiselect-vue",attrs:{options:t.tags,"options-limit":5,placeholder:t.label,"track-by":"id","custom-label":t.tagLabel,multiple:t.multiple,"close-on-select":!1,"tag-width":60,disabled:t.disabled},on:{input:t.update},scopedSlots:t._u([{key:"option",fn:function(n){return[t._v("\n\t\t"+t._s(t.tagLabel(n.option))+"\n\t")]}}]),model:{value:t.inputValObjects,callback:function(n){t.inputValObjects=n},expression:"inputValObjects"}},[e("span",{attrs:{slot:"noResult"},slot:"noResult"},[t._v(t._s(t.t("core","No results")))])])}),[],!1,null,null,null).exports},props:{value:{type:String,default:""}},data:function(){return{newValue:[]}},watch:{value:function(){this.updateValue()}},beforeMount:function(){this.updateValue()},methods:{updateValue:function(){""!==this.value?this.newValue=this.value:this.newValue=null},update:function(){this.$emit("input",this.newValue||"")}}},jt=(0,L.Z)(_t,(function(){var t=this,n=t.$createElement;return(t._self._c||n)("MultiselectTag",{attrs:{multiple:!1,label:t.t("workflowengine","Select a tag")},on:{input:t.update},model:{value:t.newValue,callback:function(n){t.newValue=n},expression:"newValue"}})}),[],!1,null,"31f5522d",null).exports,Ot=function(){return[{operator:"matches",name:t("workflowengine","matches")},{operator:"!matches",name:t("workflowengine","does not match")},{operator:"is",name:t("workflowengine","is")},{operator:"!is",name:t("workflowengine","is not")}]},Rt=[{class:"OCA\\WorkflowEngine\\Check\\FileName",name:t("workflowengine","File name"),operators:Ot,placeholder:function(t){return"matches"===t.operator||"!matches"===t.operator?"/^dummy-.+$/i":"filename.txt"},validate:function(t){return"matches"!==t.operator&&"!matches"!==t.operator||!!(n=t.value)&&null!==At.exec(n);var n}},{class:"OCA\\WorkflowEngine\\Check\\FileMimeType",name:t("workflowengine","File MIME type"),operators:Ot,component:bt},{class:"OCA\\WorkflowEngine\\Check\\FileSize",name:t("workflowengine","File size (upload)"),operators:[{operator:"less",name:t("workflowengine","less")},{operator:"!greater",name:t("workflowengine","less or equals")},{operator:"!less",name:t("workflowengine","greater or equals")},{operator:"greater",name:t("workflowengine","greater")}],placeholder:function(t){return"5 MB"},validate:function(t){return!!t.value&&null!==t.value.match(/^[0-9]+[ ]?[kmgt]?b$/i)}},{class:"OCA\\WorkflowEngine\\Check\\RequestRemoteAddress",name:t("workflowengine","Request remote address"),operators:[{operator:"matchesIPv4",name:t("workflowengine","matches IPv4")},{operator:"!matchesIPv4",name:t("workflowengine","does not match IPv4")},{operator:"matchesIPv6",name:t("workflowengine","matches IPv6")},{operator:"!matchesIPv6",name:t("workflowengine","does not match IPv6")}],placeholder:function(t){return"matchesIPv6"===t.operator||"!matchesIPv6"===t.operator?"::1/128":"127.0.0.1/32"},validate:function(t){return"matchesIPv6"===t.operator||"!matchesIPv6"===t.operator?!!(n=t.value)&&null!==ft.exec(n):function(t){return!!t&&null!==mt.exec(t)}(t.value);var n}},{class:"OCA\\WorkflowEngine\\Check\\FileSystemTags",name:t("workflowengine","File system tag"),operators:[{operator:"is",name:t("workflowengine","is tagged with")},{operator:"!is",name:t("workflowengine","is not tagged with")}],component:jt}];function Vt(t,n){(null==n||n>t.length)&&(n=t.length);for(var e=0,i=new Array(n);e<n;e++)i[e]=t[e];return i}var Et={name:"RequestUserAgent",components:{Multiselect:j()},mixins:[ht],data:function(){return{newValue:"",predefinedTypes:[{pattern:"android",label:t("workflowengine","Android client"),icon:"icon-phone"},{pattern:"ios",label:t("workflowengine","iOS client"),icon:"icon-phone"},{pattern:"desktop",label:t("workflowengine","Desktop client"),icon:"icon-desktop"},{pattern:"mail",label:t("workflowengine","Thunderbird & Outlook addons"),icon:"icon-mail"}]}},computed:{options:function(){return[].concat(function(t){if(Array.isArray(t))return Vt(t)}(t=this.predefinedTypes)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,n){if(t){if("string"==typeof t)return Vt(t,n);var e=Object.prototype.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?Vt(t,n):void 0}}(t)||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.")}(),[this.customValue]);var t},matchingPredefined:function(){var t=this;return this.predefinedTypes.find((function(n){return t.newValue===n.pattern}))},isPredefined:function(){return!!this.matchingPredefined},customValue:function(){return{icon:"icon-settings-dark",label:t("workflowengine","Custom user agent"),pattern:""}},currentValue:function(){return this.matchingPredefined?this.matchingPredefined:{icon:"icon-settings-dark",label:t("workflowengine","Custom user agent"),pattern:this.newValue}}},methods:{validateRegex:function(t){return null!==/^\/(.*)\/([gui]{0,3})$/.exec(t)},setValue:function(t){null!==t&&(this.newValue=t.pattern,this.$emit("input",this.newValue))},updateCustom:function(t){this.newValue=t.target.value,this.$emit("input",this.newValue)}}},Pt=i(99055),Bt={};Bt.styleTagTransform=I(),Bt.setAttributes=F(),Bt.insert=S().bind(null,"head"),Bt.domAPI=B(),Bt.insertStyleElement=U(),E()(Pt.Z,Bt),Pt.Z&&Pt.Z.locals&&Pt.Z.locals;var Tt=(0,L.Z)(Et,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",[e("Multiselect",{attrs:{value:t.currentValue,placeholder:t.t("workflowengine","Select a user agent"),label:"label","track-by":"pattern",options:t.options,multiple:!1,tagging:!1},on:{input:t.setValue},scopedSlots:t._u([{key:"singleLabel",fn:function(n){return[e("span",{staticClass:"option__icon",class:n.option.icon}),t._v(" "),e("span",{staticClass:"option__title option__title_single",domProps:{innerHTML:t._s(n.option.label)}})]}},{key:"option",fn:function(n){return[e("span",{staticClass:"option__icon",class:n.option.icon}),t._v(" "),n.option.$groupLabel?e("span",{staticClass:"option__title",domProps:{innerHTML:t._s(n.option.$groupLabel)}}):e("span",{staticClass:"option__title",domProps:{innerHTML:t._s(n.option.label)}})]}}])}),t._v(" "),t.isPredefined?t._e():e("input",{attrs:{type:"text"},domProps:{value:t.currentValue.pattern},on:{input:t.updateCustom}})],1)}),[],!1,null,"475ac1e6",null).exports,St=i(80008),Dt=i.n(St),Ft=Dt().tz.names(),$t={name:"RequestTime",components:{Multiselect:j()},mixins:[ht],props:{value:{type:String,default:""}},data:function(){return{timezones:Ft,valid:!1,newValue:{startTime:null,endTime:null,timezone:Dt().tz.guess()}}},mounted:function(){this.validate()},methods:{updateInternalValue:function(t){try{var n=JSON.parse(t);2===n.length&&(this.newValue={startTime:n[0].split(" ",2)[0],endTime:n[1].split(" ",2)[0],timezone:n[0].split(" ",2)[1]})}catch(t){}},validate:function(){return this.valid=this.newValue.startTime&&null!==this.newValue.startTime.match(/^(0[0-9]|1[0-9]|2[0-3]|[0-9]):[0-5][0-9]$/i)&&this.newValue.endTime&&null!==this.newValue.endTime.match(/^(0[0-9]|1[0-9]|2[0-3]|[0-9]):[0-5][0-9]$/i)&&null!==Dt().tz.zone(this.newValue.timezone),this.valid?this.$emit("valid"):this.$emit("invalid"),this.valid},update:function(){if(null===this.newValue.timezone&&(this.newValue.timezone=Dt().tz.guess()),this.validate()){var t='["'.concat(this.newValue.startTime," ").concat(this.newValue.timezone,'","').concat(this.newValue.endTime," ").concat(this.newValue.timezone,'"]');this.$emit("input",t)}}}},Ut=i(76050),Mt={};Mt.styleTagTransform=I(),Mt.setAttributes=F(),Mt.insert=S().bind(null,"head"),Mt.domAPI=B(),Mt.insertStyleElement=U(),E()(Ut.Z,Mt),Ut.Z&&Ut.Z.locals&&Ut.Z.locals;var It=(0,L.Z)($t,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{staticClass:"timeslot"},[e("input",{directives:[{name:"model",rawName:"v-model",value:t.newValue.startTime,expression:"newValue.startTime"}],staticClass:"timeslot--start",attrs:{type:"text",placeholder:"e.g. 08:00"},domProps:{value:t.newValue.startTime},on:{input:[function(n){n.target.composing||t.$set(t.newValue,"startTime",n.target.value)},t.update]}}),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.newValue.endTime,expression:"newValue.endTime"}],attrs:{type:"text",placeholder:"e.g. 18:00"},domProps:{value:t.newValue.endTime},on:{input:[function(n){n.target.composing||t.$set(t.newValue,"endTime",n.target.value)},t.update]}}),t._v(" "),t.valid?t._e():e("p",{staticClass:"invalid-hint"},[t._v("\n\t\t"+t._s(t.t("workflowengine","Please enter a valid time span"))+"\n\t")]),t._v(" "),e("Multiselect",{directives:[{name:"show",rawName:"v-show",value:t.valid,expression:"valid"}],attrs:{options:t.timezones},on:{input:t.update},model:{value:t.newValue.timezone,callback:function(n){t.$set(t.newValue,"timezone",n)},expression:"newValue.timezone"}})],1)}),[],!1,null,"149baca9",null).exports;function zt(t,n){(null==n||n>t.length)&&(n=t.length);for(var e=0,i=new Array(n);e<n;e++)i[e]=t[e];return i}var Gt={name:"RequestURL",components:{Multiselect:j()},mixins:[ht],data:function(){return{newValue:"",predefinedTypes:[{label:t("workflowengine","Predefined URLs"),children:[{pattern:"webdav",label:t("workflowengine","Files WebDAV")}]}]}},computed:{options:function(){return[].concat(function(t){if(Array.isArray(t))return zt(t)}(t=this.predefinedTypes)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,n){if(t){if("string"==typeof t)return zt(t,n);var e=Object.prototype.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?zt(t,n):void 0}}(t)||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.")}(),[this.customValue]);var t},placeholder:function(){return"matches"===this.check.operator||"!matches"===this.check.operator?"/^https\\:\\/\\/localhost\\/index\\.php$/i":"https://localhost/index.php"},matchingPredefined:function(){var t=this;return this.predefinedTypes.map((function(t){return t.children})).flat().find((function(n){return t.newValue===n.pattern}))},isPredefined:function(){return!!this.matchingPredefined},customValue:function(){return{label:t("workflowengine","Others"),children:[{icon:"icon-settings-dark",label:t("workflowengine","Custom URL"),pattern:""}]}},currentValue:function(){return this.matchingPredefined?this.matchingPredefined:{icon:"icon-settings-dark",label:t("workflowengine","Custom URL"),pattern:this.newValue}}},methods:{validateRegex:function(t){return null!==/^\/(.*)\/([gui]{0,3})$/.exec(t)},setValue:function(t){null!==t&&(this.newValue=t.pattern,this.$emit("input",this.newValue))},updateCustom:function(t){this.newValue=t.target.value,this.$emit("input",this.newValue)}}},Lt=Gt,Nt=i(82999),Zt={};Zt.styleTagTransform=I(),Zt.setAttributes=F(),Zt.insert=S().bind(null,"head"),Zt.domAPI=B(),Zt.insertStyleElement=U(),E()(Nt.Z,Zt),Nt.Z&&Nt.Z.locals&&Nt.Z.locals;var Wt=(0,L.Z)(Lt,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",[e("Multiselect",{attrs:{value:t.currentValue,placeholder:t.t("workflowengine","Select a request URL"),label:"label","track-by":"pattern","group-values":"children","group-label":"label",options:t.options,multiple:!1,tagging:!1},on:{input:t.setValue},scopedSlots:t._u([{key:"singleLabel",fn:function(n){return[e("span",{staticClass:"option__icon",class:n.option.icon}),t._v(" "),e("span",{staticClass:"option__title option__title_single"},[t._v(t._s(n.option.label))])]}},{key:"option",fn:function(n){return[e("span",{staticClass:"option__icon",class:n.option.icon}),t._v(" "),e("span",{staticClass:"option__title"},[t._v(t._s(n.option.label)+" "+t._s(n.option.$groupLabel))])]}}])}),t._v(" "),t.isPredefined?t._e():e("input",{attrs:{type:"text",placeholder:t.placeholder},domProps:{value:t.currentValue.pattern},on:{input:t.updateCustom}})],1)}),[],!1,null,"dd8e16be",null).exports;function qt(t,n,e,i,o,r,a){try{var s=t[r](a),l=s.value}catch(t){return void e(t)}s.done?n(l):Promise.resolve(l).then(i,o)}var Yt=[],Ht={isLoading:!1},Jt={name:"RequestUserGroup",components:{Multiselect:j()},props:{value:{type:String,default:""},check:{type:Object,default:function(){return{}}}},data:function(){return{groups:Yt,status:Ht}},computed:{currentValue:function(){var t=this;return this.groups.find((function(n){return n.id===t.value}))||null}},mounted:function(){var t,n=this;return(t=regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(0!==n.groups.length){t.next=3;break}return t.next=3,n.searchAsync("");case 3:if(null!==n.currentValue){t.next=6;break}return t.next=6,n.searchAsync(n.value);case 6:case"end":return t.stop()}}),t)})),function(){var n=this,e=arguments;return new Promise((function(i,o){var r=t.apply(n,e);function a(t){qt(r,i,o,a,s,"next",t)}function s(t){qt(r,i,o,a,s,"throw",t)}a(void 0)}))})()},methods:{searchAsync:function(t){var n=this;if(!this.status.isLoading)return this.status.isLoading=!0,a.default.get((0,l.generateOcsUrl)("cloud/groups/details?limit=20&search={searchQuery}",{searchQuery:t})).then((function(t){t.data.ocs.data.groups.forEach((function(t){n.addGroup({id:t.id,displayname:t.displayname})})),n.status.isLoading=!1}),(function(t){console.error("Error while loading group list",t.response)}))},addGroup:function(t){-1===this.groups.findIndex((function(n){return n.id===t.id}))&&this.groups.push(t)}}},Qt=Jt,Kt=i(80787),Xt={};Xt.styleTagTransform=I(),Xt.setAttributes=F(),Xt.insert=S().bind(null,"head"),Xt.domAPI=B(),Xt.insertStyleElement=U(),E()(Kt.Z,Xt),Kt.Z&&Kt.Z.locals&&Kt.Z.locals;var tn=(0,L.Z)(Qt,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",[e("Multiselect",{attrs:{value:t.currentValue,loading:t.status.isLoading&&0===t.groups.length,options:t.groups,multiple:!1,label:"displayname","track-by":"id"},on:{"search-change":t.searchAsync,input:function(n){return t.$emit("input",n.id)}}})],1)}),[],!1,null,"79fa10a5",null).exports,nn=[{class:"OCA\\WorkflowEngine\\Check\\RequestURL",name:t("workflowengine","Request URL"),operators:[{operator:"is",name:t("workflowengine","is")},{operator:"!is",name:t("workflowengine","is not")},{operator:"matches",name:t("workflowengine","matches")},{operator:"!matches",name:t("workflowengine","does not match")}],component:Wt},{class:"OCA\\WorkflowEngine\\Check\\RequestTime",name:t("workflowengine","Request time"),operators:[{operator:"in",name:t("workflowengine","between")},{operator:"!in",name:t("workflowengine","not between")}],component:It},{class:"OCA\\WorkflowEngine\\Check\\RequestUserAgent",name:t("workflowengine","Request user agent"),operators:[{operator:"is",name:t("workflowengine","is")},{operator:"!is",name:t("workflowengine","is not")},{operator:"matches",name:t("workflowengine","matches")},{operator:"!matches",name:t("workflowengine","does not match")}],component:Tt},{class:"OCA\\WorkflowEngine\\Check\\UserGroupMembership",name:t("workflowengine","User group membership"),operators:[{operator:"is",name:t("workflowengine","is member of")},{operator:"!is",name:t("workflowengine","is not member of")}],component:tn}];function en(t){return function(t){if(Array.isArray(t))return on(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,n){if(t){if("string"==typeof t)return on(t,n);var e=Object.prototype.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?on(t,n):void 0}}(t)||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 on(t,n){(null==n||n>t.length)&&(n=t.length);for(var e=0,i=new Array(n);e<n;e++)i[e]=t[e];return i}var rn=[].concat(en(Rt),en(nn));window.OCA.WorkflowEngine=Object.assign({},OCA.WorkflowEngine,{registerCheck:function(t){v.commit("addPluginCheck",t)},registerOperator:function(t){v.commit("addPluginOperator",t)}}),rn.forEach((function(t){return window.OCA.WorkflowEngine.registerCheck(t)})),o.default.use(r.ZP),o.default.prototype.t=t,new(o.default.extend(dt))({store:v}).$mount("#workflowengine")},38530:function(t,n,e){"use strict";var i=e(87537),o=e.n(i),r=e(23645),a=e.n(r)()(o());a.push([t.id,".check[data-v-70cc784d]{display:flex;flex-wrap:wrap;width:100%;padding-right:20px}.check>*[data-v-70cc784d]:not(.close){width:180px}.check>.comparator[data-v-70cc784d]{min-width:130px;width:130px}.check>.option[data-v-70cc784d]{min-width:230px;width:230px}.check>.multiselect[data-v-70cc784d],.check>input[type=text][data-v-70cc784d]{margin-right:5px;margin-bottom:5px}.check .multiselect[data-v-70cc784d] .multiselect__content-wrapper li>span,.check .multiselect[data-v-70cc784d] .multiselect__single{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}input[type=text][data-v-70cc784d]{margin:0}[data-v-70cc784d]::placeholder{font-size:10px}button.action-item.action-item--single.icon-close[data-v-70cc784d]{height:44px;width:44px;margin-top:-5px;margin-bottom:-5px}.invalid[data-v-70cc784d]{border:1px solid var(--color-error) !important}","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Check.vue"],names:[],mappings:"AAsJA,wBACC,YAAA,CACA,cAAA,CACA,UAAA,CACA,kBAAA,CACA,sCACC,WAAA,CAED,oCACC,eAAA,CACA,WAAA,CAED,gCACC,eAAA,CACA,WAAA,CAED,8EAEC,gBAAA,CACA,iBAAA,CAGD,qIAEC,aAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CAGF,kCACC,QAAA,CAED,+BACC,cAAA,CAED,mEACC,WAAA,CACA,UAAA,CACA,eAAA,CACA,kBAAA,CAED,0BACC,8CAAA",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.check {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\twidth: 100%;\n\tpadding-right: 20px;\n\t& > *:not(.close) {\n\t\twidth: 180px;\n\t}\n\t& > .comparator {\n\t\tmin-width: 130px;\n\t\twidth: 130px;\n\t}\n\t& > .option {\n\t\tmin-width: 230px;\n\t\twidth: 230px;\n\t}\n\t& > .multiselect,\n\t& > input[type=text] {\n\t\tmargin-right: 5px;\n\t\tmargin-bottom: 5px;\n\t}\n\n\t.multiselect::v-deep .multiselect__content-wrapper li>span,\n\t.multiselect::v-deep .multiselect__single {\n\t\tdisplay: block;\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n}\ninput[type=text] {\n\tmargin: 0;\n}\n::placeholder {\n\tfont-size: 10px;\n}\nbutton.action-item.action-item--single.icon-close {\n\theight: 44px;\n\twidth: 44px;\n\tmargin-top: -5px;\n\tmargin-bottom: -5px;\n}\n.invalid {\n\tborder: 1px solid var(--color-error) !important;\n}\n"],sourceRoot:""}]),n.Z=a},76050:function(t,n,e){"use strict";var i=e(87537),o=e.n(i),r=e(23645),a=e.n(r)()(o());a.push([t.id,".timeslot[data-v-149baca9]{display:flex;flex-grow:1;flex-wrap:wrap;max-width:180px}.timeslot .multiselect[data-v-149baca9]{width:100%;margin-bottom:5px}.timeslot .multiselect[data-v-149baca9] .multiselect__tags:not(:hover):not(:focus):not(:active){border:1px solid rgba(0,0,0,0)}.timeslot input[type=text][data-v-149baca9]{width:50%;margin:0;margin-bottom:5px}.timeslot input[type=text].timeslot--start[data-v-149baca9]{margin-right:5px;width:calc(50% - 5px)}.timeslot .invalid-hint[data-v-149baca9]{color:var(--color-text-maxcontrast)}","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Checks/RequestTime.vue"],names:[],mappings:"AA+FA,2BACC,YAAA,CACA,WAAA,CACA,cAAA,CACA,eAAA,CAEA,wCACC,UAAA,CACA,iBAAA,CAGD,gGACC,8BAAA,CAGD,4CACC,SAAA,CACA,QAAA,CACA,iBAAA,CAEA,4DACC,gBAAA,CACA,qBAAA,CAIF,yCACC,mCAAA",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.timeslot {\n\tdisplay: flex;\n\tflex-grow: 1;\n\tflex-wrap: wrap;\n\tmax-width: 180px;\n\n\t.multiselect {\n\t\twidth: 100%;\n\t\tmargin-bottom: 5px;\n\t}\n\n\t.multiselect::v-deep .multiselect__tags:not(:hover):not(:focus):not(:active) {\n\t\tborder: 1px solid transparent;\n\t}\n\n\tinput[type=text] {\n\t\twidth: 50%;\n\t\tmargin: 0;\n\t\tmargin-bottom: 5px;\n\n\t\t&.timeslot--start {\n\t\t\tmargin-right: 5px;\n\t\t\twidth: calc(50% - 5px);\n\t\t}\n\t}\n\n\t.invalid-hint {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n}\n"],sourceRoot:""}]),n.Z=a},71605:function(t,n,e){"use strict";var i=e(87537),o=e.n(i),r=e(23645),a=e.n(r)()(o());a.push([t.id,".event[data-v-f3569276]{margin-bottom:5px}.isComplex img[data-v-f3569276]{vertical-align:text-top}.isComplex span[data-v-f3569276]{padding-top:2px;display:inline-block}.multiselect[data-v-f3569276]{width:100%;max-width:550px;margin-top:4px}.multiselect[data-v-f3569276] .multiselect__single{display:flex}.multiselect[data-v-f3569276]:not(.multiselect--active) .multiselect__tags{background-color:var(--color-main-background) !important;border:1px solid rgba(0,0,0,0)}.multiselect[data-v-f3569276] .multiselect__tags{background-color:var(--color-main-background) !important;height:auto;min-height:34px}.multiselect[data-v-f3569276]:not(.multiselect--disabled) .multiselect__tags .multiselect__single{background-image:var(--icon-triangle-s-000);background-repeat:no-repeat;background-position:right center}input[data-v-f3569276]{border:1px solid rgba(0,0,0,0)}.option__title[data-v-f3569276]{margin-left:5px;color:var(--color-main-text)}.option__title_single[data-v-f3569276]{font-weight:900}.option__icon[data-v-f3569276]{width:16px;height:16px}.eventlist img[data-v-f3569276],.eventlist .text[data-v-f3569276]{vertical-align:middle}","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Event.vue"],names:[],mappings:"AAiFA,wBACC,iBAAA,CAGA,gCACC,uBAAA,CAED,iCACC,eAAA,CACA,oBAAA,CAGF,8BACC,UAAA,CACA,eAAA,CACA,cAAA,CAED,mDACC,YAAA,CAED,2EACC,wDAAA,CACA,8BAAA,CAGD,iDACC,wDAAA,CACA,WAAA,CACA,eAAA,CAGD,kGACC,2CAAA,CACA,2BAAA,CACA,gCAAA,CAGD,uBACC,8BAAA,CAGD,gCACC,eAAA,CACA,4BAAA,CAED,uCACC,eAAA,CAGD,+BACC,UAAA,CACA,WAAA,CAGD,kEAEC,qBAAA",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.event {\n\tmargin-bottom: 5px;\n}\n.isComplex {\n\timg {\n\t\tvertical-align: text-top;\n\t}\n\tspan {\n\t\tpadding-top: 2px;\n\t\tdisplay: inline-block;\n\t}\n}\n.multiselect {\n\twidth: 100%;\n\tmax-width: 550px;\n\tmargin-top: 4px;\n}\n.multiselect::v-deep .multiselect__single {\n\tdisplay: flex;\n}\n.multiselect:not(.multiselect--active)::v-deep .multiselect__tags {\n\tbackground-color: var(--color-main-background) !important;\n\tborder: 1px solid transparent;\n}\n\n.multiselect::v-deep .multiselect__tags {\n\tbackground-color: var(--color-main-background) !important;\n\theight: auto;\n\tmin-height: 34px;\n}\n\n.multiselect:not(.multiselect--disabled)::v-deep .multiselect__tags .multiselect__single {\n\tbackground-image: var(--icon-triangle-s-000);\n\tbackground-repeat: no-repeat;\n\tbackground-position: right center;\n}\n\ninput {\n\tborder: 1px solid transparent;\n}\n\n.option__title {\n\tmargin-left: 5px;\n\tcolor: var(--color-main-text);\n}\n.option__title_single {\n\tfont-weight: 900;\n}\n\n.option__icon {\n\twidth: 16px;\n\theight: 16px;\n}\n\n.eventlist img,\n.eventlist .text {\n\tvertical-align: middle;\n}\n"],sourceRoot:""}]),n.Z=a},58444:function(t,n,e){"use strict";var i=e(87537),o=e.n(i),r=e(23645),a=e.n(r)()(o());a.push([t.id,".actions__item[data-v-34495584]{display:flex;flex-wrap:wrap;flex-direction:column;flex-grow:1;margin-left:-1px;padding:10px;border-radius:var(--border-radius-large);margin-right:20px;margin-bottom:20px}.actions__item .icon[data-v-34495584]{display:block;width:100%;height:50px;background-size:50px 50px;background-position:center center;margin-top:10px;margin-bottom:10px;background-repeat:no-repeat}.actions__item__description[data-v-34495584]{text-align:center;flex-grow:1;display:flex;flex-direction:column}.actions__item_options[data-v-34495584]{width:100%;margin-top:10px;padding-left:60px}h3[data-v-34495584],small[data-v-34495584]{padding:6px;display:block}h3[data-v-34495584]{margin:0;padding:0;font-weight:600}small[data-v-34495584]{font-size:10pt;flex-grow:1}.colored[data-v-34495584]:not(.more){background-color:var(--color-primary-element)}.colored:not(.more) h3[data-v-34495584],.colored:not(.more) small[data-v-34495584]{color:var(--color-primary-text)}.actions__item[data-v-34495584]:not(.colored){flex-direction:row}.actions__item:not(.colored) .actions__item__description[data-v-34495584]{padding-top:5px;text-align:left;width:calc(100% - 105px)}.actions__item:not(.colored) .actions__item__description small[data-v-34495584]{padding:0}.actions__item:not(.colored) .icon[data-v-34495584]{width:50px;margin:0;margin-right:10px}.actions__item:not(.colored) .icon[data-v-34495584]:not(.icon-invert){filter:invert(1)}.colored .icon-invert[data-v-34495584]{filter:invert(1)}","",{version:3,sources:["webpack://./apps/workflowengine/src/styles/operation.scss"],names:[],mappings:"AAAA,gCACC,YAAA,CACA,cAAA,CACA,qBAAA,CACA,WAAA,CACA,gBAAA,CACA,YAAA,CACA,wCAAA,CACA,iBAAA,CACA,kBAAA,CAED,sCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,yBAAA,CACA,iCAAA,CACA,eAAA,CACA,kBAAA,CACA,2BAAA,CAED,6CACC,iBAAA,CACA,WAAA,CACA,YAAA,CACA,qBAAA,CAED,wCACC,UAAA,CACA,eAAA,CACA,iBAAA,CAED,2CACC,WAAA,CACA,aAAA,CAED,oBACC,QAAA,CACA,SAAA,CACA,eAAA,CAED,uBACC,cAAA,CACA,WAAA,CAGD,qCACC,6CAAA,CACA,mFACC,+BAAA,CAIF,8CACC,kBAAA,CAEA,0EACC,eAAA,CACA,eAAA,CACA,wBAAA,CACA,gFACC,SAAA,CAGF,oDACC,UAAA,CACA,QAAA,CACA,iBAAA,CACA,sEACC,gBAAA,CAKH,uCACC,gBAAA",sourcesContent:[".actions__item {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tflex-direction: column;\n\tflex-grow: 1;\n\tmargin-left: -1px;\n\tpadding: 10px;\n\tborder-radius: var(--border-radius-large);\n\tmargin-right: 20px;\n\tmargin-bottom: 20px;\n}\n.actions__item .icon {\n\tdisplay: block;\n\twidth: 100%;\n\theight: 50px;\n\tbackground-size: 50px 50px;\n\tbackground-position: center center;\n\tmargin-top: 10px;\n\tmargin-bottom: 10px;\n\tbackground-repeat: no-repeat;\n}\n.actions__item__description {\n\ttext-align: center;\n\tflex-grow: 1;\n\tdisplay: flex;\n\tflex-direction: column;\n}\n.actions__item_options {\n\twidth: 100%;\n\tmargin-top: 10px;\n\tpadding-left: 60px;\n}\nh3, small {\n\tpadding: 6px;\n\tdisplay: block;\n}\nh3 {\n\tmargin: 0;\n\tpadding: 0;\n\tfont-weight: 600;\n}\nsmall {\n\tfont-size: 10pt;\n\tflex-grow: 1;\n}\n\n.colored:not(.more) {\n\tbackground-color: var(--color-primary-element);\n\th3, small {\n\t\tcolor: var(--color-primary-text)\n\t}\n}\n\n.actions__item:not(.colored) {\n\tflex-direction: row;\n\n\t.actions__item__description {\n\t\tpadding-top: 5px;\n\t\ttext-align: left;\n\t\twidth: calc(100% - 105px);\n\t\tsmall {\n\t\t\tpadding: 0;\n\t\t}\n\t}\n\t.icon {\n\t\twidth: 50px;\n\t\tmargin: 0;\n\t\tmargin-right: 10px;\n\t\t&:not(.icon-invert) {\n\t\t\tfilter: invert(1);\n\t\t}\n\t}\n}\n\n.colored .icon-invert {\n\tfilter: invert(1);\n}\n"],sourceRoot:""}]),n.Z=a},87742:function(t,n,e){"use strict";var i=e(87537),o=e.n(i),r=e(23645),a=e.n(r)()(o());a.push([t.id,"button.icon[data-v-225ba268]{padding-left:32px;background-position:10px center}.buttons[data-v-225ba268]{display:block;overflow:hidden}.buttons button[data-v-225ba268]{float:right;height:34px}.error-message[data-v-225ba268]{float:right;margin-right:10px}.status-button[data-v-225ba268]{transition:.5s ease all;display:block;margin:3px 10px 3px auto}.status-button.primary[data-v-225ba268]{padding-left:32px;background-position:10px center}.status-button[data-v-225ba268]:not(.primary){background-color:var(--color-main-background)}.status-button.invalid[data-v-225ba268]{background-color:var(--color-warning);color:#fff;border:none}.status-button.icon-checkmark[data-v-225ba268]{border:1px solid var(--color-success)}.flow-icon[data-v-225ba268]{width:44px}.rule[data-v-225ba268]{display:flex;flex-wrap:wrap;border-left:5px solid var(--color-primary-element)}.rule .trigger[data-v-225ba268],.rule .action[data-v-225ba268]{flex-grow:1;min-height:100px;max-width:700px}.rule .action[data-v-225ba268]{max-width:400px;position:relative}.rule .icon-confirm[data-v-225ba268]{background-position:right 27px;padding-right:20px;margin-right:20px}.trigger p[data-v-225ba268],.action p[data-v-225ba268]{min-height:34px;display:flex}.trigger p>span[data-v-225ba268],.action p>span[data-v-225ba268]{min-width:50px;text-align:right;color:var(--color-text-maxcontrast);padding-right:10px;padding-top:6px}.trigger p .multiselect[data-v-225ba268],.action p .multiselect[data-v-225ba268]{flex-grow:1;max-width:300px}.trigger p:first-child span[data-v-225ba268]{padding-top:3px}.check--add[data-v-225ba268]{background-position:7px center;background-color:rgba(0,0,0,0);padding-left:6px;margin:0;width:180px;border-radius:var(--border-radius);color:var(--color-text-maxcontrast);font-weight:normal;text-align:left;font-size:1em}@media(max-width: 1400px){.rule[data-v-225ba268],.rule .trigger[data-v-225ba268],.rule .action[data-v-225ba268]{width:100%;max-width:100%}.rule .flow-icon[data-v-225ba268]{display:none}}","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Rule.vue"],names:[],mappings:"AA4KA,6BACC,iBAAA,CACA,+BAAA,CAGD,0BACC,aAAA,CACA,eAAA,CAEA,iCACC,WAAA,CACA,WAAA,CAIF,gCACC,WAAA,CACA,iBAAA,CAGD,gCACC,uBAAA,CACA,aAAA,CACA,wBAAA,CAED,wCACC,iBAAA,CACA,+BAAA,CAED,8CACC,6CAAA,CAED,wCACC,qCAAA,CACA,UAAA,CACA,WAAA,CAED,+CACC,qCAAA,CAGD,4BACC,UAAA,CAGD,uBACC,YAAA,CACA,cAAA,CACA,kDAAA,CAEA,+DACC,WAAA,CACA,gBAAA,CACA,eAAA,CAED,+BACC,eAAA,CACA,iBAAA,CAED,qCACC,8BAAA,CACA,kBAAA,CACA,iBAAA,CAGF,uDACC,eAAA,CACA,YAAA,CAEA,iEACC,cAAA,CACA,gBAAA,CACA,mCAAA,CACA,kBAAA,CACA,eAAA,CAED,iFACC,WAAA,CACA,eAAA,CAGF,6CACE,eAAA,CAGF,6BACC,8BAAA,CACA,8BAAA,CACA,gBAAA,CACA,QAAA,CACA,WAAA,CACA,kCAAA,CACA,mCAAA,CACA,kBAAA,CACA,eAAA,CACA,aAAA,CAGD,0BAEE,sFACC,UAAA,CACA,cAAA,CAED,kCACC,YAAA,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\nbutton.icon {\n\tpadding-left: 32px;\n\tbackground-position: 10px center;\n}\n\n.buttons {\n\tdisplay: block;\n\toverflow: hidden;\n\n\tbutton {\n\t\tfloat: right;\n\t\theight: 34px;\n\t}\n}\n\n.error-message {\n\tfloat: right;\n\tmargin-right: 10px;\n}\n\n.status-button {\n\ttransition: 0.5s ease all;\n\tdisplay: block;\n\tmargin: 3px 10px 3px auto;\n}\n.status-button.primary {\n\tpadding-left: 32px;\n\tbackground-position: 10px center;\n}\n.status-button:not(.primary) {\n\tbackground-color: var(--color-main-background);\n}\n.status-button.invalid {\n\tbackground-color: var(--color-warning);\n\tcolor: #fff;\n\tborder: none;\n}\n.status-button.icon-checkmark {\n\tborder: 1px solid var(--color-success);\n}\n\n.flow-icon {\n\twidth: 44px;\n}\n\n.rule {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tborder-left: 5px solid var(--color-primary-element);\n\n\t.trigger, .action {\n\t\tflex-grow: 1;\n\t\tmin-height: 100px;\n\t\tmax-width: 700px;\n\t}\n\t.action {\n\t\tmax-width: 400px;\n\t\tposition: relative;\n\t}\n\t.icon-confirm {\n\t\tbackground-position: right 27px;\n\t\tpadding-right: 20px;\n\t\tmargin-right: 20px;\n\t}\n}\n.trigger p, .action p {\n\tmin-height: 34px;\n\tdisplay: flex;\n\n\t& > span {\n\t\tmin-width: 50px;\n\t\ttext-align: right;\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tpadding-right: 10px;\n\t\tpadding-top: 6px;\n\t}\n\t.multiselect {\n\t\tflex-grow: 1;\n\t\tmax-width: 300px;\n\t}\n}\n.trigger p:first-child span {\n\t\tpadding-top: 3px;\n}\n\n.check--add {\n\tbackground-position: 7px center;\n\tbackground-color: transparent;\n\tpadding-left: 6px;\n\tmargin: 0;\n\twidth: 180px;\n\tborder-radius: var(--border-radius);\n\tcolor: var(--color-text-maxcontrast);\n\tfont-weight: normal;\n\ttext-align: left;\n\tfont-size: 1em;\n}\n\n@media (max-width:1400px) {\n\t.rule {\n\t\t&, .trigger, .action {\n\t\t\twidth: 100%;\n\t\t\tmax-width: 100%;\n\t\t}\n\t\t.flow-icon {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n\n"],sourceRoot:""}]),n.Z=a},33855:function(t,n,e){"use strict";var i=e(87537),o=e.n(i),r=e(23645),a=e.n(r)()(o());a.push([t.id,"#workflowengine[data-v-7b3e4a56]{border-bottom:1px solid var(--color-border)}.section[data-v-7b3e4a56]{max-width:100vw}.section h2.configured-flows[data-v-7b3e4a56]{margin-top:50px;margin-bottom:0}.actions[data-v-7b3e4a56]{display:flex;flex-wrap:wrap;max-width:1200px}.actions .actions__item[data-v-7b3e4a56]{max-width:280px;flex-basis:250px}button.icon[data-v-7b3e4a56]{padding-left:32px;background-position:10px center}.slide-enter-active[data-v-7b3e4a56]{-moz-transition-duration:.3s;-webkit-transition-duration:.3s;-o-transition-duration:.3s;transition-duration:.3s;-moz-transition-timing-function:ease-in;-webkit-transition-timing-function:ease-in;-o-transition-timing-function:ease-in;transition-timing-function:ease-in}.slide-leave-active[data-v-7b3e4a56]{-moz-transition-duration:.3s;-webkit-transition-duration:.3s;-o-transition-duration:.3s;transition-duration:.3s;-moz-transition-timing-function:cubic-bezier(0, 1, 0.5, 1);-webkit-transition-timing-function:cubic-bezier(0, 1, 0.5, 1);-o-transition-timing-function:cubic-bezier(0, 1, 0.5, 1);transition-timing-function:cubic-bezier(0, 1, 0.5, 1)}.slide-enter-to[data-v-7b3e4a56],.slide-leave[data-v-7b3e4a56]{max-height:500px;overflow:hidden}.slide-enter[data-v-7b3e4a56],.slide-leave-to[data-v-7b3e4a56]{overflow:hidden;max-height:0;padding-top:0;padding-bottom:0}.actions__item[data-v-7b3e4a56]{display:flex;flex-wrap:wrap;flex-direction:column;flex-grow:1;margin-left:-1px;padding:10px;border-radius:var(--border-radius-large);margin-right:20px;margin-bottom:20px}.actions__item .icon[data-v-7b3e4a56]{display:block;width:100%;height:50px;background-size:50px 50px;background-position:center center;margin-top:10px;margin-bottom:10px;background-repeat:no-repeat}.actions__item__description[data-v-7b3e4a56]{text-align:center;flex-grow:1;display:flex;flex-direction:column}.actions__item_options[data-v-7b3e4a56]{width:100%;margin-top:10px;padding-left:60px}h3[data-v-7b3e4a56],small[data-v-7b3e4a56]{padding:6px;display:block}h3[data-v-7b3e4a56]{margin:0;padding:0;font-weight:600}small[data-v-7b3e4a56]{font-size:10pt;flex-grow:1}.colored[data-v-7b3e4a56]:not(.more){background-color:var(--color-primary-element)}.colored:not(.more) h3[data-v-7b3e4a56],.colored:not(.more) small[data-v-7b3e4a56]{color:var(--color-primary-text)}.actions__item[data-v-7b3e4a56]:not(.colored){flex-direction:row}.actions__item:not(.colored) .actions__item__description[data-v-7b3e4a56]{padding-top:5px;text-align:left;width:calc(100% - 105px)}.actions__item:not(.colored) .actions__item__description small[data-v-7b3e4a56]{padding:0}.actions__item:not(.colored) .icon[data-v-7b3e4a56]{width:50px;margin:0;margin-right:10px}.actions__item:not(.colored) .icon[data-v-7b3e4a56]:not(.icon-invert){filter:invert(1)}.colored .icon-invert[data-v-7b3e4a56]{filter:invert(1)}.actions__item.more[data-v-7b3e4a56]{background-color:var(--color-background-dark)}","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Workflow.vue","webpack://./apps/workflowengine/src/styles/operation.scss"],names:[],mappings:"AAuGA,iCACC,2CAAA,CAED,0BACC,eAAA,CAEA,8CACC,eAAA,CACA,eAAA,CAGF,0BACC,YAAA,CACA,cAAA,CACA,gBAAA,CACA,yCACC,eAAA,CACA,gBAAA,CAIF,6BACC,iBAAA,CACA,+BAAA,CAGD,qCACC,4BAAA,CACA,+BAAA,CACA,0BAAA,CACA,uBAAA,CACA,uCAAA,CACA,0CAAA,CACA,qCAAA,CACA,kCAAA,CAGD,qCACC,4BAAA,CACA,+BAAA,CACA,0BAAA,CACA,uBAAA,CACA,0DAAA,CACA,6DAAA,CACA,wDAAA,CACA,qDAAA,CAGD,+DACC,gBAAA,CACA,eAAA,CAGD,+DACC,eAAA,CACA,YAAA,CACA,aAAA,CACA,gBAAA,CChKD,gCACC,YAAA,CACA,cAAA,CACA,qBAAA,CACA,WAAA,CACA,gBAAA,CACA,YAAA,CACA,wCAAA,CACA,iBAAA,CACA,kBAAA,CAED,sCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,yBAAA,CACA,iCAAA,CACA,eAAA,CACA,kBAAA,CACA,2BAAA,CAED,6CACC,iBAAA,CACA,WAAA,CACA,YAAA,CACA,qBAAA,CAED,wCACC,UAAA,CACA,eAAA,CACA,iBAAA,CAED,2CACC,WAAA,CACA,aAAA,CAED,oBACC,QAAA,CACA,SAAA,CACA,eAAA,CAED,uBACC,cAAA,CACA,WAAA,CAGD,qCACC,6CAAA,CACA,mFACC,+BAAA,CAIF,8CACC,kBAAA,CAEA,0EACC,eAAA,CACA,eAAA,CACA,wBAAA,CACA,gFACC,SAAA,CAGF,oDACC,UAAA,CACA,QAAA,CACA,iBAAA,CACA,sEACC,gBAAA,CAKH,uCACC,gBAAA,CD0FD,qCACC,6CAAA",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#workflowengine {\n\tborder-bottom: 1px solid var(--color-border);\n}\n.section {\n\tmax-width: 100vw;\n\n\th2.configured-flows {\n\t\tmargin-top: 50px;\n\t\tmargin-bottom: 0;\n\t}\n}\n.actions {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tmax-width: 1200px;\n\t.actions__item {\n\t\tmax-width: 280px;\n\t\tflex-basis: 250px;\n\t}\n}\n\nbutton.icon {\n\tpadding-left: 32px;\n\tbackground-position: 10px center;\n}\n\n.slide-enter-active {\n\t-moz-transition-duration: 0.3s;\n\t-webkit-transition-duration: 0.3s;\n\t-o-transition-duration: 0.3s;\n\ttransition-duration: 0.3s;\n\t-moz-transition-timing-function: ease-in;\n\t-webkit-transition-timing-function: ease-in;\n\t-o-transition-timing-function: ease-in;\n\ttransition-timing-function: ease-in;\n}\n\n.slide-leave-active {\n\t-moz-transition-duration: 0.3s;\n\t-webkit-transition-duration: 0.3s;\n\t-o-transition-duration: 0.3s;\n\ttransition-duration: 0.3s;\n\t-moz-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\t-webkit-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\t-o-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\ttransition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n}\n\n.slide-enter-to, .slide-leave {\n\tmax-height: 500px;\n\toverflow: hidden;\n}\n\n.slide-enter, .slide-leave-to {\n\toverflow: hidden;\n\tmax-height: 0;\n\tpadding-top: 0;\n\tpadding-bottom: 0;\n}\n\n@import "./../styles/operation";\n\n.actions__item.more {\n\tbackground-color: var(--color-background-dark);\n}\n',".actions__item {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tflex-direction: column;\n\tflex-grow: 1;\n\tmargin-left: -1px;\n\tpadding: 10px;\n\tborder-radius: var(--border-radius-large);\n\tmargin-right: 20px;\n\tmargin-bottom: 20px;\n}\n.actions__item .icon {\n\tdisplay: block;\n\twidth: 100%;\n\theight: 50px;\n\tbackground-size: 50px 50px;\n\tbackground-position: center center;\n\tmargin-top: 10px;\n\tmargin-bottom: 10px;\n\tbackground-repeat: no-repeat;\n}\n.actions__item__description {\n\ttext-align: center;\n\tflex-grow: 1;\n\tdisplay: flex;\n\tflex-direction: column;\n}\n.actions__item_options {\n\twidth: 100%;\n\tmargin-top: 10px;\n\tpadding-left: 60px;\n}\nh3, small {\n\tpadding: 6px;\n\tdisplay: block;\n}\nh3 {\n\tmargin: 0;\n\tpadding: 0;\n\tfont-weight: 600;\n}\nsmall {\n\tfont-size: 10pt;\n\tflex-grow: 1;\n}\n\n.colored:not(.more) {\n\tbackground-color: var(--color-primary-element);\n\th3, small {\n\t\tcolor: var(--color-primary-text)\n\t}\n}\n\n.actions__item:not(.colored) {\n\tflex-direction: row;\n\n\t.actions__item__description {\n\t\tpadding-top: 5px;\n\t\ttext-align: left;\n\t\twidth: calc(100% - 105px);\n\t\tsmall {\n\t\t\tpadding: 0;\n\t\t}\n\t}\n\t.icon {\n\t\twidth: 50px;\n\t\tmargin: 0;\n\t\tmargin-right: 10px;\n\t\t&:not(.icon-invert) {\n\t\t\tfilter: invert(1);\n\t\t}\n\t}\n}\n\n.colored .icon-invert {\n\tfilter: invert(1);\n}\n"],sourceRoot:""}]),n.Z=a},1510:function(t,n,e){"use strict";var i=e(87537),o=e.n(i),r=e(23645),a=e.n(r)()(o());a.push([t.id,"\n.multiselect[data-v-8c011724], input[type='text'][data-v-8c011724] {\n\twidth: 100%;\n}\n.multiselect[data-v-8c011724] .multiselect__content-wrapper li>span,\n.multiselect[data-v-8c011724] .multiselect__single {\n\tdisplay: flex;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Checks/FileMimeType.vue"],names:[],mappings:";AA4IA;CACA,WAAA;AACA;AACA;;CAEA,aAAA;CACA,mBAAA;CACA,gBAAA;CACA,uBAAA;AACA",sourcesContent:["\x3c!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\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 --\x3e\n\n<template>\n\t<div>\n\t\t<Multiselect :value=\"currentValue\"\n\t\t\t:placeholder=\"t('workflowengine', 'Select a file type')\"\n\t\t\tlabel=\"label\"\n\t\t\ttrack-by=\"pattern\"\n\t\t\t:options=\"options\"\n\t\t\t:multiple=\"false\"\n\t\t\t:tagging=\"false\"\n\t\t\t@input=\"setValue\">\n\t\t\t<template slot=\"singleLabel\" slot-scope=\"props\">\n\t\t\t\t<span v-if=\"props.option.icon\" class=\"option__icon\" :class=\"props.option.icon\" />\n\t\t\t\t<img v-else :src=\"props.option.iconUrl\">\n\t\t\t\t<span class=\"option__title option__title_single\">{{ props.option.label }}</span>\n\t\t\t</template>\n\t\t\t<template slot=\"option\" slot-scope=\"props\">\n\t\t\t\t<span v-if=\"props.option.icon\" class=\"option__icon\" :class=\"props.option.icon\" />\n\t\t\t\t<img v-else :src=\"props.option.iconUrl\">\n\t\t\t\t<span class=\"option__title\">{{ props.option.label }}</span>\n\t\t\t</template>\n\t\t</Multiselect>\n\t\t<input v-if=\"!isPredefined\"\n\t\t\ttype=\"text\"\n\t\t\t:value=\"currentValue.pattern\"\n\t\t\t:placeholder=\"t('workflowengine', 'e.g. httpd/unix-directory')\"\n\t\t\t@input=\"updateCustom\">\n\t</div>\n</template>\n\n<script>\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\nimport valueMixin from './../../mixins/valueMixin'\nimport { imagePath } from '@nextcloud/router'\n\nexport default {\n\tname: 'FileMimeType',\n\tcomponents: {\n\t\tMultiselect,\n\t},\n\tmixins: [\n\t\tvalueMixin,\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tpredefinedTypes: [\n\t\t\t\t{\n\t\t\t\t\ticon: 'icon-folder',\n\t\t\t\t\tlabel: t('workflowengine', 'Folder'),\n\t\t\t\t\tpattern: 'httpd/unix-directory',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ticon: 'icon-picture',\n\t\t\t\t\tlabel: t('workflowengine', 'Images'),\n\t\t\t\t\tpattern: '/image\\\\/.*/',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ticonUrl: imagePath('core', 'filetypes/x-office-document'),\n\t\t\t\t\tlabel: t('workflowengine', 'Office documents'),\n\t\t\t\t\tpattern: '/(vnd\\\\.(ms-|openxmlformats-|oasis\\\\.opendocument).*)$/',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ticonUrl: imagePath('core', 'filetypes/application-pdf'),\n\t\t\t\t\tlabel: t('workflowengine', 'PDF documents'),\n\t\t\t\t\tpattern: 'application/pdf',\n\t\t\t\t},\n\t\t\t],\n\t\t}\n\t},\n\tcomputed: {\n\t\toptions() {\n\t\t\treturn [...this.predefinedTypes, this.customValue]\n\t\t},\n\t\tisPredefined() {\n\t\t\tconst matchingPredefined = this.predefinedTypes.find((type) => this.newValue === type.pattern)\n\t\t\tif (matchingPredefined) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\tcustomValue() {\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom mimetype'),\n\t\t\t\tpattern: '',\n\t\t\t}\n\t\t},\n\t\tcurrentValue() {\n\t\t\tconst matchingPredefined = this.predefinedTypes.find((type) => this.newValue === type.pattern)\n\t\t\tif (matchingPredefined) {\n\t\t\t\treturn matchingPredefined\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom mimetype'),\n\t\t\t\tpattern: this.newValue,\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\tvalidateRegex(string) {\n\t\t\tconst regexRegex = /^\\/(.*)\\/([gui]{0,3})$/\n\t\t\tconst result = regexRegex.exec(string)\n\t\t\treturn result !== null\n\t\t},\n\t\tsetValue(value) {\n\t\t\tif (value !== null) {\n\t\t\t\tthis.newValue = value.pattern\n\t\t\t\tthis.$emit('input', this.newValue)\n\t\t\t}\n\t\t},\n\t\tupdateCustom(event) {\n\t\t\tthis.newValue = event.target.value\n\t\t\tthis.$emit('input', this.newValue)\n\t\t},\n\t},\n}\n<\/script>\n<style scoped>\n\t.multiselect, input[type='text'] {\n\t\twidth: 100%;\n\t}\n\t.multiselect >>> .multiselect__content-wrapper li>span,\n\t.multiselect >>> .multiselect__single {\n\t\tdisplay: flex;\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n</style>\n"],sourceRoot:""}]),n.Z=a},82999:function(t,n,e){"use strict";var i=e(87537),o=e.n(i),r=e(23645),a=e.n(r)()(o());a.push([t.id,"\n.multiselect[data-v-dd8e16be], input[type='text'][data-v-dd8e16be] {\n\twidth: 100%;\n}\n","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Checks/RequestURL.vue"],names:[],mappings:";AA2IA;CACA,WAAA;AACA",sourcesContent:["\x3c!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\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 --\x3e\n\n<template>\n\t<div>\n\t\t<Multiselect :value=\"currentValue\"\n\t\t\t:placeholder=\"t('workflowengine', 'Select a request URL')\"\n\t\t\tlabel=\"label\"\n\t\t\ttrack-by=\"pattern\"\n\t\t\tgroup-values=\"children\"\n\t\t\tgroup-label=\"label\"\n\t\t\t:options=\"options\"\n\t\t\t:multiple=\"false\"\n\t\t\t:tagging=\"false\"\n\t\t\t@input=\"setValue\">\n\t\t\t<template slot=\"singleLabel\" slot-scope=\"props\">\n\t\t\t\t<span class=\"option__icon\" :class=\"props.option.icon\" />\n\t\t\t\t<span class=\"option__title option__title_single\">{{ props.option.label }}</span>\n\t\t\t</template>\n\t\t\t<template slot=\"option\" slot-scope=\"props\">\n\t\t\t\t<span class=\"option__icon\" :class=\"props.option.icon\" />\n\t\t\t\t<span class=\"option__title\">{{ props.option.label }} {{ props.option.$groupLabel }}</span>\n\t\t\t</template>\n\t\t</Multiselect>\n\t\t<input v-if=\"!isPredefined\"\n\t\t\ttype=\"text\"\n\t\t\t:value=\"currentValue.pattern\"\n\t\t\t:placeholder=\"placeholder\"\n\t\t\t@input=\"updateCustom\">\n\t</div>\n</template>\n\n<script>\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\nimport valueMixin from '../../mixins/valueMixin'\n\nexport default {\n\tname: 'RequestURL',\n\tcomponents: {\n\t\tMultiselect,\n\t},\n\tmixins: [\n\t\tvalueMixin,\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tnewValue: '',\n\t\t\tpredefinedTypes: [\n\t\t\t\t{\n\t\t\t\t\tlabel: t('workflowengine', 'Predefined URLs'),\n\t\t\t\t\tchildren: [\n\t\t\t\t\t\t{ pattern: 'webdav', label: t('workflowengine', 'Files WebDAV') },\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t}\n\t},\n\tcomputed: {\n\t\toptions() {\n\t\t\treturn [...this.predefinedTypes, this.customValue]\n\t\t},\n\t\tplaceholder() {\n\t\t\tif (this.check.operator === 'matches' || this.check.operator === '!matches') {\n\t\t\t\treturn '/^https\\\\:\\\\/\\\\/localhost\\\\/index\\\\.php$/i'\n\t\t\t}\n\t\t\treturn 'https://localhost/index.php'\n\t\t},\n\t\tmatchingPredefined() {\n\t\t\treturn this.predefinedTypes\n\t\t\t\t.map(groups => groups.children)\n\t\t\t\t.flat()\n\t\t\t\t.find((type) => this.newValue === type.pattern)\n\t\t},\n\t\tisPredefined() {\n\t\t\treturn !!this.matchingPredefined\n\t\t},\n\t\tcustomValue() {\n\t\t\treturn {\n\t\t\t\tlabel: t('workflowengine', 'Others'),\n\t\t\t\tchildren: [\n\t\t\t\t\t{\n\t\t\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\t\t\tlabel: t('workflowengine', 'Custom URL'),\n\t\t\t\t\t\tpattern: '',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t}\n\t\t},\n\t\tcurrentValue() {\n\t\t\tif (this.matchingPredefined) {\n\t\t\t\treturn this.matchingPredefined\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom URL'),\n\t\t\t\tpattern: this.newValue,\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\tvalidateRegex(string) {\n\t\t\tconst regexRegex = /^\\/(.*)\\/([gui]{0,3})$/\n\t\t\tconst result = regexRegex.exec(string)\n\t\t\treturn result !== null\n\t\t},\n\t\tsetValue(value) {\n\t\t\t// TODO: check if value requires a regex and set the check operator according to that\n\t\t\tif (value !== null) {\n\t\t\t\tthis.newValue = value.pattern\n\t\t\t\tthis.$emit('input', this.newValue)\n\t\t\t}\n\t\t},\n\t\tupdateCustom(event) {\n\t\t\tthis.newValue = event.target.value\n\t\t\tthis.$emit('input', this.newValue)\n\t\t},\n\t},\n}\n<\/script>\n<style scoped>\n\t.multiselect, input[type='text'] {\n\t\twidth: 100%;\n\t}\n</style>\n"],sourceRoot:""}]),n.Z=a},99055:function(t,n,e){"use strict";var i=e(87537),o=e.n(i),r=e(23645),a=e.n(r)()(o());a.push([t.id,"\n.multiselect[data-v-475ac1e6], input[type='text'][data-v-475ac1e6] {\n\twidth: 100%;\n}\n.multiselect .multiselect__content-wrapper li>span[data-v-475ac1e6] {\n\tdisplay: flex;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n.multiselect[data-v-475ac1e6] .multiselect__single {\n\twidth: 100%;\n\tdisplay: flex;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n.option__icon[data-v-475ac1e6] {\n\tdisplay: inline-block;\n\tmin-width: 30px;\n\tbackground-position: left;\n}\n.option__title[data-v-475ac1e6] {\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Checks/RequestUserAgent.vue"],names:[],mappings:";AA8HA;CACA,WAAA;AACA;AAEA;CACA,aAAA;CACA,mBAAA;CACA,gBAAA;CACA,uBAAA;AACA;AACA;CACA,WAAA;CACA,aAAA;CACA,mBAAA;CACA,gBAAA;CACA,uBAAA;AACA;AACA;CACA,qBAAA;CACA,eAAA;CACA,yBAAA;AACA;AACA;CACA,mBAAA;CACA,gBAAA;CACA,uBAAA;AACA",sourcesContent:["\x3c!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\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 --\x3e\n\n<template>\n\t<div>\n\t\t<Multiselect :value=\"currentValue\"\n\t\t\t:placeholder=\"t('workflowengine', 'Select a user agent')\"\n\t\t\tlabel=\"label\"\n\t\t\ttrack-by=\"pattern\"\n\t\t\t:options=\"options\"\n\t\t\t:multiple=\"false\"\n\t\t\t:tagging=\"false\"\n\t\t\t@input=\"setValue\">\n\t\t\t<template slot=\"singleLabel\" slot-scope=\"props\">\n\t\t\t\t<span class=\"option__icon\" :class=\"props.option.icon\" />\n\t\t\t\t\x3c!-- v-html can be used here as t() always passes our translated strings though DOMPurify.sanitize --\x3e\n\t\t\t\t\x3c!-- eslint-disable-next-line vue/no-v-html --\x3e\n\t\t\t\t<span class=\"option__title option__title_single\" v-html=\"props.option.label\" />\n\t\t\t</template>\n\t\t\t<template slot=\"option\" slot-scope=\"props\">\n\t\t\t\t<span class=\"option__icon\" :class=\"props.option.icon\" />\n\t\t\t\t\x3c!-- eslint-disable-next-line vue/no-v-html --\x3e\n\t\t\t\t<span v-if=\"props.option.$groupLabel\" class=\"option__title\" v-html=\"props.option.$groupLabel\" />\n\t\t\t\t\x3c!-- eslint-disable-next-line vue/no-v-html --\x3e\n\t\t\t\t<span v-else class=\"option__title\" v-html=\"props.option.label\" />\n\t\t\t</template>\n\t\t</Multiselect>\n\t\t<input v-if=\"!isPredefined\"\n\t\t\ttype=\"text\"\n\t\t\t:value=\"currentValue.pattern\"\n\t\t\t@input=\"updateCustom\">\n\t</div>\n</template>\n\n<script>\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\nimport valueMixin from '../../mixins/valueMixin'\n\nexport default {\n\tname: 'RequestUserAgent',\n\tcomponents: {\n\t\tMultiselect,\n\t},\n\tmixins: [\n\t\tvalueMixin,\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tnewValue: '',\n\t\t\tpredefinedTypes: [\n\t\t\t\t{ pattern: 'android', label: t('workflowengine', 'Android client'), icon: 'icon-phone' },\n\t\t\t\t{ pattern: 'ios', label: t('workflowengine', 'iOS client'), icon: 'icon-phone' },\n\t\t\t\t{ pattern: 'desktop', label: t('workflowengine', 'Desktop client'), icon: 'icon-desktop' },\n\t\t\t\t{ pattern: 'mail', label: t('workflowengine', 'Thunderbird & Outlook addons'), icon: 'icon-mail' },\n\t\t\t],\n\t\t}\n\t},\n\tcomputed: {\n\t\toptions() {\n\t\t\treturn [...this.predefinedTypes, this.customValue]\n\t\t},\n\t\tmatchingPredefined() {\n\t\t\treturn this.predefinedTypes\n\t\t\t\t.find((type) => this.newValue === type.pattern)\n\t\t},\n\t\tisPredefined() {\n\t\t\treturn !!this.matchingPredefined\n\t\t},\n\t\tcustomValue() {\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom user agent'),\n\t\t\t\tpattern: '',\n\t\t\t}\n\t\t},\n\t\tcurrentValue() {\n\t\t\tif (this.matchingPredefined) {\n\t\t\t\treturn this.matchingPredefined\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom user agent'),\n\t\t\t\tpattern: this.newValue,\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\tvalidateRegex(string) {\n\t\t\tconst regexRegex = /^\\/(.*)\\/([gui]{0,3})$/\n\t\t\tconst result = regexRegex.exec(string)\n\t\t\treturn result !== null\n\t\t},\n\t\tsetValue(value) {\n\t\t\t// TODO: check if value requires a regex and set the check operator according to that\n\t\t\tif (value !== null) {\n\t\t\t\tthis.newValue = value.pattern\n\t\t\t\tthis.$emit('input', this.newValue)\n\t\t\t}\n\t\t},\n\t\tupdateCustom(event) {\n\t\t\tthis.newValue = event.target.value\n\t\t\tthis.$emit('input', this.newValue)\n\t\t},\n\t},\n}\n<\/script>\n<style scoped>\n\t.multiselect, input[type='text'] {\n\t\twidth: 100%;\n\t}\n\n\t.multiselect .multiselect__content-wrapper li>span {\n\t\tdisplay: flex;\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n\t.multiselect::v-deep .multiselect__single {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n\t.option__icon {\n\t\tdisplay: inline-block;\n\t\tmin-width: 30px;\n\t\tbackground-position: left;\n\t}\n\t.option__title {\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n</style>\n"],sourceRoot:""}]),n.Z=a},80787:function(t,n,e){"use strict";var i=e(87537),o=e.n(i),r=e(23645),a=e.n(r)()(o());a.push([t.id,"\n.multiselect[data-v-79fa10a5] {\n\twidth: 100%;\n}\n","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Checks/RequestUserGroup.vue"],names:[],mappings:";AA4GA;CACA,WAAA;AACA",sourcesContent:["\x3c!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\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 --\x3e\n\n<template>\n\t<div>\n\t\t<Multiselect :value=\"currentValue\"\n\t\t\t:loading=\"status.isLoading && groups.length === 0\"\n\t\t\t:options=\"groups\"\n\t\t\t:multiple=\"false\"\n\t\t\tlabel=\"displayname\"\n\t\t\ttrack-by=\"id\"\n\t\t\t@search-change=\"searchAsync\"\n\t\t\t@input=\"(value) => $emit('input', value.id)\" />\n\t</div>\n</template>\n\n<script>\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nconst groups = []\nconst status = {\n\tisLoading: false,\n}\n\nexport default {\n\tname: 'RequestUserGroup',\n\tcomponents: {\n\t\tMultiselect,\n\t},\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tcheck: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => { return {} },\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tgroups,\n\t\t\tstatus,\n\t\t}\n\t},\n\tcomputed: {\n\t\tcurrentValue() {\n\t\t\treturn this.groups.find(group => group.id === this.value) || null\n\t\t},\n\t},\n\tasync mounted() {\n\t\tif (this.groups.length === 0) {\n\t\t\tawait this.searchAsync('')\n\t\t}\n\t\tif (this.currentValue === null) {\n\t\t\tawait this.searchAsync(this.value)\n\t\t}\n\t},\n\tmethods: {\n\t\tsearchAsync(searchQuery) {\n\t\t\tif (this.status.isLoading) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.status.isLoading = true\n\t\t\treturn axios.get(generateOcsUrl('cloud/groups/details?limit=20&search={searchQuery}', { searchQuery })).then((response) => {\n\t\t\t\tresponse.data.ocs.data.groups.forEach((group) => {\n\t\t\t\t\tthis.addGroup({\n\t\t\t\t\t\tid: group.id,\n\t\t\t\t\t\tdisplayname: group.displayname,\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\tthis.status.isLoading = false\n\t\t\t}, (error) => {\n\t\t\t\tconsole.error('Error while loading group list', error.response)\n\t\t\t})\n\t\t},\n\t\taddGroup(group) {\n\t\t\tconst index = this.groups.findIndex((item) => item.id === group.id)\n\t\t\tif (index === -1) {\n\t\t\t\tthis.groups.push(group)\n\t\t\t}\n\t\t},\n\t},\n}\n<\/script>\n<style scoped>\n\t.multiselect {\n\t\twidth: 100%;\n\t}\n</style>\n"],sourceRoot:""}]),n.Z=a},46700:function(t,n,e){var i={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":2819,"./hi.js":2819,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function o(t){var n=r(t);return e(n)}function r(t){if(!e.o(i,t)){var n=new Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}return i[t]}o.keys=function(){return Object.keys(i)},o.resolve=r,t.exports=o,o.id=46700}},i={};function o(t){var n=i[t];if(void 0!==n)return n.exports;var r=i[t]={id:t,loaded:!1,exports:{}};return e[t].call(r.exports,r,r.exports,o),r.loaded=!0,r.exports}o.m=e,o.amdD=function(){throw new Error("define cannot be used indirect")},o.amdO={},n=[],o.O=function(t,e,i,r){if(!e){var a=1/0;for(u=0;u<n.length;u++){e=n[u][0],i=n[u][1],r=n[u][2];for(var s=!0,l=0;l<e.length;l++)(!1&r||a>=r)&&Object.keys(o.O).every((function(t){return o.O[t](e[l])}))?e.splice(l--,1):(s=!1,r<a&&(a=r));if(s){n.splice(u--,1);var c=i();void 0!==c&&(t=c)}}return t}r=r||0;for(var u=n.length;u>0&&n[u-1][2]>r;u--)n[u]=n[u-1];n[u]=[e,i,r]},o.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(n,{a:n}),n},o.d=function(t,n){for(var e in n)o.o(n,e)&&!o.o(t,e)&&Object.defineProperty(t,e,{enumerable:!0,get:n[e]})},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),o.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},o.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},o.j=8318,function(){o.b=document.baseURI||self.location.href;var t={8318:0};o.O.j=function(n){return 0===t[n]};var n=function(n,e){var i,r,a=e[0],s=e[1],l=e[2],c=0;if(a.some((function(n){return 0!==t[n]}))){for(i in s)o.o(s,i)&&(o.m[i]=s[i]);if(l)var u=l(o)}for(n&&n(e);c<a.length;c++)r=a[c],o.o(t,r)&&t[r]&&t[r][0](),t[r]=0;return o.O(u)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(n.bind(null,0)),e.push=n.bind(null,e.push.bind(e))}(),o.nc=void 0;var r=o.O(void 0,[7874],(function(){return o(82730)}));r=o.O(r)}();
+//# sourceMappingURL=workflowengine-workflowengine.js.map?v=202cf704719a3e16f216 \ No newline at end of file
diff --git a/dist/workflowengine-workflowengine.js.map b/dist/workflowengine-workflowengine.js.map
index e4309f259fb..685944130b0 100644
--- a/dist/workflowengine-workflowengine.js.map
+++ b/dist/workflowengine-workflowengine.js.map
@@ -1 +1 @@
-{"version":3,"file":"workflowengine-workflowengine.js?v=4e37f659297a8685056b","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/workflowengine/src/helpers/api.js","webpack:///nextcloud/apps/workflowengine/src/store.js","webpack:///nextcloud/apps/workflowengine/src/components/Event.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/workflowengine/src/components/Event.vue","webpack://nextcloud/./apps/workflowengine/src/components/Event.vue?2325","webpack://nextcloud/./apps/workflowengine/src/components/Event.vue?5115","webpack:///nextcloud/apps/workflowengine/src/components/Event.vue?vue&type=template&id=f3569276&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/components/Check.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/workflowengine/src/components/Check.vue","webpack://nextcloud/./apps/workflowengine/src/components/Check.vue?50c3","webpack://nextcloud/./apps/workflowengine/src/components/Check.vue?3fb8","webpack:///nextcloud/apps/workflowengine/src/components/Check.vue?vue&type=template&id=70cc784d&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/components/Operation.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/workflowengine/src/components/Operation.vue","webpack://nextcloud/./apps/workflowengine/src/components/Operation.vue?4d4d","webpack://nextcloud/./apps/workflowengine/src/components/Operation.vue?3526","webpack:///nextcloud/apps/workflowengine/src/components/Operation.vue?vue&type=template&id=34495584&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/components/Rule.vue","webpack:///nextcloud/apps/workflowengine/src/components/Rule.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Rule.vue?a6fe","webpack:///nextcloud/apps/workflowengine/src/components/Workflow.vue","webpack:///nextcloud/apps/workflowengine/src/components/Workflow.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Rule.vue?e711","webpack:///nextcloud/apps/workflowengine/src/components/Rule.vue?vue&type=template&id=225ba268&scoped=true&","webpack://nextcloud/./apps/workflowengine/src/components/Workflow.vue?b47f","webpack://nextcloud/./apps/workflowengine/src/components/Workflow.vue?17b8","webpack:///nextcloud/apps/workflowengine/src/components/Workflow.vue?vue&type=template&id=7b3e4a56&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/helpers/validators.js","webpack:///nextcloud/apps/workflowengine/src/mixins/valueMixin.js","webpack:///nextcloud/apps/workflowengine/src/components/Checks/FileMimeType.vue","webpack:///nextcloud/apps/workflowengine/src/components/Checks/FileMimeType.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Checks/FileMimeType.vue?6178","webpack://nextcloud/./apps/workflowengine/src/components/Checks/FileMimeType.vue?c385","webpack:///nextcloud/apps/workflowengine/src/components/Checks/FileMimeType.vue?vue&type=template&id=8c011724&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/MultiselectTag/api.js","webpack:///nextcloud/apps/workflowengine/src/components/Checks/MultiselectTag/MultiselectTag.vue","webpack:///nextcloud/apps/workflowengine/src/components/Checks/MultiselectTag/MultiselectTag.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/FileSystemTag.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/FileSystemTag.vue","webpack://nextcloud/./apps/workflowengine/src/components/Checks/MultiselectTag/MultiselectTag.vue?3f10","webpack:///nextcloud/apps/workflowengine/src/components/Checks/MultiselectTag/MultiselectTag.vue?vue&type=template&id=73cc22e8&","webpack://nextcloud/./apps/workflowengine/src/components/Checks/FileSystemTag.vue?2d3e","webpack:///nextcloud/apps/workflowengine/src/components/Checks/FileSystemTag.vue?vue&type=template&id=31f5522d&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/file.js","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserAgent.vue","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserAgent.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestUserAgent.vue?83e0","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestUserAgent.vue?81d6","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserAgent.vue?vue&type=template&id=475ac1e6&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestTime.vue","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestTime.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestTime.vue?6629","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestTime.vue?a55a","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestTime.vue?vue&type=template&id=149baca9&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestURL.vue","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestURL.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestURL.vue?de33","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestURL.vue?eee5","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestURL.vue?vue&type=template&id=dd8e16be&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserGroup.vue","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserGroup.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestUserGroup.vue?b928","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestUserGroup.vue?f6d3","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserGroup.vue?vue&type=template&id=79fa10a5&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/request.js","webpack:///nextcloud/apps/workflowengine/src/components/Checks/index.js","webpack:///nextcloud/apps/workflowengine/src/workflowengine.js","webpack:///nextcloud/apps/workflowengine/src/components/Check.vue?vue&type=style&index=0&id=70cc784d&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestTime.vue?vue&type=style&index=0&id=149baca9&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Event.vue?vue&type=style&index=0&id=f3569276&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Operation.vue?vue&type=style&index=0&id=34495584&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Rule.vue?vue&type=style&index=0&id=225ba268&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Workflow.vue?vue&type=style&index=0&id=7b3e4a56&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/FileMimeType.vue?vue&type=style&index=0&id=8c011724&scoped=true&lang=css&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestURL.vue?vue&type=style&index=0&id=dd8e16be&scoped=true&lang=css&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserAgent.vue?vue&type=style&index=0&id=475ac1e6&scoped=true&lang=css&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserGroup.vue?vue&type=style&index=0&id=79fa10a5&scoped=true&lang=css&","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","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 Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nconst scopeValue = loadState('workflowengine', 'scope') === 0 ? 'global' : 'user'\n\nconst getApiUrl = (url) => {\n\treturn generateOcsUrl('apps/workflowengine/api/v1/workflows/{scopeValue}', { scopeValue }) + url + '?format=json'\n}\n\nexport {\n\tgetApiUrl,\n}\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Kesselberg <mail@danielkesselberg.de>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport Vue from 'vue'\nimport Vuex, { Store } from 'vuex'\nimport axios from '@nextcloud/axios'\nimport { getApiUrl } from './helpers/api'\nimport confirmPassword from '@nextcloud/password-confirmation'\nimport { loadState } from '@nextcloud/initial-state'\n\nVue.use(Vuex)\n\nconst store = new Store({\n\tstate: {\n\t\trules: [],\n\t\tscope: loadState('workflowengine', 'scope'),\n\t\tappstoreEnabled: loadState('workflowengine', 'appstoreenabled'),\n\t\toperations: loadState('workflowengine', 'operators'),\n\n\t\tplugins: Vue.observable({\n\t\t\tchecks: {},\n\t\t\toperators: {},\n\t\t}),\n\n\t\tentities: loadState('workflowengine', 'entities'),\n\t\tevents: loadState('workflowengine', 'entities')\n\t\t\t.map((entity) => entity.events.map(event => {\n\t\t\t\treturn {\n\t\t\t\t\tid: `${entity.id}::${event.eventName}`,\n\t\t\t\t\tentity,\n\t\t\t\t\t...event,\n\t\t\t\t}\n\t\t\t})).flat(),\n\t\tchecks: loadState('workflowengine', 'checks'),\n\t},\n\tmutations: {\n\t\taddRule(state, rule) {\n\t\t\tstate.rules.push({ ...rule, valid: true })\n\t\t},\n\t\tupdateRule(state, rule) {\n\t\t\tconst index = state.rules.findIndex((item) => rule.id === item.id)\n\t\t\tconst newRule = Object.assign({}, rule)\n\t\t\tVue.set(state.rules, index, newRule)\n\t\t},\n\t\tremoveRule(state, rule) {\n\t\t\tconst index = state.rules.findIndex((item) => rule.id === item.id)\n\t\t\tstate.rules.splice(index, 1)\n\t\t},\n\t\taddPluginCheck(state, plugin) {\n\t\t\tVue.set(state.plugins.checks, plugin.class, plugin)\n\t\t},\n\t\taddPluginOperator(state, plugin) {\n\t\t\tplugin = Object.assign(\n\t\t\t\t{ color: 'var(--color-primary-element)' },\n\t\t\t\tplugin, state.operations[plugin.id] || {})\n\t\t\tif (typeof state.operations[plugin.id] !== 'undefined') {\n\t\t\t\tVue.set(state.operations, plugin.id, plugin)\n\t\t\t}\n\t\t},\n\t},\n\tactions: {\n\t\tasync fetchRules(context) {\n\t\t\tconst { data } = await axios.get(getApiUrl(''))\n\t\t\tObject.values(data.ocs.data).flat().forEach((rule) => {\n\t\t\t\tcontext.commit('addRule', rule)\n\t\t\t})\n\t\t},\n\t\tcreateNewRule(context, rule) {\n\t\t\tlet entity = null\n\t\t\tlet events = []\n\t\t\tif (rule.isComplex === false && rule.fixedEntity === '') {\n\t\t\t\tentity = context.state.entities.find((item) => rule.entities && rule.entities[0] === item.id)\n\t\t\t\tentity = entity || Object.values(context.state.entities)[0]\n\t\t\t\tevents = [entity.events[0].eventName]\n\t\t\t}\n\n\t\t\tcontext.commit('addRule', {\n\t\t\t\tid: -(new Date().getTime()),\n\t\t\t\tclass: rule.id,\n\t\t\t\tentity: entity ? entity.id : rule.fixedEntity,\n\t\t\t\tevents,\n\t\t\t\tname: '', // unused in the new ui, there for legacy reasons\n\t\t\t\tchecks: [\n\t\t\t\t\t{ class: null, operator: null, value: '' },\n\t\t\t\t],\n\t\t\t\toperation: rule.operation || '',\n\t\t\t})\n\t\t},\n\t\tupdateRule(context, rule) {\n\t\t\tcontext.commit('updateRule', {\n\t\t\t\t...rule,\n\t\t\t\tevents: typeof rule.events === 'string' ? JSON.parse(rule.events) : rule.events,\n\t\t\t})\n\t\t},\n\t\tremoveRule(context, rule) {\n\t\t\tcontext.commit('removeRule', rule)\n\t\t},\n\t\tasync pushUpdateRule(context, rule) {\n\t\t\tif (context.state.scope === 0) {\n\t\t\t\tawait confirmPassword()\n\t\t\t}\n\t\t\tlet result\n\t\t\tif (rule.id < 0) {\n\t\t\t\tresult = await axios.post(getApiUrl(''), rule)\n\t\t\t} else {\n\t\t\t\tresult = await axios.put(getApiUrl(`/${rule.id}`), rule)\n\t\t\t}\n\t\t\tVue.set(rule, 'id', result.data.ocs.data.id)\n\t\t\tcontext.commit('updateRule', rule)\n\t\t},\n\t\tasync deleteRule(context, rule) {\n\t\t\tawait confirmPassword()\n\t\t\tawait axios.delete(getApiUrl(`/${rule.id}`))\n\t\t\tcontext.commit('removeRule', rule)\n\t\t},\n\t\tsetValid(context, { rule, valid }) {\n\t\t\trule.valid = valid\n\t\t\tcontext.commit('updateRule', rule)\n\t\t},\n\t},\n\tgetters: {\n\t\tgetRules(state) {\n\t\t\treturn state.rules.filter((rule) => typeof state.operations[rule.class] !== 'undefined').sort((rule1, rule2) => {\n\t\t\t\treturn rule1.id - rule2.id || rule2.class - rule1.class\n\t\t\t})\n\t\t},\n\t\tgetOperationForRule(state) {\n\t\t\treturn (rule) => state.operations[rule.class]\n\t\t},\n\t\tgetEntityForOperation(state) {\n\t\t\treturn (operation) => state.entities.find((entity) => operation.fixedEntity === entity.id)\n\t\t},\n\t\tgetEventsForOperation(state) {\n\t\t\treturn (operation) => state.events\n\t\t},\n\n\t\t/**\n\t\t * Return all available checker plugins for a given entity class\n\t\t *\n\t\t * @param {object} state the store state\n\t\t * @return {Function} the available plugins\n\t\t */\n\t\tgetChecksForEntity(state) {\n\t\t\treturn (entity) => {\n\t\t\t\treturn Object.values(state.checks)\n\t\t\t\t\t.filter((check) => check.supportedEntities.indexOf(entity) > -1 || check.supportedEntities.length === 0)\n\t\t\t\t\t.map((check) => state.plugins.checks[check.id])\n\t\t\t\t\t.reduce((obj, item) => {\n\t\t\t\t\t\tobj[item.class] = item\n\t\t\t\t\t\treturn obj\n\t\t\t\t\t}, {})\n\t\t\t}\n\t\t},\n\t},\n})\n\nexport default store\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Event.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!./Event.vue?vue&type=script&lang=js&\"","<template>\n\t<div class=\"event\">\n\t\t<div v-if=\"operation.isComplex && operation.fixedEntity !== ''\" class=\"isComplex\">\n\t\t\t<img class=\"option__icon\" :src=\"entity.icon\">\n\t\t\t<span class=\"option__title option__title_single\">{{ operation.triggerHint }}</span>\n\t\t</div>\n\t\t<Multiselect v-else\n\t\t\t:value=\"currentEvent\"\n\t\t\t:options=\"allEvents\"\n\t\t\ttrack-by=\"id\"\n\t\t\t:multiple=\"true\"\n\t\t\t:auto-limit=\"false\"\n\t\t\t:disabled=\"allEvents.length <= 1\"\n\t\t\t@input=\"updateEvent\">\n\t\t\t<template slot=\"selection\" slot-scope=\"{ values, isOpen }\">\n\t\t\t\t<div v-if=\"values.length && !isOpen\" class=\"eventlist\">\n\t\t\t\t\t<img class=\"option__icon\" :src=\"values[0].entity.icon\">\n\t\t\t\t\t<span v-for=\"(value, index) in values\" :key=\"value.id\" class=\"text option__title option__title_single\">{{ value.displayName }} <span v-if=\"index+1 < values.length\">, </span></span>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t\t<template slot=\"option\" slot-scope=\"props\">\n\t\t\t\t<img class=\"option__icon\" :src=\"props.option.entity.icon\">\n\t\t\t\t<span class=\"option__title\">{{ props.option.displayName }}</span>\n\t\t\t</template>\n\t\t</Multiselect>\n\t</div>\n</template>\n\n<script>\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\nimport { showWarning } from '@nextcloud/dialogs'\n\nexport default {\n\tname: 'Event',\n\tcomponents: {\n\t\tMultiselect,\n\t},\n\tprops: {\n\t\trule: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomputed: {\n\t\tentity() {\n\t\t\treturn this.$store.getters.getEntityForOperation(this.operation)\n\t\t},\n\t\toperation() {\n\t\t\treturn this.$store.getters.getOperationForRule(this.rule)\n\t\t},\n\t\tallEvents() {\n\t\t\treturn this.$store.getters.getEventsForOperation(this.operation)\n\t\t},\n\t\tcurrentEvent() {\n\t\t\treturn this.allEvents.filter(event => event.entity.id === this.rule.entity && this.rule.events.indexOf(event.eventName) !== -1)\n\t\t},\n\t},\n\tmethods: {\n\t\tupdateEvent(events) {\n\t\t\tif (events.length === 0) {\n\t\t\t\tshowWarning(t('workflowengine', 'At least one event must be selected'))\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst existingEntity = this.rule.entity\n\t\t\tconst newEntities = events.map(event => event.entity.id).filter((value, index, self) => self.indexOf(value) === index)\n\t\t\tlet newEntity = null\n\t\t\tif (newEntities.length > 1) {\n\t\t\t\tnewEntity = newEntities.filter(entity => entity !== existingEntity)[0]\n\t\t\t} else {\n\t\t\t\tnewEntity = newEntities[0]\n\t\t\t}\n\n\t\t\tthis.$set(this.rule, 'entity', newEntity)\n\t\t\tthis.$set(this.rule, 'events', events.filter(event => event.entity.id === newEntity).map(event => event.eventName))\n\t\t\tthis.$emit('update', this.rule)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t.event {\n\t\tmargin-bottom: 5px;\n\t}\n\t.isComplex {\n\t\timg {\n\t\t\tvertical-align: text-top;\n\t\t}\n\t\tspan {\n\t\t\tpadding-top: 2px;\n\t\t\tdisplay: inline-block;\n\t\t}\n\t}\n\t.multiselect {\n\t\twidth: 100%;\n\t\tmax-width: 550px;\n\t\tmargin-top: 4px;\n\t}\n\t.multiselect::v-deep .multiselect__single {\n\t\tdisplay: flex;\n\t}\n\t.multiselect:not(.multiselect--active)::v-deep .multiselect__tags {\n\t\tbackground-color: var(--color-main-background) !important;\n\t\tborder: 1px solid transparent;\n\t}\n\n\t.multiselect::v-deep .multiselect__tags {\n\t\tbackground-color: var(--color-main-background) !important;\n\t\theight: auto;\n\t\tmin-height: 34px;\n\t}\n\n\t.multiselect:not(.multiselect--disabled)::v-deep .multiselect__tags .multiselect__single {\n\t\tbackground-image: var(--icon-triangle-s-000);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: right center;\n\t}\n\n\tinput {\n\t\tborder: 1px solid transparent;\n\t}\n\n\t.option__title {\n\t\tmargin-left: 5px;\n\t\tcolor: var(--color-main-text);\n\t}\n\t.option__title_single {\n\t\tfont-weight: 900;\n\t}\n\n\t.option__icon {\n\t\twidth: 16px;\n\t\theight: 16px;\n\t}\n\n\t.eventlist img,\n\t.eventlist .text {\n\t\tvertical-align: middle;\n\t}\n</style>\n","\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!./Event.vue?vue&type=style&index=0&id=f3569276&scoped=true&lang=scss&\";\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!./Event.vue?vue&type=style&index=0&id=f3569276&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Event.vue?vue&type=template&id=f3569276&scoped=true&\"\nimport script from \"./Event.vue?vue&type=script&lang=js&\"\nexport * from \"./Event.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Event.vue?vue&type=style&index=0&id=f3569276&scoped=true&lang=scss&\"\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 \"f3569276\",\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:\"event\"},[(_vm.operation.isComplex && _vm.operation.fixedEntity !== '')?_c('div',{staticClass:\"isComplex\"},[_c('img',{staticClass:\"option__icon\",attrs:{\"src\":_vm.entity.icon}}),_vm._v(\" \"),_c('span',{staticClass:\"option__title option__title_single\"},[_vm._v(_vm._s(_vm.operation.triggerHint))])]):_c('Multiselect',{attrs:{\"value\":_vm.currentEvent,\"options\":_vm.allEvents,\"track-by\":\"id\",\"multiple\":true,\"auto-limit\":false,\"disabled\":_vm.allEvents.length <= 1},on:{\"input\":_vm.updateEvent},scopedSlots:_vm._u([{key:\"selection\",fn:function(ref){\nvar values = ref.values;\nvar isOpen = ref.isOpen;\nreturn [(values.length && !isOpen)?_c('div',{staticClass:\"eventlist\"},[_c('img',{staticClass:\"option__icon\",attrs:{\"src\":values[0].entity.icon}}),_vm._v(\" \"),_vm._l((values),function(value,index){return _c('span',{key:value.id,staticClass:\"text option__title option__title_single\"},[_vm._v(_vm._s(value.displayName)+\" \"),(index+1 < values.length)?_c('span',[_vm._v(\", \")]):_vm._e()])})],2):_vm._e()]}},{key:\"option\",fn:function(props){return [_c('img',{staticClass:\"option__icon\",attrs:{\"src\":props.option.entity.icon}}),_vm._v(\" \"),_c('span',{staticClass:\"option__title\"},[_vm._v(_vm._s(props.option.displayName))])]}}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Check.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!./Check.vue?vue&type=script&lang=js&\"","<template>\n\t<div v-click-outside=\"hideDelete\" class=\"check\" @click=\"showDelete\">\n\t\t<Multiselect ref=\"checkSelector\"\n\t\t\tv-model=\"currentOption\"\n\t\t\t:options=\"options\"\n\t\t\tlabel=\"name\"\n\t\t\ttrack-by=\"class\"\n\t\t\t:allow-empty=\"false\"\n\t\t\t:placeholder=\"t('workflowengine', 'Select a filter')\"\n\t\t\t@input=\"updateCheck\" />\n\t\t<Multiselect v-model=\"currentOperator\"\n\t\t\t:disabled=\"!currentOption\"\n\t\t\t:options=\"operators\"\n\t\t\tclass=\"comparator\"\n\t\t\tlabel=\"name\"\n\t\t\ttrack-by=\"operator\"\n\t\t\t:allow-empty=\"false\"\n\t\t\t:placeholder=\"t('workflowengine', 'Select a comparator')\"\n\t\t\t@input=\"updateCheck\" />\n\t\t<component :is=\"currentOption.component\"\n\t\t\tv-if=\"currentOperator && currentComponent\"\n\t\t\tv-model=\"check.value\"\n\t\t\t:disabled=\"!currentOption\"\n\t\t\t:check=\"check\"\n\t\t\tclass=\"option\"\n\t\t\t@input=\"updateCheck\"\n\t\t\t@valid=\"(valid=true) && validate()\"\n\t\t\t@invalid=\"!(valid=false) && validate()\" />\n\t\t<input v-else\n\t\t\tv-model=\"check.value\"\n\t\t\ttype=\"text\"\n\t\t\t:class=\"{ invalid: !valid }\"\n\t\t\t:disabled=\"!currentOption\"\n\t\t\t:placeholder=\"valuePlaceholder\"\n\t\t\tclass=\"option\"\n\t\t\t@input=\"updateCheck\">\n\t\t<Actions v-if=\"deleteVisible || !currentOption\">\n\t\t\t<ActionButton icon=\"icon-close\" @click=\"$emit('remove')\" />\n\t\t</Actions>\n\t</div>\n</template>\n\n<script>\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport ClickOutside from 'vue-click-outside'\n\nexport default {\n\tname: 'Check',\n\tcomponents: {\n\t\tActionButton,\n\t\tActions,\n\t\tMultiselect,\n\t},\n\tdirectives: {\n\t\tClickOutside,\n\t},\n\tprops: {\n\t\tcheck: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\trule: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tdeleteVisible: false,\n\t\t\tcurrentOption: null,\n\t\t\tcurrentOperator: null,\n\t\t\toptions: [],\n\t\t\tvalid: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tchecks() {\n\t\t\treturn this.$store.getters.getChecksForEntity(this.rule.entity)\n\t\t},\n\t\toperators() {\n\t\t\tif (!this.currentOption) { return [] }\n\t\t\tconst operators = this.checks[this.currentOption.class].operators\n\t\t\tif (typeof operators === 'function') {\n\t\t\t\treturn operators(this.check)\n\t\t\t}\n\t\t\treturn operators\n\t\t},\n\t\tcurrentComponent() {\n\t\t\tif (!this.currentOption) { return [] }\n\t\t\treturn this.checks[this.currentOption.class].component\n\t\t},\n\t\tvaluePlaceholder() {\n\t\t\tif (this.currentOption && this.currentOption.placeholder) {\n\t\t\t\treturn this.currentOption.placeholder(this.check)\n\t\t\t}\n\t\t\treturn ''\n\t\t},\n\t},\n\twatch: {\n\t\t'check.operator'() {\n\t\t\tthis.validate()\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.options = Object.values(this.checks)\n\t\tthis.currentOption = this.checks[this.check.class]\n\t\tthis.currentOperator = this.operators.find((operator) => operator.operator === this.check.operator)\n\n\t\tif (this.check.class === null) {\n\t\t\tthis.$nextTick(() => this.$refs.checkSelector.$el.focus())\n\t\t}\n\t\tthis.validate()\n\t},\n\tmethods: {\n\t\tshowDelete() {\n\t\t\tthis.deleteVisible = true\n\t\t},\n\t\thideDelete() {\n\t\t\tthis.deleteVisible = false\n\t\t},\n\t\tvalidate() {\n\t\t\tthis.valid = true\n\t\t\tif (this.currentOption && this.currentOption.validate) {\n\t\t\t\tthis.valid = !!this.currentOption.validate(this.check)\n\t\t\t}\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.check.invalid = !this.valid\n\t\t\tthis.$emit('validate', this.valid)\n\t\t},\n\t\tupdateCheck() {\n\t\t\tconst matchingOperator = this.operators.findIndex((operator) => this.check.operator === operator.operator)\n\t\t\tif (this.check.class !== this.currentOption.class || matchingOperator === -1) {\n\t\t\t\tthis.currentOperator = this.operators[0]\n\t\t\t}\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.check.class = this.currentOption.class\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.check.operator = this.currentOperator.operator\n\n\t\t\tthis.validate()\n\n\t\t\tthis.$emit('update', this.check)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t.check {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t\twidth: 100%;\n\t\tpadding-right: 20px;\n\t\t& > *:not(.close) {\n\t\t\twidth: 180px;\n\t\t}\n\t\t& > .comparator {\n\t\t\tmin-width: 130px;\n\t\t\twidth: 130px;\n\t\t}\n\t\t& > .option {\n\t\t\tmin-width: 230px;\n\t\t\twidth: 230px;\n\t\t}\n\t\t& > .multiselect,\n\t\t& > input[type=text] {\n\t\t\tmargin-right: 5px;\n\t\t\tmargin-bottom: 5px;\n\t\t}\n\n\t\t.multiselect::v-deep .multiselect__content-wrapper li>span,\n\t\t.multiselect::v-deep .multiselect__single {\n\t\t\tdisplay: block;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t}\n\t}\n\tinput[type=text] {\n\t\tmargin: 0;\n\t}\n\t::placeholder {\n\t\tfont-size: 10px;\n\t}\n\tbutton.action-item.action-item--single.icon-close {\n\t\theight: 44px;\n\t\twidth: 44px;\n\t\tmargin-top: -5px;\n\t\tmargin-bottom: -5px;\n\t}\n\t.invalid {\n\t\tborder: 1px solid var(--color-error) !important;\n\t}\n</style>\n","\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!./Check.vue?vue&type=style&index=0&id=70cc784d&scoped=true&lang=scss&\";\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!./Check.vue?vue&type=style&index=0&id=70cc784d&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Check.vue?vue&type=template&id=70cc784d&scoped=true&\"\nimport script from \"./Check.vue?vue&type=script&lang=js&\"\nexport * from \"./Check.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Check.vue?vue&type=style&index=0&id=70cc784d&scoped=true&lang=scss&\"\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 \"70cc784d\",\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',{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:(_vm.hideDelete),expression:\"hideDelete\"}],staticClass:\"check\",on:{\"click\":_vm.showDelete}},[_c('Multiselect',{ref:\"checkSelector\",attrs:{\"options\":_vm.options,\"label\":\"name\",\"track-by\":\"class\",\"allow-empty\":false,\"placeholder\":_vm.t('workflowengine', 'Select a filter')},on:{\"input\":_vm.updateCheck},model:{value:(_vm.currentOption),callback:function ($$v) {_vm.currentOption=$$v},expression:\"currentOption\"}}),_vm._v(\" \"),_c('Multiselect',{staticClass:\"comparator\",attrs:{\"disabled\":!_vm.currentOption,\"options\":_vm.operators,\"label\":\"name\",\"track-by\":\"operator\",\"allow-empty\":false,\"placeholder\":_vm.t('workflowengine', 'Select a comparator')},on:{\"input\":_vm.updateCheck},model:{value:(_vm.currentOperator),callback:function ($$v) {_vm.currentOperator=$$v},expression:\"currentOperator\"}}),_vm._v(\" \"),(_vm.currentOperator && _vm.currentComponent)?_c(_vm.currentOption.component,{tag:\"component\",staticClass:\"option\",attrs:{\"disabled\":!_vm.currentOption,\"check\":_vm.check},on:{\"input\":_vm.updateCheck,\"valid\":function($event){(_vm.valid=true) && _vm.validate()},\"invalid\":function($event){!(_vm.valid=false) && _vm.validate()}},model:{value:(_vm.check.value),callback:function ($$v) {_vm.$set(_vm.check, \"value\", $$v)},expression:\"check.value\"}}):_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.check.value),expression:\"check.value\"}],staticClass:\"option\",class:{ invalid: !_vm.valid },attrs:{\"type\":\"text\",\"disabled\":!_vm.currentOption,\"placeholder\":_vm.valuePlaceholder},domProps:{\"value\":(_vm.check.value)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.check, \"value\", $event.target.value)},_vm.updateCheck]}}),_vm._v(\" \"),(_vm.deleteVisible || !_vm.currentOption)?_c('Actions',[_c('ActionButton',{attrs:{\"icon\":\"icon-close\"},on:{\"click\":function($event){return _vm.$emit('remove')}}})],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Operation.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!./Operation.vue?vue&type=script&lang=js&\"","<template>\n\t<div class=\"actions__item\" :class=\"{'colored': colored}\" :style=\"{ backgroundColor: colored ? operation.color : 'transparent' }\">\n\t\t<div class=\"icon\" :class=\"operation.iconClass\" :style=\"{ backgroundImage: operation.iconClass ? '' : `url(${operation.icon})` }\" />\n\t\t<div class=\"actions__item__description\">\n\t\t\t<h3>{{ operation.name }}</h3>\n\t\t\t<small>{{ operation.description }}</small>\n\t\t\t<div>\n\t\t\t\t<button v-if=\"colored\">\n\t\t\t\t\t{{ t('workflowengine', 'Add new flow') }}\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"actions__item_options\">\n\t\t\t<slot />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tname: 'Operation',\n\tprops: {\n\t\toperation: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tcolored: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t@import \"./../styles/operation\";\n</style>\n","\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!./Operation.vue?vue&type=style&index=0&id=34495584&scoped=true&lang=scss&\";\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!./Operation.vue?vue&type=style&index=0&id=34495584&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Operation.vue?vue&type=template&id=34495584&scoped=true&\"\nimport script from \"./Operation.vue?vue&type=script&lang=js&\"\nexport * from \"./Operation.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Operation.vue?vue&type=style&index=0&id=34495584&scoped=true&lang=scss&\"\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 \"34495584\",\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:\"actions__item\",class:{'colored': _vm.colored},style:({ backgroundColor: _vm.colored ? _vm.operation.color : 'transparent' })},[_c('div',{staticClass:\"icon\",class:_vm.operation.iconClass,style:({ backgroundImage: _vm.operation.iconClass ? '' : (\"url(\" + (_vm.operation.icon) + \")\") })}),_vm._v(\" \"),_c('div',{staticClass:\"actions__item__description\"},[_c('h3',[_vm._v(_vm._s(_vm.operation.name))]),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.operation.description))]),_vm._v(\" \"),_c('div',[(_vm.colored)?_c('button',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('workflowengine', 'Add new flow'))+\"\\n\\t\\t\\t\")]):_vm._e()])]),_vm._v(\" \"),_c('div',{staticClass:\"actions__item_options\"},[_vm._t(\"default\")],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<div v-if=\"operation\" class=\"section rule\" :style=\"{ borderLeftColor: operation.color || '' }\">\n\t\t<div class=\"trigger\">\n\t\t\t<p>\n\t\t\t\t<span>{{ t('workflowengine', 'When') }}</span>\n\t\t\t\t<Event :rule=\"rule\" @update=\"updateRule\" />\n\t\t\t</p>\n\t\t\t<p v-for=\"(check, index) in rule.checks\" :key=\"index\">\n\t\t\t\t<span>{{ t('workflowengine', 'and') }}</span>\n\t\t\t\t<Check :check=\"check\"\n\t\t\t\t\t:rule=\"rule\"\n\t\t\t\t\t@update=\"updateRule\"\n\t\t\t\t\t@validate=\"validate\"\n\t\t\t\t\t@remove=\"removeCheck(check)\" />\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<span />\n\t\t\t\t<input v-if=\"lastCheckComplete\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclass=\"check--add\"\n\t\t\t\t\tvalue=\"Add a new filter\"\n\t\t\t\t\t@click=\"onAddFilter\">\n\t\t\t</p>\n\t\t</div>\n\t\t<div class=\"flow-icon icon-confirm\" />\n\t\t<div class=\"action\">\n\t\t\t<Operation :operation=\"operation\" :colored=\"false\">\n\t\t\t\t<component :is=\"operation.options\"\n\t\t\t\t\tv-if=\"operation.options\"\n\t\t\t\t\tv-model=\"rule.operation\"\n\t\t\t\t\t@input=\"updateOperation\" />\n\t\t\t</Operation>\n\t\t\t<div class=\"buttons\">\n\t\t\t\t<button class=\"status-button icon\"\n\t\t\t\t\t:class=\"ruleStatus.class\"\n\t\t\t\t\t@click=\"saveRule\">\n\t\t\t\t\t{{ ruleStatus.title }}\n\t\t\t\t</button>\n\t\t\t\t<button v-if=\"rule.id < -1 || dirty\" @click=\"cancelRule\">\n\t\t\t\t\t{{ t('workflowengine', 'Cancel') }}\n\t\t\t\t</button>\n\t\t\t\t<button v-else-if=\"!dirty\" @click=\"deleteRule\">\n\t\t\t\t\t{{ t('workflowengine', 'Delete') }}\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<p v-if=\"error\" class=\"error-message\">\n\t\t\t\t{{ error }}\n\t\t\t</p>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport Event from './Event'\nimport Check from './Check'\nimport Operation from './Operation'\n\nexport default {\n\tname: 'Rule',\n\tcomponents: {\n\t\tOperation, Check, Event, Actions, ActionButton,\n\t},\n\tdirectives: {\n\t\tTooltip,\n\t},\n\tprops: {\n\t\trule: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tediting: false,\n\t\t\tchecks: [],\n\t\t\terror: null,\n\t\t\tdirty: this.rule.id < 0,\n\t\t\toriginalRule: null,\n\t\t}\n\t},\n\tcomputed: {\n\t\toperation() {\n\t\t\treturn this.$store.getters.getOperationForRule(this.rule)\n\t\t},\n\t\truleStatus() {\n\t\t\tif (this.error || !this.rule.valid || this.rule.checks.length === 0 || this.rule.checks.some((check) => check.invalid === true)) {\n\t\t\t\treturn {\n\t\t\t\t\ttitle: t('workflowengine', 'The configuration is invalid'),\n\t\t\t\t\tclass: 'icon-close-white invalid',\n\t\t\t\t\ttooltip: { placement: 'bottom', show: true, content: this.error },\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!this.dirty) {\n\t\t\t\treturn { title: t('workflowengine', 'Active'), class: 'icon icon-checkmark' }\n\t\t\t}\n\t\t\treturn { title: t('workflowengine', 'Save'), class: 'icon-confirm-white primary' }\n\n\t\t},\n\t\tlastCheckComplete() {\n\t\t\tconst lastCheck = this.rule.checks[this.rule.checks.length - 1]\n\t\t\treturn typeof lastCheck === 'undefined' || lastCheck.class !== null\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.originalRule = JSON.parse(JSON.stringify(this.rule))\n\t},\n\tmethods: {\n\t\tasync updateOperation(operation) {\n\t\t\tthis.$set(this.rule, 'operation', operation)\n\t\t\tawait this.updateRule()\n\t\t},\n\t\tvalidate(state) {\n\t\t\tthis.error = null\n\t\t\tthis.$store.dispatch('updateRule', this.rule)\n\t\t},\n\t\tupdateRule() {\n\t\t\tif (!this.dirty) {\n\t\t\t\tthis.dirty = true\n\t\t\t}\n\n\t\t\tthis.error = null\n\t\t\tthis.$store.dispatch('updateRule', this.rule)\n\t\t},\n\t\tasync saveRule() {\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('pushUpdateRule', this.rule)\n\t\t\t\tthis.dirty = false\n\t\t\t\tthis.error = null\n\t\t\t\tthis.originalRule = JSON.parse(JSON.stringify(this.rule))\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error('Failed to save operation')\n\t\t\t\tthis.error = e.response.data.ocs.meta.message\n\t\t\t}\n\t\t},\n\t\tasync deleteRule() {\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('deleteRule', this.rule)\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error('Failed to delete operation')\n\t\t\t\tthis.error = e.response.data.ocs.meta.message\n\t\t\t}\n\t\t},\n\t\tcancelRule() {\n\t\t\tif (this.rule.id < 0) {\n\t\t\t\tthis.$store.dispatch('removeRule', this.rule)\n\t\t\t} else {\n\t\t\t\tthis.$store.dispatch('updateRule', this.originalRule)\n\t\t\t\tthis.originalRule = JSON.parse(JSON.stringify(this.rule))\n\t\t\t\tthis.dirty = false\n\t\t\t}\n\t\t},\n\n\t\tasync removeCheck(check) {\n\t\t\tconst index = this.rule.checks.findIndex(item => item === check)\n\t\t\tif (index > -1) {\n\t\t\t\tthis.$delete(this.rule.checks, index)\n\t\t\t}\n\t\t\tthis.$store.dispatch('updateRule', this.rule)\n\t\t},\n\n\t\tonAddFilter() {\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.rule.checks.push({ class: null, operator: null, value: '' })\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\tbutton.icon {\n\t\tpadding-left: 32px;\n\t\tbackground-position: 10px center;\n\t}\n\n\t.buttons {\n\t\tdisplay: block;\n\t\toverflow: hidden;\n\n\t\tbutton {\n\t\t\tfloat: right;\n\t\t\theight: 34px;\n\t\t}\n\t}\n\n\t.error-message {\n\t\tfloat: right;\n\t\tmargin-right: 10px;\n\t}\n\n\t.status-button {\n\t\ttransition: 0.5s ease all;\n\t\tdisplay: block;\n\t\tmargin: 3px 10px 3px auto;\n\t}\n\t.status-button.primary {\n\t\tpadding-left: 32px;\n\t\tbackground-position: 10px center;\n\t}\n\t.status-button:not(.primary) {\n\t\tbackground-color: var(--color-main-background);\n\t}\n\t.status-button.invalid {\n\t\tbackground-color: var(--color-warning);\n\t\tcolor: #fff;\n\t\tborder: none;\n\t}\n\t.status-button.icon-checkmark {\n\t\tborder: 1px solid var(--color-success);\n\t}\n\n\t.flow-icon {\n\t\twidth: 44px;\n\t}\n\n\t.rule {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t\tborder-left: 5px solid var(--color-primary-element);\n\n\t\t.trigger, .action {\n\t\t\tflex-grow: 1;\n\t\t\tmin-height: 100px;\n\t\t\tmax-width: 700px;\n\t\t}\n\t\t.action {\n\t\t\tmax-width: 400px;\n\t\t\tposition: relative;\n\t\t}\n\t\t.icon-confirm {\n\t\t\tbackground-position: right 27px;\n\t\t\tpadding-right: 20px;\n\t\t\tmargin-right: 20px;\n\t\t}\n\t}\n\t.trigger p, .action p {\n\t\tmin-height: 34px;\n\t\tdisplay: flex;\n\n\t\t& > span {\n\t\t\tmin-width: 50px;\n\t\t\ttext-align: right;\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\tpadding-right: 10px;\n\t\t\tpadding-top: 6px;\n\t\t}\n\t\t.multiselect {\n\t\t\tflex-grow: 1;\n\t\t\tmax-width: 300px;\n\t\t}\n\t}\n\t.trigger p:first-child span {\n\t\t\tpadding-top: 3px;\n\t}\n\n\t.check--add {\n\t\tbackground-position: 7px center;\n\t\tbackground-color: transparent;\n\t\tpadding-left: 6px;\n\t\tmargin: 0;\n\t\twidth: 180px;\n\t\tborder-radius: var(--border-radius);\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tfont-weight: normal;\n\t\ttext-align: left;\n\t\tfont-size: 1em;\n\t}\n\n\t@media (max-width:1400px) {\n\t\t.rule {\n\t\t\t&, .trigger, .action {\n\t\t\t\twidth: 100%;\n\t\t\t\tmax-width: 100%;\n\t\t\t}\n\t\t\t.flow-icon {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\t}\n\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Rule.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!./Rule.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!./Rule.vue?vue&type=style&index=0&id=225ba268&scoped=true&lang=scss&\";\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!./Rule.vue?vue&type=style&index=0&id=225ba268&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","<template>\n\t<div id=\"workflowengine\">\n\t\t<div class=\"section\">\n\t\t\t<h2>{{ t('workflowengine', 'Available flows') }}</h2>\n\n\t\t\t<p v-if=\"scope === 0\" class=\"settings-hint\">\n\t\t\t\t<a href=\"https://nextcloud.com/developer/\">{{ t('workflowengine', 'For details on how to write your own flow, check out the development documentation.') }}</a>\n\t\t\t</p>\n\n\t\t\t<transition-group name=\"slide\" tag=\"div\" class=\"actions\">\n\t\t\t\t<Operation v-for=\"operation in getMainOperations\"\n\t\t\t\t\t:key=\"operation.id\"\n\t\t\t\t\t:operation=\"operation\"\n\t\t\t\t\t@click.native=\"createNewRule(operation)\" />\n\n\t\t\t\t<a v-if=\"showAppStoreHint\"\n\t\t\t\t\t:key=\"'add'\"\n\t\t\t\t\t:href=\"appstoreUrl\"\n\t\t\t\t\tclass=\"actions__item colored more\">\n\t\t\t\t\t<div class=\"icon icon-add\" />\n\t\t\t\t\t<div class=\"actions__item__description\">\n\t\t\t\t\t\t<h3>{{ t('workflowengine', 'More flows') }}</h3>\n\t\t\t\t\t\t<small>{{ t('workflowengine', 'Browse the App Store') }}</small>\n\t\t\t\t\t</div>\n\t\t\t\t</a>\n\t\t\t</transition-group>\n\n\t\t\t<div v-if=\"hasMoreOperations\" class=\"actions__more\">\n\t\t\t\t<button class=\"icon\"\n\t\t\t\t\t:class=\"showMoreOperations ? 'icon-triangle-n' : 'icon-triangle-s'\"\n\t\t\t\t\t@click=\"showMoreOperations=!showMoreOperations\">\n\t\t\t\t\t{{ showMoreOperations ? t('workflowengine', 'Show less') : t('workflowengine', 'Show more') }}\n\t\t\t\t</button>\n\t\t\t</div>\n\n\t\t\t<h2 v-if=\"scope === 0\" class=\"configured-flows\">\n\t\t\t\t{{ t('workflowengine', 'Configured flows') }}\n\t\t\t</h2>\n\t\t\t<h2 v-else class=\"configured-flows\">\n\t\t\t\t{{ t('workflowengine', 'Your flows') }}\n\t\t\t</h2>\n\t\t</div>\n\n\t\t<transition-group v-if=\"rules.length > 0\" name=\"slide\">\n\t\t\t<Rule v-for=\"rule in rules\" :key=\"rule.id\" :rule=\"rule\" />\n\t\t</transition-group>\n\t</div>\n</template>\n\n<script>\nimport Rule from './Rule'\nimport Operation from './Operation'\nimport { mapGetters, mapState } from 'vuex'\nimport { generateUrl } from '@nextcloud/router'\n\nconst ACTION_LIMIT = 3\n\nexport default {\n\tname: 'Workflow',\n\tcomponents: {\n\t\tOperation,\n\t\tRule,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tshowMoreOperations: false,\n\t\t\tappstoreUrl: generateUrl('settings/apps/workflow'),\n\t\t}\n\t},\n\tcomputed: {\n\t\t...mapGetters({\n\t\t\trules: 'getRules',\n\t\t}),\n\t\t...mapState({\n\t\t\tappstoreEnabled: 'appstoreEnabled',\n\t\t\tscope: 'scope',\n\t\t\toperations: 'operations',\n\t\t}),\n\t\thasMoreOperations() {\n\t\t\treturn Object.keys(this.operations).length > ACTION_LIMIT\n\t\t},\n\t\tgetMainOperations() {\n\t\t\tif (this.showMoreOperations) {\n\t\t\t\treturn Object.values(this.operations)\n\t\t\t}\n\t\t\treturn Object.values(this.operations).slice(0, ACTION_LIMIT)\n\t\t},\n\t\tshowAppStoreHint() {\n\t\t\treturn this.scope === 0 && this.appstoreEnabled && OC.isUserAdmin()\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.$store.dispatch('fetchRules')\n\t},\n\tmethods: {\n\t\tcreateNewRule(operation) {\n\t\t\tthis.$store.dispatch('createNewRule', operation)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t#workflowengine {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\t.section {\n\t\tmax-width: 100vw;\n\n\t\th2.configured-flows {\n\t\t\tmargin-top: 50px;\n\t\t\tmargin-bottom: 0;\n\t\t}\n\t}\n\t.actions {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t\tmax-width: 1200px;\n\t\t.actions__item {\n\t\t\tmax-width: 280px;\n\t\t\tflex-basis: 250px;\n\t\t}\n\t}\n\n\tbutton.icon {\n\t\tpadding-left: 32px;\n\t\tbackground-position: 10px center;\n\t}\n\n\t.slide-enter-active {\n\t\t-moz-transition-duration: 0.3s;\n\t\t-webkit-transition-duration: 0.3s;\n\t\t-o-transition-duration: 0.3s;\n\t\ttransition-duration: 0.3s;\n\t\t-moz-transition-timing-function: ease-in;\n\t\t-webkit-transition-timing-function: ease-in;\n\t\t-o-transition-timing-function: ease-in;\n\t\ttransition-timing-function: ease-in;\n\t}\n\n\t.slide-leave-active {\n\t\t-moz-transition-duration: 0.3s;\n\t\t-webkit-transition-duration: 0.3s;\n\t\t-o-transition-duration: 0.3s;\n\t\ttransition-duration: 0.3s;\n\t\t-moz-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\t\t-webkit-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\t\t-o-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\t\ttransition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\t}\n\n\t.slide-enter-to, .slide-leave {\n\t\tmax-height: 500px;\n\t\toverflow: hidden;\n\t}\n\n\t.slide-enter, .slide-leave-to {\n\t\toverflow: hidden;\n\t\tmax-height: 0;\n\t\tpadding-top: 0;\n\t\tpadding-bottom: 0;\n\t}\n\n\t@import \"./../styles/operation\";\n\n\t.actions__item.more {\n\t\tbackground-color: var(--color-background-dark);\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Workflow.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!./Workflow.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Rule.vue?vue&type=template&id=225ba268&scoped=true&\"\nimport script from \"./Rule.vue?vue&type=script&lang=js&\"\nexport * from \"./Rule.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Rule.vue?vue&type=style&index=0&id=225ba268&scoped=true&lang=scss&\"\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 \"225ba268\",\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 (_vm.operation)?_c('div',{staticClass:\"section rule\",style:({ borderLeftColor: _vm.operation.color || '' })},[_c('div',{staticClass:\"trigger\"},[_c('p',[_c('span',[_vm._v(_vm._s(_vm.t('workflowengine', 'When')))]),_vm._v(\" \"),_c('Event',{attrs:{\"rule\":_vm.rule},on:{\"update\":_vm.updateRule}})],1),_vm._v(\" \"),_vm._l((_vm.rule.checks),function(check,index){return _c('p',{key:index},[_c('span',[_vm._v(_vm._s(_vm.t('workflowengine', 'and')))]),_vm._v(\" \"),_c('Check',{attrs:{\"check\":check,\"rule\":_vm.rule},on:{\"update\":_vm.updateRule,\"validate\":_vm.validate,\"remove\":function($event){return _vm.removeCheck(check)}}})],1)}),_vm._v(\" \"),_c('p',[_c('span'),_vm._v(\" \"),(_vm.lastCheckComplete)?_c('input',{staticClass:\"check--add\",attrs:{\"type\":\"button\",\"value\":\"Add a new filter\"},on:{\"click\":_vm.onAddFilter}}):_vm._e()])],2),_vm._v(\" \"),_c('div',{staticClass:\"flow-icon icon-confirm\"}),_vm._v(\" \"),_c('div',{staticClass:\"action\"},[_c('Operation',{attrs:{\"operation\":_vm.operation,\"colored\":false}},[(_vm.operation.options)?_c(_vm.operation.options,{tag:\"component\",on:{\"input\":_vm.updateOperation},model:{value:(_vm.rule.operation),callback:function ($$v) {_vm.$set(_vm.rule, \"operation\", $$v)},expression:\"rule.operation\"}}):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"buttons\"},[_c('button',{staticClass:\"status-button icon\",class:_vm.ruleStatus.class,on:{\"click\":_vm.saveRule}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.ruleStatus.title)+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),(_vm.rule.id < -1 || _vm.dirty)?_c('button',{on:{\"click\":_vm.cancelRule}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('workflowengine', 'Cancel'))+\"\\n\\t\\t\\t\")]):(!_vm.dirty)?_c('button',{on:{\"click\":_vm.deleteRule}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('workflowengine', 'Delete'))+\"\\n\\t\\t\\t\")]):_vm._e()]),_vm._v(\" \"),(_vm.error)?_c('p',{staticClass:\"error-message\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.error)+\"\\n\\t\\t\")]):_vm._e()],1)]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\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!./Workflow.vue?vue&type=style&index=0&id=7b3e4a56&scoped=true&lang=scss&\";\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!./Workflow.vue?vue&type=style&index=0&id=7b3e4a56&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Workflow.vue?vue&type=template&id=7b3e4a56&scoped=true&\"\nimport script from \"./Workflow.vue?vue&type=script&lang=js&\"\nexport * from \"./Workflow.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Workflow.vue?vue&type=style&index=0&id=7b3e4a56&scoped=true&lang=scss&\"\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 \"7b3e4a56\",\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',{attrs:{\"id\":\"workflowengine\"}},[_c('div',{staticClass:\"section\"},[_c('h2',[_vm._v(_vm._s(_vm.t('workflowengine', 'Available flows')))]),_vm._v(\" \"),(_vm.scope === 0)?_c('p',{staticClass:\"settings-hint\"},[_c('a',{attrs:{\"href\":\"https://nextcloud.com/developer/\"}},[_vm._v(_vm._s(_vm.t('workflowengine', 'For details on how to write your own flow, check out the development documentation.')))])]):_vm._e(),_vm._v(\" \"),_c('transition-group',{staticClass:\"actions\",attrs:{\"name\":\"slide\",\"tag\":\"div\"}},[_vm._l((_vm.getMainOperations),function(operation){return _c('Operation',{key:operation.id,attrs:{\"operation\":operation},nativeOn:{\"click\":function($event){return _vm.createNewRule(operation)}}})}),_vm._v(\" \"),(_vm.showAppStoreHint)?_c('a',{key:'add',staticClass:\"actions__item colored more\",attrs:{\"href\":_vm.appstoreUrl}},[_c('div',{staticClass:\"icon icon-add\"}),_vm._v(\" \"),_c('div',{staticClass:\"actions__item__description\"},[_c('h3',[_vm._v(_vm._s(_vm.t('workflowengine', 'More flows')))]),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.t('workflowengine', 'Browse the App Store')))])])]):_vm._e()],2),_vm._v(\" \"),(_vm.hasMoreOperations)?_c('div',{staticClass:\"actions__more\"},[_c('button',{staticClass:\"icon\",class:_vm.showMoreOperations ? 'icon-triangle-n' : 'icon-triangle-s',on:{\"click\":function($event){_vm.showMoreOperations=!_vm.showMoreOperations}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.showMoreOperations ? _vm.t('workflowengine', 'Show less') : _vm.t('workflowengine', 'Show more'))+\"\\n\\t\\t\\t\")])]):_vm._e(),_vm._v(\" \"),(_vm.scope === 0)?_c('h2',{staticClass:\"configured-flows\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('workflowengine', 'Configured flows'))+\"\\n\\t\\t\")]):_c('h2',{staticClass:\"configured-flows\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('workflowengine', 'Your flows'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),(_vm.rules.length > 0)?_c('transition-group',{attrs:{\"name\":\"slide\"}},_vm._l((_vm.rules),function(rule){return _c('Rule',{key:rule.id,attrs:{\"rule\":rule}})}),1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nconst regexRegex = /^\\/(.*)\\/([gui]{0,3})$/\nconst regexIPv4 = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\/(3[0-2]|[1-2][0-9]|[1-9])$/\nconst regexIPv6 = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9])$/\n\nconst validateRegex = function(string) {\n\tif (!string) {\n\t\treturn false\n\t}\n\treturn regexRegex.exec(string) !== null\n}\n\nconst validateIPv4 = function(string) {\n\tif (!string) {\n\t\treturn false\n\t}\n\treturn regexIPv4.exec(string) !== null\n}\n\nconst validateIPv6 = function(string) {\n\tif (!string) {\n\t\treturn false\n\t}\n\treturn regexIPv6.exec(string) !== null\n}\n\nconst stringValidator = (check) => {\n\tif (check.operator === 'matches' || check.operator === '!matches') {\n\t\treturn validateRegex(check.value)\n\t}\n\treturn true\n}\n\nexport { validateRegex, stringValidator, validateIPv4, validateIPv6 }\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nconst valueMixin = {\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tcheck: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => { return {} },\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tnewValue: '',\n\t\t}\n\t},\n\twatch: {\n\t\tvalue: {\n\t\t\timmediate: true,\n\t\t\thandler(value) {\n\t\t\t\tthis.updateInternalValue(value)\n\t\t\t},\n\t\t},\n\t},\n\tmethods: {\n\t\tupdateInternalValue(value) {\n\t\t\tthis.newValue = value\n\t\t},\n\t},\n}\n\nexport default valueMixin\n","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<div>\n\t\t<Multiselect :value=\"currentValue\"\n\t\t\t:placeholder=\"t('workflowengine', 'Select a file type')\"\n\t\t\tlabel=\"label\"\n\t\t\ttrack-by=\"pattern\"\n\t\t\t:options=\"options\"\n\t\t\t:multiple=\"false\"\n\t\t\t:tagging=\"false\"\n\t\t\t@input=\"setValue\">\n\t\t\t<template slot=\"singleLabel\" slot-scope=\"props\">\n\t\t\t\t<span v-if=\"props.option.icon\" class=\"option__icon\" :class=\"props.option.icon\" />\n\t\t\t\t<img v-else :src=\"props.option.iconUrl\">\n\t\t\t\t<span class=\"option__title option__title_single\">{{ props.option.label }}</span>\n\t\t\t</template>\n\t\t\t<template slot=\"option\" slot-scope=\"props\">\n\t\t\t\t<span v-if=\"props.option.icon\" class=\"option__icon\" :class=\"props.option.icon\" />\n\t\t\t\t<img v-else :src=\"props.option.iconUrl\">\n\t\t\t\t<span class=\"option__title\">{{ props.option.label }}</span>\n\t\t\t</template>\n\t\t</Multiselect>\n\t\t<input v-if=\"!isPredefined\"\n\t\t\ttype=\"text\"\n\t\t\t:value=\"currentValue.pattern\"\n\t\t\t:placeholder=\"t('workflowengine', 'e.g. httpd/unix-directory')\"\n\t\t\t@input=\"updateCustom\">\n\t</div>\n</template>\n\n<script>\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\nimport valueMixin from './../../mixins/valueMixin'\nimport { imagePath } from '@nextcloud/router'\n\nexport default {\n\tname: 'FileMimeType',\n\tcomponents: {\n\t\tMultiselect,\n\t},\n\tmixins: [\n\t\tvalueMixin,\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tpredefinedTypes: [\n\t\t\t\t{\n\t\t\t\t\ticon: 'icon-folder',\n\t\t\t\t\tlabel: t('workflowengine', 'Folder'),\n\t\t\t\t\tpattern: 'httpd/unix-directory',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ticon: 'icon-picture',\n\t\t\t\t\tlabel: t('workflowengine', 'Images'),\n\t\t\t\t\tpattern: '/image\\\\/.*/',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ticonUrl: imagePath('core', 'filetypes/x-office-document'),\n\t\t\t\t\tlabel: t('workflowengine', 'Office documents'),\n\t\t\t\t\tpattern: '/(vnd\\\\.(ms-|openxmlformats-|oasis\\\\.opendocument).*)$/',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ticonUrl: imagePath('core', 'filetypes/application-pdf'),\n\t\t\t\t\tlabel: t('workflowengine', 'PDF documents'),\n\t\t\t\t\tpattern: 'application/pdf',\n\t\t\t\t},\n\t\t\t],\n\t\t}\n\t},\n\tcomputed: {\n\t\toptions() {\n\t\t\treturn [...this.predefinedTypes, this.customValue]\n\t\t},\n\t\tisPredefined() {\n\t\t\tconst matchingPredefined = this.predefinedTypes.find((type) => this.newValue === type.pattern)\n\t\t\tif (matchingPredefined) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\tcustomValue() {\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom mimetype'),\n\t\t\t\tpattern: '',\n\t\t\t}\n\t\t},\n\t\tcurrentValue() {\n\t\t\tconst matchingPredefined = this.predefinedTypes.find((type) => this.newValue === type.pattern)\n\t\t\tif (matchingPredefined) {\n\t\t\t\treturn matchingPredefined\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom mimetype'),\n\t\t\t\tpattern: this.newValue,\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\tvalidateRegex(string) {\n\t\t\tconst regexRegex = /^\\/(.*)\\/([gui]{0,3})$/\n\t\t\tconst result = regexRegex.exec(string)\n\t\t\treturn result !== null\n\t\t},\n\t\tsetValue(value) {\n\t\t\tif (value !== null) {\n\t\t\t\tthis.newValue = value.pattern\n\t\t\t\tthis.$emit('input', this.newValue)\n\t\t\t}\n\t\t},\n\t\tupdateCustom(event) {\n\t\t\tthis.newValue = event.target.value\n\t\t\tthis.$emit('input', this.newValue)\n\t\t},\n\t},\n}\n</script>\n<style scoped>\n\t.multiselect, input[type='text'] {\n\t\twidth: 100%;\n\t}\n\t.multiselect >>> .multiselect__content-wrapper li>span,\n\t.multiselect >>> .multiselect__single {\n\t\tdisplay: flex;\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileMimeType.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!./FileMimeType.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/vue-loader/lib/index.js??vue-loader-options!./FileMimeType.vue?vue&type=style&index=0&id=8c011724&scoped=true&lang=css&\";\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/vue-loader/lib/index.js??vue-loader-options!./FileMimeType.vue?vue&type=style&index=0&id=8c011724&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileMimeType.vue?vue&type=template&id=8c011724&scoped=true&\"\nimport script from \"./FileMimeType.vue?vue&type=script&lang=js&\"\nexport * from \"./FileMimeType.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FileMimeType.vue?vue&type=style&index=0&id=8c011724&scoped=true&lang=css&\"\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 \"8c011724\",\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',[_c('Multiselect',{attrs:{\"value\":_vm.currentValue,\"placeholder\":_vm.t('workflowengine', 'Select a file type'),\"label\":\"label\",\"track-by\":\"pattern\",\"options\":_vm.options,\"multiple\":false,\"tagging\":false},on:{\"input\":_vm.setValue},scopedSlots:_vm._u([{key:\"singleLabel\",fn:function(props){return [(props.option.icon)?_c('span',{staticClass:\"option__icon\",class:props.option.icon}):_c('img',{attrs:{\"src\":props.option.iconUrl}}),_vm._v(\" \"),_c('span',{staticClass:\"option__title option__title_single\"},[_vm._v(_vm._s(props.option.label))])]}},{key:\"option\",fn:function(props){return [(props.option.icon)?_c('span',{staticClass:\"option__icon\",class:props.option.icon}):_c('img',{attrs:{\"src\":props.option.iconUrl}}),_vm._v(\" \"),_c('span',{staticClass:\"option__title\"},[_vm._v(_vm._s(props.option.label))])]}}])}),_vm._v(\" \"),(!_vm.isPredefined)?_c('input',{attrs:{\"type\":\"text\",\"placeholder\":_vm.t('workflowengine', 'e.g. httpd/unix-directory')},domProps:{\"value\":_vm.currentValue.pattern},on:{\"input\":_vm.updateCustom}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport axios from '@nextcloud/axios'\nimport { generateRemoteUrl } from '@nextcloud/router'\n\nconst xmlToJson = (xml) => {\n\tlet obj = {}\n\n\tif (xml.nodeType === 1) {\n\t\tif (xml.attributes.length > 0) {\n\t\t\tobj['@attributes'] = {}\n\t\t\tfor (let j = 0; j < xml.attributes.length; j++) {\n\t\t\t\tconst attribute = xml.attributes.item(j)\n\t\t\t\tobj['@attributes'][attribute.nodeName] = attribute.nodeValue\n\t\t\t}\n\t\t}\n\t} else if (xml.nodeType === 3) {\n\t\tobj = xml.nodeValue\n\t}\n\n\tif (xml.hasChildNodes()) {\n\t\tfor (let i = 0; i < xml.childNodes.length; i++) {\n\t\t\tconst item = xml.childNodes.item(i)\n\t\t\tconst nodeName = item.nodeName\n\t\t\tif (typeof (obj[nodeName]) === 'undefined') {\n\t\t\t\tobj[nodeName] = xmlToJson(item)\n\t\t\t} else {\n\t\t\t\tif (typeof obj[nodeName].push === 'undefined') {\n\t\t\t\t\tconst old = obj[nodeName]\n\t\t\t\t\tobj[nodeName] = []\n\t\t\t\t\tobj[nodeName].push(old)\n\t\t\t\t}\n\t\t\t\tobj[nodeName].push(xmlToJson(item))\n\t\t\t}\n\t\t}\n\t}\n\treturn obj\n}\n\nconst parseXml = (xml) => {\n\tlet dom = null\n\ttry {\n\t\tdom = (new DOMParser()).parseFromString(xml, 'text/xml')\n\t} catch (e) {\n\t\tconsole.error('Failed to parse xml document', e)\n\t}\n\treturn dom\n}\n\nconst xmlToTagList = (xml) => {\n\tconst json = xmlToJson(parseXml(xml))\n\tconst list = json['d:multistatus']['d:response']\n\tconst result = []\n\tfor (const index in list) {\n\t\tconst tag = list[index]['d:propstat']\n\n\t\tif (tag['d:status']['#text'] !== 'HTTP/1.1 200 OK') {\n\t\t\tcontinue\n\t\t}\n\t\tresult.push({\n\t\t\tid: tag['d:prop']['oc:id']['#text'],\n\t\t\tdisplayName: tag['d:prop']['oc:display-name']['#text'],\n\t\t\tcanAssign: tag['d:prop']['oc:can-assign']['#text'] === 'true',\n\t\t\tuserAssignable: tag['d:prop']['oc:user-assignable']['#text'] === 'true',\n\t\t\tuserVisible: tag['d:prop']['oc:user-visible']['#text'] === 'true',\n\t\t})\n\t}\n\treturn result\n}\n\nconst searchTags = function() {\n\treturn axios({\n\t\tmethod: 'PROPFIND',\n\t\turl: generateRemoteUrl('dav') + '/systemtags/',\n\t\tdata: `<?xml version=\"1.0\"?>\n\t\t\t\t\t<d:propfind xmlns:d=\"DAV:\" xmlns:oc=\"http://owncloud.org/ns\">\n\t\t\t\t\t <d:prop>\n\t\t\t\t\t\t<oc:id />\n\t\t\t\t\t\t<oc:display-name />\n\t\t\t\t\t\t<oc:user-visible />\n\t\t\t\t\t\t<oc:user-assignable />\n\t\t\t\t\t\t<oc:can-assign />\n\t\t\t\t\t </d:prop>\n\t\t\t\t\t</d:propfind>`,\n\t}).then((response) => {\n\t\treturn xmlToTagList(response.data)\n\t})\n}\n\nexport {\n\tsearchTags,\n}\n","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<Multiselect v-model=\"inputValObjects\"\n\t\t:options=\"tags\"\n\t\t:options-limit=\"5\"\n\t\t:placeholder=\"label\"\n\t\ttrack-by=\"id\"\n\t\t:custom-label=\"tagLabel\"\n\t\tclass=\"multiselect-vue\"\n\t\t:multiple=\"multiple\"\n\t\t:close-on-select=\"false\"\n\t\t:tag-width=\"60\"\n\t\t:disabled=\"disabled\"\n\t\t@input=\"update\">\n\t\t<span slot=\"noResult\">{{ t('core', 'No results') }}</span>\n\t\t<template #option=\"scope\">\n\t\t\t{{ tagLabel(scope.option) }}\n\t\t</template>\n\t</multiselect>\n</template>\n\n<script>\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\nimport { searchTags } from './api'\n\nlet uuid = 0\nexport default {\n\tname: 'MultiselectTag',\n\tcomponents: {\n\t\tMultiselect,\n\t},\n\tprops: {\n\t\tlabel: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tvalue: {\n\t\t\ttype: [String, Array],\n\t\t\tdefault: null,\n\t\t},\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tmultiple: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tinputValObjects: [],\n\t\t\ttags: [],\n\t\t}\n\t},\n\tcomputed: {\n\t\tid() {\n\t\t\treturn 'settings-input-text-' + this.uuid\n\t\t},\n\t},\n\twatch: {\n\t\tvalue(newVal) {\n\t\t\tthis.inputValObjects = this.getValueObject()\n\t\t},\n\t},\n\tbeforeCreate() {\n\t\tthis.uuid = uuid.toString()\n\t\tuuid += 1\n\t\tsearchTags().then((result) => {\n\t\t\tthis.tags = result\n\t\t\tthis.inputValObjects = this.getValueObject()\n\t\t}).catch(console.error.bind(this))\n\t},\n\tmethods: {\n\t\tgetValueObject() {\n\t\t\tif (this.tags.length === 0) {\n\t\t\t\treturn []\n\t\t\t}\n\t\t\tif (this.multiple) {\n\t\t\t\treturn this.value.filter((tag) => tag !== '').map(\n\t\t\t\t\t(id) => this.tags.find((tag2) => tag2.id === id)\n\t\t\t\t)\n\t\t\t} else {\n\t\t\t\treturn this.tags.find((tag) => tag.id === this.value)\n\t\t\t}\n\t\t},\n\t\tupdate() {\n\t\t\tif (this.multiple) {\n\t\t\t\tthis.$emit('input', this.inputValObjects.map((element) => element.id))\n\t\t\t} else {\n\t\t\t\tif (this.inputValObjects === null) {\n\t\t\t\t\tthis.$emit('input', '')\n\t\t\t\t} else {\n\t\t\t\t\tthis.$emit('input', this.inputValObjects.id)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ttagLabel({ displayName, userVisible, userAssignable }) {\n\t\t\tif (userVisible === false) {\n\t\t\t\treturn t('systemtags', '%s (invisible)').replace('%s', displayName)\n\t\t\t}\n\t\t\tif (userAssignable === false) {\n\t\t\t\treturn t('systemtags', '%s (restricted)').replace('%s', displayName)\n\t\t\t}\n\t\t\treturn displayName\n\t\t},\n\t},\n}\n</script>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MultiselectTag.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!./MultiselectTag.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileSystemTag.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!./FileSystemTag.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<MultiselectTag v-model=\"newValue\"\n\t\t:multiple=\"false\"\n\t\t:label=\"t('workflowengine', 'Select a tag')\"\n\t\t@input=\"update\" />\n</template>\n\n<script>\nimport { MultiselectTag } from './MultiselectTag'\n\nexport default {\n\tname: 'FileSystemTag',\n\tcomponents: {\n\t\tMultiselectTag,\n\t},\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tnewValue: [],\n\t\t}\n\t},\n\twatch: {\n\t\tvalue() {\n\t\t\tthis.updateValue()\n\t\t},\n\t},\n\tbeforeMount() {\n\t\tthis.updateValue()\n\t},\n\tmethods: {\n\t\tupdateValue() {\n\t\t\tif (this.value !== '') {\n\t\t\t\tthis.newValue = this.value\n\t\t\t} else {\n\t\t\t\tthis.newValue = null\n\t\t\t}\n\t\t},\n\t\tupdate() {\n\t\t\tthis.$emit('input', this.newValue || '')\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\n</style>\n","import { render, staticRenderFns } from \"./MultiselectTag.vue?vue&type=template&id=73cc22e8&\"\nimport script from \"./MultiselectTag.vue?vue&type=script&lang=js&\"\nexport * from \"./MultiselectTag.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Multiselect',{staticClass:\"multiselect-vue\",attrs:{\"options\":_vm.tags,\"options-limit\":5,\"placeholder\":_vm.label,\"track-by\":\"id\",\"custom-label\":_vm.tagLabel,\"multiple\":_vm.multiple,\"close-on-select\":false,\"tag-width\":60,\"disabled\":_vm.disabled},on:{\"input\":_vm.update},scopedSlots:_vm._u([{key:\"option\",fn:function(scope){return [_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.tagLabel(scope.option))+\"\\n\\t\")]}}]),model:{value:(_vm.inputValObjects),callback:function ($$v) {_vm.inputValObjects=$$v},expression:\"inputValObjects\"}},[_c('span',{attrs:{\"slot\":\"noResult\"},slot:\"noResult\"},[_vm._v(_vm._s(_vm.t('core', 'No results')))])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./FileSystemTag.vue?vue&type=template&id=31f5522d&scoped=true&\"\nimport script from \"./FileSystemTag.vue?vue&type=script&lang=js&\"\nexport * from \"./FileSystemTag.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"31f5522d\",\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('MultiselectTag',{attrs:{\"multiple\":false,\"label\":_vm.t('workflowengine', 'Select a tag')},on:{\"input\":_vm.update},model:{value:(_vm.newValue),callback:function ($$v) {_vm.newValue=$$v},expression:\"newValue\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nimport { stringValidator, validateIPv4, validateIPv6 } from '../../helpers/validators'\nimport FileMimeType from './FileMimeType'\nimport FileSystemTag from './FileSystemTag'\n\nconst stringOrRegexOperators = () => {\n\treturn [\n\t\t{ operator: 'matches', name: t('workflowengine', 'matches') },\n\t\t{ operator: '!matches', name: t('workflowengine', 'does not match') },\n\t\t{ operator: 'is', name: t('workflowengine', 'is') },\n\t\t{ operator: '!is', name: t('workflowengine', 'is not') },\n\t]\n}\n\nconst FileChecks = [\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\FileName',\n\t\tname: t('workflowengine', 'File name'),\n\t\toperators: stringOrRegexOperators,\n\t\tplaceholder: (check) => {\n\t\t\tif (check.operator === 'matches' || check.operator === '!matches') {\n\t\t\t\treturn '/^dummy-.+$/i'\n\t\t\t}\n\t\t\treturn 'filename.txt'\n\t\t},\n\t\tvalidate: stringValidator,\n\t},\n\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\FileMimeType',\n\t\tname: t('workflowengine', 'File MIME type'),\n\t\toperators: stringOrRegexOperators,\n\t\tcomponent: FileMimeType,\n\t},\n\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\FileSize',\n\t\tname: t('workflowengine', 'File size (upload)'),\n\t\toperators: [\n\t\t\t{ operator: 'less', name: t('workflowengine', 'less') },\n\t\t\t{ operator: '!greater', name: t('workflowengine', 'less or equals') },\n\t\t\t{ operator: '!less', name: t('workflowengine', 'greater or equals') },\n\t\t\t{ operator: 'greater', name: t('workflowengine', 'greater') },\n\t\t],\n\t\tplaceholder: (check) => '5 MB',\n\t\tvalidate: (check) => check.value ? check.value.match(/^[0-9]+[ ]?[kmgt]?b$/i) !== null : false,\n\t},\n\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\RequestRemoteAddress',\n\t\tname: t('workflowengine', 'Request remote address'),\n\t\toperators: [\n\t\t\t{ operator: 'matchesIPv4', name: t('workflowengine', 'matches IPv4') },\n\t\t\t{ operator: '!matchesIPv4', name: t('workflowengine', 'does not match IPv4') },\n\t\t\t{ operator: 'matchesIPv6', name: t('workflowengine', 'matches IPv6') },\n\t\t\t{ operator: '!matchesIPv6', name: t('workflowengine', 'does not match IPv6') },\n\t\t],\n\t\tplaceholder: (check) => {\n\t\t\tif (check.operator === 'matchesIPv6' || check.operator === '!matchesIPv6') {\n\t\t\t\treturn '::1/128'\n\t\t\t}\n\t\t\treturn '127.0.0.1/32'\n\t\t},\n\t\tvalidate: (check) => {\n\t\t\tif (check.operator === 'matchesIPv6' || check.operator === '!matchesIPv6') {\n\t\t\t\treturn validateIPv6(check.value)\n\t\t\t}\n\t\t\treturn validateIPv4(check.value)\n\t\t},\n\t},\n\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\FileSystemTags',\n\t\tname: t('workflowengine', 'File system tag'),\n\t\toperators: [\n\t\t\t{ operator: 'is', name: t('workflowengine', 'is tagged with') },\n\t\t\t{ operator: '!is', name: t('workflowengine', 'is not tagged with') },\n\t\t],\n\t\tcomponent: FileSystemTag,\n\t},\n]\n\nexport default FileChecks\n","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<div>\n\t\t<Multiselect :value=\"currentValue\"\n\t\t\t:placeholder=\"t('workflowengine', 'Select a user agent')\"\n\t\t\tlabel=\"label\"\n\t\t\ttrack-by=\"pattern\"\n\t\t\t:options=\"options\"\n\t\t\t:multiple=\"false\"\n\t\t\t:tagging=\"false\"\n\t\t\t@input=\"setValue\">\n\t\t\t<template slot=\"singleLabel\" slot-scope=\"props\">\n\t\t\t\t<span class=\"option__icon\" :class=\"props.option.icon\" />\n\t\t\t\t<!-- v-html can be used here as t() always passes our translated strings though DOMPurify.sanitize -->\n\t\t\t\t<!-- eslint-disable-next-line vue/no-v-html -->\n\t\t\t\t<span class=\"option__title option__title_single\" v-html=\"props.option.label\" />\n\t\t\t</template>\n\t\t\t<template slot=\"option\" slot-scope=\"props\">\n\t\t\t\t<span class=\"option__icon\" :class=\"props.option.icon\" />\n\t\t\t\t<!-- eslint-disable-next-line vue/no-v-html -->\n\t\t\t\t<span v-if=\"props.option.$groupLabel\" class=\"option__title\" v-html=\"props.option.$groupLabel\" />\n\t\t\t\t<!-- eslint-disable-next-line vue/no-v-html -->\n\t\t\t\t<span v-else class=\"option__title\" v-html=\"props.option.label\" />\n\t\t\t</template>\n\t\t</Multiselect>\n\t\t<input v-if=\"!isPredefined\"\n\t\t\ttype=\"text\"\n\t\t\t:value=\"currentValue.pattern\"\n\t\t\t@input=\"updateCustom\">\n\t</div>\n</template>\n\n<script>\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\nimport valueMixin from '../../mixins/valueMixin'\n\nexport default {\n\tname: 'RequestUserAgent',\n\tcomponents: {\n\t\tMultiselect,\n\t},\n\tmixins: [\n\t\tvalueMixin,\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tnewValue: '',\n\t\t\tpredefinedTypes: [\n\t\t\t\t{ pattern: 'android', label: t('workflowengine', 'Android client'), icon: 'icon-phone' },\n\t\t\t\t{ pattern: 'ios', label: t('workflowengine', 'iOS client'), icon: 'icon-phone' },\n\t\t\t\t{ pattern: 'desktop', label: t('workflowengine', 'Desktop client'), icon: 'icon-desktop' },\n\t\t\t\t{ pattern: 'mail', label: t('workflowengine', 'Thunderbird & Outlook addons'), icon: 'icon-mail' },\n\t\t\t],\n\t\t}\n\t},\n\tcomputed: {\n\t\toptions() {\n\t\t\treturn [...this.predefinedTypes, this.customValue]\n\t\t},\n\t\tmatchingPredefined() {\n\t\t\treturn this.predefinedTypes\n\t\t\t\t.find((type) => this.newValue === type.pattern)\n\t\t},\n\t\tisPredefined() {\n\t\t\treturn !!this.matchingPredefined\n\t\t},\n\t\tcustomValue() {\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom user agent'),\n\t\t\t\tpattern: '',\n\t\t\t}\n\t\t},\n\t\tcurrentValue() {\n\t\t\tif (this.matchingPredefined) {\n\t\t\t\treturn this.matchingPredefined\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom user agent'),\n\t\t\t\tpattern: this.newValue,\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\tvalidateRegex(string) {\n\t\t\tconst regexRegex = /^\\/(.*)\\/([gui]{0,3})$/\n\t\t\tconst result = regexRegex.exec(string)\n\t\t\treturn result !== null\n\t\t},\n\t\tsetValue(value) {\n\t\t\t// TODO: check if value requires a regex and set the check operator according to that\n\t\t\tif (value !== null) {\n\t\t\t\tthis.newValue = value.pattern\n\t\t\t\tthis.$emit('input', this.newValue)\n\t\t\t}\n\t\t},\n\t\tupdateCustom(event) {\n\t\t\tthis.newValue = event.target.value\n\t\t\tthis.$emit('input', this.newValue)\n\t\t},\n\t},\n}\n</script>\n<style scoped>\n\t.multiselect, input[type='text'] {\n\t\twidth: 100%;\n\t}\n\n\t.multiselect .multiselect__content-wrapper li>span {\n\t\tdisplay: flex;\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n\t.multiselect::v-deep .multiselect__single {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n\t.option__icon {\n\t\tdisplay: inline-block;\n\t\tmin-width: 30px;\n\t\tbackground-position: left;\n\t}\n\t.option__title {\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestUserAgent.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!./RequestUserAgent.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/vue-loader/lib/index.js??vue-loader-options!./RequestUserAgent.vue?vue&type=style&index=0&id=475ac1e6&scoped=true&lang=css&\";\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/vue-loader/lib/index.js??vue-loader-options!./RequestUserAgent.vue?vue&type=style&index=0&id=475ac1e6&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RequestUserAgent.vue?vue&type=template&id=475ac1e6&scoped=true&\"\nimport script from \"./RequestUserAgent.vue?vue&type=script&lang=js&\"\nexport * from \"./RequestUserAgent.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RequestUserAgent.vue?vue&type=style&index=0&id=475ac1e6&scoped=true&lang=css&\"\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 \"475ac1e6\",\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',[_c('Multiselect',{attrs:{\"value\":_vm.currentValue,\"placeholder\":_vm.t('workflowengine', 'Select a user agent'),\"label\":\"label\",\"track-by\":\"pattern\",\"options\":_vm.options,\"multiple\":false,\"tagging\":false},on:{\"input\":_vm.setValue},scopedSlots:_vm._u([{key:\"singleLabel\",fn:function(props){return [_c('span',{staticClass:\"option__icon\",class:props.option.icon}),_vm._v(\" \"),_c('span',{staticClass:\"option__title option__title_single\",domProps:{\"innerHTML\":_vm._s(props.option.label)}})]}},{key:\"option\",fn:function(props){return [_c('span',{staticClass:\"option__icon\",class:props.option.icon}),_vm._v(\" \"),(props.option.$groupLabel)?_c('span',{staticClass:\"option__title\",domProps:{\"innerHTML\":_vm._s(props.option.$groupLabel)}}):_c('span',{staticClass:\"option__title\",domProps:{\"innerHTML\":_vm._s(props.option.label)}})]}}])}),_vm._v(\" \"),(!_vm.isPredefined)?_c('input',{attrs:{\"type\":\"text\"},domProps:{\"value\":_vm.currentValue.pattern},on:{\"input\":_vm.updateCustom}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<div class=\"timeslot\">\n\t\t<input v-model=\"newValue.startTime\"\n\t\t\ttype=\"text\"\n\t\t\tclass=\"timeslot--start\"\n\t\t\tplaceholder=\"e.g. 08:00\"\n\t\t\t@input=\"update\">\n\t\t<input v-model=\"newValue.endTime\"\n\t\t\ttype=\"text\"\n\t\t\tplaceholder=\"e.g. 18:00\"\n\t\t\t@input=\"update\">\n\t\t<p v-if=\"!valid\" class=\"invalid-hint\">\n\t\t\t{{ t('workflowengine', 'Please enter a valid time span') }}\n\t\t</p>\n\t\t<Multiselect v-show=\"valid\"\n\t\t\tv-model=\"newValue.timezone\"\n\t\t\t:options=\"timezones\"\n\t\t\t@input=\"update\" />\n\t</div>\n</template>\n\n<script>\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\nimport moment from 'moment-timezone'\nimport valueMixin from '../../mixins/valueMixin'\n\nconst zones = moment.tz.names()\nexport default {\n\tname: 'RequestTime',\n\tcomponents: {\n\t\tMultiselect,\n\t},\n\tmixins: [\n\t\tvalueMixin,\n\t],\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\ttimezones: zones,\n\t\t\tvalid: false,\n\t\t\tnewValue: {\n\t\t\t\tstartTime: null,\n\t\t\t\tendTime: null,\n\t\t\t\ttimezone: moment.tz.guess(),\n\t\t\t},\n\t\t}\n\t},\n\tmounted() {\n\t\tthis.validate()\n\t},\n\tmethods: {\n\t\tupdateInternalValue(value) {\n\t\t\ttry {\n\t\t\t\tconst data = JSON.parse(value)\n\t\t\t\tif (data.length === 2) {\n\t\t\t\t\tthis.newValue = {\n\t\t\t\t\t\tstartTime: data[0].split(' ', 2)[0],\n\t\t\t\t\t\tendTime: data[1].split(' ', 2)[0],\n\t\t\t\t\t\ttimezone: data[0].split(' ', 2)[1],\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t// ignore invalid values\n\t\t\t}\n\t\t},\n\t\tvalidate() {\n\t\t\tthis.valid = this.newValue.startTime && this.newValue.startTime.match(/^(0[0-9]|1[0-9]|2[0-3]|[0-9]):[0-5][0-9]$/i) !== null\n\t\t\t\t&& this.newValue.endTime && this.newValue.endTime.match(/^(0[0-9]|1[0-9]|2[0-3]|[0-9]):[0-5][0-9]$/i) !== null\n\t\t\t\t&& moment.tz.zone(this.newValue.timezone) !== null\n\t\t\tif (this.valid) {\n\t\t\t\tthis.$emit('valid')\n\t\t\t} else {\n\t\t\t\tthis.$emit('invalid')\n\t\t\t}\n\t\t\treturn this.valid\n\t\t},\n\t\tupdate() {\n\t\t\tif (this.newValue.timezone === null) {\n\t\t\t\tthis.newValue.timezone = moment.tz.guess()\n\t\t\t}\n\t\t\tif (this.validate()) {\n\t\t\t\tconst output = `[\"${this.newValue.startTime} ${this.newValue.timezone}\",\"${this.newValue.endTime} ${this.newValue.timezone}\"]`\n\t\t\t\tthis.$emit('input', output)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t.timeslot {\n\t\tdisplay: flex;\n\t\tflex-grow: 1;\n\t\tflex-wrap: wrap;\n\t\tmax-width: 180px;\n\n\t\t.multiselect {\n\t\t\twidth: 100%;\n\t\t\tmargin-bottom: 5px;\n\t\t}\n\n\t\t.multiselect::v-deep .multiselect__tags:not(:hover):not(:focus):not(:active) {\n\t\t\tborder: 1px solid transparent;\n\t\t}\n\n\t\tinput[type=text] {\n\t\t\twidth: 50%;\n\t\t\tmargin: 0;\n\t\t\tmargin-bottom: 5px;\n\n\t\t\t&.timeslot--start {\n\t\t\t\tmargin-right: 5px;\n\t\t\t\twidth: calc(50% - 5px);\n\t\t\t}\n\t\t}\n\n\t\t.invalid-hint {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestTime.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!./RequestTime.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!./RequestTime.vue?vue&type=style&index=0&id=149baca9&scoped=true&lang=scss&\";\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!./RequestTime.vue?vue&type=style&index=0&id=149baca9&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RequestTime.vue?vue&type=template&id=149baca9&scoped=true&\"\nimport script from \"./RequestTime.vue?vue&type=script&lang=js&\"\nexport * from \"./RequestTime.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RequestTime.vue?vue&type=style&index=0&id=149baca9&scoped=true&lang=scss&\"\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 \"149baca9\",\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:\"timeslot\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newValue.startTime),expression:\"newValue.startTime\"}],staticClass:\"timeslot--start\",attrs:{\"type\":\"text\",\"placeholder\":\"e.g. 08:00\"},domProps:{\"value\":(_vm.newValue.startTime)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.newValue, \"startTime\", $event.target.value)},_vm.update]}}),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newValue.endTime),expression:\"newValue.endTime\"}],attrs:{\"type\":\"text\",\"placeholder\":\"e.g. 18:00\"},domProps:{\"value\":(_vm.newValue.endTime)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.newValue, \"endTime\", $event.target.value)},_vm.update]}}),_vm._v(\" \"),(!_vm.valid)?_c('p',{staticClass:\"invalid-hint\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('workflowengine', 'Please enter a valid time span'))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),_c('Multiselect',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.valid),expression:\"valid\"}],attrs:{\"options\":_vm.timezones},on:{\"input\":_vm.update},model:{value:(_vm.newValue.timezone),callback:function ($$v) {_vm.$set(_vm.newValue, \"timezone\", $$v)},expression:\"newValue.timezone\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<div>\n\t\t<Multiselect :value=\"currentValue\"\n\t\t\t:placeholder=\"t('workflowengine', 'Select a request URL')\"\n\t\t\tlabel=\"label\"\n\t\t\ttrack-by=\"pattern\"\n\t\t\tgroup-values=\"children\"\n\t\t\tgroup-label=\"label\"\n\t\t\t:options=\"options\"\n\t\t\t:multiple=\"false\"\n\t\t\t:tagging=\"false\"\n\t\t\t@input=\"setValue\">\n\t\t\t<template slot=\"singleLabel\" slot-scope=\"props\">\n\t\t\t\t<span class=\"option__icon\" :class=\"props.option.icon\" />\n\t\t\t\t<span class=\"option__title option__title_single\">{{ props.option.label }}</span>\n\t\t\t</template>\n\t\t\t<template slot=\"option\" slot-scope=\"props\">\n\t\t\t\t<span class=\"option__icon\" :class=\"props.option.icon\" />\n\t\t\t\t<span class=\"option__title\">{{ props.option.label }} {{ props.option.$groupLabel }}</span>\n\t\t\t</template>\n\t\t</Multiselect>\n\t\t<input v-if=\"!isPredefined\"\n\t\t\ttype=\"text\"\n\t\t\t:value=\"currentValue.pattern\"\n\t\t\t:placeholder=\"placeholder\"\n\t\t\t@input=\"updateCustom\">\n\t</div>\n</template>\n\n<script>\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\nimport valueMixin from '../../mixins/valueMixin'\n\nexport default {\n\tname: 'RequestURL',\n\tcomponents: {\n\t\tMultiselect,\n\t},\n\tmixins: [\n\t\tvalueMixin,\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tnewValue: '',\n\t\t\tpredefinedTypes: [\n\t\t\t\t{\n\t\t\t\t\tlabel: t('workflowengine', 'Predefined URLs'),\n\t\t\t\t\tchildren: [\n\t\t\t\t\t\t{ pattern: 'webdav', label: t('workflowengine', 'Files WebDAV') },\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t}\n\t},\n\tcomputed: {\n\t\toptions() {\n\t\t\treturn [...this.predefinedTypes, this.customValue]\n\t\t},\n\t\tplaceholder() {\n\t\t\tif (this.check.operator === 'matches' || this.check.operator === '!matches') {\n\t\t\t\treturn '/^https\\\\:\\\\/\\\\/localhost\\\\/index\\\\.php$/i'\n\t\t\t}\n\t\t\treturn 'https://localhost/index.php'\n\t\t},\n\t\tmatchingPredefined() {\n\t\t\treturn this.predefinedTypes\n\t\t\t\t.map(groups => groups.children)\n\t\t\t\t.flat()\n\t\t\t\t.find((type) => this.newValue === type.pattern)\n\t\t},\n\t\tisPredefined() {\n\t\t\treturn !!this.matchingPredefined\n\t\t},\n\t\tcustomValue() {\n\t\t\treturn {\n\t\t\t\tlabel: t('workflowengine', 'Others'),\n\t\t\t\tchildren: [\n\t\t\t\t\t{\n\t\t\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\t\t\tlabel: t('workflowengine', 'Custom URL'),\n\t\t\t\t\t\tpattern: '',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t}\n\t\t},\n\t\tcurrentValue() {\n\t\t\tif (this.matchingPredefined) {\n\t\t\t\treturn this.matchingPredefined\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom URL'),\n\t\t\t\tpattern: this.newValue,\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\tvalidateRegex(string) {\n\t\t\tconst regexRegex = /^\\/(.*)\\/([gui]{0,3})$/\n\t\t\tconst result = regexRegex.exec(string)\n\t\t\treturn result !== null\n\t\t},\n\t\tsetValue(value) {\n\t\t\t// TODO: check if value requires a regex and set the check operator according to that\n\t\t\tif (value !== null) {\n\t\t\t\tthis.newValue = value.pattern\n\t\t\t\tthis.$emit('input', this.newValue)\n\t\t\t}\n\t\t},\n\t\tupdateCustom(event) {\n\t\t\tthis.newValue = event.target.value\n\t\t\tthis.$emit('input', this.newValue)\n\t\t},\n\t},\n}\n</script>\n<style scoped>\n\t.multiselect, input[type='text'] {\n\t\twidth: 100%;\n\t}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestURL.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!./RequestURL.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/vue-loader/lib/index.js??vue-loader-options!./RequestURL.vue?vue&type=style&index=0&id=dd8e16be&scoped=true&lang=css&\";\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/vue-loader/lib/index.js??vue-loader-options!./RequestURL.vue?vue&type=style&index=0&id=dd8e16be&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RequestURL.vue?vue&type=template&id=dd8e16be&scoped=true&\"\nimport script from \"./RequestURL.vue?vue&type=script&lang=js&\"\nexport * from \"./RequestURL.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RequestURL.vue?vue&type=style&index=0&id=dd8e16be&scoped=true&lang=css&\"\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 \"dd8e16be\",\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',[_c('Multiselect',{attrs:{\"value\":_vm.currentValue,\"placeholder\":_vm.t('workflowengine', 'Select a request URL'),\"label\":\"label\",\"track-by\":\"pattern\",\"group-values\":\"children\",\"group-label\":\"label\",\"options\":_vm.options,\"multiple\":false,\"tagging\":false},on:{\"input\":_vm.setValue},scopedSlots:_vm._u([{key:\"singleLabel\",fn:function(props){return [_c('span',{staticClass:\"option__icon\",class:props.option.icon}),_vm._v(\" \"),_c('span',{staticClass:\"option__title option__title_single\"},[_vm._v(_vm._s(props.option.label))])]}},{key:\"option\",fn:function(props){return [_c('span',{staticClass:\"option__icon\",class:props.option.icon}),_vm._v(\" \"),_c('span',{staticClass:\"option__title\"},[_vm._v(_vm._s(props.option.label)+\" \"+_vm._s(props.option.$groupLabel))])]}}])}),_vm._v(\" \"),(!_vm.isPredefined)?_c('input',{attrs:{\"type\":\"text\",\"placeholder\":_vm.placeholder},domProps:{\"value\":_vm.currentValue.pattern},on:{\"input\":_vm.updateCustom}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<div>\n\t\t<Multiselect :value=\"currentValue\"\n\t\t\t:loading=\"status.isLoading && groups.length === 0\"\n\t\t\t:options=\"groups\"\n\t\t\t:multiple=\"false\"\n\t\t\tlabel=\"displayname\"\n\t\t\ttrack-by=\"id\"\n\t\t\t@search-change=\"searchAsync\"\n\t\t\t@input=\"(value) => $emit('input', value.id)\" />\n\t</div>\n</template>\n\n<script>\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nconst groups = []\nconst status = {\n\tisLoading: false,\n}\n\nexport default {\n\tname: 'RequestUserGroup',\n\tcomponents: {\n\t\tMultiselect,\n\t},\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tcheck: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => { return {} },\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tgroups,\n\t\t\tstatus,\n\t\t}\n\t},\n\tcomputed: {\n\t\tcurrentValue() {\n\t\t\treturn this.groups.find(group => group.id === this.value) || null\n\t\t},\n\t},\n\tasync mounted() {\n\t\tif (this.groups.length === 0) {\n\t\t\tawait this.searchAsync('')\n\t\t}\n\t\tif (this.currentValue === null) {\n\t\t\tawait this.searchAsync(this.value)\n\t\t}\n\t},\n\tmethods: {\n\t\tsearchAsync(searchQuery) {\n\t\t\tif (this.status.isLoading) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.status.isLoading = true\n\t\t\treturn axios.get(generateOcsUrl('cloud/groups/details?limit=20&search={searchQuery}', { searchQuery })).then((response) => {\n\t\t\t\tresponse.data.ocs.data.groups.forEach((group) => {\n\t\t\t\t\tthis.addGroup({\n\t\t\t\t\t\tid: group.id,\n\t\t\t\t\t\tdisplayname: group.displayname,\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\tthis.status.isLoading = false\n\t\t\t}, (error) => {\n\t\t\t\tconsole.error('Error while loading group list', error.response)\n\t\t\t})\n\t\t},\n\t\taddGroup(group) {\n\t\t\tconst index = this.groups.findIndex((item) => item.id === group.id)\n\t\t\tif (index === -1) {\n\t\t\t\tthis.groups.push(group)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n<style scoped>\n\t.multiselect {\n\t\twidth: 100%;\n\t}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestUserGroup.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!./RequestUserGroup.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/vue-loader/lib/index.js??vue-loader-options!./RequestUserGroup.vue?vue&type=style&index=0&id=79fa10a5&scoped=true&lang=css&\";\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/vue-loader/lib/index.js??vue-loader-options!./RequestUserGroup.vue?vue&type=style&index=0&id=79fa10a5&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RequestUserGroup.vue?vue&type=template&id=79fa10a5&scoped=true&\"\nimport script from \"./RequestUserGroup.vue?vue&type=script&lang=js&\"\nexport * from \"./RequestUserGroup.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RequestUserGroup.vue?vue&type=style&index=0&id=79fa10a5&scoped=true&lang=css&\"\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 \"79fa10a5\",\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',[_c('Multiselect',{attrs:{\"value\":_vm.currentValue,\"loading\":_vm.status.isLoading && _vm.groups.length === 0,\"options\":_vm.groups,\"multiple\":false,\"label\":\"displayname\",\"track-by\":\"id\"},on:{\"search-change\":_vm.searchAsync,\"input\":function (value) { return _vm.$emit('input', value.id); }}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nimport RequestUserAgent from './RequestUserAgent'\nimport RequestTime from './RequestTime'\nimport RequestURL from './RequestURL'\nimport RequestUserGroup from './RequestUserGroup'\n\nconst RequestChecks = [\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\RequestURL',\n\t\tname: t('workflowengine', 'Request URL'),\n\t\toperators: [\n\t\t\t{ operator: 'is', name: t('workflowengine', 'is') },\n\t\t\t{ operator: '!is', name: t('workflowengine', 'is not') },\n\t\t\t{ operator: 'matches', name: t('workflowengine', 'matches') },\n\t\t\t{ operator: '!matches', name: t('workflowengine', 'does not match') },\n\t\t],\n\t\tcomponent: RequestURL,\n\t},\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\RequestTime',\n\t\tname: t('workflowengine', 'Request time'),\n\t\toperators: [\n\t\t\t{ operator: 'in', name: t('workflowengine', 'between') },\n\t\t\t{ operator: '!in', name: t('workflowengine', 'not between') },\n\t\t],\n\t\tcomponent: RequestTime,\n\t},\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\RequestUserAgent',\n\t\tname: t('workflowengine', 'Request user agent'),\n\t\toperators: [\n\t\t\t{ operator: 'is', name: t('workflowengine', 'is') },\n\t\t\t{ operator: '!is', name: t('workflowengine', 'is not') },\n\t\t\t{ operator: 'matches', name: t('workflowengine', 'matches') },\n\t\t\t{ operator: '!matches', name: t('workflowengine', 'does not match') },\n\t\t],\n\t\tcomponent: RequestUserAgent,\n\t},\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\UserGroupMembership',\n\t\tname: t('workflowengine', 'User group membership'),\n\t\toperators: [\n\t\t\t{ operator: 'is', name: t('workflowengine', 'is member of') },\n\t\t\t{ operator: '!is', name: t('workflowengine', 'is not member of') },\n\t\t],\n\t\tcomponent: RequestUserGroup,\n\t},\n]\n\nexport default RequestChecks\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nimport FileChecks from './file'\nimport RequestChecks from './request'\n\nexport default [...FileChecks, ...RequestChecks]\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport store from './store'\nimport Settings from './components/Workflow'\nimport ShippedChecks from './components/Checks'\n\n/**\n * A plugin for displaying a custom value field for checks\n *\n * @typedef {object} CheckPlugin\n * @property {string} class - The PHP class name of the check\n * @property {Comparison[]} operators - A list of possible comparison operations running on the check\n * @property {Vue} component - A vue component to handle the rendering of options\n * The component should handle the v-model directive properly,\n * so it needs a value property to receive data and emit an input\n * event once the data has changed\n * @property {Function} placeholder - Return a placeholder of no custom component is used\n * @property {Function} validate - validate a check if no custom component is used\n */\n\n/**\n * A plugin for extending the admin page repesentation of a operator\n *\n * @typedef {object} OperatorPlugin\n * @property {string} id - The PHP class name of the check\n * @property {string} operation - Default value for the operation field\n * @property {string} color - Custom color code to be applied for the operator selector\n * @property {Vue} component - A vue component to handle the rendering of options\n * The component should handle the v-model directive properly,\n * so it needs a value property to receive data and emit an input\n * event once the data has changed\n */\n\n/**\n * @typedef {object} Comparison\n * @property {string} operator - value the comparison should have, e.g. !less, greater\n * @property {string} name - Translated readable text, e.g. less or equals\n */\n\n/**\n * Public javascript api for apps to register custom plugins\n */\nwindow.OCA.WorkflowEngine = Object.assign({}, OCA.WorkflowEngine, {\n\n\t/**\n\t *\n\t * @param {CheckPlugin} Plugin the plugin to register\n\t */\n\tregisterCheck(Plugin) {\n\t\tstore.commit('addPluginCheck', Plugin)\n\t},\n\t/**\n\t *\n\t * @param {OperatorPlugin} Plugin the plugin to register\n\t */\n\tregisterOperator(Plugin) {\n\t\tstore.commit('addPluginOperator', Plugin)\n\t},\n})\n\n// Register shipped checks\nShippedChecks.forEach((checkPlugin) => window.OCA.WorkflowEngine.registerCheck(checkPlugin))\n\nVue.use(Vuex)\nVue.prototype.t = t\n\nconst View = Vue.extend(Settings)\nconst workflowengine = new View({\n\tstore,\n})\nworkflowengine.$mount('#workflowengine')\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, \".check[data-v-70cc784d]{display:flex;flex-wrap:wrap;width:100%;padding-right:20px}.check>*[data-v-70cc784d]:not(.close){width:180px}.check>.comparator[data-v-70cc784d]{min-width:130px;width:130px}.check>.option[data-v-70cc784d]{min-width:230px;width:230px}.check>.multiselect[data-v-70cc784d],.check>input[type=text][data-v-70cc784d]{margin-right:5px;margin-bottom:5px}.check .multiselect[data-v-70cc784d] .multiselect__content-wrapper li>span,.check .multiselect[data-v-70cc784d] .multiselect__single{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}input[type=text][data-v-70cc784d]{margin:0}[data-v-70cc784d]::placeholder{font-size:10px}button.action-item.action-item--single.icon-close[data-v-70cc784d]{height:44px;width:44px;margin-top:-5px;margin-bottom:-5px}.invalid[data-v-70cc784d]{border:1px solid var(--color-error) !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Check.vue\"],\"names\":[],\"mappings\":\"AAsJA,wBACC,YAAA,CACA,cAAA,CACA,UAAA,CACA,kBAAA,CACA,sCACC,WAAA,CAED,oCACC,eAAA,CACA,WAAA,CAED,gCACC,eAAA,CACA,WAAA,CAED,8EAEC,gBAAA,CACA,iBAAA,CAGD,qIAEC,aAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CAGF,kCACC,QAAA,CAED,+BACC,cAAA,CAED,mEACC,WAAA,CACA,UAAA,CACA,eAAA,CACA,kBAAA,CAED,0BACC,8CAAA\",\"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.check {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\twidth: 100%;\\n\\tpadding-right: 20px;\\n\\t& > *:not(.close) {\\n\\t\\twidth: 180px;\\n\\t}\\n\\t& > .comparator {\\n\\t\\tmin-width: 130px;\\n\\t\\twidth: 130px;\\n\\t}\\n\\t& > .option {\\n\\t\\tmin-width: 230px;\\n\\t\\twidth: 230px;\\n\\t}\\n\\t& > .multiselect,\\n\\t& > input[type=text] {\\n\\t\\tmargin-right: 5px;\\n\\t\\tmargin-bottom: 5px;\\n\\t}\\n\\n\\t.multiselect::v-deep .multiselect__content-wrapper li>span,\\n\\t.multiselect::v-deep .multiselect__single {\\n\\t\\tdisplay: block;\\n\\t\\twhite-space: nowrap;\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n}\\ninput[type=text] {\\n\\tmargin: 0;\\n}\\n::placeholder {\\n\\tfont-size: 10px;\\n}\\nbutton.action-item.action-item--single.icon-close {\\n\\theight: 44px;\\n\\twidth: 44px;\\n\\tmargin-top: -5px;\\n\\tmargin-bottom: -5px;\\n}\\n.invalid {\\n\\tborder: 1px solid var(--color-error) !important;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".timeslot[data-v-149baca9]{display:flex;flex-grow:1;flex-wrap:wrap;max-width:180px}.timeslot .multiselect[data-v-149baca9]{width:100%;margin-bottom:5px}.timeslot .multiselect[data-v-149baca9] .multiselect__tags:not(:hover):not(:focus):not(:active){border:1px solid rgba(0,0,0,0)}.timeslot input[type=text][data-v-149baca9]{width:50%;margin:0;margin-bottom:5px}.timeslot input[type=text].timeslot--start[data-v-149baca9]{margin-right:5px;width:calc(50% - 5px)}.timeslot .invalid-hint[data-v-149baca9]{color:var(--color-text-maxcontrast)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Checks/RequestTime.vue\"],\"names\":[],\"mappings\":\"AA+FA,2BACC,YAAA,CACA,WAAA,CACA,cAAA,CACA,eAAA,CAEA,wCACC,UAAA,CACA,iBAAA,CAGD,gGACC,8BAAA,CAGD,4CACC,SAAA,CACA,QAAA,CACA,iBAAA,CAEA,4DACC,gBAAA,CACA,qBAAA,CAIF,yCACC,mCAAA\",\"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.timeslot {\\n\\tdisplay: flex;\\n\\tflex-grow: 1;\\n\\tflex-wrap: wrap;\\n\\tmax-width: 180px;\\n\\n\\t.multiselect {\\n\\t\\twidth: 100%;\\n\\t\\tmargin-bottom: 5px;\\n\\t}\\n\\n\\t.multiselect::v-deep .multiselect__tags:not(:hover):not(:focus):not(:active) {\\n\\t\\tborder: 1px solid transparent;\\n\\t}\\n\\n\\tinput[type=text] {\\n\\t\\twidth: 50%;\\n\\t\\tmargin: 0;\\n\\t\\tmargin-bottom: 5px;\\n\\n\\t\\t&.timeslot--start {\\n\\t\\t\\tmargin-right: 5px;\\n\\t\\t\\twidth: calc(50% - 5px);\\n\\t\\t}\\n\\t}\\n\\n\\t.invalid-hint {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".event[data-v-f3569276]{margin-bottom:5px}.isComplex img[data-v-f3569276]{vertical-align:text-top}.isComplex span[data-v-f3569276]{padding-top:2px;display:inline-block}.multiselect[data-v-f3569276]{width:100%;max-width:550px;margin-top:4px}.multiselect[data-v-f3569276] .multiselect__single{display:flex}.multiselect[data-v-f3569276]:not(.multiselect--active) .multiselect__tags{background-color:var(--color-main-background) !important;border:1px solid rgba(0,0,0,0)}.multiselect[data-v-f3569276] .multiselect__tags{background-color:var(--color-main-background) !important;height:auto;min-height:34px}.multiselect[data-v-f3569276]:not(.multiselect--disabled) .multiselect__tags .multiselect__single{background-image:var(--icon-triangle-s-000);background-repeat:no-repeat;background-position:right center}input[data-v-f3569276]{border:1px solid rgba(0,0,0,0)}.option__title[data-v-f3569276]{margin-left:5px;color:var(--color-main-text)}.option__title_single[data-v-f3569276]{font-weight:900}.option__icon[data-v-f3569276]{width:16px;height:16px}.eventlist img[data-v-f3569276],.eventlist .text[data-v-f3569276]{vertical-align:middle}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Event.vue\"],\"names\":[],\"mappings\":\"AAiFA,wBACC,iBAAA,CAGA,gCACC,uBAAA,CAED,iCACC,eAAA,CACA,oBAAA,CAGF,8BACC,UAAA,CACA,eAAA,CACA,cAAA,CAED,mDACC,YAAA,CAED,2EACC,wDAAA,CACA,8BAAA,CAGD,iDACC,wDAAA,CACA,WAAA,CACA,eAAA,CAGD,kGACC,2CAAA,CACA,2BAAA,CACA,gCAAA,CAGD,uBACC,8BAAA,CAGD,gCACC,eAAA,CACA,4BAAA,CAED,uCACC,eAAA,CAGD,+BACC,UAAA,CACA,WAAA,CAGD,kEAEC,qBAAA\",\"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.event {\\n\\tmargin-bottom: 5px;\\n}\\n.isComplex {\\n\\timg {\\n\\t\\tvertical-align: text-top;\\n\\t}\\n\\tspan {\\n\\t\\tpadding-top: 2px;\\n\\t\\tdisplay: inline-block;\\n\\t}\\n}\\n.multiselect {\\n\\twidth: 100%;\\n\\tmax-width: 550px;\\n\\tmargin-top: 4px;\\n}\\n.multiselect::v-deep .multiselect__single {\\n\\tdisplay: flex;\\n}\\n.multiselect:not(.multiselect--active)::v-deep .multiselect__tags {\\n\\tbackground-color: var(--color-main-background) !important;\\n\\tborder: 1px solid transparent;\\n}\\n\\n.multiselect::v-deep .multiselect__tags {\\n\\tbackground-color: var(--color-main-background) !important;\\n\\theight: auto;\\n\\tmin-height: 34px;\\n}\\n\\n.multiselect:not(.multiselect--disabled)::v-deep .multiselect__tags .multiselect__single {\\n\\tbackground-image: var(--icon-triangle-s-000);\\n\\tbackground-repeat: no-repeat;\\n\\tbackground-position: right center;\\n}\\n\\ninput {\\n\\tborder: 1px solid transparent;\\n}\\n\\n.option__title {\\n\\tmargin-left: 5px;\\n\\tcolor: var(--color-main-text);\\n}\\n.option__title_single {\\n\\tfont-weight: 900;\\n}\\n\\n.option__icon {\\n\\twidth: 16px;\\n\\theight: 16px;\\n}\\n\\n.eventlist img,\\n.eventlist .text {\\n\\tvertical-align: middle;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".actions__item[data-v-34495584]{display:flex;flex-wrap:wrap;flex-direction:column;flex-grow:1;margin-left:-1px;padding:10px;border-radius:var(--border-radius-large);margin-right:20px;margin-bottom:20px}.actions__item .icon[data-v-34495584]{display:block;width:100%;height:50px;background-size:50px 50px;background-position:center center;margin-top:10px;margin-bottom:10px;background-repeat:no-repeat}.actions__item__description[data-v-34495584]{text-align:center;flex-grow:1;display:flex;flex-direction:column}.actions__item_options[data-v-34495584]{width:100%;margin-top:10px;padding-left:60px}h3[data-v-34495584],small[data-v-34495584]{padding:6px;display:block}h3[data-v-34495584]{margin:0;padding:0;font-weight:600}small[data-v-34495584]{font-size:10pt;flex-grow:1}.colored[data-v-34495584]:not(.more){background-color:var(--color-primary-element)}.colored:not(.more) h3[data-v-34495584],.colored:not(.more) small[data-v-34495584]{color:var(--color-primary-text)}.actions__item[data-v-34495584]:not(.colored){flex-direction:row}.actions__item:not(.colored) .actions__item__description[data-v-34495584]{padding-top:5px;text-align:left;width:calc(100% - 105px)}.actions__item:not(.colored) .actions__item__description small[data-v-34495584]{padding:0}.actions__item:not(.colored) .icon[data-v-34495584]{width:50px;margin:0;margin-right:10px}.actions__item:not(.colored) .icon[data-v-34495584]:not(.icon-invert){filter:invert(1)}.colored .icon-invert[data-v-34495584]{filter:invert(1)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/styles/operation.scss\"],\"names\":[],\"mappings\":\"AAAA,gCACC,YAAA,CACA,cAAA,CACA,qBAAA,CACA,WAAA,CACA,gBAAA,CACA,YAAA,CACA,wCAAA,CACA,iBAAA,CACA,kBAAA,CAED,sCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,yBAAA,CACA,iCAAA,CACA,eAAA,CACA,kBAAA,CACA,2BAAA,CAED,6CACC,iBAAA,CACA,WAAA,CACA,YAAA,CACA,qBAAA,CAED,wCACC,UAAA,CACA,eAAA,CACA,iBAAA,CAED,2CACC,WAAA,CACA,aAAA,CAED,oBACC,QAAA,CACA,SAAA,CACA,eAAA,CAED,uBACC,cAAA,CACA,WAAA,CAGD,qCACC,6CAAA,CACA,mFACC,+BAAA,CAIF,8CACC,kBAAA,CAEA,0EACC,eAAA,CACA,eAAA,CACA,wBAAA,CACA,gFACC,SAAA,CAGF,oDACC,UAAA,CACA,QAAA,CACA,iBAAA,CACA,sEACC,gBAAA,CAKH,uCACC,gBAAA\",\"sourcesContent\":[\".actions__item {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tflex-direction: column;\\n\\tflex-grow: 1;\\n\\tmargin-left: -1px;\\n\\tpadding: 10px;\\n\\tborder-radius: var(--border-radius-large);\\n\\tmargin-right: 20px;\\n\\tmargin-bottom: 20px;\\n}\\n.actions__item .icon {\\n\\tdisplay: block;\\n\\twidth: 100%;\\n\\theight: 50px;\\n\\tbackground-size: 50px 50px;\\n\\tbackground-position: center center;\\n\\tmargin-top: 10px;\\n\\tmargin-bottom: 10px;\\n\\tbackground-repeat: no-repeat;\\n}\\n.actions__item__description {\\n\\ttext-align: center;\\n\\tflex-grow: 1;\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n}\\n.actions__item_options {\\n\\twidth: 100%;\\n\\tmargin-top: 10px;\\n\\tpadding-left: 60px;\\n}\\nh3, small {\\n\\tpadding: 6px;\\n\\tdisplay: block;\\n}\\nh3 {\\n\\tmargin: 0;\\n\\tpadding: 0;\\n\\tfont-weight: 600;\\n}\\nsmall {\\n\\tfont-size: 10pt;\\n\\tflex-grow: 1;\\n}\\n\\n.colored:not(.more) {\\n\\tbackground-color: var(--color-primary-element);\\n\\th3, small {\\n\\t\\tcolor: var(--color-primary-text)\\n\\t}\\n}\\n\\n.actions__item:not(.colored) {\\n\\tflex-direction: row;\\n\\n\\t.actions__item__description {\\n\\t\\tpadding-top: 5px;\\n\\t\\ttext-align: left;\\n\\t\\twidth: calc(100% - 105px);\\n\\t\\tsmall {\\n\\t\\t\\tpadding: 0;\\n\\t\\t}\\n\\t}\\n\\t.icon {\\n\\t\\twidth: 50px;\\n\\t\\tmargin: 0;\\n\\t\\tmargin-right: 10px;\\n\\t\\t&:not(.icon-invert) {\\n\\t\\t\\tfilter: invert(1);\\n\\t\\t}\\n\\t}\\n}\\n\\n.colored .icon-invert {\\n\\tfilter: invert(1);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"button.icon[data-v-225ba268]{padding-left:32px;background-position:10px center}.buttons[data-v-225ba268]{display:block;overflow:hidden}.buttons button[data-v-225ba268]{float:right;height:34px}.error-message[data-v-225ba268]{float:right;margin-right:10px}.status-button[data-v-225ba268]{transition:.5s ease all;display:block;margin:3px 10px 3px auto}.status-button.primary[data-v-225ba268]{padding-left:32px;background-position:10px center}.status-button[data-v-225ba268]:not(.primary){background-color:var(--color-main-background)}.status-button.invalid[data-v-225ba268]{background-color:var(--color-warning);color:#fff;border:none}.status-button.icon-checkmark[data-v-225ba268]{border:1px solid var(--color-success)}.flow-icon[data-v-225ba268]{width:44px}.rule[data-v-225ba268]{display:flex;flex-wrap:wrap;border-left:5px solid var(--color-primary-element)}.rule .trigger[data-v-225ba268],.rule .action[data-v-225ba268]{flex-grow:1;min-height:100px;max-width:700px}.rule .action[data-v-225ba268]{max-width:400px;position:relative}.rule .icon-confirm[data-v-225ba268]{background-position:right 27px;padding-right:20px;margin-right:20px}.trigger p[data-v-225ba268],.action p[data-v-225ba268]{min-height:34px;display:flex}.trigger p>span[data-v-225ba268],.action p>span[data-v-225ba268]{min-width:50px;text-align:right;color:var(--color-text-maxcontrast);padding-right:10px;padding-top:6px}.trigger p .multiselect[data-v-225ba268],.action p .multiselect[data-v-225ba268]{flex-grow:1;max-width:300px}.trigger p:first-child span[data-v-225ba268]{padding-top:3px}.check--add[data-v-225ba268]{background-position:7px center;background-color:rgba(0,0,0,0);padding-left:6px;margin:0;width:180px;border-radius:var(--border-radius);color:var(--color-text-maxcontrast);font-weight:normal;text-align:left;font-size:1em}@media(max-width: 1400px){.rule[data-v-225ba268],.rule .trigger[data-v-225ba268],.rule .action[data-v-225ba268]{width:100%;max-width:100%}.rule .flow-icon[data-v-225ba268]{display:none}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Rule.vue\"],\"names\":[],\"mappings\":\"AA4KA,6BACC,iBAAA,CACA,+BAAA,CAGD,0BACC,aAAA,CACA,eAAA,CAEA,iCACC,WAAA,CACA,WAAA,CAIF,gCACC,WAAA,CACA,iBAAA,CAGD,gCACC,uBAAA,CACA,aAAA,CACA,wBAAA,CAED,wCACC,iBAAA,CACA,+BAAA,CAED,8CACC,6CAAA,CAED,wCACC,qCAAA,CACA,UAAA,CACA,WAAA,CAED,+CACC,qCAAA,CAGD,4BACC,UAAA,CAGD,uBACC,YAAA,CACA,cAAA,CACA,kDAAA,CAEA,+DACC,WAAA,CACA,gBAAA,CACA,eAAA,CAED,+BACC,eAAA,CACA,iBAAA,CAED,qCACC,8BAAA,CACA,kBAAA,CACA,iBAAA,CAGF,uDACC,eAAA,CACA,YAAA,CAEA,iEACC,cAAA,CACA,gBAAA,CACA,mCAAA,CACA,kBAAA,CACA,eAAA,CAED,iFACC,WAAA,CACA,eAAA,CAGF,6CACE,eAAA,CAGF,6BACC,8BAAA,CACA,8BAAA,CACA,gBAAA,CACA,QAAA,CACA,WAAA,CACA,kCAAA,CACA,mCAAA,CACA,kBAAA,CACA,eAAA,CACA,aAAA,CAGD,0BAEE,sFACC,UAAA,CACA,cAAA,CAED,kCACC,YAAA,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\\nbutton.icon {\\n\\tpadding-left: 32px;\\n\\tbackground-position: 10px center;\\n}\\n\\n.buttons {\\n\\tdisplay: block;\\n\\toverflow: hidden;\\n\\n\\tbutton {\\n\\t\\tfloat: right;\\n\\t\\theight: 34px;\\n\\t}\\n}\\n\\n.error-message {\\n\\tfloat: right;\\n\\tmargin-right: 10px;\\n}\\n\\n.status-button {\\n\\ttransition: 0.5s ease all;\\n\\tdisplay: block;\\n\\tmargin: 3px 10px 3px auto;\\n}\\n.status-button.primary {\\n\\tpadding-left: 32px;\\n\\tbackground-position: 10px center;\\n}\\n.status-button:not(.primary) {\\n\\tbackground-color: var(--color-main-background);\\n}\\n.status-button.invalid {\\n\\tbackground-color: var(--color-warning);\\n\\tcolor: #fff;\\n\\tborder: none;\\n}\\n.status-button.icon-checkmark {\\n\\tborder: 1px solid var(--color-success);\\n}\\n\\n.flow-icon {\\n\\twidth: 44px;\\n}\\n\\n.rule {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tborder-left: 5px solid var(--color-primary-element);\\n\\n\\t.trigger, .action {\\n\\t\\tflex-grow: 1;\\n\\t\\tmin-height: 100px;\\n\\t\\tmax-width: 700px;\\n\\t}\\n\\t.action {\\n\\t\\tmax-width: 400px;\\n\\t\\tposition: relative;\\n\\t}\\n\\t.icon-confirm {\\n\\t\\tbackground-position: right 27px;\\n\\t\\tpadding-right: 20px;\\n\\t\\tmargin-right: 20px;\\n\\t}\\n}\\n.trigger p, .action p {\\n\\tmin-height: 34px;\\n\\tdisplay: flex;\\n\\n\\t& > span {\\n\\t\\tmin-width: 50px;\\n\\t\\ttext-align: right;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tpadding-right: 10px;\\n\\t\\tpadding-top: 6px;\\n\\t}\\n\\t.multiselect {\\n\\t\\tflex-grow: 1;\\n\\t\\tmax-width: 300px;\\n\\t}\\n}\\n.trigger p:first-child span {\\n\\t\\tpadding-top: 3px;\\n}\\n\\n.check--add {\\n\\tbackground-position: 7px center;\\n\\tbackground-color: transparent;\\n\\tpadding-left: 6px;\\n\\tmargin: 0;\\n\\twidth: 180px;\\n\\tborder-radius: var(--border-radius);\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tfont-weight: normal;\\n\\ttext-align: left;\\n\\tfont-size: 1em;\\n}\\n\\n@media (max-width:1400px) {\\n\\t.rule {\\n\\t\\t&, .trigger, .action {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t}\\n\\t\\t.flow-icon {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"#workflowengine[data-v-7b3e4a56]{border-bottom:1px solid var(--color-border)}.section[data-v-7b3e4a56]{max-width:100vw}.section h2.configured-flows[data-v-7b3e4a56]{margin-top:50px;margin-bottom:0}.actions[data-v-7b3e4a56]{display:flex;flex-wrap:wrap;max-width:1200px}.actions .actions__item[data-v-7b3e4a56]{max-width:280px;flex-basis:250px}button.icon[data-v-7b3e4a56]{padding-left:32px;background-position:10px center}.slide-enter-active[data-v-7b3e4a56]{-moz-transition-duration:.3s;-webkit-transition-duration:.3s;-o-transition-duration:.3s;transition-duration:.3s;-moz-transition-timing-function:ease-in;-webkit-transition-timing-function:ease-in;-o-transition-timing-function:ease-in;transition-timing-function:ease-in}.slide-leave-active[data-v-7b3e4a56]{-moz-transition-duration:.3s;-webkit-transition-duration:.3s;-o-transition-duration:.3s;transition-duration:.3s;-moz-transition-timing-function:cubic-bezier(0, 1, 0.5, 1);-webkit-transition-timing-function:cubic-bezier(0, 1, 0.5, 1);-o-transition-timing-function:cubic-bezier(0, 1, 0.5, 1);transition-timing-function:cubic-bezier(0, 1, 0.5, 1)}.slide-enter-to[data-v-7b3e4a56],.slide-leave[data-v-7b3e4a56]{max-height:500px;overflow:hidden}.slide-enter[data-v-7b3e4a56],.slide-leave-to[data-v-7b3e4a56]{overflow:hidden;max-height:0;padding-top:0;padding-bottom:0}.actions__item[data-v-7b3e4a56]{display:flex;flex-wrap:wrap;flex-direction:column;flex-grow:1;margin-left:-1px;padding:10px;border-radius:var(--border-radius-large);margin-right:20px;margin-bottom:20px}.actions__item .icon[data-v-7b3e4a56]{display:block;width:100%;height:50px;background-size:50px 50px;background-position:center center;margin-top:10px;margin-bottom:10px;background-repeat:no-repeat}.actions__item__description[data-v-7b3e4a56]{text-align:center;flex-grow:1;display:flex;flex-direction:column}.actions__item_options[data-v-7b3e4a56]{width:100%;margin-top:10px;padding-left:60px}h3[data-v-7b3e4a56],small[data-v-7b3e4a56]{padding:6px;display:block}h3[data-v-7b3e4a56]{margin:0;padding:0;font-weight:600}small[data-v-7b3e4a56]{font-size:10pt;flex-grow:1}.colored[data-v-7b3e4a56]:not(.more){background-color:var(--color-primary-element)}.colored:not(.more) h3[data-v-7b3e4a56],.colored:not(.more) small[data-v-7b3e4a56]{color:var(--color-primary-text)}.actions__item[data-v-7b3e4a56]:not(.colored){flex-direction:row}.actions__item:not(.colored) .actions__item__description[data-v-7b3e4a56]{padding-top:5px;text-align:left;width:calc(100% - 105px)}.actions__item:not(.colored) .actions__item__description small[data-v-7b3e4a56]{padding:0}.actions__item:not(.colored) .icon[data-v-7b3e4a56]{width:50px;margin:0;margin-right:10px}.actions__item:not(.colored) .icon[data-v-7b3e4a56]:not(.icon-invert){filter:invert(1)}.colored .icon-invert[data-v-7b3e4a56]{filter:invert(1)}.actions__item.more[data-v-7b3e4a56]{background-color:var(--color-background-dark)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Workflow.vue\",\"webpack://./apps/workflowengine/src/styles/operation.scss\"],\"names\":[],\"mappings\":\"AAuGA,iCACC,2CAAA,CAED,0BACC,eAAA,CAEA,8CACC,eAAA,CACA,eAAA,CAGF,0BACC,YAAA,CACA,cAAA,CACA,gBAAA,CACA,yCACC,eAAA,CACA,gBAAA,CAIF,6BACC,iBAAA,CACA,+BAAA,CAGD,qCACC,4BAAA,CACA,+BAAA,CACA,0BAAA,CACA,uBAAA,CACA,uCAAA,CACA,0CAAA,CACA,qCAAA,CACA,kCAAA,CAGD,qCACC,4BAAA,CACA,+BAAA,CACA,0BAAA,CACA,uBAAA,CACA,0DAAA,CACA,6DAAA,CACA,wDAAA,CACA,qDAAA,CAGD,+DACC,gBAAA,CACA,eAAA,CAGD,+DACC,eAAA,CACA,YAAA,CACA,aAAA,CACA,gBAAA,CChKD,gCACC,YAAA,CACA,cAAA,CACA,qBAAA,CACA,WAAA,CACA,gBAAA,CACA,YAAA,CACA,wCAAA,CACA,iBAAA,CACA,kBAAA,CAED,sCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,yBAAA,CACA,iCAAA,CACA,eAAA,CACA,kBAAA,CACA,2BAAA,CAED,6CACC,iBAAA,CACA,WAAA,CACA,YAAA,CACA,qBAAA,CAED,wCACC,UAAA,CACA,eAAA,CACA,iBAAA,CAED,2CACC,WAAA,CACA,aAAA,CAED,oBACC,QAAA,CACA,SAAA,CACA,eAAA,CAED,uBACC,cAAA,CACA,WAAA,CAGD,qCACC,6CAAA,CACA,mFACC,+BAAA,CAIF,8CACC,kBAAA,CAEA,0EACC,eAAA,CACA,eAAA,CACA,wBAAA,CACA,gFACC,SAAA,CAGF,oDACC,UAAA,CACA,QAAA,CACA,iBAAA,CACA,sEACC,gBAAA,CAKH,uCACC,gBAAA,CD0FD,qCACC,6CAAA\",\"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#workflowengine {\\n\\tborder-bottom: 1px solid var(--color-border);\\n}\\n.section {\\n\\tmax-width: 100vw;\\n\\n\\th2.configured-flows {\\n\\t\\tmargin-top: 50px;\\n\\t\\tmargin-bottom: 0;\\n\\t}\\n}\\n.actions {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tmax-width: 1200px;\\n\\t.actions__item {\\n\\t\\tmax-width: 280px;\\n\\t\\tflex-basis: 250px;\\n\\t}\\n}\\n\\nbutton.icon {\\n\\tpadding-left: 32px;\\n\\tbackground-position: 10px center;\\n}\\n\\n.slide-enter-active {\\n\\t-moz-transition-duration: 0.3s;\\n\\t-webkit-transition-duration: 0.3s;\\n\\t-o-transition-duration: 0.3s;\\n\\ttransition-duration: 0.3s;\\n\\t-moz-transition-timing-function: ease-in;\\n\\t-webkit-transition-timing-function: ease-in;\\n\\t-o-transition-timing-function: ease-in;\\n\\ttransition-timing-function: ease-in;\\n}\\n\\n.slide-leave-active {\\n\\t-moz-transition-duration: 0.3s;\\n\\t-webkit-transition-duration: 0.3s;\\n\\t-o-transition-duration: 0.3s;\\n\\ttransition-duration: 0.3s;\\n\\t-moz-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\\n\\t-webkit-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\\n\\t-o-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\\n\\ttransition-timing-function: cubic-bezier(0, 1, 0.5, 1);\\n}\\n\\n.slide-enter-to, .slide-leave {\\n\\tmax-height: 500px;\\n\\toverflow: hidden;\\n}\\n\\n.slide-enter, .slide-leave-to {\\n\\toverflow: hidden;\\n\\tmax-height: 0;\\n\\tpadding-top: 0;\\n\\tpadding-bottom: 0;\\n}\\n\\n@import \\\"./../styles/operation\\\";\\n\\n.actions__item.more {\\n\\tbackground-color: var(--color-background-dark);\\n}\\n\",\".actions__item {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tflex-direction: column;\\n\\tflex-grow: 1;\\n\\tmargin-left: -1px;\\n\\tpadding: 10px;\\n\\tborder-radius: var(--border-radius-large);\\n\\tmargin-right: 20px;\\n\\tmargin-bottom: 20px;\\n}\\n.actions__item .icon {\\n\\tdisplay: block;\\n\\twidth: 100%;\\n\\theight: 50px;\\n\\tbackground-size: 50px 50px;\\n\\tbackground-position: center center;\\n\\tmargin-top: 10px;\\n\\tmargin-bottom: 10px;\\n\\tbackground-repeat: no-repeat;\\n}\\n.actions__item__description {\\n\\ttext-align: center;\\n\\tflex-grow: 1;\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n}\\n.actions__item_options {\\n\\twidth: 100%;\\n\\tmargin-top: 10px;\\n\\tpadding-left: 60px;\\n}\\nh3, small {\\n\\tpadding: 6px;\\n\\tdisplay: block;\\n}\\nh3 {\\n\\tmargin: 0;\\n\\tpadding: 0;\\n\\tfont-weight: 600;\\n}\\nsmall {\\n\\tfont-size: 10pt;\\n\\tflex-grow: 1;\\n}\\n\\n.colored:not(.more) {\\n\\tbackground-color: var(--color-primary-element);\\n\\th3, small {\\n\\t\\tcolor: var(--color-primary-text)\\n\\t}\\n}\\n\\n.actions__item:not(.colored) {\\n\\tflex-direction: row;\\n\\n\\t.actions__item__description {\\n\\t\\tpadding-top: 5px;\\n\\t\\ttext-align: left;\\n\\t\\twidth: calc(100% - 105px);\\n\\t\\tsmall {\\n\\t\\t\\tpadding: 0;\\n\\t\\t}\\n\\t}\\n\\t.icon {\\n\\t\\twidth: 50px;\\n\\t\\tmargin: 0;\\n\\t\\tmargin-right: 10px;\\n\\t\\t&:not(.icon-invert) {\\n\\t\\t\\tfilter: invert(1);\\n\\t\\t}\\n\\t}\\n}\\n\\n.colored .icon-invert {\\n\\tfilter: invert(1);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"\\n.multiselect[data-v-8c011724], input[type='text'][data-v-8c011724] {\\n\\twidth: 100%;\\n}\\n.multiselect[data-v-8c011724] .multiselect__content-wrapper li>span,\\n.multiselect[data-v-8c011724] .multiselect__single {\\n\\tdisplay: flex;\\n\\twhite-space: nowrap;\\n\\toverflow: hidden;\\n\\ttext-overflow: ellipsis;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Checks/FileMimeType.vue\"],\"names\":[],\"mappings\":\";AA4IA;CACA,WAAA;AACA;AACA;;CAEA,aAAA;CACA,mBAAA;CACA,gBAAA;CACA,uBAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\\n -\\n - @author Julius Härtl <jus@bitgrid.net>\\n -\\n - @license GNU AGPL version 3 or any later version\\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 -->\\n\\n<template>\\n\\t<div>\\n\\t\\t<Multiselect :value=\\\"currentValue\\\"\\n\\t\\t\\t:placeholder=\\\"t('workflowengine', 'Select a file type')\\\"\\n\\t\\t\\tlabel=\\\"label\\\"\\n\\t\\t\\ttrack-by=\\\"pattern\\\"\\n\\t\\t\\t:options=\\\"options\\\"\\n\\t\\t\\t:multiple=\\\"false\\\"\\n\\t\\t\\t:tagging=\\\"false\\\"\\n\\t\\t\\t@input=\\\"setValue\\\">\\n\\t\\t\\t<template slot=\\\"singleLabel\\\" slot-scope=\\\"props\\\">\\n\\t\\t\\t\\t<span v-if=\\\"props.option.icon\\\" class=\\\"option__icon\\\" :class=\\\"props.option.icon\\\" />\\n\\t\\t\\t\\t<img v-else :src=\\\"props.option.iconUrl\\\">\\n\\t\\t\\t\\t<span class=\\\"option__title option__title_single\\\">{{ props.option.label }}</span>\\n\\t\\t\\t</template>\\n\\t\\t\\t<template slot=\\\"option\\\" slot-scope=\\\"props\\\">\\n\\t\\t\\t\\t<span v-if=\\\"props.option.icon\\\" class=\\\"option__icon\\\" :class=\\\"props.option.icon\\\" />\\n\\t\\t\\t\\t<img v-else :src=\\\"props.option.iconUrl\\\">\\n\\t\\t\\t\\t<span class=\\\"option__title\\\">{{ props.option.label }}</span>\\n\\t\\t\\t</template>\\n\\t\\t</Multiselect>\\n\\t\\t<input v-if=\\\"!isPredefined\\\"\\n\\t\\t\\ttype=\\\"text\\\"\\n\\t\\t\\t:value=\\\"currentValue.pattern\\\"\\n\\t\\t\\t:placeholder=\\\"t('workflowengine', 'e.g. httpd/unix-directory')\\\"\\n\\t\\t\\t@input=\\\"updateCustom\\\">\\n\\t</div>\\n</template>\\n\\n<script>\\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\\nimport valueMixin from './../../mixins/valueMixin'\\nimport { imagePath } from '@nextcloud/router'\\n\\nexport default {\\n\\tname: 'FileMimeType',\\n\\tcomponents: {\\n\\t\\tMultiselect,\\n\\t},\\n\\tmixins: [\\n\\t\\tvalueMixin,\\n\\t],\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tpredefinedTypes: [\\n\\t\\t\\t\\t{\\n\\t\\t\\t\\t\\ticon: 'icon-folder',\\n\\t\\t\\t\\t\\tlabel: t('workflowengine', 'Folder'),\\n\\t\\t\\t\\t\\tpattern: 'httpd/unix-directory',\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\t{\\n\\t\\t\\t\\t\\ticon: 'icon-picture',\\n\\t\\t\\t\\t\\tlabel: t('workflowengine', 'Images'),\\n\\t\\t\\t\\t\\tpattern: '/image\\\\\\\\/.*/',\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\t{\\n\\t\\t\\t\\t\\ticonUrl: imagePath('core', 'filetypes/x-office-document'),\\n\\t\\t\\t\\t\\tlabel: t('workflowengine', 'Office documents'),\\n\\t\\t\\t\\t\\tpattern: '/(vnd\\\\\\\\.(ms-|openxmlformats-|oasis\\\\\\\\.opendocument).*)$/',\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\t{\\n\\t\\t\\t\\t\\ticonUrl: imagePath('core', 'filetypes/application-pdf'),\\n\\t\\t\\t\\t\\tlabel: t('workflowengine', 'PDF documents'),\\n\\t\\t\\t\\t\\tpattern: 'application/pdf',\\n\\t\\t\\t\\t},\\n\\t\\t\\t],\\n\\t\\t}\\n\\t},\\n\\tcomputed: {\\n\\t\\toptions() {\\n\\t\\t\\treturn [...this.predefinedTypes, this.customValue]\\n\\t\\t},\\n\\t\\tisPredefined() {\\n\\t\\t\\tconst matchingPredefined = this.predefinedTypes.find((type) => this.newValue === type.pattern)\\n\\t\\t\\tif (matchingPredefined) {\\n\\t\\t\\t\\treturn true\\n\\t\\t\\t}\\n\\t\\t\\treturn false\\n\\t\\t},\\n\\t\\tcustomValue() {\\n\\t\\t\\treturn {\\n\\t\\t\\t\\ticon: 'icon-settings-dark',\\n\\t\\t\\t\\tlabel: t('workflowengine', 'Custom mimetype'),\\n\\t\\t\\t\\tpattern: '',\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tcurrentValue() {\\n\\t\\t\\tconst matchingPredefined = this.predefinedTypes.find((type) => this.newValue === type.pattern)\\n\\t\\t\\tif (matchingPredefined) {\\n\\t\\t\\t\\treturn matchingPredefined\\n\\t\\t\\t}\\n\\t\\t\\treturn {\\n\\t\\t\\t\\ticon: 'icon-settings-dark',\\n\\t\\t\\t\\tlabel: t('workflowengine', 'Custom mimetype'),\\n\\t\\t\\t\\tpattern: this.newValue,\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n\\tmethods: {\\n\\t\\tvalidateRegex(string) {\\n\\t\\t\\tconst regexRegex = /^\\\\/(.*)\\\\/([gui]{0,3})$/\\n\\t\\t\\tconst result = regexRegex.exec(string)\\n\\t\\t\\treturn result !== null\\n\\t\\t},\\n\\t\\tsetValue(value) {\\n\\t\\t\\tif (value !== null) {\\n\\t\\t\\t\\tthis.newValue = value.pattern\\n\\t\\t\\t\\tthis.$emit('input', this.newValue)\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tupdateCustom(event) {\\n\\t\\t\\tthis.newValue = event.target.value\\n\\t\\t\\tthis.$emit('input', this.newValue)\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n<style scoped>\\n\\t.multiselect, input[type='text'] {\\n\\t\\twidth: 100%;\\n\\t}\\n\\t.multiselect >>> .multiselect__content-wrapper li>span,\\n\\t.multiselect >>> .multiselect__single {\\n\\t\\tdisplay: flex;\\n\\t\\twhite-space: nowrap;\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"\\n.multiselect[data-v-dd8e16be], input[type='text'][data-v-dd8e16be] {\\n\\twidth: 100%;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Checks/RequestURL.vue\"],\"names\":[],\"mappings\":\";AA2IA;CACA,WAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\\n -\\n - @author Julius Härtl <jus@bitgrid.net>\\n -\\n - @license GNU AGPL version 3 or any later version\\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 -->\\n\\n<template>\\n\\t<div>\\n\\t\\t<Multiselect :value=\\\"currentValue\\\"\\n\\t\\t\\t:placeholder=\\\"t('workflowengine', 'Select a request URL')\\\"\\n\\t\\t\\tlabel=\\\"label\\\"\\n\\t\\t\\ttrack-by=\\\"pattern\\\"\\n\\t\\t\\tgroup-values=\\\"children\\\"\\n\\t\\t\\tgroup-label=\\\"label\\\"\\n\\t\\t\\t:options=\\\"options\\\"\\n\\t\\t\\t:multiple=\\\"false\\\"\\n\\t\\t\\t:tagging=\\\"false\\\"\\n\\t\\t\\t@input=\\\"setValue\\\">\\n\\t\\t\\t<template slot=\\\"singleLabel\\\" slot-scope=\\\"props\\\">\\n\\t\\t\\t\\t<span class=\\\"option__icon\\\" :class=\\\"props.option.icon\\\" />\\n\\t\\t\\t\\t<span class=\\\"option__title option__title_single\\\">{{ props.option.label }}</span>\\n\\t\\t\\t</template>\\n\\t\\t\\t<template slot=\\\"option\\\" slot-scope=\\\"props\\\">\\n\\t\\t\\t\\t<span class=\\\"option__icon\\\" :class=\\\"props.option.icon\\\" />\\n\\t\\t\\t\\t<span class=\\\"option__title\\\">{{ props.option.label }} {{ props.option.$groupLabel }}</span>\\n\\t\\t\\t</template>\\n\\t\\t</Multiselect>\\n\\t\\t<input v-if=\\\"!isPredefined\\\"\\n\\t\\t\\ttype=\\\"text\\\"\\n\\t\\t\\t:value=\\\"currentValue.pattern\\\"\\n\\t\\t\\t:placeholder=\\\"placeholder\\\"\\n\\t\\t\\t@input=\\\"updateCustom\\\">\\n\\t</div>\\n</template>\\n\\n<script>\\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\\nimport valueMixin from '../../mixins/valueMixin'\\n\\nexport default {\\n\\tname: 'RequestURL',\\n\\tcomponents: {\\n\\t\\tMultiselect,\\n\\t},\\n\\tmixins: [\\n\\t\\tvalueMixin,\\n\\t],\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tnewValue: '',\\n\\t\\t\\tpredefinedTypes: [\\n\\t\\t\\t\\t{\\n\\t\\t\\t\\t\\tlabel: t('workflowengine', 'Predefined URLs'),\\n\\t\\t\\t\\t\\tchildren: [\\n\\t\\t\\t\\t\\t\\t{ pattern: 'webdav', label: t('workflowengine', 'Files WebDAV') },\\n\\t\\t\\t\\t\\t],\\n\\t\\t\\t\\t},\\n\\t\\t\\t],\\n\\t\\t}\\n\\t},\\n\\tcomputed: {\\n\\t\\toptions() {\\n\\t\\t\\treturn [...this.predefinedTypes, this.customValue]\\n\\t\\t},\\n\\t\\tplaceholder() {\\n\\t\\t\\tif (this.check.operator === 'matches' || this.check.operator === '!matches') {\\n\\t\\t\\t\\treturn '/^https\\\\\\\\:\\\\\\\\/\\\\\\\\/localhost\\\\\\\\/index\\\\\\\\.php$/i'\\n\\t\\t\\t}\\n\\t\\t\\treturn 'https://localhost/index.php'\\n\\t\\t},\\n\\t\\tmatchingPredefined() {\\n\\t\\t\\treturn this.predefinedTypes\\n\\t\\t\\t\\t.map(groups => groups.children)\\n\\t\\t\\t\\t.flat()\\n\\t\\t\\t\\t.find((type) => this.newValue === type.pattern)\\n\\t\\t},\\n\\t\\tisPredefined() {\\n\\t\\t\\treturn !!this.matchingPredefined\\n\\t\\t},\\n\\t\\tcustomValue() {\\n\\t\\t\\treturn {\\n\\t\\t\\t\\tlabel: t('workflowengine', 'Others'),\\n\\t\\t\\t\\tchildren: [\\n\\t\\t\\t\\t\\t{\\n\\t\\t\\t\\t\\t\\ticon: 'icon-settings-dark',\\n\\t\\t\\t\\t\\t\\tlabel: t('workflowengine', 'Custom URL'),\\n\\t\\t\\t\\t\\t\\tpattern: '',\\n\\t\\t\\t\\t\\t},\\n\\t\\t\\t\\t],\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tcurrentValue() {\\n\\t\\t\\tif (this.matchingPredefined) {\\n\\t\\t\\t\\treturn this.matchingPredefined\\n\\t\\t\\t}\\n\\t\\t\\treturn {\\n\\t\\t\\t\\ticon: 'icon-settings-dark',\\n\\t\\t\\t\\tlabel: t('workflowengine', 'Custom URL'),\\n\\t\\t\\t\\tpattern: this.newValue,\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n\\tmethods: {\\n\\t\\tvalidateRegex(string) {\\n\\t\\t\\tconst regexRegex = /^\\\\/(.*)\\\\/([gui]{0,3})$/\\n\\t\\t\\tconst result = regexRegex.exec(string)\\n\\t\\t\\treturn result !== null\\n\\t\\t},\\n\\t\\tsetValue(value) {\\n\\t\\t\\t// TODO: check if value requires a regex and set the check operator according to that\\n\\t\\t\\tif (value !== null) {\\n\\t\\t\\t\\tthis.newValue = value.pattern\\n\\t\\t\\t\\tthis.$emit('input', this.newValue)\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tupdateCustom(event) {\\n\\t\\t\\tthis.newValue = event.target.value\\n\\t\\t\\tthis.$emit('input', this.newValue)\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n<style scoped>\\n\\t.multiselect, input[type='text'] {\\n\\t\\twidth: 100%;\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"\\n.multiselect[data-v-475ac1e6], input[type='text'][data-v-475ac1e6] {\\n\\twidth: 100%;\\n}\\n.multiselect .multiselect__content-wrapper li>span[data-v-475ac1e6] {\\n\\tdisplay: flex;\\n\\twhite-space: nowrap;\\n\\toverflow: hidden;\\n\\ttext-overflow: ellipsis;\\n}\\n.multiselect[data-v-475ac1e6] .multiselect__single {\\n\\twidth: 100%;\\n\\tdisplay: flex;\\n\\twhite-space: nowrap;\\n\\toverflow: hidden;\\n\\ttext-overflow: ellipsis;\\n}\\n.option__icon[data-v-475ac1e6] {\\n\\tdisplay: inline-block;\\n\\tmin-width: 30px;\\n\\tbackground-position: left;\\n}\\n.option__title[data-v-475ac1e6] {\\n\\twhite-space: nowrap;\\n\\toverflow: hidden;\\n\\ttext-overflow: ellipsis;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Checks/RequestUserAgent.vue\"],\"names\":[],\"mappings\":\";AA8HA;CACA,WAAA;AACA;AAEA;CACA,aAAA;CACA,mBAAA;CACA,gBAAA;CACA,uBAAA;AACA;AACA;CACA,WAAA;CACA,aAAA;CACA,mBAAA;CACA,gBAAA;CACA,uBAAA;AACA;AACA;CACA,qBAAA;CACA,eAAA;CACA,yBAAA;AACA;AACA;CACA,mBAAA;CACA,gBAAA;CACA,uBAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\\n -\\n - @author Julius Härtl <jus@bitgrid.net>\\n -\\n - @license GNU AGPL version 3 or any later version\\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 -->\\n\\n<template>\\n\\t<div>\\n\\t\\t<Multiselect :value=\\\"currentValue\\\"\\n\\t\\t\\t:placeholder=\\\"t('workflowengine', 'Select a user agent')\\\"\\n\\t\\t\\tlabel=\\\"label\\\"\\n\\t\\t\\ttrack-by=\\\"pattern\\\"\\n\\t\\t\\t:options=\\\"options\\\"\\n\\t\\t\\t:multiple=\\\"false\\\"\\n\\t\\t\\t:tagging=\\\"false\\\"\\n\\t\\t\\t@input=\\\"setValue\\\">\\n\\t\\t\\t<template slot=\\\"singleLabel\\\" slot-scope=\\\"props\\\">\\n\\t\\t\\t\\t<span class=\\\"option__icon\\\" :class=\\\"props.option.icon\\\" />\\n\\t\\t\\t\\t<!-- v-html can be used here as t() always passes our translated strings though DOMPurify.sanitize -->\\n\\t\\t\\t\\t<!-- eslint-disable-next-line vue/no-v-html -->\\n\\t\\t\\t\\t<span class=\\\"option__title option__title_single\\\" v-html=\\\"props.option.label\\\" />\\n\\t\\t\\t</template>\\n\\t\\t\\t<template slot=\\\"option\\\" slot-scope=\\\"props\\\">\\n\\t\\t\\t\\t<span class=\\\"option__icon\\\" :class=\\\"props.option.icon\\\" />\\n\\t\\t\\t\\t<!-- eslint-disable-next-line vue/no-v-html -->\\n\\t\\t\\t\\t<span v-if=\\\"props.option.$groupLabel\\\" class=\\\"option__title\\\" v-html=\\\"props.option.$groupLabel\\\" />\\n\\t\\t\\t\\t<!-- eslint-disable-next-line vue/no-v-html -->\\n\\t\\t\\t\\t<span v-else class=\\\"option__title\\\" v-html=\\\"props.option.label\\\" />\\n\\t\\t\\t</template>\\n\\t\\t</Multiselect>\\n\\t\\t<input v-if=\\\"!isPredefined\\\"\\n\\t\\t\\ttype=\\\"text\\\"\\n\\t\\t\\t:value=\\\"currentValue.pattern\\\"\\n\\t\\t\\t@input=\\\"updateCustom\\\">\\n\\t</div>\\n</template>\\n\\n<script>\\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\\nimport valueMixin from '../../mixins/valueMixin'\\n\\nexport default {\\n\\tname: 'RequestUserAgent',\\n\\tcomponents: {\\n\\t\\tMultiselect,\\n\\t},\\n\\tmixins: [\\n\\t\\tvalueMixin,\\n\\t],\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tnewValue: '',\\n\\t\\t\\tpredefinedTypes: [\\n\\t\\t\\t\\t{ pattern: 'android', label: t('workflowengine', 'Android client'), icon: 'icon-phone' },\\n\\t\\t\\t\\t{ pattern: 'ios', label: t('workflowengine', 'iOS client'), icon: 'icon-phone' },\\n\\t\\t\\t\\t{ pattern: 'desktop', label: t('workflowengine', 'Desktop client'), icon: 'icon-desktop' },\\n\\t\\t\\t\\t{ pattern: 'mail', label: t('workflowengine', 'Thunderbird & Outlook addons'), icon: 'icon-mail' },\\n\\t\\t\\t],\\n\\t\\t}\\n\\t},\\n\\tcomputed: {\\n\\t\\toptions() {\\n\\t\\t\\treturn [...this.predefinedTypes, this.customValue]\\n\\t\\t},\\n\\t\\tmatchingPredefined() {\\n\\t\\t\\treturn this.predefinedTypes\\n\\t\\t\\t\\t.find((type) => this.newValue === type.pattern)\\n\\t\\t},\\n\\t\\tisPredefined() {\\n\\t\\t\\treturn !!this.matchingPredefined\\n\\t\\t},\\n\\t\\tcustomValue() {\\n\\t\\t\\treturn {\\n\\t\\t\\t\\ticon: 'icon-settings-dark',\\n\\t\\t\\t\\tlabel: t('workflowengine', 'Custom user agent'),\\n\\t\\t\\t\\tpattern: '',\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tcurrentValue() {\\n\\t\\t\\tif (this.matchingPredefined) {\\n\\t\\t\\t\\treturn this.matchingPredefined\\n\\t\\t\\t}\\n\\t\\t\\treturn {\\n\\t\\t\\t\\ticon: 'icon-settings-dark',\\n\\t\\t\\t\\tlabel: t('workflowengine', 'Custom user agent'),\\n\\t\\t\\t\\tpattern: this.newValue,\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n\\tmethods: {\\n\\t\\tvalidateRegex(string) {\\n\\t\\t\\tconst regexRegex = /^\\\\/(.*)\\\\/([gui]{0,3})$/\\n\\t\\t\\tconst result = regexRegex.exec(string)\\n\\t\\t\\treturn result !== null\\n\\t\\t},\\n\\t\\tsetValue(value) {\\n\\t\\t\\t// TODO: check if value requires a regex and set the check operator according to that\\n\\t\\t\\tif (value !== null) {\\n\\t\\t\\t\\tthis.newValue = value.pattern\\n\\t\\t\\t\\tthis.$emit('input', this.newValue)\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tupdateCustom(event) {\\n\\t\\t\\tthis.newValue = event.target.value\\n\\t\\t\\tthis.$emit('input', this.newValue)\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n<style scoped>\\n\\t.multiselect, input[type='text'] {\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t.multiselect .multiselect__content-wrapper li>span {\\n\\t\\tdisplay: flex;\\n\\t\\twhite-space: nowrap;\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n\\t.multiselect::v-deep .multiselect__single {\\n\\t\\twidth: 100%;\\n\\t\\tdisplay: flex;\\n\\t\\twhite-space: nowrap;\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n\\t.option__icon {\\n\\t\\tdisplay: inline-block;\\n\\t\\tmin-width: 30px;\\n\\t\\tbackground-position: left;\\n\\t}\\n\\t.option__title {\\n\\t\\twhite-space: nowrap;\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"\\n.multiselect[data-v-79fa10a5] {\\n\\twidth: 100%;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Checks/RequestUserGroup.vue\"],\"names\":[],\"mappings\":\";AA4GA;CACA,WAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\\n -\\n - @author Julius Härtl <jus@bitgrid.net>\\n -\\n - @license GNU AGPL version 3 or any later version\\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 -->\\n\\n<template>\\n\\t<div>\\n\\t\\t<Multiselect :value=\\\"currentValue\\\"\\n\\t\\t\\t:loading=\\\"status.isLoading && groups.length === 0\\\"\\n\\t\\t\\t:options=\\\"groups\\\"\\n\\t\\t\\t:multiple=\\\"false\\\"\\n\\t\\t\\tlabel=\\\"displayname\\\"\\n\\t\\t\\ttrack-by=\\\"id\\\"\\n\\t\\t\\t@search-change=\\\"searchAsync\\\"\\n\\t\\t\\t@input=\\\"(value) => $emit('input', value.id)\\\" />\\n\\t</div>\\n</template>\\n\\n<script>\\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\\nimport axios from '@nextcloud/axios'\\nimport { generateOcsUrl } from '@nextcloud/router'\\n\\nconst groups = []\\nconst status = {\\n\\tisLoading: false,\\n}\\n\\nexport default {\\n\\tname: 'RequestUserGroup',\\n\\tcomponents: {\\n\\t\\tMultiselect,\\n\\t},\\n\\tprops: {\\n\\t\\tvalue: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\tdefault: '',\\n\\t\\t},\\n\\t\\tcheck: {\\n\\t\\t\\ttype: Object,\\n\\t\\t\\tdefault: () => { return {} },\\n\\t\\t},\\n\\t},\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tgroups,\\n\\t\\t\\tstatus,\\n\\t\\t}\\n\\t},\\n\\tcomputed: {\\n\\t\\tcurrentValue() {\\n\\t\\t\\treturn this.groups.find(group => group.id === this.value) || null\\n\\t\\t},\\n\\t},\\n\\tasync mounted() {\\n\\t\\tif (this.groups.length === 0) {\\n\\t\\t\\tawait this.searchAsync('')\\n\\t\\t}\\n\\t\\tif (this.currentValue === null) {\\n\\t\\t\\tawait this.searchAsync(this.value)\\n\\t\\t}\\n\\t},\\n\\tmethods: {\\n\\t\\tsearchAsync(searchQuery) {\\n\\t\\t\\tif (this.status.isLoading) {\\n\\t\\t\\t\\treturn\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.status.isLoading = true\\n\\t\\t\\treturn axios.get(generateOcsUrl('cloud/groups/details?limit=20&search={searchQuery}', { searchQuery })).then((response) => {\\n\\t\\t\\t\\tresponse.data.ocs.data.groups.forEach((group) => {\\n\\t\\t\\t\\t\\tthis.addGroup({\\n\\t\\t\\t\\t\\t\\tid: group.id,\\n\\t\\t\\t\\t\\t\\tdisplayname: group.displayname,\\n\\t\\t\\t\\t\\t})\\n\\t\\t\\t\\t})\\n\\t\\t\\t\\tthis.status.isLoading = false\\n\\t\\t\\t}, (error) => {\\n\\t\\t\\t\\tconsole.error('Error while loading group list', error.response)\\n\\t\\t\\t})\\n\\t\\t},\\n\\t\\taddGroup(group) {\\n\\t\\t\\tconst index = this.groups.findIndex((item) => item.id === group.id)\\n\\t\\t\\tif (index === -1) {\\n\\t\\t\\t\\tthis.groups.push(group)\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n<style scoped>\\n\\t.multiselect {\\n\\t\\twidth: 100%;\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 2819,\n\t\"./hi.js\": 2819,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","// 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 = 8318;","__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\t8318: 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__(82730); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","scopeValue","loadState","getApiUrl","url","generateOcsUrl","Vue","Vuex","Store","state","rules","scope","appstoreEnabled","operations","plugins","checks","operators","entities","events","map","entity","event","id","eventName","flat","mutations","addRule","rule","push","valid","updateRule","index","findIndex","item","newRule","Object","assign","removeRule","splice","addPluginCheck","plugin","class","addPluginOperator","color","actions","fetchRules","context","axios","data","values","ocs","forEach","commit","createNewRule","isComplex","fixedEntity","find","Date","getTime","name","operator","value","operation","JSON","parse","pushUpdateRule","confirmPassword","result","deleteRule","setValid","getters","getRules","filter","sort","rule1","rule2","getOperationForRule","getEntityForOperation","getEventsForOperation","getChecksForEntity","check","supportedEntities","indexOf","length","reduce","obj","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","icon","_v","_s","triggerHint","currentEvent","allEvents","on","updateEvent","scopedSlots","_u","key","fn","ref","isOpen","_l","displayName","_e","props","option","directives","rawName","expression","showDelete","t","updateCheck","model","callback","$$v","currentOption","currentOperator","currentComponent","component","tag","$event","validate","$set","invalid","valuePlaceholder","domProps","target","composing","deleteVisible","$emit","colored","style","backgroundColor","iconClass","backgroundImage","description","_t","borderLeftColor","removeCheck","onAddFilter","updateOperation","ruleStatus","saveRule","title","dirty","cancelRule","error","nativeOn","appstoreUrl","showMoreOperations","regexRegex","regexIPv4","regexIPv6","type","String","default","newValue","watch","immediate","handler","updateInternalValue","methods","currentValue","setValue","iconUrl","label","isPredefined","pattern","updateCustom","xmlToJson","xml","nodeType","attributes","j","attribute","nodeName","nodeValue","hasChildNodes","i","childNodes","old","method","generateRemoteUrl","then","response","json","dom","DOMParser","parseFromString","e","console","parseXml","list","canAssign","userAssignable","userVisible","xmlToTagList","tags","tagLabel","multiple","disabled","update","inputValObjects","slot","stringOrRegexOperators","placeholder","string","exec","FileMimeType","match","validateIPv4","FileSystemTag","$groupLabel","timezones","status","isLoading","groups","searchAsync","RequestURL","RequestTime","RequestUserAgent","RequestUserGroup","FileChecks","RequestChecks","window","OCA","WorkflowEngine","registerCheck","Plugin","store","registerOperator","ShippedChecks","checkPlugin","Settings","$mount","___CSS_LOADER_EXPORT___","module","webpackContext","req","webpackContextResolve","__webpack_require__","o","Error","code","keys","resolve","exports","__webpack_module_cache__","moduleId","cachedModule","undefined","loaded","__webpack_modules__","call","m","amdD","amdO","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","every","r","n","getter","__esModule","d","a","definition","defineProperty","enumerable","get","g","globalThis","Function","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"workflowengine-workflowengine.js?v=202cf704719a3e16f216","mappings":";gBAAIA,kGC2BEC,EAAsD,KAAzCC,EAAAA,EAAAA,WAAU,iBAAkB,SAAiB,SAAW,OAErEC,EAAY,SAACC,GAClB,OAAOC,EAAAA,EAAAA,gBAAe,oDAAqD,CAAEJ,WAAAA,IAAgBG,EAAM,uhCCGpGE,EAAAA,QAAAA,IAAQC,EAAAA,IAER,IAgJA,EAhJc,IAAIC,EAAAA,GAAM,CACvBC,MAAO,CACNC,MAAO,GACPC,OAAOT,EAAAA,EAAAA,WAAU,iBAAkB,SACnCU,iBAAiBV,EAAAA,EAAAA,WAAU,iBAAkB,mBAC7CW,YAAYX,EAAAA,EAAAA,WAAU,iBAAkB,aAExCY,QAASR,EAAAA,QAAAA,WAAe,CACvBS,OAAQ,GACRC,UAAW,KAGZC,UAAUf,EAAAA,EAAAA,WAAU,iBAAkB,YACtCgB,QAAQhB,EAAAA,EAAAA,WAAU,iBAAkB,YAClCiB,KAAI,SAACC,GAAD,OAAYA,EAAOF,OAAOC,KAAI,SAAAE,GAClC,UACCC,GAAI,GAAF,OAAKF,EAAOE,GAAZ,aAAmBD,EAAME,WAC3BH,OAAAA,GACGC,SAEDG,OACLT,QAAQb,EAAAA,EAAAA,WAAU,iBAAkB,WAErCuB,UAAW,CACVC,QADU,SACFjB,EAAOkB,GACdlB,EAAMC,MAAMkB,KAAZ,OAAsBD,GAAtB,IAA4BE,OAAO,MAEpCC,WAJU,SAICrB,EAAOkB,GACjB,IAAMI,EAAQtB,EAAMC,MAAMsB,WAAU,SAACC,GAAD,OAAUN,EAAKL,KAAOW,EAAKX,MACzDY,EAAUC,OAAOC,OAAO,GAAIT,GAClCrB,EAAAA,QAAAA,IAAQG,EAAMC,MAAOqB,EAAOG,IAE7BG,WATU,SASC5B,EAAOkB,GACjB,IAAMI,EAAQtB,EAAMC,MAAMsB,WAAU,SAACC,GAAD,OAAUN,EAAKL,KAAOW,EAAKX,MAC/Db,EAAMC,MAAM4B,OAAOP,EAAO,IAE3BQ,eAbU,SAaK9B,EAAO+B,GACrBlC,EAAAA,QAAAA,IAAQG,EAAMK,QAAQC,OAAQyB,EAAOC,MAAOD,IAE7CE,kBAhBU,SAgBQjC,EAAO+B,GACxBA,EAASL,OAAOC,OACf,CAAEO,MAAO,gCACTH,EAAQ/B,EAAMI,WAAW2B,EAAOlB,KAAO,SACG,IAAhCb,EAAMI,WAAW2B,EAAOlB,KAClChB,EAAAA,QAAAA,IAAQG,EAAMI,WAAY2B,EAAOlB,GAAIkB,KAIxCI,QAAS,CACFC,WADE,SACSC,GAAS,uJACFC,EAAAA,QAAAA,IAAU5C,EAAU,KADlB,gBACjB6C,EADiB,EACjBA,KACRb,OAAOc,OAAOD,EAAKE,IAAIF,MAAMxB,OAAO2B,SAAQ,SAACxB,GAC5CmB,EAAQM,OAAO,UAAWzB,MAHF,8CAM1B0B,cAPQ,SAOMP,EAASnB,GACtB,IAAIP,EAAS,KACTF,EAAS,IACU,IAAnBS,EAAK2B,WAA4C,KAArB3B,EAAK4B,cAGpCrC,EAAS,EADTE,GADAA,EAAS0B,EAAQrC,MAAMQ,SAASuC,MAAK,SAACvB,GAAD,OAAUN,EAAKV,UAAYU,EAAKV,SAAS,KAAOgB,EAAKX,QACvEa,OAAOc,OAAOH,EAAQrC,MAAMQ,UAAU,IACxCC,OAAO,GAAGK,YAG5BuB,EAAQM,OAAO,UAAW,CACzB9B,KAAM,IAAImC,MAAOC,UACjBjB,MAAOd,EAAKL,GACZF,OAAQA,EAASA,EAAOE,GAAKK,EAAK4B,YAClCrC,OAAAA,EACAyC,KAAM,GACN5C,OAAQ,CACP,CAAE0B,MAAO,KAAMmB,SAAU,KAAMC,MAAO,KAEvCC,UAAWnC,EAAKmC,WAAa,MAG/BhC,WA5BQ,SA4BGgB,EAASnB,GACnBmB,EAAQM,OAAO,aAAf,OACIzB,GADJ,IAECT,OAA+B,iBAAhBS,EAAKT,OAAsB6C,KAAKC,MAAMrC,EAAKT,QAAUS,EAAKT,WAG3EmB,WAlCQ,SAkCGS,EAASnB,GACnBmB,EAAQM,OAAO,aAAczB,IAExBsC,eArCE,SAqCanB,EAASnB,GAAM,wIACP,IAAxBmB,EAAQrC,MAAME,MADiB,gCAE5BuD,GAAAA,GAF4B,YAK/BvC,EAAKL,GAAK,GALqB,gCAMnByB,EAAAA,QAAAA,KAAW5C,EAAU,IAAKwB,GANP,OAMlCwC,EANkC,+CAQnBpB,EAAAA,QAAAA,IAAU5C,EAAU,IAAD,OAAKwB,EAAKL,KAAOK,GARjB,QAQlCwC,EARkC,eAUnC7D,EAAAA,QAAAA,IAAQqB,EAAM,KAAMwC,EAAOnB,KAAKE,IAAIF,KAAK1B,IACzCwB,EAAQM,OAAO,aAAczB,GAXM,+CAa9ByC,WAlDE,SAkDStB,EAASnB,GAAM,+IACzBuC,GAAAA,GADyB,uBAEzBnB,EAAAA,QAAAA,OAAa5C,EAAU,IAAD,OAAKwB,EAAKL,MAFP,OAG/BwB,EAAQM,OAAO,aAAczB,GAHE,8CAKhC0C,SAvDQ,SAuDCvB,EAvDD,GAuD2B,IAAfnB,EAAe,EAAfA,KAAME,EAAS,EAATA,MACzBF,EAAKE,MAAQA,EACbiB,EAAQM,OAAO,aAAczB,KAG/B2C,QAAS,CACRC,SADQ,SACC9D,GACR,OAAOA,EAAMC,MAAM8D,QAAO,SAAC7C,GAAD,YAAkD,IAAjClB,EAAMI,WAAWc,EAAKc,UAAwBgC,MAAK,SAACC,EAAOC,GACrG,OAAOD,EAAMpD,GAAKqD,EAAMrD,IAAMqD,EAAMlC,MAAQiC,EAAMjC,UAGpDmC,oBANQ,SAMYnE,GACnB,OAAO,SAACkB,GAAD,OAAUlB,EAAMI,WAAWc,EAAKc,SAExCoC,sBATQ,SAScpE,GACrB,OAAO,SAACqD,GAAD,OAAerD,EAAMQ,SAASuC,MAAK,SAACpC,GAAD,OAAY0C,EAAUP,cAAgBnC,EAAOE,QAExFwD,sBAZQ,SAYcrE,GACrB,OAAO,SAACqD,GAAD,OAAerD,EAAMS,SAS7B6D,mBAtBQ,SAsBWtE,GAClB,OAAO,SAACW,GACP,OAAOe,OAAOc,OAAOxC,EAAMM,QACzByD,QAAO,SAACQ,GAAD,OAAWA,EAAMC,kBAAkBC,QAAQ9D,IAAW,GAAwC,IAAnC4D,EAAMC,kBAAkBE,UAC1FhE,KAAI,SAAC6D,GAAD,OAAWvE,EAAMK,QAAQC,OAAOiE,EAAM1D,OAC1C8D,QAAO,SAACC,EAAKpD,GAEb,OADAoD,EAAIpD,EAAKQ,OAASR,EACXoD,IACL,mGC7K0K,ECgClL,CACA,aACA,YACA,iBAEA,OACA,MACA,YACA,cAGA,UACA,OADA,WAEA,kEAEA,UAJA,WAKA,2DAEA,UAPA,WAQA,kEAEA,aAVA,WAUA,WACA,2HAGA,SACA,YADA,SACA,GACA,iBAIA,IAEA,EAFA,mBACA,8FAGA,EADA,WACA,yCAEA,KAGA,gCACA,qHACA,oCAdA,uMCjDIC,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,eCFA,GAXgB,OACd,GCTW,WAAa,IAAIM,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,YAAY,SAAS,CAAEN,EAAI9B,UAAUR,WAA2C,KAA9BsC,EAAI9B,UAAUP,YAAoByC,EAAG,MAAM,CAACE,YAAY,aAAa,CAACF,EAAG,MAAM,CAACE,YAAY,eAAeC,MAAM,CAAC,IAAMP,EAAIxE,OAAOgF,QAAQR,EAAIS,GAAG,KAAKL,EAAG,OAAO,CAACE,YAAY,sCAAsC,CAACN,EAAIS,GAAGT,EAAIU,GAAGV,EAAI9B,UAAUyC,kBAAkBP,EAAG,cAAc,CAACG,MAAM,CAAC,MAAQP,EAAIY,aAAa,QAAUZ,EAAIa,UAAU,WAAW,KAAK,UAAW,EAAK,cAAa,EAAM,SAAWb,EAAIa,UAAUtB,QAAU,GAAGuB,GAAG,CAAC,MAAQd,EAAIe,aAAaC,YAAYhB,EAAIiB,GAAG,CAAC,CAACC,IAAI,YAAYC,GAAG,SAASC,GAChpB,IAAI/D,EAAS+D,EAAI/D,OACbgE,EAASD,EAAIC,OACjB,MAAO,CAAEhE,EAAOkC,SAAW8B,EAAQjB,EAAG,MAAM,CAACE,YAAY,aAAa,CAACF,EAAG,MAAM,CAACE,YAAY,eAAeC,MAAM,CAAC,IAAMlD,EAAO,GAAG7B,OAAOgF,QAAQR,EAAIS,GAAG,KAAKT,EAAIsB,GAAG,GAAS,SAASrD,EAAM9B,GAAO,OAAOiE,EAAG,OAAO,CAACc,IAAIjD,EAAMvC,GAAG4E,YAAY,2CAA2C,CAACN,EAAIS,GAAGT,EAAIU,GAAGzC,EAAMsD,aAAa,KAAMpF,EAAM,EAAIkB,EAAOkC,OAAQa,EAAG,OAAO,CAACJ,EAAIS,GAAG,QAAQT,EAAIwB,WAAU,GAAGxB,EAAIwB,QAAQ,CAACN,IAAI,SAASC,GAAG,SAASM,GAAO,MAAO,CAACrB,EAAG,MAAM,CAACE,YAAY,eAAeC,MAAM,CAAC,IAAMkB,EAAMC,OAAOlG,OAAOgF,QAAQR,EAAIS,GAAG,KAAKL,EAAG,OAAO,CAACE,YAAY,iBAAiB,CAACN,EAAIS,GAAGT,EAAIU,GAAGe,EAAMC,OAAOH,wBAAwB,KAC3lB,IDQpB,EACA,KACA,WACA,MAI8B,2BEnBkJ,ECgDlL,CACA,aACA,YACA,iBACA,YACA,iBAEA,YACA,kBAEA,OACA,OACA,YACA,aAEA,MACA,YACA,cAGA,KApBA,WAqBA,OACA,iBACA,mBACA,qBACA,WACA,WAGA,UACA,OADA,WAEA,iEAEA,UAJA,WAKA,gCACA,sDACA,2BACA,cAEA,GAEA,iBAZA,WAaA,0BACA,gDADA,IAGA,iBAhBA,WAiBA,0DACA,2CAEA,KAGA,OACA,iBADA,WAEA,kBAGA,QAzDA,WAyDA,WACA,wCACA,iDACA,8FAEA,yBACA,uEAEA,iBAEA,SACA,WADA,WAEA,uBAEA,WAJA,WAKA,uBAEA,SAPA,WAQA,cACA,kDACA,sDAGA,+BACA,mCAEA,YAhBA,WAgBA,WACA,gFACA,sDACA,wCAGA,0CAEA,kDAEA,gBAEA,8CCpII,EAAU,GAEd,EAAQ5B,kBAAoB,IAC5B,EAAQC,cAAgB,IAElB,EAAQC,OAAS,SAAc,KAAM,QAE3C,EAAQC,OAAS,IACjB,EAAQC,mBAAqB,IAEhB,IAAI,IAAS,GAKJ,KAAW,YAAiB,WALlD,ICFA,GAXgB,OACd,GCTW,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACuB,WAAW,CAAC,CAAC5D,KAAK,gBAAgB6D,QAAQ,kBAAkB3D,MAAO+B,EAAc,WAAE6B,WAAW,eAAevB,YAAY,QAAQQ,GAAG,CAAC,MAAQd,EAAI8B,aAAa,CAAC1B,EAAG,cAAc,CAACgB,IAAI,gBAAgBb,MAAM,CAAC,QAAUP,EAAIN,QAAQ,MAAQ,OAAO,WAAW,QAAQ,eAAc,EAAM,YAAcM,EAAI+B,EAAE,iBAAkB,oBAAoBjB,GAAG,CAAC,MAAQd,EAAIgC,aAAaC,MAAM,CAAChE,MAAO+B,EAAiB,cAAEkC,SAAS,SAAUC,GAAMnC,EAAIoC,cAAcD,GAAKN,WAAW,mBAAmB7B,EAAIS,GAAG,KAAKL,EAAG,cAAc,CAACE,YAAY,aAAaC,MAAM,CAAC,UAAYP,EAAIoC,cAAc,QAAUpC,EAAI5E,UAAU,MAAQ,OAAO,WAAW,WAAW,eAAc,EAAM,YAAc4E,EAAI+B,EAAE,iBAAkB,wBAAwBjB,GAAG,CAAC,MAAQd,EAAIgC,aAAaC,MAAM,CAAChE,MAAO+B,EAAmB,gBAAEkC,SAAS,SAAUC,GAAMnC,EAAIqC,gBAAgBF,GAAKN,WAAW,qBAAqB7B,EAAIS,GAAG,KAAMT,EAAIqC,iBAAmBrC,EAAIsC,iBAAkBlC,EAAGJ,EAAIoC,cAAcG,UAAU,CAACC,IAAI,YAAYlC,YAAY,SAASC,MAAM,CAAC,UAAYP,EAAIoC,cAAc,MAAQpC,EAAIZ,OAAO0B,GAAG,CAAC,MAAQd,EAAIgC,YAAY,MAAQ,SAASS,IAASzC,EAAI/D,OAAM,IAAS+D,EAAI0C,YAAY,QAAU,SAASD,KAAUzC,EAAI/D,OAAM,IAAU+D,EAAI0C,aAAaT,MAAM,CAAChE,MAAO+B,EAAIZ,MAAW,MAAE8C,SAAS,SAAUC,GAAMnC,EAAI2C,KAAK3C,EAAIZ,MAAO,QAAS+C,IAAMN,WAAW,iBAAiBzB,EAAG,QAAQ,CAACuB,WAAW,CAAC,CAAC5D,KAAK,QAAQ6D,QAAQ,UAAU3D,MAAO+B,EAAIZ,MAAW,MAAEyC,WAAW,gBAAgBvB,YAAY,SAASzD,MAAM,CAAE+F,SAAU5C,EAAI/D,OAAQsE,MAAM,CAAC,KAAO,OAAO,UAAYP,EAAIoC,cAAc,YAAcpC,EAAI6C,kBAAkBC,SAAS,CAAC,MAAS9C,EAAIZ,MAAW,OAAG0B,GAAG,CAAC,MAAQ,CAAC,SAAS2B,GAAWA,EAAOM,OAAOC,WAAqBhD,EAAI2C,KAAK3C,EAAIZ,MAAO,QAASqD,EAAOM,OAAO9E,QAAQ+B,EAAIgC,gBAAgBhC,EAAIS,GAAG,KAAMT,EAAIiD,gBAAkBjD,EAAIoC,cAAehC,EAAG,UAAU,CAACA,EAAG,eAAe,CAACG,MAAM,CAAC,KAAO,cAAcO,GAAG,CAAC,MAAQ,SAAS2B,GAAQ,OAAOzC,EAAIkD,MAAM,eAAe,GAAGlD,EAAIwB,MAAM,KAC19D,IDWpB,EACA,KACA,WACA,MAI8B,QEnBsJ,ECmBtL,CACA,iBACA,OACA,WACA,YACA,aAEA,SACA,aACA,yBCjBI,EAAU,GAEd,EAAQ7B,kBAAoB,IAC5B,EAAQC,cAAgB,IAElB,EAAQC,OAAS,SAAc,KAAM,QAE3C,EAAQC,OAAS,IACjB,EAAQC,mBAAqB,IAEhB,IAAI,IAAS,GAKJ,KAAW,YAAiB,WALlD,ICFA,IAXgB,OACd,GCTW,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,YAAY,gBAAgBzD,MAAM,CAAC,QAAWmD,EAAImD,SAASC,MAAM,CAAGC,gBAAiBrD,EAAImD,QAAUnD,EAAI9B,UAAUnB,MAAQ,gBAAkB,CAACqD,EAAG,MAAM,CAACE,YAAY,OAAOzD,MAAMmD,EAAI9B,UAAUoF,UAAUF,MAAM,CAAGG,gBAAiBvD,EAAI9B,UAAUoF,UAAY,GAAM,OAAUtD,EAAI9B,UAAc,KAAI,OAAU8B,EAAIS,GAAG,KAAKL,EAAG,MAAM,CAACE,YAAY,8BAA8B,CAACF,EAAG,KAAK,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAI9B,UAAUH,SAASiC,EAAIS,GAAG,KAAKL,EAAG,QAAQ,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAI9B,UAAUsF,gBAAgBxD,EAAIS,GAAG,KAAKL,EAAG,MAAM,CAAEJ,EAAW,QAAEI,EAAG,SAAS,CAACJ,EAAIS,GAAG,aAAaT,EAAIU,GAAGV,EAAI+B,EAAE,iBAAkB,iBAAiB,cAAc/B,EAAIwB,SAASxB,EAAIS,GAAG,KAAKL,EAAG,MAAM,CAACE,YAAY,yBAAyB,CAACN,EAAIyD,GAAG,YAAY,OACjxB,IDWpB,EACA,KACA,WACA,MAI8B,wUEyChC,IC5DiL,GD4DjL,CACA,YACA,YACA,2DAEA,YACA,aAEA,OACA,MACA,YACA,cAGA,KAdA,WAeA,OACA,WACA,UACA,WACA,qBACA,oBAGA,UACA,UADA,WAEA,2DAEA,WAJA,WAKA,6HACA,CACA,yDACA,iCACA,yDAGA,WAGA,sEAFA,kEAKA,kBAlBA,WAmBA,kDACA,oCAGA,QA9CA,WA+CA,yDAEA,SACA,gBADA,SACA,qJACA,6BADA,SAEA,eAFA,8CAIA,SALA,SAKA,GACA,gBACA,8CAEA,WATA,WAUA,aACA,eAGA,gBACA,8CAEA,SAjBA,WAiBA,oKAEA,2CAFA,OAGA,WACA,aACA,kDALA,gDAOA,0CACA,4CARA,4DAWA,WA5BA,WA4BA,oKAEA,uCAFA,sDAIA,4CACA,4CALA,2DAQA,WApCA,WAqCA,eACA,8CAEA,qDACA,wDACA,gBAIA,YA9CA,SA8CA,qJACA,yDACA,GACA,2BAEA,uCALA,8CAQA,YAtDA,WAwDA,0EE1JI,GAAU,gsBAEd,GAAQ9D,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YC6BlD,ICvDqL,GDyDrL,CACA,gBACA,YACA,aACA,MErDgB,OACd,ICTW,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAQF,EAAa,UAAEI,EAAG,MAAM,CAACE,YAAY,eAAe8C,MAAM,CAAGM,gBAAiB1D,EAAI9B,UAAUnB,OAAS,KAAO,CAACqD,EAAG,MAAM,CAACE,YAAY,WAAW,CAACF,EAAG,IAAI,CAACA,EAAG,OAAO,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAI+B,EAAE,iBAAkB,YAAY/B,EAAIS,GAAG,KAAKL,EAAG,QAAQ,CAACG,MAAM,CAAC,KAAOP,EAAIjE,MAAM+E,GAAG,CAAC,OAASd,EAAI9D,eAAe,GAAG8D,EAAIS,GAAG,KAAKT,EAAIsB,GAAItB,EAAIjE,KAAW,QAAE,SAASqD,EAAMjD,GAAO,OAAOiE,EAAG,IAAI,CAACc,IAAI/E,GAAO,CAACiE,EAAG,OAAO,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAI+B,EAAE,iBAAkB,WAAW/B,EAAIS,GAAG,KAAKL,EAAG,QAAQ,CAACG,MAAM,CAAC,MAAQnB,EAAM,KAAOY,EAAIjE,MAAM+E,GAAG,CAAC,OAASd,EAAI9D,WAAW,SAAW8D,EAAI0C,SAAS,OAAS,SAASD,GAAQ,OAAOzC,EAAI2D,YAAYvE,QAAY,MAAKY,EAAIS,GAAG,KAAKL,EAAG,IAAI,CAACA,EAAG,QAAQJ,EAAIS,GAAG,KAAMT,EAAqB,kBAAEI,EAAG,QAAQ,CAACE,YAAY,aAAaC,MAAM,CAAC,KAAO,SAAS,MAAQ,oBAAoBO,GAAG,CAAC,MAAQd,EAAI4D,eAAe5D,EAAIwB,QAAQ,GAAGxB,EAAIS,GAAG,KAAKL,EAAG,MAAM,CAACE,YAAY,2BAA2BN,EAAIS,GAAG,KAAKL,EAAG,MAAM,CAACE,YAAY,UAAU,CAACF,EAAG,YAAY,CAACG,MAAM,CAAC,UAAYP,EAAI9B,UAAU,SAAU,IAAQ,CAAE8B,EAAI9B,UAAiB,QAAEkC,EAAGJ,EAAI9B,UAAUwB,QAAQ,CAAC8C,IAAI,YAAY1B,GAAG,CAAC,MAAQd,EAAI6D,iBAAiB5B,MAAM,CAAChE,MAAO+B,EAAIjE,KAAc,UAAEmG,SAAS,SAAUC,GAAMnC,EAAI2C,KAAK3C,EAAIjE,KAAM,YAAaoG,IAAMN,WAAW,oBAAoB7B,EAAIwB,MAAM,GAAGxB,EAAIS,GAAG,KAAKL,EAAG,MAAM,CAACE,YAAY,WAAW,CAACF,EAAG,SAAS,CAACE,YAAY,qBAAqBzD,MAAMmD,EAAI8D,WAAWjH,MAAMiE,GAAG,CAAC,MAAQd,EAAI+D,WAAW,CAAC/D,EAAIS,GAAG,aAAaT,EAAIU,GAAGV,EAAI8D,WAAWE,OAAO,cAAchE,EAAIS,GAAG,KAAMT,EAAIjE,KAAKL,IAAM,GAAKsE,EAAIiE,MAAO7D,EAAG,SAAS,CAACU,GAAG,CAAC,MAAQd,EAAIkE,aAAa,CAAClE,EAAIS,GAAG,aAAaT,EAAIU,GAAGV,EAAI+B,EAAE,iBAAkB,WAAW,cAAgB/B,EAAIiE,MAA8HjE,EAAIwB,KAA3HpB,EAAG,SAAS,CAACU,GAAG,CAAC,MAAQd,EAAIxB,aAAa,CAACwB,EAAIS,GAAG,aAAaT,EAAIU,GAAGV,EAAI+B,EAAE,iBAAkB,WAAW,gBAAyB/B,EAAIS,GAAG,KAAMT,EAAS,MAAEI,EAAG,IAAI,CAACE,YAAY,iBAAiB,CAACN,EAAIS,GAAG,WAAWT,EAAIU,GAAGV,EAAImE,OAAO,YAAYnE,EAAIwB,MAAM,KAAKxB,EAAIwB,OACp6D,IDWpB,EACA,KACA,WACA,MAI8B,SF4ChC,KANA,WAOA,OACA,sBACA,0DAGA,sBACA,SACA,qBAEA,SACA,kCACA,cACA,2BAPA,IASA,kBATA,WAUA,2CAxBA,GA0BA,kBAZA,WAaA,+BACA,+BAEA,uCA9BA,IAgCA,iBAlBA,WAmBA,iEAGA,QAlCA,WAmCA,oCAEA,SACA,cADA,SACA,GACA,uDIrFI,GAAU,GAEd,GAAQ7B,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICFA,IAXgB,OACd,ICTW,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACG,MAAM,CAAC,GAAK,mBAAmB,CAACH,EAAG,MAAM,CAACE,YAAY,WAAW,CAACF,EAAG,KAAK,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAI+B,EAAE,iBAAkB,uBAAuB/B,EAAIS,GAAG,KAAoB,IAAdT,EAAIjF,MAAaqF,EAAG,IAAI,CAACE,YAAY,iBAAiB,CAACF,EAAG,IAAI,CAACG,MAAM,CAAC,KAAO,qCAAqC,CAACP,EAAIS,GAAGT,EAAIU,GAAGV,EAAI+B,EAAE,iBAAkB,6FAA6F/B,EAAIwB,KAAKxB,EAAIS,GAAG,KAAKL,EAAG,mBAAmB,CAACE,YAAY,UAAUC,MAAM,CAAC,KAAO,QAAQ,IAAM,QAAQ,CAACP,EAAIsB,GAAItB,EAAqB,mBAAE,SAAS9B,GAAW,OAAOkC,EAAG,YAAY,CAACc,IAAIhD,EAAUxC,GAAG6E,MAAM,CAAC,UAAYrC,GAAWkG,SAAS,CAAC,MAAQ,SAAS3B,GAAQ,OAAOzC,EAAIvC,cAAcS,UAAiB8B,EAAIS,GAAG,KAAMT,EAAoB,iBAAEI,EAAG,IAAI,CAACc,IAAI,MAAMZ,YAAY,6BAA6BC,MAAM,CAAC,KAAOP,EAAIqE,cAAc,CAACjE,EAAG,MAAM,CAACE,YAAY,kBAAkBN,EAAIS,GAAG,KAAKL,EAAG,MAAM,CAACE,YAAY,8BAA8B,CAACF,EAAG,KAAK,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAI+B,EAAE,iBAAkB,kBAAkB/B,EAAIS,GAAG,KAAKL,EAAG,QAAQ,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAI+B,EAAE,iBAAkB,gCAAgC/B,EAAIwB,MAAM,GAAGxB,EAAIS,GAAG,KAAMT,EAAqB,kBAAEI,EAAG,MAAM,CAACE,YAAY,iBAAiB,CAACF,EAAG,SAAS,CAACE,YAAY,OAAOzD,MAAMmD,EAAIsE,mBAAqB,kBAAoB,kBAAkBxD,GAAG,CAAC,MAAQ,SAAS2B,GAAQzC,EAAIsE,oBAAoBtE,EAAIsE,sBAAsB,CAACtE,EAAIS,GAAG,aAAaT,EAAIU,GAAGV,EAAIsE,mBAAqBtE,EAAI+B,EAAE,iBAAkB,aAAe/B,EAAI+B,EAAE,iBAAkB,cAAc,gBAAgB/B,EAAIwB,KAAKxB,EAAIS,GAAG,KAAoB,IAAdT,EAAIjF,MAAaqF,EAAG,KAAK,CAACE,YAAY,oBAAoB,CAACN,EAAIS,GAAG,WAAWT,EAAIU,GAAGV,EAAI+B,EAAE,iBAAkB,qBAAqB,YAAY3B,EAAG,KAAK,CAACE,YAAY,oBAAoB,CAACN,EAAIS,GAAG,WAAWT,EAAIU,GAAGV,EAAI+B,EAAE,iBAAkB,eAAe,aAAa,GAAG/B,EAAIS,GAAG,KAAMT,EAAIlF,MAAMyE,OAAS,EAAGa,EAAG,mBAAmB,CAACG,MAAM,CAAC,KAAO,UAAUP,EAAIsB,GAAItB,EAAS,OAAE,SAASjE,GAAM,OAAOqE,EAAG,OAAO,CAACc,IAAInF,EAAKL,GAAG6E,MAAM,CAAC,KAAOxE,QAAU,GAAGiE,EAAIwB,MAAM,KACtgE,IDWpB,EACA,KACA,WACA,MAI8B,QEG1B+C,GAAa,yBACbC,GAAY,8LACZC,GAAY,gsBC8BlB,GA/BmB,CAClBhD,MAAO,CACNxD,MAAO,CACNyG,KAAMC,OACNC,QAAS,IAEVxF,MAAO,CACNsF,KAAMnI,OACNqI,QAAS,WAAQ,MAAO,MAG1BxH,KAXkB,WAYjB,MAAO,CACNyH,SAAU,KAGZC,MAAO,CACN7G,MAAO,CACN8G,WAAW,EACXC,QAFM,SAEE/G,GACPgC,KAAKgF,oBAAoBhH,MAI5BiH,QAAS,CACRD,oBADQ,SACYhH,GACnBgC,KAAK4E,SAAW5G,gHCOnB,ICxD+L,GDwD/L,CACA,oBACA,YACA,iBAEA,QACA,IAEA,KARA,WASA,OACA,iBACA,CACA,mBACA,mCACA,gCAEA,CACA,oBACA,mCACA,wBAEA,CACA,8DACA,6CACA,mEAEA,CACA,4DACA,0CACA,8BAKA,UACA,QADA,WAEA,orBAEA,aAJA,WAIA,WAEA,QADA,yEAMA,YAXA,WAYA,OACA,0BACA,4CACA,aAGA,aAlBA,WAkBA,WAEA,OADA,yEAIA,CACA,0BACA,4CACA,yBAIA,SACA,cADA,SACA,GAGA,cAFA,yBACA,SAGA,SANA,SAMA,GACA,WACA,wBACA,oCAGA,aAZA,SAYA,GACA,6BACA,gDE3HI,GAAU,GAEd,GAAQ0B,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICFA,IAXgB,OACd,ICTW,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACA,EAAG,cAAc,CAACG,MAAM,CAAC,MAAQP,EAAImF,aAAa,YAAcnF,EAAI+B,EAAE,iBAAkB,sBAAsB,MAAQ,QAAQ,WAAW,UAAU,QAAU/B,EAAIN,QAAQ,UAAW,EAAM,SAAU,GAAOoB,GAAG,CAAC,MAAQd,EAAIoF,UAAUpE,YAAYhB,EAAIiB,GAAG,CAAC,CAACC,IAAI,cAAcC,GAAG,SAASM,GAAO,MAAO,CAAEA,EAAMC,OAAW,KAAEtB,EAAG,OAAO,CAACE,YAAY,eAAezD,MAAM4E,EAAMC,OAAOlB,OAAOJ,EAAG,MAAM,CAACG,MAAM,CAAC,IAAMkB,EAAMC,OAAO2D,WAAWrF,EAAIS,GAAG,KAAKL,EAAG,OAAO,CAACE,YAAY,sCAAsC,CAACN,EAAIS,GAAGT,EAAIU,GAAGe,EAAMC,OAAO4D,aAAa,CAACpE,IAAI,SAASC,GAAG,SAASM,GAAO,MAAO,CAAEA,EAAMC,OAAW,KAAEtB,EAAG,OAAO,CAACE,YAAY,eAAezD,MAAM4E,EAAMC,OAAOlB,OAAOJ,EAAG,MAAM,CAACG,MAAM,CAAC,IAAMkB,EAAMC,OAAO2D,WAAWrF,EAAIS,GAAG,KAAKL,EAAG,OAAO,CAACE,YAAY,iBAAiB,CAACN,EAAIS,GAAGT,EAAIU,GAAGe,EAAMC,OAAO4D,iBAAiBtF,EAAIS,GAAG,KAAOT,EAAIuF,aAA+LvF,EAAIwB,KAArLpB,EAAG,QAAQ,CAACG,MAAM,CAAC,KAAO,OAAO,YAAcP,EAAI+B,EAAE,iBAAkB,8BAA8Be,SAAS,CAAC,MAAQ9C,EAAImF,aAAaK,SAAS1E,GAAG,CAAC,MAAQd,EAAIyF,iBAA0B,KACxlC,IDWpB,EACA,KACA,WACA,MAI8B,QES1BC,GAAY,SAAZA,EAAaC,GAClB,IAAIlG,EAAM,GAEV,GAAqB,IAAjBkG,EAAIC,UACP,GAAID,EAAIE,WAAWtG,OAAS,EAAG,CAC9BE,EAAI,eAAiB,GACrB,IAAK,IAAIqG,EAAI,EAAGA,EAAIH,EAAIE,WAAWtG,OAAQuG,IAAK,CAC/C,IAAMC,EAAYJ,EAAIE,WAAWxJ,KAAKyJ,GACtCrG,EAAI,eAAesG,EAAUC,UAAYD,EAAUE,iBAG1B,IAAjBN,EAAIC,WACdnG,EAAMkG,EAAIM,WAGX,GAAIN,EAAIO,gBACP,IAAK,IAAIC,EAAI,EAAGA,EAAIR,EAAIS,WAAW7G,OAAQ4G,IAAK,CAC/C,IAAM9J,EAAOsJ,EAAIS,WAAW/J,KAAK8J,GAC3BH,EAAW3J,EAAK2J,SACtB,QAA+B,IAAnBvG,EAAIuG,GACfvG,EAAIuG,GAAYN,EAAUrJ,OACpB,CACN,QAAkC,IAAvBoD,EAAIuG,GAAUhK,KAAsB,CAC9C,IAAMqK,EAAM5G,EAAIuG,GAChBvG,EAAIuG,GAAY,GAChBvG,EAAIuG,GAAUhK,KAAKqK,GAEpB5G,EAAIuG,GAAUhK,KAAK0J,EAAUrJ,KAIhC,OAAOoD,GCbR,KC9CuM,GD+CvM,CACA,sBACA,YACA,iBAEA,OACA,OACA,YACA,aAEA,OACA,oBACA,cAEA,UACA,aACA,YAEA,UACA,aACA,aAGA,KAvBA,WAwBA,OACA,mBACA,UAGA,UACA,GADA,WAEA,yCAGA,OACA,MADA,SACA,GACA,6CAGA,aAvCA,WAuCA,WACA,wBACA,ODMQtC,EAAAA,EAAAA,SAAM,CACZmJ,OAAQ,WACR9L,KAAK+L,EAAAA,EAAAA,mBAAkB,OAAS,eAChCnJ,KAAM,sUAUJoJ,MAAK,SAACC,GACR,OApCmB,SAACd,GACrB,IAAMe,EAAOhB,GAXG,SAACC,GACjB,IAAIgB,EAAM,KACV,IACCA,GAAO,IAAIC,WAAaC,gBAAgBlB,EAAK,YAC5C,MAAOmB,GACRC,QAAQ5C,MAAM,+BAAgC2C,GAE/C,OAAOH,EAIgBK,CAASrB,IAC1BsB,EAAOP,EAAK,iBAAiB,cAC7BnI,EAAS,GACf,IAAK,IAAMpC,KAAS8K,EAAM,CACzB,IAAMzE,EAAMyE,EAAK9K,GAAO,cAES,oBAA7BqG,EAAI,YAAY,UAGpBjE,EAAOvC,KAAK,CACXN,GAAI8G,EAAI,UAAU,SAAS,SAC3BjB,YAAaiB,EAAI,UAAU,mBAAmB,SAC9C0E,UAAuD,SAA5C1E,EAAI,UAAU,iBAAiB,SAC1C2E,eAAiE,SAAjD3E,EAAI,UAAU,sBAAsB,SACpD4E,YAA2D,SAA9C5E,EAAI,UAAU,mBAAmB,WAGhD,OAAOjE,EAkBC8I,CAAaZ,EAASrJ,SCnB/B,kBACA,SACA,wCACA,iCAEA,SACA,eADA,WACA,WACA,4BACA,GAEA,cACA,oDACA,kEAGA,sDAGA,OAbA,WAcA,cACA,yEAEA,4BACA,uBAEA,6CAIA,SAxBA,YAwBA,uDACA,aACA,kDAEA,MACA,kDAEA,KE7HgM,GCgChM,CACA,qBACA,YACA,gBC5BgB,OACd,ICRW,WAAa,IAAI4C,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,cAAc,CAACE,YAAY,kBAAkBC,MAAM,CAAC,QAAUP,EAAIsH,KAAK,gBAAgB,EAAE,YAActH,EAAIsF,MAAM,WAAW,KAAK,eAAetF,EAAIuH,SAAS,SAAWvH,EAAIwH,SAAS,mBAAkB,EAAM,YAAY,GAAG,SAAWxH,EAAIyH,UAAU3G,GAAG,CAAC,MAAQd,EAAI0H,QAAQ1G,YAAYhB,EAAIiB,GAAG,CAAC,CAACC,IAAI,SAASC,GAAG,SAASpG,GAAO,MAAO,CAACiF,EAAIS,GAAG,SAAST,EAAIU,GAAGV,EAAIuH,SAASxM,EAAM2G,SAAS,aAAaO,MAAM,CAAChE,MAAO+B,EAAmB,gBAAEkC,SAAS,SAAUC,GAAMnC,EAAI2H,gBAAgBxF,GAAKN,WAAW,oBAAoB,CAACzB,EAAG,OAAO,CAACG,MAAM,CAAC,KAAO,YAAYqH,KAAK,YAAY,CAAC5H,EAAIS,GAAGT,EAAIU,GAAGV,EAAI+B,EAAE,OAAQ,sBAC/pB,IDUpB,EACA,KACA,KACA,MAI8B,SDmBhC,OACA,OACA,YACA,aAGA,KAXA,WAYA,OACA,cAGA,OACA,MADA,WAEA,qBAGA,YArBA,WAsBA,oBAEA,SACA,YADA,WAEA,gBACA,yBAEA,oBAGA,OARA,WASA,yCG/CA,IAXgB,OACd,ICRW,WAAa,IAAI/B,EAAIC,KAASC,EAAGF,EAAIG,eAAuC,OAAjBH,EAAIK,MAAMD,IAAIF,GAAa,iBAAiB,CAACK,MAAM,CAAC,UAAW,EAAM,MAAQP,EAAI+B,EAAE,iBAAkB,iBAAiBjB,GAAG,CAAC,MAAQd,EAAI0H,QAAQzF,MAAM,CAAChE,MAAO+B,EAAY,SAAEkC,SAAS,SAAUC,GAAMnC,EAAI6E,SAAS1C,GAAKN,WAAW,gBAClR,IDUpB,EACA,KACA,WACA,MAI8B,QES1BgG,GAAyB,WAC9B,MAAO,CACN,CAAE7J,SAAU,UAAWD,KAAMgE,EAAE,iBAAkB,YACjD,CAAE/D,SAAU,WAAYD,KAAMgE,EAAE,iBAAkB,mBAClD,CAAE/D,SAAU,KAAMD,KAAMgE,EAAE,iBAAkB,OAC5C,CAAE/D,SAAU,MAAOD,KAAMgE,EAAE,iBAAkB,aAwE/C,GApEmB,CAClB,CACClF,MAAO,uCACPkB,KAAMgE,EAAE,iBAAkB,aAC1B3G,UAAWyM,GACXC,YAAa,SAAC1I,GACb,MAAuB,YAAnBA,EAAMpB,UAA6C,aAAnBoB,EAAMpB,SAClC,gBAED,gBAER0E,ShBAsB,SAACtD,GACxB,MAAuB,YAAnBA,EAAMpB,UAA6C,aAAnBoB,EAAMpB,aAtBZ+J,EAuBR3I,EAAMnB,QAnBO,OAA5BsG,GAAWyD,KAAKD,GAJF,IAASA,IgBwB9B,CACClL,MAAO,2CACPkB,KAAMgE,EAAE,iBAAkB,kBAC1B3G,UAAWyM,GACXtF,UAAW0F,IAGZ,CACCpL,MAAO,uCACPkB,KAAMgE,EAAE,iBAAkB,sBAC1B3G,UAAW,CACV,CAAE4C,SAAU,OAAQD,KAAMgE,EAAE,iBAAkB,SAC9C,CAAE/D,SAAU,WAAYD,KAAMgE,EAAE,iBAAkB,mBAClD,CAAE/D,SAAU,QAASD,KAAMgE,EAAE,iBAAkB,sBAC/C,CAAE/D,SAAU,UAAWD,KAAMgE,EAAE,iBAAkB,aAElD+F,YAAa,SAAC1I,GAAD,MAAW,QACxBsD,SAAU,SAACtD,GAAD,QAAWA,EAAMnB,OAAuD,OAA/CmB,EAAMnB,MAAMiK,MAAM,2BAGtD,CACCrL,MAAO,mDACPkB,KAAMgE,EAAE,iBAAkB,0BAC1B3G,UAAW,CACV,CAAE4C,SAAU,cAAeD,KAAMgE,EAAE,iBAAkB,iBACrD,CAAE/D,SAAU,eAAgBD,KAAMgE,EAAE,iBAAkB,wBACtD,CAAE/D,SAAU,cAAeD,KAAMgE,EAAE,iBAAkB,iBACrD,CAAE/D,SAAU,eAAgBD,KAAMgE,EAAE,iBAAkB,yBAEvD+F,YAAa,SAAC1I,GACb,MAAuB,gBAAnBA,EAAMpB,UAAiD,iBAAnBoB,EAAMpB,SACtC,UAED,gBAER0E,SAAU,SAACtD,GACV,MAAuB,gBAAnBA,EAAMpB,UAAiD,iBAAnBoB,EAAMpB,YhB9CnB+J,EgB+CN3I,EAAMnB,QhB3CK,OAA3BwG,GAAUuD,KAAKD,GAXF,SAASA,GAC7B,QAAKA,GAG6B,OAA3BvD,GAAUwD,KAAKD,GgBoDbI,CAAa/I,EAAMnB,OhBjDR,IAAS8J,IgBqD7B,CACClL,MAAO,6CACPkB,KAAMgE,EAAE,iBAAkB,mBAC1B3G,UAAW,CACV,CAAE4C,SAAU,KAAMD,KAAMgE,EAAE,iBAAkB,mBAC5C,CAAE/D,SAAU,MAAOD,KAAMgE,EAAE,iBAAkB,wBAE9CQ,UAAW6F,gHC3Cb,ICzDmM,GDyDnM,CACA,wBACA,YACA,iBAEA,QACA,IAEA,KARA,WASA,OACA,YACA,iBACA,iFACA,yEACA,mFACA,8FAIA,UACA,QADA,WAEA,orBAEA,mBAJA,WAIA,WACA,4BACA,oDAEA,aARA,WASA,iCAEA,YAXA,WAYA,OACA,0BACA,8CACA,aAGA,aAlBA,WAmBA,+BACA,wBAEA,CACA,0BACA,8CACA,yBAIA,SACA,cADA,SACA,GAGA,cAFA,yBACA,SAGA,SANA,SAMA,GAEA,WACA,wBACA,oCAGA,aAbA,SAaA,GACA,6BACA,iDE7GI,GAAU,GAEd,GAAQzI,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICFA,IAXgB,OACd,ICTW,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACA,EAAG,cAAc,CAACG,MAAM,CAAC,MAAQP,EAAImF,aAAa,YAAcnF,EAAI+B,EAAE,iBAAkB,uBAAuB,MAAQ,QAAQ,WAAW,UAAU,QAAU/B,EAAIN,QAAQ,UAAW,EAAM,SAAU,GAAOoB,GAAG,CAAC,MAAQd,EAAIoF,UAAUpE,YAAYhB,EAAIiB,GAAG,CAAC,CAACC,IAAI,cAAcC,GAAG,SAASM,GAAO,MAAO,CAACrB,EAAG,OAAO,CAACE,YAAY,eAAezD,MAAM4E,EAAMC,OAAOlB,OAAOR,EAAIS,GAAG,KAAKL,EAAG,OAAO,CAACE,YAAY,qCAAqCwC,SAAS,CAAC,UAAY9C,EAAIU,GAAGe,EAAMC,OAAO4D,aAAa,CAACpE,IAAI,SAASC,GAAG,SAASM,GAAO,MAAO,CAACrB,EAAG,OAAO,CAACE,YAAY,eAAezD,MAAM4E,EAAMC,OAAOlB,OAAOR,EAAIS,GAAG,KAAMgB,EAAMC,OAAkB,YAAEtB,EAAG,OAAO,CAACE,YAAY,gBAAgBwC,SAAS,CAAC,UAAY9C,EAAIU,GAAGe,EAAMC,OAAO2G,gBAAgBjI,EAAG,OAAO,CAACE,YAAY,gBAAgBwC,SAAS,CAAC,UAAY9C,EAAIU,GAAGe,EAAMC,OAAO4D,iBAAiBtF,EAAIS,GAAG,KAAOT,EAAIuF,aAA4HvF,EAAIwB,KAAlHpB,EAAG,QAAQ,CAACG,MAAM,CAAC,KAAO,QAAQuC,SAAS,CAAC,MAAQ9C,EAAImF,aAAaK,SAAS1E,GAAG,CAAC,MAAQd,EAAIyF,iBAA0B,KACtiC,IDWpB,EACA,KACA,WACA,MAI8B,+BEOhC,mBC1B8L,GD2B9L,CACA,mBACA,YACA,iBAEA,QACA,IAEA,OACA,OACA,YACA,aAGA,KAdA,WAeA,OACA,aACA,SACA,UACA,eACA,aACA,4BAIA,QAzBA,WA0BA,iBAEA,SACA,oBADA,SACA,GACA,IACA,oBACA,eACA,eACA,+BACA,6BACA,gCAGA,YAIA,SAfA,WAwBA,OARA,wHACA,yGACA,4CACA,WACA,oBAEA,sBAEA,YAEA,OA1BA,WA8BA,GAHA,gCACA,wCAEA,iBACA,0JACA,sCE5EI,GAAU,GAEd,GAAQ9F,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICFA,IAXgB,OACd,ICTW,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,YAAY,YAAY,CAACF,EAAG,QAAQ,CAACuB,WAAW,CAAC,CAAC5D,KAAK,QAAQ6D,QAAQ,UAAU3D,MAAO+B,EAAI6E,SAAkB,UAAEhD,WAAW,uBAAuBvB,YAAY,kBAAkBC,MAAM,CAAC,KAAO,OAAO,YAAc,cAAcuC,SAAS,CAAC,MAAS9C,EAAI6E,SAAkB,WAAG/D,GAAG,CAAC,MAAQ,CAAC,SAAS2B,GAAWA,EAAOM,OAAOC,WAAqBhD,EAAI2C,KAAK3C,EAAI6E,SAAU,YAAapC,EAAOM,OAAO9E,QAAQ+B,EAAI0H,WAAW1H,EAAIS,GAAG,KAAKL,EAAG,QAAQ,CAACuB,WAAW,CAAC,CAAC5D,KAAK,QAAQ6D,QAAQ,UAAU3D,MAAO+B,EAAI6E,SAAgB,QAAEhD,WAAW,qBAAqBtB,MAAM,CAAC,KAAO,OAAO,YAAc,cAAcuC,SAAS,CAAC,MAAS9C,EAAI6E,SAAgB,SAAG/D,GAAG,CAAC,MAAQ,CAAC,SAAS2B,GAAWA,EAAOM,OAAOC,WAAqBhD,EAAI2C,KAAK3C,EAAI6E,SAAU,UAAWpC,EAAOM,OAAO9E,QAAQ+B,EAAI0H,WAAW1H,EAAIS,GAAG,KAAOT,EAAI/D,MAAwI+D,EAAIwB,KAArIpB,EAAG,IAAI,CAACE,YAAY,gBAAgB,CAACN,EAAIS,GAAG,SAAST,EAAIU,GAAGV,EAAI+B,EAAE,iBAAkB,mCAAmC,UAAmB/B,EAAIS,GAAG,KAAKL,EAAG,cAAc,CAACuB,WAAW,CAAC,CAAC5D,KAAK,OAAO6D,QAAQ,SAAS3D,MAAO+B,EAAS,MAAE6B,WAAW,UAAUtB,MAAM,CAAC,QAAUP,EAAIsI,WAAWxH,GAAG,CAAC,MAAQd,EAAI0H,QAAQzF,MAAM,CAAChE,MAAO+B,EAAI6E,SAAiB,SAAE3C,SAAS,SAAUC,GAAMnC,EAAI2C,KAAK3C,EAAI6E,SAAU,WAAY1C,IAAMN,WAAW,wBAAwB,KACzyC,IDWpB,EACA,KACA,WACA,MAI8B,mHEoChC,QACA,kBACA,YACA,iBAEA,QACA,IAEA,KARA,WASA,OACA,YACA,iBACA,CACA,4CACA,UACA,iEAMA,UACA,QADA,WAEA,orBAEA,YAJA,WAKA,wEACA,6CAEA,+BAEA,mBAVA,WAUA,WACA,4BACA,sCACA,OACA,oDAEA,aAhBA,WAiBA,iCAEA,YAnBA,WAoBA,OACA,mCACA,UACA,CACA,0BACA,uCACA,eAKA,aA/BA,WAgCA,+BACA,wBAEA,CACA,0BACA,uCACA,yBAIA,SACA,cADA,SACA,GAGA,cAFA,yBACA,SAGA,SANA,SAMA,GAEA,WACA,wBACA,oCAGA,aAbA,SAaA,GACA,6BACA,qCCrI6L,kBCWzL,GAAU,GAEd,GAAQlC,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICFA,IAXgB,OACd,ICTW,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACA,EAAG,cAAc,CAACG,MAAM,CAAC,MAAQP,EAAImF,aAAa,YAAcnF,EAAI+B,EAAE,iBAAkB,wBAAwB,MAAQ,QAAQ,WAAW,UAAU,eAAe,WAAW,cAAc,QAAQ,QAAU/B,EAAIN,QAAQ,UAAW,EAAM,SAAU,GAAOoB,GAAG,CAAC,MAAQd,EAAIoF,UAAUpE,YAAYhB,EAAIiB,GAAG,CAAC,CAACC,IAAI,cAAcC,GAAG,SAASM,GAAO,MAAO,CAACrB,EAAG,OAAO,CAACE,YAAY,eAAezD,MAAM4E,EAAMC,OAAOlB,OAAOR,EAAIS,GAAG,KAAKL,EAAG,OAAO,CAACE,YAAY,sCAAsC,CAACN,EAAIS,GAAGT,EAAIU,GAAGe,EAAMC,OAAO4D,aAAa,CAACpE,IAAI,SAASC,GAAG,SAASM,GAAO,MAAO,CAACrB,EAAG,OAAO,CAACE,YAAY,eAAezD,MAAM4E,EAAMC,OAAOlB,OAAOR,EAAIS,GAAG,KAAKL,EAAG,OAAO,CAACE,YAAY,iBAAiB,CAACN,EAAIS,GAAGT,EAAIU,GAAGe,EAAMC,OAAO4D,OAAO,IAAItF,EAAIU,GAAGe,EAAMC,OAAO2G,uBAAuBrI,EAAIS,GAAG,KAAOT,EAAIuF,aAA0JvF,EAAIwB,KAAhJpB,EAAG,QAAQ,CAACG,MAAM,CAAC,KAAO,OAAO,YAAcP,EAAI8H,aAAahF,SAAS,CAAC,MAAQ9C,EAAImF,aAAaK,SAAS1E,GAAG,CAAC,MAAQd,EAAIyF,iBAA0B,KACpgC,IDWpB,EACA,KACA,WACA,MAI8B,kIEqBhC,UACA,IACA,cAGA,IACA,wBACA,YACA,iBAEA,OACA,OACA,YACA,YAEA,OACA,YACA,+BAGA,KAfA,WAgBA,OACA,UACA,YAGA,UACA,aADA,WACA,WACA,sEAGA,QA1BA,WA0BA,+IACA,oBADA,gCAEA,kBAFA,UAIA,sBAJA,gCAKA,uBALA,8NAQA,SACA,YADA,SACA,cACA,0BAKA,OADA,yBACA,4HACA,4CACA,YACA,QACA,+BAGA,yBACA,YACA,+DAGA,SAnBA,SAmBA,IAEA,IADA,0DAEA,uBCrGmM,kBCW/L,GAAU,GAEd,GAAQ9F,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICFA,IAXgB,OACd,ICTW,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACA,EAAG,cAAc,CAACG,MAAM,CAAC,MAAQP,EAAImF,aAAa,QAAUnF,EAAIuI,OAAOC,WAAmC,IAAtBxI,EAAIyI,OAAOlJ,OAAa,QAAUS,EAAIyI,OAAO,UAAW,EAAM,MAAQ,cAAc,WAAW,MAAM3H,GAAG,CAAC,gBAAgBd,EAAI0I,YAAY,MAAQ,SAAUzK,GAAS,OAAO+B,EAAIkD,MAAM,QAASjF,EAAMvC,SAAW,KACvX,IDWpB,EACA,KACA,WACA,MAI8B,QEmDhC,GA3CsB,CACrB,CACCmB,MAAO,yCACPkB,KAAMgE,EAAE,iBAAkB,eAC1B3G,UAAW,CACV,CAAE4C,SAAU,KAAMD,KAAMgE,EAAE,iBAAkB,OAC5C,CAAE/D,SAAU,MAAOD,KAAMgE,EAAE,iBAAkB,WAC7C,CAAE/D,SAAU,UAAWD,KAAMgE,EAAE,iBAAkB,YACjD,CAAE/D,SAAU,WAAYD,KAAMgE,EAAE,iBAAkB,oBAEnDQ,UAAWoG,IAEZ,CACC9L,MAAO,0CACPkB,KAAMgE,EAAE,iBAAkB,gBAC1B3G,UAAW,CACV,CAAE4C,SAAU,KAAMD,KAAMgE,EAAE,iBAAkB,YAC5C,CAAE/D,SAAU,MAAOD,KAAMgE,EAAE,iBAAkB,iBAE9CQ,UAAWqG,IAEZ,CACC/L,MAAO,+CACPkB,KAAMgE,EAAE,iBAAkB,sBAC1B3G,UAAW,CACV,CAAE4C,SAAU,KAAMD,KAAMgE,EAAE,iBAAkB,OAC5C,CAAE/D,SAAU,MAAOD,KAAMgE,EAAE,iBAAkB,WAC7C,CAAE/D,SAAU,UAAWD,KAAMgE,EAAE,iBAAkB,YACjD,CAAE/D,SAAU,WAAYD,KAAMgE,EAAE,iBAAkB,oBAEnDQ,UAAWsG,IAEZ,CACChM,MAAO,kDACPkB,KAAMgE,EAAE,iBAAkB,yBAC1B3G,UAAW,CACV,CAAE4C,SAAU,KAAMD,KAAMgE,EAAE,iBAAkB,iBAC5C,CAAE/D,SAAU,MAAOD,KAAMgE,EAAE,iBAAkB,sBAE9CQ,UAAWuG,0vBCzCb,OAAe,aAAIC,IAAnB,GAAkCC,KCwClCC,OAAOC,IAAIC,eAAiB5M,OAAOC,OAAO,GAAI0M,IAAIC,eAAgB,CAMjEC,cANiE,SAMnDC,GACbC,EAAAA,OAAa,iBAAkBD,IAMhCE,iBAbiE,SAahDF,GAChBC,EAAAA,OAAa,oBAAqBD,MAKpCG,GAAAA,SAAsB,SAACC,GAAD,OAAiBR,OAAOC,IAAIC,eAAeC,cAAcK,MAE/E/O,EAAAA,QAAAA,IAAQC,EAAAA,IACRD,EAAAA,QAAAA,UAAAA,EAAkBqH,EAGK,IADVrH,EAAAA,QAAAA,OAAWgP,IACD,CAAS,CAC/BJ,MAAAA,IAEcK,OAAO,0FC1FlBC,QAA0B,GAA4B,KAE1DA,EAAwB5N,KAAK,CAAC6N,EAAOnO,GAAI,g2BAAi2B,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,4DAA4D,MAAQ,GAAG,SAAW,kSAAkS,eAAiB,CAAC,kpCAAkpC,WAAa,MAE18E,6ECJIkO,QAA0B,GAA4B,KAE1DA,EAAwB5N,KAAK,CAAC6N,EAAOnO,GAAI,2hBAA4hB,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,yEAAyE,MAAQ,GAAG,SAAW,+KAA+K,eAAiB,CAAC,stBAAstB,WAAa,MAEnmD,6ECJIkO,QAA0B,GAA4B,KAE1DA,EAAwB5N,KAAK,CAAC6N,EAAOnO,GAAI,+mCAAgnC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,4DAA4D,MAAQ,GAAG,SAAW,mUAAmU,eAAiB,CAAC,wxCAAwxC,WAAa,MAEh4F,6ECJIkO,QAA0B,GAA4B,KAE1DA,EAAwB5N,KAAK,CAAC6N,EAAOnO,GAAI,i9CAAk9C,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,6DAA6D,MAAQ,GAAG,SAAW,6hBAA6hB,eAAiB,CAAC,i2CAAi2C,WAAa,MAEtgH,6ECJIkO,QAA0B,GAA4B,KAE1DA,EAAwB5N,KAAK,CAAC6N,EAAOnO,GAAI,48DAA68D,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,2DAA2D,MAAQ,GAAG,SAAW,urBAAurB,eAAiB,CAAC,wvEAAwvE,WAAa,MAEhjK,6ECJIkO,QAA0B,GAA4B,KAE1DA,EAAwB5N,KAAK,CAAC6N,EAAOnO,GAAI,k1FAAm1F,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,8DAA8D,6DAA6D,MAAQ,GAAG,SAAW,88BAA88B,eAAiB,CAAC,2pDAA6pD,i2CAAi2C,WAAa,MAEnhO,4ECJIkO,QAA0B,GAA4B,KAE1DA,EAAwB5N,KAAK,CAAC6N,EAAOnO,GAAI,wTAAyT,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,0EAA0E,MAAQ,GAAG,SAAW,8EAA8E,eAAiB,CAAC,2oJAAooJ,WAAa,MAE9sK,6ECJIkO,QAA0B,GAA4B,KAE1DA,EAAwB5N,KAAK,CAAC6N,EAAOnO,GAAI,8FAA+F,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,wEAAwE,MAAQ,GAAG,SAAW,wBAAwB,eAAiB,CAAC,+rIAAwrI,WAAa,MAEh/I,6ECJIkO,QAA0B,GAA4B,KAE1DA,EAAwB5N,KAAK,CAAC6N,EAAOnO,GAAI,uoBAAwoB,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,8EAA8E,MAAQ,GAAG,SAAW,iOAAiO,eAAiB,CAAC,o0JAAqyJ,WAAa,MAEr1L,6ECJIkO,QAA0B,GAA4B,KAE1DA,EAAwB5N,KAAK,CAAC6N,EAAOnO,GAAI,yDAA0D,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,8EAA8E,MAAQ,GAAG,SAAW,wBAAwB,eAAiB,CAAC,m7FAA46F,WAAa,MAErsG,6BCPA,IAAIH,EAAM,CACT,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,MACX,aAAc,MACd,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,gBAAiB,MACjB,aAAc,MACd,gBAAiB,MACjB,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,MACX,aAAc,MACd,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,WAAY,MACZ,cAAe,MACf,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,YAAa,MACb,eAAgB,MAChB,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,QAAS,MACT,aAAc,MACd,gBAAiB,MACjB,WAAY,MACZ,UAAW,KACX,aAAc,KACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,YAAa,MACb,eAAgB,MAChB,UAAW,KACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,gBAAiB,MACjB,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,OAIf,SAASuO,EAAeC,GACvB,IAAIrO,EAAKsO,EAAsBD,GAC/B,OAAOE,EAAoBvO,GAE5B,SAASsO,EAAsBD,GAC9B,IAAIE,EAAoBC,EAAE3O,EAAKwO,GAAM,CACpC,IAAIjD,EAAI,IAAIqD,MAAM,uBAAyBJ,EAAM,KAEjD,MADAjD,EAAEsD,KAAO,mBACHtD,EAEP,OAAOvL,EAAIwO,GAEZD,EAAeO,KAAO,WACrB,OAAO9N,OAAO8N,KAAK9O,IAEpBuO,EAAeQ,QAAUN,EACzBH,EAAOU,QAAUT,EACjBA,EAAepO,GAAK,QClShB8O,EAA2B,GAG/B,SAASP,EAAoBQ,GAE5B,IAAIC,EAAeF,EAAyBC,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaH,QAGrB,IAAIV,EAASW,EAAyBC,GAAY,CACjD/O,GAAI+O,EACJG,QAAQ,EACRL,QAAS,IAUV,OANAM,EAAoBJ,GAAUK,KAAKjB,EAAOU,QAASV,EAAQA,EAAOU,QAASN,GAG3EJ,EAAOe,QAAS,EAGTf,EAAOU,QAIfN,EAAoBc,EAAIF,EC5BxBZ,EAAoBe,KAAO,WAC1B,MAAM,IAAIb,MAAM,mCCDjBF,EAAoBgB,KAAO,GjFAvB7Q,EAAW,GACf6P,EAAoBiB,EAAI,SAAS3M,EAAQ4M,EAAUhK,EAAIiK,GACtD,IAAGD,EAAH,CAMA,IAAIE,EAAeC,EAAAA,EACnB,IAASnF,EAAI,EAAGA,EAAI/L,EAASmF,OAAQ4G,IAAK,CACrCgF,EAAW/Q,EAAS+L,GAAG,GACvBhF,EAAK/G,EAAS+L,GAAG,GACjBiF,EAAWhR,EAAS+L,GAAG,GAE3B,IAJA,IAGIoF,GAAY,EACPzF,EAAI,EAAGA,EAAIqF,EAAS5L,OAAQuG,MACpB,EAAXsF,GAAsBC,GAAgBD,IAAa7O,OAAO8N,KAAKJ,EAAoBiB,GAAGM,OAAM,SAAStK,GAAO,OAAO+I,EAAoBiB,EAAEhK,GAAKiK,EAASrF,OAC3JqF,EAASzO,OAAOoJ,IAAK,IAErByF,GAAY,EACTH,EAAWC,IAAcA,EAAeD,IAG7C,GAAGG,EAAW,CACbnR,EAASsC,OAAOyJ,IAAK,GACrB,IAAIsF,EAAItK,SACEwJ,IAANc,IAAiBlN,EAASkN,IAGhC,OAAOlN,EAzBN6M,EAAWA,GAAY,EACvB,IAAI,IAAIjF,EAAI/L,EAASmF,OAAQ4G,EAAI,GAAK/L,EAAS+L,EAAI,GAAG,GAAKiF,EAAUjF,IAAK/L,EAAS+L,GAAK/L,EAAS+L,EAAI,GACrG/L,EAAS+L,GAAK,CAACgF,EAAUhK,EAAIiK,IkFJ/BnB,EAAoByB,EAAI,SAAS7B,GAChC,IAAI8B,EAAS9B,GAAUA,EAAO+B,WAC7B,WAAa,OAAO/B,EAAgB,SACpC,WAAa,OAAOA,GAErB,OADAI,EAAoB4B,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,GCLR1B,EAAoB4B,EAAI,SAAStB,EAASwB,GACzC,IAAI,IAAI7K,KAAO6K,EACX9B,EAAoBC,EAAE6B,EAAY7K,KAAS+I,EAAoBC,EAAEK,EAASrJ,IAC5E3E,OAAOyP,eAAezB,EAASrJ,EAAK,CAAE+K,YAAY,EAAMC,IAAKH,EAAW7K,MCJ3E+I,EAAoBkC,EAAI,WACvB,GAA0B,iBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAOnM,MAAQ,IAAIoM,SAAS,cAAb,GACd,MAAOvF,GACR,GAAsB,iBAAXmC,OAAqB,OAAOA,QALjB,GCAxBgB,EAAoBC,EAAI,SAASzK,EAAK6M,GAAQ,OAAO/P,OAAOgQ,UAAUC,eAAe1B,KAAKrL,EAAK6M,ICC/FrC,EAAoBwB,EAAI,SAASlB,GACX,oBAAXkC,QAA0BA,OAAOC,aAC1CnQ,OAAOyP,eAAezB,EAASkC,OAAOC,YAAa,CAAEzO,MAAO,WAE7D1B,OAAOyP,eAAezB,EAAS,aAAc,CAAEtM,OAAO,KCLvDgM,EAAoB0C,IAAM,SAAS9C,GAGlC,OAFAA,EAAO+C,MAAQ,GACV/C,EAAOgD,WAAUhD,EAAOgD,SAAW,IACjChD,GCHRI,EAAoBnE,EAAI,gBCAxBmE,EAAoB6C,EAAIC,SAASC,SAAWC,KAAKC,SAASC,KAK1D,IAAIC,EAAkB,CACrB,KAAM,GAaPnD,EAAoBiB,EAAEpF,EAAI,SAASuH,GAAW,OAAoC,IAA7BD,EAAgBC,IAGrE,IAAIC,EAAuB,SAASC,EAA4BnQ,GAC/D,IAKIqN,EAAU4C,EALVlC,EAAW/N,EAAK,GAChBoQ,EAAcpQ,EAAK,GACnBqQ,EAAUrQ,EAAK,GAGI+I,EAAI,EAC3B,GAAGgF,EAASuC,MAAK,SAAShS,GAAM,OAA+B,IAAxB0R,EAAgB1R,MAAe,CACrE,IAAI+O,KAAY+C,EACZvD,EAAoBC,EAAEsD,EAAa/C,KACrCR,EAAoBc,EAAEN,GAAY+C,EAAY/C,IAGhD,GAAGgD,EAAS,IAAIlP,EAASkP,EAAQxD,GAGlC,IADGsD,GAA4BA,EAA2BnQ,GACrD+I,EAAIgF,EAAS5L,OAAQ4G,IACzBkH,EAAUlC,EAAShF,GAChB8D,EAAoBC,EAAEkD,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBC,GAAW,EAE5B,OAAOpD,EAAoBiB,EAAE3M,IAG1BoP,EAAqBV,KAA4B,sBAAIA,KAA4B,uBAAK,GAC1FU,EAAmBpQ,QAAQ+P,EAAqBM,KAAK,KAAM,IAC3DD,EAAmB3R,KAAOsR,EAAqBM,KAAK,KAAMD,EAAmB3R,KAAK4R,KAAKD,OClDvF1D,EAAoB4D,QAAKlD,ECGzB,IAAImD,EAAsB7D,EAAoBiB,OAAEP,EAAW,CAAC,OAAO,WAAa,OAAOV,EAAoB,UAC3G6D,EAAsB7D,EAAoBiB,EAAE4C","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/workflowengine/src/helpers/api.js","webpack:///nextcloud/apps/workflowengine/src/store.js","webpack:///nextcloud/apps/workflowengine/src/components/Event.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/workflowengine/src/components/Event.vue","webpack://nextcloud/./apps/workflowengine/src/components/Event.vue?2325","webpack://nextcloud/./apps/workflowengine/src/components/Event.vue?5115","webpack:///nextcloud/apps/workflowengine/src/components/Event.vue?vue&type=template&id=f3569276&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/components/Check.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/workflowengine/src/components/Check.vue","webpack://nextcloud/./apps/workflowengine/src/components/Check.vue?50c3","webpack://nextcloud/./apps/workflowengine/src/components/Check.vue?3fb8","webpack:///nextcloud/apps/workflowengine/src/components/Check.vue?vue&type=template&id=70cc784d&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/components/Operation.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/workflowengine/src/components/Operation.vue","webpack://nextcloud/./apps/workflowengine/src/components/Operation.vue?4d4d","webpack://nextcloud/./apps/workflowengine/src/components/Operation.vue?3526","webpack:///nextcloud/apps/workflowengine/src/components/Operation.vue?vue&type=template&id=34495584&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/components/Rule.vue","webpack:///nextcloud/apps/workflowengine/src/components/Rule.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Rule.vue?a6fe","webpack:///nextcloud/apps/workflowengine/src/components/Workflow.vue","webpack:///nextcloud/apps/workflowengine/src/components/Workflow.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Rule.vue?e711","webpack:///nextcloud/apps/workflowengine/src/components/Rule.vue?vue&type=template&id=225ba268&scoped=true&","webpack://nextcloud/./apps/workflowengine/src/components/Workflow.vue?b47f","webpack://nextcloud/./apps/workflowengine/src/components/Workflow.vue?17b8","webpack:///nextcloud/apps/workflowengine/src/components/Workflow.vue?vue&type=template&id=7b3e4a56&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/helpers/validators.js","webpack:///nextcloud/apps/workflowengine/src/mixins/valueMixin.js","webpack:///nextcloud/apps/workflowengine/src/components/Checks/FileMimeType.vue","webpack:///nextcloud/apps/workflowengine/src/components/Checks/FileMimeType.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Checks/FileMimeType.vue?6178","webpack://nextcloud/./apps/workflowengine/src/components/Checks/FileMimeType.vue?c385","webpack:///nextcloud/apps/workflowengine/src/components/Checks/FileMimeType.vue?vue&type=template&id=8c011724&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/MultiselectTag/api.js","webpack:///nextcloud/apps/workflowengine/src/components/Checks/MultiselectTag/MultiselectTag.vue","webpack:///nextcloud/apps/workflowengine/src/components/Checks/MultiselectTag/MultiselectTag.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/FileSystemTag.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/FileSystemTag.vue","webpack://nextcloud/./apps/workflowengine/src/components/Checks/MultiselectTag/MultiselectTag.vue?3f10","webpack:///nextcloud/apps/workflowengine/src/components/Checks/MultiselectTag/MultiselectTag.vue?vue&type=template&id=73cc22e8&","webpack://nextcloud/./apps/workflowengine/src/components/Checks/FileSystemTag.vue?2d3e","webpack:///nextcloud/apps/workflowengine/src/components/Checks/FileSystemTag.vue?vue&type=template&id=31f5522d&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/file.js","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserAgent.vue","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserAgent.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestUserAgent.vue?83e0","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestUserAgent.vue?81d6","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserAgent.vue?vue&type=template&id=475ac1e6&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestTime.vue","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestTime.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestTime.vue?6629","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestTime.vue?a55a","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestTime.vue?vue&type=template&id=149baca9&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestURL.vue","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestURL.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestURL.vue?de33","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestURL.vue?eee5","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestURL.vue?vue&type=template&id=dd8e16be&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserGroup.vue","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserGroup.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestUserGroup.vue?b928","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestUserGroup.vue?f6d3","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserGroup.vue?vue&type=template&id=79fa10a5&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/request.js","webpack:///nextcloud/apps/workflowengine/src/components/Checks/index.js","webpack:///nextcloud/apps/workflowengine/src/workflowengine.js","webpack:///nextcloud/apps/workflowengine/src/components/Check.vue?vue&type=style&index=0&id=70cc784d&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestTime.vue?vue&type=style&index=0&id=149baca9&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Event.vue?vue&type=style&index=0&id=f3569276&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Operation.vue?vue&type=style&index=0&id=34495584&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Rule.vue?vue&type=style&index=0&id=225ba268&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Workflow.vue?vue&type=style&index=0&id=7b3e4a56&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/FileMimeType.vue?vue&type=style&index=0&id=8c011724&scoped=true&lang=css&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestURL.vue?vue&type=style&index=0&id=dd8e16be&scoped=true&lang=css&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserAgent.vue?vue&type=style&index=0&id=475ac1e6&scoped=true&lang=css&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserGroup.vue?vue&type=style&index=0&id=79fa10a5&scoped=true&lang=css&","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","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/runtime/nonce","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 Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nconst scopeValue = loadState('workflowengine', 'scope') === 0 ? 'global' : 'user'\n\nconst getApiUrl = (url) => {\n\treturn generateOcsUrl('apps/workflowengine/api/v1/workflows/{scopeValue}', { scopeValue }) + url + '?format=json'\n}\n\nexport {\n\tgetApiUrl,\n}\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Kesselberg <mail@danielkesselberg.de>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport Vue from 'vue'\nimport Vuex, { Store } from 'vuex'\nimport axios from '@nextcloud/axios'\nimport { getApiUrl } from './helpers/api'\nimport confirmPassword from '@nextcloud/password-confirmation'\nimport { loadState } from '@nextcloud/initial-state'\n\nVue.use(Vuex)\n\nconst store = new Store({\n\tstate: {\n\t\trules: [],\n\t\tscope: loadState('workflowengine', 'scope'),\n\t\tappstoreEnabled: loadState('workflowengine', 'appstoreenabled'),\n\t\toperations: loadState('workflowengine', 'operators'),\n\n\t\tplugins: Vue.observable({\n\t\t\tchecks: {},\n\t\t\toperators: {},\n\t\t}),\n\n\t\tentities: loadState('workflowengine', 'entities'),\n\t\tevents: loadState('workflowengine', 'entities')\n\t\t\t.map((entity) => entity.events.map(event => {\n\t\t\t\treturn {\n\t\t\t\t\tid: `${entity.id}::${event.eventName}`,\n\t\t\t\t\tentity,\n\t\t\t\t\t...event,\n\t\t\t\t}\n\t\t\t})).flat(),\n\t\tchecks: loadState('workflowengine', 'checks'),\n\t},\n\tmutations: {\n\t\taddRule(state, rule) {\n\t\t\tstate.rules.push({ ...rule, valid: true })\n\t\t},\n\t\tupdateRule(state, rule) {\n\t\t\tconst index = state.rules.findIndex((item) => rule.id === item.id)\n\t\t\tconst newRule = Object.assign({}, rule)\n\t\t\tVue.set(state.rules, index, newRule)\n\t\t},\n\t\tremoveRule(state, rule) {\n\t\t\tconst index = state.rules.findIndex((item) => rule.id === item.id)\n\t\t\tstate.rules.splice(index, 1)\n\t\t},\n\t\taddPluginCheck(state, plugin) {\n\t\t\tVue.set(state.plugins.checks, plugin.class, plugin)\n\t\t},\n\t\taddPluginOperator(state, plugin) {\n\t\t\tplugin = Object.assign(\n\t\t\t\t{ color: 'var(--color-primary-element)' },\n\t\t\t\tplugin, state.operations[plugin.id] || {})\n\t\t\tif (typeof state.operations[plugin.id] !== 'undefined') {\n\t\t\t\tVue.set(state.operations, plugin.id, plugin)\n\t\t\t}\n\t\t},\n\t},\n\tactions: {\n\t\tasync fetchRules(context) {\n\t\t\tconst { data } = await axios.get(getApiUrl(''))\n\t\t\tObject.values(data.ocs.data).flat().forEach((rule) => {\n\t\t\t\tcontext.commit('addRule', rule)\n\t\t\t})\n\t\t},\n\t\tcreateNewRule(context, rule) {\n\t\t\tlet entity = null\n\t\t\tlet events = []\n\t\t\tif (rule.isComplex === false && rule.fixedEntity === '') {\n\t\t\t\tentity = context.state.entities.find((item) => rule.entities && rule.entities[0] === item.id)\n\t\t\t\tentity = entity || Object.values(context.state.entities)[0]\n\t\t\t\tevents = [entity.events[0].eventName]\n\t\t\t}\n\n\t\t\tcontext.commit('addRule', {\n\t\t\t\tid: -(new Date().getTime()),\n\t\t\t\tclass: rule.id,\n\t\t\t\tentity: entity ? entity.id : rule.fixedEntity,\n\t\t\t\tevents,\n\t\t\t\tname: '', // unused in the new ui, there for legacy reasons\n\t\t\t\tchecks: [\n\t\t\t\t\t{ class: null, operator: null, value: '' },\n\t\t\t\t],\n\t\t\t\toperation: rule.operation || '',\n\t\t\t})\n\t\t},\n\t\tupdateRule(context, rule) {\n\t\t\tcontext.commit('updateRule', {\n\t\t\t\t...rule,\n\t\t\t\tevents: typeof rule.events === 'string' ? JSON.parse(rule.events) : rule.events,\n\t\t\t})\n\t\t},\n\t\tremoveRule(context, rule) {\n\t\t\tcontext.commit('removeRule', rule)\n\t\t},\n\t\tasync pushUpdateRule(context, rule) {\n\t\t\tif (context.state.scope === 0) {\n\t\t\t\tawait confirmPassword()\n\t\t\t}\n\t\t\tlet result\n\t\t\tif (rule.id < 0) {\n\t\t\t\tresult = await axios.post(getApiUrl(''), rule)\n\t\t\t} else {\n\t\t\t\tresult = await axios.put(getApiUrl(`/${rule.id}`), rule)\n\t\t\t}\n\t\t\tVue.set(rule, 'id', result.data.ocs.data.id)\n\t\t\tcontext.commit('updateRule', rule)\n\t\t},\n\t\tasync deleteRule(context, rule) {\n\t\t\tawait confirmPassword()\n\t\t\tawait axios.delete(getApiUrl(`/${rule.id}`))\n\t\t\tcontext.commit('removeRule', rule)\n\t\t},\n\t\tsetValid(context, { rule, valid }) {\n\t\t\trule.valid = valid\n\t\t\tcontext.commit('updateRule', rule)\n\t\t},\n\t},\n\tgetters: {\n\t\tgetRules(state) {\n\t\t\treturn state.rules.filter((rule) => typeof state.operations[rule.class] !== 'undefined').sort((rule1, rule2) => {\n\t\t\t\treturn rule1.id - rule2.id || rule2.class - rule1.class\n\t\t\t})\n\t\t},\n\t\tgetOperationForRule(state) {\n\t\t\treturn (rule) => state.operations[rule.class]\n\t\t},\n\t\tgetEntityForOperation(state) {\n\t\t\treturn (operation) => state.entities.find((entity) => operation.fixedEntity === entity.id)\n\t\t},\n\t\tgetEventsForOperation(state) {\n\t\t\treturn (operation) => state.events\n\t\t},\n\n\t\t/**\n\t\t * Return all available checker plugins for a given entity class\n\t\t *\n\t\t * @param {object} state the store state\n\t\t * @return {Function} the available plugins\n\t\t */\n\t\tgetChecksForEntity(state) {\n\t\t\treturn (entity) => {\n\t\t\t\treturn Object.values(state.checks)\n\t\t\t\t\t.filter((check) => check.supportedEntities.indexOf(entity) > -1 || check.supportedEntities.length === 0)\n\t\t\t\t\t.map((check) => state.plugins.checks[check.id])\n\t\t\t\t\t.reduce((obj, item) => {\n\t\t\t\t\t\tobj[item.class] = item\n\t\t\t\t\t\treturn obj\n\t\t\t\t\t}, {})\n\t\t\t}\n\t\t},\n\t},\n})\n\nexport default store\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Event.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!./Event.vue?vue&type=script&lang=js&\"","<template>\n\t<div class=\"event\">\n\t\t<div v-if=\"operation.isComplex && operation.fixedEntity !== ''\" class=\"isComplex\">\n\t\t\t<img class=\"option__icon\" :src=\"entity.icon\">\n\t\t\t<span class=\"option__title option__title_single\">{{ operation.triggerHint }}</span>\n\t\t</div>\n\t\t<Multiselect v-else\n\t\t\t:value=\"currentEvent\"\n\t\t\t:options=\"allEvents\"\n\t\t\ttrack-by=\"id\"\n\t\t\t:multiple=\"true\"\n\t\t\t:auto-limit=\"false\"\n\t\t\t:disabled=\"allEvents.length <= 1\"\n\t\t\t@input=\"updateEvent\">\n\t\t\t<template slot=\"selection\" slot-scope=\"{ values, isOpen }\">\n\t\t\t\t<div v-if=\"values.length && !isOpen\" class=\"eventlist\">\n\t\t\t\t\t<img class=\"option__icon\" :src=\"values[0].entity.icon\">\n\t\t\t\t\t<span v-for=\"(value, index) in values\" :key=\"value.id\" class=\"text option__title option__title_single\">{{ value.displayName }} <span v-if=\"index+1 < values.length\">, </span></span>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t\t<template slot=\"option\" slot-scope=\"props\">\n\t\t\t\t<img class=\"option__icon\" :src=\"props.option.entity.icon\">\n\t\t\t\t<span class=\"option__title\">{{ props.option.displayName }}</span>\n\t\t\t</template>\n\t\t</Multiselect>\n\t</div>\n</template>\n\n<script>\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\nimport { showWarning } from '@nextcloud/dialogs'\n\nexport default {\n\tname: 'Event',\n\tcomponents: {\n\t\tMultiselect,\n\t},\n\tprops: {\n\t\trule: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomputed: {\n\t\tentity() {\n\t\t\treturn this.$store.getters.getEntityForOperation(this.operation)\n\t\t},\n\t\toperation() {\n\t\t\treturn this.$store.getters.getOperationForRule(this.rule)\n\t\t},\n\t\tallEvents() {\n\t\t\treturn this.$store.getters.getEventsForOperation(this.operation)\n\t\t},\n\t\tcurrentEvent() {\n\t\t\treturn this.allEvents.filter(event => event.entity.id === this.rule.entity && this.rule.events.indexOf(event.eventName) !== -1)\n\t\t},\n\t},\n\tmethods: {\n\t\tupdateEvent(events) {\n\t\t\tif (events.length === 0) {\n\t\t\t\tshowWarning(t('workflowengine', 'At least one event must be selected'))\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst existingEntity = this.rule.entity\n\t\t\tconst newEntities = events.map(event => event.entity.id).filter((value, index, self) => self.indexOf(value) === index)\n\t\t\tlet newEntity = null\n\t\t\tif (newEntities.length > 1) {\n\t\t\t\tnewEntity = newEntities.filter(entity => entity !== existingEntity)[0]\n\t\t\t} else {\n\t\t\t\tnewEntity = newEntities[0]\n\t\t\t}\n\n\t\t\tthis.$set(this.rule, 'entity', newEntity)\n\t\t\tthis.$set(this.rule, 'events', events.filter(event => event.entity.id === newEntity).map(event => event.eventName))\n\t\t\tthis.$emit('update', this.rule)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t.event {\n\t\tmargin-bottom: 5px;\n\t}\n\t.isComplex {\n\t\timg {\n\t\t\tvertical-align: text-top;\n\t\t}\n\t\tspan {\n\t\t\tpadding-top: 2px;\n\t\t\tdisplay: inline-block;\n\t\t}\n\t}\n\t.multiselect {\n\t\twidth: 100%;\n\t\tmax-width: 550px;\n\t\tmargin-top: 4px;\n\t}\n\t.multiselect::v-deep .multiselect__single {\n\t\tdisplay: flex;\n\t}\n\t.multiselect:not(.multiselect--active)::v-deep .multiselect__tags {\n\t\tbackground-color: var(--color-main-background) !important;\n\t\tborder: 1px solid transparent;\n\t}\n\n\t.multiselect::v-deep .multiselect__tags {\n\t\tbackground-color: var(--color-main-background) !important;\n\t\theight: auto;\n\t\tmin-height: 34px;\n\t}\n\n\t.multiselect:not(.multiselect--disabled)::v-deep .multiselect__tags .multiselect__single {\n\t\tbackground-image: var(--icon-triangle-s-000);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: right center;\n\t}\n\n\tinput {\n\t\tborder: 1px solid transparent;\n\t}\n\n\t.option__title {\n\t\tmargin-left: 5px;\n\t\tcolor: var(--color-main-text);\n\t}\n\t.option__title_single {\n\t\tfont-weight: 900;\n\t}\n\n\t.option__icon {\n\t\twidth: 16px;\n\t\theight: 16px;\n\t}\n\n\t.eventlist img,\n\t.eventlist .text {\n\t\tvertical-align: middle;\n\t}\n</style>\n","\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!./Event.vue?vue&type=style&index=0&id=f3569276&scoped=true&lang=scss&\";\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!./Event.vue?vue&type=style&index=0&id=f3569276&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Event.vue?vue&type=template&id=f3569276&scoped=true&\"\nimport script from \"./Event.vue?vue&type=script&lang=js&\"\nexport * from \"./Event.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Event.vue?vue&type=style&index=0&id=f3569276&scoped=true&lang=scss&\"\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 \"f3569276\",\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:\"event\"},[(_vm.operation.isComplex && _vm.operation.fixedEntity !== '')?_c('div',{staticClass:\"isComplex\"},[_c('img',{staticClass:\"option__icon\",attrs:{\"src\":_vm.entity.icon}}),_vm._v(\" \"),_c('span',{staticClass:\"option__title option__title_single\"},[_vm._v(_vm._s(_vm.operation.triggerHint))])]):_c('Multiselect',{attrs:{\"value\":_vm.currentEvent,\"options\":_vm.allEvents,\"track-by\":\"id\",\"multiple\":true,\"auto-limit\":false,\"disabled\":_vm.allEvents.length <= 1},on:{\"input\":_vm.updateEvent},scopedSlots:_vm._u([{key:\"selection\",fn:function(ref){\nvar values = ref.values;\nvar isOpen = ref.isOpen;\nreturn [(values.length && !isOpen)?_c('div',{staticClass:\"eventlist\"},[_c('img',{staticClass:\"option__icon\",attrs:{\"src\":values[0].entity.icon}}),_vm._v(\" \"),_vm._l((values),function(value,index){return _c('span',{key:value.id,staticClass:\"text option__title option__title_single\"},[_vm._v(_vm._s(value.displayName)+\" \"),(index+1 < values.length)?_c('span',[_vm._v(\", \")]):_vm._e()])})],2):_vm._e()]}},{key:\"option\",fn:function(props){return [_c('img',{staticClass:\"option__icon\",attrs:{\"src\":props.option.entity.icon}}),_vm._v(\" \"),_c('span',{staticClass:\"option__title\"},[_vm._v(_vm._s(props.option.displayName))])]}}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Check.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!./Check.vue?vue&type=script&lang=js&\"","<template>\n\t<div v-click-outside=\"hideDelete\" class=\"check\" @click=\"showDelete\">\n\t\t<Multiselect ref=\"checkSelector\"\n\t\t\tv-model=\"currentOption\"\n\t\t\t:options=\"options\"\n\t\t\tlabel=\"name\"\n\t\t\ttrack-by=\"class\"\n\t\t\t:allow-empty=\"false\"\n\t\t\t:placeholder=\"t('workflowengine', 'Select a filter')\"\n\t\t\t@input=\"updateCheck\" />\n\t\t<Multiselect v-model=\"currentOperator\"\n\t\t\t:disabled=\"!currentOption\"\n\t\t\t:options=\"operators\"\n\t\t\tclass=\"comparator\"\n\t\t\tlabel=\"name\"\n\t\t\ttrack-by=\"operator\"\n\t\t\t:allow-empty=\"false\"\n\t\t\t:placeholder=\"t('workflowengine', 'Select a comparator')\"\n\t\t\t@input=\"updateCheck\" />\n\t\t<component :is=\"currentOption.component\"\n\t\t\tv-if=\"currentOperator && currentComponent\"\n\t\t\tv-model=\"check.value\"\n\t\t\t:disabled=\"!currentOption\"\n\t\t\t:check=\"check\"\n\t\t\tclass=\"option\"\n\t\t\t@input=\"updateCheck\"\n\t\t\t@valid=\"(valid=true) && validate()\"\n\t\t\t@invalid=\"!(valid=false) && validate()\" />\n\t\t<input v-else\n\t\t\tv-model=\"check.value\"\n\t\t\ttype=\"text\"\n\t\t\t:class=\"{ invalid: !valid }\"\n\t\t\t:disabled=\"!currentOption\"\n\t\t\t:placeholder=\"valuePlaceholder\"\n\t\t\tclass=\"option\"\n\t\t\t@input=\"updateCheck\">\n\t\t<Actions v-if=\"deleteVisible || !currentOption\">\n\t\t\t<ActionButton icon=\"icon-close\" @click=\"$emit('remove')\" />\n\t\t</Actions>\n\t</div>\n</template>\n\n<script>\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport ClickOutside from 'vue-click-outside'\n\nexport default {\n\tname: 'Check',\n\tcomponents: {\n\t\tActionButton,\n\t\tActions,\n\t\tMultiselect,\n\t},\n\tdirectives: {\n\t\tClickOutside,\n\t},\n\tprops: {\n\t\tcheck: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\trule: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tdeleteVisible: false,\n\t\t\tcurrentOption: null,\n\t\t\tcurrentOperator: null,\n\t\t\toptions: [],\n\t\t\tvalid: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tchecks() {\n\t\t\treturn this.$store.getters.getChecksForEntity(this.rule.entity)\n\t\t},\n\t\toperators() {\n\t\t\tif (!this.currentOption) { return [] }\n\t\t\tconst operators = this.checks[this.currentOption.class].operators\n\t\t\tif (typeof operators === 'function') {\n\t\t\t\treturn operators(this.check)\n\t\t\t}\n\t\t\treturn operators\n\t\t},\n\t\tcurrentComponent() {\n\t\t\tif (!this.currentOption) { return [] }\n\t\t\treturn this.checks[this.currentOption.class].component\n\t\t},\n\t\tvaluePlaceholder() {\n\t\t\tif (this.currentOption && this.currentOption.placeholder) {\n\t\t\t\treturn this.currentOption.placeholder(this.check)\n\t\t\t}\n\t\t\treturn ''\n\t\t},\n\t},\n\twatch: {\n\t\t'check.operator'() {\n\t\t\tthis.validate()\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.options = Object.values(this.checks)\n\t\tthis.currentOption = this.checks[this.check.class]\n\t\tthis.currentOperator = this.operators.find((operator) => operator.operator === this.check.operator)\n\n\t\tif (this.check.class === null) {\n\t\t\tthis.$nextTick(() => this.$refs.checkSelector.$el.focus())\n\t\t}\n\t\tthis.validate()\n\t},\n\tmethods: {\n\t\tshowDelete() {\n\t\t\tthis.deleteVisible = true\n\t\t},\n\t\thideDelete() {\n\t\t\tthis.deleteVisible = false\n\t\t},\n\t\tvalidate() {\n\t\t\tthis.valid = true\n\t\t\tif (this.currentOption && this.currentOption.validate) {\n\t\t\t\tthis.valid = !!this.currentOption.validate(this.check)\n\t\t\t}\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.check.invalid = !this.valid\n\t\t\tthis.$emit('validate', this.valid)\n\t\t},\n\t\tupdateCheck() {\n\t\t\tconst matchingOperator = this.operators.findIndex((operator) => this.check.operator === operator.operator)\n\t\t\tif (this.check.class !== this.currentOption.class || matchingOperator === -1) {\n\t\t\t\tthis.currentOperator = this.operators[0]\n\t\t\t}\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.check.class = this.currentOption.class\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.check.operator = this.currentOperator.operator\n\n\t\t\tthis.validate()\n\n\t\t\tthis.$emit('update', this.check)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t.check {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t\twidth: 100%;\n\t\tpadding-right: 20px;\n\t\t& > *:not(.close) {\n\t\t\twidth: 180px;\n\t\t}\n\t\t& > .comparator {\n\t\t\tmin-width: 130px;\n\t\t\twidth: 130px;\n\t\t}\n\t\t& > .option {\n\t\t\tmin-width: 230px;\n\t\t\twidth: 230px;\n\t\t}\n\t\t& > .multiselect,\n\t\t& > input[type=text] {\n\t\t\tmargin-right: 5px;\n\t\t\tmargin-bottom: 5px;\n\t\t}\n\n\t\t.multiselect::v-deep .multiselect__content-wrapper li>span,\n\t\t.multiselect::v-deep .multiselect__single {\n\t\t\tdisplay: block;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t}\n\t}\n\tinput[type=text] {\n\t\tmargin: 0;\n\t}\n\t::placeholder {\n\t\tfont-size: 10px;\n\t}\n\tbutton.action-item.action-item--single.icon-close {\n\t\theight: 44px;\n\t\twidth: 44px;\n\t\tmargin-top: -5px;\n\t\tmargin-bottom: -5px;\n\t}\n\t.invalid {\n\t\tborder: 1px solid var(--color-error) !important;\n\t}\n</style>\n","\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!./Check.vue?vue&type=style&index=0&id=70cc784d&scoped=true&lang=scss&\";\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!./Check.vue?vue&type=style&index=0&id=70cc784d&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Check.vue?vue&type=template&id=70cc784d&scoped=true&\"\nimport script from \"./Check.vue?vue&type=script&lang=js&\"\nexport * from \"./Check.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Check.vue?vue&type=style&index=0&id=70cc784d&scoped=true&lang=scss&\"\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 \"70cc784d\",\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',{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:(_vm.hideDelete),expression:\"hideDelete\"}],staticClass:\"check\",on:{\"click\":_vm.showDelete}},[_c('Multiselect',{ref:\"checkSelector\",attrs:{\"options\":_vm.options,\"label\":\"name\",\"track-by\":\"class\",\"allow-empty\":false,\"placeholder\":_vm.t('workflowengine', 'Select a filter')},on:{\"input\":_vm.updateCheck},model:{value:(_vm.currentOption),callback:function ($$v) {_vm.currentOption=$$v},expression:\"currentOption\"}}),_vm._v(\" \"),_c('Multiselect',{staticClass:\"comparator\",attrs:{\"disabled\":!_vm.currentOption,\"options\":_vm.operators,\"label\":\"name\",\"track-by\":\"operator\",\"allow-empty\":false,\"placeholder\":_vm.t('workflowengine', 'Select a comparator')},on:{\"input\":_vm.updateCheck},model:{value:(_vm.currentOperator),callback:function ($$v) {_vm.currentOperator=$$v},expression:\"currentOperator\"}}),_vm._v(\" \"),(_vm.currentOperator && _vm.currentComponent)?_c(_vm.currentOption.component,{tag:\"component\",staticClass:\"option\",attrs:{\"disabled\":!_vm.currentOption,\"check\":_vm.check},on:{\"input\":_vm.updateCheck,\"valid\":function($event){(_vm.valid=true) && _vm.validate()},\"invalid\":function($event){!(_vm.valid=false) && _vm.validate()}},model:{value:(_vm.check.value),callback:function ($$v) {_vm.$set(_vm.check, \"value\", $$v)},expression:\"check.value\"}}):_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.check.value),expression:\"check.value\"}],staticClass:\"option\",class:{ invalid: !_vm.valid },attrs:{\"type\":\"text\",\"disabled\":!_vm.currentOption,\"placeholder\":_vm.valuePlaceholder},domProps:{\"value\":(_vm.check.value)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.check, \"value\", $event.target.value)},_vm.updateCheck]}}),_vm._v(\" \"),(_vm.deleteVisible || !_vm.currentOption)?_c('Actions',[_c('ActionButton',{attrs:{\"icon\":\"icon-close\"},on:{\"click\":function($event){return _vm.$emit('remove')}}})],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Operation.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!./Operation.vue?vue&type=script&lang=js&\"","<template>\n\t<div class=\"actions__item\" :class=\"{'colored': colored}\" :style=\"{ backgroundColor: colored ? operation.color : 'transparent' }\">\n\t\t<div class=\"icon\" :class=\"operation.iconClass\" :style=\"{ backgroundImage: operation.iconClass ? '' : `url(${operation.icon})` }\" />\n\t\t<div class=\"actions__item__description\">\n\t\t\t<h3>{{ operation.name }}</h3>\n\t\t\t<small>{{ operation.description }}</small>\n\t\t\t<div>\n\t\t\t\t<button v-if=\"colored\">\n\t\t\t\t\t{{ t('workflowengine', 'Add new flow') }}\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"actions__item_options\">\n\t\t\t<slot />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tname: 'Operation',\n\tprops: {\n\t\toperation: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tcolored: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t@import \"./../styles/operation\";\n</style>\n","\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!./Operation.vue?vue&type=style&index=0&id=34495584&scoped=true&lang=scss&\";\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!./Operation.vue?vue&type=style&index=0&id=34495584&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Operation.vue?vue&type=template&id=34495584&scoped=true&\"\nimport script from \"./Operation.vue?vue&type=script&lang=js&\"\nexport * from \"./Operation.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Operation.vue?vue&type=style&index=0&id=34495584&scoped=true&lang=scss&\"\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 \"34495584\",\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:\"actions__item\",class:{'colored': _vm.colored},style:({ backgroundColor: _vm.colored ? _vm.operation.color : 'transparent' })},[_c('div',{staticClass:\"icon\",class:_vm.operation.iconClass,style:({ backgroundImage: _vm.operation.iconClass ? '' : (\"url(\" + (_vm.operation.icon) + \")\") })}),_vm._v(\" \"),_c('div',{staticClass:\"actions__item__description\"},[_c('h3',[_vm._v(_vm._s(_vm.operation.name))]),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.operation.description))]),_vm._v(\" \"),_c('div',[(_vm.colored)?_c('button',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('workflowengine', 'Add new flow'))+\"\\n\\t\\t\\t\")]):_vm._e()])]),_vm._v(\" \"),_c('div',{staticClass:\"actions__item_options\"},[_vm._t(\"default\")],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<div v-if=\"operation\" class=\"section rule\" :style=\"{ borderLeftColor: operation.color || '' }\">\n\t\t<div class=\"trigger\">\n\t\t\t<p>\n\t\t\t\t<span>{{ t('workflowengine', 'When') }}</span>\n\t\t\t\t<Event :rule=\"rule\" @update=\"updateRule\" />\n\t\t\t</p>\n\t\t\t<p v-for=\"(check, index) in rule.checks\" :key=\"index\">\n\t\t\t\t<span>{{ t('workflowengine', 'and') }}</span>\n\t\t\t\t<Check :check=\"check\"\n\t\t\t\t\t:rule=\"rule\"\n\t\t\t\t\t@update=\"updateRule\"\n\t\t\t\t\t@validate=\"validate\"\n\t\t\t\t\t@remove=\"removeCheck(check)\" />\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<span />\n\t\t\t\t<input v-if=\"lastCheckComplete\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclass=\"check--add\"\n\t\t\t\t\tvalue=\"Add a new filter\"\n\t\t\t\t\t@click=\"onAddFilter\">\n\t\t\t</p>\n\t\t</div>\n\t\t<div class=\"flow-icon icon-confirm\" />\n\t\t<div class=\"action\">\n\t\t\t<Operation :operation=\"operation\" :colored=\"false\">\n\t\t\t\t<component :is=\"operation.options\"\n\t\t\t\t\tv-if=\"operation.options\"\n\t\t\t\t\tv-model=\"rule.operation\"\n\t\t\t\t\t@input=\"updateOperation\" />\n\t\t\t</Operation>\n\t\t\t<div class=\"buttons\">\n\t\t\t\t<button class=\"status-button icon\"\n\t\t\t\t\t:class=\"ruleStatus.class\"\n\t\t\t\t\t@click=\"saveRule\">\n\t\t\t\t\t{{ ruleStatus.title }}\n\t\t\t\t</button>\n\t\t\t\t<button v-if=\"rule.id < -1 || dirty\" @click=\"cancelRule\">\n\t\t\t\t\t{{ t('workflowengine', 'Cancel') }}\n\t\t\t\t</button>\n\t\t\t\t<button v-else-if=\"!dirty\" @click=\"deleteRule\">\n\t\t\t\t\t{{ t('workflowengine', 'Delete') }}\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<p v-if=\"error\" class=\"error-message\">\n\t\t\t\t{{ error }}\n\t\t\t</p>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport Event from './Event'\nimport Check from './Check'\nimport Operation from './Operation'\n\nexport default {\n\tname: 'Rule',\n\tcomponents: {\n\t\tOperation, Check, Event, Actions, ActionButton,\n\t},\n\tdirectives: {\n\t\tTooltip,\n\t},\n\tprops: {\n\t\trule: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tediting: false,\n\t\t\tchecks: [],\n\t\t\terror: null,\n\t\t\tdirty: this.rule.id < 0,\n\t\t\toriginalRule: null,\n\t\t}\n\t},\n\tcomputed: {\n\t\toperation() {\n\t\t\treturn this.$store.getters.getOperationForRule(this.rule)\n\t\t},\n\t\truleStatus() {\n\t\t\tif (this.error || !this.rule.valid || this.rule.checks.length === 0 || this.rule.checks.some((check) => check.invalid === true)) {\n\t\t\t\treturn {\n\t\t\t\t\ttitle: t('workflowengine', 'The configuration is invalid'),\n\t\t\t\t\tclass: 'icon-close-white invalid',\n\t\t\t\t\ttooltip: { placement: 'bottom', show: true, content: this.error },\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!this.dirty) {\n\t\t\t\treturn { title: t('workflowengine', 'Active'), class: 'icon icon-checkmark' }\n\t\t\t}\n\t\t\treturn { title: t('workflowengine', 'Save'), class: 'icon-confirm-white primary' }\n\n\t\t},\n\t\tlastCheckComplete() {\n\t\t\tconst lastCheck = this.rule.checks[this.rule.checks.length - 1]\n\t\t\treturn typeof lastCheck === 'undefined' || lastCheck.class !== null\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.originalRule = JSON.parse(JSON.stringify(this.rule))\n\t},\n\tmethods: {\n\t\tasync updateOperation(operation) {\n\t\t\tthis.$set(this.rule, 'operation', operation)\n\t\t\tawait this.updateRule()\n\t\t},\n\t\tvalidate(state) {\n\t\t\tthis.error = null\n\t\t\tthis.$store.dispatch('updateRule', this.rule)\n\t\t},\n\t\tupdateRule() {\n\t\t\tif (!this.dirty) {\n\t\t\t\tthis.dirty = true\n\t\t\t}\n\n\t\t\tthis.error = null\n\t\t\tthis.$store.dispatch('updateRule', this.rule)\n\t\t},\n\t\tasync saveRule() {\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('pushUpdateRule', this.rule)\n\t\t\t\tthis.dirty = false\n\t\t\t\tthis.error = null\n\t\t\t\tthis.originalRule = JSON.parse(JSON.stringify(this.rule))\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error('Failed to save operation')\n\t\t\t\tthis.error = e.response.data.ocs.meta.message\n\t\t\t}\n\t\t},\n\t\tasync deleteRule() {\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('deleteRule', this.rule)\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error('Failed to delete operation')\n\t\t\t\tthis.error = e.response.data.ocs.meta.message\n\t\t\t}\n\t\t},\n\t\tcancelRule() {\n\t\t\tif (this.rule.id < 0) {\n\t\t\t\tthis.$store.dispatch('removeRule', this.rule)\n\t\t\t} else {\n\t\t\t\tthis.$store.dispatch('updateRule', this.originalRule)\n\t\t\t\tthis.originalRule = JSON.parse(JSON.stringify(this.rule))\n\t\t\t\tthis.dirty = false\n\t\t\t}\n\t\t},\n\n\t\tasync removeCheck(check) {\n\t\t\tconst index = this.rule.checks.findIndex(item => item === check)\n\t\t\tif (index > -1) {\n\t\t\t\tthis.$delete(this.rule.checks, index)\n\t\t\t}\n\t\t\tthis.$store.dispatch('updateRule', this.rule)\n\t\t},\n\n\t\tonAddFilter() {\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.rule.checks.push({ class: null, operator: null, value: '' })\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\tbutton.icon {\n\t\tpadding-left: 32px;\n\t\tbackground-position: 10px center;\n\t}\n\n\t.buttons {\n\t\tdisplay: block;\n\t\toverflow: hidden;\n\n\t\tbutton {\n\t\t\tfloat: right;\n\t\t\theight: 34px;\n\t\t}\n\t}\n\n\t.error-message {\n\t\tfloat: right;\n\t\tmargin-right: 10px;\n\t}\n\n\t.status-button {\n\t\ttransition: 0.5s ease all;\n\t\tdisplay: block;\n\t\tmargin: 3px 10px 3px auto;\n\t}\n\t.status-button.primary {\n\t\tpadding-left: 32px;\n\t\tbackground-position: 10px center;\n\t}\n\t.status-button:not(.primary) {\n\t\tbackground-color: var(--color-main-background);\n\t}\n\t.status-button.invalid {\n\t\tbackground-color: var(--color-warning);\n\t\tcolor: #fff;\n\t\tborder: none;\n\t}\n\t.status-button.icon-checkmark {\n\t\tborder: 1px solid var(--color-success);\n\t}\n\n\t.flow-icon {\n\t\twidth: 44px;\n\t}\n\n\t.rule {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t\tborder-left: 5px solid var(--color-primary-element);\n\n\t\t.trigger, .action {\n\t\t\tflex-grow: 1;\n\t\t\tmin-height: 100px;\n\t\t\tmax-width: 700px;\n\t\t}\n\t\t.action {\n\t\t\tmax-width: 400px;\n\t\t\tposition: relative;\n\t\t}\n\t\t.icon-confirm {\n\t\t\tbackground-position: right 27px;\n\t\t\tpadding-right: 20px;\n\t\t\tmargin-right: 20px;\n\t\t}\n\t}\n\t.trigger p, .action p {\n\t\tmin-height: 34px;\n\t\tdisplay: flex;\n\n\t\t& > span {\n\t\t\tmin-width: 50px;\n\t\t\ttext-align: right;\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\tpadding-right: 10px;\n\t\t\tpadding-top: 6px;\n\t\t}\n\t\t.multiselect {\n\t\t\tflex-grow: 1;\n\t\t\tmax-width: 300px;\n\t\t}\n\t}\n\t.trigger p:first-child span {\n\t\t\tpadding-top: 3px;\n\t}\n\n\t.check--add {\n\t\tbackground-position: 7px center;\n\t\tbackground-color: transparent;\n\t\tpadding-left: 6px;\n\t\tmargin: 0;\n\t\twidth: 180px;\n\t\tborder-radius: var(--border-radius);\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tfont-weight: normal;\n\t\ttext-align: left;\n\t\tfont-size: 1em;\n\t}\n\n\t@media (max-width:1400px) {\n\t\t.rule {\n\t\t\t&, .trigger, .action {\n\t\t\t\twidth: 100%;\n\t\t\t\tmax-width: 100%;\n\t\t\t}\n\t\t\t.flow-icon {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\t}\n\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Rule.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!./Rule.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!./Rule.vue?vue&type=style&index=0&id=225ba268&scoped=true&lang=scss&\";\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!./Rule.vue?vue&type=style&index=0&id=225ba268&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","<template>\n\t<div id=\"workflowengine\">\n\t\t<div class=\"section\">\n\t\t\t<h2>{{ t('workflowengine', 'Available flows') }}</h2>\n\n\t\t\t<p v-if=\"scope === 0\" class=\"settings-hint\">\n\t\t\t\t<a href=\"https://nextcloud.com/developer/\">{{ t('workflowengine', 'For details on how to write your own flow, check out the development documentation.') }}</a>\n\t\t\t</p>\n\n\t\t\t<transition-group name=\"slide\" tag=\"div\" class=\"actions\">\n\t\t\t\t<Operation v-for=\"operation in getMainOperations\"\n\t\t\t\t\t:key=\"operation.id\"\n\t\t\t\t\t:operation=\"operation\"\n\t\t\t\t\t@click.native=\"createNewRule(operation)\" />\n\n\t\t\t\t<a v-if=\"showAppStoreHint\"\n\t\t\t\t\t:key=\"'add'\"\n\t\t\t\t\t:href=\"appstoreUrl\"\n\t\t\t\t\tclass=\"actions__item colored more\">\n\t\t\t\t\t<div class=\"icon icon-add\" />\n\t\t\t\t\t<div class=\"actions__item__description\">\n\t\t\t\t\t\t<h3>{{ t('workflowengine', 'More flows') }}</h3>\n\t\t\t\t\t\t<small>{{ t('workflowengine', 'Browse the App Store') }}</small>\n\t\t\t\t\t</div>\n\t\t\t\t</a>\n\t\t\t</transition-group>\n\n\t\t\t<div v-if=\"hasMoreOperations\" class=\"actions__more\">\n\t\t\t\t<button class=\"icon\"\n\t\t\t\t\t:class=\"showMoreOperations ? 'icon-triangle-n' : 'icon-triangle-s'\"\n\t\t\t\t\t@click=\"showMoreOperations=!showMoreOperations\">\n\t\t\t\t\t{{ showMoreOperations ? t('workflowengine', 'Show less') : t('workflowengine', 'Show more') }}\n\t\t\t\t</button>\n\t\t\t</div>\n\n\t\t\t<h2 v-if=\"scope === 0\" class=\"configured-flows\">\n\t\t\t\t{{ t('workflowengine', 'Configured flows') }}\n\t\t\t</h2>\n\t\t\t<h2 v-else class=\"configured-flows\">\n\t\t\t\t{{ t('workflowengine', 'Your flows') }}\n\t\t\t</h2>\n\t\t</div>\n\n\t\t<transition-group v-if=\"rules.length > 0\" name=\"slide\">\n\t\t\t<Rule v-for=\"rule in rules\" :key=\"rule.id\" :rule=\"rule\" />\n\t\t</transition-group>\n\t</div>\n</template>\n\n<script>\nimport Rule from './Rule'\nimport Operation from './Operation'\nimport { mapGetters, mapState } from 'vuex'\nimport { generateUrl } from '@nextcloud/router'\n\nconst ACTION_LIMIT = 3\n\nexport default {\n\tname: 'Workflow',\n\tcomponents: {\n\t\tOperation,\n\t\tRule,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tshowMoreOperations: false,\n\t\t\tappstoreUrl: generateUrl('settings/apps/workflow'),\n\t\t}\n\t},\n\tcomputed: {\n\t\t...mapGetters({\n\t\t\trules: 'getRules',\n\t\t}),\n\t\t...mapState({\n\t\t\tappstoreEnabled: 'appstoreEnabled',\n\t\t\tscope: 'scope',\n\t\t\toperations: 'operations',\n\t\t}),\n\t\thasMoreOperations() {\n\t\t\treturn Object.keys(this.operations).length > ACTION_LIMIT\n\t\t},\n\t\tgetMainOperations() {\n\t\t\tif (this.showMoreOperations) {\n\t\t\t\treturn Object.values(this.operations)\n\t\t\t}\n\t\t\treturn Object.values(this.operations).slice(0, ACTION_LIMIT)\n\t\t},\n\t\tshowAppStoreHint() {\n\t\t\treturn this.scope === 0 && this.appstoreEnabled && OC.isUserAdmin()\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.$store.dispatch('fetchRules')\n\t},\n\tmethods: {\n\t\tcreateNewRule(operation) {\n\t\t\tthis.$store.dispatch('createNewRule', operation)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t#workflowengine {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\t.section {\n\t\tmax-width: 100vw;\n\n\t\th2.configured-flows {\n\t\t\tmargin-top: 50px;\n\t\t\tmargin-bottom: 0;\n\t\t}\n\t}\n\t.actions {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t\tmax-width: 1200px;\n\t\t.actions__item {\n\t\t\tmax-width: 280px;\n\t\t\tflex-basis: 250px;\n\t\t}\n\t}\n\n\tbutton.icon {\n\t\tpadding-left: 32px;\n\t\tbackground-position: 10px center;\n\t}\n\n\t.slide-enter-active {\n\t\t-moz-transition-duration: 0.3s;\n\t\t-webkit-transition-duration: 0.3s;\n\t\t-o-transition-duration: 0.3s;\n\t\ttransition-duration: 0.3s;\n\t\t-moz-transition-timing-function: ease-in;\n\t\t-webkit-transition-timing-function: ease-in;\n\t\t-o-transition-timing-function: ease-in;\n\t\ttransition-timing-function: ease-in;\n\t}\n\n\t.slide-leave-active {\n\t\t-moz-transition-duration: 0.3s;\n\t\t-webkit-transition-duration: 0.3s;\n\t\t-o-transition-duration: 0.3s;\n\t\ttransition-duration: 0.3s;\n\t\t-moz-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\t\t-webkit-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\t\t-o-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\t\ttransition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\t}\n\n\t.slide-enter-to, .slide-leave {\n\t\tmax-height: 500px;\n\t\toverflow: hidden;\n\t}\n\n\t.slide-enter, .slide-leave-to {\n\t\toverflow: hidden;\n\t\tmax-height: 0;\n\t\tpadding-top: 0;\n\t\tpadding-bottom: 0;\n\t}\n\n\t@import \"./../styles/operation\";\n\n\t.actions__item.more {\n\t\tbackground-color: var(--color-background-dark);\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Workflow.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!./Workflow.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Rule.vue?vue&type=template&id=225ba268&scoped=true&\"\nimport script from \"./Rule.vue?vue&type=script&lang=js&\"\nexport * from \"./Rule.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Rule.vue?vue&type=style&index=0&id=225ba268&scoped=true&lang=scss&\"\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 \"225ba268\",\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 (_vm.operation)?_c('div',{staticClass:\"section rule\",style:({ borderLeftColor: _vm.operation.color || '' })},[_c('div',{staticClass:\"trigger\"},[_c('p',[_c('span',[_vm._v(_vm._s(_vm.t('workflowengine', 'When')))]),_vm._v(\" \"),_c('Event',{attrs:{\"rule\":_vm.rule},on:{\"update\":_vm.updateRule}})],1),_vm._v(\" \"),_vm._l((_vm.rule.checks),function(check,index){return _c('p',{key:index},[_c('span',[_vm._v(_vm._s(_vm.t('workflowengine', 'and')))]),_vm._v(\" \"),_c('Check',{attrs:{\"check\":check,\"rule\":_vm.rule},on:{\"update\":_vm.updateRule,\"validate\":_vm.validate,\"remove\":function($event){return _vm.removeCheck(check)}}})],1)}),_vm._v(\" \"),_c('p',[_c('span'),_vm._v(\" \"),(_vm.lastCheckComplete)?_c('input',{staticClass:\"check--add\",attrs:{\"type\":\"button\",\"value\":\"Add a new filter\"},on:{\"click\":_vm.onAddFilter}}):_vm._e()])],2),_vm._v(\" \"),_c('div',{staticClass:\"flow-icon icon-confirm\"}),_vm._v(\" \"),_c('div',{staticClass:\"action\"},[_c('Operation',{attrs:{\"operation\":_vm.operation,\"colored\":false}},[(_vm.operation.options)?_c(_vm.operation.options,{tag:\"component\",on:{\"input\":_vm.updateOperation},model:{value:(_vm.rule.operation),callback:function ($$v) {_vm.$set(_vm.rule, \"operation\", $$v)},expression:\"rule.operation\"}}):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"buttons\"},[_c('button',{staticClass:\"status-button icon\",class:_vm.ruleStatus.class,on:{\"click\":_vm.saveRule}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.ruleStatus.title)+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),(_vm.rule.id < -1 || _vm.dirty)?_c('button',{on:{\"click\":_vm.cancelRule}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('workflowengine', 'Cancel'))+\"\\n\\t\\t\\t\")]):(!_vm.dirty)?_c('button',{on:{\"click\":_vm.deleteRule}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('workflowengine', 'Delete'))+\"\\n\\t\\t\\t\")]):_vm._e()]),_vm._v(\" \"),(_vm.error)?_c('p',{staticClass:\"error-message\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.error)+\"\\n\\t\\t\")]):_vm._e()],1)]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\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!./Workflow.vue?vue&type=style&index=0&id=7b3e4a56&scoped=true&lang=scss&\";\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!./Workflow.vue?vue&type=style&index=0&id=7b3e4a56&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Workflow.vue?vue&type=template&id=7b3e4a56&scoped=true&\"\nimport script from \"./Workflow.vue?vue&type=script&lang=js&\"\nexport * from \"./Workflow.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Workflow.vue?vue&type=style&index=0&id=7b3e4a56&scoped=true&lang=scss&\"\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 \"7b3e4a56\",\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',{attrs:{\"id\":\"workflowengine\"}},[_c('div',{staticClass:\"section\"},[_c('h2',[_vm._v(_vm._s(_vm.t('workflowengine', 'Available flows')))]),_vm._v(\" \"),(_vm.scope === 0)?_c('p',{staticClass:\"settings-hint\"},[_c('a',{attrs:{\"href\":\"https://nextcloud.com/developer/\"}},[_vm._v(_vm._s(_vm.t('workflowengine', 'For details on how to write your own flow, check out the development documentation.')))])]):_vm._e(),_vm._v(\" \"),_c('transition-group',{staticClass:\"actions\",attrs:{\"name\":\"slide\",\"tag\":\"div\"}},[_vm._l((_vm.getMainOperations),function(operation){return _c('Operation',{key:operation.id,attrs:{\"operation\":operation},nativeOn:{\"click\":function($event){return _vm.createNewRule(operation)}}})}),_vm._v(\" \"),(_vm.showAppStoreHint)?_c('a',{key:'add',staticClass:\"actions__item colored more\",attrs:{\"href\":_vm.appstoreUrl}},[_c('div',{staticClass:\"icon icon-add\"}),_vm._v(\" \"),_c('div',{staticClass:\"actions__item__description\"},[_c('h3',[_vm._v(_vm._s(_vm.t('workflowengine', 'More flows')))]),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.t('workflowengine', 'Browse the App Store')))])])]):_vm._e()],2),_vm._v(\" \"),(_vm.hasMoreOperations)?_c('div',{staticClass:\"actions__more\"},[_c('button',{staticClass:\"icon\",class:_vm.showMoreOperations ? 'icon-triangle-n' : 'icon-triangle-s',on:{\"click\":function($event){_vm.showMoreOperations=!_vm.showMoreOperations}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.showMoreOperations ? _vm.t('workflowengine', 'Show less') : _vm.t('workflowengine', 'Show more'))+\"\\n\\t\\t\\t\")])]):_vm._e(),_vm._v(\" \"),(_vm.scope === 0)?_c('h2',{staticClass:\"configured-flows\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('workflowengine', 'Configured flows'))+\"\\n\\t\\t\")]):_c('h2',{staticClass:\"configured-flows\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('workflowengine', 'Your flows'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),(_vm.rules.length > 0)?_c('transition-group',{attrs:{\"name\":\"slide\"}},_vm._l((_vm.rules),function(rule){return _c('Rule',{key:rule.id,attrs:{\"rule\":rule}})}),1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nconst regexRegex = /^\\/(.*)\\/([gui]{0,3})$/\nconst regexIPv4 = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\/(3[0-2]|[1-2][0-9]|[1-9])$/\nconst regexIPv6 = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9])$/\n\nconst validateRegex = function(string) {\n\tif (!string) {\n\t\treturn false\n\t}\n\treturn regexRegex.exec(string) !== null\n}\n\nconst validateIPv4 = function(string) {\n\tif (!string) {\n\t\treturn false\n\t}\n\treturn regexIPv4.exec(string) !== null\n}\n\nconst validateIPv6 = function(string) {\n\tif (!string) {\n\t\treturn false\n\t}\n\treturn regexIPv6.exec(string) !== null\n}\n\nconst stringValidator = (check) => {\n\tif (check.operator === 'matches' || check.operator === '!matches') {\n\t\treturn validateRegex(check.value)\n\t}\n\treturn true\n}\n\nexport { validateRegex, stringValidator, validateIPv4, validateIPv6 }\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nconst valueMixin = {\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tcheck: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => { return {} },\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tnewValue: '',\n\t\t}\n\t},\n\twatch: {\n\t\tvalue: {\n\t\t\timmediate: true,\n\t\t\thandler(value) {\n\t\t\t\tthis.updateInternalValue(value)\n\t\t\t},\n\t\t},\n\t},\n\tmethods: {\n\t\tupdateInternalValue(value) {\n\t\t\tthis.newValue = value\n\t\t},\n\t},\n}\n\nexport default valueMixin\n","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<div>\n\t\t<Multiselect :value=\"currentValue\"\n\t\t\t:placeholder=\"t('workflowengine', 'Select a file type')\"\n\t\t\tlabel=\"label\"\n\t\t\ttrack-by=\"pattern\"\n\t\t\t:options=\"options\"\n\t\t\t:multiple=\"false\"\n\t\t\t:tagging=\"false\"\n\t\t\t@input=\"setValue\">\n\t\t\t<template slot=\"singleLabel\" slot-scope=\"props\">\n\t\t\t\t<span v-if=\"props.option.icon\" class=\"option__icon\" :class=\"props.option.icon\" />\n\t\t\t\t<img v-else :src=\"props.option.iconUrl\">\n\t\t\t\t<span class=\"option__title option__title_single\">{{ props.option.label }}</span>\n\t\t\t</template>\n\t\t\t<template slot=\"option\" slot-scope=\"props\">\n\t\t\t\t<span v-if=\"props.option.icon\" class=\"option__icon\" :class=\"props.option.icon\" />\n\t\t\t\t<img v-else :src=\"props.option.iconUrl\">\n\t\t\t\t<span class=\"option__title\">{{ props.option.label }}</span>\n\t\t\t</template>\n\t\t</Multiselect>\n\t\t<input v-if=\"!isPredefined\"\n\t\t\ttype=\"text\"\n\t\t\t:value=\"currentValue.pattern\"\n\t\t\t:placeholder=\"t('workflowengine', 'e.g. httpd/unix-directory')\"\n\t\t\t@input=\"updateCustom\">\n\t</div>\n</template>\n\n<script>\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\nimport valueMixin from './../../mixins/valueMixin'\nimport { imagePath } from '@nextcloud/router'\n\nexport default {\n\tname: 'FileMimeType',\n\tcomponents: {\n\t\tMultiselect,\n\t},\n\tmixins: [\n\t\tvalueMixin,\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tpredefinedTypes: [\n\t\t\t\t{\n\t\t\t\t\ticon: 'icon-folder',\n\t\t\t\t\tlabel: t('workflowengine', 'Folder'),\n\t\t\t\t\tpattern: 'httpd/unix-directory',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ticon: 'icon-picture',\n\t\t\t\t\tlabel: t('workflowengine', 'Images'),\n\t\t\t\t\tpattern: '/image\\\\/.*/',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ticonUrl: imagePath('core', 'filetypes/x-office-document'),\n\t\t\t\t\tlabel: t('workflowengine', 'Office documents'),\n\t\t\t\t\tpattern: '/(vnd\\\\.(ms-|openxmlformats-|oasis\\\\.opendocument).*)$/',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ticonUrl: imagePath('core', 'filetypes/application-pdf'),\n\t\t\t\t\tlabel: t('workflowengine', 'PDF documents'),\n\t\t\t\t\tpattern: 'application/pdf',\n\t\t\t\t},\n\t\t\t],\n\t\t}\n\t},\n\tcomputed: {\n\t\toptions() {\n\t\t\treturn [...this.predefinedTypes, this.customValue]\n\t\t},\n\t\tisPredefined() {\n\t\t\tconst matchingPredefined = this.predefinedTypes.find((type) => this.newValue === type.pattern)\n\t\t\tif (matchingPredefined) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\tcustomValue() {\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom mimetype'),\n\t\t\t\tpattern: '',\n\t\t\t}\n\t\t},\n\t\tcurrentValue() {\n\t\t\tconst matchingPredefined = this.predefinedTypes.find((type) => this.newValue === type.pattern)\n\t\t\tif (matchingPredefined) {\n\t\t\t\treturn matchingPredefined\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom mimetype'),\n\t\t\t\tpattern: this.newValue,\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\tvalidateRegex(string) {\n\t\t\tconst regexRegex = /^\\/(.*)\\/([gui]{0,3})$/\n\t\t\tconst result = regexRegex.exec(string)\n\t\t\treturn result !== null\n\t\t},\n\t\tsetValue(value) {\n\t\t\tif (value !== null) {\n\t\t\t\tthis.newValue = value.pattern\n\t\t\t\tthis.$emit('input', this.newValue)\n\t\t\t}\n\t\t},\n\t\tupdateCustom(event) {\n\t\t\tthis.newValue = event.target.value\n\t\t\tthis.$emit('input', this.newValue)\n\t\t},\n\t},\n}\n</script>\n<style scoped>\n\t.multiselect, input[type='text'] {\n\t\twidth: 100%;\n\t}\n\t.multiselect >>> .multiselect__content-wrapper li>span,\n\t.multiselect >>> .multiselect__single {\n\t\tdisplay: flex;\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileMimeType.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!./FileMimeType.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/vue-loader/lib/index.js??vue-loader-options!./FileMimeType.vue?vue&type=style&index=0&id=8c011724&scoped=true&lang=css&\";\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/vue-loader/lib/index.js??vue-loader-options!./FileMimeType.vue?vue&type=style&index=0&id=8c011724&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileMimeType.vue?vue&type=template&id=8c011724&scoped=true&\"\nimport script from \"./FileMimeType.vue?vue&type=script&lang=js&\"\nexport * from \"./FileMimeType.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FileMimeType.vue?vue&type=style&index=0&id=8c011724&scoped=true&lang=css&\"\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 \"8c011724\",\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',[_c('Multiselect',{attrs:{\"value\":_vm.currentValue,\"placeholder\":_vm.t('workflowengine', 'Select a file type'),\"label\":\"label\",\"track-by\":\"pattern\",\"options\":_vm.options,\"multiple\":false,\"tagging\":false},on:{\"input\":_vm.setValue},scopedSlots:_vm._u([{key:\"singleLabel\",fn:function(props){return [(props.option.icon)?_c('span',{staticClass:\"option__icon\",class:props.option.icon}):_c('img',{attrs:{\"src\":props.option.iconUrl}}),_vm._v(\" \"),_c('span',{staticClass:\"option__title option__title_single\"},[_vm._v(_vm._s(props.option.label))])]}},{key:\"option\",fn:function(props){return [(props.option.icon)?_c('span',{staticClass:\"option__icon\",class:props.option.icon}):_c('img',{attrs:{\"src\":props.option.iconUrl}}),_vm._v(\" \"),_c('span',{staticClass:\"option__title\"},[_vm._v(_vm._s(props.option.label))])]}}])}),_vm._v(\" \"),(!_vm.isPredefined)?_c('input',{attrs:{\"type\":\"text\",\"placeholder\":_vm.t('workflowengine', 'e.g. httpd/unix-directory')},domProps:{\"value\":_vm.currentValue.pattern},on:{\"input\":_vm.updateCustom}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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 */\n\nimport axios from '@nextcloud/axios'\nimport { generateRemoteUrl } from '@nextcloud/router'\n\nconst xmlToJson = (xml) => {\n\tlet obj = {}\n\n\tif (xml.nodeType === 1) {\n\t\tif (xml.attributes.length > 0) {\n\t\t\tobj['@attributes'] = {}\n\t\t\tfor (let j = 0; j < xml.attributes.length; j++) {\n\t\t\t\tconst attribute = xml.attributes.item(j)\n\t\t\t\tobj['@attributes'][attribute.nodeName] = attribute.nodeValue\n\t\t\t}\n\t\t}\n\t} else if (xml.nodeType === 3) {\n\t\tobj = xml.nodeValue\n\t}\n\n\tif (xml.hasChildNodes()) {\n\t\tfor (let i = 0; i < xml.childNodes.length; i++) {\n\t\t\tconst item = xml.childNodes.item(i)\n\t\t\tconst nodeName = item.nodeName\n\t\t\tif (typeof (obj[nodeName]) === 'undefined') {\n\t\t\t\tobj[nodeName] = xmlToJson(item)\n\t\t\t} else {\n\t\t\t\tif (typeof obj[nodeName].push === 'undefined') {\n\t\t\t\t\tconst old = obj[nodeName]\n\t\t\t\t\tobj[nodeName] = []\n\t\t\t\t\tobj[nodeName].push(old)\n\t\t\t\t}\n\t\t\t\tobj[nodeName].push(xmlToJson(item))\n\t\t\t}\n\t\t}\n\t}\n\treturn obj\n}\n\nconst parseXml = (xml) => {\n\tlet dom = null\n\ttry {\n\t\tdom = (new DOMParser()).parseFromString(xml, 'text/xml')\n\t} catch (e) {\n\t\tconsole.error('Failed to parse xml document', e)\n\t}\n\treturn dom\n}\n\nconst xmlToTagList = (xml) => {\n\tconst json = xmlToJson(parseXml(xml))\n\tconst list = json['d:multistatus']['d:response']\n\tconst result = []\n\tfor (const index in list) {\n\t\tconst tag = list[index]['d:propstat']\n\n\t\tif (tag['d:status']['#text'] !== 'HTTP/1.1 200 OK') {\n\t\t\tcontinue\n\t\t}\n\t\tresult.push({\n\t\t\tid: tag['d:prop']['oc:id']['#text'],\n\t\t\tdisplayName: tag['d:prop']['oc:display-name']['#text'],\n\t\t\tcanAssign: tag['d:prop']['oc:can-assign']['#text'] === 'true',\n\t\t\tuserAssignable: tag['d:prop']['oc:user-assignable']['#text'] === 'true',\n\t\t\tuserVisible: tag['d:prop']['oc:user-visible']['#text'] === 'true',\n\t\t})\n\t}\n\treturn result\n}\n\nconst searchTags = function() {\n\treturn axios({\n\t\tmethod: 'PROPFIND',\n\t\turl: generateRemoteUrl('dav') + '/systemtags/',\n\t\tdata: `<?xml version=\"1.0\"?>\n\t\t\t\t\t<d:propfind xmlns:d=\"DAV:\" xmlns:oc=\"http://owncloud.org/ns\">\n\t\t\t\t\t <d:prop>\n\t\t\t\t\t\t<oc:id />\n\t\t\t\t\t\t<oc:display-name />\n\t\t\t\t\t\t<oc:user-visible />\n\t\t\t\t\t\t<oc:user-assignable />\n\t\t\t\t\t\t<oc:can-assign />\n\t\t\t\t\t </d:prop>\n\t\t\t\t\t</d:propfind>`,\n\t}).then((response) => {\n\t\treturn xmlToTagList(response.data)\n\t})\n}\n\nexport {\n\tsearchTags,\n}\n","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<Multiselect v-model=\"inputValObjects\"\n\t\t:options=\"tags\"\n\t\t:options-limit=\"5\"\n\t\t:placeholder=\"label\"\n\t\ttrack-by=\"id\"\n\t\t:custom-label=\"tagLabel\"\n\t\tclass=\"multiselect-vue\"\n\t\t:multiple=\"multiple\"\n\t\t:close-on-select=\"false\"\n\t\t:tag-width=\"60\"\n\t\t:disabled=\"disabled\"\n\t\t@input=\"update\">\n\t\t<span slot=\"noResult\">{{ t('core', 'No results') }}</span>\n\t\t<template #option=\"scope\">\n\t\t\t{{ tagLabel(scope.option) }}\n\t\t</template>\n\t</multiselect>\n</template>\n\n<script>\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\nimport { searchTags } from './api'\n\nlet uuid = 0\nexport default {\n\tname: 'MultiselectTag',\n\tcomponents: {\n\t\tMultiselect,\n\t},\n\tprops: {\n\t\tlabel: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tvalue: {\n\t\t\ttype: [String, Array],\n\t\t\tdefault: null,\n\t\t},\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tmultiple: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tinputValObjects: [],\n\t\t\ttags: [],\n\t\t}\n\t},\n\tcomputed: {\n\t\tid() {\n\t\t\treturn 'settings-input-text-' + this.uuid\n\t\t},\n\t},\n\twatch: {\n\t\tvalue(newVal) {\n\t\t\tthis.inputValObjects = this.getValueObject()\n\t\t},\n\t},\n\tbeforeCreate() {\n\t\tthis.uuid = uuid.toString()\n\t\tuuid += 1\n\t\tsearchTags().then((result) => {\n\t\t\tthis.tags = result\n\t\t\tthis.inputValObjects = this.getValueObject()\n\t\t}).catch(console.error.bind(this))\n\t},\n\tmethods: {\n\t\tgetValueObject() {\n\t\t\tif (this.tags.length === 0) {\n\t\t\t\treturn []\n\t\t\t}\n\t\t\tif (this.multiple) {\n\t\t\t\treturn this.value.filter((tag) => tag !== '').map(\n\t\t\t\t\t(id) => this.tags.find((tag2) => tag2.id === id)\n\t\t\t\t)\n\t\t\t} else {\n\t\t\t\treturn this.tags.find((tag) => tag.id === this.value)\n\t\t\t}\n\t\t},\n\t\tupdate() {\n\t\t\tif (this.multiple) {\n\t\t\t\tthis.$emit('input', this.inputValObjects.map((element) => element.id))\n\t\t\t} else {\n\t\t\t\tif (this.inputValObjects === null) {\n\t\t\t\t\tthis.$emit('input', '')\n\t\t\t\t} else {\n\t\t\t\t\tthis.$emit('input', this.inputValObjects.id)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ttagLabel({ displayName, userVisible, userAssignable }) {\n\t\t\tif (userVisible === false) {\n\t\t\t\treturn t('systemtags', '%s (invisible)').replace('%s', displayName)\n\t\t\t}\n\t\t\tif (userAssignable === false) {\n\t\t\t\treturn t('systemtags', '%s (restricted)').replace('%s', displayName)\n\t\t\t}\n\t\t\treturn displayName\n\t\t},\n\t},\n}\n</script>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MultiselectTag.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!./MultiselectTag.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileSystemTag.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!./FileSystemTag.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<MultiselectTag v-model=\"newValue\"\n\t\t:multiple=\"false\"\n\t\t:label=\"t('workflowengine', 'Select a tag')\"\n\t\t@input=\"update\" />\n</template>\n\n<script>\nimport { MultiselectTag } from './MultiselectTag'\n\nexport default {\n\tname: 'FileSystemTag',\n\tcomponents: {\n\t\tMultiselectTag,\n\t},\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tnewValue: [],\n\t\t}\n\t},\n\twatch: {\n\t\tvalue() {\n\t\t\tthis.updateValue()\n\t\t},\n\t},\n\tbeforeMount() {\n\t\tthis.updateValue()\n\t},\n\tmethods: {\n\t\tupdateValue() {\n\t\t\tif (this.value !== '') {\n\t\t\t\tthis.newValue = this.value\n\t\t\t} else {\n\t\t\t\tthis.newValue = null\n\t\t\t}\n\t\t},\n\t\tupdate() {\n\t\t\tthis.$emit('input', this.newValue || '')\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\n</style>\n","import { render, staticRenderFns } from \"./MultiselectTag.vue?vue&type=template&id=73cc22e8&\"\nimport script from \"./MultiselectTag.vue?vue&type=script&lang=js&\"\nexport * from \"./MultiselectTag.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Multiselect',{staticClass:\"multiselect-vue\",attrs:{\"options\":_vm.tags,\"options-limit\":5,\"placeholder\":_vm.label,\"track-by\":\"id\",\"custom-label\":_vm.tagLabel,\"multiple\":_vm.multiple,\"close-on-select\":false,\"tag-width\":60,\"disabled\":_vm.disabled},on:{\"input\":_vm.update},scopedSlots:_vm._u([{key:\"option\",fn:function(scope){return [_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.tagLabel(scope.option))+\"\\n\\t\")]}}]),model:{value:(_vm.inputValObjects),callback:function ($$v) {_vm.inputValObjects=$$v},expression:\"inputValObjects\"}},[_c('span',{attrs:{\"slot\":\"noResult\"},slot:\"noResult\"},[_vm._v(_vm._s(_vm.t('core', 'No results')))])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./FileSystemTag.vue?vue&type=template&id=31f5522d&scoped=true&\"\nimport script from \"./FileSystemTag.vue?vue&type=script&lang=js&\"\nexport * from \"./FileSystemTag.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"31f5522d\",\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('MultiselectTag',{attrs:{\"multiple\":false,\"label\":_vm.t('workflowengine', 'Select a tag')},on:{\"input\":_vm.update},model:{value:(_vm.newValue),callback:function ($$v) {_vm.newValue=$$v},expression:\"newValue\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nimport { stringValidator, validateIPv4, validateIPv6 } from '../../helpers/validators'\nimport FileMimeType from './FileMimeType'\nimport FileSystemTag from './FileSystemTag'\n\nconst stringOrRegexOperators = () => {\n\treturn [\n\t\t{ operator: 'matches', name: t('workflowengine', 'matches') },\n\t\t{ operator: '!matches', name: t('workflowengine', 'does not match') },\n\t\t{ operator: 'is', name: t('workflowengine', 'is') },\n\t\t{ operator: '!is', name: t('workflowengine', 'is not') },\n\t]\n}\n\nconst FileChecks = [\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\FileName',\n\t\tname: t('workflowengine', 'File name'),\n\t\toperators: stringOrRegexOperators,\n\t\tplaceholder: (check) => {\n\t\t\tif (check.operator === 'matches' || check.operator === '!matches') {\n\t\t\t\treturn '/^dummy-.+$/i'\n\t\t\t}\n\t\t\treturn 'filename.txt'\n\t\t},\n\t\tvalidate: stringValidator,\n\t},\n\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\FileMimeType',\n\t\tname: t('workflowengine', 'File MIME type'),\n\t\toperators: stringOrRegexOperators,\n\t\tcomponent: FileMimeType,\n\t},\n\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\FileSize',\n\t\tname: t('workflowengine', 'File size (upload)'),\n\t\toperators: [\n\t\t\t{ operator: 'less', name: t('workflowengine', 'less') },\n\t\t\t{ operator: '!greater', name: t('workflowengine', 'less or equals') },\n\t\t\t{ operator: '!less', name: t('workflowengine', 'greater or equals') },\n\t\t\t{ operator: 'greater', name: t('workflowengine', 'greater') },\n\t\t],\n\t\tplaceholder: (check) => '5 MB',\n\t\tvalidate: (check) => check.value ? check.value.match(/^[0-9]+[ ]?[kmgt]?b$/i) !== null : false,\n\t},\n\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\RequestRemoteAddress',\n\t\tname: t('workflowengine', 'Request remote address'),\n\t\toperators: [\n\t\t\t{ operator: 'matchesIPv4', name: t('workflowengine', 'matches IPv4') },\n\t\t\t{ operator: '!matchesIPv4', name: t('workflowengine', 'does not match IPv4') },\n\t\t\t{ operator: 'matchesIPv6', name: t('workflowengine', 'matches IPv6') },\n\t\t\t{ operator: '!matchesIPv6', name: t('workflowengine', 'does not match IPv6') },\n\t\t],\n\t\tplaceholder: (check) => {\n\t\t\tif (check.operator === 'matchesIPv6' || check.operator === '!matchesIPv6') {\n\t\t\t\treturn '::1/128'\n\t\t\t}\n\t\t\treturn '127.0.0.1/32'\n\t\t},\n\t\tvalidate: (check) => {\n\t\t\tif (check.operator === 'matchesIPv6' || check.operator === '!matchesIPv6') {\n\t\t\t\treturn validateIPv6(check.value)\n\t\t\t}\n\t\t\treturn validateIPv4(check.value)\n\t\t},\n\t},\n\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\FileSystemTags',\n\t\tname: t('workflowengine', 'File system tag'),\n\t\toperators: [\n\t\t\t{ operator: 'is', name: t('workflowengine', 'is tagged with') },\n\t\t\t{ operator: '!is', name: t('workflowengine', 'is not tagged with') },\n\t\t],\n\t\tcomponent: FileSystemTag,\n\t},\n]\n\nexport default FileChecks\n","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<div>\n\t\t<Multiselect :value=\"currentValue\"\n\t\t\t:placeholder=\"t('workflowengine', 'Select a user agent')\"\n\t\t\tlabel=\"label\"\n\t\t\ttrack-by=\"pattern\"\n\t\t\t:options=\"options\"\n\t\t\t:multiple=\"false\"\n\t\t\t:tagging=\"false\"\n\t\t\t@input=\"setValue\">\n\t\t\t<template slot=\"singleLabel\" slot-scope=\"props\">\n\t\t\t\t<span class=\"option__icon\" :class=\"props.option.icon\" />\n\t\t\t\t<!-- v-html can be used here as t() always passes our translated strings though DOMPurify.sanitize -->\n\t\t\t\t<!-- eslint-disable-next-line vue/no-v-html -->\n\t\t\t\t<span class=\"option__title option__title_single\" v-html=\"props.option.label\" />\n\t\t\t</template>\n\t\t\t<template slot=\"option\" slot-scope=\"props\">\n\t\t\t\t<span class=\"option__icon\" :class=\"props.option.icon\" />\n\t\t\t\t<!-- eslint-disable-next-line vue/no-v-html -->\n\t\t\t\t<span v-if=\"props.option.$groupLabel\" class=\"option__title\" v-html=\"props.option.$groupLabel\" />\n\t\t\t\t<!-- eslint-disable-next-line vue/no-v-html -->\n\t\t\t\t<span v-else class=\"option__title\" v-html=\"props.option.label\" />\n\t\t\t</template>\n\t\t</Multiselect>\n\t\t<input v-if=\"!isPredefined\"\n\t\t\ttype=\"text\"\n\t\t\t:value=\"currentValue.pattern\"\n\t\t\t@input=\"updateCustom\">\n\t</div>\n</template>\n\n<script>\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\nimport valueMixin from '../../mixins/valueMixin'\n\nexport default {\n\tname: 'RequestUserAgent',\n\tcomponents: {\n\t\tMultiselect,\n\t},\n\tmixins: [\n\t\tvalueMixin,\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tnewValue: '',\n\t\t\tpredefinedTypes: [\n\t\t\t\t{ pattern: 'android', label: t('workflowengine', 'Android client'), icon: 'icon-phone' },\n\t\t\t\t{ pattern: 'ios', label: t('workflowengine', 'iOS client'), icon: 'icon-phone' },\n\t\t\t\t{ pattern: 'desktop', label: t('workflowengine', 'Desktop client'), icon: 'icon-desktop' },\n\t\t\t\t{ pattern: 'mail', label: t('workflowengine', 'Thunderbird & Outlook addons'), icon: 'icon-mail' },\n\t\t\t],\n\t\t}\n\t},\n\tcomputed: {\n\t\toptions() {\n\t\t\treturn [...this.predefinedTypes, this.customValue]\n\t\t},\n\t\tmatchingPredefined() {\n\t\t\treturn this.predefinedTypes\n\t\t\t\t.find((type) => this.newValue === type.pattern)\n\t\t},\n\t\tisPredefined() {\n\t\t\treturn !!this.matchingPredefined\n\t\t},\n\t\tcustomValue() {\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom user agent'),\n\t\t\t\tpattern: '',\n\t\t\t}\n\t\t},\n\t\tcurrentValue() {\n\t\t\tif (this.matchingPredefined) {\n\t\t\t\treturn this.matchingPredefined\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom user agent'),\n\t\t\t\tpattern: this.newValue,\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\tvalidateRegex(string) {\n\t\t\tconst regexRegex = /^\\/(.*)\\/([gui]{0,3})$/\n\t\t\tconst result = regexRegex.exec(string)\n\t\t\treturn result !== null\n\t\t},\n\t\tsetValue(value) {\n\t\t\t// TODO: check if value requires a regex and set the check operator according to that\n\t\t\tif (value !== null) {\n\t\t\t\tthis.newValue = value.pattern\n\t\t\t\tthis.$emit('input', this.newValue)\n\t\t\t}\n\t\t},\n\t\tupdateCustom(event) {\n\t\t\tthis.newValue = event.target.value\n\t\t\tthis.$emit('input', this.newValue)\n\t\t},\n\t},\n}\n</script>\n<style scoped>\n\t.multiselect, input[type='text'] {\n\t\twidth: 100%;\n\t}\n\n\t.multiselect .multiselect__content-wrapper li>span {\n\t\tdisplay: flex;\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n\t.multiselect::v-deep .multiselect__single {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n\t.option__icon {\n\t\tdisplay: inline-block;\n\t\tmin-width: 30px;\n\t\tbackground-position: left;\n\t}\n\t.option__title {\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestUserAgent.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!./RequestUserAgent.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/vue-loader/lib/index.js??vue-loader-options!./RequestUserAgent.vue?vue&type=style&index=0&id=475ac1e6&scoped=true&lang=css&\";\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/vue-loader/lib/index.js??vue-loader-options!./RequestUserAgent.vue?vue&type=style&index=0&id=475ac1e6&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RequestUserAgent.vue?vue&type=template&id=475ac1e6&scoped=true&\"\nimport script from \"./RequestUserAgent.vue?vue&type=script&lang=js&\"\nexport * from \"./RequestUserAgent.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RequestUserAgent.vue?vue&type=style&index=0&id=475ac1e6&scoped=true&lang=css&\"\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 \"475ac1e6\",\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',[_c('Multiselect',{attrs:{\"value\":_vm.currentValue,\"placeholder\":_vm.t('workflowengine', 'Select a user agent'),\"label\":\"label\",\"track-by\":\"pattern\",\"options\":_vm.options,\"multiple\":false,\"tagging\":false},on:{\"input\":_vm.setValue},scopedSlots:_vm._u([{key:\"singleLabel\",fn:function(props){return [_c('span',{staticClass:\"option__icon\",class:props.option.icon}),_vm._v(\" \"),_c('span',{staticClass:\"option__title option__title_single\",domProps:{\"innerHTML\":_vm._s(props.option.label)}})]}},{key:\"option\",fn:function(props){return [_c('span',{staticClass:\"option__icon\",class:props.option.icon}),_vm._v(\" \"),(props.option.$groupLabel)?_c('span',{staticClass:\"option__title\",domProps:{\"innerHTML\":_vm._s(props.option.$groupLabel)}}):_c('span',{staticClass:\"option__title\",domProps:{\"innerHTML\":_vm._s(props.option.label)}})]}}])}),_vm._v(\" \"),(!_vm.isPredefined)?_c('input',{attrs:{\"type\":\"text\"},domProps:{\"value\":_vm.currentValue.pattern},on:{\"input\":_vm.updateCustom}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<div class=\"timeslot\">\n\t\t<input v-model=\"newValue.startTime\"\n\t\t\ttype=\"text\"\n\t\t\tclass=\"timeslot--start\"\n\t\t\tplaceholder=\"e.g. 08:00\"\n\t\t\t@input=\"update\">\n\t\t<input v-model=\"newValue.endTime\"\n\t\t\ttype=\"text\"\n\t\t\tplaceholder=\"e.g. 18:00\"\n\t\t\t@input=\"update\">\n\t\t<p v-if=\"!valid\" class=\"invalid-hint\">\n\t\t\t{{ t('workflowengine', 'Please enter a valid time span') }}\n\t\t</p>\n\t\t<Multiselect v-show=\"valid\"\n\t\t\tv-model=\"newValue.timezone\"\n\t\t\t:options=\"timezones\"\n\t\t\t@input=\"update\" />\n\t</div>\n</template>\n\n<script>\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\nimport moment from 'moment-timezone'\nimport valueMixin from '../../mixins/valueMixin'\n\nconst zones = moment.tz.names()\nexport default {\n\tname: 'RequestTime',\n\tcomponents: {\n\t\tMultiselect,\n\t},\n\tmixins: [\n\t\tvalueMixin,\n\t],\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\ttimezones: zones,\n\t\t\tvalid: false,\n\t\t\tnewValue: {\n\t\t\t\tstartTime: null,\n\t\t\t\tendTime: null,\n\t\t\t\ttimezone: moment.tz.guess(),\n\t\t\t},\n\t\t}\n\t},\n\tmounted() {\n\t\tthis.validate()\n\t},\n\tmethods: {\n\t\tupdateInternalValue(value) {\n\t\t\ttry {\n\t\t\t\tconst data = JSON.parse(value)\n\t\t\t\tif (data.length === 2) {\n\t\t\t\t\tthis.newValue = {\n\t\t\t\t\t\tstartTime: data[0].split(' ', 2)[0],\n\t\t\t\t\t\tendTime: data[1].split(' ', 2)[0],\n\t\t\t\t\t\ttimezone: data[0].split(' ', 2)[1],\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t// ignore invalid values\n\t\t\t}\n\t\t},\n\t\tvalidate() {\n\t\t\tthis.valid = this.newValue.startTime && this.newValue.startTime.match(/^(0[0-9]|1[0-9]|2[0-3]|[0-9]):[0-5][0-9]$/i) !== null\n\t\t\t\t&& this.newValue.endTime && this.newValue.endTime.match(/^(0[0-9]|1[0-9]|2[0-3]|[0-9]):[0-5][0-9]$/i) !== null\n\t\t\t\t&& moment.tz.zone(this.newValue.timezone) !== null\n\t\t\tif (this.valid) {\n\t\t\t\tthis.$emit('valid')\n\t\t\t} else {\n\t\t\t\tthis.$emit('invalid')\n\t\t\t}\n\t\t\treturn this.valid\n\t\t},\n\t\tupdate() {\n\t\t\tif (this.newValue.timezone === null) {\n\t\t\t\tthis.newValue.timezone = moment.tz.guess()\n\t\t\t}\n\t\t\tif (this.validate()) {\n\t\t\t\tconst output = `[\"${this.newValue.startTime} ${this.newValue.timezone}\",\"${this.newValue.endTime} ${this.newValue.timezone}\"]`\n\t\t\t\tthis.$emit('input', output)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t.timeslot {\n\t\tdisplay: flex;\n\t\tflex-grow: 1;\n\t\tflex-wrap: wrap;\n\t\tmax-width: 180px;\n\n\t\t.multiselect {\n\t\t\twidth: 100%;\n\t\t\tmargin-bottom: 5px;\n\t\t}\n\n\t\t.multiselect::v-deep .multiselect__tags:not(:hover):not(:focus):not(:active) {\n\t\t\tborder: 1px solid transparent;\n\t\t}\n\n\t\tinput[type=text] {\n\t\t\twidth: 50%;\n\t\t\tmargin: 0;\n\t\t\tmargin-bottom: 5px;\n\n\t\t\t&.timeslot--start {\n\t\t\t\tmargin-right: 5px;\n\t\t\t\twidth: calc(50% - 5px);\n\t\t\t}\n\t\t}\n\n\t\t.invalid-hint {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestTime.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!./RequestTime.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!./RequestTime.vue?vue&type=style&index=0&id=149baca9&scoped=true&lang=scss&\";\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!./RequestTime.vue?vue&type=style&index=0&id=149baca9&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RequestTime.vue?vue&type=template&id=149baca9&scoped=true&\"\nimport script from \"./RequestTime.vue?vue&type=script&lang=js&\"\nexport * from \"./RequestTime.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RequestTime.vue?vue&type=style&index=0&id=149baca9&scoped=true&lang=scss&\"\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 \"149baca9\",\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:\"timeslot\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newValue.startTime),expression:\"newValue.startTime\"}],staticClass:\"timeslot--start\",attrs:{\"type\":\"text\",\"placeholder\":\"e.g. 08:00\"},domProps:{\"value\":(_vm.newValue.startTime)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.newValue, \"startTime\", $event.target.value)},_vm.update]}}),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newValue.endTime),expression:\"newValue.endTime\"}],attrs:{\"type\":\"text\",\"placeholder\":\"e.g. 18:00\"},domProps:{\"value\":(_vm.newValue.endTime)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.newValue, \"endTime\", $event.target.value)},_vm.update]}}),_vm._v(\" \"),(!_vm.valid)?_c('p',{staticClass:\"invalid-hint\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('workflowengine', 'Please enter a valid time span'))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),_c('Multiselect',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.valid),expression:\"valid\"}],attrs:{\"options\":_vm.timezones},on:{\"input\":_vm.update},model:{value:(_vm.newValue.timezone),callback:function ($$v) {_vm.$set(_vm.newValue, \"timezone\", $$v)},expression:\"newValue.timezone\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<div>\n\t\t<Multiselect :value=\"currentValue\"\n\t\t\t:placeholder=\"t('workflowengine', 'Select a request URL')\"\n\t\t\tlabel=\"label\"\n\t\t\ttrack-by=\"pattern\"\n\t\t\tgroup-values=\"children\"\n\t\t\tgroup-label=\"label\"\n\t\t\t:options=\"options\"\n\t\t\t:multiple=\"false\"\n\t\t\t:tagging=\"false\"\n\t\t\t@input=\"setValue\">\n\t\t\t<template slot=\"singleLabel\" slot-scope=\"props\">\n\t\t\t\t<span class=\"option__icon\" :class=\"props.option.icon\" />\n\t\t\t\t<span class=\"option__title option__title_single\">{{ props.option.label }}</span>\n\t\t\t</template>\n\t\t\t<template slot=\"option\" slot-scope=\"props\">\n\t\t\t\t<span class=\"option__icon\" :class=\"props.option.icon\" />\n\t\t\t\t<span class=\"option__title\">{{ props.option.label }} {{ props.option.$groupLabel }}</span>\n\t\t\t</template>\n\t\t</Multiselect>\n\t\t<input v-if=\"!isPredefined\"\n\t\t\ttype=\"text\"\n\t\t\t:value=\"currentValue.pattern\"\n\t\t\t:placeholder=\"placeholder\"\n\t\t\t@input=\"updateCustom\">\n\t</div>\n</template>\n\n<script>\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\nimport valueMixin from '../../mixins/valueMixin'\n\nexport default {\n\tname: 'RequestURL',\n\tcomponents: {\n\t\tMultiselect,\n\t},\n\tmixins: [\n\t\tvalueMixin,\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tnewValue: '',\n\t\t\tpredefinedTypes: [\n\t\t\t\t{\n\t\t\t\t\tlabel: t('workflowengine', 'Predefined URLs'),\n\t\t\t\t\tchildren: [\n\t\t\t\t\t\t{ pattern: 'webdav', label: t('workflowengine', 'Files WebDAV') },\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t}\n\t},\n\tcomputed: {\n\t\toptions() {\n\t\t\treturn [...this.predefinedTypes, this.customValue]\n\t\t},\n\t\tplaceholder() {\n\t\t\tif (this.check.operator === 'matches' || this.check.operator === '!matches') {\n\t\t\t\treturn '/^https\\\\:\\\\/\\\\/localhost\\\\/index\\\\.php$/i'\n\t\t\t}\n\t\t\treturn 'https://localhost/index.php'\n\t\t},\n\t\tmatchingPredefined() {\n\t\t\treturn this.predefinedTypes\n\t\t\t\t.map(groups => groups.children)\n\t\t\t\t.flat()\n\t\t\t\t.find((type) => this.newValue === type.pattern)\n\t\t},\n\t\tisPredefined() {\n\t\t\treturn !!this.matchingPredefined\n\t\t},\n\t\tcustomValue() {\n\t\t\treturn {\n\t\t\t\tlabel: t('workflowengine', 'Others'),\n\t\t\t\tchildren: [\n\t\t\t\t\t{\n\t\t\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\t\t\tlabel: t('workflowengine', 'Custom URL'),\n\t\t\t\t\t\tpattern: '',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t}\n\t\t},\n\t\tcurrentValue() {\n\t\t\tif (this.matchingPredefined) {\n\t\t\t\treturn this.matchingPredefined\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom URL'),\n\t\t\t\tpattern: this.newValue,\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\tvalidateRegex(string) {\n\t\t\tconst regexRegex = /^\\/(.*)\\/([gui]{0,3})$/\n\t\t\tconst result = regexRegex.exec(string)\n\t\t\treturn result !== null\n\t\t},\n\t\tsetValue(value) {\n\t\t\t// TODO: check if value requires a regex and set the check operator according to that\n\t\t\tif (value !== null) {\n\t\t\t\tthis.newValue = value.pattern\n\t\t\t\tthis.$emit('input', this.newValue)\n\t\t\t}\n\t\t},\n\t\tupdateCustom(event) {\n\t\t\tthis.newValue = event.target.value\n\t\t\tthis.$emit('input', this.newValue)\n\t\t},\n\t},\n}\n</script>\n<style scoped>\n\t.multiselect, input[type='text'] {\n\t\twidth: 100%;\n\t}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestURL.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!./RequestURL.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/vue-loader/lib/index.js??vue-loader-options!./RequestURL.vue?vue&type=style&index=0&id=dd8e16be&scoped=true&lang=css&\";\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/vue-loader/lib/index.js??vue-loader-options!./RequestURL.vue?vue&type=style&index=0&id=dd8e16be&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RequestURL.vue?vue&type=template&id=dd8e16be&scoped=true&\"\nimport script from \"./RequestURL.vue?vue&type=script&lang=js&\"\nexport * from \"./RequestURL.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RequestURL.vue?vue&type=style&index=0&id=dd8e16be&scoped=true&lang=css&\"\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 \"dd8e16be\",\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',[_c('Multiselect',{attrs:{\"value\":_vm.currentValue,\"placeholder\":_vm.t('workflowengine', 'Select a request URL'),\"label\":\"label\",\"track-by\":\"pattern\",\"group-values\":\"children\",\"group-label\":\"label\",\"options\":_vm.options,\"multiple\":false,\"tagging\":false},on:{\"input\":_vm.setValue},scopedSlots:_vm._u([{key:\"singleLabel\",fn:function(props){return [_c('span',{staticClass:\"option__icon\",class:props.option.icon}),_vm._v(\" \"),_c('span',{staticClass:\"option__title option__title_single\"},[_vm._v(_vm._s(props.option.label))])]}},{key:\"option\",fn:function(props){return [_c('span',{staticClass:\"option__icon\",class:props.option.icon}),_vm._v(\" \"),_c('span',{staticClass:\"option__title\"},[_vm._v(_vm._s(props.option.label)+\" \"+_vm._s(props.option.$groupLabel))])]}}])}),_vm._v(\" \"),(!_vm.isPredefined)?_c('input',{attrs:{\"type\":\"text\",\"placeholder\":_vm.placeholder},domProps:{\"value\":_vm.currentValue.pattern},on:{\"input\":_vm.updateCustom}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\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 -->\n\n<template>\n\t<div>\n\t\t<Multiselect :value=\"currentValue\"\n\t\t\t:loading=\"status.isLoading && groups.length === 0\"\n\t\t\t:options=\"groups\"\n\t\t\t:multiple=\"false\"\n\t\t\tlabel=\"displayname\"\n\t\t\ttrack-by=\"id\"\n\t\t\t@search-change=\"searchAsync\"\n\t\t\t@input=\"(value) => $emit('input', value.id)\" />\n\t</div>\n</template>\n\n<script>\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nconst groups = []\nconst status = {\n\tisLoading: false,\n}\n\nexport default {\n\tname: 'RequestUserGroup',\n\tcomponents: {\n\t\tMultiselect,\n\t},\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tcheck: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => { return {} },\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tgroups,\n\t\t\tstatus,\n\t\t}\n\t},\n\tcomputed: {\n\t\tcurrentValue() {\n\t\t\treturn this.groups.find(group => group.id === this.value) || null\n\t\t},\n\t},\n\tasync mounted() {\n\t\tif (this.groups.length === 0) {\n\t\t\tawait this.searchAsync('')\n\t\t}\n\t\tif (this.currentValue === null) {\n\t\t\tawait this.searchAsync(this.value)\n\t\t}\n\t},\n\tmethods: {\n\t\tsearchAsync(searchQuery) {\n\t\t\tif (this.status.isLoading) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.status.isLoading = true\n\t\t\treturn axios.get(generateOcsUrl('cloud/groups/details?limit=20&search={searchQuery}', { searchQuery })).then((response) => {\n\t\t\t\tresponse.data.ocs.data.groups.forEach((group) => {\n\t\t\t\t\tthis.addGroup({\n\t\t\t\t\t\tid: group.id,\n\t\t\t\t\t\tdisplayname: group.displayname,\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\tthis.status.isLoading = false\n\t\t\t}, (error) => {\n\t\t\t\tconsole.error('Error while loading group list', error.response)\n\t\t\t})\n\t\t},\n\t\taddGroup(group) {\n\t\t\tconst index = this.groups.findIndex((item) => item.id === group.id)\n\t\t\tif (index === -1) {\n\t\t\t\tthis.groups.push(group)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n<style scoped>\n\t.multiselect {\n\t\twidth: 100%;\n\t}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestUserGroup.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!./RequestUserGroup.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/vue-loader/lib/index.js??vue-loader-options!./RequestUserGroup.vue?vue&type=style&index=0&id=79fa10a5&scoped=true&lang=css&\";\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/vue-loader/lib/index.js??vue-loader-options!./RequestUserGroup.vue?vue&type=style&index=0&id=79fa10a5&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RequestUserGroup.vue?vue&type=template&id=79fa10a5&scoped=true&\"\nimport script from \"./RequestUserGroup.vue?vue&type=script&lang=js&\"\nexport * from \"./RequestUserGroup.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RequestUserGroup.vue?vue&type=style&index=0&id=79fa10a5&scoped=true&lang=css&\"\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 \"79fa10a5\",\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',[_c('Multiselect',{attrs:{\"value\":_vm.currentValue,\"loading\":_vm.status.isLoading && _vm.groups.length === 0,\"options\":_vm.groups,\"multiple\":false,\"label\":\"displayname\",\"track-by\":\"id\"},on:{\"search-change\":_vm.searchAsync,\"input\":function (value) { return _vm.$emit('input', value.id); }}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nimport RequestUserAgent from './RequestUserAgent'\nimport RequestTime from './RequestTime'\nimport RequestURL from './RequestURL'\nimport RequestUserGroup from './RequestUserGroup'\n\nconst RequestChecks = [\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\RequestURL',\n\t\tname: t('workflowengine', 'Request URL'),\n\t\toperators: [\n\t\t\t{ operator: 'is', name: t('workflowengine', 'is') },\n\t\t\t{ operator: '!is', name: t('workflowengine', 'is not') },\n\t\t\t{ operator: 'matches', name: t('workflowengine', 'matches') },\n\t\t\t{ operator: '!matches', name: t('workflowengine', 'does not match') },\n\t\t],\n\t\tcomponent: RequestURL,\n\t},\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\RequestTime',\n\t\tname: t('workflowengine', 'Request time'),\n\t\toperators: [\n\t\t\t{ operator: 'in', name: t('workflowengine', 'between') },\n\t\t\t{ operator: '!in', name: t('workflowengine', 'not between') },\n\t\t],\n\t\tcomponent: RequestTime,\n\t},\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\RequestUserAgent',\n\t\tname: t('workflowengine', 'Request user agent'),\n\t\toperators: [\n\t\t\t{ operator: 'is', name: t('workflowengine', 'is') },\n\t\t\t{ operator: '!is', name: t('workflowengine', 'is not') },\n\t\t\t{ operator: 'matches', name: t('workflowengine', 'matches') },\n\t\t\t{ operator: '!matches', name: t('workflowengine', 'does not match') },\n\t\t],\n\t\tcomponent: RequestUserAgent,\n\t},\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\UserGroupMembership',\n\t\tname: t('workflowengine', 'User group membership'),\n\t\toperators: [\n\t\t\t{ operator: 'is', name: t('workflowengine', 'is member of') },\n\t\t\t{ operator: '!is', name: t('workflowengine', 'is not member of') },\n\t\t],\n\t\tcomponent: RequestUserGroup,\n\t},\n]\n\nexport default RequestChecks\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nimport FileChecks from './file'\nimport RequestChecks from './request'\n\nexport default [...FileChecks, ...RequestChecks]\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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 */\n\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport store from './store'\nimport Settings from './components/Workflow'\nimport ShippedChecks from './components/Checks'\n\n/**\n * A plugin for displaying a custom value field for checks\n *\n * @typedef {object} CheckPlugin\n * @property {string} class - The PHP class name of the check\n * @property {Comparison[]} operators - A list of possible comparison operations running on the check\n * @property {Vue} component - A vue component to handle the rendering of options\n * The component should handle the v-model directive properly,\n * so it needs a value property to receive data and emit an input\n * event once the data has changed\n * @property {Function} placeholder - Return a placeholder of no custom component is used\n * @property {Function} validate - validate a check if no custom component is used\n */\n\n/**\n * A plugin for extending the admin page repesentation of a operator\n *\n * @typedef {object} OperatorPlugin\n * @property {string} id - The PHP class name of the check\n * @property {string} operation - Default value for the operation field\n * @property {string} color - Custom color code to be applied for the operator selector\n * @property {Vue} component - A vue component to handle the rendering of options\n * The component should handle the v-model directive properly,\n * so it needs a value property to receive data and emit an input\n * event once the data has changed\n */\n\n/**\n * @typedef {object} Comparison\n * @property {string} operator - value the comparison should have, e.g. !less, greater\n * @property {string} name - Translated readable text, e.g. less or equals\n */\n\n/**\n * Public javascript api for apps to register custom plugins\n */\nwindow.OCA.WorkflowEngine = Object.assign({}, OCA.WorkflowEngine, {\n\n\t/**\n\t *\n\t * @param {CheckPlugin} Plugin the plugin to register\n\t */\n\tregisterCheck(Plugin) {\n\t\tstore.commit('addPluginCheck', Plugin)\n\t},\n\t/**\n\t *\n\t * @param {OperatorPlugin} Plugin the plugin to register\n\t */\n\tregisterOperator(Plugin) {\n\t\tstore.commit('addPluginOperator', Plugin)\n\t},\n})\n\n// Register shipped checks\nShippedChecks.forEach((checkPlugin) => window.OCA.WorkflowEngine.registerCheck(checkPlugin))\n\nVue.use(Vuex)\nVue.prototype.t = t\n\nconst View = Vue.extend(Settings)\nconst workflowengine = new View({\n\tstore,\n})\nworkflowengine.$mount('#workflowengine')\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, \".check[data-v-70cc784d]{display:flex;flex-wrap:wrap;width:100%;padding-right:20px}.check>*[data-v-70cc784d]:not(.close){width:180px}.check>.comparator[data-v-70cc784d]{min-width:130px;width:130px}.check>.option[data-v-70cc784d]{min-width:230px;width:230px}.check>.multiselect[data-v-70cc784d],.check>input[type=text][data-v-70cc784d]{margin-right:5px;margin-bottom:5px}.check .multiselect[data-v-70cc784d] .multiselect__content-wrapper li>span,.check .multiselect[data-v-70cc784d] .multiselect__single{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}input[type=text][data-v-70cc784d]{margin:0}[data-v-70cc784d]::placeholder{font-size:10px}button.action-item.action-item--single.icon-close[data-v-70cc784d]{height:44px;width:44px;margin-top:-5px;margin-bottom:-5px}.invalid[data-v-70cc784d]{border:1px solid var(--color-error) !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Check.vue\"],\"names\":[],\"mappings\":\"AAsJA,wBACC,YAAA,CACA,cAAA,CACA,UAAA,CACA,kBAAA,CACA,sCACC,WAAA,CAED,oCACC,eAAA,CACA,WAAA,CAED,gCACC,eAAA,CACA,WAAA,CAED,8EAEC,gBAAA,CACA,iBAAA,CAGD,qIAEC,aAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CAGF,kCACC,QAAA,CAED,+BACC,cAAA,CAED,mEACC,WAAA,CACA,UAAA,CACA,eAAA,CACA,kBAAA,CAED,0BACC,8CAAA\",\"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.check {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\twidth: 100%;\\n\\tpadding-right: 20px;\\n\\t& > *:not(.close) {\\n\\t\\twidth: 180px;\\n\\t}\\n\\t& > .comparator {\\n\\t\\tmin-width: 130px;\\n\\t\\twidth: 130px;\\n\\t}\\n\\t& > .option {\\n\\t\\tmin-width: 230px;\\n\\t\\twidth: 230px;\\n\\t}\\n\\t& > .multiselect,\\n\\t& > input[type=text] {\\n\\t\\tmargin-right: 5px;\\n\\t\\tmargin-bottom: 5px;\\n\\t}\\n\\n\\t.multiselect::v-deep .multiselect__content-wrapper li>span,\\n\\t.multiselect::v-deep .multiselect__single {\\n\\t\\tdisplay: block;\\n\\t\\twhite-space: nowrap;\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n}\\ninput[type=text] {\\n\\tmargin: 0;\\n}\\n::placeholder {\\n\\tfont-size: 10px;\\n}\\nbutton.action-item.action-item--single.icon-close {\\n\\theight: 44px;\\n\\twidth: 44px;\\n\\tmargin-top: -5px;\\n\\tmargin-bottom: -5px;\\n}\\n.invalid {\\n\\tborder: 1px solid var(--color-error) !important;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".timeslot[data-v-149baca9]{display:flex;flex-grow:1;flex-wrap:wrap;max-width:180px}.timeslot .multiselect[data-v-149baca9]{width:100%;margin-bottom:5px}.timeslot .multiselect[data-v-149baca9] .multiselect__tags:not(:hover):not(:focus):not(:active){border:1px solid rgba(0,0,0,0)}.timeslot input[type=text][data-v-149baca9]{width:50%;margin:0;margin-bottom:5px}.timeslot input[type=text].timeslot--start[data-v-149baca9]{margin-right:5px;width:calc(50% - 5px)}.timeslot .invalid-hint[data-v-149baca9]{color:var(--color-text-maxcontrast)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Checks/RequestTime.vue\"],\"names\":[],\"mappings\":\"AA+FA,2BACC,YAAA,CACA,WAAA,CACA,cAAA,CACA,eAAA,CAEA,wCACC,UAAA,CACA,iBAAA,CAGD,gGACC,8BAAA,CAGD,4CACC,SAAA,CACA,QAAA,CACA,iBAAA,CAEA,4DACC,gBAAA,CACA,qBAAA,CAIF,yCACC,mCAAA\",\"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.timeslot {\\n\\tdisplay: flex;\\n\\tflex-grow: 1;\\n\\tflex-wrap: wrap;\\n\\tmax-width: 180px;\\n\\n\\t.multiselect {\\n\\t\\twidth: 100%;\\n\\t\\tmargin-bottom: 5px;\\n\\t}\\n\\n\\t.multiselect::v-deep .multiselect__tags:not(:hover):not(:focus):not(:active) {\\n\\t\\tborder: 1px solid transparent;\\n\\t}\\n\\n\\tinput[type=text] {\\n\\t\\twidth: 50%;\\n\\t\\tmargin: 0;\\n\\t\\tmargin-bottom: 5px;\\n\\n\\t\\t&.timeslot--start {\\n\\t\\t\\tmargin-right: 5px;\\n\\t\\t\\twidth: calc(50% - 5px);\\n\\t\\t}\\n\\t}\\n\\n\\t.invalid-hint {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".event[data-v-f3569276]{margin-bottom:5px}.isComplex img[data-v-f3569276]{vertical-align:text-top}.isComplex span[data-v-f3569276]{padding-top:2px;display:inline-block}.multiselect[data-v-f3569276]{width:100%;max-width:550px;margin-top:4px}.multiselect[data-v-f3569276] .multiselect__single{display:flex}.multiselect[data-v-f3569276]:not(.multiselect--active) .multiselect__tags{background-color:var(--color-main-background) !important;border:1px solid rgba(0,0,0,0)}.multiselect[data-v-f3569276] .multiselect__tags{background-color:var(--color-main-background) !important;height:auto;min-height:34px}.multiselect[data-v-f3569276]:not(.multiselect--disabled) .multiselect__tags .multiselect__single{background-image:var(--icon-triangle-s-000);background-repeat:no-repeat;background-position:right center}input[data-v-f3569276]{border:1px solid rgba(0,0,0,0)}.option__title[data-v-f3569276]{margin-left:5px;color:var(--color-main-text)}.option__title_single[data-v-f3569276]{font-weight:900}.option__icon[data-v-f3569276]{width:16px;height:16px}.eventlist img[data-v-f3569276],.eventlist .text[data-v-f3569276]{vertical-align:middle}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Event.vue\"],\"names\":[],\"mappings\":\"AAiFA,wBACC,iBAAA,CAGA,gCACC,uBAAA,CAED,iCACC,eAAA,CACA,oBAAA,CAGF,8BACC,UAAA,CACA,eAAA,CACA,cAAA,CAED,mDACC,YAAA,CAED,2EACC,wDAAA,CACA,8BAAA,CAGD,iDACC,wDAAA,CACA,WAAA,CACA,eAAA,CAGD,kGACC,2CAAA,CACA,2BAAA,CACA,gCAAA,CAGD,uBACC,8BAAA,CAGD,gCACC,eAAA,CACA,4BAAA,CAED,uCACC,eAAA,CAGD,+BACC,UAAA,CACA,WAAA,CAGD,kEAEC,qBAAA\",\"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.event {\\n\\tmargin-bottom: 5px;\\n}\\n.isComplex {\\n\\timg {\\n\\t\\tvertical-align: text-top;\\n\\t}\\n\\tspan {\\n\\t\\tpadding-top: 2px;\\n\\t\\tdisplay: inline-block;\\n\\t}\\n}\\n.multiselect {\\n\\twidth: 100%;\\n\\tmax-width: 550px;\\n\\tmargin-top: 4px;\\n}\\n.multiselect::v-deep .multiselect__single {\\n\\tdisplay: flex;\\n}\\n.multiselect:not(.multiselect--active)::v-deep .multiselect__tags {\\n\\tbackground-color: var(--color-main-background) !important;\\n\\tborder: 1px solid transparent;\\n}\\n\\n.multiselect::v-deep .multiselect__tags {\\n\\tbackground-color: var(--color-main-background) !important;\\n\\theight: auto;\\n\\tmin-height: 34px;\\n}\\n\\n.multiselect:not(.multiselect--disabled)::v-deep .multiselect__tags .multiselect__single {\\n\\tbackground-image: var(--icon-triangle-s-000);\\n\\tbackground-repeat: no-repeat;\\n\\tbackground-position: right center;\\n}\\n\\ninput {\\n\\tborder: 1px solid transparent;\\n}\\n\\n.option__title {\\n\\tmargin-left: 5px;\\n\\tcolor: var(--color-main-text);\\n}\\n.option__title_single {\\n\\tfont-weight: 900;\\n}\\n\\n.option__icon {\\n\\twidth: 16px;\\n\\theight: 16px;\\n}\\n\\n.eventlist img,\\n.eventlist .text {\\n\\tvertical-align: middle;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \".actions__item[data-v-34495584]{display:flex;flex-wrap:wrap;flex-direction:column;flex-grow:1;margin-left:-1px;padding:10px;border-radius:var(--border-radius-large);margin-right:20px;margin-bottom:20px}.actions__item .icon[data-v-34495584]{display:block;width:100%;height:50px;background-size:50px 50px;background-position:center center;margin-top:10px;margin-bottom:10px;background-repeat:no-repeat}.actions__item__description[data-v-34495584]{text-align:center;flex-grow:1;display:flex;flex-direction:column}.actions__item_options[data-v-34495584]{width:100%;margin-top:10px;padding-left:60px}h3[data-v-34495584],small[data-v-34495584]{padding:6px;display:block}h3[data-v-34495584]{margin:0;padding:0;font-weight:600}small[data-v-34495584]{font-size:10pt;flex-grow:1}.colored[data-v-34495584]:not(.more){background-color:var(--color-primary-element)}.colored:not(.more) h3[data-v-34495584],.colored:not(.more) small[data-v-34495584]{color:var(--color-primary-text)}.actions__item[data-v-34495584]:not(.colored){flex-direction:row}.actions__item:not(.colored) .actions__item__description[data-v-34495584]{padding-top:5px;text-align:left;width:calc(100% - 105px)}.actions__item:not(.colored) .actions__item__description small[data-v-34495584]{padding:0}.actions__item:not(.colored) .icon[data-v-34495584]{width:50px;margin:0;margin-right:10px}.actions__item:not(.colored) .icon[data-v-34495584]:not(.icon-invert){filter:invert(1)}.colored .icon-invert[data-v-34495584]{filter:invert(1)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/styles/operation.scss\"],\"names\":[],\"mappings\":\"AAAA,gCACC,YAAA,CACA,cAAA,CACA,qBAAA,CACA,WAAA,CACA,gBAAA,CACA,YAAA,CACA,wCAAA,CACA,iBAAA,CACA,kBAAA,CAED,sCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,yBAAA,CACA,iCAAA,CACA,eAAA,CACA,kBAAA,CACA,2BAAA,CAED,6CACC,iBAAA,CACA,WAAA,CACA,YAAA,CACA,qBAAA,CAED,wCACC,UAAA,CACA,eAAA,CACA,iBAAA,CAED,2CACC,WAAA,CACA,aAAA,CAED,oBACC,QAAA,CACA,SAAA,CACA,eAAA,CAED,uBACC,cAAA,CACA,WAAA,CAGD,qCACC,6CAAA,CACA,mFACC,+BAAA,CAIF,8CACC,kBAAA,CAEA,0EACC,eAAA,CACA,eAAA,CACA,wBAAA,CACA,gFACC,SAAA,CAGF,oDACC,UAAA,CACA,QAAA,CACA,iBAAA,CACA,sEACC,gBAAA,CAKH,uCACC,gBAAA\",\"sourcesContent\":[\".actions__item {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tflex-direction: column;\\n\\tflex-grow: 1;\\n\\tmargin-left: -1px;\\n\\tpadding: 10px;\\n\\tborder-radius: var(--border-radius-large);\\n\\tmargin-right: 20px;\\n\\tmargin-bottom: 20px;\\n}\\n.actions__item .icon {\\n\\tdisplay: block;\\n\\twidth: 100%;\\n\\theight: 50px;\\n\\tbackground-size: 50px 50px;\\n\\tbackground-position: center center;\\n\\tmargin-top: 10px;\\n\\tmargin-bottom: 10px;\\n\\tbackground-repeat: no-repeat;\\n}\\n.actions__item__description {\\n\\ttext-align: center;\\n\\tflex-grow: 1;\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n}\\n.actions__item_options {\\n\\twidth: 100%;\\n\\tmargin-top: 10px;\\n\\tpadding-left: 60px;\\n}\\nh3, small {\\n\\tpadding: 6px;\\n\\tdisplay: block;\\n}\\nh3 {\\n\\tmargin: 0;\\n\\tpadding: 0;\\n\\tfont-weight: 600;\\n}\\nsmall {\\n\\tfont-size: 10pt;\\n\\tflex-grow: 1;\\n}\\n\\n.colored:not(.more) {\\n\\tbackground-color: var(--color-primary-element);\\n\\th3, small {\\n\\t\\tcolor: var(--color-primary-text)\\n\\t}\\n}\\n\\n.actions__item:not(.colored) {\\n\\tflex-direction: row;\\n\\n\\t.actions__item__description {\\n\\t\\tpadding-top: 5px;\\n\\t\\ttext-align: left;\\n\\t\\twidth: calc(100% - 105px);\\n\\t\\tsmall {\\n\\t\\t\\tpadding: 0;\\n\\t\\t}\\n\\t}\\n\\t.icon {\\n\\t\\twidth: 50px;\\n\\t\\tmargin: 0;\\n\\t\\tmargin-right: 10px;\\n\\t\\t&:not(.icon-invert) {\\n\\t\\t\\tfilter: invert(1);\\n\\t\\t}\\n\\t}\\n}\\n\\n.colored .icon-invert {\\n\\tfilter: invert(1);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"button.icon[data-v-225ba268]{padding-left:32px;background-position:10px center}.buttons[data-v-225ba268]{display:block;overflow:hidden}.buttons button[data-v-225ba268]{float:right;height:34px}.error-message[data-v-225ba268]{float:right;margin-right:10px}.status-button[data-v-225ba268]{transition:.5s ease all;display:block;margin:3px 10px 3px auto}.status-button.primary[data-v-225ba268]{padding-left:32px;background-position:10px center}.status-button[data-v-225ba268]:not(.primary){background-color:var(--color-main-background)}.status-button.invalid[data-v-225ba268]{background-color:var(--color-warning);color:#fff;border:none}.status-button.icon-checkmark[data-v-225ba268]{border:1px solid var(--color-success)}.flow-icon[data-v-225ba268]{width:44px}.rule[data-v-225ba268]{display:flex;flex-wrap:wrap;border-left:5px solid var(--color-primary-element)}.rule .trigger[data-v-225ba268],.rule .action[data-v-225ba268]{flex-grow:1;min-height:100px;max-width:700px}.rule .action[data-v-225ba268]{max-width:400px;position:relative}.rule .icon-confirm[data-v-225ba268]{background-position:right 27px;padding-right:20px;margin-right:20px}.trigger p[data-v-225ba268],.action p[data-v-225ba268]{min-height:34px;display:flex}.trigger p>span[data-v-225ba268],.action p>span[data-v-225ba268]{min-width:50px;text-align:right;color:var(--color-text-maxcontrast);padding-right:10px;padding-top:6px}.trigger p .multiselect[data-v-225ba268],.action p .multiselect[data-v-225ba268]{flex-grow:1;max-width:300px}.trigger p:first-child span[data-v-225ba268]{padding-top:3px}.check--add[data-v-225ba268]{background-position:7px center;background-color:rgba(0,0,0,0);padding-left:6px;margin:0;width:180px;border-radius:var(--border-radius);color:var(--color-text-maxcontrast);font-weight:normal;text-align:left;font-size:1em}@media(max-width: 1400px){.rule[data-v-225ba268],.rule .trigger[data-v-225ba268],.rule .action[data-v-225ba268]{width:100%;max-width:100%}.rule .flow-icon[data-v-225ba268]{display:none}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Rule.vue\"],\"names\":[],\"mappings\":\"AA4KA,6BACC,iBAAA,CACA,+BAAA,CAGD,0BACC,aAAA,CACA,eAAA,CAEA,iCACC,WAAA,CACA,WAAA,CAIF,gCACC,WAAA,CACA,iBAAA,CAGD,gCACC,uBAAA,CACA,aAAA,CACA,wBAAA,CAED,wCACC,iBAAA,CACA,+BAAA,CAED,8CACC,6CAAA,CAED,wCACC,qCAAA,CACA,UAAA,CACA,WAAA,CAED,+CACC,qCAAA,CAGD,4BACC,UAAA,CAGD,uBACC,YAAA,CACA,cAAA,CACA,kDAAA,CAEA,+DACC,WAAA,CACA,gBAAA,CACA,eAAA,CAED,+BACC,eAAA,CACA,iBAAA,CAED,qCACC,8BAAA,CACA,kBAAA,CACA,iBAAA,CAGF,uDACC,eAAA,CACA,YAAA,CAEA,iEACC,cAAA,CACA,gBAAA,CACA,mCAAA,CACA,kBAAA,CACA,eAAA,CAED,iFACC,WAAA,CACA,eAAA,CAGF,6CACE,eAAA,CAGF,6BACC,8BAAA,CACA,8BAAA,CACA,gBAAA,CACA,QAAA,CACA,WAAA,CACA,kCAAA,CACA,mCAAA,CACA,kBAAA,CACA,eAAA,CACA,aAAA,CAGD,0BAEE,sFACC,UAAA,CACA,cAAA,CAED,kCACC,YAAA,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\\nbutton.icon {\\n\\tpadding-left: 32px;\\n\\tbackground-position: 10px center;\\n}\\n\\n.buttons {\\n\\tdisplay: block;\\n\\toverflow: hidden;\\n\\n\\tbutton {\\n\\t\\tfloat: right;\\n\\t\\theight: 34px;\\n\\t}\\n}\\n\\n.error-message {\\n\\tfloat: right;\\n\\tmargin-right: 10px;\\n}\\n\\n.status-button {\\n\\ttransition: 0.5s ease all;\\n\\tdisplay: block;\\n\\tmargin: 3px 10px 3px auto;\\n}\\n.status-button.primary {\\n\\tpadding-left: 32px;\\n\\tbackground-position: 10px center;\\n}\\n.status-button:not(.primary) {\\n\\tbackground-color: var(--color-main-background);\\n}\\n.status-button.invalid {\\n\\tbackground-color: var(--color-warning);\\n\\tcolor: #fff;\\n\\tborder: none;\\n}\\n.status-button.icon-checkmark {\\n\\tborder: 1px solid var(--color-success);\\n}\\n\\n.flow-icon {\\n\\twidth: 44px;\\n}\\n\\n.rule {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tborder-left: 5px solid var(--color-primary-element);\\n\\n\\t.trigger, .action {\\n\\t\\tflex-grow: 1;\\n\\t\\tmin-height: 100px;\\n\\t\\tmax-width: 700px;\\n\\t}\\n\\t.action {\\n\\t\\tmax-width: 400px;\\n\\t\\tposition: relative;\\n\\t}\\n\\t.icon-confirm {\\n\\t\\tbackground-position: right 27px;\\n\\t\\tpadding-right: 20px;\\n\\t\\tmargin-right: 20px;\\n\\t}\\n}\\n.trigger p, .action p {\\n\\tmin-height: 34px;\\n\\tdisplay: flex;\\n\\n\\t& > span {\\n\\t\\tmin-width: 50px;\\n\\t\\ttext-align: right;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tpadding-right: 10px;\\n\\t\\tpadding-top: 6px;\\n\\t}\\n\\t.multiselect {\\n\\t\\tflex-grow: 1;\\n\\t\\tmax-width: 300px;\\n\\t}\\n}\\n.trigger p:first-child span {\\n\\t\\tpadding-top: 3px;\\n}\\n\\n.check--add {\\n\\tbackground-position: 7px center;\\n\\tbackground-color: transparent;\\n\\tpadding-left: 6px;\\n\\tmargin: 0;\\n\\twidth: 180px;\\n\\tborder-radius: var(--border-radius);\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tfont-weight: normal;\\n\\ttext-align: left;\\n\\tfont-size: 1em;\\n}\\n\\n@media (max-width:1400px) {\\n\\t.rule {\\n\\t\\t&, .trigger, .action {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t}\\n\\t\\t.flow-icon {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"#workflowengine[data-v-7b3e4a56]{border-bottom:1px solid var(--color-border)}.section[data-v-7b3e4a56]{max-width:100vw}.section h2.configured-flows[data-v-7b3e4a56]{margin-top:50px;margin-bottom:0}.actions[data-v-7b3e4a56]{display:flex;flex-wrap:wrap;max-width:1200px}.actions .actions__item[data-v-7b3e4a56]{max-width:280px;flex-basis:250px}button.icon[data-v-7b3e4a56]{padding-left:32px;background-position:10px center}.slide-enter-active[data-v-7b3e4a56]{-moz-transition-duration:.3s;-webkit-transition-duration:.3s;-o-transition-duration:.3s;transition-duration:.3s;-moz-transition-timing-function:ease-in;-webkit-transition-timing-function:ease-in;-o-transition-timing-function:ease-in;transition-timing-function:ease-in}.slide-leave-active[data-v-7b3e4a56]{-moz-transition-duration:.3s;-webkit-transition-duration:.3s;-o-transition-duration:.3s;transition-duration:.3s;-moz-transition-timing-function:cubic-bezier(0, 1, 0.5, 1);-webkit-transition-timing-function:cubic-bezier(0, 1, 0.5, 1);-o-transition-timing-function:cubic-bezier(0, 1, 0.5, 1);transition-timing-function:cubic-bezier(0, 1, 0.5, 1)}.slide-enter-to[data-v-7b3e4a56],.slide-leave[data-v-7b3e4a56]{max-height:500px;overflow:hidden}.slide-enter[data-v-7b3e4a56],.slide-leave-to[data-v-7b3e4a56]{overflow:hidden;max-height:0;padding-top:0;padding-bottom:0}.actions__item[data-v-7b3e4a56]{display:flex;flex-wrap:wrap;flex-direction:column;flex-grow:1;margin-left:-1px;padding:10px;border-radius:var(--border-radius-large);margin-right:20px;margin-bottom:20px}.actions__item .icon[data-v-7b3e4a56]{display:block;width:100%;height:50px;background-size:50px 50px;background-position:center center;margin-top:10px;margin-bottom:10px;background-repeat:no-repeat}.actions__item__description[data-v-7b3e4a56]{text-align:center;flex-grow:1;display:flex;flex-direction:column}.actions__item_options[data-v-7b3e4a56]{width:100%;margin-top:10px;padding-left:60px}h3[data-v-7b3e4a56],small[data-v-7b3e4a56]{padding:6px;display:block}h3[data-v-7b3e4a56]{margin:0;padding:0;font-weight:600}small[data-v-7b3e4a56]{font-size:10pt;flex-grow:1}.colored[data-v-7b3e4a56]:not(.more){background-color:var(--color-primary-element)}.colored:not(.more) h3[data-v-7b3e4a56],.colored:not(.more) small[data-v-7b3e4a56]{color:var(--color-primary-text)}.actions__item[data-v-7b3e4a56]:not(.colored){flex-direction:row}.actions__item:not(.colored) .actions__item__description[data-v-7b3e4a56]{padding-top:5px;text-align:left;width:calc(100% - 105px)}.actions__item:not(.colored) .actions__item__description small[data-v-7b3e4a56]{padding:0}.actions__item:not(.colored) .icon[data-v-7b3e4a56]{width:50px;margin:0;margin-right:10px}.actions__item:not(.colored) .icon[data-v-7b3e4a56]:not(.icon-invert){filter:invert(1)}.colored .icon-invert[data-v-7b3e4a56]{filter:invert(1)}.actions__item.more[data-v-7b3e4a56]{background-color:var(--color-background-dark)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Workflow.vue\",\"webpack://./apps/workflowengine/src/styles/operation.scss\"],\"names\":[],\"mappings\":\"AAuGA,iCACC,2CAAA,CAED,0BACC,eAAA,CAEA,8CACC,eAAA,CACA,eAAA,CAGF,0BACC,YAAA,CACA,cAAA,CACA,gBAAA,CACA,yCACC,eAAA,CACA,gBAAA,CAIF,6BACC,iBAAA,CACA,+BAAA,CAGD,qCACC,4BAAA,CACA,+BAAA,CACA,0BAAA,CACA,uBAAA,CACA,uCAAA,CACA,0CAAA,CACA,qCAAA,CACA,kCAAA,CAGD,qCACC,4BAAA,CACA,+BAAA,CACA,0BAAA,CACA,uBAAA,CACA,0DAAA,CACA,6DAAA,CACA,wDAAA,CACA,qDAAA,CAGD,+DACC,gBAAA,CACA,eAAA,CAGD,+DACC,eAAA,CACA,YAAA,CACA,aAAA,CACA,gBAAA,CChKD,gCACC,YAAA,CACA,cAAA,CACA,qBAAA,CACA,WAAA,CACA,gBAAA,CACA,YAAA,CACA,wCAAA,CACA,iBAAA,CACA,kBAAA,CAED,sCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,yBAAA,CACA,iCAAA,CACA,eAAA,CACA,kBAAA,CACA,2BAAA,CAED,6CACC,iBAAA,CACA,WAAA,CACA,YAAA,CACA,qBAAA,CAED,wCACC,UAAA,CACA,eAAA,CACA,iBAAA,CAED,2CACC,WAAA,CACA,aAAA,CAED,oBACC,QAAA,CACA,SAAA,CACA,eAAA,CAED,uBACC,cAAA,CACA,WAAA,CAGD,qCACC,6CAAA,CACA,mFACC,+BAAA,CAIF,8CACC,kBAAA,CAEA,0EACC,eAAA,CACA,eAAA,CACA,wBAAA,CACA,gFACC,SAAA,CAGF,oDACC,UAAA,CACA,QAAA,CACA,iBAAA,CACA,sEACC,gBAAA,CAKH,uCACC,gBAAA,CD0FD,qCACC,6CAAA\",\"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#workflowengine {\\n\\tborder-bottom: 1px solid var(--color-border);\\n}\\n.section {\\n\\tmax-width: 100vw;\\n\\n\\th2.configured-flows {\\n\\t\\tmargin-top: 50px;\\n\\t\\tmargin-bottom: 0;\\n\\t}\\n}\\n.actions {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tmax-width: 1200px;\\n\\t.actions__item {\\n\\t\\tmax-width: 280px;\\n\\t\\tflex-basis: 250px;\\n\\t}\\n}\\n\\nbutton.icon {\\n\\tpadding-left: 32px;\\n\\tbackground-position: 10px center;\\n}\\n\\n.slide-enter-active {\\n\\t-moz-transition-duration: 0.3s;\\n\\t-webkit-transition-duration: 0.3s;\\n\\t-o-transition-duration: 0.3s;\\n\\ttransition-duration: 0.3s;\\n\\t-moz-transition-timing-function: ease-in;\\n\\t-webkit-transition-timing-function: ease-in;\\n\\t-o-transition-timing-function: ease-in;\\n\\ttransition-timing-function: ease-in;\\n}\\n\\n.slide-leave-active {\\n\\t-moz-transition-duration: 0.3s;\\n\\t-webkit-transition-duration: 0.3s;\\n\\t-o-transition-duration: 0.3s;\\n\\ttransition-duration: 0.3s;\\n\\t-moz-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\\n\\t-webkit-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\\n\\t-o-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\\n\\ttransition-timing-function: cubic-bezier(0, 1, 0.5, 1);\\n}\\n\\n.slide-enter-to, .slide-leave {\\n\\tmax-height: 500px;\\n\\toverflow: hidden;\\n}\\n\\n.slide-enter, .slide-leave-to {\\n\\toverflow: hidden;\\n\\tmax-height: 0;\\n\\tpadding-top: 0;\\n\\tpadding-bottom: 0;\\n}\\n\\n@import \\\"./../styles/operation\\\";\\n\\n.actions__item.more {\\n\\tbackground-color: var(--color-background-dark);\\n}\\n\",\".actions__item {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tflex-direction: column;\\n\\tflex-grow: 1;\\n\\tmargin-left: -1px;\\n\\tpadding: 10px;\\n\\tborder-radius: var(--border-radius-large);\\n\\tmargin-right: 20px;\\n\\tmargin-bottom: 20px;\\n}\\n.actions__item .icon {\\n\\tdisplay: block;\\n\\twidth: 100%;\\n\\theight: 50px;\\n\\tbackground-size: 50px 50px;\\n\\tbackground-position: center center;\\n\\tmargin-top: 10px;\\n\\tmargin-bottom: 10px;\\n\\tbackground-repeat: no-repeat;\\n}\\n.actions__item__description {\\n\\ttext-align: center;\\n\\tflex-grow: 1;\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n}\\n.actions__item_options {\\n\\twidth: 100%;\\n\\tmargin-top: 10px;\\n\\tpadding-left: 60px;\\n}\\nh3, small {\\n\\tpadding: 6px;\\n\\tdisplay: block;\\n}\\nh3 {\\n\\tmargin: 0;\\n\\tpadding: 0;\\n\\tfont-weight: 600;\\n}\\nsmall {\\n\\tfont-size: 10pt;\\n\\tflex-grow: 1;\\n}\\n\\n.colored:not(.more) {\\n\\tbackground-color: var(--color-primary-element);\\n\\th3, small {\\n\\t\\tcolor: var(--color-primary-text)\\n\\t}\\n}\\n\\n.actions__item:not(.colored) {\\n\\tflex-direction: row;\\n\\n\\t.actions__item__description {\\n\\t\\tpadding-top: 5px;\\n\\t\\ttext-align: left;\\n\\t\\twidth: calc(100% - 105px);\\n\\t\\tsmall {\\n\\t\\t\\tpadding: 0;\\n\\t\\t}\\n\\t}\\n\\t.icon {\\n\\t\\twidth: 50px;\\n\\t\\tmargin: 0;\\n\\t\\tmargin-right: 10px;\\n\\t\\t&:not(.icon-invert) {\\n\\t\\t\\tfilter: invert(1);\\n\\t\\t}\\n\\t}\\n}\\n\\n.colored .icon-invert {\\n\\tfilter: invert(1);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"\\n.multiselect[data-v-8c011724], input[type='text'][data-v-8c011724] {\\n\\twidth: 100%;\\n}\\n.multiselect[data-v-8c011724] .multiselect__content-wrapper li>span,\\n.multiselect[data-v-8c011724] .multiselect__single {\\n\\tdisplay: flex;\\n\\twhite-space: nowrap;\\n\\toverflow: hidden;\\n\\ttext-overflow: ellipsis;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Checks/FileMimeType.vue\"],\"names\":[],\"mappings\":\";AA4IA;CACA,WAAA;AACA;AACA;;CAEA,aAAA;CACA,mBAAA;CACA,gBAAA;CACA,uBAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\\n -\\n - @author Julius Härtl <jus@bitgrid.net>\\n -\\n - @license GNU AGPL version 3 or any later version\\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 -->\\n\\n<template>\\n\\t<div>\\n\\t\\t<Multiselect :value=\\\"currentValue\\\"\\n\\t\\t\\t:placeholder=\\\"t('workflowengine', 'Select a file type')\\\"\\n\\t\\t\\tlabel=\\\"label\\\"\\n\\t\\t\\ttrack-by=\\\"pattern\\\"\\n\\t\\t\\t:options=\\\"options\\\"\\n\\t\\t\\t:multiple=\\\"false\\\"\\n\\t\\t\\t:tagging=\\\"false\\\"\\n\\t\\t\\t@input=\\\"setValue\\\">\\n\\t\\t\\t<template slot=\\\"singleLabel\\\" slot-scope=\\\"props\\\">\\n\\t\\t\\t\\t<span v-if=\\\"props.option.icon\\\" class=\\\"option__icon\\\" :class=\\\"props.option.icon\\\" />\\n\\t\\t\\t\\t<img v-else :src=\\\"props.option.iconUrl\\\">\\n\\t\\t\\t\\t<span class=\\\"option__title option__title_single\\\">{{ props.option.label }}</span>\\n\\t\\t\\t</template>\\n\\t\\t\\t<template slot=\\\"option\\\" slot-scope=\\\"props\\\">\\n\\t\\t\\t\\t<span v-if=\\\"props.option.icon\\\" class=\\\"option__icon\\\" :class=\\\"props.option.icon\\\" />\\n\\t\\t\\t\\t<img v-else :src=\\\"props.option.iconUrl\\\">\\n\\t\\t\\t\\t<span class=\\\"option__title\\\">{{ props.option.label }}</span>\\n\\t\\t\\t</template>\\n\\t\\t</Multiselect>\\n\\t\\t<input v-if=\\\"!isPredefined\\\"\\n\\t\\t\\ttype=\\\"text\\\"\\n\\t\\t\\t:value=\\\"currentValue.pattern\\\"\\n\\t\\t\\t:placeholder=\\\"t('workflowengine', 'e.g. httpd/unix-directory')\\\"\\n\\t\\t\\t@input=\\\"updateCustom\\\">\\n\\t</div>\\n</template>\\n\\n<script>\\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\\nimport valueMixin from './../../mixins/valueMixin'\\nimport { imagePath } from '@nextcloud/router'\\n\\nexport default {\\n\\tname: 'FileMimeType',\\n\\tcomponents: {\\n\\t\\tMultiselect,\\n\\t},\\n\\tmixins: [\\n\\t\\tvalueMixin,\\n\\t],\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tpredefinedTypes: [\\n\\t\\t\\t\\t{\\n\\t\\t\\t\\t\\ticon: 'icon-folder',\\n\\t\\t\\t\\t\\tlabel: t('workflowengine', 'Folder'),\\n\\t\\t\\t\\t\\tpattern: 'httpd/unix-directory',\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\t{\\n\\t\\t\\t\\t\\ticon: 'icon-picture',\\n\\t\\t\\t\\t\\tlabel: t('workflowengine', 'Images'),\\n\\t\\t\\t\\t\\tpattern: '/image\\\\\\\\/.*/',\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\t{\\n\\t\\t\\t\\t\\ticonUrl: imagePath('core', 'filetypes/x-office-document'),\\n\\t\\t\\t\\t\\tlabel: t('workflowengine', 'Office documents'),\\n\\t\\t\\t\\t\\tpattern: '/(vnd\\\\\\\\.(ms-|openxmlformats-|oasis\\\\\\\\.opendocument).*)$/',\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\t{\\n\\t\\t\\t\\t\\ticonUrl: imagePath('core', 'filetypes/application-pdf'),\\n\\t\\t\\t\\t\\tlabel: t('workflowengine', 'PDF documents'),\\n\\t\\t\\t\\t\\tpattern: 'application/pdf',\\n\\t\\t\\t\\t},\\n\\t\\t\\t],\\n\\t\\t}\\n\\t},\\n\\tcomputed: {\\n\\t\\toptions() {\\n\\t\\t\\treturn [...this.predefinedTypes, this.customValue]\\n\\t\\t},\\n\\t\\tisPredefined() {\\n\\t\\t\\tconst matchingPredefined = this.predefinedTypes.find((type) => this.newValue === type.pattern)\\n\\t\\t\\tif (matchingPredefined) {\\n\\t\\t\\t\\treturn true\\n\\t\\t\\t}\\n\\t\\t\\treturn false\\n\\t\\t},\\n\\t\\tcustomValue() {\\n\\t\\t\\treturn {\\n\\t\\t\\t\\ticon: 'icon-settings-dark',\\n\\t\\t\\t\\tlabel: t('workflowengine', 'Custom mimetype'),\\n\\t\\t\\t\\tpattern: '',\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tcurrentValue() {\\n\\t\\t\\tconst matchingPredefined = this.predefinedTypes.find((type) => this.newValue === type.pattern)\\n\\t\\t\\tif (matchingPredefined) {\\n\\t\\t\\t\\treturn matchingPredefined\\n\\t\\t\\t}\\n\\t\\t\\treturn {\\n\\t\\t\\t\\ticon: 'icon-settings-dark',\\n\\t\\t\\t\\tlabel: t('workflowengine', 'Custom mimetype'),\\n\\t\\t\\t\\tpattern: this.newValue,\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n\\tmethods: {\\n\\t\\tvalidateRegex(string) {\\n\\t\\t\\tconst regexRegex = /^\\\\/(.*)\\\\/([gui]{0,3})$/\\n\\t\\t\\tconst result = regexRegex.exec(string)\\n\\t\\t\\treturn result !== null\\n\\t\\t},\\n\\t\\tsetValue(value) {\\n\\t\\t\\tif (value !== null) {\\n\\t\\t\\t\\tthis.newValue = value.pattern\\n\\t\\t\\t\\tthis.$emit('input', this.newValue)\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tupdateCustom(event) {\\n\\t\\t\\tthis.newValue = event.target.value\\n\\t\\t\\tthis.$emit('input', this.newValue)\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n<style scoped>\\n\\t.multiselect, input[type='text'] {\\n\\t\\twidth: 100%;\\n\\t}\\n\\t.multiselect >>> .multiselect__content-wrapper li>span,\\n\\t.multiselect >>> .multiselect__single {\\n\\t\\tdisplay: flex;\\n\\t\\twhite-space: nowrap;\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"\\n.multiselect[data-v-dd8e16be], input[type='text'][data-v-dd8e16be] {\\n\\twidth: 100%;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Checks/RequestURL.vue\"],\"names\":[],\"mappings\":\";AA2IA;CACA,WAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\\n -\\n - @author Julius Härtl <jus@bitgrid.net>\\n -\\n - @license GNU AGPL version 3 or any later version\\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 -->\\n\\n<template>\\n\\t<div>\\n\\t\\t<Multiselect :value=\\\"currentValue\\\"\\n\\t\\t\\t:placeholder=\\\"t('workflowengine', 'Select a request URL')\\\"\\n\\t\\t\\tlabel=\\\"label\\\"\\n\\t\\t\\ttrack-by=\\\"pattern\\\"\\n\\t\\t\\tgroup-values=\\\"children\\\"\\n\\t\\t\\tgroup-label=\\\"label\\\"\\n\\t\\t\\t:options=\\\"options\\\"\\n\\t\\t\\t:multiple=\\\"false\\\"\\n\\t\\t\\t:tagging=\\\"false\\\"\\n\\t\\t\\t@input=\\\"setValue\\\">\\n\\t\\t\\t<template slot=\\\"singleLabel\\\" slot-scope=\\\"props\\\">\\n\\t\\t\\t\\t<span class=\\\"option__icon\\\" :class=\\\"props.option.icon\\\" />\\n\\t\\t\\t\\t<span class=\\\"option__title option__title_single\\\">{{ props.option.label }}</span>\\n\\t\\t\\t</template>\\n\\t\\t\\t<template slot=\\\"option\\\" slot-scope=\\\"props\\\">\\n\\t\\t\\t\\t<span class=\\\"option__icon\\\" :class=\\\"props.option.icon\\\" />\\n\\t\\t\\t\\t<span class=\\\"option__title\\\">{{ props.option.label }} {{ props.option.$groupLabel }}</span>\\n\\t\\t\\t</template>\\n\\t\\t</Multiselect>\\n\\t\\t<input v-if=\\\"!isPredefined\\\"\\n\\t\\t\\ttype=\\\"text\\\"\\n\\t\\t\\t:value=\\\"currentValue.pattern\\\"\\n\\t\\t\\t:placeholder=\\\"placeholder\\\"\\n\\t\\t\\t@input=\\\"updateCustom\\\">\\n\\t</div>\\n</template>\\n\\n<script>\\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\\nimport valueMixin from '../../mixins/valueMixin'\\n\\nexport default {\\n\\tname: 'RequestURL',\\n\\tcomponents: {\\n\\t\\tMultiselect,\\n\\t},\\n\\tmixins: [\\n\\t\\tvalueMixin,\\n\\t],\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tnewValue: '',\\n\\t\\t\\tpredefinedTypes: [\\n\\t\\t\\t\\t{\\n\\t\\t\\t\\t\\tlabel: t('workflowengine', 'Predefined URLs'),\\n\\t\\t\\t\\t\\tchildren: [\\n\\t\\t\\t\\t\\t\\t{ pattern: 'webdav', label: t('workflowengine', 'Files WebDAV') },\\n\\t\\t\\t\\t\\t],\\n\\t\\t\\t\\t},\\n\\t\\t\\t],\\n\\t\\t}\\n\\t},\\n\\tcomputed: {\\n\\t\\toptions() {\\n\\t\\t\\treturn [...this.predefinedTypes, this.customValue]\\n\\t\\t},\\n\\t\\tplaceholder() {\\n\\t\\t\\tif (this.check.operator === 'matches' || this.check.operator === '!matches') {\\n\\t\\t\\t\\treturn '/^https\\\\\\\\:\\\\\\\\/\\\\\\\\/localhost\\\\\\\\/index\\\\\\\\.php$/i'\\n\\t\\t\\t}\\n\\t\\t\\treturn 'https://localhost/index.php'\\n\\t\\t},\\n\\t\\tmatchingPredefined() {\\n\\t\\t\\treturn this.predefinedTypes\\n\\t\\t\\t\\t.map(groups => groups.children)\\n\\t\\t\\t\\t.flat()\\n\\t\\t\\t\\t.find((type) => this.newValue === type.pattern)\\n\\t\\t},\\n\\t\\tisPredefined() {\\n\\t\\t\\treturn !!this.matchingPredefined\\n\\t\\t},\\n\\t\\tcustomValue() {\\n\\t\\t\\treturn {\\n\\t\\t\\t\\tlabel: t('workflowengine', 'Others'),\\n\\t\\t\\t\\tchildren: [\\n\\t\\t\\t\\t\\t{\\n\\t\\t\\t\\t\\t\\ticon: 'icon-settings-dark',\\n\\t\\t\\t\\t\\t\\tlabel: t('workflowengine', 'Custom URL'),\\n\\t\\t\\t\\t\\t\\tpattern: '',\\n\\t\\t\\t\\t\\t},\\n\\t\\t\\t\\t],\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tcurrentValue() {\\n\\t\\t\\tif (this.matchingPredefined) {\\n\\t\\t\\t\\treturn this.matchingPredefined\\n\\t\\t\\t}\\n\\t\\t\\treturn {\\n\\t\\t\\t\\ticon: 'icon-settings-dark',\\n\\t\\t\\t\\tlabel: t('workflowengine', 'Custom URL'),\\n\\t\\t\\t\\tpattern: this.newValue,\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n\\tmethods: {\\n\\t\\tvalidateRegex(string) {\\n\\t\\t\\tconst regexRegex = /^\\\\/(.*)\\\\/([gui]{0,3})$/\\n\\t\\t\\tconst result = regexRegex.exec(string)\\n\\t\\t\\treturn result !== null\\n\\t\\t},\\n\\t\\tsetValue(value) {\\n\\t\\t\\t// TODO: check if value requires a regex and set the check operator according to that\\n\\t\\t\\tif (value !== null) {\\n\\t\\t\\t\\tthis.newValue = value.pattern\\n\\t\\t\\t\\tthis.$emit('input', this.newValue)\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tupdateCustom(event) {\\n\\t\\t\\tthis.newValue = event.target.value\\n\\t\\t\\tthis.$emit('input', this.newValue)\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n<style scoped>\\n\\t.multiselect, input[type='text'] {\\n\\t\\twidth: 100%;\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"\\n.multiselect[data-v-475ac1e6], input[type='text'][data-v-475ac1e6] {\\n\\twidth: 100%;\\n}\\n.multiselect .multiselect__content-wrapper li>span[data-v-475ac1e6] {\\n\\tdisplay: flex;\\n\\twhite-space: nowrap;\\n\\toverflow: hidden;\\n\\ttext-overflow: ellipsis;\\n}\\n.multiselect[data-v-475ac1e6] .multiselect__single {\\n\\twidth: 100%;\\n\\tdisplay: flex;\\n\\twhite-space: nowrap;\\n\\toverflow: hidden;\\n\\ttext-overflow: ellipsis;\\n}\\n.option__icon[data-v-475ac1e6] {\\n\\tdisplay: inline-block;\\n\\tmin-width: 30px;\\n\\tbackground-position: left;\\n}\\n.option__title[data-v-475ac1e6] {\\n\\twhite-space: nowrap;\\n\\toverflow: hidden;\\n\\ttext-overflow: ellipsis;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Checks/RequestUserAgent.vue\"],\"names\":[],\"mappings\":\";AA8HA;CACA,WAAA;AACA;AAEA;CACA,aAAA;CACA,mBAAA;CACA,gBAAA;CACA,uBAAA;AACA;AACA;CACA,WAAA;CACA,aAAA;CACA,mBAAA;CACA,gBAAA;CACA,uBAAA;AACA;AACA;CACA,qBAAA;CACA,eAAA;CACA,yBAAA;AACA;AACA;CACA,mBAAA;CACA,gBAAA;CACA,uBAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\\n -\\n - @author Julius Härtl <jus@bitgrid.net>\\n -\\n - @license GNU AGPL version 3 or any later version\\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 -->\\n\\n<template>\\n\\t<div>\\n\\t\\t<Multiselect :value=\\\"currentValue\\\"\\n\\t\\t\\t:placeholder=\\\"t('workflowengine', 'Select a user agent')\\\"\\n\\t\\t\\tlabel=\\\"label\\\"\\n\\t\\t\\ttrack-by=\\\"pattern\\\"\\n\\t\\t\\t:options=\\\"options\\\"\\n\\t\\t\\t:multiple=\\\"false\\\"\\n\\t\\t\\t:tagging=\\\"false\\\"\\n\\t\\t\\t@input=\\\"setValue\\\">\\n\\t\\t\\t<template slot=\\\"singleLabel\\\" slot-scope=\\\"props\\\">\\n\\t\\t\\t\\t<span class=\\\"option__icon\\\" :class=\\\"props.option.icon\\\" />\\n\\t\\t\\t\\t<!-- v-html can be used here as t() always passes our translated strings though DOMPurify.sanitize -->\\n\\t\\t\\t\\t<!-- eslint-disable-next-line vue/no-v-html -->\\n\\t\\t\\t\\t<span class=\\\"option__title option__title_single\\\" v-html=\\\"props.option.label\\\" />\\n\\t\\t\\t</template>\\n\\t\\t\\t<template slot=\\\"option\\\" slot-scope=\\\"props\\\">\\n\\t\\t\\t\\t<span class=\\\"option__icon\\\" :class=\\\"props.option.icon\\\" />\\n\\t\\t\\t\\t<!-- eslint-disable-next-line vue/no-v-html -->\\n\\t\\t\\t\\t<span v-if=\\\"props.option.$groupLabel\\\" class=\\\"option__title\\\" v-html=\\\"props.option.$groupLabel\\\" />\\n\\t\\t\\t\\t<!-- eslint-disable-next-line vue/no-v-html -->\\n\\t\\t\\t\\t<span v-else class=\\\"option__title\\\" v-html=\\\"props.option.label\\\" />\\n\\t\\t\\t</template>\\n\\t\\t</Multiselect>\\n\\t\\t<input v-if=\\\"!isPredefined\\\"\\n\\t\\t\\ttype=\\\"text\\\"\\n\\t\\t\\t:value=\\\"currentValue.pattern\\\"\\n\\t\\t\\t@input=\\\"updateCustom\\\">\\n\\t</div>\\n</template>\\n\\n<script>\\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\\nimport valueMixin from '../../mixins/valueMixin'\\n\\nexport default {\\n\\tname: 'RequestUserAgent',\\n\\tcomponents: {\\n\\t\\tMultiselect,\\n\\t},\\n\\tmixins: [\\n\\t\\tvalueMixin,\\n\\t],\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tnewValue: '',\\n\\t\\t\\tpredefinedTypes: [\\n\\t\\t\\t\\t{ pattern: 'android', label: t('workflowengine', 'Android client'), icon: 'icon-phone' },\\n\\t\\t\\t\\t{ pattern: 'ios', label: t('workflowengine', 'iOS client'), icon: 'icon-phone' },\\n\\t\\t\\t\\t{ pattern: 'desktop', label: t('workflowengine', 'Desktop client'), icon: 'icon-desktop' },\\n\\t\\t\\t\\t{ pattern: 'mail', label: t('workflowengine', 'Thunderbird & Outlook addons'), icon: 'icon-mail' },\\n\\t\\t\\t],\\n\\t\\t}\\n\\t},\\n\\tcomputed: {\\n\\t\\toptions() {\\n\\t\\t\\treturn [...this.predefinedTypes, this.customValue]\\n\\t\\t},\\n\\t\\tmatchingPredefined() {\\n\\t\\t\\treturn this.predefinedTypes\\n\\t\\t\\t\\t.find((type) => this.newValue === type.pattern)\\n\\t\\t},\\n\\t\\tisPredefined() {\\n\\t\\t\\treturn !!this.matchingPredefined\\n\\t\\t},\\n\\t\\tcustomValue() {\\n\\t\\t\\treturn {\\n\\t\\t\\t\\ticon: 'icon-settings-dark',\\n\\t\\t\\t\\tlabel: t('workflowengine', 'Custom user agent'),\\n\\t\\t\\t\\tpattern: '',\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tcurrentValue() {\\n\\t\\t\\tif (this.matchingPredefined) {\\n\\t\\t\\t\\treturn this.matchingPredefined\\n\\t\\t\\t}\\n\\t\\t\\treturn {\\n\\t\\t\\t\\ticon: 'icon-settings-dark',\\n\\t\\t\\t\\tlabel: t('workflowengine', 'Custom user agent'),\\n\\t\\t\\t\\tpattern: this.newValue,\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n\\tmethods: {\\n\\t\\tvalidateRegex(string) {\\n\\t\\t\\tconst regexRegex = /^\\\\/(.*)\\\\/([gui]{0,3})$/\\n\\t\\t\\tconst result = regexRegex.exec(string)\\n\\t\\t\\treturn result !== null\\n\\t\\t},\\n\\t\\tsetValue(value) {\\n\\t\\t\\t// TODO: check if value requires a regex and set the check operator according to that\\n\\t\\t\\tif (value !== null) {\\n\\t\\t\\t\\tthis.newValue = value.pattern\\n\\t\\t\\t\\tthis.$emit('input', this.newValue)\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tupdateCustom(event) {\\n\\t\\t\\tthis.newValue = event.target.value\\n\\t\\t\\tthis.$emit('input', this.newValue)\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n<style scoped>\\n\\t.multiselect, input[type='text'] {\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t.multiselect .multiselect__content-wrapper li>span {\\n\\t\\tdisplay: flex;\\n\\t\\twhite-space: nowrap;\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n\\t.multiselect::v-deep .multiselect__single {\\n\\t\\twidth: 100%;\\n\\t\\tdisplay: flex;\\n\\t\\twhite-space: nowrap;\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n\\t.option__icon {\\n\\t\\tdisplay: inline-block;\\n\\t\\tmin-width: 30px;\\n\\t\\tbackground-position: left;\\n\\t}\\n\\t.option__title {\\n\\t\\twhite-space: nowrap;\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, \"\\n.multiselect[data-v-79fa10a5] {\\n\\twidth: 100%;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Checks/RequestUserGroup.vue\"],\"names\":[],\"mappings\":\";AA4GA;CACA,WAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\\n -\\n - @author Julius Härtl <jus@bitgrid.net>\\n -\\n - @license GNU AGPL version 3 or any later version\\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 -->\\n\\n<template>\\n\\t<div>\\n\\t\\t<Multiselect :value=\\\"currentValue\\\"\\n\\t\\t\\t:loading=\\\"status.isLoading && groups.length === 0\\\"\\n\\t\\t\\t:options=\\\"groups\\\"\\n\\t\\t\\t:multiple=\\\"false\\\"\\n\\t\\t\\tlabel=\\\"displayname\\\"\\n\\t\\t\\ttrack-by=\\\"id\\\"\\n\\t\\t\\t@search-change=\\\"searchAsync\\\"\\n\\t\\t\\t@input=\\\"(value) => $emit('input', value.id)\\\" />\\n\\t</div>\\n</template>\\n\\n<script>\\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\\nimport axios from '@nextcloud/axios'\\nimport { generateOcsUrl } from '@nextcloud/router'\\n\\nconst groups = []\\nconst status = {\\n\\tisLoading: false,\\n}\\n\\nexport default {\\n\\tname: 'RequestUserGroup',\\n\\tcomponents: {\\n\\t\\tMultiselect,\\n\\t},\\n\\tprops: {\\n\\t\\tvalue: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\tdefault: '',\\n\\t\\t},\\n\\t\\tcheck: {\\n\\t\\t\\ttype: Object,\\n\\t\\t\\tdefault: () => { return {} },\\n\\t\\t},\\n\\t},\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tgroups,\\n\\t\\t\\tstatus,\\n\\t\\t}\\n\\t},\\n\\tcomputed: {\\n\\t\\tcurrentValue() {\\n\\t\\t\\treturn this.groups.find(group => group.id === this.value) || null\\n\\t\\t},\\n\\t},\\n\\tasync mounted() {\\n\\t\\tif (this.groups.length === 0) {\\n\\t\\t\\tawait this.searchAsync('')\\n\\t\\t}\\n\\t\\tif (this.currentValue === null) {\\n\\t\\t\\tawait this.searchAsync(this.value)\\n\\t\\t}\\n\\t},\\n\\tmethods: {\\n\\t\\tsearchAsync(searchQuery) {\\n\\t\\t\\tif (this.status.isLoading) {\\n\\t\\t\\t\\treturn\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.status.isLoading = true\\n\\t\\t\\treturn axios.get(generateOcsUrl('cloud/groups/details?limit=20&search={searchQuery}', { searchQuery })).then((response) => {\\n\\t\\t\\t\\tresponse.data.ocs.data.groups.forEach((group) => {\\n\\t\\t\\t\\t\\tthis.addGroup({\\n\\t\\t\\t\\t\\t\\tid: group.id,\\n\\t\\t\\t\\t\\t\\tdisplayname: group.displayname,\\n\\t\\t\\t\\t\\t})\\n\\t\\t\\t\\t})\\n\\t\\t\\t\\tthis.status.isLoading = false\\n\\t\\t\\t}, (error) => {\\n\\t\\t\\t\\tconsole.error('Error while loading group list', error.response)\\n\\t\\t\\t})\\n\\t\\t},\\n\\t\\taddGroup(group) {\\n\\t\\t\\tconst index = this.groups.findIndex((item) => item.id === group.id)\\n\\t\\t\\tif (index === -1) {\\n\\t\\t\\t\\tthis.groups.push(group)\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n<style scoped>\\n\\t.multiselect {\\n\\t\\twidth: 100%;\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 2819,\n\t\"./hi.js\": 2819,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","// 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 = 8318;","__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\t8318: 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));","__webpack_require__.nc = undefined;","// 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__(82730); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","scopeValue","loadState","getApiUrl","url","generateOcsUrl","Vue","Vuex","Store","state","rules","scope","appstoreEnabled","operations","plugins","checks","operators","entities","events","map","entity","event","id","eventName","flat","mutations","addRule","rule","push","valid","updateRule","index","findIndex","item","newRule","Object","assign","removeRule","splice","addPluginCheck","plugin","class","addPluginOperator","color","actions","fetchRules","context","axios","data","values","ocs","forEach","commit","createNewRule","isComplex","fixedEntity","find","Date","getTime","name","operator","value","operation","JSON","parse","pushUpdateRule","confirmPassword","result","deleteRule","setValid","getters","getRules","filter","sort","rule1","rule2","getOperationForRule","getEntityForOperation","getEventsForOperation","getChecksForEntity","check","supportedEntities","indexOf","length","reduce","obj","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","icon","_v","_s","triggerHint","currentEvent","allEvents","on","updateEvent","scopedSlots","_u","key","fn","ref","isOpen","_l","displayName","_e","props","option","directives","rawName","expression","showDelete","t","updateCheck","model","callback","$$v","currentOption","currentOperator","currentComponent","component","tag","$event","validate","$set","invalid","valuePlaceholder","domProps","target","composing","deleteVisible","$emit","colored","style","backgroundColor","iconClass","backgroundImage","description","_t","borderLeftColor","removeCheck","onAddFilter","updateOperation","ruleStatus","saveRule","title","dirty","cancelRule","error","nativeOn","appstoreUrl","showMoreOperations","regexRegex","regexIPv4","regexIPv6","type","String","default","newValue","watch","immediate","handler","updateInternalValue","methods","currentValue","setValue","iconUrl","label","isPredefined","pattern","updateCustom","xmlToJson","xml","nodeType","attributes","j","attribute","nodeName","nodeValue","hasChildNodes","i","childNodes","old","method","generateRemoteUrl","then","response","json","dom","DOMParser","parseFromString","e","console","parseXml","list","canAssign","userAssignable","userVisible","xmlToTagList","tags","tagLabel","multiple","disabled","update","inputValObjects","slot","stringOrRegexOperators","placeholder","string","exec","FileMimeType","match","validateIPv4","FileSystemTag","$groupLabel","timezones","status","isLoading","groups","searchAsync","RequestURL","RequestTime","RequestUserAgent","RequestUserGroup","FileChecks","RequestChecks","window","OCA","WorkflowEngine","registerCheck","Plugin","store","registerOperator","ShippedChecks","checkPlugin","Settings","$mount","___CSS_LOADER_EXPORT___","module","webpackContext","req","webpackContextResolve","__webpack_require__","o","Error","code","keys","resolve","exports","__webpack_module_cache__","moduleId","cachedModule","undefined","loaded","__webpack_modules__","call","m","amdD","amdO","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","every","r","n","getter","__esModule","d","a","definition","defineProperty","enumerable","get","g","globalThis","Function","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index a9bbb22974f..a5f9932aa5d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -119,7 +119,7 @@
"vue-jest": "^4.0.1",
"vue-loader": "^15.9.8",
"vue-template-compiler": "^2.6.14",
- "webpack": "^5.72.0",
+ "webpack": "^5.72.1",
"webpack-cli": "^4.9.2",
"webpack-merge": "^5.8.0"
},
@@ -6890,9 +6890,9 @@
}
},
"node_modules/enhanced-resolve": {
- "version": "5.9.2",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz",
- "integrity": "sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==",
+ "version": "5.9.3",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz",
+ "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==",
"dependencies": {
"graceful-fs": "^4.2.4",
"tapable": "^2.2.0"
@@ -12664,16 +12664,10 @@
"node": ">=4"
}
},
- "node_modules/json-parse-better-errors": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
- "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw=="
- },
"node_modules/json-parse-even-better-errors": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
- "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
- "dev": true
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="
},
"node_modules/json-schema": {
"version": "0.4.0",
@@ -19192,9 +19186,9 @@
}
},
"node_modules/webpack": {
- "version": "5.72.0",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.0.tgz",
- "integrity": "sha512-qmSmbspI0Qo5ld49htys8GY9XhS9CGqFoHTsOVAnjBdg0Zn79y135R+k4IR4rKK6+eKaabMhJwiVB7xw0SJu5w==",
+ "version": "5.72.1",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.1.tgz",
+ "integrity": "sha512-dXG5zXCLspQR4krZVR6QgajnZOjW2K/djHvdcRaDQvsjV9z9vaW6+ja5dZOYbqBBjF6kGXka/2ZyxNdc+8Jung==",
"dependencies": {
"@types/eslint-scope": "^3.7.3",
"@types/estree": "^0.0.51",
@@ -19205,13 +19199,13 @@
"acorn-import-assertions": "^1.7.6",
"browserslist": "^4.14.5",
"chrome-trace-event": "^1.0.2",
- "enhanced-resolve": "^5.9.2",
+ "enhanced-resolve": "^5.9.3",
"es-module-lexer": "^0.9.0",
"eslint-scope": "5.1.1",
"events": "^3.2.0",
"glob-to-regexp": "^0.4.1",
"graceful-fs": "^4.2.9",
- "json-parse-better-errors": "^1.0.2",
+ "json-parse-even-better-errors": "^2.3.1",
"loader-runner": "^4.2.0",
"mime-types": "^2.1.27",
"neo-async": "^2.6.2",
@@ -24906,9 +24900,9 @@
}
},
"enhanced-resolve": {
- "version": "5.9.2",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz",
- "integrity": "sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==",
+ "version": "5.9.3",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz",
+ "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==",
"requires": {
"graceful-fs": "^4.2.4",
"tapable": "^2.2.0"
@@ -29236,16 +29230,10 @@
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
"integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA=="
},
- "json-parse-better-errors": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
- "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw=="
- },
"json-parse-even-better-errors": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
- "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
- "dev": true
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="
},
"json-schema": {
"version": "0.4.0",
@@ -34290,9 +34278,9 @@
"dev": true
},
"webpack": {
- "version": "5.72.0",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.0.tgz",
- "integrity": "sha512-qmSmbspI0Qo5ld49htys8GY9XhS9CGqFoHTsOVAnjBdg0Zn79y135R+k4IR4rKK6+eKaabMhJwiVB7xw0SJu5w==",
+ "version": "5.72.1",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.1.tgz",
+ "integrity": "sha512-dXG5zXCLspQR4krZVR6QgajnZOjW2K/djHvdcRaDQvsjV9z9vaW6+ja5dZOYbqBBjF6kGXka/2ZyxNdc+8Jung==",
"requires": {
"@types/eslint-scope": "^3.7.3",
"@types/estree": "^0.0.51",
@@ -34303,13 +34291,13 @@
"acorn-import-assertions": "^1.7.6",
"browserslist": "^4.14.5",
"chrome-trace-event": "^1.0.2",
- "enhanced-resolve": "^5.9.2",
+ "enhanced-resolve": "^5.9.3",
"es-module-lexer": "^0.9.0",
"eslint-scope": "5.1.1",
"events": "^3.2.0",
"glob-to-regexp": "^0.4.1",
"graceful-fs": "^4.2.9",
- "json-parse-better-errors": "^1.0.2",
+ "json-parse-even-better-errors": "^2.3.1",
"loader-runner": "^4.2.0",
"mime-types": "^2.1.27",
"neo-async": "^2.6.2",
diff --git a/package.json b/package.json
index 367e29d0f81..ae39cfe5629 100644
--- a/package.json
+++ b/package.json
@@ -136,7 +136,7 @@
"vue-jest": "^4.0.1",
"vue-loader": "^15.9.8",
"vue-template-compiler": "^2.6.14",
- "webpack": "^5.72.0",
+ "webpack": "^5.72.1",
"webpack-cli": "^4.9.2",
"webpack-merge": "^5.8.0"
},