From 3de5bdc034eea2bb8e471b89670d904a7911a705 Mon Sep 17 00:00:00 2001 From: Christopher Ng Date: Tue, 25 Oct 2022 00:13:53 +0000 Subject: [PATCH] Fix disabled federated scope Signed-off-by: Christopher Ng --- .../lib/Settings/Personal/PersonalInfo.php | 2 +- .../PersonalInfo/shared/FederationControl.vue | 25 +++++++++++++------ dist/settings-vue-settings-personal-info.js | 4 +-- ...settings-vue-settings-personal-info.js.map | 2 +- 4 files changed, 21 insertions(+), 12 deletions(-) diff --git a/apps/settings/lib/Settings/Personal/PersonalInfo.php b/apps/settings/lib/Settings/Personal/PersonalInfo.php index 56291cd3d3595..0a65ebe2c74a7 100644 --- a/apps/settings/lib/Settings/Personal/PersonalInfo.php +++ b/apps/settings/lib/Settings/Personal/PersonalInfo.php @@ -138,7 +138,6 @@ public function getForm(): TemplateResponse { $messageParameters = $this->getMessageParameters($account); $parameters = [ - 'federationEnabled' => $federationEnabled, 'lookupServerUploadEnabled' => $lookupServerUploadEnabled, 'isFairUseOfFreePushService' => $this->isFairUseOfFreePushService(), 'profileEnabledGlobally' => $this->profileManager->isProfileEnabled(), @@ -171,6 +170,7 @@ public function getForm(): TemplateResponse { $accountParameters = [ 'avatarChangeSupported' => $user->canChangeAvatar(), 'displayNameChangeSupported' => $user->canChangeDisplayName(), + 'federationEnabled' => $federationEnabled, 'lookupServerUploadEnabled' => $lookupServerUploadEnabled, ]; diff --git a/apps/settings/src/components/PersonalInfo/shared/FederationControl.vue b/apps/settings/src/components/PersonalInfo/shared/FederationControl.vue index 555b917ad1f40..ea22ddf873f36 100644 --- a/apps/settings/src/components/PersonalInfo/shared/FederationControl.vue +++ b/apps/settings/src/components/PersonalInfo/shared/FederationControl.vue @@ -57,7 +57,10 @@ import { import { savePrimaryAccountPropertyScope } from '../../../service/PersonalInfo/PersonalInfoService.js' import logger from '../../../logger.js' -const { lookupServerUploadEnabled } = loadState('settings', 'accountParameters', {}) +const { + federationEnabled, + lookupServerUploadEnabled, +} = loadState('settings', 'accountParameters', {}) export default { name: 'FederationControl', @@ -120,15 +123,21 @@ export default { }, supportedScopes() { - if (lookupServerUploadEnabled && !UNPUBLISHED_READABLE_PROPERTIES.includes(this.readable)) { - return [ - ...PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM[this.readable], - SCOPE_ENUM.FEDERATED, - SCOPE_ENUM.PUBLISHED, - ] + const scopes = PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM[this.readable] + + if (UNPUBLISHED_READABLE_PROPERTIES.includes(this.readable)) { + return scopes + } + + if (federationEnabled) { + scopes.push(SCOPE_ENUM.FEDERATED) + } + + if (lookupServerUploadEnabled) { + scopes.push(SCOPE_ENUM.PUBLISHED) } - return PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM[this.readable] + return scopes }, }, diff --git a/dist/settings-vue-settings-personal-info.js b/dist/settings-vue-settings-personal-info.js index a418e9db19d59..5f08333200a1e 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(){var n,e={65495:function(n,e,r){"use strict";var a=r(20144),i=r(22200),o=r(16453),s=r(9944),l=(r(73317),r(4820)),c=r(79753),u=r(26932),d=r(74854),p=r(75925),A=r.n(p),f=r(10861),m=r.n(f),v=r(17652),g=(r(74063),r(75843)),h=r(74092),b=r(33691),y=r(40502),C=r(12945),x=r.n(C),w=r(45400),E=r.n(w),O={name:"FederationControlAction",components:{NcActionButton:E()},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)}}},P=r(93379),_=r.n(P),j=r(7795),S=r.n(j),I=r(90569),k=r.n(I),L=r(3565),R=r.n(L),D=r(19216),B=r.n(D),N=r(44589),T=r.n(N),Z=r(43058),U={};U.styleTagTransform=T(),U.setAttributes=R(),U.insert=k().bind(null,"head"),U.domAPI=S(),U.insertStyleElement=B(),_()(Z.Z,U),Z.Z&&Z.Z.locals&&Z.Z.locals;var M,F,V,z,$=r(51900),q=(0,$.Z)(O,(function(){var n=this,e=n.$createElement;return(n._self._c||e)("NcActionButton",{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(e){return e.stopPropagation(),e.preventDefault(),n.updateScope.apply(null,arguments)}}},[n._v("\n\t"+n._s(n.isSupportedScope?n.tooltip:n.tooltipDisabled)+"\n")])}),[],!1,null,"1249785e",null),H=q.exports;function G(n,e,t){return e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}var Y=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"}),W=Object.freeze({ADDRESS:(0,s.translate)("settings","Location"),AVATAR:(0,s.translate)("settings","Profile picture"),BIOGRAPHY:(0,s.translate)("settings","About"),DISPLAYNAME:(0,s.translate)("settings","Full name"),EMAIL_COLLECTION:(0,s.translate)("settings","Additional email"),EMAIL:(0,s.translate)("settings","Email"),HEADLINE:(0,s.translate)("settings","Headline"),ORGANISATION:(0,s.translate)("settings","Organisation"),PHONE:(0,s.translate)("settings","Phone number"),PROFILE_ENABLED:(0,s.translate)("settings","Profile"),ROLE:(0,s.translate)("settings","Role"),TWITTER:(0,s.translate)("settings","Twitter"),WEBSITE:(0,s.translate)("settings","Website")}),K=Object.freeze((G(M={},Y.ADDRESS,W.ADDRESS),G(M,Y.AVATAR,W.AVATAR),G(M,Y.BIOGRAPHY,W.BIOGRAPHY),G(M,Y.DISPLAYNAME,W.DISPLAYNAME),G(M,Y.EMAIL_COLLECTION,W.EMAIL_COLLECTION),G(M,Y.EMAIL,W.EMAIL),G(M,Y.HEADLINE,W.HEADLINE),G(M,Y.ORGANISATION,W.ORGANISATION),G(M,Y.PHONE,W.PHONE),G(M,Y.PROFILE_ENABLED,W.PROFILE_ENABLED),G(M,Y.ROLE,W.ROLE),G(M,Y.TWITTER,W.TWITTER),G(M,Y.WEBSITE,W.WEBSITE),M)),Q=Object.freeze({PROFILE_VISIBILITY:(0,s.translate)("settings","Profile visibility")}),J=Object.freeze((G(F={},W.ADDRESS,Y.ADDRESS),G(F,W.AVATAR,Y.AVATAR),G(F,W.BIOGRAPHY,Y.BIOGRAPHY),G(F,W.DISPLAYNAME,Y.DISPLAYNAME),G(F,W.EMAIL_COLLECTION,Y.EMAIL_COLLECTION),G(F,W.EMAIL,Y.EMAIL),G(F,W.HEADLINE,Y.HEADLINE),G(F,W.ORGANISATION,Y.ORGANISATION),G(F,W.PHONE,Y.PHONE),G(F,W.PROFILE_ENABLED,Y.PROFILE_ENABLED),G(F,W.ROLE,Y.ROLE),G(F,W.TWITTER,Y.TWITTER),G(F,W.WEBSITE,Y.WEBSITE),F)),X=Object.freeze({LANGUAGE:"language",LOCALE:"locale"}),nn=Object.freeze({LANGUAGE:(0,s.translate)("settings","Language"),LOCALE:(0,s.translate)("settings","Locale")}),en=Object.freeze({PRIVATE:"v2-private",LOCAL:"v2-local",FEDERATED:"v2-federated",PUBLISHED:"v2-published"}),tn=Object.freeze((G(V={},W.ADDRESS,[en.LOCAL,en.PRIVATE]),G(V,W.AVATAR,[en.LOCAL,en.PRIVATE]),G(V,W.BIOGRAPHY,[en.LOCAL,en.PRIVATE]),G(V,W.DISPLAYNAME,[en.LOCAL]),G(V,W.EMAIL_COLLECTION,[en.LOCAL]),G(V,W.EMAIL,[en.LOCAL]),G(V,W.HEADLINE,[en.LOCAL,en.PRIVATE]),G(V,W.ORGANISATION,[en.LOCAL,en.PRIVATE]),G(V,W.PHONE,[en.LOCAL,en.PRIVATE]),G(V,W.PROFILE_ENABLED,[en.LOCAL,en.PRIVATE]),G(V,W.ROLE,[en.LOCAL,en.PRIVATE]),G(V,W.TWITTER,[en.LOCAL,en.PRIVATE]),G(V,W.WEBSITE,[en.LOCAL,en.PRIVATE]),V)),rn=Object.freeze([W.BIOGRAPHY,W.HEADLINE,W.ORGANISATION,W.ROLE]),an="Scope",on=Object.freeze((G(z={},en.PRIVATE,{name:en.PRIVATE,displayName:(0,s.translate)("settings","Private"),tooltip:(0,s.translate)("settings","Only visible to people matched via phone number integration through Talk on mobile"),tooltipDisabled:(0,s.translate)("settings","Not available as this property is required for core functionality including file sharing and calendar invitations"),iconClass:"icon-phone"}),G(z,en.LOCAL,{name:en.LOCAL,displayName:(0,s.translate)("settings","Local"),tooltip:(0,s.translate)("settings","Only visible to people on this instance and guests"),iconClass:"icon-password"}),G(z,en.FEDERATED,{name:en.FEDERATED,displayName:(0,s.translate)("settings","Federated"),tooltip:(0,s.translate)("settings","Only synchronize to trusted servers"),tooltipDisabled:(0,s.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"}),G(z,en.PUBLISHED,{name:en.PUBLISHED,displayName:(0,s.translate)("settings","Published"),tooltip:(0,s.translate)("settings","Synchronize to trusted servers and the global and public address book"),tooltipDisabled:(0,s.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"}),z)),sn=en.LOCAL,ln=Object.freeze({NOT_VERIFIED:0,VERIFICATION_IN_PROGRESS:1,VERIFIED:2}),cn=/^(?!(?:(?:\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,un=r(10128);function dn(n,e,t,r,a,i,o){try{var s=n[i](o),l=s.value}catch(n){return void t(n)}s.done?e(l):Promise.resolve(l).then(r,a)}function pn(n){return function(){var e=this,t=arguments;return new Promise((function(r,a){var i=n.apply(e,t);function o(n){dn(i,r,a,o,s,"next",n)}function s(n){dn(i,r,a,o,s,"throw",n)}o(void 0)}))}}r(65509);var An=function(){var n=pn(regeneratorRuntime.mark((function n(e,t){var r,a,o;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return"boolean"==typeof t&&(t=t?"1":"0"),r=(0,i.getCurrentUser)().uid,a=(0,c.generateOcsUrl)("cloud/users/{userId}",{userId:r}),n.next=5,(0,un.confirmPassword)();case 5:return n.next=7,l.default.put(a,{key:e,value:t});case 7:return o=n.sent,n.abrupt("return",o.data);case 9:case"end":return n.stop()}}),n)})));return function(e,t){return n.apply(this,arguments)}}(),fn=function(){var n=pn(regeneratorRuntime.mark((function n(e,t){var r,a,o;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return r=(0,i.getCurrentUser)().uid,a=(0,c.generateOcsUrl)("cloud/users/{userId}",{userId:r}),n.next=4,(0,un.confirmPassword)();case 4:return n.next=6,l.default.put(a,{key:"".concat(e).concat(an),value:t});case 6:return o=n.sent,n.abrupt("return",o.data);case 8:case"end":return n.stop()}}),n)})));return function(e,t){return n.apply(this,arguments)}}(),mn=(0,r(17499).IY)().setApp("settings").detectUser().build();function vn(n,e,t,r,a,i,o){try{var s=n[i](o),l=s.value}catch(n){return void t(n)}s.done?e(l):Promise.resolve(l).then(r,a)}function gn(n){return function(){var e=this,t=arguments;return new Promise((function(r,a){var i=n.apply(e,t);function o(n){vn(i,r,a,o,s,"next",n)}function s(n){vn(i,r,a,o,s,"throw",n)}o(void 0)}))}}function hn(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=new Array(e);t{usage}",{usage:Qn}):t("settings","You are using {usage} of {totalSpace} ({usageRelative}%)",{usage:Qn,totalSpace:Kn,usageRelative:Jn})}},data:function(){return{groups:Yn,usageRelative:Jn}}},ne=r(75849),ee={};ee.styleTagTransform=T(),ee.setAttributes=R(),ee.insert=k().bind(null,"head"),ee.domAPI=S(),ee.insertStyleElement=B(),_()(ne.Z,ee),ne.Z&&ne.Z.locals&&ne.Z.locals;var te=(0,$.Z)(Xn,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("section",[t("HeaderBar",{attrs:{readable:n.t("settings","Details")}}),n._v(" "),t("div",{staticClass:"details"},[t("div",{staticClass:"details__groups"},[t("Account",{attrs:{size:20}}),n._v(" "),t("div",{staticClass:"details__groups-info"},[t("p",[n._v(n._s(n.t("settings","You are a member of the following groups:")))]),n._v(" "),t("p",{staticClass:"details__groups-list"},[n._v(n._s(n.groups.join(", ")))])])],1),n._v(" "),t("div",{staticClass:"details__quota"},[t("CircleSlice",{attrs:{size:20}}),n._v(" "),t("div",{staticClass:"details__quota-info"},[t("p",{staticClass:"details__quota-text",domProps:{innerHTML:n._s(n.quotaText)}}),n._v(" "),t("NcProgressBar",{attrs:{size:"medium",value:n.usageRelative,error:n.usageRelative>80}})],1)],1)])],1)}),[],!1,null,"546e7ece",null).exports,re=r(20296),ae=r.n(re),ie=r(14625),oe=r(89897);function se(n,e,t,r,a,i,o){try{var s=n[i](o),l=s.value}catch(n){return void t(n)}s.done?e(l):Promise.resolve(l).then(r,a)}function le(n){return function(){var e=this,t=arguments;return new Promise((function(r,a){var i=n.apply(e,t);function o(n){se(i,r,a,o,s,"next",n)}function s(n){se(i,r,a,o,s,"throw",n)}o(void 0)}))}}var ce={name:"AccountPropertySection",components:{AlertOctagon:oe.Z,Check:ie.default,HeaderBar:jn},props:{name:{type:String,required:!0},value:{type:String,required:!0},scope:{type:String,required:!0},readable:{type:String,required:!0},placeholder:{type:String,required:!0},type:{type:String,default:"text"},isEditable:{type:Boolean,default:!0},multiLine:{type:Boolean,default:!1},onValidate:{type:Function,default:null},onSave:{type:Function,default:null}},data:function(){return{initialValue:this.value,showCheckmarkIcon:!1,showErrorIcon:!1}},computed:{inputId:function(){return"account-property-".concat(this.name)}},methods:{onPropertyChange:function(n){this.$emit("update:value",n.target.value),this.debouncePropertyChange(n.target.value.trim())},debouncePropertyChange:ae()(function(){var n=le(regeneratorRuntime.mark((function n(e){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!this.onValidate||this.onValidate(e)){n.next=2;break}return n.abrupt("return");case 2:return n.next=4,this.updateProperty(e);case 4:case"end":return n.stop()}}),n,this)})));return function(e){return n.apply(this,arguments)}}(),500),updateProperty:function(n){var e=this;return le(regeneratorRuntime.mark((function r(){var a,i,o;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.prev=0,r.next=3,An(e.name,n);case 3:o=r.sent,e.handleResponse({value:n,status:null===(a=o.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),e.handleResponse({errorMessage:t("settings","Unable to update {property}",{property:e.readable.toLocaleLowerCase()}),error:r.t0});case 10:case"end":return r.stop()}}),r,null,[[0,7]])})))()},handleResponse:function(n){var e=this,t=n.value,r=n.status,a=n.errorMessage,i=n.error;"ok"===r?(this.initialValue=t,this.onSave&&this.onSave(t),this.showCheckmarkIcon=!0,setTimeout((function(){e.showCheckmarkIcon=!1}),2e3)):(this.$emit("update:value",this.initialValue),(0,u.showError)(a),mn.error(a,i),this.showErrorIcon=!0,setTimeout((function(){e.showErrorIcon=!1}),2e3))}}},ue=ce,de=r(71593),pe={};pe.styleTagTransform=T(),pe.setAttributes=R(),pe.insert=k().bind(null,"head"),pe.domAPI=S(),pe.insertStyleElement=B(),_()(de.Z,pe),de.Z&&de.Z.locals&&de.Z.locals;var Ae=(0,$.Z)(ue,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("section",[t("HeaderBar",{attrs:{scope:n.scope,readable:n.readable,"input-id":n.inputId,"is-editable":n.isEditable},on:{"update:scope":function(e){n.scope=e},"update:readable":function(e){n.readable=e}}}),n._v(" "),n.isEditable?t("div",{staticClass:"property"},[n.multiLine?t("textarea",{attrs:{id:n.inputId,placeholder:n.placeholder,rows:"8",autocapitalize:"none",autocomplete:"off",autocorrect:"off"},domProps:{value:n.value},on:{input:n.onPropertyChange}}):t("input",{attrs:{id:n.inputId,placeholder:n.placeholder,type:n.type,autocapitalize:"none",autocomplete:"on",autocorrect:"off"},domProps:{value:n.value},on:{input:n.onPropertyChange}}),n._v(" "),t("div",{staticClass:"property__actions-container"},[t("transition",{attrs:{name:"fade"}},[n.showCheckmarkIcon?t("Check",{attrs:{size:20}}):n.showErrorIcon?t("AlertOctagon",{attrs:{size:20}}):n._e()],1)],1)]):t("span",[n._v("\n\t\t"+n._s(n.value||n.t("settings","No {property} set",{property:n.readable.toLocaleLowerCase()}))+"\n\t")])],1)}),[],!1,null,"7c2c5fa4",null).exports;function fe(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 me(n){for(var e=1;en.length)&&(e=n.length);for(var t=0,r=new Array(e);tn.length)&&(e=n.length);for(var t=0,r=new Array(e);tn.length)&&(e=n.length);for(var t=0,r=new Array(e);t=i)&&Object.keys(a.O).every((function(n){return a.O[n](t[l])}))?t.splice(l--,1):(s=!1,i0&&n[u-1][2]>i;u--)n[u]=n[u-1];n[u]=[t,r,i]},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=4418,function(){a.b=document.baseURI||self.location.href;var n={4418:0};a.O.j=function(e){return 0===n[e]};var e=function(e,t){var r,i,o=t[0],s=t[1],l=t[2],c=0;if(o.some((function(e){return 0!==n[e]}))){for(r in s)a.o(s,r)&&(a.m[r]=s[r]);if(l)var u=l(a)}for(e&&e(t);c{usage}",{usage:Jn}):t("settings","You are using {usage} of {totalSpace} ({usageRelative}%)",{usage:Jn,totalSpace:Qn,usageRelative:Xn})}},data:function(){return{groups:Wn,usageRelative:Xn}}},ee=r(75849),te={};te.styleTagTransform=T(),te.setAttributes=R(),te.insert=k().bind(null,"head"),te.domAPI=S(),te.insertStyleElement=B(),_()(ee.Z,te),ee.Z&&ee.Z.locals&&ee.Z.locals;var re=(0,$.Z)(ne,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("section",[t("HeaderBar",{attrs:{readable:n.t("settings","Details")}}),n._v(" "),t("div",{staticClass:"details"},[t("div",{staticClass:"details__groups"},[t("Account",{attrs:{size:20}}),n._v(" "),t("div",{staticClass:"details__groups-info"},[t("p",[n._v(n._s(n.t("settings","You are a member of the following groups:")))]),n._v(" "),t("p",{staticClass:"details__groups-list"},[n._v(n._s(n.groups.join(", ")))])])],1),n._v(" "),t("div",{staticClass:"details__quota"},[t("CircleSlice",{attrs:{size:20}}),n._v(" "),t("div",{staticClass:"details__quota-info"},[t("p",{staticClass:"details__quota-text",domProps:{innerHTML:n._s(n.quotaText)}}),n._v(" "),t("NcProgressBar",{attrs:{size:"medium",value:n.usageRelative,error:n.usageRelative>80}})],1)],1)])],1)}),[],!1,null,"546e7ece",null).exports,ae=r(20296),ie=r.n(ae),oe=r(14625),se=r(89897);function le(n,e,t,r,a,i,o){try{var s=n[i](o),l=s.value}catch(n){return void t(n)}s.done?e(l):Promise.resolve(l).then(r,a)}function ce(n){return function(){var e=this,t=arguments;return new Promise((function(r,a){var i=n.apply(e,t);function o(n){le(i,r,a,o,s,"next",n)}function s(n){le(i,r,a,o,s,"throw",n)}o(void 0)}))}}var ue={name:"AccountPropertySection",components:{AlertOctagon:se.Z,Check:oe.default,HeaderBar:Sn},props:{name:{type:String,required:!0},value:{type:String,required:!0},scope:{type:String,required:!0},readable:{type:String,required:!0},placeholder:{type:String,required:!0},type:{type:String,default:"text"},isEditable:{type:Boolean,default:!0},multiLine:{type:Boolean,default:!1},onValidate:{type:Function,default:null},onSave:{type:Function,default:null}},data:function(){return{initialValue:this.value,showCheckmarkIcon:!1,showErrorIcon:!1}},computed:{inputId:function(){return"account-property-".concat(this.name)}},methods:{onPropertyChange:function(n){this.$emit("update:value",n.target.value),this.debouncePropertyChange(n.target.value.trim())},debouncePropertyChange:ie()(function(){var n=ce(regeneratorRuntime.mark((function n(e){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!this.onValidate||this.onValidate(e)){n.next=2;break}return n.abrupt("return");case 2:return n.next=4,this.updateProperty(e);case 4:case"end":return n.stop()}}),n,this)})));return function(e){return n.apply(this,arguments)}}(),500),updateProperty:function(n){var e=this;return ce(regeneratorRuntime.mark((function r(){var a,i,o;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.prev=0,r.next=3,An(e.name,n);case 3:o=r.sent,e.handleResponse({value:n,status:null===(a=o.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),e.handleResponse({errorMessage:t("settings","Unable to update {property}",{property:e.readable.toLocaleLowerCase()}),error:r.t0});case 10:case"end":return r.stop()}}),r,null,[[0,7]])})))()},handleResponse:function(n){var e=this,t=n.value,r=n.status,a=n.errorMessage,i=n.error;"ok"===r?(this.initialValue=t,this.onSave&&this.onSave(t),this.showCheckmarkIcon=!0,setTimeout((function(){e.showCheckmarkIcon=!1}),2e3)):(this.$emit("update:value",this.initialValue),(0,u.showError)(a),mn.error(a,i),this.showErrorIcon=!0,setTimeout((function(){e.showErrorIcon=!1}),2e3))}}},de=ue,pe=r(71593),Ae={};Ae.styleTagTransform=T(),Ae.setAttributes=R(),Ae.insert=k().bind(null,"head"),Ae.domAPI=S(),Ae.insertStyleElement=B(),_()(pe.Z,Ae),pe.Z&&pe.Z.locals&&pe.Z.locals;var fe=(0,$.Z)(de,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("section",[t("HeaderBar",{attrs:{scope:n.scope,readable:n.readable,"input-id":n.inputId,"is-editable":n.isEditable},on:{"update:scope":function(e){n.scope=e},"update:readable":function(e){n.readable=e}}}),n._v(" "),n.isEditable?t("div",{staticClass:"property"},[n.multiLine?t("textarea",{attrs:{id:n.inputId,placeholder:n.placeholder,rows:"8",autocapitalize:"none",autocomplete:"off",autocorrect:"off"},domProps:{value:n.value},on:{input:n.onPropertyChange}}):t("input",{attrs:{id:n.inputId,placeholder:n.placeholder,type:n.type,autocapitalize:"none",autocomplete:"on",autocorrect:"off"},domProps:{value:n.value},on:{input:n.onPropertyChange}}),n._v(" "),t("div",{staticClass:"property__actions-container"},[t("transition",{attrs:{name:"fade"}},[n.showCheckmarkIcon?t("Check",{attrs:{size:20}}):n.showErrorIcon?t("AlertOctagon",{attrs:{size:20}}):n._e()],1)],1)]):t("span",[n._v("\n\t\t"+n._s(n.value||n.t("settings","No {property} set",{property:n.readable.toLocaleLowerCase()}))+"\n\t")])],1)}),[],!1,null,"7c2c5fa4",null).exports;function me(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 ve(n){for(var e=1;en.length)&&(e=n.length);for(var t=0,r=new Array(e);tn.length)&&(e=n.length);for(var t=0,r=new Array(e);tn.length)&&(e=n.length);for(var t=0,r=new Array(e);t=i)&&Object.keys(a.O).every((function(n){return a.O[n](t[l])}))?t.splice(l--,1):(s=!1,i0&&n[u-1][2]>i;u--)n[u]=n[u-1];n[u]=[t,r,i]},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=4418,function(){a.b=document.baseURI||self.location.href;var n={4418:0};a.O.j=function(e){return 0===n[e]};var e=function(e,t){var r,i,o=t[0],s=t[1],l=t[2],c=0;if(o.some((function(e){return 0!==n[e]}))){for(r in s)a.o(s,r)&&(a.m[r]=s[r]);if(l)var u=l(a)}for(e&&e(t);c 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!./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\n\n\n\n\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!./FederationControlAction.vue?vue&type=style&index=0&id=1249785e&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=1249785e&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FederationControlAction.vue?vue&type=template&id=1249785e&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=1249785e&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 \"1249785e\",\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('NcActionButton',{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 * @copyright 2021, Christopher Ng \n *\n * @author Christopher Ng \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\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', 'Location'),\n\tAVATAR: t('settings', 'Profile picture'),\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\nexport const NAME_READABLE_ENUM = Object.freeze({\n\t[ACCOUNT_PROPERTY_ENUM.ADDRESS]: ACCOUNT_PROPERTY_READABLE_ENUM.ADDRESS,\n\t[ACCOUNT_PROPERTY_ENUM.AVATAR]: ACCOUNT_PROPERTY_READABLE_ENUM.AVATAR,\n\t[ACCOUNT_PROPERTY_ENUM.BIOGRAPHY]: ACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY,\n\t[ACCOUNT_PROPERTY_ENUM.DISPLAYNAME]: ACCOUNT_PROPERTY_READABLE_ENUM.DISPLAYNAME,\n\t[ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION]: ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL_COLLECTION,\n\t[ACCOUNT_PROPERTY_ENUM.EMAIL]: ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL,\n\t[ACCOUNT_PROPERTY_ENUM.HEADLINE]: ACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE,\n\t[ACCOUNT_PROPERTY_ENUM.ORGANISATION]: ACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION,\n\t[ACCOUNT_PROPERTY_ENUM.PHONE]: ACCOUNT_PROPERTY_READABLE_ENUM.PHONE,\n\t[ACCOUNT_PROPERTY_ENUM.PROFILE_ENABLED]: ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED,\n\t[ACCOUNT_PROPERTY_ENUM.ROLE]: ACCOUNT_PROPERTY_READABLE_ENUM.ROLE,\n\t[ACCOUNT_PROPERTY_ENUM.TWITTER]: ACCOUNT_PROPERTY_READABLE_ENUM.TWITTER,\n\t[ACCOUNT_PROPERTY_ENUM.WEBSITE]: ACCOUNT_PROPERTY_READABLE_ENUM.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\tLOCALE: 'locale',\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\tLOCALE: t('settings', 'Locale'),\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 \n *\n * @author Christopher Ng \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\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 2020 Christoph Wurst \n *\n * @author Roeland Jago Douma \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('settings')\n\t.detectUser()\n\t.build()\n","\n\n\n\n\n\n\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=4c6905d9&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=4c6905d9&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FederationControl.vue?vue&type=template&id=4c6905d9&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=4c6905d9&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 \"4c6905d9\",\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('NcActions',{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\n\n\n\n\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!./HeaderBar.vue?vue&type=style&index=0&id=8094b2e6&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=8094b2e6&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./HeaderBar.vue?vue&type=template&id=8094b2e6&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=8094b2e6&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 \"8094b2e6\",\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.inputId}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.readable)+\"\\n\\t\")]),_vm._v(\" \"),(_vm.scope)?[_c('FederationControl',{staticClass:\"federation-control\",attrs:{\"readable\":_vm.readable,\"scope\":_vm.localScope},on:{\"update:scope\":[function($event){_vm.localScope=$event},_vm.onScopeChange]}})]:_vm._e(),_vm._v(\" \"),(_vm.isEditable && _vm.isMultiValueSupported)?[_c('NcButton',{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\n\n\n\n\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvatarSection.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!./AvatarSection.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!./AvatarSection.vue?vue&type=style&index=0&id=56196c5c&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!./AvatarSection.vue?vue&type=style&index=0&id=56196c5c&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AvatarSection.vue?vue&type=template&id=56196c5c&scoped=true&\"\nimport script from \"./AvatarSection.vue?vue&type=script&lang=js&\"\nexport * from \"./AvatarSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AvatarSection.vue?vue&type=style&index=0&id=56196c5c&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 \"56196c5c\",\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:{\"input-id\":_vm.avatarChangeSupported ? _vm.inputId : null,\"readable\":_vm.avatar.readable,\"scope\":_vm.avatar.scope},on:{\"update:scope\":function($event){return _vm.$set(_vm.avatar, \"scope\", $event)}}}),_vm._v(\" \"),(!_vm.showCropper)?_c('div',{staticClass:\"avatar__container\"},[_c('div',{staticClass:\"avatar__preview\"},[(!_vm.loading)?_c('NcAvatar',{key:_vm.version,attrs:{\"user\":_vm.userId,\"aria-label\":_vm.t('settings', 'Your profile picture'),\"disabled-menu\":true,\"disabled-tooltip\":true,\"show-user-status\":false,\"size\":180}}):_c('div',{staticClass:\"icon-loading\"})],1),_vm._v(\" \"),(_vm.avatarChangeSupported)?[_c('div',{staticClass:\"avatar__buttons\"},[_c('NcButton',{attrs:{\"aria-label\":_vm.t('settings', 'Upload profile picture')},on:{\"click\":_vm.activateLocalFilePicker},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Upload',{attrs:{\"size\":20}})]},proxy:true}],null,false,1329850251)}),_vm._v(\" \"),_c('NcButton',{attrs:{\"aria-label\":_vm.t('settings', 'Choose profile picture from files')},on:{\"click\":_vm.openFilePicker},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Folder',{attrs:{\"size\":20}})]},proxy:true}],null,false,4270628382)}),_vm._v(\" \"),(!_vm.isGenerated)?_c('NcButton',{attrs:{\"aria-label\":_vm.t('settings', 'Remove profile picture')},on:{\"click\":_vm.removeAvatar},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Delete',{attrs:{\"size\":20}})]},proxy:true}],null,false,2705356561)}):_vm._e()],1),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.t('settings', 'png or jpg, max. 20 MB')))]),_vm._v(\" \"),_c('input',{ref:\"input\",attrs:{\"id\":_vm.inputId,\"type\":\"file\",\"accept\":_vm.validMimeTypes.join(',')},on:{\"change\":_vm.onChange}})]:_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Picture provided by original account'))+\"\\n\\t\\t\")])],2):_vm._e(),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showCropper),expression:\"showCropper\"}],staticClass:\"avatar__container\"},[_c('VueCropper',_vm._b({ref:\"cropper\",staticClass:\"avatar__cropper\"},'VueCropper',_vm.cropperOptions,false)),_vm._v(\" \"),_c('div',{staticClass:\"avatar__cropper-buttons\"},[_c('NcButton',{on:{\"click\":_vm.cancel}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Cancel'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.saveAvatar}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Set as profile picture'))+\"\\n\\t\\t\\t\")])],1),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Please note that it can take up to 24 hours for your profile picture to be updated everywhere.')))])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DetailsSection.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!./DetailsSection.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!./DetailsSection.vue?vue&type=style&index=0&id=546e7ece&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!./DetailsSection.vue?vue&type=style&index=0&id=546e7ece&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DetailsSection.vue?vue&type=template&id=546e7ece&scoped=true&\"\nimport script from \"./DetailsSection.vue?vue&type=script&lang=js&\"\nexport * from \"./DetailsSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DetailsSection.vue?vue&type=style&index=0&id=546e7ece&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 \"546e7ece\",\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:{\"readable\":_vm.t('settings', 'Details')}}),_vm._v(\" \"),_c('div',{staticClass:\"details\"},[_c('div',{staticClass:\"details__groups\"},[_c('Account',{attrs:{\"size\":20}}),_vm._v(\" \"),_c('div',{staticClass:\"details__groups-info\"},[_c('p',[_vm._v(_vm._s(_vm.t('settings', 'You are a member of the following groups:')))]),_vm._v(\" \"),_c('p',{staticClass:\"details__groups-list\"},[_vm._v(_vm._s(_vm.groups.join(', ')))])])],1),_vm._v(\" \"),_c('div',{staticClass:\"details__quota\"},[_c('CircleSlice',{attrs:{\"size\":20}}),_vm._v(\" \"),_c('div',{staticClass:\"details__quota-info\"},[_c('p',{staticClass:\"details__quota-text\",domProps:{\"innerHTML\":_vm._s(_vm.quotaText)}}),_vm._v(\" \"),_c('NcProgressBar',{attrs:{\"size\":\"medium\",\"value\":_vm.usageRelative,\"error\":_vm.usageRelative > 80}})],1)],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n