diff --git a/apps/settings/src/components/Users/UserRow.vue b/apps/settings/src/components/Users/UserRow.vue index a48f76c359039..934f0545ed53d 100644 --- a/apps/settings/src/components/Users/UserRow.vue +++ b/apps/settings/src/components/Users/UserRow.vue @@ -640,18 +640,21 @@ export default { * * @param {string} displayName The display name */ - updateDisplayName() { + async updateDisplayName() { this.loading.displayName = true - this.$store.dispatch('setUserData', { - userid: this.user.id, - key: 'displayname', - value: this.editedDisplayName, - }).then(() => { - this.loading.displayName = false + try { + await this.$store.dispatch('setUserData', { + userid: this.user.id, + key: 'displayname', + value: this.editedDisplayName, + }) + if (this.editedDisplayName === this.user.displayname) { showSuccess(t('settings', 'Display name was successfully changed')) } - }) + } finally { + this.loading.displayName = false + } }, /** @@ -659,21 +662,23 @@ export default { * * @param {string} password The email address */ - updatePassword() { + async updatePassword() { this.loading.password = true if (this.editedPassword.length === 0) { showError(t('settings', "Password can't be empty")) this.loading.password = false } else { - this.$store.dispatch('setUserData', { - userid: this.user.id, - key: 'password', - value: this.editedPassword, - }).then(() => { - this.loading.password = false + try { + await this.$store.dispatch('setUserData', { + userid: this.user.id, + key: 'password', + value: this.editedPassword, + }) this.editedPassword = '' showSuccess(t('settings', 'Password was successfully changed')) - }) + } finally { + this.loading.password = false + } } }, @@ -682,23 +687,26 @@ export default { * * @param {string} mailAddress The email address */ - updateEmail() { + async updateEmail() { this.loading.mailAddress = true if (this.editedMail === '') { showError(t('settings', "Email can't be empty")) this.loading.mailAddress = false this.editedMail = this.user.email } else { - this.$store.dispatch('setUserData', { - userid: this.user.id, - key: 'email', - value: this.editedMail, - }).then(() => { - this.loading.mailAddress = false + try { + await this.$store.dispatch('setUserData', { + userid: this.user.id, + key: 'email', + value: this.editedMail, + }) + if (this.editedMail === this.user.email) { showSuccess(t('settings', 'Email was successfully changed')) } - }) + } finally { + this.loading.mailAddress = false + } } }, diff --git a/apps/settings/src/store/users.js b/apps/settings/src/store/users.js index 96f761a881490..e8244db71ca9b 100644 --- a/apps/settings/src/store/users.js +++ b/apps/settings/src/store/users.js @@ -636,11 +636,14 @@ const actions = { * @param {string} userid User id * @return {Promise} */ - wipeUserDevices(context, userid) { - return api.requireAdmin().then((response) => { - return api.post(generateOcsUrl('cloud/users/{userid}/wipe', { userid })) - .catch((error) => { throw error }) - }).catch((error) => context.commit('API_FAILURE', { userid, error })) + async wipeUserDevices(context, userid) { + try { + await api.requireAdmin() + return await api.post(generateOcsUrl('cloud/users/{userid}/wipe', { userid })) + } catch (error) { + context.commit('API_FAILURE', { userid, error }) + return Promise.reject(new Error('Failed to wipe user devices')) + } }, /** @@ -730,7 +733,7 @@ const actions = { * @param {string} options.value Value of the change * @return {Promise} */ - setUserData(context, { userid, key, value }) { + async setUserData(context, { userid, key, value }) { const allowedEmpty = ['email', 'displayname', 'manager'] if (['email', 'language', 'quota', 'displayname', 'password', 'manager'].indexOf(key) !== -1) { // We allow empty email or displayname @@ -740,11 +743,13 @@ const actions = { || allowedEmpty.indexOf(key) !== -1 ) ) { - return api.requireAdmin().then((response) => { - return api.put(generateOcsUrl('cloud/users/{userid}', { userid }), { key, value }) - .then((response) => context.commit('setUserData', { userid, key, value })) - .catch((error) => { throw error }) - }).catch((error) => context.commit('API_FAILURE', { userid, error })) + try { + await api.requireAdmin() + await api.put(generateOcsUrl('cloud/users/{userid}', { userid }), { key, value }) + return context.commit('setUserData', { userid, key, value }) + } catch (error) { + context.commit('API_FAILURE', { userid, error }) + } } } return Promise.reject(new Error('Invalid request data')) diff --git a/dist/settings-users-3239.js b/dist/settings-users-3239.js index 342cef0070aee..5b4d05587fb76 100644 --- a/dist/settings-users-3239.js +++ b/dist/settings-users-3239.js @@ -1,3 +1,3 @@ /*! For license information please see settings-users-3239.js.LICENSE.txt */ -"use strict";(self.webpackChunknextcloud=self.webpackChunknextcloud||[]).push([[3239],{1216:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),n=s.n(a),i=s(76314),r=s.n(i)()(n());r.push([t.id,".user-list[data-v-de721376]{--avatar-cell-width: 48px;--cell-padding: 7px;--cell-width: 200px;--cell-width-large: 300px;--cell-min-width: calc(var(--cell-width) - (2 * var(--cell-padding)));--sticky-column-z-index: calc(var(--vs-dropdown-z-index) + 1);display:block;overflow:auto;height:100%}.user-list__header[data-v-de721376],.user-list__footer[data-v-de721376]{position:sticky;display:block}.user-list__header[data-v-de721376]{top:0;z-index:calc(var(--sticky-column-z-index) + 1)}.user-list__footer[data-v-de721376]{left:0}.user-list__body[data-v-de721376]{display:flex;flex-direction:column;width:100%}","",{version:3,sources:["webpack://./apps/settings/src/components/Users/VirtualList.vue"],names:[],mappings:"AACA,4BACC,yBAAA,CACA,mBAAA,CACA,mBAAA,CACA,yBAAA,CACA,qEAAA,CACA,6DAAA,CAGA,aAAA,CACA,aAAA,CACA,WAAA,CAEA,wEAEC,eAAA,CAEA,aAAA,CAGD,oCACC,KAAA,CACA,8CAAA,CAGD,oCACC,MAAA,CAGD,kCACC,YAAA,CACA,qBAAA,CACA,UAAA",sourcesContent:["\n.user-list {\n\t--avatar-cell-width: 48px;\n\t--cell-padding: 7px;\n\t--cell-width: 200px;\n\t--cell-width-large: 300px;\n\t--cell-min-width: calc(var(--cell-width) - (2 * var(--cell-padding)));\n\t--sticky-column-z-index: calc(var(--vs-dropdown-z-index) + 1); // Keep the sticky column on top of the select dropdown\n\n\t// Necessary for virtual scroll optimized rendering\n\tdisplay: block;\n\toverflow: auto;\n\theight: 100%;\n\n\t&__header,\n\t&__footer {\n\t\tposition: sticky;\n\t\t// Fix sticky positioning in Firefox\n\t\tdisplay: block;\n\t}\n\n\t&__header {\n\t\ttop: 0;\n\t\tz-index: calc(var(--sticky-column-z-index) + 1);\n\t}\n\n\t&__footer {\n\t\tleft: 0;\n\t}\n\n\t&__body {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\twidth: 100%;\n\t}\n}\n"],sourceRoot:""}]);const o=r},9499:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),n=s.n(a),i=s(76314),r=s.n(i)()(n());r.push([t.id,".modal__form[data-v-2fe7d69f]{display:flex;flex-direction:column;align-items:center;padding:20px;gap:4px 0}.modal__item[data-v-2fe7d69f]{width:100%}.modal__item[data-v-2fe7d69f]:not(:focus):not(:active){border-color:var(--color-border-dark)}.modal__hint[data-v-2fe7d69f]{color:var(--color-text-maxcontrast);margin-top:8px;align-self:flex-start}.modal__label[data-v-2fe7d69f]{display:block;padding:4px 0}.modal__select[data-v-2fe7d69f]{width:100%}.modal__submit[data-v-2fe7d69f]{margin-top:20px}","",{version:3,sources:["webpack://./apps/settings/src/components/Users/NewUserModal.vue"],names:[],mappings:"AAEC,8BACC,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,YAAA,CACA,SAAA,CAGD,8BACC,UAAA,CAEA,uDACC,qCAAA,CAIF,8BACC,mCAAA,CACA,cAAA,CACA,qBAAA,CAGD,+BACC,aAAA,CACA,aAAA,CAGD,gCACC,UAAA,CAGD,gCACC,eAAA",sourcesContent:["\n.modal {\n\t&__form {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\tpadding: 20px;\n\t\tgap: 4px 0;\n\t}\n\n\t&__item {\n\t\twidth: 100%;\n\n\t\t&:not(:focus):not(:active) {\n\t\t\tborder-color: var(--color-border-dark);\n\t\t}\n\t}\n\n\t&__hint {\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tmargin-top: 8px;\n\t\talign-self: flex-start;\n\t}\n\n\t&__label {\n\t\tdisplay: block;\n\t\tpadding: 4px 0;\n\t}\n\n\t&__select {\n\t\twidth: 100%;\n\t}\n\n\t&__submit {\n\t\tmargin-top: 20px;\n\t}\n}\n"],sourceRoot:""}]);const o=r},23599:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),n=s.n(a),i=s(76314),r=s.n(i)()(n());r.push([t.id,".footer[data-v-3ec0b16a]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.footer__cell[data-v-3ec0b16a]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.footer__cell strong[data-v-3ec0b16a],.footer__cell span[data-v-3ec0b16a],.footer__cell label[data-v-3ec0b16a]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.footer__cell--avatar[data-v-3ec0b16a],.footer__cell--displayname[data-v-3ec0b16a]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.footer__cell--avatar[data-v-3ec0b16a]{left:0}.footer__cell--displayname[data-v-3ec0b16a]{left:var(--avatar-cell-width);border-right:1px solid var(--color-border)}}.footer__cell--avatar[data-v-3ec0b16a]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.footer__cell--multiline span[data-v-3ec0b16a]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.footer__cell--multiline span[data-v-3ec0b16a]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.footer__cell--large[data-v-3ec0b16a]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.footer__cell--obfuscated[data-v-3ec0b16a]{min-width:400px;width:400px}.footer__cell--fill[data-v-3ec0b16a]{min-width:var(--cell-width-large);width:100%}.footer__cell--actions[data-v-3ec0b16a]{position:sticky;right:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-left:1px solid var(--color-border)}.footer__subtitle[data-v-3ec0b16a]{color:var(--color-text-maxcontrast)}.footer__cell[data-v-3ec0b16a]{position:sticky;color:var(--color-text-maxcontrast)}.footer__cell--loading[data-v-3ec0b16a]{left:0;min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0}.footer__cell--count[data-v-3ec0b16a]{left:var(--avatar-cell-width);min-width:var(--cell-width);width:var(--cell-width)}","",{version:3,sources:["webpack://./apps/settings/src/components/Users/UserListFooter.vue","webpack://./apps/settings/src/components/Users/shared/styles.scss"],names:[],mappings:"AAGA,yBCoBC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CAIA,+BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,+GAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,mFAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,uCACC,MAAA,CAGD,4CACC,6BAAA,CACA,0CAAA,CAAA,CAIF,uCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,+CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,+CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,sCACC,iCAAA,CACA,6BAAA,CAGD,2CACC,eAAA,CACA,WAAA,CAID,qCACC,iCAAA,CACA,UAAA,CAGD,wCACC,eAAA,CACA,OAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,yCAAA,CAIF,mCACC,mCAAA,CDjHD,+BACC,eAAA,CACA,mCAAA,CAEA,wCACC,MAAA,CACA,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CAGD,sCACC,6BAAA,CACA,2BAAA,CACA,uBAAA",sourcesContent:["\n@import './shared/styles.scss';\n\n.footer {\n\t@include row;\n\t@include cell;\n\n\t&__cell {\n\t\tposition: sticky;\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t&--loading {\n\t\t\tleft: 0;\n\t\t\tmin-width: var(--avatar-cell-width);\n\t\t\twidth: var(--avatar-cell-width);\n\t\t\talign-items: center;\n\t\t\tpadding: 0;\n\t\t}\n\n\t\t&--count {\n\t\t\tleft: var(--avatar-cell-width);\n\t\t\tmin-width: var(--cell-width);\n\t\t\twidth: var(--cell-width);\n\t\t}\n\t}\n}\n","/**\n * @copyright 2023 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@mixin row {\n\tposition: relative;\n\tdisplay: flex;\n\tmin-width: 100%;\n\twidth: fit-content;\n\theight: var(--row-height);\n\tbackground-color: var(--color-main-background);\n}\n\n@mixin cell {\n\t&__cell {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\tpadding: 0 var(--cell-padding);\n\t\tmin-width: var(--cell-width);\n\t\twidth: var(--cell-width);\n\t\tcolor: var(--color-main-text);\n\n\t\tstrong,\n\t\tspan,\n\t\tlabel {\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow-wrap: anywhere;\n\t\t}\n\n\t\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\n\t\t\t&--avatar,\n\t\t\t&--displayname {\n\t\t\t\tposition: sticky;\n\t\t\t\tz-index: var(--sticky-column-z-index);\n\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t}\n\n\t\t\t&--avatar {\n\t\t\t\tleft: 0;\n\t\t\t}\n\n\t\t\t&--displayname {\n\t\t\t\tleft: var(--avatar-cell-width);\n\t\t\t\tborder-right: 1px solid var(--color-border);\n\t\t\t}\n\t\t}\n\n\t\t&--avatar {\n\t\t\tmin-width: var(--avatar-cell-width);\n\t\t\twidth: var(--avatar-cell-width);\n\t\t\talign-items: center;\n\t\t\tpadding: 0;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&--multiline {\n\t\t\tspan {\n\t\t\t\tline-height: 1.3em;\n\t\t\t\twhite-space: unset;\n\n\t\t\t\t@supports (-webkit-line-clamp: 2) {\n\t\t\t\t\tdisplay: -webkit-box;\n\t\t\t\t\t-webkit-line-clamp: 2;\n\t\t\t\t\t-webkit-box-orient: vertical;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&--large {\n\t\t\tmin-width: var(--cell-width-large);\n\t\t\twidth: var(--cell-width-large);\n\t\t}\n\n\t\t&--obfuscated {\n\t\t\tmin-width: 400px;\n\t\t\twidth: 400px;\n\t\t}\n\n\t\t// Fill remaining row space with cell\n\t\t&--fill {\n\t\t\tmin-width: var(--cell-width-large);\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t&--actions {\n\t\t\tposition: sticky;\n\t\t\tright: 0;\n\t\t\tz-index: var(--sticky-column-z-index);\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: row;\n\t\t\talign-items: center;\n\t\t\tmin-width: 110px;\n\t\t\twidth: 110px;\n\t\t\tbackground-color: var(--color-main-background);\n\t\t\tborder-left: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t&__subtitle {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n}\n"],sourceRoot:""}]);const o=r},26893:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),n=s.n(a),i=s(76314),r=s.n(i)()(n());r.push([t.id,"fieldset[data-v-ab9299ba]{font-weight:bold}","",{version:3,sources:["webpack://./apps/settings/src/components/Users/UserSettingsDialog.vue"],names:[],mappings:"AACA,0BACC,gBAAA",sourcesContent:["\nfieldset {\n\tfont-weight: bold;\n}\n"],sourceRoot:""}]);const o=r},27514:t=>{t.exports="data:image/svg+xml,%3c%21--%20-%20SPDX-FileCopyrightText:%202020%20Google%20Inc.%20-%20SPDX-License-Identifier:%20Apache-2.0%20--%3e%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M18.4%207.4L17%206l-6%206%206%206%201.4-1.4-4.6-4.6%204.6-4.6m-6%200L11%206l-6%206%206%206%201.4-1.4L7.8%2012l4.6-4.6z%27/%3e%3c/svg%3e"},27518:t=>{t.exports="data:image/svg+xml,%3c%21--%20-%20SPDX-FileCopyrightText:%202020%20Google%20Inc.%20-%20SPDX-License-Identifier:%20Apache-2.0%20--%3e%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M15.4%2016.6L10.8%2012l4.6-4.6L14%206l-6%206%206%206%201.4-1.4z%27/%3e%3c/svg%3e"},37496:(e,s,a)=>{a.r(s),a.d(s,{default:()=>St});var n=a(53334),i=a(85471),r=a(18195),o=a(9165),l=a(85168),d=a(61338),c=a(54914),u=a(28326),A=a(6695),g=a(59892);i.Ay.util.warn,a(13073);var p=a(59271);function h(t){var e;const s=(0,p.BA)(t);return null!=(e=null==s?void 0:s.$el)?e:s}const m=p.oc?window:void 0;function C(t){const e=function(){const t=(0,i.KR)(!1);return(0,i.nI)()&&(0,i.sV)((()=>{t.value=!0}),void 0),t}();return(0,i.EW)((()=>(e.value,Boolean(t()))))}function w(t,e={}){const{window:s=m,scrollTarget:a,threshold:n=0}=e,r=(0,i.KR)(!1);return function(t,e,s={}){const{root:a,rootMargin:n="0px",threshold:r=.1,window:o=m,immediate:l=!0}=s,d=C((()=>o&&"IntersectionObserver"in o)),c=(0,i.EW)((()=>{const e=(0,p.BA)(t);return(Array.isArray(e)?e:[e]).map(h).filter(p.d6)}));let u=p.lQ;const A=(0,i.KR)(l),g=d.value?(0,i.wB)((()=>[c.value,h(a),A.value]),(([t,s])=>{if(u(),!A.value)return;if(!t.length)return;const a=new IntersectionObserver(e,{root:h(s),rootMargin:n,threshold:r});t.forEach((t=>t&&a.observe(t))),u=()=>{a.disconnect(),u=p.lQ}}),{immediate:l,flush:"post"}):p.lQ,w=()=>{u(),g(),A.value=!1};(0,p.Uo)(w)}(t,(t=>{let e=r.value,s=0;for(const a of t)a.time>=s&&(s=a.time,e=a.isIntersecting);r.value=e}),{root:a,window:s,threshold:n}),r}p.C$.mounted,p.C$.unmounted,p.C$.mounted,p.C$.mounted,"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self,p.C$.mounted,p.C$.mounted;const v={[p.C$.mounted](t,e){if("function"==typeof e.value){const s=e.value,a=w(t);(0,i.wB)(a,(t=>s(t)),{immediate:!0})}else{const[s,a]=e.value,n=w(t,a);(0,i.wB)(n,(t=>s(t)),{immediate:!0})}}};p.C$.mounted,p.C$.mounted;Boolean,Boolean,Boolean,Boolean,p.C$.mounted;(0,i.KR)(!1);var f=a(17334),b=a.n(f),_=a(36620);i.Ay.directive("elementVisibility",v);const y=i.Ay.extend({name:"VirtualList",props:{dataComponent:{type:[Object,Function],required:!0},dataKey:{type:String,required:!0},dataSources:{type:Array,required:!0},itemHeight:{type:Number,required:!0},extraProps:{type:Object,default:()=>({})}},data:()=>({bufferItems:3,index:0,headerHeight:0,tableHeight:0,resizeObserver:null}),computed:{startIndex(){return Math.max(0,this.index-3)},shownItems(){return Math.ceil((this.tableHeight-this.headerHeight)/this.itemHeight)+6},renderedItems(){return this.dataSources.slice(this.startIndex,this.startIndex+this.shownItems)},tbodyStyle(){const t=this.startIndex+this.shownItems>this.dataSources.length,e=this.dataSources.length-this.startIndex-this.shownItems,s=Math.min(this.dataSources.length-this.startIndex,e);return{paddingTop:this.startIndex*this.itemHeight+"px",paddingBottom:t?0:s*this.itemHeight+"px"}}},mounted(){const t=this.$el,e=this.$refs?.tfoot,s=this.$refs?.thead;this.resizeObserver=new ResizeObserver(b()((()=>{this.headerHeight=s?.clientHeight??0,this.tableHeight=t?.clientHeight??0,_.A.debug("VirtualList resizeObserver updated"),this.onScroll()}),100,!1)),this.resizeObserver.observe(t),this.resizeObserver.observe(e),this.resizeObserver.observe(s),this.$el.addEventListener("scroll",this.onScroll)},beforeDestroy(){this.resizeObserver&&this.resizeObserver.disconnect()},methods:{handleFooterVisibility(t){t&&this.$emit("scroll-end")},onScroll(){this.index=Math.max(0,Math.round(this.$el.scrollTop/this.itemHeight))}}});var x=a(85072),k=a.n(x),S=a(97825),U=a.n(S),G=a(77659),N=a.n(G),L=a(55056),B=a.n(L),D=a(10540),I=a.n(D),q=a(41113),O=a.n(q),M=a(1216),$={};$.styleTagTransform=O(),$.setAttributes=B(),$.insert=N().bind(null,"head"),$.domAPI=U(),$.insertStyleElement=I(),k()(M.A,$),M.A&&M.A.locals&&M.A.locals;var T=a(14486);const P=(0,T.A)(y,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("table",{staticClass:"user-list"},[t._t("before"),t._v(" "),e("thead",{ref:"thead",staticClass:"user-list__header",attrs:{role:"rowgroup"}},[t._t("header")],2),t._v(" "),e("tbody",{staticClass:"user-list__body",style:t.tbodyStyle},t._l(t.renderedItems,(function(s,a){return e(t.dataComponent,t._b({key:s[t.dataKey],tag:"component",attrs:{user:s,visible:(a>=t.bufferItems||t.index<=t.bufferItems)&&a({possibleManagers:[],managerLabel:t("settings","Set user manager")}),computed:{showConfig(){return this.$store.getters.getShowConfig},settings(){return this.$store.getters.getServerData},usernameLabel(){return this.settings.newUserGenerateUserID?t("settings","Username will be autogenerated"):t("settings","Username (required)")},minPasswordLength(){return this.$store.getters.getPasswordPolicyMinLength},groups(){return this.$store.getters.getGroups.filter((t=>"disabled"!==t.id)).sort(((t,e)=>t.name.localeCompare(e.name)))},subAdminsGroups(){return this.$store.getters.getSubadminGroups},canAddGroups(){return this.groups.map((t=>((t=Object.assign({},t)).$isDisabled=!1===t.canAdd,t)))},languages(){return[{name:t("settings","Common languages"),languages:this.settings.languages.commonLanguages},...this.settings.languages.commonLanguages,{name:t("settings","Other languages"),languages:this.settings.languages.otherLanguages},...this.settings.languages.otherLanguages]}},async beforeMount(){await this.searchUserManager()},methods:{async createUser(){this.loading.all=!0;try{await this.$store.dispatch("addUser",{userid:this.newUser.id,password:this.newUser.password,displayName:this.newUser.displayName,email:this.newUser.mailAddress,groups:this.newUser.groups.map((t=>t.id)),subadmin:this.newUser.subAdminsGroups.map((t=>t.id)),quota:this.newUser.quota.id,language:this.newUser.language.code,manager:this.newUser.manager.id}),this.$emit("reset"),this.$refs.username?.$refs?.inputField?.$refs?.input?.focus?.(),this.$emit("close")}catch(t){if(this.loading.all=!1,t.response&&t.response.data&&t.response.data.ocs&&t.response.data.ocs.meta){const e=t.response.data.ocs.meta.statuscode;102===e?this.$refs.username?.$refs?.inputField?.$refs?.input?.focus?.():107===e&&this.$refs.password?.$refs?.inputField?.$refs?.input?.focus?.()}}},handleGroupInput(t){this.newUser.groups=t.filter((t=>Boolean(t.id)))},async createGroup(t){let{name:e}=t;this.loading.groups=!0;try{await this.$store.dispatch("addGroup",e),this.newUser.groups.push(this.groups.find((t=>t.id===e))),this.loading.groups=!1}catch(t){this.loading.groups=!1}},validateQuota(t){const e=OC.Util.computerFileSize(t);return null!==e&&e>=0?(t=OC.Util.humanFileSize(OC.Util.computerFileSize(t)),this.newUser.quota={id:t,label:t},this.newUser.quota):(this.newUser.quota=this.quotaOptions[0],this.quotaOptions[0])},languageFilterBy:(t,e,s)=>t.languages?t.languages.some((t=>{let{name:e}=t;return e.toLocaleLowerCase().includes(s.toLocaleLowerCase())})):(e||"").toLocaleLowerCase().includes(s.toLocaleLowerCase()),async searchUserManager(t){await this.$store.dispatch("searchUsers",{offset:0,limit:10,search:t}).then((t=>{const e=t?.data?Object.values(t?.data.ocs.data.users):[];e.length>0&&(this.possibleManagers=e)}))}}};var H=a(9499),Y={};Y.styleTagTransform=O(),Y.setAttributes=B(),Y.insert=N().bind(null,"head"),Y.domAPI=U(),Y.insertStyleElement=I(),k()(H.A,Y),H.A&&H.A.locals&&H.A.locals;const j=(0,T.A)(W,(function(){var t=this,e=t._self._c;return e("NcModal",t._g({staticClass:"modal",attrs:{size:"small"}},t.$listeners),[e("form",{staticClass:"modal__form",attrs:{"data-test":"form",disabled:t.loading.all},on:{submit:function(e){return e.preventDefault(),t.createUser.apply(null,arguments)}}},[e("h2",[t._v(t._s(t.t("settings","New user")))]),t._v(" "),e("NcTextField",{ref:"username",staticClass:"modal__item",attrs:{"data-test":"username",value:t.newUser.id,disabled:t.settings.newUserGenerateUserID,label:t.usernameLabel,autocapitalize:"none",autocomplete:"off",spellcheck:"false",pattern:"[a-zA-Z0-9 _\\.@\\-']+",required:""},on:{"update:value":function(e){return t.$set(t.newUser,"id",e)}}}),t._v(" "),e("NcTextField",{staticClass:"modal__item",attrs:{"data-test":"displayName",value:t.newUser.displayName,label:t.t("settings","Display name"),autocapitalize:"none",autocomplete:"off",spellcheck:"false"},on:{"update:value":function(e){return t.$set(t.newUser,"displayName",e)}}}),t._v(" "),t.settings.newUserRequireEmail?t._e():e("span",{staticClass:"modal__hint",attrs:{id:"password-email-hint"}},[t._v("\n\t\t\t"+t._s(t.t("settings","Either password or email is required"))+"\n\t\t")]),t._v(" "),e("NcPasswordField",{ref:"password",staticClass:"modal__item",attrs:{"data-test":"password",value:t.newUser.password,minlength:t.minPasswordLength,maxlength:469,"aria-describedby":"password-email-hint",label:""===t.newUser.mailAddress?t.t("settings","Password (required)"):t.t("settings","Password"),autocapitalize:"none",autocomplete:"new-password",spellcheck:"false",required:""===t.newUser.mailAddress},on:{"update:value":function(e){return t.$set(t.newUser,"password",e)}}}),t._v(" "),e("NcTextField",{staticClass:"modal__item",attrs:{"data-test":"email",type:"email",value:t.newUser.mailAddress,"aria-describedby":"password-email-hint",label:""===t.newUser.password||t.settings.newUserRequireEmail?t.t("settings","Email (required)"):t.t("settings","Email"),autocapitalize:"none",autocomplete:"off",spellcheck:"false",required:""===t.newUser.password||t.settings.newUserRequireEmail},on:{"update:value":function(e){return t.$set(t.newUser,"mailAddress",e)}}}),t._v(" "),e("div",{staticClass:"modal__item"},[e("label",{staticClass:"modal__label",attrs:{for:"new-user-groups"}},[t._v("\n\t\t\t\t"+t._s(t.settings.isAdmin?t.t("settings","Groups"):t.t("settings","Groups (required)"))+"\n\t\t\t")]),t._v(" "),e("NcSelect",{staticClass:"modal__select",attrs:{"input-id":"new-user-groups",placeholder:t.t("settings","Set user groups"),disabled:t.loading.groups||t.loading.all,options:t.canAddGroups,value:t.newUser.groups,label:"name","close-on-select":!1,multiple:!0,taggable:!0,required:!t.settings.isAdmin},on:{input:t.handleGroupInput,"option:created":t.createGroup}})],1),t._v(" "),t.subAdminsGroups.length>0?e("div",{staticClass:"modal__item"},[e("label",{staticClass:"modal__label",attrs:{for:"new-user-sub-admin"}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Administered groups"))+"\n\t\t\t")]),t._v(" "),e("NcSelect",{staticClass:"modal__select",attrs:{"input-id":"new-user-sub-admin",placeholder:t.t("settings","Set user as admin for …"),options:t.subAdminsGroups,"close-on-select":!1,multiple:!0,label:"name"},model:{value:t.newUser.subAdminsGroups,callback:function(e){t.$set(t.newUser,"subAdminsGroups",e)},expression:"newUser.subAdminsGroups"}})],1):t._e(),t._v(" "),e("div",{staticClass:"modal__item"},[e("label",{staticClass:"modal__label",attrs:{for:"new-user-quota"}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Quota"))+"\n\t\t\t")]),t._v(" "),e("NcSelect",{staticClass:"modal__select",attrs:{"input-id":"new-user-quota",placeholder:t.t("settings","Set user quota"),options:t.quotaOptions,clearable:!1,taggable:!0,"create-option":t.validateQuota},model:{value:t.newUser.quota,callback:function(e){t.$set(t.newUser,"quota",e)},expression:"newUser.quota"}})],1),t._v(" "),t.showConfig.showLanguages?e("div",{staticClass:"modal__item"},[e("label",{staticClass:"modal__label",attrs:{for:"new-user-language"}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Language"))+"\n\t\t\t")]),t._v(" "),e("NcSelect",{staticClass:"modal__select",attrs:{"input-id":"new-user-language",placeholder:t.t("settings","Set default language"),clearable:!1,selectable:t=>!t.languages,"filter-by":t.languageFilterBy,options:t.languages,label:"name"},model:{value:t.newUser.language,callback:function(e){t.$set(t.newUser,"language",e)},expression:"newUser.language"}})],1):t._e(),t._v(" "),e("div",{class:["modal__item managers",{"icon-loading-small":t.loading.manager}]},[e("label",{staticClass:"modal__label",attrs:{for:"new-user-manager"}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Manager"))+"\n\t\t\t")]),t._v(" "),e("NcSelect",{staticClass:"modal__select",attrs:{"input-id":"new-user-manager",placeholder:t.managerLabel,options:t.possibleManagers,"user-select":!0,label:"displayname"},on:{search:t.searchUserManager},model:{value:t.newUser.manager,callback:function(e){t.$set(t.newUser,"manager",e)},expression:"newUser.manager"}})],1),t._v(" "),e("NcButton",{staticClass:"modal__submit",attrs:{"data-test":"submit",type:"primary","native-type":"submit"}},[t._v("\n\t\t\t"+t._s(t.t("settings","Add new user"))+"\n\t\t")])],1)])}),[],!1,null,"2fe7d69f",null).exports,K=i.Ay.extend({name:"UserListFooter",components:{NcLoadingIcon:g.A},props:{loading:{type:Boolean,required:!0},filteredUsers:{type:Array,required:!0}},computed:{userCount(){return this.loading?this.n("settings","{userCount} user …","{userCount} users …",this.filteredUsers.length,{userCount:this.filteredUsers.length}):this.n("settings","{userCount} user","{userCount} users",this.filteredUsers.length,{userCount:this.filteredUsers.length})}},methods:{t:n.Tl,n:n.zw}});var V=a(23599),X={};X.styleTagTransform=O(),X.setAttributes=B(),X.insert=N().bind(null,"head"),X.domAPI=U(),X.insertStyleElement=I(),k()(V.A,X),V.A&&V.A.locals&&V.A.locals;const J=(0,T.A)(K,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("tr",{staticClass:"footer"},[e("th",{attrs:{scope:"row"}},[e("span",{staticClass:"hidden-visually"},[t._v(t._s(t.t("settings","Total rows summary")))])]),t._v(" "),e("td",{staticClass:"footer__cell footer__cell--loading"},[t.loading?e("NcLoadingIcon",{attrs:{title:t.t("settings","Loading users …"),size:32}}):t._e()],1),t._v(" "),e("td",{staticClass:"footer__cell footer__cell--count footer__cell--multiline"},[e("span",{attrs:{"aria-describedby":"user-count-desc"}},[t._v(t._s(t.userCount))]),t._v(" "),e("span",{staticClass:"hidden-visually",attrs:{id:"user-count-desc"}},[t._v("\n\t\t\t"+t._s(t.t("settings","Scroll to load more rows"))+"\n\t\t")])])])}),[],!1,null,"3ec0b16a",null).exports,Z=i.Ay.extend({name:"UserListHeader",props:{hasObfuscated:{type:Boolean,required:!0}},computed:{showConfig(){return this.$store.getters.getShowConfig},settings(){return this.$store.getters.getServerData},subAdminsGroups(){return this.$store.getters.getSubadminGroups},passwordLabel(){return this.hasObfuscated?(0,n.Tl)("settings","Password or insufficient permissions message"):(0,n.Tl)("settings","Password")}},methods:{t:n.Tl}});var tt=a(77024),et={};et.styleTagTransform=O(),et.setAttributes=B(),et.insert=N().bind(null,"head"),et.domAPI=U(),et.insertStyleElement=I(),k()(tt.A,et),tt.A&&tt.A.locals&&tt.A.locals;const st=(0,T.A)(Z,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("tr",{staticClass:"header"},[e("th",{staticClass:"header__cell header__cell--avatar",attrs:{"data-cy-user-list-header-avatar":"",scope:"col"}},[e("span",{staticClass:"hidden-visually"},[t._v("\n\t\t\t"+t._s(t.t("settings","Avatar"))+"\n\t\t")])]),t._v(" "),e("th",{staticClass:"header__cell header__cell--displayname",attrs:{"data-cy-user-list-header-displayname":"",scope:"col"}},[e("strong",[t._v("\n\t\t\t"+t._s(t.t("settings","Display name"))+"\n\t\t")]),t._v(" "),e("span",{staticClass:"header__subtitle"},[t._v("\n\t\t\t"+t._s(t.t("settings","Username"))+"\n\t\t")])]),t._v(" "),e("th",{staticClass:"header__cell",class:{"header__cell--obfuscated":t.hasObfuscated},attrs:{"data-cy-user-list-header-password":"",scope:"col"}},[e("span",[t._v(t._s(t.passwordLabel))])]),t._v(" "),e("th",{staticClass:"header__cell",attrs:{"data-cy-user-list-header-email":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Email")))])]),t._v(" "),e("th",{staticClass:"header__cell header__cell--large",attrs:{"data-cy-user-list-header-groups":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Groups")))])]),t._v(" "),t.subAdminsGroups.length>0&&t.settings.isAdmin?e("th",{staticClass:"header__cell header__cell--large",attrs:{"data-cy-user-list-header-subadmins":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Group admin for")))])]):t._e(),t._v(" "),e("th",{staticClass:"header__cell",attrs:{"data-cy-user-list-header-quota":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Quota")))])]),t._v(" "),t.showConfig.showLanguages?e("th",{staticClass:"header__cell header__cell--large",attrs:{"data-cy-user-list-header-languages":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Language")))])]):t._e(),t._v(" "),t.showConfig.showUserBackend||t.showConfig.showStoragePath?e("th",{staticClass:"header__cell header__cell--large",attrs:{"data-cy-user-list-header-storage-location":"",scope:"col"}},[t.showConfig.showUserBackend?e("span",[t._v("\n\t\t\t"+t._s(t.t("settings","User backend"))+"\n\t\t")]):t._e(),t._v(" "),t.showConfig.showStoragePath?e("span",{staticClass:"header__subtitle"},[t._v("\n\t\t\t"+t._s(t.t("settings","Storage location"))+"\n\t\t")]):t._e()]):t._e(),t._v(" "),t.showConfig.showLastLogin?e("th",{staticClass:"header__cell",attrs:{"data-cy-user-list-header-last-login":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Last login")))])]):t._e(),t._v(" "),e("th",{staticClass:"header__cell header__cell--large header__cell--fill",attrs:{"data-cy-user-list-header-manager":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Manager")))])]),t._v(" "),e("th",{staticClass:"header__cell header__cell--actions",attrs:{"data-cy-user-list-header-actions":"",scope:"col"}},[e("span",{staticClass:"hidden-visually"},[t._v("\n\t\t\t"+t._s(t.t("settings","User actions"))+"\n\t\t")])])])}),[],!1,null,"69afa821",null).exports;var at=a(35810),nt=a(21777),it=a(41944),rt=a(95101),ot=a(57505),lt=a(24764);const dt=(0,i.pM)({components:{NcActionButton:ot.A,NcActions:lt.A,NcIconSvgWrapper:A.A},props:{actions:{type:Array,required:!0},disabled:{type:Boolean,required:!0},edit:{type:Boolean,required:!0},user:{type:Object,required:!0}},computed:{editSvg(){return this.edit?'':''}},methods:{toggleEdit(){this.$emit("update:edit",!this.edit)}}}),ct=(0,T.A)(dt,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("NcActions",{attrs:{"aria-label":t.t("settings","Toggle account actions menu"),disabled:t.disabled,inline:1}},[e("NcActionButton",{attrs:{"data-cy-user-list-action-toggle-edit":`${t.edit}`,disabled:t.disabled},on:{click:t.toggleEdit},scopedSlots:t._u([{key:"icon",fn:function(){return[e("NcIconSvgWrapper",{key:t.editSvg,attrs:{svg:t.editSvg,"aria-hidden":"true"}})]},proxy:!0}])},[t._v("\n\t\t"+t._s(t.edit?t.t("settings","Done"):t.t("settings","Edit"))+"\n\t\t")]),t._v(" "),t._l(t.actions,(function(s,a){let{action:n,icon:i,text:r}=s;return e("NcActionButton",{key:a,attrs:{disabled:t.disabled,"aria-label":r,icon:i},on:{click:e=>n(e,{...t.user})}},[t._v("\n\t\t"+t._s(r)+"\n\t")])}))],2)}),[],!1,null,null,null).exports,ut={props:{user:{type:Object,required:!0},settings:{type:Object,default:()=>({})},groups:{type:Array,default:()=>[]},subAdminsGroups:{type:Array,default:()=>[]},quotaOptions:{type:Array,default:()=>[]},languages:{type:Array,required:!0},externalActions:{type:Array,default:()=>[]}},computed:{showConfig(){return this.$store.getters.getShowConfig},userGroups(){return this.groups.filter((t=>this.user.groups.includes(t.id)))},userSubAdminsGroups(){return this.subAdminsGroups.filter((t=>this.user.subadmin.includes(t.id)))},availableGroups(){return this.groups.map((t=>{const e=Object.assign({},t);return e.$isDisabled=!1===t.canAdd&&!this.user.groups.includes(t.id)||!1===t.canRemove&&this.user.groups.includes(t.id),e}))},usedSpace(){return this.user.quota.used?t("settings","{size} used",{size:OC.Util.humanFileSize(this.user.quota.used)}):t("settings","{size} used",{size:OC.Util.humanFileSize(0)})},usedQuota(){let t=this.user.quota.quota;return t=t>0?Math.min(100,Math.round(this.user.quota.used/t*100)):95*(1-1/(this.user.quota.used/(10*Math.pow(2,30))+1)),isNaN(t)?0:t},userQuota(){if(this.user.quota.quota>=0){const t=OC.Util.humanFileSize(this.user.quota.quota);return this.quotaOptions.find((e=>e.id===t))||{id:t,label:t}}return"default"===this.user.quota.quota?this.quotaOptions[0]:this.quotaOptions[1]},minPasswordLength(){return this.$store.getters.getPasswordPolicyMinLength},userLanguage(){const t=this.languages[0].languages.concat(this.languages[1].languages).find((t=>t.code===this.user.language));return"object"!=typeof t&&""!==this.user.language?{code:this.user.language,name:this.user.language}:""!==this.user.language&&t},userLastLoginTooltip(){return this.user.lastLogin>0?OC.Util.formatDate(this.user.lastLogin):""},userLastLogin(){return this.user.lastLogin>0?OC.Util.relativeModifiedDate(this.user.lastLogin):t("settings","Never")}}};var At=a(95668);const gt={name:"UserRow",components:{NcAvatar:it.A,NcLoadingIcon:g.A,NcProgressBar:rt.A,NcSelect:R.A,NcTextField:Q.A,UserRowActions:ct},mixins:[ut],props:{user:{type:Object,required:!0},visible:{type:Boolean,required:!0},users:{type:Array,required:!0},hasObfuscated:{type:Boolean,required:!0},groups:{type:Array,default:()=>[]},subAdminsGroups:{type:Array,required:!0},quotaOptions:{type:Array,required:!0},languages:{type:Array,required:!0},settings:{type:Object,required:!0},externalActions:{type:Array,default:()=>[]}},data(){return{selectedQuota:!1,rand:Math.random().toString(36).substring(2),loadingPossibleManagers:!1,possibleManagers:[],currentManager:"",editing:!1,loading:{all:!1,displayName:!1,password:!1,mailAddress:!1,groups:!1,subadmins:!1,quota:!1,delete:!1,disable:!1,languages:!1,wipe:!1,manager:!1},editedDisplayName:this.user.displayname,editedPassword:"",editedMail:this.user.email??""}},computed:{managerLabel:()=>t("settings","Set line manager"),isObfuscated(){return(0,At.HK)(this.user)},showConfig(){return this.$store.getters.getShowConfig},isLoadingUser(){return this.loading.delete||this.loading.disable||this.loading.wipe},isLoadingField(){return this.loading.delete||this.loading.disable||this.loading.all},uniqueId(){return encodeURIComponent(this.user.id+this.rand)},userGroupsLabels(){return this.userGroups.map((t=>t.name)).join(", ")},userSubAdminsGroupsLabels(){return this.userSubAdminsGroups.map((t=>t.name)).join(", ")},usedSpace(){return this.user.quota?.used?t("settings","{size} used",{size:(0,at.v7)(this.user.quota?.used)}):t("settings","{size} used",{size:(0,at.v7)(0)})},canEdit(){return(0,nt.HW)().uid!==this.user.id||this.settings.isAdmin},userQuota(){let e=this.user.quota?.quota;return"default"===e&&(e=this.settings.defaultQuota,"none"!==e&&(e=(0,at.lT)(e,!0))),"none"===e||-3===e?t("settings","Unlimited"):e>=0?(0,at.v7)(e):(0,at.v7)(0)},userActions(){const e=[{icon:"icon-delete",text:t("settings","Delete account"),action:this.deleteUser},{icon:"icon-delete",text:t("settings","Disconnect all devices and delete local data"),action:this.wipeUserDevices},{icon:this.user.enabled?"icon-close":"icon-add",text:this.user.enabled?t("settings","Disable account"):t("settings","Enable account"),action:this.enableDisableUser}];return null!==this.user.email&&""!==this.user.email&&e.push({icon:"icon-mail",text:t("settings","Resend welcome email"),action:this.sendWelcomeMail}),e.concat(this.externalActions)},editedUserQuota:{get(){return!1!==this.selectedQuota?this.selectedQuota:this.settings.defaultQuota!==At.SA.id&&(0,at.lT)(this.settings.defaultQuota,!0)>=0?{id:this.settings.defaultQuota,label:this.settings.defaultQuota}:At.SA},set(t){this.selectedQuota=t}},availableLanguages(){return this.languages[0].languages.concat(this.languages[1].languages)}},async beforeMount(){this.user.manager&&await this.initManager(this.user.manager)},methods:{wipeUserDevices(){const e=this.user.id;OC.dialogs.confirmDestructive(t("settings","In case of lost device or exiting the organization, this can remotely wipe the Nextcloud data from all devices associated with {userid}. Only works if the devices are connected to the internet.",{userid:e}),t("settings","Remote wipe of devices"),{type:OC.dialogs.YES_NO_BUTTONS,confirm:t("settings","Wipe {userid}'s devices",{userid:e}),confirmClasses:"error",cancel:t("settings","Cancel")},(s=>{s&&(this.loading.wipe=!0,this.loading.all=!0,this.$store.dispatch("wipeUserDevices",e).then((()=>(0,l.Te)(t("settings","Wiped {userid}'s devices",{userid:e}))),{timeout:2e3}).finally((()=>{this.loading.wipe=!1,this.loading.all=!1})))}),!0)},filterManagers(t){return t.filter((t=>t.id!==this.user.id))},async initManager(t){await this.$store.dispatch("getUser",t).then((t=>{this.currentManager=t?.data.ocs.data}))},async searchInitialUserManager(){this.loadingPossibleManagers=!0,await this.searchUserManager(),this.loadingPossibleManagers=!1},async searchUserManager(t){await this.$store.dispatch("searchUsers",{offset:0,limit:10,search:t}).then((t=>{const e=t?.data?this.filterManagers(Object.values(t?.data.ocs.data.users)):[];e.length>0&&(this.possibleManagers=e)}))},async updateUserManager(e){null===e&&(this.currentManager=""),this.loading.manager=!0;try{await this.$store.dispatch("setUserData",{userid:this.user.id,key:"manager",value:this.currentManager?this.currentManager.id:""})}catch(e){(0,l.Qg)(t("settings","Failed to update line manager")),console.error(e)}finally{this.loading.manager=!1}},deleteUser(){const e=this.user.id;OC.dialogs.confirmDestructive(t("settings","Fully delete {userid}'s account including all their personal files, app data, etc.",{userid:e}),t("settings","Account deletion"),{type:OC.dialogs.YES_NO_BUTTONS,confirm:t("settings","Delete {userid}'s account",{userid:e}),confirmClasses:"error",cancel:t("settings","Cancel")},(t=>{if(t)return this.loading.delete=!0,this.loading.all=!0,this.$store.dispatch("deleteUser",e).then((()=>{this.loading.delete=!1,this.loading.all=!1}))}),!0)},enableDisableUser(){this.loading.delete=!0,this.loading.all=!0;const t=this.user.id,e=!this.user.enabled;return this.$store.dispatch("enableDisableUser",{userid:t,enabled:e}).then((()=>{this.loading.delete=!1,this.loading.all=!1}))},updateDisplayName(){this.loading.displayName=!0,this.$store.dispatch("setUserData",{userid:this.user.id,key:"displayname",value:this.editedDisplayName}).then((()=>{this.loading.displayName=!1,this.editedDisplayName===this.user.displayname&&(0,l.Te)(t("settings","Display name was successfully changed"))}))},updatePassword(){this.loading.password=!0,0===this.editedPassword.length?((0,l.Qg)(t("settings","Password can't be empty")),this.loading.password=!1):this.$store.dispatch("setUserData",{userid:this.user.id,key:"password",value:this.editedPassword}).then((()=>{this.loading.password=!1,this.editedPassword="",(0,l.Te)(t("settings","Password was successfully changed"))}))},updateEmail(){this.loading.mailAddress=!0,""===this.editedMail?((0,l.Qg)(t("settings","Email can't be empty")),this.loading.mailAddress=!1,this.editedMail=this.user.email):this.$store.dispatch("setUserData",{userid:this.user.id,key:"email",value:this.editedMail}).then((()=>{this.loading.mailAddress=!1,this.editedMail===this.user.email&&(0,l.Te)(t("settings","Email was successfully changed"))}))},async createGroup(t){let{name:e}=t;this.loading={groups:!0,subadmins:!0};try{await this.$store.dispatch("addGroup",e);const t=this.user.id;await this.$store.dispatch("addUserGroup",{userid:t,gid:e})}catch(t){console.error(t)}finally{this.loading={groups:!1,subadmins:!1}}return this.$store.getters.getGroups[this.groups.length]},async addUserGroup(t){if(t.isCreating)return;this.loading.groups=!0;const e=this.user.id,s=t.id;if(!1===t.canAdd)return!1;try{await this.$store.dispatch("addUserGroup",{userid:e,gid:s})}catch(t){console.error(t)}finally{this.loading.groups=!1}},async removeUserGroup(t){if(!1===t.canRemove)return!1;this.loading.groups=!0;const e=this.user.id,s=t.id;try{await this.$store.dispatch("removeUserGroup",{userid:e,gid:s}),this.loading.groups=!1,this.$route.params.selectedGroup===s&&this.$store.commit("deleteUser",e)}catch{this.loading.groups=!1}},async addUserSubAdmin(t){this.loading.subadmins=!0;const e=this.user.id,s=t.id;try{await this.$store.dispatch("addUserSubAdmin",{userid:e,gid:s}),this.loading.subadmins=!1}catch(t){console.error(t)}},async removeUserSubAdmin(t){this.loading.subadmins=!0;const e=this.user.id,s=t.id;try{await this.$store.dispatch("removeUserSubAdmin",{userid:e,gid:s})}catch(t){console.error(t)}finally{this.loading.subadmins=!1}},async setUserQuota(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"none";"none"===t&&(t=At.SA),this.loading.quota=!0,t=t.id?t.id:t;try{const e=((0,at.lT)(t,!0)||t).toString();await this.$store.dispatch("setUserData",{userid:this.user.id,key:"quota",value:e})}catch(t){console.error(t)}finally{this.loading.quota=!1}return t},validateQuota:t=>("object"==typeof t&&(t=t?.id||t.label),null===(0,at.lT)(t,!0)?At.SA:{id:t=(0,at.v7)((0,at.lT)(t,!0)),label:t}),async setUserLanguage(t){this.loading.languages=!0;try{await this.$store.dispatch("setUserData",{userid:this.user.id,key:"language",value:t.code}),this.loading.languages=!1}catch(t){console.error(t)}return t},sendWelcomeMail(){this.loading.all=!0,this.$store.dispatch("sendWelcomeMail",this.user.id).then((()=>(0,l.Te)(t("settings","Welcome mail sent!"),{timeout:2e3}))).finally((()=>{this.loading.all=!1}))},async toggleEdit(){this.editing=!this.editing,this.editing&&(await this.$nextTick(),this.$refs.displayNameField?.$refs?.inputField?.$refs?.input?.focus()),this.editedDisplayName!==this.user.displayname?this.editedDisplayName=this.user.displayname:this.editedMail!==this.user.email&&(this.editedMail=this.user.email??"")}}};var pt=a(56467),ht={};ht.styleTagTransform=O(),ht.setAttributes=B(),ht.insert=N().bind(null,"head"),ht.domAPI=U(),ht.insertStyleElement=I(),k()(pt.A,ht),pt.A&&pt.A.locals&&pt.A.locals;var mt=(0,T.A)(gt,(function(){var t=this,e=t._self._c;return e("tr",{staticClass:"user-list__row",attrs:{"data-cy-user-row":t.user.id}},[e("td",{staticClass:"row__cell row__cell--avatar",attrs:{"data-cy-user-list-cell-avatar":""}},[t.isLoadingUser?e("NcLoadingIcon",{attrs:{name:t.t("settings","Loading account …"),size:32}}):t.visible?e("NcAvatar",{attrs:{"disable-menu":"","show-user-status":!1,user:t.user.id}}):t._e()],1),t._v(" "),e("td",{staticClass:"row__cell row__cell--displayname",attrs:{"data-cy-user-list-cell-displayname":""}},[t.editing&&t.user.backendCapabilities.setDisplayName?[e("NcTextField",{ref:"displayNameField",staticClass:"user-row-text-field",class:{"icon-loading-small":t.loading.displayName},attrs:{"data-cy-user-list-input-displayname":"","data-loading":t.loading.displayName||void 0,"trailing-button-label":t.t("settings","Submit"),"show-trailing-button":!0,disabled:t.loading.displayName||t.isLoadingField,label:t.t("settings","Change display name"),"trailing-button-icon":"arrowRight",value:t.editedDisplayName,autocapitalize:"off",autocomplete:"off",spellcheck:"false"},on:{"update:value":function(e){t.editedDisplayName=e},"trailing-button-click":t.updateDisplayName}})]:[t.isObfuscated?t._e():e("strong",{attrs:{title:t.user.displayname?.length>20?t.user.displayname:null}},[t._v("\n\t\t\t\t"+t._s(t.user.displayname)+"\n\t\t\t")]),t._v(" "),e("span",{staticClass:"row__subtitle"},[t._v(t._s(t.user.id))])]],2),t._v(" "),e("td",{staticClass:"row__cell",class:{"row__cell--obfuscated":t.hasObfuscated},attrs:{"data-cy-user-list-cell-password":""}},[t.editing&&t.settings.canChangePassword&&t.user.backendCapabilities.setPassword?[e("NcTextField",{staticClass:"user-row-text-field",class:{"icon-loading-small":t.loading.password},attrs:{"data-cy-user-list-input-password":"","data-loading":t.loading.password||void 0,"trailing-button-label":t.t("settings","Submit"),"show-trailing-button":!0,disabled:t.loading.password||t.isLoadingField,minlength:t.minPasswordLength,maxlength:"469",label:t.t("settings","Set new password"),"trailing-button-icon":"arrowRight",value:t.editedPassword,autocapitalize:"off",autocomplete:"new-password",required:"",spellcheck:"false",type:"password"},on:{"update:value":function(e){t.editedPassword=e},"trailing-button-click":t.updatePassword}})]:t.isObfuscated?e("span",[t._v("\n\t\t\t"+t._s(t.t("settings","You do not have permissions to see the details of this account"))+"\n\t\t")]):t._e()],2),t._v(" "),e("td",{staticClass:"row__cell",attrs:{"data-cy-user-list-cell-email":""}},[t.editing?[e("NcTextField",{staticClass:"user-row-text-field",class:{"icon-loading-small":t.loading.mailAddress},attrs:{"data-cy-user-list-input-email":"","data-loading":t.loading.mailAddress||void 0,"show-trailing-button":!0,"trailing-button-label":t.t("settings","Submit"),label:t.t("settings","Set new email address"),disabled:t.loading.mailAddress||t.isLoadingField,"trailing-button-icon":"arrowRight",value:t.editedMail,autocapitalize:"off",autocomplete:"email",spellcheck:"false",type:"email"},on:{"update:value":function(e){t.editedMail=e},"trailing-button-click":t.updateEmail}})]:t.isObfuscated?t._e():e("span",{attrs:{title:t.user.email?.length>20?t.user.email:null}},[t._v("\n\t\t\t"+t._s(t.user.email)+"\n\t\t")])],2),t._v(" "),e("td",{staticClass:"row__cell row__cell--large row__cell--multiline",attrs:{"data-cy-user-list-cell-groups":""}},[t.editing?[e("label",{staticClass:"hidden-visually",attrs:{for:"groups"+t.uniqueId}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Add user to group"))+"\n\t\t\t")]),t._v(" "),e("NcSelect",{attrs:{"data-cy-user-list-input-groups":"","data-loading":t.loading.groups||void 0,"input-id":"groups"+t.uniqueId,"close-on-select":!1,disabled:t.isLoadingField,loading:t.loading.groups,multiple:!0,"append-to-body":!1,options:t.availableGroups,placeholder:t.t("settings","Add account to group"),taggable:t.settings.isAdmin,value:t.userGroups,label:"name","no-wrap":!0,"create-option":t=>({name:t,isCreating:!0})},on:{"option:created":t.createGroup,"option:selected":e=>t.addUserGroup(e.at(-1)),"option:deselected":t.removeUserGroup}})]:t.isObfuscated?t._e():e("span",{attrs:{title:t.userGroupsLabels?.length>40?t.userGroupsLabels:null}},[t._v("\n\t\t\t"+t._s(t.userGroupsLabels)+"\n\t\t")])],2),t._v(" "),t.subAdminsGroups.length>0&&t.settings.isAdmin?e("td",{staticClass:"row__cell row__cell--large row__cell--multiline",attrs:{"data-cy-user-list-cell-subadmins":""}},[t.editing&&t.settings.isAdmin&&t.subAdminsGroups.length>0?[e("label",{staticClass:"hidden-visually",attrs:{for:"subadmins"+t.uniqueId}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Set account as admin for"))+"\n\t\t\t")]),t._v(" "),e("NcSelect",{attrs:{"data-cy-user-list-input-subadmins":"","data-loading":t.loading.subadmins||void 0,"input-id":"subadmins"+t.uniqueId,"close-on-select":!1,disabled:t.isLoadingField,loading:t.loading.subadmins,label:"name","append-to-body":!1,multiple:!0,"no-wrap":!0,options:t.subAdminsGroups,placeholder:t.t("settings","Set account as admin for"),value:t.userSubAdminsGroups},on:{"option:deselected":t.removeUserSubAdmin,"option:selected":e=>t.addUserSubAdmin(e.at(-1))}})]:t.isObfuscated?t._e():e("span",{attrs:{title:t.userSubAdminsGroupsLabels?.length>40?t.userSubAdminsGroupsLabels:null}},[t._v("\n\t\t\t"+t._s(t.userSubAdminsGroupsLabels)+"\n\t\t")])],2):t._e(),t._v(" "),e("td",{staticClass:"row__cell",attrs:{"data-cy-user-list-cell-quota":""}},[t.editing?[e("label",{staticClass:"hidden-visually",attrs:{for:"quota"+t.uniqueId}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Select account quota"))+"\n\t\t\t")]),t._v(" "),e("NcSelect",{attrs:{"close-on-select":!0,"create-option":t.validateQuota,"data-cy-user-list-input-quota":"","data-loading":t.loading.quota||void 0,disabled:t.isLoadingField,loading:t.loading.quota,"append-to-body":!1,clearable:!1,"input-id":"quota"+t.uniqueId,options:t.quotaOptions,placeholder:t.t("settings","Select account quota"),taggable:!0},on:{"option:selected":t.setUserQuota},model:{value:t.editedUserQuota,callback:function(e){t.editedUserQuota=e},expression:"editedUserQuota"}})]:t.isObfuscated?t._e():[e("span",{attrs:{id:"quota-progress"+t.uniqueId}},[t._v(t._s(t.userQuota)+" ("+t._s(t.usedSpace)+")")]),t._v(" "),e("NcProgressBar",{staticClass:"row__progress",class:{"row__progress--warn":t.usedQuota>80},attrs:{"aria-labelledby":"quota-progress"+t.uniqueId,value:t.usedQuota}})]],2),t._v(" "),t.showConfig.showLanguages?e("td",{staticClass:"row__cell row__cell--large",attrs:{"data-cy-user-list-cell-language":""}},[t.editing?[e("label",{staticClass:"hidden-visually",attrs:{for:"language"+t.uniqueId}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Set the language"))+"\n\t\t\t")]),t._v(" "),e("NcSelect",{attrs:{id:"language"+t.uniqueId,"data-cy-user-list-input-language":"","data-loading":t.loading.languages||void 0,"allow-empty":!1,disabled:t.isLoadingField,loading:t.loading.languages,clearable:!1,"append-to-body":!1,options:t.availableLanguages,placeholder:t.t("settings","No language set"),value:t.userLanguage,label:"name"},on:{input:t.setUserLanguage}})]:t.isObfuscated?t._e():e("span",[t._v("\n\t\t\t"+t._s(t.userLanguage.name)+"\n\t\t")])],2):t._e(),t._v(" "),t.showConfig.showUserBackend||t.showConfig.showStoragePath?e("td",{staticClass:"row__cell row__cell--large",attrs:{"data-cy-user-list-cell-storage-location":""}},[t.isObfuscated?t._e():[t.showConfig.showUserBackend?e("span",[t._v(t._s(t.user.backend))]):t._e(),t._v(" "),t.showConfig.showStoragePath?e("span",{staticClass:"row__subtitle",attrs:{title:t.user.storageLocation}},[t._v("\n\t\t\t\t"+t._s(t.user.storageLocation)+"\n\t\t\t")]):t._e()]],2):t._e(),t._v(" "),t.showConfig.showLastLogin?e("td",{staticClass:"row__cell",attrs:{title:t.userLastLoginTooltip,"data-cy-user-list-cell-last-login":""}},[t.isObfuscated?t._e():e("span",[t._v(t._s(t.userLastLogin))])]):t._e(),t._v(" "),e("td",{staticClass:"row__cell row__cell--large row__cell--fill",attrs:{"data-cy-user-list-cell-manager":""}},[t.editing?[e("label",{staticClass:"hidden-visually",attrs:{for:"manager"+t.uniqueId}},[t._v("\n\t\t\t\t"+t._s(t.managerLabel)+"\n\t\t\t")]),t._v(" "),e("NcSelect",{staticClass:"select--fill",attrs:{"data-cy-user-list-input-manager":"","data-loading":t.loading.manager||void 0,"input-id":"manager"+t.uniqueId,"close-on-select":!0,disabled:t.isLoadingField,"append-to-body":!1,loading:t.loadingPossibleManagers||t.loading.manager,label:"displayname",options:t.possibleManagers,placeholder:t.managerLabel},on:{open:t.searchInitialUserManager,search:t.searchUserManager,"option:selected":t.updateUserManager},model:{value:t.currentManager,callback:function(e){t.currentManager=e},expression:"currentManager"}})]:t.isObfuscated?t._e():e("span",[t._v("\n\t\t\t"+t._s(t.user.manager)+"\n\t\t")])],2),t._v(" "),e("td",{staticClass:"row__cell row__cell--actions",attrs:{"data-cy-user-list-cell-actions":""}},[t.visible&&!t.isObfuscated&&t.canEdit&&!t.loading.all?e("UserRowActions",{attrs:{actions:t.userActions,disabled:t.isLoadingField,edit:t.editing,user:t.user},on:{"update:edit":t.toggleEdit}}):t._e()],1)])}),[],!1,null,"07bad8e5",null);const Ct=mt.exports,wt=Object.freeze({id:"",displayName:"",password:"",mailAddress:"",groups:[],manager:"",subAdminsGroups:[],quota:At.MY,language:{code:"en",name:t("settings","Default language")}}),vt={name:"UserList",components:{Fragment:c.F,NcEmptyContent:u.A,NcIconSvgWrapper:A.A,NcLoadingIcon:g.A,NewUserModal:j,UserListFooter:J,UserListHeader:st,VirtualList:P},props:{selectedGroup:{type:String,default:null},externalActions:{type:Array,default:()=>[]}},setup:()=>({mdiAccountGroup:o.n7C,rowHeight:55,UserRow:Ct}),data:()=>({loading:{all:!1,groups:!1,users:!1},newUser:{...wt},isInitialLoad:!0,searchQuery:""}),computed:{showConfig(){return this.$store.getters.getShowConfig},settings(){return this.$store.getters.getServerData},style(){return{"--row-height":`${this.rowHeight}px`}},hasObfuscated(){return this.filteredUsers.some((t=>(0,At.HK)(t)))},users(){return this.$store.getters.getUsers},filteredUsers(){return"disabled"===this.selectedGroup?this.users.filter((t=>!1===t.enabled)):(this.settings.isAdmin,this.users.filter((t=>!1!==t.enabled)))},groups(){return this.$store.getters.getGroups.filter((t=>"disabled"!==t.id)).sort(((t,e)=>t.name.localeCompare(e.name)))},subAdminsGroups(){return this.$store.getters.getSubadminGroups},quotaOptions(){const t=this.settings.quotaPreset.reduce(((t,e)=>t.concat({id:e,label:e})),[]);return this.settings.allowUnlimitedQuota&&t.unshift(At.SA),t.unshift(At.MY),t},usersOffset(){return this.$store.getters.getUsersOffset},usersLimit(){return this.$store.getters.getUsersLimit},disabledUsersOffset(){return this.$store.getters.getDisabledUsersOffset},disabledUsersLimit(){return this.$store.getters.getDisabledUsersLimit},usersCount(){return this.users.length},languages(){return[{label:t("settings","Common languages"),languages:this.settings.languages.commonLanguages},{label:t("settings","Other languages"),languages:this.settings.languages.otherLanguages}]}},watch:{async selectedGroup(t){this.isInitialLoad=!0,await this.redirectIfDisabled(),this.$store.commit("resetUsers"),await this.loadUsers(),this.setNewUserDefaultGroup(t)},filteredUsers(t){_.A.debug(`${t.length} filtered user(s)`)}},async created(){await this.loadUsers()},async mounted(){this.settings.canChangePassword||OC.Notification.showTemporary(t("settings","Password change is disabled because the master key is disabled")),this.resetForm(),(0,d.B1)("nextcloud:unified-search.search",this.search),(0,d.B1)("nextcloud:unified-search.reset",this.resetSearch),await this.redirectIfDisabled()},beforeDestroy(){(0,d.al)("nextcloud:unified-search.search",this.search),(0,d.al)("nextcloud:unified-search.reset",this.resetSearch)},methods:{async handleScrollEnd(){await this.loadUsers()},async loadUsers(){this.loading.users=!0;try{"disabled"===this.selectedGroup?await this.$store.dispatch("getDisabledUsers",{offset:this.disabledUsersOffset,limit:this.disabledUsersLimit,search:this.searchQuery}):await this.$store.dispatch("getUsers",{offset:this.usersOffset,limit:this.usersLimit,group:this.selectedGroup,search:this.searchQuery}),_.A.debug(`${this.users.length} total user(s) loaded`)}catch(t){_.A.error("Failed to load accounts",{error:t}),(0,l.Qg)("Failed to load accounts")}this.loading.users=!1,this.isInitialLoad=!1},closeModal(){this.$store.commit("setShowConfig",{key:"showNewUserForm",value:!1})},async search(t){let{query:e}=t;this.searchQuery=e,this.$store.commit("resetUsers"),await this.loadUsers()},resetSearch(){this.search({query:""})},resetForm(){this.newUser=Object.assign({},wt),this.settings.defaultLanguage&&i.Ay.set(this.newUser.language,"code",this.settings.defaultLanguage),this.setNewUserDefaultGroup(this.selectedGroup),this.loading.all=!1},setNewUserDefaultGroup(t){if(t||this.settings.isAdmin||this.settings.isDelegatedAdmin||1===this.groups.length&&(t=this.groups[0].id),t){const e=this.groups.find((e=>e.id===t));if(e)return void(this.newUser.groups=[e])}this.newUser.groups=[]},async redirectIfDisabled(){const t=this.$store.getters.getGroups;"disabled"===this.selectedGroup&&t.findIndex((t=>"disabled"===t.id&&0===t.usercount))>-1&&(this.$router.push({name:"users"}),await this.loadUsers())}}};var ft=a(59645),bt={};bt.styleTagTransform=O(),bt.setAttributes=B(),bt.insert=N().bind(null,"head"),bt.domAPI=U(),bt.insertStyleElement=I(),k()(ft.A,bt),ft.A&&ft.A.locals&&ft.A.locals;const _t=(0,T.A)(vt,(function(){var t=this,e=t._self._c;return e("Fragment",[t.showConfig.showNewUserForm?e("NewUserModal",{attrs:{loading:t.loading,"new-user":t.newUser,"quota-options":t.quotaOptions},on:{reset:t.resetForm,close:t.closeModal}}):t._e(),t._v(" "),0===t.filteredUsers.length?e("NcEmptyContent",{staticClass:"empty",attrs:{name:t.isInitialLoad&&t.loading.users?null:t.t("settings","No accounts")},scopedSlots:t._u([{key:"icon",fn:function(){return[t.isInitialLoad&&t.loading.users?e("NcLoadingIcon",{attrs:{name:t.t("settings","Loading accounts …"),size:64}}):e("NcIconSvgWrapper",{attrs:{path:t.mdiAccountGroup,size:64}})]},proxy:!0}],null,!1,226056511)}):e("VirtualList",{style:t.style,attrs:{"data-component":t.UserRow,"data-sources":t.filteredUsers,"data-key":"id","data-cy-user-list":"","item-height":t.rowHeight,"extra-props":{users:t.users,settings:t.settings,hasObfuscated:t.hasObfuscated,groups:t.groups,subAdminsGroups:t.subAdminsGroups,quotaOptions:t.quotaOptions,languages:t.languages,externalActions:t.externalActions}},on:{"scroll-end":t.handleScrollEnd},scopedSlots:t._u([{key:"before",fn:function(){return[e("caption",{staticClass:"hidden-visually"},[t._v("\n\t\t\t\t"+t._s(t.t("settings","List of accounts. This list is not fully rendered for performance reasons. The accounts will be rendered as you navigate through the list."))+"\n\t\t\t")])]},proxy:!0},{key:"header",fn:function(){return[e("UserListHeader",{attrs:{"has-obfuscated":t.hasObfuscated}})]},proxy:!0},{key:"footer",fn:function(){return[e("UserListFooter",{attrs:{loading:t.loading.users,"filtered-users":t.filteredUsers}})]},proxy:!0}])})],1)}),[],!1,null,"0e745d5e",null).exports,yt=(0,i.pM)({name:"UserManagement",components:{NcAppContent:r.A,UserList:_t},data:()=>({externalActions:[]}),computed:{pageHeading(){return null===this.selectedGroupDecoded?(0,n.Tl)("settings","Active accounts"):{admin:(0,n.Tl)("settings","Admins"),disabled:(0,n.Tl)("settings","Disabled accounts")}[this.selectedGroupDecoded]??(0,n.Tl)("settings","Account group: {group}",{group:this.selectedGroupDecoded})},selectedGroup(){return this.$route.params.selectedGroup},selectedGroupDecoded(){return this.selectedGroup?decodeURIComponent(this.selectedGroup):null}},beforeMount(){this.$store.commit("initGroups",{groups:this.$store.getters.getServerData.groups,orderBy:this.$store.getters.getServerData.sortGroups,userCount:this.$store.getters.getServerData.userCount}),this.$store.dispatch("getPasswordPolicyMinLength")},created(){window.OCA=window.OCA??{},window.OCA.Settings=window.OCA.Settings??{},window.OCA.Settings.UserList=window.OCA.Settings.UserList??{},window.OCA.Settings.UserList.registerAction=this.registerAction},methods:{t:n.Tl,registerAction(t,e,s){return this.externalActions.push({icon:t,text:e,action:s}),this.externalActions}}});var xt=a(73599),kt={};kt.styleTagTransform=O(),kt.setAttributes=B(),kt.insert=N().bind(null,"head"),kt.domAPI=U(),kt.insertStyleElement=I(),k()(xt.A,kt),xt.A&&xt.A.locals&&xt.A.locals;const St=(0,T.A)(yt,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("NcAppContent",{attrs:{"page-heading":t.pageHeading}},[e("UserList",{attrs:{"selected-group":t.selectedGroupDecoded,"external-actions":t.externalActions}})],1)}),[],!1,null,"fc8857fc",null).exports},41170:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),n=s.n(a),i=s(76314),r=s.n(i)()(n());r.push([t.id,".account-management__system-list[data-v-413f2c9e]{height:auto !important;overflow:visible !important}.account-management__group-list[data-v-413f2c9e]{height:100% !important}.account-management__settings-toggle[data-v-413f2c9e]{margin-bottom:12px}","",{version:3,sources:["webpack://./apps/settings/src/views/UserManagementNavigation.vue"],names:[],mappings:"AAEC,kDACC,sBAAA,CACA,2BAAA,CAGD,iDACC,sBAAA,CAGD,sDACC,kBAAA",sourcesContent:["\n.account-management{\n\t&__system-list {\n\t\theight: auto !important;\n\t\toverflow: visible !important;\n\t}\n\n\t&__group-list {\n\t\theight: 100% !important;\n\t}\n\n\t&__settings-toggle {\n\t\tmargin-bottom: 12px;\n\t}\n}\n"],sourceRoot:""}]);const o=r},56467:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),n=s.n(a),i=s(76314),r=s.n(i)()(n());r.push([t.id,".user-list__row[data-v-07bad8e5]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.user-list__row[data-v-07bad8e5]:hover{background-color:var(--color-background-hover)}.user-list__row:hover .row__cell[data-v-07bad8e5]:not(.row__cell--actions){background-color:var(--color-background-hover)}.user-list__row .select--fill[data-v-07bad8e5]{max-width:calc(var(--cell-width-large) - 2*var(--cell-padding))}.row__cell[data-v-07bad8e5]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.row__cell strong[data-v-07bad8e5],.row__cell span[data-v-07bad8e5],.row__cell label[data-v-07bad8e5]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.row__cell--avatar[data-v-07bad8e5],.row__cell--displayname[data-v-07bad8e5]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.row__cell--avatar[data-v-07bad8e5]{left:0}.row__cell--displayname[data-v-07bad8e5]{left:var(--avatar-cell-width);border-right:1px solid var(--color-border)}}.row__cell--avatar[data-v-07bad8e5]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.row__cell--multiline span[data-v-07bad8e5]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.row__cell--multiline span[data-v-07bad8e5]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.row__cell--large[data-v-07bad8e5]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.row__cell--obfuscated[data-v-07bad8e5]{min-width:400px;width:400px}.row__cell--fill[data-v-07bad8e5]{min-width:var(--cell-width-large);width:100%}.row__cell--actions[data-v-07bad8e5]{position:sticky;right:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-left:1px solid var(--color-border)}.row__subtitle[data-v-07bad8e5]{color:var(--color-text-maxcontrast)}.row__cell[data-v-07bad8e5]{border-bottom:1px solid var(--color-border)}.row__cell[data-v-07bad8e5] .v-select.select{min-width:var(--cell-min-width)}.row__progress[data-v-07bad8e5]{margin-top:4px}.row__progress--warn[data-v-07bad8e5]::-moz-progress-bar{background:var(--color-warning) !important}.row__progress--warn[data-v-07bad8e5]::-webkit-progress-value{background:var(--color-warning) !important}","",{version:3,sources:["webpack://./apps/settings/src/components/Users/UserRow.vue","webpack://./apps/settings/src/components/Users/shared/styles.scss"],names:[],mappings:"AAGA,iCCoBC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CDtBA,uCACC,8CAAA,CAEA,2EACC,8CAAA,CAKF,+CACC,+DAAA,CCgBD,4BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,sGAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,6EAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,oCACC,MAAA,CAGD,yCACC,6BAAA,CACA,0CAAA,CAAA,CAIF,oCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,4CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,4CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,mCACC,iCAAA,CACA,6BAAA,CAGD,wCACC,eAAA,CACA,WAAA,CAID,kCACC,iCAAA,CACA,UAAA,CAGD,qCACC,eAAA,CACA,OAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,yCAAA,CAIF,gCACC,mCAAA,CDjGD,4BACC,2CAAA,CAGC,6CACC,+BAAA,CAKH,gCACC,cAAA,CAGC,yDACC,0CAAA,CAED,8DACC,0CAAA",sourcesContent:["\n@import './shared/styles.scss';\n\n.user-list__row {\n\t@include row;\n\n\t&:hover {\n\t\tbackground-color: var(--color-background-hover);\n\n\t\t.row__cell:not(.row__cell--actions) {\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t}\n\t}\n\n\t// Limit width of select in fill cell\n\t.select--fill {\n\t\tmax-width: calc(var(--cell-width-large) - (2 * var(--cell-padding)));\n\t}\n}\n\n.row {\n\t@include cell;\n\n\t&__cell {\n\t\tborder-bottom: 1px solid var(--color-border);\n\n\t\t:deep {\n\t\t\t.v-select.select {\n\t\t\t\tmin-width: var(--cell-min-width);\n\t\t\t}\n\t\t}\n\t}\n\n\t&__progress {\n\t\tmargin-top: 4px;\n\n\t\t&--warn {\n\t\t\t&::-moz-progress-bar {\n\t\t\t\tbackground: var(--color-warning) !important;\n\t\t\t}\n\t\t\t&::-webkit-progress-value {\n\t\t\t\tbackground: var(--color-warning) !important;\n\t\t\t}\n\t\t}\n\t}\n}\n","/**\n * @copyright 2023 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@mixin row {\n\tposition: relative;\n\tdisplay: flex;\n\tmin-width: 100%;\n\twidth: fit-content;\n\theight: var(--row-height);\n\tbackground-color: var(--color-main-background);\n}\n\n@mixin cell {\n\t&__cell {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\tpadding: 0 var(--cell-padding);\n\t\tmin-width: var(--cell-width);\n\t\twidth: var(--cell-width);\n\t\tcolor: var(--color-main-text);\n\n\t\tstrong,\n\t\tspan,\n\t\tlabel {\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow-wrap: anywhere;\n\t\t}\n\n\t\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\n\t\t\t&--avatar,\n\t\t\t&--displayname {\n\t\t\t\tposition: sticky;\n\t\t\t\tz-index: var(--sticky-column-z-index);\n\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t}\n\n\t\t\t&--avatar {\n\t\t\t\tleft: 0;\n\t\t\t}\n\n\t\t\t&--displayname {\n\t\t\t\tleft: var(--avatar-cell-width);\n\t\t\t\tborder-right: 1px solid var(--color-border);\n\t\t\t}\n\t\t}\n\n\t\t&--avatar {\n\t\t\tmin-width: var(--avatar-cell-width);\n\t\t\twidth: var(--avatar-cell-width);\n\t\t\talign-items: center;\n\t\t\tpadding: 0;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&--multiline {\n\t\t\tspan {\n\t\t\t\tline-height: 1.3em;\n\t\t\t\twhite-space: unset;\n\n\t\t\t\t@supports (-webkit-line-clamp: 2) {\n\t\t\t\t\tdisplay: -webkit-box;\n\t\t\t\t\t-webkit-line-clamp: 2;\n\t\t\t\t\t-webkit-box-orient: vertical;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&--large {\n\t\t\tmin-width: var(--cell-width-large);\n\t\t\twidth: var(--cell-width-large);\n\t\t}\n\n\t\t&--obfuscated {\n\t\t\tmin-width: 400px;\n\t\t\twidth: 400px;\n\t\t}\n\n\t\t// Fill remaining row space with cell\n\t\t&--fill {\n\t\t\tmin-width: var(--cell-width-large);\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t&--actions {\n\t\t\tposition: sticky;\n\t\t\tright: 0;\n\t\t\tz-index: var(--sticky-column-z-index);\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: row;\n\t\t\talign-items: center;\n\t\t\tmin-width: 110px;\n\t\t\twidth: 110px;\n\t\t\tbackground-color: var(--color-main-background);\n\t\t\tborder-left: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t&__subtitle {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n}\n"],sourceRoot:""}]);const o=r},59645:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),n=s.n(a),i=s(76314),r=s.n(i)()(n());r.push([t.id,".empty[data-v-0e745d5e] .icon-vue{width:64px;height:64px}.empty[data-v-0e745d5e] .icon-vue svg{max-width:64px;max-height:64px}","",{version:3,sources:["webpack://./apps/settings/src/components/UserList.vue"],names:[],mappings:"AAKE,kCACC,UAAA,CACA,WAAA,CAEA,sCACC,cAAA,CACA,eAAA",sourcesContent:["\n@import './Users/shared/styles.scss';\n\n.empty {\n\t:deep {\n\t\t.icon-vue {\n\t\t\twidth: 64px;\n\t\t\theight: 64px;\n\n\t\t\tsvg {\n\t\t\t\tmax-width: 64px;\n\t\t\t\tmax-height: 64px;\n\t\t\t}\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const o=r},73599:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),n=s.n(a),i=s(76314),r=s.n(i)()(n());r.push([t.id,".app-content[data-v-fc8857fc]{display:flex;overflow:hidden;flex-direction:column;max-height:100%}","",{version:3,sources:["webpack://./apps/settings/src/views/UserManagement.vue"],names:[],mappings:"AACA,8BAEC,YAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA",sourcesContent:["\n.app-content {\n\t// Virtual list needs to be full height and is scrollable\n\tdisplay: flex;\n\toverflow: hidden;\n\tflex-direction: column;\n\tmax-height: 100%;\n}\n"],sourceRoot:""}]);const o=r},73895:(e,s,a)=>{a.r(s),a.d(s,{default:()=>lt});var n=a(85471),i=a(9165),r=a(85168),o=a(53334),l=a(44131),d=a(11488),c=a(42530),u=a(73945),A=a(52439),g=a(27345),p=a(41907),h=a(32051),m=a(85947),C=a(6695),w=a(59892),v=a(54914),f=a(57505),b=a(38653),_=a(40083),y=a(43261),x=a(79759),k=a(2413);const S={name:"GroupListItem",components:{AccountGroup:y.A,Delete:x.A,Fragment:v.F,NcActionButton:f.A,NcActionInput:l.A,NcAppNavigationItem:A.A,NcButton:h.A,NcCounterBubble:m.A,NcModal:b.A,NcNoteCard:_.A,Pencil:k.A},props:{active:{type:Boolean,required:!0},count:{type:Number,default:null},id:{type:String,required:!0},name:{type:String,required:!0}},data:()=>({loadingRenameGroup:!1,openGroupMenu:!1,showRemoveGroupModal:!1}),computed:{settings(){return this.$store.getters.getServerData}},methods:{handleGroupMenuOpen(){this.openGroupMenu=!0},async renameGroup(t){if(""===t.trim())return;const e=this.$refs.displayNameInput.$el.querySelector('input[type="text"]').value;if(""!==e.trim())try{this.openGroupMenu=!1,this.loadingRenameGroup=!0,await this.$store.dispatch("renameGroup",{groupid:t.trim(),displayName:e.trim()}),this.loadingRenameGroup=!1}catch{this.openGroupMenu=!0,this.loadingRenameGroup=!1}},async removeGroup(){try{await this.$store.dispatch("removeGroup",this.id),this.showRemoveGroupModal=!1}catch(e){(0,r.Qg)(t("settings",'Failed to remove group "{group}"',{group:this.name}))}}}};var U=a(85072),G=a.n(U),N=a(97825),L=a.n(N),B=a(77659),D=a.n(B),I=a(55056),q=a.n(I),O=a(10540),M=a.n(O),$=a(41113),T=a.n($),P=a(96412),E={};E.styleTagTransform=T(),E.setAttributes=q(),E.insert=D().bind(null,"head"),E.domAPI=L(),E.insertStyleElement=M(),G()(P.A,E),P.A&&P.A.locals&&P.A.locals;var F=a(14486);const z=(0,F.A)(S,(function(){var t=this,e=t._self._c;return e("Fragment",[t.showRemoveGroupModal?e("NcModal",{on:{close:function(e){t.showRemoveGroupModal=!1}}},[e("div",{staticClass:"modal__content"},[e("h2",{staticClass:"modal__header"},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Please confirm the group removal"))+"\n\t\t\t")]),t._v(" "),e("NcNoteCard",{attrs:{type:"warning","show-alert":""}},[t._v("\n\t\t\t\t"+t._s(t.t("settings",'You are about to remove the group "{group}". The accounts will NOT be deleted.',{group:t.name}))+"\n\t\t\t")]),t._v(" "),e("div",{staticClass:"modal__button-row"},[e("NcButton",{attrs:{type:"secondary"},on:{click:function(e){t.showRemoveGroupModal=!1}}},[t._v("\n\t\t\t\t\t"+t._s(t.t("settings","Cancel"))+"\n\t\t\t\t")]),t._v(" "),e("NcButton",{attrs:{type:"primary"},on:{click:t.removeGroup}},[t._v("\n\t\t\t\t\t"+t._s(t.t("settings","Confirm"))+"\n\t\t\t\t")])],1)],1)]):t._e(),t._v(" "),e("NcAppNavigationItem",{key:t.id,attrs:{exact:!0,name:t.name,to:{name:"group",params:{selectedGroup:encodeURIComponent(t.id)}},loading:t.loadingRenameGroup,"menu-open":t.openGroupMenu},on:{"update:menuOpen":t.handleGroupMenuOpen},scopedSlots:t._u([{key:"icon",fn:function(){return[e("AccountGroup",{attrs:{size:20}})]},proxy:!0},{key:"counter",fn:function(){return[t.count?e("NcCounterBubble",{attrs:{type:t.active?"highlighted":void 0}},[t._v("\n\t\t\t\t"+t._s(t.count)+"\n\t\t\t")]):t._e()]},proxy:!0},{key:"actions",fn:function(){return["admin"!==t.id&&"disabled"!==t.id&&t.settings.isAdmin?e("NcActionInput",{ref:"displayNameInput",attrs:{"trailing-button-label":t.t("settings","Submit"),type:"text",value:t.name,label:t.t("settings","Rename group")},on:{submit:function(e){return t.renameGroup(t.id)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Pencil",{attrs:{size:20}})]},proxy:!0}],null,!1,580569589)}):t._e(),t._v(" "),"admin"!==t.id&&"disabled"!==t.id&&t.settings.isAdmin?e("NcActionButton",{on:{click:function(e){t.showRemoveGroupModal=!0}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Delete",{attrs:{size:20}})]},proxy:!0}],null,!1,2705356561)},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Remove group"))+"\n\t\t\t")]):t._e()]},proxy:!0}])})],1)}),[],!1,null,"17dd13c0",null).exports;var R=a(35810),Q=a(63814),W=a(65043),H=a(48766),Y=a(14727),j=a(32073),K=a(67607),V=a(15916),X=a(95668);const J={name:"UserSettingsDialog",components:{NcAppSettingsDialog:H.N,NcAppSettingsSection:Y.A,NcCheckboxRadioSwitch:j.A,NcNoteCard:_.A,NcSelect:K.A},props:{open:{type:Boolean,required:!0}},data:()=>({selectedQuota:!1,loadingSendMail:!1}),computed:{groupSorting:{get(){return this.$store.getters.getGroupSorting===V.q.GroupName?"name":"member-count"},set(t){this.$store.commit("setGroupSorting","name"===t?V.q.GroupName:V.q.UserCount)}},isGroupSortingEnforced(){return this.$store.getters.getServerData.forceSortGroupByName},isModalOpen:{get(){return this.open},set(t){this.$emit("update:open",t)}},showConfig(){return this.$store.getters.getShowConfig},settings(){return this.$store.getters.getServerData},showLanguages:{get(){return this.showConfig.showLanguages},set(t){this.setShowConfig("showLanguages",t)}},showLastLogin:{get(){return this.showConfig.showLastLogin},set(t){this.setShowConfig("showLastLogin",t)}},showUserBackend:{get(){return this.showConfig.showUserBackend},set(t){this.setShowConfig("showUserBackend",t)}},showStoragePath:{get(){return this.showConfig.showStoragePath},set(t){this.setShowConfig("showStoragePath",t)}},quotaOptions(){const t=this.settings.quotaPreset.reduce(((t,e)=>t.concat({id:e,label:e})),[]);return this.settings.allowUnlimitedQuota&&t.unshift(X.SA),t},defaultQuota:{get(){return!1!==this.selectedQuota?this.selectedQuota:this.settings.defaultQuota!==X.SA.id&&OC.Util.computerFileSize(this.settings.defaultQuota)>=0?{id:this.settings.defaultQuota,label:this.settings.defaultQuota}:X.SA},set(t){this.selectedQuota=t}},sendWelcomeMail:{get(){return this.settings.newUserSendEmail},async set(t){try{this.loadingSendMail=!0,this.$store.commit("setServerData",{...this.settings,newUserSendEmail:t}),await W.Ay.post((0,Q.Jv)("/settings/users/preferences/newUser.sendEmail"),{value:t?"yes":"no"})}catch(t){console.error("could not update newUser.sendEmail preference: "+t.message,t)}finally{this.loadingSendMail=!1}}}},methods:{setShowConfig(t,e){this.$store.commit("setShowConfig",{key:t,value:e})},validateQuota:t=>("object"==typeof t&&(t=t?.id||t.label),null===(0,R.lT)(t)?X.SA:{id:t=(0,R.v7)((0,R.lT)(t)),label:t}),setDefaultQuota(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"none";"none"===t&&(t=X.SA),this.$store.dispatch("setAppConfig",{app:"files",key:"default_quota",value:t.id?t.id:t}).then((()=>{"object"!=typeof t&&(t={id:t,label:t}),this.defaultQuota=t}))}}};var Z=a(26893),tt={};tt.styleTagTransform=T(),tt.setAttributes=q(),tt.insert=D().bind(null,"head"),tt.domAPI=L(),tt.insertStyleElement=M(),G()(Z.A,tt),Z.A&&Z.A.locals&&Z.A.locals;const et=(0,F.A)(J,(function(){var t=this,e=t._self._c;return e("NcAppSettingsDialog",{attrs:{open:t.isModalOpen,"show-navigation":!0,name:t.t("settings","Account management settings")},on:{"update:open":function(e){t.isModalOpen=e}}},[e("NcAppSettingsSection",{attrs:{id:"visibility-settings",name:t.t("settings","Visibility")}},[e("NcCheckboxRadioSwitch",{attrs:{type:"switch","data-test":"showLanguages",checked:t.showLanguages},on:{"update:checked":function(e){t.showLanguages=e}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Show language"))+"\n\t\t")]),t._v(" "),e("NcCheckboxRadioSwitch",{attrs:{type:"switch","data-test":"showUserBackend",checked:t.showUserBackend},on:{"update:checked":function(e){t.showUserBackend=e}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Show account backend"))+"\n\t\t")]),t._v(" "),e("NcCheckboxRadioSwitch",{attrs:{type:"switch","data-test":"showStoragePath",checked:t.showStoragePath},on:{"update:checked":function(e){t.showStoragePath=e}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Show storage path"))+"\n\t\t")]),t._v(" "),e("NcCheckboxRadioSwitch",{attrs:{type:"switch","data-test":"showLastLogin",checked:t.showLastLogin},on:{"update:checked":function(e){t.showLastLogin=e}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Show last login"))+"\n\t\t")])],1),t._v(" "),e("NcAppSettingsSection",{attrs:{id:"groups-sorting",name:t.t("settings","Sorting")}},[t.isGroupSortingEnforced?e("NcNoteCard",{attrs:{type:"warning"}},[t._v("\n\t\t\t"+t._s(t.t("settings","The system config enforces sorting the groups by name. This also disables showing the member count."))+"\n\t\t")]):t._e(),t._v(" "),e("fieldset",[e("legend",[t._v(t._s(t.t("settings","Group list sorting")))]),t._v(" "),e("NcCheckboxRadioSwitch",{attrs:{type:"radio",checked:t.groupSorting,"data-test":"sortGroupsByMemberCount",disabled:t.isGroupSortingEnforced,name:"group-sorting-mode",value:"member-count"},on:{"update:checked":function(e){t.groupSorting=e}}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","By member count"))+"\n\t\t\t")]),t._v(" "),e("NcCheckboxRadioSwitch",{attrs:{type:"radio",checked:t.groupSorting,"data-test":"sortGroupsByName",disabled:t.isGroupSortingEnforced,name:"group-sorting-mode",value:"name"},on:{"update:checked":function(e){t.groupSorting=e}}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","By name"))+"\n\t\t\t")])],1)],1),t._v(" "),e("NcAppSettingsSection",{attrs:{id:"email-settings",name:t.t("settings","Send email")}},[e("NcCheckboxRadioSwitch",{attrs:{type:"switch","data-test":"sendWelcomeMail",checked:t.sendWelcomeMail,disabled:t.loadingSendMail},on:{"update:checked":function(e){t.sendWelcomeMail=e}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Send welcome email to new accounts"))+"\n\t\t")])],1),t._v(" "),e("NcAppSettingsSection",{attrs:{id:"default-settings",name:t.t("settings","Defaults")}},[e("NcSelect",{attrs:{"input-label":t.t("settings","Default quota"),placement:"top",taggable:!0,options:t.quotaOptions,"create-option":t.validateQuota,placeholder:t.t("settings","Select default quota"),clearable:!1},on:{"option:selected":t.setDefaultQuota},model:{value:t.defaultQuota,callback:function(e){t.defaultQuota=e},expression:"defaultQuota"}})],1)],1)}),[],!1,null,"ab9299ba",null).exports;var st=a(31755),at=a(24387);function nt(t){return void 0===t?null:{id:t.id,title:t.name,usercount:t.usercount,count:Math.max(0,t.usercount-t.disabled)}}const it=(0,n.pM)({__name:"UserManagementNavigation",setup(t){const e=(0,at.lq)(),s=(0,at.rd)(),a=(0,st.P)(),v=(0,n.KR)(!1),f=(0,n.EW)((()=>e.params?.selectedGroup)),b=(0,n.EW)((()=>f.value?decodeURIComponent(f.value):null)),_=(0,n.EW)((()=>a.getters.getUserCount)),y=(0,n.EW)((()=>a.getters.getSortedGroups)),{adminGroup:x,disabledGroup:k,userGroups:S}=(t=>{const e=(0,n.EW)((()=>t.value.filter((t=>"disabled"!==t.id&&"admin"!==t.id)).map((t=>nt(t))).filter((t=>null!==t))));return{adminGroup:(0,n.EW)((()=>nt(t.value.find((t=>"admin"===t.id))))),disabledGroup:(0,n.EW)((()=>nt(t.value.find((t=>"disabled"===t.id))))),userGroups:e}})(y),U=(0,n.EW)((()=>a.getters.getServerData)),G=(0,n.EW)((()=>U.value.isAdmin||U.value.isDelegatedAdmin)),N=(0,n.KR)(!1),L=(0,n.KR)(!1),B=(0,n.KR)(!1),D=(0,n.KR)("");return{__sfc:!0,route:e,router:s,store:a,isDialogOpen:v,selectedGroup:f,selectedGroupDecoded:b,userCount:_,groups:y,adminGroup:x,disabledGroup:k,userGroups:S,settings:U,isAdminOrDelegatedAdmin:G,isAddGroupOpen:N,loadingAddGroup:L,hasAddGroupError:B,newGroupName:D,createGroup:async function(){B.value=!1;const t=D.value.trim();if(""!==t){N.value=!1,L.value=!0;try{await a.dispatch("addGroup",t),await s.push({name:"group",params:{selectedGroup:encodeURIComponent(t)}}),D.value=""}catch{(0,r.Qg)((0,o.Tl)("settings","Failed to create group"))}L.value=!1}else B.value=!0},showNewUserMenu:function(){a.commit("setShowConfig",{key:"showNewUserForm",value:!0})},mdiAccount:i.Gbn,mdiAccountGroup:i.n7C,mdiAccountOff:i.lBC,mdiCog:i.CZ3,mdiPlus:i.biz,mdiShieldAccount:i.Jey,t:o.Tl,NcActionInput:l.A,NcActionText:d.A,NcAppNavigation:c.A,NcAppNavigationCaption:u.N,NcAppNavigationItem:A.A,NcAppNavigationList:g.A,NcAppNavigationNew:p.A,NcButton:h.A,NcCounterBubble:m.A,NcIconSvgWrapper:C.A,NcLoadingIcon:w.A,GroupListItem:z,UserSettingsDialog:et}}});var rt=a(41170),ot={};ot.styleTagTransform=T(),ot.setAttributes=q(),ot.insert=D().bind(null,"head"),ot.domAPI=L(),ot.insertStyleElement=M(),G()(rt.A,ot),rt.A&&rt.A.locals&&rt.A.locals;const lt=(0,F.A)(it,(function(){var t=this,e=t._self._c,s=t._self._setupProxy;return e(s.NcAppNavigation,{attrs:{"aria-label":s.t("settings","Account management")},scopedSlots:t._u([{key:"footer",fn:function(){return[e(s.NcButton,{staticClass:"account-management__settings-toggle",attrs:{type:"tertiary"},on:{click:function(t){s.isDialogOpen=!0}},scopedSlots:t._u([{key:"icon",fn:function(){return[e(s.NcIconSvgWrapper,{attrs:{path:s.mdiCog}})]},proxy:!0}])},[t._v("\n\t\t\t"+t._s(s.t("settings","Account management settings"))+"\n\t\t")]),t._v(" "),e(s.UserSettingsDialog,{attrs:{open:s.isDialogOpen},on:{"update:open":function(t){s.isDialogOpen=t}}})]},proxy:!0}])},[e(s.NcAppNavigationNew,{attrs:{"button-id":"new-user-button",text:s.t("settings","New account")},on:{click:s.showNewUserMenu,keyup:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:s.showNewUserMenu.apply(null,arguments)},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"space",32,e.key,[" ","Spacebar"])?null:s.showNewUserMenu.apply(null,arguments)}]},scopedSlots:t._u([{key:"icon",fn:function(){return[e(s.NcIconSvgWrapper,{attrs:{path:s.mdiPlus}})]},proxy:!0}])}),t._v(" "),e(s.NcAppNavigationList,{staticClass:"account-management__system-list",attrs:{"data-cy-users-settings-navigation-groups":"system"}},[e(s.NcAppNavigationItem,{attrs:{id:"everyone",exact:!0,name:s.t("settings","Active accounts"),to:{name:"users"}},scopedSlots:t._u([{key:"icon",fn:function(){return[e(s.NcIconSvgWrapper,{attrs:{path:s.mdiAccount}})]},proxy:!0},{key:"counter",fn:function(){return[s.userCount?e(s.NcCounterBubble,{attrs:{type:s.selectedGroupDecoded?void 0:"highlighted"}},[t._v("\n\t\t\t\t\t"+t._s(s.userCount)+"\n\t\t\t\t")]):t._e()]},proxy:!0}])}),t._v(" "),s.settings.isAdmin?e(s.NcAppNavigationItem,{attrs:{id:"admin",exact:!0,name:s.t("settings","Admins"),to:{name:"group",params:{selectedGroup:"admin"}}},scopedSlots:t._u([{key:"icon",fn:function(){return[e(s.NcIconSvgWrapper,{attrs:{path:s.mdiShieldAccount}})]},proxy:!0},{key:"counter",fn:function(){return[s.adminGroup&&s.adminGroup.count>0?e(s.NcCounterBubble,{attrs:{type:"admin"===s.selectedGroupDecoded?"highlighted":void 0}},[t._v("\n\t\t\t\t\t"+t._s(s.adminGroup.count)+"\n\t\t\t\t")]):t._e()]},proxy:!0}],null,!1,2218088905)}):t._e(),t._v(" "),s.disabledGroup&&(s.disabledGroup.usercount>0||-1===s.disabledGroup.usercount)?e(s.NcAppNavigationItem,{attrs:{id:"disabled",exact:!0,name:s.t("settings","Disabled accounts"),to:{name:"group",params:{selectedGroup:"disabled"}}},scopedSlots:t._u([{key:"icon",fn:function(){return[e(s.NcIconSvgWrapper,{attrs:{path:s.mdiAccountOff}})]},proxy:!0},s.disabledGroup.usercount>0?{key:"counter",fn:function(){return[e(s.NcCounterBubble,{attrs:{type:"disabled"===s.selectedGroupDecoded?"highlighted":void 0}},[t._v("\n\t\t\t\t\t"+t._s(s.disabledGroup.usercount)+"\n\t\t\t\t")])]},proxy:!0}:null],null,!0)}):t._e()],1),t._v(" "),e(s.NcAppNavigationCaption,{attrs:{name:s.t("settings","Groups"),disabled:s.loadingAddGroup,"aria-label":s.loadingAddGroup?s.t("settings","Creating group…"):s.t("settings","Create group"),"force-menu":"","is-heading":"",open:s.isAddGroupOpen},on:{"update:open":function(t){s.isAddGroupOpen=t}},scopedSlots:t._u([s.isAdminOrDelegatedAdmin?{key:"actionsTriggerIcon",fn:function(){return[s.loadingAddGroup?e(s.NcLoadingIcon):e(s.NcIconSvgWrapper,{attrs:{path:s.mdiPlus}})]},proxy:!0}:null,s.isAdminOrDelegatedAdmin?{key:"actions",fn:function(){return[e(s.NcActionText,{scopedSlots:t._u([{key:"icon",fn:function(){return[e(s.NcIconSvgWrapper,{attrs:{path:s.mdiAccountGroup}})]},proxy:!0}],null,!1,3607647275)},[t._v("\n\t\t\t\t"+t._s(s.t("settings","Create group"))+"\n\t\t\t")]),t._v(" "),e(s.NcActionInput,{attrs:{label:s.t("settings","Group name"),"data-cy-users-settings-new-group-name":"","label-outside":!1,disabled:s.loadingAddGroup,value:s.newGroupName,error:s.hasAddGroupError,"helper-text":s.hasAddGroupError?s.t("settings","Please enter a valid group name"):""},on:{"update:value":function(t){s.newGroupName=t},submit:s.createGroup}})]},proxy:!0}:null],null,!0)}),t._v(" "),e(s.NcAppNavigationList,{staticClass:"account-management__group-list",attrs:{"data-cy-users-settings-navigation-groups":"custom"}},t._l(s.userGroups,(function(t){return e(s.GroupListItem,{key:t.id,attrs:{id:t.id,active:s.selectedGroupDecoded===t.id,name:t.title,count:t.count}})})),1)],1)}),[],!1,null,"413f2c9e",null).exports},77024:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),n=s.n(a),i=s(76314),r=s.n(i)()(n());r.push([t.id,".header[data-v-69afa821]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background);border-bottom:1px solid var(--color-border)}.header__cell[data-v-69afa821]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.header__cell strong[data-v-69afa821],.header__cell span[data-v-69afa821],.header__cell label[data-v-69afa821]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.header__cell--avatar[data-v-69afa821],.header__cell--displayname[data-v-69afa821]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.header__cell--avatar[data-v-69afa821]{left:0}.header__cell--displayname[data-v-69afa821]{left:var(--avatar-cell-width);border-right:1px solid var(--color-border)}}.header__cell--avatar[data-v-69afa821]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.header__cell--multiline span[data-v-69afa821]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.header__cell--multiline span[data-v-69afa821]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.header__cell--large[data-v-69afa821]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.header__cell--obfuscated[data-v-69afa821]{min-width:400px;width:400px}.header__cell--fill[data-v-69afa821]{min-width:var(--cell-width-large);width:100%}.header__cell--actions[data-v-69afa821]{position:sticky;right:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-left:1px solid var(--color-border)}.header__subtitle[data-v-69afa821]{color:var(--color-text-maxcontrast)}","",{version:3,sources:["webpack://./apps/settings/src/components/Users/UserListHeader.vue","webpack://./apps/settings/src/components/Users/shared/styles.scss"],names:[],mappings:"AAGA,yBCoBC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CDrBA,2CAAA,CCyBA,+BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,+GAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,mFAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,uCACC,MAAA,CAGD,4CACC,6BAAA,CACA,0CAAA,CAAA,CAIF,uCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,+CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,+CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,sCACC,iCAAA,CACA,6BAAA,CAGD,2CACC,eAAA,CACA,WAAA,CAID,qCACC,iCAAA,CACA,UAAA,CAGD,wCACC,eAAA,CACA,OAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,yCAAA,CAIF,mCACC,mCAAA",sourcesContent:["\n@import './shared/styles.scss';\n\n.header {\n\t@include row;\n\t@include cell;\n\n\tborder-bottom: 1px solid var(--color-border);\n}\n","/**\n * @copyright 2023 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@mixin row {\n\tposition: relative;\n\tdisplay: flex;\n\tmin-width: 100%;\n\twidth: fit-content;\n\theight: var(--row-height);\n\tbackground-color: var(--color-main-background);\n}\n\n@mixin cell {\n\t&__cell {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\tpadding: 0 var(--cell-padding);\n\t\tmin-width: var(--cell-width);\n\t\twidth: var(--cell-width);\n\t\tcolor: var(--color-main-text);\n\n\t\tstrong,\n\t\tspan,\n\t\tlabel {\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow-wrap: anywhere;\n\t\t}\n\n\t\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\n\t\t\t&--avatar,\n\t\t\t&--displayname {\n\t\t\t\tposition: sticky;\n\t\t\t\tz-index: var(--sticky-column-z-index);\n\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t}\n\n\t\t\t&--avatar {\n\t\t\t\tleft: 0;\n\t\t\t}\n\n\t\t\t&--displayname {\n\t\t\t\tleft: var(--avatar-cell-width);\n\t\t\t\tborder-right: 1px solid var(--color-border);\n\t\t\t}\n\t\t}\n\n\t\t&--avatar {\n\t\t\tmin-width: var(--avatar-cell-width);\n\t\t\twidth: var(--avatar-cell-width);\n\t\t\talign-items: center;\n\t\t\tpadding: 0;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&--multiline {\n\t\t\tspan {\n\t\t\t\tline-height: 1.3em;\n\t\t\t\twhite-space: unset;\n\n\t\t\t\t@supports (-webkit-line-clamp: 2) {\n\t\t\t\t\tdisplay: -webkit-box;\n\t\t\t\t\t-webkit-line-clamp: 2;\n\t\t\t\t\t-webkit-box-orient: vertical;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&--large {\n\t\t\tmin-width: var(--cell-width-large);\n\t\t\twidth: var(--cell-width-large);\n\t\t}\n\n\t\t&--obfuscated {\n\t\t\tmin-width: 400px;\n\t\t\twidth: 400px;\n\t\t}\n\n\t\t// Fill remaining row space with cell\n\t\t&--fill {\n\t\t\tmin-width: var(--cell-width-large);\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t&--actions {\n\t\t\tposition: sticky;\n\t\t\tright: 0;\n\t\t\tz-index: var(--sticky-column-z-index);\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: row;\n\t\t\talign-items: center;\n\t\t\tmin-width: 110px;\n\t\t\twidth: 110px;\n\t\t\tbackground-color: var(--color-main-background);\n\t\t\tborder-left: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t&__subtitle {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n}\n"],sourceRoot:""}]);const o=r},79722:t=>{t.exports="data:image/svg+xml,%3c%21--%20-%20SPDX-FileCopyrightText:%202020%20Google%20Inc.%20-%20SPDX-License-Identifier:%20Apache-2.0%20--%3e%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M5.6%207.4L7%206l6%206-6%206-1.4-1.4%204.6-4.6-4.6-4.6m6%200L13%206l6%206-6%206-1.4-1.4%204.6-4.6-4.6-4.6z%27/%3e%3c/svg%3e"},86886:t=>{t.exports="data:image/svg+xml,%3c%21--%20-%20SPDX-FileCopyrightText:%202020%20Google%20Inc.%20-%20SPDX-License-Identifier:%20Apache-2.0%20--%3e%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M8.6%2016.6l4.6-4.6-4.6-4.6L10%206l6%206-6%206-1.4-1.4z%27/%3e%3c/svg%3e"},95668:(e,s,a)=>{a.d(s,{HK:()=>r,MY:()=>i,SA:()=>n});const n={id:"none",label:t("settings","Unlimited")},i={id:"default",label:t("settings","Default quota")},r=t=>{const e=Object.keys(t);return 1===e.length&&"id"===e.at(0)}},96412:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),n=s.n(a),i=s(76314),r=s.n(i)()(n());r.push([t.id,".modal__header[data-v-17dd13c0]{margin:0}.modal__content[data-v-17dd13c0]{display:flex;flex-direction:column;align-items:center;padding:20px;gap:4px 0}.modal__button-row[data-v-17dd13c0]{display:flex;width:100%;justify-content:space-between}","",{version:3,sources:["webpack://./apps/settings/src/components/GroupListItem.vue"],names:[],mappings:"AAEC,gCACC,QAAA,CAGD,iCACC,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,YAAA,CACA,SAAA,CAGD,oCACC,YAAA,CACA,UAAA,CACA,6BAAA",sourcesContent:["\n.modal {\n\t&__header {\n\t\tmargin: 0;\n\t}\n\n\t&__content {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\tpadding: 20px;\n\t\tgap: 4px 0;\n\t}\n\n\t&__button-row {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\tjustify-content: space-between;\n\t}\n}\n"],sourceRoot:""}]);const o=r}}]); -//# sourceMappingURL=settings-users-3239.js.map?v=c885b5e954837f484701 \ No newline at end of file +"use strict";(self.webpackChunknextcloud=self.webpackChunknextcloud||[]).push([[3239],{1216:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),n=s.n(a),i=s(76314),r=s.n(i)()(n());r.push([t.id,".user-list[data-v-de721376]{--avatar-cell-width: 48px;--cell-padding: 7px;--cell-width: 200px;--cell-width-large: 300px;--cell-min-width: calc(var(--cell-width) - (2 * var(--cell-padding)));--sticky-column-z-index: calc(var(--vs-dropdown-z-index) + 1);display:block;overflow:auto;height:100%}.user-list__header[data-v-de721376],.user-list__footer[data-v-de721376]{position:sticky;display:block}.user-list__header[data-v-de721376]{top:0;z-index:calc(var(--sticky-column-z-index) + 1)}.user-list__footer[data-v-de721376]{left:0}.user-list__body[data-v-de721376]{display:flex;flex-direction:column;width:100%}","",{version:3,sources:["webpack://./apps/settings/src/components/Users/VirtualList.vue"],names:[],mappings:"AACA,4BACC,yBAAA,CACA,mBAAA,CACA,mBAAA,CACA,yBAAA,CACA,qEAAA,CACA,6DAAA,CAGA,aAAA,CACA,aAAA,CACA,WAAA,CAEA,wEAEC,eAAA,CAEA,aAAA,CAGD,oCACC,KAAA,CACA,8CAAA,CAGD,oCACC,MAAA,CAGD,kCACC,YAAA,CACA,qBAAA,CACA,UAAA",sourcesContent:["\n.user-list {\n\t--avatar-cell-width: 48px;\n\t--cell-padding: 7px;\n\t--cell-width: 200px;\n\t--cell-width-large: 300px;\n\t--cell-min-width: calc(var(--cell-width) - (2 * var(--cell-padding)));\n\t--sticky-column-z-index: calc(var(--vs-dropdown-z-index) + 1); // Keep the sticky column on top of the select dropdown\n\n\t// Necessary for virtual scroll optimized rendering\n\tdisplay: block;\n\toverflow: auto;\n\theight: 100%;\n\n\t&__header,\n\t&__footer {\n\t\tposition: sticky;\n\t\t// Fix sticky positioning in Firefox\n\t\tdisplay: block;\n\t}\n\n\t&__header {\n\t\ttop: 0;\n\t\tz-index: calc(var(--sticky-column-z-index) + 1);\n\t}\n\n\t&__footer {\n\t\tleft: 0;\n\t}\n\n\t&__body {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\twidth: 100%;\n\t}\n}\n"],sourceRoot:""}]);const o=r},9499:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),n=s.n(a),i=s(76314),r=s.n(i)()(n());r.push([t.id,".modal__form[data-v-2fe7d69f]{display:flex;flex-direction:column;align-items:center;padding:20px;gap:4px 0}.modal__item[data-v-2fe7d69f]{width:100%}.modal__item[data-v-2fe7d69f]:not(:focus):not(:active){border-color:var(--color-border-dark)}.modal__hint[data-v-2fe7d69f]{color:var(--color-text-maxcontrast);margin-top:8px;align-self:flex-start}.modal__label[data-v-2fe7d69f]{display:block;padding:4px 0}.modal__select[data-v-2fe7d69f]{width:100%}.modal__submit[data-v-2fe7d69f]{margin-top:20px}","",{version:3,sources:["webpack://./apps/settings/src/components/Users/NewUserModal.vue"],names:[],mappings:"AAEC,8BACC,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,YAAA,CACA,SAAA,CAGD,8BACC,UAAA,CAEA,uDACC,qCAAA,CAIF,8BACC,mCAAA,CACA,cAAA,CACA,qBAAA,CAGD,+BACC,aAAA,CACA,aAAA,CAGD,gCACC,UAAA,CAGD,gCACC,eAAA",sourcesContent:["\n.modal {\n\t&__form {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\tpadding: 20px;\n\t\tgap: 4px 0;\n\t}\n\n\t&__item {\n\t\twidth: 100%;\n\n\t\t&:not(:focus):not(:active) {\n\t\t\tborder-color: var(--color-border-dark);\n\t\t}\n\t}\n\n\t&__hint {\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tmargin-top: 8px;\n\t\talign-self: flex-start;\n\t}\n\n\t&__label {\n\t\tdisplay: block;\n\t\tpadding: 4px 0;\n\t}\n\n\t&__select {\n\t\twidth: 100%;\n\t}\n\n\t&__submit {\n\t\tmargin-top: 20px;\n\t}\n}\n"],sourceRoot:""}]);const o=r},12778:(e,s,a)=>{a.r(s),a.d(s,{default:()=>St});var n=a(53334),i=a(85471),r=a(18195),o=a(9165),l=a(85168),d=a(61338),c=a(54914),u=a(28326),A=a(6695),g=a(59892);i.Ay.util.warn,a(13073);var p=a(59271);function h(t){var e;const s=(0,p.BA)(t);return null!=(e=null==s?void 0:s.$el)?e:s}const m=p.oc?window:void 0;function C(t){const e=function(){const t=(0,i.KR)(!1);return(0,i.nI)()&&(0,i.sV)((()=>{t.value=!0}),void 0),t}();return(0,i.EW)((()=>(e.value,Boolean(t()))))}function w(t,e={}){const{window:s=m,scrollTarget:a,threshold:n=0}=e,r=(0,i.KR)(!1);return function(t,e,s={}){const{root:a,rootMargin:n="0px",threshold:r=.1,window:o=m,immediate:l=!0}=s,d=C((()=>o&&"IntersectionObserver"in o)),c=(0,i.EW)((()=>{const e=(0,p.BA)(t);return(Array.isArray(e)?e:[e]).map(h).filter(p.d6)}));let u=p.lQ;const A=(0,i.KR)(l),g=d.value?(0,i.wB)((()=>[c.value,h(a),A.value]),(([t,s])=>{if(u(),!A.value)return;if(!t.length)return;const a=new IntersectionObserver(e,{root:h(s),rootMargin:n,threshold:r});t.forEach((t=>t&&a.observe(t))),u=()=>{a.disconnect(),u=p.lQ}}),{immediate:l,flush:"post"}):p.lQ,w=()=>{u(),g(),A.value=!1};(0,p.Uo)(w)}(t,(t=>{let e=r.value,s=0;for(const a of t)a.time>=s&&(s=a.time,e=a.isIntersecting);r.value=e}),{root:a,window:s,threshold:n}),r}p.C$.mounted,p.C$.unmounted,p.C$.mounted,p.C$.mounted,"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self,p.C$.mounted,p.C$.mounted;const v={[p.C$.mounted](t,e){if("function"==typeof e.value){const s=e.value,a=w(t);(0,i.wB)(a,(t=>s(t)),{immediate:!0})}else{const[s,a]=e.value,n=w(t,a);(0,i.wB)(n,(t=>s(t)),{immediate:!0})}}};p.C$.mounted,p.C$.mounted;Boolean,Boolean,Boolean,Boolean,p.C$.mounted;(0,i.KR)(!1);var f=a(17334),_=a.n(f),b=a(36620);i.Ay.directive("elementVisibility",v);const y=i.Ay.extend({name:"VirtualList",props:{dataComponent:{type:[Object,Function],required:!0},dataKey:{type:String,required:!0},dataSources:{type:Array,required:!0},itemHeight:{type:Number,required:!0},extraProps:{type:Object,default:()=>({})}},data:()=>({bufferItems:3,index:0,headerHeight:0,tableHeight:0,resizeObserver:null}),computed:{startIndex(){return Math.max(0,this.index-3)},shownItems(){return Math.ceil((this.tableHeight-this.headerHeight)/this.itemHeight)+6},renderedItems(){return this.dataSources.slice(this.startIndex,this.startIndex+this.shownItems)},tbodyStyle(){const t=this.startIndex+this.shownItems>this.dataSources.length,e=this.dataSources.length-this.startIndex-this.shownItems,s=Math.min(this.dataSources.length-this.startIndex,e);return{paddingTop:this.startIndex*this.itemHeight+"px",paddingBottom:t?0:s*this.itemHeight+"px"}}},mounted(){const t=this.$el,e=this.$refs?.tfoot,s=this.$refs?.thead;this.resizeObserver=new ResizeObserver(_()((()=>{this.headerHeight=s?.clientHeight??0,this.tableHeight=t?.clientHeight??0,b.A.debug("VirtualList resizeObserver updated"),this.onScroll()}),100,!1)),this.resizeObserver.observe(t),this.resizeObserver.observe(e),this.resizeObserver.observe(s),this.$el.addEventListener("scroll",this.onScroll)},beforeDestroy(){this.resizeObserver&&this.resizeObserver.disconnect()},methods:{handleFooterVisibility(t){t&&this.$emit("scroll-end")},onScroll(){this.index=Math.max(0,Math.round(this.$el.scrollTop/this.itemHeight))}}});var x=a(85072),k=a.n(x),S=a(97825),U=a.n(S),G=a(77659),N=a.n(G),L=a(55056),B=a.n(L),D=a(10540),I=a.n(D),q=a(41113),O=a.n(q),M=a(1216),$={};$.styleTagTransform=O(),$.setAttributes=B(),$.insert=N().bind(null,"head"),$.domAPI=U(),$.insertStyleElement=I(),k()(M.A,$),M.A&&M.A.locals&&M.A.locals;var T=a(14486);const P=(0,T.A)(y,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("table",{staticClass:"user-list"},[t._t("before"),t._v(" "),e("thead",{ref:"thead",staticClass:"user-list__header",attrs:{role:"rowgroup"}},[t._t("header")],2),t._v(" "),e("tbody",{staticClass:"user-list__body",style:t.tbodyStyle},t._l(t.renderedItems,(function(s,a){return e(t.dataComponent,t._b({key:s[t.dataKey],tag:"component",attrs:{user:s,visible:(a>=t.bufferItems||t.index<=t.bufferItems)&&a({possibleManagers:[],managerLabel:t("settings","Set user manager")}),computed:{showConfig(){return this.$store.getters.getShowConfig},settings(){return this.$store.getters.getServerData},usernameLabel(){return this.settings.newUserGenerateUserID?t("settings","Username will be autogenerated"):t("settings","Username (required)")},minPasswordLength(){return this.$store.getters.getPasswordPolicyMinLength},groups(){return this.$store.getters.getGroups.filter((t=>"disabled"!==t.id)).sort(((t,e)=>t.name.localeCompare(e.name)))},subAdminsGroups(){return this.$store.getters.getSubadminGroups},canAddGroups(){return this.groups.map((t=>((t=Object.assign({},t)).$isDisabled=!1===t.canAdd,t)))},languages(){return[{name:t("settings","Common languages"),languages:this.settings.languages.commonLanguages},...this.settings.languages.commonLanguages,{name:t("settings","Other languages"),languages:this.settings.languages.otherLanguages},...this.settings.languages.otherLanguages]}},async beforeMount(){await this.searchUserManager()},methods:{async createUser(){this.loading.all=!0;try{await this.$store.dispatch("addUser",{userid:this.newUser.id,password:this.newUser.password,displayName:this.newUser.displayName,email:this.newUser.mailAddress,groups:this.newUser.groups.map((t=>t.id)),subadmin:this.newUser.subAdminsGroups.map((t=>t.id)),quota:this.newUser.quota.id,language:this.newUser.language.code,manager:this.newUser.manager.id}),this.$emit("reset"),this.$refs.username?.$refs?.inputField?.$refs?.input?.focus?.(),this.$emit("close")}catch(t){if(this.loading.all=!1,t.response&&t.response.data&&t.response.data.ocs&&t.response.data.ocs.meta){const e=t.response.data.ocs.meta.statuscode;102===e?this.$refs.username?.$refs?.inputField?.$refs?.input?.focus?.():107===e&&this.$refs.password?.$refs?.inputField?.$refs?.input?.focus?.()}}},handleGroupInput(t){this.newUser.groups=t.filter((t=>Boolean(t.id)))},async createGroup(t){let{name:e}=t;this.loading.groups=!0;try{await this.$store.dispatch("addGroup",e),this.newUser.groups.push(this.groups.find((t=>t.id===e))),this.loading.groups=!1}catch(t){this.loading.groups=!1}},validateQuota(t){const e=OC.Util.computerFileSize(t);return null!==e&&e>=0?(t=OC.Util.humanFileSize(OC.Util.computerFileSize(t)),this.newUser.quota={id:t,label:t},this.newUser.quota):(this.newUser.quota=this.quotaOptions[0],this.quotaOptions[0])},languageFilterBy:(t,e,s)=>t.languages?t.languages.some((t=>{let{name:e}=t;return e.toLocaleLowerCase().includes(s.toLocaleLowerCase())})):(e||"").toLocaleLowerCase().includes(s.toLocaleLowerCase()),async searchUserManager(t){await this.$store.dispatch("searchUsers",{offset:0,limit:10,search:t}).then((t=>{const e=t?.data?Object.values(t?.data.ocs.data.users):[];e.length>0&&(this.possibleManagers=e)}))}}};var H=a(9499),Y={};Y.styleTagTransform=O(),Y.setAttributes=B(),Y.insert=N().bind(null,"head"),Y.domAPI=U(),Y.insertStyleElement=I(),k()(H.A,Y),H.A&&H.A.locals&&H.A.locals;const j=(0,T.A)(W,(function(){var t=this,e=t._self._c;return e("NcModal",t._g({staticClass:"modal",attrs:{size:"small"}},t.$listeners),[e("form",{staticClass:"modal__form",attrs:{"data-test":"form",disabled:t.loading.all},on:{submit:function(e){return e.preventDefault(),t.createUser.apply(null,arguments)}}},[e("h2",[t._v(t._s(t.t("settings","New user")))]),t._v(" "),e("NcTextField",{ref:"username",staticClass:"modal__item",attrs:{"data-test":"username",value:t.newUser.id,disabled:t.settings.newUserGenerateUserID,label:t.usernameLabel,autocapitalize:"none",autocomplete:"off",spellcheck:"false",pattern:"[a-zA-Z0-9 _\\.@\\-']+",required:""},on:{"update:value":function(e){return t.$set(t.newUser,"id",e)}}}),t._v(" "),e("NcTextField",{staticClass:"modal__item",attrs:{"data-test":"displayName",value:t.newUser.displayName,label:t.t("settings","Display name"),autocapitalize:"none",autocomplete:"off",spellcheck:"false"},on:{"update:value":function(e){return t.$set(t.newUser,"displayName",e)}}}),t._v(" "),t.settings.newUserRequireEmail?t._e():e("span",{staticClass:"modal__hint",attrs:{id:"password-email-hint"}},[t._v("\n\t\t\t"+t._s(t.t("settings","Either password or email is required"))+"\n\t\t")]),t._v(" "),e("NcPasswordField",{ref:"password",staticClass:"modal__item",attrs:{"data-test":"password",value:t.newUser.password,minlength:t.minPasswordLength,maxlength:469,"aria-describedby":"password-email-hint",label:""===t.newUser.mailAddress?t.t("settings","Password (required)"):t.t("settings","Password"),autocapitalize:"none",autocomplete:"new-password",spellcheck:"false",required:""===t.newUser.mailAddress},on:{"update:value":function(e){return t.$set(t.newUser,"password",e)}}}),t._v(" "),e("NcTextField",{staticClass:"modal__item",attrs:{"data-test":"email",type:"email",value:t.newUser.mailAddress,"aria-describedby":"password-email-hint",label:""===t.newUser.password||t.settings.newUserRequireEmail?t.t("settings","Email (required)"):t.t("settings","Email"),autocapitalize:"none",autocomplete:"off",spellcheck:"false",required:""===t.newUser.password||t.settings.newUserRequireEmail},on:{"update:value":function(e){return t.$set(t.newUser,"mailAddress",e)}}}),t._v(" "),e("div",{staticClass:"modal__item"},[e("label",{staticClass:"modal__label",attrs:{for:"new-user-groups"}},[t._v("\n\t\t\t\t"+t._s(t.settings.isAdmin?t.t("settings","Groups"):t.t("settings","Groups (required)"))+"\n\t\t\t")]),t._v(" "),e("NcSelect",{staticClass:"modal__select",attrs:{"input-id":"new-user-groups",placeholder:t.t("settings","Set user groups"),disabled:t.loading.groups||t.loading.all,options:t.canAddGroups,value:t.newUser.groups,label:"name","close-on-select":!1,multiple:!0,taggable:!0,required:!t.settings.isAdmin},on:{input:t.handleGroupInput,"option:created":t.createGroup}})],1),t._v(" "),t.subAdminsGroups.length>0?e("div",{staticClass:"modal__item"},[e("label",{staticClass:"modal__label",attrs:{for:"new-user-sub-admin"}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Administered groups"))+"\n\t\t\t")]),t._v(" "),e("NcSelect",{staticClass:"modal__select",attrs:{"input-id":"new-user-sub-admin",placeholder:t.t("settings","Set user as admin for …"),options:t.subAdminsGroups,"close-on-select":!1,multiple:!0,label:"name"},model:{value:t.newUser.subAdminsGroups,callback:function(e){t.$set(t.newUser,"subAdminsGroups",e)},expression:"newUser.subAdminsGroups"}})],1):t._e(),t._v(" "),e("div",{staticClass:"modal__item"},[e("label",{staticClass:"modal__label",attrs:{for:"new-user-quota"}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Quota"))+"\n\t\t\t")]),t._v(" "),e("NcSelect",{staticClass:"modal__select",attrs:{"input-id":"new-user-quota",placeholder:t.t("settings","Set user quota"),options:t.quotaOptions,clearable:!1,taggable:!0,"create-option":t.validateQuota},model:{value:t.newUser.quota,callback:function(e){t.$set(t.newUser,"quota",e)},expression:"newUser.quota"}})],1),t._v(" "),t.showConfig.showLanguages?e("div",{staticClass:"modal__item"},[e("label",{staticClass:"modal__label",attrs:{for:"new-user-language"}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Language"))+"\n\t\t\t")]),t._v(" "),e("NcSelect",{staticClass:"modal__select",attrs:{"input-id":"new-user-language",placeholder:t.t("settings","Set default language"),clearable:!1,selectable:t=>!t.languages,"filter-by":t.languageFilterBy,options:t.languages,label:"name"},model:{value:t.newUser.language,callback:function(e){t.$set(t.newUser,"language",e)},expression:"newUser.language"}})],1):t._e(),t._v(" "),e("div",{class:["modal__item managers",{"icon-loading-small":t.loading.manager}]},[e("label",{staticClass:"modal__label",attrs:{for:"new-user-manager"}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Manager"))+"\n\t\t\t")]),t._v(" "),e("NcSelect",{staticClass:"modal__select",attrs:{"input-id":"new-user-manager",placeholder:t.managerLabel,options:t.possibleManagers,"user-select":!0,label:"displayname"},on:{search:t.searchUserManager},model:{value:t.newUser.manager,callback:function(e){t.$set(t.newUser,"manager",e)},expression:"newUser.manager"}})],1),t._v(" "),e("NcButton",{staticClass:"modal__submit",attrs:{"data-test":"submit",type:"primary","native-type":"submit"}},[t._v("\n\t\t\t"+t._s(t.t("settings","Add new user"))+"\n\t\t")])],1)])}),[],!1,null,"2fe7d69f",null).exports,K=i.Ay.extend({name:"UserListFooter",components:{NcLoadingIcon:g.A},props:{loading:{type:Boolean,required:!0},filteredUsers:{type:Array,required:!0}},computed:{userCount(){return this.loading?this.n("settings","{userCount} user …","{userCount} users …",this.filteredUsers.length,{userCount:this.filteredUsers.length}):this.n("settings","{userCount} user","{userCount} users",this.filteredUsers.length,{userCount:this.filteredUsers.length})}},methods:{t:n.Tl,n:n.zw}});var V=a(23599),X={};X.styleTagTransform=O(),X.setAttributes=B(),X.insert=N().bind(null,"head"),X.domAPI=U(),X.insertStyleElement=I(),k()(V.A,X),V.A&&V.A.locals&&V.A.locals;const J=(0,T.A)(K,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("tr",{staticClass:"footer"},[e("th",{attrs:{scope:"row"}},[e("span",{staticClass:"hidden-visually"},[t._v(t._s(t.t("settings","Total rows summary")))])]),t._v(" "),e("td",{staticClass:"footer__cell footer__cell--loading"},[t.loading?e("NcLoadingIcon",{attrs:{title:t.t("settings","Loading users …"),size:32}}):t._e()],1),t._v(" "),e("td",{staticClass:"footer__cell footer__cell--count footer__cell--multiline"},[e("span",{attrs:{"aria-describedby":"user-count-desc"}},[t._v(t._s(t.userCount))]),t._v(" "),e("span",{staticClass:"hidden-visually",attrs:{id:"user-count-desc"}},[t._v("\n\t\t\t"+t._s(t.t("settings","Scroll to load more rows"))+"\n\t\t")])])])}),[],!1,null,"3ec0b16a",null).exports,Z=i.Ay.extend({name:"UserListHeader",props:{hasObfuscated:{type:Boolean,required:!0}},computed:{showConfig(){return this.$store.getters.getShowConfig},settings(){return this.$store.getters.getServerData},subAdminsGroups(){return this.$store.getters.getSubadminGroups},passwordLabel(){return this.hasObfuscated?(0,n.Tl)("settings","Password or insufficient permissions message"):(0,n.Tl)("settings","Password")}},methods:{t:n.Tl}});var tt=a(77024),et={};et.styleTagTransform=O(),et.setAttributes=B(),et.insert=N().bind(null,"head"),et.domAPI=U(),et.insertStyleElement=I(),k()(tt.A,et),tt.A&&tt.A.locals&&tt.A.locals;const st=(0,T.A)(Z,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("tr",{staticClass:"header"},[e("th",{staticClass:"header__cell header__cell--avatar",attrs:{"data-cy-user-list-header-avatar":"",scope:"col"}},[e("span",{staticClass:"hidden-visually"},[t._v("\n\t\t\t"+t._s(t.t("settings","Avatar"))+"\n\t\t")])]),t._v(" "),e("th",{staticClass:"header__cell header__cell--displayname",attrs:{"data-cy-user-list-header-displayname":"",scope:"col"}},[e("strong",[t._v("\n\t\t\t"+t._s(t.t("settings","Display name"))+"\n\t\t")]),t._v(" "),e("span",{staticClass:"header__subtitle"},[t._v("\n\t\t\t"+t._s(t.t("settings","Username"))+"\n\t\t")])]),t._v(" "),e("th",{staticClass:"header__cell",class:{"header__cell--obfuscated":t.hasObfuscated},attrs:{"data-cy-user-list-header-password":"",scope:"col"}},[e("span",[t._v(t._s(t.passwordLabel))])]),t._v(" "),e("th",{staticClass:"header__cell",attrs:{"data-cy-user-list-header-email":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Email")))])]),t._v(" "),e("th",{staticClass:"header__cell header__cell--large",attrs:{"data-cy-user-list-header-groups":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Groups")))])]),t._v(" "),t.subAdminsGroups.length>0&&t.settings.isAdmin?e("th",{staticClass:"header__cell header__cell--large",attrs:{"data-cy-user-list-header-subadmins":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Group admin for")))])]):t._e(),t._v(" "),e("th",{staticClass:"header__cell",attrs:{"data-cy-user-list-header-quota":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Quota")))])]),t._v(" "),t.showConfig.showLanguages?e("th",{staticClass:"header__cell header__cell--large",attrs:{"data-cy-user-list-header-languages":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Language")))])]):t._e(),t._v(" "),t.showConfig.showUserBackend||t.showConfig.showStoragePath?e("th",{staticClass:"header__cell header__cell--large",attrs:{"data-cy-user-list-header-storage-location":"",scope:"col"}},[t.showConfig.showUserBackend?e("span",[t._v("\n\t\t\t"+t._s(t.t("settings","User backend"))+"\n\t\t")]):t._e(),t._v(" "),t.showConfig.showStoragePath?e("span",{staticClass:"header__subtitle"},[t._v("\n\t\t\t"+t._s(t.t("settings","Storage location"))+"\n\t\t")]):t._e()]):t._e(),t._v(" "),t.showConfig.showLastLogin?e("th",{staticClass:"header__cell",attrs:{"data-cy-user-list-header-last-login":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Last login")))])]):t._e(),t._v(" "),e("th",{staticClass:"header__cell header__cell--large header__cell--fill",attrs:{"data-cy-user-list-header-manager":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Manager")))])]),t._v(" "),e("th",{staticClass:"header__cell header__cell--actions",attrs:{"data-cy-user-list-header-actions":"",scope:"col"}},[e("span",{staticClass:"hidden-visually"},[t._v("\n\t\t\t"+t._s(t.t("settings","User actions"))+"\n\t\t")])])])}),[],!1,null,"69afa821",null).exports;var at=a(35810),nt=a(21777),it=a(41944),rt=a(95101),ot=a(57505),lt=a(24764);const dt=(0,i.pM)({components:{NcActionButton:ot.A,NcActions:lt.A,NcIconSvgWrapper:A.A},props:{actions:{type:Array,required:!0},disabled:{type:Boolean,required:!0},edit:{type:Boolean,required:!0},user:{type:Object,required:!0}},computed:{editSvg(){return this.edit?'':''}},methods:{toggleEdit(){this.$emit("update:edit",!this.edit)}}}),ct=(0,T.A)(dt,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("NcActions",{attrs:{"aria-label":t.t("settings","Toggle account actions menu"),disabled:t.disabled,inline:1}},[e("NcActionButton",{attrs:{"data-cy-user-list-action-toggle-edit":`${t.edit}`,disabled:t.disabled},on:{click:t.toggleEdit},scopedSlots:t._u([{key:"icon",fn:function(){return[e("NcIconSvgWrapper",{key:t.editSvg,attrs:{svg:t.editSvg,"aria-hidden":"true"}})]},proxy:!0}])},[t._v("\n\t\t"+t._s(t.edit?t.t("settings","Done"):t.t("settings","Edit"))+"\n\t\t")]),t._v(" "),t._l(t.actions,(function(s,a){let{action:n,icon:i,text:r}=s;return e("NcActionButton",{key:a,attrs:{disabled:t.disabled,"aria-label":r,icon:i},on:{click:e=>n(e,{...t.user})}},[t._v("\n\t\t"+t._s(r)+"\n\t")])}))],2)}),[],!1,null,null,null).exports,ut={props:{user:{type:Object,required:!0},settings:{type:Object,default:()=>({})},groups:{type:Array,default:()=>[]},subAdminsGroups:{type:Array,default:()=>[]},quotaOptions:{type:Array,default:()=>[]},languages:{type:Array,required:!0},externalActions:{type:Array,default:()=>[]}},computed:{showConfig(){return this.$store.getters.getShowConfig},userGroups(){return this.groups.filter((t=>this.user.groups.includes(t.id)))},userSubAdminsGroups(){return this.subAdminsGroups.filter((t=>this.user.subadmin.includes(t.id)))},availableGroups(){return this.groups.map((t=>{const e=Object.assign({},t);return e.$isDisabled=!1===t.canAdd&&!this.user.groups.includes(t.id)||!1===t.canRemove&&this.user.groups.includes(t.id),e}))},usedSpace(){return this.user.quota.used?t("settings","{size} used",{size:OC.Util.humanFileSize(this.user.quota.used)}):t("settings","{size} used",{size:OC.Util.humanFileSize(0)})},usedQuota(){let t=this.user.quota.quota;return t=t>0?Math.min(100,Math.round(this.user.quota.used/t*100)):95*(1-1/(this.user.quota.used/(10*Math.pow(2,30))+1)),isNaN(t)?0:t},userQuota(){if(this.user.quota.quota>=0){const t=OC.Util.humanFileSize(this.user.quota.quota);return this.quotaOptions.find((e=>e.id===t))||{id:t,label:t}}return"default"===this.user.quota.quota?this.quotaOptions[0]:this.quotaOptions[1]},minPasswordLength(){return this.$store.getters.getPasswordPolicyMinLength},userLanguage(){const t=this.languages[0].languages.concat(this.languages[1].languages).find((t=>t.code===this.user.language));return"object"!=typeof t&&""!==this.user.language?{code:this.user.language,name:this.user.language}:""!==this.user.language&&t},userLastLoginTooltip(){return this.user.lastLogin>0?OC.Util.formatDate(this.user.lastLogin):""},userLastLogin(){return this.user.lastLogin>0?OC.Util.relativeModifiedDate(this.user.lastLogin):t("settings","Never")}}};var At=a(95668);const gt={name:"UserRow",components:{NcAvatar:it.A,NcLoadingIcon:g.A,NcProgressBar:rt.A,NcSelect:R.A,NcTextField:Q.A,UserRowActions:ct},mixins:[ut],props:{user:{type:Object,required:!0},visible:{type:Boolean,required:!0},users:{type:Array,required:!0},hasObfuscated:{type:Boolean,required:!0},groups:{type:Array,default:()=>[]},subAdminsGroups:{type:Array,required:!0},quotaOptions:{type:Array,required:!0},languages:{type:Array,required:!0},settings:{type:Object,required:!0},externalActions:{type:Array,default:()=>[]}},data(){return{selectedQuota:!1,rand:Math.random().toString(36).substring(2),loadingPossibleManagers:!1,possibleManagers:[],currentManager:"",editing:!1,loading:{all:!1,displayName:!1,password:!1,mailAddress:!1,groups:!1,subadmins:!1,quota:!1,delete:!1,disable:!1,languages:!1,wipe:!1,manager:!1},editedDisplayName:this.user.displayname,editedPassword:"",editedMail:this.user.email??""}},computed:{managerLabel:()=>t("settings","Set line manager"),isObfuscated(){return(0,At.HK)(this.user)},showConfig(){return this.$store.getters.getShowConfig},isLoadingUser(){return this.loading.delete||this.loading.disable||this.loading.wipe},isLoadingField(){return this.loading.delete||this.loading.disable||this.loading.all},uniqueId(){return encodeURIComponent(this.user.id+this.rand)},userGroupsLabels(){return this.userGroups.map((t=>t.name)).join(", ")},userSubAdminsGroupsLabels(){return this.userSubAdminsGroups.map((t=>t.name)).join(", ")},usedSpace(){return this.user.quota?.used?t("settings","{size} used",{size:(0,at.v7)(this.user.quota?.used)}):t("settings","{size} used",{size:(0,at.v7)(0)})},canEdit(){return(0,nt.HW)().uid!==this.user.id||this.settings.isAdmin},userQuota(){let e=this.user.quota?.quota;return"default"===e&&(e=this.settings.defaultQuota,"none"!==e&&(e=(0,at.lT)(e,!0))),"none"===e||-3===e?t("settings","Unlimited"):e>=0?(0,at.v7)(e):(0,at.v7)(0)},userActions(){const e=[{icon:"icon-delete",text:t("settings","Delete account"),action:this.deleteUser},{icon:"icon-delete",text:t("settings","Disconnect all devices and delete local data"),action:this.wipeUserDevices},{icon:this.user.enabled?"icon-close":"icon-add",text:this.user.enabled?t("settings","Disable account"):t("settings","Enable account"),action:this.enableDisableUser}];return null!==this.user.email&&""!==this.user.email&&e.push({icon:"icon-mail",text:t("settings","Resend welcome email"),action:this.sendWelcomeMail}),e.concat(this.externalActions)},editedUserQuota:{get(){return!1!==this.selectedQuota?this.selectedQuota:this.settings.defaultQuota!==At.SA.id&&(0,at.lT)(this.settings.defaultQuota,!0)>=0?{id:this.settings.defaultQuota,label:this.settings.defaultQuota}:At.SA},set(t){this.selectedQuota=t}},availableLanguages(){return this.languages[0].languages.concat(this.languages[1].languages)}},async beforeMount(){this.user.manager&&await this.initManager(this.user.manager)},methods:{wipeUserDevices(){const e=this.user.id;OC.dialogs.confirmDestructive(t("settings","In case of lost device or exiting the organization, this can remotely wipe the Nextcloud data from all devices associated with {userid}. Only works if the devices are connected to the internet.",{userid:e}),t("settings","Remote wipe of devices"),{type:OC.dialogs.YES_NO_BUTTONS,confirm:t("settings","Wipe {userid}'s devices",{userid:e}),confirmClasses:"error",cancel:t("settings","Cancel")},(s=>{s&&(this.loading.wipe=!0,this.loading.all=!0,this.$store.dispatch("wipeUserDevices",e).then((()=>(0,l.Te)(t("settings","Wiped {userid}'s devices",{userid:e}))),{timeout:2e3}).finally((()=>{this.loading.wipe=!1,this.loading.all=!1})))}),!0)},filterManagers(t){return t.filter((t=>t.id!==this.user.id))},async initManager(t){await this.$store.dispatch("getUser",t).then((t=>{this.currentManager=t?.data.ocs.data}))},async searchInitialUserManager(){this.loadingPossibleManagers=!0,await this.searchUserManager(),this.loadingPossibleManagers=!1},async searchUserManager(t){await this.$store.dispatch("searchUsers",{offset:0,limit:10,search:t}).then((t=>{const e=t?.data?this.filterManagers(Object.values(t?.data.ocs.data.users)):[];e.length>0&&(this.possibleManagers=e)}))},async updateUserManager(e){null===e&&(this.currentManager=""),this.loading.manager=!0;try{await this.$store.dispatch("setUserData",{userid:this.user.id,key:"manager",value:this.currentManager?this.currentManager.id:""})}catch(e){(0,l.Qg)(t("settings","Failed to update line manager")),console.error(e)}finally{this.loading.manager=!1}},deleteUser(){const e=this.user.id;OC.dialogs.confirmDestructive(t("settings","Fully delete {userid}'s account including all their personal files, app data, etc.",{userid:e}),t("settings","Account deletion"),{type:OC.dialogs.YES_NO_BUTTONS,confirm:t("settings","Delete {userid}'s account",{userid:e}),confirmClasses:"error",cancel:t("settings","Cancel")},(t=>{if(t)return this.loading.delete=!0,this.loading.all=!0,this.$store.dispatch("deleteUser",e).then((()=>{this.loading.delete=!1,this.loading.all=!1}))}),!0)},enableDisableUser(){this.loading.delete=!0,this.loading.all=!0;const t=this.user.id,e=!this.user.enabled;return this.$store.dispatch("enableDisableUser",{userid:t,enabled:e}).then((()=>{this.loading.delete=!1,this.loading.all=!1}))},async updateDisplayName(){this.loading.displayName=!0;try{await this.$store.dispatch("setUserData",{userid:this.user.id,key:"displayname",value:this.editedDisplayName}),this.editedDisplayName===this.user.displayname&&(0,l.Te)(t("settings","Display name was successfully changed"))}finally{this.loading.displayName=!1}},async updatePassword(){if(this.loading.password=!0,0===this.editedPassword.length)(0,l.Qg)(t("settings","Password can't be empty")),this.loading.password=!1;else try{await this.$store.dispatch("setUserData",{userid:this.user.id,key:"password",value:this.editedPassword}),this.editedPassword="",(0,l.Te)(t("settings","Password was successfully changed"))}finally{this.loading.password=!1}},async updateEmail(){if(this.loading.mailAddress=!0,""===this.editedMail)(0,l.Qg)(t("settings","Email can't be empty")),this.loading.mailAddress=!1,this.editedMail=this.user.email;else try{await this.$store.dispatch("setUserData",{userid:this.user.id,key:"email",value:this.editedMail}),this.editedMail===this.user.email&&(0,l.Te)(t("settings","Email was successfully changed"))}finally{this.loading.mailAddress=!1}},async createGroup(t){let{name:e}=t;this.loading={groups:!0,subadmins:!0};try{await this.$store.dispatch("addGroup",e);const t=this.user.id;await this.$store.dispatch("addUserGroup",{userid:t,gid:e})}catch(t){console.error(t)}finally{this.loading={groups:!1,subadmins:!1}}return this.$store.getters.getGroups[this.groups.length]},async addUserGroup(t){if(t.isCreating)return;this.loading.groups=!0;const e=this.user.id,s=t.id;if(!1===t.canAdd)return!1;try{await this.$store.dispatch("addUserGroup",{userid:e,gid:s})}catch(t){console.error(t)}finally{this.loading.groups=!1}},async removeUserGroup(t){if(!1===t.canRemove)return!1;this.loading.groups=!0;const e=this.user.id,s=t.id;try{await this.$store.dispatch("removeUserGroup",{userid:e,gid:s}),this.loading.groups=!1,this.$route.params.selectedGroup===s&&this.$store.commit("deleteUser",e)}catch{this.loading.groups=!1}},async addUserSubAdmin(t){this.loading.subadmins=!0;const e=this.user.id,s=t.id;try{await this.$store.dispatch("addUserSubAdmin",{userid:e,gid:s}),this.loading.subadmins=!1}catch(t){console.error(t)}},async removeUserSubAdmin(t){this.loading.subadmins=!0;const e=this.user.id,s=t.id;try{await this.$store.dispatch("removeUserSubAdmin",{userid:e,gid:s})}catch(t){console.error(t)}finally{this.loading.subadmins=!1}},async setUserQuota(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"none";"none"===t&&(t=At.SA),this.loading.quota=!0,t=t.id?t.id:t;try{const e=((0,at.lT)(t,!0)||t).toString();await this.$store.dispatch("setUserData",{userid:this.user.id,key:"quota",value:e})}catch(t){console.error(t)}finally{this.loading.quota=!1}return t},validateQuota:t=>("object"==typeof t&&(t=t?.id||t.label),null===(0,at.lT)(t,!0)?At.SA:{id:t=(0,at.v7)((0,at.lT)(t,!0)),label:t}),async setUserLanguage(t){this.loading.languages=!0;try{await this.$store.dispatch("setUserData",{userid:this.user.id,key:"language",value:t.code}),this.loading.languages=!1}catch(t){console.error(t)}return t},sendWelcomeMail(){this.loading.all=!0,this.$store.dispatch("sendWelcomeMail",this.user.id).then((()=>(0,l.Te)(t("settings","Welcome mail sent!"),{timeout:2e3}))).finally((()=>{this.loading.all=!1}))},async toggleEdit(){this.editing=!this.editing,this.editing&&(await this.$nextTick(),this.$refs.displayNameField?.$refs?.inputField?.$refs?.input?.focus()),this.editedDisplayName!==this.user.displayname?this.editedDisplayName=this.user.displayname:this.editedMail!==this.user.email&&(this.editedMail=this.user.email??"")}}};var pt=a(67020),ht={};ht.styleTagTransform=O(),ht.setAttributes=B(),ht.insert=N().bind(null,"head"),ht.domAPI=U(),ht.insertStyleElement=I(),k()(pt.A,ht),pt.A&&pt.A.locals&&pt.A.locals;var mt=(0,T.A)(gt,(function(){var t=this,e=t._self._c;return e("tr",{staticClass:"user-list__row",attrs:{"data-cy-user-row":t.user.id}},[e("td",{staticClass:"row__cell row__cell--avatar",attrs:{"data-cy-user-list-cell-avatar":""}},[t.isLoadingUser?e("NcLoadingIcon",{attrs:{name:t.t("settings","Loading account …"),size:32}}):t.visible?e("NcAvatar",{attrs:{"disable-menu":"","show-user-status":!1,user:t.user.id}}):t._e()],1),t._v(" "),e("td",{staticClass:"row__cell row__cell--displayname",attrs:{"data-cy-user-list-cell-displayname":""}},[t.editing&&t.user.backendCapabilities.setDisplayName?[e("NcTextField",{ref:"displayNameField",staticClass:"user-row-text-field",class:{"icon-loading-small":t.loading.displayName},attrs:{"data-cy-user-list-input-displayname":"","data-loading":t.loading.displayName||void 0,"trailing-button-label":t.t("settings","Submit"),"show-trailing-button":!0,disabled:t.loading.displayName||t.isLoadingField,label:t.t("settings","Change display name"),"trailing-button-icon":"arrowRight",value:t.editedDisplayName,autocapitalize:"off",autocomplete:"off",spellcheck:"false"},on:{"update:value":function(e){t.editedDisplayName=e},"trailing-button-click":t.updateDisplayName}})]:[t.isObfuscated?t._e():e("strong",{attrs:{title:t.user.displayname?.length>20?t.user.displayname:null}},[t._v("\n\t\t\t\t"+t._s(t.user.displayname)+"\n\t\t\t")]),t._v(" "),e("span",{staticClass:"row__subtitle"},[t._v(t._s(t.user.id))])]],2),t._v(" "),e("td",{staticClass:"row__cell",class:{"row__cell--obfuscated":t.hasObfuscated},attrs:{"data-cy-user-list-cell-password":""}},[t.editing&&t.settings.canChangePassword&&t.user.backendCapabilities.setPassword?[e("NcTextField",{staticClass:"user-row-text-field",class:{"icon-loading-small":t.loading.password},attrs:{"data-cy-user-list-input-password":"","data-loading":t.loading.password||void 0,"trailing-button-label":t.t("settings","Submit"),"show-trailing-button":!0,disabled:t.loading.password||t.isLoadingField,minlength:t.minPasswordLength,maxlength:"469",label:t.t("settings","Set new password"),"trailing-button-icon":"arrowRight",value:t.editedPassword,autocapitalize:"off",autocomplete:"new-password",required:"",spellcheck:"false",type:"password"},on:{"update:value":function(e){t.editedPassword=e},"trailing-button-click":t.updatePassword}})]:t.isObfuscated?e("span",[t._v("\n\t\t\t"+t._s(t.t("settings","You do not have permissions to see the details of this account"))+"\n\t\t")]):t._e()],2),t._v(" "),e("td",{staticClass:"row__cell",attrs:{"data-cy-user-list-cell-email":""}},[t.editing?[e("NcTextField",{staticClass:"user-row-text-field",class:{"icon-loading-small":t.loading.mailAddress},attrs:{"data-cy-user-list-input-email":"","data-loading":t.loading.mailAddress||void 0,"show-trailing-button":!0,"trailing-button-label":t.t("settings","Submit"),label:t.t("settings","Set new email address"),disabled:t.loading.mailAddress||t.isLoadingField,"trailing-button-icon":"arrowRight",value:t.editedMail,autocapitalize:"off",autocomplete:"email",spellcheck:"false",type:"email"},on:{"update:value":function(e){t.editedMail=e},"trailing-button-click":t.updateEmail}})]:t.isObfuscated?t._e():e("span",{attrs:{title:t.user.email?.length>20?t.user.email:null}},[t._v("\n\t\t\t"+t._s(t.user.email)+"\n\t\t")])],2),t._v(" "),e("td",{staticClass:"row__cell row__cell--large row__cell--multiline",attrs:{"data-cy-user-list-cell-groups":""}},[t.editing?[e("label",{staticClass:"hidden-visually",attrs:{for:"groups"+t.uniqueId}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Add user to group"))+"\n\t\t\t")]),t._v(" "),e("NcSelect",{attrs:{"data-cy-user-list-input-groups":"","data-loading":t.loading.groups||void 0,"input-id":"groups"+t.uniqueId,"close-on-select":!1,disabled:t.isLoadingField,loading:t.loading.groups,multiple:!0,"append-to-body":!1,options:t.availableGroups,placeholder:t.t("settings","Add account to group"),taggable:t.settings.isAdmin,value:t.userGroups,label:"name","no-wrap":!0,"create-option":t=>({name:t,isCreating:!0})},on:{"option:created":t.createGroup,"option:selected":e=>t.addUserGroup(e.at(-1)),"option:deselected":t.removeUserGroup}})]:t.isObfuscated?t._e():e("span",{attrs:{title:t.userGroupsLabels?.length>40?t.userGroupsLabels:null}},[t._v("\n\t\t\t"+t._s(t.userGroupsLabels)+"\n\t\t")])],2),t._v(" "),t.subAdminsGroups.length>0&&t.settings.isAdmin?e("td",{staticClass:"row__cell row__cell--large row__cell--multiline",attrs:{"data-cy-user-list-cell-subadmins":""}},[t.editing&&t.settings.isAdmin&&t.subAdminsGroups.length>0?[e("label",{staticClass:"hidden-visually",attrs:{for:"subadmins"+t.uniqueId}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Set account as admin for"))+"\n\t\t\t")]),t._v(" "),e("NcSelect",{attrs:{"data-cy-user-list-input-subadmins":"","data-loading":t.loading.subadmins||void 0,"input-id":"subadmins"+t.uniqueId,"close-on-select":!1,disabled:t.isLoadingField,loading:t.loading.subadmins,label:"name","append-to-body":!1,multiple:!0,"no-wrap":!0,options:t.subAdminsGroups,placeholder:t.t("settings","Set account as admin for"),value:t.userSubAdminsGroups},on:{"option:deselected":t.removeUserSubAdmin,"option:selected":e=>t.addUserSubAdmin(e.at(-1))}})]:t.isObfuscated?t._e():e("span",{attrs:{title:t.userSubAdminsGroupsLabels?.length>40?t.userSubAdminsGroupsLabels:null}},[t._v("\n\t\t\t"+t._s(t.userSubAdminsGroupsLabels)+"\n\t\t")])],2):t._e(),t._v(" "),e("td",{staticClass:"row__cell",attrs:{"data-cy-user-list-cell-quota":""}},[t.editing?[e("label",{staticClass:"hidden-visually",attrs:{for:"quota"+t.uniqueId}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Select account quota"))+"\n\t\t\t")]),t._v(" "),e("NcSelect",{attrs:{"close-on-select":!0,"create-option":t.validateQuota,"data-cy-user-list-input-quota":"","data-loading":t.loading.quota||void 0,disabled:t.isLoadingField,loading:t.loading.quota,"append-to-body":!1,clearable:!1,"input-id":"quota"+t.uniqueId,options:t.quotaOptions,placeholder:t.t("settings","Select account quota"),taggable:!0},on:{"option:selected":t.setUserQuota},model:{value:t.editedUserQuota,callback:function(e){t.editedUserQuota=e},expression:"editedUserQuota"}})]:t.isObfuscated?t._e():[e("span",{attrs:{id:"quota-progress"+t.uniqueId}},[t._v(t._s(t.userQuota)+" ("+t._s(t.usedSpace)+")")]),t._v(" "),e("NcProgressBar",{staticClass:"row__progress",class:{"row__progress--warn":t.usedQuota>80},attrs:{"aria-labelledby":"quota-progress"+t.uniqueId,value:t.usedQuota}})]],2),t._v(" "),t.showConfig.showLanguages?e("td",{staticClass:"row__cell row__cell--large",attrs:{"data-cy-user-list-cell-language":""}},[t.editing?[e("label",{staticClass:"hidden-visually",attrs:{for:"language"+t.uniqueId}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Set the language"))+"\n\t\t\t")]),t._v(" "),e("NcSelect",{attrs:{id:"language"+t.uniqueId,"data-cy-user-list-input-language":"","data-loading":t.loading.languages||void 0,"allow-empty":!1,disabled:t.isLoadingField,loading:t.loading.languages,clearable:!1,"append-to-body":!1,options:t.availableLanguages,placeholder:t.t("settings","No language set"),value:t.userLanguage,label:"name"},on:{input:t.setUserLanguage}})]:t.isObfuscated?t._e():e("span",[t._v("\n\t\t\t"+t._s(t.userLanguage.name)+"\n\t\t")])],2):t._e(),t._v(" "),t.showConfig.showUserBackend||t.showConfig.showStoragePath?e("td",{staticClass:"row__cell row__cell--large",attrs:{"data-cy-user-list-cell-storage-location":""}},[t.isObfuscated?t._e():[t.showConfig.showUserBackend?e("span",[t._v(t._s(t.user.backend))]):t._e(),t._v(" "),t.showConfig.showStoragePath?e("span",{staticClass:"row__subtitle",attrs:{title:t.user.storageLocation}},[t._v("\n\t\t\t\t"+t._s(t.user.storageLocation)+"\n\t\t\t")]):t._e()]],2):t._e(),t._v(" "),t.showConfig.showLastLogin?e("td",{staticClass:"row__cell",attrs:{title:t.userLastLoginTooltip,"data-cy-user-list-cell-last-login":""}},[t.isObfuscated?t._e():e("span",[t._v(t._s(t.userLastLogin))])]):t._e(),t._v(" "),e("td",{staticClass:"row__cell row__cell--large row__cell--fill",attrs:{"data-cy-user-list-cell-manager":""}},[t.editing?[e("label",{staticClass:"hidden-visually",attrs:{for:"manager"+t.uniqueId}},[t._v("\n\t\t\t\t"+t._s(t.managerLabel)+"\n\t\t\t")]),t._v(" "),e("NcSelect",{staticClass:"select--fill",attrs:{"data-cy-user-list-input-manager":"","data-loading":t.loading.manager||void 0,"input-id":"manager"+t.uniqueId,"close-on-select":!0,disabled:t.isLoadingField,"append-to-body":!1,loading:t.loadingPossibleManagers||t.loading.manager,label:"displayname",options:t.possibleManagers,placeholder:t.managerLabel},on:{open:t.searchInitialUserManager,search:t.searchUserManager,"option:selected":t.updateUserManager},model:{value:t.currentManager,callback:function(e){t.currentManager=e},expression:"currentManager"}})]:t.isObfuscated?t._e():e("span",[t._v("\n\t\t\t"+t._s(t.user.manager)+"\n\t\t")])],2),t._v(" "),e("td",{staticClass:"row__cell row__cell--actions",attrs:{"data-cy-user-list-cell-actions":""}},[t.visible&&!t.isObfuscated&&t.canEdit&&!t.loading.all?e("UserRowActions",{attrs:{actions:t.userActions,disabled:t.isLoadingField,edit:t.editing,user:t.user},on:{"update:edit":t.toggleEdit}}):t._e()],1)])}),[],!1,null,"6615a81e",null);const Ct=mt.exports,wt=Object.freeze({id:"",displayName:"",password:"",mailAddress:"",groups:[],manager:"",subAdminsGroups:[],quota:At.MY,language:{code:"en",name:t("settings","Default language")}}),vt={name:"UserList",components:{Fragment:c.F,NcEmptyContent:u.A,NcIconSvgWrapper:A.A,NcLoadingIcon:g.A,NewUserModal:j,UserListFooter:J,UserListHeader:st,VirtualList:P},props:{selectedGroup:{type:String,default:null},externalActions:{type:Array,default:()=>[]}},setup:()=>({mdiAccountGroup:o.n7C,rowHeight:55,UserRow:Ct}),data:()=>({loading:{all:!1,groups:!1,users:!1},newUser:{...wt},isInitialLoad:!0,searchQuery:""}),computed:{showConfig(){return this.$store.getters.getShowConfig},settings(){return this.$store.getters.getServerData},style(){return{"--row-height":`${this.rowHeight}px`}},hasObfuscated(){return this.filteredUsers.some((t=>(0,At.HK)(t)))},users(){return this.$store.getters.getUsers},filteredUsers(){return"disabled"===this.selectedGroup?this.users.filter((t=>!1===t.enabled)):(this.settings.isAdmin,this.users.filter((t=>!1!==t.enabled)))},groups(){return this.$store.getters.getGroups.filter((t=>"disabled"!==t.id)).sort(((t,e)=>t.name.localeCompare(e.name)))},subAdminsGroups(){return this.$store.getters.getSubadminGroups},quotaOptions(){const t=this.settings.quotaPreset.reduce(((t,e)=>t.concat({id:e,label:e})),[]);return this.settings.allowUnlimitedQuota&&t.unshift(At.SA),t.unshift(At.MY),t},usersOffset(){return this.$store.getters.getUsersOffset},usersLimit(){return this.$store.getters.getUsersLimit},disabledUsersOffset(){return this.$store.getters.getDisabledUsersOffset},disabledUsersLimit(){return this.$store.getters.getDisabledUsersLimit},usersCount(){return this.users.length},languages(){return[{label:t("settings","Common languages"),languages:this.settings.languages.commonLanguages},{label:t("settings","Other languages"),languages:this.settings.languages.otherLanguages}]}},watch:{async selectedGroup(t){this.isInitialLoad=!0,await this.redirectIfDisabled(),this.$store.commit("resetUsers"),await this.loadUsers(),this.setNewUserDefaultGroup(t)},filteredUsers(t){b.A.debug(`${t.length} filtered user(s)`)}},async created(){await this.loadUsers()},async mounted(){this.settings.canChangePassword||OC.Notification.showTemporary(t("settings","Password change is disabled because the master key is disabled")),this.resetForm(),(0,d.B1)("nextcloud:unified-search.search",this.search),(0,d.B1)("nextcloud:unified-search.reset",this.resetSearch),await this.redirectIfDisabled()},beforeDestroy(){(0,d.al)("nextcloud:unified-search.search",this.search),(0,d.al)("nextcloud:unified-search.reset",this.resetSearch)},methods:{async handleScrollEnd(){await this.loadUsers()},async loadUsers(){this.loading.users=!0;try{"disabled"===this.selectedGroup?await this.$store.dispatch("getDisabledUsers",{offset:this.disabledUsersOffset,limit:this.disabledUsersLimit,search:this.searchQuery}):await this.$store.dispatch("getUsers",{offset:this.usersOffset,limit:this.usersLimit,group:this.selectedGroup,search:this.searchQuery}),b.A.debug(`${this.users.length} total user(s) loaded`)}catch(t){b.A.error("Failed to load accounts",{error:t}),(0,l.Qg)("Failed to load accounts")}this.loading.users=!1,this.isInitialLoad=!1},closeModal(){this.$store.commit("setShowConfig",{key:"showNewUserForm",value:!1})},async search(t){let{query:e}=t;this.searchQuery=e,this.$store.commit("resetUsers"),await this.loadUsers()},resetSearch(){this.search({query:""})},resetForm(){this.newUser=Object.assign({},wt),this.settings.defaultLanguage&&i.Ay.set(this.newUser.language,"code",this.settings.defaultLanguage),this.setNewUserDefaultGroup(this.selectedGroup),this.loading.all=!1},setNewUserDefaultGroup(t){if(t||this.settings.isAdmin||this.settings.isDelegatedAdmin||1===this.groups.length&&(t=this.groups[0].id),t){const e=this.groups.find((e=>e.id===t));if(e)return void(this.newUser.groups=[e])}this.newUser.groups=[]},async redirectIfDisabled(){const t=this.$store.getters.getGroups;"disabled"===this.selectedGroup&&t.findIndex((t=>"disabled"===t.id&&0===t.usercount))>-1&&(this.$router.push({name:"users"}),await this.loadUsers())}}};var ft=a(59645),_t={};_t.styleTagTransform=O(),_t.setAttributes=B(),_t.insert=N().bind(null,"head"),_t.domAPI=U(),_t.insertStyleElement=I(),k()(ft.A,_t),ft.A&&ft.A.locals&&ft.A.locals;const bt=(0,T.A)(vt,(function(){var t=this,e=t._self._c;return e("Fragment",[t.showConfig.showNewUserForm?e("NewUserModal",{attrs:{loading:t.loading,"new-user":t.newUser,"quota-options":t.quotaOptions},on:{reset:t.resetForm,close:t.closeModal}}):t._e(),t._v(" "),0===t.filteredUsers.length?e("NcEmptyContent",{staticClass:"empty",attrs:{name:t.isInitialLoad&&t.loading.users?null:t.t("settings","No accounts")},scopedSlots:t._u([{key:"icon",fn:function(){return[t.isInitialLoad&&t.loading.users?e("NcLoadingIcon",{attrs:{name:t.t("settings","Loading accounts …"),size:64}}):e("NcIconSvgWrapper",{attrs:{path:t.mdiAccountGroup,size:64}})]},proxy:!0}],null,!1,226056511)}):e("VirtualList",{style:t.style,attrs:{"data-component":t.UserRow,"data-sources":t.filteredUsers,"data-key":"id","data-cy-user-list":"","item-height":t.rowHeight,"extra-props":{users:t.users,settings:t.settings,hasObfuscated:t.hasObfuscated,groups:t.groups,subAdminsGroups:t.subAdminsGroups,quotaOptions:t.quotaOptions,languages:t.languages,externalActions:t.externalActions}},on:{"scroll-end":t.handleScrollEnd},scopedSlots:t._u([{key:"before",fn:function(){return[e("caption",{staticClass:"hidden-visually"},[t._v("\n\t\t\t\t"+t._s(t.t("settings","List of accounts. This list is not fully rendered for performance reasons. The accounts will be rendered as you navigate through the list."))+"\n\t\t\t")])]},proxy:!0},{key:"header",fn:function(){return[e("UserListHeader",{attrs:{"has-obfuscated":t.hasObfuscated}})]},proxy:!0},{key:"footer",fn:function(){return[e("UserListFooter",{attrs:{loading:t.loading.users,"filtered-users":t.filteredUsers}})]},proxy:!0}])})],1)}),[],!1,null,"0e745d5e",null).exports,yt=(0,i.pM)({name:"UserManagement",components:{NcAppContent:r.A,UserList:bt},data:()=>({externalActions:[]}),computed:{pageHeading(){return null===this.selectedGroupDecoded?(0,n.Tl)("settings","Active accounts"):{admin:(0,n.Tl)("settings","Admins"),disabled:(0,n.Tl)("settings","Disabled accounts")}[this.selectedGroupDecoded]??(0,n.Tl)("settings","Account group: {group}",{group:this.selectedGroupDecoded})},selectedGroup(){return this.$route.params.selectedGroup},selectedGroupDecoded(){return this.selectedGroup?decodeURIComponent(this.selectedGroup):null}},beforeMount(){this.$store.commit("initGroups",{groups:this.$store.getters.getServerData.groups,orderBy:this.$store.getters.getServerData.sortGroups,userCount:this.$store.getters.getServerData.userCount}),this.$store.dispatch("getPasswordPolicyMinLength")},created(){window.OCA=window.OCA??{},window.OCA.Settings=window.OCA.Settings??{},window.OCA.Settings.UserList=window.OCA.Settings.UserList??{},window.OCA.Settings.UserList.registerAction=this.registerAction},methods:{t:n.Tl,registerAction(t,e,s){return this.externalActions.push({icon:t,text:e,action:s}),this.externalActions}}});var xt=a(73599),kt={};kt.styleTagTransform=O(),kt.setAttributes=B(),kt.insert=N().bind(null,"head"),kt.domAPI=U(),kt.insertStyleElement=I(),k()(xt.A,kt),xt.A&&xt.A.locals&&xt.A.locals;const St=(0,T.A)(yt,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("NcAppContent",{attrs:{"page-heading":t.pageHeading}},[e("UserList",{attrs:{"selected-group":t.selectedGroupDecoded,"external-actions":t.externalActions}})],1)}),[],!1,null,"fc8857fc",null).exports},23599:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),n=s.n(a),i=s(76314),r=s.n(i)()(n());r.push([t.id,".footer[data-v-3ec0b16a]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.footer__cell[data-v-3ec0b16a]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.footer__cell strong[data-v-3ec0b16a],.footer__cell span[data-v-3ec0b16a],.footer__cell label[data-v-3ec0b16a]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.footer__cell--avatar[data-v-3ec0b16a],.footer__cell--displayname[data-v-3ec0b16a]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.footer__cell--avatar[data-v-3ec0b16a]{left:0}.footer__cell--displayname[data-v-3ec0b16a]{left:var(--avatar-cell-width);border-right:1px solid var(--color-border)}}.footer__cell--avatar[data-v-3ec0b16a]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.footer__cell--multiline span[data-v-3ec0b16a]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.footer__cell--multiline span[data-v-3ec0b16a]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.footer__cell--large[data-v-3ec0b16a]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.footer__cell--obfuscated[data-v-3ec0b16a]{min-width:400px;width:400px}.footer__cell--fill[data-v-3ec0b16a]{min-width:var(--cell-width-large);width:100%}.footer__cell--actions[data-v-3ec0b16a]{position:sticky;right:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-left:1px solid var(--color-border)}.footer__subtitle[data-v-3ec0b16a]{color:var(--color-text-maxcontrast)}.footer__cell[data-v-3ec0b16a]{position:sticky;color:var(--color-text-maxcontrast)}.footer__cell--loading[data-v-3ec0b16a]{left:0;min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0}.footer__cell--count[data-v-3ec0b16a]{left:var(--avatar-cell-width);min-width:var(--cell-width);width:var(--cell-width)}","",{version:3,sources:["webpack://./apps/settings/src/components/Users/UserListFooter.vue","webpack://./apps/settings/src/components/Users/shared/styles.scss"],names:[],mappings:"AAGA,yBCoBC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CAIA,+BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,+GAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,mFAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,uCACC,MAAA,CAGD,4CACC,6BAAA,CACA,0CAAA,CAAA,CAIF,uCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,+CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,+CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,sCACC,iCAAA,CACA,6BAAA,CAGD,2CACC,eAAA,CACA,WAAA,CAID,qCACC,iCAAA,CACA,UAAA,CAGD,wCACC,eAAA,CACA,OAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,yCAAA,CAIF,mCACC,mCAAA,CDjHD,+BACC,eAAA,CACA,mCAAA,CAEA,wCACC,MAAA,CACA,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CAGD,sCACC,6BAAA,CACA,2BAAA,CACA,uBAAA",sourcesContent:["\n@import './shared/styles.scss';\n\n.footer {\n\t@include row;\n\t@include cell;\n\n\t&__cell {\n\t\tposition: sticky;\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t&--loading {\n\t\t\tleft: 0;\n\t\t\tmin-width: var(--avatar-cell-width);\n\t\t\twidth: var(--avatar-cell-width);\n\t\t\talign-items: center;\n\t\t\tpadding: 0;\n\t\t}\n\n\t\t&--count {\n\t\t\tleft: var(--avatar-cell-width);\n\t\t\tmin-width: var(--cell-width);\n\t\t\twidth: var(--cell-width);\n\t\t}\n\t}\n}\n","/**\n * @copyright 2023 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@mixin row {\n\tposition: relative;\n\tdisplay: flex;\n\tmin-width: 100%;\n\twidth: fit-content;\n\theight: var(--row-height);\n\tbackground-color: var(--color-main-background);\n}\n\n@mixin cell {\n\t&__cell {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\tpadding: 0 var(--cell-padding);\n\t\tmin-width: var(--cell-width);\n\t\twidth: var(--cell-width);\n\t\tcolor: var(--color-main-text);\n\n\t\tstrong,\n\t\tspan,\n\t\tlabel {\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow-wrap: anywhere;\n\t\t}\n\n\t\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\n\t\t\t&--avatar,\n\t\t\t&--displayname {\n\t\t\t\tposition: sticky;\n\t\t\t\tz-index: var(--sticky-column-z-index);\n\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t}\n\n\t\t\t&--avatar {\n\t\t\t\tleft: 0;\n\t\t\t}\n\n\t\t\t&--displayname {\n\t\t\t\tleft: var(--avatar-cell-width);\n\t\t\t\tborder-right: 1px solid var(--color-border);\n\t\t\t}\n\t\t}\n\n\t\t&--avatar {\n\t\t\tmin-width: var(--avatar-cell-width);\n\t\t\twidth: var(--avatar-cell-width);\n\t\t\talign-items: center;\n\t\t\tpadding: 0;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&--multiline {\n\t\t\tspan {\n\t\t\t\tline-height: 1.3em;\n\t\t\t\twhite-space: unset;\n\n\t\t\t\t@supports (-webkit-line-clamp: 2) {\n\t\t\t\t\tdisplay: -webkit-box;\n\t\t\t\t\t-webkit-line-clamp: 2;\n\t\t\t\t\t-webkit-box-orient: vertical;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&--large {\n\t\t\tmin-width: var(--cell-width-large);\n\t\t\twidth: var(--cell-width-large);\n\t\t}\n\n\t\t&--obfuscated {\n\t\t\tmin-width: 400px;\n\t\t\twidth: 400px;\n\t\t}\n\n\t\t// Fill remaining row space with cell\n\t\t&--fill {\n\t\t\tmin-width: var(--cell-width-large);\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t&--actions {\n\t\t\tposition: sticky;\n\t\t\tright: 0;\n\t\t\tz-index: var(--sticky-column-z-index);\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: row;\n\t\t\talign-items: center;\n\t\t\tmin-width: 110px;\n\t\t\twidth: 110px;\n\t\t\tbackground-color: var(--color-main-background);\n\t\t\tborder-left: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t&__subtitle {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n}\n"],sourceRoot:""}]);const o=r},26893:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),n=s.n(a),i=s(76314),r=s.n(i)()(n());r.push([t.id,"fieldset[data-v-ab9299ba]{font-weight:bold}","",{version:3,sources:["webpack://./apps/settings/src/components/Users/UserSettingsDialog.vue"],names:[],mappings:"AACA,0BACC,gBAAA",sourcesContent:["\nfieldset {\n\tfont-weight: bold;\n}\n"],sourceRoot:""}]);const o=r},27514:t=>{t.exports="data:image/svg+xml,%3c%21--%20-%20SPDX-FileCopyrightText:%202020%20Google%20Inc.%20-%20SPDX-License-Identifier:%20Apache-2.0%20--%3e%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M18.4%207.4L17%206l-6%206%206%206%201.4-1.4-4.6-4.6%204.6-4.6m-6%200L11%206l-6%206%206%206%201.4-1.4L7.8%2012l4.6-4.6z%27/%3e%3c/svg%3e"},27518:t=>{t.exports="data:image/svg+xml,%3c%21--%20-%20SPDX-FileCopyrightText:%202020%20Google%20Inc.%20-%20SPDX-License-Identifier:%20Apache-2.0%20--%3e%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M15.4%2016.6L10.8%2012l4.6-4.6L14%206l-6%206%206%206%201.4-1.4z%27/%3e%3c/svg%3e"},41170:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),n=s.n(a),i=s(76314),r=s.n(i)()(n());r.push([t.id,".account-management__system-list[data-v-413f2c9e]{height:auto !important;overflow:visible !important}.account-management__group-list[data-v-413f2c9e]{height:100% !important}.account-management__settings-toggle[data-v-413f2c9e]{margin-bottom:12px}","",{version:3,sources:["webpack://./apps/settings/src/views/UserManagementNavigation.vue"],names:[],mappings:"AAEC,kDACC,sBAAA,CACA,2BAAA,CAGD,iDACC,sBAAA,CAGD,sDACC,kBAAA",sourcesContent:["\n.account-management{\n\t&__system-list {\n\t\theight: auto !important;\n\t\toverflow: visible !important;\n\t}\n\n\t&__group-list {\n\t\theight: 100% !important;\n\t}\n\n\t&__settings-toggle {\n\t\tmargin-bottom: 12px;\n\t}\n}\n"],sourceRoot:""}]);const o=r},59645:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),n=s.n(a),i=s(76314),r=s.n(i)()(n());r.push([t.id,".empty[data-v-0e745d5e] .icon-vue{width:64px;height:64px}.empty[data-v-0e745d5e] .icon-vue svg{max-width:64px;max-height:64px}","",{version:3,sources:["webpack://./apps/settings/src/components/UserList.vue"],names:[],mappings:"AAKE,kCACC,UAAA,CACA,WAAA,CAEA,sCACC,cAAA,CACA,eAAA",sourcesContent:["\n@import './Users/shared/styles.scss';\n\n.empty {\n\t:deep {\n\t\t.icon-vue {\n\t\t\twidth: 64px;\n\t\t\theight: 64px;\n\n\t\t\tsvg {\n\t\t\t\tmax-width: 64px;\n\t\t\t\tmax-height: 64px;\n\t\t\t}\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const o=r},67020:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),n=s.n(a),i=s(76314),r=s.n(i)()(n());r.push([t.id,".user-list__row[data-v-6615a81e]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.user-list__row[data-v-6615a81e]:hover{background-color:var(--color-background-hover)}.user-list__row:hover .row__cell[data-v-6615a81e]:not(.row__cell--actions){background-color:var(--color-background-hover)}.user-list__row .select--fill[data-v-6615a81e]{max-width:calc(var(--cell-width-large) - 2*var(--cell-padding))}.row__cell[data-v-6615a81e]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.row__cell strong[data-v-6615a81e],.row__cell span[data-v-6615a81e],.row__cell label[data-v-6615a81e]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.row__cell--avatar[data-v-6615a81e],.row__cell--displayname[data-v-6615a81e]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.row__cell--avatar[data-v-6615a81e]{left:0}.row__cell--displayname[data-v-6615a81e]{left:var(--avatar-cell-width);border-right:1px solid var(--color-border)}}.row__cell--avatar[data-v-6615a81e]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.row__cell--multiline span[data-v-6615a81e]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.row__cell--multiline span[data-v-6615a81e]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.row__cell--large[data-v-6615a81e]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.row__cell--obfuscated[data-v-6615a81e]{min-width:400px;width:400px}.row__cell--fill[data-v-6615a81e]{min-width:var(--cell-width-large);width:100%}.row__cell--actions[data-v-6615a81e]{position:sticky;right:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-left:1px solid var(--color-border)}.row__subtitle[data-v-6615a81e]{color:var(--color-text-maxcontrast)}.row__cell[data-v-6615a81e]{border-bottom:1px solid var(--color-border)}.row__cell[data-v-6615a81e] .v-select.select{min-width:var(--cell-min-width)}.row__progress[data-v-6615a81e]{margin-top:4px}.row__progress--warn[data-v-6615a81e]::-moz-progress-bar{background:var(--color-warning) !important}.row__progress--warn[data-v-6615a81e]::-webkit-progress-value{background:var(--color-warning) !important}","",{version:3,sources:["webpack://./apps/settings/src/components/Users/UserRow.vue","webpack://./apps/settings/src/components/Users/shared/styles.scss"],names:[],mappings:"AAGA,iCCoBC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CDtBA,uCACC,8CAAA,CAEA,2EACC,8CAAA,CAKF,+CACC,+DAAA,CCgBD,4BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,sGAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,6EAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,oCACC,MAAA,CAGD,yCACC,6BAAA,CACA,0CAAA,CAAA,CAIF,oCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,4CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,4CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,mCACC,iCAAA,CACA,6BAAA,CAGD,wCACC,eAAA,CACA,WAAA,CAID,kCACC,iCAAA,CACA,UAAA,CAGD,qCACC,eAAA,CACA,OAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,yCAAA,CAIF,gCACC,mCAAA,CDjGD,4BACC,2CAAA,CAGC,6CACC,+BAAA,CAKH,gCACC,cAAA,CAGC,yDACC,0CAAA,CAED,8DACC,0CAAA",sourcesContent:["\n@import './shared/styles.scss';\n\n.user-list__row {\n\t@include row;\n\n\t&:hover {\n\t\tbackground-color: var(--color-background-hover);\n\n\t\t.row__cell:not(.row__cell--actions) {\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t}\n\t}\n\n\t// Limit width of select in fill cell\n\t.select--fill {\n\t\tmax-width: calc(var(--cell-width-large) - (2 * var(--cell-padding)));\n\t}\n}\n\n.row {\n\t@include cell;\n\n\t&__cell {\n\t\tborder-bottom: 1px solid var(--color-border);\n\n\t\t:deep {\n\t\t\t.v-select.select {\n\t\t\t\tmin-width: var(--cell-min-width);\n\t\t\t}\n\t\t}\n\t}\n\n\t&__progress {\n\t\tmargin-top: 4px;\n\n\t\t&--warn {\n\t\t\t&::-moz-progress-bar {\n\t\t\t\tbackground: var(--color-warning) !important;\n\t\t\t}\n\t\t\t&::-webkit-progress-value {\n\t\t\t\tbackground: var(--color-warning) !important;\n\t\t\t}\n\t\t}\n\t}\n}\n","/**\n * @copyright 2023 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@mixin row {\n\tposition: relative;\n\tdisplay: flex;\n\tmin-width: 100%;\n\twidth: fit-content;\n\theight: var(--row-height);\n\tbackground-color: var(--color-main-background);\n}\n\n@mixin cell {\n\t&__cell {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\tpadding: 0 var(--cell-padding);\n\t\tmin-width: var(--cell-width);\n\t\twidth: var(--cell-width);\n\t\tcolor: var(--color-main-text);\n\n\t\tstrong,\n\t\tspan,\n\t\tlabel {\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow-wrap: anywhere;\n\t\t}\n\n\t\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\n\t\t\t&--avatar,\n\t\t\t&--displayname {\n\t\t\t\tposition: sticky;\n\t\t\t\tz-index: var(--sticky-column-z-index);\n\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t}\n\n\t\t\t&--avatar {\n\t\t\t\tleft: 0;\n\t\t\t}\n\n\t\t\t&--displayname {\n\t\t\t\tleft: var(--avatar-cell-width);\n\t\t\t\tborder-right: 1px solid var(--color-border);\n\t\t\t}\n\t\t}\n\n\t\t&--avatar {\n\t\t\tmin-width: var(--avatar-cell-width);\n\t\t\twidth: var(--avatar-cell-width);\n\t\t\talign-items: center;\n\t\t\tpadding: 0;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&--multiline {\n\t\t\tspan {\n\t\t\t\tline-height: 1.3em;\n\t\t\t\twhite-space: unset;\n\n\t\t\t\t@supports (-webkit-line-clamp: 2) {\n\t\t\t\t\tdisplay: -webkit-box;\n\t\t\t\t\t-webkit-line-clamp: 2;\n\t\t\t\t\t-webkit-box-orient: vertical;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&--large {\n\t\t\tmin-width: var(--cell-width-large);\n\t\t\twidth: var(--cell-width-large);\n\t\t}\n\n\t\t&--obfuscated {\n\t\t\tmin-width: 400px;\n\t\t\twidth: 400px;\n\t\t}\n\n\t\t// Fill remaining row space with cell\n\t\t&--fill {\n\t\t\tmin-width: var(--cell-width-large);\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t&--actions {\n\t\t\tposition: sticky;\n\t\t\tright: 0;\n\t\t\tz-index: var(--sticky-column-z-index);\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: row;\n\t\t\talign-items: center;\n\t\t\tmin-width: 110px;\n\t\t\twidth: 110px;\n\t\t\tbackground-color: var(--color-main-background);\n\t\t\tborder-left: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t&__subtitle {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n}\n"],sourceRoot:""}]);const o=r},73599:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),n=s.n(a),i=s(76314),r=s.n(i)()(n());r.push([t.id,".app-content[data-v-fc8857fc]{display:flex;overflow:hidden;flex-direction:column;max-height:100%}","",{version:3,sources:["webpack://./apps/settings/src/views/UserManagement.vue"],names:[],mappings:"AACA,8BAEC,YAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA",sourcesContent:["\n.app-content {\n\t// Virtual list needs to be full height and is scrollable\n\tdisplay: flex;\n\toverflow: hidden;\n\tflex-direction: column;\n\tmax-height: 100%;\n}\n"],sourceRoot:""}]);const o=r},73895:(e,s,a)=>{a.r(s),a.d(s,{default:()=>lt});var n=a(85471),i=a(9165),r=a(85168),o=a(53334),l=a(44131),d=a(11488),c=a(42530),u=a(73945),A=a(52439),g=a(27345),p=a(41907),h=a(32051),m=a(85947),C=a(6695),w=a(59892),v=a(54914),f=a(57505),_=a(38653),b=a(40083),y=a(43261),x=a(79759),k=a(2413);const S={name:"GroupListItem",components:{AccountGroup:y.A,Delete:x.A,Fragment:v.F,NcActionButton:f.A,NcActionInput:l.A,NcAppNavigationItem:A.A,NcButton:h.A,NcCounterBubble:m.A,NcModal:_.A,NcNoteCard:b.A,Pencil:k.A},props:{active:{type:Boolean,required:!0},count:{type:Number,default:null},id:{type:String,required:!0},name:{type:String,required:!0}},data:()=>({loadingRenameGroup:!1,openGroupMenu:!1,showRemoveGroupModal:!1}),computed:{settings(){return this.$store.getters.getServerData}},methods:{handleGroupMenuOpen(){this.openGroupMenu=!0},async renameGroup(t){if(""===t.trim())return;const e=this.$refs.displayNameInput.$el.querySelector('input[type="text"]').value;if(""!==e.trim())try{this.openGroupMenu=!1,this.loadingRenameGroup=!0,await this.$store.dispatch("renameGroup",{groupid:t.trim(),displayName:e.trim()}),this.loadingRenameGroup=!1}catch{this.openGroupMenu=!0,this.loadingRenameGroup=!1}},async removeGroup(){try{await this.$store.dispatch("removeGroup",this.id),this.showRemoveGroupModal=!1}catch(e){(0,r.Qg)(t("settings",'Failed to remove group "{group}"',{group:this.name}))}}}};var U=a(85072),G=a.n(U),N=a(97825),L=a.n(N),B=a(77659),D=a.n(B),I=a(55056),q=a.n(I),O=a(10540),M=a.n(O),$=a(41113),T=a.n($),P=a(96412),E={};E.styleTagTransform=T(),E.setAttributes=q(),E.insert=D().bind(null,"head"),E.domAPI=L(),E.insertStyleElement=M(),G()(P.A,E),P.A&&P.A.locals&&P.A.locals;var F=a(14486);const z=(0,F.A)(S,(function(){var t=this,e=t._self._c;return e("Fragment",[t.showRemoveGroupModal?e("NcModal",{on:{close:function(e){t.showRemoveGroupModal=!1}}},[e("div",{staticClass:"modal__content"},[e("h2",{staticClass:"modal__header"},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Please confirm the group removal"))+"\n\t\t\t")]),t._v(" "),e("NcNoteCard",{attrs:{type:"warning","show-alert":""}},[t._v("\n\t\t\t\t"+t._s(t.t("settings",'You are about to remove the group "{group}". The accounts will NOT be deleted.',{group:t.name}))+"\n\t\t\t")]),t._v(" "),e("div",{staticClass:"modal__button-row"},[e("NcButton",{attrs:{type:"secondary"},on:{click:function(e){t.showRemoveGroupModal=!1}}},[t._v("\n\t\t\t\t\t"+t._s(t.t("settings","Cancel"))+"\n\t\t\t\t")]),t._v(" "),e("NcButton",{attrs:{type:"primary"},on:{click:t.removeGroup}},[t._v("\n\t\t\t\t\t"+t._s(t.t("settings","Confirm"))+"\n\t\t\t\t")])],1)],1)]):t._e(),t._v(" "),e("NcAppNavigationItem",{key:t.id,attrs:{exact:!0,name:t.name,to:{name:"group",params:{selectedGroup:encodeURIComponent(t.id)}},loading:t.loadingRenameGroup,"menu-open":t.openGroupMenu},on:{"update:menuOpen":t.handleGroupMenuOpen},scopedSlots:t._u([{key:"icon",fn:function(){return[e("AccountGroup",{attrs:{size:20}})]},proxy:!0},{key:"counter",fn:function(){return[t.count?e("NcCounterBubble",{attrs:{type:t.active?"highlighted":void 0}},[t._v("\n\t\t\t\t"+t._s(t.count)+"\n\t\t\t")]):t._e()]},proxy:!0},{key:"actions",fn:function(){return["admin"!==t.id&&"disabled"!==t.id&&t.settings.isAdmin?e("NcActionInput",{ref:"displayNameInput",attrs:{"trailing-button-label":t.t("settings","Submit"),type:"text",value:t.name,label:t.t("settings","Rename group")},on:{submit:function(e){return t.renameGroup(t.id)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Pencil",{attrs:{size:20}})]},proxy:!0}],null,!1,580569589)}):t._e(),t._v(" "),"admin"!==t.id&&"disabled"!==t.id&&t.settings.isAdmin?e("NcActionButton",{on:{click:function(e){t.showRemoveGroupModal=!0}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Delete",{attrs:{size:20}})]},proxy:!0}],null,!1,2705356561)},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Remove group"))+"\n\t\t\t")]):t._e()]},proxy:!0}])})],1)}),[],!1,null,"17dd13c0",null).exports;var R=a(35810),Q=a(63814),W=a(65043),H=a(48766),Y=a(14727),j=a(32073),K=a(67607),V=a(15916),X=a(95668);const J={name:"UserSettingsDialog",components:{NcAppSettingsDialog:H.N,NcAppSettingsSection:Y.A,NcCheckboxRadioSwitch:j.A,NcNoteCard:b.A,NcSelect:K.A},props:{open:{type:Boolean,required:!0}},data:()=>({selectedQuota:!1,loadingSendMail:!1}),computed:{groupSorting:{get(){return this.$store.getters.getGroupSorting===V.q.GroupName?"name":"member-count"},set(t){this.$store.commit("setGroupSorting","name"===t?V.q.GroupName:V.q.UserCount)}},isGroupSortingEnforced(){return this.$store.getters.getServerData.forceSortGroupByName},isModalOpen:{get(){return this.open},set(t){this.$emit("update:open",t)}},showConfig(){return this.$store.getters.getShowConfig},settings(){return this.$store.getters.getServerData},showLanguages:{get(){return this.showConfig.showLanguages},set(t){this.setShowConfig("showLanguages",t)}},showLastLogin:{get(){return this.showConfig.showLastLogin},set(t){this.setShowConfig("showLastLogin",t)}},showUserBackend:{get(){return this.showConfig.showUserBackend},set(t){this.setShowConfig("showUserBackend",t)}},showStoragePath:{get(){return this.showConfig.showStoragePath},set(t){this.setShowConfig("showStoragePath",t)}},quotaOptions(){const t=this.settings.quotaPreset.reduce(((t,e)=>t.concat({id:e,label:e})),[]);return this.settings.allowUnlimitedQuota&&t.unshift(X.SA),t},defaultQuota:{get(){return!1!==this.selectedQuota?this.selectedQuota:this.settings.defaultQuota!==X.SA.id&&OC.Util.computerFileSize(this.settings.defaultQuota)>=0?{id:this.settings.defaultQuota,label:this.settings.defaultQuota}:X.SA},set(t){this.selectedQuota=t}},sendWelcomeMail:{get(){return this.settings.newUserSendEmail},async set(t){try{this.loadingSendMail=!0,this.$store.commit("setServerData",{...this.settings,newUserSendEmail:t}),await W.Ay.post((0,Q.Jv)("/settings/users/preferences/newUser.sendEmail"),{value:t?"yes":"no"})}catch(t){console.error("could not update newUser.sendEmail preference: "+t.message,t)}finally{this.loadingSendMail=!1}}}},methods:{setShowConfig(t,e){this.$store.commit("setShowConfig",{key:t,value:e})},validateQuota:t=>("object"==typeof t&&(t=t?.id||t.label),null===(0,R.lT)(t)?X.SA:{id:t=(0,R.v7)((0,R.lT)(t)),label:t}),setDefaultQuota(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"none";"none"===t&&(t=X.SA),this.$store.dispatch("setAppConfig",{app:"files",key:"default_quota",value:t.id?t.id:t}).then((()=>{"object"!=typeof t&&(t={id:t,label:t}),this.defaultQuota=t}))}}};var Z=a(26893),tt={};tt.styleTagTransform=T(),tt.setAttributes=q(),tt.insert=D().bind(null,"head"),tt.domAPI=L(),tt.insertStyleElement=M(),G()(Z.A,tt),Z.A&&Z.A.locals&&Z.A.locals;const et=(0,F.A)(J,(function(){var t=this,e=t._self._c;return e("NcAppSettingsDialog",{attrs:{open:t.isModalOpen,"show-navigation":!0,name:t.t("settings","Account management settings")},on:{"update:open":function(e){t.isModalOpen=e}}},[e("NcAppSettingsSection",{attrs:{id:"visibility-settings",name:t.t("settings","Visibility")}},[e("NcCheckboxRadioSwitch",{attrs:{type:"switch","data-test":"showLanguages",checked:t.showLanguages},on:{"update:checked":function(e){t.showLanguages=e}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Show language"))+"\n\t\t")]),t._v(" "),e("NcCheckboxRadioSwitch",{attrs:{type:"switch","data-test":"showUserBackend",checked:t.showUserBackend},on:{"update:checked":function(e){t.showUserBackend=e}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Show account backend"))+"\n\t\t")]),t._v(" "),e("NcCheckboxRadioSwitch",{attrs:{type:"switch","data-test":"showStoragePath",checked:t.showStoragePath},on:{"update:checked":function(e){t.showStoragePath=e}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Show storage path"))+"\n\t\t")]),t._v(" "),e("NcCheckboxRadioSwitch",{attrs:{type:"switch","data-test":"showLastLogin",checked:t.showLastLogin},on:{"update:checked":function(e){t.showLastLogin=e}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Show last login"))+"\n\t\t")])],1),t._v(" "),e("NcAppSettingsSection",{attrs:{id:"groups-sorting",name:t.t("settings","Sorting")}},[t.isGroupSortingEnforced?e("NcNoteCard",{attrs:{type:"warning"}},[t._v("\n\t\t\t"+t._s(t.t("settings","The system config enforces sorting the groups by name. This also disables showing the member count."))+"\n\t\t")]):t._e(),t._v(" "),e("fieldset",[e("legend",[t._v(t._s(t.t("settings","Group list sorting")))]),t._v(" "),e("NcCheckboxRadioSwitch",{attrs:{type:"radio",checked:t.groupSorting,"data-test":"sortGroupsByMemberCount",disabled:t.isGroupSortingEnforced,name:"group-sorting-mode",value:"member-count"},on:{"update:checked":function(e){t.groupSorting=e}}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","By member count"))+"\n\t\t\t")]),t._v(" "),e("NcCheckboxRadioSwitch",{attrs:{type:"radio",checked:t.groupSorting,"data-test":"sortGroupsByName",disabled:t.isGroupSortingEnforced,name:"group-sorting-mode",value:"name"},on:{"update:checked":function(e){t.groupSorting=e}}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","By name"))+"\n\t\t\t")])],1)],1),t._v(" "),e("NcAppSettingsSection",{attrs:{id:"email-settings",name:t.t("settings","Send email")}},[e("NcCheckboxRadioSwitch",{attrs:{type:"switch","data-test":"sendWelcomeMail",checked:t.sendWelcomeMail,disabled:t.loadingSendMail},on:{"update:checked":function(e){t.sendWelcomeMail=e}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Send welcome email to new accounts"))+"\n\t\t")])],1),t._v(" "),e("NcAppSettingsSection",{attrs:{id:"default-settings",name:t.t("settings","Defaults")}},[e("NcSelect",{attrs:{"input-label":t.t("settings","Default quota"),placement:"top",taggable:!0,options:t.quotaOptions,"create-option":t.validateQuota,placeholder:t.t("settings","Select default quota"),clearable:!1},on:{"option:selected":t.setDefaultQuota},model:{value:t.defaultQuota,callback:function(e){t.defaultQuota=e},expression:"defaultQuota"}})],1)],1)}),[],!1,null,"ab9299ba",null).exports;var st=a(31755),at=a(24387);function nt(t){return void 0===t?null:{id:t.id,title:t.name,usercount:t.usercount,count:Math.max(0,t.usercount-t.disabled)}}const it=(0,n.pM)({__name:"UserManagementNavigation",setup(t){const e=(0,at.lq)(),s=(0,at.rd)(),a=(0,st.P)(),v=(0,n.KR)(!1),f=(0,n.EW)((()=>e.params?.selectedGroup)),_=(0,n.EW)((()=>f.value?decodeURIComponent(f.value):null)),b=(0,n.EW)((()=>a.getters.getUserCount)),y=(0,n.EW)((()=>a.getters.getSortedGroups)),{adminGroup:x,disabledGroup:k,userGroups:S}=(t=>{const e=(0,n.EW)((()=>t.value.filter((t=>"disabled"!==t.id&&"admin"!==t.id)).map((t=>nt(t))).filter((t=>null!==t))));return{adminGroup:(0,n.EW)((()=>nt(t.value.find((t=>"admin"===t.id))))),disabledGroup:(0,n.EW)((()=>nt(t.value.find((t=>"disabled"===t.id))))),userGroups:e}})(y),U=(0,n.EW)((()=>a.getters.getServerData)),G=(0,n.EW)((()=>U.value.isAdmin||U.value.isDelegatedAdmin)),N=(0,n.KR)(!1),L=(0,n.KR)(!1),B=(0,n.KR)(!1),D=(0,n.KR)("");return{__sfc:!0,route:e,router:s,store:a,isDialogOpen:v,selectedGroup:f,selectedGroupDecoded:_,userCount:b,groups:y,adminGroup:x,disabledGroup:k,userGroups:S,settings:U,isAdminOrDelegatedAdmin:G,isAddGroupOpen:N,loadingAddGroup:L,hasAddGroupError:B,newGroupName:D,createGroup:async function(){B.value=!1;const t=D.value.trim();if(""!==t){N.value=!1,L.value=!0;try{await a.dispatch("addGroup",t),await s.push({name:"group",params:{selectedGroup:encodeURIComponent(t)}}),D.value=""}catch{(0,r.Qg)((0,o.Tl)("settings","Failed to create group"))}L.value=!1}else B.value=!0},showNewUserMenu:function(){a.commit("setShowConfig",{key:"showNewUserForm",value:!0})},mdiAccount:i.Gbn,mdiAccountGroup:i.n7C,mdiAccountOff:i.lBC,mdiCog:i.CZ3,mdiPlus:i.biz,mdiShieldAccount:i.Jey,t:o.Tl,NcActionInput:l.A,NcActionText:d.A,NcAppNavigation:c.A,NcAppNavigationCaption:u.N,NcAppNavigationItem:A.A,NcAppNavigationList:g.A,NcAppNavigationNew:p.A,NcButton:h.A,NcCounterBubble:m.A,NcIconSvgWrapper:C.A,NcLoadingIcon:w.A,GroupListItem:z,UserSettingsDialog:et}}});var rt=a(41170),ot={};ot.styleTagTransform=T(),ot.setAttributes=q(),ot.insert=D().bind(null,"head"),ot.domAPI=L(),ot.insertStyleElement=M(),G()(rt.A,ot),rt.A&&rt.A.locals&&rt.A.locals;const lt=(0,F.A)(it,(function(){var t=this,e=t._self._c,s=t._self._setupProxy;return e(s.NcAppNavigation,{attrs:{"aria-label":s.t("settings","Account management")},scopedSlots:t._u([{key:"footer",fn:function(){return[e(s.NcButton,{staticClass:"account-management__settings-toggle",attrs:{type:"tertiary"},on:{click:function(t){s.isDialogOpen=!0}},scopedSlots:t._u([{key:"icon",fn:function(){return[e(s.NcIconSvgWrapper,{attrs:{path:s.mdiCog}})]},proxy:!0}])},[t._v("\n\t\t\t"+t._s(s.t("settings","Account management settings"))+"\n\t\t")]),t._v(" "),e(s.UserSettingsDialog,{attrs:{open:s.isDialogOpen},on:{"update:open":function(t){s.isDialogOpen=t}}})]},proxy:!0}])},[e(s.NcAppNavigationNew,{attrs:{"button-id":"new-user-button",text:s.t("settings","New account")},on:{click:s.showNewUserMenu,keyup:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:s.showNewUserMenu.apply(null,arguments)},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"space",32,e.key,[" ","Spacebar"])?null:s.showNewUserMenu.apply(null,arguments)}]},scopedSlots:t._u([{key:"icon",fn:function(){return[e(s.NcIconSvgWrapper,{attrs:{path:s.mdiPlus}})]},proxy:!0}])}),t._v(" "),e(s.NcAppNavigationList,{staticClass:"account-management__system-list",attrs:{"data-cy-users-settings-navigation-groups":"system"}},[e(s.NcAppNavigationItem,{attrs:{id:"everyone",exact:!0,name:s.t("settings","Active accounts"),to:{name:"users"}},scopedSlots:t._u([{key:"icon",fn:function(){return[e(s.NcIconSvgWrapper,{attrs:{path:s.mdiAccount}})]},proxy:!0},{key:"counter",fn:function(){return[s.userCount?e(s.NcCounterBubble,{attrs:{type:s.selectedGroupDecoded?void 0:"highlighted"}},[t._v("\n\t\t\t\t\t"+t._s(s.userCount)+"\n\t\t\t\t")]):t._e()]},proxy:!0}])}),t._v(" "),s.settings.isAdmin?e(s.NcAppNavigationItem,{attrs:{id:"admin",exact:!0,name:s.t("settings","Admins"),to:{name:"group",params:{selectedGroup:"admin"}}},scopedSlots:t._u([{key:"icon",fn:function(){return[e(s.NcIconSvgWrapper,{attrs:{path:s.mdiShieldAccount}})]},proxy:!0},{key:"counter",fn:function(){return[s.adminGroup&&s.adminGroup.count>0?e(s.NcCounterBubble,{attrs:{type:"admin"===s.selectedGroupDecoded?"highlighted":void 0}},[t._v("\n\t\t\t\t\t"+t._s(s.adminGroup.count)+"\n\t\t\t\t")]):t._e()]},proxy:!0}],null,!1,2218088905)}):t._e(),t._v(" "),s.disabledGroup&&(s.disabledGroup.usercount>0||-1===s.disabledGroup.usercount)?e(s.NcAppNavigationItem,{attrs:{id:"disabled",exact:!0,name:s.t("settings","Disabled accounts"),to:{name:"group",params:{selectedGroup:"disabled"}}},scopedSlots:t._u([{key:"icon",fn:function(){return[e(s.NcIconSvgWrapper,{attrs:{path:s.mdiAccountOff}})]},proxy:!0},s.disabledGroup.usercount>0?{key:"counter",fn:function(){return[e(s.NcCounterBubble,{attrs:{type:"disabled"===s.selectedGroupDecoded?"highlighted":void 0}},[t._v("\n\t\t\t\t\t"+t._s(s.disabledGroup.usercount)+"\n\t\t\t\t")])]},proxy:!0}:null],null,!0)}):t._e()],1),t._v(" "),e(s.NcAppNavigationCaption,{attrs:{name:s.t("settings","Groups"),disabled:s.loadingAddGroup,"aria-label":s.loadingAddGroup?s.t("settings","Creating group…"):s.t("settings","Create group"),"force-menu":"","is-heading":"",open:s.isAddGroupOpen},on:{"update:open":function(t){s.isAddGroupOpen=t}},scopedSlots:t._u([s.isAdminOrDelegatedAdmin?{key:"actionsTriggerIcon",fn:function(){return[s.loadingAddGroup?e(s.NcLoadingIcon):e(s.NcIconSvgWrapper,{attrs:{path:s.mdiPlus}})]},proxy:!0}:null,s.isAdminOrDelegatedAdmin?{key:"actions",fn:function(){return[e(s.NcActionText,{scopedSlots:t._u([{key:"icon",fn:function(){return[e(s.NcIconSvgWrapper,{attrs:{path:s.mdiAccountGroup}})]},proxy:!0}],null,!1,3607647275)},[t._v("\n\t\t\t\t"+t._s(s.t("settings","Create group"))+"\n\t\t\t")]),t._v(" "),e(s.NcActionInput,{attrs:{label:s.t("settings","Group name"),"data-cy-users-settings-new-group-name":"","label-outside":!1,disabled:s.loadingAddGroup,value:s.newGroupName,error:s.hasAddGroupError,"helper-text":s.hasAddGroupError?s.t("settings","Please enter a valid group name"):""},on:{"update:value":function(t){s.newGroupName=t},submit:s.createGroup}})]},proxy:!0}:null],null,!0)}),t._v(" "),e(s.NcAppNavigationList,{staticClass:"account-management__group-list",attrs:{"data-cy-users-settings-navigation-groups":"custom"}},t._l(s.userGroups,(function(t){return e(s.GroupListItem,{key:t.id,attrs:{id:t.id,active:s.selectedGroupDecoded===t.id,name:t.title,count:t.count}})})),1)],1)}),[],!1,null,"413f2c9e",null).exports},77024:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),n=s.n(a),i=s(76314),r=s.n(i)()(n());r.push([t.id,".header[data-v-69afa821]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background);border-bottom:1px solid var(--color-border)}.header__cell[data-v-69afa821]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.header__cell strong[data-v-69afa821],.header__cell span[data-v-69afa821],.header__cell label[data-v-69afa821]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.header__cell--avatar[data-v-69afa821],.header__cell--displayname[data-v-69afa821]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.header__cell--avatar[data-v-69afa821]{left:0}.header__cell--displayname[data-v-69afa821]{left:var(--avatar-cell-width);border-right:1px solid var(--color-border)}}.header__cell--avatar[data-v-69afa821]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.header__cell--multiline span[data-v-69afa821]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.header__cell--multiline span[data-v-69afa821]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.header__cell--large[data-v-69afa821]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.header__cell--obfuscated[data-v-69afa821]{min-width:400px;width:400px}.header__cell--fill[data-v-69afa821]{min-width:var(--cell-width-large);width:100%}.header__cell--actions[data-v-69afa821]{position:sticky;right:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-left:1px solid var(--color-border)}.header__subtitle[data-v-69afa821]{color:var(--color-text-maxcontrast)}","",{version:3,sources:["webpack://./apps/settings/src/components/Users/UserListHeader.vue","webpack://./apps/settings/src/components/Users/shared/styles.scss"],names:[],mappings:"AAGA,yBCoBC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CDrBA,2CAAA,CCyBA,+BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,+GAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,mFAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,uCACC,MAAA,CAGD,4CACC,6BAAA,CACA,0CAAA,CAAA,CAIF,uCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,+CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,+CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,sCACC,iCAAA,CACA,6BAAA,CAGD,2CACC,eAAA,CACA,WAAA,CAID,qCACC,iCAAA,CACA,UAAA,CAGD,wCACC,eAAA,CACA,OAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,yCAAA,CAIF,mCACC,mCAAA",sourcesContent:["\n@import './shared/styles.scss';\n\n.header {\n\t@include row;\n\t@include cell;\n\n\tborder-bottom: 1px solid var(--color-border);\n}\n","/**\n * @copyright 2023 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@mixin row {\n\tposition: relative;\n\tdisplay: flex;\n\tmin-width: 100%;\n\twidth: fit-content;\n\theight: var(--row-height);\n\tbackground-color: var(--color-main-background);\n}\n\n@mixin cell {\n\t&__cell {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\tpadding: 0 var(--cell-padding);\n\t\tmin-width: var(--cell-width);\n\t\twidth: var(--cell-width);\n\t\tcolor: var(--color-main-text);\n\n\t\tstrong,\n\t\tspan,\n\t\tlabel {\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow-wrap: anywhere;\n\t\t}\n\n\t\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\n\t\t\t&--avatar,\n\t\t\t&--displayname {\n\t\t\t\tposition: sticky;\n\t\t\t\tz-index: var(--sticky-column-z-index);\n\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t}\n\n\t\t\t&--avatar {\n\t\t\t\tleft: 0;\n\t\t\t}\n\n\t\t\t&--displayname {\n\t\t\t\tleft: var(--avatar-cell-width);\n\t\t\t\tborder-right: 1px solid var(--color-border);\n\t\t\t}\n\t\t}\n\n\t\t&--avatar {\n\t\t\tmin-width: var(--avatar-cell-width);\n\t\t\twidth: var(--avatar-cell-width);\n\t\t\talign-items: center;\n\t\t\tpadding: 0;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&--multiline {\n\t\t\tspan {\n\t\t\t\tline-height: 1.3em;\n\t\t\t\twhite-space: unset;\n\n\t\t\t\t@supports (-webkit-line-clamp: 2) {\n\t\t\t\t\tdisplay: -webkit-box;\n\t\t\t\t\t-webkit-line-clamp: 2;\n\t\t\t\t\t-webkit-box-orient: vertical;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&--large {\n\t\t\tmin-width: var(--cell-width-large);\n\t\t\twidth: var(--cell-width-large);\n\t\t}\n\n\t\t&--obfuscated {\n\t\t\tmin-width: 400px;\n\t\t\twidth: 400px;\n\t\t}\n\n\t\t// Fill remaining row space with cell\n\t\t&--fill {\n\t\t\tmin-width: var(--cell-width-large);\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t&--actions {\n\t\t\tposition: sticky;\n\t\t\tright: 0;\n\t\t\tz-index: var(--sticky-column-z-index);\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: row;\n\t\t\talign-items: center;\n\t\t\tmin-width: 110px;\n\t\t\twidth: 110px;\n\t\t\tbackground-color: var(--color-main-background);\n\t\t\tborder-left: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t&__subtitle {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n}\n"],sourceRoot:""}]);const o=r},79722:t=>{t.exports="data:image/svg+xml,%3c%21--%20-%20SPDX-FileCopyrightText:%202020%20Google%20Inc.%20-%20SPDX-License-Identifier:%20Apache-2.0%20--%3e%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M5.6%207.4L7%206l6%206-6%206-1.4-1.4%204.6-4.6-4.6-4.6m6%200L13%206l6%206-6%206-1.4-1.4%204.6-4.6-4.6-4.6z%27/%3e%3c/svg%3e"},86886:t=>{t.exports="data:image/svg+xml,%3c%21--%20-%20SPDX-FileCopyrightText:%202020%20Google%20Inc.%20-%20SPDX-License-Identifier:%20Apache-2.0%20--%3e%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M8.6%2016.6l4.6-4.6-4.6-4.6L10%206l6%206-6%206-1.4-1.4z%27/%3e%3c/svg%3e"},95668:(e,s,a)=>{a.d(s,{HK:()=>r,MY:()=>i,SA:()=>n});const n={id:"none",label:t("settings","Unlimited")},i={id:"default",label:t("settings","Default quota")},r=t=>{const e=Object.keys(t);return 1===e.length&&"id"===e.at(0)}},96412:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),n=s.n(a),i=s(76314),r=s.n(i)()(n());r.push([t.id,".modal__header[data-v-17dd13c0]{margin:0}.modal__content[data-v-17dd13c0]{display:flex;flex-direction:column;align-items:center;padding:20px;gap:4px 0}.modal__button-row[data-v-17dd13c0]{display:flex;width:100%;justify-content:space-between}","",{version:3,sources:["webpack://./apps/settings/src/components/GroupListItem.vue"],names:[],mappings:"AAEC,gCACC,QAAA,CAGD,iCACC,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,YAAA,CACA,SAAA,CAGD,oCACC,YAAA,CACA,UAAA,CACA,6BAAA",sourcesContent:["\n.modal {\n\t&__header {\n\t\tmargin: 0;\n\t}\n\n\t&__content {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\tpadding: 20px;\n\t\tgap: 4px 0;\n\t}\n\n\t&__button-row {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\tjustify-content: space-between;\n\t}\n}\n"],sourceRoot:""}]);const o=r}}]); +//# sourceMappingURL=settings-users-3239.js.map?v=64f2f5050610c76d9879 \ No newline at end of file diff --git a/dist/settings-users-3239.js.map b/dist/settings-users-3239.js.map index d84e2d106e076..6bb64f883f27e 100644 --- a/dist/settings-users-3239.js.map +++ b/dist/settings-users-3239.js.map @@ -1 +1 @@ -{"version":3,"file":"settings-users-3239.js?v=c885b5e954837f484701","mappings":"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","sources":["webpack:///nextcloud/apps/settings/src/components/Users/VirtualList.vue?vue&type=style&index=0&id=de721376&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/NewUserModal.vue?vue&type=style&index=0&id=2fe7d69f&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/UserListFooter.vue?vue&type=style&index=0&id=3ec0b16a&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/UserSettingsDialog.vue?vue&type=style&index=0&id=ab9299ba&prod&scoped=true&lang=scss","webpack://nextcloud/./apps/settings/src/views/UserManagement.vue?4b28","webpack:///nextcloud/node_modules/@vueuse/components/node_modules/vue-demi/lib/index.mjs","webpack:///nextcloud/node_modules/@vueuse/components/index.mjs","webpack:///nextcloud/apps/settings/src/components/Users/VirtualList.vue","webpack:///nextcloud/apps/settings/src/components/Users/VirtualList.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/settings/src/components/Users/VirtualList.vue?e74c","webpack://nextcloud/./apps/settings/src/components/Users/VirtualList.vue?1915","webpack://nextcloud/./apps/settings/src/components/Users/NewUserModal.vue?6ea8","webpack:///nextcloud/apps/settings/src/components/Users/NewUserModal.vue","webpack:///nextcloud/apps/settings/src/components/Users/NewUserModal.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/Users/NewUserModal.vue?daab","webpack://nextcloud/./apps/settings/src/components/Users/NewUserModal.vue?0748","webpack:///nextcloud/apps/settings/src/components/Users/UserListFooter.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/settings/src/components/Users/UserListFooter.vue","webpack://nextcloud/./apps/settings/src/components/Users/UserListFooter.vue?2405","webpack://nextcloud/./apps/settings/src/components/Users/UserListFooter.vue?b843","webpack:///nextcloud/apps/settings/src/components/Users/UserListHeader.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/settings/src/components/Users/UserListHeader.vue","webpack://nextcloud/./apps/settings/src/components/Users/UserListHeader.vue?b533","webpack://nextcloud/./apps/settings/src/components/Users/UserListHeader.vue?758a","webpack://nextcloud/./apps/settings/src/components/Users/UserRow.vue?5434","webpack:///nextcloud/apps/settings/src/components/Users/UserRowActions.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/settings/src/components/Users/UserRowActions.vue","webpack://nextcloud/./apps/settings/src/components/Users/UserRowActions.vue?3c2a","webpack:///nextcloud/apps/settings/src/mixins/UserRowMixin.js","webpack:///nextcloud/apps/settings/src/components/Users/UserRow.vue","webpack:///nextcloud/apps/settings/src/components/Users/UserRow.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/Users/UserRow.vue?ef05","webpack://nextcloud/./apps/settings/src/components/Users/UserRow.vue?eb6e","webpack:///nextcloud/apps/settings/src/components/UserList.vue","webpack:///nextcloud/apps/settings/src/components/UserList.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/UserList.vue?b995","webpack://nextcloud/./apps/settings/src/components/UserList.vue?02a4","webpack://nextcloud/./apps/settings/src/components/UserList.vue?c96e","webpack:///nextcloud/apps/settings/src/views/UserManagement.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/settings/src/views/UserManagement.vue","webpack://nextcloud/./apps/settings/src/views/UserManagement.vue?fa13","webpack://nextcloud/./apps/settings/src/views/UserManagement.vue?fd5a","webpack:///nextcloud/apps/settings/src/views/UserManagementNavigation.vue?vue&type=style&index=0&id=413f2c9e&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/Users/UserRow.vue?vue&type=style&index=0&id=07bad8e5&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/UserList.vue?vue&type=style&index=0&id=0e745d5e&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/views/UserManagement.vue?vue&type=style&index=0&id=fc8857fc&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/views/UserManagementNavigation.vue","webpack:///nextcloud/apps/settings/src/components/GroupListItem.vue","webpack:///nextcloud/apps/settings/src/components/GroupListItem.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/GroupListItem.vue?78a4","webpack://nextcloud/./apps/settings/src/components/GroupListItem.vue?7b19","webpack://nextcloud/./apps/settings/src/components/GroupListItem.vue?9f48","webpack://nextcloud/./apps/settings/src/components/Users/UserSettingsDialog.vue?824e","webpack:///nextcloud/apps/settings/src/components/Users/UserSettingsDialog.vue","webpack:///nextcloud/apps/settings/src/components/Users/UserSettingsDialog.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/Users/UserSettingsDialog.vue?5a70","webpack://nextcloud/./apps/settings/src/components/Users/UserSettingsDialog.vue?f361","webpack:///nextcloud/apps/settings/src/composables/useGroupsNavigation.ts","webpack:///nextcloud/apps/settings/src/views/UserManagementNavigation.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/settings/src/views/UserManagementNavigation.vue?e96a","webpack://nextcloud/./apps/settings/src/views/UserManagementNavigation.vue?28b6","webpack:///nextcloud/apps/settings/src/components/Users/UserListHeader.vue?vue&type=style&index=0&id=69afa821&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/utils/userUtils.ts","webpack:///nextcloud/apps/settings/src/components/GroupListItem.vue?vue&type=style&index=0&id=17dd13c0&prod&lang=scss&scoped=true"],"sourcesContent":["// 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-list[data-v-de721376]{--avatar-cell-width: 48px;--cell-padding: 7px;--cell-width: 200px;--cell-width-large: 300px;--cell-min-width: calc(var(--cell-width) - (2 * var(--cell-padding)));--sticky-column-z-index: calc(var(--vs-dropdown-z-index) + 1);display:block;overflow:auto;height:100%}.user-list__header[data-v-de721376],.user-list__footer[data-v-de721376]{position:sticky;display:block}.user-list__header[data-v-de721376]{top:0;z-index:calc(var(--sticky-column-z-index) + 1)}.user-list__footer[data-v-de721376]{left:0}.user-list__body[data-v-de721376]{display:flex;flex-direction:column;width:100%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/VirtualList.vue\"],\"names\":[],\"mappings\":\"AACA,4BACC,yBAAA,CACA,mBAAA,CACA,mBAAA,CACA,yBAAA,CACA,qEAAA,CACA,6DAAA,CAGA,aAAA,CACA,aAAA,CACA,WAAA,CAEA,wEAEC,eAAA,CAEA,aAAA,CAGD,oCACC,KAAA,CACA,8CAAA,CAGD,oCACC,MAAA,CAGD,kCACC,YAAA,CACA,qBAAA,CACA,UAAA\",\"sourcesContent\":[\"\\n.user-list {\\n\\t--avatar-cell-width: 48px;\\n\\t--cell-padding: 7px;\\n\\t--cell-width: 200px;\\n\\t--cell-width-large: 300px;\\n\\t--cell-min-width: calc(var(--cell-width) - (2 * var(--cell-padding)));\\n\\t--sticky-column-z-index: calc(var(--vs-dropdown-z-index) + 1); // Keep the sticky column on top of the select dropdown\\n\\n\\t// Necessary for virtual scroll optimized rendering\\n\\tdisplay: block;\\n\\toverflow: auto;\\n\\theight: 100%;\\n\\n\\t&__header,\\n\\t&__footer {\\n\\t\\tposition: sticky;\\n\\t\\t// Fix sticky positioning in Firefox\\n\\t\\tdisplay: block;\\n\\t}\\n\\n\\t&__header {\\n\\t\\ttop: 0;\\n\\t\\tz-index: calc(var(--sticky-column-z-index) + 1);\\n\\t}\\n\\n\\t&__footer {\\n\\t\\tleft: 0;\\n\\t}\\n\\n\\t&__body {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\twidth: 100%;\\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, `.modal__form[data-v-2fe7d69f]{display:flex;flex-direction:column;align-items:center;padding:20px;gap:4px 0}.modal__item[data-v-2fe7d69f]{width:100%}.modal__item[data-v-2fe7d69f]:not(:focus):not(:active){border-color:var(--color-border-dark)}.modal__hint[data-v-2fe7d69f]{color:var(--color-text-maxcontrast);margin-top:8px;align-self:flex-start}.modal__label[data-v-2fe7d69f]{display:block;padding:4px 0}.modal__select[data-v-2fe7d69f]{width:100%}.modal__submit[data-v-2fe7d69f]{margin-top:20px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/NewUserModal.vue\"],\"names\":[],\"mappings\":\"AAEC,8BACC,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,YAAA,CACA,SAAA,CAGD,8BACC,UAAA,CAEA,uDACC,qCAAA,CAIF,8BACC,mCAAA,CACA,cAAA,CACA,qBAAA,CAGD,+BACC,aAAA,CACA,aAAA,CAGD,gCACC,UAAA,CAGD,gCACC,eAAA\",\"sourcesContent\":[\"\\n.modal {\\n\\t&__form {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\talign-items: center;\\n\\t\\tpadding: 20px;\\n\\t\\tgap: 4px 0;\\n\\t}\\n\\n\\t&__item {\\n\\t\\twidth: 100%;\\n\\n\\t\\t&:not(:focus):not(:active) {\\n\\t\\t\\tborder-color: var(--color-border-dark);\\n\\t\\t}\\n\\t}\\n\\n\\t&__hint {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tmargin-top: 8px;\\n\\t\\talign-self: flex-start;\\n\\t}\\n\\n\\t&__label {\\n\\t\\tdisplay: block;\\n\\t\\tpadding: 4px 0;\\n\\t}\\n\\n\\t&__select {\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t&__submit {\\n\\t\\tmargin-top: 20px;\\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, `.footer[data-v-3ec0b16a]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.footer__cell[data-v-3ec0b16a]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.footer__cell strong[data-v-3ec0b16a],.footer__cell span[data-v-3ec0b16a],.footer__cell label[data-v-3ec0b16a]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.footer__cell--avatar[data-v-3ec0b16a],.footer__cell--displayname[data-v-3ec0b16a]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.footer__cell--avatar[data-v-3ec0b16a]{left:0}.footer__cell--displayname[data-v-3ec0b16a]{left:var(--avatar-cell-width);border-right:1px solid var(--color-border)}}.footer__cell--avatar[data-v-3ec0b16a]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.footer__cell--multiline span[data-v-3ec0b16a]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.footer__cell--multiline span[data-v-3ec0b16a]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.footer__cell--large[data-v-3ec0b16a]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.footer__cell--obfuscated[data-v-3ec0b16a]{min-width:400px;width:400px}.footer__cell--fill[data-v-3ec0b16a]{min-width:var(--cell-width-large);width:100%}.footer__cell--actions[data-v-3ec0b16a]{position:sticky;right:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-left:1px solid var(--color-border)}.footer__subtitle[data-v-3ec0b16a]{color:var(--color-text-maxcontrast)}.footer__cell[data-v-3ec0b16a]{position:sticky;color:var(--color-text-maxcontrast)}.footer__cell--loading[data-v-3ec0b16a]{left:0;min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0}.footer__cell--count[data-v-3ec0b16a]{left:var(--avatar-cell-width);min-width:var(--cell-width);width:var(--cell-width)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/UserListFooter.vue\",\"webpack://./apps/settings/src/components/Users/shared/styles.scss\"],\"names\":[],\"mappings\":\"AAGA,yBCoBC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CAIA,+BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,+GAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,mFAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,uCACC,MAAA,CAGD,4CACC,6BAAA,CACA,0CAAA,CAAA,CAIF,uCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,+CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,+CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,sCACC,iCAAA,CACA,6BAAA,CAGD,2CACC,eAAA,CACA,WAAA,CAID,qCACC,iCAAA,CACA,UAAA,CAGD,wCACC,eAAA,CACA,OAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,yCAAA,CAIF,mCACC,mCAAA,CDjHD,+BACC,eAAA,CACA,mCAAA,CAEA,wCACC,MAAA,CACA,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CAGD,sCACC,6BAAA,CACA,2BAAA,CACA,uBAAA\",\"sourcesContent\":[\"\\n@import './shared/styles.scss';\\n\\n.footer {\\n\\t@include row;\\n\\t@include cell;\\n\\n\\t&__cell {\\n\\t\\tposition: sticky;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\n\\t\\t&--loading {\\n\\t\\t\\tleft: 0;\\n\\t\\t\\tmin-width: var(--avatar-cell-width);\\n\\t\\t\\twidth: var(--avatar-cell-width);\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tpadding: 0;\\n\\t\\t}\\n\\n\\t\\t&--count {\\n\\t\\t\\tleft: var(--avatar-cell-width);\\n\\t\\t\\tmin-width: var(--cell-width);\\n\\t\\t\\twidth: var(--cell-width);\\n\\t\\t}\\n\\t}\\n}\\n\",\"/**\\n * @copyright 2023 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@mixin row {\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tmin-width: 100%;\\n\\twidth: fit-content;\\n\\theight: var(--row-height);\\n\\tbackground-color: var(--color-main-background);\\n}\\n\\n@mixin cell {\\n\\t&__cell {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: center;\\n\\t\\tpadding: 0 var(--cell-padding);\\n\\t\\tmin-width: var(--cell-width);\\n\\t\\twidth: var(--cell-width);\\n\\t\\tcolor: var(--color-main-text);\\n\\n\\t\\tstrong,\\n\\t\\tspan,\\n\\t\\tlabel {\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\toverflow-wrap: anywhere;\\n\\t\\t}\\n\\n\\t\\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\\n\\t\\t\\t&--avatar,\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tposition: sticky;\\n\\t\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--avatar {\\n\\t\\t\\t\\tleft: 0;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tleft: var(--avatar-cell-width);\\n\\t\\t\\t\\tborder-right: 1px solid var(--color-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--avatar {\\n\\t\\t\\tmin-width: var(--avatar-cell-width);\\n\\t\\t\\twidth: var(--avatar-cell-width);\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&--multiline {\\n\\t\\t\\tspan {\\n\\t\\t\\t\\tline-height: 1.3em;\\n\\t\\t\\t\\twhite-space: unset;\\n\\n\\t\\t\\t\\t@supports (-webkit-line-clamp: 2) {\\n\\t\\t\\t\\t\\tdisplay: -webkit-box;\\n\\t\\t\\t\\t\\t-webkit-line-clamp: 2;\\n\\t\\t\\t\\t\\t-webkit-box-orient: vertical;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--large {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: var(--cell-width-large);\\n\\t\\t}\\n\\n\\t\\t&--obfuscated {\\n\\t\\t\\tmin-width: 400px;\\n\\t\\t\\twidth: 400px;\\n\\t\\t}\\n\\n\\t\\t// Fill remaining row space with cell\\n\\t\\t&--fill {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\n\\t\\t&--actions {\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: row;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tmin-width: 110px;\\n\\t\\t\\twidth: 110px;\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tborder-left: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t&__subtitle {\\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, `fieldset[data-v-ab9299ba]{font-weight:bold}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/UserSettingsDialog.vue\"],\"names\":[],\"mappings\":\"AACA,0BACC,gBAAA\",\"sourcesContent\":[\"\\nfieldset {\\n\\tfont-weight: bold;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcAppContent',{attrs:{\"page-heading\":_vm.pageHeading}},[_c('UserList',{attrs:{\"selected-group\":_vm.selectedGroupDecoded,\"external-actions\":_vm.externalActions}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue'\nimport { getCurrentInstance } from 'vue'\n\nvar isVue2 = true\nvar isVue3 = false\nvar Vue2 = Vue\nvar warn = Vue.util.warn\n\nfunction install() {}\n\n// createApp polyfill\nexport function createApp(rootComponent, rootProps) {\n var vm\n var provide = {}\n var app = {\n config: Vue.config,\n use: Vue.use.bind(Vue),\n mixin: Vue.mixin.bind(Vue),\n component: Vue.component.bind(Vue),\n provide: function (key, value) {\n provide[key] = value\n return this\n },\n directive: function (name, dir) {\n if (dir) {\n Vue.directive(name, dir)\n return app\n } else {\n return Vue.directive(name)\n }\n },\n mount: function (el, hydrating) {\n if (!vm) {\n vm = new Vue(Object.assign({ propsData: rootProps }, rootComponent, { provide: Object.assign(provide, rootComponent.provide) }))\n vm.$mount(el, hydrating)\n return vm\n } else {\n return vm\n }\n },\n unmount: function () {\n if (vm) {\n vm.$destroy()\n vm = undefined\n }\n },\n }\n return app\n}\n\nexport {\n Vue,\n Vue2,\n isVue2,\n isVue3,\n install,\n warn\n}\n\n// Vue 3 components mock\nfunction createMockComponent(name) {\n return {\n setup() {\n throw new Error('[vue-demi] ' + name + ' is not supported in Vue 2. It\\'s provided to avoid compiler errors.')\n }\n }\n}\nexport var Fragment = /*#__PURE__*/ createMockComponent('Fragment')\nexport var Transition = /*#__PURE__*/ createMockComponent('Transition')\nexport var TransitionGroup = /*#__PURE__*/ createMockComponent('TransitionGroup')\nexport var Teleport = /*#__PURE__*/ createMockComponent('Teleport')\nexport var Suspense = /*#__PURE__*/ createMockComponent('Suspense')\nexport var KeepAlive = /*#__PURE__*/ createMockComponent('KeepAlive')\n\nexport * from 'vue'\n\n// Not implemented https://github.com/vuejs/core/pull/8111, falls back to getCurrentInstance()\nexport function hasInjectionContext() {\n return !!getCurrentInstance()\n}\n","import { defineComponent, ref, h, watch, computed, reactive, shallowRef, nextTick, getCurrentInstance, onMounted, isVue2, watchEffect, toRefs } from 'vue-demi';\nimport { onClickOutside as onClickOutside$1, useActiveElement, useBattery, useBrowserLocation, useClipboard, useDark, useDeviceMotion, useDeviceOrientation, useDevicePixelRatio, useDevicesList, useDocumentVisibility, useStorage as useStorage$1, isClient as isClient$1, useDraggable, useElementBounding, useElementSize as useElementSize$1, useElementVisibility as useElementVisibility$1, useEyeDropper, useFullscreen, useGeolocation, useIdle, useMouse, useMouseInElement, useMousePressed, useNetwork, useNow, useObjectUrl, useOffsetPagination, useOnline, usePageLeave, usePointer, usePointerLock, usePreferredColorScheme, usePreferredContrast, usePreferredDark as usePreferredDark$1, usePreferredLanguages, usePreferredReducedMotion, useTimeAgo, useTimestamp, useVirtualList, useWindowFocus, useWindowSize } from '@vueuse/core';\nimport { toValue, isClient, noop, isObject, tryOnScopeDispose, isIOS, directiveHooks, pausableWatch, tryOnMounted, toRef, useToggle, notNullish, promiseTimeout, until, useDebounceFn, useThrottleFn } from '@vueuse/shared';\n\nconst OnClickOutside = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"OnClickOutside\",\n props: [\"as\", \"options\"],\n emits: [\"trigger\"],\n setup(props, { slots, emit }) {\n const target = ref();\n onClickOutside$1(target, (e) => {\n emit(\"trigger\", e);\n }, props.options);\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default());\n };\n }\n});\n\nfunction unrefElement(elRef) {\n var _a;\n const plain = toValue(elRef);\n return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;\n}\n\nconst defaultWindow = isClient ? window : void 0;\n\nfunction useEventListener(...args) {\n let target;\n let events;\n let listeners;\n let options;\n if (typeof args[0] === \"string\" || Array.isArray(args[0])) {\n [events, listeners, options] = args;\n target = defaultWindow;\n } else {\n [target, events, listeners, options] = args;\n }\n if (!target)\n return noop;\n if (!Array.isArray(events))\n events = [events];\n if (!Array.isArray(listeners))\n listeners = [listeners];\n const cleanups = [];\n const cleanup = () => {\n cleanups.forEach((fn) => fn());\n cleanups.length = 0;\n };\n const register = (el, event, listener, options2) => {\n el.addEventListener(event, listener, options2);\n return () => el.removeEventListener(event, listener, options2);\n };\n const stopWatch = watch(\n () => [unrefElement(target), toValue(options)],\n ([el, options2]) => {\n cleanup();\n if (!el)\n return;\n const optionsClone = isObject(options2) ? { ...options2 } : options2;\n cleanups.push(\n ...events.flatMap((event) => {\n return listeners.map((listener) => register(el, event, listener, optionsClone));\n })\n );\n },\n { immediate: true, flush: \"post\" }\n );\n const stop = () => {\n stopWatch();\n cleanup();\n };\n tryOnScopeDispose(stop);\n return stop;\n}\n\nlet _iOSWorkaround = false;\nfunction onClickOutside(target, handler, options = {}) {\n const { window = defaultWindow, ignore = [], capture = true, detectIframe = false } = options;\n if (!window)\n return noop;\n if (isIOS && !_iOSWorkaround) {\n _iOSWorkaround = true;\n Array.from(window.document.body.children).forEach((el) => el.addEventListener(\"click\", noop));\n window.document.documentElement.addEventListener(\"click\", noop);\n }\n let shouldListen = true;\n const shouldIgnore = (event) => {\n return ignore.some((target2) => {\n if (typeof target2 === \"string\") {\n return Array.from(window.document.querySelectorAll(target2)).some((el) => el === event.target || event.composedPath().includes(el));\n } else {\n const el = unrefElement(target2);\n return el && (event.target === el || event.composedPath().includes(el));\n }\n });\n };\n const listener = (event) => {\n const el = unrefElement(target);\n if (!el || el === event.target || event.composedPath().includes(el))\n return;\n if (event.detail === 0)\n shouldListen = !shouldIgnore(event);\n if (!shouldListen) {\n shouldListen = true;\n return;\n }\n handler(event);\n };\n const cleanup = [\n useEventListener(window, \"click\", listener, { passive: true, capture }),\n useEventListener(window, \"pointerdown\", (e) => {\n const el = unrefElement(target);\n shouldListen = !shouldIgnore(e) && !!(el && !e.composedPath().includes(el));\n }, { passive: true }),\n detectIframe && useEventListener(window, \"blur\", (event) => {\n setTimeout(() => {\n var _a;\n const el = unrefElement(target);\n if (((_a = window.document.activeElement) == null ? void 0 : _a.tagName) === \"IFRAME\" && !(el == null ? void 0 : el.contains(window.document.activeElement))) {\n handler(event);\n }\n }, 0);\n })\n ].filter(Boolean);\n const stop = () => cleanup.forEach((fn) => fn());\n return stop;\n}\n\nconst vOnClickOutside = {\n [directiveHooks.mounted](el, binding) {\n const capture = !binding.modifiers.bubble;\n if (typeof binding.value === \"function\") {\n el.__onClickOutside_stop = onClickOutside(el, binding.value, { capture });\n } else {\n const [handler, options] = binding.value;\n el.__onClickOutside_stop = onClickOutside(el, handler, Object.assign({ capture }, options));\n }\n },\n [directiveHooks.unmounted](el) {\n el.__onClickOutside_stop();\n }\n};\n\nfunction createKeyPredicate(keyFilter) {\n if (typeof keyFilter === \"function\")\n return keyFilter;\n else if (typeof keyFilter === \"string\")\n return (event) => event.key === keyFilter;\n else if (Array.isArray(keyFilter))\n return (event) => keyFilter.includes(event.key);\n return () => true;\n}\nfunction onKeyStroke(...args) {\n let key;\n let handler;\n let options = {};\n if (args.length === 3) {\n key = args[0];\n handler = args[1];\n options = args[2];\n } else if (args.length === 2) {\n if (typeof args[1] === \"object\") {\n key = true;\n handler = args[0];\n options = args[1];\n } else {\n key = args[0];\n handler = args[1];\n }\n } else {\n key = true;\n handler = args[0];\n }\n const {\n target = defaultWindow,\n eventName = \"keydown\",\n passive = false,\n dedupe = false\n } = options;\n const predicate = createKeyPredicate(key);\n const listener = (e) => {\n if (e.repeat && toValue(dedupe))\n return;\n if (predicate(e))\n handler(e);\n };\n return useEventListener(target, eventName, listener, passive);\n}\n\nconst vOnKeyStroke = {\n [directiveHooks.mounted](el, binding) {\n var _a, _b;\n const keys = (_b = (_a = binding.arg) == null ? void 0 : _a.split(\",\")) != null ? _b : true;\n if (typeof binding.value === \"function\") {\n onKeyStroke(keys, binding.value, {\n target: el\n });\n } else {\n const [handler, options] = binding.value;\n onKeyStroke(keys, handler, {\n target: el,\n ...options\n });\n }\n }\n};\n\nconst DEFAULT_DELAY = 500;\nconst DEFAULT_THRESHOLD = 10;\nfunction onLongPress(target, handler, options) {\n var _a, _b;\n const elementRef = computed(() => unrefElement(target));\n let timeout;\n let posStart;\n let startTimestamp;\n let hasLongPressed = false;\n function clear() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = void 0;\n }\n posStart = void 0;\n startTimestamp = void 0;\n hasLongPressed = false;\n }\n function onRelease(ev) {\n var _a2, _b2, _c;\n const [_startTimestamp, _posStart, _hasLongPressed] = [startTimestamp, posStart, hasLongPressed];\n clear();\n if (!(options == null ? void 0 : options.onMouseUp) || !_posStart || !_startTimestamp)\n return;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n const dx = ev.x - _posStart.x;\n const dy = ev.y - _posStart.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n options.onMouseUp(ev.timeStamp - _startTimestamp, distance, _hasLongPressed);\n }\n function onDown(ev) {\n var _a2, _b2, _c, _d;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n clear();\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n posStart = {\n x: ev.x,\n y: ev.y\n };\n startTimestamp = ev.timeStamp;\n timeout = setTimeout(\n () => {\n hasLongPressed = true;\n handler(ev);\n },\n (_d = options == null ? void 0 : options.delay) != null ? _d : DEFAULT_DELAY\n );\n }\n function onMove(ev) {\n var _a2, _b2, _c, _d;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n if (!posStart || (options == null ? void 0 : options.distanceThreshold) === false)\n return;\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n const dx = ev.x - posStart.x;\n const dy = ev.y - posStart.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n if (distance >= ((_d = options == null ? void 0 : options.distanceThreshold) != null ? _d : DEFAULT_THRESHOLD))\n clear();\n }\n const listenerOptions = {\n capture: (_a = options == null ? void 0 : options.modifiers) == null ? void 0 : _a.capture,\n once: (_b = options == null ? void 0 : options.modifiers) == null ? void 0 : _b.once\n };\n const cleanup = [\n useEventListener(elementRef, \"pointerdown\", onDown, listenerOptions),\n useEventListener(elementRef, \"pointermove\", onMove, listenerOptions),\n useEventListener(elementRef, [\"pointerup\", \"pointerleave\"], onRelease, listenerOptions)\n ];\n const stop = () => cleanup.forEach((fn) => fn());\n return stop;\n}\n\nconst OnLongPress = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"OnLongPress\",\n props: [\"as\", \"options\"],\n emits: [\"trigger\"],\n setup(props, { slots, emit }) {\n const target = ref();\n onLongPress(\n target,\n (e) => {\n emit(\"trigger\", e);\n },\n props.options\n );\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default());\n };\n }\n});\n\nconst vOnLongPress = {\n [directiveHooks.mounted](el, binding) {\n if (typeof binding.value === \"function\")\n onLongPress(el, binding.value, { modifiers: binding.modifiers });\n else\n onLongPress(el, ...binding.value);\n }\n};\n\nconst UseActiveElement = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseActiveElement\",\n setup(props, { slots }) {\n const data = reactive({\n element: useActiveElement()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseBattery = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseBattery\",\n setup(props, { slots }) {\n const data = reactive(useBattery(props));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseBrowserLocation = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseBrowserLocation\",\n setup(props, { slots }) {\n const data = reactive(useBrowserLocation());\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseClipboard = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseClipboard\",\n props: [\n \"source\",\n \"read\",\n \"navigator\",\n \"copiedDuring\",\n \"legacy\"\n ],\n setup(props, { slots }) {\n const data = reactive(useClipboard(props));\n return () => {\n var _a;\n return (_a = slots.default) == null ? void 0 : _a.call(slots, data);\n };\n }\n});\n\nconst _global = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nconst globalKey = \"__vueuse_ssr_handlers__\";\nconst handlers = /* @__PURE__ */ getHandlers();\nfunction getHandlers() {\n if (!(globalKey in _global))\n _global[globalKey] = _global[globalKey] || {};\n return _global[globalKey];\n}\nfunction getSSRHandler(key, fallback) {\n return handlers[key] || fallback;\n}\n\nfunction guessSerializerType(rawInit) {\n return rawInit == null ? \"any\" : rawInit instanceof Set ? \"set\" : rawInit instanceof Map ? \"map\" : rawInit instanceof Date ? \"date\" : typeof rawInit === \"boolean\" ? \"boolean\" : typeof rawInit === \"string\" ? \"string\" : typeof rawInit === \"object\" ? \"object\" : !Number.isNaN(rawInit) ? \"number\" : \"any\";\n}\n\nconst StorageSerializers = {\n boolean: {\n read: (v) => v === \"true\",\n write: (v) => String(v)\n },\n object: {\n read: (v) => JSON.parse(v),\n write: (v) => JSON.stringify(v)\n },\n number: {\n read: (v) => Number.parseFloat(v),\n write: (v) => String(v)\n },\n any: {\n read: (v) => v,\n write: (v) => String(v)\n },\n string: {\n read: (v) => v,\n write: (v) => String(v)\n },\n map: {\n read: (v) => new Map(JSON.parse(v)),\n write: (v) => JSON.stringify(Array.from(v.entries()))\n },\n set: {\n read: (v) => new Set(JSON.parse(v)),\n write: (v) => JSON.stringify(Array.from(v))\n },\n date: {\n read: (v) => new Date(v),\n write: (v) => v.toISOString()\n }\n};\nconst customStorageEventName = \"vueuse-storage\";\nfunction useStorage(key, defaults, storage, options = {}) {\n var _a;\n const {\n flush = \"pre\",\n deep = true,\n listenToStorageChanges = true,\n writeDefaults = true,\n mergeDefaults = false,\n shallow,\n window = defaultWindow,\n eventFilter,\n onError = (e) => {\n console.error(e);\n },\n initOnMounted\n } = options;\n const data = (shallow ? shallowRef : ref)(typeof defaults === \"function\" ? defaults() : defaults);\n if (!storage) {\n try {\n storage = getSSRHandler(\"getDefaultStorage\", () => {\n var _a2;\n return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n })();\n } catch (e) {\n onError(e);\n }\n }\n if (!storage)\n return data;\n const rawInit = toValue(defaults);\n const type = guessSerializerType(rawInit);\n const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n const { pause: pauseWatch, resume: resumeWatch } = pausableWatch(\n data,\n () => write(data.value),\n { flush, deep, eventFilter }\n );\n if (window && listenToStorageChanges) {\n tryOnMounted(() => {\n useEventListener(window, \"storage\", update);\n useEventListener(window, customStorageEventName, updateFromCustomEvent);\n if (initOnMounted)\n update();\n });\n }\n if (!initOnMounted)\n update();\n function dispatchWriteEvent(oldValue, newValue) {\n if (window) {\n window.dispatchEvent(new CustomEvent(customStorageEventName, {\n detail: {\n key,\n oldValue,\n newValue,\n storageArea: storage\n }\n }));\n }\n }\n function write(v) {\n try {\n const oldValue = storage.getItem(key);\n if (v == null) {\n dispatchWriteEvent(oldValue, null);\n storage.removeItem(key);\n } else {\n const serialized = serializer.write(v);\n if (oldValue !== serialized) {\n storage.setItem(key, serialized);\n dispatchWriteEvent(oldValue, serialized);\n }\n }\n } catch (e) {\n onError(e);\n }\n }\n function read(event) {\n const rawValue = event ? event.newValue : storage.getItem(key);\n if (rawValue == null) {\n if (writeDefaults && rawInit != null)\n storage.setItem(key, serializer.write(rawInit));\n return rawInit;\n } else if (!event && mergeDefaults) {\n const value = serializer.read(rawValue);\n if (typeof mergeDefaults === \"function\")\n return mergeDefaults(value, rawInit);\n else if (type === \"object\" && !Array.isArray(value))\n return { ...rawInit, ...value };\n return value;\n } else if (typeof rawValue !== \"string\") {\n return rawValue;\n } else {\n return serializer.read(rawValue);\n }\n }\n function update(event) {\n if (event && event.storageArea !== storage)\n return;\n if (event && event.key == null) {\n data.value = rawInit;\n return;\n }\n if (event && event.key !== key)\n return;\n pauseWatch();\n try {\n if ((event == null ? void 0 : event.newValue) !== serializer.write(data.value))\n data.value = read(event);\n } catch (e) {\n onError(e);\n } finally {\n if (event)\n nextTick(resumeWatch);\n else\n resumeWatch();\n }\n }\n function updateFromCustomEvent(event) {\n update(event.detail);\n }\n return data;\n}\n\nfunction useMounted() {\n const isMounted = ref(false);\n const instance = getCurrentInstance();\n if (instance) {\n onMounted(() => {\n isMounted.value = true;\n }, isVue2 ? void 0 : instance);\n }\n return isMounted;\n}\n\nfunction useSupported(callback) {\n const isMounted = useMounted();\n return computed(() => {\n isMounted.value;\n return Boolean(callback());\n });\n}\n\nfunction useMediaQuery(query, options = {}) {\n const { window = defaultWindow } = options;\n const isSupported = useSupported(() => window && \"matchMedia\" in window && typeof window.matchMedia === \"function\");\n let mediaQuery;\n const matches = ref(false);\n const handler = (event) => {\n matches.value = event.matches;\n };\n const cleanup = () => {\n if (!mediaQuery)\n return;\n if (\"removeEventListener\" in mediaQuery)\n mediaQuery.removeEventListener(\"change\", handler);\n else\n mediaQuery.removeListener(handler);\n };\n const stopWatch = watchEffect(() => {\n if (!isSupported.value)\n return;\n cleanup();\n mediaQuery = window.matchMedia(toValue(query));\n if (\"addEventListener\" in mediaQuery)\n mediaQuery.addEventListener(\"change\", handler);\n else\n mediaQuery.addListener(handler);\n matches.value = mediaQuery.matches;\n });\n tryOnScopeDispose(() => {\n stopWatch();\n cleanup();\n mediaQuery = void 0;\n });\n return matches;\n}\n\nfunction usePreferredDark(options) {\n return useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n}\n\nfunction useColorMode(options = {}) {\n const {\n selector = \"html\",\n attribute = \"class\",\n initialValue = \"auto\",\n window = defaultWindow,\n storage,\n storageKey = \"vueuse-color-scheme\",\n listenToStorageChanges = true,\n storageRef,\n emitAuto,\n disableTransition = true\n } = options;\n const modes = {\n auto: \"\",\n light: \"light\",\n dark: \"dark\",\n ...options.modes || {}\n };\n const preferredDark = usePreferredDark({ window });\n const system = computed(() => preferredDark.value ? \"dark\" : \"light\");\n const store = storageRef || (storageKey == null ? toRef(initialValue) : useStorage(storageKey, initialValue, storage, { window, listenToStorageChanges }));\n const state = computed(() => store.value === \"auto\" ? system.value : store.value);\n const updateHTMLAttrs = getSSRHandler(\n \"updateHTMLAttrs\",\n (selector2, attribute2, value) => {\n const el = typeof selector2 === \"string\" ? window == null ? void 0 : window.document.querySelector(selector2) : unrefElement(selector2);\n if (!el)\n return;\n let style;\n if (disableTransition) {\n style = window.document.createElement(\"style\");\n const styleString = \"*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}\";\n style.appendChild(document.createTextNode(styleString));\n window.document.head.appendChild(style);\n }\n if (attribute2 === \"class\") {\n const current = value.split(/\\s/g);\n Object.values(modes).flatMap((i) => (i || \"\").split(/\\s/g)).filter(Boolean).forEach((v) => {\n if (current.includes(v))\n el.classList.add(v);\n else\n el.classList.remove(v);\n });\n } else {\n el.setAttribute(attribute2, value);\n }\n if (disableTransition) {\n window.getComputedStyle(style).opacity;\n document.head.removeChild(style);\n }\n }\n );\n function defaultOnChanged(mode) {\n var _a;\n updateHTMLAttrs(selector, attribute, (_a = modes[mode]) != null ? _a : mode);\n }\n function onChanged(mode) {\n if (options.onChanged)\n options.onChanged(mode, defaultOnChanged);\n else\n defaultOnChanged(mode);\n }\n watch(state, onChanged, { flush: \"post\", immediate: true });\n tryOnMounted(() => onChanged(state.value));\n const auto = computed({\n get() {\n return emitAuto ? store.value : state.value;\n },\n set(v) {\n store.value = v;\n }\n });\n try {\n return Object.assign(auto, { store, system, state });\n } catch (e) {\n return auto;\n }\n}\n\nconst UseColorMode = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseColorMode\",\n props: [\"selector\", \"attribute\", \"modes\", \"onChanged\", \"storageKey\", \"storage\", \"emitAuto\"],\n setup(props, { slots }) {\n const mode = useColorMode(props);\n const data = reactive({\n mode,\n system: mode.system,\n store: mode.store\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseDark = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDark\",\n props: [\"selector\", \"attribute\", \"valueDark\", \"valueLight\", \"onChanged\", \"storageKey\", \"storage\"],\n setup(props, { slots }) {\n const isDark = useDark(props);\n const data = reactive({\n isDark,\n toggleDark: useToggle(isDark)\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseDeviceMotion = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDeviceMotion\",\n setup(props, { slots }) {\n const data = reactive(useDeviceMotion());\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseDeviceOrientation = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDeviceOrientation\",\n setup(props, { slots }) {\n const data = reactive(useDeviceOrientation());\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseDevicePixelRatio = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDevicePixelRatio\",\n setup(props, { slots }) {\n const data = reactive({\n pixelRatio: useDevicePixelRatio()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseDevicesList = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDevicesList\",\n props: [\"onUpdated\", \"requestPermissions\", \"constraints\"],\n setup(props, { slots }) {\n const data = reactive(useDevicesList(props));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseDocumentVisibility = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDocumentVisibility\",\n setup(props, { slots }) {\n const data = reactive({\n visibility: useDocumentVisibility()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseDraggable = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDraggable\",\n props: [\n \"storageKey\",\n \"storageType\",\n \"initialValue\",\n \"exact\",\n \"preventDefault\",\n \"stopPropagation\",\n \"pointerTypes\",\n \"as\",\n \"handle\",\n \"axis\",\n \"onStart\",\n \"onMove\",\n \"onEnd\",\n \"disabled\"\n ],\n setup(props, { slots }) {\n const target = ref();\n const handle = computed(() => {\n var _a;\n return (_a = props.handle) != null ? _a : target.value;\n });\n const disabled = computed(() => !!props.disabled);\n const storageValue = props.storageKey && useStorage$1(\n props.storageKey,\n toValue(props.initialValue) || { x: 0, y: 0 },\n isClient$1 ? props.storageType === \"session\" ? sessionStorage : localStorage : void 0\n );\n const initialValue = storageValue || props.initialValue || { x: 0, y: 0 };\n const onEnd = (position, event) => {\n var _a;\n (_a = props.onEnd) == null ? void 0 : _a.call(props, position, event);\n if (!storageValue)\n return;\n storageValue.value.x = position.x;\n storageValue.value.y = position.y;\n };\n const data = reactive(useDraggable(target, {\n ...props,\n handle,\n initialValue,\n onEnd,\n disabled\n }));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target, style: `touch-action:none;${data.style}` }, slots.default(data));\n };\n }\n});\n\nconst UseElementBounding = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseElementBounding\",\n props: [\"box\", \"as\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive(useElementBounding(target));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nfunction useElementHover(el, options = {}) {\n const {\n delayEnter = 0,\n delayLeave = 0,\n window = defaultWindow\n } = options;\n const isHovered = ref(false);\n let timer;\n const toggle = (entering) => {\n const delay = entering ? delayEnter : delayLeave;\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n }\n if (delay)\n timer = setTimeout(() => isHovered.value = entering, delay);\n else\n isHovered.value = entering;\n };\n if (!window)\n return isHovered;\n useEventListener(el, \"mouseenter\", () => toggle(true), { passive: true });\n useEventListener(el, \"mouseleave\", () => toggle(false), { passive: true });\n return isHovered;\n}\n\nconst vElementHover = {\n [directiveHooks.mounted](el, binding) {\n if (typeof binding.value === \"function\") {\n const isHovered = useElementHover(el);\n watch(isHovered, (v) => binding.value(v));\n }\n }\n};\n\nconst UseElementSize = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseElementSize\",\n props: [\"width\", \"height\", \"box\", \"as\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive(useElementSize$1(target, { width: props.width, height: props.height }, { box: props.box }));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nfunction useResizeObserver(target, callback, options = {}) {\n const { window = defaultWindow, ...observerOptions } = options;\n let observer;\n const isSupported = useSupported(() => window && \"ResizeObserver\" in window);\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const targets = computed(() => Array.isArray(target) ? target.map((el) => unrefElement(el)) : [unrefElement(target)]);\n const stopWatch = watch(\n targets,\n (els) => {\n cleanup();\n if (isSupported.value && window) {\n observer = new ResizeObserver(callback);\n for (const _el of els)\n _el && observer.observe(_el, observerOptions);\n }\n },\n { immediate: true, flush: \"post\" }\n );\n const stop = () => {\n cleanup();\n stopWatch();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop\n };\n}\n\nfunction useElementSize(target, initialSize = { width: 0, height: 0 }, options = {}) {\n const { window = defaultWindow, box = \"content-box\" } = options;\n const isSVG = computed(() => {\n var _a, _b;\n return (_b = (_a = unrefElement(target)) == null ? void 0 : _a.namespaceURI) == null ? void 0 : _b.includes(\"svg\");\n });\n const width = ref(initialSize.width);\n const height = ref(initialSize.height);\n const { stop: stop1 } = useResizeObserver(\n target,\n ([entry]) => {\n const boxSize = box === \"border-box\" ? entry.borderBoxSize : box === \"content-box\" ? entry.contentBoxSize : entry.devicePixelContentBoxSize;\n if (window && isSVG.value) {\n const $elem = unrefElement(target);\n if ($elem) {\n const rect = $elem.getBoundingClientRect();\n width.value = rect.width;\n height.value = rect.height;\n }\n } else {\n if (boxSize) {\n const formatBoxSize = Array.isArray(boxSize) ? boxSize : [boxSize];\n width.value = formatBoxSize.reduce((acc, { inlineSize }) => acc + inlineSize, 0);\n height.value = formatBoxSize.reduce((acc, { blockSize }) => acc + blockSize, 0);\n } else {\n width.value = entry.contentRect.width;\n height.value = entry.contentRect.height;\n }\n }\n },\n options\n );\n tryOnMounted(() => {\n const ele = unrefElement(target);\n if (ele) {\n width.value = \"offsetWidth\" in ele ? ele.offsetWidth : initialSize.width;\n height.value = \"offsetHeight\" in ele ? ele.offsetHeight : initialSize.height;\n }\n });\n const stop2 = watch(\n () => unrefElement(target),\n (ele) => {\n width.value = ele ? initialSize.width : 0;\n height.value = ele ? initialSize.height : 0;\n }\n );\n function stop() {\n stop1();\n stop2();\n }\n return {\n width,\n height,\n stop\n };\n}\n\nconst vElementSize = {\n [directiveHooks.mounted](el, binding) {\n var _a;\n const handler = typeof binding.value === \"function\" ? binding.value : (_a = binding.value) == null ? void 0 : _a[0];\n const options = typeof binding.value === \"function\" ? [] : binding.value.slice(1);\n const { width, height } = useElementSize(el, ...options);\n watch([width, height], ([width2, height2]) => handler({ width: width2, height: height2 }));\n }\n};\n\nconst UseElementVisibility = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseElementVisibility\",\n props: [\"as\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive({\n isVisible: useElementVisibility$1(target)\n });\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nfunction useIntersectionObserver(target, callback, options = {}) {\n const {\n root,\n rootMargin = \"0px\",\n threshold = 0.1,\n window = defaultWindow,\n immediate = true\n } = options;\n const isSupported = useSupported(() => window && \"IntersectionObserver\" in window);\n const targets = computed(() => {\n const _target = toValue(target);\n return (Array.isArray(_target) ? _target : [_target]).map(unrefElement).filter(notNullish);\n });\n let cleanup = noop;\n const isActive = ref(immediate);\n const stopWatch = isSupported.value ? watch(\n () => [targets.value, unrefElement(root), isActive.value],\n ([targets2, root2]) => {\n cleanup();\n if (!isActive.value)\n return;\n if (!targets2.length)\n return;\n const observer = new IntersectionObserver(\n callback,\n {\n root: unrefElement(root2),\n rootMargin,\n threshold\n }\n );\n targets2.forEach((el) => el && observer.observe(el));\n cleanup = () => {\n observer.disconnect();\n cleanup = noop;\n };\n },\n { immediate, flush: \"post\" }\n ) : noop;\n const stop = () => {\n cleanup();\n stopWatch();\n isActive.value = false;\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n isActive,\n pause() {\n cleanup();\n isActive.value = false;\n },\n resume() {\n isActive.value = true;\n },\n stop\n };\n}\n\nfunction useElementVisibility(element, options = {}) {\n const { window = defaultWindow, scrollTarget, threshold = 0 } = options;\n const elementIsVisible = ref(false);\n useIntersectionObserver(\n element,\n (intersectionObserverEntries) => {\n let isIntersecting = elementIsVisible.value;\n let latestTime = 0;\n for (const entry of intersectionObserverEntries) {\n if (entry.time >= latestTime) {\n latestTime = entry.time;\n isIntersecting = entry.isIntersecting;\n }\n }\n elementIsVisible.value = isIntersecting;\n },\n {\n root: scrollTarget,\n window,\n threshold\n }\n );\n return elementIsVisible;\n}\n\nconst vElementVisibility = {\n [directiveHooks.mounted](el, binding) {\n if (typeof binding.value === \"function\") {\n const handler = binding.value;\n const isVisible = useElementVisibility(el);\n watch(isVisible, (v) => handler(v), { immediate: true });\n } else {\n const [handler, options] = binding.value;\n const isVisible = useElementVisibility(el, options);\n watch(isVisible, (v) => handler(v), { immediate: true });\n }\n }\n};\n\nconst UseEyeDropper = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseEyeDropper\",\n props: {\n sRGBHex: String\n },\n setup(props, { slots }) {\n const data = reactive(useEyeDropper());\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseFullscreen = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseFullscreen\",\n props: [\"as\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive(useFullscreen(target));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nconst UseGeolocation = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseGeolocation\",\n props: [\"enableHighAccuracy\", \"maximumAge\", \"timeout\", \"navigator\"],\n setup(props, { slots }) {\n const data = reactive(useGeolocation(props));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseIdle = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseIdle\",\n props: [\"timeout\", \"events\", \"listenForVisibilityChange\", \"initialState\"],\n setup(props, { slots }) {\n const data = reactive(useIdle(props.timeout, props));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nfunction useAsyncState(promise, initialState, options) {\n const {\n immediate = true,\n delay = 0,\n onError = noop,\n onSuccess = noop,\n resetOnExecute = true,\n shallow = true,\n throwError\n } = options != null ? options : {};\n const state = shallow ? shallowRef(initialState) : ref(initialState);\n const isReady = ref(false);\n const isLoading = ref(false);\n const error = shallowRef(void 0);\n async function execute(delay2 = 0, ...args) {\n if (resetOnExecute)\n state.value = initialState;\n error.value = void 0;\n isReady.value = false;\n isLoading.value = true;\n if (delay2 > 0)\n await promiseTimeout(delay2);\n const _promise = typeof promise === \"function\" ? promise(...args) : promise;\n try {\n const data = await _promise;\n state.value = data;\n isReady.value = true;\n onSuccess(data);\n } catch (e) {\n error.value = e;\n onError(e);\n if (throwError)\n throw e;\n } finally {\n isLoading.value = false;\n }\n return state.value;\n }\n if (immediate)\n execute(delay);\n const shell = {\n state,\n isReady,\n isLoading,\n error,\n execute\n };\n function waitUntilIsLoaded() {\n return new Promise((resolve, reject) => {\n until(isLoading).toBe(false).then(() => resolve(shell)).catch(reject);\n });\n }\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilIsLoaded().then(onFulfilled, onRejected);\n }\n };\n}\n\nasync function loadImage(options) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n const { src, srcset, sizes, class: clazz, loading, crossorigin, referrerPolicy } = options;\n img.src = src;\n if (srcset)\n img.srcset = srcset;\n if (sizes)\n img.sizes = sizes;\n if (clazz)\n img.className = clazz;\n if (loading)\n img.loading = loading;\n if (crossorigin)\n img.crossOrigin = crossorigin;\n if (referrerPolicy)\n img.referrerPolicy = referrerPolicy;\n img.onload = () => resolve(img);\n img.onerror = reject;\n });\n}\nfunction useImage(options, asyncStateOptions = {}) {\n const state = useAsyncState(\n () => loadImage(toValue(options)),\n void 0,\n {\n resetOnExecute: true,\n ...asyncStateOptions\n }\n );\n watch(\n () => toValue(options),\n () => state.execute(asyncStateOptions.delay),\n { deep: true }\n );\n return state;\n}\n\nconst UseImage = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseImage\",\n props: [\n \"src\",\n \"srcset\",\n \"sizes\",\n \"as\",\n \"alt\",\n \"class\",\n \"loading\",\n \"crossorigin\",\n \"referrerPolicy\"\n ],\n setup(props, { slots }) {\n const data = reactive(useImage(props));\n return () => {\n if (data.isLoading && slots.loading)\n return slots.loading(data);\n else if (data.error && slots.error)\n return slots.error(data.error);\n if (slots.default)\n return slots.default(data);\n return h(props.as || \"img\", props);\n };\n }\n});\n\nconst ARRIVED_STATE_THRESHOLD_PIXELS = 1;\nfunction useScroll(element, options = {}) {\n const {\n throttle = 0,\n idle = 200,\n onStop = noop,\n onScroll = noop,\n offset = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n },\n eventListenerOptions = {\n capture: false,\n passive: true\n },\n behavior = \"auto\",\n window = defaultWindow,\n onError = (e) => {\n console.error(e);\n }\n } = options;\n const internalX = ref(0);\n const internalY = ref(0);\n const x = computed({\n get() {\n return internalX.value;\n },\n set(x2) {\n scrollTo(x2, void 0);\n }\n });\n const y = computed({\n get() {\n return internalY.value;\n },\n set(y2) {\n scrollTo(void 0, y2);\n }\n });\n function scrollTo(_x, _y) {\n var _a, _b, _c, _d;\n if (!window)\n return;\n const _element = toValue(element);\n if (!_element)\n return;\n (_c = _element instanceof Document ? window.document.body : _element) == null ? void 0 : _c.scrollTo({\n top: (_a = toValue(_y)) != null ? _a : y.value,\n left: (_b = toValue(_x)) != null ? _b : x.value,\n behavior: toValue(behavior)\n });\n const scrollContainer = ((_d = _element == null ? void 0 : _element.document) == null ? void 0 : _d.documentElement) || (_element == null ? void 0 : _element.documentElement) || _element;\n if (x != null)\n internalX.value = scrollContainer.scrollLeft;\n if (y != null)\n internalY.value = scrollContainer.scrollTop;\n }\n const isScrolling = ref(false);\n const arrivedState = reactive({\n left: true,\n right: false,\n top: true,\n bottom: false\n });\n const directions = reactive({\n left: false,\n right: false,\n top: false,\n bottom: false\n });\n const onScrollEnd = (e) => {\n if (!isScrolling.value)\n return;\n isScrolling.value = false;\n directions.left = false;\n directions.right = false;\n directions.top = false;\n directions.bottom = false;\n onStop(e);\n };\n const onScrollEndDebounced = useDebounceFn(onScrollEnd, throttle + idle);\n const setArrivedState = (target) => {\n var _a;\n if (!window)\n return;\n const el = ((_a = target == null ? void 0 : target.document) == null ? void 0 : _a.documentElement) || (target == null ? void 0 : target.documentElement) || unrefElement(target);\n const { display, flexDirection } = getComputedStyle(el);\n const scrollLeft = el.scrollLeft;\n directions.left = scrollLeft < internalX.value;\n directions.right = scrollLeft > internalX.value;\n const left = Math.abs(scrollLeft) <= (offset.left || 0);\n const right = Math.abs(scrollLeft) + el.clientWidth >= el.scrollWidth - (offset.right || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n if (display === \"flex\" && flexDirection === \"row-reverse\") {\n arrivedState.left = right;\n arrivedState.right = left;\n } else {\n arrivedState.left = left;\n arrivedState.right = right;\n }\n internalX.value = scrollLeft;\n let scrollTop = el.scrollTop;\n if (target === window.document && !scrollTop)\n scrollTop = window.document.body.scrollTop;\n directions.top = scrollTop < internalY.value;\n directions.bottom = scrollTop > internalY.value;\n const top = Math.abs(scrollTop) <= (offset.top || 0);\n const bottom = Math.abs(scrollTop) + el.clientHeight >= el.scrollHeight - (offset.bottom || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n if (display === \"flex\" && flexDirection === \"column-reverse\") {\n arrivedState.top = bottom;\n arrivedState.bottom = top;\n } else {\n arrivedState.top = top;\n arrivedState.bottom = bottom;\n }\n internalY.value = scrollTop;\n };\n const onScrollHandler = (e) => {\n var _a;\n if (!window)\n return;\n const eventTarget = (_a = e.target.documentElement) != null ? _a : e.target;\n setArrivedState(eventTarget);\n isScrolling.value = true;\n onScrollEndDebounced(e);\n onScroll(e);\n };\n useEventListener(\n element,\n \"scroll\",\n throttle ? useThrottleFn(onScrollHandler, throttle, true, false) : onScrollHandler,\n eventListenerOptions\n );\n tryOnMounted(() => {\n try {\n const _element = toValue(element);\n if (!_element)\n return;\n setArrivedState(_element);\n } catch (e) {\n onError(e);\n }\n });\n useEventListener(\n element,\n \"scrollend\",\n onScrollEnd,\n eventListenerOptions\n );\n return {\n x,\n y,\n isScrolling,\n arrivedState,\n directions,\n measure() {\n const _element = toValue(element);\n if (window && _element)\n setArrivedState(_element);\n }\n };\n}\n\nfunction resolveElement(el) {\n if (typeof Window !== \"undefined\" && el instanceof Window)\n return el.document.documentElement;\n if (typeof Document !== \"undefined\" && el instanceof Document)\n return el.documentElement;\n return el;\n}\n\nfunction useInfiniteScroll(element, onLoadMore, options = {}) {\n var _a;\n const {\n direction = \"bottom\",\n interval = 100,\n canLoadMore = () => true\n } = options;\n const state = reactive(useScroll(\n element,\n {\n ...options,\n offset: {\n [direction]: (_a = options.distance) != null ? _a : 0,\n ...options.offset\n }\n }\n ));\n const promise = ref();\n const isLoading = computed(() => !!promise.value);\n const observedElement = computed(() => {\n return resolveElement(toValue(element));\n });\n const isElementVisible = useElementVisibility(observedElement);\n function checkAndLoad() {\n state.measure();\n if (!observedElement.value || !isElementVisible.value || !canLoadMore(observedElement.value))\n return;\n const { scrollHeight, clientHeight, scrollWidth, clientWidth } = observedElement.value;\n const isNarrower = direction === \"bottom\" || direction === \"top\" ? scrollHeight <= clientHeight : scrollWidth <= clientWidth;\n if (state.arrivedState[direction] || isNarrower) {\n if (!promise.value) {\n promise.value = Promise.all([\n onLoadMore(state),\n new Promise((resolve) => setTimeout(resolve, interval))\n ]).finally(() => {\n promise.value = null;\n nextTick(() => checkAndLoad());\n });\n }\n }\n }\n watch(\n () => [state.arrivedState[direction], isElementVisible.value],\n checkAndLoad,\n { immediate: true }\n );\n return {\n isLoading\n };\n}\n\nconst vInfiniteScroll = {\n [directiveHooks.mounted](el, binding) {\n if (typeof binding.value === \"function\")\n useInfiniteScroll(el, binding.value);\n else\n useInfiniteScroll(el, ...binding.value);\n }\n};\n\nconst vIntersectionObserver = {\n [directiveHooks.mounted](el, binding) {\n if (typeof binding.value === \"function\")\n useIntersectionObserver(el, binding.value);\n else\n useIntersectionObserver(el, ...binding.value);\n }\n};\n\nconst UseMouse = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseMouse\",\n props: [\"touch\", \"resetOnTouchEnds\", \"initialValue\"],\n setup(props, { slots }) {\n const data = reactive(useMouse(props));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseMouseInElement = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseMouseElement\",\n props: [\"handleOutside\", \"as\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive(useMouseInElement(target, props));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nconst UseMousePressed = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseMousePressed\",\n props: [\"touch\", \"initialValue\", \"as\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive(useMousePressed({ ...props, target }));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nconst UseNetwork = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseNetwork\",\n setup(props, { slots }) {\n const data = reactive(useNetwork());\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseNow = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseNow\",\n props: [\"interval\"],\n setup(props, { slots }) {\n const data = reactive(useNow({ ...props, controls: true }));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseObjectUrl = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseObjectUrl\",\n props: [\n \"object\"\n ],\n setup(props, { slots }) {\n const object = toRef(props, \"object\");\n const url = useObjectUrl(object);\n return () => {\n if (slots.default && url.value)\n return slots.default(url);\n };\n }\n});\n\nconst UseOffsetPagination = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseOffsetPagination\",\n props: [\n \"total\",\n \"page\",\n \"pageSize\",\n \"onPageChange\",\n \"onPageSizeChange\",\n \"onPageCountChange\"\n ],\n emits: [\n \"page-change\",\n \"page-size-change\",\n \"page-count-change\"\n ],\n setup(props, { slots, emit }) {\n const data = reactive(useOffsetPagination({\n ...props,\n onPageChange(...args) {\n var _a;\n (_a = props.onPageChange) == null ? void 0 : _a.call(props, ...args);\n emit(\"page-change\", ...args);\n },\n onPageSizeChange(...args) {\n var _a;\n (_a = props.onPageSizeChange) == null ? void 0 : _a.call(props, ...args);\n emit(\"page-size-change\", ...args);\n },\n onPageCountChange(...args) {\n var _a;\n (_a = props.onPageCountChange) == null ? void 0 : _a.call(props, ...args);\n emit(\"page-count-change\", ...args);\n }\n }));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseOnline = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseOnline\",\n setup(props, { slots }) {\n const data = reactive({\n isOnline: useOnline()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UsePageLeave = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePageLeave\",\n setup(props, { slots }) {\n const data = reactive({\n isLeft: usePageLeave()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UsePointer = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePointer\",\n props: [\n \"pointerTypes\",\n \"initialValue\",\n \"target\"\n ],\n setup(props, { slots }) {\n const el = ref(null);\n const data = reactive(usePointer({\n ...props,\n target: props.target === \"self\" ? el : defaultWindow\n }));\n return () => {\n if (slots.default)\n return slots.default(data, { ref: el });\n };\n }\n});\n\nconst UsePointerLock = /* #__PURE__ */ defineComponent({\n name: \"UsePointerLock\",\n props: [\"as\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive(usePointerLock(target));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nconst UsePreferredColorScheme = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePreferredColorScheme\",\n setup(props, { slots }) {\n const data = reactive({\n colorScheme: usePreferredColorScheme()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UsePreferredContrast = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePreferredContrast\",\n setup(props, { slots }) {\n const data = reactive({\n contrast: usePreferredContrast()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UsePreferredDark = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePreferredDark\",\n setup(props, { slots }) {\n const data = reactive({\n prefersDark: usePreferredDark$1()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UsePreferredLanguages = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePreferredLanguages\",\n setup(props, { slots }) {\n const data = reactive({\n languages: usePreferredLanguages()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UsePreferredReducedMotion = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePreferredReducedMotion\",\n setup(props, { slots }) {\n const data = reactive({\n motion: usePreferredReducedMotion()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nfunction useMutationObserver(target, callback, options = {}) {\n const { window = defaultWindow, ...mutationOptions } = options;\n let observer;\n const isSupported = useSupported(() => window && \"MutationObserver\" in window);\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const targets = computed(() => {\n const value = toValue(target);\n const items = (Array.isArray(value) ? value : [value]).map(unrefElement).filter(notNullish);\n return new Set(items);\n });\n const stopWatch = watch(\n () => targets.value,\n (targets2) => {\n cleanup();\n if (isSupported.value && targets2.size) {\n observer = new MutationObserver(callback);\n targets2.forEach((el) => observer.observe(el, mutationOptions));\n }\n },\n { immediate: true, flush: \"post\" }\n );\n const takeRecords = () => {\n return observer == null ? void 0 : observer.takeRecords();\n };\n const stop = () => {\n cleanup();\n stopWatch();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop,\n takeRecords\n };\n}\n\nfunction useCssVar(prop, target, options = {}) {\n const { window = defaultWindow, initialValue = \"\", observe = false } = options;\n const variable = ref(initialValue);\n const elRef = computed(() => {\n var _a;\n return unrefElement(target) || ((_a = window == null ? void 0 : window.document) == null ? void 0 : _a.documentElement);\n });\n function updateCssVar() {\n var _a;\n const key = toValue(prop);\n const el = toValue(elRef);\n if (el && window) {\n const value = (_a = window.getComputedStyle(el).getPropertyValue(key)) == null ? void 0 : _a.trim();\n variable.value = value || initialValue;\n }\n }\n if (observe) {\n useMutationObserver(elRef, updateCssVar, {\n attributeFilter: [\"style\", \"class\"],\n window\n });\n }\n watch(\n [elRef, () => toValue(prop)],\n updateCssVar,\n { immediate: true }\n );\n watch(\n variable,\n (val) => {\n var _a;\n if ((_a = elRef.value) == null ? void 0 : _a.style)\n elRef.value.style.setProperty(toValue(prop), val);\n }\n );\n return variable;\n}\n\nconst topVarName = \"--vueuse-safe-area-top\";\nconst rightVarName = \"--vueuse-safe-area-right\";\nconst bottomVarName = \"--vueuse-safe-area-bottom\";\nconst leftVarName = \"--vueuse-safe-area-left\";\nfunction useScreenSafeArea() {\n const top = ref(\"\");\n const right = ref(\"\");\n const bottom = ref(\"\");\n const left = ref(\"\");\n if (isClient) {\n const topCssVar = useCssVar(topVarName);\n const rightCssVar = useCssVar(rightVarName);\n const bottomCssVar = useCssVar(bottomVarName);\n const leftCssVar = useCssVar(leftVarName);\n topCssVar.value = \"env(safe-area-inset-top, 0px)\";\n rightCssVar.value = \"env(safe-area-inset-right, 0px)\";\n bottomCssVar.value = \"env(safe-area-inset-bottom, 0px)\";\n leftCssVar.value = \"env(safe-area-inset-left, 0px)\";\n update();\n useEventListener(\"resize\", useDebounceFn(update));\n }\n function update() {\n top.value = getValue(topVarName);\n right.value = getValue(rightVarName);\n bottom.value = getValue(bottomVarName);\n left.value = getValue(leftVarName);\n }\n return {\n top,\n right,\n bottom,\n left,\n update\n };\n}\nfunction getValue(position) {\n return getComputedStyle(document.documentElement).getPropertyValue(position);\n}\n\nconst UseScreenSafeArea = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseScreenSafeArea\",\n props: {\n top: Boolean,\n right: Boolean,\n bottom: Boolean,\n left: Boolean\n },\n setup(props, { slots }) {\n const {\n top,\n right,\n bottom,\n left\n } = useScreenSafeArea();\n return () => {\n if (slots.default) {\n return h(\"div\", {\n style: {\n paddingTop: props.top ? top.value : \"\",\n paddingRight: props.right ? right.value : \"\",\n paddingBottom: props.bottom ? bottom.value : \"\",\n paddingLeft: props.left ? left.value : \"\",\n boxSizing: \"border-box\",\n maxHeight: \"100vh\",\n maxWidth: \"100vw\",\n overflow: \"auto\"\n }\n }, slots.default());\n }\n };\n }\n});\n\nconst vScroll = {\n [directiveHooks.mounted](el, binding) {\n if (typeof binding.value === \"function\") {\n const handler = binding.value;\n const state = useScroll(el, {\n onScroll() {\n handler(state);\n },\n onStop() {\n handler(state);\n }\n });\n } else {\n const [handler, options] = binding.value;\n const state = useScroll(el, {\n ...options,\n onScroll(e) {\n var _a;\n (_a = options.onScroll) == null ? void 0 : _a.call(options, e);\n handler(state);\n },\n onStop(e) {\n var _a;\n (_a = options.onStop) == null ? void 0 : _a.call(options, e);\n handler(state);\n }\n });\n }\n }\n};\n\nfunction checkOverflowScroll(ele) {\n const style = window.getComputedStyle(ele);\n if (style.overflowX === \"scroll\" || style.overflowY === \"scroll\" || style.overflowX === \"auto\" && ele.clientWidth < ele.scrollWidth || style.overflowY === \"auto\" && ele.clientHeight < ele.scrollHeight) {\n return true;\n } else {\n const parent = ele.parentNode;\n if (!parent || parent.tagName === \"BODY\")\n return false;\n return checkOverflowScroll(parent);\n }\n}\nfunction preventDefault(rawEvent) {\n const e = rawEvent || window.event;\n const _target = e.target;\n if (checkOverflowScroll(_target))\n return false;\n if (e.touches.length > 1)\n return true;\n if (e.preventDefault)\n e.preventDefault();\n return false;\n}\nconst elInitialOverflow = /* @__PURE__ */ new WeakMap();\nfunction useScrollLock(element, initialState = false) {\n const isLocked = ref(initialState);\n let stopTouchMoveListener = null;\n let initialOverflow = \"\";\n watch(toRef(element), (el) => {\n const target = resolveElement(toValue(el));\n if (target) {\n const ele = target;\n if (!elInitialOverflow.get(ele))\n elInitialOverflow.set(ele, ele.style.overflow);\n if (ele.style.overflow !== \"hidden\")\n initialOverflow = ele.style.overflow;\n if (ele.style.overflow === \"hidden\")\n return isLocked.value = true;\n if (isLocked.value)\n return ele.style.overflow = \"hidden\";\n }\n }, {\n immediate: true\n });\n const lock = () => {\n const el = resolveElement(toValue(element));\n if (!el || isLocked.value)\n return;\n if (isIOS) {\n stopTouchMoveListener = useEventListener(\n el,\n \"touchmove\",\n (e) => {\n preventDefault(e);\n },\n { passive: false }\n );\n }\n el.style.overflow = \"hidden\";\n isLocked.value = true;\n };\n const unlock = () => {\n const el = resolveElement(toValue(element));\n if (!el || !isLocked.value)\n return;\n isIOS && (stopTouchMoveListener == null ? void 0 : stopTouchMoveListener());\n el.style.overflow = initialOverflow;\n elInitialOverflow.delete(el);\n isLocked.value = false;\n };\n tryOnScopeDispose(unlock);\n return computed({\n get() {\n return isLocked.value;\n },\n set(v) {\n if (v)\n lock();\n else unlock();\n }\n });\n}\n\nfunction onScrollLock() {\n let isMounted = false;\n const state = ref(false);\n return (el, binding) => {\n state.value = binding.value;\n if (isMounted)\n return;\n isMounted = true;\n const isLocked = useScrollLock(el, binding.value);\n watch(state, (v) => isLocked.value = v);\n };\n}\nconst vScrollLock = onScrollLock();\n\nconst UseTimeAgo = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseTimeAgo\",\n props: [\"time\", \"updateInterval\", \"max\", \"fullDateFormatter\", \"messages\", \"showSecond\"],\n setup(props, { slots }) {\n const data = reactive(useTimeAgo(() => props.time, { ...props, controls: true }));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseTimestamp = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseTimestamp\",\n props: [\"immediate\", \"interval\", \"offset\"],\n setup(props, { slots }) {\n const data = reactive(useTimestamp({ ...props, controls: true }));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseVirtualList = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseVirtualList\",\n props: [\n \"list\",\n \"options\",\n \"height\"\n ],\n setup(props, { slots, expose }) {\n const { list: listRef } = toRefs(props);\n const { list, containerProps, wrapperProps, scrollTo } = useVirtualList(listRef, props.options);\n expose({ scrollTo });\n if (containerProps.style && typeof containerProps.style === \"object\" && !Array.isArray(containerProps.style))\n containerProps.style.height = props.height || \"300px\";\n return () => h(\"div\", { ...containerProps }, [\n h(\"div\", { ...wrapperProps.value }, list.value.map((item) => h(\"div\", { style: { overflow: \"hidden\", height: item.height } }, slots.default ? slots.default(item) : \"Please set content!\")))\n ]);\n }\n});\n\nconst UseWindowFocus = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseWindowFocus\",\n setup(props, { slots }) {\n const data = reactive({\n focused: useWindowFocus()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseWindowSize = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseWindowSize\",\n props: [\"initialWidth\", \"initialHeight\"],\n setup(props, { slots }) {\n const data = reactive(useWindowSize(props));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nexport { OnClickOutside, OnLongPress, UseActiveElement, UseBattery, UseBrowserLocation, UseClipboard, UseColorMode, UseDark, UseDeviceMotion, UseDeviceOrientation, UseDevicePixelRatio, UseDevicesList, UseDocumentVisibility, UseDraggable, UseElementBounding, UseElementSize, UseElementVisibility, UseEyeDropper, UseFullscreen, UseGeolocation, UseIdle, UseImage, UseMouse, UseMouseInElement, UseMousePressed, UseNetwork, UseNow, UseObjectUrl, UseOffsetPagination, UseOnline, UsePageLeave, UsePointer, UsePointerLock, UsePreferredColorScheme, UsePreferredContrast, UsePreferredDark, UsePreferredLanguages, UsePreferredReducedMotion, UseScreenSafeArea, UseTimeAgo, UseTimestamp, UseVirtualList, UseWindowFocus, UseWindowSize, vOnClickOutside as VOnClickOutside, vOnLongPress as VOnLongPress, vElementHover, vElementSize, vElementVisibility, vInfiniteScroll, vIntersectionObserver, vOnClickOutside, vOnKeyStroke, vOnLongPress, vScroll, vScrollLock };\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('table',{staticClass:\"user-list\"},[_vm._t(\"before\"),_vm._v(\" \"),_c('thead',{ref:\"thead\",staticClass:\"user-list__header\",attrs:{\"role\":\"rowgroup\"}},[_vm._t(\"header\")],2),_vm._v(\" \"),_c('tbody',{staticClass:\"user-list__body\",style:(_vm.tbodyStyle)},_vm._l((_vm.renderedItems),function(item,i){return _c(_vm.dataComponent,_vm._b({key:item[_vm.dataKey],tag:\"component\",attrs:{\"user\":item,\"visible\":(i >= _vm.bufferItems || _vm.index <= _vm.bufferItems) && (i < _vm.shownItems - _vm.bufferItems)}},'component',_vm.extraProps,false))}),1),_vm._v(\" \"),_c('tfoot',{directives:[{name:\"element-visibility\",rawName:\"v-element-visibility\",value:(_vm.handleFooterVisibility),expression:\"handleFooterVisibility\"}],ref:\"tfoot\",staticClass:\"user-list__footer\",attrs:{\"role\":\"rowgroup\"}},[_vm._t(\"footer\")],2)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=script&lang=ts\"","\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!./VirtualList.vue?vue&type=style&index=0&id=de721376&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./VirtualList.vue?vue&type=style&index=0&id=de721376&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./VirtualList.vue?vue&type=template&id=de721376&scoped=true\"\nimport script from \"./VirtualList.vue?vue&type=script&lang=ts\"\nexport * from \"./VirtualList.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VirtualList.vue?vue&type=style&index=0&id=de721376&prod&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 \"de721376\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcModal',_vm._g({staticClass:\"modal\",attrs:{\"size\":\"small\"}},_vm.$listeners),[_c('form',{staticClass:\"modal__form\",attrs:{\"data-test\":\"form\",\"disabled\":_vm.loading.all},on:{\"submit\":function($event){$event.preventDefault();return _vm.createUser.apply(null, arguments)}}},[_c('h2',[_vm._v(_vm._s(_vm.t('settings', 'New user')))]),_vm._v(\" \"),_c('NcTextField',{ref:\"username\",staticClass:\"modal__item\",attrs:{\"data-test\":\"username\",\"value\":_vm.newUser.id,\"disabled\":_vm.settings.newUserGenerateUserID,\"label\":_vm.usernameLabel,\"autocapitalize\":\"none\",\"autocomplete\":\"off\",\"spellcheck\":\"false\",\"pattern\":\"[a-zA-Z0-9 _\\\\.@\\\\-']+\",\"required\":\"\"},on:{\"update:value\":function($event){return _vm.$set(_vm.newUser, \"id\", $event)}}}),_vm._v(\" \"),_c('NcTextField',{staticClass:\"modal__item\",attrs:{\"data-test\":\"displayName\",\"value\":_vm.newUser.displayName,\"label\":_vm.t('settings', 'Display name'),\"autocapitalize\":\"none\",\"autocomplete\":\"off\",\"spellcheck\":\"false\"},on:{\"update:value\":function($event){return _vm.$set(_vm.newUser, \"displayName\", $event)}}}),_vm._v(\" \"),(!_vm.settings.newUserRequireEmail)?_c('span',{staticClass:\"modal__hint\",attrs:{\"id\":\"password-email-hint\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Either password or email is required'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcPasswordField',{ref:\"password\",staticClass:\"modal__item\",attrs:{\"data-test\":\"password\",\"value\":_vm.newUser.password,\"minlength\":_vm.minPasswordLength,\"maxlength\":469,\"aria-describedby\":\"password-email-hint\",\"label\":_vm.newUser.mailAddress === '' ? _vm.t('settings', 'Password (required)') : _vm.t('settings', 'Password'),\"autocapitalize\":\"none\",\"autocomplete\":\"new-password\",\"spellcheck\":\"false\",\"required\":_vm.newUser.mailAddress === ''},on:{\"update:value\":function($event){return _vm.$set(_vm.newUser, \"password\", $event)}}}),_vm._v(\" \"),_c('NcTextField',{staticClass:\"modal__item\",attrs:{\"data-test\":\"email\",\"type\":\"email\",\"value\":_vm.newUser.mailAddress,\"aria-describedby\":\"password-email-hint\",\"label\":_vm.newUser.password === '' || _vm.settings.newUserRequireEmail ? _vm.t('settings', 'Email (required)') : _vm.t('settings', 'Email'),\"autocapitalize\":\"none\",\"autocomplete\":\"off\",\"spellcheck\":\"false\",\"required\":_vm.newUser.password === '' || _vm.settings.newUserRequireEmail},on:{\"update:value\":function($event){return _vm.$set(_vm.newUser, \"mailAddress\", $event)}}}),_vm._v(\" \"),_c('div',{staticClass:\"modal__item\"},[_c('label',{staticClass:\"modal__label\",attrs:{\"for\":\"new-user-groups\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(!_vm.settings.isAdmin ? _vm.t('settings', 'Groups (required)') : _vm.t('settings', 'Groups'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"modal__select\",attrs:{\"input-id\":\"new-user-groups\",\"placeholder\":_vm.t('settings', 'Set user groups'),\"disabled\":_vm.loading.groups || _vm.loading.all,\"options\":_vm.canAddGroups,\"value\":_vm.newUser.groups,\"label\":\"name\",\"close-on-select\":false,\"multiple\":true,\"taggable\":true,\"required\":!_vm.settings.isAdmin},on:{\"input\":_vm.handleGroupInput,\"option:created\":_vm.createGroup}})],1),_vm._v(\" \"),(_vm.subAdminsGroups.length > 0)?_c('div',{staticClass:\"modal__item\"},[_c('label',{staticClass:\"modal__label\",attrs:{\"for\":\"new-user-sub-admin\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Administered groups'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"modal__select\",attrs:{\"input-id\":\"new-user-sub-admin\",\"placeholder\":_vm.t('settings', 'Set user as admin for …'),\"options\":_vm.subAdminsGroups,\"close-on-select\":false,\"multiple\":true,\"label\":\"name\"},model:{value:(_vm.newUser.subAdminsGroups),callback:function ($$v) {_vm.$set(_vm.newUser, \"subAdminsGroups\", $$v)},expression:\"newUser.subAdminsGroups\"}})],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"modal__item\"},[_c('label',{staticClass:\"modal__label\",attrs:{\"for\":\"new-user-quota\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Quota'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"modal__select\",attrs:{\"input-id\":\"new-user-quota\",\"placeholder\":_vm.t('settings', 'Set user quota'),\"options\":_vm.quotaOptions,\"clearable\":false,\"taggable\":true,\"create-option\":_vm.validateQuota},model:{value:(_vm.newUser.quota),callback:function ($$v) {_vm.$set(_vm.newUser, \"quota\", $$v)},expression:\"newUser.quota\"}})],1),_vm._v(\" \"),(_vm.showConfig.showLanguages)?_c('div',{staticClass:\"modal__item\"},[_c('label',{staticClass:\"modal__label\",attrs:{\"for\":\"new-user-language\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Language'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"modal__select\",attrs:{\"input-id\":\"new-user-language\",\"placeholder\":_vm.t('settings', 'Set default language'),\"clearable\":false,\"selectable\":option => !option.languages,\"filter-by\":_vm.languageFilterBy,\"options\":_vm.languages,\"label\":\"name\"},model:{value:(_vm.newUser.language),callback:function ($$v) {_vm.$set(_vm.newUser, \"language\", $$v)},expression:\"newUser.language\"}})],1):_vm._e(),_vm._v(\" \"),_c('div',{class:['modal__item managers', { 'icon-loading-small': _vm.loading.manager }]},[_c('label',{staticClass:\"modal__label\",attrs:{\"for\":\"new-user-manager\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Manager'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"modal__select\",attrs:{\"input-id\":\"new-user-manager\",\"placeholder\":_vm.managerLabel,\"options\":_vm.possibleManagers,\"user-select\":true,\"label\":\"displayname\"},on:{\"search\":_vm.searchUserManager},model:{value:(_vm.newUser.manager),callback:function ($$v) {_vm.$set(_vm.newUser, \"manager\", $$v)},expression:\"newUser.manager\"}})],1),_vm._v(\" \"),_c('NcButton',{staticClass:\"modal__submit\",attrs:{\"data-test\":\"submit\",\"type\":\"primary\",\"native-type\":\"submit\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Add new user'))+\"\\n\\t\\t\")])],1)])\n}\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!./NewUserModal.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!./NewUserModal.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!./NewUserModal.vue?vue&type=style&index=0&id=2fe7d69f&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./NewUserModal.vue?vue&type=style&index=0&id=2fe7d69f&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./NewUserModal.vue?vue&type=template&id=2fe7d69f&scoped=true\"\nimport script from \"./NewUserModal.vue?vue&type=script&lang=js\"\nexport * from \"./NewUserModal.vue?vue&type=script&lang=js\"\nimport style0 from \"./NewUserModal.vue?vue&type=style&index=0&id=2fe7d69f&prod&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 \"2fe7d69f\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListFooter.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListFooter.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',{staticClass:\"footer\"},[_c('th',{attrs:{\"scope\":\"row\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Total rows summary')))])]),_vm._v(\" \"),_c('td',{staticClass:\"footer__cell footer__cell--loading\"},[(_vm.loading)?_c('NcLoadingIcon',{attrs:{\"title\":_vm.t('settings', 'Loading users …'),\"size\":32}}):_vm._e()],1),_vm._v(\" \"),_c('td',{staticClass:\"footer__cell footer__cell--count footer__cell--multiline\"},[_c('span',{attrs:{\"aria-describedby\":\"user-count-desc\"}},[_vm._v(_vm._s(_vm.userCount))]),_vm._v(\" \"),_c('span',{staticClass:\"hidden-visually\",attrs:{\"id\":\"user-count-desc\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Scroll to load more rows'))+\"\\n\\t\\t\")])])])\n}\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!./UserListFooter.vue?vue&type=style&index=0&id=3ec0b16a&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./UserListFooter.vue?vue&type=style&index=0&id=3ec0b16a&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserListFooter.vue?vue&type=template&id=3ec0b16a&scoped=true\"\nimport script from \"./UserListFooter.vue?vue&type=script&lang=ts\"\nexport * from \"./UserListFooter.vue?vue&type=script&lang=ts\"\nimport style0 from \"./UserListFooter.vue?vue&type=style&index=0&id=3ec0b16a&prod&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 \"3ec0b16a\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListHeader.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListHeader.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',{staticClass:\"header\"},[_c('th',{staticClass:\"header__cell header__cell--avatar\",attrs:{\"data-cy-user-list-header-avatar\":\"\",\"scope\":\"col\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Avatar'))+\"\\n\\t\\t\")])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell header__cell--displayname\",attrs:{\"data-cy-user-list-header-displayname\":\"\",\"scope\":\"col\"}},[_c('strong',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Display name'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('span',{staticClass:\"header__subtitle\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Username'))+\"\\n\\t\\t\")])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell\",class:{ 'header__cell--obfuscated': _vm.hasObfuscated },attrs:{\"data-cy-user-list-header-password\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.passwordLabel))])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell\",attrs:{\"data-cy-user-list-header-email\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Email')))])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell header__cell--large\",attrs:{\"data-cy-user-list-header-groups\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Groups')))])]),_vm._v(\" \"),(_vm.subAdminsGroups.length > 0 && _vm.settings.isAdmin)?_c('th',{staticClass:\"header__cell header__cell--large\",attrs:{\"data-cy-user-list-header-subadmins\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Group admin for')))])]):_vm._e(),_vm._v(\" \"),_c('th',{staticClass:\"header__cell\",attrs:{\"data-cy-user-list-header-quota\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Quota')))])]),_vm._v(\" \"),(_vm.showConfig.showLanguages)?_c('th',{staticClass:\"header__cell header__cell--large\",attrs:{\"data-cy-user-list-header-languages\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Language')))])]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showUserBackend || _vm.showConfig.showStoragePath)?_c('th',{staticClass:\"header__cell header__cell--large\",attrs:{\"data-cy-user-list-header-storage-location\":\"\",\"scope\":\"col\"}},[(_vm.showConfig.showUserBackend)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'User backend'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showStoragePath)?_c('span',{staticClass:\"header__subtitle\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Storage location'))+\"\\n\\t\\t\")]):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showLastLogin)?_c('th',{staticClass:\"header__cell\",attrs:{\"data-cy-user-list-header-last-login\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Last login')))])]):_vm._e(),_vm._v(\" \"),_c('th',{staticClass:\"header__cell header__cell--large header__cell--fill\",attrs:{\"data-cy-user-list-header-manager\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Manager')))])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell header__cell--actions\",attrs:{\"data-cy-user-list-header-actions\":\"\",\"scope\":\"col\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'User actions'))+\"\\n\\t\\t\")])])])\n}\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!./UserListHeader.vue?vue&type=style&index=0&id=69afa821&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./UserListHeader.vue?vue&type=style&index=0&id=69afa821&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserListHeader.vue?vue&type=template&id=69afa821&scoped=true\"\nimport script from \"./UserListHeader.vue?vue&type=script&lang=ts\"\nexport * from \"./UserListHeader.vue?vue&type=script&lang=ts\"\nimport style0 from \"./UserListHeader.vue?vue&type=style&index=0&id=69afa821&prod&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 \"69afa821\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('tr',{staticClass:\"user-list__row\",attrs:{\"data-cy-user-row\":_vm.user.id}},[_c('td',{staticClass:\"row__cell row__cell--avatar\",attrs:{\"data-cy-user-list-cell-avatar\":\"\"}},[(_vm.isLoadingUser)?_c('NcLoadingIcon',{attrs:{\"name\":_vm.t('settings', 'Loading account …'),\"size\":32}}):(_vm.visible)?_c('NcAvatar',{attrs:{\"disable-menu\":\"\",\"show-user-status\":false,\"user\":_vm.user.id}}):_vm._e()],1),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--displayname\",attrs:{\"data-cy-user-list-cell-displayname\":\"\"}},[(_vm.editing && _vm.user.backendCapabilities.setDisplayName)?[_c('NcTextField',{ref:\"displayNameField\",staticClass:\"user-row-text-field\",class:{ 'icon-loading-small': _vm.loading.displayName },attrs:{\"data-cy-user-list-input-displayname\":\"\",\"data-loading\":_vm.loading.displayName || undefined,\"trailing-button-label\":_vm.t('settings', 'Submit'),\"show-trailing-button\":true,\"disabled\":_vm.loading.displayName || _vm.isLoadingField,\"label\":_vm.t('settings', 'Change display name'),\"trailing-button-icon\":\"arrowRight\",\"value\":_vm.editedDisplayName,\"autocapitalize\":\"off\",\"autocomplete\":\"off\",\"spellcheck\":\"false\"},on:{\"update:value\":function($event){_vm.editedDisplayName=$event},\"trailing-button-click\":_vm.updateDisplayName}})]:[(!_vm.isObfuscated)?_c('strong',{attrs:{\"title\":_vm.user.displayname?.length > 20 ? _vm.user.displayname : null}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.user.displayname)+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('span',{staticClass:\"row__subtitle\"},[_vm._v(_vm._s(_vm.user.id))])]],2),_vm._v(\" \"),_c('td',{staticClass:\"row__cell\",class:{ 'row__cell--obfuscated': _vm.hasObfuscated },attrs:{\"data-cy-user-list-cell-password\":\"\"}},[(_vm.editing && _vm.settings.canChangePassword && _vm.user.backendCapabilities.setPassword)?[_c('NcTextField',{staticClass:\"user-row-text-field\",class:{'icon-loading-small': _vm.loading.password},attrs:{\"data-cy-user-list-input-password\":\"\",\"data-loading\":_vm.loading.password || undefined,\"trailing-button-label\":_vm.t('settings', 'Submit'),\"show-trailing-button\":true,\"disabled\":_vm.loading.password || _vm.isLoadingField,\"minlength\":_vm.minPasswordLength,\"maxlength\":\"469\",\"label\":_vm.t('settings', 'Set new password'),\"trailing-button-icon\":\"arrowRight\",\"value\":_vm.editedPassword,\"autocapitalize\":\"off\",\"autocomplete\":\"new-password\",\"required\":\"\",\"spellcheck\":\"false\",\"type\":\"password\"},on:{\"update:value\":function($event){_vm.editedPassword=$event},\"trailing-button-click\":_vm.updatePassword}})]:(_vm.isObfuscated)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'You do not have permissions to see the details of this account'))+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),_c('td',{staticClass:\"row__cell\",attrs:{\"data-cy-user-list-cell-email\":\"\"}},[(_vm.editing)?[_c('NcTextField',{staticClass:\"user-row-text-field\",class:{'icon-loading-small': _vm.loading.mailAddress},attrs:{\"data-cy-user-list-input-email\":\"\",\"data-loading\":_vm.loading.mailAddress || undefined,\"show-trailing-button\":true,\"trailing-button-label\":_vm.t('settings', 'Submit'),\"label\":_vm.t('settings', 'Set new email address'),\"disabled\":_vm.loading.mailAddress || _vm.isLoadingField,\"trailing-button-icon\":\"arrowRight\",\"value\":_vm.editedMail,\"autocapitalize\":\"off\",\"autocomplete\":\"email\",\"spellcheck\":\"false\",\"type\":\"email\"},on:{\"update:value\":function($event){_vm.editedMail=$event},\"trailing-button-click\":_vm.updateEmail}})]:(!_vm.isObfuscated)?_c('span',{attrs:{\"title\":_vm.user.email?.length > 20 ? _vm.user.email : null}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.user.email)+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--large row__cell--multiline\",attrs:{\"data-cy-user-list-cell-groups\":\"\"}},[(_vm.editing)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'groups' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Add user to group'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"data-cy-user-list-input-groups\":\"\",\"data-loading\":_vm.loading.groups || undefined,\"input-id\":'groups' + _vm.uniqueId,\"close-on-select\":false,\"disabled\":_vm.isLoadingField,\"loading\":_vm.loading.groups,\"multiple\":true,\"append-to-body\":false,\"options\":_vm.availableGroups,\"placeholder\":_vm.t('settings', 'Add account to group'),\"taggable\":_vm.settings.isAdmin,\"value\":_vm.userGroups,\"label\":\"name\",\"no-wrap\":true,\"create-option\":(value) => ({ name: value, isCreating: true })},on:{\"option:created\":_vm.createGroup,\"option:selected\":options => _vm.addUserGroup(options.at(-1)),\"option:deselected\":_vm.removeUserGroup}})]:(!_vm.isObfuscated)?_c('span',{attrs:{\"title\":_vm.userGroupsLabels?.length > 40 ? _vm.userGroupsLabels : null}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.userGroupsLabels)+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),(_vm.subAdminsGroups.length > 0 && _vm.settings.isAdmin)?_c('td',{staticClass:\"row__cell row__cell--large row__cell--multiline\",attrs:{\"data-cy-user-list-cell-subadmins\":\"\"}},[(_vm.editing && _vm.settings.isAdmin && _vm.subAdminsGroups.length > 0)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'subadmins' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Set account as admin for'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"data-cy-user-list-input-subadmins\":\"\",\"data-loading\":_vm.loading.subadmins || undefined,\"input-id\":'subadmins' + _vm.uniqueId,\"close-on-select\":false,\"disabled\":_vm.isLoadingField,\"loading\":_vm.loading.subadmins,\"label\":\"name\",\"append-to-body\":false,\"multiple\":true,\"no-wrap\":true,\"options\":_vm.subAdminsGroups,\"placeholder\":_vm.t('settings', 'Set account as admin for'),\"value\":_vm.userSubAdminsGroups},on:{\"option:deselected\":_vm.removeUserSubAdmin,\"option:selected\":options => _vm.addUserSubAdmin(options.at(-1))}})]:(!_vm.isObfuscated)?_c('span',{attrs:{\"title\":_vm.userSubAdminsGroupsLabels?.length > 40 ? _vm.userSubAdminsGroupsLabels : null}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.userSubAdminsGroupsLabels)+\"\\n\\t\\t\")]):_vm._e()],2):_vm._e(),_vm._v(\" \"),_c('td',{staticClass:\"row__cell\",attrs:{\"data-cy-user-list-cell-quota\":\"\"}},[(_vm.editing)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'quota' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Select account quota'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"close-on-select\":true,\"create-option\":_vm.validateQuota,\"data-cy-user-list-input-quota\":\"\",\"data-loading\":_vm.loading.quota || undefined,\"disabled\":_vm.isLoadingField,\"loading\":_vm.loading.quota,\"append-to-body\":false,\"clearable\":false,\"input-id\":'quota' + _vm.uniqueId,\"options\":_vm.quotaOptions,\"placeholder\":_vm.t('settings', 'Select account quota'),\"taggable\":true},on:{\"option:selected\":_vm.setUserQuota},model:{value:(_vm.editedUserQuota),callback:function ($$v) {_vm.editedUserQuota=$$v},expression:\"editedUserQuota\"}})]:(!_vm.isObfuscated)?[_c('span',{attrs:{\"id\":'quota-progress' + _vm.uniqueId}},[_vm._v(_vm._s(_vm.userQuota)+\" (\"+_vm._s(_vm.usedSpace)+\")\")]),_vm._v(\" \"),_c('NcProgressBar',{staticClass:\"row__progress\",class:{\n\t\t\t\t\t'row__progress--warn': _vm.usedQuota > 80,\n\t\t\t\t},attrs:{\"aria-labelledby\":'quota-progress' + _vm.uniqueId,\"value\":_vm.usedQuota}})]:_vm._e()],2),_vm._v(\" \"),(_vm.showConfig.showLanguages)?_c('td',{staticClass:\"row__cell row__cell--large\",attrs:{\"data-cy-user-list-cell-language\":\"\"}},[(_vm.editing)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'language' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Set the language'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"id\":'language' + _vm.uniqueId,\"data-cy-user-list-input-language\":\"\",\"data-loading\":_vm.loading.languages || undefined,\"allow-empty\":false,\"disabled\":_vm.isLoadingField,\"loading\":_vm.loading.languages,\"clearable\":false,\"append-to-body\":false,\"options\":_vm.availableLanguages,\"placeholder\":_vm.t('settings', 'No language set'),\"value\":_vm.userLanguage,\"label\":\"name\"},on:{\"input\":_vm.setUserLanguage}})]:(!_vm.isObfuscated)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.userLanguage.name)+\"\\n\\t\\t\")]):_vm._e()],2):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showUserBackend || _vm.showConfig.showStoragePath)?_c('td',{staticClass:\"row__cell row__cell--large\",attrs:{\"data-cy-user-list-cell-storage-location\":\"\"}},[(!_vm.isObfuscated)?[(_vm.showConfig.showUserBackend)?_c('span',[_vm._v(_vm._s(_vm.user.backend))]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showStoragePath)?_c('span',{staticClass:\"row__subtitle\",attrs:{\"title\":_vm.user.storageLocation}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.user.storageLocation)+\"\\n\\t\\t\\t\")]):_vm._e()]:_vm._e()],2):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showLastLogin)?_c('td',{staticClass:\"row__cell\",attrs:{\"title\":_vm.userLastLoginTooltip,\"data-cy-user-list-cell-last-login\":\"\"}},[(!_vm.isObfuscated)?_c('span',[_vm._v(_vm._s(_vm.userLastLogin))]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--large row__cell--fill\",attrs:{\"data-cy-user-list-cell-manager\":\"\"}},[(_vm.editing)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'manager' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.managerLabel)+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"select--fill\",attrs:{\"data-cy-user-list-input-manager\":\"\",\"data-loading\":_vm.loading.manager || undefined,\"input-id\":'manager' + _vm.uniqueId,\"close-on-select\":true,\"disabled\":_vm.isLoadingField,\"append-to-body\":false,\"loading\":_vm.loadingPossibleManagers || _vm.loading.manager,\"label\":\"displayname\",\"options\":_vm.possibleManagers,\"placeholder\":_vm.managerLabel},on:{\"open\":_vm.searchInitialUserManager,\"search\":_vm.searchUserManager,\"option:selected\":_vm.updateUserManager},model:{value:(_vm.currentManager),callback:function ($$v) {_vm.currentManager=$$v},expression:\"currentManager\"}})]:(!_vm.isObfuscated)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.user.manager)+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--actions\",attrs:{\"data-cy-user-list-cell-actions\":\"\"}},[(_vm.visible && !_vm.isObfuscated && _vm.canEdit && !_vm.loading.all)?_c('UserRowActions',{attrs:{\"actions\":_vm.userActions,\"disabled\":_vm.isLoadingField,\"edit\":_vm.editing,\"user\":_vm.user},on:{\"update:edit\":_vm.toggleEdit}}):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRowActions.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRowActions.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcActions',{attrs:{\"aria-label\":_vm.t('settings', 'Toggle account actions menu'),\"disabled\":_vm.disabled,\"inline\":1}},[_c('NcActionButton',{attrs:{\"data-cy-user-list-action-toggle-edit\":`${_vm.edit}`,\"disabled\":_vm.disabled},on:{\"click\":_vm.toggleEdit},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{key:_vm.editSvg,attrs:{\"svg\":_vm.editSvg,\"aria-hidden\":\"true\"}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.edit ? _vm.t('settings', 'Done') : _vm.t('settings', 'Edit'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_vm._l((_vm.actions),function({ action, icon, text },index){return _c('NcActionButton',{key:index,attrs:{\"disabled\":_vm.disabled,\"aria-label\":text,\"icon\":icon},on:{\"click\":(event) => action(event, { ..._vm.user })}},[_vm._v(\"\\n\\t\\t\"+_vm._s(text)+\"\\n\\t\")])})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./UserRowActions.vue?vue&type=template&id=645e3075\"\nimport script from \"./UserRowActions.vue?vue&type=script&lang=ts\"\nexport * from \"./UserRowActions.vue?vue&type=script&lang=ts\"\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 Copyright (c) 2019 John Molakvoæ \n *\n * @author Greta Doci \n * @author John Molakvoæ \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\nexport default {\n\tprops: {\n\t\tuser: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tsettings: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({}),\n\t\t},\n\t\tgroups: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tsubAdminsGroups: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tquotaOptions: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tlanguages: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\texternalActions: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t},\n\tcomputed: {\n\t\tshowConfig() {\n\t\t\treturn this.$store.getters.getShowConfig\n\t\t},\n\n\t\t/* GROUPS MANAGEMENT */\n\t\tuserGroups() {\n\t\t\tconst userGroups = this.groups.filter(group => this.user.groups.includes(group.id))\n\t\t\treturn userGroups\n\t\t},\n\t\tuserSubAdminsGroups() {\n\t\t\tconst userSubAdminsGroups = this.subAdminsGroups.filter(group => this.user.subadmin.includes(group.id))\n\t\t\treturn userSubAdminsGroups\n\t\t},\n\t\tavailableGroups() {\n\t\t\treturn this.groups.map((group) => {\n\t\t\t\t// clone object because we don't want\n\t\t\t\t// to edit the original groups\n\t\t\t\tconst groupClone = Object.assign({}, group)\n\n\t\t\t\t// two settings here:\n\t\t\t\t// 1. user NOT in group but no permission to add\n\t\t\t\t// 2. user is in group but no permission to remove\n\t\t\t\tgroupClone.$isDisabled\n\t\t\t\t\t= (group.canAdd === false\n\t\t\t\t\t\t&& !this.user.groups.includes(group.id))\n\t\t\t\t\t|| (group.canRemove === false\n\t\t\t\t\t\t&& this.user.groups.includes(group.id))\n\t\t\t\treturn groupClone\n\t\t\t})\n\t\t},\n\n\t\t/* QUOTA MANAGEMENT */\n\t\tusedSpace() {\n\t\t\tif (this.user.quota.used) {\n\t\t\t\treturn t('settings', '{size} used', { size: OC.Util.humanFileSize(this.user.quota.used) })\n\t\t\t}\n\t\t\treturn t('settings', '{size} used', { size: OC.Util.humanFileSize(0) })\n\t\t},\n\t\tusedQuota() {\n\t\t\tlet quota = this.user.quota.quota\n\t\t\tif (quota > 0) {\n\t\t\t\tquota = Math.min(100, Math.round(this.user.quota.used / quota * 100))\n\t\t\t} else {\n\t\t\t\tconst usedInGB = this.user.quota.used / (10 * Math.pow(2, 30))\n\t\t\t\t// asymptotic curve approaching 50% at 10GB to visualize used stace with infinite quota\n\t\t\t\tquota = 95 * (1 - (1 / (usedInGB + 1)))\n\t\t\t}\n\t\t\treturn isNaN(quota) ? 0 : quota\n\t\t},\n\t\t// Mapping saved values to objects\n\t\tuserQuota() {\n\t\t\tif (this.user.quota.quota >= 0) {\n\t\t\t\t// if value is valid, let's map the quotaOptions or return custom quota\n\t\t\t\tconst humanQuota = OC.Util.humanFileSize(this.user.quota.quota)\n\t\t\t\tconst userQuota = this.quotaOptions.find(quota => quota.id === humanQuota)\n\t\t\t\treturn userQuota || { id: humanQuota, label: humanQuota }\n\t\t\t} else if (this.user.quota.quota === 'default') {\n\t\t\t\t// default quota is replaced by the proper value on load\n\t\t\t\treturn this.quotaOptions[0]\n\t\t\t}\n\t\t\treturn this.quotaOptions[1] // unlimited\n\t\t},\n\n\t\t/* PASSWORD POLICY? */\n\t\tminPasswordLength() {\n\t\t\treturn this.$store.getters.getPasswordPolicyMinLength\n\t\t},\n\n\t\t/* LANGUAGE */\n\t\tuserLanguage() {\n\t\t\tconst availableLanguages = this.languages[0].languages.concat(this.languages[1].languages)\n\t\t\tconst userLang = availableLanguages.find(lang => lang.code === this.user.language)\n\t\t\tif (typeof userLang !== 'object' && this.user.language !== '') {\n\t\t\t\treturn {\n\t\t\t\t\tcode: this.user.language,\n\t\t\t\t\tname: this.user.language,\n\t\t\t\t}\n\t\t\t} else if (this.user.language === '') {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn userLang\n\t\t},\n\n\t\t/* LAST LOGIN */\n\t\tuserLastLoginTooltip() {\n\t\t\tif (this.user.lastLogin > 0) {\n\t\t\t\treturn OC.Util.formatDate(this.user.lastLogin)\n\t\t\t}\n\t\t\treturn ''\n\t\t},\n\t\tuserLastLogin() {\n\t\t\tif (this.user.lastLogin > 0) {\n\t\t\t\treturn OC.Util.relativeModifiedDate(this.user.lastLogin)\n\t\t\t}\n\t\t\treturn t('settings', 'Never')\n\t\t},\n\t},\n}\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!./UserRow.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!./UserRow.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!./UserRow.vue?vue&type=style&index=0&id=07bad8e5&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./UserRow.vue?vue&type=style&index=0&id=07bad8e5&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserRow.vue?vue&type=template&id=07bad8e5&scoped=true\"\nimport script from \"./UserRow.vue?vue&type=script&lang=js\"\nexport * from \"./UserRow.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserRow.vue?vue&type=style&index=0&id=07bad8e5&prod&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 \"07bad8e5\",\n null\n \n)\n\nexport default component.exports","\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!./UserList.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!./UserList.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!./UserList.vue?vue&type=style&index=0&id=0e745d5e&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./UserList.vue?vue&type=style&index=0&id=0e745d5e&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserList.vue?vue&type=template&id=0e745d5e&scoped=true\"\nimport script from \"./UserList.vue?vue&type=script&lang=js\"\nexport * from \"./UserList.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserList.vue?vue&type=style&index=0&id=0e745d5e&prod&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 \"0e745d5e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('Fragment',[(_vm.showConfig.showNewUserForm)?_c('NewUserModal',{attrs:{\"loading\":_vm.loading,\"new-user\":_vm.newUser,\"quota-options\":_vm.quotaOptions},on:{\"reset\":_vm.resetForm,\"close\":_vm.closeModal}}):_vm._e(),_vm._v(\" \"),(_vm.filteredUsers.length === 0)?_c('NcEmptyContent',{staticClass:\"empty\",attrs:{\"name\":_vm.isInitialLoad && _vm.loading.users ? null : _vm.t('settings', 'No accounts')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.isInitialLoad && _vm.loading.users)?_c('NcLoadingIcon',{attrs:{\"name\":_vm.t('settings', 'Loading accounts …'),\"size\":64}}):_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiAccountGroup,\"size\":64}})]},proxy:true}],null,false,226056511)}):_c('VirtualList',{style:(_vm.style),attrs:{\"data-component\":_vm.UserRow,\"data-sources\":_vm.filteredUsers,\"data-key\":\"id\",\"data-cy-user-list\":\"\",\"item-height\":_vm.rowHeight,\"extra-props\":{\n\t\t\tusers: _vm.users,\n\t\t\tsettings: _vm.settings,\n\t\t\thasObfuscated: _vm.hasObfuscated,\n\t\t\tgroups: _vm.groups,\n\t\t\tsubAdminsGroups: _vm.subAdminsGroups,\n\t\t\tquotaOptions: _vm.quotaOptions,\n\t\t\tlanguages: _vm.languages,\n\t\t\texternalActions: _vm.externalActions,\n\t\t}},on:{\"scroll-end\":_vm.handleScrollEnd},scopedSlots:_vm._u([{key:\"before\",fn:function(){return [_c('caption',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'List of accounts. This list is not fully rendered for performance reasons. The accounts will be rendered as you navigate through the list.'))+\"\\n\\t\\t\\t\")])]},proxy:true},{key:\"header\",fn:function(){return [_c('UserListHeader',{attrs:{\"has-obfuscated\":_vm.hasObfuscated}})]},proxy:true},{key:\"footer\",fn:function(){return [_c('UserListFooter',{attrs:{\"loading\":_vm.loading.users,\"filtered-users\":_vm.filteredUsers}})]},proxy:true}])})],1)\n}\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!./UserManagement.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!./UserManagement.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!./UserManagement.vue?vue&type=style&index=0&id=fc8857fc&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./UserManagement.vue?vue&type=style&index=0&id=fc8857fc&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserManagement.vue?vue&type=template&id=fc8857fc&scoped=true\"\nimport script from \"./UserManagement.vue?vue&type=script&lang=js\"\nexport * from \"./UserManagement.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserManagement.vue?vue&type=style&index=0&id=fc8857fc&prod&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 \"fc8857fc\",\n null\n \n)\n\nexport default component.exports","// 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, `.account-management__system-list[data-v-413f2c9e]{height:auto !important;overflow:visible !important}.account-management__group-list[data-v-413f2c9e]{height:100% !important}.account-management__settings-toggle[data-v-413f2c9e]{margin-bottom:12px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/views/UserManagementNavigation.vue\"],\"names\":[],\"mappings\":\"AAEC,kDACC,sBAAA,CACA,2BAAA,CAGD,iDACC,sBAAA,CAGD,sDACC,kBAAA\",\"sourcesContent\":[\"\\n.account-management{\\n\\t&__system-list {\\n\\t\\theight: auto !important;\\n\\t\\toverflow: visible !important;\\n\\t}\\n\\n\\t&__group-list {\\n\\t\\theight: 100% !important;\\n\\t}\\n\\n\\t&__settings-toggle {\\n\\t\\tmargin-bottom: 12px;\\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, `.user-list__row[data-v-07bad8e5]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.user-list__row[data-v-07bad8e5]:hover{background-color:var(--color-background-hover)}.user-list__row:hover .row__cell[data-v-07bad8e5]:not(.row__cell--actions){background-color:var(--color-background-hover)}.user-list__row .select--fill[data-v-07bad8e5]{max-width:calc(var(--cell-width-large) - 2*var(--cell-padding))}.row__cell[data-v-07bad8e5]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.row__cell strong[data-v-07bad8e5],.row__cell span[data-v-07bad8e5],.row__cell label[data-v-07bad8e5]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.row__cell--avatar[data-v-07bad8e5],.row__cell--displayname[data-v-07bad8e5]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.row__cell--avatar[data-v-07bad8e5]{left:0}.row__cell--displayname[data-v-07bad8e5]{left:var(--avatar-cell-width);border-right:1px solid var(--color-border)}}.row__cell--avatar[data-v-07bad8e5]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.row__cell--multiline span[data-v-07bad8e5]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.row__cell--multiline span[data-v-07bad8e5]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.row__cell--large[data-v-07bad8e5]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.row__cell--obfuscated[data-v-07bad8e5]{min-width:400px;width:400px}.row__cell--fill[data-v-07bad8e5]{min-width:var(--cell-width-large);width:100%}.row__cell--actions[data-v-07bad8e5]{position:sticky;right:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-left:1px solid var(--color-border)}.row__subtitle[data-v-07bad8e5]{color:var(--color-text-maxcontrast)}.row__cell[data-v-07bad8e5]{border-bottom:1px solid var(--color-border)}.row__cell[data-v-07bad8e5] .v-select.select{min-width:var(--cell-min-width)}.row__progress[data-v-07bad8e5]{margin-top:4px}.row__progress--warn[data-v-07bad8e5]::-moz-progress-bar{background:var(--color-warning) !important}.row__progress--warn[data-v-07bad8e5]::-webkit-progress-value{background:var(--color-warning) !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/UserRow.vue\",\"webpack://./apps/settings/src/components/Users/shared/styles.scss\"],\"names\":[],\"mappings\":\"AAGA,iCCoBC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CDtBA,uCACC,8CAAA,CAEA,2EACC,8CAAA,CAKF,+CACC,+DAAA,CCgBD,4BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,sGAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,6EAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,oCACC,MAAA,CAGD,yCACC,6BAAA,CACA,0CAAA,CAAA,CAIF,oCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,4CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,4CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,mCACC,iCAAA,CACA,6BAAA,CAGD,wCACC,eAAA,CACA,WAAA,CAID,kCACC,iCAAA,CACA,UAAA,CAGD,qCACC,eAAA,CACA,OAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,yCAAA,CAIF,gCACC,mCAAA,CDjGD,4BACC,2CAAA,CAGC,6CACC,+BAAA,CAKH,gCACC,cAAA,CAGC,yDACC,0CAAA,CAED,8DACC,0CAAA\",\"sourcesContent\":[\"\\n@import './shared/styles.scss';\\n\\n.user-list__row {\\n\\t@include row;\\n\\n\\t&:hover {\\n\\t\\tbackground-color: var(--color-background-hover);\\n\\n\\t\\t.row__cell:not(.row__cell--actions) {\\n\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t}\\n\\t}\\n\\n\\t// Limit width of select in fill cell\\n\\t.select--fill {\\n\\t\\tmax-width: calc(var(--cell-width-large) - (2 * var(--cell-padding)));\\n\\t}\\n}\\n\\n.row {\\n\\t@include cell;\\n\\n\\t&__cell {\\n\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\n\\t\\t:deep {\\n\\t\\t\\t.v-select.select {\\n\\t\\t\\t\\tmin-width: var(--cell-min-width);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__progress {\\n\\t\\tmargin-top: 4px;\\n\\n\\t\\t&--warn {\\n\\t\\t\\t&::-moz-progress-bar {\\n\\t\\t\\t\\tbackground: var(--color-warning) !important;\\n\\t\\t\\t}\\n\\t\\t\\t&::-webkit-progress-value {\\n\\t\\t\\t\\tbackground: var(--color-warning) !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\",\"/**\\n * @copyright 2023 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@mixin row {\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tmin-width: 100%;\\n\\twidth: fit-content;\\n\\theight: var(--row-height);\\n\\tbackground-color: var(--color-main-background);\\n}\\n\\n@mixin cell {\\n\\t&__cell {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: center;\\n\\t\\tpadding: 0 var(--cell-padding);\\n\\t\\tmin-width: var(--cell-width);\\n\\t\\twidth: var(--cell-width);\\n\\t\\tcolor: var(--color-main-text);\\n\\n\\t\\tstrong,\\n\\t\\tspan,\\n\\t\\tlabel {\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\toverflow-wrap: anywhere;\\n\\t\\t}\\n\\n\\t\\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\\n\\t\\t\\t&--avatar,\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tposition: sticky;\\n\\t\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--avatar {\\n\\t\\t\\t\\tleft: 0;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tleft: var(--avatar-cell-width);\\n\\t\\t\\t\\tborder-right: 1px solid var(--color-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--avatar {\\n\\t\\t\\tmin-width: var(--avatar-cell-width);\\n\\t\\t\\twidth: var(--avatar-cell-width);\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&--multiline {\\n\\t\\t\\tspan {\\n\\t\\t\\t\\tline-height: 1.3em;\\n\\t\\t\\t\\twhite-space: unset;\\n\\n\\t\\t\\t\\t@supports (-webkit-line-clamp: 2) {\\n\\t\\t\\t\\t\\tdisplay: -webkit-box;\\n\\t\\t\\t\\t\\t-webkit-line-clamp: 2;\\n\\t\\t\\t\\t\\t-webkit-box-orient: vertical;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--large {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: var(--cell-width-large);\\n\\t\\t}\\n\\n\\t\\t&--obfuscated {\\n\\t\\t\\tmin-width: 400px;\\n\\t\\t\\twidth: 400px;\\n\\t\\t}\\n\\n\\t\\t// Fill remaining row space with cell\\n\\t\\t&--fill {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\n\\t\\t&--actions {\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: row;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tmin-width: 110px;\\n\\t\\t\\twidth: 110px;\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tborder-left: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t&__subtitle {\\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, `.empty[data-v-0e745d5e] .icon-vue{width:64px;height:64px}.empty[data-v-0e745d5e] .icon-vue svg{max-width:64px;max-height:64px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/UserList.vue\"],\"names\":[],\"mappings\":\"AAKE,kCACC,UAAA,CACA,WAAA,CAEA,sCACC,cAAA,CACA,eAAA\",\"sourcesContent\":[\"\\n@import './Users/shared/styles.scss';\\n\\n.empty {\\n\\t:deep {\\n\\t\\t.icon-vue {\\n\\t\\t\\twidth: 64px;\\n\\t\\t\\theight: 64px;\\n\\n\\t\\t\\tsvg {\\n\\t\\t\\t\\tmax-width: 64px;\\n\\t\\t\\t\\tmax-height: 64px;\\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, `.app-content[data-v-fc8857fc]{display:flex;overflow:hidden;flex-direction:column;max-height:100%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/views/UserManagement.vue\"],\"names\":[],\"mappings\":\"AACA,8BAEC,YAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA\",\"sourcesContent\":[\"\\n.app-content {\\n\\t// Virtual list needs to be full height and is scrollable\\n\\tdisplay: flex;\\n\\toverflow: hidden;\\n\\tflex-direction: column;\\n\\tmax-height: 100%;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppNavigation,{attrs:{\"aria-label\":_setup.t('settings', 'Account management')},scopedSlots:_vm._u([{key:\"footer\",fn:function(){return [_c(_setup.NcButton,{staticClass:\"account-management__settings-toggle\",attrs:{\"type\":\"tertiary\"},on:{\"click\":function($event){_setup.isDialogOpen = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiCog}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_setup.t('settings', 'Account management settings'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c(_setup.UserSettingsDialog,{attrs:{\"open\":_setup.isDialogOpen},on:{\"update:open\":function($event){_setup.isDialogOpen=$event}}})]},proxy:true}])},[_c(_setup.NcAppNavigationNew,{attrs:{\"button-id\":\"new-user-button\",\"text\":_setup.t('settings','New account')},on:{\"click\":_setup.showNewUserMenu,\"keyup\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _setup.showNewUserMenu.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"]))return null;return _setup.showNewUserMenu.apply(null, arguments)}]},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiPlus}})]},proxy:true}])}),_vm._v(\" \"),_c(_setup.NcAppNavigationList,{staticClass:\"account-management__system-list\",attrs:{\"data-cy-users-settings-navigation-groups\":\"system\"}},[_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"everyone\",\"exact\":true,\"name\":_setup.t('settings', 'Active accounts'),\"to\":{ name: 'users' }},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiAccount}})]},proxy:true},{key:\"counter\",fn:function(){return [(_setup.userCount)?_c(_setup.NcCounterBubble,{attrs:{\"type\":!_setup.selectedGroupDecoded ? 'highlighted' : undefined}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_setup.userCount)+\"\\n\\t\\t\\t\\t\")]):_vm._e()]},proxy:true}])}),_vm._v(\" \"),(_setup.settings.isAdmin)?_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"admin\",\"exact\":true,\"name\":_setup.t('settings', 'Admins'),\"to\":{ name: 'group', params: { selectedGroup: 'admin' } }},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiShieldAccount}})]},proxy:true},{key:\"counter\",fn:function(){return [(_setup.adminGroup && _setup.adminGroup.count > 0)?_c(_setup.NcCounterBubble,{attrs:{\"type\":_setup.selectedGroupDecoded === 'admin' ? 'highlighted' : undefined}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_setup.adminGroup.count)+\"\\n\\t\\t\\t\\t\")]):_vm._e()]},proxy:true}],null,false,2218088905)}):_vm._e(),_vm._v(\" \"),(_setup.disabledGroup && (_setup.disabledGroup.usercount > 0 || _setup.disabledGroup.usercount === -1))?_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"disabled\",\"exact\":true,\"name\":_setup.t('settings', 'Disabled accounts'),\"to\":{ name: 'group', params: { selectedGroup: 'disabled' } }},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiAccountOff}})]},proxy:true},(_setup.disabledGroup.usercount > 0)?{key:\"counter\",fn:function(){return [_c(_setup.NcCounterBubble,{attrs:{\"type\":_setup.selectedGroupDecoded === 'disabled' ? 'highlighted' : undefined}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_setup.disabledGroup.usercount)+\"\\n\\t\\t\\t\\t\")])]},proxy:true}:null],null,true)}):_vm._e()],1),_vm._v(\" \"),_c(_setup.NcAppNavigationCaption,{attrs:{\"name\":_setup.t('settings', 'Groups'),\"disabled\":_setup.loadingAddGroup,\"aria-label\":_setup.loadingAddGroup ? _setup.t('settings', 'Creating group…') : _setup.t('settings', 'Create group'),\"force-menu\":\"\",\"is-heading\":\"\",\"open\":_setup.isAddGroupOpen},on:{\"update:open\":function($event){_setup.isAddGroupOpen=$event}},scopedSlots:_vm._u([(_setup.isAdminOrDelegatedAdmin)?{key:\"actionsTriggerIcon\",fn:function(){return [(_setup.loadingAddGroup)?_c(_setup.NcLoadingIcon):_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiPlus}})]},proxy:true}:null,(_setup.isAdminOrDelegatedAdmin)?{key:\"actions\",fn:function(){return [_c(_setup.NcActionText,{scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiAccountGroup}})]},proxy:true}],null,false,3607647275)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_setup.t('settings', 'Create group'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c(_setup.NcActionInput,{attrs:{\"label\":_setup.t('settings', 'Group name'),\"data-cy-users-settings-new-group-name\":\"\",\"label-outside\":false,\"disabled\":_setup.loadingAddGroup,\"value\":_setup.newGroupName,\"error\":_setup.hasAddGroupError,\"helper-text\":_setup.hasAddGroupError ? _setup.t('settings', 'Please enter a valid group name') : ''},on:{\"update:value\":function($event){_setup.newGroupName=$event},\"submit\":_setup.createGroup}})]},proxy:true}:null],null,true)}),_vm._v(\" \"),_c(_setup.NcAppNavigationList,{staticClass:\"account-management__group-list\",attrs:{\"data-cy-users-settings-navigation-groups\":\"custom\"}},_vm._l((_setup.userGroups),function(group){return _c(_setup.GroupListItem,{key:group.id,attrs:{\"id\":group.id,\"active\":_setup.selectedGroupDecoded === group.id,\"name\":group.title,\"count\":group.count}})}),1)],1)\n}\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!./GroupListItem.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!./GroupListItem.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!./GroupListItem.vue?vue&type=style&index=0&id=17dd13c0&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./GroupListItem.vue?vue&type=style&index=0&id=17dd13c0&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./GroupListItem.vue?vue&type=template&id=17dd13c0&scoped=true\"\nimport script from \"./GroupListItem.vue?vue&type=script&lang=js\"\nexport * from \"./GroupListItem.vue?vue&type=script&lang=js\"\nimport style0 from \"./GroupListItem.vue?vue&type=style&index=0&id=17dd13c0&prod&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 \"17dd13c0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('Fragment',[(_vm.showRemoveGroupModal)?_c('NcModal',{on:{\"close\":function($event){_vm.showRemoveGroupModal = false}}},[_c('div',{staticClass:\"modal__content\"},[_c('h2',{staticClass:\"modal__header\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Please confirm the group removal'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcNoteCard',{attrs:{\"type\":\"warning\",\"show-alert\":\"\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'You are about to remove the group \"{group}\". The accounts will NOT be deleted.', { group: _vm.name }))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"modal__button-row\"},[_c('NcButton',{attrs:{\"type\":\"secondary\"},on:{\"click\":function($event){_vm.showRemoveGroupModal = false}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Cancel'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.removeGroup}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Confirm'))+\"\\n\\t\\t\\t\\t\")])],1)],1)]):_vm._e(),_vm._v(\" \"),_c('NcAppNavigationItem',{key:_vm.id,attrs:{\"exact\":true,\"name\":_vm.name,\"to\":{ name: 'group', params: { selectedGroup: encodeURIComponent(_vm.id) } },\"loading\":_vm.loadingRenameGroup,\"menu-open\":_vm.openGroupMenu},on:{\"update:menuOpen\":_vm.handleGroupMenuOpen},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('AccountGroup',{attrs:{\"size\":20}})]},proxy:true},{key:\"counter\",fn:function(){return [(_vm.count)?_c('NcCounterBubble',{attrs:{\"type\":_vm.active ? 'highlighted' : undefined}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.count)+\"\\n\\t\\t\\t\")]):_vm._e()]},proxy:true},{key:\"actions\",fn:function(){return [(_vm.id !== 'admin' && _vm.id !== 'disabled' && _vm.settings.isAdmin)?_c('NcActionInput',{ref:\"displayNameInput\",attrs:{\"trailing-button-label\":_vm.t('settings', 'Submit'),\"type\":\"text\",\"value\":_vm.name,\"label\":_vm.t('settings', 'Rename group')},on:{\"submit\":function($event){return _vm.renameGroup(_vm.id)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Pencil',{attrs:{\"size\":20}})]},proxy:true}],null,false,580569589)}):_vm._e(),_vm._v(\" \"),(_vm.id !== 'admin' && _vm.id !== 'disabled' && _vm.settings.isAdmin)?_c('NcActionButton',{on:{\"click\":function($event){_vm.showRemoveGroupModal = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Delete',{attrs:{\"size\":20}})]},proxy:true}],null,false,2705356561)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Remove group'))+\"\\n\\t\\t\\t\")]):_vm._e()]},proxy:true}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcAppSettingsDialog',{attrs:{\"open\":_vm.isModalOpen,\"show-navigation\":true,\"name\":_vm.t('settings', 'Account management settings')},on:{\"update:open\":function($event){_vm.isModalOpen=$event}}},[_c('NcAppSettingsSection',{attrs:{\"id\":\"visibility-settings\",\"name\":_vm.t('settings', 'Visibility')}},[_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"showLanguages\",\"checked\":_vm.showLanguages},on:{\"update:checked\":function($event){_vm.showLanguages=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show language'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"showUserBackend\",\"checked\":_vm.showUserBackend},on:{\"update:checked\":function($event){_vm.showUserBackend=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show account backend'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"showStoragePath\",\"checked\":_vm.showStoragePath},on:{\"update:checked\":function($event){_vm.showStoragePath=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show storage path'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"showLastLogin\",\"checked\":_vm.showLastLogin},on:{\"update:checked\":function($event){_vm.showLastLogin=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show last login'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('NcAppSettingsSection',{attrs:{\"id\":\"groups-sorting\",\"name\":_vm.t('settings', 'Sorting')}},[(_vm.isGroupSortingEnforced)?_c('NcNoteCard',{attrs:{\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'The system config enforces sorting the groups by name. This also disables showing the member count.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('fieldset',[_c('legend',[_vm._v(_vm._s(_vm.t('settings', 'Group list sorting')))]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"radio\",\"checked\":_vm.groupSorting,\"data-test\":\"sortGroupsByMemberCount\",\"disabled\":_vm.isGroupSortingEnforced,\"name\":\"group-sorting-mode\",\"value\":\"member-count\"},on:{\"update:checked\":function($event){_vm.groupSorting=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'By member count'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"radio\",\"checked\":_vm.groupSorting,\"data-test\":\"sortGroupsByName\",\"disabled\":_vm.isGroupSortingEnforced,\"name\":\"group-sorting-mode\",\"value\":\"name\"},on:{\"update:checked\":function($event){_vm.groupSorting=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'By name'))+\"\\n\\t\\t\\t\")])],1)],1),_vm._v(\" \"),_c('NcAppSettingsSection',{attrs:{\"id\":\"email-settings\",\"name\":_vm.t('settings', 'Send email')}},[_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"sendWelcomeMail\",\"checked\":_vm.sendWelcomeMail,\"disabled\":_vm.loadingSendMail},on:{\"update:checked\":function($event){_vm.sendWelcomeMail=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Send welcome email to new accounts'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('NcAppSettingsSection',{attrs:{\"id\":\"default-settings\",\"name\":_vm.t('settings', 'Defaults')}},[_c('NcSelect',{attrs:{\"input-label\":_vm.t('settings', 'Default quota'),\"placement\":\"top\",\"taggable\":true,\"options\":_vm.quotaOptions,\"create-option\":_vm.validateQuota,\"placeholder\":_vm.t('settings', 'Select default quota'),\"clearable\":false},on:{\"option:selected\":_vm.setDefaultQuota},model:{value:(_vm.defaultQuota),callback:function ($$v) {_vm.defaultQuota=$$v},expression:\"defaultQuota\"}})],1)],1)\n}\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!./UserSettingsDialog.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!./UserSettingsDialog.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!./UserSettingsDialog.vue?vue&type=style&index=0&id=ab9299ba&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./UserSettingsDialog.vue?vue&type=style&index=0&id=ab9299ba&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserSettingsDialog.vue?vue&type=template&id=ab9299ba&scoped=true\"\nimport script from \"./UserSettingsDialog.vue?vue&type=script&lang=js\"\nexport * from \"./UserSettingsDialog.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserSettingsDialog.vue?vue&type=style&index=0&id=ab9299ba&prod&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 \"ab9299ba\",\n null\n \n)\n\nexport default component.exports","import { computed } from 'vue';\n/**\n * Format a group to a menu entry\n *\n * @param group the group\n */\nfunction formatGroupMenu(group) {\n if (typeof group === 'undefined') {\n return null;\n }\n const item = {\n id: group.id,\n title: group.name,\n usercount: group.usercount,\n count: Math.max(0, group.usercount - group.disabled),\n };\n return item;\n}\nexport const useFormatGroups = (groups) => {\n /**\n * All non-disabled non-admin groups\n */\n const userGroups = computed(() => {\n const formatted = groups.value\n // filter out disabled and admin\n .filter(group => group.id !== 'disabled' && group.id !== 'admin')\n // format group\n .map(group => formatGroupMenu(group))\n // remove invalid\n .filter(group => group !== null);\n return formatted;\n });\n /**\n * The admin group if found otherwise null\n */\n const adminGroup = computed(() => formatGroupMenu(groups.value.find(group => group.id === 'admin')));\n /**\n * The group of disabled users\n */\n const disabledGroup = computed(() => formatGroupMenu(groups.value.find(group => group.id === 'disabled')));\n return { adminGroup, disabledGroup, userGroups };\n};\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserManagementNavigation.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserManagementNavigation.vue?vue&type=script&setup=true&lang=ts\"","\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!./UserManagementNavigation.vue?vue&type=style&index=0&id=413f2c9e&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./UserManagementNavigation.vue?vue&type=style&index=0&id=413f2c9e&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserManagementNavigation.vue?vue&type=template&id=413f2c9e&scoped=true\"\nimport script from \"./UserManagementNavigation.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserManagementNavigation.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./UserManagementNavigation.vue?vue&type=style&index=0&id=413f2c9e&prod&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 \"413f2c9e\",\n null\n \n)\n\nexport default component.exports","// 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[data-v-69afa821]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background);border-bottom:1px solid var(--color-border)}.header__cell[data-v-69afa821]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.header__cell strong[data-v-69afa821],.header__cell span[data-v-69afa821],.header__cell label[data-v-69afa821]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.header__cell--avatar[data-v-69afa821],.header__cell--displayname[data-v-69afa821]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.header__cell--avatar[data-v-69afa821]{left:0}.header__cell--displayname[data-v-69afa821]{left:var(--avatar-cell-width);border-right:1px solid var(--color-border)}}.header__cell--avatar[data-v-69afa821]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.header__cell--multiline span[data-v-69afa821]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.header__cell--multiline span[data-v-69afa821]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.header__cell--large[data-v-69afa821]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.header__cell--obfuscated[data-v-69afa821]{min-width:400px;width:400px}.header__cell--fill[data-v-69afa821]{min-width:var(--cell-width-large);width:100%}.header__cell--actions[data-v-69afa821]{position:sticky;right:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-left:1px solid var(--color-border)}.header__subtitle[data-v-69afa821]{color:var(--color-text-maxcontrast)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/UserListHeader.vue\",\"webpack://./apps/settings/src/components/Users/shared/styles.scss\"],\"names\":[],\"mappings\":\"AAGA,yBCoBC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CDrBA,2CAAA,CCyBA,+BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,+GAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,mFAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,uCACC,MAAA,CAGD,4CACC,6BAAA,CACA,0CAAA,CAAA,CAIF,uCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,+CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,+CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,sCACC,iCAAA,CACA,6BAAA,CAGD,2CACC,eAAA,CACA,WAAA,CAID,qCACC,iCAAA,CACA,UAAA,CAGD,wCACC,eAAA,CACA,OAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,yCAAA,CAIF,mCACC,mCAAA\",\"sourcesContent\":[\"\\n@import './shared/styles.scss';\\n\\n.header {\\n\\t@include row;\\n\\t@include cell;\\n\\n\\tborder-bottom: 1px solid var(--color-border);\\n}\\n\",\"/**\\n * @copyright 2023 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@mixin row {\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tmin-width: 100%;\\n\\twidth: fit-content;\\n\\theight: var(--row-height);\\n\\tbackground-color: var(--color-main-background);\\n}\\n\\n@mixin cell {\\n\\t&__cell {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: center;\\n\\t\\tpadding: 0 var(--cell-padding);\\n\\t\\tmin-width: var(--cell-width);\\n\\t\\twidth: var(--cell-width);\\n\\t\\tcolor: var(--color-main-text);\\n\\n\\t\\tstrong,\\n\\t\\tspan,\\n\\t\\tlabel {\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\toverflow-wrap: anywhere;\\n\\t\\t}\\n\\n\\t\\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\\n\\t\\t\\t&--avatar,\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tposition: sticky;\\n\\t\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--avatar {\\n\\t\\t\\t\\tleft: 0;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tleft: var(--avatar-cell-width);\\n\\t\\t\\t\\tborder-right: 1px solid var(--color-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--avatar {\\n\\t\\t\\tmin-width: var(--avatar-cell-width);\\n\\t\\t\\twidth: var(--avatar-cell-width);\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&--multiline {\\n\\t\\t\\tspan {\\n\\t\\t\\t\\tline-height: 1.3em;\\n\\t\\t\\t\\twhite-space: unset;\\n\\n\\t\\t\\t\\t@supports (-webkit-line-clamp: 2) {\\n\\t\\t\\t\\t\\tdisplay: -webkit-box;\\n\\t\\t\\t\\t\\t-webkit-line-clamp: 2;\\n\\t\\t\\t\\t\\t-webkit-box-orient: vertical;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--large {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: var(--cell-width-large);\\n\\t\\t}\\n\\n\\t\\t&--obfuscated {\\n\\t\\t\\tmin-width: 400px;\\n\\t\\t\\twidth: 400px;\\n\\t\\t}\\n\\n\\t\\t// Fill remaining row space with cell\\n\\t\\t&--fill {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\n\\t\\t&--actions {\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: row;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tmin-width: 110px;\\n\\t\\t\\twidth: 110px;\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tborder-left: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t&__subtitle {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/**\n * @copyright 2023 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 */\nexport const unlimitedQuota = {\n id: 'none',\n label: t('settings', 'Unlimited'),\n};\nexport const defaultQuota = {\n id: 'default',\n label: t('settings', 'Default quota'),\n};\n/**\n * Return `true` if the logged in user does not have permissions to view the\n * data of `user`\n * @param user\n * @param user.id\n */\nexport const isObfuscated = (user) => {\n const keys = Object.keys(user);\n return keys.length === 1 && keys.at(0) === 'id';\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, `.modal__header[data-v-17dd13c0]{margin:0}.modal__content[data-v-17dd13c0]{display:flex;flex-direction:column;align-items:center;padding:20px;gap:4px 0}.modal__button-row[data-v-17dd13c0]{display:flex;width:100%;justify-content:space-between}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/GroupListItem.vue\"],\"names\":[],\"mappings\":\"AAEC,gCACC,QAAA,CAGD,iCACC,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,YAAA,CACA,SAAA,CAGD,oCACC,YAAA,CACA,UAAA,CACA,6BAAA\",\"sourcesContent\":[\"\\n.modal {\\n\\t&__header {\\n\\t\\tmargin: 0;\\n\\t}\\n\\n\\t&__content {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\talign-items: center;\\n\\t\\tpadding: 20px;\\n\\t\\tgap: 4px 0;\\n\\t}\\n\\n\\t&__button-row {\\n\\t\\tdisplay: flex;\\n\\t\\twidth: 100%;\\n\\t\\tjustify-content: space-between;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n"],"names":["___CSS_LOADER_EXPORT___","push","module","id","util","warn","unrefElement","elRef","_a","plain","$el","defaultWindow","window","useSupported","callback","isMounted","value","useMounted","Boolean","useElementVisibility","element","options","scrollTarget","threshold","elementIsVisible","target","root","rootMargin","immediate","isSupported","targets","_target","Array","isArray","map","filter","cleanup","isActive","stopWatch","targets2","root2","length","observer","IntersectionObserver","forEach","el","observe","disconnect","flush","stop","useIntersectionObserver","intersectionObserverEntries","isIntersecting","latestTime","entry","time","mounted","unmounted","globalThis","global","self","vElementVisibility","binding","handler","isVisible","v","Vue","directive","extend","name","props","dataComponent","type","Object","Function","required","dataKey","String","dataSources","itemHeight","Number","extraProps","default","data","bufferItems","index","headerHeight","tableHeight","resizeObserver","computed","startIndex","Math","max","shownItems","ceil","renderedItems","slice","tbodyStyle","isOverScrolled","lastIndex","hiddenAfterItems","min","paddingTop","paddingBottom","tfoot","$refs","thead","ResizeObserver","debounce","clientHeight","logger","debug","onScroll","addEventListener","beforeDestroy","methods","handleFooterVisibility","visible","$emit","round","scrollTop","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_vm","this","_c","_self","_setupProxy","staticClass","_t","_v","ref","attrs","style","_l","item","i","_b","key","tag","directives","rawName","expression","components","NcButton","NcModal","NcPasswordField","NcSelect","NcTextField","loading","newUser","quotaOptions","possibleManagers","managerLabel","t","showConfig","$store","getters","getShowConfig","settings","getServerData","usernameLabel","newUserGenerateUserID","minPasswordLength","getPasswordPolicyMinLength","groups","getGroups","group","sort","a","b","localeCompare","subAdminsGroups","getSubadminGroups","canAddGroups","assign","$isDisabled","canAdd","languages","commonLanguages","otherLanguages","beforeMount","searchUserManager","createUser","all","dispatch","userid","password","displayName","email","mailAddress","subadmin","quota","language","code","manager","username","inputField","input","focus","error","response","ocs","meta","statuscode","handleGroupInput","createGroup","_ref","gid","find","validateQuota","validQuota","OC","Util","computerFileSize","humanFileSize","label","languageFilterBy","option","search","some","_ref2","toLocaleLowerCase","includes","query","offset","limit","then","users","values","_g","$listeners","on","$event","preventDefault","apply","arguments","_s","$set","newUserRequireEmail","_e","isAdmin","model","$$v","showLanguages","class","NcLoadingIcon","filteredUsers","userCount","n","hasObfuscated","passwordLabel","showUserBackend","showStoragePath","showLastLogin","defineComponent","NcActionButton","NcActions","NcIconSvgWrapper","actions","disabled","edit","user","editSvg","toggleEdit","scopedSlots","_u","fn","proxy","action","icon","text","event","externalActions","userGroups","userSubAdminsGroups","availableGroups","groupClone","canRemove","usedSpace","used","size","usedQuota","pow","isNaN","userQuota","humanQuota","userLanguage","userLang","concat","lang","userLastLoginTooltip","lastLogin","formatDate","userLastLogin","relativeModifiedDate","NcAvatar","NcProgressBar","UserRowActions","mixins","UserRowMixin","selectedQuota","rand","random","toString","substring","loadingPossibleManagers","currentManager","editing","subadmins","delete","disable","wipe","editedDisplayName","displayname","editedPassword","editedMail","isObfuscated","isLoadingUser","isLoadingField","uniqueId","encodeURIComponent","userGroupsLabels","join","userSubAdminsGroupsLabels","formatFileSize","canEdit","getCurrentUser","uid","defaultQuota","parseFileSize","userActions","deleteUser","wipeUserDevices","enabled","enableDisableUser","sendWelcomeMail","editedUserQuota","get","unlimitedQuota","set","availableLanguages","initManager","dialogs","confirmDestructive","YES_NO_BUTTONS","confirm","confirmClasses","cancel","result","showSuccess","timeout","finally","filterManagers","managers","userId","searchInitialUserManager","updateUserManager","showError","console","updateDisplayName","updatePassword","updateEmail","addUserGroup","isCreating","removeUserGroup","$route","params","selectedGroup","commit","addUserSubAdmin","removeUserSubAdmin","setUserQuota","undefined","setUserLanguage","$nextTick","displayNameField","backendCapabilities","setDisplayName","canChangePassword","setPassword","at","backend","storageLocation","freeze","Fragment","NcEmptyContent","NewUserModal","UserListFooter","UserListHeader","VirtualList","setup","mdiAccountGroup","rowHeight","UserRow","isInitialLoad","searchQuery","getUsers","quotaPreset","reduce","acc","cur","allowUnlimitedQuota","unshift","usersOffset","getUsersOffset","usersLimit","getUsersLimit","disabledUsersOffset","getDisabledUsersOffset","disabledUsersLimit","getDisabledUsersLimit","usersCount","watch","val","redirectIfDisabled","loadUsers","setNewUserDefaultGroup","created","Notification","showTemporary","resetForm","subscribe","resetSearch","unsubscribe","handleScrollEnd","closeModal","defaultLanguage","isDelegatedAdmin","currentGroup","allGroups","findIndex","usercount","$router","showNewUserForm","NcAppContent","UserList","pageHeading","selectedGroupDecoded","admin","decodeURIComponent","orderBy","sortGroups","OCA","Settings","registerAction","AccountGroup","Delete","NcActionInput","NcAppNavigationItem","NcCounterBubble","NcNoteCard","Pencil","active","count","loadingRenameGroup","openGroupMenu","showRemoveGroupModal","handleGroupMenuOpen","renameGroup","trim","displayNameInput","querySelector","groupid","removeGroup","NcAppSettingsDialog","NcAppSettingsSection","NcCheckboxRadioSwitch","open","loadingSendMail","groupSorting","getGroupSorting","GroupSorting","GroupName","sorting","UserCount","isGroupSortingEnforced","forceSortGroupByName","isModalOpen","status","setShowConfig","newUserSendEmail","axios","post","generateUrl","e","message","setDefaultQuota","app","formatGroupMenu","title","_defineComponent","__name","__props","route","useRoute","router","useRouter","store","useStore","isDialogOpen","getUserCount","getSortedGroups","adminGroup","disabledGroup","useFormatGroups","isAdminOrDelegatedAdmin","isAddGroupOpen","loadingAddGroup","hasAddGroupError","newGroupName","__sfc","groupId","showNewUserMenu","mdiAccount","mdiAccountOff","mdiCog","mdiPlus","mdiShieldAccount","NcActionText","NcAppNavigation","NcAppNavigationCaption","NcAppNavigationList","NcAppNavigationNew","GroupListItem","UserSettingsDialog","_setup","indexOf","_k","keyCode","keys"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"settings-users-3239.js?v=64f2f5050610c76d9879","mappings":";0JAGIA,QAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,imBAAkmB,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,kEAAkE,MAAQ,GAAG,SAAW,kNAAkN,eAAiB,CAAC,qwBAAqwB,WAAa,MAEpvD,8ECJIH,QAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,ifAAkf,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,mEAAmE,MAAQ,GAAG,SAAW,6LAA6L,eAAiB,CAAC,2hBAA2hB,WAAa,MAEt4C,0DCPA,gHCMW,KAAIC,KAAKC,6BCcpB,SAASC,EAAaC,GACpB,IAAIC,EACJ,MAAMC,GAAQ,QAAQF,GACtB,OAAoD,OAA5CC,EAAc,MAATC,OAAgB,EAASA,EAAMC,KAAeF,EAAKC,CAClE,CAEA,MAAME,EAAgB,KAAWC,YAAS,EAwhB1C,SAASC,EAAaC,GACpB,MAAMC,EAZR,WACE,MAAMA,GAAY,SAAI,GAOtB,OANiB,YAEf,SAAU,KACRA,EAAUC,OAAQ,CAAI,QACZ,GAEPD,CACT,CAGoBE,GAClB,OAAO,SAAS,KACdF,EAAUC,MACHE,QAAQJ,OAEnB,CAufA,SAASK,EAAqBC,EAASC,EAAU,CAAC,GAChD,MAAM,OAAET,EAASD,EAAa,aAAEW,EAAY,UAAEC,EAAY,GAAMF,EAC1DG,GAAmB,SAAI,GAoB7B,OAjFF,SAAiCC,EAAQX,EAAUO,EAAU,CAAC,GAC5D,MAAM,KACJK,EAAI,WACJC,EAAa,MAAK,UAClBJ,EAAY,GAAG,OACfX,EAASD,EAAa,UACtBiB,GAAY,GACVP,EACEQ,EAAchB,GAAa,IAAMD,GAAU,yBAA0BA,IACrEkB,GAAU,SAAS,KACvB,MAAMC,GAAU,QAAQN,GACxB,OAAQO,MAAMC,QAAQF,GAAWA,EAAU,CAACA,IAAUG,IAAI5B,GAAc6B,OAAO,KAAW,IAE5F,IAAIC,EAAU,KACd,MAAMC,GAAW,QAAIT,GACfU,EAAYT,EAAYb,OAAQ,SACpC,IAAM,CAACc,EAAQd,MAAOV,EAAaoB,GAAOW,EAASrB,SACnD,EAAEuB,EAAUC,MAEV,GADAJ,KACKC,EAASrB,MACZ,OACF,IAAKuB,EAASE,OACZ,OACF,MAAMC,EAAW,IAAIC,qBACnB7B,EACA,CACEY,KAAMpB,EAAakC,GACnBb,aACAJ,cAGJgB,EAASK,SAASC,GAAOA,GAAMH,EAASI,QAAQD,KAChDT,EAAU,KACRM,EAASK,aACTX,EAAU,IAAI,CACf,GAEH,CAAER,YAAWoB,MAAO,SAClB,KACEC,EAAO,KACXb,IACAE,IACAD,EAASrB,OAAQ,CAAK,GAExB,QAAkBiC,EAapB,CAKEC,CACE9B,GACC+B,IACC,IAAIC,EAAiB5B,EAAiBR,MAClCqC,EAAa,EACjB,IAAK,MAAMC,KAASH,EACdG,EAAMC,MAAQF,IAChBA,EAAaC,EAAMC,KACnBH,EAAiBE,EAAMF,gBAG3B5B,EAAiBR,MAAQoC,CAAc,GAEzC,CACE1B,KAAMJ,EACNV,SACAW,cAGGC,CACT,CAn8BG,KAAegC,QASf,KAAeC,UAoDf,KAAeD,QA4Hf,KAAeA,QA6DoB,oBAAfE,WAA6BA,WAA+B,oBAAX9C,OAAyBA,OAA2B,oBAAX+C,OAAyBA,OAAyB,oBAATC,MAAuBA,KAkf9K,KAAeJ,QAiHf,KAAeA,QA4GlB,MAAMK,EAAqB,CACzB,CAAC,KAAeL,SAASX,EAAIiB,GAC3B,GAA6B,mBAAlBA,EAAQ9C,MAAsB,CACvC,MAAM+C,EAAUD,EAAQ9C,MAClBgD,EAAY7C,EAAqB0B,IACvC,QAAMmB,GAAYC,GAAMF,EAAQE,IAAI,CAAErC,WAAW,GACnD,KAAO,CACL,MAAOmC,EAAS1C,GAAWyC,EAAQ9C,MAC7BgD,EAAY7C,EAAqB0B,EAAIxB,IAC3C,QAAM2C,GAAYC,GAAMF,EAAQE,IAAI,CAAErC,WAAW,GACnD,CACF,GAmZC,KAAe4B,QASf,KAAeA,QAkXTtC,QACEA,QACCA,QACFA,QA6BP,KAAesC,SAkHF,SAAI,sCC/+DpBU,EAAAA,GAAIC,UAAU,oBAAqBN,GAEnC,MCNoQ,EDOrPK,EAAAA,GAAIE,OAAO,CACtBC,KAAM,cACNC,MAAO,CACHC,cAAe,CACXC,KAAM,CAACC,OAAQC,UACfC,UAAU,GAEdC,QAAS,CACLJ,KAAMK,OACNF,UAAU,GAEdG,YAAa,CACTN,KAAMxC,MACN2C,UAAU,GAEdI,WAAY,CACRP,KAAMQ,OACNL,UAAU,GAEdM,WAAY,CACRT,KAAMC,OACNS,QAASA,KAAA,CAAS,KAG1BC,KAAIA,KACO,CACHC,YA3BQ,EA4BRC,MAAO,EACPC,aAAc,EACdC,YAAa,EACbC,eAAgB,OAGxBC,SAAU,CACNC,UAAAA,GACI,OAAOC,KAAKC,IAAI,EAAG,KAAKP,MApChB,EAqCZ,EACAQ,UAAAA,GACI,OAAOF,KAAKG,MAAM,KAAKP,YAAc,KAAKD,cAAgB,KAAKP,YAAcK,CACjF,EACAW,aAAAA,GACI,OAAO,KAAKjB,YAAYkB,MAAM,KAAKN,WAAY,KAAKA,WAAa,KAAKG,WAC1E,EACAI,UAAAA,GACI,MAAMC,EAAiB,KAAKR,WAAa,KAAKG,WAAa,KAAKf,YAAYrC,OACtE0D,EAAY,KAAKrB,YAAYrC,OAAS,KAAKiD,WAAa,KAAKG,WAC7DO,EAAmBT,KAAKU,IAAI,KAAKvB,YAAYrC,OAAS,KAAKiD,WAAYS,GAC7E,MAAO,CACHG,WAAe,KAAKZ,WAAa,KAAKX,WAA1B,KACZwB,cAAeL,EAAiB,EAAOE,EAAmB,KAAKrB,WAA3B,KAE5C,GAEJvB,OAAAA,GACI,MAAM9B,EAAO,KAAKhB,IACZ8F,EAAQ,KAAKC,OAAOD,MACpBE,EAAQ,KAAKD,OAAOC,MAC1B,KAAKlB,eAAiB,IAAImB,eAAeC,KAAS,KAC9C,KAAKtB,aAAeoB,GAAOG,cAAgB,EAC3C,KAAKtB,YAAc7D,GAAMmF,cAAgB,EACzCC,EAAAA,EAAOC,MAAM,sCACb,KAAKC,UAAU,GAChB,KAAK,IACR,KAAKxB,eAAe1C,QAAQpB,GAC5B,KAAK8D,eAAe1C,QAAQ0D,GAC5B,KAAKhB,eAAe1C,QAAQ4D,GAC5B,KAAKhG,IAAIuG,iBAAiB,SAAU,KAAKD,SAC7C,EACAE,aAAAA,GACQ,KAAK1B,gBACL,KAAKA,eAAezC,YAE5B,EACAoE,QAAS,CACLC,sBAAAA,CAAuBC,GACfA,GACA,KAAKC,MAAM,aAEnB,EACAN,QAAAA,GAEI,KAAK3B,MAAQM,KAAKC,IAAI,EAAGD,KAAK4B,MAAM,KAAK7G,IAAI8G,UAAY,KAAKzC,YAClE,2IE9EJ1D,EAAU,CAAC,EAEfA,EAAQoG,kBAAoB,IAC5BpG,EAAQqG,cAAgB,IACxBrG,EAAQsG,OAAS,SAAc,KAAM,QACrCtG,EAAQuG,OAAS,IACjBvG,EAAQwG,mBAAqB,IAEhB,IAAI,IAASxG,GAKJ,KAAW,IAAQyG,QAAS,IAAQA,sBCL1D,SAXgB,OACd,GHTW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAgC,OAAtBF,EAAIG,MAAMC,YAAmBF,EAAG,QAAQ,CAACG,YAAY,aAAa,CAACL,EAAIM,GAAG,UAAUN,EAAIO,GAAG,KAAKL,EAAG,QAAQ,CAACM,IAAI,QAAQH,YAAY,oBAAoBI,MAAM,CAAC,KAAO,aAAa,CAACT,EAAIM,GAAG,WAAW,GAAGN,EAAIO,GAAG,KAAKL,EAAG,QAAQ,CAACG,YAAY,kBAAkBK,MAAOV,EAAI9B,YAAa8B,EAAIW,GAAIX,EAAIhC,eAAe,SAAS4C,EAAKC,GAAG,OAAOX,EAAGF,EAAIxD,cAAcwD,EAAIc,GAAG,CAACC,IAAIH,EAAKZ,EAAInD,SAASmE,IAAI,YAAYP,MAAM,CAAC,KAAOG,EAAK,SAAWC,GAAKb,EAAI3C,aAAe2C,EAAI1C,OAAS0C,EAAI3C,cAAiBwD,EAAIb,EAAIlC,WAAakC,EAAI3C,cAAe,YAAY2C,EAAI9C,YAAW,GAAO,IAAG,GAAG8C,EAAIO,GAAG,KAAKL,EAAG,QAAQ,CAACe,WAAW,CAAC,CAAC3E,KAAK,qBAAqB4E,QAAQ,uBAAuBjI,MAAO+G,EAAIX,uBAAwB8B,WAAW,2BAA2BX,IAAI,QAAQH,YAAY,oBAAoBI,MAAM,CAAC,KAAO,aAAa,CAACT,EAAIM,GAAG,WAAW,IAAI,EAC73B,GACsB,IGUpB,EACA,KACA,WACA,MAI8B,QCnBhC,2DC+KA,MC/K8L,ED+K9L,CACAhE,KAAA,eAEA8E,WAAA,CACAC,SAAA,IACAC,QAAA,IACAC,gBAAA,IACAC,SAAA,IACAC,YAAAA,EAAAA,GAGAlF,MAAA,CACAmF,QAAA,CACAjF,KAAAC,OACAE,UAAA,GAGA+E,QAAA,CACAlF,KAAAC,OACAE,UAAA,GAGAgF,aAAA,CACAnF,KAAAxC,MACA2C,UAAA,IAIAQ,KAAAA,KACA,CACAyE,iBAAA,GAEAC,aAAAC,EAAA,iCAIArE,SAAA,CACAsE,UAAAA,GACA,YAAAC,OAAAC,QAAAC,aACA,EAEAC,QAAAA,GACA,YAAAH,OAAAC,QAAAG,aACA,EAEAC,aAAAA,GACA,YAAAF,SAAAG,sBACAR,EAAA,6CAEAA,EAAA,iCACA,EAEAS,iBAAAA,GACA,YAAAP,OAAAC,QAAAO,0BACA,EAEAC,MAAAA,GAEA,YAAAT,OAAAC,QAAAS,UACAvI,QAAAwI,GAAA,aAAAA,EAAAxK,KACAyK,MAAA,CAAAC,EAAAC,IAAAD,EAAAxG,KAAA0G,cAAAD,EAAAzG,OACA,EAEA2G,eAAAA,GAEA,YAAAhB,OAAAC,QAAAgB,iBACA,EAEAC,YAAAA,GAEA,YAAAT,OAAAvI,KAAAyI,KAGAA,EAAAlG,OAAA0G,OAAA,GAAAR,IACAS,aAAA,IAAAT,EAAAU,OACAV,IAEA,EAEAW,SAAAA,GACA,OACA,CACAjH,KAAAyF,EAAA,+BACAwB,UAAA,KAAAnB,SAAAmB,UAAAC,oBAEA,KAAApB,SAAAmB,UAAAC,gBACA,CACAlH,KAAAyF,EAAA,8BACAwB,UAAA,KAAAnB,SAAAmB,UAAAE,mBAEA,KAAArB,SAAAmB,UAAAE,eAEA,GAGA,iBAAAC,SACA,KAAAC,mBACA,EAEAvE,QAAA,CACA,gBAAAwE,GACA,KAAAlC,QAAAmC,KAAA,EACA,UACA,KAAA5B,OAAA6B,SAAA,WACAC,OAAA,KAAApC,QAAAvJ,GACA4L,SAAA,KAAArC,QAAAqC,SACAC,YAAA,KAAAtC,QAAAsC,YACAC,MAAA,KAAAvC,QAAAwC,YACAzB,OAAA,KAAAf,QAAAe,OAAAvI,KAAAyI,GAAAA,EAAAxK,KACAgM,SAAA,KAAAzC,QAAAsB,gBAAA9I,KAAAyI,GAAAA,EAAAxK,KACAiM,MAAA,KAAA1C,QAAA0C,MAAAjM,GACAkM,SAAA,KAAA3C,QAAA2C,SAAAC,KACAC,QAAA,KAAA7C,QAAA6C,QAAApM,KAGA,KAAAmH,MAAA,SACA,KAAAb,MAAA+F,UAAA/F,OAAAgG,YAAAhG,OAAAiG,OAAAC,UACA,KAAArF,MAAA,QACA,OAAAsF,GAEA,GADA,KAAAnD,QAAAmC,KAAA,EACAgB,EAAAC,UAAAD,EAAAC,SAAA1H,MAAAyH,EAAAC,SAAA1H,KAAA2H,KAAAF,EAAAC,SAAA1H,KAAA2H,IAAAC,KAAA,CACA,MAAAC,EAAAJ,EAAAC,SAAA1H,KAAA2H,IAAAC,KAAAC,WACA,MAAAA,EAEA,KAAAvG,MAAA+F,UAAA/F,OAAAgG,YAAAhG,OAAAiG,OAAAC,UACA,MAAAK,GAEA,KAAAvG,MAAAsF,UAAAtF,OAAAgG,YAAAhG,OAAAiG,OAAAC,SAEA,CACA,CACA,EAEAM,gBAAAA,CAAAxC,GAMA,KAAAf,QAAAe,OAAAA,EAAAtI,QAAAwI,GAAAzJ,QAAAyJ,EAAAxK,KACA,EAQA,iBAAA+M,CAAAC,GAAA,IAAA9I,KAAA+I,GAAAD,EACA,KAAA1D,QAAAgB,QAAA,EACA,UACA,KAAAT,OAAA6B,SAAA,WAAAuB,GACA,KAAA1D,QAAAe,OAAAxK,KAAA,KAAAwK,OAAA4C,MAAA1C,GAAAA,EAAAxK,KAAAiN,KACA,KAAA3D,QAAAgB,QAAA,CACA,OAAAmC,GACA,KAAAnD,QAAAgB,QAAA,CACA,CACA,EAQA6C,aAAAA,CAAAlB,GAEA,MAAAmB,EAAAC,GAAAC,KAAAC,iBAAAtB,GACA,cAAAmB,GAAAA,GAAA,GAEAnB,EAAAoB,GAAAC,KAAAE,cAAAH,GAAAC,KAAAC,iBAAAtB,IACA,KAAA1C,QAAA0C,MAAA,CAAAjM,GAAAiM,EAAAwB,MAAAxB,GACA,KAAA1C,QAAA0C,QAGA,KAAA1C,QAAA0C,MAAA,KAAAzC,aAAA,GACA,KAAAA,aAAA,GACA,EAEAkE,iBAAAA,CAAAC,EAAAF,EAAAG,IAEAD,EAAAxC,UACAwC,EAAAxC,UAAA0C,MACAC,IAAA,SAAA5J,GAAA4J,EAAA,OAAA5J,EAAA6J,oBAAAC,SAAAJ,EAAAG,oBAAA,KAIAN,GAAA,IAAAM,oBAAAC,SAAAJ,EAAAG,qBAGA,uBAAAxC,CAAA0C,SACA,KAAApE,OAAA6B,SACA,cACA,CACAwC,OAAA,EACAC,MAAA,GACAP,OAAAK,IAEAG,MAAA1B,IACA,MAAA2B,EAAA3B,GAAA1H,KAAAV,OAAAgK,OAAA5B,GAAA1H,KAAA2H,IAAA3H,KAAAqJ,OAAA,GACAA,EAAA/L,OAAA,IACA,KAAAmH,iBAAA4E,EACA,GAEA,kBEhXI,EAAU,CAAC,EAEf,EAAQ/G,kBAAoB,IAC5B,EAAQC,cAAgB,IACxB,EAAQC,OAAS,SAAc,KAAM,QACrC,EAAQC,OAAS,IACjB,EAAQC,mBAAqB,IAEhB,IAAI,IAAS,GAKJ,KAAW,IAAQC,QAAS,IAAQA,OCL1D,SAXgB,OACd,GJTW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,UAAUF,EAAI2G,GAAG,CAACtG,YAAY,QAAQI,MAAM,CAAC,KAAO,UAAUT,EAAI4G,YAAY,CAAC1G,EAAG,OAAO,CAACG,YAAY,cAAcI,MAAM,CAAC,YAAY,OAAO,SAAWT,EAAI0B,QAAQmC,KAAKgD,GAAG,CAAC,OAAS,SAASC,GAAgC,OAAxBA,EAAOC,iBAAwB/G,EAAI4D,WAAWoD,MAAM,KAAMC,UAAU,IAAI,CAAC/G,EAAG,KAAK,CAACF,EAAIO,GAAGP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,gBAAgB/B,EAAIO,GAAG,KAAKL,EAAG,cAAc,CAACM,IAAI,WAAWH,YAAY,cAAcI,MAAM,CAAC,YAAY,WAAW,MAAQT,EAAI2B,QAAQvJ,GAAG,SAAW4H,EAAIoC,SAASG,sBAAsB,MAAQvC,EAAIsC,cAAc,eAAiB,OAAO,aAAe,MAAM,WAAa,QAAQ,QAAU,yBAAyB,SAAW,IAAIuE,GAAG,CAAC,eAAe,SAASC,GAAQ,OAAO9G,EAAImH,KAAKnH,EAAI2B,QAAS,KAAMmF,EAAO,KAAK9G,EAAIO,GAAG,KAAKL,EAAG,cAAc,CAACG,YAAY,cAAcI,MAAM,CAAC,YAAY,cAAc,MAAQT,EAAI2B,QAAQsC,YAAY,MAAQjE,EAAI+B,EAAE,WAAY,gBAAgB,eAAiB,OAAO,aAAe,MAAM,WAAa,SAAS8E,GAAG,CAAC,eAAe,SAASC,GAAQ,OAAO9G,EAAImH,KAAKnH,EAAI2B,QAAS,cAAemF,EAAO,KAAK9G,EAAIO,GAAG,KAAOP,EAAIoC,SAASgF,oBAA+LpH,EAAIqH,KAA9KnH,EAAG,OAAO,CAACG,YAAY,cAAcI,MAAM,CAAC,GAAK,wBAAwB,CAACT,EAAIO,GAAG,WAAWP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,yCAAyC,YAAqB/B,EAAIO,GAAG,KAAKL,EAAG,kBAAkB,CAACM,IAAI,WAAWH,YAAY,cAAcI,MAAM,CAAC,YAAY,WAAW,MAAQT,EAAI2B,QAAQqC,SAAS,UAAYhE,EAAIwC,kBAAkB,UAAY,IAAI,mBAAmB,sBAAsB,MAAoC,KAA5BxC,EAAI2B,QAAQwC,YAAqBnE,EAAI+B,EAAE,WAAY,uBAAyB/B,EAAI+B,EAAE,WAAY,YAAY,eAAiB,OAAO,aAAe,eAAe,WAAa,QAAQ,SAAuC,KAA5B/B,EAAI2B,QAAQwC,aAAoB0C,GAAG,CAAC,eAAe,SAASC,GAAQ,OAAO9G,EAAImH,KAAKnH,EAAI2B,QAAS,WAAYmF,EAAO,KAAK9G,EAAIO,GAAG,KAAKL,EAAG,cAAc,CAACG,YAAY,cAAcI,MAAM,CAAC,YAAY,QAAQ,KAAO,QAAQ,MAAQT,EAAI2B,QAAQwC,YAAY,mBAAmB,sBAAsB,MAAiC,KAAzBnE,EAAI2B,QAAQqC,UAAmBhE,EAAIoC,SAASgF,oBAAsBpH,EAAI+B,EAAE,WAAY,oBAAsB/B,EAAI+B,EAAE,WAAY,SAAS,eAAiB,OAAO,aAAe,MAAM,WAAa,QAAQ,SAAoC,KAAzB/B,EAAI2B,QAAQqC,UAAmBhE,EAAIoC,SAASgF,qBAAqBP,GAAG,CAAC,eAAe,SAASC,GAAQ,OAAO9G,EAAImH,KAAKnH,EAAI2B,QAAS,cAAemF,EAAO,KAAK9G,EAAIO,GAAG,KAAKL,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,QAAQ,CAACG,YAAY,eAAeI,MAAM,CAAC,IAAM,oBAAoB,CAACT,EAAIO,GAAG,aAAaP,EAAIkH,GAAIlH,EAAIoC,SAASkF,QAAmDtH,EAAI+B,EAAE,WAAY,UAA3D/B,EAAI+B,EAAE,WAAY,sBAAoD,cAAc/B,EAAIO,GAAG,KAAKL,EAAG,WAAW,CAACG,YAAY,gBAAgBI,MAAM,CAAC,WAAW,kBAAkB,YAAcT,EAAI+B,EAAE,WAAY,mBAAmB,SAAW/B,EAAI0B,QAAQgB,QAAU1C,EAAI0B,QAAQmC,IAAI,QAAU7D,EAAImD,aAAa,MAAQnD,EAAI2B,QAAQe,OAAO,MAAQ,OAAO,mBAAkB,EAAM,UAAW,EAAK,UAAW,EAAK,UAAY1C,EAAIoC,SAASkF,SAAST,GAAG,CAAC,MAAQ7G,EAAIkF,iBAAiB,iBAAiBlF,EAAImF,gBAAgB,GAAGnF,EAAIO,GAAG,KAAMP,EAAIiD,gBAAgBvI,OAAS,EAAGwF,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,QAAQ,CAACG,YAAY,eAAeI,MAAM,CAAC,IAAM,uBAAuB,CAACT,EAAIO,GAAG,aAAaP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,wBAAwB,cAAc/B,EAAIO,GAAG,KAAKL,EAAG,WAAW,CAACG,YAAY,gBAAgBI,MAAM,CAAC,WAAW,qBAAqB,YAAcT,EAAI+B,EAAE,WAAY,2BAA2B,QAAU/B,EAAIiD,gBAAgB,mBAAkB,EAAM,UAAW,EAAK,MAAQ,QAAQsE,MAAM,CAACtO,MAAO+G,EAAI2B,QAAQsB,gBAAiBlK,SAAS,SAAUyO,GAAMxH,EAAImH,KAAKnH,EAAI2B,QAAS,kBAAmB6F,EAAI,EAAErG,WAAW,8BAA8B,GAAGnB,EAAIqH,KAAKrH,EAAIO,GAAG,KAAKL,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,QAAQ,CAACG,YAAY,eAAeI,MAAM,CAAC,IAAM,mBAAmB,CAACT,EAAIO,GAAG,aAAaP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,UAAU,cAAc/B,EAAIO,GAAG,KAAKL,EAAG,WAAW,CAACG,YAAY,gBAAgBI,MAAM,CAAC,WAAW,iBAAiB,YAAcT,EAAI+B,EAAE,WAAY,kBAAkB,QAAU/B,EAAI4B,aAAa,WAAY,EAAM,UAAW,EAAK,gBAAgB5B,EAAIuF,eAAegC,MAAM,CAACtO,MAAO+G,EAAI2B,QAAQ0C,MAAOtL,SAAS,SAAUyO,GAAMxH,EAAImH,KAAKnH,EAAI2B,QAAS,QAAS6F,EAAI,EAAErG,WAAW,oBAAoB,GAAGnB,EAAIO,GAAG,KAAMP,EAAIgC,WAAWyF,cAAevH,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,QAAQ,CAACG,YAAY,eAAeI,MAAM,CAAC,IAAM,sBAAsB,CAACT,EAAIO,GAAG,aAAaP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,aAAa,cAAc/B,EAAIO,GAAG,KAAKL,EAAG,WAAW,CAACG,YAAY,gBAAgBI,MAAM,CAAC,WAAW,oBAAoB,YAAcT,EAAI+B,EAAE,WAAY,wBAAwB,WAAY,EAAM,WAAagE,IAAWA,EAAOxC,UAAU,YAAYvD,EAAI8F,iBAAiB,QAAU9F,EAAIuD,UAAU,MAAQ,QAAQgE,MAAM,CAACtO,MAAO+G,EAAI2B,QAAQ2C,SAAUvL,SAAS,SAAUyO,GAAMxH,EAAImH,KAAKnH,EAAI2B,QAAS,WAAY6F,EAAI,EAAErG,WAAW,uBAAuB,GAAGnB,EAAIqH,KAAKrH,EAAIO,GAAG,KAAKL,EAAG,MAAM,CAACwH,MAAM,CAAC,uBAAwB,CAAE,qBAAsB1H,EAAI0B,QAAQ8C,WAAY,CAACtE,EAAG,QAAQ,CAACG,YAAY,eAAeI,MAAM,CAAC,IAAM,qBAAqB,CAACT,EAAIO,GAAG,aAAaP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,YAAY,cAAc/B,EAAIO,GAAG,KAAKL,EAAG,WAAW,CAACG,YAAY,gBAAgBI,MAAM,CAAC,WAAW,mBAAmB,YAAcT,EAAI8B,aAAa,QAAU9B,EAAI6B,iBAAiB,eAAc,EAAK,MAAQ,eAAegF,GAAG,CAAC,OAAS7G,EAAI2D,mBAAmB4D,MAAM,CAACtO,MAAO+G,EAAI2B,QAAQ6C,QAASzL,SAAS,SAAUyO,GAAMxH,EAAImH,KAAKnH,EAAI2B,QAAS,UAAW6F,EAAI,EAAErG,WAAW,sBAAsB,GAAGnB,EAAIO,GAAG,KAAKL,EAAG,WAAW,CAACG,YAAY,gBAAgBI,MAAM,CAAC,YAAY,SAAS,KAAO,UAAU,cAAc,WAAW,CAACT,EAAIO,GAAG,WAAWP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,iBAAiB,aAAa,IAC/pL,GACsB,IIUpB,EACA,KACA,WACA,MAI8B,QCnBuO,ECGxP5F,EAAAA,GAAIE,OAAO,CACtBC,KAAM,iBACN8E,WAAY,CACRuG,cAAaA,EAAAA,GAEjBpL,MAAO,CACHmF,QAAS,CACLjF,KAAMtD,QACNyD,UAAU,GAEdgL,cAAe,CACXnL,KAAMxC,MACN2C,UAAU,IAGlBc,SAAU,CACNmK,SAAAA,GACI,OAAI,KAAKnG,QACE,KAAKoG,EAAE,WAAY,qBAAsB,sBAAuB,KAAKF,cAAclN,OAAQ,CAC9FmN,UAAW,KAAKD,cAAclN,SAG/B,KAAKoN,EAAE,WAAY,mBAAoB,oBAAqB,KAAKF,cAAclN,OAAQ,CAC1FmN,UAAW,KAAKD,cAAclN,QAEtC,GAEJ0E,QAAS,CACL2C,EAAC,KACD+F,EAACA,EAAAA,qBCrBL,EAAU,CAAC,EAEf,EAAQpI,kBAAoB,IAC5B,EAAQC,cAAgB,IACxB,EAAQC,OAAS,SAAc,KAAM,QACrC,EAAQC,OAAS,IACjB,EAAQC,mBAAqB,IAEhB,IAAI,IAAS,GAKJ,KAAW,IAAQC,QAAS,IAAQA,OCL1D,SAXgB,OACd,GFTW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAgC,OAAtBF,EAAIG,MAAMC,YAAmBF,EAAG,KAAK,CAACG,YAAY,UAAU,CAACH,EAAG,KAAK,CAACO,MAAM,CAAC,MAAQ,QAAQ,CAACP,EAAG,OAAO,CAACG,YAAY,mBAAmB,CAACL,EAAIO,GAAGP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,4BAA4B/B,EAAIO,GAAG,KAAKL,EAAG,KAAK,CAACG,YAAY,sCAAsC,CAAEL,EAAI0B,QAASxB,EAAG,gBAAgB,CAACO,MAAM,CAAC,MAAQT,EAAI+B,EAAE,WAAY,mBAAmB,KAAO,MAAM/B,EAAIqH,MAAM,GAAGrH,EAAIO,GAAG,KAAKL,EAAG,KAAK,CAACG,YAAY,4DAA4D,CAACH,EAAG,OAAO,CAACO,MAAM,CAAC,mBAAmB,oBAAoB,CAACT,EAAIO,GAAGP,EAAIkH,GAAGlH,EAAI6H,cAAc7H,EAAIO,GAAG,KAAKL,EAAG,OAAO,CAACG,YAAY,kBAAkBI,MAAM,CAAC,GAAK,oBAAoB,CAACT,EAAIO,GAAG,WAAWP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,6BAA6B,eACtxB,GACsB,IEUpB,EACA,KACA,WACA,MAI8B,QCnBuO,ECExP5F,EAAAA,GAAIE,OAAO,CACtBC,KAAM,iBACNC,MAAO,CACHwL,cAAe,CACXtL,KAAMtD,QACNyD,UAAU,IAGlBc,SAAU,CACNsE,UAAAA,GAEI,OAAO,KAAKC,OAAOC,QAAQC,aAC/B,EACAC,QAAAA,GAEI,OAAO,KAAKH,OAAOC,QAAQG,aAC/B,EACAY,eAAAA,GAEI,OAAO,KAAKhB,OAAOC,QAAQgB,iBAC/B,EACA8E,aAAAA,GACI,OAAI,KAAKD,eAEEhG,EAAAA,EAAAA,IAAE,WAAY,iDAElBA,EAAAA,EAAAA,IAAE,WAAY,WACzB,GAEJ3C,QAAS,CACL2C,EAACA,EAAAA,sBCrBL,GAAU,CAAC,EAEf,GAAQrC,kBAAoB,IAC5B,GAAQC,cAAgB,IACxB,GAAQC,OAAS,SAAc,KAAM,QACrC,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OCL1D,UAXgB,OACd,GFTW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAgC,OAAtBF,EAAIG,MAAMC,YAAmBF,EAAG,KAAK,CAACG,YAAY,UAAU,CAACH,EAAG,KAAK,CAACG,YAAY,oCAAoCI,MAAM,CAAC,kCAAkC,GAAG,MAAQ,QAAQ,CAACP,EAAG,OAAO,CAACG,YAAY,mBAAmB,CAACL,EAAIO,GAAG,WAAWP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,WAAW,cAAc/B,EAAIO,GAAG,KAAKL,EAAG,KAAK,CAACG,YAAY,yCAAyCI,MAAM,CAAC,uCAAuC,GAAG,MAAQ,QAAQ,CAACP,EAAG,SAAS,CAACF,EAAIO,GAAG,WAAWP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,iBAAiB,YAAY/B,EAAIO,GAAG,KAAKL,EAAG,OAAO,CAACG,YAAY,oBAAoB,CAACL,EAAIO,GAAG,WAAWP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,aAAa,cAAc/B,EAAIO,GAAG,KAAKL,EAAG,KAAK,CAACG,YAAY,eAAeqH,MAAM,CAAE,2BAA4B1H,EAAI+H,eAAgBtH,MAAM,CAAC,oCAAoC,GAAG,MAAQ,QAAQ,CAACP,EAAG,OAAO,CAACF,EAAIO,GAAGP,EAAIkH,GAAGlH,EAAIgI,oBAAoBhI,EAAIO,GAAG,KAAKL,EAAG,KAAK,CAACG,YAAY,eAAeI,MAAM,CAAC,iCAAiC,GAAG,MAAQ,QAAQ,CAACP,EAAG,OAAO,CAACF,EAAIO,GAAGP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,eAAe/B,EAAIO,GAAG,KAAKL,EAAG,KAAK,CAACG,YAAY,mCAAmCI,MAAM,CAAC,kCAAkC,GAAG,MAAQ,QAAQ,CAACP,EAAG,OAAO,CAACF,EAAIO,GAAGP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,gBAAgB/B,EAAIO,GAAG,KAAMP,EAAIiD,gBAAgBvI,OAAS,GAAKsF,EAAIoC,SAASkF,QAASpH,EAAG,KAAK,CAACG,YAAY,mCAAmCI,MAAM,CAAC,qCAAqC,GAAG,MAAQ,QAAQ,CAACP,EAAG,OAAO,CAACF,EAAIO,GAAGP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,yBAAyB/B,EAAIqH,KAAKrH,EAAIO,GAAG,KAAKL,EAAG,KAAK,CAACG,YAAY,eAAeI,MAAM,CAAC,iCAAiC,GAAG,MAAQ,QAAQ,CAACP,EAAG,OAAO,CAACF,EAAIO,GAAGP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,eAAe/B,EAAIO,GAAG,KAAMP,EAAIgC,WAAWyF,cAAevH,EAAG,KAAK,CAACG,YAAY,mCAAmCI,MAAM,CAAC,qCAAqC,GAAG,MAAQ,QAAQ,CAACP,EAAG,OAAO,CAACF,EAAIO,GAAGP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,kBAAkB/B,EAAIqH,KAAKrH,EAAIO,GAAG,KAAMP,EAAIgC,WAAWiG,iBAAmBjI,EAAIgC,WAAWkG,gBAAiBhI,EAAG,KAAK,CAACG,YAAY,mCAAmCI,MAAM,CAAC,4CAA4C,GAAG,MAAQ,QAAQ,CAAET,EAAIgC,WAAWiG,gBAAiB/H,EAAG,OAAO,CAACF,EAAIO,GAAG,WAAWP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,iBAAiB,YAAY/B,EAAIqH,KAAKrH,EAAIO,GAAG,KAAMP,EAAIgC,WAAWkG,gBAAiBhI,EAAG,OAAO,CAACG,YAAY,oBAAoB,CAACL,EAAIO,GAAG,WAAWP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,qBAAqB,YAAY/B,EAAIqH,OAAOrH,EAAIqH,KAAKrH,EAAIO,GAAG,KAAMP,EAAIgC,WAAWmG,cAAejI,EAAG,KAAK,CAACG,YAAY,eAAeI,MAAM,CAAC,sCAAsC,GAAG,MAAQ,QAAQ,CAACP,EAAG,OAAO,CAACF,EAAIO,GAAGP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,oBAAoB/B,EAAIqH,KAAKrH,EAAIO,GAAG,KAAKL,EAAG,KAAK,CAACG,YAAY,sDAAsDI,MAAM,CAAC,mCAAmC,GAAG,MAAQ,QAAQ,CAACP,EAAG,OAAO,CAACF,EAAIO,GAAGP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,iBAAiB/B,EAAIO,GAAG,KAAKL,EAAG,KAAK,CAACG,YAAY,qCAAqCI,MAAM,CAAC,mCAAmC,GAAG,MAAQ,QAAQ,CAACP,EAAG,OAAO,CAACG,YAAY,mBAAmB,CAACL,EAAIO,GAAG,WAAWP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,iBAAiB,eAC/iG,GACsB,IEUpB,EACA,KACA,WACA,MAI8B,QCnBhC,kFCAuQ,ICMxPqG,EAAAA,EAAAA,IAAgB,CAC3BhH,WAAY,CACRiH,eAAc,KACdC,UAAS,KACTC,iBAAgBA,EAAAA,GAEpBhM,MAAO,CAIHiM,QAAS,CACL/L,KAAMxC,MACN2C,UAAU,GAKd6L,SAAU,CACNhM,KAAMtD,QACNyD,UAAU,GAKd8L,KAAM,CACFjM,KAAMtD,QACNyD,UAAU,GAKd+L,KAAM,CACFlM,KAAMC,OACNE,UAAU,IAGlBc,SAAU,CAINkL,OAAAA,GACI,OAAO,KAAKF,iZAChB,GAEJtJ,QAAS,CAILyJ,UAAAA,GACI,KAAKtJ,MAAM,eAAgB,KAAKmJ,KACpC,KCtCR,IAXgB,OACd,IDRW,WAAkB,IAAI1I,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAgC,OAAtBF,EAAIG,MAAMC,YAAmBF,EAAG,YAAY,CAACO,MAAM,CAAC,aAAaT,EAAI+B,EAAE,WAAY,+BAA+B,SAAW/B,EAAIyI,SAAS,OAAS,IAAI,CAACvI,EAAG,iBAAiB,CAACO,MAAM,CAAC,uCAAuC,GAAGT,EAAI0I,OAAO,SAAW1I,EAAIyI,UAAU5B,GAAG,CAAC,MAAQ7G,EAAI6I,YAAYC,YAAY9I,EAAI+I,GAAG,CAAC,CAAChI,IAAI,OAAOiI,GAAG,WAAW,MAAO,CAAC9I,EAAG,mBAAmB,CAACa,IAAIf,EAAI4I,QAAQnI,MAAM,CAAC,IAAMT,EAAI4I,QAAQ,cAAc,UAAU,EAAEK,OAAM,MAAS,CAACjJ,EAAIO,GAAG,SAASP,EAAIkH,GAAGlH,EAAI0I,KAAO1I,EAAI+B,EAAE,WAAY,QAAU/B,EAAI+B,EAAE,WAAY,SAAS,YAAY/B,EAAIO,GAAG,KAAKP,EAAIW,GAAIX,EAAIwI,SAAS,SAAApD,EAAgC9H,GAAM,IAA7B,OAAE4L,EAAM,KAAEC,EAAI,KAAEC,GAAMhE,EAAQ,OAAOlF,EAAG,iBAAiB,CAACa,IAAIzD,EAAMmD,MAAM,CAAC,SAAWT,EAAIyI,SAAS,aAAaW,EAAK,KAAOD,GAAMtC,GAAG,CAAC,MAASwC,GAAUH,EAAOG,EAAO,IAAKrJ,EAAI2I,SAAU,CAAC3I,EAAIO,GAAG,SAASP,EAAIkH,GAAGkC,GAAM,SAAS,KAAI,EACr3B,GACsB,ICSpB,EACA,KACA,KACA,MAI8B,QCMhC,IACC7M,MAAO,CACNoM,KAAM,CACLlM,KAAMC,OACNE,UAAU,GAEXwF,SAAU,CACT3F,KAAMC,OACNS,QAASA,KAAA,CAAS,IAEnBuF,OAAQ,CACPjG,KAAMxC,MACNkD,QAASA,IAAM,IAEhB8F,gBAAiB,CAChBxG,KAAMxC,MACNkD,QAASA,IAAM,IAEhByE,aAAc,CACbnF,KAAMxC,MACNkD,QAASA,IAAM,IAEhBoG,UAAW,CACV9G,KAAMxC,MACN2C,UAAU,GAEX0M,gBAAiB,CAChB7M,KAAMxC,MACNkD,QAASA,IAAM,KAGjBO,SAAU,CACTsE,UAAAA,GACC,OAAO/B,KAAKgC,OAAOC,QAAQC,aAC5B,EAGAoH,UAAAA,GAEC,OADmBtJ,KAAKyC,OAAOtI,QAAOwI,GAAS3C,KAAK0I,KAAKjG,OAAO0D,SAASxD,EAAMxK,KAEhF,EACAoR,mBAAAA,GAEC,OAD4BvJ,KAAKgD,gBAAgB7I,QAAOwI,GAAS3C,KAAK0I,KAAKvE,SAASgC,SAASxD,EAAMxK,KAEpG,EACAqR,eAAAA,GACC,OAAOxJ,KAAKyC,OAAOvI,KAAKyI,IAGvB,MAAM8G,EAAahN,OAAO0G,OAAO,CAAC,EAAGR,GAUrC,OALA8G,EAAWrG,aACU,IAAjBT,EAAMU,SACJrD,KAAK0I,KAAKjG,OAAO0D,SAASxD,EAAMxK,MACb,IAApBwK,EAAM+G,WACN1J,KAAK0I,KAAKjG,OAAO0D,SAASxD,EAAMxK,IAC9BsR,CAAU,GAEnB,EAGAE,SAAAA,GACC,OAAI3J,KAAK0I,KAAKtE,MAAMwF,KACZ9H,EAAE,WAAY,cAAe,CAAE+H,KAAMrE,GAAGC,KAAKE,cAAc3F,KAAK0I,KAAKtE,MAAMwF,QAE5E9H,EAAE,WAAY,cAAe,CAAE+H,KAAMrE,GAAGC,KAAKE,cAAc,IACnE,EACAmE,SAAAA,GACC,IAAI1F,EAAQpE,KAAK0I,KAAKtE,MAAMA,MAQ5B,OANCA,EADGA,EAAQ,EACHzG,KAAKU,IAAI,IAAKV,KAAK4B,MAAMS,KAAK0I,KAAKtE,MAAMwF,KAAOxF,EAAQ,MAIxD,IAAM,EAAK,GAFFpE,KAAK0I,KAAKtE,MAAMwF,MAAQ,GAAKjM,KAAKoM,IAAI,EAAG,KAEvB,IAE7BC,MAAM5F,GAAS,EAAIA,CAC3B,EAEA6F,SAAAA,GACC,GAAIjK,KAAK0I,KAAKtE,MAAMA,OAAS,EAAG,CAE/B,MAAM8F,EAAa1E,GAAGC,KAAKE,cAAc3F,KAAK0I,KAAKtE,MAAMA,OAEzD,OADkBpE,KAAK2B,aAAa0D,MAAKjB,GAASA,EAAMjM,KAAO+R,KAC3C,CAAE/R,GAAI+R,EAAYtE,MAAOsE,EAC9C,CAAO,MAA8B,YAA1BlK,KAAK0I,KAAKtE,MAAMA,MAEnBpE,KAAK2B,aAAa,GAEnB3B,KAAK2B,aAAa,EAC1B,EAGAY,iBAAAA,GACC,OAAOvC,KAAKgC,OAAOC,QAAQO,0BAC5B,EAGA2H,YAAAA,GACC,MACMC,EADqBpK,KAAKsD,UAAU,GAAGA,UAAU+G,OAAOrK,KAAKsD,UAAU,GAAGA,WAC5C+B,MAAKiF,GAAQA,EAAKhG,OAAStE,KAAK0I,KAAKrE,WACzE,MAAwB,iBAAb+F,GAAgD,KAAvBpK,KAAK0I,KAAKrE,SACtC,CACNC,KAAMtE,KAAK0I,KAAKrE,SAChBhI,KAAM2D,KAAK0I,KAAKrE,UAEgB,KAAvBrE,KAAK0I,KAAKrE,UAGd+F,CACR,EAGAG,oBAAAA,GACC,OAAIvK,KAAK0I,KAAK8B,UAAY,EAClBhF,GAAGC,KAAKgF,WAAWzK,KAAK0I,KAAK8B,WAE9B,EACR,EACAE,aAAAA,GACC,OAAI1K,KAAK0I,KAAK8B,UAAY,EAClBhF,GAAGC,KAAKkF,qBAAqB3K,KAAK0I,KAAK8B,WAExC1I,EAAE,WAAY,QACtB,oBCgKF,MCvTyL,GDuTzL,CACAzF,KAAA,UAEA8E,WAAA,CACAyJ,SAAA,KACAlD,cAAA,IACAmD,cAAA,KACAtJ,SAAA,IACAC,YAAA,IACAsJ,eAAAA,IAGAC,OAAA,CACAC,IAGA1O,MAAA,CACAoM,KAAA,CACAlM,KAAAC,OACAE,UAAA,GAEA0C,QAAA,CACA7C,KAAAtD,QACAyD,UAAA,GAEA6J,MAAA,CACAhK,KAAAxC,MACA2C,UAAA,GAEAmL,cAAA,CACAtL,KAAAtD,QACAyD,UAAA,GAEA8F,OAAA,CACAjG,KAAAxC,MACAkD,QAAAA,IAAA,IAEA8F,gBAAA,CACAxG,KAAAxC,MACA2C,UAAA,GAEAgF,aAAA,CACAnF,KAAAxC,MACA2C,UAAA,GAEA2G,UAAA,CACA9G,KAAAxC,MACA2C,UAAA,GAEAwF,SAAA,CACA3F,KAAAC,OACAE,UAAA,GAEA0M,gBAAA,CACA7M,KAAAxC,MACAkD,QAAAA,IAAA,KAIAC,IAAAA,GACA,OACA8N,eAAA,EACAC,KAAAvN,KAAAwN,SAAAC,SAAA,IAAAC,UAAA,GACAC,yBAAA,EACA1J,iBAAA,GACA2J,eAAA,GACAC,SAAA,EACA/J,QAAA,CACAmC,KAAA,EACAI,aAAA,EACAD,UAAA,EACAG,aAAA,EACAzB,QAAA,EACAgJ,WAAA,EACArH,OAAA,EACAsH,QAAA,EACAC,SAAA,EACArI,WAAA,EACAsI,MAAA,EACArH,SAAA,GAEAsH,kBAAA,KAAAnD,KAAAoD,YACAC,eAAA,GACAC,WAAA,KAAAtD,KAAAzE,OAAA,GAEA,EAEAxG,SAAA,CACAoE,aAAAA,IAEAC,EAAA,+BAGAmK,YAAAA,GACA,OAAAA,EAAAA,GAAAA,IAAA,KAAAvD,KACA,EAEA3G,UAAAA,GACA,YAAAC,OAAAC,QAAAC,aACA,EAEAgK,aAAAA,GACA,YAAAzK,QAAAiK,QAAA,KAAAjK,QAAAkK,SAAA,KAAAlK,QAAAmK,IACA,EAEAO,cAAAA,GACA,YAAA1K,QAAAiK,QAAA,KAAAjK,QAAAkK,SAAA,KAAAlK,QAAAmC,GACA,EAEAwI,QAAAA,GACA,OAAAC,mBAAA,KAAA3D,KAAAvQ,GAAA,KAAA+S,KACA,EAEAoB,gBAAAA,GACA,YAAAhD,WACApP,KAAAyI,GAAAA,EAAAtG,OACAkQ,KAAA,KACA,EAEAC,yBAAAA,GACA,YAAAjD,oBACArP,KAAAyI,GAAAA,EAAAtG,OACAkQ,KAAA,KACA,EAEA5C,SAAAA,GACA,YAAAjB,KAAAtE,OAAAwF,KACA9H,EAAA,0BAAA+H,MAAA4C,EAAAA,GAAAA,IAAA,KAAA/D,KAAAtE,OAAAwF,QAEA9H,EAAA,0BAAA+H,MAAA4C,EAAAA,GAAAA,IAAA,IACA,EAEAC,OAAAA,GACA,OAAAC,EAAAA,GAAAA,MAAAC,MAAA,KAAAlE,KAAAvQ,IAAA,KAAAgK,SAAAkF,OACA,EAEA4C,SAAAA,GACA,IAAA7F,EAAA,KAAAsE,KAAAtE,OAAAA,MAWA,MATA,YAAAA,IACAA,EAAA,KAAAjC,SAAA0K,aACA,SAAAzI,IAEAA,GAAA0I,EAAAA,GAAAA,IAAA1I,GAAA,KAKA,SAAAA,IAAA,IAAAA,EACAtC,EAAA,wBACAsC,GAAA,GACAqI,EAAAA,GAAAA,IAAArI,IAEAqI,EAAAA,GAAAA,IAAA,EACA,EAEAM,WAAAA,GACA,MAAAxE,EAAA,CACA,CACAW,KAAA,cACAC,KAAArH,EAAA,6BACAmH,OAAA,KAAA+D,YAEA,CACA9D,KAAA,cACAC,KAAArH,EAAA,2DACAmH,OAAA,KAAAgE,iBAEA,CACA/D,KAAA,KAAAR,KAAAwE,QAAA,wBACA/D,KAAA,KAAAT,KAAAwE,QAAApL,EAAA,8BAAAA,EAAA,6BACAmH,OAAA,KAAAkE,oBAUA,OAPA,YAAAzE,KAAAzE,OAAA,UAAAyE,KAAAzE,OACAsE,EAAAtQ,KAAA,CACAiR,KAAA,YACAC,KAAArH,EAAA,mCACAmH,OAAA,KAAAmE,kBAGA7E,EAAA8B,OAAA,KAAAhB,gBACA,EAGAgE,gBAAA,CACAC,GAAAA,GACA,gBAAArC,cACA,KAAAA,cAEA,KAAA9I,SAAA0K,eAAAU,GAAAA,GAAApV,KAAA2U,EAAAA,GAAAA,IAAA,KAAA3K,SAAA0K,cAAA,MAEA,CAAA1U,GAAA,KAAAgK,SAAA0K,aAAAjH,MAAA,KAAAzD,SAAA0K,cAEAU,GAAAA,EACA,EACAC,GAAAA,CAAApJ,GACA,KAAA6G,cAAA7G,CACA,GAGAqJ,kBAAAA,GACA,YAAAnK,UAAA,GAAAA,UAAA+G,OAAA,KAAA/G,UAAA,GAAAA,UACA,GAGA,iBAAAG,GACA,KAAAiF,KAAAnE,eACA,KAAAmJ,YAAA,KAAAhF,KAAAnE,QAEA,EAEApF,QAAA,CACA8N,eAAAA,GACA,MAAAnJ,EAAA,KAAA4E,KAAAvQ,GACAqN,GAAAmI,QAAAC,mBACA9L,EAAA,gNAAAgC,WACAhC,EAAA,qCACA,CACAtF,KAAAgJ,GAAAmI,QAAAE,eACAC,QAAAhM,EAAA,sCAAAgC,WACAiK,eAAA,QACAC,OAAAlM,EAAA,uBAEAmM,IACAA,IACA,KAAAxM,QAAAmK,MAAA,EACA,KAAAnK,QAAAmC,KAAA,EACA,KAAA5B,OAAA6B,SAAA,kBAAAC,GACAyC,MAAA,KAAA2H,EAAAA,EAAAA,IAAApM,EAAA,uCAAAgC,aAAA,CAAAqK,QAAA,MACAC,SAAA,KACA,KAAA3M,QAAAmK,MAAA,EACA,KAAAnK,QAAAmC,KAAA,KAEA,IAEA,EAEA,EAEAyK,cAAAA,CAAAC,GACA,OAAAA,EAAAnU,QAAAoK,GAAAA,EAAApM,KAAA,KAAAuQ,KAAAvQ,IACA,EAEA,iBAAAuV,CAAAa,SACA,KAAAvM,OAAA6B,SAAA,UAAA0K,GAAAhI,MAAA1B,IACA,KAAA0G,eAAA1G,GAAA1H,KAAA2H,IAAA3H,IAAA,GAEA,EAEA,8BAAAqR,GACA,KAAAlD,yBAAA,QACA,KAAA5H,oBACA,KAAA4H,yBAAA,CACA,EAEA,uBAAA5H,CAAA0C,SACA,KAAApE,OAAA6B,SAAA,eAAAwC,OAAA,EAAAC,MAAA,GAAAP,OAAAK,IAAAG,MAAA1B,IACA,MAAA2B,EAAA3B,GAAA1H,KAAA,KAAAkR,eAAA5R,OAAAgK,OAAA5B,GAAA1H,KAAA2H,IAAA3H,KAAAqJ,QAAA,GACAA,EAAA/L,OAAA,IACA,KAAAmH,iBAAA4E,EACA,GAEA,EAEA,uBAAAiI,CAAAlK,GACA,OAAAA,IACA,KAAAgH,eAAA,IAEA,KAAA9J,QAAA8C,SAAA,EACA,UACA,KAAAvC,OAAA6B,SAAA,eACAC,OAAA,KAAA4E,KAAAvQ,GACA2I,IAAA,UACA9H,MAAA,KAAAuS,eAAA,KAAAA,eAAApT,GAAA,IAEA,OAAAyM,IAEA8J,EAAAA,EAAAA,IAAA5M,EAAA,6CACA6M,QAAA/J,MAAAA,EACA,SACA,KAAAnD,QAAA8C,SAAA,CACA,CACA,EAEAyI,UAAAA,GACA,MAAAlJ,EAAA,KAAA4E,KAAAvQ,GACAqN,GAAAmI,QAAAC,mBACA9L,EAAA,iGAAAgC,WACAhC,EAAA,+BACA,CACAtF,KAAAgJ,GAAAmI,QAAAE,eACAC,QAAAhM,EAAA,wCAAAgC,WACAiK,eAAA,QACAC,OAAAlM,EAAA,uBAEAmM,IACA,GAAAA,EAGA,OAFA,KAAAxM,QAAAiK,QAAA,EACA,KAAAjK,QAAAmC,KAAA,EACA,KAAA5B,OAAA6B,SAAA,aAAAC,GACAyC,MAAA,KACA,KAAA9E,QAAAiK,QAAA,EACA,KAAAjK,QAAAmC,KAAA,IAEA,IAEA,EAEA,EAEAuJ,iBAAAA,GACA,KAAA1L,QAAAiK,QAAA,EACA,KAAAjK,QAAAmC,KAAA,EACA,MAAAE,EAAA,KAAA4E,KAAAvQ,GACA+U,GAAA,KAAAxE,KAAAwE,QACA,YAAAlL,OAAA6B,SAAA,qBACAC,SACAoJ,YAEA3G,MAAA,KACA,KAAA9E,QAAAiK,QAAA,EACA,KAAAjK,QAAAmC,KAAA,IAEA,EAOA,uBAAAgL,GACA,KAAAnN,QAAAuC,aAAA,EACA,UACA,KAAAhC,OAAA6B,SAAA,eACAC,OAAA,KAAA4E,KAAAvQ,GACA2I,IAAA,cACA9H,MAAA,KAAA6S,oBAGA,KAAAA,oBAAA,KAAAnD,KAAAoD,cACAoC,EAAAA,EAAAA,IAAApM,EAAA,oDAEA,SACA,KAAAL,QAAAuC,aAAA,CACA,CACA,EAOA,oBAAA6K,GAEA,GADA,KAAApN,QAAAsC,UAAA,EACA,SAAAgI,eAAAtR,QACAiU,EAAAA,EAAAA,IAAA5M,EAAA,uCACA,KAAAL,QAAAsC,UAAA,OAEA,UACA,KAAA/B,OAAA6B,SAAA,eACAC,OAAA,KAAA4E,KAAAvQ,GACA2I,IAAA,WACA9H,MAAA,KAAA+S,iBAEA,KAAAA,eAAA,IACAmC,EAAAA,EAAAA,IAAApM,EAAA,gDACA,SACA,KAAAL,QAAAsC,UAAA,CACA,CAEA,EAOA,iBAAA+K,GAEA,GADA,KAAArN,QAAAyC,aAAA,EACA,UAAA8H,YACA0C,EAAAA,EAAAA,IAAA5M,EAAA,oCACA,KAAAL,QAAAyC,aAAA,EACA,KAAA8H,WAAA,KAAAtD,KAAAzE,WAEA,UACA,KAAAjC,OAAA6B,SAAA,eACAC,OAAA,KAAA4E,KAAAvQ,GACA2I,IAAA,QACA9H,MAAA,KAAAgT,aAGA,KAAAA,aAAA,KAAAtD,KAAAzE,QACAiK,EAAAA,EAAAA,IAAApM,EAAA,6CAEA,SACA,KAAAL,QAAAyC,aAAA,CACA,CAEA,EAOA,iBAAAgB,CAAAC,GAAA,IAAA9I,KAAA+I,GAAAD,EACA,KAAA1D,QAAA,CAAAgB,QAAA,EAAAgJ,WAAA,GACA,UACA,KAAAzJ,OAAA6B,SAAA,WAAAuB,GACA,MAAAtB,EAAA,KAAA4E,KAAAvQ,SACA,KAAA6J,OAAA6B,SAAA,gBAAAC,SAAAsB,OACA,OAAAR,GACA+J,QAAA/J,MAAAA,EACA,SACA,KAAAnD,QAAA,CAAAgB,QAAA,EAAAgJ,WAAA,EACA,CACA,YAAAzJ,OAAAC,QAAAS,UAAA,KAAAD,OAAAhI,OACA,EAOA,kBAAAsU,CAAApM,GACA,GAAAA,EAAAqM,WAGA,OAEA,KAAAvN,QAAAgB,QAAA,EACA,MAAAqB,EAAA,KAAA4E,KAAAvQ,GACAiN,EAAAzC,EAAAxK,GACA,QAAAwK,EAAAU,OACA,SAEA,UACA,KAAArB,OAAA6B,SAAA,gBAAAC,SAAAsB,OACA,OAAAR,GACA+J,QAAA/J,MAAAA,EACA,SACA,KAAAnD,QAAAgB,QAAA,CACA,CACA,EAOA,qBAAAwM,CAAAtM,GACA,QAAAA,EAAA+G,UACA,SAEA,KAAAjI,QAAAgB,QAAA,EACA,MAAAqB,EAAA,KAAA4E,KAAAvQ,GACAiN,EAAAzC,EAAAxK,GACA,UACA,KAAA6J,OAAA6B,SAAA,mBACAC,SACAsB,QAEA,KAAA3D,QAAAgB,QAAA,EAEA,KAAAyM,OAAAC,OAAAC,gBAAAhK,GACA,KAAApD,OAAAqN,OAAA,aAAAvL,EAEA,OACA,KAAArC,QAAAgB,QAAA,CACA,CACA,EAOA,qBAAA6M,CAAA3M,GACA,KAAAlB,QAAAgK,WAAA,EACA,MAAA3H,EAAA,KAAA4E,KAAAvQ,GACAiN,EAAAzC,EAAAxK,GACA,UACA,KAAA6J,OAAA6B,SAAA,mBACAC,SACAsB,QAEA,KAAA3D,QAAAgK,WAAA,CACA,OAAA7G,GACA+J,QAAA/J,MAAAA,EACA,CACA,EAOA,wBAAA2K,CAAA5M,GACA,KAAAlB,QAAAgK,WAAA,EACA,MAAA3H,EAAA,KAAA4E,KAAAvQ,GACAiN,EAAAzC,EAAAxK,GAEA,UACA,KAAA6J,OAAA6B,SAAA,sBACAC,SACAsB,OAEA,OAAAR,GACA+J,QAAA/J,MAAAA,EACA,SACA,KAAAnD,QAAAgK,WAAA,CACA,CACA,EAQA,kBAAA+D,GAAA,IAAApL,EAAA4C,UAAAvM,OAAA,QAAAgV,IAAAzI,UAAA,GAAAA,UAAA,UAEA,SAAA5C,IACAA,EAAAmJ,GAAAA,IAEA,KAAA9L,QAAA2C,OAAA,EAGAA,EAAAA,EAAAjM,GAAAiM,EAAAjM,GAAAiM,EAEA,IAGA,MAAApL,IAAA8T,EAAAA,GAAAA,IAAA1I,GAAA,IAAAA,GAAAgH,iBACA,KAAApJ,OAAA6B,SAAA,eACAC,OAAA,KAAA4E,KAAAvQ,GACA2I,IAAA,QACA9H,SAEA,OAAA4L,GACA+J,QAAA/J,MAAAA,EACA,SACA,KAAAnD,QAAA2C,OAAA,CACA,CACA,OAAAA,CACA,EAQAkB,cAAAlB,IACA,iBAAAA,IACAA,EAAAA,GAAAjM,IAAAiM,EAAAwB,OAIA,QADAkH,EAAAA,GAAAA,IAAA1I,GAAA,GAEAmJ,GAAAA,GAIA,CAAApV,GADAiM,GAAAqI,EAAAA,GAAAA,KAAAK,EAAAA,GAAAA,IAAA1I,GAAA,IACAwB,MAAAxB,IAUA,qBAAAsL,CAAApF,GACA,KAAA7I,QAAA6B,WAAA,EAEA,UACA,KAAAtB,OAAA6B,SAAA,eACAC,OAAA,KAAA4E,KAAAvQ,GACA2I,IAAA,WACA9H,MAAAsR,EAAAhG,OAEA,KAAA7C,QAAA6B,WAAA,CACA,OAAAsB,GACA+J,QAAA/J,MAAAA,EACA,CACA,OAAA0F,CACA,EAKA8C,eAAAA,GACA,KAAA3L,QAAAmC,KAAA,EACA,KAAA5B,OAAA6B,SAAA,uBAAA6E,KAAAvQ,IACAoO,MAAA,KAAA2H,EAAAA,EAAAA,IAAApM,EAAA,kCAAAqM,QAAA,QACAC,SAAA,KACA,KAAA3M,QAAAmC,KAAA,IAEA,EAEA,gBAAAgF,GACA,KAAA4C,SAAA,KAAAA,QACA,KAAAA,gBACA,KAAAmE,YACA,KAAAlR,MAAAmR,kBAAAnR,OAAAgG,YAAAhG,OAAAiG,OAAAC,SAEA,KAAAkH,oBAAA,KAAAnD,KAAAoD,YACA,KAAAD,kBAAA,KAAAnD,KAAAoD,YACA,KAAAE,aAAA,KAAAtD,KAAAzE,QACA,KAAA+H,WAAA,KAAAtD,KAAAzE,OAAA,GAEA,oBEl5BI,GAAU,CAAC,EAEf,GAAQxE,kBAAoB,IAC5B,GAAQC,cAAgB,IACxB,GAAQC,OAAS,SAAc,KAAM,QACrC,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OChB1D,IAAI,IAAY,OACd,IRTW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,KAAK,CAACG,YAAY,iBAAiBI,MAAM,CAAC,mBAAmBT,EAAI2I,KAAKvQ,KAAK,CAAC8H,EAAG,KAAK,CAACG,YAAY,8BAA8BI,MAAM,CAAC,gCAAgC,KAAK,CAAET,EAAImM,cAAejM,EAAG,gBAAgB,CAACO,MAAM,CAAC,KAAOT,EAAI+B,EAAE,WAAY,qBAAqB,KAAO,MAAO/B,EAAIV,QAASY,EAAG,WAAW,CAACO,MAAM,CAAC,eAAe,GAAG,oBAAmB,EAAM,KAAOT,EAAI2I,KAAKvQ,MAAM4H,EAAIqH,MAAM,GAAGrH,EAAIO,GAAG,KAAKL,EAAG,KAAK,CAACG,YAAY,mCAAmCI,MAAM,CAAC,qCAAqC,KAAK,CAAET,EAAIyL,SAAWzL,EAAI2I,KAAKmH,oBAAoBC,eAAgB,CAAC7P,EAAG,cAAc,CAACM,IAAI,mBAAmBH,YAAY,sBAAsBqH,MAAM,CAAE,qBAAsB1H,EAAI0B,QAAQuC,aAAcxD,MAAM,CAAC,sCAAsC,GAAG,eAAeT,EAAI0B,QAAQuC,kBAAeyL,EAAU,wBAAwB1P,EAAI+B,EAAE,WAAY,UAAU,wBAAuB,EAAK,SAAW/B,EAAI0B,QAAQuC,aAAejE,EAAIoM,eAAe,MAAQpM,EAAI+B,EAAE,WAAY,uBAAuB,uBAAuB,aAAa,MAAQ/B,EAAI8L,kBAAkB,eAAiB,MAAM,aAAe,MAAM,WAAa,SAASjF,GAAG,CAAC,eAAe,SAASC,GAAQ9G,EAAI8L,kBAAkBhF,CAAM,EAAE,wBAAwB9G,EAAI6O,sBAAsB,CAAG7O,EAAIkM,aAA4KlM,EAAIqH,KAAlKnH,EAAG,SAAS,CAACO,MAAM,CAAC,MAAQT,EAAI2I,KAAKoD,aAAarR,OAAS,GAAKsF,EAAI2I,KAAKoD,YAAc,OAAO,CAAC/L,EAAIO,GAAG,aAAaP,EAAIkH,GAAGlH,EAAI2I,KAAKoD,aAAa,cAAuB/L,EAAIO,GAAG,KAAKL,EAAG,OAAO,CAACG,YAAY,iBAAiB,CAACL,EAAIO,GAAGP,EAAIkH,GAAGlH,EAAI2I,KAAKvQ,SAAS,GAAG4H,EAAIO,GAAG,KAAKL,EAAG,KAAK,CAACG,YAAY,YAAYqH,MAAM,CAAE,wBAAyB1H,EAAI+H,eAAgBtH,MAAM,CAAC,kCAAkC,KAAK,CAAET,EAAIyL,SAAWzL,EAAIoC,SAAS4N,mBAAqBhQ,EAAI2I,KAAKmH,oBAAoBG,YAAa,CAAC/P,EAAG,cAAc,CAACG,YAAY,sBAAsBqH,MAAM,CAAC,qBAAsB1H,EAAI0B,QAAQsC,UAAUvD,MAAM,CAAC,mCAAmC,GAAG,eAAeT,EAAI0B,QAAQsC,eAAY0L,EAAU,wBAAwB1P,EAAI+B,EAAE,WAAY,UAAU,wBAAuB,EAAK,SAAW/B,EAAI0B,QAAQsC,UAAYhE,EAAIoM,eAAe,UAAYpM,EAAIwC,kBAAkB,UAAY,MAAM,MAAQxC,EAAI+B,EAAE,WAAY,oBAAoB,uBAAuB,aAAa,MAAQ/B,EAAIgM,eAAe,eAAiB,MAAM,aAAe,eAAe,SAAW,GAAG,WAAa,QAAQ,KAAO,YAAYnF,GAAG,CAAC,eAAe,SAASC,GAAQ9G,EAAIgM,eAAelF,CAAM,EAAE,wBAAwB9G,EAAI8O,mBAAoB9O,EAAIkM,aAAchM,EAAG,OAAO,CAACF,EAAIO,GAAG,WAAWP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,mEAAmE,YAAY/B,EAAIqH,MAAM,GAAGrH,EAAIO,GAAG,KAAKL,EAAG,KAAK,CAACG,YAAY,YAAYI,MAAM,CAAC,+BAA+B,KAAK,CAAET,EAAIyL,QAAS,CAACvL,EAAG,cAAc,CAACG,YAAY,sBAAsBqH,MAAM,CAAC,qBAAsB1H,EAAI0B,QAAQyC,aAAa1D,MAAM,CAAC,gCAAgC,GAAG,eAAeT,EAAI0B,QAAQyC,kBAAeuL,EAAU,wBAAuB,EAAK,wBAAwB1P,EAAI+B,EAAE,WAAY,UAAU,MAAQ/B,EAAI+B,EAAE,WAAY,yBAAyB,SAAW/B,EAAI0B,QAAQyC,aAAenE,EAAIoM,eAAe,uBAAuB,aAAa,MAAQpM,EAAIiM,WAAW,eAAiB,MAAM,aAAe,QAAQ,WAAa,QAAQ,KAAO,SAASpF,GAAG,CAAC,eAAe,SAASC,GAAQ9G,EAAIiM,WAAWnF,CAAM,EAAE,wBAAwB9G,EAAI+O,gBAAkB/O,EAAIkM,aAAoJlM,EAAIqH,KAA1InH,EAAG,OAAO,CAACO,MAAM,CAAC,MAAQT,EAAI2I,KAAKzE,OAAOxJ,OAAS,GAAKsF,EAAI2I,KAAKzE,MAAQ,OAAO,CAAClE,EAAIO,GAAG,WAAWP,EAAIkH,GAAGlH,EAAI2I,KAAKzE,OAAO,aAAsB,GAAGlE,EAAIO,GAAG,KAAKL,EAAG,KAAK,CAACG,YAAY,kDAAkDI,MAAM,CAAC,gCAAgC,KAAK,CAAET,EAAIyL,QAAS,CAACvL,EAAG,QAAQ,CAACG,YAAY,kBAAkBI,MAAM,CAAC,IAAM,SAAWT,EAAIqM,WAAW,CAACrM,EAAIO,GAAG,aAAaP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,sBAAsB,cAAc/B,EAAIO,GAAG,KAAKL,EAAG,WAAW,CAACO,MAAM,CAAC,iCAAiC,GAAG,eAAeT,EAAI0B,QAAQgB,aAAUgN,EAAU,WAAW,SAAW1P,EAAIqM,SAAS,mBAAkB,EAAM,SAAWrM,EAAIoM,eAAe,QAAUpM,EAAI0B,QAAQgB,OAAO,UAAW,EAAK,kBAAiB,EAAM,QAAU1C,EAAIyJ,gBAAgB,YAAczJ,EAAI+B,EAAE,WAAY,wBAAwB,SAAW/B,EAAIoC,SAASkF,QAAQ,MAAQtH,EAAIuJ,WAAW,MAAQ,OAAO,WAAU,EAAK,gBAAiBtQ,IAAK,CAAQqD,KAAMrD,EAAOgW,YAAY,KAASpI,GAAG,CAAC,iBAAiB7G,EAAImF,YAAY,kBAAkB7L,GAAW0G,EAAIgP,aAAa1V,EAAQ4W,IAAI,IAAI,oBAAoBlQ,EAAIkP,oBAAsBlP,EAAIkM,aAAsKlM,EAAIqH,KAA5JnH,EAAG,OAAO,CAACO,MAAM,CAAC,MAAQT,EAAIuM,kBAAkB7R,OAAS,GAAKsF,EAAIuM,iBAAmB,OAAO,CAACvM,EAAIO,GAAG,WAAWP,EAAIkH,GAAGlH,EAAIuM,kBAAkB,aAAsB,GAAGvM,EAAIO,GAAG,KAAMP,EAAIiD,gBAAgBvI,OAAS,GAAKsF,EAAIoC,SAASkF,QAASpH,EAAG,KAAK,CAACG,YAAY,kDAAkDI,MAAM,CAAC,mCAAmC,KAAK,CAAET,EAAIyL,SAAWzL,EAAIoC,SAASkF,SAAWtH,EAAIiD,gBAAgBvI,OAAS,EAAG,CAACwF,EAAG,QAAQ,CAACG,YAAY,kBAAkBI,MAAM,CAAC,IAAM,YAAcT,EAAIqM,WAAW,CAACrM,EAAIO,GAAG,aAAaP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,6BAA6B,cAAc/B,EAAIO,GAAG,KAAKL,EAAG,WAAW,CAACO,MAAM,CAAC,oCAAoC,GAAG,eAAeT,EAAI0B,QAAQgK,gBAAagE,EAAU,WAAW,YAAc1P,EAAIqM,SAAS,mBAAkB,EAAM,SAAWrM,EAAIoM,eAAe,QAAUpM,EAAI0B,QAAQgK,UAAU,MAAQ,OAAO,kBAAiB,EAAM,UAAW,EAAK,WAAU,EAAK,QAAU1L,EAAIiD,gBAAgB,YAAcjD,EAAI+B,EAAE,WAAY,4BAA4B,MAAQ/B,EAAIwJ,qBAAqB3C,GAAG,CAAC,oBAAoB7G,EAAIwP,mBAAmB,kBAAkBlW,GAAW0G,EAAIuP,gBAAgBjW,EAAQ4W,IAAI,QAAUlQ,EAAIkM,aAAiMlM,EAAIqH,KAAvLnH,EAAG,OAAO,CAACO,MAAM,CAAC,MAAQT,EAAIyM,2BAA2B/R,OAAS,GAAKsF,EAAIyM,0BAA4B,OAAO,CAACzM,EAAIO,GAAG,WAAWP,EAAIkH,GAAGlH,EAAIyM,2BAA2B,aAAsB,GAAGzM,EAAIqH,KAAKrH,EAAIO,GAAG,KAAKL,EAAG,KAAK,CAACG,YAAY,YAAYI,MAAM,CAAC,+BAA+B,KAAK,CAAET,EAAIyL,QAAS,CAACvL,EAAG,QAAQ,CAACG,YAAY,kBAAkBI,MAAM,CAAC,IAAM,QAAUT,EAAIqM,WAAW,CAACrM,EAAIO,GAAG,aAAaP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,yBAAyB,cAAc/B,EAAIO,GAAG,KAAKL,EAAG,WAAW,CAACO,MAAM,CAAC,mBAAkB,EAAK,gBAAgBT,EAAIuF,cAAc,gCAAgC,GAAG,eAAevF,EAAI0B,QAAQ2C,YAASqL,EAAU,SAAW1P,EAAIoM,eAAe,QAAUpM,EAAI0B,QAAQ2C,MAAM,kBAAiB,EAAM,WAAY,EAAM,WAAW,QAAUrE,EAAIqM,SAAS,QAAUrM,EAAI4B,aAAa,YAAc5B,EAAI+B,EAAE,WAAY,wBAAwB,UAAW,GAAM8E,GAAG,CAAC,kBAAkB7G,EAAIyP,cAAclI,MAAM,CAACtO,MAAO+G,EAAIsN,gBAAiBvU,SAAS,SAAUyO,GAAMxH,EAAIsN,gBAAgB9F,CAAG,EAAErG,WAAW,sBAAwBnB,EAAIkM,aAE7iNlM,EAAIqH,KAFujN,CAACnH,EAAG,OAAO,CAACO,MAAM,CAAC,GAAK,iBAAmBT,EAAIqM,WAAW,CAACrM,EAAIO,GAAGP,EAAIkH,GAAGlH,EAAIkK,WAAW,KAAKlK,EAAIkH,GAAGlH,EAAI4J,WAAW,OAAO5J,EAAIO,GAAG,KAAKL,EAAG,gBAAgB,CAACG,YAAY,gBAAgBqH,MAAM,CAC30N,sBAAuB1H,EAAI+J,UAAY,IACtCtJ,MAAM,CAAC,kBAAkB,iBAAmBT,EAAIqM,SAAS,MAAQrM,EAAI+J,eAAwB,GAAG/J,EAAIO,GAAG,KAAMP,EAAIgC,WAAWyF,cAAevH,EAAG,KAAK,CAACG,YAAY,6BAA6BI,MAAM,CAAC,kCAAkC,KAAK,CAAET,EAAIyL,QAAS,CAACvL,EAAG,QAAQ,CAACG,YAAY,kBAAkBI,MAAM,CAAC,IAAM,WAAaT,EAAIqM,WAAW,CAACrM,EAAIO,GAAG,aAAaP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,qBAAqB,cAAc/B,EAAIO,GAAG,KAAKL,EAAG,WAAW,CAACO,MAAM,CAAC,GAAK,WAAaT,EAAIqM,SAAS,mCAAmC,GAAG,eAAerM,EAAI0B,QAAQ6B,gBAAamM,EAAU,eAAc,EAAM,SAAW1P,EAAIoM,eAAe,QAAUpM,EAAI0B,QAAQ6B,UAAU,WAAY,EAAM,kBAAiB,EAAM,QAAUvD,EAAI0N,mBAAmB,YAAc1N,EAAI+B,EAAE,WAAY,mBAAmB,MAAQ/B,EAAIoK,aAAa,MAAQ,QAAQvD,GAAG,CAAC,MAAQ7G,EAAI2P,oBAAsB3P,EAAIkM,aAAqFlM,EAAIqH,KAA3EnH,EAAG,OAAO,CAACF,EAAIO,GAAG,WAAWP,EAAIkH,GAAGlH,EAAIoK,aAAa9N,MAAM,aAAsB,GAAG0D,EAAIqH,KAAKrH,EAAIO,GAAG,KAAMP,EAAIgC,WAAWiG,iBAAmBjI,EAAIgC,WAAWkG,gBAAiBhI,EAAG,KAAK,CAACG,YAAY,6BAA6BI,MAAM,CAAC,0CAA0C,KAAK,CAAGT,EAAIkM,aAAmTlM,EAAIqH,KAAzS,CAAErH,EAAIgC,WAAWiG,gBAAiB/H,EAAG,OAAO,CAACF,EAAIO,GAAGP,EAAIkH,GAAGlH,EAAI2I,KAAKwH,YAAYnQ,EAAIqH,KAAKrH,EAAIO,GAAG,KAAMP,EAAIgC,WAAWkG,gBAAiBhI,EAAG,OAAO,CAACG,YAAY,gBAAgBI,MAAM,CAAC,MAAQT,EAAI2I,KAAKyH,kBAAkB,CAACpQ,EAAIO,GAAG,aAAaP,EAAIkH,GAAGlH,EAAI2I,KAAKyH,iBAAiB,cAAcpQ,EAAIqH,OAAgB,GAAGrH,EAAIqH,KAAKrH,EAAIO,GAAG,KAAMP,EAAIgC,WAAWmG,cAAejI,EAAG,KAAK,CAACG,YAAY,YAAYI,MAAM,CAAC,MAAQT,EAAIwK,qBAAqB,oCAAoC,KAAK,CAAGxK,EAAIkM,aAA6DlM,EAAIqH,KAAnDnH,EAAG,OAAO,CAACF,EAAIO,GAAGP,EAAIkH,GAAGlH,EAAI2K,oBAA6B3K,EAAIqH,KAAKrH,EAAIO,GAAG,KAAKL,EAAG,KAAK,CAACG,YAAY,6CAA6CI,MAAM,CAAC,iCAAiC,KAAK,CAAET,EAAIyL,QAAS,CAACvL,EAAG,QAAQ,CAACG,YAAY,kBAAkBI,MAAM,CAAC,IAAM,UAAYT,EAAIqM,WAAW,CAACrM,EAAIO,GAAG,aAAaP,EAAIkH,GAAGlH,EAAI8B,cAAc,cAAc9B,EAAIO,GAAG,KAAKL,EAAG,WAAW,CAACG,YAAY,eAAeI,MAAM,CAAC,kCAAkC,GAAG,eAAeT,EAAI0B,QAAQ8C,cAAWkL,EAAU,WAAW,UAAY1P,EAAIqM,SAAS,mBAAkB,EAAK,SAAWrM,EAAIoM,eAAe,kBAAiB,EAAM,QAAUpM,EAAIuL,yBAA2BvL,EAAI0B,QAAQ8C,QAAQ,MAAQ,cAAc,QAAUxE,EAAI6B,iBAAiB,YAAc7B,EAAI8B,cAAc+E,GAAG,CAAC,KAAO7G,EAAIyO,yBAAyB,OAASzO,EAAI2D,kBAAkB,kBAAkB3D,EAAI0O,mBAAmBnH,MAAM,CAACtO,MAAO+G,EAAIwL,eAAgBzS,SAAS,SAAUyO,GAAMxH,EAAIwL,eAAehE,CAAG,EAAErG,WAAW,qBAAuBnB,EAAIkM,aAAgFlM,EAAIqH,KAAtEnH,EAAG,OAAO,CAACF,EAAIO,GAAG,WAAWP,EAAIkH,GAAGlH,EAAI2I,KAAKnE,SAAS,aAAsB,GAAGxE,EAAIO,GAAG,KAAKL,EAAG,KAAK,CAACG,YAAY,+BAA+BI,MAAM,CAAC,iCAAiC,KAAK,CAAET,EAAIV,UAAYU,EAAIkM,cAAgBlM,EAAI2M,UAAY3M,EAAI0B,QAAQmC,IAAK3D,EAAG,iBAAiB,CAACO,MAAM,CAAC,QAAUT,EAAIgN,YAAY,SAAWhN,EAAIoM,eAAe,KAAOpM,EAAIyL,QAAQ,KAAOzL,EAAI2I,MAAM9B,GAAG,CAAC,cAAc7G,EAAI6I,cAAc7I,EAAIqH,MAAM,IACphG,GACsB,IQQpB,EACA,KACA,WACA,MAIF,SAAe,GAAiB,QC+EhC1F,GAAAjF,OAAA2T,OAAA,CACAjY,GAAA,GACA6L,YAAA,GACAD,SAAA,GACAG,YAAA,GACAzB,OAAA,GACA8B,QAAA,GACAvB,gBAAA,GACAoB,MAAAyI,GAAAA,GACAxI,SAAA,CACAC,KAAA,KACAjI,KAAAyF,EAAA,kCC7GoL,GDiHpL,CACAzF,KAAA,WAEA8E,WAAA,CACAkP,SAAA,IACAC,eAAA,IACAhI,iBAAA,IACAZ,cAAA,IACA6I,aAAA,EACAC,eAAA,EACAC,eAAA,GACAC,YAAAA,GAGApU,MAAA,CACA8S,cAAA,CACA5S,KAAAK,OACAK,QAAA,MAEAmM,gBAAA,CACA7M,KAAAxC,MACAkD,QAAAA,IAAA,KAIAyT,MAAAA,KAEA,CACAC,gBAAA,MACAC,UAAA,GAEAC,QAAAA,KAIA3T,KAAAA,KACA,CACAsE,QAAA,CACAmC,KAAA,EACAnB,QAAA,EACA+D,OAAA,GAEA9E,QAAA,IAAAA,IACAqP,eAAA,EACAC,YAAA,KAIAvT,SAAA,CACAsE,UAAAA,GACA,YAAAC,OAAAC,QAAAC,aACA,EAEAC,QAAAA,GACA,YAAAH,OAAAC,QAAAG,aACA,EAEA3B,KAAAA,GACA,OACA,uBAAAoQ,cAEA,EAEA/I,aAAAA,GACA,YAAAH,cAAA3B,MAAA0C,IAAAuD,EAAAA,GAAAA,IAAAvD,IACA,EAEAlC,KAAAA,GACA,YAAAxE,OAAAC,QAAAgP,QACA,EAEAtJ,aAAAA,GACA,wBAAAyH,cACA,KAAA5I,MAAArM,QAAAuO,IAAA,IAAAA,EAAAwE,WAEA,KAAA/K,SAAAkF,QAIA,KAAAb,MAAArM,QAAAuO,IAAA,IAAAA,EAAAwE,UACA,EAEAzK,MAAAA,GAEA,YAAAT,OAAAC,QAAAS,UACAvI,QAAAwI,GAAA,aAAAA,EAAAxK,KACAyK,MAAA,CAAAC,EAAAC,IAAAD,EAAAxG,KAAA0G,cAAAD,EAAAzG,OACA,EAEA2G,eAAAA,GAEA,YAAAhB,OAAAC,QAAAgB,iBACA,EAEAtB,YAAAA,GAEA,MAAAuP,EAAA,KAAA/O,SAAA+O,YAAAC,QAAA,CAAAC,EAAAC,IAAAD,EAAA/G,OAAA,CACAlS,GAAAkZ,EACAzL,MAAAyL,KACA,IAMA,OAJA,KAAAlP,SAAAmP,qBACAJ,EAAAK,QAAAhE,GAAAA,IAEA2D,EAAAK,QAAA1E,GAAAA,IACAqE,CACA,EAEAM,WAAAA,GACA,YAAAxP,OAAAC,QAAAwP,cACA,EAEAC,UAAAA,GACA,YAAA1P,OAAAC,QAAA0P,aACA,EAEAC,mBAAAA,GACA,YAAA5P,OAAAC,QAAA4P,sBACA,EAEAC,kBAAAA,GACA,YAAA9P,OAAAC,QAAA8P,qBACA,EAEAC,UAAAA,GACA,YAAAxL,MAAA/L,MACA,EAGA6I,SAAAA,GACA,OACA,CACAsC,MAAA9D,EAAA,+BACAwB,UAAA,KAAAnB,SAAAmB,UAAAC,iBAEA,CACAqC,MAAA9D,EAAA,8BACAwB,UAAA,KAAAnB,SAAAmB,UAAAE,gBAGA,GAGAyO,MAAA,CAEA,mBAAA7C,CAAA8C,GACA,KAAAnB,eAAA,QAEA,KAAAoB,qBACA,KAAAnQ,OAAAqN,OAAA,oBACA,KAAA+C,YACA,KAAAC,uBAAAH,EACA,EAEAvK,aAAAA,CAAAA,GACA7I,EAAAA,EAAAC,MAAA,GAAA4I,EAAAlN,0BACA,GAGA,aAAA6X,SACA,KAAAF,WACA,EAEA,aAAA5W,GACA,KAAA2G,SAAA4N,mBACAvK,GAAA+M,aAAAC,cAAA1Q,EAAA,8EAMA,KAAA2Q,aAKAC,EAAAA,EAAAA,IAAA,uCAAA3M,SACA2M,EAAAA,EAAAA,IAAA,sCAAAC,mBAKA,KAAAR,oBACA,EAEAjT,aAAAA,IACA0T,EAAAA,EAAAA,IAAA,uCAAA7M,SACA6M,EAAAA,EAAAA,IAAA,sCAAAD,YACA,EAEAxT,QAAA,CACA,qBAAA0T,SACA,KAAAT,WACA,EAEA,eAAAA,GACA,KAAA3Q,QAAA+E,OAAA,EACA,IACA,kBAAA4I,oBACA,KAAApN,OAAA6B,SAAA,oBACAwC,OAAA,KAAAuL,oBACAtL,MAAA,KAAAwL,mBACA/L,OAAA,KAAAiL,oBAGA,KAAAhP,OAAA6B,SAAA,YACAwC,OAAA,KAAAmL,YACAlL,MAAA,KAAAoL,WACA/O,MAAA,KAAAyM,cACArJ,OAAA,KAAAiL,cAGAlS,EAAAA,EAAAC,MAAA,QAAAyH,MAAA/L,8BACA,OAAAmK,GACA9F,EAAAA,EAAA8F,MAAA,2BAAAA,WACA8J,EAAAA,EAAAA,IAAA,0BACA,CACA,KAAAjN,QAAA+E,OAAA,EACA,KAAAuK,eAAA,CACA,EAEA+B,UAAAA,GACA,KAAA9Q,OAAAqN,OAAA,iBACAvO,IAAA,kBACA9H,OAAA,GAEA,EAEA,YAAA+M,CAAAZ,GAAA,UAAAiB,GAAAjB,EACA,KAAA6L,YAAA5K,EACA,KAAApE,OAAAqN,OAAA,oBACA,KAAA+C,WACA,EAEAO,WAAAA,GACA,KAAA5M,OAAA,CAAAK,MAAA,IACA,EAEAqM,SAAAA,GAEA,KAAA/Q,QAAAjF,OAAA0G,OAAA,GAAAzB,IAOA,KAAAS,SAAA4Q,iBACA7W,EAAAA,GAAAA,IAAA,KAAAwF,QAAA2C,SAAA,YAAAlC,SAAA4Q,iBAOA,KAAAV,uBAAA,KAAAjD,eAEA,KAAA3N,QAAAmC,KAAA,CACA,EAEAyO,sBAAAA,CAAArZ,GAUA,GARAA,GAAA,KAAAmJ,SAAAkF,SAAA,KAAAlF,SAAA6Q,kBAGA,SAAAvQ,OAAAhI,SACAzB,EAAA,KAAAyJ,OAAA,GAAAtK,IAIAa,EAAA,CAEA,MAAAia,EAAA,KAAAxQ,OAAA4C,MAAA1C,GAAAA,EAAAxK,KAAAa,IACA,GAAAia,EAEA,YADA,KAAAvR,QAAAe,OAAA,CAAAwQ,GAGA,CAEA,KAAAvR,QAAAe,OAAA,EACA,EAQA,wBAAA0P,GACA,MAAAe,EAAA,KAAAlR,OAAAC,QAAAS,UACA,kBAAA0M,eACA8D,EAAAC,WAAAxQ,GAAA,aAAAA,EAAAxK,IAAA,IAAAwK,EAAAyQ,aAAA,IAEA,KAAAC,QAAApb,KAAA,CAAAoE,KAAA,gBACA,KAAA+V,YAEA,oBE9YI,GAAU,CAAC,EAEf,GAAQ3S,kBAAoB,IAC5B,GAAQC,cAAgB,IACxB,GAAQC,OAAS,SAAc,KAAM,QACrC,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OCL1D,UAXgB,OACd,ICTW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,WAAW,CAAEF,EAAIgC,WAAWuR,gBAAiBrT,EAAG,eAAe,CAACO,MAAM,CAAC,QAAUT,EAAI0B,QAAQ,WAAW1B,EAAI2B,QAAQ,gBAAgB3B,EAAI4B,cAAciF,GAAG,CAAC,MAAQ7G,EAAI0S,UAAU,MAAQ1S,EAAI+S,cAAc/S,EAAIqH,KAAKrH,EAAIO,GAAG,KAAmC,IAA7BP,EAAI4H,cAAclN,OAAcwF,EAAG,iBAAiB,CAACG,YAAY,QAAQI,MAAM,CAAC,KAAOT,EAAIgR,eAAiBhR,EAAI0B,QAAQ+E,MAAQ,KAAOzG,EAAI+B,EAAE,WAAY,gBAAgB+G,YAAY9I,EAAI+I,GAAG,CAAC,CAAChI,IAAI,OAAOiI,GAAG,WAAW,MAAO,CAAEhJ,EAAIgR,eAAiBhR,EAAI0B,QAAQ+E,MAAOvG,EAAG,gBAAgB,CAACO,MAAM,CAAC,KAAOT,EAAI+B,EAAE,WAAY,sBAAsB,KAAO,MAAM7B,EAAG,mBAAmB,CAACO,MAAM,CAAC,KAAOT,EAAI6Q,gBAAgB,KAAO,MAAM,EAAE5H,OAAM,IAAO,MAAK,EAAM,aAAa/I,EAAG,cAAc,CAACQ,MAAOV,EAAIU,MAAOD,MAAM,CAAC,iBAAiBT,EAAI+Q,QAAQ,eAAe/Q,EAAI4H,cAAc,WAAW,KAAK,oBAAoB,GAAG,cAAc5H,EAAI8Q,UAAU,cAAc,CACz6BrK,MAAOzG,EAAIyG,MACXrE,SAAUpC,EAAIoC,SACd2F,cAAe/H,EAAI+H,cACnBrF,OAAQ1C,EAAI0C,OACZO,gBAAiBjD,EAAIiD,gBACrBrB,aAAc5B,EAAI4B,aAClB2B,UAAWvD,EAAIuD,UACf+F,gBAAiBtJ,EAAIsJ,kBACnBzC,GAAG,CAAC,aAAa7G,EAAI8S,iBAAiBhK,YAAY9I,EAAI+I,GAAG,CAAC,CAAChI,IAAI,SAASiI,GAAG,WAAW,MAAO,CAAC9I,EAAG,UAAU,CAACG,YAAY,mBAAmB,CAACL,EAAIO,GAAG,aAAaP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,+IAA+I,cAAc,EAAEkH,OAAM,GAAM,CAAClI,IAAI,SAASiI,GAAG,WAAW,MAAO,CAAC9I,EAAG,iBAAiB,CAACO,MAAM,CAAC,iBAAiBT,EAAI+H,iBAAiB,EAAEkB,OAAM,GAAM,CAAClI,IAAI,SAASiI,GAAG,WAAW,MAAO,CAAC9I,EAAG,iBAAiB,CAACO,MAAM,CAAC,QAAUT,EAAI0B,QAAQ+E,MAAM,iBAAiBzG,EAAI4H,iBAAiB,EAAEqB,OAAM,QAAW,EAClnB,GACsB,IDCpB,EACA,KACA,WACA,MAI8B,QEnB0J,ICoC1Lb,EAAAA,EAAAA,IAAA,CACA9L,KAAA,iBAEA8E,WAAA,CACAoS,aAAA,IACAC,SAAAA,IAGArW,KAAAA,KACA,CAEAkM,gBAAA,KAIA5L,SAAA,CACAgW,WAAAA,GACA,mBAAAC,sBACA5R,EAAAA,EAAAA,IAAA,8BAEA,CACA6R,OAAA7R,EAAAA,EAAAA,IAAA,qBACA0G,UAAA1G,EAAAA,EAAAA,IAAA,iCAEA,KAAA4R,wBAAA5R,EAAAA,EAAAA,IAAA,qCAAAa,MAAA,KAAA+Q,sBACA,EAEAtE,aAAAA,GACA,YAAAF,OAAAC,OAAAC,aACA,EAEAsE,oBAAAA,GACA,YAAAtE,cAAAwE,mBAAA,KAAAxE,eAAA,IACA,GAGA3L,WAAAA,GACA,KAAAzB,OAAAqN,OAAA,cACA5M,OAAA,KAAAT,OAAAC,QAAAG,cAAAK,OACAoR,QAAA,KAAA7R,OAAAC,QAAAG,cAAA0R,WACAlM,UAAA,KAAA5F,OAAAC,QAAAG,cAAAwF,YAEA,KAAA5F,OAAA6B,SAAA,6BACA,EAEAyO,OAAAA,GAEA1Z,OAAAmb,IAAAnb,OAAAmb,KAAA,GACAnb,OAAAmb,IAAAC,SAAApb,OAAAmb,IAAAC,UAAA,GACApb,OAAAmb,IAAAC,SAAAR,SAAA5a,OAAAmb,IAAAC,SAAAR,UAAA,GAEA5a,OAAAmb,IAAAC,SAAAR,SAAAS,eAAA,KAAAA,cACA,EAEA9U,QAAA,CACA2C,EAAA,KAUAmS,cAAAA,CAAA/K,EAAAC,EAAAF,GAMA,OALA,KAAAI,gBAAApR,KAAA,CACAiR,OACAC,OACAF,WAEA,KAAAI,eACA,qBCjGI,GAAU,CAAC,EAEf,GAAQ5J,kBAAoB,IAC5B,GAAQC,cAAgB,IACxB,GAAQC,OAAS,SAAc,KAAM,QACrC,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OCL1D,UAXgB,OACd,IrCTW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAgC,OAAtBF,EAAIG,MAAMC,YAAmBF,EAAG,eAAe,CAACO,MAAM,CAAC,eAAeT,EAAI0T,cAAc,CAACxT,EAAG,WAAW,CAACO,MAAM,CAAC,iBAAiBT,EAAI2T,qBAAqB,mBAAmB3T,EAAIsJ,oBAAoB,EACvQ,GACsB,IqCUpB,EACA,KACA,WACA,MAI8B,6EChB5BrR,QAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,ysEAA0sE,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,oEAAoE,qEAAqE,MAAQ,GAAG,SAAW,kwBAAkwB,eAAiB,CAAC,meAAme,4gGAA4gG,WAAa,MAE7rN,+ECJIH,QAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,8CAA+C,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,yEAAyE,MAAQ,GAAG,SAAW,mBAAmB,eAAiB,CAAC,2CAA2C,WAAa,MAE/S,80BCJIH,QAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,yPAA0P,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,oEAAoE,MAAQ,GAAG,SAAW,gEAAgE,eAAiB,CAAC,0OAA0O,WAAa,MAEjuB,+ECJIH,QAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,iIAAkI,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,yDAAyD,MAAQ,GAAG,SAAW,sDAAsD,eAAiB,CAAC,0NAA0N,WAAa,MAEpkB,+ECJIH,QAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,whFAAyhF,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,6DAA6D,qEAAqE,MAAQ,GAAG,SAAW,8wBAA8wB,eAAiB,CAAC,k2BAAk2B,4gGAA4gG,WAAa,MAEh5O,+ECJIH,QAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,oGAAqG,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,0DAA0D,MAAQ,GAAG,SAAW,iDAAiD,eAAiB,CAAC,6KAA6K,WAAa,MAEtf,0DCPA,mPCwGA,MCxGyL,EDwGzL,CACAkE,KAAA,gBACA8E,WAAA,CACA+S,aAAA,IACAC,OAAA,IACA9D,SAAA,IACAjI,eAAA,IACAgM,cAAA,IACAC,oBAAA,IACAjT,SAAA,IACAkT,gBAAA,IACAjT,QAAA,IACAkT,WAAA,IACAC,OAAAA,EAAAA,GAEAlY,MAAA,CAIAmY,OAAA,CACAjY,KAAAtD,QACAyD,UAAA,GAKA+X,MAAA,CACAlY,KAAAQ,OACAE,QAAA,MAKA/E,GAAA,CACAqE,KAAAK,OACAF,UAAA,GAKAN,KAAA,CACAG,KAAAK,OACAF,UAAA,IAGAQ,KAAAA,KACA,CACAwX,oBAAA,EACAC,eAAA,EACAC,sBAAA,IAGApX,SAAA,CACA0E,QAAAA,GACA,YAAAH,OAAAC,QAAAG,aACA,GAEAjD,QAAA,CACA2V,mBAAAA,GACA,KAAAF,eAAA,CACA,EACA,iBAAAG,CAAA3P,GAEA,QAAAA,EAAA4P,OACA,OAGA,MAAAhR,EAAA,KAAAvF,MAAAwW,iBAAAvc,IAAAwc,cAAA,sBAAAlc,MAGA,QAAAgL,EAAAgR,OAIA,IACA,KAAAJ,eAAA,EACA,KAAAD,oBAAA,QACA,KAAA3S,OAAA6B,SAAA,eACAsR,QAAA/P,EAAA4P,OACAhR,YAAAA,EAAAgR,SAGA,KAAAL,oBAAA,CACA,OACA,KAAAC,eAAA,EACA,KAAAD,oBAAA,CACA,CACA,EACA,iBAAAS,GACA,UACA,KAAApT,OAAA6B,SAAA,mBAAA1L,IACA,KAAA0c,sBAAA,CACA,OAAAjQ,IACA8J,EAAAA,EAAAA,IAAA5M,EAAA,+CAAAa,MAAA,KAAAtG,OACA,CACA,2IE5LIhD,EAAU,CAAC,EAEfA,EAAQoG,kBAAoB,IAC5BpG,EAAQqG,cAAgB,IACxBrG,EAAQsG,OAAS,SAAc,KAAM,QACrCtG,EAAQuG,OAAS,IACjBvG,EAAQwG,mBAAqB,IAEhB,IAAI,IAASxG,GAKJ,KAAW,IAAQyG,QAAS,IAAQA,sBCL1D,SAXgB,OACd,GCTW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,WAAW,CAAEF,EAAI8U,qBAAsB5U,EAAG,UAAU,CAAC2G,GAAG,CAAC,MAAQ,SAASC,GAAQ9G,EAAI8U,sBAAuB,CAAK,IAAI,CAAC5U,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAACH,EAAG,KAAK,CAACG,YAAY,iBAAiB,CAACL,EAAIO,GAAG,aAAaP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,qCAAqC,cAAc/B,EAAIO,GAAG,KAAKL,EAAG,aAAa,CAACO,MAAM,CAAC,KAAO,UAAU,aAAa,KAAK,CAACT,EAAIO,GAAG,aAAaP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,iFAAkF,CAAEa,MAAO5C,EAAI1D,QAAS,cAAc0D,EAAIO,GAAG,KAAKL,EAAG,MAAM,CAACG,YAAY,qBAAqB,CAACH,EAAG,WAAW,CAACO,MAAM,CAAC,KAAO,aAAaoG,GAAG,CAAC,MAAQ,SAASC,GAAQ9G,EAAI8U,sBAAuB,CAAK,IAAI,CAAC9U,EAAIO,GAAG,eAAeP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,WAAW,gBAAgB/B,EAAIO,GAAG,KAAKL,EAAG,WAAW,CAACO,MAAM,CAAC,KAAO,WAAWoG,GAAG,CAAC,MAAQ7G,EAAIqV,cAAc,CAACrV,EAAIO,GAAG,eAAeP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,YAAY,iBAAiB,IAAI,KAAK/B,EAAIqH,KAAKrH,EAAIO,GAAG,KAAKL,EAAG,sBAAsB,CAACa,IAAIf,EAAI5H,GAAGqI,MAAM,CAAC,OAAQ,EAAK,KAAOT,EAAI1D,KAAK,GAAK,CAAEA,KAAM,QAAS8S,OAAQ,CAAEC,cAAe/C,mBAAmBtM,EAAI5H,MAAQ,QAAU4H,EAAI4U,mBAAmB,YAAY5U,EAAI6U,eAAehO,GAAG,CAAC,kBAAkB7G,EAAI+U,qBAAqBjM,YAAY9I,EAAI+I,GAAG,CAAC,CAAChI,IAAI,OAAOiI,GAAG,WAAW,MAAO,CAAC9I,EAAG,eAAe,CAACO,MAAM,CAAC,KAAO,MAAM,EAAEwI,OAAM,GAAM,CAAClI,IAAI,UAAUiI,GAAG,WAAW,MAAO,CAAEhJ,EAAI2U,MAAOzU,EAAG,kBAAkB,CAACO,MAAM,CAAC,KAAOT,EAAI0U,OAAS,mBAAgBhF,IAAY,CAAC1P,EAAIO,GAAG,aAAaP,EAAIkH,GAAGlH,EAAI2U,OAAO,cAAc3U,EAAIqH,KAAK,EAAE4B,OAAM,GAAM,CAAClI,IAAI,UAAUiI,GAAG,WAAW,MAAO,CAAa,UAAXhJ,EAAI5H,IAA6B,aAAX4H,EAAI5H,IAAqB4H,EAAIoC,SAASkF,QAASpH,EAAG,gBAAgB,CAACM,IAAI,mBAAmBC,MAAM,CAAC,wBAAwBT,EAAI+B,EAAE,WAAY,UAAU,KAAO,OAAO,MAAQ/B,EAAI1D,KAAK,MAAQ0D,EAAI+B,EAAE,WAAY,iBAAiB8E,GAAG,CAAC,OAAS,SAASC,GAAQ,OAAO9G,EAAIgV,YAAYhV,EAAI5H,GAAG,GAAG0Q,YAAY9I,EAAI+I,GAAG,CAAC,CAAChI,IAAI,OAAOiI,GAAG,WAAW,MAAO,CAAC9I,EAAG,SAAS,CAACO,MAAM,CAAC,KAAO,MAAM,EAAEwI,OAAM,IAAO,MAAK,EAAM,aAAajJ,EAAIqH,KAAKrH,EAAIO,GAAG,KAAiB,UAAXP,EAAI5H,IAA6B,aAAX4H,EAAI5H,IAAqB4H,EAAIoC,SAASkF,QAASpH,EAAG,iBAAiB,CAAC2G,GAAG,CAAC,MAAQ,SAASC,GAAQ9G,EAAI8U,sBAAuB,CAAI,GAAGhM,YAAY9I,EAAI+I,GAAG,CAAC,CAAChI,IAAI,OAAOiI,GAAG,WAAW,MAAO,CAAC9I,EAAG,SAAS,CAACO,MAAM,CAAC,KAAO,MAAM,EAAEwI,OAAM,IAAO,MAAK,EAAM,aAAa,CAACjJ,EAAIO,GAAG,aAAaP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,iBAAiB,cAAc/B,EAAIqH,KAAK,EAAE4B,OAAM,QAAW,EAC56E,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,QEnBhC,uGCmHA,MCnHoM,EDmHpM,CACA3M,KAAA,qBAEA8E,WAAA,CACAkU,oBAAA,IACAC,qBAAA,IACAC,sBAAA,IACAhB,WAAA,IACAhT,SAAAA,EAAAA,GAGAjF,MAAA,CACAkZ,KAAA,CACAhZ,KAAAtD,QACAyD,UAAA,IAIAQ,KAAAA,KACA,CACA8N,eAAA,EACAwK,iBAAA,IAIAhY,SAAA,CACAiY,aAAA,CACApI,GAAAA,GACA,YAAAtL,OAAAC,QAAA0T,kBAAAC,EAAAA,EAAAC,UAAA,qBACA,EACArI,GAAAA,CAAAsI,GACA,KAAA9T,OAAAqN,OAAA,2BAAAyG,EAAAF,EAAAA,EAAAC,UAAAD,EAAAA,EAAAG,UACA,GAMAC,sBAAAA,GACA,YAAAhU,OAAAC,QAAAG,cAAA6T,oBACA,EAEAC,YAAA,CACA5I,GAAAA,GACA,YAAAkI,IACA,EACAhI,GAAAA,CAAAgI,GACA,KAAAlW,MAAA,cAAAkW,EACA,GAGAzT,UAAAA,GACA,YAAAC,OAAAC,QAAAC,aACA,EAEAC,QAAAA,GACA,YAAAH,OAAAC,QAAAG,aACA,EAEAoF,cAAA,CACA8F,GAAAA,GACA,YAAAvL,WAAAyF,aACA,EACAgG,GAAAA,CAAA2I,GACA,KAAAC,cAAA,gBAAAD,EACA,GAGAjO,cAAA,CACAoF,GAAAA,GACA,YAAAvL,WAAAmG,aACA,EACAsF,GAAAA,CAAA2I,GACA,KAAAC,cAAA,gBAAAD,EACA,GAGAnO,gBAAA,CACAsF,GAAAA,GACA,YAAAvL,WAAAiG,eACA,EACAwF,GAAAA,CAAA2I,GACA,KAAAC,cAAA,kBAAAD,EACA,GAGAlO,gBAAA,CACAqF,GAAAA,GACA,YAAAvL,WAAAkG,eACA,EACAuF,GAAAA,CAAA2I,GACA,KAAAC,cAAA,kBAAAD,EACA,GAGAxU,YAAAA,GAEA,MAAAuP,EAAA,KAAA/O,SAAA+O,YAAAC,QAAA,CAAAC,EAAAC,IAAAD,EAAA/G,OAAA,CAAAlS,GAAAkZ,EAAAzL,MAAAyL,KAAA,IAKA,OAHA,KAAAlP,SAAAmP,qBACAJ,EAAAK,QAAAhE,EAAAA,IAEA2D,CACA,EAEArE,aAAA,CACAS,GAAAA,GACA,gBAAArC,cACA,KAAAA,cAEA,KAAA9I,SAAA0K,eAAAU,EAAAA,GAAApV,IAAAqN,GAAAC,KAAAC,iBAAA,KAAAvD,SAAA0K,eAAA,EAEA,CAAA1U,GAAA,KAAAgK,SAAA0K,aAAAjH,MAAA,KAAAzD,SAAA0K,cAEAU,EAAAA,EACA,EACAC,GAAAA,CAAApJ,GACA,KAAA6G,cAAA7G,CACA,GAGAgJ,gBAAA,CACAE,GAAAA,GACA,YAAAnL,SAAAkU,gBACA,EACA,SAAA7I,CAAAxU,GACA,IACA,KAAAyc,iBAAA,EACA,KAAAzT,OAAAqN,OAAA,oBACA,KAAAlN,SACAkU,iBAAArd,UAEAsd,EAAAA,GAAAC,MAAAC,EAAAA,EAAAA,IAAA,kDAAAxd,MAAAA,EAAA,YACA,OAAAyd,GACA9H,QAAA/J,MAAA,kDAAA6R,EAAAC,QAAAD,EACA,SACA,KAAAhB,iBAAA,CACA,CACA,IAIAtW,QAAA,CACAiX,aAAAA,CAAAtV,EAAAqV,GACA,KAAAnU,OAAAqN,OAAA,iBAAAvO,MAAA9H,MAAAmd,GACA,EAQA7Q,cAAAlB,IACA,iBAAAA,IACAA,EAAAA,GAAAjM,IAAAiM,EAAAwB,OAIA,QADAkH,EAAAA,EAAAA,IAAA1I,GAEAmJ,EAAAA,GAIA,CAAApV,GADAiM,GAAAqI,EAAAA,EAAAA,KAAAK,EAAAA,EAAAA,IAAA1I,IACAwB,MAAAxB,IASAuS,eAAAA,GAAA,IAAAvS,EAAA4C,UAAAvM,OAAA,QAAAgV,IAAAzI,UAAA,GAAAA,UAAA,UAEA,SAAA5C,IACAA,EAAAmJ,EAAAA,IAEA,KAAAvL,OAAA6B,SAAA,gBACA+S,IAAA,QACA9V,IAAA,gBAEA9H,MAAAoL,EAAAjM,GAAAiM,EAAAjM,GAAAiM,IACAmC,MAAA,KACA,iBAAAnC,IACAA,EAAA,CAAAjM,GAAAiM,EAAAwB,MAAAxB,IAEA,KAAAyI,aAAAzI,CAAA,GAEA,mBErSI,GAAU,CAAC,EAEf,GAAQ3E,kBAAoB,IAC5B,GAAQC,cAAgB,IACxB,GAAQC,OAAS,SAAc,KAAM,QACrC,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,IAAS,IAKJ,KAAW,IAAQC,QAAS,IAAQA,OCL1D,UAXgB,OACd,GJTW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,sBAAsB,CAACO,MAAM,CAAC,KAAOT,EAAImW,YAAY,mBAAkB,EAAK,KAAOnW,EAAI+B,EAAE,WAAY,gCAAgC8E,GAAG,CAAC,cAAc,SAASC,GAAQ9G,EAAImW,YAAYrP,CAAM,IAAI,CAAC5G,EAAG,uBAAuB,CAACO,MAAM,CAAC,GAAK,sBAAsB,KAAOT,EAAI+B,EAAE,WAAY,gBAAgB,CAAC7B,EAAG,wBAAwB,CAACO,MAAM,CAAC,KAAO,SAAS,YAAY,gBAAgB,QAAUT,EAAIyH,eAAeZ,GAAG,CAAC,iBAAiB,SAASC,GAAQ9G,EAAIyH,cAAcX,CAAM,IAAI,CAAC9G,EAAIO,GAAG,WAAWP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,kBAAkB,YAAY/B,EAAIO,GAAG,KAAKL,EAAG,wBAAwB,CAACO,MAAM,CAAC,KAAO,SAAS,YAAY,kBAAkB,QAAUT,EAAIiI,iBAAiBpB,GAAG,CAAC,iBAAiB,SAASC,GAAQ9G,EAAIiI,gBAAgBnB,CAAM,IAAI,CAAC9G,EAAIO,GAAG,WAAWP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,yBAAyB,YAAY/B,EAAIO,GAAG,KAAKL,EAAG,wBAAwB,CAACO,MAAM,CAAC,KAAO,SAAS,YAAY,kBAAkB,QAAUT,EAAIkI,iBAAiBrB,GAAG,CAAC,iBAAiB,SAASC,GAAQ9G,EAAIkI,gBAAgBpB,CAAM,IAAI,CAAC9G,EAAIO,GAAG,WAAWP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,sBAAsB,YAAY/B,EAAIO,GAAG,KAAKL,EAAG,wBAAwB,CAACO,MAAM,CAAC,KAAO,SAAS,YAAY,gBAAgB,QAAUT,EAAImI,eAAetB,GAAG,CAAC,iBAAiB,SAASC,GAAQ9G,EAAImI,cAAcrB,CAAM,IAAI,CAAC9G,EAAIO,GAAG,WAAWP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,oBAAoB,aAAa,GAAG/B,EAAIO,GAAG,KAAKL,EAAG,uBAAuB,CAACO,MAAM,CAAC,GAAK,iBAAiB,KAAOT,EAAI+B,EAAE,WAAY,aAAa,CAAE/B,EAAIiW,uBAAwB/V,EAAG,aAAa,CAACO,MAAM,CAAC,KAAO,YAAY,CAACT,EAAIO,GAAG,WAAWP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,wGAAwG,YAAY/B,EAAIqH,KAAKrH,EAAIO,GAAG,KAAKL,EAAG,WAAW,CAACA,EAAG,SAAS,CAACF,EAAIO,GAAGP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,0BAA0B/B,EAAIO,GAAG,KAAKL,EAAG,wBAAwB,CAACO,MAAM,CAAC,KAAO,QAAQ,QAAUT,EAAI2V,aAAa,YAAY,0BAA0B,SAAW3V,EAAIiW,uBAAuB,KAAO,qBAAqB,MAAQ,gBAAgBpP,GAAG,CAAC,iBAAiB,SAASC,GAAQ9G,EAAI2V,aAAa7O,CAAM,IAAI,CAAC9G,EAAIO,GAAG,aAAaP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,oBAAoB,cAAc/B,EAAIO,GAAG,KAAKL,EAAG,wBAAwB,CAACO,MAAM,CAAC,KAAO,QAAQ,QAAUT,EAAI2V,aAAa,YAAY,mBAAmB,SAAW3V,EAAIiW,uBAAuB,KAAO,qBAAqB,MAAQ,QAAQpP,GAAG,CAAC,iBAAiB,SAASC,GAAQ9G,EAAI2V,aAAa7O,CAAM,IAAI,CAAC9G,EAAIO,GAAG,aAAaP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,YAAY,eAAe,IAAI,GAAG/B,EAAIO,GAAG,KAAKL,EAAG,uBAAuB,CAACO,MAAM,CAAC,GAAK,iBAAiB,KAAOT,EAAI+B,EAAE,WAAY,gBAAgB,CAAC7B,EAAG,wBAAwB,CAACO,MAAM,CAAC,KAAO,SAAS,YAAY,kBAAkB,QAAUT,EAAIqN,gBAAgB,SAAWrN,EAAI0V,iBAAiB7O,GAAG,CAAC,iBAAiB,SAASC,GAAQ9G,EAAIqN,gBAAgBvG,CAAM,IAAI,CAAC9G,EAAIO,GAAG,WAAWP,EAAIkH,GAAGlH,EAAI+B,EAAE,WAAY,uCAAuC,aAAa,GAAG/B,EAAIO,GAAG,KAAKL,EAAG,uBAAuB,CAACO,MAAM,CAAC,GAAK,mBAAmB,KAAOT,EAAI+B,EAAE,WAAY,cAAc,CAAC7B,EAAG,WAAW,CAACO,MAAM,CAAC,cAAcT,EAAI+B,EAAE,WAAY,iBAAiB,UAAY,MAAM,UAAW,EAAK,QAAU/B,EAAI4B,aAAa,gBAAgB5B,EAAIuF,cAAc,YAAcvF,EAAI+B,EAAE,WAAY,wBAAwB,WAAY,GAAO8E,GAAG,CAAC,kBAAkB7G,EAAI4W,iBAAiBrP,MAAM,CAACtO,MAAO+G,EAAI8M,aAAc/T,SAAS,SAAUyO,GAAMxH,EAAI8M,aAAatF,CAAG,EAAErG,WAAW,mBAAmB,IAAI,EACn7G,GACsB,IIUpB,EACA,KACA,WACA,MAI8B,oCCbhC,SAAS2V,GAAgBlU,GACrB,YAAqB,IAAVA,EACA,KAEE,CACTxK,GAAIwK,EAAMxK,GACV2e,MAAOnU,EAAMtG,KACb+W,UAAWzQ,EAAMyQ,UACjBsB,MAAO/W,KAAKC,IAAI,EAAG+E,EAAMyQ,UAAYzQ,EAAM6F,UAGnD,CACO,MClB4Q,IZqBtPuO,EAAAA,EAAAA,IAAiB,CAC1CC,OAAQ,2BACRrG,KAAAA,CAAMsG,GACF,MAAMC,GAAQC,EAAAA,GAAAA,MACRC,GAASC,EAAAA,GAAAA,MACTC,GAAQC,EAAAA,GAAAA,KAERC,GAAejX,EAAAA,EAAAA,KAAI,GAEnB6O,GAAgB3R,EAAAA,EAAAA,KAAS,IAAMyZ,EAAM/H,QAAQC,gBAE7CsE,GAAuBjW,EAAAA,EAAAA,KAAS,IAAM2R,EAAcpW,MAAQ4a,mBAAmBxE,EAAcpW,OAAS,OAEtG4O,GAAYnK,EAAAA,EAAAA,KAAS,IAAM6Z,EAAMrV,QAAQwV,eAEzChV,GAAShF,EAAAA,EAAAA,KAAS,IAAM6Z,EAAMrV,QAAQyV,mBACtC,WAAEC,EAAU,cAAEC,EAAa,WAAEtO,GWnBX7G,KAI5B,MAAM6G,GAAa7L,EAAAA,EAAAA,KAAS,IACNgF,EAAOzJ,MAEpBmB,QAAOwI,GAAsB,aAAbA,EAAMxK,IAAkC,UAAbwK,EAAMxK,KAEjD+B,KAAIyI,GAASkU,GAAgBlU,KAE7BxI,QAAOwI,GAAmB,OAAVA,MAWzB,MAAO,CAAEgV,YALUla,EAAAA,EAAAA,KAAS,IAAMoZ,GAAgBpU,EAAOzJ,MAAMqM,MAAK1C,GAAsB,UAAbA,EAAMxK,QAK9Dyf,eADCna,EAAAA,EAAAA,KAAS,IAAMoZ,GAAgBpU,EAAOzJ,MAAMqM,MAAK1C,GAAsB,aAAbA,EAAMxK,QAClDmR,aAAY,EXHMuO,CAAgBpV,GAE5DN,GAAW1E,EAAAA,EAAAA,KAAS,IAAM6Z,EAAMrV,QAAQG,gBAExC0V,GAA0Bra,EAAAA,EAAAA,KAAS,IAAM0E,EAASnJ,MAAMqO,SAAWlF,EAASnJ,MAAMga,mBAElF+E,GAAiBxX,EAAAA,EAAAA,KAAI,GAErByX,GAAkBzX,EAAAA,EAAAA,KAAI,GAEtB0X,GAAmB1X,EAAAA,EAAAA,KAAI,GAEvB2X,GAAe3X,EAAAA,EAAAA,IAAI,IAqCzB,MAAO,CAAE4X,OAAO,EAAMjB,QAAOE,SAAQE,QAAOE,eAAcpI,gBAAesE,uBAAsB9L,YAAWnF,SAAQkV,aAAYC,gBAAetO,aAAYnH,WAAU2V,0BAAyBC,iBAAgBC,kBAAiBC,mBAAkBC,eAAchT,YAjC7P,iBACI+S,EAAiBjf,OAAQ,EACzB,MAAMof,EAAUF,EAAalf,MAAMgc,OACnC,GAAgB,KAAZoD,EAAJ,CAIAL,EAAe/e,OAAQ,EACvBgf,EAAgBhf,OAAQ,EACxB,UACUse,EAAMzT,SAAS,WAAYuU,SAC3BhB,EAAOnf,KAAK,CACdoE,KAAM,QACN8S,OAAQ,CACJC,cAAe/C,mBAAmB+L,MAG1CF,EAAalf,MAAQ,EACzB,CACA,OACI0V,EAAAA,EAAAA,KAAU5M,EAAAA,EAAAA,IAAE,WAAY,0BAC5B,CACAkW,EAAgBhf,OAAQ,CAhBxB,MAFIif,EAAiBjf,OAAQ,CAmBjC,EAU0Qqf,gBAN1Q,WACIf,EAAMjI,OAAO,gBAAiB,CAC1BvO,IAAK,kBACL9H,OAAO,GAEf,EAC2Rsf,WAAU,MAAE1H,gBAAe,MAAE2H,cAAa,MAAEC,OAAM,MAAEC,QAAO,MAAEC,iBAAgB,MAAE5W,EAAC,KAAEsS,cAAa,IAAEuE,aAAY,IAAEC,gBAAe,IAAEC,uBAAsB,IAAExE,oBAAmB,IAAEyE,oBAAmB,IAAEC,mBAAkB,IAAE3X,SAAQ,IAAEkT,gBAAe,IAAEhM,iBAAgB,IAAEZ,cAAa,IAAEsR,cAAa,EAAEC,mBAAkBA,GACllB,oBa5EA,GAAU,CAAC,EAEf,GAAQxZ,kBAAoB,IAC5B,GAAQC,cAAgB,IACxB,GAAQC,OAAS,SAAc,KAAM,QACrC,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OCL1D,UAXgB,OACd,IdTW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAGiZ,EAAOnZ,EAAIG,MAAMC,YAAY,OAAOF,EAAGiZ,EAAON,gBAAgB,CAACpY,MAAM,CAAC,aAAa0Y,EAAOpX,EAAE,WAAY,uBAAuB+G,YAAY9I,EAAI+I,GAAG,CAAC,CAAChI,IAAI,SAASiI,GAAG,WAAW,MAAO,CAAC9I,EAAGiZ,EAAO9X,SAAS,CAAChB,YAAY,sCAAsCI,MAAM,CAAC,KAAO,YAAYoG,GAAG,CAAC,MAAQ,SAASC,GAAQqS,EAAO1B,cAAe,CAAI,GAAG3O,YAAY9I,EAAI+I,GAAG,CAAC,CAAChI,IAAI,OAAOiI,GAAG,WAAW,MAAO,CAAC9I,EAAGiZ,EAAO5Q,iBAAiB,CAAC9H,MAAM,CAAC,KAAO0Y,EAAOV,UAAU,EAAExP,OAAM,MAAS,CAACjJ,EAAIO,GAAG,WAAWP,EAAIkH,GAAGiS,EAAOpX,EAAE,WAAY,gCAAgC,YAAY/B,EAAIO,GAAG,KAAKL,EAAGiZ,EAAOD,mBAAmB,CAACzY,MAAM,CAAC,KAAO0Y,EAAO1B,cAAc5Q,GAAG,CAAC,cAAc,SAASC,GAAQqS,EAAO1B,aAAa3Q,CAAM,KAAK,EAAEmC,OAAM,MAAS,CAAC/I,EAAGiZ,EAAOH,mBAAmB,CAACvY,MAAM,CAAC,YAAY,kBAAkB,KAAO0Y,EAAOpX,EAAE,WAAW,gBAAgB8E,GAAG,CAAC,MAAQsS,EAAOb,gBAAgB,MAAQ,CAAC,SAASxR,GAAQ,OAAIA,EAAOrK,KAAK2c,QAAQ,QAAQpZ,EAAIqZ,GAAGvS,EAAOwS,QAAQ,QAAQ,GAAGxS,EAAO/F,IAAI,SAAgB,KAAYoY,EAAOb,gBAAgBtR,MAAM,KAAMC,UAAU,EAAE,SAASH,GAAQ,OAAIA,EAAOrK,KAAK2c,QAAQ,QAAQpZ,EAAIqZ,GAAGvS,EAAOwS,QAAQ,QAAQ,GAAGxS,EAAO/F,IAAI,CAAC,IAAI,aAAoB,KAAYoY,EAAOb,gBAAgBtR,MAAM,KAAMC,UAAU,IAAI6B,YAAY9I,EAAI+I,GAAG,CAAC,CAAChI,IAAI,OAAOiI,GAAG,WAAW,MAAO,CAAC9I,EAAGiZ,EAAO5Q,iBAAiB,CAAC9H,MAAM,CAAC,KAAO0Y,EAAOT,WAAW,EAAEzP,OAAM,OAAUjJ,EAAIO,GAAG,KAAKL,EAAGiZ,EAAOJ,oBAAoB,CAAC1Y,YAAY,kCAAkCI,MAAM,CAAC,2CAA2C,WAAW,CAACP,EAAGiZ,EAAO7E,oBAAoB,CAAC7T,MAAM,CAAC,GAAK,WAAW,OAAQ,EAAK,KAAO0Y,EAAOpX,EAAE,WAAY,mBAAmB,GAAK,CAAEzF,KAAM,UAAWwM,YAAY9I,EAAI+I,GAAG,CAAC,CAAChI,IAAI,OAAOiI,GAAG,WAAW,MAAO,CAAC9I,EAAGiZ,EAAO5Q,iBAAiB,CAAC9H,MAAM,CAAC,KAAO0Y,EAAOZ,cAAc,EAAEtP,OAAM,GAAM,CAAClI,IAAI,UAAUiI,GAAG,WAAW,MAAO,CAAEmQ,EAAOtR,UAAW3H,EAAGiZ,EAAO5E,gBAAgB,CAAC9T,MAAM,CAAC,KAAQ0Y,EAAOxF,0BAAuCjE,EAAhB,gBAA4B,CAAC1P,EAAIO,GAAG,eAAeP,EAAIkH,GAAGiS,EAAOtR,WAAW,gBAAgB7H,EAAIqH,KAAK,EAAE4B,OAAM,OAAUjJ,EAAIO,GAAG,KAAM4Y,EAAO/W,SAASkF,QAASpH,EAAGiZ,EAAO7E,oBAAoB,CAAC7T,MAAM,CAAC,GAAK,QAAQ,OAAQ,EAAK,KAAO0Y,EAAOpX,EAAE,WAAY,UAAU,GAAK,CAAEzF,KAAM,QAAS8S,OAAQ,CAAEC,cAAe,WAAavG,YAAY9I,EAAI+I,GAAG,CAAC,CAAChI,IAAI,OAAOiI,GAAG,WAAW,MAAO,CAAC9I,EAAGiZ,EAAO5Q,iBAAiB,CAAC9H,MAAM,CAAC,KAAO0Y,EAAOR,oBAAoB,EAAE1P,OAAM,GAAM,CAAClI,IAAI,UAAUiI,GAAG,WAAW,MAAO,CAAEmQ,EAAOvB,YAAcuB,EAAOvB,WAAWjD,MAAQ,EAAGzU,EAAGiZ,EAAO5E,gBAAgB,CAAC9T,MAAM,CAAC,KAAuC,UAAhC0Y,EAAOxF,qBAAmC,mBAAgBjE,IAAY,CAAC1P,EAAIO,GAAG,eAAeP,EAAIkH,GAAGiS,EAAOvB,WAAWjD,OAAO,gBAAgB3U,EAAIqH,KAAK,EAAE4B,OAAM,IAAO,MAAK,EAAM,cAAcjJ,EAAIqH,KAAKrH,EAAIO,GAAG,KAAM4Y,EAAOtB,gBAAkBsB,EAAOtB,cAAcxE,UAAY,IAAyC,IAApC8F,EAAOtB,cAAcxE,WAAmBnT,EAAGiZ,EAAO7E,oBAAoB,CAAC7T,MAAM,CAAC,GAAK,WAAW,OAAQ,EAAK,KAAO0Y,EAAOpX,EAAE,WAAY,qBAAqB,GAAK,CAAEzF,KAAM,QAAS8S,OAAQ,CAAEC,cAAe,cAAgBvG,YAAY9I,EAAI+I,GAAG,CAAC,CAAChI,IAAI,OAAOiI,GAAG,WAAW,MAAO,CAAC9I,EAAGiZ,EAAO5Q,iBAAiB,CAAC9H,MAAM,CAAC,KAAO0Y,EAAOX,iBAAiB,EAAEvP,OAAM,GAAOkQ,EAAOtB,cAAcxE,UAAY,EAAG,CAACtS,IAAI,UAAUiI,GAAG,WAAW,MAAO,CAAC9I,EAAGiZ,EAAO5E,gBAAgB,CAAC9T,MAAM,CAAC,KAAuC,aAAhC0Y,EAAOxF,qBAAsC,mBAAgBjE,IAAY,CAAC1P,EAAIO,GAAG,eAAeP,EAAIkH,GAAGiS,EAAOtB,cAAcxE,WAAW,gBAAgB,EAAEpK,OAAM,GAAM,MAAM,MAAK,KAAQjJ,EAAIqH,MAAM,GAAGrH,EAAIO,GAAG,KAAKL,EAAGiZ,EAAOL,uBAAuB,CAACrY,MAAM,CAAC,KAAO0Y,EAAOpX,EAAE,WAAY,UAAU,SAAWoX,EAAOlB,gBAAgB,aAAakB,EAAOlB,gBAAkBkB,EAAOpX,EAAE,WAAY,mBAAqBoX,EAAOpX,EAAE,WAAY,gBAAgB,aAAa,GAAG,aAAa,GAAG,KAAOoX,EAAOnB,gBAAgBnR,GAAG,CAAC,cAAc,SAASC,GAAQqS,EAAOnB,eAAelR,CAAM,GAAGgC,YAAY9I,EAAI+I,GAAG,CAAEoQ,EAAOpB,wBAAyB,CAAChX,IAAI,qBAAqBiI,GAAG,WAAW,MAAO,CAAEmQ,EAAOlB,gBAAiB/X,EAAGiZ,EAAOxR,eAAezH,EAAGiZ,EAAO5Q,iBAAiB,CAAC9H,MAAM,CAAC,KAAO0Y,EAAOT,WAAW,EAAEzP,OAAM,GAAM,KAAMkQ,EAAOpB,wBAAyB,CAAChX,IAAI,UAAUiI,GAAG,WAAW,MAAO,CAAC9I,EAAGiZ,EAAOP,aAAa,CAAC9P,YAAY9I,EAAI+I,GAAG,CAAC,CAAChI,IAAI,OAAOiI,GAAG,WAAW,MAAO,CAAC9I,EAAGiZ,EAAO5Q,iBAAiB,CAAC9H,MAAM,CAAC,KAAO0Y,EAAOtI,mBAAmB,EAAE5H,OAAM,IAAO,MAAK,EAAM,aAAa,CAACjJ,EAAIO,GAAG,aAAaP,EAAIkH,GAAGiS,EAAOpX,EAAE,WAAY,iBAAiB,cAAc/B,EAAIO,GAAG,KAAKL,EAAGiZ,EAAO9E,cAAc,CAAC5T,MAAM,CAAC,MAAQ0Y,EAAOpX,EAAE,WAAY,cAAc,wCAAwC,GAAG,iBAAgB,EAAM,SAAWoX,EAAOlB,gBAAgB,MAAQkB,EAAOhB,aAAa,MAAQgB,EAAOjB,iBAAiB,cAAciB,EAAOjB,iBAAmBiB,EAAOpX,EAAE,WAAY,mCAAqC,IAAI8E,GAAG,CAAC,eAAe,SAASC,GAAQqS,EAAOhB,aAAarR,CAAM,EAAE,OAASqS,EAAOhU,eAAe,EAAE8D,OAAM,GAAM,MAAM,MAAK,KAAQjJ,EAAIO,GAAG,KAAKL,EAAGiZ,EAAOJ,oBAAoB,CAAC1Y,YAAY,iCAAiCI,MAAM,CAAC,2CAA2C,WAAWT,EAAIW,GAAIwY,EAAO5P,YAAY,SAAS3G,GAAO,OAAO1C,EAAGiZ,EAAOF,cAAc,CAAClY,IAAI6B,EAAMxK,GAAGqI,MAAM,CAAC,GAAKmC,EAAMxK,GAAG,OAAS+gB,EAAOxF,uBAAyB/Q,EAAMxK,GAAG,KAAOwK,EAAMmU,MAAM,MAAQnU,EAAM+R,QAAQ,IAAG,IAAI,EACpoK,GACsB,IcUpB,EACA,KACA,WACA,MAI8B,6EChB5B1c,QAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,45DAA65D,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,oEAAoE,qEAAqE,MAAQ,GAAG,SAAW,ipBAAipB,eAAiB,CAAC,4IAA4I,4gGAA4gG,WAAa,MAEx8L,0yBCcO,MAAMoV,EAAiB,CAC1BpV,GAAI,OACJyN,MAAO9D,EAAE,WAAY,cAEZ+K,EAAe,CACxB1U,GAAI,UACJyN,MAAO9D,EAAE,WAAY,kBAQZmK,EAAgBvD,IACzB,MAAM4Q,EAAO7c,OAAO6c,KAAK5Q,GACzB,OAAuB,IAAhB4Q,EAAK7e,QAA+B,OAAf6e,EAAKrJ,GAAG,EAAW,uEClC/CjY,QAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,oPAAqP,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,8DAA8D,MAAQ,GAAG,SAAW,iHAAiH,eAAiB,CAAC,mSAAmS,WAAa,MAEh0B","sources":["webpack:///nextcloud/apps/settings/src/components/Users/VirtualList.vue?vue&type=style&index=0&id=de721376&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/NewUserModal.vue?vue&type=style&index=0&id=2fe7d69f&prod&lang=scss&scoped=true","webpack://nextcloud/./apps/settings/src/views/UserManagement.vue?4b28","webpack:///nextcloud/node_modules/@vueuse/components/node_modules/vue-demi/lib/index.mjs","webpack:///nextcloud/node_modules/@vueuse/components/index.mjs","webpack:///nextcloud/apps/settings/src/components/Users/VirtualList.vue","webpack:///nextcloud/apps/settings/src/components/Users/VirtualList.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/settings/src/components/Users/VirtualList.vue?e74c","webpack://nextcloud/./apps/settings/src/components/Users/VirtualList.vue?1915","webpack://nextcloud/./apps/settings/src/components/Users/NewUserModal.vue?6ea8","webpack:///nextcloud/apps/settings/src/components/Users/NewUserModal.vue","webpack:///nextcloud/apps/settings/src/components/Users/NewUserModal.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/Users/NewUserModal.vue?daab","webpack://nextcloud/./apps/settings/src/components/Users/NewUserModal.vue?0748","webpack:///nextcloud/apps/settings/src/components/Users/UserListFooter.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/settings/src/components/Users/UserListFooter.vue","webpack://nextcloud/./apps/settings/src/components/Users/UserListFooter.vue?2405","webpack://nextcloud/./apps/settings/src/components/Users/UserListFooter.vue?b843","webpack:///nextcloud/apps/settings/src/components/Users/UserListHeader.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/settings/src/components/Users/UserListHeader.vue","webpack://nextcloud/./apps/settings/src/components/Users/UserListHeader.vue?b533","webpack://nextcloud/./apps/settings/src/components/Users/UserListHeader.vue?758a","webpack://nextcloud/./apps/settings/src/components/Users/UserRow.vue?5434","webpack:///nextcloud/apps/settings/src/components/Users/UserRowActions.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/settings/src/components/Users/UserRowActions.vue","webpack://nextcloud/./apps/settings/src/components/Users/UserRowActions.vue?3c2a","webpack:///nextcloud/apps/settings/src/mixins/UserRowMixin.js","webpack:///nextcloud/apps/settings/src/components/Users/UserRow.vue","webpack:///nextcloud/apps/settings/src/components/Users/UserRow.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/Users/UserRow.vue?9663","webpack://nextcloud/./apps/settings/src/components/Users/UserRow.vue?eb6e","webpack:///nextcloud/apps/settings/src/components/UserList.vue","webpack:///nextcloud/apps/settings/src/components/UserList.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/UserList.vue?b995","webpack://nextcloud/./apps/settings/src/components/UserList.vue?02a4","webpack://nextcloud/./apps/settings/src/components/UserList.vue?c96e","webpack:///nextcloud/apps/settings/src/views/UserManagement.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/settings/src/views/UserManagement.vue","webpack://nextcloud/./apps/settings/src/views/UserManagement.vue?fa13","webpack://nextcloud/./apps/settings/src/views/UserManagement.vue?fd5a","webpack:///nextcloud/apps/settings/src/components/Users/UserListFooter.vue?vue&type=style&index=0&id=3ec0b16a&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/UserSettingsDialog.vue?vue&type=style&index=0&id=ab9299ba&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/views/UserManagementNavigation.vue?vue&type=style&index=0&id=413f2c9e&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/UserList.vue?vue&type=style&index=0&id=0e745d5e&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/UserRow.vue?vue&type=style&index=0&id=6615a81e&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/views/UserManagement.vue?vue&type=style&index=0&id=fc8857fc&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/views/UserManagementNavigation.vue","webpack:///nextcloud/apps/settings/src/components/GroupListItem.vue","webpack:///nextcloud/apps/settings/src/components/GroupListItem.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/GroupListItem.vue?78a4","webpack://nextcloud/./apps/settings/src/components/GroupListItem.vue?7b19","webpack://nextcloud/./apps/settings/src/components/GroupListItem.vue?9f48","webpack://nextcloud/./apps/settings/src/components/Users/UserSettingsDialog.vue?824e","webpack:///nextcloud/apps/settings/src/components/Users/UserSettingsDialog.vue","webpack:///nextcloud/apps/settings/src/components/Users/UserSettingsDialog.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/Users/UserSettingsDialog.vue?5a70","webpack://nextcloud/./apps/settings/src/components/Users/UserSettingsDialog.vue?f361","webpack:///nextcloud/apps/settings/src/composables/useGroupsNavigation.ts","webpack:///nextcloud/apps/settings/src/views/UserManagementNavigation.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/settings/src/views/UserManagementNavigation.vue?e96a","webpack://nextcloud/./apps/settings/src/views/UserManagementNavigation.vue?28b6","webpack:///nextcloud/apps/settings/src/components/Users/UserListHeader.vue?vue&type=style&index=0&id=69afa821&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/utils/userUtils.ts","webpack:///nextcloud/apps/settings/src/components/GroupListItem.vue?vue&type=style&index=0&id=17dd13c0&prod&lang=scss&scoped=true"],"sourcesContent":["// 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-list[data-v-de721376]{--avatar-cell-width: 48px;--cell-padding: 7px;--cell-width: 200px;--cell-width-large: 300px;--cell-min-width: calc(var(--cell-width) - (2 * var(--cell-padding)));--sticky-column-z-index: calc(var(--vs-dropdown-z-index) + 1);display:block;overflow:auto;height:100%}.user-list__header[data-v-de721376],.user-list__footer[data-v-de721376]{position:sticky;display:block}.user-list__header[data-v-de721376]{top:0;z-index:calc(var(--sticky-column-z-index) + 1)}.user-list__footer[data-v-de721376]{left:0}.user-list__body[data-v-de721376]{display:flex;flex-direction:column;width:100%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/VirtualList.vue\"],\"names\":[],\"mappings\":\"AACA,4BACC,yBAAA,CACA,mBAAA,CACA,mBAAA,CACA,yBAAA,CACA,qEAAA,CACA,6DAAA,CAGA,aAAA,CACA,aAAA,CACA,WAAA,CAEA,wEAEC,eAAA,CAEA,aAAA,CAGD,oCACC,KAAA,CACA,8CAAA,CAGD,oCACC,MAAA,CAGD,kCACC,YAAA,CACA,qBAAA,CACA,UAAA\",\"sourcesContent\":[\"\\n.user-list {\\n\\t--avatar-cell-width: 48px;\\n\\t--cell-padding: 7px;\\n\\t--cell-width: 200px;\\n\\t--cell-width-large: 300px;\\n\\t--cell-min-width: calc(var(--cell-width) - (2 * var(--cell-padding)));\\n\\t--sticky-column-z-index: calc(var(--vs-dropdown-z-index) + 1); // Keep the sticky column on top of the select dropdown\\n\\n\\t// Necessary for virtual scroll optimized rendering\\n\\tdisplay: block;\\n\\toverflow: auto;\\n\\theight: 100%;\\n\\n\\t&__header,\\n\\t&__footer {\\n\\t\\tposition: sticky;\\n\\t\\t// Fix sticky positioning in Firefox\\n\\t\\tdisplay: block;\\n\\t}\\n\\n\\t&__header {\\n\\t\\ttop: 0;\\n\\t\\tz-index: calc(var(--sticky-column-z-index) + 1);\\n\\t}\\n\\n\\t&__footer {\\n\\t\\tleft: 0;\\n\\t}\\n\\n\\t&__body {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\twidth: 100%;\\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, `.modal__form[data-v-2fe7d69f]{display:flex;flex-direction:column;align-items:center;padding:20px;gap:4px 0}.modal__item[data-v-2fe7d69f]{width:100%}.modal__item[data-v-2fe7d69f]:not(:focus):not(:active){border-color:var(--color-border-dark)}.modal__hint[data-v-2fe7d69f]{color:var(--color-text-maxcontrast);margin-top:8px;align-self:flex-start}.modal__label[data-v-2fe7d69f]{display:block;padding:4px 0}.modal__select[data-v-2fe7d69f]{width:100%}.modal__submit[data-v-2fe7d69f]{margin-top:20px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/NewUserModal.vue\"],\"names\":[],\"mappings\":\"AAEC,8BACC,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,YAAA,CACA,SAAA,CAGD,8BACC,UAAA,CAEA,uDACC,qCAAA,CAIF,8BACC,mCAAA,CACA,cAAA,CACA,qBAAA,CAGD,+BACC,aAAA,CACA,aAAA,CAGD,gCACC,UAAA,CAGD,gCACC,eAAA\",\"sourcesContent\":[\"\\n.modal {\\n\\t&__form {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\talign-items: center;\\n\\t\\tpadding: 20px;\\n\\t\\tgap: 4px 0;\\n\\t}\\n\\n\\t&__item {\\n\\t\\twidth: 100%;\\n\\n\\t\\t&:not(:focus):not(:active) {\\n\\t\\t\\tborder-color: var(--color-border-dark);\\n\\t\\t}\\n\\t}\\n\\n\\t&__hint {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tmargin-top: 8px;\\n\\t\\talign-self: flex-start;\\n\\t}\\n\\n\\t&__label {\\n\\t\\tdisplay: block;\\n\\t\\tpadding: 4px 0;\\n\\t}\\n\\n\\t&__select {\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t&__submit {\\n\\t\\tmargin-top: 20px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcAppContent',{attrs:{\"page-heading\":_vm.pageHeading}},[_c('UserList',{attrs:{\"selected-group\":_vm.selectedGroupDecoded,\"external-actions\":_vm.externalActions}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue'\nimport { getCurrentInstance } from 'vue'\n\nvar isVue2 = true\nvar isVue3 = false\nvar Vue2 = Vue\nvar warn = Vue.util.warn\n\nfunction install() {}\n\n// createApp polyfill\nexport function createApp(rootComponent, rootProps) {\n var vm\n var provide = {}\n var app = {\n config: Vue.config,\n use: Vue.use.bind(Vue),\n mixin: Vue.mixin.bind(Vue),\n component: Vue.component.bind(Vue),\n provide: function (key, value) {\n provide[key] = value\n return this\n },\n directive: function (name, dir) {\n if (dir) {\n Vue.directive(name, dir)\n return app\n } else {\n return Vue.directive(name)\n }\n },\n mount: function (el, hydrating) {\n if (!vm) {\n vm = new Vue(Object.assign({ propsData: rootProps }, rootComponent, { provide: Object.assign(provide, rootComponent.provide) }))\n vm.$mount(el, hydrating)\n return vm\n } else {\n return vm\n }\n },\n unmount: function () {\n if (vm) {\n vm.$destroy()\n vm = undefined\n }\n },\n }\n return app\n}\n\nexport {\n Vue,\n Vue2,\n isVue2,\n isVue3,\n install,\n warn\n}\n\n// Vue 3 components mock\nfunction createMockComponent(name) {\n return {\n setup() {\n throw new Error('[vue-demi] ' + name + ' is not supported in Vue 2. It\\'s provided to avoid compiler errors.')\n }\n }\n}\nexport var Fragment = /*#__PURE__*/ createMockComponent('Fragment')\nexport var Transition = /*#__PURE__*/ createMockComponent('Transition')\nexport var TransitionGroup = /*#__PURE__*/ createMockComponent('TransitionGroup')\nexport var Teleport = /*#__PURE__*/ createMockComponent('Teleport')\nexport var Suspense = /*#__PURE__*/ createMockComponent('Suspense')\nexport var KeepAlive = /*#__PURE__*/ createMockComponent('KeepAlive')\n\nexport * from 'vue'\n\n// Not implemented https://github.com/vuejs/core/pull/8111, falls back to getCurrentInstance()\nexport function hasInjectionContext() {\n return !!getCurrentInstance()\n}\n","import { defineComponent, ref, h, watch, computed, reactive, shallowRef, nextTick, getCurrentInstance, onMounted, isVue2, watchEffect, toRefs } from 'vue-demi';\nimport { onClickOutside as onClickOutside$1, useActiveElement, useBattery, useBrowserLocation, useClipboard, useDark, useDeviceMotion, useDeviceOrientation, useDevicePixelRatio, useDevicesList, useDocumentVisibility, useStorage as useStorage$1, isClient as isClient$1, useDraggable, useElementBounding, useElementSize as useElementSize$1, useElementVisibility as useElementVisibility$1, useEyeDropper, useFullscreen, useGeolocation, useIdle, useMouse, useMouseInElement, useMousePressed, useNetwork, useNow, useObjectUrl, useOffsetPagination, useOnline, usePageLeave, usePointer, usePointerLock, usePreferredColorScheme, usePreferredContrast, usePreferredDark as usePreferredDark$1, usePreferredLanguages, usePreferredReducedMotion, useTimeAgo, useTimestamp, useVirtualList, useWindowFocus, useWindowSize } from '@vueuse/core';\nimport { toValue, isClient, noop, isObject, tryOnScopeDispose, isIOS, directiveHooks, pausableWatch, tryOnMounted, toRef, useToggle, notNullish, promiseTimeout, until, useDebounceFn, useThrottleFn } from '@vueuse/shared';\n\nconst OnClickOutside = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"OnClickOutside\",\n props: [\"as\", \"options\"],\n emits: [\"trigger\"],\n setup(props, { slots, emit }) {\n const target = ref();\n onClickOutside$1(target, (e) => {\n emit(\"trigger\", e);\n }, props.options);\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default());\n };\n }\n});\n\nfunction unrefElement(elRef) {\n var _a;\n const plain = toValue(elRef);\n return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;\n}\n\nconst defaultWindow = isClient ? window : void 0;\n\nfunction useEventListener(...args) {\n let target;\n let events;\n let listeners;\n let options;\n if (typeof args[0] === \"string\" || Array.isArray(args[0])) {\n [events, listeners, options] = args;\n target = defaultWindow;\n } else {\n [target, events, listeners, options] = args;\n }\n if (!target)\n return noop;\n if (!Array.isArray(events))\n events = [events];\n if (!Array.isArray(listeners))\n listeners = [listeners];\n const cleanups = [];\n const cleanup = () => {\n cleanups.forEach((fn) => fn());\n cleanups.length = 0;\n };\n const register = (el, event, listener, options2) => {\n el.addEventListener(event, listener, options2);\n return () => el.removeEventListener(event, listener, options2);\n };\n const stopWatch = watch(\n () => [unrefElement(target), toValue(options)],\n ([el, options2]) => {\n cleanup();\n if (!el)\n return;\n const optionsClone = isObject(options2) ? { ...options2 } : options2;\n cleanups.push(\n ...events.flatMap((event) => {\n return listeners.map((listener) => register(el, event, listener, optionsClone));\n })\n );\n },\n { immediate: true, flush: \"post\" }\n );\n const stop = () => {\n stopWatch();\n cleanup();\n };\n tryOnScopeDispose(stop);\n return stop;\n}\n\nlet _iOSWorkaround = false;\nfunction onClickOutside(target, handler, options = {}) {\n const { window = defaultWindow, ignore = [], capture = true, detectIframe = false } = options;\n if (!window)\n return noop;\n if (isIOS && !_iOSWorkaround) {\n _iOSWorkaround = true;\n Array.from(window.document.body.children).forEach((el) => el.addEventListener(\"click\", noop));\n window.document.documentElement.addEventListener(\"click\", noop);\n }\n let shouldListen = true;\n const shouldIgnore = (event) => {\n return ignore.some((target2) => {\n if (typeof target2 === \"string\") {\n return Array.from(window.document.querySelectorAll(target2)).some((el) => el === event.target || event.composedPath().includes(el));\n } else {\n const el = unrefElement(target2);\n return el && (event.target === el || event.composedPath().includes(el));\n }\n });\n };\n const listener = (event) => {\n const el = unrefElement(target);\n if (!el || el === event.target || event.composedPath().includes(el))\n return;\n if (event.detail === 0)\n shouldListen = !shouldIgnore(event);\n if (!shouldListen) {\n shouldListen = true;\n return;\n }\n handler(event);\n };\n const cleanup = [\n useEventListener(window, \"click\", listener, { passive: true, capture }),\n useEventListener(window, \"pointerdown\", (e) => {\n const el = unrefElement(target);\n shouldListen = !shouldIgnore(e) && !!(el && !e.composedPath().includes(el));\n }, { passive: true }),\n detectIframe && useEventListener(window, \"blur\", (event) => {\n setTimeout(() => {\n var _a;\n const el = unrefElement(target);\n if (((_a = window.document.activeElement) == null ? void 0 : _a.tagName) === \"IFRAME\" && !(el == null ? void 0 : el.contains(window.document.activeElement))) {\n handler(event);\n }\n }, 0);\n })\n ].filter(Boolean);\n const stop = () => cleanup.forEach((fn) => fn());\n return stop;\n}\n\nconst vOnClickOutside = {\n [directiveHooks.mounted](el, binding) {\n const capture = !binding.modifiers.bubble;\n if (typeof binding.value === \"function\") {\n el.__onClickOutside_stop = onClickOutside(el, binding.value, { capture });\n } else {\n const [handler, options] = binding.value;\n el.__onClickOutside_stop = onClickOutside(el, handler, Object.assign({ capture }, options));\n }\n },\n [directiveHooks.unmounted](el) {\n el.__onClickOutside_stop();\n }\n};\n\nfunction createKeyPredicate(keyFilter) {\n if (typeof keyFilter === \"function\")\n return keyFilter;\n else if (typeof keyFilter === \"string\")\n return (event) => event.key === keyFilter;\n else if (Array.isArray(keyFilter))\n return (event) => keyFilter.includes(event.key);\n return () => true;\n}\nfunction onKeyStroke(...args) {\n let key;\n let handler;\n let options = {};\n if (args.length === 3) {\n key = args[0];\n handler = args[1];\n options = args[2];\n } else if (args.length === 2) {\n if (typeof args[1] === \"object\") {\n key = true;\n handler = args[0];\n options = args[1];\n } else {\n key = args[0];\n handler = args[1];\n }\n } else {\n key = true;\n handler = args[0];\n }\n const {\n target = defaultWindow,\n eventName = \"keydown\",\n passive = false,\n dedupe = false\n } = options;\n const predicate = createKeyPredicate(key);\n const listener = (e) => {\n if (e.repeat && toValue(dedupe))\n return;\n if (predicate(e))\n handler(e);\n };\n return useEventListener(target, eventName, listener, passive);\n}\n\nconst vOnKeyStroke = {\n [directiveHooks.mounted](el, binding) {\n var _a, _b;\n const keys = (_b = (_a = binding.arg) == null ? void 0 : _a.split(\",\")) != null ? _b : true;\n if (typeof binding.value === \"function\") {\n onKeyStroke(keys, binding.value, {\n target: el\n });\n } else {\n const [handler, options] = binding.value;\n onKeyStroke(keys, handler, {\n target: el,\n ...options\n });\n }\n }\n};\n\nconst DEFAULT_DELAY = 500;\nconst DEFAULT_THRESHOLD = 10;\nfunction onLongPress(target, handler, options) {\n var _a, _b;\n const elementRef = computed(() => unrefElement(target));\n let timeout;\n let posStart;\n let startTimestamp;\n let hasLongPressed = false;\n function clear() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = void 0;\n }\n posStart = void 0;\n startTimestamp = void 0;\n hasLongPressed = false;\n }\n function onRelease(ev) {\n var _a2, _b2, _c;\n const [_startTimestamp, _posStart, _hasLongPressed] = [startTimestamp, posStart, hasLongPressed];\n clear();\n if (!(options == null ? void 0 : options.onMouseUp) || !_posStart || !_startTimestamp)\n return;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n const dx = ev.x - _posStart.x;\n const dy = ev.y - _posStart.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n options.onMouseUp(ev.timeStamp - _startTimestamp, distance, _hasLongPressed);\n }\n function onDown(ev) {\n var _a2, _b2, _c, _d;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n clear();\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n posStart = {\n x: ev.x,\n y: ev.y\n };\n startTimestamp = ev.timeStamp;\n timeout = setTimeout(\n () => {\n hasLongPressed = true;\n handler(ev);\n },\n (_d = options == null ? void 0 : options.delay) != null ? _d : DEFAULT_DELAY\n );\n }\n function onMove(ev) {\n var _a2, _b2, _c, _d;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n if (!posStart || (options == null ? void 0 : options.distanceThreshold) === false)\n return;\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n const dx = ev.x - posStart.x;\n const dy = ev.y - posStart.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n if (distance >= ((_d = options == null ? void 0 : options.distanceThreshold) != null ? _d : DEFAULT_THRESHOLD))\n clear();\n }\n const listenerOptions = {\n capture: (_a = options == null ? void 0 : options.modifiers) == null ? void 0 : _a.capture,\n once: (_b = options == null ? void 0 : options.modifiers) == null ? void 0 : _b.once\n };\n const cleanup = [\n useEventListener(elementRef, \"pointerdown\", onDown, listenerOptions),\n useEventListener(elementRef, \"pointermove\", onMove, listenerOptions),\n useEventListener(elementRef, [\"pointerup\", \"pointerleave\"], onRelease, listenerOptions)\n ];\n const stop = () => cleanup.forEach((fn) => fn());\n return stop;\n}\n\nconst OnLongPress = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"OnLongPress\",\n props: [\"as\", \"options\"],\n emits: [\"trigger\"],\n setup(props, { slots, emit }) {\n const target = ref();\n onLongPress(\n target,\n (e) => {\n emit(\"trigger\", e);\n },\n props.options\n );\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default());\n };\n }\n});\n\nconst vOnLongPress = {\n [directiveHooks.mounted](el, binding) {\n if (typeof binding.value === \"function\")\n onLongPress(el, binding.value, { modifiers: binding.modifiers });\n else\n onLongPress(el, ...binding.value);\n }\n};\n\nconst UseActiveElement = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseActiveElement\",\n setup(props, { slots }) {\n const data = reactive({\n element: useActiveElement()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseBattery = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseBattery\",\n setup(props, { slots }) {\n const data = reactive(useBattery(props));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseBrowserLocation = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseBrowserLocation\",\n setup(props, { slots }) {\n const data = reactive(useBrowserLocation());\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseClipboard = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseClipboard\",\n props: [\n \"source\",\n \"read\",\n \"navigator\",\n \"copiedDuring\",\n \"legacy\"\n ],\n setup(props, { slots }) {\n const data = reactive(useClipboard(props));\n return () => {\n var _a;\n return (_a = slots.default) == null ? void 0 : _a.call(slots, data);\n };\n }\n});\n\nconst _global = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nconst globalKey = \"__vueuse_ssr_handlers__\";\nconst handlers = /* @__PURE__ */ getHandlers();\nfunction getHandlers() {\n if (!(globalKey in _global))\n _global[globalKey] = _global[globalKey] || {};\n return _global[globalKey];\n}\nfunction getSSRHandler(key, fallback) {\n return handlers[key] || fallback;\n}\n\nfunction guessSerializerType(rawInit) {\n return rawInit == null ? \"any\" : rawInit instanceof Set ? \"set\" : rawInit instanceof Map ? \"map\" : rawInit instanceof Date ? \"date\" : typeof rawInit === \"boolean\" ? \"boolean\" : typeof rawInit === \"string\" ? \"string\" : typeof rawInit === \"object\" ? \"object\" : !Number.isNaN(rawInit) ? \"number\" : \"any\";\n}\n\nconst StorageSerializers = {\n boolean: {\n read: (v) => v === \"true\",\n write: (v) => String(v)\n },\n object: {\n read: (v) => JSON.parse(v),\n write: (v) => JSON.stringify(v)\n },\n number: {\n read: (v) => Number.parseFloat(v),\n write: (v) => String(v)\n },\n any: {\n read: (v) => v,\n write: (v) => String(v)\n },\n string: {\n read: (v) => v,\n write: (v) => String(v)\n },\n map: {\n read: (v) => new Map(JSON.parse(v)),\n write: (v) => JSON.stringify(Array.from(v.entries()))\n },\n set: {\n read: (v) => new Set(JSON.parse(v)),\n write: (v) => JSON.stringify(Array.from(v))\n },\n date: {\n read: (v) => new Date(v),\n write: (v) => v.toISOString()\n }\n};\nconst customStorageEventName = \"vueuse-storage\";\nfunction useStorage(key, defaults, storage, options = {}) {\n var _a;\n const {\n flush = \"pre\",\n deep = true,\n listenToStorageChanges = true,\n writeDefaults = true,\n mergeDefaults = false,\n shallow,\n window = defaultWindow,\n eventFilter,\n onError = (e) => {\n console.error(e);\n },\n initOnMounted\n } = options;\n const data = (shallow ? shallowRef : ref)(typeof defaults === \"function\" ? defaults() : defaults);\n if (!storage) {\n try {\n storage = getSSRHandler(\"getDefaultStorage\", () => {\n var _a2;\n return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n })();\n } catch (e) {\n onError(e);\n }\n }\n if (!storage)\n return data;\n const rawInit = toValue(defaults);\n const type = guessSerializerType(rawInit);\n const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n const { pause: pauseWatch, resume: resumeWatch } = pausableWatch(\n data,\n () => write(data.value),\n { flush, deep, eventFilter }\n );\n if (window && listenToStorageChanges) {\n tryOnMounted(() => {\n useEventListener(window, \"storage\", update);\n useEventListener(window, customStorageEventName, updateFromCustomEvent);\n if (initOnMounted)\n update();\n });\n }\n if (!initOnMounted)\n update();\n function dispatchWriteEvent(oldValue, newValue) {\n if (window) {\n window.dispatchEvent(new CustomEvent(customStorageEventName, {\n detail: {\n key,\n oldValue,\n newValue,\n storageArea: storage\n }\n }));\n }\n }\n function write(v) {\n try {\n const oldValue = storage.getItem(key);\n if (v == null) {\n dispatchWriteEvent(oldValue, null);\n storage.removeItem(key);\n } else {\n const serialized = serializer.write(v);\n if (oldValue !== serialized) {\n storage.setItem(key, serialized);\n dispatchWriteEvent(oldValue, serialized);\n }\n }\n } catch (e) {\n onError(e);\n }\n }\n function read(event) {\n const rawValue = event ? event.newValue : storage.getItem(key);\n if (rawValue == null) {\n if (writeDefaults && rawInit != null)\n storage.setItem(key, serializer.write(rawInit));\n return rawInit;\n } else if (!event && mergeDefaults) {\n const value = serializer.read(rawValue);\n if (typeof mergeDefaults === \"function\")\n return mergeDefaults(value, rawInit);\n else if (type === \"object\" && !Array.isArray(value))\n return { ...rawInit, ...value };\n return value;\n } else if (typeof rawValue !== \"string\") {\n return rawValue;\n } else {\n return serializer.read(rawValue);\n }\n }\n function update(event) {\n if (event && event.storageArea !== storage)\n return;\n if (event && event.key == null) {\n data.value = rawInit;\n return;\n }\n if (event && event.key !== key)\n return;\n pauseWatch();\n try {\n if ((event == null ? void 0 : event.newValue) !== serializer.write(data.value))\n data.value = read(event);\n } catch (e) {\n onError(e);\n } finally {\n if (event)\n nextTick(resumeWatch);\n else\n resumeWatch();\n }\n }\n function updateFromCustomEvent(event) {\n update(event.detail);\n }\n return data;\n}\n\nfunction useMounted() {\n const isMounted = ref(false);\n const instance = getCurrentInstance();\n if (instance) {\n onMounted(() => {\n isMounted.value = true;\n }, isVue2 ? void 0 : instance);\n }\n return isMounted;\n}\n\nfunction useSupported(callback) {\n const isMounted = useMounted();\n return computed(() => {\n isMounted.value;\n return Boolean(callback());\n });\n}\n\nfunction useMediaQuery(query, options = {}) {\n const { window = defaultWindow } = options;\n const isSupported = useSupported(() => window && \"matchMedia\" in window && typeof window.matchMedia === \"function\");\n let mediaQuery;\n const matches = ref(false);\n const handler = (event) => {\n matches.value = event.matches;\n };\n const cleanup = () => {\n if (!mediaQuery)\n return;\n if (\"removeEventListener\" in mediaQuery)\n mediaQuery.removeEventListener(\"change\", handler);\n else\n mediaQuery.removeListener(handler);\n };\n const stopWatch = watchEffect(() => {\n if (!isSupported.value)\n return;\n cleanup();\n mediaQuery = window.matchMedia(toValue(query));\n if (\"addEventListener\" in mediaQuery)\n mediaQuery.addEventListener(\"change\", handler);\n else\n mediaQuery.addListener(handler);\n matches.value = mediaQuery.matches;\n });\n tryOnScopeDispose(() => {\n stopWatch();\n cleanup();\n mediaQuery = void 0;\n });\n return matches;\n}\n\nfunction usePreferredDark(options) {\n return useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n}\n\nfunction useColorMode(options = {}) {\n const {\n selector = \"html\",\n attribute = \"class\",\n initialValue = \"auto\",\n window = defaultWindow,\n storage,\n storageKey = \"vueuse-color-scheme\",\n listenToStorageChanges = true,\n storageRef,\n emitAuto,\n disableTransition = true\n } = options;\n const modes = {\n auto: \"\",\n light: \"light\",\n dark: \"dark\",\n ...options.modes || {}\n };\n const preferredDark = usePreferredDark({ window });\n const system = computed(() => preferredDark.value ? \"dark\" : \"light\");\n const store = storageRef || (storageKey == null ? toRef(initialValue) : useStorage(storageKey, initialValue, storage, { window, listenToStorageChanges }));\n const state = computed(() => store.value === \"auto\" ? system.value : store.value);\n const updateHTMLAttrs = getSSRHandler(\n \"updateHTMLAttrs\",\n (selector2, attribute2, value) => {\n const el = typeof selector2 === \"string\" ? window == null ? void 0 : window.document.querySelector(selector2) : unrefElement(selector2);\n if (!el)\n return;\n let style;\n if (disableTransition) {\n style = window.document.createElement(\"style\");\n const styleString = \"*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}\";\n style.appendChild(document.createTextNode(styleString));\n window.document.head.appendChild(style);\n }\n if (attribute2 === \"class\") {\n const current = value.split(/\\s/g);\n Object.values(modes).flatMap((i) => (i || \"\").split(/\\s/g)).filter(Boolean).forEach((v) => {\n if (current.includes(v))\n el.classList.add(v);\n else\n el.classList.remove(v);\n });\n } else {\n el.setAttribute(attribute2, value);\n }\n if (disableTransition) {\n window.getComputedStyle(style).opacity;\n document.head.removeChild(style);\n }\n }\n );\n function defaultOnChanged(mode) {\n var _a;\n updateHTMLAttrs(selector, attribute, (_a = modes[mode]) != null ? _a : mode);\n }\n function onChanged(mode) {\n if (options.onChanged)\n options.onChanged(mode, defaultOnChanged);\n else\n defaultOnChanged(mode);\n }\n watch(state, onChanged, { flush: \"post\", immediate: true });\n tryOnMounted(() => onChanged(state.value));\n const auto = computed({\n get() {\n return emitAuto ? store.value : state.value;\n },\n set(v) {\n store.value = v;\n }\n });\n try {\n return Object.assign(auto, { store, system, state });\n } catch (e) {\n return auto;\n }\n}\n\nconst UseColorMode = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseColorMode\",\n props: [\"selector\", \"attribute\", \"modes\", \"onChanged\", \"storageKey\", \"storage\", \"emitAuto\"],\n setup(props, { slots }) {\n const mode = useColorMode(props);\n const data = reactive({\n mode,\n system: mode.system,\n store: mode.store\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseDark = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDark\",\n props: [\"selector\", \"attribute\", \"valueDark\", \"valueLight\", \"onChanged\", \"storageKey\", \"storage\"],\n setup(props, { slots }) {\n const isDark = useDark(props);\n const data = reactive({\n isDark,\n toggleDark: useToggle(isDark)\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseDeviceMotion = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDeviceMotion\",\n setup(props, { slots }) {\n const data = reactive(useDeviceMotion());\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseDeviceOrientation = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDeviceOrientation\",\n setup(props, { slots }) {\n const data = reactive(useDeviceOrientation());\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseDevicePixelRatio = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDevicePixelRatio\",\n setup(props, { slots }) {\n const data = reactive({\n pixelRatio: useDevicePixelRatio()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseDevicesList = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDevicesList\",\n props: [\"onUpdated\", \"requestPermissions\", \"constraints\"],\n setup(props, { slots }) {\n const data = reactive(useDevicesList(props));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseDocumentVisibility = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDocumentVisibility\",\n setup(props, { slots }) {\n const data = reactive({\n visibility: useDocumentVisibility()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseDraggable = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseDraggable\",\n props: [\n \"storageKey\",\n \"storageType\",\n \"initialValue\",\n \"exact\",\n \"preventDefault\",\n \"stopPropagation\",\n \"pointerTypes\",\n \"as\",\n \"handle\",\n \"axis\",\n \"onStart\",\n \"onMove\",\n \"onEnd\",\n \"disabled\"\n ],\n setup(props, { slots }) {\n const target = ref();\n const handle = computed(() => {\n var _a;\n return (_a = props.handle) != null ? _a : target.value;\n });\n const disabled = computed(() => !!props.disabled);\n const storageValue = props.storageKey && useStorage$1(\n props.storageKey,\n toValue(props.initialValue) || { x: 0, y: 0 },\n isClient$1 ? props.storageType === \"session\" ? sessionStorage : localStorage : void 0\n );\n const initialValue = storageValue || props.initialValue || { x: 0, y: 0 };\n const onEnd = (position, event) => {\n var _a;\n (_a = props.onEnd) == null ? void 0 : _a.call(props, position, event);\n if (!storageValue)\n return;\n storageValue.value.x = position.x;\n storageValue.value.y = position.y;\n };\n const data = reactive(useDraggable(target, {\n ...props,\n handle,\n initialValue,\n onEnd,\n disabled\n }));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target, style: `touch-action:none;${data.style}` }, slots.default(data));\n };\n }\n});\n\nconst UseElementBounding = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseElementBounding\",\n props: [\"box\", \"as\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive(useElementBounding(target));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nfunction useElementHover(el, options = {}) {\n const {\n delayEnter = 0,\n delayLeave = 0,\n window = defaultWindow\n } = options;\n const isHovered = ref(false);\n let timer;\n const toggle = (entering) => {\n const delay = entering ? delayEnter : delayLeave;\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n }\n if (delay)\n timer = setTimeout(() => isHovered.value = entering, delay);\n else\n isHovered.value = entering;\n };\n if (!window)\n return isHovered;\n useEventListener(el, \"mouseenter\", () => toggle(true), { passive: true });\n useEventListener(el, \"mouseleave\", () => toggle(false), { passive: true });\n return isHovered;\n}\n\nconst vElementHover = {\n [directiveHooks.mounted](el, binding) {\n if (typeof binding.value === \"function\") {\n const isHovered = useElementHover(el);\n watch(isHovered, (v) => binding.value(v));\n }\n }\n};\n\nconst UseElementSize = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseElementSize\",\n props: [\"width\", \"height\", \"box\", \"as\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive(useElementSize$1(target, { width: props.width, height: props.height }, { box: props.box }));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nfunction useResizeObserver(target, callback, options = {}) {\n const { window = defaultWindow, ...observerOptions } = options;\n let observer;\n const isSupported = useSupported(() => window && \"ResizeObserver\" in window);\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const targets = computed(() => Array.isArray(target) ? target.map((el) => unrefElement(el)) : [unrefElement(target)]);\n const stopWatch = watch(\n targets,\n (els) => {\n cleanup();\n if (isSupported.value && window) {\n observer = new ResizeObserver(callback);\n for (const _el of els)\n _el && observer.observe(_el, observerOptions);\n }\n },\n { immediate: true, flush: \"post\" }\n );\n const stop = () => {\n cleanup();\n stopWatch();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop\n };\n}\n\nfunction useElementSize(target, initialSize = { width: 0, height: 0 }, options = {}) {\n const { window = defaultWindow, box = \"content-box\" } = options;\n const isSVG = computed(() => {\n var _a, _b;\n return (_b = (_a = unrefElement(target)) == null ? void 0 : _a.namespaceURI) == null ? void 0 : _b.includes(\"svg\");\n });\n const width = ref(initialSize.width);\n const height = ref(initialSize.height);\n const { stop: stop1 } = useResizeObserver(\n target,\n ([entry]) => {\n const boxSize = box === \"border-box\" ? entry.borderBoxSize : box === \"content-box\" ? entry.contentBoxSize : entry.devicePixelContentBoxSize;\n if (window && isSVG.value) {\n const $elem = unrefElement(target);\n if ($elem) {\n const rect = $elem.getBoundingClientRect();\n width.value = rect.width;\n height.value = rect.height;\n }\n } else {\n if (boxSize) {\n const formatBoxSize = Array.isArray(boxSize) ? boxSize : [boxSize];\n width.value = formatBoxSize.reduce((acc, { inlineSize }) => acc + inlineSize, 0);\n height.value = formatBoxSize.reduce((acc, { blockSize }) => acc + blockSize, 0);\n } else {\n width.value = entry.contentRect.width;\n height.value = entry.contentRect.height;\n }\n }\n },\n options\n );\n tryOnMounted(() => {\n const ele = unrefElement(target);\n if (ele) {\n width.value = \"offsetWidth\" in ele ? ele.offsetWidth : initialSize.width;\n height.value = \"offsetHeight\" in ele ? ele.offsetHeight : initialSize.height;\n }\n });\n const stop2 = watch(\n () => unrefElement(target),\n (ele) => {\n width.value = ele ? initialSize.width : 0;\n height.value = ele ? initialSize.height : 0;\n }\n );\n function stop() {\n stop1();\n stop2();\n }\n return {\n width,\n height,\n stop\n };\n}\n\nconst vElementSize = {\n [directiveHooks.mounted](el, binding) {\n var _a;\n const handler = typeof binding.value === \"function\" ? binding.value : (_a = binding.value) == null ? void 0 : _a[0];\n const options = typeof binding.value === \"function\" ? [] : binding.value.slice(1);\n const { width, height } = useElementSize(el, ...options);\n watch([width, height], ([width2, height2]) => handler({ width: width2, height: height2 }));\n }\n};\n\nconst UseElementVisibility = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseElementVisibility\",\n props: [\"as\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive({\n isVisible: useElementVisibility$1(target)\n });\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nfunction useIntersectionObserver(target, callback, options = {}) {\n const {\n root,\n rootMargin = \"0px\",\n threshold = 0.1,\n window = defaultWindow,\n immediate = true\n } = options;\n const isSupported = useSupported(() => window && \"IntersectionObserver\" in window);\n const targets = computed(() => {\n const _target = toValue(target);\n return (Array.isArray(_target) ? _target : [_target]).map(unrefElement).filter(notNullish);\n });\n let cleanup = noop;\n const isActive = ref(immediate);\n const stopWatch = isSupported.value ? watch(\n () => [targets.value, unrefElement(root), isActive.value],\n ([targets2, root2]) => {\n cleanup();\n if (!isActive.value)\n return;\n if (!targets2.length)\n return;\n const observer = new IntersectionObserver(\n callback,\n {\n root: unrefElement(root2),\n rootMargin,\n threshold\n }\n );\n targets2.forEach((el) => el && observer.observe(el));\n cleanup = () => {\n observer.disconnect();\n cleanup = noop;\n };\n },\n { immediate, flush: \"post\" }\n ) : noop;\n const stop = () => {\n cleanup();\n stopWatch();\n isActive.value = false;\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n isActive,\n pause() {\n cleanup();\n isActive.value = false;\n },\n resume() {\n isActive.value = true;\n },\n stop\n };\n}\n\nfunction useElementVisibility(element, options = {}) {\n const { window = defaultWindow, scrollTarget, threshold = 0 } = options;\n const elementIsVisible = ref(false);\n useIntersectionObserver(\n element,\n (intersectionObserverEntries) => {\n let isIntersecting = elementIsVisible.value;\n let latestTime = 0;\n for (const entry of intersectionObserverEntries) {\n if (entry.time >= latestTime) {\n latestTime = entry.time;\n isIntersecting = entry.isIntersecting;\n }\n }\n elementIsVisible.value = isIntersecting;\n },\n {\n root: scrollTarget,\n window,\n threshold\n }\n );\n return elementIsVisible;\n}\n\nconst vElementVisibility = {\n [directiveHooks.mounted](el, binding) {\n if (typeof binding.value === \"function\") {\n const handler = binding.value;\n const isVisible = useElementVisibility(el);\n watch(isVisible, (v) => handler(v), { immediate: true });\n } else {\n const [handler, options] = binding.value;\n const isVisible = useElementVisibility(el, options);\n watch(isVisible, (v) => handler(v), { immediate: true });\n }\n }\n};\n\nconst UseEyeDropper = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseEyeDropper\",\n props: {\n sRGBHex: String\n },\n setup(props, { slots }) {\n const data = reactive(useEyeDropper());\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseFullscreen = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseFullscreen\",\n props: [\"as\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive(useFullscreen(target));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nconst UseGeolocation = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseGeolocation\",\n props: [\"enableHighAccuracy\", \"maximumAge\", \"timeout\", \"navigator\"],\n setup(props, { slots }) {\n const data = reactive(useGeolocation(props));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseIdle = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseIdle\",\n props: [\"timeout\", \"events\", \"listenForVisibilityChange\", \"initialState\"],\n setup(props, { slots }) {\n const data = reactive(useIdle(props.timeout, props));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nfunction useAsyncState(promise, initialState, options) {\n const {\n immediate = true,\n delay = 0,\n onError = noop,\n onSuccess = noop,\n resetOnExecute = true,\n shallow = true,\n throwError\n } = options != null ? options : {};\n const state = shallow ? shallowRef(initialState) : ref(initialState);\n const isReady = ref(false);\n const isLoading = ref(false);\n const error = shallowRef(void 0);\n async function execute(delay2 = 0, ...args) {\n if (resetOnExecute)\n state.value = initialState;\n error.value = void 0;\n isReady.value = false;\n isLoading.value = true;\n if (delay2 > 0)\n await promiseTimeout(delay2);\n const _promise = typeof promise === \"function\" ? promise(...args) : promise;\n try {\n const data = await _promise;\n state.value = data;\n isReady.value = true;\n onSuccess(data);\n } catch (e) {\n error.value = e;\n onError(e);\n if (throwError)\n throw e;\n } finally {\n isLoading.value = false;\n }\n return state.value;\n }\n if (immediate)\n execute(delay);\n const shell = {\n state,\n isReady,\n isLoading,\n error,\n execute\n };\n function waitUntilIsLoaded() {\n return new Promise((resolve, reject) => {\n until(isLoading).toBe(false).then(() => resolve(shell)).catch(reject);\n });\n }\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilIsLoaded().then(onFulfilled, onRejected);\n }\n };\n}\n\nasync function loadImage(options) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n const { src, srcset, sizes, class: clazz, loading, crossorigin, referrerPolicy } = options;\n img.src = src;\n if (srcset)\n img.srcset = srcset;\n if (sizes)\n img.sizes = sizes;\n if (clazz)\n img.className = clazz;\n if (loading)\n img.loading = loading;\n if (crossorigin)\n img.crossOrigin = crossorigin;\n if (referrerPolicy)\n img.referrerPolicy = referrerPolicy;\n img.onload = () => resolve(img);\n img.onerror = reject;\n });\n}\nfunction useImage(options, asyncStateOptions = {}) {\n const state = useAsyncState(\n () => loadImage(toValue(options)),\n void 0,\n {\n resetOnExecute: true,\n ...asyncStateOptions\n }\n );\n watch(\n () => toValue(options),\n () => state.execute(asyncStateOptions.delay),\n { deep: true }\n );\n return state;\n}\n\nconst UseImage = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseImage\",\n props: [\n \"src\",\n \"srcset\",\n \"sizes\",\n \"as\",\n \"alt\",\n \"class\",\n \"loading\",\n \"crossorigin\",\n \"referrerPolicy\"\n ],\n setup(props, { slots }) {\n const data = reactive(useImage(props));\n return () => {\n if (data.isLoading && slots.loading)\n return slots.loading(data);\n else if (data.error && slots.error)\n return slots.error(data.error);\n if (slots.default)\n return slots.default(data);\n return h(props.as || \"img\", props);\n };\n }\n});\n\nconst ARRIVED_STATE_THRESHOLD_PIXELS = 1;\nfunction useScroll(element, options = {}) {\n const {\n throttle = 0,\n idle = 200,\n onStop = noop,\n onScroll = noop,\n offset = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n },\n eventListenerOptions = {\n capture: false,\n passive: true\n },\n behavior = \"auto\",\n window = defaultWindow,\n onError = (e) => {\n console.error(e);\n }\n } = options;\n const internalX = ref(0);\n const internalY = ref(0);\n const x = computed({\n get() {\n return internalX.value;\n },\n set(x2) {\n scrollTo(x2, void 0);\n }\n });\n const y = computed({\n get() {\n return internalY.value;\n },\n set(y2) {\n scrollTo(void 0, y2);\n }\n });\n function scrollTo(_x, _y) {\n var _a, _b, _c, _d;\n if (!window)\n return;\n const _element = toValue(element);\n if (!_element)\n return;\n (_c = _element instanceof Document ? window.document.body : _element) == null ? void 0 : _c.scrollTo({\n top: (_a = toValue(_y)) != null ? _a : y.value,\n left: (_b = toValue(_x)) != null ? _b : x.value,\n behavior: toValue(behavior)\n });\n const scrollContainer = ((_d = _element == null ? void 0 : _element.document) == null ? void 0 : _d.documentElement) || (_element == null ? void 0 : _element.documentElement) || _element;\n if (x != null)\n internalX.value = scrollContainer.scrollLeft;\n if (y != null)\n internalY.value = scrollContainer.scrollTop;\n }\n const isScrolling = ref(false);\n const arrivedState = reactive({\n left: true,\n right: false,\n top: true,\n bottom: false\n });\n const directions = reactive({\n left: false,\n right: false,\n top: false,\n bottom: false\n });\n const onScrollEnd = (e) => {\n if (!isScrolling.value)\n return;\n isScrolling.value = false;\n directions.left = false;\n directions.right = false;\n directions.top = false;\n directions.bottom = false;\n onStop(e);\n };\n const onScrollEndDebounced = useDebounceFn(onScrollEnd, throttle + idle);\n const setArrivedState = (target) => {\n var _a;\n if (!window)\n return;\n const el = ((_a = target == null ? void 0 : target.document) == null ? void 0 : _a.documentElement) || (target == null ? void 0 : target.documentElement) || unrefElement(target);\n const { display, flexDirection } = getComputedStyle(el);\n const scrollLeft = el.scrollLeft;\n directions.left = scrollLeft < internalX.value;\n directions.right = scrollLeft > internalX.value;\n const left = Math.abs(scrollLeft) <= (offset.left || 0);\n const right = Math.abs(scrollLeft) + el.clientWidth >= el.scrollWidth - (offset.right || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n if (display === \"flex\" && flexDirection === \"row-reverse\") {\n arrivedState.left = right;\n arrivedState.right = left;\n } else {\n arrivedState.left = left;\n arrivedState.right = right;\n }\n internalX.value = scrollLeft;\n let scrollTop = el.scrollTop;\n if (target === window.document && !scrollTop)\n scrollTop = window.document.body.scrollTop;\n directions.top = scrollTop < internalY.value;\n directions.bottom = scrollTop > internalY.value;\n const top = Math.abs(scrollTop) <= (offset.top || 0);\n const bottom = Math.abs(scrollTop) + el.clientHeight >= el.scrollHeight - (offset.bottom || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n if (display === \"flex\" && flexDirection === \"column-reverse\") {\n arrivedState.top = bottom;\n arrivedState.bottom = top;\n } else {\n arrivedState.top = top;\n arrivedState.bottom = bottom;\n }\n internalY.value = scrollTop;\n };\n const onScrollHandler = (e) => {\n var _a;\n if (!window)\n return;\n const eventTarget = (_a = e.target.documentElement) != null ? _a : e.target;\n setArrivedState(eventTarget);\n isScrolling.value = true;\n onScrollEndDebounced(e);\n onScroll(e);\n };\n useEventListener(\n element,\n \"scroll\",\n throttle ? useThrottleFn(onScrollHandler, throttle, true, false) : onScrollHandler,\n eventListenerOptions\n );\n tryOnMounted(() => {\n try {\n const _element = toValue(element);\n if (!_element)\n return;\n setArrivedState(_element);\n } catch (e) {\n onError(e);\n }\n });\n useEventListener(\n element,\n \"scrollend\",\n onScrollEnd,\n eventListenerOptions\n );\n return {\n x,\n y,\n isScrolling,\n arrivedState,\n directions,\n measure() {\n const _element = toValue(element);\n if (window && _element)\n setArrivedState(_element);\n }\n };\n}\n\nfunction resolveElement(el) {\n if (typeof Window !== \"undefined\" && el instanceof Window)\n return el.document.documentElement;\n if (typeof Document !== \"undefined\" && el instanceof Document)\n return el.documentElement;\n return el;\n}\n\nfunction useInfiniteScroll(element, onLoadMore, options = {}) {\n var _a;\n const {\n direction = \"bottom\",\n interval = 100,\n canLoadMore = () => true\n } = options;\n const state = reactive(useScroll(\n element,\n {\n ...options,\n offset: {\n [direction]: (_a = options.distance) != null ? _a : 0,\n ...options.offset\n }\n }\n ));\n const promise = ref();\n const isLoading = computed(() => !!promise.value);\n const observedElement = computed(() => {\n return resolveElement(toValue(element));\n });\n const isElementVisible = useElementVisibility(observedElement);\n function checkAndLoad() {\n state.measure();\n if (!observedElement.value || !isElementVisible.value || !canLoadMore(observedElement.value))\n return;\n const { scrollHeight, clientHeight, scrollWidth, clientWidth } = observedElement.value;\n const isNarrower = direction === \"bottom\" || direction === \"top\" ? scrollHeight <= clientHeight : scrollWidth <= clientWidth;\n if (state.arrivedState[direction] || isNarrower) {\n if (!promise.value) {\n promise.value = Promise.all([\n onLoadMore(state),\n new Promise((resolve) => setTimeout(resolve, interval))\n ]).finally(() => {\n promise.value = null;\n nextTick(() => checkAndLoad());\n });\n }\n }\n }\n watch(\n () => [state.arrivedState[direction], isElementVisible.value],\n checkAndLoad,\n { immediate: true }\n );\n return {\n isLoading\n };\n}\n\nconst vInfiniteScroll = {\n [directiveHooks.mounted](el, binding) {\n if (typeof binding.value === \"function\")\n useInfiniteScroll(el, binding.value);\n else\n useInfiniteScroll(el, ...binding.value);\n }\n};\n\nconst vIntersectionObserver = {\n [directiveHooks.mounted](el, binding) {\n if (typeof binding.value === \"function\")\n useIntersectionObserver(el, binding.value);\n else\n useIntersectionObserver(el, ...binding.value);\n }\n};\n\nconst UseMouse = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseMouse\",\n props: [\"touch\", \"resetOnTouchEnds\", \"initialValue\"],\n setup(props, { slots }) {\n const data = reactive(useMouse(props));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseMouseInElement = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseMouseElement\",\n props: [\"handleOutside\", \"as\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive(useMouseInElement(target, props));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nconst UseMousePressed = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseMousePressed\",\n props: [\"touch\", \"initialValue\", \"as\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive(useMousePressed({ ...props, target }));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nconst UseNetwork = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseNetwork\",\n setup(props, { slots }) {\n const data = reactive(useNetwork());\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseNow = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseNow\",\n props: [\"interval\"],\n setup(props, { slots }) {\n const data = reactive(useNow({ ...props, controls: true }));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseObjectUrl = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseObjectUrl\",\n props: [\n \"object\"\n ],\n setup(props, { slots }) {\n const object = toRef(props, \"object\");\n const url = useObjectUrl(object);\n return () => {\n if (slots.default && url.value)\n return slots.default(url);\n };\n }\n});\n\nconst UseOffsetPagination = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseOffsetPagination\",\n props: [\n \"total\",\n \"page\",\n \"pageSize\",\n \"onPageChange\",\n \"onPageSizeChange\",\n \"onPageCountChange\"\n ],\n emits: [\n \"page-change\",\n \"page-size-change\",\n \"page-count-change\"\n ],\n setup(props, { slots, emit }) {\n const data = reactive(useOffsetPagination({\n ...props,\n onPageChange(...args) {\n var _a;\n (_a = props.onPageChange) == null ? void 0 : _a.call(props, ...args);\n emit(\"page-change\", ...args);\n },\n onPageSizeChange(...args) {\n var _a;\n (_a = props.onPageSizeChange) == null ? void 0 : _a.call(props, ...args);\n emit(\"page-size-change\", ...args);\n },\n onPageCountChange(...args) {\n var _a;\n (_a = props.onPageCountChange) == null ? void 0 : _a.call(props, ...args);\n emit(\"page-count-change\", ...args);\n }\n }));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseOnline = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseOnline\",\n setup(props, { slots }) {\n const data = reactive({\n isOnline: useOnline()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UsePageLeave = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePageLeave\",\n setup(props, { slots }) {\n const data = reactive({\n isLeft: usePageLeave()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UsePointer = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePointer\",\n props: [\n \"pointerTypes\",\n \"initialValue\",\n \"target\"\n ],\n setup(props, { slots }) {\n const el = ref(null);\n const data = reactive(usePointer({\n ...props,\n target: props.target === \"self\" ? el : defaultWindow\n }));\n return () => {\n if (slots.default)\n return slots.default(data, { ref: el });\n };\n }\n});\n\nconst UsePointerLock = /* #__PURE__ */ defineComponent({\n name: \"UsePointerLock\",\n props: [\"as\"],\n setup(props, { slots }) {\n const target = ref();\n const data = reactive(usePointerLock(target));\n return () => {\n if (slots.default)\n return h(props.as || \"div\", { ref: target }, slots.default(data));\n };\n }\n});\n\nconst UsePreferredColorScheme = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePreferredColorScheme\",\n setup(props, { slots }) {\n const data = reactive({\n colorScheme: usePreferredColorScheme()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UsePreferredContrast = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePreferredContrast\",\n setup(props, { slots }) {\n const data = reactive({\n contrast: usePreferredContrast()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UsePreferredDark = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePreferredDark\",\n setup(props, { slots }) {\n const data = reactive({\n prefersDark: usePreferredDark$1()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UsePreferredLanguages = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePreferredLanguages\",\n setup(props, { slots }) {\n const data = reactive({\n languages: usePreferredLanguages()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UsePreferredReducedMotion = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UsePreferredReducedMotion\",\n setup(props, { slots }) {\n const data = reactive({\n motion: usePreferredReducedMotion()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nfunction useMutationObserver(target, callback, options = {}) {\n const { window = defaultWindow, ...mutationOptions } = options;\n let observer;\n const isSupported = useSupported(() => window && \"MutationObserver\" in window);\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const targets = computed(() => {\n const value = toValue(target);\n const items = (Array.isArray(value) ? value : [value]).map(unrefElement).filter(notNullish);\n return new Set(items);\n });\n const stopWatch = watch(\n () => targets.value,\n (targets2) => {\n cleanup();\n if (isSupported.value && targets2.size) {\n observer = new MutationObserver(callback);\n targets2.forEach((el) => observer.observe(el, mutationOptions));\n }\n },\n { immediate: true, flush: \"post\" }\n );\n const takeRecords = () => {\n return observer == null ? void 0 : observer.takeRecords();\n };\n const stop = () => {\n cleanup();\n stopWatch();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop,\n takeRecords\n };\n}\n\nfunction useCssVar(prop, target, options = {}) {\n const { window = defaultWindow, initialValue = \"\", observe = false } = options;\n const variable = ref(initialValue);\n const elRef = computed(() => {\n var _a;\n return unrefElement(target) || ((_a = window == null ? void 0 : window.document) == null ? void 0 : _a.documentElement);\n });\n function updateCssVar() {\n var _a;\n const key = toValue(prop);\n const el = toValue(elRef);\n if (el && window) {\n const value = (_a = window.getComputedStyle(el).getPropertyValue(key)) == null ? void 0 : _a.trim();\n variable.value = value || initialValue;\n }\n }\n if (observe) {\n useMutationObserver(elRef, updateCssVar, {\n attributeFilter: [\"style\", \"class\"],\n window\n });\n }\n watch(\n [elRef, () => toValue(prop)],\n updateCssVar,\n { immediate: true }\n );\n watch(\n variable,\n (val) => {\n var _a;\n if ((_a = elRef.value) == null ? void 0 : _a.style)\n elRef.value.style.setProperty(toValue(prop), val);\n }\n );\n return variable;\n}\n\nconst topVarName = \"--vueuse-safe-area-top\";\nconst rightVarName = \"--vueuse-safe-area-right\";\nconst bottomVarName = \"--vueuse-safe-area-bottom\";\nconst leftVarName = \"--vueuse-safe-area-left\";\nfunction useScreenSafeArea() {\n const top = ref(\"\");\n const right = ref(\"\");\n const bottom = ref(\"\");\n const left = ref(\"\");\n if (isClient) {\n const topCssVar = useCssVar(topVarName);\n const rightCssVar = useCssVar(rightVarName);\n const bottomCssVar = useCssVar(bottomVarName);\n const leftCssVar = useCssVar(leftVarName);\n topCssVar.value = \"env(safe-area-inset-top, 0px)\";\n rightCssVar.value = \"env(safe-area-inset-right, 0px)\";\n bottomCssVar.value = \"env(safe-area-inset-bottom, 0px)\";\n leftCssVar.value = \"env(safe-area-inset-left, 0px)\";\n update();\n useEventListener(\"resize\", useDebounceFn(update));\n }\n function update() {\n top.value = getValue(topVarName);\n right.value = getValue(rightVarName);\n bottom.value = getValue(bottomVarName);\n left.value = getValue(leftVarName);\n }\n return {\n top,\n right,\n bottom,\n left,\n update\n };\n}\nfunction getValue(position) {\n return getComputedStyle(document.documentElement).getPropertyValue(position);\n}\n\nconst UseScreenSafeArea = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseScreenSafeArea\",\n props: {\n top: Boolean,\n right: Boolean,\n bottom: Boolean,\n left: Boolean\n },\n setup(props, { slots }) {\n const {\n top,\n right,\n bottom,\n left\n } = useScreenSafeArea();\n return () => {\n if (slots.default) {\n return h(\"div\", {\n style: {\n paddingTop: props.top ? top.value : \"\",\n paddingRight: props.right ? right.value : \"\",\n paddingBottom: props.bottom ? bottom.value : \"\",\n paddingLeft: props.left ? left.value : \"\",\n boxSizing: \"border-box\",\n maxHeight: \"100vh\",\n maxWidth: \"100vw\",\n overflow: \"auto\"\n }\n }, slots.default());\n }\n };\n }\n});\n\nconst vScroll = {\n [directiveHooks.mounted](el, binding) {\n if (typeof binding.value === \"function\") {\n const handler = binding.value;\n const state = useScroll(el, {\n onScroll() {\n handler(state);\n },\n onStop() {\n handler(state);\n }\n });\n } else {\n const [handler, options] = binding.value;\n const state = useScroll(el, {\n ...options,\n onScroll(e) {\n var _a;\n (_a = options.onScroll) == null ? void 0 : _a.call(options, e);\n handler(state);\n },\n onStop(e) {\n var _a;\n (_a = options.onStop) == null ? void 0 : _a.call(options, e);\n handler(state);\n }\n });\n }\n }\n};\n\nfunction checkOverflowScroll(ele) {\n const style = window.getComputedStyle(ele);\n if (style.overflowX === \"scroll\" || style.overflowY === \"scroll\" || style.overflowX === \"auto\" && ele.clientWidth < ele.scrollWidth || style.overflowY === \"auto\" && ele.clientHeight < ele.scrollHeight) {\n return true;\n } else {\n const parent = ele.parentNode;\n if (!parent || parent.tagName === \"BODY\")\n return false;\n return checkOverflowScroll(parent);\n }\n}\nfunction preventDefault(rawEvent) {\n const e = rawEvent || window.event;\n const _target = e.target;\n if (checkOverflowScroll(_target))\n return false;\n if (e.touches.length > 1)\n return true;\n if (e.preventDefault)\n e.preventDefault();\n return false;\n}\nconst elInitialOverflow = /* @__PURE__ */ new WeakMap();\nfunction useScrollLock(element, initialState = false) {\n const isLocked = ref(initialState);\n let stopTouchMoveListener = null;\n let initialOverflow = \"\";\n watch(toRef(element), (el) => {\n const target = resolveElement(toValue(el));\n if (target) {\n const ele = target;\n if (!elInitialOverflow.get(ele))\n elInitialOverflow.set(ele, ele.style.overflow);\n if (ele.style.overflow !== \"hidden\")\n initialOverflow = ele.style.overflow;\n if (ele.style.overflow === \"hidden\")\n return isLocked.value = true;\n if (isLocked.value)\n return ele.style.overflow = \"hidden\";\n }\n }, {\n immediate: true\n });\n const lock = () => {\n const el = resolveElement(toValue(element));\n if (!el || isLocked.value)\n return;\n if (isIOS) {\n stopTouchMoveListener = useEventListener(\n el,\n \"touchmove\",\n (e) => {\n preventDefault(e);\n },\n { passive: false }\n );\n }\n el.style.overflow = \"hidden\";\n isLocked.value = true;\n };\n const unlock = () => {\n const el = resolveElement(toValue(element));\n if (!el || !isLocked.value)\n return;\n isIOS && (stopTouchMoveListener == null ? void 0 : stopTouchMoveListener());\n el.style.overflow = initialOverflow;\n elInitialOverflow.delete(el);\n isLocked.value = false;\n };\n tryOnScopeDispose(unlock);\n return computed({\n get() {\n return isLocked.value;\n },\n set(v) {\n if (v)\n lock();\n else unlock();\n }\n });\n}\n\nfunction onScrollLock() {\n let isMounted = false;\n const state = ref(false);\n return (el, binding) => {\n state.value = binding.value;\n if (isMounted)\n return;\n isMounted = true;\n const isLocked = useScrollLock(el, binding.value);\n watch(state, (v) => isLocked.value = v);\n };\n}\nconst vScrollLock = onScrollLock();\n\nconst UseTimeAgo = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseTimeAgo\",\n props: [\"time\", \"updateInterval\", \"max\", \"fullDateFormatter\", \"messages\", \"showSecond\"],\n setup(props, { slots }) {\n const data = reactive(useTimeAgo(() => props.time, { ...props, controls: true }));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseTimestamp = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseTimestamp\",\n props: [\"immediate\", \"interval\", \"offset\"],\n setup(props, { slots }) {\n const data = reactive(useTimestamp({ ...props, controls: true }));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseVirtualList = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseVirtualList\",\n props: [\n \"list\",\n \"options\",\n \"height\"\n ],\n setup(props, { slots, expose }) {\n const { list: listRef } = toRefs(props);\n const { list, containerProps, wrapperProps, scrollTo } = useVirtualList(listRef, props.options);\n expose({ scrollTo });\n if (containerProps.style && typeof containerProps.style === \"object\" && !Array.isArray(containerProps.style))\n containerProps.style.height = props.height || \"300px\";\n return () => h(\"div\", { ...containerProps }, [\n h(\"div\", { ...wrapperProps.value }, list.value.map((item) => h(\"div\", { style: { overflow: \"hidden\", height: item.height } }, slots.default ? slots.default(item) : \"Please set content!\")))\n ]);\n }\n});\n\nconst UseWindowFocus = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseWindowFocus\",\n setup(props, { slots }) {\n const data = reactive({\n focused: useWindowFocus()\n });\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nconst UseWindowSize = /* @__PURE__ */ /* #__PURE__ */ defineComponent({\n name: \"UseWindowSize\",\n props: [\"initialWidth\", \"initialHeight\"],\n setup(props, { slots }) {\n const data = reactive(useWindowSize(props));\n return () => {\n if (slots.default)\n return slots.default(data);\n };\n }\n});\n\nexport { OnClickOutside, OnLongPress, UseActiveElement, UseBattery, UseBrowserLocation, UseClipboard, UseColorMode, UseDark, UseDeviceMotion, UseDeviceOrientation, UseDevicePixelRatio, UseDevicesList, UseDocumentVisibility, UseDraggable, UseElementBounding, UseElementSize, UseElementVisibility, UseEyeDropper, UseFullscreen, UseGeolocation, UseIdle, UseImage, UseMouse, UseMouseInElement, UseMousePressed, UseNetwork, UseNow, UseObjectUrl, UseOffsetPagination, UseOnline, UsePageLeave, UsePointer, UsePointerLock, UsePreferredColorScheme, UsePreferredContrast, UsePreferredDark, UsePreferredLanguages, UsePreferredReducedMotion, UseScreenSafeArea, UseTimeAgo, UseTimestamp, UseVirtualList, UseWindowFocus, UseWindowSize, vOnClickOutside as VOnClickOutside, vOnLongPress as VOnLongPress, vElementHover, vElementSize, vElementVisibility, vInfiniteScroll, vIntersectionObserver, vOnClickOutside, vOnKeyStroke, vOnLongPress, vScroll, vScrollLock };\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('table',{staticClass:\"user-list\"},[_vm._t(\"before\"),_vm._v(\" \"),_c('thead',{ref:\"thead\",staticClass:\"user-list__header\",attrs:{\"role\":\"rowgroup\"}},[_vm._t(\"header\")],2),_vm._v(\" \"),_c('tbody',{staticClass:\"user-list__body\",style:(_vm.tbodyStyle)},_vm._l((_vm.renderedItems),function(item,i){return _c(_vm.dataComponent,_vm._b({key:item[_vm.dataKey],tag:\"component\",attrs:{\"user\":item,\"visible\":(i >= _vm.bufferItems || _vm.index <= _vm.bufferItems) && (i < _vm.shownItems - _vm.bufferItems)}},'component',_vm.extraProps,false))}),1),_vm._v(\" \"),_c('tfoot',{directives:[{name:\"element-visibility\",rawName:\"v-element-visibility\",value:(_vm.handleFooterVisibility),expression:\"handleFooterVisibility\"}],ref:\"tfoot\",staticClass:\"user-list__footer\",attrs:{\"role\":\"rowgroup\"}},[_vm._t(\"footer\")],2)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=script&lang=ts\"","\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!./VirtualList.vue?vue&type=style&index=0&id=de721376&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./VirtualList.vue?vue&type=style&index=0&id=de721376&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./VirtualList.vue?vue&type=template&id=de721376&scoped=true\"\nimport script from \"./VirtualList.vue?vue&type=script&lang=ts\"\nexport * from \"./VirtualList.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VirtualList.vue?vue&type=style&index=0&id=de721376&prod&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 \"de721376\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcModal',_vm._g({staticClass:\"modal\",attrs:{\"size\":\"small\"}},_vm.$listeners),[_c('form',{staticClass:\"modal__form\",attrs:{\"data-test\":\"form\",\"disabled\":_vm.loading.all},on:{\"submit\":function($event){$event.preventDefault();return _vm.createUser.apply(null, arguments)}}},[_c('h2',[_vm._v(_vm._s(_vm.t('settings', 'New user')))]),_vm._v(\" \"),_c('NcTextField',{ref:\"username\",staticClass:\"modal__item\",attrs:{\"data-test\":\"username\",\"value\":_vm.newUser.id,\"disabled\":_vm.settings.newUserGenerateUserID,\"label\":_vm.usernameLabel,\"autocapitalize\":\"none\",\"autocomplete\":\"off\",\"spellcheck\":\"false\",\"pattern\":\"[a-zA-Z0-9 _\\\\.@\\\\-']+\",\"required\":\"\"},on:{\"update:value\":function($event){return _vm.$set(_vm.newUser, \"id\", $event)}}}),_vm._v(\" \"),_c('NcTextField',{staticClass:\"modal__item\",attrs:{\"data-test\":\"displayName\",\"value\":_vm.newUser.displayName,\"label\":_vm.t('settings', 'Display name'),\"autocapitalize\":\"none\",\"autocomplete\":\"off\",\"spellcheck\":\"false\"},on:{\"update:value\":function($event){return _vm.$set(_vm.newUser, \"displayName\", $event)}}}),_vm._v(\" \"),(!_vm.settings.newUserRequireEmail)?_c('span',{staticClass:\"modal__hint\",attrs:{\"id\":\"password-email-hint\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Either password or email is required'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcPasswordField',{ref:\"password\",staticClass:\"modal__item\",attrs:{\"data-test\":\"password\",\"value\":_vm.newUser.password,\"minlength\":_vm.minPasswordLength,\"maxlength\":469,\"aria-describedby\":\"password-email-hint\",\"label\":_vm.newUser.mailAddress === '' ? _vm.t('settings', 'Password (required)') : _vm.t('settings', 'Password'),\"autocapitalize\":\"none\",\"autocomplete\":\"new-password\",\"spellcheck\":\"false\",\"required\":_vm.newUser.mailAddress === ''},on:{\"update:value\":function($event){return _vm.$set(_vm.newUser, \"password\", $event)}}}),_vm._v(\" \"),_c('NcTextField',{staticClass:\"modal__item\",attrs:{\"data-test\":\"email\",\"type\":\"email\",\"value\":_vm.newUser.mailAddress,\"aria-describedby\":\"password-email-hint\",\"label\":_vm.newUser.password === '' || _vm.settings.newUserRequireEmail ? _vm.t('settings', 'Email (required)') : _vm.t('settings', 'Email'),\"autocapitalize\":\"none\",\"autocomplete\":\"off\",\"spellcheck\":\"false\",\"required\":_vm.newUser.password === '' || _vm.settings.newUserRequireEmail},on:{\"update:value\":function($event){return _vm.$set(_vm.newUser, \"mailAddress\", $event)}}}),_vm._v(\" \"),_c('div',{staticClass:\"modal__item\"},[_c('label',{staticClass:\"modal__label\",attrs:{\"for\":\"new-user-groups\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(!_vm.settings.isAdmin ? _vm.t('settings', 'Groups (required)') : _vm.t('settings', 'Groups'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"modal__select\",attrs:{\"input-id\":\"new-user-groups\",\"placeholder\":_vm.t('settings', 'Set user groups'),\"disabled\":_vm.loading.groups || _vm.loading.all,\"options\":_vm.canAddGroups,\"value\":_vm.newUser.groups,\"label\":\"name\",\"close-on-select\":false,\"multiple\":true,\"taggable\":true,\"required\":!_vm.settings.isAdmin},on:{\"input\":_vm.handleGroupInput,\"option:created\":_vm.createGroup}})],1),_vm._v(\" \"),(_vm.subAdminsGroups.length > 0)?_c('div',{staticClass:\"modal__item\"},[_c('label',{staticClass:\"modal__label\",attrs:{\"for\":\"new-user-sub-admin\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Administered groups'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"modal__select\",attrs:{\"input-id\":\"new-user-sub-admin\",\"placeholder\":_vm.t('settings', 'Set user as admin for …'),\"options\":_vm.subAdminsGroups,\"close-on-select\":false,\"multiple\":true,\"label\":\"name\"},model:{value:(_vm.newUser.subAdminsGroups),callback:function ($$v) {_vm.$set(_vm.newUser, \"subAdminsGroups\", $$v)},expression:\"newUser.subAdminsGroups\"}})],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"modal__item\"},[_c('label',{staticClass:\"modal__label\",attrs:{\"for\":\"new-user-quota\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Quota'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"modal__select\",attrs:{\"input-id\":\"new-user-quota\",\"placeholder\":_vm.t('settings', 'Set user quota'),\"options\":_vm.quotaOptions,\"clearable\":false,\"taggable\":true,\"create-option\":_vm.validateQuota},model:{value:(_vm.newUser.quota),callback:function ($$v) {_vm.$set(_vm.newUser, \"quota\", $$v)},expression:\"newUser.quota\"}})],1),_vm._v(\" \"),(_vm.showConfig.showLanguages)?_c('div',{staticClass:\"modal__item\"},[_c('label',{staticClass:\"modal__label\",attrs:{\"for\":\"new-user-language\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Language'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"modal__select\",attrs:{\"input-id\":\"new-user-language\",\"placeholder\":_vm.t('settings', 'Set default language'),\"clearable\":false,\"selectable\":option => !option.languages,\"filter-by\":_vm.languageFilterBy,\"options\":_vm.languages,\"label\":\"name\"},model:{value:(_vm.newUser.language),callback:function ($$v) {_vm.$set(_vm.newUser, \"language\", $$v)},expression:\"newUser.language\"}})],1):_vm._e(),_vm._v(\" \"),_c('div',{class:['modal__item managers', { 'icon-loading-small': _vm.loading.manager }]},[_c('label',{staticClass:\"modal__label\",attrs:{\"for\":\"new-user-manager\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Manager'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"modal__select\",attrs:{\"input-id\":\"new-user-manager\",\"placeholder\":_vm.managerLabel,\"options\":_vm.possibleManagers,\"user-select\":true,\"label\":\"displayname\"},on:{\"search\":_vm.searchUserManager},model:{value:(_vm.newUser.manager),callback:function ($$v) {_vm.$set(_vm.newUser, \"manager\", $$v)},expression:\"newUser.manager\"}})],1),_vm._v(\" \"),_c('NcButton',{staticClass:\"modal__submit\",attrs:{\"data-test\":\"submit\",\"type\":\"primary\",\"native-type\":\"submit\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Add new user'))+\"\\n\\t\\t\")])],1)])\n}\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!./NewUserModal.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!./NewUserModal.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!./NewUserModal.vue?vue&type=style&index=0&id=2fe7d69f&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./NewUserModal.vue?vue&type=style&index=0&id=2fe7d69f&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./NewUserModal.vue?vue&type=template&id=2fe7d69f&scoped=true\"\nimport script from \"./NewUserModal.vue?vue&type=script&lang=js\"\nexport * from \"./NewUserModal.vue?vue&type=script&lang=js\"\nimport style0 from \"./NewUserModal.vue?vue&type=style&index=0&id=2fe7d69f&prod&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 \"2fe7d69f\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListFooter.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListFooter.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',{staticClass:\"footer\"},[_c('th',{attrs:{\"scope\":\"row\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Total rows summary')))])]),_vm._v(\" \"),_c('td',{staticClass:\"footer__cell footer__cell--loading\"},[(_vm.loading)?_c('NcLoadingIcon',{attrs:{\"title\":_vm.t('settings', 'Loading users …'),\"size\":32}}):_vm._e()],1),_vm._v(\" \"),_c('td',{staticClass:\"footer__cell footer__cell--count footer__cell--multiline\"},[_c('span',{attrs:{\"aria-describedby\":\"user-count-desc\"}},[_vm._v(_vm._s(_vm.userCount))]),_vm._v(\" \"),_c('span',{staticClass:\"hidden-visually\",attrs:{\"id\":\"user-count-desc\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Scroll to load more rows'))+\"\\n\\t\\t\")])])])\n}\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!./UserListFooter.vue?vue&type=style&index=0&id=3ec0b16a&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./UserListFooter.vue?vue&type=style&index=0&id=3ec0b16a&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserListFooter.vue?vue&type=template&id=3ec0b16a&scoped=true\"\nimport script from \"./UserListFooter.vue?vue&type=script&lang=ts\"\nexport * from \"./UserListFooter.vue?vue&type=script&lang=ts\"\nimport style0 from \"./UserListFooter.vue?vue&type=style&index=0&id=3ec0b16a&prod&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 \"3ec0b16a\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListHeader.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListHeader.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',{staticClass:\"header\"},[_c('th',{staticClass:\"header__cell header__cell--avatar\",attrs:{\"data-cy-user-list-header-avatar\":\"\",\"scope\":\"col\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Avatar'))+\"\\n\\t\\t\")])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell header__cell--displayname\",attrs:{\"data-cy-user-list-header-displayname\":\"\",\"scope\":\"col\"}},[_c('strong',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Display name'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('span',{staticClass:\"header__subtitle\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Username'))+\"\\n\\t\\t\")])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell\",class:{ 'header__cell--obfuscated': _vm.hasObfuscated },attrs:{\"data-cy-user-list-header-password\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.passwordLabel))])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell\",attrs:{\"data-cy-user-list-header-email\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Email')))])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell header__cell--large\",attrs:{\"data-cy-user-list-header-groups\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Groups')))])]),_vm._v(\" \"),(_vm.subAdminsGroups.length > 0 && _vm.settings.isAdmin)?_c('th',{staticClass:\"header__cell header__cell--large\",attrs:{\"data-cy-user-list-header-subadmins\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Group admin for')))])]):_vm._e(),_vm._v(\" \"),_c('th',{staticClass:\"header__cell\",attrs:{\"data-cy-user-list-header-quota\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Quota')))])]),_vm._v(\" \"),(_vm.showConfig.showLanguages)?_c('th',{staticClass:\"header__cell header__cell--large\",attrs:{\"data-cy-user-list-header-languages\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Language')))])]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showUserBackend || _vm.showConfig.showStoragePath)?_c('th',{staticClass:\"header__cell header__cell--large\",attrs:{\"data-cy-user-list-header-storage-location\":\"\",\"scope\":\"col\"}},[(_vm.showConfig.showUserBackend)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'User backend'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showStoragePath)?_c('span',{staticClass:\"header__subtitle\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Storage location'))+\"\\n\\t\\t\")]):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showLastLogin)?_c('th',{staticClass:\"header__cell\",attrs:{\"data-cy-user-list-header-last-login\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Last login')))])]):_vm._e(),_vm._v(\" \"),_c('th',{staticClass:\"header__cell header__cell--large header__cell--fill\",attrs:{\"data-cy-user-list-header-manager\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Manager')))])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell header__cell--actions\",attrs:{\"data-cy-user-list-header-actions\":\"\",\"scope\":\"col\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'User actions'))+\"\\n\\t\\t\")])])])\n}\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!./UserListHeader.vue?vue&type=style&index=0&id=69afa821&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./UserListHeader.vue?vue&type=style&index=0&id=69afa821&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserListHeader.vue?vue&type=template&id=69afa821&scoped=true\"\nimport script from \"./UserListHeader.vue?vue&type=script&lang=ts\"\nexport * from \"./UserListHeader.vue?vue&type=script&lang=ts\"\nimport style0 from \"./UserListHeader.vue?vue&type=style&index=0&id=69afa821&prod&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 \"69afa821\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('tr',{staticClass:\"user-list__row\",attrs:{\"data-cy-user-row\":_vm.user.id}},[_c('td',{staticClass:\"row__cell row__cell--avatar\",attrs:{\"data-cy-user-list-cell-avatar\":\"\"}},[(_vm.isLoadingUser)?_c('NcLoadingIcon',{attrs:{\"name\":_vm.t('settings', 'Loading account …'),\"size\":32}}):(_vm.visible)?_c('NcAvatar',{attrs:{\"disable-menu\":\"\",\"show-user-status\":false,\"user\":_vm.user.id}}):_vm._e()],1),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--displayname\",attrs:{\"data-cy-user-list-cell-displayname\":\"\"}},[(_vm.editing && _vm.user.backendCapabilities.setDisplayName)?[_c('NcTextField',{ref:\"displayNameField\",staticClass:\"user-row-text-field\",class:{ 'icon-loading-small': _vm.loading.displayName },attrs:{\"data-cy-user-list-input-displayname\":\"\",\"data-loading\":_vm.loading.displayName || undefined,\"trailing-button-label\":_vm.t('settings', 'Submit'),\"show-trailing-button\":true,\"disabled\":_vm.loading.displayName || _vm.isLoadingField,\"label\":_vm.t('settings', 'Change display name'),\"trailing-button-icon\":\"arrowRight\",\"value\":_vm.editedDisplayName,\"autocapitalize\":\"off\",\"autocomplete\":\"off\",\"spellcheck\":\"false\"},on:{\"update:value\":function($event){_vm.editedDisplayName=$event},\"trailing-button-click\":_vm.updateDisplayName}})]:[(!_vm.isObfuscated)?_c('strong',{attrs:{\"title\":_vm.user.displayname?.length > 20 ? _vm.user.displayname : null}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.user.displayname)+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('span',{staticClass:\"row__subtitle\"},[_vm._v(_vm._s(_vm.user.id))])]],2),_vm._v(\" \"),_c('td',{staticClass:\"row__cell\",class:{ 'row__cell--obfuscated': _vm.hasObfuscated },attrs:{\"data-cy-user-list-cell-password\":\"\"}},[(_vm.editing && _vm.settings.canChangePassword && _vm.user.backendCapabilities.setPassword)?[_c('NcTextField',{staticClass:\"user-row-text-field\",class:{'icon-loading-small': _vm.loading.password},attrs:{\"data-cy-user-list-input-password\":\"\",\"data-loading\":_vm.loading.password || undefined,\"trailing-button-label\":_vm.t('settings', 'Submit'),\"show-trailing-button\":true,\"disabled\":_vm.loading.password || _vm.isLoadingField,\"minlength\":_vm.minPasswordLength,\"maxlength\":\"469\",\"label\":_vm.t('settings', 'Set new password'),\"trailing-button-icon\":\"arrowRight\",\"value\":_vm.editedPassword,\"autocapitalize\":\"off\",\"autocomplete\":\"new-password\",\"required\":\"\",\"spellcheck\":\"false\",\"type\":\"password\"},on:{\"update:value\":function($event){_vm.editedPassword=$event},\"trailing-button-click\":_vm.updatePassword}})]:(_vm.isObfuscated)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'You do not have permissions to see the details of this account'))+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),_c('td',{staticClass:\"row__cell\",attrs:{\"data-cy-user-list-cell-email\":\"\"}},[(_vm.editing)?[_c('NcTextField',{staticClass:\"user-row-text-field\",class:{'icon-loading-small': _vm.loading.mailAddress},attrs:{\"data-cy-user-list-input-email\":\"\",\"data-loading\":_vm.loading.mailAddress || undefined,\"show-trailing-button\":true,\"trailing-button-label\":_vm.t('settings', 'Submit'),\"label\":_vm.t('settings', 'Set new email address'),\"disabled\":_vm.loading.mailAddress || _vm.isLoadingField,\"trailing-button-icon\":\"arrowRight\",\"value\":_vm.editedMail,\"autocapitalize\":\"off\",\"autocomplete\":\"email\",\"spellcheck\":\"false\",\"type\":\"email\"},on:{\"update:value\":function($event){_vm.editedMail=$event},\"trailing-button-click\":_vm.updateEmail}})]:(!_vm.isObfuscated)?_c('span',{attrs:{\"title\":_vm.user.email?.length > 20 ? _vm.user.email : null}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.user.email)+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--large row__cell--multiline\",attrs:{\"data-cy-user-list-cell-groups\":\"\"}},[(_vm.editing)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'groups' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Add user to group'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"data-cy-user-list-input-groups\":\"\",\"data-loading\":_vm.loading.groups || undefined,\"input-id\":'groups' + _vm.uniqueId,\"close-on-select\":false,\"disabled\":_vm.isLoadingField,\"loading\":_vm.loading.groups,\"multiple\":true,\"append-to-body\":false,\"options\":_vm.availableGroups,\"placeholder\":_vm.t('settings', 'Add account to group'),\"taggable\":_vm.settings.isAdmin,\"value\":_vm.userGroups,\"label\":\"name\",\"no-wrap\":true,\"create-option\":(value) => ({ name: value, isCreating: true })},on:{\"option:created\":_vm.createGroup,\"option:selected\":options => _vm.addUserGroup(options.at(-1)),\"option:deselected\":_vm.removeUserGroup}})]:(!_vm.isObfuscated)?_c('span',{attrs:{\"title\":_vm.userGroupsLabels?.length > 40 ? _vm.userGroupsLabels : null}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.userGroupsLabels)+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),(_vm.subAdminsGroups.length > 0 && _vm.settings.isAdmin)?_c('td',{staticClass:\"row__cell row__cell--large row__cell--multiline\",attrs:{\"data-cy-user-list-cell-subadmins\":\"\"}},[(_vm.editing && _vm.settings.isAdmin && _vm.subAdminsGroups.length > 0)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'subadmins' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Set account as admin for'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"data-cy-user-list-input-subadmins\":\"\",\"data-loading\":_vm.loading.subadmins || undefined,\"input-id\":'subadmins' + _vm.uniqueId,\"close-on-select\":false,\"disabled\":_vm.isLoadingField,\"loading\":_vm.loading.subadmins,\"label\":\"name\",\"append-to-body\":false,\"multiple\":true,\"no-wrap\":true,\"options\":_vm.subAdminsGroups,\"placeholder\":_vm.t('settings', 'Set account as admin for'),\"value\":_vm.userSubAdminsGroups},on:{\"option:deselected\":_vm.removeUserSubAdmin,\"option:selected\":options => _vm.addUserSubAdmin(options.at(-1))}})]:(!_vm.isObfuscated)?_c('span',{attrs:{\"title\":_vm.userSubAdminsGroupsLabels?.length > 40 ? _vm.userSubAdminsGroupsLabels : null}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.userSubAdminsGroupsLabels)+\"\\n\\t\\t\")]):_vm._e()],2):_vm._e(),_vm._v(\" \"),_c('td',{staticClass:\"row__cell\",attrs:{\"data-cy-user-list-cell-quota\":\"\"}},[(_vm.editing)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'quota' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Select account quota'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"close-on-select\":true,\"create-option\":_vm.validateQuota,\"data-cy-user-list-input-quota\":\"\",\"data-loading\":_vm.loading.quota || undefined,\"disabled\":_vm.isLoadingField,\"loading\":_vm.loading.quota,\"append-to-body\":false,\"clearable\":false,\"input-id\":'quota' + _vm.uniqueId,\"options\":_vm.quotaOptions,\"placeholder\":_vm.t('settings', 'Select account quota'),\"taggable\":true},on:{\"option:selected\":_vm.setUserQuota},model:{value:(_vm.editedUserQuota),callback:function ($$v) {_vm.editedUserQuota=$$v},expression:\"editedUserQuota\"}})]:(!_vm.isObfuscated)?[_c('span',{attrs:{\"id\":'quota-progress' + _vm.uniqueId}},[_vm._v(_vm._s(_vm.userQuota)+\" (\"+_vm._s(_vm.usedSpace)+\")\")]),_vm._v(\" \"),_c('NcProgressBar',{staticClass:\"row__progress\",class:{\n\t\t\t\t\t'row__progress--warn': _vm.usedQuota > 80,\n\t\t\t\t},attrs:{\"aria-labelledby\":'quota-progress' + _vm.uniqueId,\"value\":_vm.usedQuota}})]:_vm._e()],2),_vm._v(\" \"),(_vm.showConfig.showLanguages)?_c('td',{staticClass:\"row__cell row__cell--large\",attrs:{\"data-cy-user-list-cell-language\":\"\"}},[(_vm.editing)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'language' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Set the language'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"id\":'language' + _vm.uniqueId,\"data-cy-user-list-input-language\":\"\",\"data-loading\":_vm.loading.languages || undefined,\"allow-empty\":false,\"disabled\":_vm.isLoadingField,\"loading\":_vm.loading.languages,\"clearable\":false,\"append-to-body\":false,\"options\":_vm.availableLanguages,\"placeholder\":_vm.t('settings', 'No language set'),\"value\":_vm.userLanguage,\"label\":\"name\"},on:{\"input\":_vm.setUserLanguage}})]:(!_vm.isObfuscated)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.userLanguage.name)+\"\\n\\t\\t\")]):_vm._e()],2):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showUserBackend || _vm.showConfig.showStoragePath)?_c('td',{staticClass:\"row__cell row__cell--large\",attrs:{\"data-cy-user-list-cell-storage-location\":\"\"}},[(!_vm.isObfuscated)?[(_vm.showConfig.showUserBackend)?_c('span',[_vm._v(_vm._s(_vm.user.backend))]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showStoragePath)?_c('span',{staticClass:\"row__subtitle\",attrs:{\"title\":_vm.user.storageLocation}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.user.storageLocation)+\"\\n\\t\\t\\t\")]):_vm._e()]:_vm._e()],2):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showLastLogin)?_c('td',{staticClass:\"row__cell\",attrs:{\"title\":_vm.userLastLoginTooltip,\"data-cy-user-list-cell-last-login\":\"\"}},[(!_vm.isObfuscated)?_c('span',[_vm._v(_vm._s(_vm.userLastLogin))]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--large row__cell--fill\",attrs:{\"data-cy-user-list-cell-manager\":\"\"}},[(_vm.editing)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'manager' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.managerLabel)+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"select--fill\",attrs:{\"data-cy-user-list-input-manager\":\"\",\"data-loading\":_vm.loading.manager || undefined,\"input-id\":'manager' + _vm.uniqueId,\"close-on-select\":true,\"disabled\":_vm.isLoadingField,\"append-to-body\":false,\"loading\":_vm.loadingPossibleManagers || _vm.loading.manager,\"label\":\"displayname\",\"options\":_vm.possibleManagers,\"placeholder\":_vm.managerLabel},on:{\"open\":_vm.searchInitialUserManager,\"search\":_vm.searchUserManager,\"option:selected\":_vm.updateUserManager},model:{value:(_vm.currentManager),callback:function ($$v) {_vm.currentManager=$$v},expression:\"currentManager\"}})]:(!_vm.isObfuscated)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.user.manager)+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--actions\",attrs:{\"data-cy-user-list-cell-actions\":\"\"}},[(_vm.visible && !_vm.isObfuscated && _vm.canEdit && !_vm.loading.all)?_c('UserRowActions',{attrs:{\"actions\":_vm.userActions,\"disabled\":_vm.isLoadingField,\"edit\":_vm.editing,\"user\":_vm.user},on:{\"update:edit\":_vm.toggleEdit}}):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRowActions.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRowActions.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcActions',{attrs:{\"aria-label\":_vm.t('settings', 'Toggle account actions menu'),\"disabled\":_vm.disabled,\"inline\":1}},[_c('NcActionButton',{attrs:{\"data-cy-user-list-action-toggle-edit\":`${_vm.edit}`,\"disabled\":_vm.disabled},on:{\"click\":_vm.toggleEdit},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{key:_vm.editSvg,attrs:{\"svg\":_vm.editSvg,\"aria-hidden\":\"true\"}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.edit ? _vm.t('settings', 'Done') : _vm.t('settings', 'Edit'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_vm._l((_vm.actions),function({ action, icon, text },index){return _c('NcActionButton',{key:index,attrs:{\"disabled\":_vm.disabled,\"aria-label\":text,\"icon\":icon},on:{\"click\":(event) => action(event, { ..._vm.user })}},[_vm._v(\"\\n\\t\\t\"+_vm._s(text)+\"\\n\\t\")])})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./UserRowActions.vue?vue&type=template&id=645e3075\"\nimport script from \"./UserRowActions.vue?vue&type=script&lang=ts\"\nexport * from \"./UserRowActions.vue?vue&type=script&lang=ts\"\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 Copyright (c) 2019 John Molakvoæ \n *\n * @author Greta Doci \n * @author John Molakvoæ \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\nexport default {\n\tprops: {\n\t\tuser: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tsettings: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({}),\n\t\t},\n\t\tgroups: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tsubAdminsGroups: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tquotaOptions: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tlanguages: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\texternalActions: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t},\n\tcomputed: {\n\t\tshowConfig() {\n\t\t\treturn this.$store.getters.getShowConfig\n\t\t},\n\n\t\t/* GROUPS MANAGEMENT */\n\t\tuserGroups() {\n\t\t\tconst userGroups = this.groups.filter(group => this.user.groups.includes(group.id))\n\t\t\treturn userGroups\n\t\t},\n\t\tuserSubAdminsGroups() {\n\t\t\tconst userSubAdminsGroups = this.subAdminsGroups.filter(group => this.user.subadmin.includes(group.id))\n\t\t\treturn userSubAdminsGroups\n\t\t},\n\t\tavailableGroups() {\n\t\t\treturn this.groups.map((group) => {\n\t\t\t\t// clone object because we don't want\n\t\t\t\t// to edit the original groups\n\t\t\t\tconst groupClone = Object.assign({}, group)\n\n\t\t\t\t// two settings here:\n\t\t\t\t// 1. user NOT in group but no permission to add\n\t\t\t\t// 2. user is in group but no permission to remove\n\t\t\t\tgroupClone.$isDisabled\n\t\t\t\t\t= (group.canAdd === false\n\t\t\t\t\t\t&& !this.user.groups.includes(group.id))\n\t\t\t\t\t|| (group.canRemove === false\n\t\t\t\t\t\t&& this.user.groups.includes(group.id))\n\t\t\t\treturn groupClone\n\t\t\t})\n\t\t},\n\n\t\t/* QUOTA MANAGEMENT */\n\t\tusedSpace() {\n\t\t\tif (this.user.quota.used) {\n\t\t\t\treturn t('settings', '{size} used', { size: OC.Util.humanFileSize(this.user.quota.used) })\n\t\t\t}\n\t\t\treturn t('settings', '{size} used', { size: OC.Util.humanFileSize(0) })\n\t\t},\n\t\tusedQuota() {\n\t\t\tlet quota = this.user.quota.quota\n\t\t\tif (quota > 0) {\n\t\t\t\tquota = Math.min(100, Math.round(this.user.quota.used / quota * 100))\n\t\t\t} else {\n\t\t\t\tconst usedInGB = this.user.quota.used / (10 * Math.pow(2, 30))\n\t\t\t\t// asymptotic curve approaching 50% at 10GB to visualize used stace with infinite quota\n\t\t\t\tquota = 95 * (1 - (1 / (usedInGB + 1)))\n\t\t\t}\n\t\t\treturn isNaN(quota) ? 0 : quota\n\t\t},\n\t\t// Mapping saved values to objects\n\t\tuserQuota() {\n\t\t\tif (this.user.quota.quota >= 0) {\n\t\t\t\t// if value is valid, let's map the quotaOptions or return custom quota\n\t\t\t\tconst humanQuota = OC.Util.humanFileSize(this.user.quota.quota)\n\t\t\t\tconst userQuota = this.quotaOptions.find(quota => quota.id === humanQuota)\n\t\t\t\treturn userQuota || { id: humanQuota, label: humanQuota }\n\t\t\t} else if (this.user.quota.quota === 'default') {\n\t\t\t\t// default quota is replaced by the proper value on load\n\t\t\t\treturn this.quotaOptions[0]\n\t\t\t}\n\t\t\treturn this.quotaOptions[1] // unlimited\n\t\t},\n\n\t\t/* PASSWORD POLICY? */\n\t\tminPasswordLength() {\n\t\t\treturn this.$store.getters.getPasswordPolicyMinLength\n\t\t},\n\n\t\t/* LANGUAGE */\n\t\tuserLanguage() {\n\t\t\tconst availableLanguages = this.languages[0].languages.concat(this.languages[1].languages)\n\t\t\tconst userLang = availableLanguages.find(lang => lang.code === this.user.language)\n\t\t\tif (typeof userLang !== 'object' && this.user.language !== '') {\n\t\t\t\treturn {\n\t\t\t\t\tcode: this.user.language,\n\t\t\t\t\tname: this.user.language,\n\t\t\t\t}\n\t\t\t} else if (this.user.language === '') {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn userLang\n\t\t},\n\n\t\t/* LAST LOGIN */\n\t\tuserLastLoginTooltip() {\n\t\t\tif (this.user.lastLogin > 0) {\n\t\t\t\treturn OC.Util.formatDate(this.user.lastLogin)\n\t\t\t}\n\t\t\treturn ''\n\t\t},\n\t\tuserLastLogin() {\n\t\t\tif (this.user.lastLogin > 0) {\n\t\t\t\treturn OC.Util.relativeModifiedDate(this.user.lastLogin)\n\t\t\t}\n\t\t\treturn t('settings', 'Never')\n\t\t},\n\t},\n}\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!./UserRow.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!./UserRow.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!./UserRow.vue?vue&type=style&index=0&id=6615a81e&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./UserRow.vue?vue&type=style&index=0&id=6615a81e&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserRow.vue?vue&type=template&id=6615a81e&scoped=true\"\nimport script from \"./UserRow.vue?vue&type=script&lang=js\"\nexport * from \"./UserRow.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserRow.vue?vue&type=style&index=0&id=6615a81e&prod&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 \"6615a81e\",\n null\n \n)\n\nexport default component.exports","\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!./UserList.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!./UserList.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!./UserList.vue?vue&type=style&index=0&id=0e745d5e&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./UserList.vue?vue&type=style&index=0&id=0e745d5e&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserList.vue?vue&type=template&id=0e745d5e&scoped=true\"\nimport script from \"./UserList.vue?vue&type=script&lang=js\"\nexport * from \"./UserList.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserList.vue?vue&type=style&index=0&id=0e745d5e&prod&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 \"0e745d5e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('Fragment',[(_vm.showConfig.showNewUserForm)?_c('NewUserModal',{attrs:{\"loading\":_vm.loading,\"new-user\":_vm.newUser,\"quota-options\":_vm.quotaOptions},on:{\"reset\":_vm.resetForm,\"close\":_vm.closeModal}}):_vm._e(),_vm._v(\" \"),(_vm.filteredUsers.length === 0)?_c('NcEmptyContent',{staticClass:\"empty\",attrs:{\"name\":_vm.isInitialLoad && _vm.loading.users ? null : _vm.t('settings', 'No accounts')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.isInitialLoad && _vm.loading.users)?_c('NcLoadingIcon',{attrs:{\"name\":_vm.t('settings', 'Loading accounts …'),\"size\":64}}):_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiAccountGroup,\"size\":64}})]},proxy:true}],null,false,226056511)}):_c('VirtualList',{style:(_vm.style),attrs:{\"data-component\":_vm.UserRow,\"data-sources\":_vm.filteredUsers,\"data-key\":\"id\",\"data-cy-user-list\":\"\",\"item-height\":_vm.rowHeight,\"extra-props\":{\n\t\t\tusers: _vm.users,\n\t\t\tsettings: _vm.settings,\n\t\t\thasObfuscated: _vm.hasObfuscated,\n\t\t\tgroups: _vm.groups,\n\t\t\tsubAdminsGroups: _vm.subAdminsGroups,\n\t\t\tquotaOptions: _vm.quotaOptions,\n\t\t\tlanguages: _vm.languages,\n\t\t\texternalActions: _vm.externalActions,\n\t\t}},on:{\"scroll-end\":_vm.handleScrollEnd},scopedSlots:_vm._u([{key:\"before\",fn:function(){return [_c('caption',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'List of accounts. This list is not fully rendered for performance reasons. The accounts will be rendered as you navigate through the list.'))+\"\\n\\t\\t\\t\")])]},proxy:true},{key:\"header\",fn:function(){return [_c('UserListHeader',{attrs:{\"has-obfuscated\":_vm.hasObfuscated}})]},proxy:true},{key:\"footer\",fn:function(){return [_c('UserListFooter',{attrs:{\"loading\":_vm.loading.users,\"filtered-users\":_vm.filteredUsers}})]},proxy:true}])})],1)\n}\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!./UserManagement.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!./UserManagement.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!./UserManagement.vue?vue&type=style&index=0&id=fc8857fc&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./UserManagement.vue?vue&type=style&index=0&id=fc8857fc&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserManagement.vue?vue&type=template&id=fc8857fc&scoped=true\"\nimport script from \"./UserManagement.vue?vue&type=script&lang=js\"\nexport * from \"./UserManagement.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserManagement.vue?vue&type=style&index=0&id=fc8857fc&prod&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 \"fc8857fc\",\n null\n \n)\n\nexport default component.exports","// 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, `.footer[data-v-3ec0b16a]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.footer__cell[data-v-3ec0b16a]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.footer__cell strong[data-v-3ec0b16a],.footer__cell span[data-v-3ec0b16a],.footer__cell label[data-v-3ec0b16a]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.footer__cell--avatar[data-v-3ec0b16a],.footer__cell--displayname[data-v-3ec0b16a]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.footer__cell--avatar[data-v-3ec0b16a]{left:0}.footer__cell--displayname[data-v-3ec0b16a]{left:var(--avatar-cell-width);border-right:1px solid var(--color-border)}}.footer__cell--avatar[data-v-3ec0b16a]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.footer__cell--multiline span[data-v-3ec0b16a]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.footer__cell--multiline span[data-v-3ec0b16a]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.footer__cell--large[data-v-3ec0b16a]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.footer__cell--obfuscated[data-v-3ec0b16a]{min-width:400px;width:400px}.footer__cell--fill[data-v-3ec0b16a]{min-width:var(--cell-width-large);width:100%}.footer__cell--actions[data-v-3ec0b16a]{position:sticky;right:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-left:1px solid var(--color-border)}.footer__subtitle[data-v-3ec0b16a]{color:var(--color-text-maxcontrast)}.footer__cell[data-v-3ec0b16a]{position:sticky;color:var(--color-text-maxcontrast)}.footer__cell--loading[data-v-3ec0b16a]{left:0;min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0}.footer__cell--count[data-v-3ec0b16a]{left:var(--avatar-cell-width);min-width:var(--cell-width);width:var(--cell-width)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/UserListFooter.vue\",\"webpack://./apps/settings/src/components/Users/shared/styles.scss\"],\"names\":[],\"mappings\":\"AAGA,yBCoBC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CAIA,+BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,+GAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,mFAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,uCACC,MAAA,CAGD,4CACC,6BAAA,CACA,0CAAA,CAAA,CAIF,uCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,+CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,+CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,sCACC,iCAAA,CACA,6BAAA,CAGD,2CACC,eAAA,CACA,WAAA,CAID,qCACC,iCAAA,CACA,UAAA,CAGD,wCACC,eAAA,CACA,OAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,yCAAA,CAIF,mCACC,mCAAA,CDjHD,+BACC,eAAA,CACA,mCAAA,CAEA,wCACC,MAAA,CACA,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CAGD,sCACC,6BAAA,CACA,2BAAA,CACA,uBAAA\",\"sourcesContent\":[\"\\n@import './shared/styles.scss';\\n\\n.footer {\\n\\t@include row;\\n\\t@include cell;\\n\\n\\t&__cell {\\n\\t\\tposition: sticky;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\n\\t\\t&--loading {\\n\\t\\t\\tleft: 0;\\n\\t\\t\\tmin-width: var(--avatar-cell-width);\\n\\t\\t\\twidth: var(--avatar-cell-width);\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tpadding: 0;\\n\\t\\t}\\n\\n\\t\\t&--count {\\n\\t\\t\\tleft: var(--avatar-cell-width);\\n\\t\\t\\tmin-width: var(--cell-width);\\n\\t\\t\\twidth: var(--cell-width);\\n\\t\\t}\\n\\t}\\n}\\n\",\"/**\\n * @copyright 2023 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@mixin row {\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tmin-width: 100%;\\n\\twidth: fit-content;\\n\\theight: var(--row-height);\\n\\tbackground-color: var(--color-main-background);\\n}\\n\\n@mixin cell {\\n\\t&__cell {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: center;\\n\\t\\tpadding: 0 var(--cell-padding);\\n\\t\\tmin-width: var(--cell-width);\\n\\t\\twidth: var(--cell-width);\\n\\t\\tcolor: var(--color-main-text);\\n\\n\\t\\tstrong,\\n\\t\\tspan,\\n\\t\\tlabel {\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\toverflow-wrap: anywhere;\\n\\t\\t}\\n\\n\\t\\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\\n\\t\\t\\t&--avatar,\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tposition: sticky;\\n\\t\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--avatar {\\n\\t\\t\\t\\tleft: 0;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tleft: var(--avatar-cell-width);\\n\\t\\t\\t\\tborder-right: 1px solid var(--color-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--avatar {\\n\\t\\t\\tmin-width: var(--avatar-cell-width);\\n\\t\\t\\twidth: var(--avatar-cell-width);\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&--multiline {\\n\\t\\t\\tspan {\\n\\t\\t\\t\\tline-height: 1.3em;\\n\\t\\t\\t\\twhite-space: unset;\\n\\n\\t\\t\\t\\t@supports (-webkit-line-clamp: 2) {\\n\\t\\t\\t\\t\\tdisplay: -webkit-box;\\n\\t\\t\\t\\t\\t-webkit-line-clamp: 2;\\n\\t\\t\\t\\t\\t-webkit-box-orient: vertical;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--large {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: var(--cell-width-large);\\n\\t\\t}\\n\\n\\t\\t&--obfuscated {\\n\\t\\t\\tmin-width: 400px;\\n\\t\\t\\twidth: 400px;\\n\\t\\t}\\n\\n\\t\\t// Fill remaining row space with cell\\n\\t\\t&--fill {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\n\\t\\t&--actions {\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: row;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tmin-width: 110px;\\n\\t\\t\\twidth: 110px;\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tborder-left: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t&__subtitle {\\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, `fieldset[data-v-ab9299ba]{font-weight:bold}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/UserSettingsDialog.vue\"],\"names\":[],\"mappings\":\"AACA,0BACC,gBAAA\",\"sourcesContent\":[\"\\nfieldset {\\n\\tfont-weight: bold;\\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, `.account-management__system-list[data-v-413f2c9e]{height:auto !important;overflow:visible !important}.account-management__group-list[data-v-413f2c9e]{height:100% !important}.account-management__settings-toggle[data-v-413f2c9e]{margin-bottom:12px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/views/UserManagementNavigation.vue\"],\"names\":[],\"mappings\":\"AAEC,kDACC,sBAAA,CACA,2BAAA,CAGD,iDACC,sBAAA,CAGD,sDACC,kBAAA\",\"sourcesContent\":[\"\\n.account-management{\\n\\t&__system-list {\\n\\t\\theight: auto !important;\\n\\t\\toverflow: visible !important;\\n\\t}\\n\\n\\t&__group-list {\\n\\t\\theight: 100% !important;\\n\\t}\\n\\n\\t&__settings-toggle {\\n\\t\\tmargin-bottom: 12px;\\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, `.empty[data-v-0e745d5e] .icon-vue{width:64px;height:64px}.empty[data-v-0e745d5e] .icon-vue svg{max-width:64px;max-height:64px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/UserList.vue\"],\"names\":[],\"mappings\":\"AAKE,kCACC,UAAA,CACA,WAAA,CAEA,sCACC,cAAA,CACA,eAAA\",\"sourcesContent\":[\"\\n@import './Users/shared/styles.scss';\\n\\n.empty {\\n\\t:deep {\\n\\t\\t.icon-vue {\\n\\t\\t\\twidth: 64px;\\n\\t\\t\\theight: 64px;\\n\\n\\t\\t\\tsvg {\\n\\t\\t\\t\\tmax-width: 64px;\\n\\t\\t\\t\\tmax-height: 64px;\\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, `.user-list__row[data-v-6615a81e]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.user-list__row[data-v-6615a81e]:hover{background-color:var(--color-background-hover)}.user-list__row:hover .row__cell[data-v-6615a81e]:not(.row__cell--actions){background-color:var(--color-background-hover)}.user-list__row .select--fill[data-v-6615a81e]{max-width:calc(var(--cell-width-large) - 2*var(--cell-padding))}.row__cell[data-v-6615a81e]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.row__cell strong[data-v-6615a81e],.row__cell span[data-v-6615a81e],.row__cell label[data-v-6615a81e]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.row__cell--avatar[data-v-6615a81e],.row__cell--displayname[data-v-6615a81e]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.row__cell--avatar[data-v-6615a81e]{left:0}.row__cell--displayname[data-v-6615a81e]{left:var(--avatar-cell-width);border-right:1px solid var(--color-border)}}.row__cell--avatar[data-v-6615a81e]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.row__cell--multiline span[data-v-6615a81e]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.row__cell--multiline span[data-v-6615a81e]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.row__cell--large[data-v-6615a81e]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.row__cell--obfuscated[data-v-6615a81e]{min-width:400px;width:400px}.row__cell--fill[data-v-6615a81e]{min-width:var(--cell-width-large);width:100%}.row__cell--actions[data-v-6615a81e]{position:sticky;right:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-left:1px solid var(--color-border)}.row__subtitle[data-v-6615a81e]{color:var(--color-text-maxcontrast)}.row__cell[data-v-6615a81e]{border-bottom:1px solid var(--color-border)}.row__cell[data-v-6615a81e] .v-select.select{min-width:var(--cell-min-width)}.row__progress[data-v-6615a81e]{margin-top:4px}.row__progress--warn[data-v-6615a81e]::-moz-progress-bar{background:var(--color-warning) !important}.row__progress--warn[data-v-6615a81e]::-webkit-progress-value{background:var(--color-warning) !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/UserRow.vue\",\"webpack://./apps/settings/src/components/Users/shared/styles.scss\"],\"names\":[],\"mappings\":\"AAGA,iCCoBC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CDtBA,uCACC,8CAAA,CAEA,2EACC,8CAAA,CAKF,+CACC,+DAAA,CCgBD,4BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,sGAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,6EAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,oCACC,MAAA,CAGD,yCACC,6BAAA,CACA,0CAAA,CAAA,CAIF,oCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,4CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,4CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,mCACC,iCAAA,CACA,6BAAA,CAGD,wCACC,eAAA,CACA,WAAA,CAID,kCACC,iCAAA,CACA,UAAA,CAGD,qCACC,eAAA,CACA,OAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,yCAAA,CAIF,gCACC,mCAAA,CDjGD,4BACC,2CAAA,CAGC,6CACC,+BAAA,CAKH,gCACC,cAAA,CAGC,yDACC,0CAAA,CAED,8DACC,0CAAA\",\"sourcesContent\":[\"\\n@import './shared/styles.scss';\\n\\n.user-list__row {\\n\\t@include row;\\n\\n\\t&:hover {\\n\\t\\tbackground-color: var(--color-background-hover);\\n\\n\\t\\t.row__cell:not(.row__cell--actions) {\\n\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t}\\n\\t}\\n\\n\\t// Limit width of select in fill cell\\n\\t.select--fill {\\n\\t\\tmax-width: calc(var(--cell-width-large) - (2 * var(--cell-padding)));\\n\\t}\\n}\\n\\n.row {\\n\\t@include cell;\\n\\n\\t&__cell {\\n\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\n\\t\\t:deep {\\n\\t\\t\\t.v-select.select {\\n\\t\\t\\t\\tmin-width: var(--cell-min-width);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__progress {\\n\\t\\tmargin-top: 4px;\\n\\n\\t\\t&--warn {\\n\\t\\t\\t&::-moz-progress-bar {\\n\\t\\t\\t\\tbackground: var(--color-warning) !important;\\n\\t\\t\\t}\\n\\t\\t\\t&::-webkit-progress-value {\\n\\t\\t\\t\\tbackground: var(--color-warning) !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\",\"/**\\n * @copyright 2023 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@mixin row {\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tmin-width: 100%;\\n\\twidth: fit-content;\\n\\theight: var(--row-height);\\n\\tbackground-color: var(--color-main-background);\\n}\\n\\n@mixin cell {\\n\\t&__cell {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: center;\\n\\t\\tpadding: 0 var(--cell-padding);\\n\\t\\tmin-width: var(--cell-width);\\n\\t\\twidth: var(--cell-width);\\n\\t\\tcolor: var(--color-main-text);\\n\\n\\t\\tstrong,\\n\\t\\tspan,\\n\\t\\tlabel {\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\toverflow-wrap: anywhere;\\n\\t\\t}\\n\\n\\t\\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\\n\\t\\t\\t&--avatar,\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tposition: sticky;\\n\\t\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--avatar {\\n\\t\\t\\t\\tleft: 0;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tleft: var(--avatar-cell-width);\\n\\t\\t\\t\\tborder-right: 1px solid var(--color-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--avatar {\\n\\t\\t\\tmin-width: var(--avatar-cell-width);\\n\\t\\t\\twidth: var(--avatar-cell-width);\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&--multiline {\\n\\t\\t\\tspan {\\n\\t\\t\\t\\tline-height: 1.3em;\\n\\t\\t\\t\\twhite-space: unset;\\n\\n\\t\\t\\t\\t@supports (-webkit-line-clamp: 2) {\\n\\t\\t\\t\\t\\tdisplay: -webkit-box;\\n\\t\\t\\t\\t\\t-webkit-line-clamp: 2;\\n\\t\\t\\t\\t\\t-webkit-box-orient: vertical;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--large {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: var(--cell-width-large);\\n\\t\\t}\\n\\n\\t\\t&--obfuscated {\\n\\t\\t\\tmin-width: 400px;\\n\\t\\t\\twidth: 400px;\\n\\t\\t}\\n\\n\\t\\t// Fill remaining row space with cell\\n\\t\\t&--fill {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\n\\t\\t&--actions {\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: row;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tmin-width: 110px;\\n\\t\\t\\twidth: 110px;\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tborder-left: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t&__subtitle {\\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, `.app-content[data-v-fc8857fc]{display:flex;overflow:hidden;flex-direction:column;max-height:100%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/views/UserManagement.vue\"],\"names\":[],\"mappings\":\"AACA,8BAEC,YAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA\",\"sourcesContent\":[\"\\n.app-content {\\n\\t// Virtual list needs to be full height and is scrollable\\n\\tdisplay: flex;\\n\\toverflow: hidden;\\n\\tflex-direction: column;\\n\\tmax-height: 100%;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppNavigation,{attrs:{\"aria-label\":_setup.t('settings', 'Account management')},scopedSlots:_vm._u([{key:\"footer\",fn:function(){return [_c(_setup.NcButton,{staticClass:\"account-management__settings-toggle\",attrs:{\"type\":\"tertiary\"},on:{\"click\":function($event){_setup.isDialogOpen = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiCog}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_setup.t('settings', 'Account management settings'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c(_setup.UserSettingsDialog,{attrs:{\"open\":_setup.isDialogOpen},on:{\"update:open\":function($event){_setup.isDialogOpen=$event}}})]},proxy:true}])},[_c(_setup.NcAppNavigationNew,{attrs:{\"button-id\":\"new-user-button\",\"text\":_setup.t('settings','New account')},on:{\"click\":_setup.showNewUserMenu,\"keyup\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _setup.showNewUserMenu.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"]))return null;return _setup.showNewUserMenu.apply(null, arguments)}]},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiPlus}})]},proxy:true}])}),_vm._v(\" \"),_c(_setup.NcAppNavigationList,{staticClass:\"account-management__system-list\",attrs:{\"data-cy-users-settings-navigation-groups\":\"system\"}},[_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"everyone\",\"exact\":true,\"name\":_setup.t('settings', 'Active accounts'),\"to\":{ name: 'users' }},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiAccount}})]},proxy:true},{key:\"counter\",fn:function(){return [(_setup.userCount)?_c(_setup.NcCounterBubble,{attrs:{\"type\":!_setup.selectedGroupDecoded ? 'highlighted' : undefined}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_setup.userCount)+\"\\n\\t\\t\\t\\t\")]):_vm._e()]},proxy:true}])}),_vm._v(\" \"),(_setup.settings.isAdmin)?_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"admin\",\"exact\":true,\"name\":_setup.t('settings', 'Admins'),\"to\":{ name: 'group', params: { selectedGroup: 'admin' } }},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiShieldAccount}})]},proxy:true},{key:\"counter\",fn:function(){return [(_setup.adminGroup && _setup.adminGroup.count > 0)?_c(_setup.NcCounterBubble,{attrs:{\"type\":_setup.selectedGroupDecoded === 'admin' ? 'highlighted' : undefined}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_setup.adminGroup.count)+\"\\n\\t\\t\\t\\t\")]):_vm._e()]},proxy:true}],null,false,2218088905)}):_vm._e(),_vm._v(\" \"),(_setup.disabledGroup && (_setup.disabledGroup.usercount > 0 || _setup.disabledGroup.usercount === -1))?_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"disabled\",\"exact\":true,\"name\":_setup.t('settings', 'Disabled accounts'),\"to\":{ name: 'group', params: { selectedGroup: 'disabled' } }},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiAccountOff}})]},proxy:true},(_setup.disabledGroup.usercount > 0)?{key:\"counter\",fn:function(){return [_c(_setup.NcCounterBubble,{attrs:{\"type\":_setup.selectedGroupDecoded === 'disabled' ? 'highlighted' : undefined}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_setup.disabledGroup.usercount)+\"\\n\\t\\t\\t\\t\")])]},proxy:true}:null],null,true)}):_vm._e()],1),_vm._v(\" \"),_c(_setup.NcAppNavigationCaption,{attrs:{\"name\":_setup.t('settings', 'Groups'),\"disabled\":_setup.loadingAddGroup,\"aria-label\":_setup.loadingAddGroup ? _setup.t('settings', 'Creating group…') : _setup.t('settings', 'Create group'),\"force-menu\":\"\",\"is-heading\":\"\",\"open\":_setup.isAddGroupOpen},on:{\"update:open\":function($event){_setup.isAddGroupOpen=$event}},scopedSlots:_vm._u([(_setup.isAdminOrDelegatedAdmin)?{key:\"actionsTriggerIcon\",fn:function(){return [(_setup.loadingAddGroup)?_c(_setup.NcLoadingIcon):_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiPlus}})]},proxy:true}:null,(_setup.isAdminOrDelegatedAdmin)?{key:\"actions\",fn:function(){return [_c(_setup.NcActionText,{scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiAccountGroup}})]},proxy:true}],null,false,3607647275)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_setup.t('settings', 'Create group'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c(_setup.NcActionInput,{attrs:{\"label\":_setup.t('settings', 'Group name'),\"data-cy-users-settings-new-group-name\":\"\",\"label-outside\":false,\"disabled\":_setup.loadingAddGroup,\"value\":_setup.newGroupName,\"error\":_setup.hasAddGroupError,\"helper-text\":_setup.hasAddGroupError ? _setup.t('settings', 'Please enter a valid group name') : ''},on:{\"update:value\":function($event){_setup.newGroupName=$event},\"submit\":_setup.createGroup}})]},proxy:true}:null],null,true)}),_vm._v(\" \"),_c(_setup.NcAppNavigationList,{staticClass:\"account-management__group-list\",attrs:{\"data-cy-users-settings-navigation-groups\":\"custom\"}},_vm._l((_setup.userGroups),function(group){return _c(_setup.GroupListItem,{key:group.id,attrs:{\"id\":group.id,\"active\":_setup.selectedGroupDecoded === group.id,\"name\":group.title,\"count\":group.count}})}),1)],1)\n}\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!./GroupListItem.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!./GroupListItem.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!./GroupListItem.vue?vue&type=style&index=0&id=17dd13c0&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./GroupListItem.vue?vue&type=style&index=0&id=17dd13c0&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./GroupListItem.vue?vue&type=template&id=17dd13c0&scoped=true\"\nimport script from \"./GroupListItem.vue?vue&type=script&lang=js\"\nexport * from \"./GroupListItem.vue?vue&type=script&lang=js\"\nimport style0 from \"./GroupListItem.vue?vue&type=style&index=0&id=17dd13c0&prod&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 \"17dd13c0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('Fragment',[(_vm.showRemoveGroupModal)?_c('NcModal',{on:{\"close\":function($event){_vm.showRemoveGroupModal = false}}},[_c('div',{staticClass:\"modal__content\"},[_c('h2',{staticClass:\"modal__header\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Please confirm the group removal'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcNoteCard',{attrs:{\"type\":\"warning\",\"show-alert\":\"\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'You are about to remove the group \"{group}\". The accounts will NOT be deleted.', { group: _vm.name }))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"modal__button-row\"},[_c('NcButton',{attrs:{\"type\":\"secondary\"},on:{\"click\":function($event){_vm.showRemoveGroupModal = false}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Cancel'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.removeGroup}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Confirm'))+\"\\n\\t\\t\\t\\t\")])],1)],1)]):_vm._e(),_vm._v(\" \"),_c('NcAppNavigationItem',{key:_vm.id,attrs:{\"exact\":true,\"name\":_vm.name,\"to\":{ name: 'group', params: { selectedGroup: encodeURIComponent(_vm.id) } },\"loading\":_vm.loadingRenameGroup,\"menu-open\":_vm.openGroupMenu},on:{\"update:menuOpen\":_vm.handleGroupMenuOpen},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('AccountGroup',{attrs:{\"size\":20}})]},proxy:true},{key:\"counter\",fn:function(){return [(_vm.count)?_c('NcCounterBubble',{attrs:{\"type\":_vm.active ? 'highlighted' : undefined}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.count)+\"\\n\\t\\t\\t\")]):_vm._e()]},proxy:true},{key:\"actions\",fn:function(){return [(_vm.id !== 'admin' && _vm.id !== 'disabled' && _vm.settings.isAdmin)?_c('NcActionInput',{ref:\"displayNameInput\",attrs:{\"trailing-button-label\":_vm.t('settings', 'Submit'),\"type\":\"text\",\"value\":_vm.name,\"label\":_vm.t('settings', 'Rename group')},on:{\"submit\":function($event){return _vm.renameGroup(_vm.id)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Pencil',{attrs:{\"size\":20}})]},proxy:true}],null,false,580569589)}):_vm._e(),_vm._v(\" \"),(_vm.id !== 'admin' && _vm.id !== 'disabled' && _vm.settings.isAdmin)?_c('NcActionButton',{on:{\"click\":function($event){_vm.showRemoveGroupModal = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Delete',{attrs:{\"size\":20}})]},proxy:true}],null,false,2705356561)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Remove group'))+\"\\n\\t\\t\\t\")]):_vm._e()]},proxy:true}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcAppSettingsDialog',{attrs:{\"open\":_vm.isModalOpen,\"show-navigation\":true,\"name\":_vm.t('settings', 'Account management settings')},on:{\"update:open\":function($event){_vm.isModalOpen=$event}}},[_c('NcAppSettingsSection',{attrs:{\"id\":\"visibility-settings\",\"name\":_vm.t('settings', 'Visibility')}},[_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"showLanguages\",\"checked\":_vm.showLanguages},on:{\"update:checked\":function($event){_vm.showLanguages=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show language'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"showUserBackend\",\"checked\":_vm.showUserBackend},on:{\"update:checked\":function($event){_vm.showUserBackend=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show account backend'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"showStoragePath\",\"checked\":_vm.showStoragePath},on:{\"update:checked\":function($event){_vm.showStoragePath=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show storage path'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"showLastLogin\",\"checked\":_vm.showLastLogin},on:{\"update:checked\":function($event){_vm.showLastLogin=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show last login'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('NcAppSettingsSection',{attrs:{\"id\":\"groups-sorting\",\"name\":_vm.t('settings', 'Sorting')}},[(_vm.isGroupSortingEnforced)?_c('NcNoteCard',{attrs:{\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'The system config enforces sorting the groups by name. This also disables showing the member count.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('fieldset',[_c('legend',[_vm._v(_vm._s(_vm.t('settings', 'Group list sorting')))]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"radio\",\"checked\":_vm.groupSorting,\"data-test\":\"sortGroupsByMemberCount\",\"disabled\":_vm.isGroupSortingEnforced,\"name\":\"group-sorting-mode\",\"value\":\"member-count\"},on:{\"update:checked\":function($event){_vm.groupSorting=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'By member count'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"radio\",\"checked\":_vm.groupSorting,\"data-test\":\"sortGroupsByName\",\"disabled\":_vm.isGroupSortingEnforced,\"name\":\"group-sorting-mode\",\"value\":\"name\"},on:{\"update:checked\":function($event){_vm.groupSorting=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'By name'))+\"\\n\\t\\t\\t\")])],1)],1),_vm._v(\" \"),_c('NcAppSettingsSection',{attrs:{\"id\":\"email-settings\",\"name\":_vm.t('settings', 'Send email')}},[_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"sendWelcomeMail\",\"checked\":_vm.sendWelcomeMail,\"disabled\":_vm.loadingSendMail},on:{\"update:checked\":function($event){_vm.sendWelcomeMail=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Send welcome email to new accounts'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('NcAppSettingsSection',{attrs:{\"id\":\"default-settings\",\"name\":_vm.t('settings', 'Defaults')}},[_c('NcSelect',{attrs:{\"input-label\":_vm.t('settings', 'Default quota'),\"placement\":\"top\",\"taggable\":true,\"options\":_vm.quotaOptions,\"create-option\":_vm.validateQuota,\"placeholder\":_vm.t('settings', 'Select default quota'),\"clearable\":false},on:{\"option:selected\":_vm.setDefaultQuota},model:{value:(_vm.defaultQuota),callback:function ($$v) {_vm.defaultQuota=$$v},expression:\"defaultQuota\"}})],1)],1)\n}\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!./UserSettingsDialog.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!./UserSettingsDialog.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!./UserSettingsDialog.vue?vue&type=style&index=0&id=ab9299ba&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./UserSettingsDialog.vue?vue&type=style&index=0&id=ab9299ba&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserSettingsDialog.vue?vue&type=template&id=ab9299ba&scoped=true\"\nimport script from \"./UserSettingsDialog.vue?vue&type=script&lang=js\"\nexport * from \"./UserSettingsDialog.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserSettingsDialog.vue?vue&type=style&index=0&id=ab9299ba&prod&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 \"ab9299ba\",\n null\n \n)\n\nexport default component.exports","import { computed } from 'vue';\n/**\n * Format a group to a menu entry\n *\n * @param group the group\n */\nfunction formatGroupMenu(group) {\n if (typeof group === 'undefined') {\n return null;\n }\n const item = {\n id: group.id,\n title: group.name,\n usercount: group.usercount,\n count: Math.max(0, group.usercount - group.disabled),\n };\n return item;\n}\nexport const useFormatGroups = (groups) => {\n /**\n * All non-disabled non-admin groups\n */\n const userGroups = computed(() => {\n const formatted = groups.value\n // filter out disabled and admin\n .filter(group => group.id !== 'disabled' && group.id !== 'admin')\n // format group\n .map(group => formatGroupMenu(group))\n // remove invalid\n .filter(group => group !== null);\n return formatted;\n });\n /**\n * The admin group if found otherwise null\n */\n const adminGroup = computed(() => formatGroupMenu(groups.value.find(group => group.id === 'admin')));\n /**\n * The group of disabled users\n */\n const disabledGroup = computed(() => formatGroupMenu(groups.value.find(group => group.id === 'disabled')));\n return { adminGroup, disabledGroup, userGroups };\n};\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserManagementNavigation.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserManagementNavigation.vue?vue&type=script&setup=true&lang=ts\"","\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!./UserManagementNavigation.vue?vue&type=style&index=0&id=413f2c9e&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./UserManagementNavigation.vue?vue&type=style&index=0&id=413f2c9e&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserManagementNavigation.vue?vue&type=template&id=413f2c9e&scoped=true\"\nimport script from \"./UserManagementNavigation.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserManagementNavigation.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./UserManagementNavigation.vue?vue&type=style&index=0&id=413f2c9e&prod&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 \"413f2c9e\",\n null\n \n)\n\nexport default component.exports","// 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[data-v-69afa821]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background);border-bottom:1px solid var(--color-border)}.header__cell[data-v-69afa821]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.header__cell strong[data-v-69afa821],.header__cell span[data-v-69afa821],.header__cell label[data-v-69afa821]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.header__cell--avatar[data-v-69afa821],.header__cell--displayname[data-v-69afa821]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.header__cell--avatar[data-v-69afa821]{left:0}.header__cell--displayname[data-v-69afa821]{left:var(--avatar-cell-width);border-right:1px solid var(--color-border)}}.header__cell--avatar[data-v-69afa821]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.header__cell--multiline span[data-v-69afa821]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.header__cell--multiline span[data-v-69afa821]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.header__cell--large[data-v-69afa821]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.header__cell--obfuscated[data-v-69afa821]{min-width:400px;width:400px}.header__cell--fill[data-v-69afa821]{min-width:var(--cell-width-large);width:100%}.header__cell--actions[data-v-69afa821]{position:sticky;right:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-left:1px solid var(--color-border)}.header__subtitle[data-v-69afa821]{color:var(--color-text-maxcontrast)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/UserListHeader.vue\",\"webpack://./apps/settings/src/components/Users/shared/styles.scss\"],\"names\":[],\"mappings\":\"AAGA,yBCoBC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CDrBA,2CAAA,CCyBA,+BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,+GAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,mFAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,uCACC,MAAA,CAGD,4CACC,6BAAA,CACA,0CAAA,CAAA,CAIF,uCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,+CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,+CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,sCACC,iCAAA,CACA,6BAAA,CAGD,2CACC,eAAA,CACA,WAAA,CAID,qCACC,iCAAA,CACA,UAAA,CAGD,wCACC,eAAA,CACA,OAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,yCAAA,CAIF,mCACC,mCAAA\",\"sourcesContent\":[\"\\n@import './shared/styles.scss';\\n\\n.header {\\n\\t@include row;\\n\\t@include cell;\\n\\n\\tborder-bottom: 1px solid var(--color-border);\\n}\\n\",\"/**\\n * @copyright 2023 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@mixin row {\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tmin-width: 100%;\\n\\twidth: fit-content;\\n\\theight: var(--row-height);\\n\\tbackground-color: var(--color-main-background);\\n}\\n\\n@mixin cell {\\n\\t&__cell {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: center;\\n\\t\\tpadding: 0 var(--cell-padding);\\n\\t\\tmin-width: var(--cell-width);\\n\\t\\twidth: var(--cell-width);\\n\\t\\tcolor: var(--color-main-text);\\n\\n\\t\\tstrong,\\n\\t\\tspan,\\n\\t\\tlabel {\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\toverflow-wrap: anywhere;\\n\\t\\t}\\n\\n\\t\\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\\n\\t\\t\\t&--avatar,\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tposition: sticky;\\n\\t\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--avatar {\\n\\t\\t\\t\\tleft: 0;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tleft: var(--avatar-cell-width);\\n\\t\\t\\t\\tborder-right: 1px solid var(--color-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--avatar {\\n\\t\\t\\tmin-width: var(--avatar-cell-width);\\n\\t\\t\\twidth: var(--avatar-cell-width);\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&--multiline {\\n\\t\\t\\tspan {\\n\\t\\t\\t\\tline-height: 1.3em;\\n\\t\\t\\t\\twhite-space: unset;\\n\\n\\t\\t\\t\\t@supports (-webkit-line-clamp: 2) {\\n\\t\\t\\t\\t\\tdisplay: -webkit-box;\\n\\t\\t\\t\\t\\t-webkit-line-clamp: 2;\\n\\t\\t\\t\\t\\t-webkit-box-orient: vertical;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--large {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: var(--cell-width-large);\\n\\t\\t}\\n\\n\\t\\t&--obfuscated {\\n\\t\\t\\tmin-width: 400px;\\n\\t\\t\\twidth: 400px;\\n\\t\\t}\\n\\n\\t\\t// Fill remaining row space with cell\\n\\t\\t&--fill {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\n\\t\\t&--actions {\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: row;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tmin-width: 110px;\\n\\t\\t\\twidth: 110px;\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tborder-left: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t&__subtitle {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/**\n * @copyright 2023 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 */\nexport const unlimitedQuota = {\n id: 'none',\n label: t('settings', 'Unlimited'),\n};\nexport const defaultQuota = {\n id: 'default',\n label: t('settings', 'Default quota'),\n};\n/**\n * Return `true` if the logged in user does not have permissions to view the\n * data of `user`\n * @param user\n * @param user.id\n */\nexport const isObfuscated = (user) => {\n const keys = Object.keys(user);\n return keys.length === 1 && keys.at(0) === 'id';\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, `.modal__header[data-v-17dd13c0]{margin:0}.modal__content[data-v-17dd13c0]{display:flex;flex-direction:column;align-items:center;padding:20px;gap:4px 0}.modal__button-row[data-v-17dd13c0]{display:flex;width:100%;justify-content:space-between}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/GroupListItem.vue\"],\"names\":[],\"mappings\":\"AAEC,gCACC,QAAA,CAGD,iCACC,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,YAAA,CACA,SAAA,CAGD,oCACC,YAAA,CACA,UAAA,CACA,6BAAA\",\"sourcesContent\":[\"\\n.modal {\\n\\t&__header {\\n\\t\\tmargin: 0;\\n\\t}\\n\\n\\t&__content {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\talign-items: center;\\n\\t\\tpadding: 20px;\\n\\t\\tgap: 4px 0;\\n\\t}\\n\\n\\t&__button-row {\\n\\t\\tdisplay: flex;\\n\\t\\twidth: 100%;\\n\\t\\tjustify-content: space-between;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n"],"names":["___CSS_LOADER_EXPORT___","push","module","id","util","warn","unrefElement","elRef","_a","plain","$el","defaultWindow","window","useSupported","callback","isMounted","value","useMounted","Boolean","useElementVisibility","element","options","scrollTarget","threshold","elementIsVisible","target","root","rootMargin","immediate","isSupported","targets","_target","Array","isArray","map","filter","cleanup","isActive","stopWatch","targets2","root2","length","observer","IntersectionObserver","forEach","el","observe","disconnect","flush","stop","useIntersectionObserver","intersectionObserverEntries","isIntersecting","latestTime","entry","time","mounted","unmounted","globalThis","global","self","vElementVisibility","binding","handler","isVisible","v","Vue","directive","extend","name","props","dataComponent","type","Object","Function","required","dataKey","String","dataSources","itemHeight","Number","extraProps","default","data","bufferItems","index","headerHeight","tableHeight","resizeObserver","computed","startIndex","Math","max","shownItems","ceil","renderedItems","slice","tbodyStyle","isOverScrolled","lastIndex","hiddenAfterItems","min","paddingTop","paddingBottom","tfoot","$refs","thead","ResizeObserver","debounce","clientHeight","logger","debug","onScroll","addEventListener","beforeDestroy","methods","handleFooterVisibility","visible","$emit","round","scrollTop","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_vm","this","_c","_self","_setupProxy","staticClass","_t","_v","ref","attrs","style","_l","item","i","_b","key","tag","directives","rawName","expression","components","NcButton","NcModal","NcPasswordField","NcSelect","NcTextField","loading","newUser","quotaOptions","possibleManagers","managerLabel","t","showConfig","$store","getters","getShowConfig","settings","getServerData","usernameLabel","newUserGenerateUserID","minPasswordLength","getPasswordPolicyMinLength","groups","getGroups","group","sort","a","b","localeCompare","subAdminsGroups","getSubadminGroups","canAddGroups","assign","$isDisabled","canAdd","languages","commonLanguages","otherLanguages","beforeMount","searchUserManager","createUser","all","dispatch","userid","password","displayName","email","mailAddress","subadmin","quota","language","code","manager","username","inputField","input","focus","error","response","ocs","meta","statuscode","handleGroupInput","createGroup","_ref","gid","find","validateQuota","validQuota","OC","Util","computerFileSize","humanFileSize","label","languageFilterBy","option","search","some","_ref2","toLocaleLowerCase","includes","query","offset","limit","then","users","values","_g","$listeners","on","$event","preventDefault","apply","arguments","_s","$set","newUserRequireEmail","_e","isAdmin","model","$$v","showLanguages","class","NcLoadingIcon","filteredUsers","userCount","n","hasObfuscated","passwordLabel","showUserBackend","showStoragePath","showLastLogin","defineComponent","NcActionButton","NcActions","NcIconSvgWrapper","actions","disabled","edit","user","editSvg","toggleEdit","scopedSlots","_u","fn","proxy","action","icon","text","event","externalActions","userGroups","userSubAdminsGroups","availableGroups","groupClone","canRemove","usedSpace","used","size","usedQuota","pow","isNaN","userQuota","humanQuota","userLanguage","userLang","concat","lang","userLastLoginTooltip","lastLogin","formatDate","userLastLogin","relativeModifiedDate","NcAvatar","NcProgressBar","UserRowActions","mixins","UserRowMixin","selectedQuota","rand","random","toString","substring","loadingPossibleManagers","currentManager","editing","subadmins","delete","disable","wipe","editedDisplayName","displayname","editedPassword","editedMail","isObfuscated","isLoadingUser","isLoadingField","uniqueId","encodeURIComponent","userGroupsLabels","join","userSubAdminsGroupsLabels","formatFileSize","canEdit","getCurrentUser","uid","defaultQuota","parseFileSize","userActions","deleteUser","wipeUserDevices","enabled","enableDisableUser","sendWelcomeMail","editedUserQuota","get","unlimitedQuota","set","availableLanguages","initManager","dialogs","confirmDestructive","YES_NO_BUTTONS","confirm","confirmClasses","cancel","result","showSuccess","timeout","finally","filterManagers","managers","userId","searchInitialUserManager","updateUserManager","showError","console","updateDisplayName","updatePassword","updateEmail","addUserGroup","isCreating","removeUserGroup","$route","params","selectedGroup","commit","addUserSubAdmin","removeUserSubAdmin","setUserQuota","undefined","setUserLanguage","$nextTick","displayNameField","backendCapabilities","setDisplayName","canChangePassword","setPassword","at","backend","storageLocation","freeze","Fragment","NcEmptyContent","NewUserModal","UserListFooter","UserListHeader","VirtualList","setup","mdiAccountGroup","rowHeight","UserRow","isInitialLoad","searchQuery","getUsers","quotaPreset","reduce","acc","cur","allowUnlimitedQuota","unshift","usersOffset","getUsersOffset","usersLimit","getUsersLimit","disabledUsersOffset","getDisabledUsersOffset","disabledUsersLimit","getDisabledUsersLimit","usersCount","watch","val","redirectIfDisabled","loadUsers","setNewUserDefaultGroup","created","Notification","showTemporary","resetForm","subscribe","resetSearch","unsubscribe","handleScrollEnd","closeModal","defaultLanguage","isDelegatedAdmin","currentGroup","allGroups","findIndex","usercount","$router","showNewUserForm","NcAppContent","UserList","pageHeading","selectedGroupDecoded","admin","decodeURIComponent","orderBy","sortGroups","OCA","Settings","registerAction","AccountGroup","Delete","NcActionInput","NcAppNavigationItem","NcCounterBubble","NcNoteCard","Pencil","active","count","loadingRenameGroup","openGroupMenu","showRemoveGroupModal","handleGroupMenuOpen","renameGroup","trim","displayNameInput","querySelector","groupid","removeGroup","NcAppSettingsDialog","NcAppSettingsSection","NcCheckboxRadioSwitch","open","loadingSendMail","groupSorting","getGroupSorting","GroupSorting","GroupName","sorting","UserCount","isGroupSortingEnforced","forceSortGroupByName","isModalOpen","status","setShowConfig","newUserSendEmail","axios","post","generateUrl","e","message","setDefaultQuota","app","formatGroupMenu","title","_defineComponent","__name","__props","route","useRoute","router","useRouter","store","useStore","isDialogOpen","getUserCount","getSortedGroups","adminGroup","disabledGroup","useFormatGroups","isAdminOrDelegatedAdmin","isAddGroupOpen","loadingAddGroup","hasAddGroupError","newGroupName","__sfc","groupId","showNewUserMenu","mdiAccount","mdiAccountOff","mdiCog","mdiPlus","mdiShieldAccount","NcActionText","NcAppNavigation","NcAppNavigationCaption","NcAppNavigationList","NcAppNavigationNew","GroupListItem","UserSettingsDialog","_setup","indexOf","_k","keyCode","keys"],"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 56186305c2a6c..ca3af8a60cf5c 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 */ -(()=>{var e,s,r,a={15916:(e,t,s)=>{"use strict";var r;s.d(t,{q:()=>r}),function(e){e[e.UserCount=1]="UserCount",e[e.GroupName=2]="GroupName"}(r||(r={}))},31755:(e,s,r)=>{"use strict";r.d(s,{P:()=>j});var a=r(85471),o=r(95353),i=r(59097),n=r(87485),d=r(35810),c=r(85168),u=r(63814),p=r(65043),l=r(15916),m=r(56760);r(51257);const g=function(e){return e.replace(/\/$/,"")},h=()=>(0,m.C5)(),f=(e,t)=>p.Ay.get(g(e),t),A=(e,t)=>p.Ay.post(g(e),t),b=(e,t)=>p.Ay.put(g(e),t),y=(e,t)=>p.Ay.delete(g(e),{params:t});var I=r(36620);const U=(0,i.c0)("settings").persist(!0).build(),v={id:"",name:"",usercount:0,disabled:0,canAdd:!0,canRemove:!0},L={users:[],groups:[],orderBy:l.q.UserCount,minPasswordLength:0,usersOffset:0,usersLimit:25,disabledUsersOffset:0,disabledUsersLimit:25,userCount:0,showConfig:{showStoragePath:"true"===U.getItem("account_settings__showStoragePath"),showUserBackend:"true"===U.getItem("account_settings__showUserBackend"),showLastLogin:"true"===U.getItem("account_settings__showLastLogin"),showNewUserForm:"true"===U.getItem("account_settings__showNewUserForm"),showLanguages:"true"===U.getItem("account_settings__showLanguages")}},w={appendUsers(e,t){const s=e.users.map((e=>{let{id:t}=e;return t})),r=Object.values(t).filter((e=>{let{id:t}=e;return!s.includes(t)})),a=e.users.concat(r);e.usersOffset+=e.usersLimit,e.users=a},updateDisabledUsers(e,t){e.disabledUsersOffset+=e.disabledUsersLimit},setPasswordPolicyMinLength(e,t){e.minPasswordLength=""!==t?t:0},initGroups(e,t){let{groups:s,orderBy:r,userCount:a}=t;e.groups=s.map((e=>Object.assign({},v,e))),e.orderBy=r,e.userCount=a},addGroup(e,t){let{gid:s,displayName:r}=t;try{if(void 0!==e.groups.find((e=>e.id===s)))return;const t=Object.assign({},v,{id:s,name:r});e.groups.unshift(t)}catch(e){console.error("Can't create group",e)}},renameGroup(e,t){let{gid:s,displayName:r}=t;const a=e.groups.findIndex((e=>e.id===s));if(a>=0){const t=e.groups[a];t.name=r,e.groups.splice(a,1,t)}},removeGroup(e,t){const s=e.groups.findIndex((e=>e.id===t));s>=0&&e.groups.splice(s,1)},addUserGroup(e,t){let{userid:s,gid:r}=t;const a=e.groups.find((e=>e.id===r)),o=e.users.find((e=>e.id===s));a&&o.enabled&&e.userCount>0&&a.usercount++,o.groups.push(r)},removeUserGroup(e,t){let{userid:s,gid:r}=t;const a=e.groups.find((e=>e.id===r)),o=e.users.find((e=>e.id===s));a&&o.enabled&&e.userCount>0&&a.usercount--;const i=o.groups;i.splice(i.indexOf(r),1)},addUserSubAdmin(e,t){let{userid:s,gid:r}=t;e.users.find((e=>e.id===s)).subadmin.push(r)},removeUserSubAdmin(e,t){let{userid:s,gid:r}=t;const a=e.users.find((e=>e.id===s)).subadmin;a.splice(a.indexOf(r),1)},deleteUser(e,t){const s=e.users.findIndex((e=>e.id===t));this.commit("updateUserCounts",{user:e.users[s],actionType:"remove"}),e.users.splice(s,1)},addUserData(e,t){const s=t.data.ocs.data;e.users.unshift(s),this.commit("updateUserCounts",{user:s,actionType:"create"})},enableDisableUser(e,t){let{userid:s,enabled:r}=t;const a=e.users.find((e=>e.id===s));a.enabled=r,this.commit("updateUserCounts",{user:a,actionType:r?"enable":"disable"})},updateUserCounts(e,t){let{user:s,actionType:r}=t;if(0===e.userCount)return;const a=e.groups.find((e=>"disabled"===e.id));switch(r){case"enable":case"disable":a.usercount+=s.enabled?-1:1,e.userCount+=s.enabled?1:-1,s.groups.forEach((t=>{e.groups.find((e=>e.id===t)).disabled+=s.enabled?-1:1}));break;case"create":e.userCount++,s.groups.forEach((t=>{e.groups.find((e=>e.id===t)).usercount++}));break;case"remove":s.enabled?(e.userCount--,s.groups.forEach((t=>{const s=e.groups.find((e=>e.id===t));s?s.usercount--:console.warn("User group "+t+" does not exist during user removal")}))):(a.usercount--,s.groups.forEach((t=>{e.groups.find((e=>e.id===t)).disabled--})));break;default:I.A.error(`Unknown action type in updateUserCounts: '${r}'`)}},setUserData(e,t){let{userid:s,key:r,value:a}=t;if("quota"===r){const t=(0,d.lT)(a,!0);e.users.find((e=>e.id===s))[r][r]=null!==t?t:a}else e.users.find((e=>e.id===s))[r]=a},resetUsers(e){e.users=[],e.usersOffset=0,e.disabledUsersOffset=0},setShowConfig(e,t){let{key:s,value:r}=t;U.setItem(`account_settings__${s}`,JSON.stringify(r)),e.showConfig[s]=r},setGroupSorting(e,s){const r=e.orderBy;e.orderBy=s,p.Ay.post((0,u.Jv)("/settings/users/preferences/group.sortBy"),{value:String(s)}).catch((s=>{e.orderBy=r,(0,c.Qg)(t("settings","Could not set group sorting")),I.A.error(s)}))}},P={getUsers:e=>e.users,getGroups:e=>e.groups,getSubadminGroups:e=>e.groups.filter((e=>"admin"!==e.id&&"disabled"!==e.id)),getSortedGroups(e){const t=[...e.groups];return e.orderBy===l.q.UserCount?t.sort(((e,t)=>{const s=e.usercount-e.disabled,r=t.usercount-t.disabled;return se.name.localeCompare(t.name)))},getGroupSorting:e=>e.orderBy,getPasswordPolicyMinLength:e=>e.minPasswordLength,getUsersOffset:e=>e.usersOffset,getUsersLimit:e=>e.usersLimit,getDisabledUsersOffset:e=>e.disabledUsersOffset,getDisabledUsersLimit:e=>e.disabledUsersLimit,getUserCount:e=>e.userCount,getShowConfig:e=>e.showConfig},_=p.Ay.CancelToken;let C=null;const E={state:L,mutations:w,getters:P,actions:{searchUsers(e,t){let{offset:s,limit:r,search:a}=t;return a="string"==typeof a?a:"",f((0,u.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:s,limit:r,search:a})).catch((t=>{p.Ay.isCancel(t)||e.commit("API_FAILURE",t)}))},getUser:(e,t)=>f((0,u.KT)(`cloud/users/${t}`)).catch((t=>{p.Ay.isCancel(t)||e.commit("API_FAILURE",t)})),getUsers(e,t){let{offset:s,limit:r,search:a,group:o}=t;return C&&C.cancel("Operation canceled by another search request."),C=_.source(),a="string"==typeof a?a:"",a=a.replace(/in:[^\s]+/g,"").trim(),o="string"==typeof o?o:"",""!==o?f((0,u.KT)("cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}",{group:encodeURIComponent(o),offset:s,limit:r,search:a}),{cancelToken:C.token}).then((t=>{const s=Object.keys(t.data.ocs.data.users).length;return s>0&&e.commit("appendUsers",t.data.ocs.data.users),s})).catch((t=>{p.Ay.isCancel(t)||e.commit("API_FAILURE",t)})):f((0,u.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:s,limit:r,search:a}),{cancelToken:C.token}).then((t=>{const s=Object.keys(t.data.ocs.data.users).length;return s>0&&e.commit("appendUsers",t.data.ocs.data.users),s})).catch((t=>{p.Ay.isCancel(t)||e.commit("API_FAILURE",t)}))},async getDisabledUsers(e,t){let{offset:s,limit:r,search:a}=t;const o=(0,u.KT)("cloud/users/disabled?offset={offset}&limit={limit}&search={search}",{offset:s,limit:r,search:a});try{const t=await f(o),s=Object.keys(t.data.ocs.data.users).length;return s>0&&(e.commit("appendUsers",t.data.ocs.data.users),e.commit("updateDisabledUsers",t.data.ocs.data.users)),s}catch(t){e.commit("API_FAILURE",t)}},getGroups(e,t){let{offset:s,limit:r,search:a}=t;a="string"==typeof a?a:"";const o=-1===r?"":`&limit=${r}`;return f((0,u.KT)("cloud/groups?offset={offset}&search={search}",{offset:s,search:a})+o).then((t=>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((t=>e.commit("API_FAILURE",t)))},getUsersFromList(e,t){let{offset:s,limit:r,search:a}=t;return a="string"==typeof a?a:"",f((0,u.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:s,limit:r,search:a})).then((t=>Object.keys(t.data.ocs.data.users).length>0&&(e.commit("appendUsers",t.data.ocs.data.users),!0))).catch((t=>e.commit("API_FAILURE",t)))},getUsersFromGroup(e,t){let{groupid:s,offset:r,limit:a}=t;return f((0,u.KT)("cloud/users/{groupId}/details?offset={offset}&limit={limit}",{groupId:encodeURIComponent(s),offset:r,limit:a})).then((t=>e.commit("getUsersFromList",t.data.ocs.data.users))).catch((t=>e.commit("API_FAILURE",t)))},getPasswordPolicyMinLength:e=>!(!(0,n.F)().password_policy||!(0,n.F)().password_policy.minLength)&&(e.commit("setPasswordPolicyMinLength",(0,n.F)().password_policy.minLength),(0,n.F)().password_policy.minLength),addGroup:(e,t)=>h().then((s=>A((0,u.KT)("cloud/groups"),{groupid:t}).then((s=>(e.commit("addGroup",{gid:t,displayName:t}),{gid:t,displayName:t}))).catch((e=>{throw e})))).catch((s=>{throw e.commit("API_FAILURE",{gid:t,error:s}),s})),renameGroup(e,t){let{groupid:s,displayName:r}=t;return h().then((t=>b((0,u.KT)("cloud/groups/{groupId}",{groupId:encodeURIComponent(s)}),{key:"displayname",value:r}).then((t=>(e.commit("renameGroup",{gid:s,displayName:r}),{groupid:s,displayName:r}))).catch((e=>{throw e})))).catch((t=>{throw e.commit("API_FAILURE",{groupid:s,error:t}),t}))},removeGroup:(e,t)=>h().then((s=>y((0,u.KT)("cloud/groups/{groupId}",{groupId:encodeURIComponent(t)})).then((s=>e.commit("removeGroup",t))).catch((e=>{throw e})))).catch((s=>e.commit("API_FAILURE",{gid:t,error:s}))),addUserGroup(e,t){let{userid:s,gid:r}=t;return h().then((t=>A((0,u.KT)("cloud/users/{userid}/groups",{userid:s}),{groupid:r}).then((t=>e.commit("addUserGroup",{userid:s,gid:r}))).catch((e=>{throw e})))).catch((t=>e.commit("API_FAILURE",{userid:s,error:t})))},removeUserGroup(e,t){let{userid:s,gid:r}=t;return h().then((t=>y((0,u.KT)("cloud/users/{userid}/groups",{userid:s}),{groupid:r}).then((t=>e.commit("removeUserGroup",{userid:s,gid:r}))).catch((e=>{throw e})))).catch((t=>{throw e.commit("API_FAILURE",{userid:s,error:t}),t}))},addUserSubAdmin(e,t){let{userid:s,gid:r}=t;return h().then((t=>A((0,u.KT)("cloud/users/{userid}/subadmins",{userid:s}),{groupid:r}).then((t=>e.commit("addUserSubAdmin",{userid:s,gid:r}))).catch((e=>{throw e})))).catch((t=>e.commit("API_FAILURE",{userid:s,error:t})))},removeUserSubAdmin(e,t){let{userid:s,gid:r}=t;return h().then((t=>y((0,u.KT)("cloud/users/{userid}/subadmins",{userid:s}),{groupid:r}).then((t=>e.commit("removeUserSubAdmin",{userid:s,gid:r}))).catch((e=>{throw e})))).catch((t=>e.commit("API_FAILURE",{userid:s,error:t})))},wipeUserDevices:(e,t)=>h().then((e=>A((0,u.KT)("cloud/users/{userid}/wipe",{userid:t})).catch((e=>{throw e})))).catch((s=>e.commit("API_FAILURE",{userid:t,error:s}))),deleteUser:(e,t)=>h().then((s=>y((0,u.KT)("cloud/users/{userid}",{userid:t})).then((s=>e.commit("deleteUser",t))).catch((e=>{throw e})))).catch((s=>e.commit("API_FAILURE",{userid:t,error:s}))),addUser(e,t){let{commit:s,dispatch:r}=e,{userid:a,password:o,displayName:i,email:n,groups:d,subadmin:c,quota:p,language:l,manager:m}=t;return h().then((e=>A((0,u.KT)("cloud/users"),{userid:a,password:o,displayName:i,email:n,groups:d,subadmin:c,quota:p,language:l,manager:m}).then((e=>r("addUserData",a||e.data.ocs.data.id))).catch((e=>{throw e})))).catch((e=>{throw s("API_FAILURE",{userid:a,error:e}),e}))},addUserData:(e,t)=>h().then((s=>f((0,u.KT)("cloud/users/{userid}",{userid:t})).then((t=>e.commit("addUserData",t))).catch((e=>{throw e})))).catch((s=>e.commit("API_FAILURE",{userid:t,error:s}))),enableDisableUser(e,t){let{userid:s,enabled:r=!0}=t;const a=r?"enable":"disable";return h().then((t=>b((0,u.KT)("cloud/users/{userid}/{userStatus}",{userid:s,userStatus:a})).then((t=>e.commit("enableDisableUser",{userid:s,enabled:r}))).catch((e=>{throw e})))).catch((t=>e.commit("API_FAILURE",{userid:s,error:t})))},setUserData(e,t){let{userid:s,key:r,value:a}=t;const o=["email","displayname","manager"];return-1!==["email","language","quota","displayname","password","manager"].indexOf(r)&&"string"==typeof a&&(-1===o.indexOf(r)&&a.length>0||-1!==o.indexOf(r))?h().then((t=>b((0,u.KT)("cloud/users/{userid}",{userid:s}),{key:r,value:a}).then((t=>e.commit("setUserData",{userid:s,key:r,value:a}))).catch((e=>{throw e})))).catch((t=>e.commit("API_FAILURE",{userid:s,error:t}))):Promise.reject(new Error("Invalid request data"))},sendWelcomeMail:(e,t)=>h().then((e=>A((0,u.KT)("cloud/users/{userid}/welcome",{userid:t})).then((e=>!0)).catch((e=>{throw e})))).catch((s=>e.commit("API_FAILURE",{userid:t,error:s})))}};var R=r(32981);const T={apps:[],bundles:(0,R.C)("settings","appstoreBundles",[]),categories:[],updateCount:(0,R.C)("settings","appstoreUpdateCount",0),loading:{},gettingCategoriesPromise:null},F={APPS_API_FAILURE(e,s){(0,c.Qg)(t("settings","An error occurred during the request. Unable to proceed.")+"
"+s.error.response.data.data.message,{isHTML:!0}),console.error(e,s)},initCategories(e,t){let{categories:s,updateCount:r}=t;e.categories=s,e.updateCount=r},updateCategories(e,t){e.gettingCategoriesPromise=t},setUpdateCount(e,t){e.updateCount=t},addCategory(e,t){e.categories.push(t)},appendCategories(e,t){e.categories=t},setAllApps(e,t){e.apps=t},setError(e,t){let{appId:s,error:r}=t;Array.isArray(s)||(s=[s]),s.forEach((t=>{e.apps.find((e=>e.id===t)).error=r}))},clearError(e,t){let{appId:s,error:r}=t;e.apps.find((e=>e.id===s)).error=null},enableApp(e,t){let{appId:s,groups:r}=t;const a=e.apps.find((e=>e.id===s));a.active=!0,a.groups=r},setInstallState(e,t){let{appId:s,canInstall:r}=t;const a=e.apps.find((e=>e.id===s));a&&(a.canInstall=!0===r)},disableApp(e,t){const s=e.apps.find((e=>e.id===t));s.active=!1,s.groups=[],s.removable&&(s.canUnInstall=!0)},uninstallApp(e,t){e.apps.find((e=>e.id===t)).active=!1,e.apps.find((e=>e.id===t)).groups=[],e.apps.find((e=>e.id===t)).needsDownload=!0,e.apps.find((e=>e.id===t)).installed=!1,e.apps.find((e=>e.id===t)).canUnInstall=!1,e.apps.find((e=>e.id===t)).canInstall=!0},updateApp(e,t){const s=e.apps.find((e=>e.id===t)),r=s.update;s.update=null,s.version=r,e.updateCount--},resetApps(e){e.apps=[]},reset(e){e.apps=[],e.categories=[],e.updateCount=0},startLoading(e,t){Array.isArray(t)?t.forEach((t=>{a.Ay.set(e.loading,t,!0)})):a.Ay.set(e.loading,t,!0)},stopLoading(e,t){Array.isArray(t)?t.forEach((t=>{a.Ay.set(e.loading,t,!1)})):a.Ay.set(e.loading,t,!1)}},O={enableApp(e,s){let r,{appId:a,groups:o}=s;return r=Array.isArray(a)?a:[a],h().then((s=>(e.commit("startLoading",r),e.commit("startLoading","install"),A((0,u.Jv)("settings/apps/enable"),{appIds:r,groups:o}).then((s=>(e.commit("stopLoading",r),e.commit("stopLoading","install"),r.forEach((t=>{e.commit("enableApp",{appId:t,groups:o})})),p.Ay.get((0,u.Jv)("apps/files/")).then((()=>{s.data.update_required&&((0,c.cf)(t("settings","The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds."),{onClick:()=>window.location.reload(),close:!1}),setTimeout((function(){location.reload()}),5e3))})).catch((()=>{Array.isArray(a)||((0,c.Qg)(t("settings","Error: This app cannot be enabled because it makes the server unstable")),e.commit("setError",{appId:r,error:t("settings","Error: This app cannot be enabled because it makes the server unstable")}),e.dispatch("disableApp",{appId:a}))}))))).catch((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:a,error:t})}))))).catch((t=>e.commit("API_FAILURE",{appId:a,error:t})))},forceEnableApp(e,t){let s,{appId:r,groups:a}=t;return s=Array.isArray(r)?r:[r],h().then((()=>(e.commit("startLoading",s),e.commit("startLoading","install"),A((0,u.Jv)("settings/apps/force"),{appId:r}).then((t=>{e.commit("setInstallState",{appId:r,canInstall:!0})})).catch((t=>{e.commit("stopLoading",s),e.commit("stopLoading","install"),e.commit("setError",{appId:s,error:t.response.data.data.message}),e.commit("APPS_API_FAILURE",{appId:r,error:t})})).finally((()=>{e.commit("stopLoading",s),e.commit("stopLoading","install")}))))).catch((t=>e.commit("API_FAILURE",{appId:r,error:t})))},disableApp(e,t){let s,{appId:r}=t;return s=Array.isArray(r)?r:[r],h().then((t=>(e.commit("startLoading",s),A((0,u.Jv)("settings/apps/disable"),{appIds:s}).then((t=>(e.commit("stopLoading",s),s.forEach((t=>{e.commit("disableApp",t)})),!0))).catch((t=>{e.commit("stopLoading",s),e.commit("APPS_API_FAILURE",{appId:r,error:t})}))))).catch((t=>e.commit("API_FAILURE",{appId:r,error:t})))},uninstallApp(e,t){let{appId:s}=t;return h().then((t=>(e.commit("startLoading",s),f((0,u.Jv)(`settings/apps/uninstall/${s}`)).then((t=>(e.commit("stopLoading",s),e.commit("uninstallApp",s),!0))).catch((t=>{e.commit("stopLoading",s),e.commit("APPS_API_FAILURE",{appId:s,error:t})}))))).catch((t=>e.commit("API_FAILURE",{appId:s,error:t})))},updateApp(e,t){let{appId:s}=t;return h().then((t=>(e.commit("startLoading",s),e.commit("startLoading","install"),f((0,u.Jv)(`settings/apps/update/${s}`)).then((t=>(e.commit("stopLoading","install"),e.commit("stopLoading",s),e.commit("updateApp",s),!0))).catch((t=>{e.commit("stopLoading",s),e.commit("stopLoading","install"),e.commit("APPS_API_FAILURE",{appId:s,error:t})}))))).catch((t=>e.commit("API_FAILURE",{appId:s,error:t})))},getAllApps:e=>(e.commit("startLoading","list"),f((0,u.Jv)("settings/apps/list")).then((t=>(e.commit("setAllApps",t.data.apps),e.commit("stopLoading","list"),!0))).catch((t=>e.commit("API_FAILURE",t)))),async getCategories(e){let{shouldRefetchCategories:t=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(t||!e.state.gettingCategoriesPromise){e.commit("startLoading","categories");try{const t=f((0,u.Jv)("settings/apps/categories"));e.commit("updateCategories",t);const s=await t;return s.data.length>0?(e.commit("appendCategories",s.data),e.commit("stopLoading","categories"),!0):(e.commit("stopLoading","categories"),!1)}catch(t){e.commit("API_FAILURE",t)}}return e.state.gettingCategoriesPromise}},k={state:T,mutations:F,getters:{loading:e=>function(t){return e.loading[t]},getCategories:e=>e.categories,getAllApps:e=>e.apps,getAppBundles:e=>e.bundles,getUpdateCount:e=>e.updateCount,getCategoryById:e=>t=>e.categories.find((e=>e.id===t))},actions:O},S={serverData:(0,R.C)("settings","usersSettings",{})},G={setServerData(e,t){e.serverData=t}},N={state:S,mutations:G,getters:{getServerData:e=>e.serverData},actions:{}},D={state:{},mutations:{},getters:{},actions:{setAppConfig(e,t){let{app:s,key:r,value:a}=t;return h().then((e=>A((0,u.KT)("apps/provisioning_api/api/v1/config/apps/{app}/{key}",{app:s,key:r}),{value:a}).catch((e=>{throw e})))).catch((t=>e.commit("API_FAILURE",{app:s,key:r,value:a,error:t})))}}};a.Ay.use(o.Ay);const K={API_FAILURE(e,s){try{const e=s.error.response.data.ocs.meta.message;(0,c.Qg)(t("settings","An error occurred during the request. Unable to proceed.")+"
"+e,{isHTML:!0})}catch(e){(0,c.Qg)(t("settings","An error occurred during the request. Unable to proceed."))}console.error(e,s)}};let x=null;const j=()=>(null===x&&(x=new o.il({modules:{users:E,apps:k,settings:N,oc:D},strict:!1,mutations:K})),x)},36620:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});const r=(0,s(35947).YK)().setApp("settings").detectUser().build()},58723:(e,t)=>{function s(e,t){var r={name:e.name,path:e.path,hash:e.hash,query:e.query,params:e.params,fullPath:e.fullPath,meta:e.meta};return t&&(r.from=s(t)),Object.freeze(r)}t.O=function(e,t,r){var a=(r||{}).moduleName||"route";e.registerModule(a,{namespaced:!0,state:s(t.currentRoute),mutations:{ROUTE_CHANGED:function(t,r){e.state[a]=s(r.to,r.from)}}});var o,i=!1,n=e.watch((function(e){return e[a]}),(function(e){var s=e.fullPath;s!==o&&(null!=o&&(i=!0,t.push(e)),o=s)}),{sync:!0}),d=t.afterEach((function(t,s){i?i=!1:(o=t.fullPath,e.commit(a+"/ROUTE_CHANGED",{to:t,from:s}))}));return function(){null!=d&&d(),null!=n&&n(),e.unregisterModule(a)}}},74329:(e,t,s)=>{"use strict";var r=s(85471),a=s(80284),o=s(58723),i=s(53334),n=s(22378);const d=(0,r.pM)({__name:"SettingsApp",setup:e=>({__sfc:!0,NcContent:n.A})}),c=(0,s(14486).A)(d,(function(){var e=this,t=e._self._c;return t(e._self._setupProxy.NcContent,{attrs:{"app-name":"settings"}},[t("router-view",{attrs:{name:"navigation"}}),e._v(" "),t("router-view"),e._v(" "),t("router-view",{attrs:{name:"sidebar"}})],1)}),[],!1,null,null,null).exports;var u=s(40173),p=s(63814);const l=[{name:"users",path:"/:index(index.php/)?settings/users",components:{default:()=>Promise.all([s.e(4208),s.e(7265),s.e(3239)]).then(s.bind(s,37496)),navigation:()=>Promise.all([s.e(4208),s.e(7265),s.e(3239)]).then(s.bind(s,73895))},props:!0,children:[{path:":selectedGroup",name:"group"}]},{path:"/:index(index.php/)?settings/apps",name:"apps",redirect:{name:"apps-category",params:{category:(0,s(32981).C)("settings","appstoreEnabled",!0)?"discover":"installed"}},components:{default:()=>Promise.all([s.e(4208),s.e(7265),s.e(4529)]).then(s.bind(s,3630)),navigation:()=>Promise.all([s.e(4208),s.e(7265),s.e(4529)]).then(s.bind(s,71827)),sidebar:()=>Promise.all([s.e(4208),s.e(7265),s.e(4529)]).then(s.bind(s,16102))},children:[{path:":category",name:"apps-category",children:[{path:":id",name:"apps-details"}]}]}];r.Ay.use(u.Ay);const m=new u.Ay({mode:"history",base:(0,p.Jv)(""),linkActiveClass:"active",routes:l});var g=s(31755),h=s(21777),f=s(65899);r.Ay.use(a.Ay,{defaultHtml:!1});const A=(0,g.P)();(0,o.O)(A,m),s.nc=btoa((0,h.do)()??""),r.Ay.prototype.t=i.Tl,r.Ay.prototype.n=i.zw,r.Ay.use(f.R2);const b=(0,f.Ey)();new r.Ay({router:m,store:A,pinia:b,render:e=>e(c),el:"#content"})}},o={};function i(e){var t=o[e];if(void 0!==t)return t.exports;var s=o[e]={id:e,loaded:!1,exports:{}};return a[e].call(s.exports,s,s.exports,i),s.loaded=!0,s.exports}i.m=a,e=[],i.O=(t,s,r,a)=>{if(!s){var o=1/0;for(u=0;u=a)&&Object.keys(i.O).every((e=>i.O[e](s[d])))?s.splice(d--,1):(n=!1,a0&&e[u-1][2]>a;u--)e[u]=e[u-1];e[u]=[s,r,a]},i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var s in t)i.o(t,s)&&!i.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,s)=>(i.f[s](e,t),t)),[])),i.u=e=>(({3239:"settings-users",4529:"settings-apps-view"}[e]||e)+"-"+e+".js?v="+{1544:"34736cf5f97675c121ab",2441:"bd6d3dc836e836cd4795",3239:"c885b5e954837f484701",3865:"e5bf95b42e72ee8115f3",4529:"a67cba58b65aa5810be6",5775:"2db0bc22d25dcd7b0e81",5862:"18c97d281a8207f0ce8d",7265:"4debcb39bc5bc1550c8c",8630:"1c63d6550408bf0f2211"}[e]),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=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s={},r="nextcloud:",i.l=(e,t,a,o)=>{if(s[e])s[e].push(t);else{var n,d;if(void 0!==a)for(var c=document.getElementsByTagName("script"),u=0;u{n.onerror=n.onload=null,clearTimeout(m);var a=s[e];if(delete s[e],n.parentNode&&n.parentNode.removeChild(n),a&&a.forEach((e=>e(r))),t)return t(r)},m=setTimeout(l.bind(null,void 0,{type:"timeout",target:n}),12e4);n.onerror=l.bind(null,n.onerror),n.onload=l.bind(null,n.onload),d&&document.head.appendChild(n)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),i.j=2689,(()=>{var e;i.g.importScripts&&(e=i.g.location+"");var t=i.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var s=t.getElementsByTagName("script");if(s.length)for(var r=s.length-1;r>-1&&(!e||!/^http(s?):/.test(e));)e=s[r--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),i.p=e})(),(()=>{i.b=document.baseURI||self.location.href;var e={2689:0};i.f.j=(t,s)=>{var r=i.o(e,t)?e[t]:void 0;if(0!==r)if(r)s.push(r[2]);else{var a=new Promise(((s,a)=>r=e[t]=[s,a]));s.push(r[2]=a);var o=i.p+i.u(t),n=new Error;i.l(o,(s=>{if(i.o(e,t)&&(0!==(r=e[t])&&(e[t]=void 0),r)){var a=s&&("load"===s.type?"missing":s.type),o=s&&s.target&&s.target.src;n.message="Loading chunk "+t+" failed.\n("+a+": "+o+")",n.name="ChunkLoadError",n.type=a,n.request=o,r[1](n)}}),"chunk-"+t,t)}},i.O.j=t=>0===e[t];var t=(t,s)=>{var r,a,o=s[0],n=s[1],d=s[2],c=0;if(o.some((t=>0!==e[t]))){for(r in n)i.o(n,r)&&(i.m[r]=n[r]);if(d)var u=d(i)}for(t&&t(s);ci(74329)));n=i.O(n)})(); -//# sourceMappingURL=settings-vue-settings-apps-users-management.js.map?v=a8ab8b98e5d2f52bf15a \ No newline at end of file +(()=>{var e,s,r,a={15916:(e,t,s)=>{"use strict";var r;s.d(t,{q:()=>r}),function(e){e[e.UserCount=1]="UserCount",e[e.GroupName=2]="GroupName"}(r||(r={}))},31755:(e,s,r)=>{"use strict";r.d(s,{P:()=>x});var a=r(85471),o=r(95353),i=r(59097),n=r(87485),d=r(35810),c=r(85168),u=r(63814),p=r(65043),l=r(15916),m=r(56760);r(51257);const g=function(e){return e.replace(/\/$/,"")},h=()=>(0,m.C5)(),f=(e,t)=>p.Ay.get(g(e),t),A=(e,t)=>p.Ay.post(g(e),t),b=(e,t)=>p.Ay.put(g(e),t),y=(e,t)=>p.Ay.delete(g(e),{params:t});var I=r(36620);const U=(0,i.c0)("settings").persist(!0).build(),v={id:"",name:"",usercount:0,disabled:0,canAdd:!0,canRemove:!0},L={users:[],groups:[],orderBy:l.q.UserCount,minPasswordLength:0,usersOffset:0,usersLimit:25,disabledUsersOffset:0,disabledUsersLimit:25,userCount:0,showConfig:{showStoragePath:"true"===U.getItem("account_settings__showStoragePath"),showUserBackend:"true"===U.getItem("account_settings__showUserBackend"),showLastLogin:"true"===U.getItem("account_settings__showLastLogin"),showNewUserForm:"true"===U.getItem("account_settings__showNewUserForm"),showLanguages:"true"===U.getItem("account_settings__showLanguages")}},w={appendUsers(e,t){const s=e.users.map((e=>{let{id:t}=e;return t})),r=Object.values(t).filter((e=>{let{id:t}=e;return!s.includes(t)})),a=e.users.concat(r);e.usersOffset+=e.usersLimit,e.users=a},updateDisabledUsers(e,t){e.disabledUsersOffset+=e.disabledUsersLimit},setPasswordPolicyMinLength(e,t){e.minPasswordLength=""!==t?t:0},initGroups(e,t){let{groups:s,orderBy:r,userCount:a}=t;e.groups=s.map((e=>Object.assign({},v,e))),e.orderBy=r,e.userCount=a},addGroup(e,t){let{gid:s,displayName:r}=t;try{if(void 0!==e.groups.find((e=>e.id===s)))return;const t=Object.assign({},v,{id:s,name:r});e.groups.unshift(t)}catch(e){console.error("Can't create group",e)}},renameGroup(e,t){let{gid:s,displayName:r}=t;const a=e.groups.findIndex((e=>e.id===s));if(a>=0){const t=e.groups[a];t.name=r,e.groups.splice(a,1,t)}},removeGroup(e,t){const s=e.groups.findIndex((e=>e.id===t));s>=0&&e.groups.splice(s,1)},addUserGroup(e,t){let{userid:s,gid:r}=t;const a=e.groups.find((e=>e.id===r)),o=e.users.find((e=>e.id===s));a&&o.enabled&&e.userCount>0&&a.usercount++,o.groups.push(r)},removeUserGroup(e,t){let{userid:s,gid:r}=t;const a=e.groups.find((e=>e.id===r)),o=e.users.find((e=>e.id===s));a&&o.enabled&&e.userCount>0&&a.usercount--;const i=o.groups;i.splice(i.indexOf(r),1)},addUserSubAdmin(e,t){let{userid:s,gid:r}=t;e.users.find((e=>e.id===s)).subadmin.push(r)},removeUserSubAdmin(e,t){let{userid:s,gid:r}=t;const a=e.users.find((e=>e.id===s)).subadmin;a.splice(a.indexOf(r),1)},deleteUser(e,t){const s=e.users.findIndex((e=>e.id===t));this.commit("updateUserCounts",{user:e.users[s],actionType:"remove"}),e.users.splice(s,1)},addUserData(e,t){const s=t.data.ocs.data;e.users.unshift(s),this.commit("updateUserCounts",{user:s,actionType:"create"})},enableDisableUser(e,t){let{userid:s,enabled:r}=t;const a=e.users.find((e=>e.id===s));a.enabled=r,this.commit("updateUserCounts",{user:a,actionType:r?"enable":"disable"})},updateUserCounts(e,t){let{user:s,actionType:r}=t;if(0===e.userCount)return;const a=e.groups.find((e=>"disabled"===e.id));switch(r){case"enable":case"disable":a.usercount+=s.enabled?-1:1,e.userCount+=s.enabled?1:-1,s.groups.forEach((t=>{e.groups.find((e=>e.id===t)).disabled+=s.enabled?-1:1}));break;case"create":e.userCount++,s.groups.forEach((t=>{e.groups.find((e=>e.id===t)).usercount++}));break;case"remove":s.enabled?(e.userCount--,s.groups.forEach((t=>{const s=e.groups.find((e=>e.id===t));s?s.usercount--:console.warn("User group "+t+" does not exist during user removal")}))):(a.usercount--,s.groups.forEach((t=>{e.groups.find((e=>e.id===t)).disabled--})));break;default:I.A.error(`Unknown action type in updateUserCounts: '${r}'`)}},setUserData(e,t){let{userid:s,key:r,value:a}=t;if("quota"===r){const t=(0,d.lT)(a,!0);e.users.find((e=>e.id===s))[r][r]=null!==t?t:a}else e.users.find((e=>e.id===s))[r]=a},resetUsers(e){e.users=[],e.usersOffset=0,e.disabledUsersOffset=0},setShowConfig(e,t){let{key:s,value:r}=t;U.setItem(`account_settings__${s}`,JSON.stringify(r)),e.showConfig[s]=r},setGroupSorting(e,s){const r=e.orderBy;e.orderBy=s,p.Ay.post((0,u.Jv)("/settings/users/preferences/group.sortBy"),{value:String(s)}).catch((s=>{e.orderBy=r,(0,c.Qg)(t("settings","Could not set group sorting")),I.A.error(s)}))}},P={getUsers:e=>e.users,getGroups:e=>e.groups,getSubadminGroups:e=>e.groups.filter((e=>"admin"!==e.id&&"disabled"!==e.id)),getSortedGroups(e){const t=[...e.groups];return e.orderBy===l.q.UserCount?t.sort(((e,t)=>{const s=e.usercount-e.disabled,r=t.usercount-t.disabled;return se.name.localeCompare(t.name)))},getGroupSorting:e=>e.orderBy,getPasswordPolicyMinLength:e=>e.minPasswordLength,getUsersOffset:e=>e.usersOffset,getUsersLimit:e=>e.usersLimit,getDisabledUsersOffset:e=>e.disabledUsersOffset,getDisabledUsersLimit:e=>e.disabledUsersLimit,getUserCount:e=>e.userCount,getShowConfig:e=>e.showConfig},_=p.Ay.CancelToken;let C=null;const E={state:L,mutations:w,getters:P,actions:{searchUsers(e,t){let{offset:s,limit:r,search:a}=t;return a="string"==typeof a?a:"",f((0,u.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:s,limit:r,search:a})).catch((t=>{p.Ay.isCancel(t)||e.commit("API_FAILURE",t)}))},getUser:(e,t)=>f((0,u.KT)(`cloud/users/${t}`)).catch((t=>{p.Ay.isCancel(t)||e.commit("API_FAILURE",t)})),getUsers(e,t){let{offset:s,limit:r,search:a,group:o}=t;return C&&C.cancel("Operation canceled by another search request."),C=_.source(),a="string"==typeof a?a:"",a=a.replace(/in:[^\s]+/g,"").trim(),o="string"==typeof o?o:"",""!==o?f((0,u.KT)("cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}",{group:encodeURIComponent(o),offset:s,limit:r,search:a}),{cancelToken:C.token}).then((t=>{const s=Object.keys(t.data.ocs.data.users).length;return s>0&&e.commit("appendUsers",t.data.ocs.data.users),s})).catch((t=>{p.Ay.isCancel(t)||e.commit("API_FAILURE",t)})):f((0,u.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:s,limit:r,search:a}),{cancelToken:C.token}).then((t=>{const s=Object.keys(t.data.ocs.data.users).length;return s>0&&e.commit("appendUsers",t.data.ocs.data.users),s})).catch((t=>{p.Ay.isCancel(t)||e.commit("API_FAILURE",t)}))},async getDisabledUsers(e,t){let{offset:s,limit:r,search:a}=t;const o=(0,u.KT)("cloud/users/disabled?offset={offset}&limit={limit}&search={search}",{offset:s,limit:r,search:a});try{const t=await f(o),s=Object.keys(t.data.ocs.data.users).length;return s>0&&(e.commit("appendUsers",t.data.ocs.data.users),e.commit("updateDisabledUsers",t.data.ocs.data.users)),s}catch(t){e.commit("API_FAILURE",t)}},getGroups(e,t){let{offset:s,limit:r,search:a}=t;a="string"==typeof a?a:"";const o=-1===r?"":`&limit=${r}`;return f((0,u.KT)("cloud/groups?offset={offset}&search={search}",{offset:s,search:a})+o).then((t=>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((t=>e.commit("API_FAILURE",t)))},getUsersFromList(e,t){let{offset:s,limit:r,search:a}=t;return a="string"==typeof a?a:"",f((0,u.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:s,limit:r,search:a})).then((t=>Object.keys(t.data.ocs.data.users).length>0&&(e.commit("appendUsers",t.data.ocs.data.users),!0))).catch((t=>e.commit("API_FAILURE",t)))},getUsersFromGroup(e,t){let{groupid:s,offset:r,limit:a}=t;return f((0,u.KT)("cloud/users/{groupId}/details?offset={offset}&limit={limit}",{groupId:encodeURIComponent(s),offset:r,limit:a})).then((t=>e.commit("getUsersFromList",t.data.ocs.data.users))).catch((t=>e.commit("API_FAILURE",t)))},getPasswordPolicyMinLength:e=>!(!(0,n.F)().password_policy||!(0,n.F)().password_policy.minLength)&&(e.commit("setPasswordPolicyMinLength",(0,n.F)().password_policy.minLength),(0,n.F)().password_policy.minLength),addGroup:(e,t)=>h().then((s=>A((0,u.KT)("cloud/groups"),{groupid:t}).then((s=>(e.commit("addGroup",{gid:t,displayName:t}),{gid:t,displayName:t}))).catch((e=>{throw e})))).catch((s=>{throw e.commit("API_FAILURE",{gid:t,error:s}),s})),renameGroup(e,t){let{groupid:s,displayName:r}=t;return h().then((t=>b((0,u.KT)("cloud/groups/{groupId}",{groupId:encodeURIComponent(s)}),{key:"displayname",value:r}).then((t=>(e.commit("renameGroup",{gid:s,displayName:r}),{groupid:s,displayName:r}))).catch((e=>{throw e})))).catch((t=>{throw e.commit("API_FAILURE",{groupid:s,error:t}),t}))},removeGroup:(e,t)=>h().then((s=>y((0,u.KT)("cloud/groups/{groupId}",{groupId:encodeURIComponent(t)})).then((s=>e.commit("removeGroup",t))).catch((e=>{throw e})))).catch((s=>e.commit("API_FAILURE",{gid:t,error:s}))),addUserGroup(e,t){let{userid:s,gid:r}=t;return h().then((t=>A((0,u.KT)("cloud/users/{userid}/groups",{userid:s}),{groupid:r}).then((t=>e.commit("addUserGroup",{userid:s,gid:r}))).catch((e=>{throw e})))).catch((t=>e.commit("API_FAILURE",{userid:s,error:t})))},removeUserGroup(e,t){let{userid:s,gid:r}=t;return h().then((t=>y((0,u.KT)("cloud/users/{userid}/groups",{userid:s}),{groupid:r}).then((t=>e.commit("removeUserGroup",{userid:s,gid:r}))).catch((e=>{throw e})))).catch((t=>{throw e.commit("API_FAILURE",{userid:s,error:t}),t}))},addUserSubAdmin(e,t){let{userid:s,gid:r}=t;return h().then((t=>A((0,u.KT)("cloud/users/{userid}/subadmins",{userid:s}),{groupid:r}).then((t=>e.commit("addUserSubAdmin",{userid:s,gid:r}))).catch((e=>{throw e})))).catch((t=>e.commit("API_FAILURE",{userid:s,error:t})))},removeUserSubAdmin(e,t){let{userid:s,gid:r}=t;return h().then((t=>y((0,u.KT)("cloud/users/{userid}/subadmins",{userid:s}),{groupid:r}).then((t=>e.commit("removeUserSubAdmin",{userid:s,gid:r}))).catch((e=>{throw e})))).catch((t=>e.commit("API_FAILURE",{userid:s,error:t})))},async wipeUserDevices(e,t){try{return await h(),await A((0,u.KT)("cloud/users/{userid}/wipe",{userid:t}))}catch(s){return e.commit("API_FAILURE",{userid:t,error:s}),Promise.reject(new Error("Failed to wipe user devices"))}},deleteUser:(e,t)=>h().then((s=>y((0,u.KT)("cloud/users/{userid}",{userid:t})).then((s=>e.commit("deleteUser",t))).catch((e=>{throw e})))).catch((s=>e.commit("API_FAILURE",{userid:t,error:s}))),addUser(e,t){let{commit:s,dispatch:r}=e,{userid:a,password:o,displayName:i,email:n,groups:d,subadmin:c,quota:p,language:l,manager:m}=t;return h().then((e=>A((0,u.KT)("cloud/users"),{userid:a,password:o,displayName:i,email:n,groups:d,subadmin:c,quota:p,language:l,manager:m}).then((e=>r("addUserData",a||e.data.ocs.data.id))).catch((e=>{throw e})))).catch((e=>{throw s("API_FAILURE",{userid:a,error:e}),e}))},addUserData:(e,t)=>h().then((s=>f((0,u.KT)("cloud/users/{userid}",{userid:t})).then((t=>e.commit("addUserData",t))).catch((e=>{throw e})))).catch((s=>e.commit("API_FAILURE",{userid:t,error:s}))),enableDisableUser(e,t){let{userid:s,enabled:r=!0}=t;const a=r?"enable":"disable";return h().then((t=>b((0,u.KT)("cloud/users/{userid}/{userStatus}",{userid:s,userStatus:a})).then((t=>e.commit("enableDisableUser",{userid:s,enabled:r}))).catch((e=>{throw e})))).catch((t=>e.commit("API_FAILURE",{userid:s,error:t})))},async setUserData(e,t){let{userid:s,key:r,value:a}=t;const o=["email","displayname","manager"];if(-1!==["email","language","quota","displayname","password","manager"].indexOf(r)&&"string"==typeof a&&(-1===o.indexOf(r)&&a.length>0||-1!==o.indexOf(r)))try{return await h(),await b((0,u.KT)("cloud/users/{userid}",{userid:s}),{key:r,value:a}),e.commit("setUserData",{userid:s,key:r,value:a})}catch(t){e.commit("API_FAILURE",{userid:s,error:t})}return Promise.reject(new Error("Invalid request data"))},sendWelcomeMail:(e,t)=>h().then((e=>A((0,u.KT)("cloud/users/{userid}/welcome",{userid:t})).then((e=>!0)).catch((e=>{throw e})))).catch((s=>e.commit("API_FAILURE",{userid:t,error:s})))}};var R=r(32981);const T={apps:[],bundles:(0,R.C)("settings","appstoreBundles",[]),categories:[],updateCount:(0,R.C)("settings","appstoreUpdateCount",0),loading:{},gettingCategoriesPromise:null},F={APPS_API_FAILURE(e,s){(0,c.Qg)(t("settings","An error occurred during the request. Unable to proceed.")+"
"+s.error.response.data.data.message,{isHTML:!0}),console.error(e,s)},initCategories(e,t){let{categories:s,updateCount:r}=t;e.categories=s,e.updateCount=r},updateCategories(e,t){e.gettingCategoriesPromise=t},setUpdateCount(e,t){e.updateCount=t},addCategory(e,t){e.categories.push(t)},appendCategories(e,t){e.categories=t},setAllApps(e,t){e.apps=t},setError(e,t){let{appId:s,error:r}=t;Array.isArray(s)||(s=[s]),s.forEach((t=>{e.apps.find((e=>e.id===t)).error=r}))},clearError(e,t){let{appId:s,error:r}=t;e.apps.find((e=>e.id===s)).error=null},enableApp(e,t){let{appId:s,groups:r}=t;const a=e.apps.find((e=>e.id===s));a.active=!0,a.groups=r},setInstallState(e,t){let{appId:s,canInstall:r}=t;const a=e.apps.find((e=>e.id===s));a&&(a.canInstall=!0===r)},disableApp(e,t){const s=e.apps.find((e=>e.id===t));s.active=!1,s.groups=[],s.removable&&(s.canUnInstall=!0)},uninstallApp(e,t){e.apps.find((e=>e.id===t)).active=!1,e.apps.find((e=>e.id===t)).groups=[],e.apps.find((e=>e.id===t)).needsDownload=!0,e.apps.find((e=>e.id===t)).installed=!1,e.apps.find((e=>e.id===t)).canUnInstall=!1,e.apps.find((e=>e.id===t)).canInstall=!0},updateApp(e,t){const s=e.apps.find((e=>e.id===t)),r=s.update;s.update=null,s.version=r,e.updateCount--},resetApps(e){e.apps=[]},reset(e){e.apps=[],e.categories=[],e.updateCount=0},startLoading(e,t){Array.isArray(t)?t.forEach((t=>{a.Ay.set(e.loading,t,!0)})):a.Ay.set(e.loading,t,!0)},stopLoading(e,t){Array.isArray(t)?t.forEach((t=>{a.Ay.set(e.loading,t,!1)})):a.Ay.set(e.loading,t,!1)}},O={enableApp(e,s){let r,{appId:a,groups:o}=s;return r=Array.isArray(a)?a:[a],h().then((s=>(e.commit("startLoading",r),e.commit("startLoading","install"),A((0,u.Jv)("settings/apps/enable"),{appIds:r,groups:o}).then((s=>(e.commit("stopLoading",r),e.commit("stopLoading","install"),r.forEach((t=>{e.commit("enableApp",{appId:t,groups:o})})),p.Ay.get((0,u.Jv)("apps/files/")).then((()=>{s.data.update_required&&((0,c.cf)(t("settings","The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds."),{onClick:()=>window.location.reload(),close:!1}),setTimeout((function(){location.reload()}),5e3))})).catch((()=>{Array.isArray(a)||((0,c.Qg)(t("settings","Error: This app cannot be enabled because it makes the server unstable")),e.commit("setError",{appId:r,error:t("settings","Error: This app cannot be enabled because it makes the server unstable")}),e.dispatch("disableApp",{appId:a}))}))))).catch((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:a,error:t})}))))).catch((t=>e.commit("API_FAILURE",{appId:a,error:t})))},forceEnableApp(e,t){let s,{appId:r,groups:a}=t;return s=Array.isArray(r)?r:[r],h().then((()=>(e.commit("startLoading",s),e.commit("startLoading","install"),A((0,u.Jv)("settings/apps/force"),{appId:r}).then((t=>{e.commit("setInstallState",{appId:r,canInstall:!0})})).catch((t=>{e.commit("stopLoading",s),e.commit("stopLoading","install"),e.commit("setError",{appId:s,error:t.response.data.data.message}),e.commit("APPS_API_FAILURE",{appId:r,error:t})})).finally((()=>{e.commit("stopLoading",s),e.commit("stopLoading","install")}))))).catch((t=>e.commit("API_FAILURE",{appId:r,error:t})))},disableApp(e,t){let s,{appId:r}=t;return s=Array.isArray(r)?r:[r],h().then((t=>(e.commit("startLoading",s),A((0,u.Jv)("settings/apps/disable"),{appIds:s}).then((t=>(e.commit("stopLoading",s),s.forEach((t=>{e.commit("disableApp",t)})),!0))).catch((t=>{e.commit("stopLoading",s),e.commit("APPS_API_FAILURE",{appId:r,error:t})}))))).catch((t=>e.commit("API_FAILURE",{appId:r,error:t})))},uninstallApp(e,t){let{appId:s}=t;return h().then((t=>(e.commit("startLoading",s),f((0,u.Jv)(`settings/apps/uninstall/${s}`)).then((t=>(e.commit("stopLoading",s),e.commit("uninstallApp",s),!0))).catch((t=>{e.commit("stopLoading",s),e.commit("APPS_API_FAILURE",{appId:s,error:t})}))))).catch((t=>e.commit("API_FAILURE",{appId:s,error:t})))},updateApp(e,t){let{appId:s}=t;return h().then((t=>(e.commit("startLoading",s),e.commit("startLoading","install"),f((0,u.Jv)(`settings/apps/update/${s}`)).then((t=>(e.commit("stopLoading","install"),e.commit("stopLoading",s),e.commit("updateApp",s),!0))).catch((t=>{e.commit("stopLoading",s),e.commit("stopLoading","install"),e.commit("APPS_API_FAILURE",{appId:s,error:t})}))))).catch((t=>e.commit("API_FAILURE",{appId:s,error:t})))},getAllApps:e=>(e.commit("startLoading","list"),f((0,u.Jv)("settings/apps/list")).then((t=>(e.commit("setAllApps",t.data.apps),e.commit("stopLoading","list"),!0))).catch((t=>e.commit("API_FAILURE",t)))),async getCategories(e){let{shouldRefetchCategories:t=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(t||!e.state.gettingCategoriesPromise){e.commit("startLoading","categories");try{const t=f((0,u.Jv)("settings/apps/categories"));e.commit("updateCategories",t);const s=await t;return s.data.length>0?(e.commit("appendCategories",s.data),e.commit("stopLoading","categories"),!0):(e.commit("stopLoading","categories"),!1)}catch(t){e.commit("API_FAILURE",t)}}return e.state.gettingCategoriesPromise}},k={state:T,mutations:F,getters:{loading:e=>function(t){return e.loading[t]},getCategories:e=>e.categories,getAllApps:e=>e.apps,getAppBundles:e=>e.bundles,getUpdateCount:e=>e.updateCount,getCategoryById:e=>t=>e.categories.find((e=>e.id===t))},actions:O},S={serverData:(0,R.C)("settings","usersSettings",{})},G={setServerData(e,t){e.serverData=t}},N={state:S,mutations:G,getters:{getServerData:e=>e.serverData},actions:{}},D={state:{},mutations:{},getters:{},actions:{setAppConfig(e,t){let{app:s,key:r,value:a}=t;return h().then((e=>A((0,u.KT)("apps/provisioning_api/api/v1/config/apps/{app}/{key}",{app:s,key:r}),{value:a}).catch((e=>{throw e})))).catch((t=>e.commit("API_FAILURE",{app:s,key:r,value:a,error:t})))}}};a.Ay.use(o.Ay);const K={API_FAILURE(e,s){try{const e=s.error.response.data.ocs.meta.message;(0,c.Qg)(t("settings","An error occurred during the request. Unable to proceed.")+"
"+e,{isHTML:!0})}catch(e){(0,c.Qg)(t("settings","An error occurred during the request. Unable to proceed."))}console.error(e,s)}};let j=null;const x=()=>(null===j&&(j=new o.il({modules:{users:E,apps:k,settings:N,oc:D},strict:!1,mutations:K})),j)},36620:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});const r=(0,s(35947).YK)().setApp("settings").detectUser().build()},58723:(e,t)=>{function s(e,t){var r={name:e.name,path:e.path,hash:e.hash,query:e.query,params:e.params,fullPath:e.fullPath,meta:e.meta};return t&&(r.from=s(t)),Object.freeze(r)}t.O=function(e,t,r){var a=(r||{}).moduleName||"route";e.registerModule(a,{namespaced:!0,state:s(t.currentRoute),mutations:{ROUTE_CHANGED:function(t,r){e.state[a]=s(r.to,r.from)}}});var o,i=!1,n=e.watch((function(e){return e[a]}),(function(e){var s=e.fullPath;s!==o&&(null!=o&&(i=!0,t.push(e)),o=s)}),{sync:!0}),d=t.afterEach((function(t,s){i?i=!1:(o=t.fullPath,e.commit(a+"/ROUTE_CHANGED",{to:t,from:s}))}));return function(){null!=d&&d(),null!=n&&n(),e.unregisterModule(a)}}},74329:(e,t,s)=>{"use strict";var r=s(85471),a=s(80284),o=s(58723),i=s(53334),n=s(22378);const d=(0,r.pM)({__name:"SettingsApp",setup:e=>({__sfc:!0,NcContent:n.A})}),c=(0,s(14486).A)(d,(function(){var e=this,t=e._self._c;return t(e._self._setupProxy.NcContent,{attrs:{"app-name":"settings"}},[t("router-view",{attrs:{name:"navigation"}}),e._v(" "),t("router-view"),e._v(" "),t("router-view",{attrs:{name:"sidebar"}})],1)}),[],!1,null,null,null).exports;var u=s(40173),p=s(63814);const l=[{name:"users",path:"/:index(index.php/)?settings/users",components:{default:()=>Promise.all([s.e(4208),s.e(7265),s.e(3239)]).then(s.bind(s,12778)),navigation:()=>Promise.all([s.e(4208),s.e(7265),s.e(3239)]).then(s.bind(s,73895))},props:!0,children:[{path:":selectedGroup",name:"group"}]},{path:"/:index(index.php/)?settings/apps",name:"apps",redirect:{name:"apps-category",params:{category:(0,s(32981).C)("settings","appstoreEnabled",!0)?"discover":"installed"}},components:{default:()=>Promise.all([s.e(4208),s.e(7265),s.e(4529)]).then(s.bind(s,3630)),navigation:()=>Promise.all([s.e(4208),s.e(7265),s.e(4529)]).then(s.bind(s,71827)),sidebar:()=>Promise.all([s.e(4208),s.e(7265),s.e(4529)]).then(s.bind(s,16102))},children:[{path:":category",name:"apps-category",children:[{path:":id",name:"apps-details"}]}]}];r.Ay.use(u.Ay);const m=new u.Ay({mode:"history",base:(0,p.Jv)(""),linkActiveClass:"active",routes:l});var g=s(31755),h=s(21777),f=s(65899);r.Ay.use(a.Ay,{defaultHtml:!1});const A=(0,g.P)();(0,o.O)(A,m),s.nc=btoa((0,h.do)()??""),r.Ay.prototype.t=i.Tl,r.Ay.prototype.n=i.zw,r.Ay.use(f.R2);const b=(0,f.Ey)();new r.Ay({router:m,store:A,pinia:b,render:e=>e(c),el:"#content"})}},o={};function i(e){var t=o[e];if(void 0!==t)return t.exports;var s=o[e]={id:e,loaded:!1,exports:{}};return a[e].call(s.exports,s,s.exports,i),s.loaded=!0,s.exports}i.m=a,e=[],i.O=(t,s,r,a)=>{if(!s){var o=1/0;for(u=0;u=a)&&Object.keys(i.O).every((e=>i.O[e](s[d])))?s.splice(d--,1):(n=!1,a0&&e[u-1][2]>a;u--)e[u]=e[u-1];e[u]=[s,r,a]},i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var s in t)i.o(t,s)&&!i.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,s)=>(i.f[s](e,t),t)),[])),i.u=e=>(({3239:"settings-users",4529:"settings-apps-view"}[e]||e)+"-"+e+".js?v="+{1544:"34736cf5f97675c121ab",2441:"bd6d3dc836e836cd4795",3239:"64f2f5050610c76d9879",3865:"e5bf95b42e72ee8115f3",4529:"a67cba58b65aa5810be6",5775:"2db0bc22d25dcd7b0e81",5862:"18c97d281a8207f0ce8d",7265:"4debcb39bc5bc1550c8c",8630:"1c63d6550408bf0f2211"}[e]),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=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s={},r="nextcloud:",i.l=(e,t,a,o)=>{if(s[e])s[e].push(t);else{var n,d;if(void 0!==a)for(var c=document.getElementsByTagName("script"),u=0;u{n.onerror=n.onload=null,clearTimeout(m);var a=s[e];if(delete s[e],n.parentNode&&n.parentNode.removeChild(n),a&&a.forEach((e=>e(r))),t)return t(r)},m=setTimeout(l.bind(null,void 0,{type:"timeout",target:n}),12e4);n.onerror=l.bind(null,n.onerror),n.onload=l.bind(null,n.onload),d&&document.head.appendChild(n)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),i.j=2689,(()=>{var e;i.g.importScripts&&(e=i.g.location+"");var t=i.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var s=t.getElementsByTagName("script");if(s.length)for(var r=s.length-1;r>-1&&(!e||!/^http(s?):/.test(e));)e=s[r--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),i.p=e})(),(()=>{i.b=document.baseURI||self.location.href;var e={2689:0};i.f.j=(t,s)=>{var r=i.o(e,t)?e[t]:void 0;if(0!==r)if(r)s.push(r[2]);else{var a=new Promise(((s,a)=>r=e[t]=[s,a]));s.push(r[2]=a);var o=i.p+i.u(t),n=new Error;i.l(o,(s=>{if(i.o(e,t)&&(0!==(r=e[t])&&(e[t]=void 0),r)){var a=s&&("load"===s.type?"missing":s.type),o=s&&s.target&&s.target.src;n.message="Loading chunk "+t+" failed.\n("+a+": "+o+")",n.name="ChunkLoadError",n.type=a,n.request=o,r[1](n)}}),"chunk-"+t,t)}},i.O.j=t=>0===e[t];var t=(t,s)=>{var r,a,o=s[0],n=s[1],d=s[2],c=0;if(o.some((t=>0!==e[t]))){for(r in n)i.o(n,r)&&(i.m[r]=n[r]);if(d)var u=d(i)}for(t&&t(s);ci(74329)));n=i.O(n)})(); +//# sourceMappingURL=settings-vue-settings-apps-users-management.js.map?v=744b28f6dca6fdf884c3 \ 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 fc9fd33d25886..d0cbf367cbbc6 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=a8ab8b98e5d2f52bf15a","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/settings/src/constants/GroupManagement.ts","webpack:///nextcloud/apps/settings/src/store/api.js","webpack:///nextcloud/apps/settings/src/store/users.js","webpack:///nextcloud/apps/settings/src/store/apps.js","webpack:///nextcloud/apps/settings/src/store/users-settings.js","webpack:///nextcloud/apps/settings/src/store/oc.js","webpack:///nextcloud/apps/settings/src/store/index.js","webpack:///nextcloud/apps/settings/src/logger.ts","webpack:///nextcloud/node_modules/vuex-router-sync/index.js","webpack:///nextcloud/apps/settings/src/views/SettingsApp.vue","webpack:///nextcloud/apps/settings/src/views/SettingsApp.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/settings/src/views/SettingsApp.vue?3a67","webpack:///nextcloud/apps/settings/src/router/routes.ts","webpack:///nextcloud/apps/settings/src/router/index.ts","webpack:///nextcloud/apps/settings/src/main-apps-users-management.ts","webpack:///nextcloud/webpack/bootstrap","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 = (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((key) => (__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 = (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\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (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((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\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};","/**\n * @copyright Copyright (c) 2024 Ferdinand Thiessen \n *\n * @author Ferdinand Thiessen \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more 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 * https://github.com/nextcloud/server/blob/208e38e84e1a07a49699aa90dc5b7272d24489f0/lib/private/Group/MetaData.php#L34\n */\nexport var GroupSorting;\n(function (GroupSorting) {\n GroupSorting[GroupSorting[\"UserCount\"] = 1] = \"UserCount\";\n GroupSorting[GroupSorting[\"GroupName\"] = 2] = \"GroupName\";\n})(GroupSorting || (GroupSorting = {}));\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ \n *\n * @author Christoph Wurst \n * @author John Molakvoæ \n * @author Julius Härtl \n * @author Roeland Jago Douma \n * @author Sujith Haridasan \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more 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 { confirmPassword } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\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 Copyright (c) 2018 John Molakvoæ \n *\n * @author Arthur Schiwon \n * @author Christoph Wurst \n * @author Daniel Calviño Sánchez \n * @author John Molakvoæ \n * @author Julius Härtl \n * @author Roeland Jago Douma \n * @author Vincent Petry \n * @author Stephan Orbaugh \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more 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 { getBuilder } from '@nextcloud/browser-storage'\nimport { getCapabilities } from '@nextcloud/capabilities'\nimport { parseFileSize } from '@nextcloud/files'\nimport { showError } from '@nextcloud/dialogs'\nimport { generateOcsUrl, generateUrl } from '@nextcloud/router'\nimport axios from '@nextcloud/axios'\n\nimport { GroupSorting } from '../constants/GroupManagement.ts'\nimport api from './api.js'\nimport logger from '../logger.ts'\n\nconst localStorage = getBuilder('settings').persist(true).build()\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: GroupSorting.UserCount,\n\tminPasswordLength: 0,\n\tusersOffset: 0,\n\tusersLimit: 25,\n\tdisabledUsersOffset: 0,\n\tdisabledUsersLimit: 25,\n\tuserCount: 0,\n\tshowConfig: {\n\t\tshowStoragePath: localStorage.getItem('account_settings__showStoragePath') === 'true',\n\t\tshowUserBackend: localStorage.getItem('account_settings__showUserBackend') === 'true',\n\t\tshowLastLogin: localStorage.getItem('account_settings__showLastLogin') === 'true',\n\t\tshowNewUserForm: localStorage.getItem('account_settings__showNewUserForm') === 'true',\n\t\tshowLanguages: localStorage.getItem('account_settings__showLanguages') === 'true',\n\t},\n}\n\nconst mutations = {\n\tappendUsers(state, usersObj) {\n\t\tconst existingUsers = state.users.map(({ id }) => id)\n\t\tconst newUsers = Object.values(usersObj)\n\t\t\t.filter(({ id }) => !existingUsers.includes(id))\n\n\t\tconst users = state.users.concat(newUsers)\n\t\tstate.usersOffset += state.usersLimit\n\t\tstate.users = users\n\t},\n\tupdateDisabledUsers(state, _usersObj) {\n\t\tstate.disabledUsersOffset += state.disabledUsersLimit\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},\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.unshift(group)\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}\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},\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},\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.unshift(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\t// 0 is a special value\n\t\tif (state.userCount === 0) {\n\t\t\treturn\n\t\t}\n\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\tif (!group) {\n\t\t\t\t\t\tconsole.warn('User group ' + userGroup + ' does not exist during user removal')\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\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 interrupt 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 = parseFileSize(value, true)\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\tstate.disabledUsersOffset = 0\n\t},\n\n\tsetShowConfig(state, { key, value }) {\n\t\tlocalStorage.setItem(`account_settings__${key}`, JSON.stringify(value))\n\t\tstate.showConfig[key] = value\n\t},\n\n\tsetGroupSorting(state, sorting) {\n\t\tconst oldValue = state.orderBy\n\t\tstate.orderBy = sorting\n\n\t\t// Persist the value on the server\n\t\taxios.post(\n\t\t\tgenerateUrl('/settings/users/preferences/group.sortBy'),\n\t\t\t{\n\t\t\t\tvalue: String(sorting),\n\t\t\t},\n\t\t).catch((error) => {\n\t\t\tstate.orderBy = oldValue\n\t\t\tshowError(t('settings', 'Could not set group sorting'))\n\t\t\tlogger.error(error)\n\t\t})\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\tgetSortedGroups(state) {\n\t\tconst groups = [...state.groups]\n\t\tif (state.orderBy === GroupSorting.UserCount) {\n\t\t\treturn groups.sort((a, b) => {\n\t\t\t\tconst numA = a.usercount - a.disabled\n\t\t\t\tconst numB = b.usercount - b.disabled\n\t\t\t\treturn (numA < numB) ? 1 : (numB < numA ? -1 : a.name.localeCompare(b.name))\n\t\t\t})\n\t\t} else {\n\t\t\treturn groups.sort((a, b) => a.name.localeCompare(b.name))\n\t\t}\n\t},\n\tgetGroupSorting(state) {\n\t\treturn state.orderBy\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\tgetDisabledUsersOffset(state) {\n\t\treturn state.disabledUsersOffset\n\t},\n\tgetDisabledUsersLimit(state) {\n\t\treturn state.disabledUsersLimit\n\t},\n\tgetUserCount(state) {\n\t\treturn state.userCount\n\t},\n\tgetShowConfig(state) {\n\t\treturn state.showConfig\n\t},\n}\n\nconst CancelToken = axios.CancelToken\nlet searchRequestCancelSource = null\n\nconst actions = {\n\n\t/**\n\t * search users\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 * @return {Promise}\n\t */\n\tsearchUsers(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search })).catch((error) => {\n\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t})\n\t},\n\n\t/**\n\t * Get user details\n\t *\n\t * @param {object} context store context\n\t * @param {string} userId user id\n\t * @return {Promise}\n\t */\n\tgetUser(context, userId) {\n\t\treturn api.get(generateOcsUrl(`cloud/users/${userId}`)).catch((error) => {\n\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t})\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 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\n\t\t/**\n\t\t * Adding filters in the search bar such as in:files, in:users, etc.\n\t\t * collides with this particular search, so we need to remove them\n\t\t * here and leave only the original search query\n\t\t */\n\t\tsearch = search.replace(/in:[^\\s]+/g, '').trim()\n\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\t/**\n\t * Get disabled 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 * @return {Promise}\n\t */\n\tasync getDisabledUsers(context, { offset, limit, search }) {\n\t\tconst url = generateOcsUrl('cloud/users/disabled?offset={offset}&limit={limit}&search={search}', { offset, limit, search })\n\t\ttry {\n\t\t\tconst response = await api.get(url)\n\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\tif (usersCount > 0) {\n\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\tcontext.commit('updateDisabledUsers', response.data.ocs.data.users)\n\t\t\t}\n\t\t\treturn usersCount\n\t\t} catch (error) {\n\t\t\tcontext.commit('API_FAILURE', error)\n\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 (getCapabilities().password_policy && getCapabilities().password_policy.minLength) {\n\t\t\tcontext.commit('setPasswordPolicyMinLength', getCapabilities().password_policy.minLength)\n\t\t\treturn 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 * @param {string} options.manager User manager\n\t * @return {Promise}\n\t */\n\taddUser({ commit, dispatch }, { userid, password, displayName, email, groups, subadmin, quota, language, manager }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users'), { userid, password, displayName, email, groups, subadmin, quota, language, manager })\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', 'manager']\n\t\tif (['email', 'language', 'quota', 'displayname', 'password', 'manager'].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 \n *\n * @author John Molakvoæ \n * @author Julius Härtl \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 api from './api.js'\nimport Vue from 'vue'\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\nimport { showError, showInfo } from '@nextcloud/dialogs'\nimport { loadState } from '@nextcloud/initial-state'\n\nconst state = {\n\tapps: [],\n\tbundles: loadState('settings', 'appstoreBundles', []),\n\tcategories: [],\n\tupdateCount: loadState('settings', 'appstoreUpdateCount', 0),\n\tloading: {},\n\tgettingCategoriesPromise: null,\n}\n\nconst mutations = {\n\n\tAPPS_API_FAILURE(state, error) {\n\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.') + '
' + 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\tupdateCategories(state, categoriesPromise) {\n\t\tstate.gettingCategoriesPromise = categoriesPromise\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\tsetInstallState(state, { appId, canInstall }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tif (app) {\n\t\t\tapp.canInstall = canInstall === true\n\t\t}\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\tgetAppBundles(state) {\n\t\treturn state.bundles\n\t},\n\tgetUpdateCount(state) {\n\t\treturn state.updateCount\n\t},\n\tgetCategoryById: (state) => (selectedCategoryId) => {\n\t\treturn state.categories.find((category) => category.id === selectedCategoryId)\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 axios.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\tshowError(t('settings', 'Error: This app cannot be enabled because it makes the server unstable'))\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\tcontext.dispatch('disableApp', { appId })\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\tcontext.commit('setInstallState', { appId, canInstall: 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('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\t\t.finally(() => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\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\tasync getCategories(context, { shouldRefetchCategories = false } = {}) {\n\t\tif (shouldRefetchCategories || !context.state.gettingCategoriesPromise) {\n\t\t\tcontext.commit('startLoading', 'categories')\n\t\t\ttry {\n\t\t\t\tconst categoriesPromise = api.get(generateUrl('settings/apps/categories'))\n\t\t\t\tcontext.commit('updateCategories', categoriesPromise)\n\t\t\t\tconst categoriesPromiseResponse = await categoriesPromise\n\t\t\t\tif (categoriesPromiseResponse.data.length > 0) {\n\t\t\t\t\tcontext.commit('appendCategories', categoriesPromiseResponse.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\tcontext.commit('stopLoading', 'categories')\n\t\t\t\treturn false\n\t\t\t} catch (error) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t}\n\t\treturn context.state.gettingCategoriesPromise\n\t},\n\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more 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 { loadState } from '@nextcloud/initial-state'\n\nconst state = {\n\tserverData: loadState('settings', 'usersSettings', {}),\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æ \n *\n * @author John Molakvoæ \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 api from './api.js'\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æ \n *\n * @author John Molakvoæ \n * @author Julius Härtl \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more 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 Vue from 'vue'\nimport Vuex, { Store } from 'vuex'\nimport users from './users.js'\nimport apps from './apps.js'\nimport settings from './users-settings.js'\nimport oc from './oc.js'\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 occurred during the request. Unable to proceed.') + '
' + message, { isHTML: true })\n\t\t} catch (e) {\n\t\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.'))\n\t\t}\n\t\tconsole.error(state, error)\n\t},\n}\n\nlet store = null\n\nexport const useStore = () => {\n\tif (store === null) {\n\t\tstore = new Store({\n\t\t\tmodules: {\n\t\t\t\tusers,\n\t\t\t\tapps,\n\t\t\t\tsettings,\n\t\t\t\toc,\n\t\t\t},\n\t\t\tstrict: debug,\n\t\t\tmutations,\n\t\t})\n\t}\n\treturn store\n}\n","/**\n * @copyright 2020 Christoph Wurst \n *\n * @author Christoph Wurst \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more 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 */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('settings')\n .detectUser()\n .build();\n","exports.sync = function (store, router, options) {\n var moduleName = (options || {}).moduleName || 'route'\n\n store.registerModule(moduleName, {\n namespaced: true,\n state: cloneRoute(router.currentRoute),\n mutations: {\n 'ROUTE_CHANGED': function ROUTE_CHANGED (state, transition) {\n store.state[moduleName] = cloneRoute(transition.to, transition.from)\n }\n }\n })\n\n var isTimeTraveling = false\n var currentPath\n\n // sync router on store change\n var storeUnwatch = store.watch(\n function (state) { return state[moduleName]; },\n function (route) {\n var fullPath = route.fullPath;\n if (fullPath === currentPath) {\n return\n }\n if (currentPath != null) {\n isTimeTraveling = true\n router.push(route)\n }\n currentPath = fullPath\n },\n { sync: true }\n )\n\n // sync store on router navigation\n var afterEachUnHook = router.afterEach(function (to, from) {\n if (isTimeTraveling) {\n isTimeTraveling = false\n return\n }\n currentPath = to.fullPath\n store.commit(moduleName + '/ROUTE_CHANGED', { to: to, from: from })\n })\n\n return function unsync () {\n // On unsync, remove router hook\n if (afterEachUnHook != null) {\n afterEachUnHook()\n }\n\n // On unsync, remove store watch\n if (storeUnwatch != null) {\n storeUnwatch()\n }\n\n // On unsync, unregister Module with store\n store.unregisterModule(moduleName)\n }\n}\n\nfunction cloneRoute (to, from) {\n var clone = {\n name: to.name,\n path: to.path,\n hash: to.hash,\n query: to.query,\n params: to.params,\n fullPath: to.fullPath,\n meta: to.meta\n }\n if (from) {\n clone.from = cloneRoute(from)\n }\n return Object.freeze(clone)\n}\n\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcContent,{attrs:{\"app-name\":\"settings\"}},[_c('router-view',{attrs:{\"name\":\"navigation\"}}),_vm._v(\" \"),_c('router-view'),_vm._v(\" \"),_c('router-view',{attrs:{\"name\":\"sidebar\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./SettingsApp.vue?vue&type=template&id=b0b62a76\"\nimport script from \"./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"\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 { loadState } from '@nextcloud/initial-state';\nconst appstoreEnabled = loadState('settings', 'appstoreEnabled', true);\n// Dynamic loading\nconst AppStore = () => import(/* webpackChunkName: 'settings-apps-view' */ '../views/AppStore.vue');\nconst AppStoreNavigation = () => import(/* webpackChunkName: 'settings-apps-view' */ '../views/AppStoreNavigation.vue');\nconst AppStoreSidebar = () => import(/* webpackChunkName: 'settings-apps-view' */ '../views/AppStoreSidebar.vue');\nconst UserManagement = () => import(/* webpackChunkName: 'settings-users' */ '../views/UserManagement.vue');\nconst UserManagementNavigation = () => import(/* webpackChunkName: 'settings-users' */ '../views/UserManagementNavigation.vue');\nconst routes = [\n {\n name: 'users',\n path: '/:index(index.php/)?settings/users',\n components: {\n default: UserManagement,\n navigation: UserManagementNavigation,\n },\n props: true,\n children: [\n {\n path: ':selectedGroup',\n name: 'group',\n },\n ],\n },\n {\n path: '/:index(index.php/)?settings/apps',\n name: 'apps',\n redirect: {\n name: 'apps-category',\n params: {\n category: appstoreEnabled ? 'discover' : 'installed',\n },\n },\n components: {\n default: AppStore,\n navigation: AppStoreNavigation,\n sidebar: AppStoreSidebar,\n },\n children: [\n {\n path: ':category',\n name: 'apps-category',\n children: [\n {\n path: ':id',\n name: 'apps-details',\n },\n ],\n },\n ],\n },\n];\nexport default routes;\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ \n *\n * @author John Molakvoæ \n * @author Julius Härtl \n * @author Roeland Jago Douma \n * @author Ferdinand Thiessen \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more 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 */\nimport Vue from 'vue';\nimport Router from 'vue-router';\nimport { generateUrl } from '@nextcloud/router';\nimport routes from './routes.ts';\nVue.use(Router);\nconst router = new Router({\n mode: 'history',\n // if index.php is in the url AND we got this far, then it's working:\n // let's keep using index.php in the url\n base: generateUrl(''),\n linkActiveClass: 'active',\n routes,\n});\nexport default router;\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ \n *\n * @author John Molakvoæ \n * @author rakekniven \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 */\nimport Vue from 'vue';\nimport VTooltip from 'v-tooltip';\nimport { sync } from 'vuex-router-sync';\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n';\nimport SettingsApp from './views/SettingsApp.vue';\nimport router from './router/index.ts';\nimport { useStore } from './store/index.js';\nimport { getRequestToken } from '@nextcloud/auth';\nimport { PiniaVuePlugin, createPinia } from 'pinia';\nVue.use(VTooltip, { defaultHtml: false });\nconst store = useStore();\nsync(store, router);\n// CSP config for webpack dynamic chunk loading\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken() ?? '');\n// bind to window\nVue.prototype.t = t;\nVue.prototype.n = n;\nVue.use(PiniaVuePlugin);\nconst pinia = createPinia();\nexport default new Vue({\n router,\n store,\n pinia,\n render: h => h(SettingsApp),\n el: '#content',\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","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (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 = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((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 = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + ({\"3239\":\"settings-users\",\"4529\":\"settings-apps-view\"}[chunkId] || chunkId) + \"-\" + chunkId + \".js?v=\" + {\"1544\":\"34736cf5f97675c121ab\",\"2441\":\"bd6d3dc836e836cd4795\",\"3239\":\"c885b5e954837f484701\",\"3865\":\"e5bf95b42e72ee8115f3\",\"4529\":\"a67cba58b65aa5810be6\",\"5775\":\"2db0bc22d25dcd7b0e81\",\"5862\":\"18c97d281a8207f0ce8d\",\"7265\":\"4debcb39bc5bc1550c8c\",\"8630\":\"1c63d6550408bf0f2211\"}[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 = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (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 = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2689;","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 && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\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(/^blob:/, \"\").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\t2689: 0\n};\n\n__webpack_require__.f.j = (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((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 = (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}\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 = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (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((id) => (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, [4208], () => (__webpack_require__(74329)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","GroupSorting","sanitize","url","replace","requireAdmin","confirmPassword","get","options","axios","post","data","put","delete","params","localStorage","getBuilder","persist","build","defaults","id","name","usercount","disabled","canAdd","canRemove","state","users","groups","orderBy","UserCount","minPasswordLength","usersOffset","usersLimit","disabledUsersOffset","disabledUsersLimit","userCount","showConfig","showStoragePath","getItem","showUserBackend","showLastLogin","showNewUserForm","showLanguages","mutations","appendUsers","usersObj","existingUsers","map","_ref","newUsers","Object","values","filter","_ref2","includes","concat","updateDisabledUsers","_usersObj","setPasswordPolicyMinLength","length","initGroups","_ref3","group","assign","addGroup","_ref4","gid","displayName","find","unshift","e","console","error","renameGroup","_ref5","groupIndex","findIndex","groupSearch","updatedGroup","splice","removeGroup","addUserGroup","_ref6","userid","user","enabled","push","removeUserGroup","_ref7","indexOf","addUserSubAdmin","_ref8","subadmin","removeUserSubAdmin","_ref9","deleteUser","userIndex","this","commit","actionType","addUserData","response","ocs","enableDisableUser","_ref10","updateUserCounts","_ref11","disabledGroup","forEach","userGroup","warn","logger","setUserData","_ref12","key","value","humanValue","parseFileSize","resetUsers","setShowConfig","_ref13","setItem","JSON","stringify","setGroupSorting","sorting","oldValue","generateUrl","String","catch","showError","t","getters","getUsers","getGroups","getSubadminGroups","getSortedGroups","sort","a","b","numA","numB","localeCompare","getGroupSorting","getPasswordPolicyMinLength","getUsersOffset","getUsersLimit","getDisabledUsersOffset","getDisabledUsersLimit","getUserCount","getShowConfig","CancelToken","searchRequestCancelSource","actions","searchUsers","context","_ref14","offset","limit","search","api","generateOcsUrl","getUser","userId","_ref15","cancel","source","trim","encodeURIComponent","cancelToken","token","then","usersCount","keys","getDisabledUsers","_ref16","_ref17","limitParam","getUsersFromList","_ref18","getUsersFromGroup","_ref19","groupid","groupId","getCapabilities","password_policy","minLength","_ref20","_ref21","_ref22","_ref23","_ref24","wipeUserDevices","addUser","_ref25","_ref26","dispatch","password","email","quota","language","manager","_ref27","userStatus","_ref28","allowedEmpty","Promise","reject","Error","sendWelcomeMail","apps","bundles","loadState","categories","updateCount","loading","gettingCategoriesPromise","APPS_API_FAILURE","message","isHTML","initCategories","updateCategories","categoriesPromise","setUpdateCount","addCategory","category","appendCategories","categoriesArray","setAllApps","setError","appId","Array","isArray","_id","app","clearError","enableApp","active","setInstallState","canInstall","disableApp","removable","canUnInstall","uninstallApp","needsDownload","installed","updateApp","version","update","resetApps","reset","startLoading","Vue","stopLoading","appIds","_appId","update_required","showInfo","onClick","window","location","reload","close","setTimeout","forceEnableApp","finally","getAllApps","getCategories","shouldRefetchCategories","arguments","undefined","categoriesPromiseResponse","getAppBundles","getUpdateCount","getCategoryById","selectedCategoryId","serverData","setServerData","getServerData","setAppConfig","use","Vuex","API_FAILURE","meta","store","useStore","Store","modules","settings","oc","strict","process","getLoggerBuilder","setApp","detectUser","cloneRoute","to","from","clone","path","hash","query","fullPath","freeze","exports","router","moduleName","registerModule","namespaced","currentRoute","transition","currentPath","isTimeTraveling","storeUnwatch","watch","route","sync","afterEachUnHook","afterEach","unregisterModule","_defineComponent","__name","setup","__props","__sfc","NcContent","_vm","_c","_self","_setupProxy","attrs","_v","components","default","UserManagement","navigation","UserManagementNavigation","props","children","redirect","AppStore","AppStoreNavigation","sidebar","AppStoreSidebar","Router","mode","base","linkActiveClass","routes","VTooltip","defaultHtml","__webpack_nonce__","btoa","getRequestToken","prototype","n","PiniaVuePlugin","pinia","createPinia","render","h","SettingsApp","el","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","module","loaded","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","r","getter","__esModule","d","definition","o","defineProperty","enumerable","f","chunkId","all","reduce","promises","u","g","globalThis","Function","obj","prop","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","tagName","toUpperCase","test","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=744b28f6dca6fdf884c3","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/settings/src/constants/GroupManagement.ts","webpack:///nextcloud/apps/settings/src/store/api.js","webpack:///nextcloud/apps/settings/src/store/users.js","webpack:///nextcloud/apps/settings/src/store/apps.js","webpack:///nextcloud/apps/settings/src/store/users-settings.js","webpack:///nextcloud/apps/settings/src/store/oc.js","webpack:///nextcloud/apps/settings/src/store/index.js","webpack:///nextcloud/apps/settings/src/logger.ts","webpack:///nextcloud/node_modules/vuex-router-sync/index.js","webpack:///nextcloud/apps/settings/src/views/SettingsApp.vue","webpack:///nextcloud/apps/settings/src/views/SettingsApp.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/settings/src/views/SettingsApp.vue?3a67","webpack:///nextcloud/apps/settings/src/router/routes.ts","webpack:///nextcloud/apps/settings/src/router/index.ts","webpack:///nextcloud/apps/settings/src/main-apps-users-management.ts","webpack:///nextcloud/webpack/bootstrap","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 = (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((key) => (__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 = (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\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (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((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\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};","/**\n * @copyright Copyright (c) 2024 Ferdinand Thiessen \n *\n * @author Ferdinand Thiessen \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more 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 * https://github.com/nextcloud/server/blob/208e38e84e1a07a49699aa90dc5b7272d24489f0/lib/private/Group/MetaData.php#L34\n */\nexport var GroupSorting;\n(function (GroupSorting) {\n GroupSorting[GroupSorting[\"UserCount\"] = 1] = \"UserCount\";\n GroupSorting[GroupSorting[\"GroupName\"] = 2] = \"GroupName\";\n})(GroupSorting || (GroupSorting = {}));\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ \n *\n * @author Christoph Wurst \n * @author John Molakvoæ \n * @author Julius Härtl \n * @author Roeland Jago Douma \n * @author Sujith Haridasan \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more 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 { confirmPassword } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\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 Copyright (c) 2018 John Molakvoæ \n *\n * @author Arthur Schiwon \n * @author Christoph Wurst \n * @author Daniel Calviño Sánchez \n * @author John Molakvoæ \n * @author Julius Härtl \n * @author Roeland Jago Douma \n * @author Vincent Petry \n * @author Stephan Orbaugh \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more 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 { getBuilder } from '@nextcloud/browser-storage'\nimport { getCapabilities } from '@nextcloud/capabilities'\nimport { parseFileSize } from '@nextcloud/files'\nimport { showError } from '@nextcloud/dialogs'\nimport { generateOcsUrl, generateUrl } from '@nextcloud/router'\nimport axios from '@nextcloud/axios'\n\nimport { GroupSorting } from '../constants/GroupManagement.ts'\nimport api from './api.js'\nimport logger from '../logger.ts'\n\nconst localStorage = getBuilder('settings').persist(true).build()\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: GroupSorting.UserCount,\n\tminPasswordLength: 0,\n\tusersOffset: 0,\n\tusersLimit: 25,\n\tdisabledUsersOffset: 0,\n\tdisabledUsersLimit: 25,\n\tuserCount: 0,\n\tshowConfig: {\n\t\tshowStoragePath: localStorage.getItem('account_settings__showStoragePath') === 'true',\n\t\tshowUserBackend: localStorage.getItem('account_settings__showUserBackend') === 'true',\n\t\tshowLastLogin: localStorage.getItem('account_settings__showLastLogin') === 'true',\n\t\tshowNewUserForm: localStorage.getItem('account_settings__showNewUserForm') === 'true',\n\t\tshowLanguages: localStorage.getItem('account_settings__showLanguages') === 'true',\n\t},\n}\n\nconst mutations = {\n\tappendUsers(state, usersObj) {\n\t\tconst existingUsers = state.users.map(({ id }) => id)\n\t\tconst newUsers = Object.values(usersObj)\n\t\t\t.filter(({ id }) => !existingUsers.includes(id))\n\n\t\tconst users = state.users.concat(newUsers)\n\t\tstate.usersOffset += state.usersLimit\n\t\tstate.users = users\n\t},\n\tupdateDisabledUsers(state, _usersObj) {\n\t\tstate.disabledUsersOffset += state.disabledUsersLimit\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},\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.unshift(group)\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}\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},\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},\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.unshift(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\t// 0 is a special value\n\t\tif (state.userCount === 0) {\n\t\t\treturn\n\t\t}\n\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\tif (!group) {\n\t\t\t\t\t\tconsole.warn('User group ' + userGroup + ' does not exist during user removal')\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\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 interrupt 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 = parseFileSize(value, true)\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\tstate.disabledUsersOffset = 0\n\t},\n\n\tsetShowConfig(state, { key, value }) {\n\t\tlocalStorage.setItem(`account_settings__${key}`, JSON.stringify(value))\n\t\tstate.showConfig[key] = value\n\t},\n\n\tsetGroupSorting(state, sorting) {\n\t\tconst oldValue = state.orderBy\n\t\tstate.orderBy = sorting\n\n\t\t// Persist the value on the server\n\t\taxios.post(\n\t\t\tgenerateUrl('/settings/users/preferences/group.sortBy'),\n\t\t\t{\n\t\t\t\tvalue: String(sorting),\n\t\t\t},\n\t\t).catch((error) => {\n\t\t\tstate.orderBy = oldValue\n\t\t\tshowError(t('settings', 'Could not set group sorting'))\n\t\t\tlogger.error(error)\n\t\t})\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\tgetSortedGroups(state) {\n\t\tconst groups = [...state.groups]\n\t\tif (state.orderBy === GroupSorting.UserCount) {\n\t\t\treturn groups.sort((a, b) => {\n\t\t\t\tconst numA = a.usercount - a.disabled\n\t\t\t\tconst numB = b.usercount - b.disabled\n\t\t\t\treturn (numA < numB) ? 1 : (numB < numA ? -1 : a.name.localeCompare(b.name))\n\t\t\t})\n\t\t} else {\n\t\t\treturn groups.sort((a, b) => a.name.localeCompare(b.name))\n\t\t}\n\t},\n\tgetGroupSorting(state) {\n\t\treturn state.orderBy\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\tgetDisabledUsersOffset(state) {\n\t\treturn state.disabledUsersOffset\n\t},\n\tgetDisabledUsersLimit(state) {\n\t\treturn state.disabledUsersLimit\n\t},\n\tgetUserCount(state) {\n\t\treturn state.userCount\n\t},\n\tgetShowConfig(state) {\n\t\treturn state.showConfig\n\t},\n}\n\nconst CancelToken = axios.CancelToken\nlet searchRequestCancelSource = null\n\nconst actions = {\n\n\t/**\n\t * search users\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 * @return {Promise}\n\t */\n\tsearchUsers(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search })).catch((error) => {\n\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t})\n\t},\n\n\t/**\n\t * Get user details\n\t *\n\t * @param {object} context store context\n\t * @param {string} userId user id\n\t * @return {Promise}\n\t */\n\tgetUser(context, userId) {\n\t\treturn api.get(generateOcsUrl(`cloud/users/${userId}`)).catch((error) => {\n\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t})\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 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\n\t\t/**\n\t\t * Adding filters in the search bar such as in:files, in:users, etc.\n\t\t * collides with this particular search, so we need to remove them\n\t\t * here and leave only the original search query\n\t\t */\n\t\tsearch = search.replace(/in:[^\\s]+/g, '').trim()\n\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\t/**\n\t * Get disabled 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 * @return {Promise}\n\t */\n\tasync getDisabledUsers(context, { offset, limit, search }) {\n\t\tconst url = generateOcsUrl('cloud/users/disabled?offset={offset}&limit={limit}&search={search}', { offset, limit, search })\n\t\ttry {\n\t\t\tconst response = await api.get(url)\n\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\tif (usersCount > 0) {\n\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\tcontext.commit('updateDisabledUsers', response.data.ocs.data.users)\n\t\t\t}\n\t\t\treturn usersCount\n\t\t} catch (error) {\n\t\t\tcontext.commit('API_FAILURE', error)\n\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 (getCapabilities().password_policy && getCapabilities().password_policy.minLength) {\n\t\t\tcontext.commit('setPasswordPolicyMinLength', getCapabilities().password_policy.minLength)\n\t\t\treturn 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\tasync wipeUserDevices(context, userid) {\n\t\ttry {\n\t\t\tawait api.requireAdmin()\n\t\t\treturn await api.post(generateOcsUrl('cloud/users/{userid}/wipe', { userid }))\n\t\t} catch (error) {\n\t\t\tcontext.commit('API_FAILURE', { userid, error })\n\t\t\treturn Promise.reject(new Error('Failed to wipe user devices'))\n\t\t}\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 * @param {string} options.manager User manager\n\t * @return {Promise}\n\t */\n\taddUser({ commit, dispatch }, { userid, password, displayName, email, groups, subadmin, quota, language, manager }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users'), { userid, password, displayName, email, groups, subadmin, quota, language, manager })\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\tasync setUserData(context, { userid, key, value }) {\n\t\tconst allowedEmpty = ['email', 'displayname', 'manager']\n\t\tif (['email', 'language', 'quota', 'displayname', 'password', 'manager'].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\ttry {\n\t\t\t\t\tawait api.requireAdmin()\n\t\t\t\t\tawait api.put(generateOcsUrl('cloud/users/{userid}', { userid }), { key, value })\n\t\t\t\t\treturn context.commit('setUserData', { userid, key, value })\n\t\t\t\t} catch (error) {\n\t\t\t\t\tcontext.commit('API_FAILURE', { userid, error })\n\t\t\t\t}\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 \n *\n * @author John Molakvoæ \n * @author Julius Härtl \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 api from './api.js'\nimport Vue from 'vue'\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\nimport { showError, showInfo } from '@nextcloud/dialogs'\nimport { loadState } from '@nextcloud/initial-state'\n\nconst state = {\n\tapps: [],\n\tbundles: loadState('settings', 'appstoreBundles', []),\n\tcategories: [],\n\tupdateCount: loadState('settings', 'appstoreUpdateCount', 0),\n\tloading: {},\n\tgettingCategoriesPromise: null,\n}\n\nconst mutations = {\n\n\tAPPS_API_FAILURE(state, error) {\n\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.') + '
' + 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\tupdateCategories(state, categoriesPromise) {\n\t\tstate.gettingCategoriesPromise = categoriesPromise\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\tsetInstallState(state, { appId, canInstall }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tif (app) {\n\t\t\tapp.canInstall = canInstall === true\n\t\t}\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\tgetAppBundles(state) {\n\t\treturn state.bundles\n\t},\n\tgetUpdateCount(state) {\n\t\treturn state.updateCount\n\t},\n\tgetCategoryById: (state) => (selectedCategoryId) => {\n\t\treturn state.categories.find((category) => category.id === selectedCategoryId)\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 axios.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\tshowError(t('settings', 'Error: This app cannot be enabled because it makes the server unstable'))\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\tcontext.dispatch('disableApp', { appId })\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\tcontext.commit('setInstallState', { appId, canInstall: 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('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\t\t.finally(() => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\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\tasync getCategories(context, { shouldRefetchCategories = false } = {}) {\n\t\tif (shouldRefetchCategories || !context.state.gettingCategoriesPromise) {\n\t\t\tcontext.commit('startLoading', 'categories')\n\t\t\ttry {\n\t\t\t\tconst categoriesPromise = api.get(generateUrl('settings/apps/categories'))\n\t\t\t\tcontext.commit('updateCategories', categoriesPromise)\n\t\t\t\tconst categoriesPromiseResponse = await categoriesPromise\n\t\t\t\tif (categoriesPromiseResponse.data.length > 0) {\n\t\t\t\t\tcontext.commit('appendCategories', categoriesPromiseResponse.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\tcontext.commit('stopLoading', 'categories')\n\t\t\t\treturn false\n\t\t\t} catch (error) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t}\n\t\treturn context.state.gettingCategoriesPromise\n\t},\n\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more 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 { loadState } from '@nextcloud/initial-state'\n\nconst state = {\n\tserverData: loadState('settings', 'usersSettings', {}),\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æ \n *\n * @author John Molakvoæ \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 api from './api.js'\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æ \n *\n * @author John Molakvoæ \n * @author Julius Härtl \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more 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 Vue from 'vue'\nimport Vuex, { Store } from 'vuex'\nimport users from './users.js'\nimport apps from './apps.js'\nimport settings from './users-settings.js'\nimport oc from './oc.js'\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 occurred during the request. Unable to proceed.') + '
' + message, { isHTML: true })\n\t\t} catch (e) {\n\t\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.'))\n\t\t}\n\t\tconsole.error(state, error)\n\t},\n}\n\nlet store = null\n\nexport const useStore = () => {\n\tif (store === null) {\n\t\tstore = new Store({\n\t\t\tmodules: {\n\t\t\t\tusers,\n\t\t\t\tapps,\n\t\t\t\tsettings,\n\t\t\t\toc,\n\t\t\t},\n\t\t\tstrict: debug,\n\t\t\tmutations,\n\t\t})\n\t}\n\treturn store\n}\n","/**\n * @copyright 2020 Christoph Wurst \n *\n * @author Christoph Wurst \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more 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 */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('settings')\n .detectUser()\n .build();\n","exports.sync = function (store, router, options) {\n var moduleName = (options || {}).moduleName || 'route'\n\n store.registerModule(moduleName, {\n namespaced: true,\n state: cloneRoute(router.currentRoute),\n mutations: {\n 'ROUTE_CHANGED': function ROUTE_CHANGED (state, transition) {\n store.state[moduleName] = cloneRoute(transition.to, transition.from)\n }\n }\n })\n\n var isTimeTraveling = false\n var currentPath\n\n // sync router on store change\n var storeUnwatch = store.watch(\n function (state) { return state[moduleName]; },\n function (route) {\n var fullPath = route.fullPath;\n if (fullPath === currentPath) {\n return\n }\n if (currentPath != null) {\n isTimeTraveling = true\n router.push(route)\n }\n currentPath = fullPath\n },\n { sync: true }\n )\n\n // sync store on router navigation\n var afterEachUnHook = router.afterEach(function (to, from) {\n if (isTimeTraveling) {\n isTimeTraveling = false\n return\n }\n currentPath = to.fullPath\n store.commit(moduleName + '/ROUTE_CHANGED', { to: to, from: from })\n })\n\n return function unsync () {\n // On unsync, remove router hook\n if (afterEachUnHook != null) {\n afterEachUnHook()\n }\n\n // On unsync, remove store watch\n if (storeUnwatch != null) {\n storeUnwatch()\n }\n\n // On unsync, unregister Module with store\n store.unregisterModule(moduleName)\n }\n}\n\nfunction cloneRoute (to, from) {\n var clone = {\n name: to.name,\n path: to.path,\n hash: to.hash,\n query: to.query,\n params: to.params,\n fullPath: to.fullPath,\n meta: to.meta\n }\n if (from) {\n clone.from = cloneRoute(from)\n }\n return Object.freeze(clone)\n}\n\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcContent,{attrs:{\"app-name\":\"settings\"}},[_c('router-view',{attrs:{\"name\":\"navigation\"}}),_vm._v(\" \"),_c('router-view'),_vm._v(\" \"),_c('router-view',{attrs:{\"name\":\"sidebar\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./SettingsApp.vue?vue&type=template&id=b0b62a76\"\nimport script from \"./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"\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 { loadState } from '@nextcloud/initial-state';\nconst appstoreEnabled = loadState('settings', 'appstoreEnabled', true);\n// Dynamic loading\nconst AppStore = () => import(/* webpackChunkName: 'settings-apps-view' */ '../views/AppStore.vue');\nconst AppStoreNavigation = () => import(/* webpackChunkName: 'settings-apps-view' */ '../views/AppStoreNavigation.vue');\nconst AppStoreSidebar = () => import(/* webpackChunkName: 'settings-apps-view' */ '../views/AppStoreSidebar.vue');\nconst UserManagement = () => import(/* webpackChunkName: 'settings-users' */ '../views/UserManagement.vue');\nconst UserManagementNavigation = () => import(/* webpackChunkName: 'settings-users' */ '../views/UserManagementNavigation.vue');\nconst routes = [\n {\n name: 'users',\n path: '/:index(index.php/)?settings/users',\n components: {\n default: UserManagement,\n navigation: UserManagementNavigation,\n },\n props: true,\n children: [\n {\n path: ':selectedGroup',\n name: 'group',\n },\n ],\n },\n {\n path: '/:index(index.php/)?settings/apps',\n name: 'apps',\n redirect: {\n name: 'apps-category',\n params: {\n category: appstoreEnabled ? 'discover' : 'installed',\n },\n },\n components: {\n default: AppStore,\n navigation: AppStoreNavigation,\n sidebar: AppStoreSidebar,\n },\n children: [\n {\n path: ':category',\n name: 'apps-category',\n children: [\n {\n path: ':id',\n name: 'apps-details',\n },\n ],\n },\n ],\n },\n];\nexport default routes;\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ \n *\n * @author John Molakvoæ \n * @author Julius Härtl \n * @author Roeland Jago Douma \n * @author Ferdinand Thiessen \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more 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 */\nimport Vue from 'vue';\nimport Router from 'vue-router';\nimport { generateUrl } from '@nextcloud/router';\nimport routes from './routes.ts';\nVue.use(Router);\nconst router = new Router({\n mode: 'history',\n // if index.php is in the url AND we got this far, then it's working:\n // let's keep using index.php in the url\n base: generateUrl(''),\n linkActiveClass: 'active',\n routes,\n});\nexport default router;\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ \n *\n * @author John Molakvoæ \n * @author rakekniven \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 */\nimport Vue from 'vue';\nimport VTooltip from 'v-tooltip';\nimport { sync } from 'vuex-router-sync';\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n';\nimport SettingsApp from './views/SettingsApp.vue';\nimport router from './router/index.ts';\nimport { useStore } from './store/index.js';\nimport { getRequestToken } from '@nextcloud/auth';\nimport { PiniaVuePlugin, createPinia } from 'pinia';\nVue.use(VTooltip, { defaultHtml: false });\nconst store = useStore();\nsync(store, router);\n// CSP config for webpack dynamic chunk loading\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken() ?? '');\n// bind to window\nVue.prototype.t = t;\nVue.prototype.n = n;\nVue.use(PiniaVuePlugin);\nconst pinia = createPinia();\nexport default new Vue({\n router,\n store,\n pinia,\n render: h => h(SettingsApp),\n el: '#content',\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","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (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 = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((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 = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + ({\"3239\":\"settings-users\",\"4529\":\"settings-apps-view\"}[chunkId] || chunkId) + \"-\" + chunkId + \".js?v=\" + {\"1544\":\"34736cf5f97675c121ab\",\"2441\":\"bd6d3dc836e836cd4795\",\"3239\":\"64f2f5050610c76d9879\",\"3865\":\"e5bf95b42e72ee8115f3\",\"4529\":\"a67cba58b65aa5810be6\",\"5775\":\"2db0bc22d25dcd7b0e81\",\"5862\":\"18c97d281a8207f0ce8d\",\"7265\":\"4debcb39bc5bc1550c8c\",\"8630\":\"1c63d6550408bf0f2211\"}[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 = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (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 = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2689;","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 && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\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(/^blob:/, \"\").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\t2689: 0\n};\n\n__webpack_require__.f.j = (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((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 = (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}\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 = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (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((id) => (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, [4208], () => (__webpack_require__(74329)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","GroupSorting","sanitize","url","replace","requireAdmin","confirmPassword","get","options","axios","post","data","put","delete","params","localStorage","getBuilder","persist","build","defaults","id","name","usercount","disabled","canAdd","canRemove","state","users","groups","orderBy","UserCount","minPasswordLength","usersOffset","usersLimit","disabledUsersOffset","disabledUsersLimit","userCount","showConfig","showStoragePath","getItem","showUserBackend","showLastLogin","showNewUserForm","showLanguages","mutations","appendUsers","usersObj","existingUsers","map","_ref","newUsers","Object","values","filter","_ref2","includes","concat","updateDisabledUsers","_usersObj","setPasswordPolicyMinLength","length","initGroups","_ref3","group","assign","addGroup","_ref4","gid","displayName","find","unshift","e","console","error","renameGroup","_ref5","groupIndex","findIndex","groupSearch","updatedGroup","splice","removeGroup","addUserGroup","_ref6","userid","user","enabled","push","removeUserGroup","_ref7","indexOf","addUserSubAdmin","_ref8","subadmin","removeUserSubAdmin","_ref9","deleteUser","userIndex","this","commit","actionType","addUserData","response","ocs","enableDisableUser","_ref10","updateUserCounts","_ref11","disabledGroup","forEach","userGroup","warn","logger","setUserData","_ref12","key","value","humanValue","parseFileSize","resetUsers","setShowConfig","_ref13","setItem","JSON","stringify","setGroupSorting","sorting","oldValue","generateUrl","String","catch","showError","t","getters","getUsers","getGroups","getSubadminGroups","getSortedGroups","sort","a","b","numA","numB","localeCompare","getGroupSorting","getPasswordPolicyMinLength","getUsersOffset","getUsersLimit","getDisabledUsersOffset","getDisabledUsersLimit","getUserCount","getShowConfig","CancelToken","searchRequestCancelSource","actions","searchUsers","context","_ref14","offset","limit","search","api","generateOcsUrl","getUser","userId","_ref15","cancel","source","trim","encodeURIComponent","cancelToken","token","then","usersCount","keys","getDisabledUsers","_ref16","_ref17","limitParam","getUsersFromList","_ref18","getUsersFromGroup","_ref19","groupid","groupId","getCapabilities","password_policy","minLength","_ref20","_ref21","_ref22","_ref23","_ref24","wipeUserDevices","Promise","reject","Error","addUser","_ref25","_ref26","dispatch","password","email","quota","language","manager","_ref27","userStatus","_ref28","allowedEmpty","sendWelcomeMail","apps","bundles","loadState","categories","updateCount","loading","gettingCategoriesPromise","APPS_API_FAILURE","message","isHTML","initCategories","updateCategories","categoriesPromise","setUpdateCount","addCategory","category","appendCategories","categoriesArray","setAllApps","setError","appId","Array","isArray","_id","app","clearError","enableApp","active","setInstallState","canInstall","disableApp","removable","canUnInstall","uninstallApp","needsDownload","installed","updateApp","version","update","resetApps","reset","startLoading","Vue","stopLoading","appIds","_appId","update_required","showInfo","onClick","window","location","reload","close","setTimeout","forceEnableApp","finally","getAllApps","getCategories","shouldRefetchCategories","arguments","undefined","categoriesPromiseResponse","getAppBundles","getUpdateCount","getCategoryById","selectedCategoryId","serverData","setServerData","getServerData","setAppConfig","use","Vuex","API_FAILURE","meta","store","useStore","Store","modules","settings","oc","strict","process","getLoggerBuilder","setApp","detectUser","cloneRoute","to","from","clone","path","hash","query","fullPath","freeze","exports","router","moduleName","registerModule","namespaced","currentRoute","transition","currentPath","isTimeTraveling","storeUnwatch","watch","route","sync","afterEachUnHook","afterEach","unregisterModule","_defineComponent","__name","setup","__props","__sfc","NcContent","_vm","_c","_self","_setupProxy","attrs","_v","components","default","UserManagement","navigation","UserManagementNavigation","props","children","redirect","AppStore","AppStoreNavigation","sidebar","AppStoreSidebar","Router","mode","base","linkActiveClass","routes","VTooltip","defaultHtml","__webpack_nonce__","btoa","getRequestToken","prototype","n","PiniaVuePlugin","pinia","createPinia","render","h","SettingsApp","el","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","module","loaded","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","r","getter","__esModule","d","definition","o","defineProperty","enumerable","f","chunkId","all","reduce","promises","u","g","globalThis","Function","obj","prop","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","tagName","toUpperCase","test","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