From 205d646f21c7b73ff35d4869238ec82f87d7009f Mon Sep 17 00:00:00 2001 From: Ferdinand Thiessen Date: Tue, 14 Jan 2025 22:40:18 +0100 Subject: [PATCH 1/2] fix(settings): Correctly parse and display default quota In the account management settings (default settings) the quota was parsed not consistently with how we do it everywhere else. Meaning `1 KB` should be 1024 bytes not 1000 bytes. Also this fixes an issue where searching "1KB" does not yield any output because of the space in the parsed value "1 KB". Signed-off-by: Ferdinand Thiessen --- .../components/Users/UserSettingsDialog.vue | 39 +++++++++++++------ 1 file changed, 28 insertions(+), 11 deletions(-) diff --git a/apps/settings/src/components/Users/UserSettingsDialog.vue b/apps/settings/src/components/Users/UserSettingsDialog.vue index 4d412146f9aad..2de38ab5dcfe0 100644 --- a/apps/settings/src/components/Users/UserSettingsDialog.vue +++ b/apps/settings/src/components/Users/UserSettingsDialog.vue @@ -70,13 +70,14 @@ @@ -95,6 +96,7 @@ import NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js' import { GroupSorting } from '../../constants/GroupManagement.ts' import { unlimitedQuota } from '../../utils/userUtils.ts' +import logger from '../../logger.ts' export default { name: 'UserSettingsDialog', @@ -229,8 +231,8 @@ export default { newUserSendEmail: value, }) await axios.post(generateUrl('/settings/users/preferences/newUser.sendEmail'), { value: value ? 'yes' : 'no' }) - } catch (e) { - console.error('could not update newUser.sendEmail preference: ' + e.message, e) + } catch (error) { + logger.error('Could not update newUser.sendEmail preference', { error }) } finally { this.loadingSendMail = false } @@ -239,6 +241,22 @@ export default { }, methods: { + /** + * Check if a quota matches the current search. + * This is a custom filter function to allow to map "1GB" to the label "1 GB" (ignoring whitespaces). + * + * @param option The quota to check + * @param label The label of the quota + * @param search The search string + */ + filterQuotas(option, label, search) { + const searchValue = search.toLocaleLowerCase().replaceAll(/\s/g, '') + return (label || '') + .toLocaleLowerCase() + .replaceAll(/\s/g, '') + .indexOf(searchValue) > -1 + }, + setShowConfig(key, status) { this.$store.commit('setShowConfig', { key, value: status }) }, @@ -254,14 +272,13 @@ export default { quota = quota?.id || quota.label } // only used for new presets sent through @Tag - const validQuota = parseFileSize(quota) + const validQuota = parseFileSize(quota, true) if (validQuota === null) { return unlimitedQuota - } else { - // unify format output - quota = formatFileSize(parseFileSize(quota)) - return { id: quota, label: quota } } + // unify format output + quota = formatFileSize(validQuota) + return { id: quota, label: quota } }, /** From edd9ba764aaa43deb5929fc83e49a75b2f977a4b Mon Sep 17 00:00:00 2001 From: nextcloud-command Date: Thu, 16 Jan 2025 22:24:13 +0000 Subject: [PATCH 2/2] chore(assets): Recompile assets Signed-off-by: nextcloud-command --- dist/settings-users-3239.js | 4 ++-- dist/settings-users-3239.js.map | 2 +- dist/settings-vue-settings-apps-users-management.js | 4 ++-- dist/settings-vue-settings-apps-users-management.js.map | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/dist/settings-users-3239.js b/dist/settings-users-3239.js index a3d627aec3abe..7d5055cfa0002 100644 --- a/dist/settings-users-3239.js +++ b/dist/settings-users-3239.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunknextcloud=self.webpackChunknextcloud||[]).push([[3239],{95668:(t,e,s)=>{s.d(e,{HK:()=>r,MY:()=>i,SA:()=>n});var a=s(53334);const n={id:"none",label:(0,a.Tl)("settings","Unlimited")},i={id:"default",label:(0,a.Tl)("settings","Default quota")},r=t=>{const e=Object.keys(t);return 1===e.length&&"id"===e.at(0)}},83754:(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-ea582d00]{margin:0}.modal__content[data-v-ea582d00]{display:flex;flex-direction:column;align-items:center;padding:20px;gap:4px 0}.modal__button-row[data-v-ea582d00]{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},98183:(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-e345be16] .icon-vue{width:64px;height:64px}.empty[data-v-e345be16] .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},41496:(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,".dialog__form[data-v-bb4e22ea]{display:flex;flex-direction:column;align-items:center;padding:0 8px;gap:4px 0}.dialog__item[data-v-bb4e22ea]{width:100%}.dialog__item[data-v-bb4e22ea]:not(:focus):not(:active){border-color:var(--color-border-dark)}.dialog__hint[data-v-bb4e22ea]{color:var(--color-text-maxcontrast);margin-top:8px;align-self:flex-start}.dialog__label[data-v-bb4e22ea]{display:block;padding:4px 0}.dialog__select[data-v-bb4e22ea]{width:100%}.dialog__managers[data-v-bb4e22ea]{margin-bottom:12px}.dialog__submit[data-v-bb4e22ea]{margin-top:4px;margin-bottom:8px}.dialog[data-v-bb4e22ea] .dialog__actions{margin:auto}","",{version:3,sources:["webpack://./apps/settings/src/components/Users/NewUserDialog.vue"],names:[],mappings:"AAEC,+BACC,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,aAAA,CACA,SAAA,CAGD,+BACC,UAAA,CAEA,wDACC,qCAAA,CAIF,+BACC,mCAAA,CACA,cAAA,CACA,qBAAA,CAGD,gCACC,aAAA,CACA,aAAA,CAGD,iCACC,UAAA,CAGD,mCACC,kBAAA,CAGD,iCACC,cAAA,CACA,iBAAA,CAIA,0CACC,WAAA",sourcesContent:["\n.dialog {\n\t&__form {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\tpadding: 0 8px;\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&__managers {\n\t\tmargin-bottom: 12px;\n\t}\n\n\t&__submit {\n\t\tmargin-top: 4px;\n\t\tmargin-bottom: 8px;\n\t}\n\n\t:deep {\n\t\t.dialog__actions {\n\t\t\tmargin: auto;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const o=r},14124:(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-685a7a6f]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.footer__cell[data-v-685a7a6f]{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-685a7a6f],.footer__cell span[data-v-685a7a6f],.footer__cell label[data-v-685a7a6f]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.footer__cell--avatar[data-v-685a7a6f],.footer__cell--displayname[data-v-685a7a6f]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.footer__cell--avatar[data-v-685a7a6f]{left:0}.footer__cell--displayname[data-v-685a7a6f]{left:var(--avatar-cell-width);border-right:1px solid var(--color-border)}}.footer__cell--username[data-v-685a7a6f]{padding-left:calc(var(--default-grid-baseline)*3)}.footer__cell--avatar[data-v-685a7a6f]{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-685a7a6f]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.footer__cell--multiline span[data-v-685a7a6f]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.footer__cell--large[data-v-685a7a6f]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.footer__cell--obfuscated[data-v-685a7a6f]{min-width:400px;width:400px}.footer__cell--fill[data-v-685a7a6f]{min-width:var(--cell-width-large);width:100%}.footer__cell--actions[data-v-685a7a6f]{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-685a7a6f]{color:var(--color-text-maxcontrast)}.footer__cell[data-v-685a7a6f]{position:sticky;color:var(--color-text-maxcontrast)}.footer__cell--loading[data-v-685a7a6f]{left:0;min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0}.footer__cell--count[data-v-685a7a6f]{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,yBCGC,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,yCACC,iDAAA,CAGD,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,CDpGD,+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 * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\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&--username {\n\t\t\tpadding-left: calc(var(--default-grid-baseline) * 3);\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},54827:(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-c0c2e65c]{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-c0c2e65c]{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-c0c2e65c],.header__cell span[data-v-c0c2e65c],.header__cell label[data-v-c0c2e65c]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.header__cell--avatar[data-v-c0c2e65c],.header__cell--displayname[data-v-c0c2e65c]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.header__cell--avatar[data-v-c0c2e65c]{left:0}.header__cell--displayname[data-v-c0c2e65c]{left:var(--avatar-cell-width);border-right:1px solid var(--color-border)}}.header__cell--username[data-v-c0c2e65c]{padding-left:calc(var(--default-grid-baseline)*3)}.header__cell--avatar[data-v-c0c2e65c]{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-c0c2e65c]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.header__cell--multiline span[data-v-c0c2e65c]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.header__cell--large[data-v-c0c2e65c]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.header__cell--obfuscated[data-v-c0c2e65c]{min-width:400px;width:400px}.header__cell--fill[data-v-c0c2e65c]{min-width:var(--cell-width-large);width:100%}.header__cell--actions[data-v-c0c2e65c]{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-c0c2e65c]{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,yBCGC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CDJA,2CAAA,CCQA,+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,yCACC,iDAAA,CAGD,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 * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\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&--username {\n\t\t\tpadding-left: calc(var(--default-grid-baseline) * 3);\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},84924:(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-45690c64]{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-45690c64]:hover{background-color:var(--color-background-hover)}.user-list__row:hover .row__cell[data-v-45690c64]:not(.row__cell--actions){background-color:var(--color-background-hover)}.user-list__row .select--fill[data-v-45690c64]{max-width:calc(var(--cell-width-large) - 2*var(--cell-padding))}.row__cell[data-v-45690c64]{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-45690c64],.row__cell span[data-v-45690c64],.row__cell label[data-v-45690c64]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.row__cell--avatar[data-v-45690c64],.row__cell--displayname[data-v-45690c64]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.row__cell--avatar[data-v-45690c64]{left:0}.row__cell--displayname[data-v-45690c64]{left:var(--avatar-cell-width);border-right:1px solid var(--color-border)}}.row__cell--username[data-v-45690c64]{padding-left:calc(var(--default-grid-baseline)*3)}.row__cell--avatar[data-v-45690c64]{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-45690c64]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.row__cell--multiline span[data-v-45690c64]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.row__cell--large[data-v-45690c64]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.row__cell--obfuscated[data-v-45690c64]{min-width:400px;width:400px}.row__cell--fill[data-v-45690c64]{min-width:var(--cell-width-large);width:100%}.row__cell--actions[data-v-45690c64]{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-45690c64]{color:var(--color-text-maxcontrast)}.row__cell[data-v-45690c64]{border-bottom:1px solid var(--color-border)}.row__cell[data-v-45690c64] .v-select.select{min-width:var(--cell-min-width)}.row__progress[data-v-45690c64]{margin-top:4px}.row__progress--warn[data-v-45690c64]::-moz-progress-bar{background:var(--color-warning) !important}.row__progress--warn[data-v-45690c64]::-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,iCCGC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CDLA,uCACC,8CAAA,CAEA,2EACC,8CAAA,CAKF,+CACC,+DAAA,CCDD,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,sCACC,iDAAA,CAGD,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,CDpFD,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 * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\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&--username {\n\t\t\tpadding-left: calc(var(--default-grid-baseline) * 3);\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},45669:(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-db0253c4]{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},28049:(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-78acaa4e]{--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%;will-change:scroll-position}.user-list__header[data-v-78acaa4e],.user-list__footer[data-v-78acaa4e]{position:sticky;display:block}.user-list__header[data-v-78acaa4e]{top:0;z-index:calc(var(--sticky-column-z-index) + 1)}.user-list__footer[data-v-78acaa4e]{left:0}.user-list__body[data-v-78acaa4e]{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,CACA,2BAAA,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\twill-change: scroll-position;\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},17651:(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-fda025aa]{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},18402:(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-36898b23]{height:auto !important;overflow:visible !important}.account-management__group-list[data-v-36898b23]{height:100% !important}.account-management__settings-toggle[data-v-36898b23]{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},70094:(e,s,a)=>{a.r(s),a.d(s,{default:()=>Lt});var n=a(53334),i=a(61338),r=a(85471),o=a(18195),l=a(9165),d=a(85168),c=a(54914),u=a(34196),g=a(6695),A=a(84237),p=a(84985),h=(a(48750),a(59271));a(96763);function m(t){var e;const s=(0,h.BA)(t);return null!=(e=null==s?void 0:s.$el)?e:s}const C=h.oc?window:void 0;function v(t){const e=function(){const t=(0,p.KR)(!1),e=(0,p.nI)();return e&&(0,p.sV)((()=>{t.value=!0}),p.LE?void 0:e),t}();return(0,p.EW)((()=>(e.value,Boolean(t()))))}function w(t,e={}){const{window:s=C,scrollTarget:a,threshold:n=0}=e,i=(0,p.KR)(!1);return function(t,e,s={}){const{root:a,rootMargin:n="0px",threshold:i=.1,window:r=C,immediate:o=!0}=s,l=v((()=>r&&"IntersectionObserver"in r)),d=(0,p.EW)((()=>{const e=(0,h.BA)(t);return(Array.isArray(e)?e:[e]).map(m).filter(h.d6)}));let c=h.lQ;const u=(0,p.KR)(o),g=l.value?(0,p.wB)((()=>[d.value,m(a),u.value]),(([t,s])=>{if(c(),!u.value)return;if(!t.length)return;const a=new IntersectionObserver(e,{root:m(s),rootMargin:n,threshold:i});t.forEach((t=>t&&a.observe(t))),c=()=>{a.disconnect(),c=h.lQ}}),{immediate:o,flush:"post"}):h.lQ,A=()=>{c(),g(),u.value=!1};(0,h.Uo)(A)}(t,(t=>{let e=i.value,s=0;for(const a of t)a.time>=s&&(s=a.time,e=a.isIntersecting);i.value=e}),{root:a,window:s,threshold:n}),i}h.C$.mounted,h.C$.unmounted,h.C$.mounted,h.C$.mounted,"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self,h.C$.mounted,h.C$.mounted;const _={[h.C$.mounted](t,e){if("function"==typeof e.value){const s=e.value,a=w(t);(0,p.wB)(a,(t=>s(t)),{immediate:!0})}else{const[s,a]=e.value,n=w(t,a);(0,p.wB)(n,(t=>s(t)),{immediate:!0})}}};h.C$.mounted,h.C$.mounted;Boolean,Boolean,Boolean,Boolean,h.C$.mounted;(0,p.KR)(!1);var f=a(17334),b=a.n(f),y=a(36620);r.Ay.directive("elementVisibility",_);const x=r.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,y.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 k=a(85072),S=a.n(k),G=a(97825),U=a.n(G),N=a(77659),D=a.n(N),L=a(55056),B=a.n(L),q=a(10540),I=a.n(q),O=a(41113),M=a.n(O),$=a(28049),E={};E.styleTagTransform=M(),E.setAttributes=B(),E.insert=D().bind(null,"head"),E.domAPI=U(),E.insertStyleElement=I(),S()($.A,E),$.A&&$.A.locals&&$.A.locals;var P=a(14486);const T=(0,P.A)(x,(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:[],managerInputLabel:t("settings","Manager"),managerLabel:t("settings","Set line manager")}),computed:{showConfig(){return this.$store.getters.getShowConfig},settings(){return this.$store.getters.getServerData},usernameLabel(){return this.settings.newUserGenerateUserID?t("settings","Account name will be autogenerated"):t("settings","Account name (required)")},minPasswordLength(){return this.$store.getters.getPasswordPolicyMinLength},groups(){return this.$store.getters.getGroups.filter((t=>"__nc_internal_recent"!==t.id&&"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()},mounted(){this.$refs.username?.focus?.()},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?.focus?.(),this.$emit("closing")}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?.focus?.():107===e&&this.$refs.password?.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 j=a(41496),K={};K.styleTagTransform=M(),K.setAttributes=B(),K.insert=D().bind(null,"head"),K.domAPI=U(),K.insertStyleElement=I(),S()(j.A,K),j.A&&j.A.locals&&j.A.locals;const Y=(0,P.A)(H,(function(){var t=this,e=t._self._c;return e("NcDialog",t._g({staticClass:"dialog",attrs:{size:"small",name:t.t("settings","New account"),"out-transition":""},scopedSlots:t._u([{key:"actions",fn:function(){return[e("NcButton",{staticClass:"dialog__submit",attrs:{"data-test":"submit",form:"new-user-form",type:"primary","native-type":"submit"}},[t._v("\n\t\t\t"+t._s(t.t("settings","Add new account"))+"\n\t\t")])]},proxy:!0}])},t.$listeners),[e("form",{staticClass:"dialog__form",attrs:{id:"new-user-form","data-test":"form",disabled:t.loading.all},on:{submit:function(e){return e.preventDefault(),t.createUser.apply(null,arguments)}}},[e("NcTextField",{ref:"username",staticClass:"dialog__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:"dialog__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:"dialog__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:"dialog__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:"dialog__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:"dialog__item"},[e("NcSelect",{staticClass:"dialog__select",attrs:{"input-label":t.settings.isAdmin||t.settings.isDelegatedAdmin?t.t("settings","Member of the following groups"):t.t("settings","Member of the following groups (required)"),placeholder:t.t("settings","Set account 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&&!t.settings.isDelegatedAdmin},on:{input:t.handleGroupInput,"option:created":t.createGroup}})],1),t._v(" "),t.subAdminsGroups.length>0?e("div",{staticClass:"dialog__item"},[e("NcSelect",{staticClass:"dialog__select",attrs:{"input-label":t.t("settings","Admin of the following groups"),placeholder:t.t("settings","Set account 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:"dialog__item"},[e("NcSelect",{staticClass:"dialog__select",attrs:{"input-label":t.t("settings","Quota"),placeholder:t.t("settings","Set account 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:"dialog__item"},[e("NcSelect",{staticClass:"dialog__select",attrs:{"input-label":t.t("settings","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:["dialog__item dialog__managers",{"icon-loading-small":t.loading.manager}]},[e("NcSelect",{staticClass:"dialog__select",attrs:{"input-label":t.managerInputLabel,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)],1)])}),[],!1,null,"bb4e22ea",null).exports,X=r.Ay.extend({name:"UserListFooter",components:{NcLoadingIcon:A.A},props:{loading:{type:Boolean,required:!0},filteredUsers:{type:Array,required:!0}},computed:{userCount(){return this.loading?this.n("settings","{userCount} account …","{userCount} accounts …",this.filteredUsers.length,{userCount:this.filteredUsers.length}):this.n("settings","{userCount} account","{userCount} accounts",this.filteredUsers.length,{userCount:this.filteredUsers.length})}},methods:{t:n.Tl,n:n.zw}});var V=a(14124),J={};J.styleTagTransform=M(),J.setAttributes=B(),J.insert=D().bind(null,"head"),J.domAPI=U(),J.insertStyleElement=I(),S()(V.A,J),V.A&&V.A.locals&&V.A.locals;const Z=(0,P.A)(X,(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 accounts …"),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,"685a7a6f",null).exports,tt=r.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 et=a(54827),st={};st.styleTagTransform=M(),st.setAttributes=B(),st.insert=D().bind(null,"head"),st.domAPI=U(),st.insertStyleElement=I(),S()(et.A,st),et.A&&et.A.locals&&et.A.locals;const at=(0,P.A)(tt,(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("th",{staticClass:"header__cell header__cell--username",attrs:{"data-cy-user-list-header-username":"",scope:"col"}},[e("span",[t._v("\n\t\t\t"+t._s(t.t("settings","Account name"))+"\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||t.settings.isDelegatedAdmin)?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","Account 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","Account actions"))+"\n\t\t")])])])}),[],!1,null,"c0c2e65c",null).exports;var nt=a(35810),it=a(21777),rt=a(56760),ot=a(41944),lt=a(95101),dt=a(86454),ct=a(89257),ut=a(24764),gt=a(65659);const At=(0,r.pM)({components:{NcActionButton:ct.A,NcActions:ut.A,NcIconSvgWrapper:g.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?gt:''},enabledActions(){return this.actions.filter((t=>"function"!=typeof t.enabled||t.enabled(this.user)))}},methods:{isSvg:function(t){if("string"!=typeof t)throw new TypeError(`Expected a \`string\`, got \`${typeof t}\``);if(0===(t=t.trim()).length)return!1;if(!0!==dt.XMLValidator.validate(t))return!1;let e;const s=new dt.XMLParser;try{e=s.parse(t)}catch{return!1}return!!e&&!!Object.keys(e).some((t=>"svg"===t.toLowerCase()))},toggleEdit(){this.$emit("update:edit",!this.edit)}}}),pt=(0,P.A)(At,(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.enabledActions,(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,"close-after-click":""},on:{click:e=>n(e,{...t.user})},scopedSlots:t._u([t.isSvg(i)?{key:"icon",fn:function(){return[e("NcIconSvgWrapper",{attrs:{svg:i,"aria-hidden":"true"}})]},proxy:!0}:null],null,!0)},[t._v("\n\t\t"+t._s(r)+"\n\t\t")])}))],2)}),[],!1,null,null,null).exports,ht={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 mt=a(95668),Ct=a(96763);const vt={name:"UserRow",components:{NcAvatar:ot.A,NcLoadingIcon:A.A,NcProgressBar:lt.A,NcSelect:Q.A,NcTextField:W.A,UserRowActions:pt},mixins:[ht],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,mt.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,nt.v7)(this.user.quota?.used)}):t("settings","{size} used",{size:(0,nt.v7)(0)})},canEdit(){return(0,it.HW)().uid!==this.user.id||this.settings.isAdmin||this.settings.isDelegatedAdmin},userQuota(){let e=this.user.quota?.quota;return"default"===e&&(e=this.settings.defaultQuota,"none"!==e&&(e=(0,nt.lT)(e,!0))),"none"===e||-3===e?t("settings","Unlimited"):e>=0?(0,nt.v7)(e):(0,nt.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!==mt.SA.id&&(0,nt.lT)(this.settings.defaultQuota,!0)>=0?{id:this.settings.defaultQuota,label:this.settings.defaultQuota}:mt.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:{async wipeUserDevices(){const e=this.user.id;await(0,rt.C5)(),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,d.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,d.Qg)(t("setting","Failed to update line manager")),Ct.error(e)}finally{this.loading.manager=!1}},async deleteUser(){const e=this.user.id;await(0,rt.C5)(),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,d.Te)(t("setting","Display name was successfully changed"))}finally{this.loading.displayName=!1}},async updatePassword(){if(this.loading.password=!0,0===this.editedPassword.length)(0,d.Qg)(t("setting","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,d.Te)(t("setting","Password was successfully changed"))}finally{this.loading.password=!1}},async updateEmail(){if(this.loading.mailAddress=!0,""===this.editedMail)(0,d.Qg)(t("setting","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,d.Te)(t("setting","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){Ct.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){Ct.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){Ct.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){Ct.error(t)}finally{this.loading.subadmins=!1}},async setUserQuota(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"none";"none"===t&&(t=mt.SA),this.loading.quota=!0,t=t.id?t.id:t;try{const e=((0,nt.lT)(t,!0)||t).toString();await this.$store.dispatch("setUserData",{userid:this.user.id,key:"quota",value:e})}catch(t){Ct.error(t)}finally{this.loading.quota=!1}return t},validateQuota:t=>("object"==typeof t&&(t=t?.id||t.label),null===(0,nt.lT)(t,!0)?mt.SA:{id:t=(0,nt.v7)((0,nt.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){Ct.error(t)}return t},sendWelcomeMail(){this.loading.all=!0,this.$store.dispatch("sendWelcomeMail",this.user.id).then((()=>(0,d.Te)(t("setting","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 wt=a(84924),_t={};_t.styleTagTransform=M(),_t.setAttributes=B(),_t.insert=D().bind(null,"head"),_t.domAPI=U(),_t.insertStyleElement=I(),S()(wt.A,_t),wt.A&&wt.A.locals&&wt.A.locals;var ft=(0,P.A)(vt,(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._s(t.user.displayname)+"\n\t\t")])],2),t._v(" "),e("td",{staticClass:"row__cell row__cell--username",attrs:{"data-cy-user-list-cell-username":""}},[e("span",{staticClass:"row__subtitle"},[t._v(t._s(t.user.id))])]),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 account 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||t.settings.isDelegatedAdmin,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||t.settings.isDelegatedAdmin)?e("td",{staticClass:"row__cell row__cell--large row__cell--multiline",attrs:{"data-cy-user-list-cell-subadmins":""}},[t.editing&&(t.settings.isAdmin||t.settings.isDelegatedAdmin)&&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,"45690c64",null);const bt=ft.exports,yt=Object.freeze({id:"",displayName:"",password:"",mailAddress:"",groups:[],manager:"",subAdminsGroups:[],quota:mt.MY,language:{code:"en",name:t("settings","Default language")}}),xt={name:"UserList",components:{Fragment:c.F,NcEmptyContent:u.A,NcIconSvgWrapper:g.A,NcLoadingIcon:A.A,NewUserDialog:Y,UserListFooter:Z,UserListHeader:at,VirtualList:T},props:{selectedGroup:{type:String,default:null},externalActions:{type:Array,default:()=>[]}},setup:()=>({mdiAccountGroup:l.n7C,rowHeight:55,UserRow:bt}),data:()=>({loading:{all:!1,groups:!1,users:!1},newUser:{...yt},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,mt.HK)(t)))},users(){return this.$store.getters.getUsers},filteredUsers(){return"disabled"===this.selectedGroup?this.users.filter((t=>!1===t.enabled)):this.users.filter((t=>!1!==t.enabled))},groups(){return this.$store.getters.getGroups.filter((t=>"__nc_internal_recent"!==t.id&&"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(mt.SA),t.unshift(mt.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){y.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,i.B1)("nextcloud:unified-search.search",this.search),(0,i.B1)("nextcloud:unified-search.reset",this.resetSearch),await this.redirectIfDisabled()},beforeDestroy(){(0,i.al)("nextcloud:unified-search.search",this.search),(0,i.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}):"__nc_internal_recent"===this.selectedGroup?await this.$store.dispatch("getRecentUsers",{offset:this.usersOffset,limit:this.usersLimit,search:this.searchQuery}):await this.$store.dispatch("getUsers",{offset:this.usersOffset,limit:this.usersLimit,group:this.selectedGroup,search:this.searchQuery}),y.A.debug(`${this.users.length} total user(s) loaded`)}catch(t){y.A.error("Failed to load accounts",{error:t}),(0,d.Qg)("Failed to load accounts")}this.loading.users=!1,this.isInitialLoad=!1},closeDialog(){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({},yt),this.settings.defaultLanguage&&r.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 kt=a(98183),St={};St.styleTagTransform=M(),St.setAttributes=B(),St.insert=D().bind(null,"head"),St.domAPI=U(),St.insertStyleElement=I(),S()(kt.A,St),kt.A&&kt.A.locals&&kt.A.locals;const Gt=(0,P.A)(xt,(function(){var t=this,e=t._self._c;return e("Fragment",[t.showConfig.showNewUserForm?e("NewUserDialog",{attrs:{loading:t.loading,"new-user":t.newUser,"quota-options":t.quotaOptions},on:{reset:t.resetForm,closing:t.closeDialog}}):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,"e345be16",null).exports,Ut=(0,r.pM)({name:"UserManagement",components:{NcAppContent:o.A,UserList:Gt},data:()=>({externalActions:[]}),computed:{pageHeading(){return null===this.selectedGroupDecoded?(0,n.Tl)("settings","All 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,(0,i.Ic)("settings:user-management:loaded")},methods:{t:n.Tl,registerAction(t,e,s,a){return this.externalActions.push({icon:t,text:e,action:s,enabled:a}),this.externalActions}}});var Nt=a(17651),Dt={};Dt.styleTagTransform=M(),Dt.setAttributes=B(),Dt.insert=D().bind(null,"head"),Dt.domAPI=U(),Dt.insertStyleElement=I(),S()(Nt.A,Dt),Nt.A&&Nt.A.locals&&Nt.A.locals;const Lt=(0,P.A)(Ut,(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,"fda025aa",null).exports},39603:(e,s,a)=>{a.r(s),a.d(s,{default:()=>dt});var n=a(85471),i=a(9165),r=a(85168),o=a(53334),l=a(44131),d=a(32831),c=a(42530),u=a(31474),g=a(52439),A=a(80329),p=a(62720),h=a(18740),m=a(85947),C=a(6695),v=a(84237),w=a(54914),_=a(89257),f=a(68567),b=a(80910),y=a(43261),x=a(79759),k=a(2413);const S={name:"GroupListItem",components:{AccountGroup:y.A,Delete:x.A,Fragment:w.F,NcActionButton:_.A,NcActionInput:l.A,NcAppNavigationItem:g.A,NcButton:h.A,NcCounterBubble:m.A,NcModal:f.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 G=a(85072),U=a.n(G),N=a(97825),D=a.n(N),L=a(77659),B=a.n(L),q=a(55056),I=a.n(q),O=a(10540),M=a.n(O),$=a(41113),E=a.n($),P=a(83754),T={};T.styleTagTransform=E(),T.setAttributes=I(),T.insert=B().bind(null,"head"),T.domAPI=D(),T.insertStyleElement=M(),U()(P.A,T),P.A&&P.A.locals&&P.A.locals;var z=a(14486);const F=(0,z.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||t.settings.isDelegatedAdmin)?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||t.settings.isDelegatedAdmin)?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,"ea582d00",null).exports;var R=a(35810),Q=a(63814),W=a(65043),H=a(69996),j=a(85948),K=a(32073),Y=a(67607),X=a(15916),V=a(95668),J=a(96763);const Z={name:"UserSettingsDialog",components:{NcAppSettingsDialog:H.N,NcAppSettingsSection:j.A,NcCheckboxRadioSwitch:K.A,NcNoteCard:b.A,NcSelect:Y.A},props:{open:{type:Boolean,required:!0}},data:()=>({selectedQuota:!1,loadingSendMail:!1}),computed:{groupSorting:{get(){return this.$store.getters.getGroupSorting===X.q.GroupName?"name":"member-count"},set(t){this.$store.commit("setGroupSorting","name"===t?X.q.GroupName:X.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(V.SA),t},defaultQuota:{get(){return!1!==this.selectedQuota?this.selectedQuota:this.settings.defaultQuota!==V.SA.id&&OC.Util.computerFileSize(this.settings.defaultQuota)>=0?{id:this.settings.defaultQuota,label:this.settings.defaultQuota}:V.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){J.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)?V.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=V.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 tt=a(45669),et={};et.styleTagTransform=E(),et.setAttributes=I(),et.insert=B().bind(null,"head"),et.domAPI=D(),et.insertStyleElement=M(),U()(tt.A,et),tt.A&&tt.A.locals&&tt.A.locals;const st=(0,z.A)(Z,(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,"db0253c4",null).exports;var at=a(8265),nt=a(24387);function it(t){return void 0===t?null:{id:t.id,title:t.name,usercount:t.usercount,count:Math.max(0,t.usercount-t.disabled)}}const rt=(0,n.pM)({__name:"UserManagementNavigation",setup(t){const e=(0,nt.lq)(),s=(0,nt.rd)(),a=(0,at.P)(),w=(0,n.KR)(!1),_=(0,n.EW)((()=>e.params?.selectedGroup)),f=(0,n.EW)((()=>_.value?decodeURIComponent(_.value):null)),b=(0,n.EW)((()=>a.getters.getUserCount)),y=(0,n.EW)((()=>a.getters.getSortedGroups)),{adminGroup:x,recentGroup:k,disabledGroup:S,userGroups:G}=(t=>{const e=(0,n.EW)((()=>t.value.filter((t=>"disabled"!==t.id&&"__nc_internal_recent"!==t.id&&"admin"!==t.id)).map((t=>it(t))).filter((t=>null!==t)))),s=(0,n.EW)((()=>it(t.value.find((t=>"admin"===t.id))))),a=(0,n.EW)((()=>it(t.value.find((t=>"disabled"===t.id)))));return{adminGroup:s,recentGroup:(0,n.EW)((()=>it(t.value.find((t=>"__nc_internal_recent"===t.id))))),disabledGroup:a,userGroups:e}})(y),U=(0,n.EW)((()=>a.getters.getServerData)),N=(0,n.EW)((()=>U.value.isAdmin||U.value.isDelegatedAdmin)),D=(0,n.KR)(!1),L=(0,n.KR)(!1),B=(0,n.KR)(!1),q=(0,n.KR)("");return{__sfc:!0,route:e,router:s,store:a,isDialogOpen:w,selectedGroup:_,selectedGroupDecoded:f,userCount:b,groups:y,adminGroup:x,recentGroup:k,disabledGroup:S,userGroups:G,settings:U,isAdminOrDelegatedAdmin:N,isAddGroupOpen:D,loadingAddGroup:L,hasAddGroupError:B,newGroupName:q,createGroup:async function(){B.value=!1;const t=q.value.trim();if(""!==t){D.value=!1,L.value=!0;try{await a.dispatch("addGroup",t),await s.push({name:"group",params:{selectedGroup:encodeURIComponent(t)}}),q.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,mdiHistory:i.LP2,t:o.Tl,NcActionInput:l.A,NcActionText:d.A,NcAppNavigation:c.A,NcAppNavigationCaption:u.N,NcAppNavigationItem:g.A,NcAppNavigationList:A.A,NcAppNavigationNew:p.A,NcButton:h.A,NcCounterBubble:m.A,NcIconSvgWrapper:C.A,NcLoadingIcon:v.A,GroupListItem:F,UserSettingsDialog:st}}});var ot=a(18402),lt={};lt.styleTagTransform=E(),lt.setAttributes=I(),lt.insert=B().bind(null,"head"),lt.domAPI=D(),lt.insertStyleElement=M(),U()(ot.A,lt),ot.A&&ot.A.locals&&ot.A.locals;const dt=(0,z.A)(rt,(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","All 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.isAdminOrDelegatedAdmin?e(s.NcAppNavigationItem,{attrs:{id:"recent",exact:!0,name:s.t("settings","Recently active"),to:{name:"group",params:{selectedGroup:"__nc_internal_recent"}}},scopedSlots:t._u([{key:"icon",fn:function(){return[e(s.NcIconSvgWrapper,{attrs:{path:s.mdiHistory}})]},proxy:!0},{key:"counter",fn:function(){return[s.recentGroup?.usercount?e(s.NcCounterBubble,{attrs:{type:"__nc_internal_recent"===s.selectedGroupDecoded?"highlighted":void 0}},[t._v("\n\t\t\t\t\t"+t._s(s.recentGroup.usercount)+"\n\t\t\t\t")]):t._e()]},proxy:!0}],null,!1,2299424282)}):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,"36898b23",null).exports},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"},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"},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"}}]); -//# sourceMappingURL=settings-users-3239.js.map?v=4397d4b7cd27394bcfef \ No newline at end of file +"use strict";(self.webpackChunknextcloud=self.webpackChunknextcloud||[]).push([[3239],{95668:(t,e,s)=>{s.d(e,{HK:()=>r,MY:()=>i,SA:()=>n});var a=s(53334);const n={id:"none",label:(0,a.Tl)("settings","Unlimited")},i={id:"default",label:(0,a.Tl)("settings","Default quota")},r=t=>{const e=Object.keys(t);return 1===e.length&&"id"===e.at(0)}},83754:(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-ea582d00]{margin:0}.modal__content[data-v-ea582d00]{display:flex;flex-direction:column;align-items:center;padding:20px;gap:4px 0}.modal__button-row[data-v-ea582d00]{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},98183:(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-e345be16] .icon-vue{width:64px;height:64px}.empty[data-v-e345be16] .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},41496:(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,".dialog__form[data-v-bb4e22ea]{display:flex;flex-direction:column;align-items:center;padding:0 8px;gap:4px 0}.dialog__item[data-v-bb4e22ea]{width:100%}.dialog__item[data-v-bb4e22ea]:not(:focus):not(:active){border-color:var(--color-border-dark)}.dialog__hint[data-v-bb4e22ea]{color:var(--color-text-maxcontrast);margin-top:8px;align-self:flex-start}.dialog__label[data-v-bb4e22ea]{display:block;padding:4px 0}.dialog__select[data-v-bb4e22ea]{width:100%}.dialog__managers[data-v-bb4e22ea]{margin-bottom:12px}.dialog__submit[data-v-bb4e22ea]{margin-top:4px;margin-bottom:8px}.dialog[data-v-bb4e22ea] .dialog__actions{margin:auto}","",{version:3,sources:["webpack://./apps/settings/src/components/Users/NewUserDialog.vue"],names:[],mappings:"AAEC,+BACC,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,aAAA,CACA,SAAA,CAGD,+BACC,UAAA,CAEA,wDACC,qCAAA,CAIF,+BACC,mCAAA,CACA,cAAA,CACA,qBAAA,CAGD,gCACC,aAAA,CACA,aAAA,CAGD,iCACC,UAAA,CAGD,mCACC,kBAAA,CAGD,iCACC,cAAA,CACA,iBAAA,CAIA,0CACC,WAAA",sourcesContent:["\n.dialog {\n\t&__form {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\tpadding: 0 8px;\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&__managers {\n\t\tmargin-bottom: 12px;\n\t}\n\n\t&__submit {\n\t\tmargin-top: 4px;\n\t\tmargin-bottom: 8px;\n\t}\n\n\t:deep {\n\t\t.dialog__actions {\n\t\t\tmargin: auto;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const o=r},14124:(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-685a7a6f]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.footer__cell[data-v-685a7a6f]{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-685a7a6f],.footer__cell span[data-v-685a7a6f],.footer__cell label[data-v-685a7a6f]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.footer__cell--avatar[data-v-685a7a6f],.footer__cell--displayname[data-v-685a7a6f]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.footer__cell--avatar[data-v-685a7a6f]{left:0}.footer__cell--displayname[data-v-685a7a6f]{left:var(--avatar-cell-width);border-right:1px solid var(--color-border)}}.footer__cell--username[data-v-685a7a6f]{padding-left:calc(var(--default-grid-baseline)*3)}.footer__cell--avatar[data-v-685a7a6f]{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-685a7a6f]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.footer__cell--multiline span[data-v-685a7a6f]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.footer__cell--large[data-v-685a7a6f]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.footer__cell--obfuscated[data-v-685a7a6f]{min-width:400px;width:400px}.footer__cell--fill[data-v-685a7a6f]{min-width:var(--cell-width-large);width:100%}.footer__cell--actions[data-v-685a7a6f]{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-685a7a6f]{color:var(--color-text-maxcontrast)}.footer__cell[data-v-685a7a6f]{position:sticky;color:var(--color-text-maxcontrast)}.footer__cell--loading[data-v-685a7a6f]{left:0;min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0}.footer__cell--count[data-v-685a7a6f]{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,yBCGC,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,yCACC,iDAAA,CAGD,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,CDpGD,+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 * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\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&--username {\n\t\t\tpadding-left: calc(var(--default-grid-baseline) * 3);\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},54827:(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-c0c2e65c]{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-c0c2e65c]{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-c0c2e65c],.header__cell span[data-v-c0c2e65c],.header__cell label[data-v-c0c2e65c]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.header__cell--avatar[data-v-c0c2e65c],.header__cell--displayname[data-v-c0c2e65c]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.header__cell--avatar[data-v-c0c2e65c]{left:0}.header__cell--displayname[data-v-c0c2e65c]{left:var(--avatar-cell-width);border-right:1px solid var(--color-border)}}.header__cell--username[data-v-c0c2e65c]{padding-left:calc(var(--default-grid-baseline)*3)}.header__cell--avatar[data-v-c0c2e65c]{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-c0c2e65c]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.header__cell--multiline span[data-v-c0c2e65c]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.header__cell--large[data-v-c0c2e65c]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.header__cell--obfuscated[data-v-c0c2e65c]{min-width:400px;width:400px}.header__cell--fill[data-v-c0c2e65c]{min-width:var(--cell-width-large);width:100%}.header__cell--actions[data-v-c0c2e65c]{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-c0c2e65c]{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,yBCGC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CDJA,2CAAA,CCQA,+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,yCACC,iDAAA,CAGD,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 * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\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&--username {\n\t\t\tpadding-left: calc(var(--default-grid-baseline) * 3);\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},84924:(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-45690c64]{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-45690c64]:hover{background-color:var(--color-background-hover)}.user-list__row:hover .row__cell[data-v-45690c64]:not(.row__cell--actions){background-color:var(--color-background-hover)}.user-list__row .select--fill[data-v-45690c64]{max-width:calc(var(--cell-width-large) - 2*var(--cell-padding))}.row__cell[data-v-45690c64]{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-45690c64],.row__cell span[data-v-45690c64],.row__cell label[data-v-45690c64]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.row__cell--avatar[data-v-45690c64],.row__cell--displayname[data-v-45690c64]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.row__cell--avatar[data-v-45690c64]{left:0}.row__cell--displayname[data-v-45690c64]{left:var(--avatar-cell-width);border-right:1px solid var(--color-border)}}.row__cell--username[data-v-45690c64]{padding-left:calc(var(--default-grid-baseline)*3)}.row__cell--avatar[data-v-45690c64]{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-45690c64]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.row__cell--multiline span[data-v-45690c64]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.row__cell--large[data-v-45690c64]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.row__cell--obfuscated[data-v-45690c64]{min-width:400px;width:400px}.row__cell--fill[data-v-45690c64]{min-width:var(--cell-width-large);width:100%}.row__cell--actions[data-v-45690c64]{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-45690c64]{color:var(--color-text-maxcontrast)}.row__cell[data-v-45690c64]{border-bottom:1px solid var(--color-border)}.row__cell[data-v-45690c64] .v-select.select{min-width:var(--cell-min-width)}.row__progress[data-v-45690c64]{margin-top:4px}.row__progress--warn[data-v-45690c64]::-moz-progress-bar{background:var(--color-warning) !important}.row__progress--warn[data-v-45690c64]::-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,iCCGC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CDLA,uCACC,8CAAA,CAEA,2EACC,8CAAA,CAKF,+CACC,+DAAA,CCDD,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,sCACC,iDAAA,CAGD,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,CDpFD,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 * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\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&--username {\n\t\t\tpadding-left: calc(var(--default-grid-baseline) * 3);\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},1999:(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-5f8529d4]{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},28049:(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-78acaa4e]{--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%;will-change:scroll-position}.user-list__header[data-v-78acaa4e],.user-list__footer[data-v-78acaa4e]{position:sticky;display:block}.user-list__header[data-v-78acaa4e]{top:0;z-index:calc(var(--sticky-column-z-index) + 1)}.user-list__footer[data-v-78acaa4e]{left:0}.user-list__body[data-v-78acaa4e]{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,CACA,2BAAA,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\twill-change: scroll-position;\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},17651:(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-fda025aa]{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},18402:(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-36898b23]{height:auto !important;overflow:visible !important}.account-management__group-list[data-v-36898b23]{height:100% !important}.account-management__settings-toggle[data-v-36898b23]{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},70094:(e,s,a)=>{a.r(s),a.d(s,{default:()=>Dt});var n=a(53334),i=a(61338),r=a(85471),o=a(18195),l=a(9165),d=a(85168),c=a(54914),u=a(34196),g=a(6695),A=a(84237),p=a(84985),h=(a(48750),a(59271));a(96763);function m(t){var e;const s=(0,h.BA)(t);return null!=(e=null==s?void 0:s.$el)?e:s}const C=h.oc?window:void 0;function v(t){const e=function(){const t=(0,p.KR)(!1),e=(0,p.nI)();return e&&(0,p.sV)((()=>{t.value=!0}),p.LE?void 0:e),t}();return(0,p.EW)((()=>(e.value,Boolean(t()))))}function w(t,e={}){const{window:s=C,scrollTarget:a,threshold:n=0}=e,i=(0,p.KR)(!1);return function(t,e,s={}){const{root:a,rootMargin:n="0px",threshold:i=.1,window:r=C,immediate:o=!0}=s,l=v((()=>r&&"IntersectionObserver"in r)),d=(0,p.EW)((()=>{const e=(0,h.BA)(t);return(Array.isArray(e)?e:[e]).map(m).filter(h.d6)}));let c=h.lQ;const u=(0,p.KR)(o),g=l.value?(0,p.wB)((()=>[d.value,m(a),u.value]),(([t,s])=>{if(c(),!u.value)return;if(!t.length)return;const a=new IntersectionObserver(e,{root:m(s),rootMargin:n,threshold:i});t.forEach((t=>t&&a.observe(t))),c=()=>{a.disconnect(),c=h.lQ}}),{immediate:o,flush:"post"}):h.lQ,A=()=>{c(),g(),u.value=!1};(0,h.Uo)(A)}(t,(t=>{let e=i.value,s=0;for(const a of t)a.time>=s&&(s=a.time,e=a.isIntersecting);i.value=e}),{root:a,window:s,threshold:n}),i}h.C$.mounted,h.C$.unmounted,h.C$.mounted,h.C$.mounted,"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self,h.C$.mounted,h.C$.mounted;const _={[h.C$.mounted](t,e){if("function"==typeof e.value){const s=e.value,a=w(t);(0,p.wB)(a,(t=>s(t)),{immediate:!0})}else{const[s,a]=e.value,n=w(t,a);(0,p.wB)(n,(t=>s(t)),{immediate:!0})}}};h.C$.mounted,h.C$.mounted;Boolean,Boolean,Boolean,Boolean,h.C$.mounted;(0,p.KR)(!1);var f=a(17334),b=a.n(f),y=a(36620);r.Ay.directive("elementVisibility",_);const x=r.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,y.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 k=a(85072),S=a.n(k),G=a(97825),U=a.n(G),N=a(77659),L=a.n(N),D=a(55056),B=a.n(D),q=a(10540),I=a.n(q),O=a(41113),M=a.n(O),$=a(28049),E={};E.styleTagTransform=M(),E.setAttributes=B(),E.insert=L().bind(null,"head"),E.domAPI=U(),E.insertStyleElement=I(),S()($.A,E),$.A&&$.A.locals&&$.A.locals;var P=a(14486);const T=(0,P.A)(x,(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:[],managerInputLabel:t("settings","Manager"),managerLabel:t("settings","Set line manager")}),computed:{showConfig(){return this.$store.getters.getShowConfig},settings(){return this.$store.getters.getServerData},usernameLabel(){return this.settings.newUserGenerateUserID?t("settings","Account name will be autogenerated"):t("settings","Account name (required)")},minPasswordLength(){return this.$store.getters.getPasswordPolicyMinLength},groups(){return this.$store.getters.getGroups.filter((t=>"__nc_internal_recent"!==t.id&&"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()},mounted(){this.$refs.username?.focus?.()},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?.focus?.(),this.$emit("closing")}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?.focus?.():107===e&&this.$refs.password?.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 j=a(41496),K={};K.styleTagTransform=M(),K.setAttributes=B(),K.insert=L().bind(null,"head"),K.domAPI=U(),K.insertStyleElement=I(),S()(j.A,K),j.A&&j.A.locals&&j.A.locals;const Y=(0,P.A)(H,(function(){var t=this,e=t._self._c;return e("NcDialog",t._g({staticClass:"dialog",attrs:{size:"small",name:t.t("settings","New account"),"out-transition":""},scopedSlots:t._u([{key:"actions",fn:function(){return[e("NcButton",{staticClass:"dialog__submit",attrs:{"data-test":"submit",form:"new-user-form",type:"primary","native-type":"submit"}},[t._v("\n\t\t\t"+t._s(t.t("settings","Add new account"))+"\n\t\t")])]},proxy:!0}])},t.$listeners),[e("form",{staticClass:"dialog__form",attrs:{id:"new-user-form","data-test":"form",disabled:t.loading.all},on:{submit:function(e){return e.preventDefault(),t.createUser.apply(null,arguments)}}},[e("NcTextField",{ref:"username",staticClass:"dialog__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:"dialog__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:"dialog__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:"dialog__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:"dialog__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:"dialog__item"},[e("NcSelect",{staticClass:"dialog__select",attrs:{"input-label":t.settings.isAdmin||t.settings.isDelegatedAdmin?t.t("settings","Member of the following groups"):t.t("settings","Member of the following groups (required)"),placeholder:t.t("settings","Set account 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&&!t.settings.isDelegatedAdmin},on:{input:t.handleGroupInput,"option:created":t.createGroup}})],1),t._v(" "),t.subAdminsGroups.length>0?e("div",{staticClass:"dialog__item"},[e("NcSelect",{staticClass:"dialog__select",attrs:{"input-label":t.t("settings","Admin of the following groups"),placeholder:t.t("settings","Set account 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:"dialog__item"},[e("NcSelect",{staticClass:"dialog__select",attrs:{"input-label":t.t("settings","Quota"),placeholder:t.t("settings","Set account 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:"dialog__item"},[e("NcSelect",{staticClass:"dialog__select",attrs:{"input-label":t.t("settings","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:["dialog__item dialog__managers",{"icon-loading-small":t.loading.manager}]},[e("NcSelect",{staticClass:"dialog__select",attrs:{"input-label":t.managerInputLabel,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)],1)])}),[],!1,null,"bb4e22ea",null).exports,X=r.Ay.extend({name:"UserListFooter",components:{NcLoadingIcon:A.A},props:{loading:{type:Boolean,required:!0},filteredUsers:{type:Array,required:!0}},computed:{userCount(){return this.loading?this.n("settings","{userCount} account …","{userCount} accounts …",this.filteredUsers.length,{userCount:this.filteredUsers.length}):this.n("settings","{userCount} account","{userCount} accounts",this.filteredUsers.length,{userCount:this.filteredUsers.length})}},methods:{t:n.Tl,n:n.zw}});var V=a(14124),J={};J.styleTagTransform=M(),J.setAttributes=B(),J.insert=L().bind(null,"head"),J.domAPI=U(),J.insertStyleElement=I(),S()(V.A,J),V.A&&V.A.locals&&V.A.locals;const Z=(0,P.A)(X,(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 accounts …"),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,"685a7a6f",null).exports,tt=r.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 et=a(54827),st={};st.styleTagTransform=M(),st.setAttributes=B(),st.insert=L().bind(null,"head"),st.domAPI=U(),st.insertStyleElement=I(),S()(et.A,st),et.A&&et.A.locals&&et.A.locals;const at=(0,P.A)(tt,(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("th",{staticClass:"header__cell header__cell--username",attrs:{"data-cy-user-list-header-username":"",scope:"col"}},[e("span",[t._v("\n\t\t\t"+t._s(t.t("settings","Account name"))+"\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||t.settings.isDelegatedAdmin)?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","Account 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","Account actions"))+"\n\t\t")])])])}),[],!1,null,"c0c2e65c",null).exports;var nt=a(35810),it=a(21777),rt=a(56760),ot=a(41944),lt=a(95101),dt=a(86454),ct=a(89257),ut=a(24764),gt=a(65659);const At=(0,r.pM)({components:{NcActionButton:ct.A,NcActions:ut.A,NcIconSvgWrapper:g.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?gt:''},enabledActions(){return this.actions.filter((t=>"function"!=typeof t.enabled||t.enabled(this.user)))}},methods:{isSvg:function(t){if("string"!=typeof t)throw new TypeError(`Expected a \`string\`, got \`${typeof t}\``);if(0===(t=t.trim()).length)return!1;if(!0!==dt.XMLValidator.validate(t))return!1;let e;const s=new dt.XMLParser;try{e=s.parse(t)}catch{return!1}return!!e&&!!Object.keys(e).some((t=>"svg"===t.toLowerCase()))},toggleEdit(){this.$emit("update:edit",!this.edit)}}}),pt=(0,P.A)(At,(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.enabledActions,(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,"close-after-click":""},on:{click:e=>n(e,{...t.user})},scopedSlots:t._u([t.isSvg(i)?{key:"icon",fn:function(){return[e("NcIconSvgWrapper",{attrs:{svg:i,"aria-hidden":"true"}})]},proxy:!0}:null],null,!0)},[t._v("\n\t\t"+t._s(r)+"\n\t\t")])}))],2)}),[],!1,null,null,null).exports,ht={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 mt=a(95668),Ct=a(96763);const vt={name:"UserRow",components:{NcAvatar:ot.A,NcLoadingIcon:A.A,NcProgressBar:lt.A,NcSelect:R.A,NcTextField:W.A,UserRowActions:pt},mixins:[ht],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,mt.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,nt.v7)(this.user.quota?.used)}):t("settings","{size} used",{size:(0,nt.v7)(0)})},canEdit(){return(0,it.HW)().uid!==this.user.id||this.settings.isAdmin||this.settings.isDelegatedAdmin},userQuota(){let e=this.user.quota?.quota;return"default"===e&&(e=this.settings.defaultQuota,"none"!==e&&(e=(0,nt.lT)(e,!0))),"none"===e||-3===e?t("settings","Unlimited"):e>=0?(0,nt.v7)(e):(0,nt.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!==mt.SA.id&&(0,nt.lT)(this.settings.defaultQuota,!0)>=0?{id:this.settings.defaultQuota,label:this.settings.defaultQuota}:mt.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:{async wipeUserDevices(){const e=this.user.id;await(0,rt.C5)(),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,d.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,d.Qg)(t("setting","Failed to update line manager")),Ct.error(e)}finally{this.loading.manager=!1}},async deleteUser(){const e=this.user.id;await(0,rt.C5)(),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,d.Te)(t("setting","Display name was successfully changed"))}finally{this.loading.displayName=!1}},async updatePassword(){if(this.loading.password=!0,0===this.editedPassword.length)(0,d.Qg)(t("setting","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,d.Te)(t("setting","Password was successfully changed"))}finally{this.loading.password=!1}},async updateEmail(){if(this.loading.mailAddress=!0,""===this.editedMail)(0,d.Qg)(t("setting","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,d.Te)(t("setting","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){Ct.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){Ct.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){Ct.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){Ct.error(t)}finally{this.loading.subadmins=!1}},async setUserQuota(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"none";"none"===t&&(t=mt.SA),this.loading.quota=!0,t=t.id?t.id:t;try{const e=((0,nt.lT)(t,!0)||t).toString();await this.$store.dispatch("setUserData",{userid:this.user.id,key:"quota",value:e})}catch(t){Ct.error(t)}finally{this.loading.quota=!1}return t},validateQuota:t=>("object"==typeof t&&(t=t?.id||t.label),null===(0,nt.lT)(t,!0)?mt.SA:{id:t=(0,nt.v7)((0,nt.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){Ct.error(t)}return t},sendWelcomeMail(){this.loading.all=!0,this.$store.dispatch("sendWelcomeMail",this.user.id).then((()=>(0,d.Te)(t("setting","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 wt=a(84924),_t={};_t.styleTagTransform=M(),_t.setAttributes=B(),_t.insert=L().bind(null,"head"),_t.domAPI=U(),_t.insertStyleElement=I(),S()(wt.A,_t),wt.A&&wt.A.locals&&wt.A.locals;var ft=(0,P.A)(vt,(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._s(t.user.displayname)+"\n\t\t")])],2),t._v(" "),e("td",{staticClass:"row__cell row__cell--username",attrs:{"data-cy-user-list-cell-username":""}},[e("span",{staticClass:"row__subtitle"},[t._v(t._s(t.user.id))])]),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 account 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||t.settings.isDelegatedAdmin,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||t.settings.isDelegatedAdmin)?e("td",{staticClass:"row__cell row__cell--large row__cell--multiline",attrs:{"data-cy-user-list-cell-subadmins":""}},[t.editing&&(t.settings.isAdmin||t.settings.isDelegatedAdmin)&&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,"45690c64",null);const bt=ft.exports,yt=Object.freeze({id:"",displayName:"",password:"",mailAddress:"",groups:[],manager:"",subAdminsGroups:[],quota:mt.MY,language:{code:"en",name:t("settings","Default language")}}),xt={name:"UserList",components:{Fragment:c.F,NcEmptyContent:u.A,NcIconSvgWrapper:g.A,NcLoadingIcon:A.A,NewUserDialog:Y,UserListFooter:Z,UserListHeader:at,VirtualList:T},props:{selectedGroup:{type:String,default:null},externalActions:{type:Array,default:()=>[]}},setup:()=>({mdiAccountGroup:l.n7C,rowHeight:55,UserRow:bt}),data:()=>({loading:{all:!1,groups:!1,users:!1},newUser:{...yt},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,mt.HK)(t)))},users(){return this.$store.getters.getUsers},filteredUsers(){return"disabled"===this.selectedGroup?this.users.filter((t=>!1===t.enabled)):this.users.filter((t=>!1!==t.enabled))},groups(){return this.$store.getters.getGroups.filter((t=>"__nc_internal_recent"!==t.id&&"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(mt.SA),t.unshift(mt.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){y.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,i.B1)("nextcloud:unified-search.search",this.search),(0,i.B1)("nextcloud:unified-search.reset",this.resetSearch),await this.redirectIfDisabled()},beforeDestroy(){(0,i.al)("nextcloud:unified-search.search",this.search),(0,i.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}):"__nc_internal_recent"===this.selectedGroup?await this.$store.dispatch("getRecentUsers",{offset:this.usersOffset,limit:this.usersLimit,search:this.searchQuery}):await this.$store.dispatch("getUsers",{offset:this.usersOffset,limit:this.usersLimit,group:this.selectedGroup,search:this.searchQuery}),y.A.debug(`${this.users.length} total user(s) loaded`)}catch(t){y.A.error("Failed to load accounts",{error:t}),(0,d.Qg)("Failed to load accounts")}this.loading.users=!1,this.isInitialLoad=!1},closeDialog(){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({},yt),this.settings.defaultLanguage&&r.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 kt=a(98183),St={};St.styleTagTransform=M(),St.setAttributes=B(),St.insert=L().bind(null,"head"),St.domAPI=U(),St.insertStyleElement=I(),S()(kt.A,St),kt.A&&kt.A.locals&&kt.A.locals;const Gt=(0,P.A)(xt,(function(){var t=this,e=t._self._c;return e("Fragment",[t.showConfig.showNewUserForm?e("NewUserDialog",{attrs:{loading:t.loading,"new-user":t.newUser,"quota-options":t.quotaOptions},on:{reset:t.resetForm,closing:t.closeDialog}}):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,"e345be16",null).exports,Ut=(0,r.pM)({name:"UserManagement",components:{NcAppContent:o.A,UserList:Gt},data:()=>({externalActions:[]}),computed:{pageHeading(){return null===this.selectedGroupDecoded?(0,n.Tl)("settings","All 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,(0,i.Ic)("settings:user-management:loaded")},methods:{t:n.Tl,registerAction(t,e,s,a){return this.externalActions.push({icon:t,text:e,action:s,enabled:a}),this.externalActions}}});var Nt=a(17651),Lt={};Lt.styleTagTransform=M(),Lt.setAttributes=B(),Lt.insert=L().bind(null,"head"),Lt.domAPI=U(),Lt.insertStyleElement=I(),S()(Nt.A,Lt),Nt.A&&Nt.A.locals&&Nt.A.locals;const Dt=(0,P.A)(Ut,(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,"fda025aa",null).exports},62944:(e,s,a)=>{a.r(s),a.d(s,{default:()=>dt});var n=a(85471),i=a(9165),r=a(85168),o=a(53334),l=a(44131),d=a(32831),c=a(42530),u=a(31474),g=a(52439),A=a(80329),p=a(62720),h=a(18740),m=a(85947),C=a(6695),v=a(84237),w=a(54914),_=a(89257),f=a(68567),b=a(80910),y=a(43261),x=a(79759),k=a(2413);const S={name:"GroupListItem",components:{AccountGroup:y.A,Delete:x.A,Fragment:w.F,NcActionButton:_.A,NcActionInput:l.A,NcAppNavigationItem:g.A,NcButton:h.A,NcCounterBubble:m.A,NcModal:f.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 G=a(85072),U=a.n(G),N=a(97825),L=a.n(N),D=a(77659),B=a.n(D),q=a(55056),I=a.n(q),O=a(10540),M=a.n(O),$=a(41113),E=a.n($),P=a(83754),T={};T.styleTagTransform=E(),T.setAttributes=I(),T.insert=B().bind(null,"head"),T.domAPI=L(),T.insertStyleElement=M(),U()(P.A,T),P.A&&P.A.locals&&P.A.locals;var z=a(14486);const F=(0,z.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||t.settings.isDelegatedAdmin)?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||t.settings.isDelegatedAdmin)?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,"ea582d00",null).exports;var Q=a(35810),R=a(63814),W=a(65043),H=a(69996),j=a(85948),K=a(32073),Y=a(67607),X=a(15916),V=a(95668),J=a(36620);const Z={name:"UserSettingsDialog",components:{NcAppSettingsDialog:H.N,NcAppSettingsSection:j.A,NcCheckboxRadioSwitch:K.A,NcNoteCard:b.A,NcSelect:Y.A},props:{open:{type:Boolean,required:!0}},data:()=>({selectedQuota:!1,loadingSendMail:!1}),computed:{groupSorting:{get(){return this.$store.getters.getGroupSorting===X.q.GroupName?"name":"member-count"},set(t){this.$store.commit("setGroupSorting","name"===t?X.q.GroupName:X.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(V.SA),t},defaultQuota:{get(){return!1!==this.selectedQuota?this.selectedQuota:this.settings.defaultQuota!==V.SA.id&&OC.Util.computerFileSize(this.settings.defaultQuota)>=0?{id:this.settings.defaultQuota,label:this.settings.defaultQuota}:V.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,R.Jv)("/settings/users/preferences/newUser.sendEmail"),{value:t?"yes":"no"})}catch(t){J.A.error("Could not update newUser.sendEmail preference",{error:t})}finally{this.loadingSendMail=!1}}}},methods:{filterQuotas(t,e,s){const a=s.toLocaleLowerCase().replaceAll(/\s/g,"");return(e||"").toLocaleLowerCase().replaceAll(/\s/g,"").indexOf(a)>-1},setShowConfig(t,e){this.$store.commit("setShowConfig",{key:t,value:e})},validateQuota(t){"object"==typeof t&&(t=t?.id||t.label);const e=(0,Q.lT)(t,!0);return null===e?V.SA:{id:t=(0,Q.v7)(e),label:t}},setDefaultQuota(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"none";"none"===t&&(t=V.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 tt=a(1999),et={};et.styleTagTransform=E(),et.setAttributes=I(),et.insert=B().bind(null,"head"),et.domAPI=L(),et.insertStyleElement=M(),U()(tt.A,et),tt.A&&tt.A.locals&&tt.A.locals;const st=(0,z.A)(Z,(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:{clearable:!1,"create-option":t.validateQuota,"filter-by":t.filterQuotas,"input-label":t.t("settings","Default quota"),options:t.quotaOptions,placement:"top",placeholder:t.t("settings","Select default quota"),taggable:""},on:{"option:selected":t.setDefaultQuota},model:{value:t.defaultQuota,callback:function(e){t.defaultQuota=e},expression:"defaultQuota"}})],1)],1)}),[],!1,null,"5f8529d4",null).exports;var at=a(8265),nt=a(24387);function it(t){return void 0===t?null:{id:t.id,title:t.name,usercount:t.usercount,count:Math.max(0,t.usercount-t.disabled)}}const rt=(0,n.pM)({__name:"UserManagementNavigation",setup(t){const e=(0,nt.lq)(),s=(0,nt.rd)(),a=(0,at.P)(),w=(0,n.KR)(!1),_=(0,n.EW)((()=>e.params?.selectedGroup)),f=(0,n.EW)((()=>_.value?decodeURIComponent(_.value):null)),b=(0,n.EW)((()=>a.getters.getUserCount)),y=(0,n.EW)((()=>a.getters.getSortedGroups)),{adminGroup:x,recentGroup:k,disabledGroup:S,userGroups:G}=(t=>{const e=(0,n.EW)((()=>t.value.filter((t=>"disabled"!==t.id&&"__nc_internal_recent"!==t.id&&"admin"!==t.id)).map((t=>it(t))).filter((t=>null!==t)))),s=(0,n.EW)((()=>it(t.value.find((t=>"admin"===t.id))))),a=(0,n.EW)((()=>it(t.value.find((t=>"disabled"===t.id)))));return{adminGroup:s,recentGroup:(0,n.EW)((()=>it(t.value.find((t=>"__nc_internal_recent"===t.id))))),disabledGroup:a,userGroups:e}})(y),U=(0,n.EW)((()=>a.getters.getServerData)),N=(0,n.EW)((()=>U.value.isAdmin||U.value.isDelegatedAdmin)),L=(0,n.KR)(!1),D=(0,n.KR)(!1),B=(0,n.KR)(!1),q=(0,n.KR)("");return{__sfc:!0,route:e,router:s,store:a,isDialogOpen:w,selectedGroup:_,selectedGroupDecoded:f,userCount:b,groups:y,adminGroup:x,recentGroup:k,disabledGroup:S,userGroups:G,settings:U,isAdminOrDelegatedAdmin:N,isAddGroupOpen:L,loadingAddGroup:D,hasAddGroupError:B,newGroupName:q,createGroup:async function(){B.value=!1;const t=q.value.trim();if(""!==t){L.value=!1,D.value=!0;try{await a.dispatch("addGroup",t),await s.push({name:"group",params:{selectedGroup:encodeURIComponent(t)}}),q.value=""}catch{(0,r.Qg)((0,o.Tl)("settings","Failed to create group"))}D.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,mdiHistory:i.LP2,t:o.Tl,NcActionInput:l.A,NcActionText:d.A,NcAppNavigation:c.A,NcAppNavigationCaption:u.N,NcAppNavigationItem:g.A,NcAppNavigationList:A.A,NcAppNavigationNew:p.A,NcButton:h.A,NcCounterBubble:m.A,NcIconSvgWrapper:C.A,NcLoadingIcon:v.A,GroupListItem:F,UserSettingsDialog:st}}});var ot=a(18402),lt={};lt.styleTagTransform=E(),lt.setAttributes=I(),lt.insert=B().bind(null,"head"),lt.domAPI=L(),lt.insertStyleElement=M(),U()(ot.A,lt),ot.A&&ot.A.locals&&ot.A.locals;const dt=(0,z.A)(rt,(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","All 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.isAdminOrDelegatedAdmin?e(s.NcAppNavigationItem,{attrs:{id:"recent",exact:!0,name:s.t("settings","Recently active"),to:{name:"group",params:{selectedGroup:"__nc_internal_recent"}}},scopedSlots:t._u([{key:"icon",fn:function(){return[e(s.NcIconSvgWrapper,{attrs:{path:s.mdiHistory}})]},proxy:!0},{key:"counter",fn:function(){return[s.recentGroup?.usercount?e(s.NcCounterBubble,{attrs:{type:"__nc_internal_recent"===s.selectedGroupDecoded?"highlighted":void 0}},[t._v("\n\t\t\t\t\t"+t._s(s.recentGroup.usercount)+"\n\t\t\t\t")]):t._e()]},proxy:!0}],null,!1,2299424282)}):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,"36898b23",null).exports},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"},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"},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"}}]); +//# sourceMappingURL=settings-users-3239.js.map?v=772824f8cf5b5f9de2ae \ No newline at end of file diff --git a/dist/settings-users-3239.js.map b/dist/settings-users-3239.js.map index 10573faf50966..4aca7c7959852 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=4397d4b7cd27394bcfef","mappings":"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","sources":["webpack:///nextcloud/apps/settings/src/utils/userUtils.ts","webpack:///nextcloud/apps/settings/src/components/GroupListItem.vue?vue&type=style&index=0&id=ea582d00&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/UserList.vue?vue&type=style&index=0&id=e345be16&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/NewUserDialog.vue?vue&type=style&index=0&id=bb4e22ea&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/UserListFooter.vue?vue&type=style&index=0&id=685a7a6f&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/UserListHeader.vue?vue&type=style&index=0&id=c0c2e65c&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/UserRow.vue?vue&type=style&index=0&id=45690c64&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/UserSettingsDialog.vue?vue&type=style&index=0&id=db0253c4&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/Users/VirtualList.vue?vue&type=style&index=0&id=78acaa4e&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/views/UserManagement.vue?vue&type=style&index=0&id=fda025aa&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/views/UserManagementNavigation.vue?vue&type=style&index=0&id=36898b23&prod&scoped=true&lang=scss","webpack://nextcloud/./apps/settings/src/views/UserManagement.vue?4b28","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?37ef","webpack://nextcloud/./apps/settings/src/components/Users/VirtualList.vue?1915","webpack://nextcloud/./apps/settings/src/components/Users/NewUserDialog.vue?dc2d","webpack:///nextcloud/apps/settings/src/components/Users/NewUserDialog.vue","webpack:///nextcloud/apps/settings/src/components/Users/NewUserDialog.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/Users/NewUserDialog.vue?9ea9","webpack://nextcloud/./apps/settings/src/components/Users/NewUserDialog.vue?64c6","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?a778","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?81c0","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/node_modules/is-svg/index.js","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?859a","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?d4dd","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?c442","webpack://nextcloud/./apps/settings/src/views/UserManagement.vue?fd5a","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?f1be","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?445e","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?5d9d","webpack://nextcloud/./apps/settings/src/views/UserManagementNavigation.vue?28b6"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { translate as t } from '@nextcloud/l10n';\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-ea582d00]{margin:0}.modal__content[data-v-ea582d00]{display:flex;flex-direction:column;align-items:center;padding:20px;gap:4px 0}.modal__button-row[data-v-ea582d00]{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","// 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-e345be16] .icon-vue{width:64px;height:64px}.empty[data-v-e345be16] .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, `.dialog__form[data-v-bb4e22ea]{display:flex;flex-direction:column;align-items:center;padding:0 8px;gap:4px 0}.dialog__item[data-v-bb4e22ea]{width:100%}.dialog__item[data-v-bb4e22ea]:not(:focus):not(:active){border-color:var(--color-border-dark)}.dialog__hint[data-v-bb4e22ea]{color:var(--color-text-maxcontrast);margin-top:8px;align-self:flex-start}.dialog__label[data-v-bb4e22ea]{display:block;padding:4px 0}.dialog__select[data-v-bb4e22ea]{width:100%}.dialog__managers[data-v-bb4e22ea]{margin-bottom:12px}.dialog__submit[data-v-bb4e22ea]{margin-top:4px;margin-bottom:8px}.dialog[data-v-bb4e22ea] .dialog__actions{margin:auto}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/NewUserDialog.vue\"],\"names\":[],\"mappings\":\"AAEC,+BACC,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,aAAA,CACA,SAAA,CAGD,+BACC,UAAA,CAEA,wDACC,qCAAA,CAIF,+BACC,mCAAA,CACA,cAAA,CACA,qBAAA,CAGD,gCACC,aAAA,CACA,aAAA,CAGD,iCACC,UAAA,CAGD,mCACC,kBAAA,CAGD,iCACC,cAAA,CACA,iBAAA,CAIA,0CACC,WAAA\",\"sourcesContent\":[\"\\n.dialog {\\n\\t&__form {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\talign-items: center;\\n\\t\\tpadding: 0 8px;\\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&__managers {\\n\\t\\tmargin-bottom: 12px;\\n\\t}\\n\\n\\t&__submit {\\n\\t\\tmargin-top: 4px;\\n\\t\\tmargin-bottom: 8px;\\n\\t}\\n\\n\\t:deep {\\n\\t\\t.dialog__actions {\\n\\t\\t\\tmargin: auto;\\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, `.footer[data-v-685a7a6f]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.footer__cell[data-v-685a7a6f]{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-685a7a6f],.footer__cell span[data-v-685a7a6f],.footer__cell label[data-v-685a7a6f]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.footer__cell--avatar[data-v-685a7a6f],.footer__cell--displayname[data-v-685a7a6f]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.footer__cell--avatar[data-v-685a7a6f]{left:0}.footer__cell--displayname[data-v-685a7a6f]{left:var(--avatar-cell-width);border-right:1px solid var(--color-border)}}.footer__cell--username[data-v-685a7a6f]{padding-left:calc(var(--default-grid-baseline)*3)}.footer__cell--avatar[data-v-685a7a6f]{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-685a7a6f]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.footer__cell--multiline span[data-v-685a7a6f]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.footer__cell--large[data-v-685a7a6f]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.footer__cell--obfuscated[data-v-685a7a6f]{min-width:400px;width:400px}.footer__cell--fill[data-v-685a7a6f]{min-width:var(--cell-width-large);width:100%}.footer__cell--actions[data-v-685a7a6f]{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-685a7a6f]{color:var(--color-text-maxcontrast)}.footer__cell[data-v-685a7a6f]{position:sticky;color:var(--color-text-maxcontrast)}.footer__cell--loading[data-v-685a7a6f]{left:0;min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0}.footer__cell--count[data-v-685a7a6f]{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,yBCGC,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,yCACC,iDAAA,CAGD,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,CDpGD,+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 * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\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&--username {\\n\\t\\t\\tpadding-left: calc(var(--default-grid-baseline) * 3);\\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, `.header[data-v-c0c2e65c]{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-c0c2e65c]{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-c0c2e65c],.header__cell span[data-v-c0c2e65c],.header__cell label[data-v-c0c2e65c]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.header__cell--avatar[data-v-c0c2e65c],.header__cell--displayname[data-v-c0c2e65c]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.header__cell--avatar[data-v-c0c2e65c]{left:0}.header__cell--displayname[data-v-c0c2e65c]{left:var(--avatar-cell-width);border-right:1px solid var(--color-border)}}.header__cell--username[data-v-c0c2e65c]{padding-left:calc(var(--default-grid-baseline)*3)}.header__cell--avatar[data-v-c0c2e65c]{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-c0c2e65c]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.header__cell--multiline span[data-v-c0c2e65c]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.header__cell--large[data-v-c0c2e65c]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.header__cell--obfuscated[data-v-c0c2e65c]{min-width:400px;width:400px}.header__cell--fill[data-v-c0c2e65c]{min-width:var(--cell-width-large);width:100%}.header__cell--actions[data-v-c0c2e65c]{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-c0c2e65c]{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,yBCGC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CDJA,2CAAA,CCQA,+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,yCACC,iDAAA,CAGD,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 * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\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&--username {\\n\\t\\t\\tpadding-left: calc(var(--default-grid-baseline) * 3);\\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, `.user-list__row[data-v-45690c64]{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-45690c64]:hover{background-color:var(--color-background-hover)}.user-list__row:hover .row__cell[data-v-45690c64]:not(.row__cell--actions){background-color:var(--color-background-hover)}.user-list__row .select--fill[data-v-45690c64]{max-width:calc(var(--cell-width-large) - 2*var(--cell-padding))}.row__cell[data-v-45690c64]{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-45690c64],.row__cell span[data-v-45690c64],.row__cell label[data-v-45690c64]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.row__cell--avatar[data-v-45690c64],.row__cell--displayname[data-v-45690c64]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.row__cell--avatar[data-v-45690c64]{left:0}.row__cell--displayname[data-v-45690c64]{left:var(--avatar-cell-width);border-right:1px solid var(--color-border)}}.row__cell--username[data-v-45690c64]{padding-left:calc(var(--default-grid-baseline)*3)}.row__cell--avatar[data-v-45690c64]{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-45690c64]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.row__cell--multiline span[data-v-45690c64]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.row__cell--large[data-v-45690c64]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.row__cell--obfuscated[data-v-45690c64]{min-width:400px;width:400px}.row__cell--fill[data-v-45690c64]{min-width:var(--cell-width-large);width:100%}.row__cell--actions[data-v-45690c64]{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-45690c64]{color:var(--color-text-maxcontrast)}.row__cell[data-v-45690c64]{border-bottom:1px solid var(--color-border)}.row__cell[data-v-45690c64] .v-select.select{min-width:var(--cell-min-width)}.row__progress[data-v-45690c64]{margin-top:4px}.row__progress--warn[data-v-45690c64]::-moz-progress-bar{background:var(--color-warning) !important}.row__progress--warn[data-v-45690c64]::-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,iCCGC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CDLA,uCACC,8CAAA,CAEA,2EACC,8CAAA,CAKF,+CACC,+DAAA,CCDD,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,sCACC,iDAAA,CAGD,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,CDpFD,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 * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\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&--username {\\n\\t\\t\\tpadding-left: calc(var(--default-grid-baseline) * 3);\\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-db0253c4]{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, `.user-list[data-v-78acaa4e]{--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%;will-change:scroll-position}.user-list__header[data-v-78acaa4e],.user-list__footer[data-v-78acaa4e]{position:sticky;display:block}.user-list__header[data-v-78acaa4e]{top:0;z-index:calc(var(--sticky-column-z-index) + 1)}.user-list__footer[data-v-78acaa4e]{left:0}.user-list__body[data-v-78acaa4e]{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,CACA,2BAAA,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\\twill-change: scroll-position;\\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, `.app-content[data-v-fda025aa]{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","// 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-36898b23]{height:auto !important;overflow:visible !important}.account-management__group-list[data-v-36898b23]{height:100% !important}.account-management__settings-toggle[data-v-36898b23]{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","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 { 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=78acaa4e&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=style&index=0&id=78acaa4e&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=78acaa4e&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=78acaa4e&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 \"78acaa4e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcDialog',_vm._g({staticClass:\"dialog\",attrs:{\"size\":\"small\",\"name\":_vm.t('settings', 'New account'),\"out-transition\":\"\"},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('NcButton',{staticClass:\"dialog__submit\",attrs:{\"data-test\":\"submit\",\"form\":\"new-user-form\",\"type\":\"primary\",\"native-type\":\"submit\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Add new account'))+\"\\n\\t\\t\")])]},proxy:true}])},_vm.$listeners),[_c('form',{staticClass:\"dialog__form\",attrs:{\"id\":\"new-user-form\",\"data-test\":\"form\",\"disabled\":_vm.loading.all},on:{\"submit\":function($event){$event.preventDefault();return _vm.createUser.apply(null, arguments)}}},[_c('NcTextField',{ref:\"username\",staticClass:\"dialog__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:\"dialog__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:\"dialog__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:\"dialog__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:\"dialog__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:\"dialog__item\"},[_c('NcSelect',{staticClass:\"dialog__select\",attrs:{\"input-label\":!_vm.settings.isAdmin && !_vm.settings.isDelegatedAdmin ? _vm.t('settings', 'Member of the following groups (required)') : _vm.t('settings', 'Member of the following groups'),\"placeholder\":_vm.t('settings', 'Set account 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 && !_vm.settings.isDelegatedAdmin},on:{\"input\":_vm.handleGroupInput,\"option:created\":_vm.createGroup}})],1),_vm._v(\" \"),(_vm.subAdminsGroups.length > 0)?_c('div',{staticClass:\"dialog__item\"},[_c('NcSelect',{staticClass:\"dialog__select\",attrs:{\"input-label\":_vm.t('settings', 'Admin of the following groups'),\"placeholder\":_vm.t('settings', 'Set account 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:\"dialog__item\"},[_c('NcSelect',{staticClass:\"dialog__select\",attrs:{\"input-label\":_vm.t('settings', 'Quota'),\"placeholder\":_vm.t('settings', 'Set account 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:\"dialog__item\"},[_c('NcSelect',{staticClass:\"dialog__select\",attrs:{\"input-label\":_vm.t('settings', '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:['dialog__item dialog__managers', { 'icon-loading-small': _vm.loading.manager }]},[_c('NcSelect',{staticClass:\"dialog__select\",attrs:{\"input-label\":_vm.managerInputLabel,\"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)],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!./NewUserDialog.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!./NewUserDialog.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!./NewUserDialog.vue?vue&type=style&index=0&id=bb4e22ea&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewUserDialog.vue?vue&type=style&index=0&id=bb4e22ea&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./NewUserDialog.vue?vue&type=template&id=bb4e22ea&scoped=true\"\nimport script from \"./NewUserDialog.vue?vue&type=script&lang=js\"\nexport * from \"./NewUserDialog.vue?vue&type=script&lang=js\"\nimport style0 from \"./NewUserDialog.vue?vue&type=style&index=0&id=bb4e22ea&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 \"bb4e22ea\",\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 accounts …'),\"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=685a7a6f&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListFooter.vue?vue&type=style&index=0&id=685a7a6f&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=685a7a6f&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=685a7a6f&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 \"685a7a6f\",\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('th',{staticClass:\"header__cell header__cell--username\",attrs:{\"data-cy-user-list-header-username\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Account name'))+\"\\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 || _vm.settings.isDelegatedAdmin))?_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', 'Account 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', 'Account 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=c0c2e65c&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListHeader.vue?vue&type=style&index=0&id=c0c2e65c&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=c0c2e65c&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=c0c2e65c&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 \"c0c2e65c\",\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\"+_vm._s(_vm.user.displayname)+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--username\",attrs:{\"data-cy-user-list-cell-username\":\"\"}},[_c('span',{staticClass:\"row__subtitle\"},[_vm._v(_vm._s(_vm.user.id))])]),_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 account 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 || _vm.settings.isDelegatedAdmin,\"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 || _vm.settings.isDelegatedAdmin))?_c('td',{staticClass:\"row__cell row__cell--large row__cell--multiline\",attrs:{\"data-cy-user-list-cell-subadmins\":\"\"}},[(_vm.editing && (_vm.settings.isAdmin || _vm.settings.isDelegatedAdmin) && _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.enabledActions),function({ action, icon, text },index){return _c('NcActionButton',{key:index,attrs:{\"disabled\":_vm.disabled,\"aria-label\":text,\"icon\":icon,\"close-after-click\":\"\"},on:{\"click\":(event) => action(event, { ..._vm.user })},scopedSlots:_vm._u([(_vm.isSvg(icon))?{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"svg\":icon,\"aria-hidden\":\"true\"}})]},proxy:true}:null],null,true)},[_vm._v(\"\\n\\t\\t\"+_vm._s(text)+\"\\n\\t\\t\")])})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import {XMLParser, XMLValidator} from 'fast-xml-parser';\n\nexport default function isSvg(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n\t}\n\n\tstring = string.trim();\n\n\tif (string.length === 0) {\n\t\treturn false;\n\t}\n\n\t// Has to be `!==` as it can also return an object with error info.\n\tif (XMLValidator.validate(string) !== true) {\n\t\treturn false;\n\t}\n\n\tlet jsonObject;\n\tconst parser = new XMLParser();\n\n\ttry {\n\t\tjsonObject = parser.parse(string);\n\t} catch {\n\t\treturn false;\n\t}\n\n\tif (!jsonObject) {\n\t\treturn false;\n\t}\n\n\tif (!Object.keys(jsonObject).some(x => x.toLowerCase() === 'svg')) {\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n","import { render, staticRenderFns } from \"./UserRowActions.vue?vue&type=template&id=7e1868f4\"\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 * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\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=45690c64&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRow.vue?vue&type=style&index=0&id=45690c64&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=45690c64&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=45690c64&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 \"45690c64\",\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=e345be16&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserList.vue?vue&type=style&index=0&id=e345be16&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=e345be16&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=e345be16&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 \"e345be16\",\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('NewUserDialog',{attrs:{\"loading\":_vm.loading,\"new-user\":_vm.newUser,\"quota-options\":_vm.quotaOptions},on:{\"reset\":_vm.resetForm,\"closing\":_vm.closeDialog}}):_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=fda025aa&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserManagement.vue?vue&type=style&index=0&id=fda025aa&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=fda025aa&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=fda025aa&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 \"fda025aa\",\n null\n \n)\n\nexport default component.exports","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', 'All 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.isAdminOrDelegatedAdmin)?_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"recent\",\"exact\":true,\"name\":_setup.t('settings', 'Recently active'),\"to\":{ name: 'group', params: { selectedGroup: '__nc_internal_recent' } }},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiHistory}})]},proxy:true},{key:\"counter\",fn:function(){return [(_setup.recentGroup?.usercount)?_c(_setup.NcCounterBubble,{attrs:{\"type\":_setup.selectedGroupDecoded === '__nc_internal_recent' ? 'highlighted' : undefined}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_setup.recentGroup.usercount)+\"\\n\\t\\t\\t\\t\")]):_vm._e()]},proxy:true}],null,false,2299424282)}):_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=ea582d00&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupListItem.vue?vue&type=style&index=0&id=ea582d00&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=ea582d00&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=ea582d00&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 \"ea582d00\",\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 || _vm.settings.isDelegatedAdmin))?_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 || _vm.settings.isDelegatedAdmin))?_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=db0253c4&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserSettingsDialog.vue?vue&type=style&index=0&id=db0253c4&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=db0253c4&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=db0253c4&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 \"db0253c4\",\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 !== '__nc_internal_recent' && 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 /**\n * The group of recent users\n */\n const recentGroup = computed(() => formatGroupMenu(groups.value.find(group => group.id === '__nc_internal_recent')));\n return { adminGroup, recentGroup, 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=36898b23&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserManagementNavigation.vue?vue&type=style&index=0&id=36898b23&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=36898b23&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=36898b23&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 \"36898b23\",\n null\n \n)\n\nexport default component.exports"],"names":["unlimitedQuota","id","label","t","defaultQuota","isObfuscated","user","keys","Object","length","at","___CSS_LOADER_EXPORT___","push","module","unrefElement","elRef","_a","plain","$el","defaultWindow","window","useSupported","callback","isMounted","instance","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","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","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","NcDialog","NcPasswordField","NcSelect","NcTextField","loading","newUser","quotaOptions","possibleManagers","managerInputLabel","managerLabel","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","username","focus","createUser","all","dispatch","userid","password","displayName","email","mailAddress","subadmin","quota","language","code","manager","error","response","ocs","meta","statuscode","handleGroupInput","createGroup","_ref","gid","find","validateQuota","validQuota","OC","Util","computerFileSize","humanFileSize","languageFilterBy","option","search","some","_ref2","toLocaleLowerCase","includes","query","offset","limit","then","users","values","_g","scopedSlots","_u","fn","_s","proxy","$listeners","on","$event","preventDefault","apply","arguments","$set","newUserRequireEmail","_e","isAdmin","isDelegatedAdmin","model","$$v","showLanguages","class","NcLoadingIcon","filteredUsers","userCount","n","hasObfuscated","passwordLabel","showUserBackend","showStoragePath","showLastLogin","defineComponent","NcActionButton","NcActions","NcIconSvgWrapper","actions","disabled","edit","editSvg","SvgCheck","enabledActions","action","enabled","isSvg","string","TypeError","trim","XMLValidator","validate","jsonObject","parser","XMLParser","parse","x","toLowerCase","toggleEdit","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","isLoadingUser","isLoadingField","uniqueId","encodeURIComponent","userGroupsLabels","join","userSubAdminsGroupsLabels","formatFileSize","canEdit","getCurrentUser","uid","parseFileSize","userActions","deleteUser","wipeUserDevices","enableDisableUser","sendWelcomeMail","editedUserQuota","get","set","availableLanguages","initManager","confirmPassword","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","inputField","input","backendCapabilities","setDisplayName","canChangePassword","setPassword","backend","storageLocation","freeze","Fragment","NcEmptyContent","NewUserDialog","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","closeDialog","defaultLanguage","currentGroup","allGroups","findIndex","usercount","$router","showNewUserForm","NcAppContent","UserList","pageHeading","selectedGroupDecoded","admin","decodeURIComponent","orderBy","sortGroups","OCA","Settings","registerAction","emit","AccountGroup","Delete","NcActionInput","NcAppNavigationItem","NcCounterBubble","NcModal","NcNoteCard","Pencil","active","count","loadingRenameGroup","openGroupMenu","showRemoveGroupModal","handleGroupMenuOpen","renameGroup","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","recentGroup","disabledGroup","useFormatGroups","isAdminOrDelegatedAdmin","isAddGroupOpen","loadingAddGroup","hasAddGroupError","newGroupName","__sfc","groupId","showNewUserMenu","mdiAccount","mdiAccountOff","mdiCog","mdiPlus","mdiShieldAccount","mdiHistory","NcActionText","NcAppNavigation","NcAppNavigationCaption","NcAppNavigationList","NcAppNavigationNew","GroupListItem","UserSettingsDialog","_setup","indexOf","_k","keyCode"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"settings-users-3239.js?v=772824f8cf5b5f9de2ae","mappings":"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","sources":["webpack:///nextcloud/apps/settings/src/utils/userUtils.ts","webpack:///nextcloud/apps/settings/src/components/GroupListItem.vue?vue&type=style&index=0&id=ea582d00&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/UserList.vue?vue&type=style&index=0&id=e345be16&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/NewUserDialog.vue?vue&type=style&index=0&id=bb4e22ea&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/UserListFooter.vue?vue&type=style&index=0&id=685a7a6f&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/UserListHeader.vue?vue&type=style&index=0&id=c0c2e65c&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/UserRow.vue?vue&type=style&index=0&id=45690c64&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/UserSettingsDialog.vue?vue&type=style&index=0&id=5f8529d4&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/Users/VirtualList.vue?vue&type=style&index=0&id=78acaa4e&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/views/UserManagement.vue?vue&type=style&index=0&id=fda025aa&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/views/UserManagementNavigation.vue?vue&type=style&index=0&id=36898b23&prod&scoped=true&lang=scss","webpack://nextcloud/./apps/settings/src/views/UserManagement.vue?4b28","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?37ef","webpack://nextcloud/./apps/settings/src/components/Users/VirtualList.vue?1915","webpack://nextcloud/./apps/settings/src/components/Users/NewUserDialog.vue?dc2d","webpack:///nextcloud/apps/settings/src/components/Users/NewUserDialog.vue","webpack:///nextcloud/apps/settings/src/components/Users/NewUserDialog.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/Users/NewUserDialog.vue?9ea9","webpack://nextcloud/./apps/settings/src/components/Users/NewUserDialog.vue?64c6","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?a778","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?81c0","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/node_modules/is-svg/index.js","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?859a","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?d4dd","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?c442","webpack://nextcloud/./apps/settings/src/views/UserManagement.vue?fd5a","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?f1be","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?1da3","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?5d9d","webpack://nextcloud/./apps/settings/src/views/UserManagementNavigation.vue?28b6"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { translate as t } from '@nextcloud/l10n';\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-ea582d00]{margin:0}.modal__content[data-v-ea582d00]{display:flex;flex-direction:column;align-items:center;padding:20px;gap:4px 0}.modal__button-row[data-v-ea582d00]{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","// 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-e345be16] .icon-vue{width:64px;height:64px}.empty[data-v-e345be16] .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, `.dialog__form[data-v-bb4e22ea]{display:flex;flex-direction:column;align-items:center;padding:0 8px;gap:4px 0}.dialog__item[data-v-bb4e22ea]{width:100%}.dialog__item[data-v-bb4e22ea]:not(:focus):not(:active){border-color:var(--color-border-dark)}.dialog__hint[data-v-bb4e22ea]{color:var(--color-text-maxcontrast);margin-top:8px;align-self:flex-start}.dialog__label[data-v-bb4e22ea]{display:block;padding:4px 0}.dialog__select[data-v-bb4e22ea]{width:100%}.dialog__managers[data-v-bb4e22ea]{margin-bottom:12px}.dialog__submit[data-v-bb4e22ea]{margin-top:4px;margin-bottom:8px}.dialog[data-v-bb4e22ea] .dialog__actions{margin:auto}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/NewUserDialog.vue\"],\"names\":[],\"mappings\":\"AAEC,+BACC,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,aAAA,CACA,SAAA,CAGD,+BACC,UAAA,CAEA,wDACC,qCAAA,CAIF,+BACC,mCAAA,CACA,cAAA,CACA,qBAAA,CAGD,gCACC,aAAA,CACA,aAAA,CAGD,iCACC,UAAA,CAGD,mCACC,kBAAA,CAGD,iCACC,cAAA,CACA,iBAAA,CAIA,0CACC,WAAA\",\"sourcesContent\":[\"\\n.dialog {\\n\\t&__form {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\talign-items: center;\\n\\t\\tpadding: 0 8px;\\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&__managers {\\n\\t\\tmargin-bottom: 12px;\\n\\t}\\n\\n\\t&__submit {\\n\\t\\tmargin-top: 4px;\\n\\t\\tmargin-bottom: 8px;\\n\\t}\\n\\n\\t:deep {\\n\\t\\t.dialog__actions {\\n\\t\\t\\tmargin: auto;\\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, `.footer[data-v-685a7a6f]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.footer__cell[data-v-685a7a6f]{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-685a7a6f],.footer__cell span[data-v-685a7a6f],.footer__cell label[data-v-685a7a6f]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.footer__cell--avatar[data-v-685a7a6f],.footer__cell--displayname[data-v-685a7a6f]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.footer__cell--avatar[data-v-685a7a6f]{left:0}.footer__cell--displayname[data-v-685a7a6f]{left:var(--avatar-cell-width);border-right:1px solid var(--color-border)}}.footer__cell--username[data-v-685a7a6f]{padding-left:calc(var(--default-grid-baseline)*3)}.footer__cell--avatar[data-v-685a7a6f]{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-685a7a6f]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.footer__cell--multiline span[data-v-685a7a6f]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.footer__cell--large[data-v-685a7a6f]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.footer__cell--obfuscated[data-v-685a7a6f]{min-width:400px;width:400px}.footer__cell--fill[data-v-685a7a6f]{min-width:var(--cell-width-large);width:100%}.footer__cell--actions[data-v-685a7a6f]{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-685a7a6f]{color:var(--color-text-maxcontrast)}.footer__cell[data-v-685a7a6f]{position:sticky;color:var(--color-text-maxcontrast)}.footer__cell--loading[data-v-685a7a6f]{left:0;min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0}.footer__cell--count[data-v-685a7a6f]{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,yBCGC,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,yCACC,iDAAA,CAGD,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,CDpGD,+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 * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\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&--username {\\n\\t\\t\\tpadding-left: calc(var(--default-grid-baseline) * 3);\\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, `.header[data-v-c0c2e65c]{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-c0c2e65c]{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-c0c2e65c],.header__cell span[data-v-c0c2e65c],.header__cell label[data-v-c0c2e65c]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.header__cell--avatar[data-v-c0c2e65c],.header__cell--displayname[data-v-c0c2e65c]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.header__cell--avatar[data-v-c0c2e65c]{left:0}.header__cell--displayname[data-v-c0c2e65c]{left:var(--avatar-cell-width);border-right:1px solid var(--color-border)}}.header__cell--username[data-v-c0c2e65c]{padding-left:calc(var(--default-grid-baseline)*3)}.header__cell--avatar[data-v-c0c2e65c]{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-c0c2e65c]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.header__cell--multiline span[data-v-c0c2e65c]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.header__cell--large[data-v-c0c2e65c]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.header__cell--obfuscated[data-v-c0c2e65c]{min-width:400px;width:400px}.header__cell--fill[data-v-c0c2e65c]{min-width:var(--cell-width-large);width:100%}.header__cell--actions[data-v-c0c2e65c]{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-c0c2e65c]{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,yBCGC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CDJA,2CAAA,CCQA,+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,yCACC,iDAAA,CAGD,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 * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\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&--username {\\n\\t\\t\\tpadding-left: calc(var(--default-grid-baseline) * 3);\\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, `.user-list__row[data-v-45690c64]{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-45690c64]:hover{background-color:var(--color-background-hover)}.user-list__row:hover .row__cell[data-v-45690c64]:not(.row__cell--actions){background-color:var(--color-background-hover)}.user-list__row .select--fill[data-v-45690c64]{max-width:calc(var(--cell-width-large) - 2*var(--cell-padding))}.row__cell[data-v-45690c64]{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-45690c64],.row__cell span[data-v-45690c64],.row__cell label[data-v-45690c64]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.row__cell--avatar[data-v-45690c64],.row__cell--displayname[data-v-45690c64]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.row__cell--avatar[data-v-45690c64]{left:0}.row__cell--displayname[data-v-45690c64]{left:var(--avatar-cell-width);border-right:1px solid var(--color-border)}}.row__cell--username[data-v-45690c64]{padding-left:calc(var(--default-grid-baseline)*3)}.row__cell--avatar[data-v-45690c64]{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-45690c64]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.row__cell--multiline span[data-v-45690c64]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.row__cell--large[data-v-45690c64]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.row__cell--obfuscated[data-v-45690c64]{min-width:400px;width:400px}.row__cell--fill[data-v-45690c64]{min-width:var(--cell-width-large);width:100%}.row__cell--actions[data-v-45690c64]{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-45690c64]{color:var(--color-text-maxcontrast)}.row__cell[data-v-45690c64]{border-bottom:1px solid var(--color-border)}.row__cell[data-v-45690c64] .v-select.select{min-width:var(--cell-min-width)}.row__progress[data-v-45690c64]{margin-top:4px}.row__progress--warn[data-v-45690c64]::-moz-progress-bar{background:var(--color-warning) !important}.row__progress--warn[data-v-45690c64]::-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,iCCGC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CDLA,uCACC,8CAAA,CAEA,2EACC,8CAAA,CAKF,+CACC,+DAAA,CCDD,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,sCACC,iDAAA,CAGD,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,CDpFD,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 * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\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&--username {\\n\\t\\t\\tpadding-left: calc(var(--default-grid-baseline) * 3);\\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-5f8529d4]{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, `.user-list[data-v-78acaa4e]{--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%;will-change:scroll-position}.user-list__header[data-v-78acaa4e],.user-list__footer[data-v-78acaa4e]{position:sticky;display:block}.user-list__header[data-v-78acaa4e]{top:0;z-index:calc(var(--sticky-column-z-index) + 1)}.user-list__footer[data-v-78acaa4e]{left:0}.user-list__body[data-v-78acaa4e]{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,CACA,2BAAA,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\\twill-change: scroll-position;\\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, `.app-content[data-v-fda025aa]{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","// 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-36898b23]{height:auto !important;overflow:visible !important}.account-management__group-list[data-v-36898b23]{height:100% !important}.account-management__settings-toggle[data-v-36898b23]{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","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 { 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=78acaa4e&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=style&index=0&id=78acaa4e&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=78acaa4e&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=78acaa4e&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 \"78acaa4e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcDialog',_vm._g({staticClass:\"dialog\",attrs:{\"size\":\"small\",\"name\":_vm.t('settings', 'New account'),\"out-transition\":\"\"},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('NcButton',{staticClass:\"dialog__submit\",attrs:{\"data-test\":\"submit\",\"form\":\"new-user-form\",\"type\":\"primary\",\"native-type\":\"submit\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Add new account'))+\"\\n\\t\\t\")])]},proxy:true}])},_vm.$listeners),[_c('form',{staticClass:\"dialog__form\",attrs:{\"id\":\"new-user-form\",\"data-test\":\"form\",\"disabled\":_vm.loading.all},on:{\"submit\":function($event){$event.preventDefault();return _vm.createUser.apply(null, arguments)}}},[_c('NcTextField',{ref:\"username\",staticClass:\"dialog__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:\"dialog__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:\"dialog__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:\"dialog__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:\"dialog__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:\"dialog__item\"},[_c('NcSelect',{staticClass:\"dialog__select\",attrs:{\"input-label\":!_vm.settings.isAdmin && !_vm.settings.isDelegatedAdmin ? _vm.t('settings', 'Member of the following groups (required)') : _vm.t('settings', 'Member of the following groups'),\"placeholder\":_vm.t('settings', 'Set account 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 && !_vm.settings.isDelegatedAdmin},on:{\"input\":_vm.handleGroupInput,\"option:created\":_vm.createGroup}})],1),_vm._v(\" \"),(_vm.subAdminsGroups.length > 0)?_c('div',{staticClass:\"dialog__item\"},[_c('NcSelect',{staticClass:\"dialog__select\",attrs:{\"input-label\":_vm.t('settings', 'Admin of the following groups'),\"placeholder\":_vm.t('settings', 'Set account 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:\"dialog__item\"},[_c('NcSelect',{staticClass:\"dialog__select\",attrs:{\"input-label\":_vm.t('settings', 'Quota'),\"placeholder\":_vm.t('settings', 'Set account 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:\"dialog__item\"},[_c('NcSelect',{staticClass:\"dialog__select\",attrs:{\"input-label\":_vm.t('settings', '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:['dialog__item dialog__managers', { 'icon-loading-small': _vm.loading.manager }]},[_c('NcSelect',{staticClass:\"dialog__select\",attrs:{\"input-label\":_vm.managerInputLabel,\"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)],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!./NewUserDialog.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!./NewUserDialog.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!./NewUserDialog.vue?vue&type=style&index=0&id=bb4e22ea&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewUserDialog.vue?vue&type=style&index=0&id=bb4e22ea&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./NewUserDialog.vue?vue&type=template&id=bb4e22ea&scoped=true\"\nimport script from \"./NewUserDialog.vue?vue&type=script&lang=js\"\nexport * from \"./NewUserDialog.vue?vue&type=script&lang=js\"\nimport style0 from \"./NewUserDialog.vue?vue&type=style&index=0&id=bb4e22ea&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 \"bb4e22ea\",\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 accounts …'),\"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=685a7a6f&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListFooter.vue?vue&type=style&index=0&id=685a7a6f&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=685a7a6f&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=685a7a6f&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 \"685a7a6f\",\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('th',{staticClass:\"header__cell header__cell--username\",attrs:{\"data-cy-user-list-header-username\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Account name'))+\"\\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 || _vm.settings.isDelegatedAdmin))?_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', 'Account 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', 'Account 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=c0c2e65c&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListHeader.vue?vue&type=style&index=0&id=c0c2e65c&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=c0c2e65c&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=c0c2e65c&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 \"c0c2e65c\",\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\"+_vm._s(_vm.user.displayname)+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--username\",attrs:{\"data-cy-user-list-cell-username\":\"\"}},[_c('span',{staticClass:\"row__subtitle\"},[_vm._v(_vm._s(_vm.user.id))])]),_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 account 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 || _vm.settings.isDelegatedAdmin,\"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 || _vm.settings.isDelegatedAdmin))?_c('td',{staticClass:\"row__cell row__cell--large row__cell--multiline\",attrs:{\"data-cy-user-list-cell-subadmins\":\"\"}},[(_vm.editing && (_vm.settings.isAdmin || _vm.settings.isDelegatedAdmin) && _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.enabledActions),function({ action, icon, text },index){return _c('NcActionButton',{key:index,attrs:{\"disabled\":_vm.disabled,\"aria-label\":text,\"icon\":icon,\"close-after-click\":\"\"},on:{\"click\":(event) => action(event, { ..._vm.user })},scopedSlots:_vm._u([(_vm.isSvg(icon))?{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"svg\":icon,\"aria-hidden\":\"true\"}})]},proxy:true}:null],null,true)},[_vm._v(\"\\n\\t\\t\"+_vm._s(text)+\"\\n\\t\\t\")])})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import {XMLParser, XMLValidator} from 'fast-xml-parser';\n\nexport default function isSvg(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n\t}\n\n\tstring = string.trim();\n\n\tif (string.length === 0) {\n\t\treturn false;\n\t}\n\n\t// Has to be `!==` as it can also return an object with error info.\n\tif (XMLValidator.validate(string) !== true) {\n\t\treturn false;\n\t}\n\n\tlet jsonObject;\n\tconst parser = new XMLParser();\n\n\ttry {\n\t\tjsonObject = parser.parse(string);\n\t} catch {\n\t\treturn false;\n\t}\n\n\tif (!jsonObject) {\n\t\treturn false;\n\t}\n\n\tif (!Object.keys(jsonObject).some(x => x.toLowerCase() === 'svg')) {\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n","import { render, staticRenderFns } from \"./UserRowActions.vue?vue&type=template&id=7e1868f4\"\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 * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\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=45690c64&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRow.vue?vue&type=style&index=0&id=45690c64&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=45690c64&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=45690c64&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 \"45690c64\",\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=e345be16&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserList.vue?vue&type=style&index=0&id=e345be16&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=e345be16&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=e345be16&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 \"e345be16\",\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('NewUserDialog',{attrs:{\"loading\":_vm.loading,\"new-user\":_vm.newUser,\"quota-options\":_vm.quotaOptions},on:{\"reset\":_vm.resetForm,\"closing\":_vm.closeDialog}}):_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=fda025aa&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserManagement.vue?vue&type=style&index=0&id=fda025aa&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=fda025aa&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=fda025aa&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 \"fda025aa\",\n null\n \n)\n\nexport default component.exports","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', 'All 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.isAdminOrDelegatedAdmin)?_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"recent\",\"exact\":true,\"name\":_setup.t('settings', 'Recently active'),\"to\":{ name: 'group', params: { selectedGroup: '__nc_internal_recent' } }},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiHistory}})]},proxy:true},{key:\"counter\",fn:function(){return [(_setup.recentGroup?.usercount)?_c(_setup.NcCounterBubble,{attrs:{\"type\":_setup.selectedGroupDecoded === '__nc_internal_recent' ? 'highlighted' : undefined}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_setup.recentGroup.usercount)+\"\\n\\t\\t\\t\\t\")]):_vm._e()]},proxy:true}],null,false,2299424282)}):_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=ea582d00&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupListItem.vue?vue&type=style&index=0&id=ea582d00&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=ea582d00&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=ea582d00&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 \"ea582d00\",\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 || _vm.settings.isDelegatedAdmin))?_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 || _vm.settings.isDelegatedAdmin))?_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:{\"clearable\":false,\"create-option\":_vm.validateQuota,\"filter-by\":_vm.filterQuotas,\"input-label\":_vm.t('settings', 'Default quota'),\"options\":_vm.quotaOptions,\"placement\":\"top\",\"placeholder\":_vm.t('settings', 'Select default quota'),\"taggable\":\"\"},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=5f8529d4&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserSettingsDialog.vue?vue&type=style&index=0&id=5f8529d4&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=5f8529d4&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=5f8529d4&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 \"5f8529d4\",\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 !== '__nc_internal_recent' && 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 /**\n * The group of recent users\n */\n const recentGroup = computed(() => formatGroupMenu(groups.value.find(group => group.id === '__nc_internal_recent')));\n return { adminGroup, recentGroup, 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=36898b23&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserManagementNavigation.vue?vue&type=style&index=0&id=36898b23&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=36898b23&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=36898b23&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 \"36898b23\",\n null\n \n)\n\nexport default component.exports"],"names":["unlimitedQuota","id","label","t","defaultQuota","isObfuscated","user","keys","Object","length","at","___CSS_LOADER_EXPORT___","push","module","unrefElement","elRef","_a","plain","$el","defaultWindow","window","useSupported","callback","isMounted","instance","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","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","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","NcDialog","NcPasswordField","NcSelect","NcTextField","loading","newUser","quotaOptions","possibleManagers","managerInputLabel","managerLabel","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","username","focus","createUser","all","dispatch","userid","password","displayName","email","mailAddress","subadmin","quota","language","code","manager","error","response","ocs","meta","statuscode","handleGroupInput","createGroup","_ref","gid","find","validateQuota","validQuota","OC","Util","computerFileSize","humanFileSize","languageFilterBy","option","search","some","_ref2","toLocaleLowerCase","includes","query","offset","limit","then","users","values","_g","scopedSlots","_u","fn","_s","proxy","$listeners","on","$event","preventDefault","apply","arguments","$set","newUserRequireEmail","_e","isAdmin","isDelegatedAdmin","model","$$v","showLanguages","class","NcLoadingIcon","filteredUsers","userCount","n","hasObfuscated","passwordLabel","showUserBackend","showStoragePath","showLastLogin","defineComponent","NcActionButton","NcActions","NcIconSvgWrapper","actions","disabled","edit","editSvg","SvgCheck","enabledActions","action","enabled","isSvg","string","TypeError","trim","XMLValidator","validate","jsonObject","parser","XMLParser","parse","x","toLowerCase","toggleEdit","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","isLoadingUser","isLoadingField","uniqueId","encodeURIComponent","userGroupsLabels","join","userSubAdminsGroupsLabels","formatFileSize","canEdit","getCurrentUser","uid","parseFileSize","userActions","deleteUser","wipeUserDevices","enableDisableUser","sendWelcomeMail","editedUserQuota","get","set","availableLanguages","initManager","confirmPassword","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","inputField","input","backendCapabilities","setDisplayName","canChangePassword","setPassword","backend","storageLocation","freeze","Fragment","NcEmptyContent","NewUserDialog","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","closeDialog","defaultLanguage","currentGroup","allGroups","findIndex","usercount","$router","showNewUserForm","NcAppContent","UserList","pageHeading","selectedGroupDecoded","admin","decodeURIComponent","orderBy","sortGroups","OCA","Settings","registerAction","emit","AccountGroup","Delete","NcActionInput","NcAppNavigationItem","NcCounterBubble","NcModal","NcNoteCard","Pencil","active","count","loadingRenameGroup","openGroupMenu","showRemoveGroupModal","handleGroupMenuOpen","renameGroup","displayNameInput","querySelector","groupid","removeGroup","NcAppSettingsDialog","NcAppSettingsSection","NcCheckboxRadioSwitch","open","loadingSendMail","groupSorting","getGroupSorting","GroupSorting","GroupName","sorting","UserCount","isGroupSortingEnforced","forceSortGroupByName","isModalOpen","status","setShowConfig","newUserSendEmail","axios","post","generateUrl","filterQuotas","searchValue","replaceAll","indexOf","setDefaultQuota","app","formatGroupMenu","title","_defineComponent","__name","__props","route","useRoute","router","useRouter","store","useStore","isDialogOpen","getUserCount","getSortedGroups","adminGroup","recentGroup","disabledGroup","useFormatGroups","isAdminOrDelegatedAdmin","isAddGroupOpen","loadingAddGroup","hasAddGroupError","newGroupName","__sfc","groupId","showNewUserMenu","mdiAccount","mdiAccountOff","mdiCog","mdiPlus","mdiShieldAccount","mdiHistory","NcActionText","NcAppNavigation","NcAppNavigationCaption","NcAppNavigationList","NcAppNavigationNew","GroupListItem","UserSettingsDialog","_setup","_k","keyCode"],"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 43c15813421af..cbce65715b8da 100644 --- a/dist/settings-vue-settings-apps-users-management.js +++ b/dist/settings-vue-settings-apps-users-management.js @@ -1,2 +1,2 @@ -(()=>{var e,s,r,i={6028:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});var r=s(65043),i=s(56760);s(51257);const o=function(e){return e.replace(/\/$/,"")},a={requireAdmin:()=>(0,i.C5)(),get:(e,t)=>r.Ay.get(o(e),t),post:(e,t)=>r.Ay.post(o(e),t),patch:(e,t)=>r.Ay.patch(o(e),t),put:(e,t)=>r.Ay.put(o(e),t),delete:(e,t)=>r.Ay.delete(o(e),{params:t})}},8265:(e,s,r)=>{"use strict";r.d(s,{P:()=>D});var i=r(95353),o=r(59097),a=r(87485),n=r(35810),u=r(85168),d=r(63814),c=r(65043),p=r(15916),l=r(6028),m=r(36620),g=r(96763);const h=(0,o.c0)("settings").persist(!0).build(),E={id:"",name:"",usercount:0,disabled:0,canAdd:!0,canRemove:!0},f={users:[],groups:[],orderBy:p.q.UserCount,minPasswordLength:0,usersOffset:0,usersLimit:25,disabledUsersOffset:0,disabledUsersLimit:25,userCount:0,showConfig:{showStoragePath:"true"===h.getItem("account_settings__showStoragePath"),showUserBackend:"true"===h.getItem("account_settings__showUserBackend"),showLastLogin:"true"===h.getItem("account_settings__showLastLogin"),showNewUserForm:"true"===h.getItem("account_settings__showNewUserForm"),showLanguages:"true"===h.getItem("account_settings__showLanguages")}},A={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)})),i=e.users.concat(r);e.usersOffset+=e.usersLimit,e.users=i},updateDisabledUsers(e,t){e.disabledUsersOffset+=e.disabledUsersLimit},setPasswordPolicyMinLength(e,t){e.minPasswordLength=""!==t?t:0},initGroups(e,t){let{groups:s,orderBy:r,userCount:i}=t;e.groups=s.map((e=>Object.assign({},E,e))),e.orderBy=r,e.userCount=i},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({},E,{id:s,name:r});e.groups.unshift(t)}catch(e){g.error("Can't create group",e)}},renameGroup(e,t){let{gid:s,displayName:r}=t;const i=e.groups.findIndex((e=>e.id===s));if(i>=0){const t=e.groups[i];t.name=r,e.groups.splice(i,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 i=e.groups.find((e=>e.id===r)),o=e.users.find((e=>e.id===s));i&&o.enabled&&e.userCount>0&&i.usercount++,o.groups.push(r)},removeUserGroup(e,t){let{userid:s,gid:r}=t;const i=e.groups.find((e=>e.id===r)),o=e.users.find((e=>e.id===s));i&&o.enabled&&e.userCount>0&&i.usercount--;const a=o.groups;a.splice(a.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 i=e.users.find((e=>e.id===s)).subadmin;i.splice(i.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 i=e.users.find((e=>e.id===s));i.enabled=r,this.commit("updateUserCounts",{user:i,actionType:r?"enable":"disable"})},updateUserCounts(e,t){let{user:s,actionType:r}=t;if(0===e.userCount)return;const i=e.groups.find((e=>"__nc_internal_recent"===e.id)),o=e.groups.find((e=>"disabled"===e.id));switch(r){case"enable":case"disable":o.usercount+=s.enabled?-1:1,i.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":i.usercount++,e.userCount++,s.groups.forEach((t=>{e.groups.find((e=>e.id===t)).usercount++}));break;case"remove":s.enabled?(i.usercount--,e.userCount--,s.groups.forEach((t=>{const s=e.groups.find((e=>e.id===t));s?s.usercount--:g.warn("User group "+t+" does not exist during user removal")}))):(o.usercount--,s.groups.forEach((t=>{e.groups.find((e=>e.id===t)).disabled--})));break;default:m.A.error(`Unknown action type in updateUserCounts: '${r}'`)}},setUserData(e,t){let{userid:s,key:r,value:i}=t;if("quota"===r){const t=(0,n.lT)(i,!0);e.users.find((e=>e.id===s))[r][r]=null!==t?t:i}else e.users.find((e=>e.id===s))[r]=i},resetUsers(e){e.users=[],e.usersOffset=0,e.disabledUsersOffset=0},setShowConfig(e,t){let{key:s,value:r}=t;h.setItem(`account_settings__${s}`,JSON.stringify(r)),e.showConfig[s]=r},setGroupSorting(e,s){const r=e.orderBy;e.orderBy=s,c.Ay.post((0,d.Jv)("/settings/users/preferences/group.sortBy"),{value:String(s)}).catch((s=>{e.orderBy=r,(0,u.Qg)(t("settings","Could not set group sorting")),m.A.error(s)}))}},I={getUsers:e=>e.users,getGroups:e=>e.groups,getSubadminGroups:e=>e.groups.filter((e=>"admin"!==e.id&&"__nc_internal_recent"!==e.id&&"disabled"!==e.id)),getSortedGroups(e){const t=[...e.groups];return e.orderBy===p.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},N=c.Ay.CancelToken;let b=null;const L={state:f,mutations:A,getters:I,actions:{searchUsers(e,t){let{offset:s,limit:r,search:i}=t;return i="string"==typeof i?i:"",l.A.get((0,d.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:s,limit:r,search:i})).catch((t=>{c.Ay.isCancel(t)||e.commit("API_FAILURE",t)}))},getUser:(e,t)=>l.A.get((0,d.KT)(`cloud/users/${t}`)).catch((t=>{c.Ay.isCancel(t)||e.commit("API_FAILURE",t)})),getUsers(e,t){let{offset:s,limit:r,search:i,group:o}=t;return b&&b.cancel("Operation canceled by another search request."),b=N.source(),i="string"==typeof i?i:"",i=i.replace(/in:[^\s]+/g,"").trim(),o="string"==typeof o?o:"",""!==o?l.A.get((0,d.KT)("cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}",{group:encodeURIComponent(o),offset:s,limit:r,search:i}),{cancelToken:b.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=>{c.Ay.isCancel(t)||e.commit("API_FAILURE",t)})):l.A.get((0,d.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:s,limit:r,search:i}),{cancelToken:b.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=>{c.Ay.isCancel(t)||e.commit("API_FAILURE",t)}))},async getRecentUsers(e,t){let{offset:s,limit:r,search:i}=t;const o=(0,d.KT)("cloud/users/recent?offset={offset}&limit={limit}&search={search}",{offset:s,limit:r,search:i});try{const t=await l.A.get(o),s=Object.keys(t.data.ocs.data.users).length;return s>0&&e.commit("appendUsers",t.data.ocs.data.users),s}catch(t){e.commit("API_FAILURE",t)}},async getDisabledUsers(e,t){let{offset:s,limit:r,search:i}=t;const o=(0,d.KT)("cloud/users/disabled?offset={offset}&limit={limit}&search={search}",{offset:s,limit:r,search:i});try{const t=await l.A.get(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:i}=t;i="string"==typeof i?i:"";const o=-1===r?"":`&limit=${r}`;return l.A.get((0,d.KT)("cloud/groups?offset={offset}&search={search}",{offset:s,search:i})+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:i}=t;return i="string"==typeof i?i:"",l.A.get((0,d.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:s,limit:r,search:i})).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:i}=t;return l.A.get((0,d.KT)("cloud/users/{groupId}/details?offset={offset}&limit={limit}",{groupId:encodeURIComponent(s),offset:r,limit:i})).then((t=>e.commit("getUsersFromList",t.data.ocs.data.users))).catch((t=>e.commit("API_FAILURE",t)))},getPasswordPolicyMinLength:e=>!(!(0,a.F)().password_policy||!(0,a.F)().password_policy.minLength)&&(e.commit("setPasswordPolicyMinLength",(0,a.F)().password_policy.minLength),(0,a.F)().password_policy.minLength),addGroup:(e,t)=>l.A.requireAdmin().then((s=>l.A.post((0,d.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 l.A.requireAdmin().then((t=>l.A.put((0,d.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)=>l.A.requireAdmin().then((s=>l.A.delete((0,d.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 l.A.requireAdmin().then((t=>l.A.post((0,d.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 l.A.requireAdmin().then((t=>l.A.delete((0,d.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 l.A.requireAdmin().then((t=>l.A.post((0,d.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 l.A.requireAdmin().then((t=>l.A.delete((0,d.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 l.A.requireAdmin(),await l.A.post((0,d.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)=>l.A.requireAdmin().then((s=>l.A.delete((0,d.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:i,password:o,displayName:a,email:n,groups:u,subadmin:c,quota:p,language:m,manager:g}=t;return l.A.requireAdmin().then((e=>l.A.post((0,d.KT)("cloud/users"),{userid:i,password:o,displayName:a,email:n,groups:u,subadmin:c,quota:p,language:m,manager:g}).then((e=>r("addUserData",i||e.data.ocs.data.id))).catch((e=>{throw e})))).catch((e=>{throw s("API_FAILURE",{userid:i,error:e}),e}))},addUserData:(e,t)=>l.A.requireAdmin().then((s=>l.A.get((0,d.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 i=r?"enable":"disable";return l.A.requireAdmin().then((t=>l.A.put((0,d.KT)("cloud/users/{userid}/{userStatus}",{userid:s,userStatus:i})).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:i}=t;const o=["email","displayname","manager"];if(-1!==["email","language","quota","displayname","password","manager"].indexOf(r)&&"string"==typeof i&&(-1===o.indexOf(r)&&i.length>0||-1!==o.indexOf(r)))try{return await l.A.requireAdmin(),await l.A.put((0,d.KT)("cloud/users/{userid}",{userid:s}),{key:r,value:i}),e.commit("setUserData",{userid:s,key:r,value:i})}catch(t){e.commit("API_FAILURE",{userid:s,error:t})}return Promise.reject(new Error("Invalid request data"))},sendWelcomeMail:(e,t)=>l.A.requireAdmin().then((e=>l.A.post((0,d.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 y=r(85471),R=r(32981),O=r(96763);const P={apps:[],bundles:(0,R.C)("settings","appstoreBundles",[]),categories:[],updateCount:(0,R.C)("settings","appstoreUpdateCount",0),loading:{},gettingCategoriesPromise:null,appApiEnabled:(0,R.C)("settings","appApiEnabled",!1)},v={APPS_API_FAILURE(e,s){(0,u.Qg)(t("settings","An error occurred during the request. Unable to proceed.")+"
"+s.error.response.data.data.message,{isHTML:!0}),O.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 i=e.apps.find((e=>e.id===s));i.active=!0,i.groups=r,"app_api"===i.id&&(e.appApiEnabled=!0)},setInstallState(e,t){let{appId:s,canInstall:r}=t;const i=e.apps.find((e=>e.id===s));i&&(i.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),"app_api"===s.id&&(e.appApiEnabled=!1)},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,"app_api"===t&&(e.appApiEnabled=!1)},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=>{y.Ay.set(e.loading,t,!0)})):y.Ay.set(e.loading,t,!0)},stopLoading(e,t){Array.isArray(t)?t.forEach((t=>{y.Ay.set(e.loading,t,!1)})):y.Ay.set(e.loading,t,!1)}},U={enableApp(e,s){let r,{appId:i,groups:o}=s;return r=Array.isArray(i)?i:[i],l.A.requireAdmin().then((s=>(e.commit("startLoading",r),e.commit("startLoading","install"),l.A.post((0,d.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})})),c.Ay.get((0,d.Jv)("apps/files/")).then((()=>{s.data.update_required&&((0,u.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(i)||((0,u.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:i}))}))))).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:i,error:t})}))))).catch((t=>e.commit("API_FAILURE",{appId:i,error:t})))},forceEnableApp(e,t){let s,{appId:r,groups:i}=t;return s=Array.isArray(r)?r:[r],l.A.requireAdmin().then((()=>(e.commit("startLoading",s),e.commit("startLoading","install"),l.A.post((0,d.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],l.A.requireAdmin().then((t=>(e.commit("startLoading",s),l.A.post((0,d.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 l.A.requireAdmin().then((t=>(e.commit("startLoading",s),l.A.get((0,d.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 l.A.requireAdmin().then((t=>(e.commit("startLoading",s),e.commit("startLoading","install"),l.A.get((0,d.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"),l.A.get((0,d.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=l.A.get((0,d.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}},T={state:P,mutations:v,getters:{isAppApiEnabled:e=>e.appApiEnabled,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:U},C={serverData:(0,R.C)("settings","usersSettings",{})},F={setServerData(e,t){e.serverData=t}},$={state:C,mutations:F,getters:{getServerData:e=>e.serverData},actions:{}},_={state:{},mutations:{},getters:{},actions:{setAppConfig(e,t){let{app:s,key:r,value:i}=t;return l.A.requireAdmin().then((e=>l.A.post((0,d.KT)("apps/provisioning_api/api/v1/config/apps/{app}/{key}",{app:s,key:r}),{value:i}).catch((e=>{throw e})))).catch((t=>e.commit("API_FAILURE",{app:s,key:r,value:i,error:t})))}}};var w=r(96763);const S={API_FAILURE(e,s){try{const e=s.error.response.data.ocs.meta.message;(0,u.Qg)(t("settings","An error occurred during the request. Unable to proceed.")+"
"+e,{isHTML:!0})}catch(e){(0,u.Qg)(t("settings","An error occurred during the request. Unable to proceed."))}w.error(e,s)}};let x=null;const D=()=>(null===x&&(x=new i.il({modules:{users:L,apps:T,settings:$,oc:_},strict:!1,mutations:S})),x)},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={}))},36620:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});const r=(0,s(35947).YK)().setApp("settings").detectUser().build()},18539:(e,t,s)=>{"use strict";var r=s(85471),i=s(95353),o=s(80284),a=s(58723),n=s(53334),u=s(22378);const d=(0,r.pM)({__name:"SettingsApp",setup:e=>({__sfc:!0,NcContent:u.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 p=s(40173),l=s(63814);const m=[{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,70094)),navigation:()=>Promise.all([s.e(4208),s.e(7265),s.e(3239)]).then(s.bind(s,39603))},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,86877)),navigation:()=>Promise.all([s.e(4208),s.e(7265),s.e(4529)]).then(s.bind(s,28372)),sidebar:()=>Promise.all([s.e(4208),s.e(7265),s.e(4529)]).then(s.bind(s,62437))},children:[{path:":category",name:"apps-category",children:[{path:":id",name:"apps-details"}]}]}];r.Ay.use(p.Ay);const g=new p.Ay({mode:"history",base:(0,l.Jv)(""),linkActiveClass:"active",routes:m});var h=s(8265),E=s(21777),f=s(65899);s.nc=(0,E.aV)(),r.Ay.prototype.t=n.t,r.Ay.prototype.n=n.n,r.Ay.use(f.R2),r.Ay.use(o.Ay,{defaultHtml:!1}),r.Ay.use(i.Ay);const A=(0,f.Ey)(),I=(0,h.P)();(0,a.O)(I,g),new r.Ay({router:g,store:I,pinia:A,render:e=>e(c),el:"#content"})},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 i=(r||{}).moduleName||"route";e.registerModule(i,{namespaced:!0,state:s(t.currentRoute),mutations:{ROUTE_CHANGED:function(t,r){e.state[i]=s(r.to,r.from)}}});var o,a=!1,n=e.watch((function(e){return e[i]}),(function(e){var s=e.fullPath;s!==o&&(null!=o&&(a=!0,t.push(e)),o=s)}),{sync:!0}),u=t.afterEach((function(t,s){a?a=!1:(o=t.fullPath,e.commit(i+"/ROUTE_CHANGED",{to:t,from:s}))}));return function(){null!=u&&u(),null!=n&&n(),e.unregisterModule(i)}}},35810:(e,t,s)=>{"use strict";s.d(t,{Al:()=>r.r,H4:()=>r.c,Q$:()=>r.e,R3:()=>r.n,VL:()=>r.l,lJ:()=>r.d,lT:()=>p,pt:()=>r.F,ur:()=>m,v7:()=>c});var r=s(29719),i=(s(87485),s(43627),s(53334)),o=s(380),a=s(65606),n=s(96763);Error;const u=["B","KB","MB","GB","TB","PB"],d=["B","KiB","MiB","GiB","TiB","PiB"];function c(e,t=!1,s=!1,r=!1){s=s&&!r,"string"==typeof e&&(e=Number(e));let o=e>0?Math.floor(Math.log(e)/Math.log(r?1e3:1024)):0;o=Math.min((s?d.length:u.length)-1,o);const a=s?d[o]:u[o];let n=(e/Math.pow(r?1e3:1024,o)).toFixed(1);return!0===t&&0===o?("0.0"!==n?"< 1 ":"0 ")+(s?d[1]:u[1]):(n=o<2?parseFloat(n).toFixed(0):parseFloat(n).toLocaleString((0,i.lO)()),n+" "+a)}function p(e,t=!1){try{e=`${e}`.toLocaleLowerCase().replaceAll(/\s+/g,"").replaceAll(",",".")}catch(e){return null}const s=e.match(/^([0-9]*(\.[0-9]*)?)([kmgtp]?)(i?)b?$/);if(null===s||"."===s[1]||""===s[1])return null;const r=`${s[1]}`,i="i"===s[4]||t?1024:1e3;return Math.round(Number.parseFloat(r)*i**{"":0,k:1,m:2,g:3,t:4,p:5,e:6}[s[3]])}function l(e){return e instanceof Date?e.toISOString():String(e)}function m(e,t={}){const s={sortingMode:"basename",sortingOrder:"asc",...t};return function(e,t,s){s=s??[];const r=(t=t??[e=>e]).map(((e,t)=>"asc"===(s[t]??"asc")?1:-1)),o=Intl.Collator([(0,i.Z0)(),(0,i.lO)()],{numeric:!0,usage:"sort"});return[...e].sort(((e,s)=>{for(const[i,a]of t.entries()){const t=o.compare(l(a(e)),l(a(s)));if(0!==t)return t*r[i]}return 0}))}(e,[...s.sortFavoritesFirst?[e=>1!==e.attributes?.favorite]:[],...s.sortFoldersFirst?[e=>"folder"!==e.type]:[],..."basename"!==s.sortingMode?[e=>e[s.sortingMode]]:[],e=>{return(t=e.displayname||e.attributes?.displayname||e.basename).lastIndexOf(".")>0?t.slice(0,t.lastIndexOf(".")):t;var t},e=>e.basename],[...s.sortFavoritesFirst?["asc"]:[],...s.sortFoldersFirst?["asc"]:[],..."mtime"===s.sortingMode?["asc"===s.sortingOrder?"desc":"asc"]:[],..."mtime"!==s.sortingMode&&"basename"!==s.sortingMode?[s.sortingOrder]:[],s.sortingOrder,s.sortingOrder])}var g={};!function(e){const t=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",s="["+t+"]["+t+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*",r=new RegExp("^"+s+"$");e.isExist=function(e){return void 0!==e},e.isEmptyObject=function(e){return 0===Object.keys(e).length},e.merge=function(e,t,s){if(t){const r=Object.keys(t),i=r.length;for(let o=0;o!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(e,t,s){return e}};h.buildOptions=function(e){return Object.assign({},E,e)},h.defaultOptions=E,!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt),!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");var f={};function A(e,t,s){let r;const i={};for(let o=0;o0&&(i[t.textNodeName]=r):void 0!==r&&(i[t.textNodeName]=r),i}function I(e){const t=Object.keys(e);for(let e=0;e`,o=!1;continue}if(u===t.commentPropName){i+=r+`\x3c!--${n[u][0][t.textNodeName]}--\x3e`,o=!0;continue}if("?"===u[0]){const e=P(n[":@"],t),s="?xml"===u?"":r;let a=n[u][0][t.textNodeName];a=0!==a.length?" "+a:"",i+=s+`<${u}${a}${e}?>`,o=!0;continue}let c=r;""!==c&&(c+=t.indentBy);const p=r+`<${u}${P(n[":@"],t)}`,l=R(n[u],t,d,c);-1!==t.unpairedTags.indexOf(u)?t.suppressUnpairedNode?i+=p+">":i+=p+"/>":l&&0!==l.length||!t.suppressEmptyNode?l&&l.endsWith(">")?i+=p+`>${l}${r}`:(i+=p+">",l&&""!==r&&(l.includes("/>")||l.includes("`):i+=p+"/>",o=!0}return i}function O(e){const t=Object.keys(e);for(let s=0;s0&&t.processEntities)for(let s=0;s0&&(s="\n"),R(e,t,"",s)},C=function(e){return"function"==typeof e?e:Array.isArray(e)?t=>{for(const s of e){if("string"==typeof s&&t===s)return!0;if(s instanceof RegExp&&s.test(t))return!0}}:()=>!1},F={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function $(e){this.options=Object.assign({},F,e),!0===this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.ignoreAttributesFn=C(this.options.ignoreAttributes),this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=S),this.processTextOrObjNode=_,this.options.format?(this.indentate=w,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function _(e,t,s,r){const i=this.j2x(e,s+1,r.concat(t));return void 0!==e[this.options.textNodeName]&&1===Object.keys(e).length?this.buildTextValNode(e[this.options.textNodeName],t,i.attrStr,s):this.buildObjectNode(i.val,t,i.attrStr,s)}function w(e){return this.options.indentBy.repeat(e)}function S(e){return!(!e.startsWith(this.options.attributeNamePrefix)||e===this.options.textNodeName)&&e.substr(this.attrPrefixLen)}$.prototype.build=function(e){return this.options.preserveOrder?T(e,this.options):(Array.isArray(e)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(e={[this.options.arrayNodeName]:e}),this.j2x(e,0,[]).val)},$.prototype.j2x=function(e,t,s){let r="",i="";const o=s.join(".");for(let a in e)if(Object.prototype.hasOwnProperty.call(e,a))if(void 0===e[a])this.isAttribute(a)&&(i+="");else if(null===e[a])this.isAttribute(a)?i+="":"?"===a[0]?i+=this.indentate(t)+"<"+a+"?"+this.tagEndChar:i+=this.indentate(t)+"<"+a+"/"+this.tagEndChar;else if(e[a]instanceof Date)i+=this.buildTextValNode(e[a],a,"",t);else if("object"!=typeof e[a]){const s=this.isAttribute(a);if(s&&!this.ignoreAttributesFn(s,o))r+=this.buildAttrPairStr(s,""+e[a]);else if(!s)if(a===this.options.textNodeName){let t=this.options.tagValueProcessor(a,""+e[a]);i+=this.replaceEntitiesValue(t)}else i+=this.buildTextValNode(e[a],a,"",t)}else if(Array.isArray(e[a])){const r=e[a].length;let o="",n="";for(let u=0;u"+e+i}},$.prototype.closeTag=function(e){let t="";return-1!==this.options.unpairedTags.indexOf(e)?this.options.suppressUnpairedNode||(t="/"):t=this.options.suppressEmptyNode?"/":`>`+this.newLine;if(!1!==this.options.commentPropName&&t===this.options.commentPropName)return this.indentate(r)+`\x3c!--${e}--\x3e`+this.newLine;if("?"===t[0])return this.indentate(r)+"<"+t+s+"?"+this.tagEndChar;{let i=this.options.tagValueProcessor(t,e);return i=this.replaceEntitiesValue(i),""===i?this.indentate(r)+"<"+t+s+this.closeTag(t)+this.tagEndChar:this.indentate(r)+"<"+t+s+">"+i+"0&&this.options.processEntities)for(let t=0;tn.error("SEMVER",...e):()=>{},D={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER||9007199254740991,RELEASE_TYPES:["major","premajor","minor","preminor","patch","prepatch","prerelease"],SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2},G={exports:{}};!function(e,t){const{MAX_SAFE_COMPONENT_LENGTH:s,MAX_SAFE_BUILD_LENGTH:r,MAX_LENGTH:i}=D,o=x,a=(t=e.exports={}).re=[],n=t.safeRe=[],u=t.src=[],d=t.t={};let c=0;const p="[a-zA-Z0-9-]",l=[["\\s",1],["\\d",i],[p,r]],m=(e,t,s)=>{const r=(e=>{for(const[t,s]of l)e=e.split(`${t}*`).join(`${t}{0,${s}}`).split(`${t}+`).join(`${t}{1,${s}}`);return e})(t),i=c++;o(e,i,t),d[e]=i,u[i]=t,a[i]=new RegExp(t,s?"g":void 0),n[i]=new RegExp(r,s?"g":void 0)};m("NUMERICIDENTIFIER","0|[1-9]\\d*"),m("NUMERICIDENTIFIERLOOSE","\\d+"),m("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${p}*`),m("MAINVERSION",`(${u[d.NUMERICIDENTIFIER]})\\.(${u[d.NUMERICIDENTIFIER]})\\.(${u[d.NUMERICIDENTIFIER]})`),m("MAINVERSIONLOOSE",`(${u[d.NUMERICIDENTIFIERLOOSE]})\\.(${u[d.NUMERICIDENTIFIERLOOSE]})\\.(${u[d.NUMERICIDENTIFIERLOOSE]})`),m("PRERELEASEIDENTIFIER",`(?:${u[d.NUMERICIDENTIFIER]}|${u[d.NONNUMERICIDENTIFIER]})`),m("PRERELEASEIDENTIFIERLOOSE",`(?:${u[d.NUMERICIDENTIFIERLOOSE]}|${u[d.NONNUMERICIDENTIFIER]})`),m("PRERELEASE",`(?:-(${u[d.PRERELEASEIDENTIFIER]}(?:\\.${u[d.PRERELEASEIDENTIFIER]})*))`),m("PRERELEASELOOSE",`(?:-?(${u[d.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${u[d.PRERELEASEIDENTIFIERLOOSE]})*))`),m("BUILDIDENTIFIER",`${p}+`),m("BUILD",`(?:\\+(${u[d.BUILDIDENTIFIER]}(?:\\.${u[d.BUILDIDENTIFIER]})*))`),m("FULLPLAIN",`v?${u[d.MAINVERSION]}${u[d.PRERELEASE]}?${u[d.BUILD]}?`),m("FULL",`^${u[d.FULLPLAIN]}$`),m("LOOSEPLAIN",`[v=\\s]*${u[d.MAINVERSIONLOOSE]}${u[d.PRERELEASELOOSE]}?${u[d.BUILD]}?`),m("LOOSE",`^${u[d.LOOSEPLAIN]}$`),m("GTLT","((?:<|>)?=?)"),m("XRANGEIDENTIFIERLOOSE",`${u[d.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),m("XRANGEIDENTIFIER",`${u[d.NUMERICIDENTIFIER]}|x|X|\\*`),m("XRANGEPLAIN",`[v=\\s]*(${u[d.XRANGEIDENTIFIER]})(?:\\.(${u[d.XRANGEIDENTIFIER]})(?:\\.(${u[d.XRANGEIDENTIFIER]})(?:${u[d.PRERELEASE]})?${u[d.BUILD]}?)?)?`),m("XRANGEPLAINLOOSE",`[v=\\s]*(${u[d.XRANGEIDENTIFIERLOOSE]})(?:\\.(${u[d.XRANGEIDENTIFIERLOOSE]})(?:\\.(${u[d.XRANGEIDENTIFIERLOOSE]})(?:${u[d.PRERELEASELOOSE]})?${u[d.BUILD]}?)?)?`),m("XRANGE",`^${u[d.GTLT]}\\s*${u[d.XRANGEPLAIN]}$`),m("XRANGELOOSE",`^${u[d.GTLT]}\\s*${u[d.XRANGEPLAINLOOSE]}$`),m("COERCEPLAIN",`(^|[^\\d])(\\d{1,${s}})(?:\\.(\\d{1,${s}}))?(?:\\.(\\d{1,${s}}))?`),m("COERCE",`${u[d.COERCEPLAIN]}(?:$|[^\\d])`),m("COERCEFULL",u[d.COERCEPLAIN]+`(?:${u[d.PRERELEASE]})?(?:${u[d.BUILD]})?(?:$|[^\\d])`),m("COERCERTL",u[d.COERCE],!0),m("COERCERTLFULL",u[d.COERCEFULL],!0),m("LONETILDE","(?:~>?)"),m("TILDETRIM",`(\\s*)${u[d.LONETILDE]}\\s+`,!0),t.tildeTrimReplace="$1~",m("TILDE",`^${u[d.LONETILDE]}${u[d.XRANGEPLAIN]}$`),m("TILDELOOSE",`^${u[d.LONETILDE]}${u[d.XRANGEPLAINLOOSE]}$`),m("LONECARET","(?:\\^)"),m("CARETTRIM",`(\\s*)${u[d.LONECARET]}\\s+`,!0),t.caretTrimReplace="$1^",m("CARET",`^${u[d.LONECARET]}${u[d.XRANGEPLAIN]}$`),m("CARETLOOSE",`^${u[d.LONECARET]}${u[d.XRANGEPLAINLOOSE]}$`),m("COMPARATORLOOSE",`^${u[d.GTLT]}\\s*(${u[d.LOOSEPLAIN]})$|^$`),m("COMPARATOR",`^${u[d.GTLT]}\\s*(${u[d.FULLPLAIN]})$|^$`),m("COMPARATORTRIM",`(\\s*)${u[d.GTLT]}\\s*(${u[d.LOOSEPLAIN]}|${u[d.XRANGEPLAIN]})`,!0),t.comparatorTrimReplace="$1$2$3",m("HYPHENRANGE",`^\\s*(${u[d.XRANGEPLAIN]})\\s+-\\s+(${u[d.XRANGEPLAIN]})\\s*$`),m("HYPHENRANGELOOSE",`^\\s*(${u[d.XRANGEPLAINLOOSE]})\\s+-\\s+(${u[d.XRANGEPLAINLOOSE]})\\s*$`),m("STAR","(<|>)?=?\\s*\\*"),m("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),m("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")}(G,G.exports);var M=G.exports;Object.freeze({loose:!0}),Object.freeze({});const j=/^[0-9]+$/,k=(e,t)=>{const s=j.test(e),r=j.test(t);return s&&r&&(e=+e,t=+t),e===t?0:s&&!r?-1:r&&!s?1:ek(t,e)};const{MAX_LENGTH:q,MAX_SAFE_INTEGER:X}=D,{safeRe:V,t:K}=M,{compareIdentifiers:H}=B;o.m}},o={};function a(e){var t=o[e];if(void 0!==t)return t.exports;var s=o[e]={id:e,loaded:!1,exports:{}};return i[e].call(s.exports,s,s.exports,a),s.loaded=!0,s.exports}a.m=i,e=[],a.O=(t,s,r,i)=>{if(!s){var o=1/0;for(c=0;c=i)&&Object.keys(a.O).every((e=>a.O[e](s[u])))?s.splice(u--,1):(n=!1,i0&&e[c-1][2]>i;c--)e[c]=e[c-1];e[c]=[s,r,i]},a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var s in t)a.o(t,s)&&!a.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},a.f={},a.e=e=>Promise.all(Object.keys(a.f).reduce(((t,s)=>(a.f[s](e,t),t)),[])),a.u=e=>(({3239:"settings-users",4529:"settings-apps-view"}[e]||e)+"-"+e+".js?v="+{1521:"220bf24c534d0cf00eb6",3239:"4397d4b7cd27394bcfef",4529:"d58021a92b28d315755f",5085:"4f10478b69e38cddada5",5706:"3153330af47fc26a725a",6127:"8a567ca1f2d5ad91b181",7265:"9c12ff5b3777606cd886",8737:"8cbc3d2101ec1e37d965"}[e]),a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s={},r="nextcloud:",a.l=(e,t,i,o)=>{if(s[e])s[e].push(t);else{var n,u;if(void 0!==i)for(var d=document.getElementsByTagName("script"),c=0;c{n.onerror=n.onload=null,clearTimeout(m);var i=s[e];if(delete s[e],n.parentNode&&n.parentNode.removeChild(n),i&&i.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),u&&document.head.appendChild(n)}},a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),a.j=2689,(()=>{var e;a.g.importScripts&&(e=a.g.location+"");var t=a.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(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=e})(),(()=>{a.b=document.baseURI||self.location.href;var e={2689:0};a.f.j=(t,s)=>{var r=a.o(e,t)?e[t]:void 0;if(0!==r)if(r)s.push(r[2]);else{var i=new Promise(((s,i)=>r=e[t]=[s,i]));s.push(r[2]=i);var o=a.p+a.u(t),n=new Error;a.l(o,(s=>{if(a.o(e,t)&&(0!==(r=e[t])&&(e[t]=void 0),r)){var i=s&&("load"===s.type?"missing":s.type),o=s&&s.target&&s.target.src;n.message="Loading chunk "+t+" failed.\n("+i+": "+o+")",n.name="ChunkLoadError",n.type=i,n.request=o,r[1](n)}}),"chunk-"+t,t)}},a.O.j=t=>0===e[t];var t=(t,s)=>{var r,i,o=s[0],n=s[1],u=s[2],d=0;if(o.some((t=>0!==e[t]))){for(r in n)a.o(n,r)&&(a.m[r]=n[r]);if(u)var c=u(a)}for(t&&t(s);da(18539)));n=a.O(n)})(); -//# sourceMappingURL=settings-vue-settings-apps-users-management.js.map?v=c2d679388e4e20f9f673 \ No newline at end of file +(()=>{var e,s,r,i={6028:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});var r=s(65043),i=s(56760);s(51257);const o=function(e){return e.replace(/\/$/,"")},a={requireAdmin:()=>(0,i.C5)(),get:(e,t)=>r.Ay.get(o(e),t),post:(e,t)=>r.Ay.post(o(e),t),patch:(e,t)=>r.Ay.patch(o(e),t),put:(e,t)=>r.Ay.put(o(e),t),delete:(e,t)=>r.Ay.delete(o(e),{params:t})}},8265:(e,s,r)=>{"use strict";r.d(s,{P:()=>D});var i=r(95353),o=r(59097),a=r(87485),n=r(35810),u=r(85168),d=r(63814),c=r(65043),p=r(15916),l=r(6028),m=r(36620),g=r(96763);const h=(0,o.c0)("settings").persist(!0).build(),E={id:"",name:"",usercount:0,disabled:0,canAdd:!0,canRemove:!0},f={users:[],groups:[],orderBy:p.q.UserCount,minPasswordLength:0,usersOffset:0,usersLimit:25,disabledUsersOffset:0,disabledUsersLimit:25,userCount:0,showConfig:{showStoragePath:"true"===h.getItem("account_settings__showStoragePath"),showUserBackend:"true"===h.getItem("account_settings__showUserBackend"),showLastLogin:"true"===h.getItem("account_settings__showLastLogin"),showNewUserForm:"true"===h.getItem("account_settings__showNewUserForm"),showLanguages:"true"===h.getItem("account_settings__showLanguages")}},A={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)})),i=e.users.concat(r);e.usersOffset+=e.usersLimit,e.users=i},updateDisabledUsers(e,t){e.disabledUsersOffset+=e.disabledUsersLimit},setPasswordPolicyMinLength(e,t){e.minPasswordLength=""!==t?t:0},initGroups(e,t){let{groups:s,orderBy:r,userCount:i}=t;e.groups=s.map((e=>Object.assign({},E,e))),e.orderBy=r,e.userCount=i},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({},E,{id:s,name:r});e.groups.unshift(t)}catch(e){g.error("Can't create group",e)}},renameGroup(e,t){let{gid:s,displayName:r}=t;const i=e.groups.findIndex((e=>e.id===s));if(i>=0){const t=e.groups[i];t.name=r,e.groups.splice(i,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 i=e.groups.find((e=>e.id===r)),o=e.users.find((e=>e.id===s));i&&o.enabled&&e.userCount>0&&i.usercount++,o.groups.push(r)},removeUserGroup(e,t){let{userid:s,gid:r}=t;const i=e.groups.find((e=>e.id===r)),o=e.users.find((e=>e.id===s));i&&o.enabled&&e.userCount>0&&i.usercount--;const a=o.groups;a.splice(a.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 i=e.users.find((e=>e.id===s)).subadmin;i.splice(i.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 i=e.users.find((e=>e.id===s));i.enabled=r,this.commit("updateUserCounts",{user:i,actionType:r?"enable":"disable"})},updateUserCounts(e,t){let{user:s,actionType:r}=t;if(0===e.userCount)return;const i=e.groups.find((e=>"__nc_internal_recent"===e.id)),o=e.groups.find((e=>"disabled"===e.id));switch(r){case"enable":case"disable":o.usercount+=s.enabled?-1:1,i.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":i.usercount++,e.userCount++,s.groups.forEach((t=>{e.groups.find((e=>e.id===t)).usercount++}));break;case"remove":s.enabled?(i.usercount--,e.userCount--,s.groups.forEach((t=>{const s=e.groups.find((e=>e.id===t));s?s.usercount--:g.warn("User group "+t+" does not exist during user removal")}))):(o.usercount--,s.groups.forEach((t=>{e.groups.find((e=>e.id===t)).disabled--})));break;default:m.A.error(`Unknown action type in updateUserCounts: '${r}'`)}},setUserData(e,t){let{userid:s,key:r,value:i}=t;if("quota"===r){const t=(0,n.lT)(i,!0);e.users.find((e=>e.id===s))[r][r]=null!==t?t:i}else e.users.find((e=>e.id===s))[r]=i},resetUsers(e){e.users=[],e.usersOffset=0,e.disabledUsersOffset=0},setShowConfig(e,t){let{key:s,value:r}=t;h.setItem(`account_settings__${s}`,JSON.stringify(r)),e.showConfig[s]=r},setGroupSorting(e,s){const r=e.orderBy;e.orderBy=s,c.Ay.post((0,d.Jv)("/settings/users/preferences/group.sortBy"),{value:String(s)}).catch((s=>{e.orderBy=r,(0,u.Qg)(t("settings","Could not set group sorting")),m.A.error(s)}))}},I={getUsers:e=>e.users,getGroups:e=>e.groups,getSubadminGroups:e=>e.groups.filter((e=>"admin"!==e.id&&"__nc_internal_recent"!==e.id&&"disabled"!==e.id)),getSortedGroups(e){const t=[...e.groups];return e.orderBy===p.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},N=c.Ay.CancelToken;let b=null;const L={state:f,mutations:A,getters:I,actions:{searchUsers(e,t){let{offset:s,limit:r,search:i}=t;return i="string"==typeof i?i:"",l.A.get((0,d.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:s,limit:r,search:i})).catch((t=>{c.Ay.isCancel(t)||e.commit("API_FAILURE",t)}))},getUser:(e,t)=>l.A.get((0,d.KT)(`cloud/users/${t}`)).catch((t=>{c.Ay.isCancel(t)||e.commit("API_FAILURE",t)})),getUsers(e,t){let{offset:s,limit:r,search:i,group:o}=t;return b&&b.cancel("Operation canceled by another search request."),b=N.source(),i="string"==typeof i?i:"",i=i.replace(/in:[^\s]+/g,"").trim(),o="string"==typeof o?o:"",""!==o?l.A.get((0,d.KT)("cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}",{group:encodeURIComponent(o),offset:s,limit:r,search:i}),{cancelToken:b.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=>{c.Ay.isCancel(t)||e.commit("API_FAILURE",t)})):l.A.get((0,d.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:s,limit:r,search:i}),{cancelToken:b.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=>{c.Ay.isCancel(t)||e.commit("API_FAILURE",t)}))},async getRecentUsers(e,t){let{offset:s,limit:r,search:i}=t;const o=(0,d.KT)("cloud/users/recent?offset={offset}&limit={limit}&search={search}",{offset:s,limit:r,search:i});try{const t=await l.A.get(o),s=Object.keys(t.data.ocs.data.users).length;return s>0&&e.commit("appendUsers",t.data.ocs.data.users),s}catch(t){e.commit("API_FAILURE",t)}},async getDisabledUsers(e,t){let{offset:s,limit:r,search:i}=t;const o=(0,d.KT)("cloud/users/disabled?offset={offset}&limit={limit}&search={search}",{offset:s,limit:r,search:i});try{const t=await l.A.get(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:i}=t;i="string"==typeof i?i:"";const o=-1===r?"":`&limit=${r}`;return l.A.get((0,d.KT)("cloud/groups?offset={offset}&search={search}",{offset:s,search:i})+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:i}=t;return i="string"==typeof i?i:"",l.A.get((0,d.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:s,limit:r,search:i})).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:i}=t;return l.A.get((0,d.KT)("cloud/users/{groupId}/details?offset={offset}&limit={limit}",{groupId:encodeURIComponent(s),offset:r,limit:i})).then((t=>e.commit("getUsersFromList",t.data.ocs.data.users))).catch((t=>e.commit("API_FAILURE",t)))},getPasswordPolicyMinLength:e=>!(!(0,a.F)().password_policy||!(0,a.F)().password_policy.minLength)&&(e.commit("setPasswordPolicyMinLength",(0,a.F)().password_policy.minLength),(0,a.F)().password_policy.minLength),addGroup:(e,t)=>l.A.requireAdmin().then((s=>l.A.post((0,d.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 l.A.requireAdmin().then((t=>l.A.put((0,d.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)=>l.A.requireAdmin().then((s=>l.A.delete((0,d.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 l.A.requireAdmin().then((t=>l.A.post((0,d.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 l.A.requireAdmin().then((t=>l.A.delete((0,d.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 l.A.requireAdmin().then((t=>l.A.post((0,d.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 l.A.requireAdmin().then((t=>l.A.delete((0,d.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 l.A.requireAdmin(),await l.A.post((0,d.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)=>l.A.requireAdmin().then((s=>l.A.delete((0,d.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:i,password:o,displayName:a,email:n,groups:u,subadmin:c,quota:p,language:m,manager:g}=t;return l.A.requireAdmin().then((e=>l.A.post((0,d.KT)("cloud/users"),{userid:i,password:o,displayName:a,email:n,groups:u,subadmin:c,quota:p,language:m,manager:g}).then((e=>r("addUserData",i||e.data.ocs.data.id))).catch((e=>{throw e})))).catch((e=>{throw s("API_FAILURE",{userid:i,error:e}),e}))},addUserData:(e,t)=>l.A.requireAdmin().then((s=>l.A.get((0,d.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 i=r?"enable":"disable";return l.A.requireAdmin().then((t=>l.A.put((0,d.KT)("cloud/users/{userid}/{userStatus}",{userid:s,userStatus:i})).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:i}=t;const o=["email","displayname","manager"];if(-1!==["email","language","quota","displayname","password","manager"].indexOf(r)&&"string"==typeof i&&(-1===o.indexOf(r)&&i.length>0||-1!==o.indexOf(r)))try{return await l.A.requireAdmin(),await l.A.put((0,d.KT)("cloud/users/{userid}",{userid:s}),{key:r,value:i}),e.commit("setUserData",{userid:s,key:r,value:i})}catch(t){e.commit("API_FAILURE",{userid:s,error:t})}return Promise.reject(new Error("Invalid request data"))},sendWelcomeMail:(e,t)=>l.A.requireAdmin().then((e=>l.A.post((0,d.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 y=r(85471),R=r(32981),O=r(96763);const P={apps:[],bundles:(0,R.C)("settings","appstoreBundles",[]),categories:[],updateCount:(0,R.C)("settings","appstoreUpdateCount",0),loading:{},gettingCategoriesPromise:null,appApiEnabled:(0,R.C)("settings","appApiEnabled",!1)},v={APPS_API_FAILURE(e,s){(0,u.Qg)(t("settings","An error occurred during the request. Unable to proceed.")+"
"+s.error.response.data.data.message,{isHTML:!0}),O.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 i=e.apps.find((e=>e.id===s));i.active=!0,i.groups=r,"app_api"===i.id&&(e.appApiEnabled=!0)},setInstallState(e,t){let{appId:s,canInstall:r}=t;const i=e.apps.find((e=>e.id===s));i&&(i.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),"app_api"===s.id&&(e.appApiEnabled=!1)},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,"app_api"===t&&(e.appApiEnabled=!1)},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=>{y.Ay.set(e.loading,t,!0)})):y.Ay.set(e.loading,t,!0)},stopLoading(e,t){Array.isArray(t)?t.forEach((t=>{y.Ay.set(e.loading,t,!1)})):y.Ay.set(e.loading,t,!1)}},U={enableApp(e,s){let r,{appId:i,groups:o}=s;return r=Array.isArray(i)?i:[i],l.A.requireAdmin().then((s=>(e.commit("startLoading",r),e.commit("startLoading","install"),l.A.post((0,d.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})})),c.Ay.get((0,d.Jv)("apps/files/")).then((()=>{s.data.update_required&&((0,u.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(i)||((0,u.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:i}))}))))).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:i,error:t})}))))).catch((t=>e.commit("API_FAILURE",{appId:i,error:t})))},forceEnableApp(e,t){let s,{appId:r,groups:i}=t;return s=Array.isArray(r)?r:[r],l.A.requireAdmin().then((()=>(e.commit("startLoading",s),e.commit("startLoading","install"),l.A.post((0,d.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],l.A.requireAdmin().then((t=>(e.commit("startLoading",s),l.A.post((0,d.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 l.A.requireAdmin().then((t=>(e.commit("startLoading",s),l.A.get((0,d.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 l.A.requireAdmin().then((t=>(e.commit("startLoading",s),e.commit("startLoading","install"),l.A.get((0,d.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"),l.A.get((0,d.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=l.A.get((0,d.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}},T={state:P,mutations:v,getters:{isAppApiEnabled:e=>e.appApiEnabled,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:U},C={serverData:(0,R.C)("settings","usersSettings",{})},F={setServerData(e,t){e.serverData=t}},$={state:C,mutations:F,getters:{getServerData:e=>e.serverData},actions:{}},_={state:{},mutations:{},getters:{},actions:{setAppConfig(e,t){let{app:s,key:r,value:i}=t;return l.A.requireAdmin().then((e=>l.A.post((0,d.KT)("apps/provisioning_api/api/v1/config/apps/{app}/{key}",{app:s,key:r}),{value:i}).catch((e=>{throw e})))).catch((t=>e.commit("API_FAILURE",{app:s,key:r,value:i,error:t})))}}};var w=r(96763);const S={API_FAILURE(e,s){try{const e=s.error.response.data.ocs.meta.message;(0,u.Qg)(t("settings","An error occurred during the request. Unable to proceed.")+"
"+e,{isHTML:!0})}catch(e){(0,u.Qg)(t("settings","An error occurred during the request. Unable to proceed."))}w.error(e,s)}};let x=null;const D=()=>(null===x&&(x=new i.il({modules:{users:L,apps:T,settings:$,oc:_},strict:!1,mutations:S})),x)},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={}))},36620:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});const r=(0,s(35947).YK)().setApp("settings").detectUser().build()},18539:(e,t,s)=>{"use strict";var r=s(85471),i=s(95353),o=s(80284),a=s(58723),n=s(53334),u=s(22378);const d=(0,r.pM)({__name:"SettingsApp",setup:e=>({__sfc:!0,NcContent:u.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 p=s(40173),l=s(63814);const m=[{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,70094)),navigation:()=>Promise.all([s.e(4208),s.e(7265),s.e(3239)]).then(s.bind(s,62944))},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,86877)),navigation:()=>Promise.all([s.e(4208),s.e(7265),s.e(4529)]).then(s.bind(s,28372)),sidebar:()=>Promise.all([s.e(4208),s.e(7265),s.e(4529)]).then(s.bind(s,62437))},children:[{path:":category",name:"apps-category",children:[{path:":id",name:"apps-details"}]}]}];r.Ay.use(p.Ay);const g=new p.Ay({mode:"history",base:(0,l.Jv)(""),linkActiveClass:"active",routes:m});var h=s(8265),E=s(21777),f=s(65899);s.nc=(0,E.aV)(),r.Ay.prototype.t=n.t,r.Ay.prototype.n=n.n,r.Ay.use(f.R2),r.Ay.use(o.Ay,{defaultHtml:!1}),r.Ay.use(i.Ay);const A=(0,f.Ey)(),I=(0,h.P)();(0,a.O)(I,g),new r.Ay({router:g,store:I,pinia:A,render:e=>e(c),el:"#content"})},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 i=(r||{}).moduleName||"route";e.registerModule(i,{namespaced:!0,state:s(t.currentRoute),mutations:{ROUTE_CHANGED:function(t,r){e.state[i]=s(r.to,r.from)}}});var o,a=!1,n=e.watch((function(e){return e[i]}),(function(e){var s=e.fullPath;s!==o&&(null!=o&&(a=!0,t.push(e)),o=s)}),{sync:!0}),u=t.afterEach((function(t,s){a?a=!1:(o=t.fullPath,e.commit(i+"/ROUTE_CHANGED",{to:t,from:s}))}));return function(){null!=u&&u(),null!=n&&n(),e.unregisterModule(i)}}},35810:(e,t,s)=>{"use strict";s.d(t,{Al:()=>r.r,H4:()=>r.c,Q$:()=>r.e,R3:()=>r.n,VL:()=>r.l,lJ:()=>r.d,lT:()=>p,pt:()=>r.F,ur:()=>m,v7:()=>c});var r=s(29719),i=(s(87485),s(43627),s(53334)),o=s(380),a=s(65606),n=s(96763);Error;const u=["B","KB","MB","GB","TB","PB"],d=["B","KiB","MiB","GiB","TiB","PiB"];function c(e,t=!1,s=!1,r=!1){s=s&&!r,"string"==typeof e&&(e=Number(e));let o=e>0?Math.floor(Math.log(e)/Math.log(r?1e3:1024)):0;o=Math.min((s?d.length:u.length)-1,o);const a=s?d[o]:u[o];let n=(e/Math.pow(r?1e3:1024,o)).toFixed(1);return!0===t&&0===o?("0.0"!==n?"< 1 ":"0 ")+(s?d[1]:u[1]):(n=o<2?parseFloat(n).toFixed(0):parseFloat(n).toLocaleString((0,i.lO)()),n+" "+a)}function p(e,t=!1){try{e=`${e}`.toLocaleLowerCase().replaceAll(/\s+/g,"").replaceAll(",",".")}catch(e){return null}const s=e.match(/^([0-9]*(\.[0-9]*)?)([kmgtp]?)(i?)b?$/);if(null===s||"."===s[1]||""===s[1])return null;const r=`${s[1]}`,i="i"===s[4]||t?1024:1e3;return Math.round(Number.parseFloat(r)*i**{"":0,k:1,m:2,g:3,t:4,p:5,e:6}[s[3]])}function l(e){return e instanceof Date?e.toISOString():String(e)}function m(e,t={}){const s={sortingMode:"basename",sortingOrder:"asc",...t};return function(e,t,s){s=s??[];const r=(t=t??[e=>e]).map(((e,t)=>"asc"===(s[t]??"asc")?1:-1)),o=Intl.Collator([(0,i.Z0)(),(0,i.lO)()],{numeric:!0,usage:"sort"});return[...e].sort(((e,s)=>{for(const[i,a]of t.entries()){const t=o.compare(l(a(e)),l(a(s)));if(0!==t)return t*r[i]}return 0}))}(e,[...s.sortFavoritesFirst?[e=>1!==e.attributes?.favorite]:[],...s.sortFoldersFirst?[e=>"folder"!==e.type]:[],..."basename"!==s.sortingMode?[e=>e[s.sortingMode]]:[],e=>{return(t=e.displayname||e.attributes?.displayname||e.basename).lastIndexOf(".")>0?t.slice(0,t.lastIndexOf(".")):t;var t},e=>e.basename],[...s.sortFavoritesFirst?["asc"]:[],...s.sortFoldersFirst?["asc"]:[],..."mtime"===s.sortingMode?["asc"===s.sortingOrder?"desc":"asc"]:[],..."mtime"!==s.sortingMode&&"basename"!==s.sortingMode?[s.sortingOrder]:[],s.sortingOrder,s.sortingOrder])}var g={};!function(e){const t=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",s="["+t+"]["+t+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*",r=new RegExp("^"+s+"$");e.isExist=function(e){return void 0!==e},e.isEmptyObject=function(e){return 0===Object.keys(e).length},e.merge=function(e,t,s){if(t){const r=Object.keys(t),i=r.length;for(let o=0;o!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(e,t,s){return e}};h.buildOptions=function(e){return Object.assign({},E,e)},h.defaultOptions=E,!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt),!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");var f={};function A(e,t,s){let r;const i={};for(let o=0;o0&&(i[t.textNodeName]=r):void 0!==r&&(i[t.textNodeName]=r),i}function I(e){const t=Object.keys(e);for(let e=0;e`,o=!1;continue}if(u===t.commentPropName){i+=r+`\x3c!--${n[u][0][t.textNodeName]}--\x3e`,o=!0;continue}if("?"===u[0]){const e=P(n[":@"],t),s="?xml"===u?"":r;let a=n[u][0][t.textNodeName];a=0!==a.length?" "+a:"",i+=s+`<${u}${a}${e}?>`,o=!0;continue}let c=r;""!==c&&(c+=t.indentBy);const p=r+`<${u}${P(n[":@"],t)}`,l=R(n[u],t,d,c);-1!==t.unpairedTags.indexOf(u)?t.suppressUnpairedNode?i+=p+">":i+=p+"/>":l&&0!==l.length||!t.suppressEmptyNode?l&&l.endsWith(">")?i+=p+`>${l}${r}`:(i+=p+">",l&&""!==r&&(l.includes("/>")||l.includes("`):i+=p+"/>",o=!0}return i}function O(e){const t=Object.keys(e);for(let s=0;s0&&t.processEntities)for(let s=0;s0&&(s="\n"),R(e,t,"",s)},C=function(e){return"function"==typeof e?e:Array.isArray(e)?t=>{for(const s of e){if("string"==typeof s&&t===s)return!0;if(s instanceof RegExp&&s.test(t))return!0}}:()=>!1},F={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function $(e){this.options=Object.assign({},F,e),!0===this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.ignoreAttributesFn=C(this.options.ignoreAttributes),this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=S),this.processTextOrObjNode=_,this.options.format?(this.indentate=w,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function _(e,t,s,r){const i=this.j2x(e,s+1,r.concat(t));return void 0!==e[this.options.textNodeName]&&1===Object.keys(e).length?this.buildTextValNode(e[this.options.textNodeName],t,i.attrStr,s):this.buildObjectNode(i.val,t,i.attrStr,s)}function w(e){return this.options.indentBy.repeat(e)}function S(e){return!(!e.startsWith(this.options.attributeNamePrefix)||e===this.options.textNodeName)&&e.substr(this.attrPrefixLen)}$.prototype.build=function(e){return this.options.preserveOrder?T(e,this.options):(Array.isArray(e)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(e={[this.options.arrayNodeName]:e}),this.j2x(e,0,[]).val)},$.prototype.j2x=function(e,t,s){let r="",i="";const o=s.join(".");for(let a in e)if(Object.prototype.hasOwnProperty.call(e,a))if(void 0===e[a])this.isAttribute(a)&&(i+="");else if(null===e[a])this.isAttribute(a)?i+="":"?"===a[0]?i+=this.indentate(t)+"<"+a+"?"+this.tagEndChar:i+=this.indentate(t)+"<"+a+"/"+this.tagEndChar;else if(e[a]instanceof Date)i+=this.buildTextValNode(e[a],a,"",t);else if("object"!=typeof e[a]){const s=this.isAttribute(a);if(s&&!this.ignoreAttributesFn(s,o))r+=this.buildAttrPairStr(s,""+e[a]);else if(!s)if(a===this.options.textNodeName){let t=this.options.tagValueProcessor(a,""+e[a]);i+=this.replaceEntitiesValue(t)}else i+=this.buildTextValNode(e[a],a,"",t)}else if(Array.isArray(e[a])){const r=e[a].length;let o="",n="";for(let u=0;u"+e+i}},$.prototype.closeTag=function(e){let t="";return-1!==this.options.unpairedTags.indexOf(e)?this.options.suppressUnpairedNode||(t="/"):t=this.options.suppressEmptyNode?"/":`>`+this.newLine;if(!1!==this.options.commentPropName&&t===this.options.commentPropName)return this.indentate(r)+`\x3c!--${e}--\x3e`+this.newLine;if("?"===t[0])return this.indentate(r)+"<"+t+s+"?"+this.tagEndChar;{let i=this.options.tagValueProcessor(t,e);return i=this.replaceEntitiesValue(i),""===i?this.indentate(r)+"<"+t+s+this.closeTag(t)+this.tagEndChar:this.indentate(r)+"<"+t+s+">"+i+"0&&this.options.processEntities)for(let t=0;tn.error("SEMVER",...e):()=>{},D={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER||9007199254740991,RELEASE_TYPES:["major","premajor","minor","preminor","patch","prepatch","prerelease"],SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2},G={exports:{}};!function(e,t){const{MAX_SAFE_COMPONENT_LENGTH:s,MAX_SAFE_BUILD_LENGTH:r,MAX_LENGTH:i}=D,o=x,a=(t=e.exports={}).re=[],n=t.safeRe=[],u=t.src=[],d=t.t={};let c=0;const p="[a-zA-Z0-9-]",l=[["\\s",1],["\\d",i],[p,r]],m=(e,t,s)=>{const r=(e=>{for(const[t,s]of l)e=e.split(`${t}*`).join(`${t}{0,${s}}`).split(`${t}+`).join(`${t}{1,${s}}`);return e})(t),i=c++;o(e,i,t),d[e]=i,u[i]=t,a[i]=new RegExp(t,s?"g":void 0),n[i]=new RegExp(r,s?"g":void 0)};m("NUMERICIDENTIFIER","0|[1-9]\\d*"),m("NUMERICIDENTIFIERLOOSE","\\d+"),m("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${p}*`),m("MAINVERSION",`(${u[d.NUMERICIDENTIFIER]})\\.(${u[d.NUMERICIDENTIFIER]})\\.(${u[d.NUMERICIDENTIFIER]})`),m("MAINVERSIONLOOSE",`(${u[d.NUMERICIDENTIFIERLOOSE]})\\.(${u[d.NUMERICIDENTIFIERLOOSE]})\\.(${u[d.NUMERICIDENTIFIERLOOSE]})`),m("PRERELEASEIDENTIFIER",`(?:${u[d.NUMERICIDENTIFIER]}|${u[d.NONNUMERICIDENTIFIER]})`),m("PRERELEASEIDENTIFIERLOOSE",`(?:${u[d.NUMERICIDENTIFIERLOOSE]}|${u[d.NONNUMERICIDENTIFIER]})`),m("PRERELEASE",`(?:-(${u[d.PRERELEASEIDENTIFIER]}(?:\\.${u[d.PRERELEASEIDENTIFIER]})*))`),m("PRERELEASELOOSE",`(?:-?(${u[d.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${u[d.PRERELEASEIDENTIFIERLOOSE]})*))`),m("BUILDIDENTIFIER",`${p}+`),m("BUILD",`(?:\\+(${u[d.BUILDIDENTIFIER]}(?:\\.${u[d.BUILDIDENTIFIER]})*))`),m("FULLPLAIN",`v?${u[d.MAINVERSION]}${u[d.PRERELEASE]}?${u[d.BUILD]}?`),m("FULL",`^${u[d.FULLPLAIN]}$`),m("LOOSEPLAIN",`[v=\\s]*${u[d.MAINVERSIONLOOSE]}${u[d.PRERELEASELOOSE]}?${u[d.BUILD]}?`),m("LOOSE",`^${u[d.LOOSEPLAIN]}$`),m("GTLT","((?:<|>)?=?)"),m("XRANGEIDENTIFIERLOOSE",`${u[d.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),m("XRANGEIDENTIFIER",`${u[d.NUMERICIDENTIFIER]}|x|X|\\*`),m("XRANGEPLAIN",`[v=\\s]*(${u[d.XRANGEIDENTIFIER]})(?:\\.(${u[d.XRANGEIDENTIFIER]})(?:\\.(${u[d.XRANGEIDENTIFIER]})(?:${u[d.PRERELEASE]})?${u[d.BUILD]}?)?)?`),m("XRANGEPLAINLOOSE",`[v=\\s]*(${u[d.XRANGEIDENTIFIERLOOSE]})(?:\\.(${u[d.XRANGEIDENTIFIERLOOSE]})(?:\\.(${u[d.XRANGEIDENTIFIERLOOSE]})(?:${u[d.PRERELEASELOOSE]})?${u[d.BUILD]}?)?)?`),m("XRANGE",`^${u[d.GTLT]}\\s*${u[d.XRANGEPLAIN]}$`),m("XRANGELOOSE",`^${u[d.GTLT]}\\s*${u[d.XRANGEPLAINLOOSE]}$`),m("COERCEPLAIN",`(^|[^\\d])(\\d{1,${s}})(?:\\.(\\d{1,${s}}))?(?:\\.(\\d{1,${s}}))?`),m("COERCE",`${u[d.COERCEPLAIN]}(?:$|[^\\d])`),m("COERCEFULL",u[d.COERCEPLAIN]+`(?:${u[d.PRERELEASE]})?(?:${u[d.BUILD]})?(?:$|[^\\d])`),m("COERCERTL",u[d.COERCE],!0),m("COERCERTLFULL",u[d.COERCEFULL],!0),m("LONETILDE","(?:~>?)"),m("TILDETRIM",`(\\s*)${u[d.LONETILDE]}\\s+`,!0),t.tildeTrimReplace="$1~",m("TILDE",`^${u[d.LONETILDE]}${u[d.XRANGEPLAIN]}$`),m("TILDELOOSE",`^${u[d.LONETILDE]}${u[d.XRANGEPLAINLOOSE]}$`),m("LONECARET","(?:\\^)"),m("CARETTRIM",`(\\s*)${u[d.LONECARET]}\\s+`,!0),t.caretTrimReplace="$1^",m("CARET",`^${u[d.LONECARET]}${u[d.XRANGEPLAIN]}$`),m("CARETLOOSE",`^${u[d.LONECARET]}${u[d.XRANGEPLAINLOOSE]}$`),m("COMPARATORLOOSE",`^${u[d.GTLT]}\\s*(${u[d.LOOSEPLAIN]})$|^$`),m("COMPARATOR",`^${u[d.GTLT]}\\s*(${u[d.FULLPLAIN]})$|^$`),m("COMPARATORTRIM",`(\\s*)${u[d.GTLT]}\\s*(${u[d.LOOSEPLAIN]}|${u[d.XRANGEPLAIN]})`,!0),t.comparatorTrimReplace="$1$2$3",m("HYPHENRANGE",`^\\s*(${u[d.XRANGEPLAIN]})\\s+-\\s+(${u[d.XRANGEPLAIN]})\\s*$`),m("HYPHENRANGELOOSE",`^\\s*(${u[d.XRANGEPLAINLOOSE]})\\s+-\\s+(${u[d.XRANGEPLAINLOOSE]})\\s*$`),m("STAR","(<|>)?=?\\s*\\*"),m("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),m("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")}(G,G.exports);var M=G.exports;Object.freeze({loose:!0}),Object.freeze({});const j=/^[0-9]+$/,k=(e,t)=>{const s=j.test(e),r=j.test(t);return s&&r&&(e=+e,t=+t),e===t?0:s&&!r?-1:r&&!s?1:ek(t,e)};const{MAX_LENGTH:q,MAX_SAFE_INTEGER:X}=D,{safeRe:V,t:K}=M,{compareIdentifiers:H}=B;o.m}},o={};function a(e){var t=o[e];if(void 0!==t)return t.exports;var s=o[e]={id:e,loaded:!1,exports:{}};return i[e].call(s.exports,s,s.exports,a),s.loaded=!0,s.exports}a.m=i,e=[],a.O=(t,s,r,i)=>{if(!s){var o=1/0;for(c=0;c=i)&&Object.keys(a.O).every((e=>a.O[e](s[u])))?s.splice(u--,1):(n=!1,i0&&e[c-1][2]>i;c--)e[c]=e[c-1];e[c]=[s,r,i]},a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var s in t)a.o(t,s)&&!a.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},a.f={},a.e=e=>Promise.all(Object.keys(a.f).reduce(((t,s)=>(a.f[s](e,t),t)),[])),a.u=e=>(({3239:"settings-users",4529:"settings-apps-view"}[e]||e)+"-"+e+".js?v="+{1521:"220bf24c534d0cf00eb6",3239:"772824f8cf5b5f9de2ae",4529:"d58021a92b28d315755f",5085:"4f10478b69e38cddada5",5706:"3153330af47fc26a725a",6127:"8a567ca1f2d5ad91b181",7265:"9c12ff5b3777606cd886",8737:"8cbc3d2101ec1e37d965"}[e]),a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s={},r="nextcloud:",a.l=(e,t,i,o)=>{if(s[e])s[e].push(t);else{var n,u;if(void 0!==i)for(var d=document.getElementsByTagName("script"),c=0;c{n.onerror=n.onload=null,clearTimeout(m);var i=s[e];if(delete s[e],n.parentNode&&n.parentNode.removeChild(n),i&&i.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),u&&document.head.appendChild(n)}},a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),a.j=2689,(()=>{var e;a.g.importScripts&&(e=a.g.location+"");var t=a.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(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=e})(),(()=>{a.b=document.baseURI||self.location.href;var e={2689:0};a.f.j=(t,s)=>{var r=a.o(e,t)?e[t]:void 0;if(0!==r)if(r)s.push(r[2]);else{var i=new Promise(((s,i)=>r=e[t]=[s,i]));s.push(r[2]=i);var o=a.p+a.u(t),n=new Error;a.l(o,(s=>{if(a.o(e,t)&&(0!==(r=e[t])&&(e[t]=void 0),r)){var i=s&&("load"===s.type?"missing":s.type),o=s&&s.target&&s.target.src;n.message="Loading chunk "+t+" failed.\n("+i+": "+o+")",n.name="ChunkLoadError",n.type=i,n.request=o,r[1](n)}}),"chunk-"+t,t)}},a.O.j=t=>0===e[t];var t=(t,s)=>{var r,i,o=s[0],n=s[1],u=s[2],d=0;if(o.some((t=>0!==e[t]))){for(r in n)a.o(n,r)&&(a.m[r]=n[r]);if(u)var c=u(a)}for(t&&t(s);da(18539)));n=a.O(n)})(); +//# sourceMappingURL=settings-vue-settings-apps-users-management.js.map?v=14a6a5748e96940140a1 \ 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 b07bdc37ff576..0ee7ebcd894fa 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=c2d679388e4e20f9f673","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","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/constants/GroupManagement.ts","webpack:///nextcloud/apps/settings/src/logger.ts","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/node_modules/vuex-router-sync/index.js","webpack:///nextcloud/node_modules/@nextcloud/files/dist/index.mjs","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 * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\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 * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\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 recentGroup = state.groups.find(group => group.id === '__nc_internal_recent')\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\trecentGroup.usercount += user.enabled ? 1 : -1\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\trecentGroup.usercount++\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\trecentGroup.usercount--\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, recent, or disabled\n\t\treturn state.groups.filter(group => group.id !== 'admin' && group.id !== '__nc_internal_recent' && 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 recent 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 query\n\t * @return {Promise}\n\t */\n\tasync getRecentUsers(context, { offset, limit, search }) {\n\t\tconst url = generateOcsUrl('cloud/users/recent?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}\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\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 * @param options.search\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 * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\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\tappApiEnabled: loadState('settings', 'appApiEnabled', false),\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\tif (app.id === 'app_api') {\n\t\t\tstate.appApiEnabled = true\n\t\t}\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\tif (app.id === 'app_api') {\n\t\t\tstate.appApiEnabled = false\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\tif (appId === 'app_api') {\n\t\t\tstate.appApiEnabled = false\n\t\t}\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\tisAppApiEnabled(state) {\n\t\treturn state.appApiEnabled\n\t},\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 * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\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 * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\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 * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { 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\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 * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\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 * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('settings')\n .detectUser()\n .build();\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=02c6e0e9\"\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 * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\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 * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport Vue from 'vue';\nimport Vuex from 'vuex';\nimport VTooltipPlugin from 'v-tooltip';\nimport { sync } from 'vuex-router-sync';\nimport { t, n } from '@nextcloud/l10n';\nimport SettingsApp from './views/SettingsApp.vue';\nimport router from './router/index.ts';\nimport { useStore } from './store/index.js';\nimport { getCSPNonce } from '@nextcloud/auth';\nimport { PiniaVuePlugin, createPinia } from 'pinia';\n// CSP config for webpack dynamic chunk loading\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = getCSPNonce();\n// bind to window\nVue.prototype.t = t;\nVue.prototype.n = n;\n// Setup Vue plugins\nVue.use(PiniaVuePlugin);\nVue.use(VTooltipPlugin, { defaultHtml: false });\nVue.use(Vuex);\n// Setup stores\nconst pinia = createPinia();\nconst store = useStore();\nsync(store, router);\nexport default new Vue({\n router,\n store,\n pinia,\n render: h => h(SettingsApp),\n el: '#content',\n});\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","import { o as logger } from \"./chunks/dav-DxfiR0wZ.mjs\";\nimport { q, F, s, N, t, P, c, l, m, n, a, g, p, b, r, d, h, f, k, j, e, i } from \"./chunks/dav-DxfiR0wZ.mjs\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { extname, basename } from \"path\";\nimport { getCanonicalLocale, getLanguage } from \"@nextcloud/l10n\";\nimport { TypedEventTarget } from \"typescript-event-target\";\nvar NewMenuEntryCategory = /* @__PURE__ */ ((NewMenuEntryCategory2) => {\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"UploadFromDevice\"] = 0] = \"UploadFromDevice\";\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"CreateNew\"] = 1] = \"CreateNew\";\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"Other\"] = 2] = \"Other\";\n return NewMenuEntryCategory2;\n})(NewMenuEntryCategory || {});\nclass NewFileMenu {\n _entries = [];\n registerEntry(entry) {\n this.validateEntry(entry);\n entry.category = entry.category ?? 1;\n this._entries.push(entry);\n }\n unregisterEntry(entry) {\n const entryIndex = typeof entry === \"string\" ? this.getEntryIndex(entry) : this.getEntryIndex(entry.id);\n if (entryIndex === -1) {\n logger.warn(\"Entry not found, nothing removed\", { entry, entries: this.getEntries() });\n return;\n }\n this._entries.splice(entryIndex, 1);\n }\n /**\n * Get the list of registered entries\n *\n * @param {Folder} context the creation context. Usually the current folder\n */\n getEntries(context) {\n if (context) {\n return this._entries.filter((entry) => typeof entry.enabled === \"function\" ? entry.enabled(context) : true);\n }\n return this._entries;\n }\n getEntryIndex(id) {\n return this._entries.findIndex((entry) => entry.id === id);\n }\n validateEntry(entry) {\n if (!entry.id || !entry.displayName || !(entry.iconSvgInline || entry.iconClass) || !entry.handler) {\n throw new Error(\"Invalid entry\");\n }\n if (typeof entry.id !== \"string\" || typeof entry.displayName !== \"string\") {\n throw new Error(\"Invalid id or displayName property\");\n }\n if (entry.iconClass && typeof entry.iconClass !== \"string\" || entry.iconSvgInline && typeof entry.iconSvgInline !== \"string\") {\n throw new Error(\"Invalid icon provided\");\n }\n if (entry.enabled !== void 0 && typeof entry.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (typeof entry.handler !== \"function\") {\n throw new Error(\"Invalid handler property\");\n }\n if (\"order\" in entry && typeof entry.order !== \"number\") {\n throw new Error(\"Invalid order property\");\n }\n if (this.getEntryIndex(entry.id) !== -1) {\n throw new Error(\"Duplicate entry\");\n }\n }\n}\nconst getNewFileMenu = function() {\n if (typeof window._nc_newfilemenu === \"undefined\") {\n window._nc_newfilemenu = new NewFileMenu();\n logger.debug(\"NewFileMenu initialized\");\n }\n return window._nc_newfilemenu;\n};\nvar DefaultType = /* @__PURE__ */ ((DefaultType2) => {\n DefaultType2[\"DEFAULT\"] = \"default\";\n DefaultType2[\"HIDDEN\"] = \"hidden\";\n return DefaultType2;\n})(DefaultType || {});\nclass FileAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get title() {\n return this._action.title;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n get execBatch() {\n return this._action.execBatch;\n }\n get order() {\n return this._action.order;\n }\n get parent() {\n return this._action.parent;\n }\n get default() {\n return this._action.default;\n }\n get destructive() {\n return this._action.destructive;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== \"string\") {\n throw new Error(\"Invalid id\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Invalid displayName function\");\n }\n if (\"title\" in action && typeof action.title !== \"function\") {\n throw new Error(\"Invalid title function\");\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (\"execBatch\" in action && typeof action.execBatch !== \"function\") {\n throw new Error(\"Invalid execBatch function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (action.destructive !== void 0 && typeof action.destructive !== \"boolean\") {\n throw new Error(\"Invalid destructive flag\");\n }\n if (\"parent\" in action && typeof action.parent !== \"string\") {\n throw new Error(\"Invalid parent\");\n }\n if (action.default && !Object.values(DefaultType).includes(action.default)) {\n throw new Error(\"Invalid default\");\n }\n if (\"inline\" in action && typeof action.inline !== \"function\") {\n throw new Error(\"Invalid inline function\");\n }\n if (\"renderInline\" in action && typeof action.renderInline !== \"function\") {\n throw new Error(\"Invalid renderInline function\");\n }\n }\n}\nconst registerFileAction = function(action) {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n if (window._nc_fileactions.find((search) => search.id === action.id)) {\n logger.error(`FileAction ${action.id} already registered`, { action });\n return;\n }\n window._nc_fileactions.push(action);\n};\nconst getFileActions = function() {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n return window._nc_fileactions;\n};\nclass FileListAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get order() {\n return this._action.order;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== \"string\") {\n throw new Error(\"Invalid id\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Invalid displayName function\");\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n }\n}\nconst registerFileListAction = (action) => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n if (window._nc_filelistactions.find((listAction) => listAction.id === action.id)) {\n logger.error(`FileListAction with id \"${action.id}\" is already registered`, { action });\n return;\n }\n window._nc_filelistactions.push(action);\n};\nconst getFileListActions = () => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n return window._nc_filelistactions;\n};\nclass Header {\n _header;\n constructor(header) {\n this.validateHeader(header);\n this._header = header;\n }\n get id() {\n return this._header.id;\n }\n get order() {\n return this._header.order;\n }\n get enabled() {\n return this._header.enabled;\n }\n get render() {\n return this._header.render;\n }\n get updated() {\n return this._header.updated;\n }\n validateHeader(header) {\n if (!header.id || !header.render || !header.updated) {\n throw new Error(\"Invalid header: id, render and updated are required\");\n }\n if (typeof header.id !== \"string\") {\n throw new Error(\"Invalid id property\");\n }\n if (header.enabled !== void 0 && typeof header.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (header.render && typeof header.render !== \"function\") {\n throw new Error(\"Invalid render property\");\n }\n if (header.updated && typeof header.updated !== \"function\") {\n throw new Error(\"Invalid updated property\");\n }\n }\n}\nconst registerFileListHeaders = function(header) {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n if (window._nc_filelistheader.find((search) => search.id === header.id)) {\n logger.error(`Header ${header.id} already registered`, { header });\n return;\n }\n window._nc_filelistheader.push(header);\n};\nconst getFileListHeaders = function() {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n return window._nc_filelistheader;\n};\nvar InvalidFilenameErrorReason = /* @__PURE__ */ ((InvalidFilenameErrorReason2) => {\n InvalidFilenameErrorReason2[\"ReservedName\"] = \"reserved name\";\n InvalidFilenameErrorReason2[\"Character\"] = \"character\";\n InvalidFilenameErrorReason2[\"Extension\"] = \"extension\";\n return InvalidFilenameErrorReason2;\n})(InvalidFilenameErrorReason || {});\nclass InvalidFilenameError extends Error {\n constructor(options) {\n super(`Invalid ${options.reason} '${options.segment}' in filename '${options.filename}'`, { cause: options });\n }\n /**\n * The filename that was validated\n */\n get filename() {\n return this.cause.filename;\n }\n /**\n * Reason why the validation failed\n */\n get reason() {\n return this.cause.reason;\n }\n /**\n * Part of the filename that caused this error\n */\n get segment() {\n return this.cause.segment;\n }\n}\nfunction validateFilename(filename) {\n const capabilities = getCapabilities().files;\n const forbiddenCharacters = capabilities.forbidden_filename_characters ?? window._oc_config?.forbidden_filenames_characters ?? [\"/\", \"\\\\\"];\n for (const character of forbiddenCharacters) {\n if (filename.includes(character)) {\n throw new InvalidFilenameError({ segment: character, reason: \"character\", filename });\n }\n }\n filename = filename.toLocaleLowerCase();\n const forbiddenFilenames = capabilities.forbidden_filenames ?? [\".htaccess\"];\n if (forbiddenFilenames.includes(filename)) {\n throw new InvalidFilenameError({\n filename,\n segment: filename,\n reason: \"reserved name\"\n /* ReservedName */\n });\n }\n const endOfBasename = filename.indexOf(\".\", 1);\n const basename2 = filename.substring(0, endOfBasename === -1 ? void 0 : endOfBasename);\n const forbiddenFilenameBasenames = capabilities.forbidden_filename_basenames ?? [];\n if (forbiddenFilenameBasenames.includes(basename2)) {\n throw new InvalidFilenameError({\n filename,\n segment: basename2,\n reason: \"reserved name\"\n /* ReservedName */\n });\n }\n const forbiddenFilenameExtensions = capabilities.forbidden_filename_extensions ?? [\".part\", \".filepart\"];\n for (const extension of forbiddenFilenameExtensions) {\n if (filename.length > extension.length && filename.endsWith(extension)) {\n throw new InvalidFilenameError({ segment: extension, reason: \"extension\", filename });\n }\n }\n}\nfunction isFilenameValid(filename) {\n try {\n validateFilename(filename);\n return true;\n } catch (error) {\n if (error instanceof InvalidFilenameError) {\n return false;\n }\n throw error;\n }\n}\nfunction getUniqueName(name, otherNames, options) {\n const opts = {\n suffix: (n2) => `(${n2})`,\n ignoreFileExtension: false,\n ...options\n };\n let newName = name;\n let i2 = 1;\n while (otherNames.includes(newName)) {\n const ext = opts.ignoreFileExtension ? \"\" : extname(name);\n const base = basename(name, ext);\n newName = `${base} ${opts.suffix(i2++)}${ext}`;\n }\n return newName;\n}\nconst humanList = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\"];\nconst humanListBinary = [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\"];\nfunction formatFileSize(size, skipSmallSizes = false, binaryPrefixes = false, base1000 = false) {\n binaryPrefixes = binaryPrefixes && !base1000;\n if (typeof size === \"string\") {\n size = Number(size);\n }\n let order = size > 0 ? Math.floor(Math.log(size) / Math.log(base1000 ? 1e3 : 1024)) : 0;\n order = Math.min((binaryPrefixes ? humanListBinary.length : humanList.length) - 1, order);\n const readableFormat = binaryPrefixes ? humanListBinary[order] : humanList[order];\n let relativeSize = (size / Math.pow(base1000 ? 1e3 : 1024, order)).toFixed(1);\n if (skipSmallSizes === true && order === 0) {\n return (relativeSize !== \"0.0\" ? \"< 1 \" : \"0 \") + (binaryPrefixes ? humanListBinary[1] : humanList[1]);\n }\n if (order < 2) {\n relativeSize = parseFloat(relativeSize).toFixed(0);\n } else {\n relativeSize = parseFloat(relativeSize).toLocaleString(getCanonicalLocale());\n }\n return relativeSize + \" \" + readableFormat;\n}\nfunction parseFileSize(value, forceBinary = false) {\n try {\n value = `${value}`.toLocaleLowerCase().replaceAll(/\\s+/g, \"\").replaceAll(\",\", \".\");\n } catch (e2) {\n return null;\n }\n const match = value.match(/^([0-9]*(\\.[0-9]*)?)([kmgtp]?)(i?)b?$/);\n if (match === null || match[1] === \".\" || match[1] === \"\") {\n return null;\n }\n const bytesArray = {\n \"\": 0,\n k: 1,\n m: 2,\n g: 3,\n t: 4,\n p: 5,\n e: 6\n };\n const decimalString = `${match[1]}`;\n const base = match[4] === \"i\" || forceBinary ? 1024 : 1e3;\n return Math.round(Number.parseFloat(decimalString) * base ** bytesArray[match[3]]);\n}\nfunction stringify(value) {\n if (value instanceof Date) {\n return value.toISOString();\n }\n return String(value);\n}\nfunction orderBy(collection, identifiers2, orders) {\n identifiers2 = identifiers2 ?? [(value) => value];\n orders = orders ?? [];\n const sorting = identifiers2.map((_, index) => (orders[index] ?? \"asc\") === \"asc\" ? 1 : -1);\n const collator = Intl.Collator(\n [getLanguage(), getCanonicalLocale()],\n {\n // handle 10 as ten and not as one-zero\n numeric: true,\n usage: \"sort\"\n }\n );\n return [...collection].sort((a2, b2) => {\n for (const [index, identifier] of identifiers2.entries()) {\n const value = collator.compare(stringify(identifier(a2)), stringify(identifier(b2)));\n if (value !== 0) {\n return value * sorting[index];\n }\n }\n return 0;\n });\n}\nvar FilesSortingMode = /* @__PURE__ */ ((FilesSortingMode2) => {\n FilesSortingMode2[\"Name\"] = \"basename\";\n FilesSortingMode2[\"Modified\"] = \"mtime\";\n FilesSortingMode2[\"Size\"] = \"size\";\n return FilesSortingMode2;\n})(FilesSortingMode || {});\nfunction sortNodes(nodes, options = {}) {\n const sortingOptions = {\n // Default to sort by name\n sortingMode: \"basename\",\n // Default to sort ascending\n sortingOrder: \"asc\",\n ...options\n };\n const basename2 = (name) => name.lastIndexOf(\".\") > 0 ? name.slice(0, name.lastIndexOf(\".\")) : name;\n const identifiers2 = [\n // 1: Sort favorites first if enabled\n ...sortingOptions.sortFavoritesFirst ? [(v) => v.attributes?.favorite !== 1] : [],\n // 2: Sort folders first if sorting by name\n ...sortingOptions.sortFoldersFirst ? [(v) => v.type !== \"folder\"] : [],\n // 3: Use sorting mode if NOT basename (to be able to use display name too)\n ...sortingOptions.sortingMode !== \"basename\" ? [(v) => v[sortingOptions.sortingMode]] : [],\n // 4: Use display name if available, fallback to name\n (v) => basename2(v.displayname || v.attributes?.displayname || v.basename),\n // 5: Finally, use basename if all previous sorting methods failed\n (v) => v.basename\n ];\n const orders = [\n // (for 1): always sort favorites before normal files\n ...sortingOptions.sortFavoritesFirst ? [\"asc\"] : [],\n // (for 2): always sort folders before files\n ...sortingOptions.sortFoldersFirst ? [\"asc\"] : [],\n // (for 3): Reverse if sorting by mtime as mtime higher means edited more recent -> lower\n ...sortingOptions.sortingMode === \"mtime\" ? [sortingOptions.sortingOrder === \"asc\" ? \"desc\" : \"asc\"] : [],\n // (also for 3 so make sure not to conflict with 2 and 3)\n ...sortingOptions.sortingMode !== \"mtime\" && sortingOptions.sortingMode !== \"basename\" ? [sortingOptions.sortingOrder] : [],\n // for 4: use configured sorting direction\n sortingOptions.sortingOrder,\n // for 5: use configured sorting direction\n sortingOptions.sortingOrder\n ];\n return orderBy(nodes, identifiers2, orders);\n}\nclass Navigation extends TypedEventTarget {\n _views = [];\n _currentView = null;\n /**\n * Register a new view on the navigation\n * @param view The view to register\n * @throws `Error` is thrown if a view with the same id is already registered\n */\n register(view) {\n if (this._views.find((search) => search.id === view.id)) {\n throw new Error(`View id ${view.id} is already registered`);\n }\n this._views.push(view);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n /**\n * Remove a registered view\n * @param id The id of the view to remove\n */\n remove(id) {\n const index = this._views.findIndex((view) => view.id === id);\n if (index !== -1) {\n this._views.splice(index, 1);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n }\n /**\n * Set the currently active view\n * @fires UpdateActiveViewEvent\n * @param view New active view\n */\n setActive(view) {\n this._currentView = view;\n const event = new CustomEvent(\"updateActive\", { detail: view });\n this.dispatchTypedEvent(\"updateActive\", event);\n }\n /**\n * The currently active files view\n */\n get active() {\n return this._currentView;\n }\n /**\n * All registered views\n */\n get views() {\n return this._views;\n }\n}\nconst getNavigation = function() {\n if (typeof window._nc_navigation === \"undefined\") {\n window._nc_navigation = new Navigation();\n logger.debug(\"Navigation service initialized\");\n }\n return window._nc_navigation;\n};\nclass Column {\n _column;\n constructor(column) {\n isValidColumn(column);\n this._column = column;\n }\n get id() {\n return this._column.id;\n }\n get title() {\n return this._column.title;\n }\n get render() {\n return this._column.render;\n }\n get sort() {\n return this._column.sort;\n }\n get summary() {\n return this._column.summary;\n }\n}\nconst isValidColumn = function(column) {\n if (!column.id || typeof column.id !== \"string\") {\n throw new Error(\"A column id is required\");\n }\n if (!column.title || typeof column.title !== \"string\") {\n throw new Error(\"A column title is required\");\n }\n if (!column.render || typeof column.render !== \"function\") {\n throw new Error(\"A render function is required\");\n }\n if (column.sort && typeof column.sort !== \"function\") {\n throw new Error(\"Column sortFunction must be a function\");\n }\n if (column.summary && typeof column.summary !== \"function\") {\n throw new Error(\"Column summary must be a function\");\n }\n return true;\n};\nfunction getDefaultExportFromCjs(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n}\nvar validator$2 = {};\nvar util$3 = {};\n(function(exports) {\n const nameStartChar = \":A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\";\n const nameChar = nameStartChar + \"\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\";\n const nameRegexp = \"[\" + nameStartChar + \"][\" + nameChar + \"]*\";\n const regexName = new RegExp(\"^\" + nameRegexp + \"$\");\n const getAllMatches = function(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n allmatches.startIndex = regex.lastIndex - match[0].length;\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n };\n const isName = function(string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === \"undefined\");\n };\n exports.isExist = function(v) {\n return typeof v !== \"undefined\";\n };\n exports.isEmptyObject = function(obj) {\n return Object.keys(obj).length === 0;\n };\n exports.merge = function(target, a2, arrayMode) {\n if (a2) {\n const keys = Object.keys(a2);\n const len = keys.length;\n for (let i2 = 0; i2 < len; i2++) {\n if (arrayMode === \"strict\") {\n target[keys[i2]] = [a2[keys[i2]]];\n } else {\n target[keys[i2]] = a2[keys[i2]];\n }\n }\n }\n };\n exports.getValue = function(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return \"\";\n }\n };\n exports.isName = isName;\n exports.getAllMatches = getAllMatches;\n exports.nameRegexp = nameRegexp;\n})(util$3);\nconst util$2 = util$3;\nconst defaultOptions$2 = {\n allowBooleanAttributes: false,\n //A tag can have attributes without any value\n unpairedTags: []\n};\nvalidator$2.validate = function(xmlData, options) {\n options = Object.assign({}, defaultOptions$2, options);\n const tags = [];\n let tagFound = false;\n let reachedRoot = false;\n if (xmlData[0] === \"\\uFEFF\") {\n xmlData = xmlData.substr(1);\n }\n for (let i2 = 0; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\" && xmlData[i2 + 1] === \"?\") {\n i2 += 2;\n i2 = readPI(xmlData, i2);\n if (i2.err) return i2;\n } else if (xmlData[i2] === \"<\") {\n let tagStartPos = i2;\n i2++;\n if (xmlData[i2] === \"!\") {\n i2 = readCommentAndCDATA(xmlData, i2);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i2] === \"/\") {\n closingTag = true;\n i2++;\n }\n let tagName = \"\";\n for (; i2 < xmlData.length && xmlData[i2] !== \">\" && xmlData[i2] !== \" \" && xmlData[i2] !== \"\t\" && xmlData[i2] !== \"\\n\" && xmlData[i2] !== \"\\r\"; i2++) {\n tagName += xmlData[i2];\n }\n tagName = tagName.trim();\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substring(0, tagName.length - 1);\n i2--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"Invalid space after '<'.\";\n } else {\n msg = \"Tag '\" + tagName + \"' is an invalid name.\";\n }\n return getErrorObject(\"InvalidTag\", msg, getLineNumberForPosition(xmlData, i2));\n }\n const result = readAttributeStr(xmlData, i2);\n if (result === false) {\n return getErrorObject(\"InvalidAttr\", \"Attributes for '\" + tagName + \"' have open quote.\", getLineNumberForPosition(xmlData, i2));\n }\n let attrStr = result.value;\n i2 = result.index;\n if (attrStr[attrStr.length - 1] === \"/\") {\n const attrStrStart = i2 - attrStr.length;\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n } else {\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i2));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else if (tags.length === 0) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else {\n const otg = tags.pop();\n if (tagName !== otg.tagName) {\n let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n return getErrorObject(\n \"InvalidTag\",\n \"Expected closing tag '\" + otg.tagName + \"' (opened in line \" + openPos.line + \", col \" + openPos.col + \") instead of closing tag '\" + tagName + \"'.\",\n getLineNumberForPosition(xmlData, tagStartPos)\n );\n }\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i2 - attrStr.length + isValid.err.line));\n }\n if (reachedRoot === true) {\n return getErrorObject(\"InvalidXml\", \"Multiple possible root nodes found.\", getLineNumberForPosition(xmlData, i2));\n } else if (options.unpairedTags.indexOf(tagName) !== -1) ;\n else {\n tags.push({ tagName, tagStartPos });\n }\n tagFound = true;\n }\n for (i2++; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n if (xmlData[i2 + 1] === \"!\") {\n i2++;\n i2 = readCommentAndCDATA(xmlData, i2);\n continue;\n } else if (xmlData[i2 + 1] === \"?\") {\n i2 = readPI(xmlData, ++i2);\n if (i2.err) return i2;\n } else {\n break;\n }\n } else if (xmlData[i2] === \"&\") {\n const afterAmp = validateAmpersand(xmlData, i2);\n if (afterAmp == -1)\n return getErrorObject(\"InvalidChar\", \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i2));\n i2 = afterAmp;\n } else {\n if (reachedRoot === true && !isWhiteSpace(xmlData[i2])) {\n return getErrorObject(\"InvalidXml\", \"Extra text at the end\", getLineNumberForPosition(xmlData, i2));\n }\n }\n }\n if (xmlData[i2] === \"<\") {\n i2--;\n }\n }\n } else {\n if (isWhiteSpace(xmlData[i2])) {\n continue;\n }\n return getErrorObject(\"InvalidChar\", \"char '\" + xmlData[i2] + \"' is not expected.\", getLineNumberForPosition(xmlData, i2));\n }\n }\n if (!tagFound) {\n return getErrorObject(\"InvalidXml\", \"Start tag expected.\", 1);\n } else if (tags.length == 1) {\n return getErrorObject(\"InvalidTag\", \"Unclosed tag '\" + tags[0].tagName + \"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n } else if (tags.length > 0) {\n return getErrorObject(\"InvalidXml\", \"Invalid '\" + JSON.stringify(tags.map((t3) => t3.tagName), null, 4).replace(/\\r?\\n/g, \"\") + \"' found.\", { line: 1, col: 1 });\n }\n return true;\n};\nfunction isWhiteSpace(char) {\n return char === \" \" || char === \"\t\" || char === \"\\n\" || char === \"\\r\";\n}\nfunction readPI(xmlData, i2) {\n const start = i2;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] == \"?\" || xmlData[i2] == \" \") {\n const tagname = xmlData.substr(start, i2 - start);\n if (i2 > 5 && tagname === \"xml\") {\n return getErrorObject(\"InvalidXml\", \"XML declaration allowed only at the start of the document.\", getLineNumberForPosition(xmlData, i2));\n } else if (xmlData[i2] == \"?\" && xmlData[i2 + 1] == \">\") {\n i2++;\n break;\n } else {\n continue;\n }\n }\n }\n return i2;\n}\nfunction readCommentAndCDATA(xmlData, i2) {\n if (xmlData.length > i2 + 5 && xmlData[i2 + 1] === \"-\" && xmlData[i2 + 2] === \"-\") {\n for (i2 += 3; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"-\" && xmlData[i2 + 1] === \"-\" && xmlData[i2 + 2] === \">\") {\n i2 += 2;\n break;\n }\n }\n } else if (xmlData.length > i2 + 8 && xmlData[i2 + 1] === \"D\" && xmlData[i2 + 2] === \"O\" && xmlData[i2 + 3] === \"C\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"Y\" && xmlData[i2 + 6] === \"P\" && xmlData[i2 + 7] === \"E\") {\n let angleBracketsCount = 1;\n for (i2 += 8; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n angleBracketsCount++;\n } else if (xmlData[i2] === \">\") {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (xmlData.length > i2 + 9 && xmlData[i2 + 1] === \"[\" && xmlData[i2 + 2] === \"C\" && xmlData[i2 + 3] === \"D\" && xmlData[i2 + 4] === \"A\" && xmlData[i2 + 5] === \"T\" && xmlData[i2 + 6] === \"A\" && xmlData[i2 + 7] === \"[\") {\n for (i2 += 8; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"]\" && xmlData[i2 + 1] === \"]\" && xmlData[i2 + 2] === \">\") {\n i2 += 2;\n break;\n }\n }\n }\n return i2;\n}\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\nfunction readAttributeStr(xmlData, i2) {\n let attrStr = \"\";\n let startChar = \"\";\n let tagClosed = false;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === doubleQuote || xmlData[i2] === singleQuote) {\n if (startChar === \"\") {\n startChar = xmlData[i2];\n } else if (startChar !== xmlData[i2]) ;\n else {\n startChar = \"\";\n }\n } else if (xmlData[i2] === \">\") {\n if (startChar === \"\") {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i2];\n }\n if (startChar !== \"\") {\n return false;\n }\n return {\n value: attrStr,\n index: i2,\n tagClosed\n };\n}\nconst validAttrStrRegxp = new RegExp(`(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*(['\"])(([\\\\s\\\\S])*?)\\\\5)?`, \"g\");\nfunction validateAttributeString(attrStr, options) {\n const matches = util$2.getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n for (let i2 = 0; i2 < matches.length; i2++) {\n if (matches[i2][1].length === 0) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + matches[i2][2] + \"' has no space in starting.\", getPositionFromMatch(matches[i2]));\n } else if (matches[i2][3] !== void 0 && matches[i2][4] === void 0) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + matches[i2][2] + \"' is without value.\", getPositionFromMatch(matches[i2]));\n } else if (matches[i2][3] === void 0 && !options.allowBooleanAttributes) {\n return getErrorObject(\"InvalidAttr\", \"boolean attribute '\" + matches[i2][2] + \"' is not allowed.\", getPositionFromMatch(matches[i2]));\n }\n const attrName = matches[i2][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + attrName + \"' is an invalid name.\", getPositionFromMatch(matches[i2]));\n }\n if (!attrNames.hasOwnProperty(attrName)) {\n attrNames[attrName] = 1;\n } else {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + attrName + \"' is repeated.\", getPositionFromMatch(matches[i2]));\n }\n }\n return true;\n}\nfunction validateNumberAmpersand(xmlData, i2) {\n let re2 = /\\d/;\n if (xmlData[i2] === \"x\") {\n i2++;\n re2 = /[\\da-fA-F]/;\n }\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \";\")\n return i2;\n if (!xmlData[i2].match(re2))\n break;\n }\n return -1;\n}\nfunction validateAmpersand(xmlData, i2) {\n i2++;\n if (xmlData[i2] === \";\")\n return -1;\n if (xmlData[i2] === \"#\") {\n i2++;\n return validateNumberAmpersand(xmlData, i2);\n }\n let count = 0;\n for (; i2 < xmlData.length; i2++, count++) {\n if (xmlData[i2].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i2] === \";\")\n break;\n return -1;\n }\n return i2;\n}\nfunction getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code,\n msg: message,\n line: lineNumber.line || lineNumber,\n col: lineNumber.col\n }\n };\n}\nfunction validateAttrName(attrName) {\n return util$2.isName(attrName);\n}\nfunction validateTagName(tagname) {\n return util$2.isName(tagname);\n}\nfunction getLineNumberForPosition(xmlData, index) {\n const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return {\n line: lines.length,\n // column number is last line's length + 1, because column numbering starts at 1:\n col: lines[lines.length - 1].length + 1\n };\n}\nfunction getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n}\nvar OptionsBuilder = {};\nconst defaultOptions$1 = {\n preserveOrder: false,\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n textNodeName: \"#text\",\n ignoreAttributes: true,\n removeNSPrefix: false,\n // remove NS from tag name or attribute name if true\n allowBooleanAttributes: false,\n //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: true,\n parseAttributeValue: false,\n trimValues: true,\n //Trim string values of tag and attributes\n cdataPropName: false,\n numberParseOptions: {\n hex: true,\n leadingZeros: true,\n eNotation: true\n },\n tagValueProcessor: function(tagName, val2) {\n return val2;\n },\n attributeValueProcessor: function(attrName, val2) {\n return val2;\n },\n stopNodes: [],\n //nested tags will not be parsed even for errors\n alwaysCreateTextNode: false,\n isArray: () => false,\n commentPropName: false,\n unpairedTags: [],\n processEntities: true,\n htmlEntities: false,\n ignoreDeclaration: false,\n ignorePiTags: false,\n transformTagName: false,\n transformAttributeName: false,\n updateTag: function(tagName, jPath, attrs) {\n return tagName;\n }\n // skipEmptyListItem: false\n};\nconst buildOptions$1 = function(options) {\n return Object.assign({}, defaultOptions$1, options);\n};\nOptionsBuilder.buildOptions = buildOptions$1;\nOptionsBuilder.defaultOptions = defaultOptions$1;\nclass XmlNode {\n constructor(tagname) {\n this.tagname = tagname;\n this.child = [];\n this[\":@\"] = {};\n }\n add(key, val2) {\n if (key === \"__proto__\") key = \"#__proto__\";\n this.child.push({ [key]: val2 });\n }\n addChild(node) {\n if (node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n if (node[\":@\"] && Object.keys(node[\":@\"]).length > 0) {\n this.child.push({ [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n } else {\n this.child.push({ [node.tagname]: node.child });\n }\n }\n}\nvar xmlNode$1 = XmlNode;\nconst util$1 = util$3;\nfunction readDocType$1(xmlData, i2) {\n const entities = {};\n if (xmlData[i2 + 3] === \"O\" && xmlData[i2 + 4] === \"C\" && xmlData[i2 + 5] === \"T\" && xmlData[i2 + 6] === \"Y\" && xmlData[i2 + 7] === \"P\" && xmlData[i2 + 8] === \"E\") {\n i2 = i2 + 9;\n let angleBracketsCount = 1;\n let hasBody = false, comment = false;\n let exp = \"\";\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\" && !comment) {\n if (hasBody && isEntity(xmlData, i2)) {\n i2 += 7;\n [entityName, val, i2] = readEntityExp(xmlData, i2 + 1);\n if (val.indexOf(\"&\") === -1)\n entities[validateEntityName(entityName)] = {\n regx: RegExp(`&${entityName};`, \"g\"),\n val\n };\n } else if (hasBody && isElement(xmlData, i2)) i2 += 8;\n else if (hasBody && isAttlist(xmlData, i2)) i2 += 8;\n else if (hasBody && isNotation(xmlData, i2)) i2 += 9;\n else if (isComment) comment = true;\n else throw new Error(\"Invalid DOCTYPE\");\n angleBracketsCount++;\n exp = \"\";\n } else if (xmlData[i2] === \">\") {\n if (comment) {\n if (xmlData[i2 - 1] === \"-\" && xmlData[i2 - 2] === \"-\") {\n comment = false;\n angleBracketsCount--;\n }\n } else {\n angleBracketsCount--;\n }\n if (angleBracketsCount === 0) {\n break;\n }\n } else if (xmlData[i2] === \"[\") {\n hasBody = true;\n } else {\n exp += xmlData[i2];\n }\n }\n if (angleBracketsCount !== 0) {\n throw new Error(`Unclosed DOCTYPE`);\n }\n } else {\n throw new Error(`Invalid Tag instead of DOCTYPE`);\n }\n return { entities, i: i2 };\n}\nfunction readEntityExp(xmlData, i2) {\n let entityName2 = \"\";\n for (; i2 < xmlData.length && (xmlData[i2] !== \"'\" && xmlData[i2] !== '\"'); i2++) {\n entityName2 += xmlData[i2];\n }\n entityName2 = entityName2.trim();\n if (entityName2.indexOf(\" \") !== -1) throw new Error(\"External entites are not supported\");\n const startChar = xmlData[i2++];\n let val2 = \"\";\n for (; i2 < xmlData.length && xmlData[i2] !== startChar; i2++) {\n val2 += xmlData[i2];\n }\n return [entityName2, val2, i2];\n}\nfunction isComment(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"-\" && xmlData[i2 + 3] === \"-\") return true;\n return false;\n}\nfunction isEntity(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"E\" && xmlData[i2 + 3] === \"N\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"I\" && xmlData[i2 + 6] === \"T\" && xmlData[i2 + 7] === \"Y\") return true;\n return false;\n}\nfunction isElement(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"E\" && xmlData[i2 + 3] === \"L\" && xmlData[i2 + 4] === \"E\" && xmlData[i2 + 5] === \"M\" && xmlData[i2 + 6] === \"E\" && xmlData[i2 + 7] === \"N\" && xmlData[i2 + 8] === \"T\") return true;\n return false;\n}\nfunction isAttlist(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"A\" && xmlData[i2 + 3] === \"T\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"L\" && xmlData[i2 + 6] === \"I\" && xmlData[i2 + 7] === \"S\" && xmlData[i2 + 8] === \"T\") return true;\n return false;\n}\nfunction isNotation(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"N\" && xmlData[i2 + 3] === \"O\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"A\" && xmlData[i2 + 6] === \"T\" && xmlData[i2 + 7] === \"I\" && xmlData[i2 + 8] === \"O\" && xmlData[i2 + 9] === \"N\") return true;\n return false;\n}\nfunction validateEntityName(name) {\n if (util$1.isName(name))\n return name;\n else\n throw new Error(`Invalid entity name ${name}`);\n}\nvar DocTypeReader = readDocType$1;\nconst hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\nconst numRegex = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\nif (!Number.parseInt && window.parseInt) {\n Number.parseInt = window.parseInt;\n}\nif (!Number.parseFloat && window.parseFloat) {\n Number.parseFloat = window.parseFloat;\n}\nconst consider = {\n hex: true,\n leadingZeros: true,\n decimalPoint: \".\",\n eNotation: true\n //skipLike: /regex/\n};\nfunction toNumber$1(str, options = {}) {\n options = Object.assign({}, consider, options);\n if (!str || typeof str !== \"string\") return str;\n let trimmedStr = str.trim();\n if (options.skipLike !== void 0 && options.skipLike.test(trimmedStr)) return str;\n else if (options.hex && hexRegex.test(trimmedStr)) {\n return Number.parseInt(trimmedStr, 16);\n } else {\n const match = numRegex.exec(trimmedStr);\n if (match) {\n const sign = match[1];\n const leadingZeros = match[2];\n let numTrimmedByZeros = trimZeros(match[3]);\n const eNotation = match[4] || match[6];\n if (!options.leadingZeros && leadingZeros.length > 0 && sign && trimmedStr[2] !== \".\") return str;\n else if (!options.leadingZeros && leadingZeros.length > 0 && !sign && trimmedStr[1] !== \".\") return str;\n else {\n const num = Number(trimmedStr);\n const numStr = \"\" + num;\n if (numStr.search(/[eE]/) !== -1) {\n if (options.eNotation) return num;\n else return str;\n } else if (eNotation) {\n if (options.eNotation) return num;\n else return str;\n } else if (trimmedStr.indexOf(\".\") !== -1) {\n if (numStr === \"0\" && numTrimmedByZeros === \"\") return num;\n else if (numStr === numTrimmedByZeros) return num;\n else if (sign && numStr === \"-\" + numTrimmedByZeros) return num;\n else return str;\n }\n if (leadingZeros) {\n if (numTrimmedByZeros === numStr) return num;\n else if (sign + numTrimmedByZeros === numStr) return num;\n else return str;\n }\n if (trimmedStr === numStr) return num;\n else if (trimmedStr === sign + numStr) return num;\n return str;\n }\n } else {\n return str;\n }\n }\n}\nfunction trimZeros(numStr) {\n if (numStr && numStr.indexOf(\".\") !== -1) {\n numStr = numStr.replace(/0+$/, \"\");\n if (numStr === \".\") numStr = \"0\";\n else if (numStr[0] === \".\") numStr = \"0\" + numStr;\n else if (numStr[numStr.length - 1] === \".\") numStr = numStr.substr(0, numStr.length - 1);\n return numStr;\n }\n return numStr;\n}\nvar strnum = toNumber$1;\nfunction getIgnoreAttributesFn$2(ignoreAttributes2) {\n if (typeof ignoreAttributes2 === \"function\") {\n return ignoreAttributes2;\n }\n if (Array.isArray(ignoreAttributes2)) {\n return (attrName) => {\n for (const pattern of ignoreAttributes2) {\n if (typeof pattern === \"string\" && attrName === pattern) {\n return true;\n }\n if (pattern instanceof RegExp && pattern.test(attrName)) {\n return true;\n }\n }\n };\n }\n return () => false;\n}\nvar ignoreAttributes = getIgnoreAttributesFn$2;\nconst util = util$3;\nconst xmlNode = xmlNode$1;\nconst readDocType = DocTypeReader;\nconst toNumber = strnum;\nconst getIgnoreAttributesFn$1 = ignoreAttributes;\nlet OrderedObjParser$1 = class OrderedObjParser {\n constructor(options) {\n this.options = options;\n this.currentNode = null;\n this.tagsNodeStack = [];\n this.docTypeEntities = {};\n this.lastEntities = {\n \"apos\": { regex: /&(apos|#39|#x27);/g, val: \"'\" },\n \"gt\": { regex: /&(gt|#62|#x3E);/g, val: \">\" },\n \"lt\": { regex: /&(lt|#60|#x3C);/g, val: \"<\" },\n \"quot\": { regex: /&(quot|#34|#x22);/g, val: '\"' }\n };\n this.ampEntity = { regex: /&(amp|#38|#x26);/g, val: \"&\" };\n this.htmlEntities = {\n \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n \"cent\": { regex: /&(cent|#162);/g, val: \"¢\" },\n \"pound\": { regex: /&(pound|#163);/g, val: \"£\" },\n \"yen\": { regex: /&(yen|#165);/g, val: \"¥\" },\n \"euro\": { regex: /&(euro|#8364);/g, val: \"€\" },\n \"copyright\": { regex: /&(copy|#169);/g, val: \"©\" },\n \"reg\": { regex: /&(reg|#174);/g, val: \"®\" },\n \"inr\": { regex: /&(inr|#8377);/g, val: \"₹\" },\n \"num_dec\": { regex: /&#([0-9]{1,7});/g, val: (_, str) => String.fromCharCode(Number.parseInt(str, 10)) },\n \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val: (_, str) => String.fromCharCode(Number.parseInt(str, 16)) }\n };\n this.addExternalEntities = addExternalEntities;\n this.parseXml = parseXml;\n this.parseTextData = parseTextData;\n this.resolveNameSpace = resolveNameSpace;\n this.buildAttributesMap = buildAttributesMap;\n this.isItStopNode = isItStopNode;\n this.replaceEntitiesValue = replaceEntitiesValue$1;\n this.readStopNodeData = readStopNodeData;\n this.saveTextToParentTag = saveTextToParentTag;\n this.addChild = addChild;\n this.ignoreAttributesFn = getIgnoreAttributesFn$1(this.options.ignoreAttributes);\n }\n};\nfunction addExternalEntities(externalEntities) {\n const entKeys = Object.keys(externalEntities);\n for (let i2 = 0; i2 < entKeys.length; i2++) {\n const ent = entKeys[i2];\n this.lastEntities[ent] = {\n regex: new RegExp(\"&\" + ent + \";\", \"g\"),\n val: externalEntities[ent]\n };\n }\n}\nfunction parseTextData(val2, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n if (val2 !== void 0) {\n if (this.options.trimValues && !dontTrim) {\n val2 = val2.trim();\n }\n if (val2.length > 0) {\n if (!escapeEntities) val2 = this.replaceEntitiesValue(val2);\n const newval = this.options.tagValueProcessor(tagName, val2, jPath, hasAttributes, isLeafNode);\n if (newval === null || newval === void 0) {\n return val2;\n } else if (typeof newval !== typeof val2 || newval !== val2) {\n return newval;\n } else if (this.options.trimValues) {\n return parseValue(val2, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n const trimmedVal = val2.trim();\n if (trimmedVal === val2) {\n return parseValue(val2, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n return val2;\n }\n }\n }\n }\n}\nfunction resolveNameSpace(tagname) {\n if (this.options.removeNSPrefix) {\n const tags = tagname.split(\":\");\n const prefix = tagname.charAt(0) === \"/\" ? \"/\" : \"\";\n if (tags[0] === \"xmlns\") {\n return \"\";\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n}\nconst attrsRegx = new RegExp(`([^\\\\s=]+)\\\\s*(=\\\\s*(['\"])([\\\\s\\\\S]*?)\\\\3)?`, \"gm\");\nfunction buildAttributesMap(attrStr, jPath, tagName) {\n if (this.options.ignoreAttributes !== true && typeof attrStr === \"string\") {\n const matches = util.getAllMatches(attrStr, attrsRegx);\n const len = matches.length;\n const attrs = {};\n for (let i2 = 0; i2 < len; i2++) {\n const attrName = this.resolveNameSpace(matches[i2][1]);\n if (this.ignoreAttributesFn(attrName, jPath)) {\n continue;\n }\n let oldVal = matches[i2][4];\n let aName = this.options.attributeNamePrefix + attrName;\n if (attrName.length) {\n if (this.options.transformAttributeName) {\n aName = this.options.transformAttributeName(aName);\n }\n if (aName === \"__proto__\") aName = \"#__proto__\";\n if (oldVal !== void 0) {\n if (this.options.trimValues) {\n oldVal = oldVal.trim();\n }\n oldVal = this.replaceEntitiesValue(oldVal);\n const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n if (newVal === null || newVal === void 0) {\n attrs[aName] = oldVal;\n } else if (typeof newVal !== typeof oldVal || newVal !== oldVal) {\n attrs[aName] = newVal;\n } else {\n attrs[aName] = parseValue(\n oldVal,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n }\n } else if (this.options.allowBooleanAttributes) {\n attrs[aName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (this.options.attributesGroupName) {\n const attrCollection = {};\n attrCollection[this.options.attributesGroupName] = attrs;\n return attrCollection;\n }\n return attrs;\n }\n}\nconst parseXml = function(xmlData) {\n xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\");\n const xmlObj = new xmlNode(\"!xml\");\n let currentNode = xmlObj;\n let textData = \"\";\n let jPath = \"\";\n for (let i2 = 0; i2 < xmlData.length; i2++) {\n const ch = xmlData[i2];\n if (ch === \"<\") {\n if (xmlData[i2 + 1] === \"/\") {\n const closeIndex = findClosingIndex(xmlData, \">\", i2, \"Closing Tag is not closed.\");\n let tagName = xmlData.substring(i2 + 2, closeIndex).trim();\n if (this.options.removeNSPrefix) {\n const colonIndex = tagName.indexOf(\":\");\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n }\n }\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n if (currentNode) {\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n }\n const lastTagName = jPath.substring(jPath.lastIndexOf(\".\") + 1);\n if (tagName && this.options.unpairedTags.indexOf(tagName) !== -1) {\n throw new Error(`Unpaired tag can not be used as closing tag: `);\n }\n let propIndex = 0;\n if (lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1) {\n propIndex = jPath.lastIndexOf(\".\", jPath.lastIndexOf(\".\") - 1);\n this.tagsNodeStack.pop();\n } else {\n propIndex = jPath.lastIndexOf(\".\");\n }\n jPath = jPath.substring(0, propIndex);\n currentNode = this.tagsNodeStack.pop();\n textData = \"\";\n i2 = closeIndex;\n } else if (xmlData[i2 + 1] === \"?\") {\n let tagData = readTagExp(xmlData, i2, false, \"?>\");\n if (!tagData) throw new Error(\"Pi Tag is not closed.\");\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n if (this.options.ignoreDeclaration && tagData.tagName === \"?xml\" || this.options.ignorePiTags) ;\n else {\n const childNode = new xmlNode(tagData.tagName);\n childNode.add(this.options.textNodeName, \"\");\n if (tagData.tagName !== tagData.tagExp && tagData.attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath, tagData.tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n }\n i2 = tagData.closeIndex + 1;\n } else if (xmlData.substr(i2 + 1, 3) === \"!--\") {\n const endIndex = findClosingIndex(xmlData, \"-->\", i2 + 4, \"Comment is not closed.\");\n if (this.options.commentPropName) {\n const comment = xmlData.substring(i2 + 4, endIndex - 2);\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n currentNode.add(this.options.commentPropName, [{ [this.options.textNodeName]: comment }]);\n }\n i2 = endIndex;\n } else if (xmlData.substr(i2 + 1, 2) === \"!D\") {\n const result = readDocType(xmlData, i2);\n this.docTypeEntities = result.entities;\n i2 = result.i;\n } else if (xmlData.substr(i2 + 1, 2) === \"![\") {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i2, \"CDATA is not closed.\") - 2;\n const tagExp = xmlData.substring(i2 + 9, closeIndex);\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n let val2 = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true, true);\n if (val2 == void 0) val2 = \"\";\n if (this.options.cdataPropName) {\n currentNode.add(this.options.cdataPropName, [{ [this.options.textNodeName]: tagExp }]);\n } else {\n currentNode.add(this.options.textNodeName, val2);\n }\n i2 = closeIndex + 2;\n } else {\n let result = readTagExp(xmlData, i2, this.options.removeNSPrefix);\n let tagName = result.tagName;\n const rawTagName = result.rawTagName;\n let tagExp = result.tagExp;\n let attrExpPresent = result.attrExpPresent;\n let closeIndex = result.closeIndex;\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n if (currentNode && textData) {\n if (currentNode.tagname !== \"!xml\") {\n textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n }\n }\n const lastTag = currentNode;\n if (lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1) {\n currentNode = this.tagsNodeStack.pop();\n jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n }\n if (tagName !== xmlObj.tagname) {\n jPath += jPath ? \".\" + tagName : tagName;\n }\n if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) {\n let tagContent = \"\";\n if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n } else {\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n i2 = result.closeIndex;\n } else if (this.options.unpairedTags.indexOf(tagName) !== -1) {\n i2 = result.closeIndex;\n } else {\n const result2 = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n if (!result2) throw new Error(`Unexpected end of ${rawTagName}`);\n i2 = result2.i;\n tagContent = result2.tagContent;\n }\n const childNode = new xmlNode(tagName);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n if (tagContent) {\n tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n }\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n childNode.add(this.options.textNodeName, tagContent);\n this.addChild(currentNode, childNode, jPath);\n } else {\n if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n } else {\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n const childNode = new xmlNode(tagName);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n } else {\n const childNode = new xmlNode(tagName);\n this.tagsNodeStack.push(currentNode);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n currentNode = childNode;\n }\n textData = \"\";\n i2 = closeIndex;\n }\n }\n } else {\n textData += xmlData[i2];\n }\n }\n return xmlObj.child;\n};\nfunction addChild(currentNode, childNode, jPath) {\n const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"]);\n if (result === false) ;\n else if (typeof result === \"string\") {\n childNode.tagname = result;\n currentNode.addChild(childNode);\n } else {\n currentNode.addChild(childNode);\n }\n}\nconst replaceEntitiesValue$1 = function(val2) {\n if (this.options.processEntities) {\n for (let entityName2 in this.docTypeEntities) {\n const entity = this.docTypeEntities[entityName2];\n val2 = val2.replace(entity.regx, entity.val);\n }\n for (let entityName2 in this.lastEntities) {\n const entity = this.lastEntities[entityName2];\n val2 = val2.replace(entity.regex, entity.val);\n }\n if (this.options.htmlEntities) {\n for (let entityName2 in this.htmlEntities) {\n const entity = this.htmlEntities[entityName2];\n val2 = val2.replace(entity.regex, entity.val);\n }\n }\n val2 = val2.replace(this.ampEntity.regex, this.ampEntity.val);\n }\n return val2;\n};\nfunction saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n if (textData) {\n if (isLeafNode === void 0) isLeafNode = Object.keys(currentNode.child).length === 0;\n textData = this.parseTextData(\n textData,\n currentNode.tagname,\n jPath,\n false,\n currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n isLeafNode\n );\n if (textData !== void 0 && textData !== \"\")\n currentNode.add(this.options.textNodeName, textData);\n textData = \"\";\n }\n return textData;\n}\nfunction isItStopNode(stopNodes, jPath, currentTagName) {\n const allNodesExp = \"*.\" + currentTagName;\n for (const stopNodePath in stopNodes) {\n const stopNodeExp = stopNodes[stopNodePath];\n if (allNodesExp === stopNodeExp || jPath === stopNodeExp) return true;\n }\n return false;\n}\nfunction tagExpWithClosingIndex(xmlData, i2, closingChar = \">\") {\n let attrBoundary;\n let tagExp = \"\";\n for (let index = i2; index < xmlData.length; index++) {\n let ch = xmlData[index];\n if (attrBoundary) {\n if (ch === attrBoundary) attrBoundary = \"\";\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === closingChar[0]) {\n if (closingChar[1]) {\n if (xmlData[index + 1] === closingChar[1]) {\n return {\n data: tagExp,\n index\n };\n }\n } else {\n return {\n data: tagExp,\n index\n };\n }\n } else if (ch === \"\t\") {\n ch = \" \";\n }\n tagExp += ch;\n }\n}\nfunction findClosingIndex(xmlData, str, i2, errMsg) {\n const closingIndex = xmlData.indexOf(str, i2);\n if (closingIndex === -1) {\n throw new Error(errMsg);\n } else {\n return closingIndex + str.length - 1;\n }\n}\nfunction readTagExp(xmlData, i2, removeNSPrefix, closingChar = \">\") {\n const result = tagExpWithClosingIndex(xmlData, i2 + 1, closingChar);\n if (!result) return;\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.search(/\\s/);\n let tagName = tagExp;\n let attrExpPresent = true;\n if (separatorIndex !== -1) {\n tagName = tagExp.substring(0, separatorIndex);\n tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n }\n const rawTagName = tagName;\n if (removeNSPrefix) {\n const colonIndex = tagName.indexOf(\":\");\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n }\n }\n return {\n tagName,\n tagExp,\n closeIndex,\n attrExpPresent,\n rawTagName\n };\n}\nfunction readStopNodeData(xmlData, tagName, i2) {\n const startIndex = i2;\n let openTagCount = 1;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n if (xmlData[i2 + 1] === \"/\") {\n const closeIndex = findClosingIndex(xmlData, \">\", i2, `${tagName} is not closed`);\n let closeTagName = xmlData.substring(i2 + 2, closeIndex).trim();\n if (closeTagName === tagName) {\n openTagCount--;\n if (openTagCount === 0) {\n return {\n tagContent: xmlData.substring(startIndex, i2),\n i: closeIndex\n };\n }\n }\n i2 = closeIndex;\n } else if (xmlData[i2 + 1] === \"?\") {\n const closeIndex = findClosingIndex(xmlData, \"?>\", i2 + 1, \"StopNode is not closed.\");\n i2 = closeIndex;\n } else if (xmlData.substr(i2 + 1, 3) === \"!--\") {\n const closeIndex = findClosingIndex(xmlData, \"-->\", i2 + 3, \"StopNode is not closed.\");\n i2 = closeIndex;\n } else if (xmlData.substr(i2 + 1, 2) === \"![\") {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i2, \"StopNode is not closed.\") - 2;\n i2 = closeIndex;\n } else {\n const tagData = readTagExp(xmlData, i2, \">\");\n if (tagData) {\n const openTagName = tagData && tagData.tagName;\n if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length - 1] !== \"/\") {\n openTagCount++;\n }\n i2 = tagData.closeIndex;\n }\n }\n }\n }\n}\nfunction parseValue(val2, shouldParse, options) {\n if (shouldParse && typeof val2 === \"string\") {\n const newval = val2.trim();\n if (newval === \"true\") return true;\n else if (newval === \"false\") return false;\n else return toNumber(val2, options);\n } else {\n if (util.isExist(val2)) {\n return val2;\n } else {\n return \"\";\n }\n }\n}\nvar OrderedObjParser_1 = OrderedObjParser$1;\nvar node2json = {};\nfunction prettify$1(node, options) {\n return compress(node, options);\n}\nfunction compress(arr, options, jPath) {\n let text;\n const compressedObj = {};\n for (let i2 = 0; i2 < arr.length; i2++) {\n const tagObj = arr[i2];\n const property = propName$1(tagObj);\n let newJpath = \"\";\n if (jPath === void 0) newJpath = property;\n else newJpath = jPath + \".\" + property;\n if (property === options.textNodeName) {\n if (text === void 0) text = tagObj[property];\n else text += \"\" + tagObj[property];\n } else if (property === void 0) {\n continue;\n } else if (tagObj[property]) {\n let val2 = compress(tagObj[property], options, newJpath);\n const isLeaf = isLeafTag(val2, options);\n if (tagObj[\":@\"]) {\n assignAttributes(val2, tagObj[\":@\"], newJpath, options);\n } else if (Object.keys(val2).length === 1 && val2[options.textNodeName] !== void 0 && !options.alwaysCreateTextNode) {\n val2 = val2[options.textNodeName];\n } else if (Object.keys(val2).length === 0) {\n if (options.alwaysCreateTextNode) val2[options.textNodeName] = \"\";\n else val2 = \"\";\n }\n if (compressedObj[property] !== void 0 && compressedObj.hasOwnProperty(property)) {\n if (!Array.isArray(compressedObj[property])) {\n compressedObj[property] = [compressedObj[property]];\n }\n compressedObj[property].push(val2);\n } else {\n if (options.isArray(property, newJpath, isLeaf)) {\n compressedObj[property] = [val2];\n } else {\n compressedObj[property] = val2;\n }\n }\n }\n }\n if (typeof text === \"string\") {\n if (text.length > 0) compressedObj[options.textNodeName] = text;\n } else if (text !== void 0) compressedObj[options.textNodeName] = text;\n return compressedObj;\n}\nfunction propName$1(obj) {\n const keys = Object.keys(obj);\n for (let i2 = 0; i2 < keys.length; i2++) {\n const key = keys[i2];\n if (key !== \":@\") return key;\n }\n}\nfunction assignAttributes(obj, attrMap, jpath, options) {\n if (attrMap) {\n const keys = Object.keys(attrMap);\n const len = keys.length;\n for (let i2 = 0; i2 < len; i2++) {\n const atrrName = keys[i2];\n if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n obj[atrrName] = [attrMap[atrrName]];\n } else {\n obj[atrrName] = attrMap[atrrName];\n }\n }\n }\n}\nfunction isLeafTag(obj, options) {\n const { textNodeName } = options;\n const propCount = Object.keys(obj).length;\n if (propCount === 0) {\n return true;\n }\n if (propCount === 1 && (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)) {\n return true;\n }\n return false;\n}\nnode2json.prettify = prettify$1;\nconst { buildOptions } = OptionsBuilder;\nconst OrderedObjParser2 = OrderedObjParser_1;\nconst { prettify } = node2json;\nconst validator$1 = validator$2;\nlet XMLParser$1 = class XMLParser {\n constructor(options) {\n this.externalEntities = {};\n this.options = buildOptions(options);\n }\n /**\n * Parse XML dats to JS object \n * @param {string|Buffer} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(xmlData, validationOption) {\n if (typeof xmlData === \"string\") ;\n else if (xmlData.toString) {\n xmlData = xmlData.toString();\n } else {\n throw new Error(\"XML data is accepted in String or Bytes[] form.\");\n }\n if (validationOption) {\n if (validationOption === true) validationOption = {};\n const result = validator$1.validate(xmlData, validationOption);\n if (result !== true) {\n throw Error(`${result.err.msg}:${result.err.line}:${result.err.col}`);\n }\n }\n const orderedObjParser = new OrderedObjParser2(this.options);\n orderedObjParser.addExternalEntities(this.externalEntities);\n const orderedResult = orderedObjParser.parseXml(xmlData);\n if (this.options.preserveOrder || orderedResult === void 0) return orderedResult;\n else return prettify(orderedResult, this.options);\n }\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(key, value) {\n if (value.indexOf(\"&\") !== -1) {\n throw new Error(\"Entity value can't have '&'\");\n } else if (key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1) {\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for ' '\");\n } else if (value === \"&\") {\n throw new Error(\"An entity with value '&' is not permitted\");\n } else {\n this.externalEntities[key] = value;\n }\n }\n};\nvar XMLParser_1 = XMLParser$1;\nconst EOL = \"\\n\";\nfunction toXml(jArray, options) {\n let indentation = \"\";\n if (options.format && options.indentBy.length > 0) {\n indentation = EOL;\n }\n return arrToStr(jArray, options, \"\", indentation);\n}\nfunction arrToStr(arr, options, jPath, indentation) {\n let xmlStr = \"\";\n let isPreviousElementTag = false;\n for (let i2 = 0; i2 < arr.length; i2++) {\n const tagObj = arr[i2];\n const tagName = propName(tagObj);\n if (tagName === void 0) continue;\n let newJPath = \"\";\n if (jPath.length === 0) newJPath = tagName;\n else newJPath = `${jPath}.${tagName}`;\n if (tagName === options.textNodeName) {\n let tagText = tagObj[tagName];\n if (!isStopNode(newJPath, options)) {\n tagText = options.tagValueProcessor(tagName, tagText);\n tagText = replaceEntitiesValue(tagText, options);\n }\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += tagText;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.cdataPropName) {\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += ``;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.commentPropName) {\n xmlStr += indentation + ``;\n isPreviousElementTag = true;\n continue;\n } else if (tagName[0] === \"?\") {\n const attStr2 = attr_to_str(tagObj[\":@\"], options);\n const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\";\n xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr2}?>`;\n isPreviousElementTag = true;\n continue;\n }\n let newIdentation = indentation;\n if (newIdentation !== \"\") {\n newIdentation += options.indentBy;\n }\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tagStart = indentation + `<${tagName}${attStr}`;\n const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n if (options.unpairedTags.indexOf(tagName) !== -1) {\n if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n else xmlStr += tagStart + \"/>\";\n } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n xmlStr += tagStart + \"/>\";\n } else if (tagValue && tagValue.endsWith(\">\")) {\n xmlStr += tagStart + `>${tagValue}${indentation}`;\n } else {\n xmlStr += tagStart + \">\";\n if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"`;\n }\n isPreviousElementTag = true;\n }\n return xmlStr;\n}\nfunction propName(obj) {\n const keys = Object.keys(obj);\n for (let i2 = 0; i2 < keys.length; i2++) {\n const key = keys[i2];\n if (!obj.hasOwnProperty(key)) continue;\n if (key !== \":@\") return key;\n }\n}\nfunction attr_to_str(attrMap, options) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n if (!attrMap.hasOwnProperty(attr)) continue;\n let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n attrVal = replaceEntitiesValue(attrVal, options);\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n}\nfunction isStopNode(jPath, options) {\n jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n for (let index in options.stopNodes) {\n if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n }\n return false;\n}\nfunction replaceEntitiesValue(textValue, options) {\n if (textValue && textValue.length > 0 && options.processEntities) {\n for (let i2 = 0; i2 < options.entities.length; i2++) {\n const entity = options.entities[i2];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n}\nvar orderedJs2Xml = toXml;\nconst buildFromOrderedJs = orderedJs2Xml;\nconst getIgnoreAttributesFn = ignoreAttributes;\nconst defaultOptions = {\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n textNodeName: \"#text\",\n ignoreAttributes: true,\n cdataPropName: false,\n format: false,\n indentBy: \" \",\n suppressEmptyNode: false,\n suppressUnpairedNode: true,\n suppressBooleanAttributes: true,\n tagValueProcessor: function(key, a2) {\n return a2;\n },\n attributeValueProcessor: function(attrName, a2) {\n return a2;\n },\n preserveOrder: false,\n commentPropName: false,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&\" },\n //it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \">\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n { regex: new RegExp(\"'\", \"g\"), val: \"'\" },\n { regex: new RegExp('\"', \"g\"), val: \""\" }\n ],\n processEntities: true,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: false\n};\nfunction Builder(options) {\n this.options = Object.assign({}, defaultOptions, options);\n if (this.options.ignoreAttributes === true || this.options.attributesGroupName) {\n this.isAttribute = function() {\n return false;\n };\n } else {\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes);\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n this.processTextOrObjNode = processTextOrObjNode;\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = \">\\n\";\n this.newLine = \"\\n\";\n } else {\n this.indentate = function() {\n return \"\";\n };\n this.tagEndChar = \">\";\n this.newLine = \"\";\n }\n}\nBuilder.prototype.build = function(jObj) {\n if (this.options.preserveOrder) {\n return buildFromOrderedJs(jObj, this.options);\n } else {\n if (Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1) {\n jObj = {\n [this.options.arrayNodeName]: jObj\n };\n }\n return this.j2x(jObj, 0, []).val;\n }\n};\nBuilder.prototype.j2x = function(jObj, level, ajPath) {\n let attrStr = \"\";\n let val2 = \"\";\n const jPath = ajPath.join(\".\");\n for (let key in jObj) {\n if (!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n if (typeof jObj[key] === \"undefined\") {\n if (this.isAttribute(key)) {\n val2 += \"\";\n }\n } else if (jObj[key] === null) {\n if (this.isAttribute(key)) {\n val2 += \"\";\n } else if (key[0] === \"?\") {\n val2 += this.indentate(level) + \"<\" + key + \"?\" + this.tagEndChar;\n } else {\n val2 += this.indentate(level) + \"<\" + key + \"/\" + this.tagEndChar;\n }\n } else if (jObj[key] instanceof Date) {\n val2 += this.buildTextValNode(jObj[key], key, \"\", level);\n } else if (typeof jObj[key] !== \"object\") {\n const attr = this.isAttribute(key);\n if (attr && !this.ignoreAttributesFn(attr, jPath)) {\n attrStr += this.buildAttrPairStr(attr, \"\" + jObj[key]);\n } else if (!attr) {\n if (key === this.options.textNodeName) {\n let newval = this.options.tagValueProcessor(key, \"\" + jObj[key]);\n val2 += this.replaceEntitiesValue(newval);\n } else {\n val2 += this.buildTextValNode(jObj[key], key, \"\", level);\n }\n }\n } else if (Array.isArray(jObj[key])) {\n const arrLen = jObj[key].length;\n let listTagVal = \"\";\n let listTagAttr = \"\";\n for (let j2 = 0; j2 < arrLen; j2++) {\n const item = jObj[key][j2];\n if (typeof item === \"undefined\") ;\n else if (item === null) {\n if (key[0] === \"?\") val2 += this.indentate(level) + \"<\" + key + \"?\" + this.tagEndChar;\n else val2 += this.indentate(level) + \"<\" + key + \"/\" + this.tagEndChar;\n } else if (typeof item === \"object\") {\n if (this.options.oneListGroup) {\n const result = this.j2x(item, level + 1, ajPath.concat(key));\n listTagVal += result.val;\n if (this.options.attributesGroupName && item.hasOwnProperty(this.options.attributesGroupName)) {\n listTagAttr += result.attrStr;\n }\n } else {\n listTagVal += this.processTextOrObjNode(item, key, level, ajPath);\n }\n } else {\n if (this.options.oneListGroup) {\n let textValue = this.options.tagValueProcessor(key, item);\n textValue = this.replaceEntitiesValue(textValue);\n listTagVal += textValue;\n } else {\n listTagVal += this.buildTextValNode(item, key, \"\", level);\n }\n }\n }\n if (this.options.oneListGroup) {\n listTagVal = this.buildObjectNode(listTagVal, key, listTagAttr, level);\n }\n val2 += listTagVal;\n } else {\n if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j2 = 0; j2 < L; j2++) {\n attrStr += this.buildAttrPairStr(Ks[j2], \"\" + jObj[key][Ks[j2]]);\n }\n } else {\n val2 += this.processTextOrObjNode(jObj[key], key, level, ajPath);\n }\n }\n }\n return { attrStr, val: val2 };\n};\nBuilder.prototype.buildAttrPairStr = function(attrName, val2) {\n val2 = this.options.attributeValueProcessor(attrName, \"\" + val2);\n val2 = this.replaceEntitiesValue(val2);\n if (this.options.suppressBooleanAttributes && val2 === \"true\") {\n return \" \" + attrName;\n } else return \" \" + attrName + '=\"' + val2 + '\"';\n};\nfunction processTextOrObjNode(object, key, level, ajPath) {\n const result = this.j2x(object, level + 1, ajPath.concat(key));\n if (object[this.options.textNodeName] !== void 0 && Object.keys(object).length === 1) {\n return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n } else {\n return this.buildObjectNode(result.val, key, result.attrStr, level);\n }\n}\nBuilder.prototype.buildObjectNode = function(val2, key, attrStr, level) {\n if (val2 === \"\") {\n if (key[0] === \"?\") return this.indentate(level) + \"<\" + key + attrStr + \"?\" + this.tagEndChar;\n else {\n return this.indentate(level) + \"<\" + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }\n } else {\n let tagEndExp = \"\" + val2 + tagEndExp;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n return this.indentate(level) + `` + this.newLine;\n } else {\n return this.indentate(level) + \"<\" + key + attrStr + piClosingChar + this.tagEndChar + val2 + this.indentate(level) + tagEndExp;\n }\n }\n};\nBuilder.prototype.closeTag = function(key) {\n let closeTag = \"\";\n if (this.options.unpairedTags.indexOf(key) !== -1) {\n if (!this.options.suppressUnpairedNode) closeTag = \"/\";\n } else if (this.options.suppressEmptyNode) {\n closeTag = \"/\";\n } else {\n closeTag = `>` + this.newLine;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n return this.indentate(level) + `` + this.newLine;\n } else if (key[0] === \"?\") {\n return this.indentate(level) + \"<\" + key + attrStr + \"?\" + this.tagEndChar;\n } else {\n let textValue = this.options.tagValueProcessor(key, val2);\n textValue = this.replaceEntitiesValue(textValue);\n if (textValue === \"\") {\n return this.indentate(level) + \"<\" + key + attrStr + this.closeTag(key) + this.tagEndChar;\n } else {\n return this.indentate(level) + \"<\" + key + attrStr + \">\" + textValue + \" 0 && this.options.processEntities) {\n for (let i2 = 0; i2 < this.options.entities.length; i2++) {\n const entity = this.options.entities[i2];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n};\nfunction indentate(level) {\n return this.options.indentBy.repeat(level);\n}\nfunction isAttribute(name) {\n if (name.startsWith(this.options.attributeNamePrefix) && name !== this.options.textNodeName) {\n return name.substr(this.attrPrefixLen);\n } else {\n return false;\n }\n}\nvar json2xml = Builder;\nconst validator = validator$2;\nconst XMLParser2 = XMLParser_1;\nconst XMLBuilder = json2xml;\nvar fxp = {\n XMLParser: XMLParser2,\n XMLValidator: validator,\n XMLBuilder\n};\nfunction isSvg(string) {\n if (typeof string !== \"string\") {\n throw new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n }\n string = string.trim();\n if (string.length === 0) {\n return false;\n }\n if (fxp.XMLValidator.validate(string) !== true) {\n return false;\n }\n let jsonObject;\n const parser = new fxp.XMLParser();\n try {\n jsonObject = parser.parse(string);\n } catch {\n return false;\n }\n if (!jsonObject) {\n return false;\n }\n if (!Object.keys(jsonObject).some((x) => x.toLowerCase() === \"svg\")) {\n return false;\n }\n return true;\n}\nclass View {\n _view;\n constructor(view) {\n isValidView(view);\n this._view = view;\n }\n get id() {\n return this._view.id;\n }\n get name() {\n return this._view.name;\n }\n get caption() {\n return this._view.caption;\n }\n get emptyTitle() {\n return this._view.emptyTitle;\n }\n get emptyCaption() {\n return this._view.emptyCaption;\n }\n get getContents() {\n return this._view.getContents;\n }\n get icon() {\n return this._view.icon;\n }\n set icon(icon) {\n this._view.icon = icon;\n }\n get order() {\n return this._view.order;\n }\n set order(order) {\n this._view.order = order;\n }\n get params() {\n return this._view.params;\n }\n set params(params) {\n this._view.params = params;\n }\n get columns() {\n return this._view.columns;\n }\n get emptyView() {\n return this._view.emptyView;\n }\n get parent() {\n return this._view.parent;\n }\n get sticky() {\n return this._view.sticky;\n }\n get expanded() {\n return this._view.expanded;\n }\n set expanded(expanded) {\n this._view.expanded = expanded;\n }\n get defaultSortKey() {\n return this._view.defaultSortKey;\n }\n get loadChildViews() {\n return this._view.loadChildViews;\n }\n}\nconst isValidView = function(view) {\n if (!view.id || typeof view.id !== \"string\") {\n throw new Error(\"View id is required and must be a string\");\n }\n if (!view.name || typeof view.name !== \"string\") {\n throw new Error(\"View name is required and must be a string\");\n }\n if (\"caption\" in view && typeof view.caption !== \"string\") {\n throw new Error(\"View caption must be a string\");\n }\n if (!view.getContents || typeof view.getContents !== \"function\") {\n throw new Error(\"View getContents is required and must be a function\");\n }\n if (!view.icon || typeof view.icon !== \"string\" || !isSvg(view.icon)) {\n throw new Error(\"View icon is required and must be a valid svg string\");\n }\n if (\"order\" in view && typeof view.order !== \"number\") {\n throw new Error(\"View order must be a number\");\n }\n if (view.columns) {\n view.columns.forEach((column) => {\n if (!(column instanceof Column)) {\n throw new Error(\"View columns must be an array of Column. Invalid column found\");\n }\n });\n }\n if (view.emptyView && typeof view.emptyView !== \"function\") {\n throw new Error(\"View emptyView must be a function\");\n }\n if (view.parent && typeof view.parent !== \"string\") {\n throw new Error(\"View parent must be a string\");\n }\n if (\"sticky\" in view && typeof view.sticky !== \"boolean\") {\n throw new Error(\"View sticky must be a boolean\");\n }\n if (\"expanded\" in view && typeof view.expanded !== \"boolean\") {\n throw new Error(\"View expanded must be a boolean\");\n }\n if (view.defaultSortKey && typeof view.defaultSortKey !== \"string\") {\n throw new Error(\"View defaultSortKey must be a string\");\n }\n if (view.loadChildViews && typeof view.loadChildViews !== \"function\") {\n throw new Error(\"View loadChildViews must be a function\");\n }\n return true;\n};\nconst debug$1 = typeof process === \"object\" && process.env && process.env.NODE_DEBUG && /\\bsemver\\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error(\"SEMVER\", ...args) : () => {\n};\nvar debug_1 = debug$1;\nconst SEMVER_SPEC_VERSION = \"2.0.0\";\nconst MAX_LENGTH$1 = 256;\nconst MAX_SAFE_INTEGER$1 = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */\n9007199254740991;\nconst MAX_SAFE_COMPONENT_LENGTH = 16;\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH$1 - 6;\nconst RELEASE_TYPES = [\n \"major\",\n \"premajor\",\n \"minor\",\n \"preminor\",\n \"patch\",\n \"prepatch\",\n \"prerelease\"\n];\nvar constants = {\n MAX_LENGTH: MAX_LENGTH$1,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER: MAX_SAFE_INTEGER$1,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 1,\n FLAG_LOOSE: 2\n};\nvar re$1 = { exports: {} };\n(function(module, exports) {\n const {\n MAX_SAFE_COMPONENT_LENGTH: MAX_SAFE_COMPONENT_LENGTH2,\n MAX_SAFE_BUILD_LENGTH: MAX_SAFE_BUILD_LENGTH2,\n MAX_LENGTH: MAX_LENGTH2\n } = constants;\n const debug2 = debug_1;\n exports = module.exports = {};\n const re2 = exports.re = [];\n const safeRe = exports.safeRe = [];\n const src = exports.src = [];\n const t3 = exports.t = {};\n let R = 0;\n const LETTERDASHNUMBER = \"[a-zA-Z0-9-]\";\n const safeRegexReplacements = [\n [\"\\\\s\", 1],\n [\"\\\\d\", MAX_LENGTH2],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH2]\n ];\n const makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`);\n }\n return value;\n };\n const createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value);\n const index = R++;\n debug2(name, index, value);\n t3[name] = index;\n src[index] = value;\n re2[index] = new RegExp(value, isGlobal ? \"g\" : void 0);\n safeRe[index] = new RegExp(safe, isGlobal ? \"g\" : void 0);\n };\n createToken(\"NUMERICIDENTIFIER\", \"0|[1-9]\\\\d*\");\n createToken(\"NUMERICIDENTIFIERLOOSE\", \"\\\\d+\");\n createToken(\"NONNUMERICIDENTIFIER\", `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);\n createToken(\"MAINVERSION\", `(${src[t3.NUMERICIDENTIFIER]})\\\\.(${src[t3.NUMERICIDENTIFIER]})\\\\.(${src[t3.NUMERICIDENTIFIER]})`);\n createToken(\"MAINVERSIONLOOSE\", `(${src[t3.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t3.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t3.NUMERICIDENTIFIERLOOSE]})`);\n createToken(\"PRERELEASEIDENTIFIER\", `(?:${src[t3.NUMERICIDENTIFIER]}|${src[t3.NONNUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASEIDENTIFIERLOOSE\", `(?:${src[t3.NUMERICIDENTIFIERLOOSE]}|${src[t3.NONNUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASE\", `(?:-(${src[t3.PRERELEASEIDENTIFIER]}(?:\\\\.${src[t3.PRERELEASEIDENTIFIER]})*))`);\n createToken(\"PRERELEASELOOSE\", `(?:-?(${src[t3.PRERELEASEIDENTIFIERLOOSE]}(?:\\\\.${src[t3.PRERELEASEIDENTIFIERLOOSE]})*))`);\n createToken(\"BUILDIDENTIFIER\", `${LETTERDASHNUMBER}+`);\n createToken(\"BUILD\", `(?:\\\\+(${src[t3.BUILDIDENTIFIER]}(?:\\\\.${src[t3.BUILDIDENTIFIER]})*))`);\n createToken(\"FULLPLAIN\", `v?${src[t3.MAINVERSION]}${src[t3.PRERELEASE]}?${src[t3.BUILD]}?`);\n createToken(\"FULL\", `^${src[t3.FULLPLAIN]}$`);\n createToken(\"LOOSEPLAIN\", `[v=\\\\s]*${src[t3.MAINVERSIONLOOSE]}${src[t3.PRERELEASELOOSE]}?${src[t3.BUILD]}?`);\n createToken(\"LOOSE\", `^${src[t3.LOOSEPLAIN]}$`);\n createToken(\"GTLT\", \"((?:<|>)?=?)\");\n createToken(\"XRANGEIDENTIFIERLOOSE\", `${src[t3.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`);\n createToken(\"XRANGEIDENTIFIER\", `${src[t3.NUMERICIDENTIFIER]}|x|X|\\\\*`);\n createToken(\"XRANGEPLAIN\", `[v=\\\\s]*(${src[t3.XRANGEIDENTIFIER]})(?:\\\\.(${src[t3.XRANGEIDENTIFIER]})(?:\\\\.(${src[t3.XRANGEIDENTIFIER]})(?:${src[t3.PRERELEASE]})?${src[t3.BUILD]}?)?)?`);\n createToken(\"XRANGEPLAINLOOSE\", `[v=\\\\s]*(${src[t3.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t3.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t3.XRANGEIDENTIFIERLOOSE]})(?:${src[t3.PRERELEASELOOSE]})?${src[t3.BUILD]}?)?)?`);\n createToken(\"XRANGE\", `^${src[t3.GTLT]}\\\\s*${src[t3.XRANGEPLAIN]}$`);\n createToken(\"XRANGELOOSE\", `^${src[t3.GTLT]}\\\\s*${src[t3.XRANGEPLAINLOOSE]}$`);\n createToken(\"COERCEPLAIN\", `${\"(^|[^\\\\d])(\\\\d{1,\"}${MAX_SAFE_COMPONENT_LENGTH2}})(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH2}}))?(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH2}}))?`);\n createToken(\"COERCE\", `${src[t3.COERCEPLAIN]}(?:$|[^\\\\d])`);\n createToken(\"COERCEFULL\", src[t3.COERCEPLAIN] + `(?:${src[t3.PRERELEASE]})?(?:${src[t3.BUILD]})?(?:$|[^\\\\d])`);\n createToken(\"COERCERTL\", src[t3.COERCE], true);\n createToken(\"COERCERTLFULL\", src[t3.COERCEFULL], true);\n createToken(\"LONETILDE\", \"(?:~>?)\");\n createToken(\"TILDETRIM\", `(\\\\s*)${src[t3.LONETILDE]}\\\\s+`, true);\n exports.tildeTrimReplace = \"$1~\";\n createToken(\"TILDE\", `^${src[t3.LONETILDE]}${src[t3.XRANGEPLAIN]}$`);\n createToken(\"TILDELOOSE\", `^${src[t3.LONETILDE]}${src[t3.XRANGEPLAINLOOSE]}$`);\n createToken(\"LONECARET\", \"(?:\\\\^)\");\n createToken(\"CARETTRIM\", `(\\\\s*)${src[t3.LONECARET]}\\\\s+`, true);\n exports.caretTrimReplace = \"$1^\";\n createToken(\"CARET\", `^${src[t3.LONECARET]}${src[t3.XRANGEPLAIN]}$`);\n createToken(\"CARETLOOSE\", `^${src[t3.LONECARET]}${src[t3.XRANGEPLAINLOOSE]}$`);\n createToken(\"COMPARATORLOOSE\", `^${src[t3.GTLT]}\\\\s*(${src[t3.LOOSEPLAIN]})$|^$`);\n createToken(\"COMPARATOR\", `^${src[t3.GTLT]}\\\\s*(${src[t3.FULLPLAIN]})$|^$`);\n createToken(\"COMPARATORTRIM\", `(\\\\s*)${src[t3.GTLT]}\\\\s*(${src[t3.LOOSEPLAIN]}|${src[t3.XRANGEPLAIN]})`, true);\n exports.comparatorTrimReplace = \"$1$2$3\";\n createToken(\"HYPHENRANGE\", `^\\\\s*(${src[t3.XRANGEPLAIN]})\\\\s+-\\\\s+(${src[t3.XRANGEPLAIN]})\\\\s*$`);\n createToken(\"HYPHENRANGELOOSE\", `^\\\\s*(${src[t3.XRANGEPLAINLOOSE]})\\\\s+-\\\\s+(${src[t3.XRANGEPLAINLOOSE]})\\\\s*$`);\n createToken(\"STAR\", \"(<|>)?=?\\\\s*\\\\*\");\n createToken(\"GTE0\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$\");\n createToken(\"GTE0PRE\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$\");\n})(re$1, re$1.exports);\nvar reExports = re$1.exports;\nconst looseOption = Object.freeze({ loose: true });\nconst emptyOpts = Object.freeze({});\nconst parseOptions$1 = (options) => {\n if (!options) {\n return emptyOpts;\n }\n if (typeof options !== \"object\") {\n return looseOption;\n }\n return options;\n};\nvar parseOptions_1 = parseOptions$1;\nconst numeric = /^[0-9]+$/;\nconst compareIdentifiers$1 = (a2, b2) => {\n const anum = numeric.test(a2);\n const bnum = numeric.test(b2);\n if (anum && bnum) {\n a2 = +a2;\n b2 = +b2;\n }\n return a2 === b2 ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a2 < b2 ? -1 : 1;\n};\nconst rcompareIdentifiers = (a2, b2) => compareIdentifiers$1(b2, a2);\nvar identifiers = {\n compareIdentifiers: compareIdentifiers$1,\n rcompareIdentifiers\n};\nconst debug = debug_1;\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = constants;\nconst { safeRe: re, t: t2 } = reExports;\nconst parseOptions = parseOptions_1;\nconst { compareIdentifiers } = identifiers;\nlet SemVer$2 = class SemVer {\n constructor(version, options) {\n options = parseOptions(options);\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) {\n return version;\n } else {\n version = version.version;\n }\n } else if (typeof version !== \"string\") {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`);\n }\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n );\n }\n debug(\"SemVer\", version, options);\n this.options = options;\n this.loose = !!options.loose;\n this.includePrerelease = !!options.includePrerelease;\n const m2 = version.trim().match(options.loose ? re[t2.LOOSE] : re[t2.FULL]);\n if (!m2) {\n throw new TypeError(`Invalid Version: ${version}`);\n }\n this.raw = version;\n this.major = +m2[1];\n this.minor = +m2[2];\n this.patch = +m2[3];\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError(\"Invalid major version\");\n }\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError(\"Invalid minor version\");\n }\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError(\"Invalid patch version\");\n }\n if (!m2[4]) {\n this.prerelease = [];\n } else {\n this.prerelease = m2[4].split(\".\").map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id;\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num;\n }\n }\n return id;\n });\n }\n this.build = m2[5] ? m2[5].split(\".\") : [];\n this.format();\n }\n format() {\n this.version = `${this.major}.${this.minor}.${this.patch}`;\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join(\".\")}`;\n }\n return this.version;\n }\n toString() {\n return this.version;\n }\n compare(other) {\n debug(\"SemVer.compare\", this.version, this.options, other);\n if (!(other instanceof SemVer)) {\n if (typeof other === \"string\" && other === this.version) {\n return 0;\n }\n other = new SemVer(other, this.options);\n }\n if (other.version === this.version) {\n return 0;\n }\n return this.compareMain(other) || this.comparePre(other);\n }\n compareMain(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);\n }\n comparePre(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n if (this.prerelease.length && !other.prerelease.length) {\n return -1;\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1;\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0;\n }\n let i2 = 0;\n do {\n const a2 = this.prerelease[i2];\n const b2 = other.prerelease[i2];\n debug(\"prerelease compare\", i2, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i2);\n }\n compareBuild(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n let i2 = 0;\n do {\n const a2 = this.build[i2];\n const b2 = other.build[i2];\n debug(\"build compare\", i2, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i2);\n }\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc(release, identifier, identifierBase) {\n switch (release) {\n case \"premajor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor = 0;\n this.major++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"preminor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"prepatch\":\n this.prerelease.length = 0;\n this.inc(\"patch\", identifier, identifierBase);\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"prerelease\":\n if (this.prerelease.length === 0) {\n this.inc(\"patch\", identifier, identifierBase);\n }\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"major\":\n if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {\n this.major++;\n }\n this.minor = 0;\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"minor\":\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++;\n }\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"patch\":\n if (this.prerelease.length === 0) {\n this.patch++;\n }\n this.prerelease = [];\n break;\n case \"pre\": {\n const base = Number(identifierBase) ? 1 : 0;\n if (!identifier && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier is empty\");\n }\n if (this.prerelease.length === 0) {\n this.prerelease = [base];\n } else {\n let i2 = this.prerelease.length;\n while (--i2 >= 0) {\n if (typeof this.prerelease[i2] === \"number\") {\n this.prerelease[i2]++;\n i2 = -2;\n }\n }\n if (i2 === -1) {\n if (identifier === this.prerelease.join(\".\") && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier already exists\");\n }\n this.prerelease.push(base);\n }\n }\n if (identifier) {\n let prerelease = [identifier, base];\n if (identifierBase === false) {\n prerelease = [identifier];\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease;\n }\n } else {\n this.prerelease = prerelease;\n }\n }\n break;\n }\n default:\n throw new Error(`invalid increment argument: ${release}`);\n }\n this.raw = this.format();\n if (this.build.length) {\n this.raw += `+${this.build.join(\".\")}`;\n }\n return this;\n }\n};\nvar semver = SemVer$2;\nconst SemVer$1 = semver;\nconst parse$1 = (version, options, throwErrors = false) => {\n if (version instanceof SemVer$1) {\n return version;\n }\n try {\n return new SemVer$1(version, options);\n } catch (er) {\n if (!throwErrors) {\n return null;\n }\n throw er;\n }\n};\nvar parse_1 = parse$1;\nconst parse = parse_1;\nconst valid = (version, options) => {\n const v = parse(version, options);\n return v ? v.version : null;\n};\nvar valid_1 = valid;\nconst valid$1 = /* @__PURE__ */ getDefaultExportFromCjs(valid_1);\nconst SemVer2 = semver;\nconst major = (a2, loose) => new SemVer2(a2, loose).major;\nvar major_1 = major;\nconst major$1 = /* @__PURE__ */ getDefaultExportFromCjs(major_1);\nclass ProxyBus {\n bus;\n constructor(bus2) {\n if (typeof bus2.getVersion !== \"function\" || !valid$1(bus2.getVersion())) {\n console.warn(\"Proxying an event bus with an unknown or invalid version\");\n } else if (major$1(bus2.getVersion()) !== major$1(this.getVersion())) {\n console.warn(\n \"Proxying an event bus of version \" + bus2.getVersion() + \" with \" + this.getVersion()\n );\n }\n this.bus = bus2;\n }\n getVersion() {\n return \"3.3.1\";\n }\n subscribe(name, handler) {\n this.bus.subscribe(name, handler);\n }\n unsubscribe(name, handler) {\n this.bus.unsubscribe(name, handler);\n }\n emit(name, event) {\n this.bus.emit(name, event);\n }\n}\nclass SimpleBus {\n handlers = /* @__PURE__ */ new Map();\n getVersion() {\n return \"3.3.1\";\n }\n subscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).concat(\n handler\n )\n );\n }\n unsubscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).filter((h2) => h2 !== handler)\n );\n }\n emit(name, event) {\n (this.handlers.get(name) || []).forEach((h2) => {\n try {\n h2(event);\n } catch (e2) {\n console.error(\"could not invoke event listener\", e2);\n }\n });\n }\n}\nlet bus = null;\nfunction getBus() {\n if (bus !== null) {\n return bus;\n }\n if (typeof window === \"undefined\") {\n return new Proxy({}, {\n get: () => {\n return () => console.error(\n \"Window not available, EventBus can not be established!\"\n );\n }\n });\n }\n if (window.OC?._eventBus && typeof window._nc_event_bus === \"undefined\") {\n console.warn(\n \"found old event bus instance at OC._eventBus. Update your version!\"\n );\n window._nc_event_bus = window.OC._eventBus;\n }\n if (typeof window?._nc_event_bus !== \"undefined\") {\n bus = new ProxyBus(window._nc_event_bus);\n } else {\n bus = window._nc_event_bus = new SimpleBus();\n }\n return bus;\n}\nfunction emit(name, event) {\n getBus().emit(name, event);\n}\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nclass FileListFilter extends TypedEventTarget {\n id;\n order;\n constructor(id, order = 100) {\n super();\n this.id = id;\n this.order = order;\n }\n filter(nodes) {\n throw new Error(\"Not implemented\");\n }\n updateChips(chips) {\n this.dispatchTypedEvent(\"update:chips\", new CustomEvent(\"update:chips\", { detail: chips }));\n }\n filterUpdated() {\n this.dispatchTypedEvent(\"update:filter\", new CustomEvent(\"update:filter\"));\n }\n}\nfunction registerFileListFilter(filter) {\n if (!window._nc_filelist_filters) {\n window._nc_filelist_filters = /* @__PURE__ */ new Map();\n }\n if (window._nc_filelist_filters.has(filter.id)) {\n throw new Error(`File list filter \"${filter.id}\" already registered`);\n }\n window._nc_filelist_filters.set(filter.id, filter);\n emit(\"files:filter:added\", filter);\n}\nfunction unregisterFileListFilter(filterId) {\n if (window._nc_filelist_filters && window._nc_filelist_filters.has(filterId)) {\n window._nc_filelist_filters.delete(filterId);\n emit(\"files:filter:removed\", filterId);\n }\n}\nfunction getFileListFilters() {\n if (!window._nc_filelist_filters) {\n return [];\n }\n return [...window._nc_filelist_filters.values()];\n}\nconst addNewFileMenuEntry = function(entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.registerEntry(entry);\n};\nconst removeNewFileMenuEntry = function(entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.unregisterEntry(entry);\n};\nconst getNewFileMenuEntries = function(context) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.getEntries(context).sort((a2, b2) => {\n if (a2.order !== void 0 && b2.order !== void 0 && a2.order !== b2.order) {\n return a2.order - b2.order;\n }\n return a2.displayName.localeCompare(b2.displayName, void 0, { numeric: true, sensitivity: \"base\" });\n });\n};\nexport {\n Column,\n DefaultType,\n q as File,\n FileAction,\n FileListAction,\n FileListFilter,\n F as FileType,\n FilesSortingMode,\n s as Folder,\n Header,\n InvalidFilenameError,\n InvalidFilenameErrorReason,\n Navigation,\n NewMenuEntryCategory,\n N as Node,\n t as NodeStatus,\n P as Permission,\n View,\n addNewFileMenuEntry,\n c as davGetClient,\n l as davGetDefaultPropfind,\n m as davGetFavoritesReport,\n n as davGetRecentSearch,\n a as davGetRemoteURL,\n g as davGetRootPath,\n p as davParsePermissions,\n b as davRemoteURL,\n r as davResultToNode,\n d as davRootPath,\n h as defaultDavNamespaces,\n f as defaultDavProperties,\n formatFileSize,\n k as getDavNameSpaces,\n j as getDavProperties,\n e as getFavoriteNodes,\n getFileActions,\n getFileListActions,\n getFileListFilters,\n getFileListHeaders,\n getNavigation,\n getNewFileMenuEntries,\n getUniqueName,\n isFilenameValid,\n orderBy,\n parseFileSize,\n i as registerDavProperty,\n registerFileAction,\n registerFileListAction,\n registerFileListFilter,\n registerFileListHeaders,\n removeNewFileMenuEntry,\n sortNodes,\n unregisterFileListFilter,\n validateFilename\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=\" + {\"1521\":\"220bf24c534d0cf00eb6\",\"3239\":\"4397d4b7cd27394bcfef\",\"4529\":\"d58021a92b28d315755f\",\"5085\":\"4f10478b69e38cddada5\",\"5706\":\"3153330af47fc26a725a\",\"6127\":\"8a567ca1f2d5ad91b181\",\"7265\":\"9c12ff5b3777606cd886\",\"8737\":\"8cbc3d2101ec1e37d965\"}[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(/#.*$/, \"\").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__(18539)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","sanitize","url","replace","requireAdmin","confirmPassword","get","options","axios","post","data","patch","put","delete","params","localStorage","getBuilder","persist","build","defaults","id","name","usercount","disabled","canAdd","canRemove","state","users","groups","orderBy","GroupSorting","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","recentGroup","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","getRecentUsers","_ref16","getDisabledUsers","_ref17","_ref18","limitParam","getUsersFromList","_ref19","getUsersFromGroup","_ref20","groupid","groupId","getCapabilities","password_policy","minLength","_ref21","_ref22","_ref23","_ref24","_ref25","wipeUserDevices","Promise","reject","Error","addUser","_ref26","_ref27","dispatch","password","email","quota","language","manager","_ref28","userStatus","_ref29","allowedEmpty","sendWelcomeMail","apps","bundles","loadState","categories","updateCount","loading","gettingCategoriesPromise","appApiEnabled","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","isAppApiEnabled","getAppBundles","getUpdateCount","getCategoryById","selectedCategoryId","serverData","setServerData","getServerData","setAppConfig","API_FAILURE","meta","store","useStore","Store","modules","settings","oc","strict","process","getLoggerBuilder","setApp","detectUser","_defineComponent","__name","setup","__props","__sfc","NcContent","_vm","_c","_self","_setupProxy","attrs","_v","path","components","default","UserManagement","navigation","UserManagementNavigation","props","children","redirect","AppStore","AppStoreNavigation","sidebar","AppStoreSidebar","use","Router","mode","base","linkActiveClass","routes","__webpack_nonce__","getCSPNonce","prototype","n","PiniaVuePlugin","VTooltipPlugin","defaultHtml","Vuex","pinia","createPinia","sync","router","render","h","SettingsApp","el","cloneRoute","to","from","clone","hash","query","fullPath","freeze","exports","moduleName","registerModule","namespaced","currentRoute","transition","currentPath","isTimeTraveling","storeUnwatch","watch","route","afterEachUnHook","afterEach","unregisterModule","humanList","humanListBinary","formatFileSize","size","skipSmallSizes","binaryPrefixes","base1000","Number","order","Math","floor","log","min","readableFormat","relativeSize","pow","toFixed","parseFloat","toLocaleString","forceBinary","toLocaleLowerCase","replaceAll","e2","match","decimalString","round","k","m","g","p","Date","toISOString","sortNodes","nodes","sortingOptions","sortingMode","sortingOrder","collection","identifiers2","orders","_","index","collator","Intl","Collator","numeric","usage","a2","b2","identifier","entries","compare","sortFavoritesFirst","v","attributes","favorite","sortFoldersFirst","type","basename2","displayname","basename","lastIndexOf","slice","util$3","nameStartChar","nameRegexp","regexName","RegExp","isExist","isEmptyObject","obj","merge","target","arrayMode","len","i2","getValue","isName","string","exec","getAllMatches","regex","matches","allmatches","startIndex","lastIndex","OptionsBuilder","defaultOptions$1","preserveOrder","attributeNamePrefix","attributesGroupName","textNodeName","ignoreAttributes","removeNSPrefix","allowBooleanAttributes","parseTagValue","parseAttributeValue","trimValues","cdataPropName","numberParseOptions","hex","leadingZeros","eNotation","tagValueProcessor","tagName","val2","attributeValueProcessor","attrName","stopNodes","alwaysCreateTextNode","commentPropName","unpairedTags","processEntities","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","jPath","buildOptions","defaultOptions","parseInt","node2json","compress","arr","text","compressedObj","tagObj","property","propName$1","newJpath","isLeaf","isLeafTag","assignAttributes","hasOwnProperty","attrMap","jpath","atrrName","propCount","prettify","node","arrToStr","indentation","xmlStr","isPreviousElementTag","propName","newJPath","tagText","isStopNode","replaceEntitiesValue","attStr2","attr_to_str","tempInd","piTextNodeName","newIdentation","indentBy","tagStart","tagValue","suppressUnpairedNode","suppressEmptyNode","endsWith","attrStr","attr","attrVal","suppressBooleanAttributes","substr","textValue","entities","entity","val","buildFromOrderedJs","jArray","format","getIgnoreAttributesFn","ignoreAttributes2","pattern","test","oneListGroup","Builder","isAttribute","ignoreAttributesFn","attrPrefixLen","processTextOrObjNode","indentate","tagEndChar","newLine","object","level","ajPath","result","j2x","buildTextValNode","buildObjectNode","repeat","startsWith","jObj","arrayNodeName","join","call","buildAttrPairStr","newval","arrLen","listTagVal","listTagAttr","j2","item","Ks","L","closeTag","tagEndExp","piClosingChar","debug_1","env","NODE_DEBUG","args","constants","MAX_LENGTH","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","MAX_LENGTH$1","MAX_SAFE_INTEGER","RELEASE_TYPES","SEMVER_SPEC_VERSION","FLAG_INCLUDE_PRERELEASE","FLAG_LOOSE","re$1","module","MAX_SAFE_COMPONENT_LENGTH2","MAX_SAFE_BUILD_LENGTH2","MAX_LENGTH2","debug2","re2","re","safeRe","src","t3","R","LETTERDASHNUMBER","safeRegexReplacements","createToken","isGlobal","safe","max","split","makeSafeRegex","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","BUILDIDENTIFIER","MAINVERSION","PRERELEASE","BUILD","FULLPLAIN","MAINVERSIONLOOSE","PRERELEASELOOSE","LOOSEPLAIN","XRANGEIDENTIFIER","XRANGEIDENTIFIERLOOSE","GTLT","XRANGEPLAIN","XRANGEPLAINLOOSE","COERCEPLAIN","COERCE","COERCEFULL","LONETILDE","tildeTrimReplace","LONECARET","caretTrimReplace","comparatorTrimReplace","reExports","loose","compareIdentifiers$1","anum","bnum","identifiers","compareIdentifiers","rcompareIdentifiers","t2","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","r","getter","__esModule","d","definition","o","defineProperty","enumerable","f","chunkId","all","reduce","promises","u","globalThis","Function","prop","l","done","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","bind","head","appendChild","Symbol","toStringTag","nmd","paths","scriptUrl","importScripts","currentScript","toUpperCase","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=14a6a5748e96940140a1","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","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/constants/GroupManagement.ts","webpack:///nextcloud/apps/settings/src/logger.ts","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/node_modules/vuex-router-sync/index.js","webpack:///nextcloud/node_modules/@nextcloud/files/dist/index.mjs","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 * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\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 * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\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 recentGroup = state.groups.find(group => group.id === '__nc_internal_recent')\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\trecentGroup.usercount += user.enabled ? 1 : -1\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\trecentGroup.usercount++\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\trecentGroup.usercount--\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, recent, or disabled\n\t\treturn state.groups.filter(group => group.id !== 'admin' && group.id !== '__nc_internal_recent' && 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 recent 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 query\n\t * @return {Promise}\n\t */\n\tasync getRecentUsers(context, { offset, limit, search }) {\n\t\tconst url = generateOcsUrl('cloud/users/recent?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}\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\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 * @param options.search\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 * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\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\tappApiEnabled: loadState('settings', 'appApiEnabled', false),\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\tif (app.id === 'app_api') {\n\t\t\tstate.appApiEnabled = true\n\t\t}\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\tif (app.id === 'app_api') {\n\t\t\tstate.appApiEnabled = false\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\tif (appId === 'app_api') {\n\t\t\tstate.appApiEnabled = false\n\t\t}\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\tisAppApiEnabled(state) {\n\t\treturn state.appApiEnabled\n\t},\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 * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\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 * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\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 * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { 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\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 * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\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 * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('settings')\n .detectUser()\n .build();\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=02c6e0e9\"\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 * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\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 * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport Vue from 'vue';\nimport Vuex from 'vuex';\nimport VTooltipPlugin from 'v-tooltip';\nimport { sync } from 'vuex-router-sync';\nimport { t, n } from '@nextcloud/l10n';\nimport SettingsApp from './views/SettingsApp.vue';\nimport router from './router/index.ts';\nimport { useStore } from './store/index.js';\nimport { getCSPNonce } from '@nextcloud/auth';\nimport { PiniaVuePlugin, createPinia } from 'pinia';\n// CSP config for webpack dynamic chunk loading\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = getCSPNonce();\n// bind to window\nVue.prototype.t = t;\nVue.prototype.n = n;\n// Setup Vue plugins\nVue.use(PiniaVuePlugin);\nVue.use(VTooltipPlugin, { defaultHtml: false });\nVue.use(Vuex);\n// Setup stores\nconst pinia = createPinia();\nconst store = useStore();\nsync(store, router);\nexport default new Vue({\n router,\n store,\n pinia,\n render: h => h(SettingsApp),\n el: '#content',\n});\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","import { o as logger } from \"./chunks/dav-DxfiR0wZ.mjs\";\nimport { q, F, s, N, t, P, c, l, m, n, a, g, p, b, r, d, h, f, k, j, e, i } from \"./chunks/dav-DxfiR0wZ.mjs\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { extname, basename } from \"path\";\nimport { getCanonicalLocale, getLanguage } from \"@nextcloud/l10n\";\nimport { TypedEventTarget } from \"typescript-event-target\";\nvar NewMenuEntryCategory = /* @__PURE__ */ ((NewMenuEntryCategory2) => {\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"UploadFromDevice\"] = 0] = \"UploadFromDevice\";\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"CreateNew\"] = 1] = \"CreateNew\";\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"Other\"] = 2] = \"Other\";\n return NewMenuEntryCategory2;\n})(NewMenuEntryCategory || {});\nclass NewFileMenu {\n _entries = [];\n registerEntry(entry) {\n this.validateEntry(entry);\n entry.category = entry.category ?? 1;\n this._entries.push(entry);\n }\n unregisterEntry(entry) {\n const entryIndex = typeof entry === \"string\" ? this.getEntryIndex(entry) : this.getEntryIndex(entry.id);\n if (entryIndex === -1) {\n logger.warn(\"Entry not found, nothing removed\", { entry, entries: this.getEntries() });\n return;\n }\n this._entries.splice(entryIndex, 1);\n }\n /**\n * Get the list of registered entries\n *\n * @param {Folder} context the creation context. Usually the current folder\n */\n getEntries(context) {\n if (context) {\n return this._entries.filter((entry) => typeof entry.enabled === \"function\" ? entry.enabled(context) : true);\n }\n return this._entries;\n }\n getEntryIndex(id) {\n return this._entries.findIndex((entry) => entry.id === id);\n }\n validateEntry(entry) {\n if (!entry.id || !entry.displayName || !(entry.iconSvgInline || entry.iconClass) || !entry.handler) {\n throw new Error(\"Invalid entry\");\n }\n if (typeof entry.id !== \"string\" || typeof entry.displayName !== \"string\") {\n throw new Error(\"Invalid id or displayName property\");\n }\n if (entry.iconClass && typeof entry.iconClass !== \"string\" || entry.iconSvgInline && typeof entry.iconSvgInline !== \"string\") {\n throw new Error(\"Invalid icon provided\");\n }\n if (entry.enabled !== void 0 && typeof entry.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (typeof entry.handler !== \"function\") {\n throw new Error(\"Invalid handler property\");\n }\n if (\"order\" in entry && typeof entry.order !== \"number\") {\n throw new Error(\"Invalid order property\");\n }\n if (this.getEntryIndex(entry.id) !== -1) {\n throw new Error(\"Duplicate entry\");\n }\n }\n}\nconst getNewFileMenu = function() {\n if (typeof window._nc_newfilemenu === \"undefined\") {\n window._nc_newfilemenu = new NewFileMenu();\n logger.debug(\"NewFileMenu initialized\");\n }\n return window._nc_newfilemenu;\n};\nvar DefaultType = /* @__PURE__ */ ((DefaultType2) => {\n DefaultType2[\"DEFAULT\"] = \"default\";\n DefaultType2[\"HIDDEN\"] = \"hidden\";\n return DefaultType2;\n})(DefaultType || {});\nclass FileAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get title() {\n return this._action.title;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n get execBatch() {\n return this._action.execBatch;\n }\n get order() {\n return this._action.order;\n }\n get parent() {\n return this._action.parent;\n }\n get default() {\n return this._action.default;\n }\n get destructive() {\n return this._action.destructive;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== \"string\") {\n throw new Error(\"Invalid id\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Invalid displayName function\");\n }\n if (\"title\" in action && typeof action.title !== \"function\") {\n throw new Error(\"Invalid title function\");\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (\"execBatch\" in action && typeof action.execBatch !== \"function\") {\n throw new Error(\"Invalid execBatch function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (action.destructive !== void 0 && typeof action.destructive !== \"boolean\") {\n throw new Error(\"Invalid destructive flag\");\n }\n if (\"parent\" in action && typeof action.parent !== \"string\") {\n throw new Error(\"Invalid parent\");\n }\n if (action.default && !Object.values(DefaultType).includes(action.default)) {\n throw new Error(\"Invalid default\");\n }\n if (\"inline\" in action && typeof action.inline !== \"function\") {\n throw new Error(\"Invalid inline function\");\n }\n if (\"renderInline\" in action && typeof action.renderInline !== \"function\") {\n throw new Error(\"Invalid renderInline function\");\n }\n }\n}\nconst registerFileAction = function(action) {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n if (window._nc_fileactions.find((search) => search.id === action.id)) {\n logger.error(`FileAction ${action.id} already registered`, { action });\n return;\n }\n window._nc_fileactions.push(action);\n};\nconst getFileActions = function() {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n return window._nc_fileactions;\n};\nclass FileListAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get order() {\n return this._action.order;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== \"string\") {\n throw new Error(\"Invalid id\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Invalid displayName function\");\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n }\n}\nconst registerFileListAction = (action) => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n if (window._nc_filelistactions.find((listAction) => listAction.id === action.id)) {\n logger.error(`FileListAction with id \"${action.id}\" is already registered`, { action });\n return;\n }\n window._nc_filelistactions.push(action);\n};\nconst getFileListActions = () => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n return window._nc_filelistactions;\n};\nclass Header {\n _header;\n constructor(header) {\n this.validateHeader(header);\n this._header = header;\n }\n get id() {\n return this._header.id;\n }\n get order() {\n return this._header.order;\n }\n get enabled() {\n return this._header.enabled;\n }\n get render() {\n return this._header.render;\n }\n get updated() {\n return this._header.updated;\n }\n validateHeader(header) {\n if (!header.id || !header.render || !header.updated) {\n throw new Error(\"Invalid header: id, render and updated are required\");\n }\n if (typeof header.id !== \"string\") {\n throw new Error(\"Invalid id property\");\n }\n if (header.enabled !== void 0 && typeof header.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (header.render && typeof header.render !== \"function\") {\n throw new Error(\"Invalid render property\");\n }\n if (header.updated && typeof header.updated !== \"function\") {\n throw new Error(\"Invalid updated property\");\n }\n }\n}\nconst registerFileListHeaders = function(header) {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n if (window._nc_filelistheader.find((search) => search.id === header.id)) {\n logger.error(`Header ${header.id} already registered`, { header });\n return;\n }\n window._nc_filelistheader.push(header);\n};\nconst getFileListHeaders = function() {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n return window._nc_filelistheader;\n};\nvar InvalidFilenameErrorReason = /* @__PURE__ */ ((InvalidFilenameErrorReason2) => {\n InvalidFilenameErrorReason2[\"ReservedName\"] = \"reserved name\";\n InvalidFilenameErrorReason2[\"Character\"] = \"character\";\n InvalidFilenameErrorReason2[\"Extension\"] = \"extension\";\n return InvalidFilenameErrorReason2;\n})(InvalidFilenameErrorReason || {});\nclass InvalidFilenameError extends Error {\n constructor(options) {\n super(`Invalid ${options.reason} '${options.segment}' in filename '${options.filename}'`, { cause: options });\n }\n /**\n * The filename that was validated\n */\n get filename() {\n return this.cause.filename;\n }\n /**\n * Reason why the validation failed\n */\n get reason() {\n return this.cause.reason;\n }\n /**\n * Part of the filename that caused this error\n */\n get segment() {\n return this.cause.segment;\n }\n}\nfunction validateFilename(filename) {\n const capabilities = getCapabilities().files;\n const forbiddenCharacters = capabilities.forbidden_filename_characters ?? window._oc_config?.forbidden_filenames_characters ?? [\"/\", \"\\\\\"];\n for (const character of forbiddenCharacters) {\n if (filename.includes(character)) {\n throw new InvalidFilenameError({ segment: character, reason: \"character\", filename });\n }\n }\n filename = filename.toLocaleLowerCase();\n const forbiddenFilenames = capabilities.forbidden_filenames ?? [\".htaccess\"];\n if (forbiddenFilenames.includes(filename)) {\n throw new InvalidFilenameError({\n filename,\n segment: filename,\n reason: \"reserved name\"\n /* ReservedName */\n });\n }\n const endOfBasename = filename.indexOf(\".\", 1);\n const basename2 = filename.substring(0, endOfBasename === -1 ? void 0 : endOfBasename);\n const forbiddenFilenameBasenames = capabilities.forbidden_filename_basenames ?? [];\n if (forbiddenFilenameBasenames.includes(basename2)) {\n throw new InvalidFilenameError({\n filename,\n segment: basename2,\n reason: \"reserved name\"\n /* ReservedName */\n });\n }\n const forbiddenFilenameExtensions = capabilities.forbidden_filename_extensions ?? [\".part\", \".filepart\"];\n for (const extension of forbiddenFilenameExtensions) {\n if (filename.length > extension.length && filename.endsWith(extension)) {\n throw new InvalidFilenameError({ segment: extension, reason: \"extension\", filename });\n }\n }\n}\nfunction isFilenameValid(filename) {\n try {\n validateFilename(filename);\n return true;\n } catch (error) {\n if (error instanceof InvalidFilenameError) {\n return false;\n }\n throw error;\n }\n}\nfunction getUniqueName(name, otherNames, options) {\n const opts = {\n suffix: (n2) => `(${n2})`,\n ignoreFileExtension: false,\n ...options\n };\n let newName = name;\n let i2 = 1;\n while (otherNames.includes(newName)) {\n const ext = opts.ignoreFileExtension ? \"\" : extname(name);\n const base = basename(name, ext);\n newName = `${base} ${opts.suffix(i2++)}${ext}`;\n }\n return newName;\n}\nconst humanList = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\"];\nconst humanListBinary = [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\"];\nfunction formatFileSize(size, skipSmallSizes = false, binaryPrefixes = false, base1000 = false) {\n binaryPrefixes = binaryPrefixes && !base1000;\n if (typeof size === \"string\") {\n size = Number(size);\n }\n let order = size > 0 ? Math.floor(Math.log(size) / Math.log(base1000 ? 1e3 : 1024)) : 0;\n order = Math.min((binaryPrefixes ? humanListBinary.length : humanList.length) - 1, order);\n const readableFormat = binaryPrefixes ? humanListBinary[order] : humanList[order];\n let relativeSize = (size / Math.pow(base1000 ? 1e3 : 1024, order)).toFixed(1);\n if (skipSmallSizes === true && order === 0) {\n return (relativeSize !== \"0.0\" ? \"< 1 \" : \"0 \") + (binaryPrefixes ? humanListBinary[1] : humanList[1]);\n }\n if (order < 2) {\n relativeSize = parseFloat(relativeSize).toFixed(0);\n } else {\n relativeSize = parseFloat(relativeSize).toLocaleString(getCanonicalLocale());\n }\n return relativeSize + \" \" + readableFormat;\n}\nfunction parseFileSize(value, forceBinary = false) {\n try {\n value = `${value}`.toLocaleLowerCase().replaceAll(/\\s+/g, \"\").replaceAll(\",\", \".\");\n } catch (e2) {\n return null;\n }\n const match = value.match(/^([0-9]*(\\.[0-9]*)?)([kmgtp]?)(i?)b?$/);\n if (match === null || match[1] === \".\" || match[1] === \"\") {\n return null;\n }\n const bytesArray = {\n \"\": 0,\n k: 1,\n m: 2,\n g: 3,\n t: 4,\n p: 5,\n e: 6\n };\n const decimalString = `${match[1]}`;\n const base = match[4] === \"i\" || forceBinary ? 1024 : 1e3;\n return Math.round(Number.parseFloat(decimalString) * base ** bytesArray[match[3]]);\n}\nfunction stringify(value) {\n if (value instanceof Date) {\n return value.toISOString();\n }\n return String(value);\n}\nfunction orderBy(collection, identifiers2, orders) {\n identifiers2 = identifiers2 ?? [(value) => value];\n orders = orders ?? [];\n const sorting = identifiers2.map((_, index) => (orders[index] ?? \"asc\") === \"asc\" ? 1 : -1);\n const collator = Intl.Collator(\n [getLanguage(), getCanonicalLocale()],\n {\n // handle 10 as ten and not as one-zero\n numeric: true,\n usage: \"sort\"\n }\n );\n return [...collection].sort((a2, b2) => {\n for (const [index, identifier] of identifiers2.entries()) {\n const value = collator.compare(stringify(identifier(a2)), stringify(identifier(b2)));\n if (value !== 0) {\n return value * sorting[index];\n }\n }\n return 0;\n });\n}\nvar FilesSortingMode = /* @__PURE__ */ ((FilesSortingMode2) => {\n FilesSortingMode2[\"Name\"] = \"basename\";\n FilesSortingMode2[\"Modified\"] = \"mtime\";\n FilesSortingMode2[\"Size\"] = \"size\";\n return FilesSortingMode2;\n})(FilesSortingMode || {});\nfunction sortNodes(nodes, options = {}) {\n const sortingOptions = {\n // Default to sort by name\n sortingMode: \"basename\",\n // Default to sort ascending\n sortingOrder: \"asc\",\n ...options\n };\n const basename2 = (name) => name.lastIndexOf(\".\") > 0 ? name.slice(0, name.lastIndexOf(\".\")) : name;\n const identifiers2 = [\n // 1: Sort favorites first if enabled\n ...sortingOptions.sortFavoritesFirst ? [(v) => v.attributes?.favorite !== 1] : [],\n // 2: Sort folders first if sorting by name\n ...sortingOptions.sortFoldersFirst ? [(v) => v.type !== \"folder\"] : [],\n // 3: Use sorting mode if NOT basename (to be able to use display name too)\n ...sortingOptions.sortingMode !== \"basename\" ? [(v) => v[sortingOptions.sortingMode]] : [],\n // 4: Use display name if available, fallback to name\n (v) => basename2(v.displayname || v.attributes?.displayname || v.basename),\n // 5: Finally, use basename if all previous sorting methods failed\n (v) => v.basename\n ];\n const orders = [\n // (for 1): always sort favorites before normal files\n ...sortingOptions.sortFavoritesFirst ? [\"asc\"] : [],\n // (for 2): always sort folders before files\n ...sortingOptions.sortFoldersFirst ? [\"asc\"] : [],\n // (for 3): Reverse if sorting by mtime as mtime higher means edited more recent -> lower\n ...sortingOptions.sortingMode === \"mtime\" ? [sortingOptions.sortingOrder === \"asc\" ? \"desc\" : \"asc\"] : [],\n // (also for 3 so make sure not to conflict with 2 and 3)\n ...sortingOptions.sortingMode !== \"mtime\" && sortingOptions.sortingMode !== \"basename\" ? [sortingOptions.sortingOrder] : [],\n // for 4: use configured sorting direction\n sortingOptions.sortingOrder,\n // for 5: use configured sorting direction\n sortingOptions.sortingOrder\n ];\n return orderBy(nodes, identifiers2, orders);\n}\nclass Navigation extends TypedEventTarget {\n _views = [];\n _currentView = null;\n /**\n * Register a new view on the navigation\n * @param view The view to register\n * @throws `Error` is thrown if a view with the same id is already registered\n */\n register(view) {\n if (this._views.find((search) => search.id === view.id)) {\n throw new Error(`View id ${view.id} is already registered`);\n }\n this._views.push(view);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n /**\n * Remove a registered view\n * @param id The id of the view to remove\n */\n remove(id) {\n const index = this._views.findIndex((view) => view.id === id);\n if (index !== -1) {\n this._views.splice(index, 1);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n }\n /**\n * Set the currently active view\n * @fires UpdateActiveViewEvent\n * @param view New active view\n */\n setActive(view) {\n this._currentView = view;\n const event = new CustomEvent(\"updateActive\", { detail: view });\n this.dispatchTypedEvent(\"updateActive\", event);\n }\n /**\n * The currently active files view\n */\n get active() {\n return this._currentView;\n }\n /**\n * All registered views\n */\n get views() {\n return this._views;\n }\n}\nconst getNavigation = function() {\n if (typeof window._nc_navigation === \"undefined\") {\n window._nc_navigation = new Navigation();\n logger.debug(\"Navigation service initialized\");\n }\n return window._nc_navigation;\n};\nclass Column {\n _column;\n constructor(column) {\n isValidColumn(column);\n this._column = column;\n }\n get id() {\n return this._column.id;\n }\n get title() {\n return this._column.title;\n }\n get render() {\n return this._column.render;\n }\n get sort() {\n return this._column.sort;\n }\n get summary() {\n return this._column.summary;\n }\n}\nconst isValidColumn = function(column) {\n if (!column.id || typeof column.id !== \"string\") {\n throw new Error(\"A column id is required\");\n }\n if (!column.title || typeof column.title !== \"string\") {\n throw new Error(\"A column title is required\");\n }\n if (!column.render || typeof column.render !== \"function\") {\n throw new Error(\"A render function is required\");\n }\n if (column.sort && typeof column.sort !== \"function\") {\n throw new Error(\"Column sortFunction must be a function\");\n }\n if (column.summary && typeof column.summary !== \"function\") {\n throw new Error(\"Column summary must be a function\");\n }\n return true;\n};\nfunction getDefaultExportFromCjs(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n}\nvar validator$2 = {};\nvar util$3 = {};\n(function(exports) {\n const nameStartChar = \":A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\";\n const nameChar = nameStartChar + \"\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\";\n const nameRegexp = \"[\" + nameStartChar + \"][\" + nameChar + \"]*\";\n const regexName = new RegExp(\"^\" + nameRegexp + \"$\");\n const getAllMatches = function(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n allmatches.startIndex = regex.lastIndex - match[0].length;\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n };\n const isName = function(string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === \"undefined\");\n };\n exports.isExist = function(v) {\n return typeof v !== \"undefined\";\n };\n exports.isEmptyObject = function(obj) {\n return Object.keys(obj).length === 0;\n };\n exports.merge = function(target, a2, arrayMode) {\n if (a2) {\n const keys = Object.keys(a2);\n const len = keys.length;\n for (let i2 = 0; i2 < len; i2++) {\n if (arrayMode === \"strict\") {\n target[keys[i2]] = [a2[keys[i2]]];\n } else {\n target[keys[i2]] = a2[keys[i2]];\n }\n }\n }\n };\n exports.getValue = function(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return \"\";\n }\n };\n exports.isName = isName;\n exports.getAllMatches = getAllMatches;\n exports.nameRegexp = nameRegexp;\n})(util$3);\nconst util$2 = util$3;\nconst defaultOptions$2 = {\n allowBooleanAttributes: false,\n //A tag can have attributes without any value\n unpairedTags: []\n};\nvalidator$2.validate = function(xmlData, options) {\n options = Object.assign({}, defaultOptions$2, options);\n const tags = [];\n let tagFound = false;\n let reachedRoot = false;\n if (xmlData[0] === \"\\uFEFF\") {\n xmlData = xmlData.substr(1);\n }\n for (let i2 = 0; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\" && xmlData[i2 + 1] === \"?\") {\n i2 += 2;\n i2 = readPI(xmlData, i2);\n if (i2.err) return i2;\n } else if (xmlData[i2] === \"<\") {\n let tagStartPos = i2;\n i2++;\n if (xmlData[i2] === \"!\") {\n i2 = readCommentAndCDATA(xmlData, i2);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i2] === \"/\") {\n closingTag = true;\n i2++;\n }\n let tagName = \"\";\n for (; i2 < xmlData.length && xmlData[i2] !== \">\" && xmlData[i2] !== \" \" && xmlData[i2] !== \"\t\" && xmlData[i2] !== \"\\n\" && xmlData[i2] !== \"\\r\"; i2++) {\n tagName += xmlData[i2];\n }\n tagName = tagName.trim();\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substring(0, tagName.length - 1);\n i2--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"Invalid space after '<'.\";\n } else {\n msg = \"Tag '\" + tagName + \"' is an invalid name.\";\n }\n return getErrorObject(\"InvalidTag\", msg, getLineNumberForPosition(xmlData, i2));\n }\n const result = readAttributeStr(xmlData, i2);\n if (result === false) {\n return getErrorObject(\"InvalidAttr\", \"Attributes for '\" + tagName + \"' have open quote.\", getLineNumberForPosition(xmlData, i2));\n }\n let attrStr = result.value;\n i2 = result.index;\n if (attrStr[attrStr.length - 1] === \"/\") {\n const attrStrStart = i2 - attrStr.length;\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n } else {\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i2));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else if (tags.length === 0) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else {\n const otg = tags.pop();\n if (tagName !== otg.tagName) {\n let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n return getErrorObject(\n \"InvalidTag\",\n \"Expected closing tag '\" + otg.tagName + \"' (opened in line \" + openPos.line + \", col \" + openPos.col + \") instead of closing tag '\" + tagName + \"'.\",\n getLineNumberForPosition(xmlData, tagStartPos)\n );\n }\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i2 - attrStr.length + isValid.err.line));\n }\n if (reachedRoot === true) {\n return getErrorObject(\"InvalidXml\", \"Multiple possible root nodes found.\", getLineNumberForPosition(xmlData, i2));\n } else if (options.unpairedTags.indexOf(tagName) !== -1) ;\n else {\n tags.push({ tagName, tagStartPos });\n }\n tagFound = true;\n }\n for (i2++; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n if (xmlData[i2 + 1] === \"!\") {\n i2++;\n i2 = readCommentAndCDATA(xmlData, i2);\n continue;\n } else if (xmlData[i2 + 1] === \"?\") {\n i2 = readPI(xmlData, ++i2);\n if (i2.err) return i2;\n } else {\n break;\n }\n } else if (xmlData[i2] === \"&\") {\n const afterAmp = validateAmpersand(xmlData, i2);\n if (afterAmp == -1)\n return getErrorObject(\"InvalidChar\", \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i2));\n i2 = afterAmp;\n } else {\n if (reachedRoot === true && !isWhiteSpace(xmlData[i2])) {\n return getErrorObject(\"InvalidXml\", \"Extra text at the end\", getLineNumberForPosition(xmlData, i2));\n }\n }\n }\n if (xmlData[i2] === \"<\") {\n i2--;\n }\n }\n } else {\n if (isWhiteSpace(xmlData[i2])) {\n continue;\n }\n return getErrorObject(\"InvalidChar\", \"char '\" + xmlData[i2] + \"' is not expected.\", getLineNumberForPosition(xmlData, i2));\n }\n }\n if (!tagFound) {\n return getErrorObject(\"InvalidXml\", \"Start tag expected.\", 1);\n } else if (tags.length == 1) {\n return getErrorObject(\"InvalidTag\", \"Unclosed tag '\" + tags[0].tagName + \"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n } else if (tags.length > 0) {\n return getErrorObject(\"InvalidXml\", \"Invalid '\" + JSON.stringify(tags.map((t3) => t3.tagName), null, 4).replace(/\\r?\\n/g, \"\") + \"' found.\", { line: 1, col: 1 });\n }\n return true;\n};\nfunction isWhiteSpace(char) {\n return char === \" \" || char === \"\t\" || char === \"\\n\" || char === \"\\r\";\n}\nfunction readPI(xmlData, i2) {\n const start = i2;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] == \"?\" || xmlData[i2] == \" \") {\n const tagname = xmlData.substr(start, i2 - start);\n if (i2 > 5 && tagname === \"xml\") {\n return getErrorObject(\"InvalidXml\", \"XML declaration allowed only at the start of the document.\", getLineNumberForPosition(xmlData, i2));\n } else if (xmlData[i2] == \"?\" && xmlData[i2 + 1] == \">\") {\n i2++;\n break;\n } else {\n continue;\n }\n }\n }\n return i2;\n}\nfunction readCommentAndCDATA(xmlData, i2) {\n if (xmlData.length > i2 + 5 && xmlData[i2 + 1] === \"-\" && xmlData[i2 + 2] === \"-\") {\n for (i2 += 3; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"-\" && xmlData[i2 + 1] === \"-\" && xmlData[i2 + 2] === \">\") {\n i2 += 2;\n break;\n }\n }\n } else if (xmlData.length > i2 + 8 && xmlData[i2 + 1] === \"D\" && xmlData[i2 + 2] === \"O\" && xmlData[i2 + 3] === \"C\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"Y\" && xmlData[i2 + 6] === \"P\" && xmlData[i2 + 7] === \"E\") {\n let angleBracketsCount = 1;\n for (i2 += 8; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n angleBracketsCount++;\n } else if (xmlData[i2] === \">\") {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (xmlData.length > i2 + 9 && xmlData[i2 + 1] === \"[\" && xmlData[i2 + 2] === \"C\" && xmlData[i2 + 3] === \"D\" && xmlData[i2 + 4] === \"A\" && xmlData[i2 + 5] === \"T\" && xmlData[i2 + 6] === \"A\" && xmlData[i2 + 7] === \"[\") {\n for (i2 += 8; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"]\" && xmlData[i2 + 1] === \"]\" && xmlData[i2 + 2] === \">\") {\n i2 += 2;\n break;\n }\n }\n }\n return i2;\n}\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\nfunction readAttributeStr(xmlData, i2) {\n let attrStr = \"\";\n let startChar = \"\";\n let tagClosed = false;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === doubleQuote || xmlData[i2] === singleQuote) {\n if (startChar === \"\") {\n startChar = xmlData[i2];\n } else if (startChar !== xmlData[i2]) ;\n else {\n startChar = \"\";\n }\n } else if (xmlData[i2] === \">\") {\n if (startChar === \"\") {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i2];\n }\n if (startChar !== \"\") {\n return false;\n }\n return {\n value: attrStr,\n index: i2,\n tagClosed\n };\n}\nconst validAttrStrRegxp = new RegExp(`(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*(['\"])(([\\\\s\\\\S])*?)\\\\5)?`, \"g\");\nfunction validateAttributeString(attrStr, options) {\n const matches = util$2.getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n for (let i2 = 0; i2 < matches.length; i2++) {\n if (matches[i2][1].length === 0) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + matches[i2][2] + \"' has no space in starting.\", getPositionFromMatch(matches[i2]));\n } else if (matches[i2][3] !== void 0 && matches[i2][4] === void 0) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + matches[i2][2] + \"' is without value.\", getPositionFromMatch(matches[i2]));\n } else if (matches[i2][3] === void 0 && !options.allowBooleanAttributes) {\n return getErrorObject(\"InvalidAttr\", \"boolean attribute '\" + matches[i2][2] + \"' is not allowed.\", getPositionFromMatch(matches[i2]));\n }\n const attrName = matches[i2][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + attrName + \"' is an invalid name.\", getPositionFromMatch(matches[i2]));\n }\n if (!attrNames.hasOwnProperty(attrName)) {\n attrNames[attrName] = 1;\n } else {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + attrName + \"' is repeated.\", getPositionFromMatch(matches[i2]));\n }\n }\n return true;\n}\nfunction validateNumberAmpersand(xmlData, i2) {\n let re2 = /\\d/;\n if (xmlData[i2] === \"x\") {\n i2++;\n re2 = /[\\da-fA-F]/;\n }\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \";\")\n return i2;\n if (!xmlData[i2].match(re2))\n break;\n }\n return -1;\n}\nfunction validateAmpersand(xmlData, i2) {\n i2++;\n if (xmlData[i2] === \";\")\n return -1;\n if (xmlData[i2] === \"#\") {\n i2++;\n return validateNumberAmpersand(xmlData, i2);\n }\n let count = 0;\n for (; i2 < xmlData.length; i2++, count++) {\n if (xmlData[i2].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i2] === \";\")\n break;\n return -1;\n }\n return i2;\n}\nfunction getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code,\n msg: message,\n line: lineNumber.line || lineNumber,\n col: lineNumber.col\n }\n };\n}\nfunction validateAttrName(attrName) {\n return util$2.isName(attrName);\n}\nfunction validateTagName(tagname) {\n return util$2.isName(tagname);\n}\nfunction getLineNumberForPosition(xmlData, index) {\n const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return {\n line: lines.length,\n // column number is last line's length + 1, because column numbering starts at 1:\n col: lines[lines.length - 1].length + 1\n };\n}\nfunction getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n}\nvar OptionsBuilder = {};\nconst defaultOptions$1 = {\n preserveOrder: false,\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n textNodeName: \"#text\",\n ignoreAttributes: true,\n removeNSPrefix: false,\n // remove NS from tag name or attribute name if true\n allowBooleanAttributes: false,\n //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: true,\n parseAttributeValue: false,\n trimValues: true,\n //Trim string values of tag and attributes\n cdataPropName: false,\n numberParseOptions: {\n hex: true,\n leadingZeros: true,\n eNotation: true\n },\n tagValueProcessor: function(tagName, val2) {\n return val2;\n },\n attributeValueProcessor: function(attrName, val2) {\n return val2;\n },\n stopNodes: [],\n //nested tags will not be parsed even for errors\n alwaysCreateTextNode: false,\n isArray: () => false,\n commentPropName: false,\n unpairedTags: [],\n processEntities: true,\n htmlEntities: false,\n ignoreDeclaration: false,\n ignorePiTags: false,\n transformTagName: false,\n transformAttributeName: false,\n updateTag: function(tagName, jPath, attrs) {\n return tagName;\n }\n // skipEmptyListItem: false\n};\nconst buildOptions$1 = function(options) {\n return Object.assign({}, defaultOptions$1, options);\n};\nOptionsBuilder.buildOptions = buildOptions$1;\nOptionsBuilder.defaultOptions = defaultOptions$1;\nclass XmlNode {\n constructor(tagname) {\n this.tagname = tagname;\n this.child = [];\n this[\":@\"] = {};\n }\n add(key, val2) {\n if (key === \"__proto__\") key = \"#__proto__\";\n this.child.push({ [key]: val2 });\n }\n addChild(node) {\n if (node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n if (node[\":@\"] && Object.keys(node[\":@\"]).length > 0) {\n this.child.push({ [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n } else {\n this.child.push({ [node.tagname]: node.child });\n }\n }\n}\nvar xmlNode$1 = XmlNode;\nconst util$1 = util$3;\nfunction readDocType$1(xmlData, i2) {\n const entities = {};\n if (xmlData[i2 + 3] === \"O\" && xmlData[i2 + 4] === \"C\" && xmlData[i2 + 5] === \"T\" && xmlData[i2 + 6] === \"Y\" && xmlData[i2 + 7] === \"P\" && xmlData[i2 + 8] === \"E\") {\n i2 = i2 + 9;\n let angleBracketsCount = 1;\n let hasBody = false, comment = false;\n let exp = \"\";\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\" && !comment) {\n if (hasBody && isEntity(xmlData, i2)) {\n i2 += 7;\n [entityName, val, i2] = readEntityExp(xmlData, i2 + 1);\n if (val.indexOf(\"&\") === -1)\n entities[validateEntityName(entityName)] = {\n regx: RegExp(`&${entityName};`, \"g\"),\n val\n };\n } else if (hasBody && isElement(xmlData, i2)) i2 += 8;\n else if (hasBody && isAttlist(xmlData, i2)) i2 += 8;\n else if (hasBody && isNotation(xmlData, i2)) i2 += 9;\n else if (isComment) comment = true;\n else throw new Error(\"Invalid DOCTYPE\");\n angleBracketsCount++;\n exp = \"\";\n } else if (xmlData[i2] === \">\") {\n if (comment) {\n if (xmlData[i2 - 1] === \"-\" && xmlData[i2 - 2] === \"-\") {\n comment = false;\n angleBracketsCount--;\n }\n } else {\n angleBracketsCount--;\n }\n if (angleBracketsCount === 0) {\n break;\n }\n } else if (xmlData[i2] === \"[\") {\n hasBody = true;\n } else {\n exp += xmlData[i2];\n }\n }\n if (angleBracketsCount !== 0) {\n throw new Error(`Unclosed DOCTYPE`);\n }\n } else {\n throw new Error(`Invalid Tag instead of DOCTYPE`);\n }\n return { entities, i: i2 };\n}\nfunction readEntityExp(xmlData, i2) {\n let entityName2 = \"\";\n for (; i2 < xmlData.length && (xmlData[i2] !== \"'\" && xmlData[i2] !== '\"'); i2++) {\n entityName2 += xmlData[i2];\n }\n entityName2 = entityName2.trim();\n if (entityName2.indexOf(\" \") !== -1) throw new Error(\"External entites are not supported\");\n const startChar = xmlData[i2++];\n let val2 = \"\";\n for (; i2 < xmlData.length && xmlData[i2] !== startChar; i2++) {\n val2 += xmlData[i2];\n }\n return [entityName2, val2, i2];\n}\nfunction isComment(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"-\" && xmlData[i2 + 3] === \"-\") return true;\n return false;\n}\nfunction isEntity(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"E\" && xmlData[i2 + 3] === \"N\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"I\" && xmlData[i2 + 6] === \"T\" && xmlData[i2 + 7] === \"Y\") return true;\n return false;\n}\nfunction isElement(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"E\" && xmlData[i2 + 3] === \"L\" && xmlData[i2 + 4] === \"E\" && xmlData[i2 + 5] === \"M\" && xmlData[i2 + 6] === \"E\" && xmlData[i2 + 7] === \"N\" && xmlData[i2 + 8] === \"T\") return true;\n return false;\n}\nfunction isAttlist(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"A\" && xmlData[i2 + 3] === \"T\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"L\" && xmlData[i2 + 6] === \"I\" && xmlData[i2 + 7] === \"S\" && xmlData[i2 + 8] === \"T\") return true;\n return false;\n}\nfunction isNotation(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"N\" && xmlData[i2 + 3] === \"O\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"A\" && xmlData[i2 + 6] === \"T\" && xmlData[i2 + 7] === \"I\" && xmlData[i2 + 8] === \"O\" && xmlData[i2 + 9] === \"N\") return true;\n return false;\n}\nfunction validateEntityName(name) {\n if (util$1.isName(name))\n return name;\n else\n throw new Error(`Invalid entity name ${name}`);\n}\nvar DocTypeReader = readDocType$1;\nconst hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\nconst numRegex = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\nif (!Number.parseInt && window.parseInt) {\n Number.parseInt = window.parseInt;\n}\nif (!Number.parseFloat && window.parseFloat) {\n Number.parseFloat = window.parseFloat;\n}\nconst consider = {\n hex: true,\n leadingZeros: true,\n decimalPoint: \".\",\n eNotation: true\n //skipLike: /regex/\n};\nfunction toNumber$1(str, options = {}) {\n options = Object.assign({}, consider, options);\n if (!str || typeof str !== \"string\") return str;\n let trimmedStr = str.trim();\n if (options.skipLike !== void 0 && options.skipLike.test(trimmedStr)) return str;\n else if (options.hex && hexRegex.test(trimmedStr)) {\n return Number.parseInt(trimmedStr, 16);\n } else {\n const match = numRegex.exec(trimmedStr);\n if (match) {\n const sign = match[1];\n const leadingZeros = match[2];\n let numTrimmedByZeros = trimZeros(match[3]);\n const eNotation = match[4] || match[6];\n if (!options.leadingZeros && leadingZeros.length > 0 && sign && trimmedStr[2] !== \".\") return str;\n else if (!options.leadingZeros && leadingZeros.length > 0 && !sign && trimmedStr[1] !== \".\") return str;\n else {\n const num = Number(trimmedStr);\n const numStr = \"\" + num;\n if (numStr.search(/[eE]/) !== -1) {\n if (options.eNotation) return num;\n else return str;\n } else if (eNotation) {\n if (options.eNotation) return num;\n else return str;\n } else if (trimmedStr.indexOf(\".\") !== -1) {\n if (numStr === \"0\" && numTrimmedByZeros === \"\") return num;\n else if (numStr === numTrimmedByZeros) return num;\n else if (sign && numStr === \"-\" + numTrimmedByZeros) return num;\n else return str;\n }\n if (leadingZeros) {\n if (numTrimmedByZeros === numStr) return num;\n else if (sign + numTrimmedByZeros === numStr) return num;\n else return str;\n }\n if (trimmedStr === numStr) return num;\n else if (trimmedStr === sign + numStr) return num;\n return str;\n }\n } else {\n return str;\n }\n }\n}\nfunction trimZeros(numStr) {\n if (numStr && numStr.indexOf(\".\") !== -1) {\n numStr = numStr.replace(/0+$/, \"\");\n if (numStr === \".\") numStr = \"0\";\n else if (numStr[0] === \".\") numStr = \"0\" + numStr;\n else if (numStr[numStr.length - 1] === \".\") numStr = numStr.substr(0, numStr.length - 1);\n return numStr;\n }\n return numStr;\n}\nvar strnum = toNumber$1;\nfunction getIgnoreAttributesFn$2(ignoreAttributes2) {\n if (typeof ignoreAttributes2 === \"function\") {\n return ignoreAttributes2;\n }\n if (Array.isArray(ignoreAttributes2)) {\n return (attrName) => {\n for (const pattern of ignoreAttributes2) {\n if (typeof pattern === \"string\" && attrName === pattern) {\n return true;\n }\n if (pattern instanceof RegExp && pattern.test(attrName)) {\n return true;\n }\n }\n };\n }\n return () => false;\n}\nvar ignoreAttributes = getIgnoreAttributesFn$2;\nconst util = util$3;\nconst xmlNode = xmlNode$1;\nconst readDocType = DocTypeReader;\nconst toNumber = strnum;\nconst getIgnoreAttributesFn$1 = ignoreAttributes;\nlet OrderedObjParser$1 = class OrderedObjParser {\n constructor(options) {\n this.options = options;\n this.currentNode = null;\n this.tagsNodeStack = [];\n this.docTypeEntities = {};\n this.lastEntities = {\n \"apos\": { regex: /&(apos|#39|#x27);/g, val: \"'\" },\n \"gt\": { regex: /&(gt|#62|#x3E);/g, val: \">\" },\n \"lt\": { regex: /&(lt|#60|#x3C);/g, val: \"<\" },\n \"quot\": { regex: /&(quot|#34|#x22);/g, val: '\"' }\n };\n this.ampEntity = { regex: /&(amp|#38|#x26);/g, val: \"&\" };\n this.htmlEntities = {\n \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n \"cent\": { regex: /&(cent|#162);/g, val: \"¢\" },\n \"pound\": { regex: /&(pound|#163);/g, val: \"£\" },\n \"yen\": { regex: /&(yen|#165);/g, val: \"¥\" },\n \"euro\": { regex: /&(euro|#8364);/g, val: \"€\" },\n \"copyright\": { regex: /&(copy|#169);/g, val: \"©\" },\n \"reg\": { regex: /&(reg|#174);/g, val: \"®\" },\n \"inr\": { regex: /&(inr|#8377);/g, val: \"₹\" },\n \"num_dec\": { regex: /&#([0-9]{1,7});/g, val: (_, str) => String.fromCharCode(Number.parseInt(str, 10)) },\n \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val: (_, str) => String.fromCharCode(Number.parseInt(str, 16)) }\n };\n this.addExternalEntities = addExternalEntities;\n this.parseXml = parseXml;\n this.parseTextData = parseTextData;\n this.resolveNameSpace = resolveNameSpace;\n this.buildAttributesMap = buildAttributesMap;\n this.isItStopNode = isItStopNode;\n this.replaceEntitiesValue = replaceEntitiesValue$1;\n this.readStopNodeData = readStopNodeData;\n this.saveTextToParentTag = saveTextToParentTag;\n this.addChild = addChild;\n this.ignoreAttributesFn = getIgnoreAttributesFn$1(this.options.ignoreAttributes);\n }\n};\nfunction addExternalEntities(externalEntities) {\n const entKeys = Object.keys(externalEntities);\n for (let i2 = 0; i2 < entKeys.length; i2++) {\n const ent = entKeys[i2];\n this.lastEntities[ent] = {\n regex: new RegExp(\"&\" + ent + \";\", \"g\"),\n val: externalEntities[ent]\n };\n }\n}\nfunction parseTextData(val2, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n if (val2 !== void 0) {\n if (this.options.trimValues && !dontTrim) {\n val2 = val2.trim();\n }\n if (val2.length > 0) {\n if (!escapeEntities) val2 = this.replaceEntitiesValue(val2);\n const newval = this.options.tagValueProcessor(tagName, val2, jPath, hasAttributes, isLeafNode);\n if (newval === null || newval === void 0) {\n return val2;\n } else if (typeof newval !== typeof val2 || newval !== val2) {\n return newval;\n } else if (this.options.trimValues) {\n return parseValue(val2, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n const trimmedVal = val2.trim();\n if (trimmedVal === val2) {\n return parseValue(val2, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n return val2;\n }\n }\n }\n }\n}\nfunction resolveNameSpace(tagname) {\n if (this.options.removeNSPrefix) {\n const tags = tagname.split(\":\");\n const prefix = tagname.charAt(0) === \"/\" ? \"/\" : \"\";\n if (tags[0] === \"xmlns\") {\n return \"\";\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n}\nconst attrsRegx = new RegExp(`([^\\\\s=]+)\\\\s*(=\\\\s*(['\"])([\\\\s\\\\S]*?)\\\\3)?`, \"gm\");\nfunction buildAttributesMap(attrStr, jPath, tagName) {\n if (this.options.ignoreAttributes !== true && typeof attrStr === \"string\") {\n const matches = util.getAllMatches(attrStr, attrsRegx);\n const len = matches.length;\n const attrs = {};\n for (let i2 = 0; i2 < len; i2++) {\n const attrName = this.resolveNameSpace(matches[i2][1]);\n if (this.ignoreAttributesFn(attrName, jPath)) {\n continue;\n }\n let oldVal = matches[i2][4];\n let aName = this.options.attributeNamePrefix + attrName;\n if (attrName.length) {\n if (this.options.transformAttributeName) {\n aName = this.options.transformAttributeName(aName);\n }\n if (aName === \"__proto__\") aName = \"#__proto__\";\n if (oldVal !== void 0) {\n if (this.options.trimValues) {\n oldVal = oldVal.trim();\n }\n oldVal = this.replaceEntitiesValue(oldVal);\n const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n if (newVal === null || newVal === void 0) {\n attrs[aName] = oldVal;\n } else if (typeof newVal !== typeof oldVal || newVal !== oldVal) {\n attrs[aName] = newVal;\n } else {\n attrs[aName] = parseValue(\n oldVal,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n }\n } else if (this.options.allowBooleanAttributes) {\n attrs[aName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (this.options.attributesGroupName) {\n const attrCollection = {};\n attrCollection[this.options.attributesGroupName] = attrs;\n return attrCollection;\n }\n return attrs;\n }\n}\nconst parseXml = function(xmlData) {\n xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\");\n const xmlObj = new xmlNode(\"!xml\");\n let currentNode = xmlObj;\n let textData = \"\";\n let jPath = \"\";\n for (let i2 = 0; i2 < xmlData.length; i2++) {\n const ch = xmlData[i2];\n if (ch === \"<\") {\n if (xmlData[i2 + 1] === \"/\") {\n const closeIndex = findClosingIndex(xmlData, \">\", i2, \"Closing Tag is not closed.\");\n let tagName = xmlData.substring(i2 + 2, closeIndex).trim();\n if (this.options.removeNSPrefix) {\n const colonIndex = tagName.indexOf(\":\");\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n }\n }\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n if (currentNode) {\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n }\n const lastTagName = jPath.substring(jPath.lastIndexOf(\".\") + 1);\n if (tagName && this.options.unpairedTags.indexOf(tagName) !== -1) {\n throw new Error(`Unpaired tag can not be used as closing tag: `);\n }\n let propIndex = 0;\n if (lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1) {\n propIndex = jPath.lastIndexOf(\".\", jPath.lastIndexOf(\".\") - 1);\n this.tagsNodeStack.pop();\n } else {\n propIndex = jPath.lastIndexOf(\".\");\n }\n jPath = jPath.substring(0, propIndex);\n currentNode = this.tagsNodeStack.pop();\n textData = \"\";\n i2 = closeIndex;\n } else if (xmlData[i2 + 1] === \"?\") {\n let tagData = readTagExp(xmlData, i2, false, \"?>\");\n if (!tagData) throw new Error(\"Pi Tag is not closed.\");\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n if (this.options.ignoreDeclaration && tagData.tagName === \"?xml\" || this.options.ignorePiTags) ;\n else {\n const childNode = new xmlNode(tagData.tagName);\n childNode.add(this.options.textNodeName, \"\");\n if (tagData.tagName !== tagData.tagExp && tagData.attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath, tagData.tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n }\n i2 = tagData.closeIndex + 1;\n } else if (xmlData.substr(i2 + 1, 3) === \"!--\") {\n const endIndex = findClosingIndex(xmlData, \"-->\", i2 + 4, \"Comment is not closed.\");\n if (this.options.commentPropName) {\n const comment = xmlData.substring(i2 + 4, endIndex - 2);\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n currentNode.add(this.options.commentPropName, [{ [this.options.textNodeName]: comment }]);\n }\n i2 = endIndex;\n } else if (xmlData.substr(i2 + 1, 2) === \"!D\") {\n const result = readDocType(xmlData, i2);\n this.docTypeEntities = result.entities;\n i2 = result.i;\n } else if (xmlData.substr(i2 + 1, 2) === \"![\") {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i2, \"CDATA is not closed.\") - 2;\n const tagExp = xmlData.substring(i2 + 9, closeIndex);\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n let val2 = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true, true);\n if (val2 == void 0) val2 = \"\";\n if (this.options.cdataPropName) {\n currentNode.add(this.options.cdataPropName, [{ [this.options.textNodeName]: tagExp }]);\n } else {\n currentNode.add(this.options.textNodeName, val2);\n }\n i2 = closeIndex + 2;\n } else {\n let result = readTagExp(xmlData, i2, this.options.removeNSPrefix);\n let tagName = result.tagName;\n const rawTagName = result.rawTagName;\n let tagExp = result.tagExp;\n let attrExpPresent = result.attrExpPresent;\n let closeIndex = result.closeIndex;\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n if (currentNode && textData) {\n if (currentNode.tagname !== \"!xml\") {\n textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n }\n }\n const lastTag = currentNode;\n if (lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1) {\n currentNode = this.tagsNodeStack.pop();\n jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n }\n if (tagName !== xmlObj.tagname) {\n jPath += jPath ? \".\" + tagName : tagName;\n }\n if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) {\n let tagContent = \"\";\n if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n } else {\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n i2 = result.closeIndex;\n } else if (this.options.unpairedTags.indexOf(tagName) !== -1) {\n i2 = result.closeIndex;\n } else {\n const result2 = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n if (!result2) throw new Error(`Unexpected end of ${rawTagName}`);\n i2 = result2.i;\n tagContent = result2.tagContent;\n }\n const childNode = new xmlNode(tagName);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n if (tagContent) {\n tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n }\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n childNode.add(this.options.textNodeName, tagContent);\n this.addChild(currentNode, childNode, jPath);\n } else {\n if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n } else {\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n const childNode = new xmlNode(tagName);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n } else {\n const childNode = new xmlNode(tagName);\n this.tagsNodeStack.push(currentNode);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n currentNode = childNode;\n }\n textData = \"\";\n i2 = closeIndex;\n }\n }\n } else {\n textData += xmlData[i2];\n }\n }\n return xmlObj.child;\n};\nfunction addChild(currentNode, childNode, jPath) {\n const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"]);\n if (result === false) ;\n else if (typeof result === \"string\") {\n childNode.tagname = result;\n currentNode.addChild(childNode);\n } else {\n currentNode.addChild(childNode);\n }\n}\nconst replaceEntitiesValue$1 = function(val2) {\n if (this.options.processEntities) {\n for (let entityName2 in this.docTypeEntities) {\n const entity = this.docTypeEntities[entityName2];\n val2 = val2.replace(entity.regx, entity.val);\n }\n for (let entityName2 in this.lastEntities) {\n const entity = this.lastEntities[entityName2];\n val2 = val2.replace(entity.regex, entity.val);\n }\n if (this.options.htmlEntities) {\n for (let entityName2 in this.htmlEntities) {\n const entity = this.htmlEntities[entityName2];\n val2 = val2.replace(entity.regex, entity.val);\n }\n }\n val2 = val2.replace(this.ampEntity.regex, this.ampEntity.val);\n }\n return val2;\n};\nfunction saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n if (textData) {\n if (isLeafNode === void 0) isLeafNode = Object.keys(currentNode.child).length === 0;\n textData = this.parseTextData(\n textData,\n currentNode.tagname,\n jPath,\n false,\n currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n isLeafNode\n );\n if (textData !== void 0 && textData !== \"\")\n currentNode.add(this.options.textNodeName, textData);\n textData = \"\";\n }\n return textData;\n}\nfunction isItStopNode(stopNodes, jPath, currentTagName) {\n const allNodesExp = \"*.\" + currentTagName;\n for (const stopNodePath in stopNodes) {\n const stopNodeExp = stopNodes[stopNodePath];\n if (allNodesExp === stopNodeExp || jPath === stopNodeExp) return true;\n }\n return false;\n}\nfunction tagExpWithClosingIndex(xmlData, i2, closingChar = \">\") {\n let attrBoundary;\n let tagExp = \"\";\n for (let index = i2; index < xmlData.length; index++) {\n let ch = xmlData[index];\n if (attrBoundary) {\n if (ch === attrBoundary) attrBoundary = \"\";\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === closingChar[0]) {\n if (closingChar[1]) {\n if (xmlData[index + 1] === closingChar[1]) {\n return {\n data: tagExp,\n index\n };\n }\n } else {\n return {\n data: tagExp,\n index\n };\n }\n } else if (ch === \"\t\") {\n ch = \" \";\n }\n tagExp += ch;\n }\n}\nfunction findClosingIndex(xmlData, str, i2, errMsg) {\n const closingIndex = xmlData.indexOf(str, i2);\n if (closingIndex === -1) {\n throw new Error(errMsg);\n } else {\n return closingIndex + str.length - 1;\n }\n}\nfunction readTagExp(xmlData, i2, removeNSPrefix, closingChar = \">\") {\n const result = tagExpWithClosingIndex(xmlData, i2 + 1, closingChar);\n if (!result) return;\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.search(/\\s/);\n let tagName = tagExp;\n let attrExpPresent = true;\n if (separatorIndex !== -1) {\n tagName = tagExp.substring(0, separatorIndex);\n tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n }\n const rawTagName = tagName;\n if (removeNSPrefix) {\n const colonIndex = tagName.indexOf(\":\");\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n }\n }\n return {\n tagName,\n tagExp,\n closeIndex,\n attrExpPresent,\n rawTagName\n };\n}\nfunction readStopNodeData(xmlData, tagName, i2) {\n const startIndex = i2;\n let openTagCount = 1;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n if (xmlData[i2 + 1] === \"/\") {\n const closeIndex = findClosingIndex(xmlData, \">\", i2, `${tagName} is not closed`);\n let closeTagName = xmlData.substring(i2 + 2, closeIndex).trim();\n if (closeTagName === tagName) {\n openTagCount--;\n if (openTagCount === 0) {\n return {\n tagContent: xmlData.substring(startIndex, i2),\n i: closeIndex\n };\n }\n }\n i2 = closeIndex;\n } else if (xmlData[i2 + 1] === \"?\") {\n const closeIndex = findClosingIndex(xmlData, \"?>\", i2 + 1, \"StopNode is not closed.\");\n i2 = closeIndex;\n } else if (xmlData.substr(i2 + 1, 3) === \"!--\") {\n const closeIndex = findClosingIndex(xmlData, \"-->\", i2 + 3, \"StopNode is not closed.\");\n i2 = closeIndex;\n } else if (xmlData.substr(i2 + 1, 2) === \"![\") {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i2, \"StopNode is not closed.\") - 2;\n i2 = closeIndex;\n } else {\n const tagData = readTagExp(xmlData, i2, \">\");\n if (tagData) {\n const openTagName = tagData && tagData.tagName;\n if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length - 1] !== \"/\") {\n openTagCount++;\n }\n i2 = tagData.closeIndex;\n }\n }\n }\n }\n}\nfunction parseValue(val2, shouldParse, options) {\n if (shouldParse && typeof val2 === \"string\") {\n const newval = val2.trim();\n if (newval === \"true\") return true;\n else if (newval === \"false\") return false;\n else return toNumber(val2, options);\n } else {\n if (util.isExist(val2)) {\n return val2;\n } else {\n return \"\";\n }\n }\n}\nvar OrderedObjParser_1 = OrderedObjParser$1;\nvar node2json = {};\nfunction prettify$1(node, options) {\n return compress(node, options);\n}\nfunction compress(arr, options, jPath) {\n let text;\n const compressedObj = {};\n for (let i2 = 0; i2 < arr.length; i2++) {\n const tagObj = arr[i2];\n const property = propName$1(tagObj);\n let newJpath = \"\";\n if (jPath === void 0) newJpath = property;\n else newJpath = jPath + \".\" + property;\n if (property === options.textNodeName) {\n if (text === void 0) text = tagObj[property];\n else text += \"\" + tagObj[property];\n } else if (property === void 0) {\n continue;\n } else if (tagObj[property]) {\n let val2 = compress(tagObj[property], options, newJpath);\n const isLeaf = isLeafTag(val2, options);\n if (tagObj[\":@\"]) {\n assignAttributes(val2, tagObj[\":@\"], newJpath, options);\n } else if (Object.keys(val2).length === 1 && val2[options.textNodeName] !== void 0 && !options.alwaysCreateTextNode) {\n val2 = val2[options.textNodeName];\n } else if (Object.keys(val2).length === 0) {\n if (options.alwaysCreateTextNode) val2[options.textNodeName] = \"\";\n else val2 = \"\";\n }\n if (compressedObj[property] !== void 0 && compressedObj.hasOwnProperty(property)) {\n if (!Array.isArray(compressedObj[property])) {\n compressedObj[property] = [compressedObj[property]];\n }\n compressedObj[property].push(val2);\n } else {\n if (options.isArray(property, newJpath, isLeaf)) {\n compressedObj[property] = [val2];\n } else {\n compressedObj[property] = val2;\n }\n }\n }\n }\n if (typeof text === \"string\") {\n if (text.length > 0) compressedObj[options.textNodeName] = text;\n } else if (text !== void 0) compressedObj[options.textNodeName] = text;\n return compressedObj;\n}\nfunction propName$1(obj) {\n const keys = Object.keys(obj);\n for (let i2 = 0; i2 < keys.length; i2++) {\n const key = keys[i2];\n if (key !== \":@\") return key;\n }\n}\nfunction assignAttributes(obj, attrMap, jpath, options) {\n if (attrMap) {\n const keys = Object.keys(attrMap);\n const len = keys.length;\n for (let i2 = 0; i2 < len; i2++) {\n const atrrName = keys[i2];\n if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n obj[atrrName] = [attrMap[atrrName]];\n } else {\n obj[atrrName] = attrMap[atrrName];\n }\n }\n }\n}\nfunction isLeafTag(obj, options) {\n const { textNodeName } = options;\n const propCount = Object.keys(obj).length;\n if (propCount === 0) {\n return true;\n }\n if (propCount === 1 && (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)) {\n return true;\n }\n return false;\n}\nnode2json.prettify = prettify$1;\nconst { buildOptions } = OptionsBuilder;\nconst OrderedObjParser2 = OrderedObjParser_1;\nconst { prettify } = node2json;\nconst validator$1 = validator$2;\nlet XMLParser$1 = class XMLParser {\n constructor(options) {\n this.externalEntities = {};\n this.options = buildOptions(options);\n }\n /**\n * Parse XML dats to JS object \n * @param {string|Buffer} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(xmlData, validationOption) {\n if (typeof xmlData === \"string\") ;\n else if (xmlData.toString) {\n xmlData = xmlData.toString();\n } else {\n throw new Error(\"XML data is accepted in String or Bytes[] form.\");\n }\n if (validationOption) {\n if (validationOption === true) validationOption = {};\n const result = validator$1.validate(xmlData, validationOption);\n if (result !== true) {\n throw Error(`${result.err.msg}:${result.err.line}:${result.err.col}`);\n }\n }\n const orderedObjParser = new OrderedObjParser2(this.options);\n orderedObjParser.addExternalEntities(this.externalEntities);\n const orderedResult = orderedObjParser.parseXml(xmlData);\n if (this.options.preserveOrder || orderedResult === void 0) return orderedResult;\n else return prettify(orderedResult, this.options);\n }\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(key, value) {\n if (value.indexOf(\"&\") !== -1) {\n throw new Error(\"Entity value can't have '&'\");\n } else if (key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1) {\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for ' '\");\n } else if (value === \"&\") {\n throw new Error(\"An entity with value '&' is not permitted\");\n } else {\n this.externalEntities[key] = value;\n }\n }\n};\nvar XMLParser_1 = XMLParser$1;\nconst EOL = \"\\n\";\nfunction toXml(jArray, options) {\n let indentation = \"\";\n if (options.format && options.indentBy.length > 0) {\n indentation = EOL;\n }\n return arrToStr(jArray, options, \"\", indentation);\n}\nfunction arrToStr(arr, options, jPath, indentation) {\n let xmlStr = \"\";\n let isPreviousElementTag = false;\n for (let i2 = 0; i2 < arr.length; i2++) {\n const tagObj = arr[i2];\n const tagName = propName(tagObj);\n if (tagName === void 0) continue;\n let newJPath = \"\";\n if (jPath.length === 0) newJPath = tagName;\n else newJPath = `${jPath}.${tagName}`;\n if (tagName === options.textNodeName) {\n let tagText = tagObj[tagName];\n if (!isStopNode(newJPath, options)) {\n tagText = options.tagValueProcessor(tagName, tagText);\n tagText = replaceEntitiesValue(tagText, options);\n }\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += tagText;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.cdataPropName) {\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += ``;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.commentPropName) {\n xmlStr += indentation + ``;\n isPreviousElementTag = true;\n continue;\n } else if (tagName[0] === \"?\") {\n const attStr2 = attr_to_str(tagObj[\":@\"], options);\n const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\";\n xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr2}?>`;\n isPreviousElementTag = true;\n continue;\n }\n let newIdentation = indentation;\n if (newIdentation !== \"\") {\n newIdentation += options.indentBy;\n }\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tagStart = indentation + `<${tagName}${attStr}`;\n const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n if (options.unpairedTags.indexOf(tagName) !== -1) {\n if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n else xmlStr += tagStart + \"/>\";\n } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n xmlStr += tagStart + \"/>\";\n } else if (tagValue && tagValue.endsWith(\">\")) {\n xmlStr += tagStart + `>${tagValue}${indentation}`;\n } else {\n xmlStr += tagStart + \">\";\n if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"`;\n }\n isPreviousElementTag = true;\n }\n return xmlStr;\n}\nfunction propName(obj) {\n const keys = Object.keys(obj);\n for (let i2 = 0; i2 < keys.length; i2++) {\n const key = keys[i2];\n if (!obj.hasOwnProperty(key)) continue;\n if (key !== \":@\") return key;\n }\n}\nfunction attr_to_str(attrMap, options) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n if (!attrMap.hasOwnProperty(attr)) continue;\n let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n attrVal = replaceEntitiesValue(attrVal, options);\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n}\nfunction isStopNode(jPath, options) {\n jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n for (let index in options.stopNodes) {\n if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n }\n return false;\n}\nfunction replaceEntitiesValue(textValue, options) {\n if (textValue && textValue.length > 0 && options.processEntities) {\n for (let i2 = 0; i2 < options.entities.length; i2++) {\n const entity = options.entities[i2];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n}\nvar orderedJs2Xml = toXml;\nconst buildFromOrderedJs = orderedJs2Xml;\nconst getIgnoreAttributesFn = ignoreAttributes;\nconst defaultOptions = {\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n textNodeName: \"#text\",\n ignoreAttributes: true,\n cdataPropName: false,\n format: false,\n indentBy: \" \",\n suppressEmptyNode: false,\n suppressUnpairedNode: true,\n suppressBooleanAttributes: true,\n tagValueProcessor: function(key, a2) {\n return a2;\n },\n attributeValueProcessor: function(attrName, a2) {\n return a2;\n },\n preserveOrder: false,\n commentPropName: false,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&\" },\n //it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \">\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n { regex: new RegExp(\"'\", \"g\"), val: \"'\" },\n { regex: new RegExp('\"', \"g\"), val: \""\" }\n ],\n processEntities: true,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: false\n};\nfunction Builder(options) {\n this.options = Object.assign({}, defaultOptions, options);\n if (this.options.ignoreAttributes === true || this.options.attributesGroupName) {\n this.isAttribute = function() {\n return false;\n };\n } else {\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes);\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n this.processTextOrObjNode = processTextOrObjNode;\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = \">\\n\";\n this.newLine = \"\\n\";\n } else {\n this.indentate = function() {\n return \"\";\n };\n this.tagEndChar = \">\";\n this.newLine = \"\";\n }\n}\nBuilder.prototype.build = function(jObj) {\n if (this.options.preserveOrder) {\n return buildFromOrderedJs(jObj, this.options);\n } else {\n if (Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1) {\n jObj = {\n [this.options.arrayNodeName]: jObj\n };\n }\n return this.j2x(jObj, 0, []).val;\n }\n};\nBuilder.prototype.j2x = function(jObj, level, ajPath) {\n let attrStr = \"\";\n let val2 = \"\";\n const jPath = ajPath.join(\".\");\n for (let key in jObj) {\n if (!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n if (typeof jObj[key] === \"undefined\") {\n if (this.isAttribute(key)) {\n val2 += \"\";\n }\n } else if (jObj[key] === null) {\n if (this.isAttribute(key)) {\n val2 += \"\";\n } else if (key[0] === \"?\") {\n val2 += this.indentate(level) + \"<\" + key + \"?\" + this.tagEndChar;\n } else {\n val2 += this.indentate(level) + \"<\" + key + \"/\" + this.tagEndChar;\n }\n } else if (jObj[key] instanceof Date) {\n val2 += this.buildTextValNode(jObj[key], key, \"\", level);\n } else if (typeof jObj[key] !== \"object\") {\n const attr = this.isAttribute(key);\n if (attr && !this.ignoreAttributesFn(attr, jPath)) {\n attrStr += this.buildAttrPairStr(attr, \"\" + jObj[key]);\n } else if (!attr) {\n if (key === this.options.textNodeName) {\n let newval = this.options.tagValueProcessor(key, \"\" + jObj[key]);\n val2 += this.replaceEntitiesValue(newval);\n } else {\n val2 += this.buildTextValNode(jObj[key], key, \"\", level);\n }\n }\n } else if (Array.isArray(jObj[key])) {\n const arrLen = jObj[key].length;\n let listTagVal = \"\";\n let listTagAttr = \"\";\n for (let j2 = 0; j2 < arrLen; j2++) {\n const item = jObj[key][j2];\n if (typeof item === \"undefined\") ;\n else if (item === null) {\n if (key[0] === \"?\") val2 += this.indentate(level) + \"<\" + key + \"?\" + this.tagEndChar;\n else val2 += this.indentate(level) + \"<\" + key + \"/\" + this.tagEndChar;\n } else if (typeof item === \"object\") {\n if (this.options.oneListGroup) {\n const result = this.j2x(item, level + 1, ajPath.concat(key));\n listTagVal += result.val;\n if (this.options.attributesGroupName && item.hasOwnProperty(this.options.attributesGroupName)) {\n listTagAttr += result.attrStr;\n }\n } else {\n listTagVal += this.processTextOrObjNode(item, key, level, ajPath);\n }\n } else {\n if (this.options.oneListGroup) {\n let textValue = this.options.tagValueProcessor(key, item);\n textValue = this.replaceEntitiesValue(textValue);\n listTagVal += textValue;\n } else {\n listTagVal += this.buildTextValNode(item, key, \"\", level);\n }\n }\n }\n if (this.options.oneListGroup) {\n listTagVal = this.buildObjectNode(listTagVal, key, listTagAttr, level);\n }\n val2 += listTagVal;\n } else {\n if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j2 = 0; j2 < L; j2++) {\n attrStr += this.buildAttrPairStr(Ks[j2], \"\" + jObj[key][Ks[j2]]);\n }\n } else {\n val2 += this.processTextOrObjNode(jObj[key], key, level, ajPath);\n }\n }\n }\n return { attrStr, val: val2 };\n};\nBuilder.prototype.buildAttrPairStr = function(attrName, val2) {\n val2 = this.options.attributeValueProcessor(attrName, \"\" + val2);\n val2 = this.replaceEntitiesValue(val2);\n if (this.options.suppressBooleanAttributes && val2 === \"true\") {\n return \" \" + attrName;\n } else return \" \" + attrName + '=\"' + val2 + '\"';\n};\nfunction processTextOrObjNode(object, key, level, ajPath) {\n const result = this.j2x(object, level + 1, ajPath.concat(key));\n if (object[this.options.textNodeName] !== void 0 && Object.keys(object).length === 1) {\n return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n } else {\n return this.buildObjectNode(result.val, key, result.attrStr, level);\n }\n}\nBuilder.prototype.buildObjectNode = function(val2, key, attrStr, level) {\n if (val2 === \"\") {\n if (key[0] === \"?\") return this.indentate(level) + \"<\" + key + attrStr + \"?\" + this.tagEndChar;\n else {\n return this.indentate(level) + \"<\" + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }\n } else {\n let tagEndExp = \"\" + val2 + tagEndExp;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n return this.indentate(level) + `` + this.newLine;\n } else {\n return this.indentate(level) + \"<\" + key + attrStr + piClosingChar + this.tagEndChar + val2 + this.indentate(level) + tagEndExp;\n }\n }\n};\nBuilder.prototype.closeTag = function(key) {\n let closeTag = \"\";\n if (this.options.unpairedTags.indexOf(key) !== -1) {\n if (!this.options.suppressUnpairedNode) closeTag = \"/\";\n } else if (this.options.suppressEmptyNode) {\n closeTag = \"/\";\n } else {\n closeTag = `>` + this.newLine;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n return this.indentate(level) + `` + this.newLine;\n } else if (key[0] === \"?\") {\n return this.indentate(level) + \"<\" + key + attrStr + \"?\" + this.tagEndChar;\n } else {\n let textValue = this.options.tagValueProcessor(key, val2);\n textValue = this.replaceEntitiesValue(textValue);\n if (textValue === \"\") {\n return this.indentate(level) + \"<\" + key + attrStr + this.closeTag(key) + this.tagEndChar;\n } else {\n return this.indentate(level) + \"<\" + key + attrStr + \">\" + textValue + \" 0 && this.options.processEntities) {\n for (let i2 = 0; i2 < this.options.entities.length; i2++) {\n const entity = this.options.entities[i2];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n};\nfunction indentate(level) {\n return this.options.indentBy.repeat(level);\n}\nfunction isAttribute(name) {\n if (name.startsWith(this.options.attributeNamePrefix) && name !== this.options.textNodeName) {\n return name.substr(this.attrPrefixLen);\n } else {\n return false;\n }\n}\nvar json2xml = Builder;\nconst validator = validator$2;\nconst XMLParser2 = XMLParser_1;\nconst XMLBuilder = json2xml;\nvar fxp = {\n XMLParser: XMLParser2,\n XMLValidator: validator,\n XMLBuilder\n};\nfunction isSvg(string) {\n if (typeof string !== \"string\") {\n throw new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n }\n string = string.trim();\n if (string.length === 0) {\n return false;\n }\n if (fxp.XMLValidator.validate(string) !== true) {\n return false;\n }\n let jsonObject;\n const parser = new fxp.XMLParser();\n try {\n jsonObject = parser.parse(string);\n } catch {\n return false;\n }\n if (!jsonObject) {\n return false;\n }\n if (!Object.keys(jsonObject).some((x) => x.toLowerCase() === \"svg\")) {\n return false;\n }\n return true;\n}\nclass View {\n _view;\n constructor(view) {\n isValidView(view);\n this._view = view;\n }\n get id() {\n return this._view.id;\n }\n get name() {\n return this._view.name;\n }\n get caption() {\n return this._view.caption;\n }\n get emptyTitle() {\n return this._view.emptyTitle;\n }\n get emptyCaption() {\n return this._view.emptyCaption;\n }\n get getContents() {\n return this._view.getContents;\n }\n get icon() {\n return this._view.icon;\n }\n set icon(icon) {\n this._view.icon = icon;\n }\n get order() {\n return this._view.order;\n }\n set order(order) {\n this._view.order = order;\n }\n get params() {\n return this._view.params;\n }\n set params(params) {\n this._view.params = params;\n }\n get columns() {\n return this._view.columns;\n }\n get emptyView() {\n return this._view.emptyView;\n }\n get parent() {\n return this._view.parent;\n }\n get sticky() {\n return this._view.sticky;\n }\n get expanded() {\n return this._view.expanded;\n }\n set expanded(expanded) {\n this._view.expanded = expanded;\n }\n get defaultSortKey() {\n return this._view.defaultSortKey;\n }\n get loadChildViews() {\n return this._view.loadChildViews;\n }\n}\nconst isValidView = function(view) {\n if (!view.id || typeof view.id !== \"string\") {\n throw new Error(\"View id is required and must be a string\");\n }\n if (!view.name || typeof view.name !== \"string\") {\n throw new Error(\"View name is required and must be a string\");\n }\n if (\"caption\" in view && typeof view.caption !== \"string\") {\n throw new Error(\"View caption must be a string\");\n }\n if (!view.getContents || typeof view.getContents !== \"function\") {\n throw new Error(\"View getContents is required and must be a function\");\n }\n if (!view.icon || typeof view.icon !== \"string\" || !isSvg(view.icon)) {\n throw new Error(\"View icon is required and must be a valid svg string\");\n }\n if (\"order\" in view && typeof view.order !== \"number\") {\n throw new Error(\"View order must be a number\");\n }\n if (view.columns) {\n view.columns.forEach((column) => {\n if (!(column instanceof Column)) {\n throw new Error(\"View columns must be an array of Column. Invalid column found\");\n }\n });\n }\n if (view.emptyView && typeof view.emptyView !== \"function\") {\n throw new Error(\"View emptyView must be a function\");\n }\n if (view.parent && typeof view.parent !== \"string\") {\n throw new Error(\"View parent must be a string\");\n }\n if (\"sticky\" in view && typeof view.sticky !== \"boolean\") {\n throw new Error(\"View sticky must be a boolean\");\n }\n if (\"expanded\" in view && typeof view.expanded !== \"boolean\") {\n throw new Error(\"View expanded must be a boolean\");\n }\n if (view.defaultSortKey && typeof view.defaultSortKey !== \"string\") {\n throw new Error(\"View defaultSortKey must be a string\");\n }\n if (view.loadChildViews && typeof view.loadChildViews !== \"function\") {\n throw new Error(\"View loadChildViews must be a function\");\n }\n return true;\n};\nconst debug$1 = typeof process === \"object\" && process.env && process.env.NODE_DEBUG && /\\bsemver\\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error(\"SEMVER\", ...args) : () => {\n};\nvar debug_1 = debug$1;\nconst SEMVER_SPEC_VERSION = \"2.0.0\";\nconst MAX_LENGTH$1 = 256;\nconst MAX_SAFE_INTEGER$1 = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */\n9007199254740991;\nconst MAX_SAFE_COMPONENT_LENGTH = 16;\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH$1 - 6;\nconst RELEASE_TYPES = [\n \"major\",\n \"premajor\",\n \"minor\",\n \"preminor\",\n \"patch\",\n \"prepatch\",\n \"prerelease\"\n];\nvar constants = {\n MAX_LENGTH: MAX_LENGTH$1,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER: MAX_SAFE_INTEGER$1,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 1,\n FLAG_LOOSE: 2\n};\nvar re$1 = { exports: {} };\n(function(module, exports) {\n const {\n MAX_SAFE_COMPONENT_LENGTH: MAX_SAFE_COMPONENT_LENGTH2,\n MAX_SAFE_BUILD_LENGTH: MAX_SAFE_BUILD_LENGTH2,\n MAX_LENGTH: MAX_LENGTH2\n } = constants;\n const debug2 = debug_1;\n exports = module.exports = {};\n const re2 = exports.re = [];\n const safeRe = exports.safeRe = [];\n const src = exports.src = [];\n const t3 = exports.t = {};\n let R = 0;\n const LETTERDASHNUMBER = \"[a-zA-Z0-9-]\";\n const safeRegexReplacements = [\n [\"\\\\s\", 1],\n [\"\\\\d\", MAX_LENGTH2],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH2]\n ];\n const makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`);\n }\n return value;\n };\n const createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value);\n const index = R++;\n debug2(name, index, value);\n t3[name] = index;\n src[index] = value;\n re2[index] = new RegExp(value, isGlobal ? \"g\" : void 0);\n safeRe[index] = new RegExp(safe, isGlobal ? \"g\" : void 0);\n };\n createToken(\"NUMERICIDENTIFIER\", \"0|[1-9]\\\\d*\");\n createToken(\"NUMERICIDENTIFIERLOOSE\", \"\\\\d+\");\n createToken(\"NONNUMERICIDENTIFIER\", `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);\n createToken(\"MAINVERSION\", `(${src[t3.NUMERICIDENTIFIER]})\\\\.(${src[t3.NUMERICIDENTIFIER]})\\\\.(${src[t3.NUMERICIDENTIFIER]})`);\n createToken(\"MAINVERSIONLOOSE\", `(${src[t3.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t3.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t3.NUMERICIDENTIFIERLOOSE]})`);\n createToken(\"PRERELEASEIDENTIFIER\", `(?:${src[t3.NUMERICIDENTIFIER]}|${src[t3.NONNUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASEIDENTIFIERLOOSE\", `(?:${src[t3.NUMERICIDENTIFIERLOOSE]}|${src[t3.NONNUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASE\", `(?:-(${src[t3.PRERELEASEIDENTIFIER]}(?:\\\\.${src[t3.PRERELEASEIDENTIFIER]})*))`);\n createToken(\"PRERELEASELOOSE\", `(?:-?(${src[t3.PRERELEASEIDENTIFIERLOOSE]}(?:\\\\.${src[t3.PRERELEASEIDENTIFIERLOOSE]})*))`);\n createToken(\"BUILDIDENTIFIER\", `${LETTERDASHNUMBER}+`);\n createToken(\"BUILD\", `(?:\\\\+(${src[t3.BUILDIDENTIFIER]}(?:\\\\.${src[t3.BUILDIDENTIFIER]})*))`);\n createToken(\"FULLPLAIN\", `v?${src[t3.MAINVERSION]}${src[t3.PRERELEASE]}?${src[t3.BUILD]}?`);\n createToken(\"FULL\", `^${src[t3.FULLPLAIN]}$`);\n createToken(\"LOOSEPLAIN\", `[v=\\\\s]*${src[t3.MAINVERSIONLOOSE]}${src[t3.PRERELEASELOOSE]}?${src[t3.BUILD]}?`);\n createToken(\"LOOSE\", `^${src[t3.LOOSEPLAIN]}$`);\n createToken(\"GTLT\", \"((?:<|>)?=?)\");\n createToken(\"XRANGEIDENTIFIERLOOSE\", `${src[t3.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`);\n createToken(\"XRANGEIDENTIFIER\", `${src[t3.NUMERICIDENTIFIER]}|x|X|\\\\*`);\n createToken(\"XRANGEPLAIN\", `[v=\\\\s]*(${src[t3.XRANGEIDENTIFIER]})(?:\\\\.(${src[t3.XRANGEIDENTIFIER]})(?:\\\\.(${src[t3.XRANGEIDENTIFIER]})(?:${src[t3.PRERELEASE]})?${src[t3.BUILD]}?)?)?`);\n createToken(\"XRANGEPLAINLOOSE\", `[v=\\\\s]*(${src[t3.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t3.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t3.XRANGEIDENTIFIERLOOSE]})(?:${src[t3.PRERELEASELOOSE]})?${src[t3.BUILD]}?)?)?`);\n createToken(\"XRANGE\", `^${src[t3.GTLT]}\\\\s*${src[t3.XRANGEPLAIN]}$`);\n createToken(\"XRANGELOOSE\", `^${src[t3.GTLT]}\\\\s*${src[t3.XRANGEPLAINLOOSE]}$`);\n createToken(\"COERCEPLAIN\", `${\"(^|[^\\\\d])(\\\\d{1,\"}${MAX_SAFE_COMPONENT_LENGTH2}})(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH2}}))?(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH2}}))?`);\n createToken(\"COERCE\", `${src[t3.COERCEPLAIN]}(?:$|[^\\\\d])`);\n createToken(\"COERCEFULL\", src[t3.COERCEPLAIN] + `(?:${src[t3.PRERELEASE]})?(?:${src[t3.BUILD]})?(?:$|[^\\\\d])`);\n createToken(\"COERCERTL\", src[t3.COERCE], true);\n createToken(\"COERCERTLFULL\", src[t3.COERCEFULL], true);\n createToken(\"LONETILDE\", \"(?:~>?)\");\n createToken(\"TILDETRIM\", `(\\\\s*)${src[t3.LONETILDE]}\\\\s+`, true);\n exports.tildeTrimReplace = \"$1~\";\n createToken(\"TILDE\", `^${src[t3.LONETILDE]}${src[t3.XRANGEPLAIN]}$`);\n createToken(\"TILDELOOSE\", `^${src[t3.LONETILDE]}${src[t3.XRANGEPLAINLOOSE]}$`);\n createToken(\"LONECARET\", \"(?:\\\\^)\");\n createToken(\"CARETTRIM\", `(\\\\s*)${src[t3.LONECARET]}\\\\s+`, true);\n exports.caretTrimReplace = \"$1^\";\n createToken(\"CARET\", `^${src[t3.LONECARET]}${src[t3.XRANGEPLAIN]}$`);\n createToken(\"CARETLOOSE\", `^${src[t3.LONECARET]}${src[t3.XRANGEPLAINLOOSE]}$`);\n createToken(\"COMPARATORLOOSE\", `^${src[t3.GTLT]}\\\\s*(${src[t3.LOOSEPLAIN]})$|^$`);\n createToken(\"COMPARATOR\", `^${src[t3.GTLT]}\\\\s*(${src[t3.FULLPLAIN]})$|^$`);\n createToken(\"COMPARATORTRIM\", `(\\\\s*)${src[t3.GTLT]}\\\\s*(${src[t3.LOOSEPLAIN]}|${src[t3.XRANGEPLAIN]})`, true);\n exports.comparatorTrimReplace = \"$1$2$3\";\n createToken(\"HYPHENRANGE\", `^\\\\s*(${src[t3.XRANGEPLAIN]})\\\\s+-\\\\s+(${src[t3.XRANGEPLAIN]})\\\\s*$`);\n createToken(\"HYPHENRANGELOOSE\", `^\\\\s*(${src[t3.XRANGEPLAINLOOSE]})\\\\s+-\\\\s+(${src[t3.XRANGEPLAINLOOSE]})\\\\s*$`);\n createToken(\"STAR\", \"(<|>)?=?\\\\s*\\\\*\");\n createToken(\"GTE0\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$\");\n createToken(\"GTE0PRE\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$\");\n})(re$1, re$1.exports);\nvar reExports = re$1.exports;\nconst looseOption = Object.freeze({ loose: true });\nconst emptyOpts = Object.freeze({});\nconst parseOptions$1 = (options) => {\n if (!options) {\n return emptyOpts;\n }\n if (typeof options !== \"object\") {\n return looseOption;\n }\n return options;\n};\nvar parseOptions_1 = parseOptions$1;\nconst numeric = /^[0-9]+$/;\nconst compareIdentifiers$1 = (a2, b2) => {\n const anum = numeric.test(a2);\n const bnum = numeric.test(b2);\n if (anum && bnum) {\n a2 = +a2;\n b2 = +b2;\n }\n return a2 === b2 ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a2 < b2 ? -1 : 1;\n};\nconst rcompareIdentifiers = (a2, b2) => compareIdentifiers$1(b2, a2);\nvar identifiers = {\n compareIdentifiers: compareIdentifiers$1,\n rcompareIdentifiers\n};\nconst debug = debug_1;\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = constants;\nconst { safeRe: re, t: t2 } = reExports;\nconst parseOptions = parseOptions_1;\nconst { compareIdentifiers } = identifiers;\nlet SemVer$2 = class SemVer {\n constructor(version, options) {\n options = parseOptions(options);\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) {\n return version;\n } else {\n version = version.version;\n }\n } else if (typeof version !== \"string\") {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`);\n }\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n );\n }\n debug(\"SemVer\", version, options);\n this.options = options;\n this.loose = !!options.loose;\n this.includePrerelease = !!options.includePrerelease;\n const m2 = version.trim().match(options.loose ? re[t2.LOOSE] : re[t2.FULL]);\n if (!m2) {\n throw new TypeError(`Invalid Version: ${version}`);\n }\n this.raw = version;\n this.major = +m2[1];\n this.minor = +m2[2];\n this.patch = +m2[3];\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError(\"Invalid major version\");\n }\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError(\"Invalid minor version\");\n }\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError(\"Invalid patch version\");\n }\n if (!m2[4]) {\n this.prerelease = [];\n } else {\n this.prerelease = m2[4].split(\".\").map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id;\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num;\n }\n }\n return id;\n });\n }\n this.build = m2[5] ? m2[5].split(\".\") : [];\n this.format();\n }\n format() {\n this.version = `${this.major}.${this.minor}.${this.patch}`;\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join(\".\")}`;\n }\n return this.version;\n }\n toString() {\n return this.version;\n }\n compare(other) {\n debug(\"SemVer.compare\", this.version, this.options, other);\n if (!(other instanceof SemVer)) {\n if (typeof other === \"string\" && other === this.version) {\n return 0;\n }\n other = new SemVer(other, this.options);\n }\n if (other.version === this.version) {\n return 0;\n }\n return this.compareMain(other) || this.comparePre(other);\n }\n compareMain(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);\n }\n comparePre(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n if (this.prerelease.length && !other.prerelease.length) {\n return -1;\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1;\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0;\n }\n let i2 = 0;\n do {\n const a2 = this.prerelease[i2];\n const b2 = other.prerelease[i2];\n debug(\"prerelease compare\", i2, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i2);\n }\n compareBuild(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n let i2 = 0;\n do {\n const a2 = this.build[i2];\n const b2 = other.build[i2];\n debug(\"build compare\", i2, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i2);\n }\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc(release, identifier, identifierBase) {\n switch (release) {\n case \"premajor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor = 0;\n this.major++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"preminor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"prepatch\":\n this.prerelease.length = 0;\n this.inc(\"patch\", identifier, identifierBase);\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"prerelease\":\n if (this.prerelease.length === 0) {\n this.inc(\"patch\", identifier, identifierBase);\n }\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"major\":\n if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {\n this.major++;\n }\n this.minor = 0;\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"minor\":\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++;\n }\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"patch\":\n if (this.prerelease.length === 0) {\n this.patch++;\n }\n this.prerelease = [];\n break;\n case \"pre\": {\n const base = Number(identifierBase) ? 1 : 0;\n if (!identifier && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier is empty\");\n }\n if (this.prerelease.length === 0) {\n this.prerelease = [base];\n } else {\n let i2 = this.prerelease.length;\n while (--i2 >= 0) {\n if (typeof this.prerelease[i2] === \"number\") {\n this.prerelease[i2]++;\n i2 = -2;\n }\n }\n if (i2 === -1) {\n if (identifier === this.prerelease.join(\".\") && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier already exists\");\n }\n this.prerelease.push(base);\n }\n }\n if (identifier) {\n let prerelease = [identifier, base];\n if (identifierBase === false) {\n prerelease = [identifier];\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease;\n }\n } else {\n this.prerelease = prerelease;\n }\n }\n break;\n }\n default:\n throw new Error(`invalid increment argument: ${release}`);\n }\n this.raw = this.format();\n if (this.build.length) {\n this.raw += `+${this.build.join(\".\")}`;\n }\n return this;\n }\n};\nvar semver = SemVer$2;\nconst SemVer$1 = semver;\nconst parse$1 = (version, options, throwErrors = false) => {\n if (version instanceof SemVer$1) {\n return version;\n }\n try {\n return new SemVer$1(version, options);\n } catch (er) {\n if (!throwErrors) {\n return null;\n }\n throw er;\n }\n};\nvar parse_1 = parse$1;\nconst parse = parse_1;\nconst valid = (version, options) => {\n const v = parse(version, options);\n return v ? v.version : null;\n};\nvar valid_1 = valid;\nconst valid$1 = /* @__PURE__ */ getDefaultExportFromCjs(valid_1);\nconst SemVer2 = semver;\nconst major = (a2, loose) => new SemVer2(a2, loose).major;\nvar major_1 = major;\nconst major$1 = /* @__PURE__ */ getDefaultExportFromCjs(major_1);\nclass ProxyBus {\n bus;\n constructor(bus2) {\n if (typeof bus2.getVersion !== \"function\" || !valid$1(bus2.getVersion())) {\n console.warn(\"Proxying an event bus with an unknown or invalid version\");\n } else if (major$1(bus2.getVersion()) !== major$1(this.getVersion())) {\n console.warn(\n \"Proxying an event bus of version \" + bus2.getVersion() + \" with \" + this.getVersion()\n );\n }\n this.bus = bus2;\n }\n getVersion() {\n return \"3.3.1\";\n }\n subscribe(name, handler) {\n this.bus.subscribe(name, handler);\n }\n unsubscribe(name, handler) {\n this.bus.unsubscribe(name, handler);\n }\n emit(name, event) {\n this.bus.emit(name, event);\n }\n}\nclass SimpleBus {\n handlers = /* @__PURE__ */ new Map();\n getVersion() {\n return \"3.3.1\";\n }\n subscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).concat(\n handler\n )\n );\n }\n unsubscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).filter((h2) => h2 !== handler)\n );\n }\n emit(name, event) {\n (this.handlers.get(name) || []).forEach((h2) => {\n try {\n h2(event);\n } catch (e2) {\n console.error(\"could not invoke event listener\", e2);\n }\n });\n }\n}\nlet bus = null;\nfunction getBus() {\n if (bus !== null) {\n return bus;\n }\n if (typeof window === \"undefined\") {\n return new Proxy({}, {\n get: () => {\n return () => console.error(\n \"Window not available, EventBus can not be established!\"\n );\n }\n });\n }\n if (window.OC?._eventBus && typeof window._nc_event_bus === \"undefined\") {\n console.warn(\n \"found old event bus instance at OC._eventBus. Update your version!\"\n );\n window._nc_event_bus = window.OC._eventBus;\n }\n if (typeof window?._nc_event_bus !== \"undefined\") {\n bus = new ProxyBus(window._nc_event_bus);\n } else {\n bus = window._nc_event_bus = new SimpleBus();\n }\n return bus;\n}\nfunction emit(name, event) {\n getBus().emit(name, event);\n}\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nclass FileListFilter extends TypedEventTarget {\n id;\n order;\n constructor(id, order = 100) {\n super();\n this.id = id;\n this.order = order;\n }\n filter(nodes) {\n throw new Error(\"Not implemented\");\n }\n updateChips(chips) {\n this.dispatchTypedEvent(\"update:chips\", new CustomEvent(\"update:chips\", { detail: chips }));\n }\n filterUpdated() {\n this.dispatchTypedEvent(\"update:filter\", new CustomEvent(\"update:filter\"));\n }\n}\nfunction registerFileListFilter(filter) {\n if (!window._nc_filelist_filters) {\n window._nc_filelist_filters = /* @__PURE__ */ new Map();\n }\n if (window._nc_filelist_filters.has(filter.id)) {\n throw new Error(`File list filter \"${filter.id}\" already registered`);\n }\n window._nc_filelist_filters.set(filter.id, filter);\n emit(\"files:filter:added\", filter);\n}\nfunction unregisterFileListFilter(filterId) {\n if (window._nc_filelist_filters && window._nc_filelist_filters.has(filterId)) {\n window._nc_filelist_filters.delete(filterId);\n emit(\"files:filter:removed\", filterId);\n }\n}\nfunction getFileListFilters() {\n if (!window._nc_filelist_filters) {\n return [];\n }\n return [...window._nc_filelist_filters.values()];\n}\nconst addNewFileMenuEntry = function(entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.registerEntry(entry);\n};\nconst removeNewFileMenuEntry = function(entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.unregisterEntry(entry);\n};\nconst getNewFileMenuEntries = function(context) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.getEntries(context).sort((a2, b2) => {\n if (a2.order !== void 0 && b2.order !== void 0 && a2.order !== b2.order) {\n return a2.order - b2.order;\n }\n return a2.displayName.localeCompare(b2.displayName, void 0, { numeric: true, sensitivity: \"base\" });\n });\n};\nexport {\n Column,\n DefaultType,\n q as File,\n FileAction,\n FileListAction,\n FileListFilter,\n F as FileType,\n FilesSortingMode,\n s as Folder,\n Header,\n InvalidFilenameError,\n InvalidFilenameErrorReason,\n Navigation,\n NewMenuEntryCategory,\n N as Node,\n t as NodeStatus,\n P as Permission,\n View,\n addNewFileMenuEntry,\n c as davGetClient,\n l as davGetDefaultPropfind,\n m as davGetFavoritesReport,\n n as davGetRecentSearch,\n a as davGetRemoteURL,\n g as davGetRootPath,\n p as davParsePermissions,\n b as davRemoteURL,\n r as davResultToNode,\n d as davRootPath,\n h as defaultDavNamespaces,\n f as defaultDavProperties,\n formatFileSize,\n k as getDavNameSpaces,\n j as getDavProperties,\n e as getFavoriteNodes,\n getFileActions,\n getFileListActions,\n getFileListFilters,\n getFileListHeaders,\n getNavigation,\n getNewFileMenuEntries,\n getUniqueName,\n isFilenameValid,\n orderBy,\n parseFileSize,\n i as registerDavProperty,\n registerFileAction,\n registerFileListAction,\n registerFileListFilter,\n registerFileListHeaders,\n removeNewFileMenuEntry,\n sortNodes,\n unregisterFileListFilter,\n validateFilename\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=\" + {\"1521\":\"220bf24c534d0cf00eb6\",\"3239\":\"772824f8cf5b5f9de2ae\",\"4529\":\"d58021a92b28d315755f\",\"5085\":\"4f10478b69e38cddada5\",\"5706\":\"3153330af47fc26a725a\",\"6127\":\"8a567ca1f2d5ad91b181\",\"7265\":\"9c12ff5b3777606cd886\",\"8737\":\"8cbc3d2101ec1e37d965\"}[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(/#.*$/, \"\").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__(18539)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","sanitize","url","replace","requireAdmin","confirmPassword","get","options","axios","post","data","patch","put","delete","params","localStorage","getBuilder","persist","build","defaults","id","name","usercount","disabled","canAdd","canRemove","state","users","groups","orderBy","GroupSorting","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","recentGroup","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","getRecentUsers","_ref16","getDisabledUsers","_ref17","_ref18","limitParam","getUsersFromList","_ref19","getUsersFromGroup","_ref20","groupid","groupId","getCapabilities","password_policy","minLength","_ref21","_ref22","_ref23","_ref24","_ref25","wipeUserDevices","Promise","reject","Error","addUser","_ref26","_ref27","dispatch","password","email","quota","language","manager","_ref28","userStatus","_ref29","allowedEmpty","sendWelcomeMail","apps","bundles","loadState","categories","updateCount","loading","gettingCategoriesPromise","appApiEnabled","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","isAppApiEnabled","getAppBundles","getUpdateCount","getCategoryById","selectedCategoryId","serverData","setServerData","getServerData","setAppConfig","API_FAILURE","meta","store","useStore","Store","modules","settings","oc","strict","process","getLoggerBuilder","setApp","detectUser","_defineComponent","__name","setup","__props","__sfc","NcContent","_vm","_c","_self","_setupProxy","attrs","_v","path","components","default","UserManagement","navigation","UserManagementNavigation","props","children","redirect","AppStore","AppStoreNavigation","sidebar","AppStoreSidebar","use","Router","mode","base","linkActiveClass","routes","__webpack_nonce__","getCSPNonce","prototype","n","PiniaVuePlugin","VTooltipPlugin","defaultHtml","Vuex","pinia","createPinia","sync","router","render","h","SettingsApp","el","cloneRoute","to","from","clone","hash","query","fullPath","freeze","exports","moduleName","registerModule","namespaced","currentRoute","transition","currentPath","isTimeTraveling","storeUnwatch","watch","route","afterEachUnHook","afterEach","unregisterModule","humanList","humanListBinary","formatFileSize","size","skipSmallSizes","binaryPrefixes","base1000","Number","order","Math","floor","log","min","readableFormat","relativeSize","pow","toFixed","parseFloat","toLocaleString","forceBinary","toLocaleLowerCase","replaceAll","e2","match","decimalString","round","k","m","g","p","Date","toISOString","sortNodes","nodes","sortingOptions","sortingMode","sortingOrder","collection","identifiers2","orders","_","index","collator","Intl","Collator","numeric","usage","a2","b2","identifier","entries","compare","sortFavoritesFirst","v","attributes","favorite","sortFoldersFirst","type","basename2","displayname","basename","lastIndexOf","slice","util$3","nameStartChar","nameRegexp","regexName","RegExp","isExist","isEmptyObject","obj","merge","target","arrayMode","len","i2","getValue","isName","string","exec","getAllMatches","regex","matches","allmatches","startIndex","lastIndex","OptionsBuilder","defaultOptions$1","preserveOrder","attributeNamePrefix","attributesGroupName","textNodeName","ignoreAttributes","removeNSPrefix","allowBooleanAttributes","parseTagValue","parseAttributeValue","trimValues","cdataPropName","numberParseOptions","hex","leadingZeros","eNotation","tagValueProcessor","tagName","val2","attributeValueProcessor","attrName","stopNodes","alwaysCreateTextNode","commentPropName","unpairedTags","processEntities","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","jPath","buildOptions","defaultOptions","parseInt","node2json","compress","arr","text","compressedObj","tagObj","property","propName$1","newJpath","isLeaf","isLeafTag","assignAttributes","hasOwnProperty","attrMap","jpath","atrrName","propCount","prettify","node","arrToStr","indentation","xmlStr","isPreviousElementTag","propName","newJPath","tagText","isStopNode","replaceEntitiesValue","attStr2","attr_to_str","tempInd","piTextNodeName","newIdentation","indentBy","tagStart","tagValue","suppressUnpairedNode","suppressEmptyNode","endsWith","attrStr","attr","attrVal","suppressBooleanAttributes","substr","textValue","entities","entity","val","buildFromOrderedJs","jArray","format","getIgnoreAttributesFn","ignoreAttributes2","pattern","test","oneListGroup","Builder","isAttribute","ignoreAttributesFn","attrPrefixLen","processTextOrObjNode","indentate","tagEndChar","newLine","object","level","ajPath","result","j2x","buildTextValNode","buildObjectNode","repeat","startsWith","jObj","arrayNodeName","join","call","buildAttrPairStr","newval","arrLen","listTagVal","listTagAttr","j2","item","Ks","L","closeTag","tagEndExp","piClosingChar","debug_1","env","NODE_DEBUG","args","constants","MAX_LENGTH","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","MAX_LENGTH$1","MAX_SAFE_INTEGER","RELEASE_TYPES","SEMVER_SPEC_VERSION","FLAG_INCLUDE_PRERELEASE","FLAG_LOOSE","re$1","module","MAX_SAFE_COMPONENT_LENGTH2","MAX_SAFE_BUILD_LENGTH2","MAX_LENGTH2","debug2","re2","re","safeRe","src","t3","R","LETTERDASHNUMBER","safeRegexReplacements","createToken","isGlobal","safe","max","split","makeSafeRegex","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","BUILDIDENTIFIER","MAINVERSION","PRERELEASE","BUILD","FULLPLAIN","MAINVERSIONLOOSE","PRERELEASELOOSE","LOOSEPLAIN","XRANGEIDENTIFIER","XRANGEIDENTIFIERLOOSE","GTLT","XRANGEPLAIN","XRANGEPLAINLOOSE","COERCEPLAIN","COERCE","COERCEFULL","LONETILDE","tildeTrimReplace","LONECARET","caretTrimReplace","comparatorTrimReplace","reExports","loose","compareIdentifiers$1","anum","bnum","identifiers","compareIdentifiers","rcompareIdentifiers","t2","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","r","getter","__esModule","d","definition","o","defineProperty","enumerable","f","chunkId","all","reduce","promises","u","globalThis","Function","prop","l","done","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","bind","head","appendChild","Symbol","toStringTag","nmd","paths","scriptUrl","importScripts","currentScript","toUpperCase","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