aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/block-merge-eol.yml23
-rw-r--r--.github/workflows/block-merge-freeze.yml26
-rw-r--r--.github/workflows/block-outdated-3rdparty.yml26
-rw-r--r--.github/workflows/block-unconventional-commits.yml2
-rw-r--r--.github/workflows/command-compile.yml4
-rw-r--r--.github/workflows/command-pull-3rdparty.yml38
-rw-r--r--.github/workflows/cypress.yml14
-rw-r--r--.github/workflows/dependabot-approve-merge.yml4
-rw-r--r--.github/workflows/files-external-ftp.yml8
-rw-r--r--.github/workflows/files-external-s3.yml17
-rw-r--r--.github/workflows/files-external-sftp.yml8
-rw-r--r--.github/workflows/files-external-smb-kerberos.yml9
-rw-r--r--.github/workflows/files-external-smb.yml10
-rw-r--r--.github/workflows/files-external-webdav.yml10
-rw-r--r--.github/workflows/files-external.yml8
-rw-r--r--.github/workflows/generate-release-changelog.yml87
-rw-r--r--.github/workflows/integration-dav.yml8
-rw-r--r--.github/workflows/integration-litmus.yml6
-rw-r--r--.github/workflows/integration-s3-primary.yml10
-rw-r--r--.github/workflows/integration-sqlite.yml7
-rw-r--r--.github/workflows/lint-eslint.yml7
-rw-r--r--.github/workflows/lint-php-cs.yml4
-rw-r--r--.github/workflows/lint-php.yml4
-rw-r--r--.github/workflows/lint-stylelint.yml2
-rw-r--r--.github/workflows/node-test.yml13
-rw-r--r--.github/workflows/node.yml7
-rw-r--r--.github/workflows/npm-audit-fix.yml2
-rw-r--r--.github/workflows/object-storage-azure.yml12
-rw-r--r--.github/workflows/object-storage-s3.yml12
-rw-r--r--.github/workflows/object-storage-swift.yml12
-rw-r--r--.github/workflows/openapi.yml4
-rw-r--r--.github/workflows/performance.yml17
-rw-r--r--.github/workflows/phpunit-32bits.yml3
-rw-r--r--.github/workflows/phpunit-mariadb.yml10
-rw-r--r--.github/workflows/phpunit-memcached.yml7
-rw-r--r--.github/workflows/phpunit-mysql-sharding.yml17
-rw-r--r--.github/workflows/phpunit-mysql.yml14
-rw-r--r--.github/workflows/phpunit-nodb.yml7
-rw-r--r--.github/workflows/phpunit-object-store-primary.yml10
-rw-r--r--.github/workflows/phpunit-oci.yml10
-rw-r--r--.github/workflows/phpunit-pgsql.yml12
-rw-r--r--.github/workflows/phpunit-sqlite.yml10
-rw-r--r--.github/workflows/pr-feedback.yml7
-rw-r--r--.github/workflows/reuse.yml15
-rw-r--r--.github/workflows/stale.yml5
-rw-r--r--.github/workflows/static-code-analysis.yml9
-rw-r--r--.github/workflows/update-cacert-bundle.yml6
-rw-r--r--.github/workflows/update-code-signing-crl.yml6
-rw-r--r--.github/workflows/update-min-supported-desktop.yml6
-rw-r--r--apps/dav/lib/DAV/GroupPrincipalBackend.php8
-rw-r--r--apps/files_external/l10n/fr.js1
-rw-r--r--apps/files_external/l10n/fr.json1
-rw-r--r--apps/settings/l10n/ar.js6
-rw-r--r--apps/settings/l10n/ar.json6
-rw-r--r--apps/settings/l10n/ast.js4
-rw-r--r--apps/settings/l10n/ast.json4
-rw-r--r--apps/settings/l10n/bg.js2
-rw-r--r--apps/settings/l10n/bg.json2
-rw-r--r--apps/settings/l10n/br.js4
-rw-r--r--apps/settings/l10n/br.json4
-rw-r--r--apps/settings/l10n/ca.js6
-rw-r--r--apps/settings/l10n/ca.json6
-rw-r--r--apps/settings/l10n/cs.js7
-rw-r--r--apps/settings/l10n/cs.json7
-rw-r--r--apps/settings/l10n/da.js6
-rw-r--r--apps/settings/l10n/da.json6
-rw-r--r--apps/settings/l10n/de.js10
-rw-r--r--apps/settings/l10n/de.json10
-rw-r--r--apps/settings/l10n/de_DE.js10
-rw-r--r--apps/settings/l10n/de_DE.json10
-rw-r--r--apps/settings/l10n/el.js6
-rw-r--r--apps/settings/l10n/el.json6
-rw-r--r--apps/settings/l10n/en_GB.js10
-rw-r--r--apps/settings/l10n/en_GB.json10
-rw-r--r--apps/settings/l10n/eo.js4
-rw-r--r--apps/settings/l10n/eo.json4
-rw-r--r--apps/settings/l10n/es.js6
-rw-r--r--apps/settings/l10n/es.json6
-rw-r--r--apps/settings/l10n/es_AR.js6
-rw-r--r--apps/settings/l10n/es_AR.json6
-rw-r--r--apps/settings/l10n/es_EC.js2
-rw-r--r--apps/settings/l10n/es_EC.json2
-rw-r--r--apps/settings/l10n/es_MX.js6
-rw-r--r--apps/settings/l10n/es_MX.json6
-rw-r--r--apps/settings/l10n/et_EE.js41
-rw-r--r--apps/settings/l10n/et_EE.json41
-rw-r--r--apps/settings/l10n/eu.js6
-rw-r--r--apps/settings/l10n/eu.json6
-rw-r--r--apps/settings/l10n/fa.js2
-rw-r--r--apps/settings/l10n/fa.json2
-rw-r--r--apps/settings/l10n/fi.js6
-rw-r--r--apps/settings/l10n/fi.json6
-rw-r--r--apps/settings/l10n/fr.js6
-rw-r--r--apps/settings/l10n/fr.json6
-rw-r--r--apps/settings/l10n/ga.js10
-rw-r--r--apps/settings/l10n/ga.json10
-rw-r--r--apps/settings/l10n/gl.js6
-rw-r--r--apps/settings/l10n/gl.json6
-rw-r--r--apps/settings/l10n/he.js4
-rw-r--r--apps/settings/l10n/he.json4
-rw-r--r--apps/settings/l10n/hr.js2
-rw-r--r--apps/settings/l10n/hr.json2
-rw-r--r--apps/settings/l10n/hu.js4
-rw-r--r--apps/settings/l10n/hu.json4
-rw-r--r--apps/settings/l10n/id.js2
-rw-r--r--apps/settings/l10n/id.json2
-rw-r--r--apps/settings/l10n/is.js6
-rw-r--r--apps/settings/l10n/is.json6
-rw-r--r--apps/settings/l10n/it.js4
-rw-r--r--apps/settings/l10n/it.json4
-rw-r--r--apps/settings/l10n/ja.js7
-rw-r--r--apps/settings/l10n/ja.json7
-rw-r--r--apps/settings/l10n/ka.js4
-rw-r--r--apps/settings/l10n/ka.json4
-rw-r--r--apps/settings/l10n/ko.js6
-rw-r--r--apps/settings/l10n/ko.json6
-rw-r--r--apps/settings/l10n/lt_LT.js6
-rw-r--r--apps/settings/l10n/lt_LT.json6
-rw-r--r--apps/settings/l10n/lv.js2
-rw-r--r--apps/settings/l10n/lv.json2
-rw-r--r--apps/settings/l10n/mk.js2
-rw-r--r--apps/settings/l10n/mk.json2
-rw-r--r--apps/settings/l10n/nb.js6
-rw-r--r--apps/settings/l10n/nb.json6
-rw-r--r--apps/settings/l10n/nl.js2
-rw-r--r--apps/settings/l10n/nl.json2
-rw-r--r--apps/settings/l10n/oc.js2
-rw-r--r--apps/settings/l10n/oc.json2
-rw-r--r--apps/settings/l10n/pl.js4
-rw-r--r--apps/settings/l10n/pl.json4
-rw-r--r--apps/settings/l10n/pt_BR.js6
-rw-r--r--apps/settings/l10n/pt_BR.json6
-rw-r--r--apps/settings/l10n/ro.js4
-rw-r--r--apps/settings/l10n/ro.json4
-rw-r--r--apps/settings/l10n/ru.js6
-rw-r--r--apps/settings/l10n/ru.json6
-rw-r--r--apps/settings/l10n/sc.js2
-rw-r--r--apps/settings/l10n/sc.json2
-rw-r--r--apps/settings/l10n/sk.js6
-rw-r--r--apps/settings/l10n/sk.json6
-rw-r--r--apps/settings/l10n/sl.js6
-rw-r--r--apps/settings/l10n/sl.json6
-rw-r--r--apps/settings/l10n/sq.js4
-rw-r--r--apps/settings/l10n/sq.json4
-rw-r--r--apps/settings/l10n/sr.js6
-rw-r--r--apps/settings/l10n/sr.json6
-rw-r--r--apps/settings/l10n/sv.js6
-rw-r--r--apps/settings/l10n/sv.json6
-rw-r--r--apps/settings/l10n/th.js4
-rw-r--r--apps/settings/l10n/th.json4
-rw-r--r--apps/settings/l10n/tr.js6
-rw-r--r--apps/settings/l10n/tr.json6
-rw-r--r--apps/settings/l10n/ug.js6
-rw-r--r--apps/settings/l10n/ug.json6
-rw-r--r--apps/settings/l10n/uk.js4
-rw-r--r--apps/settings/l10n/uk.json4
-rw-r--r--apps/settings/l10n/vi.js4
-rw-r--r--apps/settings/l10n/vi.json4
-rw-r--r--apps/settings/l10n/zh_CN.js7
-rw-r--r--apps/settings/l10n/zh_CN.json7
-rw-r--r--apps/settings/l10n/zh_HK.js10
-rw-r--r--apps/settings/l10n/zh_HK.json10
-rw-r--r--apps/settings/l10n/zh_TW.js6
-rw-r--r--apps/settings/l10n/zh_TW.json6
-rw-r--r--apps/settings/lib/SetupChecks/TaskProcessingPickupSpeed.php6
-rw-r--r--apps/settings/src/components/GroupListItem.vue6
-rw-r--r--apps/webhook_listeners/l10n/et_EE.js7
-rw-r--r--apps/webhook_listeners/l10n/et_EE.json5
-rw-r--r--core/l10n/ar.js10
-rw-r--r--core/l10n/ar.json10
-rw-r--r--core/l10n/ast.js10
-rw-r--r--core/l10n/ast.json10
-rw-r--r--core/l10n/bg.js10
-rw-r--r--core/l10n/bg.json10
-rw-r--r--core/l10n/ca.js10
-rw-r--r--core/l10n/ca.json10
-rw-r--r--core/l10n/cs.js10
-rw-r--r--core/l10n/cs.json10
-rw-r--r--core/l10n/da.js10
-rw-r--r--core/l10n/da.json10
-rw-r--r--core/l10n/de.js10
-rw-r--r--core/l10n/de.json10
-rw-r--r--core/l10n/de_DE.js10
-rw-r--r--core/l10n/de_DE.json10
-rw-r--r--core/l10n/el.js10
-rw-r--r--core/l10n/el.json10
-rw-r--r--core/l10n/en_GB.js10
-rw-r--r--core/l10n/en_GB.json10
-rw-r--r--core/l10n/eo.js10
-rw-r--r--core/l10n/eo.json10
-rw-r--r--core/l10n/es.js10
-rw-r--r--core/l10n/es.json10
-rw-r--r--core/l10n/es_EC.js10
-rw-r--r--core/l10n/es_EC.json10
-rw-r--r--core/l10n/es_MX.js10
-rw-r--r--core/l10n/es_MX.json10
-rw-r--r--core/l10n/et_EE.js10
-rw-r--r--core/l10n/et_EE.json10
-rw-r--r--core/l10n/eu.js10
-rw-r--r--core/l10n/eu.json10
-rw-r--r--core/l10n/fa.js10
-rw-r--r--core/l10n/fa.json10
-rw-r--r--core/l10n/fi.js10
-rw-r--r--core/l10n/fi.json10
-rw-r--r--core/l10n/fr.js10
-rw-r--r--core/l10n/fr.json10
-rw-r--r--core/l10n/ga.js10
-rw-r--r--core/l10n/ga.json10
-rw-r--r--core/l10n/gl.js10
-rw-r--r--core/l10n/gl.json10
-rw-r--r--core/l10n/he.js10
-rw-r--r--core/l10n/he.json10
-rw-r--r--core/l10n/hr.js10
-rw-r--r--core/l10n/hr.json10
-rw-r--r--core/l10n/hu.js10
-rw-r--r--core/l10n/hu.json10
-rw-r--r--core/l10n/id.js10
-rw-r--r--core/l10n/id.json10
-rw-r--r--core/l10n/is.js10
-rw-r--r--core/l10n/is.json10
-rw-r--r--core/l10n/it.js10
-rw-r--r--core/l10n/it.json10
-rw-r--r--core/l10n/ja.js10
-rw-r--r--core/l10n/ja.json10
-rw-r--r--core/l10n/ka.js10
-rw-r--r--core/l10n/ka.json10
-rw-r--r--core/l10n/ko.js10
-rw-r--r--core/l10n/ko.json10
-rw-r--r--core/l10n/lt_LT.js6
-rw-r--r--core/l10n/lt_LT.json6
-rw-r--r--core/l10n/lv.js10
-rw-r--r--core/l10n/lv.json10
-rw-r--r--core/l10n/mk.js10
-rw-r--r--core/l10n/mk.json10
-rw-r--r--core/l10n/nb.js10
-rw-r--r--core/l10n/nb.json10
-rw-r--r--core/l10n/nl.js10
-rw-r--r--core/l10n/nl.json10
-rw-r--r--core/l10n/oc.js10
-rw-r--r--core/l10n/oc.json10
-rw-r--r--core/l10n/pl.js10
-rw-r--r--core/l10n/pl.json10
-rw-r--r--core/l10n/pt_BR.js10
-rw-r--r--core/l10n/pt_BR.json10
-rw-r--r--core/l10n/pt_PT.js10
-rw-r--r--core/l10n/pt_PT.json10
-rw-r--r--core/l10n/ro.js10
-rw-r--r--core/l10n/ro.json10
-rw-r--r--core/l10n/ru.js10
-rw-r--r--core/l10n/ru.json10
-rw-r--r--core/l10n/sc.js10
-rw-r--r--core/l10n/sc.json10
-rw-r--r--core/l10n/sk.js10
-rw-r--r--core/l10n/sk.json10
-rw-r--r--core/l10n/sl.js10
-rw-r--r--core/l10n/sl.json10
-rw-r--r--core/l10n/sr.js10
-rw-r--r--core/l10n/sr.json10
-rw-r--r--core/l10n/sv.js10
-rw-r--r--core/l10n/sv.json10
-rw-r--r--core/l10n/th.js10
-rw-r--r--core/l10n/th.json10
-rw-r--r--core/l10n/tr.js10
-rw-r--r--core/l10n/tr.json10
-rw-r--r--core/l10n/ug.js10
-rw-r--r--core/l10n/ug.json10
-rw-r--r--core/l10n/uk.js10
-rw-r--r--core/l10n/uk.json10
-rw-r--r--core/l10n/uz.js10
-rw-r--r--core/l10n/uz.json10
-rw-r--r--core/l10n/vi.js10
-rw-r--r--core/l10n/vi.json10
-rw-r--r--core/l10n/zh_CN.js10
-rw-r--r--core/l10n/zh_CN.json10
-rw-r--r--core/l10n/zh_HK.js10
-rw-r--r--core/l10n/zh_HK.json10
-rw-r--r--core/l10n/zh_TW.js10
-rw-r--r--core/l10n/zh_TW.json10
-rw-r--r--cypress/e2e/settings/users_groups.cy.ts8
-rw-r--r--dist/settings-users-3239.js4
-rw-r--r--dist/settings-users-3239.js.map2
-rw-r--r--dist/settings-vue-settings-apps-users-management.js4
-rw-r--r--dist/settings-vue-settings-apps-users-management.js.map2
283 files changed, 1422 insertions, 955 deletions
diff --git a/.github/workflows/block-merge-eol.yml b/.github/workflows/block-merge-eol.yml
index 292494c72cd..31f84a99936 100644
--- a/.github/workflows/block-merge-eol.yml
+++ b/.github/workflows/block-merge-eol.yml
@@ -27,13 +27,22 @@ jobs:
steps:
- name: Set server major version environment
- run: |
- # retrieve version number from branch reference
- server_major=$(echo "${{ github.base_ref }}" | sed -En 's/stable//p')
- echo "server_major=$server_major" >> $GITHUB_ENV
- echo "current_month=$(date +%Y-%m)" >> $GITHUB_ENV
-
- - name: Checking if ${{ env.server_major }} is EOL
+ uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
+ with:
+ github-token: ${{secrets.GITHUB_TOKEN}}
+ script: |
+ const regex = /^stable(\d+)$/
+ const baseRef = context.payload.pull_request.base.ref
+ const match = baseRef.match(regex)
+ if (match) {
+ console.log('Setting server_major to ' + match[1]);
+ core.exportVariable('server_major', match[1]);
+ console.log('Setting current_month to ' + (new Date()).toISOString().substr(0, 7));
+ core.exportVariable('current_month', (new Date()).toISOString().substr(0, 7));
+ }
+
+ - name: Checking if server ${{ env.server_major }} is EOL
+ if: ${{ env.server_major != '' }}
run: |
curl -s https://raw.githubusercontent.com/nextcloud-releases/updater_server/production/config/major_versions.json \
| jq '.["${{ env.server_major }}"]["eol"] // "9999-99" | . >= "${{ env.current_month }}"' \
diff --git a/.github/workflows/block-merge-freeze.yml b/.github/workflows/block-merge-freeze.yml
index d052668b310..f28a02101e4 100644
--- a/.github/workflows/block-merge-freeze.yml
+++ b/.github/workflows/block-merge-freeze.yml
@@ -28,8 +28,30 @@ jobs:
runs-on: ubuntu-latest-low
steps:
- - name: Download version.php from ${{ github.base_ref }}
- run: curl 'https://raw.githubusercontent.com/nextcloud/server/${{ github.base_ref }}/version.php' --output version.php
+ - name: Register server reference to fallback to master branch
+ uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
+ with:
+ github-token: ${{secrets.GITHUB_TOKEN}}
+ script: |
+ const baseRef = context.payload.pull_request.base.ref
+ if (baseRef === 'main' || baseRef === 'master') {
+ core.exportVariable('server_ref', 'master');
+ console.log('Setting server_ref to master');
+ } else {
+ const regex = /^stable(\d+)$/
+ const match = baseRef.match(regex)
+ if (match) {
+ core.exportVariable('server_ref', match[0]);
+ console.log('Setting server_ref to ' + match[0]);
+ } else {
+ console.log('Not based on master/main/stable*, so skipping freeze check');
+ }
+ }
+
+ - name: Download version.php from ${{ env.server_ref }}
+ if: ${{ env.server_ref != '' }}
+ run: curl 'https://raw.githubusercontent.com/nextcloud/server/${{ env.server_ref }}/version.php' --output version.php
- name: Run check
+ if: ${{ env.server_ref != '' }}
run: cat version.php | grep 'OC_VersionString' | grep -i -v 'RC'
diff --git a/.github/workflows/block-outdated-3rdparty.yml b/.github/workflows/block-outdated-3rdparty.yml
index 22280f35e31..d02eb25aacc 100644
--- a/.github/workflows/block-outdated-3rdparty.yml
+++ b/.github/workflows/block-outdated-3rdparty.yml
@@ -32,22 +32,44 @@ jobs:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: false
- name: 3rdparty commit hash on current branch
id: actual
run: |
echo "commit=$(git submodule status | grep ' 3rdparty' | egrep -o '[a-f0-9]{40}')" >> "$GITHUB_OUTPUT"
+ - name: Register server reference to fallback to master branch
+ uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
+ with:
+ github-token: ${{secrets.GITHUB_TOKEN}}
+ script: |
+ const baseRef = context.payload.pull_request.base.ref
+ if (baseRef === 'main' || baseRef === 'master') {
+ core.exportVariable('server_ref', 'master');
+ console.log('Setting server_ref to master');
+ } else {
+ const regex = /^stable(\d+)$/
+ const match = baseRef.match(regex)
+ if (match) {
+ core.exportVariable('server_ref', match[0]);
+ console.log('Setting server_ref to ' + match[0]);
+ } else {
+ console.log('Not based on master/main/stable*, so skipping freeze check');
+ }
+ }
+
- name: Last 3rdparty commit on target branch
id: target
run: |
- echo "commit=$(git ls-remote https://github.com/nextcloud/3rdparty refs/heads/${{ github.base_ref }} | awk '{ print $1}')" >> "$GITHUB_OUTPUT"
+ echo "commit=$(git ls-remote https://github.com/nextcloud/3rdparty refs/heads/${{ env.server_ref }} | awk '{ print $1}')" >> "$GITHUB_OUTPUT"
- name: Compare if 3rdparty commits are different
run: |
echo '3rdparty/ seems to not point to the last commit of the dedicated branch:'
echo 'Branch has: ${{ steps.actual.outputs.commit }}'
- echo '${{ github.base_ref }} has: ${{ steps.target.outputs.commit }}'
+ echo '${{ env.server_ref }} has: ${{ steps.target.outputs.commit }}'
- name: Fail if 3rdparty commits are different
if: ${{ steps.changes.outputs.src != 'false' && steps.actual.outputs.commit != steps.target.outputs.commit }}
diff --git a/.github/workflows/block-unconventional-commits.yml b/.github/workflows/block-unconventional-commits.yml
index b4239109cd0..6bf1a79c941 100644
--- a/.github/workflows/block-unconventional-commits.yml
+++ b/.github/workflows/block-unconventional-commits.yml
@@ -28,6 +28,8 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: false
- uses: webiny/action-conventional-commits@8bc41ff4e7d423d56fa4905f6ff79209a78776c7 # v1.3.0
with:
diff --git a/.github/workflows/command-compile.yml b/.github/workflows/command-compile.yml
index faf3d510335..d5ecf01af61 100644
--- a/.github/workflows/command-compile.yml
+++ b/.github/workflows/command-compile.yml
@@ -11,6 +11,9 @@ on:
issue_comment:
types: [created]
+permissions:
+ contents: read
+
jobs:
init:
runs-on: ubuntu-latest
@@ -102,6 +105,7 @@ jobs:
- name: Checkout ${{ needs.init.outputs.head_ref }}
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
+ # Needed to allow force push later
persist-credentials: true
token: ${{ secrets.COMMAND_BOT_PAT }}
fetch-depth: 0
diff --git a/.github/workflows/command-pull-3rdparty.yml b/.github/workflows/command-pull-3rdparty.yml
index 52e669dccd8..e204a5c489d 100644
--- a/.github/workflows/command-pull-3rdparty.yml
+++ b/.github/workflows/command-pull-3rdparty.yml
@@ -38,24 +38,56 @@ jobs:
id: comment-branch
- name: Checkout ${{ steps.comment-branch.outputs.head_ref }}
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
+ persist-credentials: false
fetch-depth: 0
token: ${{ secrets.COMMAND_BOT_PAT }}
ref: ${{ steps.comment-branch.outputs.head_ref }}
+ - name: Register server reference to fallback to master branch
+ uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
+ with:
+ github-token: ${{secrets.GITHUB_TOKEN}}
+ script: |
+ const baseRef = context.payload.pull_request.base.ref
+ if (baseRef === 'main' || baseRef === 'master') {
+ core.exportVariable('server_ref', 'master');
+ console.log('Setting server_ref to master');
+ } else {
+ const regex = /^stable(\d+)$/
+ const match = baseRef.match(regex)
+ if (match) {
+ core.exportVariable('server_ref', match[0]);
+ console.log('Setting server_ref to ' + match[0]);
+ } else {
+ console.log('Not based on master/main/stable*, so skipping freeze check');
+ }
+ }
+
- name: Setup git
run: |
git config --local user.email 'nextcloud-command@users.noreply.github.com'
git config --local user.name 'nextcloud-command'
+ - name: Add reaction on failure
+ uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v3.0.1
+ if: ${{ env.server_ref == '' }}
+ with:
+ token: ${{ secrets.COMMAND_BOT_PAT }}
+ repository: ${{ github.event.repository.full_name }}
+ comment-id: ${{ github.event.comment.id }}
+ reactions: '-1'
+
- name: Pull 3rdparty
- run: git submodule foreach 'if [ "$sm_path" == "3rdparty" ]; then git pull origin '"'"'${{ github.event.issue.pull_request.base.ref }}'"'"'; fi'
+ if: ${{ env.server_ref != '' }}
+ run: git submodule foreach 'if [ "$sm_path" == "3rdparty" ]; then git pull origin '"'"'${{ env.server_ref }}'"'"'; fi'
- name: Commit and push changes
+ if: ${{ env.server_ref != '' }}
run: |
git add 3rdparty
- git commit -s -m 'Update submodule 3rdparty to latest ${{ github.event.issue.pull_request.base.ref }}'
+ git commit -s -m 'Update submodule 3rdparty to latest ${{ env.server_ref }}'
git push
- name: Add reaction on failure
diff --git a/.github/workflows/cypress.yml b/.github/workflows/cypress.yml
index bd8298678a0..b5b8b534d8c 100644
--- a/.github/workflows/cypress.yml
+++ b/.github/workflows/cypress.yml
@@ -18,9 +18,16 @@ env:
# Adjust APP_NAME if your repository name is different
APP_NAME: ${{ github.event.repository.name }}
- # Server requires head_ref instead of base_ref, as we want to test the PR branch
+ # This represents the server branch to checkout.
+ # Usually it's the base branch of the PR, but for pushes it's the branch itself.
+ # e.g. 'main', 'stable27' or 'feature/my-feature'
+ # n.b. server will use head_ref, as we want to test the PR branch.
BRANCH: ${{ github.head_ref || github.ref_name }}
+
+permissions:
+ contents: read
+
jobs:
init:
runs-on: ubuntu-latest
@@ -43,6 +50,7 @@ jobs:
- name: Checkout server
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
+ persist-credentials: false
# We need to checkout submodules for 3rdparty
submodules: true
@@ -80,7 +88,7 @@ jobs:
run: npm run cypress:version
- name: Save context
- uses: buildjet/cache/save@v4
+ uses: buildjet/cache/save@3e70d19e31d6a8030aeddf6ed8dbe601f94d09f4 # v4.0.2
with:
key: cypress-context-${{ github.run_id }}
path: ./
@@ -148,7 +156,7 @@ jobs:
steps:
- name: Restore context
- uses: buildjet/cache/restore@v4
+ uses: buildjet/cache/restore@3e70d19e31d6a8030aeddf6ed8dbe601f94d09f4 # v4.0.2
with:
fail-on-cache-miss: true
key: cypress-context-${{ github.run_id }}
diff --git a/.github/workflows/dependabot-approve-merge.yml b/.github/workflows/dependabot-approve-merge.yml
index efe8bfe37f7..ed902d92807 100644
--- a/.github/workflows/dependabot-approve-merge.yml
+++ b/.github/workflows/dependabot-approve-merge.yml
@@ -9,7 +9,7 @@
name: Dependabot
on:
- pull_request_target:
+ pull_request_target: # zizmor: ignore[dangerous-triggers]
branches:
- main
- master
@@ -24,7 +24,7 @@ concurrency:
jobs:
auto-approve-merge:
- if: github.actor == 'dependabot[bot]' || github.actor == 'renovate[bot]'
+ if: github.event.pull_request.user.login == 'dependabot[bot]' || github.event.pull_request.user.login == 'renovate[bot]'
runs-on: ubuntu-latest-low
permissions:
# for hmarr/auto-approve-action to approve PRs
diff --git a/.github/workflows/files-external-ftp.yml b/.github/workflows/files-external-ftp.yml
index 0ae892479fe..408b3de68e0 100644
--- a/.github/workflows/files-external-ftp.yml
+++ b/.github/workflows/files-external-ftp.yml
@@ -6,6 +6,9 @@ on:
schedule:
- cron: "5 2 * * *"
+permissions:
+ contents: read
+
concurrency:
group: files-external-ftp-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
@@ -53,8 +56,9 @@ jobs:
steps:
- name: Checkout server
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
+ persist-credentials: false
submodules: true
- name: Set up ftpd
@@ -101,7 +105,7 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
- uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2
+ uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3
with:
files: ./clover.xml
flags: phpunit-files-external-ftp
diff --git a/.github/workflows/files-external-s3.yml b/.github/workflows/files-external-s3.yml
index a2ae746f994..546e8111e5e 100644
--- a/.github/workflows/files-external-s3.yml
+++ b/.github/workflows/files-external-s3.yml
@@ -6,6 +6,9 @@ on:
schedule:
- cron: "5 2 * * *"
+permissions:
+ contents: read
+
concurrency:
group: files-external-s3-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
@@ -50,7 +53,7 @@ jobs:
services:
minio:
- image: bitnami/minio
+ image: bitnami/minio@sha256:50cec18ac4184af4671a78aedd5554942c8ae105d51a465fa82037949046da01 # v2025.4.22
env:
MINIO_ROOT_USER: nextcloud
MINIO_ROOT_PASSWORD: bWluaW8tc2VjcmV0LWtleS1uZXh0Y2xvdWQ=
@@ -60,8 +63,9 @@ jobs:
steps:
- name: Checkout server
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
+ persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
@@ -99,7 +103,7 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
- uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2
+ uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3
with:
files: ./clover.xml
flags: phpunit-files-external-s3
@@ -136,14 +140,15 @@ jobs:
env:
SERVICES: s3
DEBUG: 1
- image: localstack/localstack
+ image: localstack/localstack@sha256:b52c16663c70b7234f217cb993a339b46686e30a1a5d9279cb5feeb2202f837c # v4.4.0
ports:
- "4566:4566"
steps:
- name: Checkout server
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
+ persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
@@ -173,7 +178,7 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
- uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2
+ uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3
with:
files: ./clover.xml
flags: phpunit-files-external-s3
diff --git a/.github/workflows/files-external-sftp.yml b/.github/workflows/files-external-sftp.yml
index 44f0168bcb4..d5e55963014 100644
--- a/.github/workflows/files-external-sftp.yml
+++ b/.github/workflows/files-external-sftp.yml
@@ -6,6 +6,9 @@ on:
schedule:
- cron: "5 2 * * *"
+permissions:
+ contents: read
+
concurrency:
group: files-external-sftp-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
@@ -53,8 +56,9 @@ jobs:
steps:
- name: Checkout server
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
+ persist-credentials: false
submodules: true
- name: Set up sftpd
@@ -90,7 +94,7 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
- uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2
+ uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3
with:
files: ./clover.xml
flags: phpunit-files-external-sftp
diff --git a/.github/workflows/files-external-smb-kerberos.yml b/.github/workflows/files-external-smb-kerberos.yml
index cc3d7011f7f..8326f6633ca 100644
--- a/.github/workflows/files-external-smb-kerberos.yml
+++ b/.github/workflows/files-external-smb-kerberos.yml
@@ -6,6 +6,9 @@ on:
schedule:
- cron: "5 2 * * *"
+permissions:
+ contents: read
+
concurrency:
group: files-external-smb-kerberos-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
@@ -43,13 +46,15 @@ jobs:
steps:
- name: Checkout server
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
+ persist-credentials: false
submodules: true
- name: Checkout user_saml
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
+ persist-credentials: false
repository: nextcloud/user_saml
path: apps/user_saml
diff --git a/.github/workflows/files-external-smb.yml b/.github/workflows/files-external-smb.yml
index 91f63924058..dce6f395ad2 100644
--- a/.github/workflows/files-external-smb.yml
+++ b/.github/workflows/files-external-smb.yml
@@ -6,6 +6,9 @@ on:
schedule:
- cron: "5 2 * * *"
+permissions:
+ contents: read
+
concurrency:
group: files-external-smb-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
@@ -50,14 +53,15 @@ jobs:
services:
samba:
- image: ghcr.io/nextcloud/continuous-integration-samba:latest
+ image: ghcr.io/nextcloud/continuous-integration-samba:latest # zizmor: ignore[unpinned-images]
ports:
- 445:445
steps:
- name: Checkout server
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
+ persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
@@ -95,7 +99,7 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
- uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2
+ uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3
with:
files: ./clover.xml
flags: phpunit-files-external-smb
diff --git a/.github/workflows/files-external-webdav.yml b/.github/workflows/files-external-webdav.yml
index 46d65846a9e..b941c400c96 100644
--- a/.github/workflows/files-external-webdav.yml
+++ b/.github/workflows/files-external-webdav.yml
@@ -6,6 +6,9 @@ on:
schedule:
- cron: "5 2 * * *"
+permissions:
+ contents: read
+
concurrency:
group: files-external-webdav-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
@@ -50,14 +53,15 @@ jobs:
services:
apache:
- image: ghcr.io/nextcloud/continuous-integration-webdav-apache:latest
+ image: ghcr.io/nextcloud/continuous-integration-webdav-apache:latest # zizmor: ignore[unpinned-images]
ports:
- 8081:80
steps:
- name: Checkout server
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
+ persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
@@ -92,7 +96,7 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
- uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2
+ uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3
with:
files: ./clover.xml
flags: phpunit-files-external-webdav
diff --git a/.github/workflows/files-external.yml b/.github/workflows/files-external.yml
index 79fcc2696a1..ab568f4ffe0 100644
--- a/.github/workflows/files-external.yml
+++ b/.github/workflows/files-external.yml
@@ -6,6 +6,9 @@ on:
schedule:
- cron: "5 2 * * *"
+permissions:
+ contents: read
+
concurrency:
group: files-external-generic-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
@@ -49,8 +52,9 @@ jobs:
steps:
- name: Checkout server
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
+ persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
@@ -80,7 +84,7 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
- uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2
+ uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3
with:
files: ./clover.xml
flags: phpunit-files-external-generic
diff --git a/.github/workflows/generate-release-changelog.yml b/.github/workflows/generate-release-changelog.yml
new file mode 100644
index 00000000000..c0945bde953
--- /dev/null
+++ b/.github/workflows/generate-release-changelog.yml
@@ -0,0 +1,87 @@
+# SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
+# SPDX-License-Identifier: MIT
+
+name: Generate changelog on release
+
+on:
+ release:
+ types: [published]
+
+permissions:
+ contents: write
+
+jobs:
+ changelog_generate:
+ runs-on: ubuntu-latest
+
+ # Only allowed to be run on nextcloud-releases repositories
+ if: ${{ github.repository_owner == 'nextcloud-releases' }}
+
+ steps:
+ - name: Check actor permission
+ uses: skjnldsv/check-actor-permission@69e92a3c4711150929bca9fcf34448c5bf5526e7 # v3.0
+ with:
+ require: write
+
+ - name: Checkout github_helper
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: false
+ repository: nextcloud/github_helper
+ path: github_helper
+
+ - name: Checkout server
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: false
+ path: server
+ fetch-depth: 0
+
+ - name: Get previous tag
+ shell: bash
+ run: |
+ cd server
+ # Print all tags
+ git log --decorate --oneline | egrep '^[0-9a-f]+ \((HEAD, )?tag: ' | sed -r 's/^.+tag: ([^ ]+)[,\)].+$/\1/g'
+ # Get the current tag
+ TAGS=$(git log --decorate --oneline | egrep '^[0-9a-f]+ \((HEAD, )?tag: ' | sed -r 's/^.+tag: ([^ ]+)[,\)].+$/\1/g')
+ CURRENT_TAG=$(echo "$TAGS" | head -n 1)
+ # Get the previous tag that is not an rc, beta or alpha
+ PREVIOUS_TAG=$(echo "$TAGS" | grep -v 'rc\|beta\|alpha' | sed -n '2p')
+ echo "CURRENT_TAG=$CURRENT_TAG" >> $GITHUB_ENV
+ echo "PREVIOUS_TAG=$PREVIOUS_TAG" >> $GITHUB_ENV
+
+ - name: Verify current tag
+ run: |
+ if [ "${{ github.ref_name }}" != "${{ env.CURRENT_TAG }}" ]; then
+ echo "Current tag does not match the release tag. Exiting."
+ exit 1
+ fi
+
+ - name: Set up php 8.2
+ uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a # v2.33.0
+ with:
+ php-version: 8.2
+ coverage: none
+ ini-file: development
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Set credentials
+ run: |
+ echo '{"username": "github-actions"}' > github_helper/credentials.json
+
+ - name: Generate changelog between ${{ env.PREVIOUS_TAG }} and ${{ github.ref_name }}
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ run: |
+ cd github_helper/changelog
+ composer install
+ php index.php generate:changelog --no-bots --format=forum server ${{ env.PREVIOUS_TAG }} ${{ github.ref_name }} > changelog.md
+
+ - name: Set changelog to release
+ env:
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ run: |
+ cd server
+ gh release edit ${{ github.ref_name }} --notes-file "../github_helper/changelog/changelog.md" --title "${{ github.ref_name }}"
diff --git a/.github/workflows/integration-dav.yml b/.github/workflows/integration-dav.yml
index 29cae2d2238..1dea78370fb 100644
--- a/.github/workflows/integration-dav.yml
+++ b/.github/workflows/integration-dav.yml
@@ -4,6 +4,9 @@ name: DAV integration tests
on:
pull_request:
+permissions:
+ contents: read
+
concurrency:
group: integration-caldav-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
@@ -51,8 +54,9 @@ jobs:
steps:
- name: Checkout server
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
+ persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
@@ -67,7 +71,7 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Python
- uses: LizardByte/setup-python-action@master
+ uses: LizardByte/setup-python-action@f4367d0377eceec7e5e26da8f3863dd365b95a94 # v2025.426.160528
with:
python-version: '2.7'
diff --git a/.github/workflows/integration-litmus.yml b/.github/workflows/integration-litmus.yml
index 3047aaf5b3c..b55b144e2ff 100644
--- a/.github/workflows/integration-litmus.yml
+++ b/.github/workflows/integration-litmus.yml
@@ -4,6 +4,9 @@ name: Litmus integration tests
on:
pull_request:
+permissions:
+ contents: read
+
concurrency:
group: integration-litmus-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
@@ -50,8 +53,9 @@ jobs:
steps:
- name: Checkout server
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
+ persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
diff --git a/.github/workflows/integration-s3-primary.yml b/.github/workflows/integration-s3-primary.yml
index d30080a5bfc..d9fe494ff15 100644
--- a/.github/workflows/integration-s3-primary.yml
+++ b/.github/workflows/integration-s3-primary.yml
@@ -4,6 +4,9 @@ name: S3 primary storage integration tests
on:
pull_request:
+permissions:
+ contents: read
+
concurrency:
group: integration-s3-primary-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
@@ -50,12 +53,12 @@ jobs:
services:
redis:
- image: ghcr.io/nextcloud/continuous-integration-redis:latest
+ image: ghcr.io/nextcloud/continuous-integration-redis:latest # zizmor: ignore[unpinned-images]
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
ports:
- 6379:6379/tcp
minio:
- image: bitnami/minio
+ image: bitnami/minio@sha256:50cec18ac4184af4671a78aedd5554942c8ae105d51a465fa82037949046da01 # v2025.4.22
env:
MINIO_ROOT_USER: nextcloud
MINIO_ROOT_PASSWORD: bWluaW8tc2VjcmV0LWtleS1uZXh0Y2xvdWQ=
@@ -65,8 +68,9 @@ jobs:
steps:
- name: Checkout server
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
+ persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
diff --git a/.github/workflows/integration-sqlite.yml b/.github/workflows/integration-sqlite.yml
index 7cd822c6371..b067ff75674 100644
--- a/.github/workflows/integration-sqlite.yml
+++ b/.github/workflows/integration-sqlite.yml
@@ -77,12 +77,12 @@ jobs:
services:
redis:
- image: ghcr.io/nextcloud/continuous-integration-redis:latest
+ image: ghcr.io/nextcloud/continuous-integration-redis:latest # zizmor: ignore[unpinned-images]
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
ports:
- 6379:6379/tcp
openldap:
- image: ghcr.io/nextcloud/continuous-integration-openldap:openldap-7
+ image: ghcr.io/nextcloud/continuous-integration-openldap:openldap-7 # zizmor: ignore[unpinned-images]
ports:
- 389:389
env:
@@ -95,12 +95,14 @@ jobs:
- name: Checkout server
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
+ persist-credentials: false
submodules: true
- name: Checkout Talk app
if: ${{ matrix.test-suite == 'videoverification_features' }}
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
+ persist-credentials: false
repository: nextcloud/spreed
path: apps/spreed
ref: ${{ matrix.spreed-versions }}
@@ -109,6 +111,7 @@ jobs:
if: ${{ matrix.test-suite == 'sharing_features' }}
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
+ persist-credentials: false
repository: nextcloud/activity
path: apps/activity
ref: ${{ matrix.activity-versions }}
diff --git a/.github/workflows/lint-eslint.yml b/.github/workflows/lint-eslint.yml
index 0624fd232a3..43e964b5aaf 100644
--- a/.github/workflows/lint-eslint.yml
+++ b/.github/workflows/lint-eslint.yml
@@ -20,6 +20,9 @@ concurrency:
jobs:
changes:
runs-on: ubuntu-latest-low
+ permissions:
+ contents: read
+ pull-requests: read
outputs:
src: ${{ steps.changes.outputs.src}}
@@ -54,6 +57,8 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: false
- name: Read package.json node and npm engines version
uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3
@@ -63,7 +68,7 @@ jobs:
fallbackNpm: '^10'
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v3
+ uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}
diff --git a/.github/workflows/lint-php-cs.yml b/.github/workflows/lint-php-cs.yml
index 9d2c92b88cb..5802f749428 100644
--- a/.github/workflows/lint-php-cs.yml
+++ b/.github/workflows/lint-php-cs.yml
@@ -49,9 +49,11 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: false
- name: Set up php8.1
- uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
+ uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a # v2.33.0
with:
php-version: 8.1
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
diff --git a/.github/workflows/lint-php.yml b/.github/workflows/lint-php.yml
index ddbf9411bf4..a29db2af4e2 100644
--- a/.github/workflows/lint-php.yml
+++ b/.github/workflows/lint-php.yml
@@ -54,9 +54,11 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: false
- name: Set up php ${{ matrix.php-versions }}
- uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
+ uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a # v2.33.0
with:
php-version: ${{ matrix.php-versions }}
coverage: none
diff --git a/.github/workflows/lint-stylelint.yml b/.github/workflows/lint-stylelint.yml
index 4eaa131bb3d..22c0f445801 100644
--- a/.github/workflows/lint-stylelint.yml
+++ b/.github/workflows/lint-stylelint.yml
@@ -26,6 +26,8 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: false
- name: Read package.json node and npm engines version
uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3
diff --git a/.github/workflows/node-test.yml b/.github/workflows/node-test.yml
index f0219c7b1dd..aae448c8035 100644
--- a/.github/workflows/node-test.yml
+++ b/.github/workflows/node-test.yml
@@ -23,6 +23,9 @@ concurrency:
jobs:
changes:
runs-on: ubuntu-latest-low
+ permissions:
+ contents: read
+ pull-requests: read
outputs:
src: ${{ steps.changes.outputs.src}}
@@ -60,6 +63,8 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: false
- name: Read package.json node and npm engines version
uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3
@@ -81,6 +86,8 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: false
- name: Set up node ${{ needs.versions.outputs.nodeVersion }}
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
@@ -99,7 +106,7 @@ jobs:
run: npm run test:coverage --if-present
- name: Collect coverage
- uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2
+ uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3
with:
files: ./coverage/lcov.info
@@ -119,6 +126,8 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: false
- name: Set up node ${{ needs.versions.outputs.nodeVersion }}
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
@@ -147,6 +156,8 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: false
- name: Set up node ${{ needs.versions.outputs.nodeVersion }}
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
diff --git a/.github/workflows/node.yml b/.github/workflows/node.yml
index 830d7bc60e0..7bd4338ae9e 100644
--- a/.github/workflows/node.yml
+++ b/.github/workflows/node.yml
@@ -20,6 +20,9 @@ concurrency:
jobs:
changes:
runs-on: ubuntu-latest-low
+ permissions:
+ contents: read
+ pull-requests: read
outputs:
src: ${{ steps.changes.outputs.src}}
@@ -54,6 +57,8 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: false
- name: Read package.json node and npm engines version
uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3
@@ -63,7 +68,7 @@ jobs:
fallbackNpm: '^10'
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v3
+ uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}
diff --git a/.github/workflows/npm-audit-fix.yml b/.github/workflows/npm-audit-fix.yml
index f9f93d4f61c..7e7fe1dabc6 100644
--- a/.github/workflows/npm-audit-fix.yml
+++ b/.github/workflows/npm-audit-fix.yml
@@ -24,7 +24,7 @@ jobs:
strategy:
fail-fast: false
matrix:
- branches: ['main', 'master', 'stable31', 'stable30', 'stable29']
+ branches: ['main', 'master', 'stable31', 'stable30']
name: npm-audit-fix-${{ matrix.branches }}
diff --git a/.github/workflows/object-storage-azure.yml b/.github/workflows/object-storage-azure.yml
index 85b42f5e55d..812b55ba61a 100644
--- a/.github/workflows/object-storage-azure.yml
+++ b/.github/workflows/object-storage-azure.yml
@@ -6,6 +6,9 @@ on:
schedule:
- cron: "15 2 * * *"
+permissions:
+ contents: read
+
concurrency:
group: object-storage-azure-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
@@ -54,7 +57,7 @@ jobs:
services:
azurite:
- image: mcr.microsoft.com/azure-storage/azurite
+ image: mcr.microsoft.com/azure-storage/azurite@sha256:0a47e12e3693483cef5c71f35468b91d751611f172d2f97414e9c69113b106d9 # v3.34.0
env:
AZURITE_ACCOUNTS: nextcloud:bmV4dGNsb3Vk
ports:
@@ -62,15 +65,16 @@ jobs:
options: --health-cmd="nc 127.0.0.1 10000 -z" --health-interval=1s --health-retries=30
cache:
- image: ghcr.io/nextcloud/continuous-integration-redis:latest
+ image: ghcr.io/nextcloud/continuous-integration-redis:latest # zizmor: ignore[unpinned-images]
ports:
- 6379:6379/tcp
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
steps:
- name: Checkout server
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
+ persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
@@ -105,7 +109,7 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
- uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2
+ uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3
with:
files: ./clover.xml
flags: phpunit-azure
diff --git a/.github/workflows/object-storage-s3.yml b/.github/workflows/object-storage-s3.yml
index 19f500bac9e..4f0cee3d8a9 100644
--- a/.github/workflows/object-storage-s3.yml
+++ b/.github/workflows/object-storage-s3.yml
@@ -6,6 +6,9 @@ on:
schedule:
- cron: "15 2 * * *"
+permissions:
+ contents: read
+
concurrency:
group: object-storage-s3-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
@@ -54,13 +57,13 @@ jobs:
services:
cache:
- image: ghcr.io/nextcloud/continuous-integration-redis:latest
+ image: ghcr.io/nextcloud/continuous-integration-redis:latest # zizmor: ignore[unpinned-images]
ports:
- 6379:6379/tcp
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
minio:
- image: bitnami/minio
+ image: bitnami/minio@sha256:50cec18ac4184af4671a78aedd5554942c8ae105d51a465fa82037949046da01 # v2025.4.22
env:
MINIO_ROOT_USER: nextcloud
MINIO_ROOT_PASSWORD: bWluaW8tc2VjcmV0LWtleS1uZXh0Y2xvdWQ=
@@ -70,8 +73,9 @@ jobs:
steps:
- name: Checkout server
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
+ persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
@@ -111,7 +115,7 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
- uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2
+ uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3
with:
files: ./clover.xml
flags: phpunit-s3
diff --git a/.github/workflows/object-storage-swift.yml b/.github/workflows/object-storage-swift.yml
index dd28ec6cfaa..89dbfcc80b1 100644
--- a/.github/workflows/object-storage-swift.yml
+++ b/.github/workflows/object-storage-swift.yml
@@ -6,6 +6,9 @@ on:
schedule:
- cron: "15 2 * * *"
+permissions:
+ contents: read
+
concurrency:
group: object-storage-swift-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
@@ -54,21 +57,22 @@ jobs:
services:
cache:
- image: ghcr.io/nextcloud/continuous-integration-redis:latest
+ image: ghcr.io/nextcloud/continuous-integration-redis:latest # zizmor: ignore[unpinned-images]
ports:
- 6379:6379/tcp
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
swift:
- image: ghcr.io/cscfi/docker-keystone-swift
+ image: ghcr.io/cscfi/docker-keystone-swift@sha256:e8b1ec21120ab9adc6ac6a2b98785fd273676439a8633fe898e37f2aea7e0712
ports:
- 5000:5000
- 8080:8080
steps:
- name: Checkout server
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
+ persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
@@ -101,7 +105,7 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
- uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2
+ uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3
with:
files: ./clover.xml
flags: phpunit-swift
diff --git a/.github/workflows/openapi.yml b/.github/workflows/openapi.yml
index 1d5cdd45c24..ec686844f03 100644
--- a/.github/workflows/openapi.yml
+++ b/.github/workflows/openapi.yml
@@ -27,9 +27,11 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: false
- name: Set up php
- uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
+ uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a # v2.33.0
with:
php-version: '8.1'
extensions: ctype, curl, dom, fileinfo, gd, json, libxml, mbstring, openssl, pcntl, pdo, posix, session, simplexml, xml, xmlreader, xmlwriter, zip, zlib
diff --git a/.github/workflows/performance.yml b/.github/workflows/performance.yml
index cafce1e34ea..775ff2d82de 100644
--- a/.github/workflows/performance.yml
+++ b/.github/workflows/performance.yml
@@ -4,6 +4,9 @@ name: Performance testing
on:
pull_request:
+permissions:
+ contents: read
+
concurrency:
group: performance-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
@@ -14,6 +17,9 @@ jobs:
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
+ permissions:
+ pull-requests: write
+
strategy:
fail-fast: false
matrix:
@@ -29,13 +35,14 @@ jobs:
exit 1
- name: Checkout server before PR
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
+ persist-credentials: false
submodules: true
ref: ${{ github.event.pull_request.base.ref }}
- name: Set up php ${{ matrix.php-versions }}
- uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
+ uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a # v2.33.0
with:
php-version: ${{ matrix.php-versions }}
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
@@ -49,7 +56,7 @@ jobs:
php -S localhost:8080 &
- name: Apply blueprint
- uses: icewind1991/blueprint@v0.1.2
+ uses: icewind1991/blueprint@00504403f76cb2a09efd0d16793575055e6f63cb # v0.1.2
with:
blueprint: tests/blueprints/basic.toml
ref: ${{ github.event.pull_request.head.ref }}
@@ -66,7 +73,7 @@ jobs:
output: before.json
profiler-branch: master
- - name: Apply PR
+ - name: Apply PR # zizmor: ignore[template-injection]
run: |
git remote add pr '${{ github.event.pull_request.head.repo.clone_url }}'
git fetch pr '${{ github.event.pull_request.head.ref }}'
@@ -98,7 +105,7 @@ jobs:
before.json
after.json
- - uses: actions/github-script@v7
+ - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7
if: failure() && steps.compare.outcome == 'failure'
with:
github-token: ${{secrets.GITHUB_TOKEN}}
diff --git a/.github/workflows/phpunit-32bits.yml b/.github/workflows/phpunit-32bits.yml
index 19c70a9ea41..020d27508e6 100644
--- a/.github/workflows/phpunit-32bits.yml
+++ b/.github/workflows/phpunit-32bits.yml
@@ -32,8 +32,9 @@ jobs:
steps:
- name: Checkout server
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
+ persist-credentials: false
submodules: true
- name: Install tools
diff --git a/.github/workflows/phpunit-mariadb.yml b/.github/workflows/phpunit-mariadb.yml
index d48efc7aeb9..855f15f48f6 100644
--- a/.github/workflows/phpunit-mariadb.yml
+++ b/.github/workflows/phpunit-mariadb.yml
@@ -23,6 +23,9 @@ concurrency:
jobs:
changes:
runs-on: ubuntu-latest-low
+ permissions:
+ contents: read
+ pull-requests: read
outputs:
src: ${{ steps.changes.outputs.src}}
@@ -68,7 +71,7 @@ jobs:
services:
cache:
- image: ghcr.io/nextcloud/continuous-integration-redis:latest
+ image: ghcr.io/nextcloud/continuous-integration-redis:latest # zizmor: ignore[unpinned-images]
ports:
- 6379:6379/tcp
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
@@ -88,10 +91,11 @@ jobs:
- name: Checkout server
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
+ persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
- uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
+ uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a # v2.33.0
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -124,7 +128,7 @@ jobs:
- name: Upload db code coverage
if: ${{ !cancelled() && matrix.coverage }}
- uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2
+ uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3
with:
files: ./clover.db.xml
flags: phpunit-mariadb
diff --git a/.github/workflows/phpunit-memcached.yml b/.github/workflows/phpunit-memcached.yml
index 26dfb0db438..97103e97f4b 100644
--- a/.github/workflows/phpunit-memcached.yml
+++ b/.github/workflows/phpunit-memcached.yml
@@ -64,15 +64,16 @@ jobs:
services:
memcached:
- image: ghcr.io/nextcloud/continuous-integration-redis:latest
+ image: ghcr.io/nextcloud/continuous-integration-redis:latest # zizmor: ignore[unpinned-images]
ports:
- 11212:11212/tcp
- 11212:11212/udp
steps:
- name: Checkout server
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
+ persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
@@ -101,7 +102,7 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
- uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2
+ uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3
with:
files: ./clover.xml
flags: phpunit-memcached
diff --git a/.github/workflows/phpunit-mysql-sharding.yml b/.github/workflows/phpunit-mysql-sharding.yml
index 15e020df3b0..5db6c12cede 100644
--- a/.github/workflows/phpunit-mysql-sharding.yml
+++ b/.github/workflows/phpunit-mysql-sharding.yml
@@ -62,13 +62,13 @@ jobs:
services:
cache:
- image: ghcr.io/nextcloud/continuous-integration-redis:latest
+ image: ghcr.io/nextcloud/continuous-integration-redis:latest # zizmor: ignore[unpinned-images]
ports:
- 6379:6379/tcp
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
mysql:
- image: ghcr.io/nextcloud/continuous-integration-mysql-${{ matrix.mysql-versions }}:latest
+ image: ghcr.io/nextcloud/continuous-integration-mysql-${{ matrix.mysql-versions }}:latest # zizmor: ignore[unpinned-images]
ports:
- 4444:3306/tcp
env:
@@ -78,7 +78,7 @@ jobs:
MYSQL_DATABASE: oc_autotest
options: --health-cmd="mysqladmin ping" --health-interval 5s --health-timeout 2s --health-retries 10
shard1:
- image: ghcr.io/nextcloud/continuous-integration-mysql-${{ matrix.mysql-versions }}:latest
+ image: ghcr.io/nextcloud/continuous-integration-mysql-${{ matrix.mysql-versions }}:latest # zizmor: ignore[unpinned-images]
ports:
- 5001:3306/tcp
env:
@@ -88,7 +88,7 @@ jobs:
MYSQL_DATABASE: nextcloud
options: --health-cmd="mysqladmin ping" --health-interval 5s --health-timeout 2s --health-retries 10
shard2:
- image: ghcr.io/nextcloud/continuous-integration-mysql-${{ matrix.mysql-versions }}:latest
+ image: ghcr.io/nextcloud/continuous-integration-mysql-${{ matrix.mysql-versions }}:latest # zizmor: ignore[unpinned-images]
ports:
- 5002:3306/tcp
env:
@@ -98,7 +98,7 @@ jobs:
MYSQL_DATABASE: nextcloud
options: --health-cmd="mysqladmin ping" --health-interval 5s --health-timeout 2s --health-retries 10
shard3:
- image: ghcr.io/nextcloud/continuous-integration-mysql-${{ matrix.mysql-versions }}:latest
+ image: ghcr.io/nextcloud/continuous-integration-mysql-${{ matrix.mysql-versions }}:latest # zizmor: ignore[unpinned-images]
ports:
- 5003:3306/tcp
env:
@@ -108,7 +108,7 @@ jobs:
MYSQL_DATABASE: nextcloud
options: --health-cmd="mysqladmin ping" --health-interval 5s --health-timeout 2s --health-retries 10
shard4:
- image: ghcr.io/nextcloud/continuous-integration-mysql-${{ matrix.mysql-versions }}:latest
+ image: ghcr.io/nextcloud/continuous-integration-mysql-${{ matrix.mysql-versions }}:latest # zizmor: ignore[unpinned-images]
ports:
- 5004:3306/tcp
env:
@@ -120,8 +120,9 @@ jobs:
steps:
- name: Checkout server
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
+ persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
@@ -159,7 +160,7 @@ jobs:
- name: Upload db code coverage
if: ${{ !cancelled() && matrix.coverage }}
- uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2
+ uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3
with:
files: ./clover.db.xml
flags: phpunit-mysql
diff --git a/.github/workflows/phpunit-mysql.yml b/.github/workflows/phpunit-mysql.yml
index 9f95a47f97c..de69848c5b1 100644
--- a/.github/workflows/phpunit-mysql.yml
+++ b/.github/workflows/phpunit-mysql.yml
@@ -23,6 +23,9 @@ concurrency:
jobs:
changes:
runs-on: ubuntu-latest-low
+ permissions:
+ contents: read
+ pull-requests: read
outputs:
src: ${{ steps.changes.outputs.src }}
@@ -68,13 +71,13 @@ jobs:
services:
cache:
- image: ghcr.io/nextcloud/continuous-integration-redis:latest
+ image: ghcr.io/nextcloud/continuous-integration-redis:latest # zizmor: ignore[unpinned-images]
ports:
- 6379:6379/tcp
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
mysql:
- image: ghcr.io/nextcloud/continuous-integration-mysql-${{ matrix.mysql-versions }}:latest
+ image: ghcr.io/nextcloud/continuous-integration-mysql-${{ matrix.mysql-versions }}:latest # zizmor: ignore[unpinned-images]
ports:
- 4444:3306/tcp
env:
@@ -86,12 +89,13 @@ jobs:
steps:
- name: Checkout server
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
+ persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
- uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
+ uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a # v2.33.0
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -124,7 +128,7 @@ jobs:
- name: Upload db code coverage
if: ${{ !cancelled() && matrix.coverage }}
- uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2
+ uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3
with:
files: ./clover.db.xml
flags: phpunit-mysql
diff --git a/.github/workflows/phpunit-nodb.yml b/.github/workflows/phpunit-nodb.yml
index 91d1a5fcb72..1cef70d380a 100644
--- a/.github/workflows/phpunit-nodb.yml
+++ b/.github/workflows/phpunit-nodb.yml
@@ -67,15 +67,16 @@ jobs:
services:
cache:
- image: ghcr.io/nextcloud/continuous-integration-redis:latest
+ image: ghcr.io/nextcloud/continuous-integration-redis:latest # zizmor: ignore[unpinned-images]
ports:
- 6379:6379/tcp
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
steps:
- name: Checkout server
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
+ persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
@@ -107,7 +108,7 @@ jobs:
- name: Upload nodb code coverage
if: ${{ !cancelled() && matrix.coverage }}
- uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2
+ uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3
with:
files: ./clover.nodb.xml
flags: phpunit-nodb
diff --git a/.github/workflows/phpunit-object-store-primary.yml b/.github/workflows/phpunit-object-store-primary.yml
index 1ae84beffae..6d6d6358848 100644
--- a/.github/workflows/phpunit-object-store-primary.yml
+++ b/.github/workflows/phpunit-object-store-primary.yml
@@ -6,6 +6,9 @@ on:
schedule:
- cron: "15 2 * * *"
+permissions:
+ contents: read
+
concurrency:
group: phpunit-object-store-primary-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
@@ -54,13 +57,13 @@ jobs:
services:
cache:
- image: ghcr.io/nextcloud/continuous-integration-redis:latest
+ image: ghcr.io/nextcloud/continuous-integration-redis:latest # zizmor: ignore[unpinned-images]
ports:
- 6379:6379/tcp
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
minio:
- image: bitnami/minio
+ image: bitnami/minio@sha256:50cec18ac4184af4671a78aedd5554942c8ae105d51a465fa82037949046da01 # v2025.4.22
env:
MINIO_ROOT_USER: nextcloud
MINIO_ROOT_PASSWORD: bWluaW8tc2VjcmV0LWtleS1uZXh0Y2xvdWQ=
@@ -70,8 +73,9 @@ jobs:
steps:
- name: Checkout server
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
+ persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
diff --git a/.github/workflows/phpunit-oci.yml b/.github/workflows/phpunit-oci.yml
index 72d3a873b89..ececac2f8f9 100644
--- a/.github/workflows/phpunit-oci.yml
+++ b/.github/workflows/phpunit-oci.yml
@@ -23,6 +23,9 @@ concurrency:
jobs:
changes:
runs-on: ubuntu-latest-low
+ permissions:
+ contents: read
+ pull-requests: read
outputs:
src: ${{ steps.changes.outputs.src }}
@@ -73,7 +76,7 @@ jobs:
services:
cache:
- image: ghcr.io/nextcloud/continuous-integration-redis:latest
+ image: ghcr.io/nextcloud/continuous-integration-redis:latest # zizmor: ignore[unpinned-images]
ports:
- 6379:6379/tcp
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
@@ -100,10 +103,11 @@ jobs:
- name: Checkout server
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
+ persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
- uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
+ uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a # v2.33.0
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -129,7 +133,7 @@ jobs:
- name: Upload db code coverage
if: ${{ !cancelled() && matrix.coverage }}
- uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2
+ uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3
with:
files: ./clover.db.xml
flags: phpunit-oci
diff --git a/.github/workflows/phpunit-pgsql.yml b/.github/workflows/phpunit-pgsql.yml
index f0580e4c1eb..7939bb529d8 100644
--- a/.github/workflows/phpunit-pgsql.yml
+++ b/.github/workflows/phpunit-pgsql.yml
@@ -23,6 +23,9 @@ concurrency:
jobs:
changes:
runs-on: ubuntu-latest-low
+ permissions:
+ contents: read
+ pull-requests: read
outputs:
src: ${{ steps.changes.outputs.src }}
@@ -69,13 +72,13 @@ jobs:
services:
cache:
- image: ghcr.io/nextcloud/continuous-integration-redis:latest
+ image: ghcr.io/nextcloud/continuous-integration-redis:latest # zizmor: ignore[unpinned-images]
ports:
- 6379:6379/tcp
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
postgres:
- image: ghcr.io/nextcloud/continuous-integration-postgres-${{ matrix.postgres-versions }}:latest
+ image: ghcr.io/nextcloud/continuous-integration-postgres-${{ matrix.postgres-versions }}:latest # zizmor: ignore[unpinned-images]
ports:
- 4444:5432/tcp
env:
@@ -88,10 +91,11 @@ jobs:
- name: Checkout server
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
+ persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
- uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
+ uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a # v2.33.0
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -119,7 +123,7 @@ jobs:
- name: Upload db code coverage
if: ${{ !cancelled() && matrix.coverage }}
- uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2
+ uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3
with:
files: ./clover.db.xml
flags: phpunit-postgres
diff --git a/.github/workflows/phpunit-sqlite.yml b/.github/workflows/phpunit-sqlite.yml
index 76758de78d9..bcbde3f108a 100644
--- a/.github/workflows/phpunit-sqlite.yml
+++ b/.github/workflows/phpunit-sqlite.yml
@@ -23,6 +23,9 @@ concurrency:
jobs:
changes:
runs-on: ubuntu-latest-low
+ permissions:
+ contents: read
+ pull-requests: read
outputs:
src: ${{ steps.changes.outputs.src }}
@@ -64,7 +67,7 @@ jobs:
services:
cache:
- image: ghcr.io/nextcloud/continuous-integration-redis:latest
+ image: ghcr.io/nextcloud/continuous-integration-redis:latest # zizmor: ignore[unpinned-images]
ports:
- 6379:6379/tcp
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
@@ -73,10 +76,11 @@ jobs:
- name: Checkout server
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
+ persist-credentials: false
submodules: true
- name: Set up php ${{ matrix.php-versions }}
- uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
+ uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a # v2.33.0
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -105,7 +109,7 @@ jobs:
- name: Upload db code coverage
if: ${{ !cancelled() && matrix.coverage }}
- uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2
+ uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3
with:
files: ./clover.db.xml
flags: phpunit-sqlite
diff --git a/.github/workflows/pr-feedback.yml b/.github/workflows/pr-feedback.yml
index 4c7daff0991..bc5560796e3 100644
--- a/.github/workflows/pr-feedback.yml
+++ b/.github/workflows/pr-feedback.yml
@@ -15,8 +15,13 @@ on:
schedule:
- cron: '30 1 * * *'
+permissions:
+ contents: read
+ pull-requests: write
+
jobs:
pr-feedback:
+ if: ${{ github.repository_owner == 'nextcloud' }}
runs-on: ubuntu-latest
steps:
- name: The get-github-handles-from-website action
@@ -31,7 +36,7 @@ jobs:
blocklist=$(curl https://raw.githubusercontent.com/nextcloud/.github/master/non-community-usernames.txt | paste -s -d, -)
echo "blocklist=$blocklist" >> "$GITHUB_OUTPUT"
- - uses: marcelklehr/pr-feedback-action@1883b38a033fb16f576875e0cf45f98b857655c4
+ - uses: nextcloud/pr-feedback-action@1883b38a033fb16f576875e0cf45f98b857655c4 # main
with:
feedback-message: |
Hello there,
diff --git a/.github/workflows/reuse.yml b/.github/workflows/reuse.yml
index 62bb8b11d4c..95a8626a4a5 100644
--- a/.github/workflows/reuse.yml
+++ b/.github/workflows/reuse.yml
@@ -11,12 +11,17 @@ name: REUSE Compliance Check
on: [pull_request]
+permissions:
+ contents: read
+
jobs:
reuse-compliance-check:
- runs-on: ubuntu-latest
+ runs-on: ubuntu-latest-low
steps:
- - name: Checkout
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ - name: Checkout
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: false
- - name: REUSE Compliance Check
- uses: fsfe/reuse-action@bb774aa972c2a89ff34781233d275075cbddf542 # v5.0.0
+ - name: REUSE Compliance Check
+ uses: fsfe/reuse-action@bb774aa972c2a89ff34781233d275075cbddf542 # v5.0.0
diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml
index f358974a9c1..d8fdaca0dee 100644
--- a/.github/workflows/stale.yml
+++ b/.github/workflows/stale.yml
@@ -7,6 +7,9 @@ on:
schedule:
- cron: "0 0 * * *"
+permissions:
+ contents: read
+
jobs:
stale:
runs-on: ubuntu-latest
@@ -17,7 +20,7 @@ jobs:
issues: write
steps:
- - uses: actions/stale@v9
+ - uses: actions/stale@5bef64f19d7facfb25b37b414482c7164d639639 # v9
with:
repo-token: ${{ secrets.COMMAND_BOT_PAT }}
stale-issue-message: >
diff --git a/.github/workflows/static-code-analysis.yml b/.github/workflows/static-code-analysis.yml
index f707849564f..63aa86d34e4 100644
--- a/.github/workflows/static-code-analysis.yml
+++ b/.github/workflows/static-code-analysis.yml
@@ -13,6 +13,9 @@ on:
- '.github/workflows/static-code-analysis.yml'
- '**.php'
+permissions:
+ contents: read
+
concurrency:
group: static-code-analysis-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
@@ -27,6 +30,7 @@ jobs:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
with:
+ persist-credentials: false
submodules: true
- name: Set up php
@@ -57,6 +61,7 @@ jobs:
- name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
with:
+ persist-credentials: false
submodules: true
- name: Set up php
@@ -78,7 +83,7 @@ jobs:
- name: Upload Security Analysis results to GitHub
if: always()
- uses: github/codeql-action/upload-sarif@v3
+ uses: github/codeql-action/upload-sarif@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3
with:
sarif_file: results.sarif
@@ -91,6 +96,7 @@ jobs:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
with:
+ persist-credentials: false
submodules: true
- name: Set up php
@@ -121,6 +127,7 @@ jobs:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
with:
+ persist-credentials: false
submodules: true
- name: Set up php
diff --git a/.github/workflows/update-cacert-bundle.yml b/.github/workflows/update-cacert-bundle.yml
index 263f0d94dde..ab7dc7b6604 100644
--- a/.github/workflows/update-cacert-bundle.yml
+++ b/.github/workflows/update-cacert-bundle.yml
@@ -7,6 +7,9 @@ on:
schedule:
- cron: "5 2 * * *"
+permissions:
+ contents: read
+
jobs:
update-ca-certificate-bundle:
runs-on: ubuntu-latest
@@ -19,8 +22,9 @@ jobs:
name: update-ca-certificate-bundle-${{ matrix.branches }}
steps:
- - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
+ persist-credentials: false
ref: ${{ matrix.branches }}
submodules: true
diff --git a/.github/workflows/update-code-signing-crl.yml b/.github/workflows/update-code-signing-crl.yml
index eb2c00e9302..064d47c2d5c 100644
--- a/.github/workflows/update-code-signing-crl.yml
+++ b/.github/workflows/update-code-signing-crl.yml
@@ -7,6 +7,9 @@ on:
schedule:
- cron: "5 2 * * *"
+permissions:
+ contents: read
+
jobs:
update-code-signing-crl:
runs-on: ubuntu-latest
@@ -19,8 +22,9 @@ jobs:
name: update-code-signing-crl-${{ matrix.branches }}
steps:
- - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
+ persist-credentials: false
ref: ${{ matrix.branches }}
submodules: true
diff --git a/.github/workflows/update-min-supported-desktop.yml b/.github/workflows/update-min-supported-desktop.yml
index a1c55675337..fa203ede356 100644
--- a/.github/workflows/update-min-supported-desktop.yml
+++ b/.github/workflows/update-min-supported-desktop.yml
@@ -7,13 +7,17 @@ on:
schedule:
- cron: "0 0 * * 1"
+permissions:
+ contents: read
+
jobs:
update-minimum-supported-desktop-version:
runs-on: ubuntu-latest-low
steps:
- - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
+ persist-credentials: false
submodules: true
- name: Download desktop client version file from 5 years ago
diff --git a/apps/dav/lib/DAV/GroupPrincipalBackend.php b/apps/dav/lib/DAV/GroupPrincipalBackend.php
index 143fc7d69f1..ddbd64bdda1 100644
--- a/apps/dav/lib/DAV/GroupPrincipalBackend.php
+++ b/apps/dav/lib/DAV/GroupPrincipalBackend.php
@@ -50,8 +50,10 @@ class GroupPrincipalBackend implements BackendInterface {
$principals = [];
if ($prefixPath === self::PRINCIPAL_PREFIX) {
- foreach ($this->groupManager->search('') as $user) {
- $principals[] = $this->groupToPrincipal($user);
+ foreach ($this->groupManager->search('') as $group) {
+ if (!$group->hideFromCollaboration()) {
+ $principals[] = $this->groupToPrincipal($group);
+ }
}
}
@@ -77,7 +79,7 @@ class GroupPrincipalBackend implements BackendInterface {
$name = urldecode($elements[2]);
$group = $this->groupManager->get($name);
- if (!is_null($group)) {
+ if ($group !== null && !$group->hideFromCollaboration()) {
return $this->groupToPrincipal($group);
}
diff --git a/apps/files_external/l10n/fr.js b/apps/files_external/l10n/fr.js
index bb6ed322fea..5c6d38b6396 100644
--- a/apps/files_external/l10n/fr.js
+++ b/apps/files_external/l10n/fr.js
@@ -7,6 +7,7 @@ OC.L10N.register(
"Error configuring OAuth2" : "Erreur lors de la configuration de OAuth2",
"Generate keys" : "Générer des clés",
"Error generating key pair" : "Erreur lors de la génération des clés",
+ "You are not logged in" : "Vous n'êtes pas connecté",
"Permission denied" : "Autorisation refusée",
"Forbidden to manage local mounts" : "Interdiction de gérer les montages locaux.",
"Storage with ID \"%d\" not found" : "Stockage avec l'ID \"%d\" non trouvé",
diff --git a/apps/files_external/l10n/fr.json b/apps/files_external/l10n/fr.json
index 23e6346641f..2cadc830a7d 100644
--- a/apps/files_external/l10n/fr.json
+++ b/apps/files_external/l10n/fr.json
@@ -5,6 +5,7 @@
"Error configuring OAuth2" : "Erreur lors de la configuration de OAuth2",
"Generate keys" : "Générer des clés",
"Error generating key pair" : "Erreur lors de la génération des clés",
+ "You are not logged in" : "Vous n'êtes pas connecté",
"Permission denied" : "Autorisation refusée",
"Forbidden to manage local mounts" : "Interdiction de gérer les montages locaux.",
"Storage with ID \"%d\" not found" : "Stockage avec l'ID \"%d\" non trouvé",
diff --git a/apps/settings/l10n/ar.js b/apps/settings/l10n/ar.js
index 23f07351faa..e9526abeba4 100644
--- a/apps/settings/l10n/ar.js
+++ b/apps/settings/l10n/ar.js
@@ -583,12 +583,9 @@ OC.L10N.register(
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "من المهم دائماً إنشاء نسخ احتياطية بشكل معتاد لبياناتك. في حال كنت مُفعِّلا لخاصية التشفير تأكد دائما من حصولك على رمز التشفير بالإضافة الى البيانات.",
"Refer to the admin documentation on how to manually also encrypt existing files." : "إرجِع إلى توثيق المُشرِف حول كيفية تشفير الملفات الموجودة يدويّاً أيضاً.",
"This is the final warning: Do you really want to enable encryption?" : "هذا هو التحذير الاخير: هل تريد حقا تفعيل خاصية التشفير؟",
- "Failed to remove group \"{group}\"" : "تعذّر حذف المجموعة \"{group}\"",
"Please confirm the group removal" : "رجاءً، قم بتأكيد حذف المجموعة",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "أنت على وشك إزالة المجموعة \"{group}\". لن يتم حذف الحسابات.",
"Submit" : "إرسال ",
"Rename group" : "تغيير تسمية مجموعة",
- "Remove group" : "حذف مجموعة",
"Current password" : "كلمة المرور الحالية",
"New password" : "كلمة المرور الجديدة",
"Change password" : "تغيير كلمة المرور",
@@ -896,6 +893,9 @@ OC.L10N.register(
"for WebAuthn passwordless login, and SFTP storage" : "للدخول بدون كلمة مرور passwordless login في WebAuthn، و وحدات تخزين SFTP",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "تمّ اكتشاف الإصدار \"%s\" من PostgreSQL. الإصدارات الموصى بها لأفضل أداء و للثبات و لاكتمال الوظائف مع هذا الإصدار من نكست كلاود هي من 12 إلى 16. ",
"Set default expiration date for shares" : "تعيين تاريخ إنتهاء الصلاحية للمشاركات",
+ "Failed to remove group \"{group}\"" : "تعذّر حذف المجموعة \"{group}\"",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "أنت على وشك إزالة المجموعة \"{group}\". لن يتم حذف الحسابات.",
+ "Remove group" : "حذف مجموعة",
"Your biography" : "سيرتك الذاتية",
"You are using <strong>{usage}</strong>" : "أنت تستعمل <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "أنت تستعمل <strong>{usage}</strong> من <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)",
diff --git a/apps/settings/l10n/ar.json b/apps/settings/l10n/ar.json
index 24b097daa9e..955f5a49f95 100644
--- a/apps/settings/l10n/ar.json
+++ b/apps/settings/l10n/ar.json
@@ -581,12 +581,9 @@
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "من المهم دائماً إنشاء نسخ احتياطية بشكل معتاد لبياناتك. في حال كنت مُفعِّلا لخاصية التشفير تأكد دائما من حصولك على رمز التشفير بالإضافة الى البيانات.",
"Refer to the admin documentation on how to manually also encrypt existing files." : "إرجِع إلى توثيق المُشرِف حول كيفية تشفير الملفات الموجودة يدويّاً أيضاً.",
"This is the final warning: Do you really want to enable encryption?" : "هذا هو التحذير الاخير: هل تريد حقا تفعيل خاصية التشفير؟",
- "Failed to remove group \"{group}\"" : "تعذّر حذف المجموعة \"{group}\"",
"Please confirm the group removal" : "رجاءً، قم بتأكيد حذف المجموعة",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "أنت على وشك إزالة المجموعة \"{group}\". لن يتم حذف الحسابات.",
"Submit" : "إرسال ",
"Rename group" : "تغيير تسمية مجموعة",
- "Remove group" : "حذف مجموعة",
"Current password" : "كلمة المرور الحالية",
"New password" : "كلمة المرور الجديدة",
"Change password" : "تغيير كلمة المرور",
@@ -894,6 +891,9 @@
"for WebAuthn passwordless login, and SFTP storage" : "للدخول بدون كلمة مرور passwordless login في WebAuthn، و وحدات تخزين SFTP",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "تمّ اكتشاف الإصدار \"%s\" من PostgreSQL. الإصدارات الموصى بها لأفضل أداء و للثبات و لاكتمال الوظائف مع هذا الإصدار من نكست كلاود هي من 12 إلى 16. ",
"Set default expiration date for shares" : "تعيين تاريخ إنتهاء الصلاحية للمشاركات",
+ "Failed to remove group \"{group}\"" : "تعذّر حذف المجموعة \"{group}\"",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "أنت على وشك إزالة المجموعة \"{group}\". لن يتم حذف الحسابات.",
+ "Remove group" : "حذف مجموعة",
"Your biography" : "سيرتك الذاتية",
"You are using <strong>{usage}</strong>" : "أنت تستعمل <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "أنت تستعمل <strong>{usage}</strong> من <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)",
diff --git a/apps/settings/l10n/ast.js b/apps/settings/l10n/ast.js
index 69ff6506628..98b745f5e14 100644
--- a/apps/settings/l10n/ast.js
+++ b/apps/settings/l10n/ast.js
@@ -324,11 +324,9 @@ OC.L10N.register(
"No encryption module loaded, please enable an encryption module in the app menu." : "Nun se cargó nengún módulu de cifráu, activa unu nel menú d'aplicaciones.",
"Enable encryption" : "Activar el cifráu",
"Please read carefully before activating server-side encryption:" : "Llei con procuru enantes d'activar el cifráu nel sirvidor:",
- "Failed to remove group \"{group}\"" : "Nun se pue quitar el grupu «{group}»",
"Please confirm the group removal" : "Confirma'l desaniciu del grupu",
"Submit" : "Unviar",
"Rename group" : "Renomar el grupu",
- "Remove group" : "Quitar el grupu",
"Current password" : "Contraseña actual",
"New password" : "Contraseña nueva",
"Change password" : "Camudar la contraseña",
@@ -533,6 +531,8 @@ OC.L10N.register(
"File locking" : "Bloquéu de ficheros",
"Transactional file locking is disabled, this might lead to issues with race conditions. Enable \"filelocking.enabled\" in config.php to avoid these problems." : "El bloquéu de ficheros transaicional ta desactiváu y esto quiciabes produza problemes con condiciones de carrera. Activa «filelocking.enabled» nel ficheru config.php pa evitar estos problemes.",
"The PHP memory limit is below the recommended value of %s." : "La llende de memoria de PHP ye inferior al valor aconseyáu de %s.",
+ "Failed to remove group \"{group}\"" : "Nun se pue quitar el grupu «{group}»",
+ "Remove group" : "Quitar el grupu",
"Your biography" : "Biografía",
"You are using <strong>{usage}</strong>" : "Tas usando <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Tas usando <strong>{usage}</strong> de <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/ast.json b/apps/settings/l10n/ast.json
index ac5e96fd046..02f6d8c3fc5 100644
--- a/apps/settings/l10n/ast.json
+++ b/apps/settings/l10n/ast.json
@@ -322,11 +322,9 @@
"No encryption module loaded, please enable an encryption module in the app menu." : "Nun se cargó nengún módulu de cifráu, activa unu nel menú d'aplicaciones.",
"Enable encryption" : "Activar el cifráu",
"Please read carefully before activating server-side encryption:" : "Llei con procuru enantes d'activar el cifráu nel sirvidor:",
- "Failed to remove group \"{group}\"" : "Nun se pue quitar el grupu «{group}»",
"Please confirm the group removal" : "Confirma'l desaniciu del grupu",
"Submit" : "Unviar",
"Rename group" : "Renomar el grupu",
- "Remove group" : "Quitar el grupu",
"Current password" : "Contraseña actual",
"New password" : "Contraseña nueva",
"Change password" : "Camudar la contraseña",
@@ -531,6 +529,8 @@
"File locking" : "Bloquéu de ficheros",
"Transactional file locking is disabled, this might lead to issues with race conditions. Enable \"filelocking.enabled\" in config.php to avoid these problems." : "El bloquéu de ficheros transaicional ta desactiváu y esto quiciabes produza problemes con condiciones de carrera. Activa «filelocking.enabled» nel ficheru config.php pa evitar estos problemes.",
"The PHP memory limit is below the recommended value of %s." : "La llende de memoria de PHP ye inferior al valor aconseyáu de %s.",
+ "Failed to remove group \"{group}\"" : "Nun se pue quitar el grupu «{group}»",
+ "Remove group" : "Quitar el grupu",
"Your biography" : "Biografía",
"You are using <strong>{usage}</strong>" : "Tas usando <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Tas usando <strong>{usage}</strong> de <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/bg.js b/apps/settings/l10n/bg.js
index 696fc33984a..13bc0d59e24 100644
--- a/apps/settings/l10n/bg.js
+++ b/apps/settings/l10n/bg.js
@@ -256,7 +256,6 @@ OC.L10N.register(
"This is the final warning: Do you really want to enable encryption?" : "Това е последно предупреждение: Наистина ли искате да активирате криптирането?",
"Submit" : "Изпращане",
"Rename group" : "Преименуване на група",
- "Remove group" : "Премахване на групата",
"Current password" : "Текуща парола",
"New password" : "Нова парола",
"Change password" : "Промени паролата",
@@ -441,6 +440,7 @@ OC.L10N.register(
"Use a second factor besides your password to increase security for your account." : "Ползвайте двустепенно удостоверяване за да повишите сигурността на профила си.",
"If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Ако използвате приложения на трети страни, за да се свържете с Nextcloud, моля, не забравяйте да създадете и конфигурирате парола за приложение за всяко едно от тях, преди да активирате удостоверяване на втория фактор.",
"Set default expiration date for shares" : "Задай дата за изтичане по подразбиране за споделянията",
+ "Remove group" : "Премахване на групата",
"Your biography" : "Вашата биография",
"You are using <strong>{usage}</strong>" : "Използвате <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Използвате <strong>{usage}</strong> от <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/bg.json b/apps/settings/l10n/bg.json
index 80e8a66a7e0..f981b90e759 100644
--- a/apps/settings/l10n/bg.json
+++ b/apps/settings/l10n/bg.json
@@ -254,7 +254,6 @@
"This is the final warning: Do you really want to enable encryption?" : "Това е последно предупреждение: Наистина ли искате да активирате криптирането?",
"Submit" : "Изпращане",
"Rename group" : "Преименуване на група",
- "Remove group" : "Премахване на групата",
"Current password" : "Текуща парола",
"New password" : "Нова парола",
"Change password" : "Промени паролата",
@@ -439,6 +438,7 @@
"Use a second factor besides your password to increase security for your account." : "Ползвайте двустепенно удостоверяване за да повишите сигурността на профила си.",
"If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Ако използвате приложения на трети страни, за да се свържете с Nextcloud, моля, не забравяйте да създадете и конфигурирате парола за приложение за всяко едно от тях, преди да активирате удостоверяване на втория фактор.",
"Set default expiration date for shares" : "Задай дата за изтичане по подразбиране за споделянията",
+ "Remove group" : "Премахване на групата",
"Your biography" : "Вашата биография",
"You are using <strong>{usage}</strong>" : "Използвате <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Използвате <strong>{usage}</strong> от <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/br.js b/apps/settings/l10n/br.js
index ea3a5d8a334..b3408c95f48 100644
--- a/apps/settings/l10n/br.js
+++ b/apps/settings/l10n/br.js
@@ -197,7 +197,6 @@ OC.L10N.register(
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Mat eo kaout ur vackup reoliek eus o roadennoù, ha e bezit sur ober ur vackup eus an alrv'hwez sifrañ gant o roadennoù sifret.",
"This is the final warning: Do you really want to enable encryption?" : "Kemenadenn diwall divezhañ : Sur oc'h aotreañ ar sifrañ ?",
"Submit" : "Kinnig",
- "Remove group" : "Lemel strollad",
"Current password" : "Ger-tremen hiziv",
"New password" : "Ger-tremen nevez",
"Change password" : "Cheñch ger-tremen",
@@ -313,6 +312,7 @@ OC.L10N.register(
"Check out our blog" : "Sellit ouzh hon vlog",
"Subscribe to our newsletter" : "Koumannantit d'hon kemenadennoù nevesadur",
"Use a second factor besides your password to increase security for your account." : "Implijour un eil-elfenn d'ho ger-tremen a gwella urentez o c'hont.",
- "Set default expiration date for shares" : "Lakaat un deizat termen dre ziouer evit ar rannañ"
+ "Set default expiration date for shares" : "Lakaat un deizat termen dre ziouer evit ar rannañ",
+ "Remove group" : "Lemel strollad"
},
"nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);");
diff --git a/apps/settings/l10n/br.json b/apps/settings/l10n/br.json
index 388ad7ebee4..74b70e28b0e 100644
--- a/apps/settings/l10n/br.json
+++ b/apps/settings/l10n/br.json
@@ -195,7 +195,6 @@
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Mat eo kaout ur vackup reoliek eus o roadennoù, ha e bezit sur ober ur vackup eus an alrv'hwez sifrañ gant o roadennoù sifret.",
"This is the final warning: Do you really want to enable encryption?" : "Kemenadenn diwall divezhañ : Sur oc'h aotreañ ar sifrañ ?",
"Submit" : "Kinnig",
- "Remove group" : "Lemel strollad",
"Current password" : "Ger-tremen hiziv",
"New password" : "Ger-tremen nevez",
"Change password" : "Cheñch ger-tremen",
@@ -311,6 +310,7 @@
"Check out our blog" : "Sellit ouzh hon vlog",
"Subscribe to our newsletter" : "Koumannantit d'hon kemenadennoù nevesadur",
"Use a second factor besides your password to increase security for your account." : "Implijour un eil-elfenn d'ho ger-tremen a gwella urentez o c'hont.",
- "Set default expiration date for shares" : "Lakaat un deizat termen dre ziouer evit ar rannañ"
+ "Set default expiration date for shares" : "Lakaat un deizat termen dre ziouer evit ar rannañ",
+ "Remove group" : "Lemel strollad"
},"pluralForm" :"nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);"
} \ No newline at end of file
diff --git a/apps/settings/l10n/ca.js b/apps/settings/l10n/ca.js
index 34fec6323fc..8c211833d08 100644
--- a/apps/settings/l10n/ca.js
+++ b/apps/settings/l10n/ca.js
@@ -578,12 +578,9 @@ OC.L10N.register(
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Sempre és bó crear còpies de seguretat de les vostres dades amb regularitat, en el cas de xifratge assegureu-vos de desar les claus de xifratge juntament amb les vostres dades a la còpia de seguretat.",
"Refer to the admin documentation on how to manually also encrypt existing files." : "Consulteu la documentació d'administració sobre com xifrar també manualment els fitxers existents.",
"This is the final warning: Do you really want to enable encryption?" : "Avís final: Realment voleu activar xifratge?",
- "Failed to remove group \"{group}\"" : "No s'ha pogut suprimir el grup \"{group}\"",
"Please confirm the group removal" : "Confirmeu l'eliminació del grup",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Esteu a punt d'eliminar el grup \"{group}\". Els comptes NO es suprimiràn.",
"Submit" : "Envia",
"Rename group" : "Canvia el nom del grup",
- "Remove group" : "Suprimir el grup",
"Current password" : "Contrasenya actual",
"New password" : "Contrasenya nova",
"Change password" : "Canvia la contrasenya",
@@ -887,6 +884,9 @@ OC.L10N.register(
"for WebAuthn passwordless login, and SFTP storage" : "per a l'inici de sessió sense contrasenya de WebAuthn i emmagatzematge SFTP",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "S'ha detectat la versió de PostgreSQL \"%s\". Es recomana PostgreSQL >=12 i <=16 per obtenir el millor rendiment, estabilitat i funcionalitat amb aquesta versió de Nextcloud.",
"Set default expiration date for shares" : "Estableix la data de caducitat per defecte per comparticions",
+ "Failed to remove group \"{group}\"" : "No s'ha pogut suprimir el grup \"{group}\"",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Esteu a punt d'eliminar el grup \"{group}\". Els comptes NO es suprimiràn.",
+ "Remove group" : "Suprimir el grup",
"Your biography" : "La vostra biografia",
"You are using <strong>{usage}</strong>" : "Esteu utilitzant <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Esteu utilitzant <strong>{usage}</strong> de <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/ca.json b/apps/settings/l10n/ca.json
index fa46f702b59..bea1c6769e1 100644
--- a/apps/settings/l10n/ca.json
+++ b/apps/settings/l10n/ca.json
@@ -576,12 +576,9 @@
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Sempre és bó crear còpies de seguretat de les vostres dades amb regularitat, en el cas de xifratge assegureu-vos de desar les claus de xifratge juntament amb les vostres dades a la còpia de seguretat.",
"Refer to the admin documentation on how to manually also encrypt existing files." : "Consulteu la documentació d'administració sobre com xifrar també manualment els fitxers existents.",
"This is the final warning: Do you really want to enable encryption?" : "Avís final: Realment voleu activar xifratge?",
- "Failed to remove group \"{group}\"" : "No s'ha pogut suprimir el grup \"{group}\"",
"Please confirm the group removal" : "Confirmeu l'eliminació del grup",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Esteu a punt d'eliminar el grup \"{group}\". Els comptes NO es suprimiràn.",
"Submit" : "Envia",
"Rename group" : "Canvia el nom del grup",
- "Remove group" : "Suprimir el grup",
"Current password" : "Contrasenya actual",
"New password" : "Contrasenya nova",
"Change password" : "Canvia la contrasenya",
@@ -885,6 +882,9 @@
"for WebAuthn passwordless login, and SFTP storage" : "per a l'inici de sessió sense contrasenya de WebAuthn i emmagatzematge SFTP",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "S'ha detectat la versió de PostgreSQL \"%s\". Es recomana PostgreSQL >=12 i <=16 per obtenir el millor rendiment, estabilitat i funcionalitat amb aquesta versió de Nextcloud.",
"Set default expiration date for shares" : "Estableix la data de caducitat per defecte per comparticions",
+ "Failed to remove group \"{group}\"" : "No s'ha pogut suprimir el grup \"{group}\"",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Esteu a punt d'eliminar el grup \"{group}\". Els comptes NO es suprimiràn.",
+ "Remove group" : "Suprimir el grup",
"Your biography" : "La vostra biografia",
"You are using <strong>{usage}</strong>" : "Esteu utilitzant <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Esteu utilitzant <strong>{usage}</strong> de <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/cs.js b/apps/settings/l10n/cs.js
index a994be35518..a5b4f621c80 100644
--- a/apps/settings/l10n/cs.js
+++ b/apps/settings/l10n/cs.js
@@ -315,6 +315,7 @@ OC.L10N.register(
"Architecture" : "Architektura",
"64-bit" : "64bit",
"It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit!" : "Zdá se, že provozujete 32bitovou verzi PHP. Aby správně fungoval, potřebuje Nextcloud 64bit. Přejděte na 64bit instalaci operačního systému a PHP!",
+ "Task Processing pickup speed" : "Rychlost vyzvedávání zpracovávání úkolů",
"Temporary space available" : "Dočasný prostor k dispozici",
"Error while checking the temporary PHP path - it was not properly set to a directory. Returned value: %s" : "Chyba při kontrole popisu umístění dočasných souborů PHP – nebylo správně nastaveno na složku. Vrácená hodnota: %s",
"The PHP function \"disk_free_space\" is disabled, which prevents the check for enough space in the temporary directories." : "PHP funkce „disk_free_space“ je vypnutá, což brání v kontrolách zda je k dispozici dostatek místa ve složkách pro dočasná data.",
@@ -583,12 +584,9 @@ OC.L10N.register(
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Je vždy dobré vytvářet pravidelné zálohy svých dat. V případě zapnutého šifrování také společně s daty zajistěte zálohu šifrovacích klíčů k nim.",
"Refer to the admin documentation on how to manually also encrypt existing files." : "Ohledně toho, jak ručně zašifrovat také existující soubory, nahlédněte do dokumentace pro správce.",
"This is the final warning: Do you really want to enable encryption?" : "Toto je poslední varování: Opravdu chcete zapnout šifrování?",
- "Failed to remove group \"{group}\"" : "Nepodařilo se odebrat skupinu „{group}“",
"Please confirm the group removal" : "Potvrďte odstranění skupiny",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Chystáte se smazat skupinu „{group}“. Účty NEbudou smazány.",
"Submit" : "Odeslat",
"Rename group" : "Přejmenovat skupinu",
- "Remove group" : "Odebrat skupinu",
"Current password" : "Stávající heslo",
"New password" : "Nové heslo",
"Change password" : "Změnit heslo",
@@ -896,6 +894,9 @@ OC.L10N.register(
"for WebAuthn passwordless login, and SFTP storage" : "pro WebAuthn přihlášení bez hesla a SFTP úložiště",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "Zjištěna verze PostgreSQL „%s“. Pro nejlepší výkon, stabilitu a funkčnost s touto verzí Nextcloud je doporučeno PostgreSQL >=12 a <=16.",
"Set default expiration date for shares" : "Nastavit výchozí datum skončení platnosti pro sdílení",
+ "Failed to remove group \"{group}\"" : "Nepodařilo se odebrat skupinu „{group}“",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Chystáte se smazat skupinu „{group}“. Účty NEbudou smazány.",
+ "Remove group" : "Odebrat skupinu",
"Your biography" : "Váš životopis",
"You are using <strong>{usage}</strong>" : "Využíváte <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Využíváte <strong>{usage}</strong> z <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)",
diff --git a/apps/settings/l10n/cs.json b/apps/settings/l10n/cs.json
index 30f1aa72f22..56ead44f428 100644
--- a/apps/settings/l10n/cs.json
+++ b/apps/settings/l10n/cs.json
@@ -313,6 +313,7 @@
"Architecture" : "Architektura",
"64-bit" : "64bit",
"It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit!" : "Zdá se, že provozujete 32bitovou verzi PHP. Aby správně fungoval, potřebuje Nextcloud 64bit. Přejděte na 64bit instalaci operačního systému a PHP!",
+ "Task Processing pickup speed" : "Rychlost vyzvedávání zpracovávání úkolů",
"Temporary space available" : "Dočasný prostor k dispozici",
"Error while checking the temporary PHP path - it was not properly set to a directory. Returned value: %s" : "Chyba při kontrole popisu umístění dočasných souborů PHP – nebylo správně nastaveno na složku. Vrácená hodnota: %s",
"The PHP function \"disk_free_space\" is disabled, which prevents the check for enough space in the temporary directories." : "PHP funkce „disk_free_space“ je vypnutá, což brání v kontrolách zda je k dispozici dostatek místa ve složkách pro dočasná data.",
@@ -581,12 +582,9 @@
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Je vždy dobré vytvářet pravidelné zálohy svých dat. V případě zapnutého šifrování také společně s daty zajistěte zálohu šifrovacích klíčů k nim.",
"Refer to the admin documentation on how to manually also encrypt existing files." : "Ohledně toho, jak ručně zašifrovat také existující soubory, nahlédněte do dokumentace pro správce.",
"This is the final warning: Do you really want to enable encryption?" : "Toto je poslední varování: Opravdu chcete zapnout šifrování?",
- "Failed to remove group \"{group}\"" : "Nepodařilo se odebrat skupinu „{group}“",
"Please confirm the group removal" : "Potvrďte odstranění skupiny",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Chystáte se smazat skupinu „{group}“. Účty NEbudou smazány.",
"Submit" : "Odeslat",
"Rename group" : "Přejmenovat skupinu",
- "Remove group" : "Odebrat skupinu",
"Current password" : "Stávající heslo",
"New password" : "Nové heslo",
"Change password" : "Změnit heslo",
@@ -894,6 +892,9 @@
"for WebAuthn passwordless login, and SFTP storage" : "pro WebAuthn přihlášení bez hesla a SFTP úložiště",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "Zjištěna verze PostgreSQL „%s“. Pro nejlepší výkon, stabilitu a funkčnost s touto verzí Nextcloud je doporučeno PostgreSQL >=12 a <=16.",
"Set default expiration date for shares" : "Nastavit výchozí datum skončení platnosti pro sdílení",
+ "Failed to remove group \"{group}\"" : "Nepodařilo se odebrat skupinu „{group}“",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Chystáte se smazat skupinu „{group}“. Účty NEbudou smazány.",
+ "Remove group" : "Odebrat skupinu",
"Your biography" : "Váš životopis",
"You are using <strong>{usage}</strong>" : "Využíváte <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Využíváte <strong>{usage}</strong> z <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)",
diff --git a/apps/settings/l10n/da.js b/apps/settings/l10n/da.js
index fbedba31feb..6e097e8b7a0 100644
--- a/apps/settings/l10n/da.js
+++ b/apps/settings/l10n/da.js
@@ -583,12 +583,9 @@ OC.L10N.register(
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Det er altid godt at lave regelmæssige sikkerhedskopier af dine data, i tilfælde af kryptering skal du sørge for at tage backup af krypteringsnøglerne sammen med dine data.",
"Refer to the admin documentation on how to manually also encrypt existing files." : "Se administratordokumentationen om, hvordan man manuelt også krypterer eksisterende filer.",
"This is the final warning: Do you really want to enable encryption?" : "Dette er den sidste advarsel: Sikker på at du vil slå kryptering til?",
- "Failed to remove group \"{group}\"" : "Kunne ikke slette gruppen \"{group}\"",
"Please confirm the group removal" : "Bekræft venligst sletning af gruppen",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Du er ved at fjerne gruppen \"{group}\". Konti indeholdt i gruppen vil IKKE blive slettet.",
"Submit" : "Tilføj",
"Rename group" : "Omdøb gruppe",
- "Remove group" : "Fjern gruppe",
"Current password" : "Nuværende adgangskode",
"New password" : "Ny adgangskode",
"Change password" : "Skift kodeord",
@@ -896,6 +893,9 @@ OC.L10N.register(
"for WebAuthn passwordless login, and SFTP storage" : "til WebAuthn adgangskodeløst login, og SFTP lagring",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "PostgreSQL- version \"%s\" fundet. PostgreSQL > = 12 og < = 16 er foreslået for bedste ydeevne, stabilitet og funktionalitet med denne version af Nextcloud.",
"Set default expiration date for shares" : "Indstil standardudløbsdato for delinger",
+ "Failed to remove group \"{group}\"" : "Kunne ikke slette gruppen \"{group}\"",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Du er ved at fjerne gruppen \"{group}\". Konti indeholdt i gruppen vil IKKE blive slettet.",
+ "Remove group" : "Fjern gruppe",
"Your biography" : "Din biografi",
"You are using <strong>{usage}</strong>" : "Forbrug: <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Forbrug: <strong>{usage}</strong> af <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)",
diff --git a/apps/settings/l10n/da.json b/apps/settings/l10n/da.json
index bf06d9740e2..f8786bfb725 100644
--- a/apps/settings/l10n/da.json
+++ b/apps/settings/l10n/da.json
@@ -581,12 +581,9 @@
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Det er altid godt at lave regelmæssige sikkerhedskopier af dine data, i tilfælde af kryptering skal du sørge for at tage backup af krypteringsnøglerne sammen med dine data.",
"Refer to the admin documentation on how to manually also encrypt existing files." : "Se administratordokumentationen om, hvordan man manuelt også krypterer eksisterende filer.",
"This is the final warning: Do you really want to enable encryption?" : "Dette er den sidste advarsel: Sikker på at du vil slå kryptering til?",
- "Failed to remove group \"{group}\"" : "Kunne ikke slette gruppen \"{group}\"",
"Please confirm the group removal" : "Bekræft venligst sletning af gruppen",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Du er ved at fjerne gruppen \"{group}\". Konti indeholdt i gruppen vil IKKE blive slettet.",
"Submit" : "Tilføj",
"Rename group" : "Omdøb gruppe",
- "Remove group" : "Fjern gruppe",
"Current password" : "Nuværende adgangskode",
"New password" : "Ny adgangskode",
"Change password" : "Skift kodeord",
@@ -894,6 +891,9 @@
"for WebAuthn passwordless login, and SFTP storage" : "til WebAuthn adgangskodeløst login, og SFTP lagring",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "PostgreSQL- version \"%s\" fundet. PostgreSQL > = 12 og < = 16 er foreslået for bedste ydeevne, stabilitet og funktionalitet med denne version af Nextcloud.",
"Set default expiration date for shares" : "Indstil standardudløbsdato for delinger",
+ "Failed to remove group \"{group}\"" : "Kunne ikke slette gruppen \"{group}\"",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Du er ved at fjerne gruppen \"{group}\". Konti indeholdt i gruppen vil IKKE blive slettet.",
+ "Remove group" : "Fjern gruppe",
"Your biography" : "Din biografi",
"You are using <strong>{usage}</strong>" : "Forbrug: <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Forbrug: <strong>{usage}</strong> af <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)",
diff --git a/apps/settings/l10n/de.js b/apps/settings/l10n/de.js
index 3aaa96dc03f..154c87eb5b4 100644
--- a/apps/settings/l10n/de.js
+++ b/apps/settings/l10n/de.js
@@ -315,6 +315,10 @@ OC.L10N.register(
"Architecture" : "Architektur",
"64-bit" : "64-bit",
"It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit!" : "Anscheinend wird eine 32-Bit-PHP-Version verwendet. Nextcloud benötigt 64-Bit, um gut zu laufen. Bitte Betriebssystem und PHP auf 64-Bit aktualisieren!",
+ "Task Processing pickup speed" : "Abholgeschwindigkeit für Aufgabenverarbeitung",
+ "_No scheduled tasks in the last %n hours._::_No scheduled tasks in the last %n hours._" : ["Keine geplanten Aufgaben in der letzten %n Stunde.","Keine geplanten Aufgaben in den letzten %n Stunden."],
+ "_The task pickup speed has been ok in the last %n hour._::_The task pickup speed has been ok in the last %n hours._" : ["Die Geschwindigkeit der Aufgabenübernahme war in der letzten %n Stunde in Ordnung.","Die Geschwindigkeit der Aufgabenübernahme war in den letzten %n Stunden in Ordnung."],
+ "_The task pickup speed has been slow in the last %n hour. Many tasks took longer than 4 minutes to be picked up. Consider setting up a worker to process tasks in the background._::_The task pickup speed has been slow in the last %n hours. Many tasks took longer than 4 minutes to be picked up. Consider setting up a worker to process tasks in the background._" : ["Die Aufgabenabholgeschwindigkeit war in der letzten %n Stunde langsam. Viele Aufgaben benötigten länger als 4 Minuten, um abgeholt zu werden. Erwäge die Einrichtung eines Workers, der Aufgaben im Hintergrund verarbeitet.","Die Aufgabenabholgeschwindigkeit war in den letzten %n Stunden langsam. Viele Aufgaben benötigten länger als 4 Minuten, um abgeholt zu werden. Erwägen Sie die Einrichtung eines Workers, der Aufgaben im Hintergrund verarbeitet."],
"Temporary space available" : "Temporärer Platz verfügbar",
"Error while checking the temporary PHP path - it was not properly set to a directory. Returned value: %s" : "Fehler beim Überprüfen des temporären PHP-Pfads - er wurde nicht ordnungsgemäß auf ein Verzeichnis festgelegt. Zurückgegebener Wert: %s",
"The PHP function \"disk_free_space\" is disabled, which prevents the check for enough space in the temporary directories." : "Die PHP-Funktion \"disk_free_space\" ist deaktiviert, was die Überprüfung auf ausreichend Speicherplatz in den temporären Verzeichnissen verhindert.",
@@ -583,12 +587,9 @@ OC.L10N.register(
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Es ist immer gut, regelmäßig Datensicherungen zu erstellen. Sofern die Verschlüsselung genutzt wird, sollte auch eine Sicherung der Verschlüsselungsschlüssel zusammen mit den Daten durchgeführt werden.",
"Refer to the admin documentation on how to manually also encrypt existing files." : "Informationen zum manuellen Verschlüsseln vorhandener Dateien finden sich in der Administrationsdokumentation.",
"This is the final warning: Do you really want to enable encryption?" : "Dies ist die letzte Warnung: Soll die Verschlüsselung wirklich aktiviert werden?",
- "Failed to remove group \"{group}\"" : "Die Gruppe \"{group}\" konnte nicht entfernt werden.",
"Please confirm the group removal" : "Bitte die Löschung der Gruppe bestätigen",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Du bist im Begriff, die Gruppe \"{group}\" zu entfernen. Die Konten werden NICHT gelöscht.",
"Submit" : "Übermitteln",
"Rename group" : "Gruppe umbenennen",
- "Remove group" : "Gruppe entfernen",
"Current password" : "Aktuelles Passwort",
"New password" : "Neues Passwort",
"Change password" : "Passwort ändern",
@@ -896,6 +897,9 @@ OC.L10N.register(
"for WebAuthn passwordless login, and SFTP storage" : "für WebAuthn passwortlose Anmeldung und SFTP-Speicher",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "PostgreSQL-Version \"%s\" erkannt. Für optimale Leistung, Stabilität und Funktionalität mit dieser Version von Nextcloud wird PostgreSQL >=12 und <=16 empfohlen.",
"Set default expiration date for shares" : "Lege das Standardablaufdatum für Freigaben fest",
+ "Failed to remove group \"{group}\"" : "Die Gruppe \"{group}\" konnte nicht entfernt werden.",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Du bist im Begriff, die Gruppe \"{group}\" zu entfernen. Die Konten werden NICHT gelöscht.",
+ "Remove group" : "Gruppe entfernen",
"Your biography" : "Deine Biografie",
"You are using <strong>{usage}</strong>" : "Du benutzt <strong>{usage}</strong>.",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Du benutzt <strong>{usage}</strong> von <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>).",
diff --git a/apps/settings/l10n/de.json b/apps/settings/l10n/de.json
index 75a892b4f8d..24705692a16 100644
--- a/apps/settings/l10n/de.json
+++ b/apps/settings/l10n/de.json
@@ -313,6 +313,10 @@
"Architecture" : "Architektur",
"64-bit" : "64-bit",
"It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit!" : "Anscheinend wird eine 32-Bit-PHP-Version verwendet. Nextcloud benötigt 64-Bit, um gut zu laufen. Bitte Betriebssystem und PHP auf 64-Bit aktualisieren!",
+ "Task Processing pickup speed" : "Abholgeschwindigkeit für Aufgabenverarbeitung",
+ "_No scheduled tasks in the last %n hours._::_No scheduled tasks in the last %n hours._" : ["Keine geplanten Aufgaben in der letzten %n Stunde.","Keine geplanten Aufgaben in den letzten %n Stunden."],
+ "_The task pickup speed has been ok in the last %n hour._::_The task pickup speed has been ok in the last %n hours._" : ["Die Geschwindigkeit der Aufgabenübernahme war in der letzten %n Stunde in Ordnung.","Die Geschwindigkeit der Aufgabenübernahme war in den letzten %n Stunden in Ordnung."],
+ "_The task pickup speed has been slow in the last %n hour. Many tasks took longer than 4 minutes to be picked up. Consider setting up a worker to process tasks in the background._::_The task pickup speed has been slow in the last %n hours. Many tasks took longer than 4 minutes to be picked up. Consider setting up a worker to process tasks in the background._" : ["Die Aufgabenabholgeschwindigkeit war in der letzten %n Stunde langsam. Viele Aufgaben benötigten länger als 4 Minuten, um abgeholt zu werden. Erwäge die Einrichtung eines Workers, der Aufgaben im Hintergrund verarbeitet.","Die Aufgabenabholgeschwindigkeit war in den letzten %n Stunden langsam. Viele Aufgaben benötigten länger als 4 Minuten, um abgeholt zu werden. Erwägen Sie die Einrichtung eines Workers, der Aufgaben im Hintergrund verarbeitet."],
"Temporary space available" : "Temporärer Platz verfügbar",
"Error while checking the temporary PHP path - it was not properly set to a directory. Returned value: %s" : "Fehler beim Überprüfen des temporären PHP-Pfads - er wurde nicht ordnungsgemäß auf ein Verzeichnis festgelegt. Zurückgegebener Wert: %s",
"The PHP function \"disk_free_space\" is disabled, which prevents the check for enough space in the temporary directories." : "Die PHP-Funktion \"disk_free_space\" ist deaktiviert, was die Überprüfung auf ausreichend Speicherplatz in den temporären Verzeichnissen verhindert.",
@@ -581,12 +585,9 @@
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Es ist immer gut, regelmäßig Datensicherungen zu erstellen. Sofern die Verschlüsselung genutzt wird, sollte auch eine Sicherung der Verschlüsselungsschlüssel zusammen mit den Daten durchgeführt werden.",
"Refer to the admin documentation on how to manually also encrypt existing files." : "Informationen zum manuellen Verschlüsseln vorhandener Dateien finden sich in der Administrationsdokumentation.",
"This is the final warning: Do you really want to enable encryption?" : "Dies ist die letzte Warnung: Soll die Verschlüsselung wirklich aktiviert werden?",
- "Failed to remove group \"{group}\"" : "Die Gruppe \"{group}\" konnte nicht entfernt werden.",
"Please confirm the group removal" : "Bitte die Löschung der Gruppe bestätigen",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Du bist im Begriff, die Gruppe \"{group}\" zu entfernen. Die Konten werden NICHT gelöscht.",
"Submit" : "Übermitteln",
"Rename group" : "Gruppe umbenennen",
- "Remove group" : "Gruppe entfernen",
"Current password" : "Aktuelles Passwort",
"New password" : "Neues Passwort",
"Change password" : "Passwort ändern",
@@ -894,6 +895,9 @@
"for WebAuthn passwordless login, and SFTP storage" : "für WebAuthn passwortlose Anmeldung und SFTP-Speicher",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "PostgreSQL-Version \"%s\" erkannt. Für optimale Leistung, Stabilität und Funktionalität mit dieser Version von Nextcloud wird PostgreSQL >=12 und <=16 empfohlen.",
"Set default expiration date for shares" : "Lege das Standardablaufdatum für Freigaben fest",
+ "Failed to remove group \"{group}\"" : "Die Gruppe \"{group}\" konnte nicht entfernt werden.",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Du bist im Begriff, die Gruppe \"{group}\" zu entfernen. Die Konten werden NICHT gelöscht.",
+ "Remove group" : "Gruppe entfernen",
"Your biography" : "Deine Biografie",
"You are using <strong>{usage}</strong>" : "Du benutzt <strong>{usage}</strong>.",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Du benutzt <strong>{usage}</strong> von <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>).",
diff --git a/apps/settings/l10n/de_DE.js b/apps/settings/l10n/de_DE.js
index 34bd495da1d..0544ac934c1 100644
--- a/apps/settings/l10n/de_DE.js
+++ b/apps/settings/l10n/de_DE.js
@@ -315,6 +315,10 @@ OC.L10N.register(
"Architecture" : "Architektur",
"64-bit" : "64-bit",
"It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit!" : "Anscheinend verwenden Sie eine 32-Bit-PHP-Version. Nextcloud benötigt 64-Bit, um gut zu laufen. Bitte aktualisieren Sie Ihr Betriebssystem und PHP auf 64-Bit!",
+ "Task Processing pickup speed" : "Abholgeschwindigkeit für Aufgabenverarbeitung",
+ "_No scheduled tasks in the last %n hours._::_No scheduled tasks in the last %n hours._" : ["Keine geplanten Aufgaben in der letzten %n Stunde.","Keine geplanten Aufgaben in den letzten %n Stunden."],
+ "_The task pickup speed has been ok in the last %n hour._::_The task pickup speed has been ok in the last %n hours._" : ["Die Geschwindigkeit der Aufgabenübernahme war in der letzten %n Stunde in Ordnung.","Die Geschwindigkeit der Aufgabenübernahme war in den letzten %n Stunden in Ordnung."],
+ "_The task pickup speed has been slow in the last %n hour. Many tasks took longer than 4 minutes to be picked up. Consider setting up a worker to process tasks in the background._::_The task pickup speed has been slow in the last %n hours. Many tasks took longer than 4 minutes to be picked up. Consider setting up a worker to process tasks in the background._" : ["Die Aufgabenabholgeschwindigkeit war in der letzten %n Stunde langsam. Viele Aufgaben benötigten länger als 4 Minuten, um abgeholt zu werden. Erwägen Sie die Einrichtung eines Workers, der Aufgaben im Hintergrund verarbeitet.","Die Aufgabenabholgeschwindigkeit war in den letzten %n Stunden langsam. Viele Aufgaben benötigten länger als 4 Minuten, um abgeholt zu werden. Erwägen Sie die Einrichtung eines Workers, der Aufgaben im Hintergrund verarbeitet."],
"Temporary space available" : "Temporärer Platz verfügbar",
"Error while checking the temporary PHP path - it was not properly set to a directory. Returned value: %s" : "Fehler beim Überprüfen des temporären PHP-Pfads - er wurde nicht ordnungsgemäß auf ein Verzeichnis festgelegt. Zurückgegebener Wert: %s",
"The PHP function \"disk_free_space\" is disabled, which prevents the check for enough space in the temporary directories." : "Die PHP-Funktion \"disk_free_space\" ist deaktiviert, was die Überprüfung auf ausreichend Speicherplatz in den temporären Verzeichnissen verhindert.",
@@ -583,12 +587,9 @@ OC.L10N.register(
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Es ist immer gut, regelmäßig Sicherungskopien von ihren Daten zu machen. Falls Sie die Verschlüsselung nutzen, sollten Sie auch eine Sicherung der Verschlüsselungsschlüssel zusammen mit Ihren Daten machen.",
"Refer to the admin documentation on how to manually also encrypt existing files." : "Informationen zum manuellen Verschlüsseln vorhandener Dateien finden Sie in der Administrationsdokumentation.",
"This is the final warning: Do you really want to enable encryption?" : "Dies ist die letzte Warnung: Möchten Sie die Verschlüsselung wirklich aktivieren?",
- "Failed to remove group \"{group}\"" : "Die Gruppe \"{group}\" konnte nicht entfernt werden.",
"Please confirm the group removal" : "Bitte die Löschung der Gruppe bestätigen",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Sie sind im Begriff, die Gruppe \"{group}\" zu entfernen. Die Konten werden NICHT gelöscht.",
"Submit" : "Übermitteln",
"Rename group" : "Gruppe umbenennen",
- "Remove group" : "Gruppe entfernen",
"Current password" : "Aktuelles Passwort",
"New password" : "Neues Passwort",
"Change password" : "Passwort ändern",
@@ -896,6 +897,9 @@ OC.L10N.register(
"for WebAuthn passwordless login, and SFTP storage" : "für WebAuthn passwortlose Anmeldung und SFTP-Speicher",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "PostgreSQL-Version \"%s\" erkannt. Für optimale Leistung, Stabilität und Funktionalität mit dieser Version von Nextcloud wird PostgreSQL >=12 und <=16 empfohlen.",
"Set default expiration date for shares" : "Legen Sie das Standardablaufdatum für Freigaben fest",
+ "Failed to remove group \"{group}\"" : "Die Gruppe \"{group}\" konnte nicht entfernt werden.",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Sie sind im Begriff, die Gruppe \"{group}\" zu entfernen. Die Konten werden NICHT gelöscht.",
+ "Remove group" : "Gruppe entfernen",
"Your biography" : "Ihre Biografie",
"You are using <strong>{usage}</strong>" : "Sie benutzen <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Sie benutzen <strong>{usage}</strong> von <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)",
diff --git a/apps/settings/l10n/de_DE.json b/apps/settings/l10n/de_DE.json
index 1557cdc2153..6a708d37f75 100644
--- a/apps/settings/l10n/de_DE.json
+++ b/apps/settings/l10n/de_DE.json
@@ -313,6 +313,10 @@
"Architecture" : "Architektur",
"64-bit" : "64-bit",
"It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit!" : "Anscheinend verwenden Sie eine 32-Bit-PHP-Version. Nextcloud benötigt 64-Bit, um gut zu laufen. Bitte aktualisieren Sie Ihr Betriebssystem und PHP auf 64-Bit!",
+ "Task Processing pickup speed" : "Abholgeschwindigkeit für Aufgabenverarbeitung",
+ "_No scheduled tasks in the last %n hours._::_No scheduled tasks in the last %n hours._" : ["Keine geplanten Aufgaben in der letzten %n Stunde.","Keine geplanten Aufgaben in den letzten %n Stunden."],
+ "_The task pickup speed has been ok in the last %n hour._::_The task pickup speed has been ok in the last %n hours._" : ["Die Geschwindigkeit der Aufgabenübernahme war in der letzten %n Stunde in Ordnung.","Die Geschwindigkeit der Aufgabenübernahme war in den letzten %n Stunden in Ordnung."],
+ "_The task pickup speed has been slow in the last %n hour. Many tasks took longer than 4 minutes to be picked up. Consider setting up a worker to process tasks in the background._::_The task pickup speed has been slow in the last %n hours. Many tasks took longer than 4 minutes to be picked up. Consider setting up a worker to process tasks in the background._" : ["Die Aufgabenabholgeschwindigkeit war in der letzten %n Stunde langsam. Viele Aufgaben benötigten länger als 4 Minuten, um abgeholt zu werden. Erwägen Sie die Einrichtung eines Workers, der Aufgaben im Hintergrund verarbeitet.","Die Aufgabenabholgeschwindigkeit war in den letzten %n Stunden langsam. Viele Aufgaben benötigten länger als 4 Minuten, um abgeholt zu werden. Erwägen Sie die Einrichtung eines Workers, der Aufgaben im Hintergrund verarbeitet."],
"Temporary space available" : "Temporärer Platz verfügbar",
"Error while checking the temporary PHP path - it was not properly set to a directory. Returned value: %s" : "Fehler beim Überprüfen des temporären PHP-Pfads - er wurde nicht ordnungsgemäß auf ein Verzeichnis festgelegt. Zurückgegebener Wert: %s",
"The PHP function \"disk_free_space\" is disabled, which prevents the check for enough space in the temporary directories." : "Die PHP-Funktion \"disk_free_space\" ist deaktiviert, was die Überprüfung auf ausreichend Speicherplatz in den temporären Verzeichnissen verhindert.",
@@ -581,12 +585,9 @@
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Es ist immer gut, regelmäßig Sicherungskopien von ihren Daten zu machen. Falls Sie die Verschlüsselung nutzen, sollten Sie auch eine Sicherung der Verschlüsselungsschlüssel zusammen mit Ihren Daten machen.",
"Refer to the admin documentation on how to manually also encrypt existing files." : "Informationen zum manuellen Verschlüsseln vorhandener Dateien finden Sie in der Administrationsdokumentation.",
"This is the final warning: Do you really want to enable encryption?" : "Dies ist die letzte Warnung: Möchten Sie die Verschlüsselung wirklich aktivieren?",
- "Failed to remove group \"{group}\"" : "Die Gruppe \"{group}\" konnte nicht entfernt werden.",
"Please confirm the group removal" : "Bitte die Löschung der Gruppe bestätigen",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Sie sind im Begriff, die Gruppe \"{group}\" zu entfernen. Die Konten werden NICHT gelöscht.",
"Submit" : "Übermitteln",
"Rename group" : "Gruppe umbenennen",
- "Remove group" : "Gruppe entfernen",
"Current password" : "Aktuelles Passwort",
"New password" : "Neues Passwort",
"Change password" : "Passwort ändern",
@@ -894,6 +895,9 @@
"for WebAuthn passwordless login, and SFTP storage" : "für WebAuthn passwortlose Anmeldung und SFTP-Speicher",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "PostgreSQL-Version \"%s\" erkannt. Für optimale Leistung, Stabilität und Funktionalität mit dieser Version von Nextcloud wird PostgreSQL >=12 und <=16 empfohlen.",
"Set default expiration date for shares" : "Legen Sie das Standardablaufdatum für Freigaben fest",
+ "Failed to remove group \"{group}\"" : "Die Gruppe \"{group}\" konnte nicht entfernt werden.",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Sie sind im Begriff, die Gruppe \"{group}\" zu entfernen. Die Konten werden NICHT gelöscht.",
+ "Remove group" : "Gruppe entfernen",
"Your biography" : "Ihre Biografie",
"You are using <strong>{usage}</strong>" : "Sie benutzen <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Sie benutzen <strong>{usage}</strong> von <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)",
diff --git a/apps/settings/l10n/el.js b/apps/settings/l10n/el.js
index a550312f55c..98fe02c1a57 100644
--- a/apps/settings/l10n/el.js
+++ b/apps/settings/l10n/el.js
@@ -577,12 +577,9 @@ OC.L10N.register(
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Είναι πάντοτε καλό να δημιουργείτε τακτικά αντίγραφα ασφαλείας των δεδομένων σας, στην περίπτωση της κρυπτογράφησης βεβαιωθείτε ότι έχετε λάβει αντίγραφο ασφαλείας των κλειδιών κρυπτογράφησης παράλληλα με τα δεδομένα σας.",
"Refer to the admin documentation on how to manually also encrypt existing files." : "Ανατρέξτε στην τεκμηρίωση του διαχειριστή για το πώς να κρυπτογραφήσετε χειροκίνητα τα υπάρχοντα αρχεία.",
"This is the final warning: Do you really want to enable encryption?" : "Αυτή είναι η τελευταία προειδοποίηση: Θέλετε πραγματικά να ενεργοποιήσετε την κρυπτογράφηση;",
- "Failed to remove group \"{group}\"" : "Αποτυχία κατά την αφαίρεση της ομάδας \"{group}\"",
"Please confirm the group removal" : "Παρακαλώ επιβεβαιώστε την αφαίρεση της ομάδας",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Πρόκειται να αφαιρέσετε την ομάδα \"{group}\". Οι λογαριασμοί ΔΕΝ θα διαγραφούν.",
"Submit" : "Υποβολή",
"Rename group" : "Μετονομασία ομάδας",
- "Remove group" : "Αφαίρεση ομάδας",
"Current password" : "Τρέχον συνθηματικό",
"New password" : "Νέο συνθηματικό",
"Change password" : "Αλλαγή συνθηματικού",
@@ -886,6 +883,9 @@ OC.L10N.register(
"for WebAuthn passwordless login, and SFTP storage" : "για σύνδεση χωρίς συνθηματικό με WebAuthn και αποθήκευση SFTP",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "Ανιχνεύθηκε η έκδοση PostgreSQL \"%s\". Προτείνεται PostgreSQL >=12 και <=16 για την καλύτερη απόδοση, σταθερότητα και λειτουργικότητα με αυτήν την έκδοση του Nextcloud.",
"Set default expiration date for shares" : "Ορισμός προεπιλεγμένης ημερομηνίας λήξης για τα κοινόχρηστα",
+ "Failed to remove group \"{group}\"" : "Αποτυχία κατά την αφαίρεση της ομάδας \"{group}\"",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Πρόκειται να αφαιρέσετε την ομάδα \"{group}\". Οι λογαριασμοί ΔΕΝ θα διαγραφούν.",
+ "Remove group" : "Αφαίρεση ομάδας",
"Your biography" : "Το βιογραφικό σας",
"You are using <strong>{usage}</strong>" : "Χρησιμοποιείτε <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Χρησιμοποιείτε <strong>{usage}</strong> από <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/el.json b/apps/settings/l10n/el.json
index 5f15c424659..b04cca5b96e 100644
--- a/apps/settings/l10n/el.json
+++ b/apps/settings/l10n/el.json
@@ -575,12 +575,9 @@
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Είναι πάντοτε καλό να δημιουργείτε τακτικά αντίγραφα ασφαλείας των δεδομένων σας, στην περίπτωση της κρυπτογράφησης βεβαιωθείτε ότι έχετε λάβει αντίγραφο ασφαλείας των κλειδιών κρυπτογράφησης παράλληλα με τα δεδομένα σας.",
"Refer to the admin documentation on how to manually also encrypt existing files." : "Ανατρέξτε στην τεκμηρίωση του διαχειριστή για το πώς να κρυπτογραφήσετε χειροκίνητα τα υπάρχοντα αρχεία.",
"This is the final warning: Do you really want to enable encryption?" : "Αυτή είναι η τελευταία προειδοποίηση: Θέλετε πραγματικά να ενεργοποιήσετε την κρυπτογράφηση;",
- "Failed to remove group \"{group}\"" : "Αποτυχία κατά την αφαίρεση της ομάδας \"{group}\"",
"Please confirm the group removal" : "Παρακαλώ επιβεβαιώστε την αφαίρεση της ομάδας",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Πρόκειται να αφαιρέσετε την ομάδα \"{group}\". Οι λογαριασμοί ΔΕΝ θα διαγραφούν.",
"Submit" : "Υποβολή",
"Rename group" : "Μετονομασία ομάδας",
- "Remove group" : "Αφαίρεση ομάδας",
"Current password" : "Τρέχον συνθηματικό",
"New password" : "Νέο συνθηματικό",
"Change password" : "Αλλαγή συνθηματικού",
@@ -884,6 +881,9 @@
"for WebAuthn passwordless login, and SFTP storage" : "για σύνδεση χωρίς συνθηματικό με WebAuthn και αποθήκευση SFTP",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "Ανιχνεύθηκε η έκδοση PostgreSQL \"%s\". Προτείνεται PostgreSQL >=12 και <=16 για την καλύτερη απόδοση, σταθερότητα και λειτουργικότητα με αυτήν την έκδοση του Nextcloud.",
"Set default expiration date for shares" : "Ορισμός προεπιλεγμένης ημερομηνίας λήξης για τα κοινόχρηστα",
+ "Failed to remove group \"{group}\"" : "Αποτυχία κατά την αφαίρεση της ομάδας \"{group}\"",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Πρόκειται να αφαιρέσετε την ομάδα \"{group}\". Οι λογαριασμοί ΔΕΝ θα διαγραφούν.",
+ "Remove group" : "Αφαίρεση ομάδας",
"Your biography" : "Το βιογραφικό σας",
"You are using <strong>{usage}</strong>" : "Χρησιμοποιείτε <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Χρησιμοποιείτε <strong>{usage}</strong> από <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/en_GB.js b/apps/settings/l10n/en_GB.js
index 24bcb65f04c..02c54dea0fc 100644
--- a/apps/settings/l10n/en_GB.js
+++ b/apps/settings/l10n/en_GB.js
@@ -315,6 +315,10 @@ OC.L10N.register(
"Architecture" : "Architecture",
"64-bit" : "64-bit",
"It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit!" : "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit!",
+ "Task Processing pickup speed" : "Task Processing pickup speed",
+ "_No scheduled tasks in the last %n hours._::_No scheduled tasks in the last %n hours._" : ["No scheduled tasks in the last %n hours.","No scheduled tasks in the last %n hours."],
+ "_The task pickup speed has been ok in the last %n hour._::_The task pickup speed has been ok in the last %n hours._" : ["The task pickup speed has been ok in the last %n hour.","The task pickup speed has been ok in the last %n hours."],
+ "_The task pickup speed has been slow in the last %n hour. Many tasks took longer than 4 minutes to be picked up. Consider setting up a worker to process tasks in the background._::_The task pickup speed has been slow in the last %n hours. Many tasks took longer than 4 minutes to be picked up. Consider setting up a worker to process tasks in the background._" : ["The task pickup speed has been slow in the last %n hour. Many tasks took longer than 4 minutes to be picked up. Consider setting up a worker to process tasks in the background.","The task pickup speed has been slow in the last %n hours. Many tasks took longer than 4 minutes to be picked up. Consider setting up a worker to process tasks in the background."],
"Temporary space available" : "Temporary space available",
"Error while checking the temporary PHP path - it was not properly set to a directory. Returned value: %s" : "Error while checking the temporary PHP path - it was not properly set to a directory. Returned value: %s",
"The PHP function \"disk_free_space\" is disabled, which prevents the check for enough space in the temporary directories." : "The PHP function \"disk_free_space\" is disabled, preventing the system from checking for sufficient space in the temporary directories.",
@@ -583,12 +587,9 @@ OC.L10N.register(
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data.",
"Refer to the admin documentation on how to manually also encrypt existing files." : "Refer to the admin documentation on how to manually also encrypt existing files.",
"This is the final warning: Do you really want to enable encryption?" : "This is the final warning: Do you really want to enable encryption?",
- "Failed to remove group \"{group}\"" : "Failed to remove group \"{group}\"",
"Please confirm the group removal" : "Please confirm the group removal",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "You are about to remove the group \"{group}\". The accounts will NOT be deleted.",
"Submit" : "Submit",
"Rename group" : "Rename group",
- "Remove group" : "Remove group",
"Current password" : "Current password",
"New password" : "New password",
"Change password" : "Change password",
@@ -896,6 +897,9 @@ OC.L10N.register(
"for WebAuthn passwordless login, and SFTP storage" : "for WebAuthn passwordless login, and SFTP storage",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud.",
"Set default expiration date for shares" : "Set default expiration date for shares",
+ "Failed to remove group \"{group}\"" : "Failed to remove group \"{group}\"",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "You are about to remove the group \"{group}\". The accounts will NOT be deleted.",
+ "Remove group" : "Remove group",
"Your biography" : "Your biography",
"You are using <strong>{usage}</strong>" : "You are using <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)",
diff --git a/apps/settings/l10n/en_GB.json b/apps/settings/l10n/en_GB.json
index e5b031cc8e8..b3e8cc4ae91 100644
--- a/apps/settings/l10n/en_GB.json
+++ b/apps/settings/l10n/en_GB.json
@@ -313,6 +313,10 @@
"Architecture" : "Architecture",
"64-bit" : "64-bit",
"It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit!" : "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit!",
+ "Task Processing pickup speed" : "Task Processing pickup speed",
+ "_No scheduled tasks in the last %n hours._::_No scheduled tasks in the last %n hours._" : ["No scheduled tasks in the last %n hours.","No scheduled tasks in the last %n hours."],
+ "_The task pickup speed has been ok in the last %n hour._::_The task pickup speed has been ok in the last %n hours._" : ["The task pickup speed has been ok in the last %n hour.","The task pickup speed has been ok in the last %n hours."],
+ "_The task pickup speed has been slow in the last %n hour. Many tasks took longer than 4 minutes to be picked up. Consider setting up a worker to process tasks in the background._::_The task pickup speed has been slow in the last %n hours. Many tasks took longer than 4 minutes to be picked up. Consider setting up a worker to process tasks in the background._" : ["The task pickup speed has been slow in the last %n hour. Many tasks took longer than 4 minutes to be picked up. Consider setting up a worker to process tasks in the background.","The task pickup speed has been slow in the last %n hours. Many tasks took longer than 4 minutes to be picked up. Consider setting up a worker to process tasks in the background."],
"Temporary space available" : "Temporary space available",
"Error while checking the temporary PHP path - it was not properly set to a directory. Returned value: %s" : "Error while checking the temporary PHP path - it was not properly set to a directory. Returned value: %s",
"The PHP function \"disk_free_space\" is disabled, which prevents the check for enough space in the temporary directories." : "The PHP function \"disk_free_space\" is disabled, preventing the system from checking for sufficient space in the temporary directories.",
@@ -581,12 +585,9 @@
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data.",
"Refer to the admin documentation on how to manually also encrypt existing files." : "Refer to the admin documentation on how to manually also encrypt existing files.",
"This is the final warning: Do you really want to enable encryption?" : "This is the final warning: Do you really want to enable encryption?",
- "Failed to remove group \"{group}\"" : "Failed to remove group \"{group}\"",
"Please confirm the group removal" : "Please confirm the group removal",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "You are about to remove the group \"{group}\". The accounts will NOT be deleted.",
"Submit" : "Submit",
"Rename group" : "Rename group",
- "Remove group" : "Remove group",
"Current password" : "Current password",
"New password" : "New password",
"Change password" : "Change password",
@@ -894,6 +895,9 @@
"for WebAuthn passwordless login, and SFTP storage" : "for WebAuthn passwordless login, and SFTP storage",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud.",
"Set default expiration date for shares" : "Set default expiration date for shares",
+ "Failed to remove group \"{group}\"" : "Failed to remove group \"{group}\"",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "You are about to remove the group \"{group}\". The accounts will NOT be deleted.",
+ "Remove group" : "Remove group",
"Your biography" : "Your biography",
"You are using <strong>{usage}</strong>" : "You are using <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)",
diff --git a/apps/settings/l10n/eo.js b/apps/settings/l10n/eo.js
index c5a78ad2e22..0d09f226b7a 100644
--- a/apps/settings/l10n/eo.js
+++ b/apps/settings/l10n/eo.js
@@ -196,7 +196,6 @@ OC.L10N.register(
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Ĉiam estas bone krei savkopiojn de viaj datumoj. Se tiuj ĉi lastaj estas ĉifritaj, certigu, ke vi savkopias ankaŭ la ĉifroŝlosilon kune kun la datumoj.",
"This is the final warning: Do you really want to enable encryption?" : "Jen la fina averto: ĉu vi certe volas ŝalti ĉifradon?",
"Submit" : "Sendi",
- "Remove group" : "Forigi grupon",
"Current password" : "Nuna pasvorto",
"New password" : "Nova pasvorto",
"Change password" : "Ŝanĝi la pasvorton",
@@ -300,6 +299,7 @@ OC.L10N.register(
"Check out our blog" : "Vizitu nian blogon",
"Subscribe to our newsletter" : "Aboni nian retan bultenon",
"This community release of Nextcloud is unsupported and instant notifications are unavailable." : "Tiu elkomunuma eldono de Nextcloud ne estas subtenata, kaj tuj-sciigoj ne disponeblas.",
- "Use a second factor besides your password to increase security for your account." : "Uzu duan fazon krom via pasvorto por plisekurigi vian konton."
+ "Use a second factor besides your password to increase security for your account." : "Uzu duan fazon krom via pasvorto por plisekurigi vian konton.",
+ "Remove group" : "Forigi grupon"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/settings/l10n/eo.json b/apps/settings/l10n/eo.json
index a408497b551..493ce1c92d6 100644
--- a/apps/settings/l10n/eo.json
+++ b/apps/settings/l10n/eo.json
@@ -194,7 +194,6 @@
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Ĉiam estas bone krei savkopiojn de viaj datumoj. Se tiuj ĉi lastaj estas ĉifritaj, certigu, ke vi savkopias ankaŭ la ĉifroŝlosilon kune kun la datumoj.",
"This is the final warning: Do you really want to enable encryption?" : "Jen la fina averto: ĉu vi certe volas ŝalti ĉifradon?",
"Submit" : "Sendi",
- "Remove group" : "Forigi grupon",
"Current password" : "Nuna pasvorto",
"New password" : "Nova pasvorto",
"Change password" : "Ŝanĝi la pasvorton",
@@ -298,6 +297,7 @@
"Check out our blog" : "Vizitu nian blogon",
"Subscribe to our newsletter" : "Aboni nian retan bultenon",
"This community release of Nextcloud is unsupported and instant notifications are unavailable." : "Tiu elkomunuma eldono de Nextcloud ne estas subtenata, kaj tuj-sciigoj ne disponeblas.",
- "Use a second factor besides your password to increase security for your account." : "Uzu duan fazon krom via pasvorto por plisekurigi vian konton."
+ "Use a second factor besides your password to increase security for your account." : "Uzu duan fazon krom via pasvorto por plisekurigi vian konton.",
+ "Remove group" : "Forigi grupon"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/settings/l10n/es.js b/apps/settings/l10n/es.js
index b3b04572006..33a941ad165 100644
--- a/apps/settings/l10n/es.js
+++ b/apps/settings/l10n/es.js
@@ -583,12 +583,9 @@ OC.L10N.register(
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es bueno crear copias de seguridad de sus datos, en el caso del cifrado, asegúrese de tener una copia de seguridad de las claves de cifrado junto con sus datos.",
"Refer to the admin documentation on how to manually also encrypt existing files." : "Consulta la documentación del administrador para saber cómo cifrar manualmente también los archivos existentes.",
"This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final. ¿Realmente quiere activar el cifrado?",
- "Failed to remove group \"{group}\"" : "Fallo al eliminar el grupo \"{group}\"",
"Please confirm the group removal" : "Por favor, confirme la eliminación del grupo",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Está a punto de eliminar el grupo \"{group}\". Las cuentas NO serán eliminadas.",
"Submit" : "Enviar",
"Rename group" : "Renombrar grupo",
- "Remove group" : "Eliminar grupo",
"Current password" : "Contraseña actual",
"New password" : "Nueva contraseña",
"Change password" : "Cambiar contraseña",
@@ -896,6 +893,9 @@ OC.L10N.register(
"for WebAuthn passwordless login, and SFTP storage" : "para inicio de sesión sin contraseña de WebAuthn, y almacenamiento SFTP",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "Se detectó la versión PostgreSQL \"%s\". Se sugiere utilizar PostgreSQL >=12 y <=16 para el mejor rendimiento, estabilidad y funcionalidad con esta versión de Nextcloud.",
"Set default expiration date for shares" : "Establecer fecha de caducidad predeterminada para recursos compartidos",
+ "Failed to remove group \"{group}\"" : "Fallo al eliminar el grupo \"{group}\"",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Está a punto de eliminar el grupo \"{group}\". Las cuentas NO serán eliminadas.",
+ "Remove group" : "Eliminar grupo",
"Your biography" : "Tu biografía",
"You are using <strong>{usage}</strong>" : "Estás usando <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Estás usando <strong>{usage}</strong> de <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)",
diff --git a/apps/settings/l10n/es.json b/apps/settings/l10n/es.json
index 917624f223d..a7d5f2cc940 100644
--- a/apps/settings/l10n/es.json
+++ b/apps/settings/l10n/es.json
@@ -581,12 +581,9 @@
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es bueno crear copias de seguridad de sus datos, en el caso del cifrado, asegúrese de tener una copia de seguridad de las claves de cifrado junto con sus datos.",
"Refer to the admin documentation on how to manually also encrypt existing files." : "Consulta la documentación del administrador para saber cómo cifrar manualmente también los archivos existentes.",
"This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final. ¿Realmente quiere activar el cifrado?",
- "Failed to remove group \"{group}\"" : "Fallo al eliminar el grupo \"{group}\"",
"Please confirm the group removal" : "Por favor, confirme la eliminación del grupo",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Está a punto de eliminar el grupo \"{group}\". Las cuentas NO serán eliminadas.",
"Submit" : "Enviar",
"Rename group" : "Renombrar grupo",
- "Remove group" : "Eliminar grupo",
"Current password" : "Contraseña actual",
"New password" : "Nueva contraseña",
"Change password" : "Cambiar contraseña",
@@ -894,6 +891,9 @@
"for WebAuthn passwordless login, and SFTP storage" : "para inicio de sesión sin contraseña de WebAuthn, y almacenamiento SFTP",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "Se detectó la versión PostgreSQL \"%s\". Se sugiere utilizar PostgreSQL >=12 y <=16 para el mejor rendimiento, estabilidad y funcionalidad con esta versión de Nextcloud.",
"Set default expiration date for shares" : "Establecer fecha de caducidad predeterminada para recursos compartidos",
+ "Failed to remove group \"{group}\"" : "Fallo al eliminar el grupo \"{group}\"",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Está a punto de eliminar el grupo \"{group}\". Las cuentas NO serán eliminadas.",
+ "Remove group" : "Eliminar grupo",
"Your biography" : "Tu biografía",
"You are using <strong>{usage}</strong>" : "Estás usando <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Estás usando <strong>{usage}</strong> de <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)",
diff --git a/apps/settings/l10n/es_AR.js b/apps/settings/l10n/es_AR.js
index 10729f0573c..c18bd286085 100644
--- a/apps/settings/l10n/es_AR.js
+++ b/apps/settings/l10n/es_AR.js
@@ -343,12 +343,9 @@ OC.L10N.register(
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es una buena idea crear copias de seguridad de tus datos, en el caso del cifrado asegurate de tener una copia de seguridad de las claves de cifrado junto con tus datos.",
"Refer to the admin documentation on how to manually also encrypt existing files." : "Consultá la documentación del administrador para saber cómo cifrar manualmente también los archivos existentes.",
"This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final. ¿Realmente querés activar el cifrado?",
- "Failed to remove group \"{group}\"" : "No se pudo eliminar el grupo \"{group}\"",
"Please confirm the group removal" : "Por favor confirmá la eliminación del grupo",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Vas a eliminar el grupo {group}. Los usuarios NO serán eliminados.",
"Submit" : "Enviar",
"Rename group" : "Cambiar nombre del grupo",
- "Remove group" : "Eliminar grupo",
"Current password" : "Contraseña actual",
"New password" : "Nueva contraseña",
"Change password" : "Cambiar contraseña",
@@ -612,6 +609,9 @@ OC.L10N.register(
"Transactional file locking is disabled, this might lead to issues with race conditions. Enable \"filelocking.enabled\" in config.php to avoid these problems." : "El bloqueo transaccional de archivos está desactivado, lo que podría ocasionar problemas de race conditions. Habilitá \"filelocking.enabled\" en config.php para evitar estos problemas.",
"for WebAuthn passwordless login" : "para el inicio de sesión sin contraseña de WebAuthn",
"for WebAuthn passwordless login, and SFTP storage" : "para el inicio de sesión sin contraseña de WebAuthn y el almacenamiento SFTP",
+ "Failed to remove group \"{group}\"" : "No se pudo eliminar el grupo \"{group}\"",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Vas a eliminar el grupo {group}. Los usuarios NO serán eliminados.",
+ "Remove group" : "Eliminar grupo",
"Your biography" : "Tu biografía",
"You are using <strong>{usage}</strong>" : "Estás usando <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Estás usando <strong>{usage}</strong> de <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/es_AR.json b/apps/settings/l10n/es_AR.json
index fd1669c3db1..5bfef6aa0fe 100644
--- a/apps/settings/l10n/es_AR.json
+++ b/apps/settings/l10n/es_AR.json
@@ -341,12 +341,9 @@
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es una buena idea crear copias de seguridad de tus datos, en el caso del cifrado asegurate de tener una copia de seguridad de las claves de cifrado junto con tus datos.",
"Refer to the admin documentation on how to manually also encrypt existing files." : "Consultá la documentación del administrador para saber cómo cifrar manualmente también los archivos existentes.",
"This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final. ¿Realmente querés activar el cifrado?",
- "Failed to remove group \"{group}\"" : "No se pudo eliminar el grupo \"{group}\"",
"Please confirm the group removal" : "Por favor confirmá la eliminación del grupo",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Vas a eliminar el grupo {group}. Los usuarios NO serán eliminados.",
"Submit" : "Enviar",
"Rename group" : "Cambiar nombre del grupo",
- "Remove group" : "Eliminar grupo",
"Current password" : "Contraseña actual",
"New password" : "Nueva contraseña",
"Change password" : "Cambiar contraseña",
@@ -610,6 +607,9 @@
"Transactional file locking is disabled, this might lead to issues with race conditions. Enable \"filelocking.enabled\" in config.php to avoid these problems." : "El bloqueo transaccional de archivos está desactivado, lo que podría ocasionar problemas de race conditions. Habilitá \"filelocking.enabled\" en config.php para evitar estos problemas.",
"for WebAuthn passwordless login" : "para el inicio de sesión sin contraseña de WebAuthn",
"for WebAuthn passwordless login, and SFTP storage" : "para el inicio de sesión sin contraseña de WebAuthn y el almacenamiento SFTP",
+ "Failed to remove group \"{group}\"" : "No se pudo eliminar el grupo \"{group}\"",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Vas a eliminar el grupo {group}. Los usuarios NO serán eliminados.",
+ "Remove group" : "Eliminar grupo",
"Your biography" : "Tu biografía",
"You are using <strong>{usage}</strong>" : "Estás usando <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Estás usando <strong>{usage}</strong> de <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/es_EC.js b/apps/settings/l10n/es_EC.js
index f4204534e6f..28f50733390 100644
--- a/apps/settings/l10n/es_EC.js
+++ b/apps/settings/l10n/es_EC.js
@@ -258,7 +258,6 @@ OC.L10N.register(
"This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?",
"Submit" : "Enviar",
"Rename group" : "Renombrar grupo",
- "Remove group" : "Eliminar grupo",
"Current password" : "Contraseña actual",
"New password" : "Nueva contraseña",
"Change password" : "Cambiar contraseña",
@@ -458,6 +457,7 @@ OC.L10N.register(
"Use a second factor besides your password to increase security for your account." : "Utiliza un segundo factor además de tu contraseña para aumentar la seguridad de tu cuenta.",
"If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Si utilizas aplicaciones de terceros para conectarte a Nextcloud, asegúrate de crear y configurar una contraseña de aplicación para cada una antes de habilitar la autenticación de segundo factor.",
"Set default expiration date for shares" : "Establecer fecha de vencimiento predeterminada para los compartidos",
+ "Remove group" : "Eliminar grupo",
"Your biography" : "Tu biografía",
"You are using <strong>{usage}</strong>" : "Estás usando <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Estás usando <strong>{usage}</strong> de <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/es_EC.json b/apps/settings/l10n/es_EC.json
index f14b77247dc..0fbedab9ca0 100644
--- a/apps/settings/l10n/es_EC.json
+++ b/apps/settings/l10n/es_EC.json
@@ -256,7 +256,6 @@
"This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?",
"Submit" : "Enviar",
"Rename group" : "Renombrar grupo",
- "Remove group" : "Eliminar grupo",
"Current password" : "Contraseña actual",
"New password" : "Nueva contraseña",
"Change password" : "Cambiar contraseña",
@@ -456,6 +455,7 @@
"Use a second factor besides your password to increase security for your account." : "Utiliza un segundo factor además de tu contraseña para aumentar la seguridad de tu cuenta.",
"If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Si utilizas aplicaciones de terceros para conectarte a Nextcloud, asegúrate de crear y configurar una contraseña de aplicación para cada una antes de habilitar la autenticación de segundo factor.",
"Set default expiration date for shares" : "Establecer fecha de vencimiento predeterminada para los compartidos",
+ "Remove group" : "Eliminar grupo",
"Your biography" : "Tu biografía",
"You are using <strong>{usage}</strong>" : "Estás usando <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Estás usando <strong>{usage}</strong> de <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/es_MX.js b/apps/settings/l10n/es_MX.js
index 245db3a5c9c..061a28e31e7 100644
--- a/apps/settings/l10n/es_MX.js
+++ b/apps/settings/l10n/es_MX.js
@@ -468,12 +468,9 @@ OC.L10N.register(
"Be aware that encryption always increases the file size." : "Por favor considera que la encripción siempre aumenta el tamaño de los archivos. ",
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es una buena idea generar respaldos de tus datos, en caso de tener encripción asegúrate de respaldar las llaves de encripción junto con tus datos. ",
"This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?",
- "Failed to remove group \"{group}\"" : "No se pudo eliminar el grupo \"{group}\"",
"Please confirm the group removal" : "Por favor, confirme la eliminación del grupo",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Está a punto de eliminar el grupo \"{group}\". Los usuarios NO serán eliminados.",
"Submit" : "Enviar",
"Rename group" : "Renombrar grupo",
- "Remove group" : "Eliminar grupo",
"Current password" : "Contraseña actual",
"New password" : "Nueva contraseña",
"Change password" : "Cambiar contraseña",
@@ -764,6 +761,9 @@ OC.L10N.register(
"for WebAuthn passwordless login" : "para el inicio de sesión sin contraseña de WebAuthn",
"for WebAuthn passwordless login, and SFTP storage" : "para el inicio de sesión sin contraseña de WebAuthn y el almacenamiento SFTP",
"Set default expiration date for shares" : "Establecer fecha de caducidad predeterminada para compartidos",
+ "Failed to remove group \"{group}\"" : "No se pudo eliminar el grupo \"{group}\"",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Está a punto de eliminar el grupo \"{group}\". Los usuarios NO serán eliminados.",
+ "Remove group" : "Eliminar grupo",
"Your biography" : "Su biografía",
"You are using <strong>{usage}</strong>" : "Está usando <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Está usando <strong>{usage}</strong> de <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/es_MX.json b/apps/settings/l10n/es_MX.json
index 550319965b6..5bfd2add25a 100644
--- a/apps/settings/l10n/es_MX.json
+++ b/apps/settings/l10n/es_MX.json
@@ -466,12 +466,9 @@
"Be aware that encryption always increases the file size." : "Por favor considera que la encripción siempre aumenta el tamaño de los archivos. ",
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es una buena idea generar respaldos de tus datos, en caso de tener encripción asegúrate de respaldar las llaves de encripción junto con tus datos. ",
"This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?",
- "Failed to remove group \"{group}\"" : "No se pudo eliminar el grupo \"{group}\"",
"Please confirm the group removal" : "Por favor, confirme la eliminación del grupo",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Está a punto de eliminar el grupo \"{group}\". Los usuarios NO serán eliminados.",
"Submit" : "Enviar",
"Rename group" : "Renombrar grupo",
- "Remove group" : "Eliminar grupo",
"Current password" : "Contraseña actual",
"New password" : "Nueva contraseña",
"Change password" : "Cambiar contraseña",
@@ -762,6 +759,9 @@
"for WebAuthn passwordless login" : "para el inicio de sesión sin contraseña de WebAuthn",
"for WebAuthn passwordless login, and SFTP storage" : "para el inicio de sesión sin contraseña de WebAuthn y el almacenamiento SFTP",
"Set default expiration date for shares" : "Establecer fecha de caducidad predeterminada para compartidos",
+ "Failed to remove group \"{group}\"" : "No se pudo eliminar el grupo \"{group}\"",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Está a punto de eliminar el grupo \"{group}\". Los usuarios NO serán eliminados.",
+ "Remove group" : "Eliminar grupo",
"Your biography" : "Su biografía",
"You are using <strong>{usage}</strong>" : "Está usando <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Está usando <strong>{usage}</strong> de <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/et_EE.js b/apps/settings/l10n/et_EE.js
index 4b06afedea8..21dc0b713f4 100644
--- a/apps/settings/l10n/et_EE.js
+++ b/apps/settings/l10n/et_EE.js
@@ -136,9 +136,11 @@ OC.L10N.register(
"No altered files" : "Muudetud faile pole",
"Database missing primary keys" : "Andmebaasis on puudu primaarvõtmed",
"Missing primary key on table \"%s\"." : "Puuduv primaarvõti tabelis „%s“.",
+ "Default phone region" : "Telefonide vaikimisi piirkond",
"Email test" : "E-kirjade saatmise test",
"Mail delivery is disabled by instance config \"%s\"." : "Selles serveris piirab e-kirjade edasisaatmist seadistus „%s“.",
- "Email test was successfully sent" : "Test e-kirja saatmine õnnestus",
+ "Email test was successfully sent" : "Testkirja saatmine õnnestus",
+ "Your \"trusted_proxies\" setting is not correctly set, it should be an array." : "Serveri „trusted_proxies“ seadistus pole korrektne - seal peab leiduma massiiv, aga hetkel on midagi muud.",
"Old server-side-encryption" : "Vana serveripoolne krüptimine",
"Disabled" : "Keelatud",
"The old server-side-encryption format is enabled. We recommend disabling this." : "Vana serveripoolse krüptimise vorming on kasutusel. Mes soovitame, et lülitad selle välja.",
@@ -146,6 +148,7 @@ OC.L10N.register(
"The %1$s configuration option must be a valid integer value." : "Seadistusvalik „%1$s“ peab olema korrektne täisarv.",
"The logging level is set to debug level. Use debug level only when you have a problem to diagnose, and then reset your log level to a less-verbose level as it outputs a lot of information, and can affect your server performance." : "Logimistase on hetkel seatud veaotsinguks. Kasuta seda vaid siis, kui tõesti tegeled veaotsinguga ning peale seda muuda logimine jälle tavaliseks. Veaotsinguks vajalik logimine on väga väljundirikas ning võib mõjutada serveri jõudlust.",
"Logging level configured correctly." : "Logimistase on korrektselt seadistatud",
+ "PHP configuration option \"default_charset\" should be UTF-8" : "PHP seadistuse „default_charset“ väärtus peab olema UTF-8",
"Supported" : "Toetatud",
"PHP getenv" : "PHP getenv",
"PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP ei tundu olevat süsteemsete keskkonnamuutujate pärimiseks korrektselt seadistatud. Test getenv(\"PATH\") abil tagastab tühja vastuse.",
@@ -164,6 +167,8 @@ OC.L10N.register(
"PHP version" : "PHP versioon",
"You are currently running PHP %1$s. PHP %2$s is deprecated since Nextcloud %3$s. Nextcloud %4$s may require at least PHP %5$s. Please upgrade to one of the officially supported PHP versions provided by the PHP Group as soon as possible." : "Sa kasutad hetkel PHP versiooni %1$s. PHP %2$s on aga alates Nexctcloudi versioonist %3$s kasutuselt eemaldatud. Nexctcloud %4$s eeldab, et PHP versioon on vähemalt %5$s. Palun uuenda oma server PHP Groupi poolt väljaantud ametliku PHP versioonini niipea, kui võimalik.",
"You are currently running PHP %s." : "Sul on hetkel kasutusel PHP versioon %s.",
+ "PHP \"output_buffering\" option" : "PHP eelistus „output_buffering“",
+ "PHP configuration option \"output_buffering\" must be disabled" : "PHP seadistus „output_buffering“ peab olema lülitatud välja",
"Push service" : "Tõuketeenus",
"Valid enterprise license" : "Suurfirmade litsents",
"Free push service" : "Tasuta tõuketeenus",
@@ -176,9 +181,14 @@ OC.L10N.register(
"MariaDB version \"%1$s\" detected. MariaDB >=%2$s and <=%3$s is suggested for best performance, stability and functionality with this version of Nextcloud." : "Tuvastasin MariaDB versiooni „%1$s“. Parima jõudluse, stabiilsuse ja funktsionaalsuse mõttes soovitame selle Nextcloudi versiooni jaoks MariaDB versioone >=%2$s and <= %3$s.",
"MySQL version \"%1$s\" detected. MySQL >=%2$s and <=%3$s is suggested for best performance, stability and functionality with this version of Nextcloud." : "Tuvastasin MySQLi versiooni „%1$s“. Parima jõudluse, stabiilsuse ja funktsionaalsuse mõttes soovitame selle Nextcloudi versiooni jaoks MySQLi versioone >=%2$s and <= %3$s.",
"PostgreSQL version \"%1$s\" detected. PostgreSQL >=%2$s and <=%3$s is suggested for best performance, stability and functionality with this version of Nextcloud." : "Tuvastasin PostgreSQLi versiooni „%1$s“. Parima jõudluse, stabiilsuse ja funktsionaalsuse mõttes soovitame selle Nextcloudi versiooni jaoks PostgreSQLi >=%2$s and <= %3$s.",
+ "Unknown database platform" : "Tuvastamatu andmebaasiplatvorm",
"Architecture" : "Arhitektuur",
"64-bit" : "64-bitine",
"It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit!" : "Tundub, et kasutad PHP 32-bitist versiooni. Tõhusaks toimimiseks eeldab Nextcloud 64-bitist keskkonda. Palun uuenda oma serveri operatsioonisüsteem ja PHP 64-bitiseks versiooniks!",
+ "Task Processing pickup speed" : "Ülesannete töötlemise kiirus",
+ "_No scheduled tasks in the last %n hours._::_No scheduled tasks in the last %n hours._" : ["Viimase %n tunni jooksul pole olnud ühtegi ajastatud ülesannet.","Viimase %n tunni jooksul pole olnud ühtegi ajastatud ülesannet."],
+ "_The task pickup speed has been ok in the last %n hour._::_The task pickup speed has been ok in the last %n hours._" : ["Ülesannete töötlemise kiirus on viimase %n tunni jooksul olnud mõistlik.","Ülesannete töötlemise kiirus on viimase %n tunni jooksul olnud mõistlik."],
+ "_The task pickup speed has been slow in the last %n hour. Many tasks took longer than 4 minutes to be picked up. Consider setting up a worker to process tasks in the background._::_The task pickup speed has been slow in the last %n hours. Many tasks took longer than 4 minutes to be picked up. Consider setting up a worker to process tasks in the background._" : ["Ülesannete töötlemise kiirus on viimase %n tunni jooksul olnud aeglane. Paljude ülesannete töölepanekuks kulus enam, kui 4 minutit. Palun kaalu võimalust, et ülesannete töötlemiseks seadistad taustal töötava protsessihalduri.","Ülesannete töötlemise kiirus on viimase %n tunni jooksul olnud aeglane. Paljude ülesannete töölepanekuks kulus enam, kui 4 minutit. Palun kaalu võimalust, et ülesannete töötlemiseks seadistad taustal töötava protsessihalduri."],
"The PHP function \"disk_free_space\" is disabled, which prevents the check for enough space in the temporary directories." : "PHP funktsioon „disk_free_space“ pole kasutusel. Selle puudumine takistab ajutiste kaustade jaoks vajaliku andmeruumi kontrollimist.",
"Profile information" : "Kasutajaprofiili teave",
"Nextcloud settings" : "Nextcloudi seadistused",
@@ -186,8 +196,12 @@ OC.L10N.register(
"Enable" : "Lülita sisse",
"Machine translation" : "Masintõlge",
"Image generation" : "Pildiloome",
+ "Here you can decide which group can access certain sections of the administration settings." : "Siinkohal saad sa otsustada mis gruppidel on ligipääs valitud haldusseadistustele.",
"Unable to modify setting" : "Seadistuse muutmine ei õnnestu",
"None" : "Pole",
+ "Changed disclaimer text" : "Vastutusest lahtiütluse tekst on muutunud",
+ "Deleted disclaimer text" : "Vastutusest lahtiütluse tekst on kustutatud",
+ "Could not set disclaimer text" : "Vastutusest lahtiütluse teksti seadistamine ei õnnestunud",
"Allow apps to use the Share API" : "Luba rakendustel kasutada Share API-t",
"Allow resharing" : "Luba edasijagamine",
"Allow sharing with groups" : "Luba gruppidega jagamine",
@@ -197,6 +211,7 @@ OC.L10N.register(
"Always ask for a password" : "Alati küsi parooli",
"Enforce password protection" : "Jõusta paroolikaitse",
"Exclude groups from password requirements" : "Välista grupid salasõnareeglitest",
+ "Exclude groups from creating link shares" : "Välista grupid jagamislinkide loomisest",
"Limit sharing based on groups" : "Piira jagamist gruppide alusel",
"Allow sharing for everyone (default)" : "Luba jagamine kõikidele (vaikimisi)",
"Exclude some groups from sharing" : "Välista mõned grupid jagamisest",
@@ -206,6 +221,8 @@ OC.L10N.register(
"Default expiration time of new shares in days" : "Uue jaosmeedia vaikimisi aegumine päevades",
"Expire shares after x days" : "Jaosmeedia aegub x päeva möödudes",
"Privacy settings for sharing" : "Jagamise privaatsusseadistused",
+ "Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Kuva avaliku lingiga üleslaadimise lehel lahtiütluste tekst (vaid siis, kui failide loend on peidetud)",
+ "Disclaimer text" : "Vastutusest lahtiütluse tekst",
"This text will be shown on the public link upload page when the file list is hidden." : "Seda teksti näidatakse avaliku lingiga üleslaadimise lehel kui failide loend on peidetud.",
"Two-Factor Authentication" : "Kaheastmeline autentimine",
"Two-factor authentication can be enforced for all accounts and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Kaheastmelist autentimist on võimalik teha kohustuslikuks kas kõikidele kasutajakontodele või konkreetsete gruppide kaupa. Kui kaheastmelise autentimise kohustuslikkus on määratud, kuid on kasutajal seadistamata, siis ta ei saa siia serverisse sisse logida.",
@@ -251,8 +268,10 @@ OC.L10N.register(
"Next slide" : "Järgmine slaid",
"Choose slide to display" : "Vali kuvatav slaid",
"{index} of {total}" : "{index} / {total}",
+ "Deploy Daemon" : "Kasutuselevõtmise taustateenus",
"Type" : "Tüüp",
"Display Name" : "Kuvatav nimi",
+ "Advanced deploy options" : "Kasutuselevõtmise lisavalikud",
"Edit ExApp deploy options before installation" : "Muuda ExApp konteineri seadistuse enne paigaldamist",
"Configured ExApp deploy options. Can be set only during installation" : "ExApp'i konteineri seadistuse valikud. Neid saab määrata vaid paigalduse ajal",
"Learn more" : "Lisateave",
@@ -260,9 +279,12 @@ OC.L10N.register(
"ExApp container environment variables" : "ExApp konteineri keskonnamuutujad",
"No environment variables defined" : "Ühtegi keskonnamuutujat pole defineeritud",
"Mounts" : "Haakepunktid",
+ "Must exist on the Deploy daemon host prior to installing the ExApp" : "Enne ExAppi paigaldamist peab ta olema leitav kasutuselevõtmise taustateenuses",
+ "Container path" : "Konteineri asukoht",
"Read-only" : "Ainult lugemiseks",
"Remove mount" : "Eemalda haakepunkt",
"New mount" : "Uus haakepunkt",
+ "Enter path to host folder" : "Sisesta peremeeskausta asukoht",
"Enter path to container folder" : "Sisesta konteinerikausta asukoht",
"Toggle read-only mode" : "Lülita „ainult lugemiseks“ režiim sisse/välja",
"Confirm adding new mount" : "Kinnita uue haakepunkti lisamine",
@@ -282,6 +304,8 @@ OC.L10N.register(
"Limit app usage to groups" : "Piira rakenduse kasutamist gruppidega",
"No results" : "Vasteid ei leitud",
"Update to {version}" : "Uuenda versioonile {version}",
+ "Deploy options" : "Kasutuselevõtmise valikud",
+ "Default Deploy daemon is not accessible" : "Kasutuselevõtmise taustateenus pole leitav",
"Delete data on remove" : "Eemaldamisel kustuta andmed",
"This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Sellel rakendusel pole määratud minimaalset Nextcloudi versiooni. See põhjustab tulevikus veateateid.",
"This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Sellel rakendusel pole määratud maksimaalset Nextcloudi versiooni. See põhjustab tulevikus veateateid.",
@@ -356,12 +380,9 @@ OC.L10N.register(
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Alati on hea mõte, kui varundad oma andmeid. Kui aga kasutusel on krüptimine, siis palun kontrolli, et lisaks andmetele on varundatud ka krüptovõtmed.",
"Refer to the admin documentation on how to manually also encrypt existing files." : "Süsteemihalduse juhendist leiad teavet kuidas saad käsitsi krüptida juba olemasolevaid faile.",
"This is the final warning: Do you really want to enable encryption?" : "See on viimane hoiatus: Kas oled kindel, et soovid krüptimise sisse lülitada?",
- "Failed to remove group \"{group}\"" : "„{group}“ grupi eemaldamine ei õnnestunud",
"Please confirm the group removal" : "Palun kinnita grupi eemaldamine",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Sa oled eemaldamas gruppi „{group}“. Selles grupis olevad kasutajad aga JÄÄVAD kustutamata.",
"Submit" : "Saada",
"Rename group" : "Muuda grupi nime",
- "Remove group" : "Eemalda grupp",
"Current password" : "Praegune salasõna",
"New password" : "Uus salasõna",
"Change password" : "Muuda salasõna",
@@ -519,7 +540,10 @@ OC.L10N.register(
"Defaults" : "Vaikeväärtused",
"Default quota" : "Vaikimisi mahupiir",
"Select default quota" : "Vali vaikimisi andmemahu piir",
+ "Server error while trying to complete WebAuthn device registration" : "Serveriviga WebAuthn seadme registreerimise lõpetamisel",
"Passwordless authentication requires a secure connection." : "Salasõnata autentimine eeldab turvalise võrguühenduse kasutamist.",
+ "Add WebAuthn device" : "Lisa WebAuthni kasutav seade",
+ "Please authorize your WebAuthn device." : "Palun anna luba oma WebAuthn seadme kasutamiseks",
"Adding your device …" : "Lisan sinu seadet…",
"Unnamed device" : "Nimetu seade",
"Passwordless Authentication" : "Salasõnata autentimine",
@@ -569,12 +593,16 @@ OC.L10N.register(
"Show to logged in accounts only" : "Näita vaid sisseloginud kasutajatele",
"Hide" : "Peida",
"Manually installed apps cannot be updated" : "Käsitsi paigaldatud rakendusi ei saa uuendada",
+ "{progress}% Deploying …" : "Võtan kasutusele {progress}%…",
+ "Deploy and Enable" : "Võta kasutusele ja lülita sisse",
"Disable" : "Lülita välja",
"Allow untested app" : "Luba testimata rakenduse kasutamine",
+ "The app will be downloaded from the App Store" : "See rakendus laaditakse alla App Store'ist",
"Unknown" : "Teadmata",
"Never" : "Mitte kunagi",
"Could not register device: Network error" : "Seadme registreerimine polnud võimalik: võrguühenduse viga",
"An error occurred during the request. Unable to proceed." : "Päringu ajal tekkis viga. Jätkamine pole võimalik.",
+ "Error: This app cannot be enabled because it makes the server unstable" : "Viga: Kuna ta muudaks selle serveri mittetöökindlaks, siis seda rakendust ei saa sisse lülitada",
"The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Rakendus on lubatud, aga see vajab uuendamist. Sind suunatakse 5 sekundi pärast uuendamise lehele.",
"Do you really want to wipe your data from this device?" : "Oled sa kindel, et soovid siit seadmest oma andmed kaugkustutada?",
"Confirm wipe" : "Kinnita kaugkustutamine",
@@ -603,6 +631,7 @@ OC.L10N.register(
"Test and verify email settings" : "Testi ja kontrolli e-posti seadistusi",
"Security & setup warnings" : "Turva- ja paigalduse hoiatused",
"All checks passed." : "Kõik kontrollid on läbitud.",
+ "Reasons to use Nextcloud in your organization" : "Põhjused, miks peaksid Nextcloudi kasutama oma organisatsioonis",
"Follow us on X" : "Järgne meile X-is",
"Follow us on Mastodon" : "Järgne meile Mastodonis",
"Check out our blog" : "Loe meie ajaveebi",
@@ -612,6 +641,10 @@ OC.L10N.register(
"The PHP memory limit is below the recommended value of %s." : "PHP mälukasutuse ülempiir on väiksem, kui soovitatav %s.",
"for WebAuthn passwordless login" : "WebAuthn salasõnata sisselogimise jaoks",
"for WebAuthn passwordless login, and SFTP storage" : "WebAuthn salasõnata sisselogimise ja SFTP andmeruumi jaoks",
+ "Set default expiration date for shares" : "Määra jaosmeedia vaikimisi aegumiskuupäev",
+ "Failed to remove group \"{group}\"" : "„{group}“ grupi eemaldamine ei õnnestunud",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Sa oled eemaldamas gruppi „{group}“. Selles grupis olevad kasutajad aga JÄÄVAD kustutamata.",
+ "Remove group" : "Eemalda grupp",
"Your biography" : "Sinu elulugu",
"You are using <strong>{usage}</strong>" : "Sa kasutad: <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Sa kasutad: <strong>{usage}</strong> / <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)",
diff --git a/apps/settings/l10n/et_EE.json b/apps/settings/l10n/et_EE.json
index 02f14eb1312..c23efdb510a 100644
--- a/apps/settings/l10n/et_EE.json
+++ b/apps/settings/l10n/et_EE.json
@@ -134,9 +134,11 @@
"No altered files" : "Muudetud faile pole",
"Database missing primary keys" : "Andmebaasis on puudu primaarvõtmed",
"Missing primary key on table \"%s\"." : "Puuduv primaarvõti tabelis „%s“.",
+ "Default phone region" : "Telefonide vaikimisi piirkond",
"Email test" : "E-kirjade saatmise test",
"Mail delivery is disabled by instance config \"%s\"." : "Selles serveris piirab e-kirjade edasisaatmist seadistus „%s“.",
- "Email test was successfully sent" : "Test e-kirja saatmine õnnestus",
+ "Email test was successfully sent" : "Testkirja saatmine õnnestus",
+ "Your \"trusted_proxies\" setting is not correctly set, it should be an array." : "Serveri „trusted_proxies“ seadistus pole korrektne - seal peab leiduma massiiv, aga hetkel on midagi muud.",
"Old server-side-encryption" : "Vana serveripoolne krüptimine",
"Disabled" : "Keelatud",
"The old server-side-encryption format is enabled. We recommend disabling this." : "Vana serveripoolse krüptimise vorming on kasutusel. Mes soovitame, et lülitad selle välja.",
@@ -144,6 +146,7 @@
"The %1$s configuration option must be a valid integer value." : "Seadistusvalik „%1$s“ peab olema korrektne täisarv.",
"The logging level is set to debug level. Use debug level only when you have a problem to diagnose, and then reset your log level to a less-verbose level as it outputs a lot of information, and can affect your server performance." : "Logimistase on hetkel seatud veaotsinguks. Kasuta seda vaid siis, kui tõesti tegeled veaotsinguga ning peale seda muuda logimine jälle tavaliseks. Veaotsinguks vajalik logimine on väga väljundirikas ning võib mõjutada serveri jõudlust.",
"Logging level configured correctly." : "Logimistase on korrektselt seadistatud",
+ "PHP configuration option \"default_charset\" should be UTF-8" : "PHP seadistuse „default_charset“ väärtus peab olema UTF-8",
"Supported" : "Toetatud",
"PHP getenv" : "PHP getenv",
"PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP ei tundu olevat süsteemsete keskkonnamuutujate pärimiseks korrektselt seadistatud. Test getenv(\"PATH\") abil tagastab tühja vastuse.",
@@ -162,6 +165,8 @@
"PHP version" : "PHP versioon",
"You are currently running PHP %1$s. PHP %2$s is deprecated since Nextcloud %3$s. Nextcloud %4$s may require at least PHP %5$s. Please upgrade to one of the officially supported PHP versions provided by the PHP Group as soon as possible." : "Sa kasutad hetkel PHP versiooni %1$s. PHP %2$s on aga alates Nexctcloudi versioonist %3$s kasutuselt eemaldatud. Nexctcloud %4$s eeldab, et PHP versioon on vähemalt %5$s. Palun uuenda oma server PHP Groupi poolt väljaantud ametliku PHP versioonini niipea, kui võimalik.",
"You are currently running PHP %s." : "Sul on hetkel kasutusel PHP versioon %s.",
+ "PHP \"output_buffering\" option" : "PHP eelistus „output_buffering“",
+ "PHP configuration option \"output_buffering\" must be disabled" : "PHP seadistus „output_buffering“ peab olema lülitatud välja",
"Push service" : "Tõuketeenus",
"Valid enterprise license" : "Suurfirmade litsents",
"Free push service" : "Tasuta tõuketeenus",
@@ -174,9 +179,14 @@
"MariaDB version \"%1$s\" detected. MariaDB >=%2$s and <=%3$s is suggested for best performance, stability and functionality with this version of Nextcloud." : "Tuvastasin MariaDB versiooni „%1$s“. Parima jõudluse, stabiilsuse ja funktsionaalsuse mõttes soovitame selle Nextcloudi versiooni jaoks MariaDB versioone >=%2$s and <= %3$s.",
"MySQL version \"%1$s\" detected. MySQL >=%2$s and <=%3$s is suggested for best performance, stability and functionality with this version of Nextcloud." : "Tuvastasin MySQLi versiooni „%1$s“. Parima jõudluse, stabiilsuse ja funktsionaalsuse mõttes soovitame selle Nextcloudi versiooni jaoks MySQLi versioone >=%2$s and <= %3$s.",
"PostgreSQL version \"%1$s\" detected. PostgreSQL >=%2$s and <=%3$s is suggested for best performance, stability and functionality with this version of Nextcloud." : "Tuvastasin PostgreSQLi versiooni „%1$s“. Parima jõudluse, stabiilsuse ja funktsionaalsuse mõttes soovitame selle Nextcloudi versiooni jaoks PostgreSQLi >=%2$s and <= %3$s.",
+ "Unknown database platform" : "Tuvastamatu andmebaasiplatvorm",
"Architecture" : "Arhitektuur",
"64-bit" : "64-bitine",
"It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit!" : "Tundub, et kasutad PHP 32-bitist versiooni. Tõhusaks toimimiseks eeldab Nextcloud 64-bitist keskkonda. Palun uuenda oma serveri operatsioonisüsteem ja PHP 64-bitiseks versiooniks!",
+ "Task Processing pickup speed" : "Ülesannete töötlemise kiirus",
+ "_No scheduled tasks in the last %n hours._::_No scheduled tasks in the last %n hours._" : ["Viimase %n tunni jooksul pole olnud ühtegi ajastatud ülesannet.","Viimase %n tunni jooksul pole olnud ühtegi ajastatud ülesannet."],
+ "_The task pickup speed has been ok in the last %n hour._::_The task pickup speed has been ok in the last %n hours._" : ["Ülesannete töötlemise kiirus on viimase %n tunni jooksul olnud mõistlik.","Ülesannete töötlemise kiirus on viimase %n tunni jooksul olnud mõistlik."],
+ "_The task pickup speed has been slow in the last %n hour. Many tasks took longer than 4 minutes to be picked up. Consider setting up a worker to process tasks in the background._::_The task pickup speed has been slow in the last %n hours. Many tasks took longer than 4 minutes to be picked up. Consider setting up a worker to process tasks in the background._" : ["Ülesannete töötlemise kiirus on viimase %n tunni jooksul olnud aeglane. Paljude ülesannete töölepanekuks kulus enam, kui 4 minutit. Palun kaalu võimalust, et ülesannete töötlemiseks seadistad taustal töötava protsessihalduri.","Ülesannete töötlemise kiirus on viimase %n tunni jooksul olnud aeglane. Paljude ülesannete töölepanekuks kulus enam, kui 4 minutit. Palun kaalu võimalust, et ülesannete töötlemiseks seadistad taustal töötava protsessihalduri."],
"The PHP function \"disk_free_space\" is disabled, which prevents the check for enough space in the temporary directories." : "PHP funktsioon „disk_free_space“ pole kasutusel. Selle puudumine takistab ajutiste kaustade jaoks vajaliku andmeruumi kontrollimist.",
"Profile information" : "Kasutajaprofiili teave",
"Nextcloud settings" : "Nextcloudi seadistused",
@@ -184,8 +194,12 @@
"Enable" : "Lülita sisse",
"Machine translation" : "Masintõlge",
"Image generation" : "Pildiloome",
+ "Here you can decide which group can access certain sections of the administration settings." : "Siinkohal saad sa otsustada mis gruppidel on ligipääs valitud haldusseadistustele.",
"Unable to modify setting" : "Seadistuse muutmine ei õnnestu",
"None" : "Pole",
+ "Changed disclaimer text" : "Vastutusest lahtiütluse tekst on muutunud",
+ "Deleted disclaimer text" : "Vastutusest lahtiütluse tekst on kustutatud",
+ "Could not set disclaimer text" : "Vastutusest lahtiütluse teksti seadistamine ei õnnestunud",
"Allow apps to use the Share API" : "Luba rakendustel kasutada Share API-t",
"Allow resharing" : "Luba edasijagamine",
"Allow sharing with groups" : "Luba gruppidega jagamine",
@@ -195,6 +209,7 @@
"Always ask for a password" : "Alati küsi parooli",
"Enforce password protection" : "Jõusta paroolikaitse",
"Exclude groups from password requirements" : "Välista grupid salasõnareeglitest",
+ "Exclude groups from creating link shares" : "Välista grupid jagamislinkide loomisest",
"Limit sharing based on groups" : "Piira jagamist gruppide alusel",
"Allow sharing for everyone (default)" : "Luba jagamine kõikidele (vaikimisi)",
"Exclude some groups from sharing" : "Välista mõned grupid jagamisest",
@@ -204,6 +219,8 @@
"Default expiration time of new shares in days" : "Uue jaosmeedia vaikimisi aegumine päevades",
"Expire shares after x days" : "Jaosmeedia aegub x päeva möödudes",
"Privacy settings for sharing" : "Jagamise privaatsusseadistused",
+ "Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Kuva avaliku lingiga üleslaadimise lehel lahtiütluste tekst (vaid siis, kui failide loend on peidetud)",
+ "Disclaimer text" : "Vastutusest lahtiütluse tekst",
"This text will be shown on the public link upload page when the file list is hidden." : "Seda teksti näidatakse avaliku lingiga üleslaadimise lehel kui failide loend on peidetud.",
"Two-Factor Authentication" : "Kaheastmeline autentimine",
"Two-factor authentication can be enforced for all accounts and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Kaheastmelist autentimist on võimalik teha kohustuslikuks kas kõikidele kasutajakontodele või konkreetsete gruppide kaupa. Kui kaheastmelise autentimise kohustuslikkus on määratud, kuid on kasutajal seadistamata, siis ta ei saa siia serverisse sisse logida.",
@@ -249,8 +266,10 @@
"Next slide" : "Järgmine slaid",
"Choose slide to display" : "Vali kuvatav slaid",
"{index} of {total}" : "{index} / {total}",
+ "Deploy Daemon" : "Kasutuselevõtmise taustateenus",
"Type" : "Tüüp",
"Display Name" : "Kuvatav nimi",
+ "Advanced deploy options" : "Kasutuselevõtmise lisavalikud",
"Edit ExApp deploy options before installation" : "Muuda ExApp konteineri seadistuse enne paigaldamist",
"Configured ExApp deploy options. Can be set only during installation" : "ExApp'i konteineri seadistuse valikud. Neid saab määrata vaid paigalduse ajal",
"Learn more" : "Lisateave",
@@ -258,9 +277,12 @@
"ExApp container environment variables" : "ExApp konteineri keskonnamuutujad",
"No environment variables defined" : "Ühtegi keskonnamuutujat pole defineeritud",
"Mounts" : "Haakepunktid",
+ "Must exist on the Deploy daemon host prior to installing the ExApp" : "Enne ExAppi paigaldamist peab ta olema leitav kasutuselevõtmise taustateenuses",
+ "Container path" : "Konteineri asukoht",
"Read-only" : "Ainult lugemiseks",
"Remove mount" : "Eemalda haakepunkt",
"New mount" : "Uus haakepunkt",
+ "Enter path to host folder" : "Sisesta peremeeskausta asukoht",
"Enter path to container folder" : "Sisesta konteinerikausta asukoht",
"Toggle read-only mode" : "Lülita „ainult lugemiseks“ režiim sisse/välja",
"Confirm adding new mount" : "Kinnita uue haakepunkti lisamine",
@@ -280,6 +302,8 @@
"Limit app usage to groups" : "Piira rakenduse kasutamist gruppidega",
"No results" : "Vasteid ei leitud",
"Update to {version}" : "Uuenda versioonile {version}",
+ "Deploy options" : "Kasutuselevõtmise valikud",
+ "Default Deploy daemon is not accessible" : "Kasutuselevõtmise taustateenus pole leitav",
"Delete data on remove" : "Eemaldamisel kustuta andmed",
"This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Sellel rakendusel pole määratud minimaalset Nextcloudi versiooni. See põhjustab tulevikus veateateid.",
"This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Sellel rakendusel pole määratud maksimaalset Nextcloudi versiooni. See põhjustab tulevikus veateateid.",
@@ -354,12 +378,9 @@
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Alati on hea mõte, kui varundad oma andmeid. Kui aga kasutusel on krüptimine, siis palun kontrolli, et lisaks andmetele on varundatud ka krüptovõtmed.",
"Refer to the admin documentation on how to manually also encrypt existing files." : "Süsteemihalduse juhendist leiad teavet kuidas saad käsitsi krüptida juba olemasolevaid faile.",
"This is the final warning: Do you really want to enable encryption?" : "See on viimane hoiatus: Kas oled kindel, et soovid krüptimise sisse lülitada?",
- "Failed to remove group \"{group}\"" : "„{group}“ grupi eemaldamine ei õnnestunud",
"Please confirm the group removal" : "Palun kinnita grupi eemaldamine",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Sa oled eemaldamas gruppi „{group}“. Selles grupis olevad kasutajad aga JÄÄVAD kustutamata.",
"Submit" : "Saada",
"Rename group" : "Muuda grupi nime",
- "Remove group" : "Eemalda grupp",
"Current password" : "Praegune salasõna",
"New password" : "Uus salasõna",
"Change password" : "Muuda salasõna",
@@ -517,7 +538,10 @@
"Defaults" : "Vaikeväärtused",
"Default quota" : "Vaikimisi mahupiir",
"Select default quota" : "Vali vaikimisi andmemahu piir",
+ "Server error while trying to complete WebAuthn device registration" : "Serveriviga WebAuthn seadme registreerimise lõpetamisel",
"Passwordless authentication requires a secure connection." : "Salasõnata autentimine eeldab turvalise võrguühenduse kasutamist.",
+ "Add WebAuthn device" : "Lisa WebAuthni kasutav seade",
+ "Please authorize your WebAuthn device." : "Palun anna luba oma WebAuthn seadme kasutamiseks",
"Adding your device …" : "Lisan sinu seadet…",
"Unnamed device" : "Nimetu seade",
"Passwordless Authentication" : "Salasõnata autentimine",
@@ -567,12 +591,16 @@
"Show to logged in accounts only" : "Näita vaid sisseloginud kasutajatele",
"Hide" : "Peida",
"Manually installed apps cannot be updated" : "Käsitsi paigaldatud rakendusi ei saa uuendada",
+ "{progress}% Deploying …" : "Võtan kasutusele {progress}%…",
+ "Deploy and Enable" : "Võta kasutusele ja lülita sisse",
"Disable" : "Lülita välja",
"Allow untested app" : "Luba testimata rakenduse kasutamine",
+ "The app will be downloaded from the App Store" : "See rakendus laaditakse alla App Store'ist",
"Unknown" : "Teadmata",
"Never" : "Mitte kunagi",
"Could not register device: Network error" : "Seadme registreerimine polnud võimalik: võrguühenduse viga",
"An error occurred during the request. Unable to proceed." : "Päringu ajal tekkis viga. Jätkamine pole võimalik.",
+ "Error: This app cannot be enabled because it makes the server unstable" : "Viga: Kuna ta muudaks selle serveri mittetöökindlaks, siis seda rakendust ei saa sisse lülitada",
"The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Rakendus on lubatud, aga see vajab uuendamist. Sind suunatakse 5 sekundi pärast uuendamise lehele.",
"Do you really want to wipe your data from this device?" : "Oled sa kindel, et soovid siit seadmest oma andmed kaugkustutada?",
"Confirm wipe" : "Kinnita kaugkustutamine",
@@ -601,6 +629,7 @@
"Test and verify email settings" : "Testi ja kontrolli e-posti seadistusi",
"Security & setup warnings" : "Turva- ja paigalduse hoiatused",
"All checks passed." : "Kõik kontrollid on läbitud.",
+ "Reasons to use Nextcloud in your organization" : "Põhjused, miks peaksid Nextcloudi kasutama oma organisatsioonis",
"Follow us on X" : "Järgne meile X-is",
"Follow us on Mastodon" : "Järgne meile Mastodonis",
"Check out our blog" : "Loe meie ajaveebi",
@@ -610,6 +639,10 @@
"The PHP memory limit is below the recommended value of %s." : "PHP mälukasutuse ülempiir on väiksem, kui soovitatav %s.",
"for WebAuthn passwordless login" : "WebAuthn salasõnata sisselogimise jaoks",
"for WebAuthn passwordless login, and SFTP storage" : "WebAuthn salasõnata sisselogimise ja SFTP andmeruumi jaoks",
+ "Set default expiration date for shares" : "Määra jaosmeedia vaikimisi aegumiskuupäev",
+ "Failed to remove group \"{group}\"" : "„{group}“ grupi eemaldamine ei õnnestunud",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Sa oled eemaldamas gruppi „{group}“. Selles grupis olevad kasutajad aga JÄÄVAD kustutamata.",
+ "Remove group" : "Eemalda grupp",
"Your biography" : "Sinu elulugu",
"You are using <strong>{usage}</strong>" : "Sa kasutad: <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Sa kasutad: <strong>{usage}</strong> / <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)",
diff --git a/apps/settings/l10n/eu.js b/apps/settings/l10n/eu.js
index 542ae9457ac..e148c984252 100644
--- a/apps/settings/l10n/eu.js
+++ b/apps/settings/l10n/eu.js
@@ -538,12 +538,9 @@ OC.L10N.register(
"Be aware that encryption always increases the file size." : "Kontuan izan zifratzeak beti fitxategiaren tamaina handitzen duela.",
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Zure datuen babeskopiak sortu beharko zenituzke aldizka, eta zifratuta badaude, ziurtatu zifratze-gakoen babeskopia ere egiten dela datuekin batera.",
"This is the final warning: Do you really want to enable encryption?" : "Azken abisua da: Benetan gaitu nahi duzu zifratzea?",
- "Failed to remove group \"{group}\"" : "Ezin izan da \"{group}\" taldea kendu",
"Please confirm the group removal" : "Mesedez, baieztatu taldearen ezabaketa",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "\"{group}\" taldea ezabatzera zoaz. Kontuak EZ dira ezabatuko.",
"Submit" : "Bidali",
"Rename group" : "Berrizendatu taldea",
- "Remove group" : "Ezabatu taldea",
"Current password" : "Uneko pasahitza",
"New password" : "Pasahitz berria",
"Change password" : "Aldatu pasahitza",
@@ -842,6 +839,9 @@ OC.L10N.register(
"for WebAuthn passwordless login, and SFTP storage" : "WebAuthn pasahitzik gabeko saio-hasiera eta SFTP biltegiratzerako",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "PostgreSQL \"%s\" bertsioa detektatu da. PostgreSQL >=12 eta <=16 iradokitzen da Nextcloud-en bertsio honekin errendimendu, egonkortasun eta funtzionalitate onena lortzeko.",
"Set default expiration date for shares" : "Partekatzeei iraungitze data lehenetsia ezarri",
+ "Failed to remove group \"{group}\"" : "Ezin izan da \"{group}\" taldea kendu",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "\"{group}\" taldea ezabatzera zoaz. Kontuak EZ dira ezabatuko.",
+ "Remove group" : "Ezabatu taldea",
"Your biography" : "Zure biografia",
"You are using <strong>{usage}</strong>" : "<strong>{usage}</strong> erabiltzen ari zara",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "<strong>{usage}</strong>/<strong>{totalSpace}</strong> erabiltzen ari zara (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/eu.json b/apps/settings/l10n/eu.json
index 3521d4772ec..06ab25559fe 100644
--- a/apps/settings/l10n/eu.json
+++ b/apps/settings/l10n/eu.json
@@ -536,12 +536,9 @@
"Be aware that encryption always increases the file size." : "Kontuan izan zifratzeak beti fitxategiaren tamaina handitzen duela.",
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Zure datuen babeskopiak sortu beharko zenituzke aldizka, eta zifratuta badaude, ziurtatu zifratze-gakoen babeskopia ere egiten dela datuekin batera.",
"This is the final warning: Do you really want to enable encryption?" : "Azken abisua da: Benetan gaitu nahi duzu zifratzea?",
- "Failed to remove group \"{group}\"" : "Ezin izan da \"{group}\" taldea kendu",
"Please confirm the group removal" : "Mesedez, baieztatu taldearen ezabaketa",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "\"{group}\" taldea ezabatzera zoaz. Kontuak EZ dira ezabatuko.",
"Submit" : "Bidali",
"Rename group" : "Berrizendatu taldea",
- "Remove group" : "Ezabatu taldea",
"Current password" : "Uneko pasahitza",
"New password" : "Pasahitz berria",
"Change password" : "Aldatu pasahitza",
@@ -840,6 +837,9 @@
"for WebAuthn passwordless login, and SFTP storage" : "WebAuthn pasahitzik gabeko saio-hasiera eta SFTP biltegiratzerako",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "PostgreSQL \"%s\" bertsioa detektatu da. PostgreSQL >=12 eta <=16 iradokitzen da Nextcloud-en bertsio honekin errendimendu, egonkortasun eta funtzionalitate onena lortzeko.",
"Set default expiration date for shares" : "Partekatzeei iraungitze data lehenetsia ezarri",
+ "Failed to remove group \"{group}\"" : "Ezin izan da \"{group}\" taldea kendu",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "\"{group}\" taldea ezabatzera zoaz. Kontuak EZ dira ezabatuko.",
+ "Remove group" : "Ezabatu taldea",
"Your biography" : "Zure biografia",
"You are using <strong>{usage}</strong>" : "<strong>{usage}</strong> erabiltzen ari zara",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "<strong>{usage}</strong>/<strong>{totalSpace}</strong> erabiltzen ari zara (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/fa.js b/apps/settings/l10n/fa.js
index 9e29dec7c96..e8ecc1ebaa2 100644
--- a/apps/settings/l10n/fa.js
+++ b/apps/settings/l10n/fa.js
@@ -266,7 +266,6 @@ OC.L10N.register(
"This is the final warning: Do you really want to enable encryption?" : "این آخرین اخطار است: آیا می‌خواهید رمزگذاری را فعال کنید ؟",
"Submit" : "ارسال",
"Rename group" : "Rename group",
- "Remove group" : "برداشتن گروه",
"Current password" : "گذرواژه کنونی",
"New password" : "گذرواژه جدید",
"Change password" : "تغییر گذر واژه",
@@ -473,6 +472,7 @@ OC.L10N.register(
"Use a second factor besides your password to increase security for your account." : "برای افزایش امنیت حساب کاربری خود ، از یک عامل دوم علاوه بر رمز عبور خود استفاده کنید.",
"If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication.",
"Set default expiration date for shares" : "تاریخ انقضا پیش فرض را برای اشتراک گذاری تعیین کنید",
+ "Remove group" : "برداشتن گروه",
"Your biography" : "بیوگرافی شما",
"You are using <strong>{usage}</strong>" : "فضای مورد استفاده: <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "شما در حال استفادهٔ <strong>{usage}</strong> از <strong>{totalSpace}</strong> (<strong>{usageRelative}٪</strong>) فضا هستید"
diff --git a/apps/settings/l10n/fa.json b/apps/settings/l10n/fa.json
index 555c33bb260..0184eaf71c3 100644
--- a/apps/settings/l10n/fa.json
+++ b/apps/settings/l10n/fa.json
@@ -264,7 +264,6 @@
"This is the final warning: Do you really want to enable encryption?" : "این آخرین اخطار است: آیا می‌خواهید رمزگذاری را فعال کنید ؟",
"Submit" : "ارسال",
"Rename group" : "Rename group",
- "Remove group" : "برداشتن گروه",
"Current password" : "گذرواژه کنونی",
"New password" : "گذرواژه جدید",
"Change password" : "تغییر گذر واژه",
@@ -471,6 +470,7 @@
"Use a second factor besides your password to increase security for your account." : "برای افزایش امنیت حساب کاربری خود ، از یک عامل دوم علاوه بر رمز عبور خود استفاده کنید.",
"If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication.",
"Set default expiration date for shares" : "تاریخ انقضا پیش فرض را برای اشتراک گذاری تعیین کنید",
+ "Remove group" : "برداشتن گروه",
"Your biography" : "بیوگرافی شما",
"You are using <strong>{usage}</strong>" : "فضای مورد استفاده: <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "شما در حال استفادهٔ <strong>{usage}</strong> از <strong>{totalSpace}</strong> (<strong>{usageRelative}٪</strong>) فضا هستید"
diff --git a/apps/settings/l10n/fi.js b/apps/settings/l10n/fi.js
index 6d197318ee6..1f3f2800f21 100644
--- a/apps/settings/l10n/fi.js
+++ b/apps/settings/l10n/fi.js
@@ -301,12 +301,9 @@ OC.L10N.register(
"Be aware that encryption always increases the file size." : "Ota huomioon, että salaus kasvattaa aina tiedostojen kokoa.",
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Säännöllisten varmuuskopioiden ottaminen on erittäin tärkeää. Jos olet ottanut salauksen käyttöön, huolehdi salausavainten varmuuskopioinnista.",
"This is the final warning: Do you really want to enable encryption?" : "Tämä on viimeinen varoitus: haluatko varmasti ottaa salauksen käyttöön?",
- "Failed to remove group \"{group}\"" : "Ryhmän \"{group}\" poistaminen epäonnistui",
"Please confirm the group removal" : "Vahvista ryhmän poistaminen",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Olet aikeissa poistaa ryhmän \"{group}\". Tilejä EI poisteta.",
"Submit" : "Lähetä",
"Rename group" : "Nimeä ryhmä uudelleen",
- "Remove group" : "Poista ryhmä",
"Current password" : "Nykyinen salasana",
"New password" : "Uusi salasana",
"Change password" : "Vaihda salasana",
@@ -531,6 +528,9 @@ OC.L10N.register(
"If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Jos yhdistät kolmannen osapuolen ohjelmia Nextcloudiin, määritä niille sovellussalasanat ennen kaksiosaisen todentamismenetelmän käyttöönottoa.",
"File locking" : "Tiedostolukitus",
"Set default expiration date for shares" : "Aseta oletusarvoinen vanhenemispäivä jaoille",
+ "Failed to remove group \"{group}\"" : "Ryhmän \"{group}\" poistaminen epäonnistui",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Olet aikeissa poistaa ryhmän \"{group}\". Tilejä EI poisteta.",
+ "Remove group" : "Poista ryhmä",
"Your biography" : "Sinun elämäkertasi",
"You are using <strong>{usage}</strong>" : "Käytössäsi on <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Käytössäsi on <strong>{usage}</strong>/<strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/fi.json b/apps/settings/l10n/fi.json
index 87103ca03b9..a54ef6b6e22 100644
--- a/apps/settings/l10n/fi.json
+++ b/apps/settings/l10n/fi.json
@@ -299,12 +299,9 @@
"Be aware that encryption always increases the file size." : "Ota huomioon, että salaus kasvattaa aina tiedostojen kokoa.",
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Säännöllisten varmuuskopioiden ottaminen on erittäin tärkeää. Jos olet ottanut salauksen käyttöön, huolehdi salausavainten varmuuskopioinnista.",
"This is the final warning: Do you really want to enable encryption?" : "Tämä on viimeinen varoitus: haluatko varmasti ottaa salauksen käyttöön?",
- "Failed to remove group \"{group}\"" : "Ryhmän \"{group}\" poistaminen epäonnistui",
"Please confirm the group removal" : "Vahvista ryhmän poistaminen",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Olet aikeissa poistaa ryhmän \"{group}\". Tilejä EI poisteta.",
"Submit" : "Lähetä",
"Rename group" : "Nimeä ryhmä uudelleen",
- "Remove group" : "Poista ryhmä",
"Current password" : "Nykyinen salasana",
"New password" : "Uusi salasana",
"Change password" : "Vaihda salasana",
@@ -529,6 +526,9 @@
"If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Jos yhdistät kolmannen osapuolen ohjelmia Nextcloudiin, määritä niille sovellussalasanat ennen kaksiosaisen todentamismenetelmän käyttöönottoa.",
"File locking" : "Tiedostolukitus",
"Set default expiration date for shares" : "Aseta oletusarvoinen vanhenemispäivä jaoille",
+ "Failed to remove group \"{group}\"" : "Ryhmän \"{group}\" poistaminen epäonnistui",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Olet aikeissa poistaa ryhmän \"{group}\". Tilejä EI poisteta.",
+ "Remove group" : "Poista ryhmä",
"Your biography" : "Sinun elämäkertasi",
"You are using <strong>{usage}</strong>" : "Käytössäsi on <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Käytössäsi on <strong>{usage}</strong>/<strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/fr.js b/apps/settings/l10n/fr.js
index 392f0f17d92..f4850644282 100644
--- a/apps/settings/l10n/fr.js
+++ b/apps/settings/l10n/fr.js
@@ -579,12 +579,9 @@ OC.L10N.register(
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Il est opportun de sauvegarder régulièrement vos données. Si ces données sont chiffrées, n’oubliez pas de sauvegarder aussi les clés de chiffrement.",
"Refer to the admin documentation on how to manually also encrypt existing files." : "Reportez-vous à la documentation d'administration pour savoir comment chiffrer manuellement les fichiers existants.",
"This is the final warning: Do you really want to enable encryption?" : "Dernier avertissement : Voulez-vous vraiment activer le chiffrement ?",
- "Failed to remove group \"{group}\"" : "Erreur à la suppression de « {group} »",
"Please confirm the group removal" : "Merci de confirmer la suppression du groupe",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Vous êtes sur le point de supprimer le groupe « {group} ». Les comptes qui en font partie ne seront PAS supprimés.",
"Submit" : "Soumettre",
"Rename group" : "Renommer le groupe",
- "Remove group" : "Retirer le groupe",
"Current password" : "Mot de passe actuel",
"New password" : "Nouveau mot de passe",
"Change password" : "Changer de mot de passe",
@@ -889,6 +886,9 @@ OC.L10N.register(
"for WebAuthn passwordless login, and SFTP storage" : "pour WebAuthn pour la connexion sans mot de passe, et le stockage SFTP",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "Version PostgreSQL \"%s\" détectée. PostgreSQL >= 12 et <= 16 sont recommandés pour de meilleures performances, stabilité et fonctionnalités avec cette version de Nextcloud.",
"Set default expiration date for shares" : "Définir par défaut une date d’expiration pour les partages",
+ "Failed to remove group \"{group}\"" : "Erreur à la suppression de « {group} »",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Vous êtes sur le point de supprimer le groupe « {group} ». Les comptes qui en font partie ne seront PAS supprimés.",
+ "Remove group" : "Retirer le groupe",
"Your biography" : "Votre biographie",
"You are using <strong>{usage}</strong>" : "Vous utilisez <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Vous utilisez <strong>{usage}</strong> sur <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/fr.json b/apps/settings/l10n/fr.json
index 095170f3d13..165b62d1ddc 100644
--- a/apps/settings/l10n/fr.json
+++ b/apps/settings/l10n/fr.json
@@ -577,12 +577,9 @@
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Il est opportun de sauvegarder régulièrement vos données. Si ces données sont chiffrées, n’oubliez pas de sauvegarder aussi les clés de chiffrement.",
"Refer to the admin documentation on how to manually also encrypt existing files." : "Reportez-vous à la documentation d'administration pour savoir comment chiffrer manuellement les fichiers existants.",
"This is the final warning: Do you really want to enable encryption?" : "Dernier avertissement : Voulez-vous vraiment activer le chiffrement ?",
- "Failed to remove group \"{group}\"" : "Erreur à la suppression de « {group} »",
"Please confirm the group removal" : "Merci de confirmer la suppression du groupe",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Vous êtes sur le point de supprimer le groupe « {group} ». Les comptes qui en font partie ne seront PAS supprimés.",
"Submit" : "Soumettre",
"Rename group" : "Renommer le groupe",
- "Remove group" : "Retirer le groupe",
"Current password" : "Mot de passe actuel",
"New password" : "Nouveau mot de passe",
"Change password" : "Changer de mot de passe",
@@ -887,6 +884,9 @@
"for WebAuthn passwordless login, and SFTP storage" : "pour WebAuthn pour la connexion sans mot de passe, et le stockage SFTP",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "Version PostgreSQL \"%s\" détectée. PostgreSQL >= 12 et <= 16 sont recommandés pour de meilleures performances, stabilité et fonctionnalités avec cette version de Nextcloud.",
"Set default expiration date for shares" : "Définir par défaut une date d’expiration pour les partages",
+ "Failed to remove group \"{group}\"" : "Erreur à la suppression de « {group} »",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Vous êtes sur le point de supprimer le groupe « {group} ». Les comptes qui en font partie ne seront PAS supprimés.",
+ "Remove group" : "Retirer le groupe",
"Your biography" : "Votre biographie",
"You are using <strong>{usage}</strong>" : "Vous utilisez <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Vous utilisez <strong>{usage}</strong> sur <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/ga.js b/apps/settings/l10n/ga.js
index d32d8cec1c6..9cbd3ebc88e 100644
--- a/apps/settings/l10n/ga.js
+++ b/apps/settings/l10n/ga.js
@@ -315,6 +315,10 @@ OC.L10N.register(
"Architecture" : "Ailtireacht",
"64-bit" : "64-giotán",
"It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit!" : "Is cosúil go bhfuil leagan PHP 32-giotán á rith agat. Tá 64-giotán ag teastáil ó Nextcloud chun go n-éireoidh go maith. Uasghrádaigh do OS agus PHP go 64-giotán le do thoil!",
+ "Task Processing pickup speed" : "Luas bailithe Próiseála Tascanna",
+ "_No scheduled tasks in the last %n hours._::_No scheduled tasks in the last %n hours._" : ["Gan aon tascanna sceidealaithe le %n uair an chloig anuas.","Gan aon tascanna sceidealaithe le %n uair an chloig anuas.","Gan aon tascanna sceidealaithe le %n uair an chloig anuas.","Gan aon tascanna sceidealaithe le %n uair an chloig anuas.","Gan aon tascanna sceidealaithe le %n uair an chloig anuas."],
+ "_The task pickup speed has been ok in the last %n hour._::_The task pickup speed has been ok in the last %n hours._" : ["Tá luas bailithe na dtascanna ceart go leor le %n uair an chloig anuas.","Tá luas bailithe na dtascanna ceart go leor le %n uair an chloig anuas.","Tá luas bailithe na dtascanna ceart go leor le %n uair an chloig anuas.","Tá luas bailithe na dtascanna ceart go leor le %n uair an chloig anuas.","Tá luas bailithe na dtascanna ceart go leor le %n uair an chloig anuas."],
+ "_The task pickup speed has been slow in the last %n hour. Many tasks took longer than 4 minutes to be picked up. Consider setting up a worker to process tasks in the background._::_The task pickup speed has been slow in the last %n hours. Many tasks took longer than 4 minutes to be picked up. Consider setting up a worker to process tasks in the background._" : ["Tá luas bailithe na dtascanna mall le %n uair an chloig anuas. Thóg sé níos mó ná 4 nóiméad go leor tascanna a bhailiú. Smaoinigh ar oibrí a shocrú chun tascanna a phróiseáil sa chúlra.","Tá luas bailithe na dtascanna mall le %n uair an chloig anuas. Thóg sé níos mó ná 4 nóiméad go leor tascanna a bhailiú. Smaoinigh ar oibrí a shocrú chun tascanna a phróiseáil sa chúlra.","Tá luas bailithe na dtascanna mall le %n uair an chloig anuas. Thóg sé níos mó ná 4 nóiméad go leor tascanna a bhailiú. Smaoinigh ar oibrí a shocrú chun tascanna a phróiseáil sa chúlra.","Tá luas bailithe na dtascanna mall le %n uair an chloig anuas. Thóg sé níos mó ná 4 nóiméad go leor tascanna a bhailiú. Smaoinigh ar oibrí a shocrú chun tascanna a phróiseáil sa chúlra.","Tá luas bailithe na dtascanna mall le %n uair an chloig anuas. Thóg sé níos mó ná 4 nóiméad go leor tascanna a bhailiú. Smaoinigh ar oibrí a shocrú chun tascanna a phróiseáil sa chúlra."],
"Temporary space available" : "Spás sealadach ar fáil",
"Error while checking the temporary PHP path - it was not properly set to a directory. Returned value: %s" : "Earráid agus an cosán PHP sealadach á sheiceáil - níor socraíodh go heolaire é i gceart. Luach aischurtha: %s",
"The PHP function \"disk_free_space\" is disabled, which prevents the check for enough space in the temporary directories." : "Tá an fheidhm PHP \"disk_free_space\" díchumasaithe, rud a chuireann cosc ​​​​ar an seiceáil le haghaidh spás leordhóthanach sna heolairí sealadacha.",
@@ -583,12 +587,9 @@ OC.L10N.register(
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Is maith i gcónaí cúltacaí rialta de do shonraí a chruthú, i gcás criptithe déan cinnte cúltaca a dhéanamh de na heochracha criptithe chomh maith le do shonraí.",
"Refer to the admin documentation on how to manually also encrypt existing files." : "Déan tagairt don doiciméadú riaracháin maidir le conas comhaid atá ann cheana a chriptiú de láimh freisin.",
"This is the final warning: Do you really want to enable encryption?" : "Seo é an rabhadh deiridh: Ar mhaith leat criptiúchán a chumasú?",
- "Failed to remove group \"{group}\"" : "Theip ar an ngrúpa \"{group}\" a bhaint",
"Please confirm the group removal" : "Deimhnigh baint an ghrúpa",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Tá tú ar tí an grúpa \"{group}\" a bhaint. NÍ scriosfar na cuntais.",
"Submit" : "Cuir isteach",
"Rename group" : "Athainmnigh an grúpa",
- "Remove group" : "Bain an grúpa",
"Current password" : "Pasfhocal reatha",
"New password" : "Focal Faire Nua",
"Change password" : "Athraigh do phasfhocal",
@@ -896,6 +897,9 @@ OC.L10N.register(
"for WebAuthn passwordless login, and SFTP storage" : "le haghaidh logáil isteach WebAuthn gan phasfhocal, agus stóráil SFTP",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "Braitheadh ​​leagan PostgreSQL \"%s\". Moltar PostgreSQL >=12 agus <=16 don fheidhmíocht is fearr, don chobhsaíocht agus don fheidhmiúlacht leis an leagan seo de Nextcloud.",
"Set default expiration date for shares" : "Socraigh dáta éaga réamhshocraithe le haghaidh scaireanna",
+ "Failed to remove group \"{group}\"" : "Theip ar an ngrúpa \"{group}\" a bhaint",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Tá tú ar tí an grúpa \"{group}\" a bhaint. NÍ scriosfar na cuntais.",
+ "Remove group" : "Bain an grúpa",
"Your biography" : "Do bheathaisnéis",
"You are using <strong>{usage}</strong>" : "Tá tú ag úsáid <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Tá tú ag úsáid<strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)",
diff --git a/apps/settings/l10n/ga.json b/apps/settings/l10n/ga.json
index b6eb9381282..12e39146b72 100644
--- a/apps/settings/l10n/ga.json
+++ b/apps/settings/l10n/ga.json
@@ -313,6 +313,10 @@
"Architecture" : "Ailtireacht",
"64-bit" : "64-giotán",
"It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit!" : "Is cosúil go bhfuil leagan PHP 32-giotán á rith agat. Tá 64-giotán ag teastáil ó Nextcloud chun go n-éireoidh go maith. Uasghrádaigh do OS agus PHP go 64-giotán le do thoil!",
+ "Task Processing pickup speed" : "Luas bailithe Próiseála Tascanna",
+ "_No scheduled tasks in the last %n hours._::_No scheduled tasks in the last %n hours._" : ["Gan aon tascanna sceidealaithe le %n uair an chloig anuas.","Gan aon tascanna sceidealaithe le %n uair an chloig anuas.","Gan aon tascanna sceidealaithe le %n uair an chloig anuas.","Gan aon tascanna sceidealaithe le %n uair an chloig anuas.","Gan aon tascanna sceidealaithe le %n uair an chloig anuas."],
+ "_The task pickup speed has been ok in the last %n hour._::_The task pickup speed has been ok in the last %n hours._" : ["Tá luas bailithe na dtascanna ceart go leor le %n uair an chloig anuas.","Tá luas bailithe na dtascanna ceart go leor le %n uair an chloig anuas.","Tá luas bailithe na dtascanna ceart go leor le %n uair an chloig anuas.","Tá luas bailithe na dtascanna ceart go leor le %n uair an chloig anuas.","Tá luas bailithe na dtascanna ceart go leor le %n uair an chloig anuas."],
+ "_The task pickup speed has been slow in the last %n hour. Many tasks took longer than 4 minutes to be picked up. Consider setting up a worker to process tasks in the background._::_The task pickup speed has been slow in the last %n hours. Many tasks took longer than 4 minutes to be picked up. Consider setting up a worker to process tasks in the background._" : ["Tá luas bailithe na dtascanna mall le %n uair an chloig anuas. Thóg sé níos mó ná 4 nóiméad go leor tascanna a bhailiú. Smaoinigh ar oibrí a shocrú chun tascanna a phróiseáil sa chúlra.","Tá luas bailithe na dtascanna mall le %n uair an chloig anuas. Thóg sé níos mó ná 4 nóiméad go leor tascanna a bhailiú. Smaoinigh ar oibrí a shocrú chun tascanna a phróiseáil sa chúlra.","Tá luas bailithe na dtascanna mall le %n uair an chloig anuas. Thóg sé níos mó ná 4 nóiméad go leor tascanna a bhailiú. Smaoinigh ar oibrí a shocrú chun tascanna a phróiseáil sa chúlra.","Tá luas bailithe na dtascanna mall le %n uair an chloig anuas. Thóg sé níos mó ná 4 nóiméad go leor tascanna a bhailiú. Smaoinigh ar oibrí a shocrú chun tascanna a phróiseáil sa chúlra.","Tá luas bailithe na dtascanna mall le %n uair an chloig anuas. Thóg sé níos mó ná 4 nóiméad go leor tascanna a bhailiú. Smaoinigh ar oibrí a shocrú chun tascanna a phróiseáil sa chúlra."],
"Temporary space available" : "Spás sealadach ar fáil",
"Error while checking the temporary PHP path - it was not properly set to a directory. Returned value: %s" : "Earráid agus an cosán PHP sealadach á sheiceáil - níor socraíodh go heolaire é i gceart. Luach aischurtha: %s",
"The PHP function \"disk_free_space\" is disabled, which prevents the check for enough space in the temporary directories." : "Tá an fheidhm PHP \"disk_free_space\" díchumasaithe, rud a chuireann cosc ​​​​ar an seiceáil le haghaidh spás leordhóthanach sna heolairí sealadacha.",
@@ -581,12 +585,9 @@
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Is maith i gcónaí cúltacaí rialta de do shonraí a chruthú, i gcás criptithe déan cinnte cúltaca a dhéanamh de na heochracha criptithe chomh maith le do shonraí.",
"Refer to the admin documentation on how to manually also encrypt existing files." : "Déan tagairt don doiciméadú riaracháin maidir le conas comhaid atá ann cheana a chriptiú de láimh freisin.",
"This is the final warning: Do you really want to enable encryption?" : "Seo é an rabhadh deiridh: Ar mhaith leat criptiúchán a chumasú?",
- "Failed to remove group \"{group}\"" : "Theip ar an ngrúpa \"{group}\" a bhaint",
"Please confirm the group removal" : "Deimhnigh baint an ghrúpa",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Tá tú ar tí an grúpa \"{group}\" a bhaint. NÍ scriosfar na cuntais.",
"Submit" : "Cuir isteach",
"Rename group" : "Athainmnigh an grúpa",
- "Remove group" : "Bain an grúpa",
"Current password" : "Pasfhocal reatha",
"New password" : "Focal Faire Nua",
"Change password" : "Athraigh do phasfhocal",
@@ -894,6 +895,9 @@
"for WebAuthn passwordless login, and SFTP storage" : "le haghaidh logáil isteach WebAuthn gan phasfhocal, agus stóráil SFTP",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "Braitheadh ​​leagan PostgreSQL \"%s\". Moltar PostgreSQL >=12 agus <=16 don fheidhmíocht is fearr, don chobhsaíocht agus don fheidhmiúlacht leis an leagan seo de Nextcloud.",
"Set default expiration date for shares" : "Socraigh dáta éaga réamhshocraithe le haghaidh scaireanna",
+ "Failed to remove group \"{group}\"" : "Theip ar an ngrúpa \"{group}\" a bhaint",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Tá tú ar tí an grúpa \"{group}\" a bhaint. NÍ scriosfar na cuntais.",
+ "Remove group" : "Bain an grúpa",
"Your biography" : "Do bheathaisnéis",
"You are using <strong>{usage}</strong>" : "Tá tú ag úsáid <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Tá tú ag úsáid<strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)",
diff --git a/apps/settings/l10n/gl.js b/apps/settings/l10n/gl.js
index 13738a6d883..3b4fed6b877 100644
--- a/apps/settings/l10n/gl.js
+++ b/apps/settings/l10n/gl.js
@@ -578,12 +578,9 @@ OC.L10N.register(
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Sempre é bo crear copias de seguranza dos seus datos, no caso do cifrado, asegúrese de ter unha copia de seguranza das chaves de cifrado xunto cos seus datos.",
"Refer to the admin documentation on how to manually also encrypt existing files." : "Consulte a documentación de administración sobre para saber tamén como cifrar manualmente os ficheiros existentes.",
"This is the final warning: Do you really want to enable encryption?" : "Esta é a última advertencia: Confirma que quere activar o cifrado?",
- "Failed to remove group \"{group}\"" : "Produciuse un fallo ao retirar o grupo «{group}»",
"Please confirm the group removal" : "Confirme a retirada do grupo",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Está a piques de retirar o grupo «{group}». As contas NON van ser eliminadas.",
"Submit" : "Enviar",
"Rename group" : "Cambiar o nome do grupo",
- "Remove group" : "Retirar o grupo",
"Current password" : "Contrasinal actual",
"New password" : "Novo contrasinal",
"Change password" : "Cambiar o contrasinal",
@@ -887,6 +884,9 @@ OC.L10N.register(
"for WebAuthn passwordless login, and SFTP storage" : "para acceso sen contrasinal de WebAuthn, e almacenamento SFTP",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "Detectouse a versión «%s» de PostgreSQL. Suxírese PostgreSQL >=12 e <=16 para un mellor rendemento, estabilidade e funcionalidade con esta versión de Nextcloud.",
"Set default expiration date for shares" : "Definir a data de caducidade predeterminada das comparticións",
+ "Failed to remove group \"{group}\"" : "Produciuse un fallo ao retirar o grupo «{group}»",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Está a piques de retirar o grupo «{group}». As contas NON van ser eliminadas.",
+ "Remove group" : "Retirar o grupo",
"Your biography" : "A súa biografía",
"You are using <strong>{usage}</strong>" : "Está a usar <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Está a usar <strong>{usage}</strong> de <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/gl.json b/apps/settings/l10n/gl.json
index 65690552052..808d291eecb 100644
--- a/apps/settings/l10n/gl.json
+++ b/apps/settings/l10n/gl.json
@@ -576,12 +576,9 @@
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Sempre é bo crear copias de seguranza dos seus datos, no caso do cifrado, asegúrese de ter unha copia de seguranza das chaves de cifrado xunto cos seus datos.",
"Refer to the admin documentation on how to manually also encrypt existing files." : "Consulte a documentación de administración sobre para saber tamén como cifrar manualmente os ficheiros existentes.",
"This is the final warning: Do you really want to enable encryption?" : "Esta é a última advertencia: Confirma que quere activar o cifrado?",
- "Failed to remove group \"{group}\"" : "Produciuse un fallo ao retirar o grupo «{group}»",
"Please confirm the group removal" : "Confirme a retirada do grupo",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Está a piques de retirar o grupo «{group}». As contas NON van ser eliminadas.",
"Submit" : "Enviar",
"Rename group" : "Cambiar o nome do grupo",
- "Remove group" : "Retirar o grupo",
"Current password" : "Contrasinal actual",
"New password" : "Novo contrasinal",
"Change password" : "Cambiar o contrasinal",
@@ -885,6 +882,9 @@
"for WebAuthn passwordless login, and SFTP storage" : "para acceso sen contrasinal de WebAuthn, e almacenamento SFTP",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "Detectouse a versión «%s» de PostgreSQL. Suxírese PostgreSQL >=12 e <=16 para un mellor rendemento, estabilidade e funcionalidade con esta versión de Nextcloud.",
"Set default expiration date for shares" : "Definir a data de caducidade predeterminada das comparticións",
+ "Failed to remove group \"{group}\"" : "Produciuse un fallo ao retirar o grupo «{group}»",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Está a piques de retirar o grupo «{group}». As contas NON van ser eliminadas.",
+ "Remove group" : "Retirar o grupo",
"Your biography" : "A súa biografía",
"You are using <strong>{usage}</strong>" : "Está a usar <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Está a usar <strong>{usage}</strong> de <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/he.js b/apps/settings/l10n/he.js
index cab93cff966..f28226ffad1 100644
--- a/apps/settings/l10n/he.js
+++ b/apps/settings/l10n/he.js
@@ -212,7 +212,6 @@ OC.L10N.register(
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "תמיד טוב ליצור גיבוי קבוע למידע , במקרה של הצפנה יש לוודא שגם מפתחות ההצפנה מגובים עם המידע שלך.",
"This is the final warning: Do you really want to enable encryption?" : "זו הזהרה אחרונה: האם באמת ברצונך להפעיל הצפנה?",
"Submit" : "שליחה",
- "Remove group" : "הסרת קבוצה",
"Current password" : "סיסמא נוכחית",
"New password" : "סיסמא חדשה",
"Change password" : "שינוי סיסמא",
@@ -334,6 +333,7 @@ OC.L10N.register(
"Subscribe to our newsletter" : "הרשמה לרשימת הדיוור שלנו",
"Use a second factor besides your password to increase security for your account." : "ניתן להשתמש בגורם נוסף מלבד הססמה שלך כדי להגביר את אבטחת החשבון שלך.",
"If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "אם משמשים אותך יישומי צד־שלישי להתחברות אל Nextcloud, נא לוודא יצירת והגדרת ססמה ליישומון לכל אחד מהם בטרם הפעלת אימות דו־שלבי.",
- "Set default expiration date for shares" : "הגדרת תאריך תפוגה כבררת מחדל לשיתופים"
+ "Set default expiration date for shares" : "הגדרת תאריך תפוגה כבררת מחדל לשיתופים",
+ "Remove group" : "הסרת קבוצה"
},
"nplurals=3; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: 2;");
diff --git a/apps/settings/l10n/he.json b/apps/settings/l10n/he.json
index 57b3b3517d8..2b9fee74beb 100644
--- a/apps/settings/l10n/he.json
+++ b/apps/settings/l10n/he.json
@@ -210,7 +210,6 @@
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "תמיד טוב ליצור גיבוי קבוע למידע , במקרה של הצפנה יש לוודא שגם מפתחות ההצפנה מגובים עם המידע שלך.",
"This is the final warning: Do you really want to enable encryption?" : "זו הזהרה אחרונה: האם באמת ברצונך להפעיל הצפנה?",
"Submit" : "שליחה",
- "Remove group" : "הסרת קבוצה",
"Current password" : "סיסמא נוכחית",
"New password" : "סיסמא חדשה",
"Change password" : "שינוי סיסמא",
@@ -332,6 +331,7 @@
"Subscribe to our newsletter" : "הרשמה לרשימת הדיוור שלנו",
"Use a second factor besides your password to increase security for your account." : "ניתן להשתמש בגורם נוסף מלבד הססמה שלך כדי להגביר את אבטחת החשבון שלך.",
"If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "אם משמשים אותך יישומי צד־שלישי להתחברות אל Nextcloud, נא לוודא יצירת והגדרת ססמה ליישומון לכל אחד מהם בטרם הפעלת אימות דו־שלבי.",
- "Set default expiration date for shares" : "הגדרת תאריך תפוגה כבררת מחדל לשיתופים"
+ "Set default expiration date for shares" : "הגדרת תאריך תפוגה כבררת מחדל לשיתופים",
+ "Remove group" : "הסרת קבוצה"
},"pluralForm" :"nplurals=3; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: 2;"
} \ No newline at end of file
diff --git a/apps/settings/l10n/hr.js b/apps/settings/l10n/hr.js
index 1ff23c276df..4aad392de2e 100644
--- a/apps/settings/l10n/hr.js
+++ b/apps/settings/l10n/hr.js
@@ -228,7 +228,6 @@ OC.L10N.register(
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Uvijek je dobra ideja redovito izrađivati sigurnosne kopije podataka; ako upotrebljavate šifriranje, obavezno sigurnosno kopirajte ključeve za šifriranje zajedno sa svojim podacima.",
"This is the final warning: Do you really want to enable encryption?" : "Ovo je posljednje upozorenje: želite li zaista omogućiti šifriranje?",
"Submit" : "Šalji",
- "Remove group" : "Ukloni grupu",
"Current password" : "Trenutna zaporka",
"New password" : "Nova zaporka",
"Change password" : "Promijeni zaporku",
@@ -384,6 +383,7 @@ OC.L10N.register(
"Use a second factor besides your password to increase security for your account." : "Koristite se i drugim faktorom pored zaporke kako biste povećali sigurnost svog računa.",
"If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Ako se za povezivanje s Nextcloudom koristite aplikacijama treće strane, stvorite i konfigurirajte lozinku za svaku aplikaciju prije omogućavanja drugog faktora za provođenje autentifikacije.",
"Set default expiration date for shares" : "Postavi zadani datum isteka dijeljenja",
+ "Remove group" : "Ukloni grupu",
"Your biography" : "Vaša biografija"
},
"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;");
diff --git a/apps/settings/l10n/hr.json b/apps/settings/l10n/hr.json
index 991eea4471d..a0425cc0d13 100644
--- a/apps/settings/l10n/hr.json
+++ b/apps/settings/l10n/hr.json
@@ -226,7 +226,6 @@
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Uvijek je dobra ideja redovito izrađivati sigurnosne kopije podataka; ako upotrebljavate šifriranje, obavezno sigurnosno kopirajte ključeve za šifriranje zajedno sa svojim podacima.",
"This is the final warning: Do you really want to enable encryption?" : "Ovo je posljednje upozorenje: želite li zaista omogućiti šifriranje?",
"Submit" : "Šalji",
- "Remove group" : "Ukloni grupu",
"Current password" : "Trenutna zaporka",
"New password" : "Nova zaporka",
"Change password" : "Promijeni zaporku",
@@ -382,6 +381,7 @@
"Use a second factor besides your password to increase security for your account." : "Koristite se i drugim faktorom pored zaporke kako biste povećali sigurnost svog računa.",
"If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Ako se za povezivanje s Nextcloudom koristite aplikacijama treće strane, stvorite i konfigurirajte lozinku za svaku aplikaciju prije omogućavanja drugog faktora za provođenje autentifikacije.",
"Set default expiration date for shares" : "Postavi zadani datum isteka dijeljenja",
+ "Remove group" : "Ukloni grupu",
"Your biography" : "Vaša biografija"
},"pluralForm" :"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/settings/l10n/hu.js b/apps/settings/l10n/hu.js
index cd6075991c8..795100b6626 100644
--- a/apps/settings/l10n/hu.js
+++ b/apps/settings/l10n/hu.js
@@ -399,11 +399,9 @@ OC.L10N.register(
"Be aware that encryption always increases the file size." : "Ügyeljen arra, hogy a titkosítás mindig megnöveli a fájlok méretét.",
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Mindig jó ötlet rendszeres biztonsági mentést készíteni az adatokról. Titkosítás esetén győződjön meg arról, hogy a titkosítási kulcsokról is készít biztonsági mentést.",
"This is the final warning: Do you really want to enable encryption?" : "Ez az utolsó figyelmeztetés: Biztos, hogy engedélyezi a titkosítást?",
- "Failed to remove group \"{group}\"" : "Nem sikerült a(z) „{group}” csoport törlése",
"Please confirm the group removal" : "Erősítse meg a csoport eltávolítását",
"Submit" : "Beküldés",
"Rename group" : "Csoport átnevezése",
- "Remove group" : "Csoport eltávolítása",
"Current password" : "Jelenlegi jelszó",
"New password" : "Új jelszó",
"Change password" : "Jelszó megváltoztatása",
@@ -652,6 +650,8 @@ OC.L10N.register(
"Logged in account must be a subadmin" : "A belépett felhasználónak al-adminnak kell lennie",
"File locking" : "Fájlzárolás",
"Set default expiration date for shares" : "A megosztások alapértelmezett lejárati idejének beállítása",
+ "Failed to remove group \"{group}\"" : "Nem sikerült a(z) „{group}” csoport törlése",
+ "Remove group" : "Csoport eltávolítása",
"Your biography" : "Az Ön életrajza",
"You are using <strong>{usage}</strong>" : "Ezt használja: <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Jelenleg <strong>{usage}</strong>-ot használ ennyiből: <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/hu.json b/apps/settings/l10n/hu.json
index e49a52fea27..45f09c8d96b 100644
--- a/apps/settings/l10n/hu.json
+++ b/apps/settings/l10n/hu.json
@@ -397,11 +397,9 @@
"Be aware that encryption always increases the file size." : "Ügyeljen arra, hogy a titkosítás mindig megnöveli a fájlok méretét.",
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Mindig jó ötlet rendszeres biztonsági mentést készíteni az adatokról. Titkosítás esetén győződjön meg arról, hogy a titkosítási kulcsokról is készít biztonsági mentést.",
"This is the final warning: Do you really want to enable encryption?" : "Ez az utolsó figyelmeztetés: Biztos, hogy engedélyezi a titkosítást?",
- "Failed to remove group \"{group}\"" : "Nem sikerült a(z) „{group}” csoport törlése",
"Please confirm the group removal" : "Erősítse meg a csoport eltávolítását",
"Submit" : "Beküldés",
"Rename group" : "Csoport átnevezése",
- "Remove group" : "Csoport eltávolítása",
"Current password" : "Jelenlegi jelszó",
"New password" : "Új jelszó",
"Change password" : "Jelszó megváltoztatása",
@@ -650,6 +648,8 @@
"Logged in account must be a subadmin" : "A belépett felhasználónak al-adminnak kell lennie",
"File locking" : "Fájlzárolás",
"Set default expiration date for shares" : "A megosztások alapértelmezett lejárati idejének beállítása",
+ "Failed to remove group \"{group}\"" : "Nem sikerült a(z) „{group}” csoport törlése",
+ "Remove group" : "Csoport eltávolítása",
"Your biography" : "Az Ön életrajza",
"You are using <strong>{usage}</strong>" : "Ezt használja: <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Jelenleg <strong>{usage}</strong>-ot használ ennyiből: <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/id.js b/apps/settings/l10n/id.js
index 2ad64343c52..e560dbab756 100644
--- a/apps/settings/l10n/id.js
+++ b/apps/settings/l10n/id.js
@@ -214,7 +214,6 @@ OC.L10N.register(
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Alangkah baiknya untuk membuat cadangan data secara rutin, dalam kasus enkripsi, pastikan untuk mencadangkan kunci enkripsi bersama dengan data Anda.",
"This is the final warning: Do you really want to enable encryption?" : "Ini adalah peringatan terakhir: Apakah Anda yakin ingin mengaktifkan enkripsi?",
"Rename group" : "Ganti nama grup",
- "Remove group" : "Hapus grup",
"Current password" : "Kata sandi saat ini",
"New password" : "Kata sandi baru",
"Change password" : "Ubah kata sandi",
@@ -323,6 +322,7 @@ OC.L10N.register(
"Check out our blog" : "Cek blog kami",
"Subscribe to our newsletter" : "Berlangganan surat berita kami",
"This community release of Nextcloud is unsupported and instant notifications are unavailable." : "Rilis komunitas Nextcloud ini tidak didukung dan pemberitahuan instan tidak tersedia.",
+ "Remove group" : "Hapus grup",
"Your biography" : "Biografi Anda"
},
"nplurals=1; plural=0;");
diff --git a/apps/settings/l10n/id.json b/apps/settings/l10n/id.json
index a510d35b913..ea747feb75b 100644
--- a/apps/settings/l10n/id.json
+++ b/apps/settings/l10n/id.json
@@ -212,7 +212,6 @@
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Alangkah baiknya untuk membuat cadangan data secara rutin, dalam kasus enkripsi, pastikan untuk mencadangkan kunci enkripsi bersama dengan data Anda.",
"This is the final warning: Do you really want to enable encryption?" : "Ini adalah peringatan terakhir: Apakah Anda yakin ingin mengaktifkan enkripsi?",
"Rename group" : "Ganti nama grup",
- "Remove group" : "Hapus grup",
"Current password" : "Kata sandi saat ini",
"New password" : "Kata sandi baru",
"Change password" : "Ubah kata sandi",
@@ -321,6 +320,7 @@
"Check out our blog" : "Cek blog kami",
"Subscribe to our newsletter" : "Berlangganan surat berita kami",
"This community release of Nextcloud is unsupported and instant notifications are unavailable." : "Rilis komunitas Nextcloud ini tidak didukung dan pemberitahuan instan tidak tersedia.",
+ "Remove group" : "Hapus grup",
"Your biography" : "Biografi Anda"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/settings/l10n/is.js b/apps/settings/l10n/is.js
index e8350dc7362..dd496d7b6e4 100644
--- a/apps/settings/l10n/is.js
+++ b/apps/settings/l10n/is.js
@@ -414,12 +414,9 @@ OC.L10N.register(
"Be aware that encryption always increases the file size." : "Hafðu í huga að dulritun eykur alltaf skráastærð.",
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Það er góður siður að taka regluleg öryggisafrit af gögnunum þínum; ef um dulrituð gögn er að ræða, gakktu úr skugga um að einnig sé tekið öryggisafrit af dulritunarlyklum ásamt gögnunum.",
"This is the final warning: Do you really want to enable encryption?" : "Þetta er lokaaðvörun: Viltu örugglega virkja dulritun?",
- "Failed to remove group \"{group}\"" : "Mistókst að fjarlægja hópinn \"{group}\"",
"Please confirm the group removal" : "Staðfestu fjarlægingu hópsins",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Þú er í þann mund að fara að fjarlægja hópinn \"{group}\". Notendaaðgöngunum verður EKKI eytt.",
"Submit" : "Senda inn",
"Rename group" : "Endurnefna hóp",
- "Remove group" : "Fjarlægja hóp",
"Current password" : "Núverandi lykilorð",
"New password" : "Nýtt lykilorð",
"Change password" : "Breyta lykilorði",
@@ -701,6 +698,9 @@ OC.L10N.register(
"Transactional file locking is disabled, this might lead to issues with race conditions. Enable \"filelocking.enabled\" in config.php to avoid these problems." : "Færslulæsing skráa (transactional file locking) er óvirk, þetta gæti leitt til vandamála út frá forgangsskilyrðum (race conditions). Virkjaðu 'filelocking.enabled' í config.php til að forðast slík vandamál.",
"The PHP memory limit is below the recommended value of %s." : "Minnismörk PHP eru lægri en gildið sem mælt er með; %s.",
"Set default expiration date for shares" : "Setja sjálfgefinn gildistíma fyrir sameignir",
+ "Failed to remove group \"{group}\"" : "Mistókst að fjarlægja hópinn \"{group}\"",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Þú er í þann mund að fara að fjarlægja hópinn \"{group}\". Notendaaðgöngunum verður EKKI eytt.",
+ "Remove group" : "Fjarlægja hóp",
"Your biography" : "Æviágrip þitt",
"You are using <strong>{usage}</strong>" : "Þú ert að nota <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Þú ert að nota <strong>{usage}</strong> af <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/is.json b/apps/settings/l10n/is.json
index 821abd30bca..0801cf4fcee 100644
--- a/apps/settings/l10n/is.json
+++ b/apps/settings/l10n/is.json
@@ -412,12 +412,9 @@
"Be aware that encryption always increases the file size." : "Hafðu í huga að dulritun eykur alltaf skráastærð.",
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Það er góður siður að taka regluleg öryggisafrit af gögnunum þínum; ef um dulrituð gögn er að ræða, gakktu úr skugga um að einnig sé tekið öryggisafrit af dulritunarlyklum ásamt gögnunum.",
"This is the final warning: Do you really want to enable encryption?" : "Þetta er lokaaðvörun: Viltu örugglega virkja dulritun?",
- "Failed to remove group \"{group}\"" : "Mistókst að fjarlægja hópinn \"{group}\"",
"Please confirm the group removal" : "Staðfestu fjarlægingu hópsins",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Þú er í þann mund að fara að fjarlægja hópinn \"{group}\". Notendaaðgöngunum verður EKKI eytt.",
"Submit" : "Senda inn",
"Rename group" : "Endurnefna hóp",
- "Remove group" : "Fjarlægja hóp",
"Current password" : "Núverandi lykilorð",
"New password" : "Nýtt lykilorð",
"Change password" : "Breyta lykilorði",
@@ -699,6 +696,9 @@
"Transactional file locking is disabled, this might lead to issues with race conditions. Enable \"filelocking.enabled\" in config.php to avoid these problems." : "Færslulæsing skráa (transactional file locking) er óvirk, þetta gæti leitt til vandamála út frá forgangsskilyrðum (race conditions). Virkjaðu 'filelocking.enabled' í config.php til að forðast slík vandamál.",
"The PHP memory limit is below the recommended value of %s." : "Minnismörk PHP eru lægri en gildið sem mælt er með; %s.",
"Set default expiration date for shares" : "Setja sjálfgefinn gildistíma fyrir sameignir",
+ "Failed to remove group \"{group}\"" : "Mistókst að fjarlægja hópinn \"{group}\"",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Þú er í þann mund að fara að fjarlægja hópinn \"{group}\". Notendaaðgöngunum verður EKKI eytt.",
+ "Remove group" : "Fjarlægja hóp",
"Your biography" : "Æviágrip þitt",
"You are using <strong>{usage}</strong>" : "Þú ert að nota <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Þú ert að nota <strong>{usage}</strong> af <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/it.js b/apps/settings/l10n/it.js
index 6e01e49e907..4ce7be436e5 100644
--- a/apps/settings/l10n/it.js
+++ b/apps/settings/l10n/it.js
@@ -461,11 +461,9 @@ OC.L10N.register(
"Be aware that encryption always increases the file size." : "Considera che la cifratura incrementa sempre la dimensione dei file.",
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Ti consigliamo di creare copie di sicurezza dei tuoi dati con regolarità, in caso di utilizzo della cifratura, assicurati di creare una copia delle chiavi di cifratura insieme ai tuoi dati.",
"This is the final warning: Do you really want to enable encryption?" : "Questo è l'ultimo avviso: vuoi davvero abilitare la cifratura?",
- "Failed to remove group \"{group}\"" : "Rimozione del gruppo \"{group}\" fallita",
"Please confirm the group removal" : "Conferma la rimozione del gruppo",
"Submit" : "Invia",
"Rename group" : "Rinomina gruppo",
- "Remove group" : "Rimuovi gruppo",
"Current password" : "Password attuale",
"New password" : "Nuova password",
"Change password" : "Modifica password",
@@ -695,6 +693,8 @@ OC.L10N.register(
"Transactional file locking is disabled, this might lead to issues with race conditions. Enable \"filelocking.enabled\" in config.php to avoid these problems." : "Il blocco di file transazionale è disattivato, ciò potrebbe comportare problemi di race condition. Attiva \"filelocking.enabled\" nel config.php per evitare questi problemi.",
"The PHP memory limit is below the recommended value of %s." : "Il limite di memoria di PHP è inferiore al valore consigliato di %s.",
"Set default expiration date for shares" : "Imposta data di scadenza predefinita per le condivisioni",
+ "Failed to remove group \"{group}\"" : "Rimozione del gruppo \"{group}\" fallita",
+ "Remove group" : "Rimuovi gruppo",
"Your biography" : "La tua biografia",
"You are using <strong>{usage}</strong>" : "Stai utilizzando <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Stai utilizzando <strong>{usage}</strong> di <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/it.json b/apps/settings/l10n/it.json
index b9396695e79..ae9949f2948 100644
--- a/apps/settings/l10n/it.json
+++ b/apps/settings/l10n/it.json
@@ -459,11 +459,9 @@
"Be aware that encryption always increases the file size." : "Considera che la cifratura incrementa sempre la dimensione dei file.",
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Ti consigliamo di creare copie di sicurezza dei tuoi dati con regolarità, in caso di utilizzo della cifratura, assicurati di creare una copia delle chiavi di cifratura insieme ai tuoi dati.",
"This is the final warning: Do you really want to enable encryption?" : "Questo è l'ultimo avviso: vuoi davvero abilitare la cifratura?",
- "Failed to remove group \"{group}\"" : "Rimozione del gruppo \"{group}\" fallita",
"Please confirm the group removal" : "Conferma la rimozione del gruppo",
"Submit" : "Invia",
"Rename group" : "Rinomina gruppo",
- "Remove group" : "Rimuovi gruppo",
"Current password" : "Password attuale",
"New password" : "Nuova password",
"Change password" : "Modifica password",
@@ -693,6 +691,8 @@
"Transactional file locking is disabled, this might lead to issues with race conditions. Enable \"filelocking.enabled\" in config.php to avoid these problems." : "Il blocco di file transazionale è disattivato, ciò potrebbe comportare problemi di race condition. Attiva \"filelocking.enabled\" nel config.php per evitare questi problemi.",
"The PHP memory limit is below the recommended value of %s." : "Il limite di memoria di PHP è inferiore al valore consigliato di %s.",
"Set default expiration date for shares" : "Imposta data di scadenza predefinita per le condivisioni",
+ "Failed to remove group \"{group}\"" : "Rimozione del gruppo \"{group}\" fallita",
+ "Remove group" : "Rimuovi gruppo",
"Your biography" : "La tua biografia",
"You are using <strong>{usage}</strong>" : "Stai utilizzando <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Stai utilizzando <strong>{usage}</strong> di <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/ja.js b/apps/settings/l10n/ja.js
index f66ce707717..ca76e256b47 100644
--- a/apps/settings/l10n/ja.js
+++ b/apps/settings/l10n/ja.js
@@ -315,6 +315,7 @@ OC.L10N.register(
"Architecture" : "アーキテクチャ",
"64-bit" : "64ビット",
"It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit!" : "このシステムは32ビット版のPHPで動いているようです。Nextcloudを正常に動かすには64ビット版が必要です。OSとPHPを64ビット版にアップグレードしてください!",
+ "Task Processing pickup speed" : "タスク処理のピックアップ速度",
"Temporary space available" : "テンポラリ領域が利用可能です",
"Error while checking the temporary PHP path - it was not properly set to a directory. Returned value: %s" : "PHP のテンポラリパスのチェック中にエラーが発生しました - ディレクトリが正しく設定されていませんでした。返された値:%s",
"The PHP function \"disk_free_space\" is disabled, which prevents the check for enough space in the temporary directories." : "PHPの関数 \"disk_free_space\"が無効になっており、一時的なディレクトリに十分な空き容量があるかどうかをチェックできません。",
@@ -583,12 +584,9 @@ OC.L10N.register(
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "暗号化した場合には必ず、あなたのデータと共に暗号化キーをバックアップすることを確認し、定期的にデータをバックアップを作成することをお勧めします。",
"Refer to the admin documentation on how to manually also encrypt existing files." : "既存のファイルを手動で暗号化する方法については、管理者のドキュメントを参照してください。",
"This is the final warning: Do you really want to enable encryption?" : "これが最後の警告です:本当に暗号化を有効にしますか?",
- "Failed to remove group \"{group}\"" : "グループ \"{group}\" の削除に失敗しました",
"Please confirm the group removal" : "グループの削除を確認してください",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "グループ \"{group}\" を削除しようとしています。アカウントは削除されません。",
"Submit" : "送信",
"Rename group" : "グループの名称変更",
- "Remove group" : "グループを削除",
"Current password" : "現在のパスワード",
"New password" : "新しいパスワード",
"Change password" : "パスワードを変更",
@@ -896,6 +894,9 @@ OC.L10N.register(
"for WebAuthn passwordless login, and SFTP storage" : "WebAuthn パスワードレスログインと、SFTPストレージ用",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "PostgreSQLのバージョン \"%s\"が検出されました。 このバージョンのNextcloudで最高のパフォーマンス、安定性、機能性を得るには、PostgreSQL >=12および<=16を推奨します。",
"Set default expiration date for shares" : "共有のデフォルトの有効期限を設定する",
+ "Failed to remove group \"{group}\"" : "グループ \"{group}\" の削除に失敗しました",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "グループ \"{group}\" を削除しようとしています。アカウントは削除されません。",
+ "Remove group" : "グループを削除",
"Your biography" : "あなたのプロファイル",
"You are using <strong>{usage}</strong>" : "<strong>{usage}</strong>使用中です",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "<strong>{totalSpace}</strong> (<strong>{usageRelative}</strong>) のうち<strong>{usage}</strong>を使用しています",
diff --git a/apps/settings/l10n/ja.json b/apps/settings/l10n/ja.json
index 89e9a12ea87..de134a602e1 100644
--- a/apps/settings/l10n/ja.json
+++ b/apps/settings/l10n/ja.json
@@ -313,6 +313,7 @@
"Architecture" : "アーキテクチャ",
"64-bit" : "64ビット",
"It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit!" : "このシステムは32ビット版のPHPで動いているようです。Nextcloudを正常に動かすには64ビット版が必要です。OSとPHPを64ビット版にアップグレードしてください!",
+ "Task Processing pickup speed" : "タスク処理のピックアップ速度",
"Temporary space available" : "テンポラリ領域が利用可能です",
"Error while checking the temporary PHP path - it was not properly set to a directory. Returned value: %s" : "PHP のテンポラリパスのチェック中にエラーが発生しました - ディレクトリが正しく設定されていませんでした。返された値:%s",
"The PHP function \"disk_free_space\" is disabled, which prevents the check for enough space in the temporary directories." : "PHPの関数 \"disk_free_space\"が無効になっており、一時的なディレクトリに十分な空き容量があるかどうかをチェックできません。",
@@ -581,12 +582,9 @@
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "暗号化した場合には必ず、あなたのデータと共に暗号化キーをバックアップすることを確認し、定期的にデータをバックアップを作成することをお勧めします。",
"Refer to the admin documentation on how to manually also encrypt existing files." : "既存のファイルを手動で暗号化する方法については、管理者のドキュメントを参照してください。",
"This is the final warning: Do you really want to enable encryption?" : "これが最後の警告です:本当に暗号化を有効にしますか?",
- "Failed to remove group \"{group}\"" : "グループ \"{group}\" の削除に失敗しました",
"Please confirm the group removal" : "グループの削除を確認してください",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "グループ \"{group}\" を削除しようとしています。アカウントは削除されません。",
"Submit" : "送信",
"Rename group" : "グループの名称変更",
- "Remove group" : "グループを削除",
"Current password" : "現在のパスワード",
"New password" : "新しいパスワード",
"Change password" : "パスワードを変更",
@@ -894,6 +892,9 @@
"for WebAuthn passwordless login, and SFTP storage" : "WebAuthn パスワードレスログインと、SFTPストレージ用",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "PostgreSQLのバージョン \"%s\"が検出されました。 このバージョンのNextcloudで最高のパフォーマンス、安定性、機能性を得るには、PostgreSQL >=12および<=16を推奨します。",
"Set default expiration date for shares" : "共有のデフォルトの有効期限を設定する",
+ "Failed to remove group \"{group}\"" : "グループ \"{group}\" の削除に失敗しました",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "グループ \"{group}\" を削除しようとしています。アカウントは削除されません。",
+ "Remove group" : "グループを削除",
"Your biography" : "あなたのプロファイル",
"You are using <strong>{usage}</strong>" : "<strong>{usage}</strong>使用中です",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "<strong>{totalSpace}</strong> (<strong>{usageRelative}</strong>) のうち<strong>{usage}</strong>を使用しています",
diff --git a/apps/settings/l10n/ka.js b/apps/settings/l10n/ka.js
index c0be4c87b04..15f0258a475 100644
--- a/apps/settings/l10n/ka.js
+++ b/apps/settings/l10n/ka.js
@@ -350,11 +350,9 @@ OC.L10N.register(
"Be aware that encryption always increases the file size." : "Be aware that encryption always increases the file size.",
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data.",
"This is the final warning: Do you really want to enable encryption?" : "This is the final warning: Do you really want to enable encryption?",
- "Failed to remove group \"{group}\"" : "Failed to remove group \"{group}\"",
"Please confirm the group removal" : "Please confirm the group removal",
"Submit" : "Submit",
"Rename group" : "Rename group",
- "Remove group" : "Remove group",
"Current password" : "Current password",
"New password" : "New password",
"Change password" : "Change password",
@@ -569,6 +567,8 @@ OC.L10N.register(
"Transactional file locking is disabled, this might lead to issues with race conditions. Enable \"filelocking.enabled\" in config.php to avoid these problems." : "Transactional file locking is disabled, this might lead to issues with race conditions. Enable \"filelocking.enabled\" in config.php to avoid these problems.",
"The PHP memory limit is below the recommended value of %s." : "The PHP memory limit is below the recommended value of %s.",
"Set default expiration date for shares" : "Set default expiration date for shares",
+ "Failed to remove group \"{group}\"" : "Failed to remove group \"{group}\"",
+ "Remove group" : "Remove group",
"Your biography" : "Your biography",
"You are using <strong>{usage}</strong>" : "You are using <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/ka.json b/apps/settings/l10n/ka.json
index b21e1679a3c..c3a33e200c7 100644
--- a/apps/settings/l10n/ka.json
+++ b/apps/settings/l10n/ka.json
@@ -348,11 +348,9 @@
"Be aware that encryption always increases the file size." : "Be aware that encryption always increases the file size.",
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data.",
"This is the final warning: Do you really want to enable encryption?" : "This is the final warning: Do you really want to enable encryption?",
- "Failed to remove group \"{group}\"" : "Failed to remove group \"{group}\"",
"Please confirm the group removal" : "Please confirm the group removal",
"Submit" : "Submit",
"Rename group" : "Rename group",
- "Remove group" : "Remove group",
"Current password" : "Current password",
"New password" : "New password",
"Change password" : "Change password",
@@ -567,6 +565,8 @@
"Transactional file locking is disabled, this might lead to issues with race conditions. Enable \"filelocking.enabled\" in config.php to avoid these problems." : "Transactional file locking is disabled, this might lead to issues with race conditions. Enable \"filelocking.enabled\" in config.php to avoid these problems.",
"The PHP memory limit is below the recommended value of %s." : "The PHP memory limit is below the recommended value of %s.",
"Set default expiration date for shares" : "Set default expiration date for shares",
+ "Failed to remove group \"{group}\"" : "Failed to remove group \"{group}\"",
+ "Remove group" : "Remove group",
"Your biography" : "Your biography",
"You are using <strong>{usage}</strong>" : "You are using <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/ko.js b/apps/settings/l10n/ko.js
index 0d43d833d85..248f352648a 100644
--- a/apps/settings/l10n/ko.js
+++ b/apps/settings/l10n/ko.js
@@ -482,12 +482,9 @@ OC.L10N.register(
"Be aware that encryption always increases the file size." : "암호화된 파일의 크기는 항상 커집니다.",
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "데이터를 주기적으로 백업하는 것을 추천하며, 암호화를 사용하고 있다면 데이터와 더불어 암호화 키도 백업하십시오.",
"This is the final warning: Do you really want to enable encryption?" : "마지막 경고입니다. 암호화를 활성화하시겠습니까?",
- "Failed to remove group \"{group}\"" : "그룹 \"{group}\"을(를) 삭제할 수 없음",
"Please confirm the group removal" : "그룹 지우기를 확인해 주십시오",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "그룹 \"{group}\"을(를) 지우려고 합니다. 그룹의 계정은 삭제되지 않습니다.",
"Submit" : "제출",
"Rename group" : "그룹 이름 바꾸기",
- "Remove group" : "그룹 지우기",
"Current password" : "현재 암호",
"New password" : "새 암호",
"Change password" : "암호 변경",
@@ -733,6 +730,9 @@ OC.L10N.register(
"for WebAuthn passwordless login" : ": WebAuthn 무암호 인증을 위해 사용",
"for WebAuthn passwordless login, and SFTP storage" : ": WebAuthn 무암호 인증 및 SFTP 저장소를 위해 사용",
"Set default expiration date for shares" : "공유에 대한 기본 만료 날짜 설정",
+ "Failed to remove group \"{group}\"" : "그룹 \"{group}\"을(를) 삭제할 수 없음",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "그룹 \"{group}\"을(를) 지우려고 합니다. 그룹의 계정은 삭제되지 않습니다.",
+ "Remove group" : "그룹 지우기",
"Your biography" : "내 소개문구",
"You are using <strong>{usage}</strong>" : "<strong>{usage}</strong>를 사용하고 있습니다.",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "전체 <strong>{totalSpace}</strong> 중 <strong>{usage}</strong>(<strong>{usageRelative}%</strong>)를 사용하고 있습니다."
diff --git a/apps/settings/l10n/ko.json b/apps/settings/l10n/ko.json
index 7afb74e8f0e..eea08b5745f 100644
--- a/apps/settings/l10n/ko.json
+++ b/apps/settings/l10n/ko.json
@@ -480,12 +480,9 @@
"Be aware that encryption always increases the file size." : "암호화된 파일의 크기는 항상 커집니다.",
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "데이터를 주기적으로 백업하는 것을 추천하며, 암호화를 사용하고 있다면 데이터와 더불어 암호화 키도 백업하십시오.",
"This is the final warning: Do you really want to enable encryption?" : "마지막 경고입니다. 암호화를 활성화하시겠습니까?",
- "Failed to remove group \"{group}\"" : "그룹 \"{group}\"을(를) 삭제할 수 없음",
"Please confirm the group removal" : "그룹 지우기를 확인해 주십시오",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "그룹 \"{group}\"을(를) 지우려고 합니다. 그룹의 계정은 삭제되지 않습니다.",
"Submit" : "제출",
"Rename group" : "그룹 이름 바꾸기",
- "Remove group" : "그룹 지우기",
"Current password" : "현재 암호",
"New password" : "새 암호",
"Change password" : "암호 변경",
@@ -731,6 +728,9 @@
"for WebAuthn passwordless login" : ": WebAuthn 무암호 인증을 위해 사용",
"for WebAuthn passwordless login, and SFTP storage" : ": WebAuthn 무암호 인증 및 SFTP 저장소를 위해 사용",
"Set default expiration date for shares" : "공유에 대한 기본 만료 날짜 설정",
+ "Failed to remove group \"{group}\"" : "그룹 \"{group}\"을(를) 삭제할 수 없음",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "그룹 \"{group}\"을(를) 지우려고 합니다. 그룹의 계정은 삭제되지 않습니다.",
+ "Remove group" : "그룹 지우기",
"Your biography" : "내 소개문구",
"You are using <strong>{usage}</strong>" : "<strong>{usage}</strong>를 사용하고 있습니다.",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "전체 <strong>{totalSpace}</strong> 중 <strong>{usage}</strong>(<strong>{usageRelative}%</strong>)를 사용하고 있습니다."
diff --git a/apps/settings/l10n/lt_LT.js b/apps/settings/l10n/lt_LT.js
index 585fdfb4690..d8be45515be 100644
--- a/apps/settings/l10n/lt_LT.js
+++ b/apps/settings/l10n/lt_LT.js
@@ -270,12 +270,9 @@ OC.L10N.register(
"Be aware that encryption always increases the file size." : "Turėkite omenyje, kad šifravimas visada padidina failų dydį.",
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Visada yra gerai daryti reguliarias atsargines duomenų kopijas. Esant šifravimui, nepamirškite kartu su savo duomenų atsargine kopija, pasidaryti ir šifravimo raktų atsarginę kopiją.",
"This is the final warning: Do you really want to enable encryption?" : "Tai yra paskutinis įspėjimas: Ar tikrai norite įjungti šifravimą?",
- "Failed to remove group \"{group}\"" : "Nepavyko pašalinti grupės „{group}“",
"Please confirm the group removal" : "Patvirtinkite grupės pašalinimą",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Jūs ketinate pašalinti grupę „{group}“. Paskyros NEBUS ištrintos.",
"Submit" : "Pateikti",
"Rename group" : "Pervadinti grupę",
- "Remove group" : "Šalinti grupę",
"Current password" : "Dabartinis slaptažodis",
"New password" : "Naujas slaptažodis",
"Change password" : "Pakeisti slaptažodį",
@@ -478,6 +475,9 @@ OC.L10N.register(
"Subscribe to our newsletter" : "Prenumeruokite mūsų naujienlaiškį",
"Use a second factor besides your password to increase security for your account." : "Be savo slaptažodžio naudokite ir antrąjį faktorių, kad padidintumėte savo paskyros saugumą.",
"Set default expiration date for shares" : "Nustatyti viešiniams numatytąją galiojimo pabaigos datą",
+ "Failed to remove group \"{group}\"" : "Nepavyko pašalinti grupės „{group}“",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Jūs ketinate pašalinti grupę „{group}“. Paskyros NEBUS ištrintos.",
+ "Remove group" : "Šalinti grupę",
"Your biography" : "Jūsų biografija",
"You are using <strong>{usage}</strong>" : "Jūs naudojate <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Jūs naudojate <strong>{usage}</strong> iš <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/lt_LT.json b/apps/settings/l10n/lt_LT.json
index 54d5227731b..c3b15550f8a 100644
--- a/apps/settings/l10n/lt_LT.json
+++ b/apps/settings/l10n/lt_LT.json
@@ -268,12 +268,9 @@
"Be aware that encryption always increases the file size." : "Turėkite omenyje, kad šifravimas visada padidina failų dydį.",
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Visada yra gerai daryti reguliarias atsargines duomenų kopijas. Esant šifravimui, nepamirškite kartu su savo duomenų atsargine kopija, pasidaryti ir šifravimo raktų atsarginę kopiją.",
"This is the final warning: Do you really want to enable encryption?" : "Tai yra paskutinis įspėjimas: Ar tikrai norite įjungti šifravimą?",
- "Failed to remove group \"{group}\"" : "Nepavyko pašalinti grupės „{group}“",
"Please confirm the group removal" : "Patvirtinkite grupės pašalinimą",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Jūs ketinate pašalinti grupę „{group}“. Paskyros NEBUS ištrintos.",
"Submit" : "Pateikti",
"Rename group" : "Pervadinti grupę",
- "Remove group" : "Šalinti grupę",
"Current password" : "Dabartinis slaptažodis",
"New password" : "Naujas slaptažodis",
"Change password" : "Pakeisti slaptažodį",
@@ -476,6 +473,9 @@
"Subscribe to our newsletter" : "Prenumeruokite mūsų naujienlaiškį",
"Use a second factor besides your password to increase security for your account." : "Be savo slaptažodžio naudokite ir antrąjį faktorių, kad padidintumėte savo paskyros saugumą.",
"Set default expiration date for shares" : "Nustatyti viešiniams numatytąją galiojimo pabaigos datą",
+ "Failed to remove group \"{group}\"" : "Nepavyko pašalinti grupės „{group}“",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Jūs ketinate pašalinti grupę „{group}“. Paskyros NEBUS ištrintos.",
+ "Remove group" : "Šalinti grupę",
"Your biography" : "Jūsų biografija",
"You are using <strong>{usage}</strong>" : "Jūs naudojate <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Jūs naudojate <strong>{usage}</strong> iš <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/lv.js b/apps/settings/l10n/lv.js
index d69e5dc6a95..7c88dacbbb9 100644
--- a/apps/settings/l10n/lv.js
+++ b/apps/settings/l10n/lv.js
@@ -136,7 +136,6 @@ OC.L10N.register(
"This is the final warning: Do you really want to enable encryption?" : "Šis ir pēdējais brīdinājums: vai tiešām iespējot šifrēšanu?",
"Submit" : "Iesniegt",
"Rename group" : "Pārdēvēt kopu",
- "Remove group" : "Noņemt grupu",
"Current password" : "Pašreizējā parole",
"New password" : "Jaunā parole",
"Change password" : "Mainīt paroli",
@@ -225,6 +224,7 @@ OC.L10N.register(
"Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Izstrādātās {communityopen}Nextcloud kopiena {linkclose}, {githubopen} avota kods {linkclose} licencēts saskaņā ar {licenseopen}AGPL{linkclose}.",
"Use a second factor besides your password to increase security for your account." : "Vēl viena apliecināšanas līdzekļa izmantošana papildus parolei, lai palielinātu sava konta drošību.",
"If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Ja izmanto trešo pušu lietotnes, lai savienotos ar Nextcloud, lūgums ņemt vērā, ka pirms divpakāpju pieteikšanās iespējošanas katrai no tām ir nepieciešams izveidot un izmantot lietotnes paroli.",
+ "Remove group" : "Noņemt grupu",
"Your biography" : "Jūsu biogrāfija",
"You are using <strong>{usage}</strong>" : "Jūs izmantojat <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Jūs izmantojat <strong>{usage}</strong> no <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/lv.json b/apps/settings/l10n/lv.json
index bbee8b63232..956a7648b15 100644
--- a/apps/settings/l10n/lv.json
+++ b/apps/settings/l10n/lv.json
@@ -134,7 +134,6 @@
"This is the final warning: Do you really want to enable encryption?" : "Šis ir pēdējais brīdinājums: vai tiešām iespējot šifrēšanu?",
"Submit" : "Iesniegt",
"Rename group" : "Pārdēvēt kopu",
- "Remove group" : "Noņemt grupu",
"Current password" : "Pašreizējā parole",
"New password" : "Jaunā parole",
"Change password" : "Mainīt paroli",
@@ -223,6 +222,7 @@
"Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Izstrādātās {communityopen}Nextcloud kopiena {linkclose}, {githubopen} avota kods {linkclose} licencēts saskaņā ar {licenseopen}AGPL{linkclose}.",
"Use a second factor besides your password to increase security for your account." : "Vēl viena apliecināšanas līdzekļa izmantošana papildus parolei, lai palielinātu sava konta drošību.",
"If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Ja izmanto trešo pušu lietotnes, lai savienotos ar Nextcloud, lūgums ņemt vērā, ka pirms divpakāpju pieteikšanās iespējošanas katrai no tām ir nepieciešams izveidot un izmantot lietotnes paroli.",
+ "Remove group" : "Noņemt grupu",
"Your biography" : "Jūsu biogrāfija",
"You are using <strong>{usage}</strong>" : "Jūs izmantojat <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Jūs izmantojat <strong>{usage}</strong> no <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/mk.js b/apps/settings/l10n/mk.js
index aa309864574..46be5124340 100644
--- a/apps/settings/l10n/mk.js
+++ b/apps/settings/l10n/mk.js
@@ -257,7 +257,6 @@ OC.L10N.register(
"This is the final warning: Do you really want to enable encryption?" : "Ова е последно предупредување: Дали навистина сакате да овозможите енкрипција?",
"Submit" : "Испрати",
"Rename group" : "Преименувај група",
- "Remove group" : "Отстрани група",
"Current password" : "Моментална лозинка",
"New password" : "Нова лозинка",
"Change password" : "Промени лозинка",
@@ -458,6 +457,7 @@ OC.L10N.register(
"Use a second factor besides your password to increase security for your account." : "Користете втор фактор и покрај вашата лозинка за да ја зголемите безбедноста на вашата сметка.",
"If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Доколку користите друга апликација за поврзување на Nextcloud, осигурајте се дека имате креирано лозинка за секоја апликација пред да овозможите втор фактор.",
"Set default expiration date for shares" : "Постави основен рок на траење за споделувањата",
+ "Remove group" : "Отстрани група",
"Your biography" : "Ваша биографија",
"You are using <strong>{usage}</strong>" : "Користите <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Користите <strong>{usage}</strong> од <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/mk.json b/apps/settings/l10n/mk.json
index cce2ea14925..87220fe8137 100644
--- a/apps/settings/l10n/mk.json
+++ b/apps/settings/l10n/mk.json
@@ -255,7 +255,6 @@
"This is the final warning: Do you really want to enable encryption?" : "Ова е последно предупредување: Дали навистина сакате да овозможите енкрипција?",
"Submit" : "Испрати",
"Rename group" : "Преименувај група",
- "Remove group" : "Отстрани група",
"Current password" : "Моментална лозинка",
"New password" : "Нова лозинка",
"Change password" : "Промени лозинка",
@@ -456,6 +455,7 @@
"Use a second factor besides your password to increase security for your account." : "Користете втор фактор и покрај вашата лозинка за да ја зголемите безбедноста на вашата сметка.",
"If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Доколку користите друга апликација за поврзување на Nextcloud, осигурајте се дека имате креирано лозинка за секоја апликација пред да овозможите втор фактор.",
"Set default expiration date for shares" : "Постави основен рок на траење за споделувањата",
+ "Remove group" : "Отстрани група",
"Your biography" : "Ваша биографија",
"You are using <strong>{usage}</strong>" : "Користите <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Користите <strong>{usage}</strong> од <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/nb.js b/apps/settings/l10n/nb.js
index 1e37be5684a..eaf3ca4ea6f 100644
--- a/apps/settings/l10n/nb.js
+++ b/apps/settings/l10n/nb.js
@@ -525,12 +525,9 @@ OC.L10N.register(
"Be aware that encryption always increases the file size." : "Vær oppmerksom på at kryptering alltid øker filstørrelsen.",
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Det er alltid bra å ta regelmessig sikkerhetskopi av dataene dine. Pass på å ta kopi av krypteringsnøklene sammen med dataene når kryptering er i bruk.",
"This is the final warning: Do you really want to enable encryption?" : "Dette er siste advarsel: Vil du virkelig aktivere kryptering?",
- "Failed to remove group \"{group}\"" : "Fjerning av gruppe \"{group}\" feilet",
"Please confirm the group removal" : "Vennligst bekreft fjerning av gruppe",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Du er i ferd med å fjerne gruppen \"{group}\". Kontoene vil IKKE bli slettet.",
"Submit" : "Send inn",
"Rename group" : "Gi nytt navn til gruppen",
- "Remove group" : "Fjern gruppe",
"Current password" : "Nåværende passord",
"New password" : "Nytt passord",
"Change password" : "Endre passord",
@@ -826,6 +823,9 @@ OC.L10N.register(
"for WebAuthn passwordless login, and SFTP storage" : "for WebAuthn-passordfripålogging og SFTP-lagring",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "PostgreSQL-versjon \"%s\" oppdaget. PostgreSQL >=12 og <=16 foreslås for best ytelse, stabilitet og funksjonalitet med denne versjonen av Nextcloud.",
"Set default expiration date for shares" : "Angi standard utløpsdato for delinger",
+ "Failed to remove group \"{group}\"" : "Fjerning av gruppe \"{group}\" feilet",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Du er i ferd med å fjerne gruppen \"{group}\". Kontoene vil IKKE bli slettet.",
+ "Remove group" : "Fjern gruppe",
"Your biography" : "Din biografi",
"You are using <strong>{usage}</strong>" : "Du bruker <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Du bruker <strong>{usage}</strong> av <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/nb.json b/apps/settings/l10n/nb.json
index 25a29fda890..c8a2ed433ed 100644
--- a/apps/settings/l10n/nb.json
+++ b/apps/settings/l10n/nb.json
@@ -523,12 +523,9 @@
"Be aware that encryption always increases the file size." : "Vær oppmerksom på at kryptering alltid øker filstørrelsen.",
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Det er alltid bra å ta regelmessig sikkerhetskopi av dataene dine. Pass på å ta kopi av krypteringsnøklene sammen med dataene når kryptering er i bruk.",
"This is the final warning: Do you really want to enable encryption?" : "Dette er siste advarsel: Vil du virkelig aktivere kryptering?",
- "Failed to remove group \"{group}\"" : "Fjerning av gruppe \"{group}\" feilet",
"Please confirm the group removal" : "Vennligst bekreft fjerning av gruppe",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Du er i ferd med å fjerne gruppen \"{group}\". Kontoene vil IKKE bli slettet.",
"Submit" : "Send inn",
"Rename group" : "Gi nytt navn til gruppen",
- "Remove group" : "Fjern gruppe",
"Current password" : "Nåværende passord",
"New password" : "Nytt passord",
"Change password" : "Endre passord",
@@ -824,6 +821,9 @@
"for WebAuthn passwordless login, and SFTP storage" : "for WebAuthn-passordfripålogging og SFTP-lagring",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "PostgreSQL-versjon \"%s\" oppdaget. PostgreSQL >=12 og <=16 foreslås for best ytelse, stabilitet og funksjonalitet med denne versjonen av Nextcloud.",
"Set default expiration date for shares" : "Angi standard utløpsdato for delinger",
+ "Failed to remove group \"{group}\"" : "Fjerning av gruppe \"{group}\" feilet",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Du er i ferd med å fjerne gruppen \"{group}\". Kontoene vil IKKE bli slettet.",
+ "Remove group" : "Fjern gruppe",
"Your biography" : "Din biografi",
"You are using <strong>{usage}</strong>" : "Du bruker <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Du bruker <strong>{usage}</strong> av <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/nl.js b/apps/settings/l10n/nl.js
index ffbce1032ee..95ec2f2517b 100644
--- a/apps/settings/l10n/nl.js
+++ b/apps/settings/l10n/nl.js
@@ -366,7 +366,6 @@ OC.L10N.register(
"This is the final warning: Do you really want to enable encryption?" : "Dit is de laatste waarschuwing: Wil je versleuteling echt inschakelen?",
"Submit" : "Verwerken",
"Rename group" : "Hernoem groep",
- "Remove group" : "Groep verwijderen",
"Current password" : "Huidig wachtwoord",
"New password" : "Nieuw wachtwoord",
"Change password" : "Wijzig wachtwoord",
@@ -635,6 +634,7 @@ OC.L10N.register(
"If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Als u toepassingen van derden gebruikt om met Nextcloud te verbinden, zorg er dan voor om voor elke app een wachtwoord te maken en te configureren voordat \"tweede factor authenticatie\" wordt geactiveerd.",
"Logged in account must be a subadmin" : "Aangemeld account moet een subadmin zijn",
"Set default expiration date for shares" : "Instellen standaard vervaldatum voor deellinks",
+ "Remove group" : "Groep verwijderen",
"Your biography" : "Jouw biografie",
"You are using <strong>{usage}</strong>" : "Je gebruikt <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Je gebruikt <strong>{usage}</strong> van <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/nl.json b/apps/settings/l10n/nl.json
index ce6766ae8ac..2a13fa81c0f 100644
--- a/apps/settings/l10n/nl.json
+++ b/apps/settings/l10n/nl.json
@@ -364,7 +364,6 @@
"This is the final warning: Do you really want to enable encryption?" : "Dit is de laatste waarschuwing: Wil je versleuteling echt inschakelen?",
"Submit" : "Verwerken",
"Rename group" : "Hernoem groep",
- "Remove group" : "Groep verwijderen",
"Current password" : "Huidig wachtwoord",
"New password" : "Nieuw wachtwoord",
"Change password" : "Wijzig wachtwoord",
@@ -633,6 +632,7 @@
"If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Als u toepassingen van derden gebruikt om met Nextcloud te verbinden, zorg er dan voor om voor elke app een wachtwoord te maken en te configureren voordat \"tweede factor authenticatie\" wordt geactiveerd.",
"Logged in account must be a subadmin" : "Aangemeld account moet een subadmin zijn",
"Set default expiration date for shares" : "Instellen standaard vervaldatum voor deellinks",
+ "Remove group" : "Groep verwijderen",
"Your biography" : "Jouw biografie",
"You are using <strong>{usage}</strong>" : "Je gebruikt <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Je gebruikt <strong>{usage}</strong> van <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/oc.js b/apps/settings/l10n/oc.js
index 7bdf7ba6f5a..479a1d3e4fd 100644
--- a/apps/settings/l10n/oc.js
+++ b/apps/settings/l10n/oc.js
@@ -131,7 +131,6 @@ OC.L10N.register(
"Enable encryption" : "Activar lo chiframent",
"Submit" : "Transmetre",
"Rename group" : "Renomenar lo grop",
- "Remove group" : "Suprimir lo grop",
"Current password" : "Senhal actual",
"New password" : "Senhal novèl",
"Change password" : "Cambiar de senhal",
@@ -223,6 +222,7 @@ OC.L10N.register(
"Check out our blog" : "Donar un còp d’uèlh a nòstre blòg",
"Subscribe to our newsletter" : "S’abonar a l’infoletra",
"Set default expiration date for shares" : "Definir una data d’expiracion per defaut pels partatges",
+ "Remove group" : "Suprimir lo grop",
"Your biography" : "Vòstra biografia"
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/settings/l10n/oc.json b/apps/settings/l10n/oc.json
index 75b66caf91d..9e47fbb30d6 100644
--- a/apps/settings/l10n/oc.json
+++ b/apps/settings/l10n/oc.json
@@ -129,7 +129,6 @@
"Enable encryption" : "Activar lo chiframent",
"Submit" : "Transmetre",
"Rename group" : "Renomenar lo grop",
- "Remove group" : "Suprimir lo grop",
"Current password" : "Senhal actual",
"New password" : "Senhal novèl",
"Change password" : "Cambiar de senhal",
@@ -221,6 +220,7 @@
"Check out our blog" : "Donar un còp d’uèlh a nòstre blòg",
"Subscribe to our newsletter" : "S’abonar a l’infoletra",
"Set default expiration date for shares" : "Definir una data d’expiracion per defaut pels partatges",
+ "Remove group" : "Suprimir lo grop",
"Your biography" : "Vòstra biografia"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/settings/l10n/pl.js b/apps/settings/l10n/pl.js
index 16b3873aa06..f9c1efa5bb9 100644
--- a/apps/settings/l10n/pl.js
+++ b/apps/settings/l10n/pl.js
@@ -471,11 +471,9 @@ OC.L10N.register(
"Be aware that encryption always increases the file size." : "Należy pamiętać, że szyfrowanie zawsze zwiększa rozmiar pliku.",
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Zawsze dobrze jest regularnie wykonywać kopie zapasowe swoich danych. W przypadku szyfrowania upewnij się, aby kopie zapasowe kluczy szyfrowania były wraz z danymi.",
"This is the final warning: Do you really want to enable encryption?" : "To ostatnie ostrzeżenie: Czy na pewno chcesz włączyć szyfrowanie?",
- "Failed to remove group \"{group}\"" : "Nie udało się usunąć grupy \"{group}\"",
"Please confirm the group removal" : "Potwierdź usunięcie grupy",
"Submit" : "Wyślij",
"Rename group" : "Zmień nazwę grupy",
- "Remove group" : "Usuń grupę",
"Current password" : "Bieżące hasło",
"New password" : "Nowe hasło",
"Change password" : "Zmień hasło",
@@ -761,6 +759,8 @@ OC.L10N.register(
"Transactional file locking is disabled, this might lead to issues with race conditions. Enable \"filelocking.enabled\" in config.php to avoid these problems." : "Blokowanie plików transakcyjnych jest wyłączone, może to prowadzić do problemów z przepustowością. Włącz \"filelocking.enabled\" w config.php, aby uniknąć tych problemów.",
"The PHP memory limit is below the recommended value of %s." : "Limit pamięci PHP jest poniżej zalecanej wartości %s",
"Set default expiration date for shares" : "Ustaw domyślną datę ważności udostępnień",
+ "Failed to remove group \"{group}\"" : "Nie udało się usunąć grupy \"{group}\"",
+ "Remove group" : "Usuń grupę",
"Your biography" : "Twoja biografia",
"You are using <strong>{usage}</strong>" : "Używasz <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Używasz <strong>{usage}</strong> z <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/pl.json b/apps/settings/l10n/pl.json
index b3e6d2134ed..03e50d6234d 100644
--- a/apps/settings/l10n/pl.json
+++ b/apps/settings/l10n/pl.json
@@ -469,11 +469,9 @@
"Be aware that encryption always increases the file size." : "Należy pamiętać, że szyfrowanie zawsze zwiększa rozmiar pliku.",
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Zawsze dobrze jest regularnie wykonywać kopie zapasowe swoich danych. W przypadku szyfrowania upewnij się, aby kopie zapasowe kluczy szyfrowania były wraz z danymi.",
"This is the final warning: Do you really want to enable encryption?" : "To ostatnie ostrzeżenie: Czy na pewno chcesz włączyć szyfrowanie?",
- "Failed to remove group \"{group}\"" : "Nie udało się usunąć grupy \"{group}\"",
"Please confirm the group removal" : "Potwierdź usunięcie grupy",
"Submit" : "Wyślij",
"Rename group" : "Zmień nazwę grupy",
- "Remove group" : "Usuń grupę",
"Current password" : "Bieżące hasło",
"New password" : "Nowe hasło",
"Change password" : "Zmień hasło",
@@ -759,6 +757,8 @@
"Transactional file locking is disabled, this might lead to issues with race conditions. Enable \"filelocking.enabled\" in config.php to avoid these problems." : "Blokowanie plików transakcyjnych jest wyłączone, może to prowadzić do problemów z przepustowością. Włącz \"filelocking.enabled\" w config.php, aby uniknąć tych problemów.",
"The PHP memory limit is below the recommended value of %s." : "Limit pamięci PHP jest poniżej zalecanej wartości %s",
"Set default expiration date for shares" : "Ustaw domyślną datę ważności udostępnień",
+ "Failed to remove group \"{group}\"" : "Nie udało się usunąć grupy \"{group}\"",
+ "Remove group" : "Usuń grupę",
"Your biography" : "Twoja biografia",
"You are using <strong>{usage}</strong>" : "Używasz <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Używasz <strong>{usage}</strong> z <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/pt_BR.js b/apps/settings/l10n/pt_BR.js
index a240ecf264d..ca63da31573 100644
--- a/apps/settings/l10n/pt_BR.js
+++ b/apps/settings/l10n/pt_BR.js
@@ -583,12 +583,9 @@ OC.L10N.register(
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "É sempre bom criar backups regulares dos seus dados. No caso de criptografia, certifique-se de fazer backup das chaves de criptografia juntamente com os seus dados.",
"Refer to the admin documentation on how to manually also encrypt existing files." : "Consulte a documentação do administrador para saber como criptografar manualmente também os arquivos existentes.",
"This is the final warning: Do you really want to enable encryption?" : "Este é o aviso final: Você realmente quer ativar a criptografia?",
- "Failed to remove group \"{group}\"" : "Falha ao remover o grupo \"{group}\"",
"Please confirm the group removal" : "Por favor confirme a remoção do grupo",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Você está prestes a remover o grupo \"{group}\". As contas NÃO serão excluídas.",
"Submit" : "Enviar",
"Rename group" : "Renomear grupo",
- "Remove group" : "Excluir grupo",
"Current password" : "Senha atual",
"New password" : "Nova senha",
"Change password" : "Alterar senha",
@@ -896,6 +893,9 @@ OC.L10N.register(
"for WebAuthn passwordless login, and SFTP storage" : "para login sem senha via WebAuthn e armazenamento SFTP",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "Versão do PostgreSQL \"%s\" detectada. PostgreSQL >=12 e <=16 é sugerido para melhor desempenho, estabilidade e funcionalidade com esta versão do Nextcloud.",
"Set default expiration date for shares" : "Definir data de validade padrão para compartilhamentos",
+ "Failed to remove group \"{group}\"" : "Falha ao remover o grupo \"{group}\"",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Você está prestes a remover o grupo \"{group}\". As contas NÃO serão excluídas.",
+ "Remove group" : "Excluir grupo",
"Your biography" : "Sua biografia",
"You are using <strong>{usage}</strong>" : "Você está usando <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Você está usando <strong>{usage}</strong> de <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)",
diff --git a/apps/settings/l10n/pt_BR.json b/apps/settings/l10n/pt_BR.json
index bfbc22ef691..39b2457137f 100644
--- a/apps/settings/l10n/pt_BR.json
+++ b/apps/settings/l10n/pt_BR.json
@@ -581,12 +581,9 @@
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "É sempre bom criar backups regulares dos seus dados. No caso de criptografia, certifique-se de fazer backup das chaves de criptografia juntamente com os seus dados.",
"Refer to the admin documentation on how to manually also encrypt existing files." : "Consulte a documentação do administrador para saber como criptografar manualmente também os arquivos existentes.",
"This is the final warning: Do you really want to enable encryption?" : "Este é o aviso final: Você realmente quer ativar a criptografia?",
- "Failed to remove group \"{group}\"" : "Falha ao remover o grupo \"{group}\"",
"Please confirm the group removal" : "Por favor confirme a remoção do grupo",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Você está prestes a remover o grupo \"{group}\". As contas NÃO serão excluídas.",
"Submit" : "Enviar",
"Rename group" : "Renomear grupo",
- "Remove group" : "Excluir grupo",
"Current password" : "Senha atual",
"New password" : "Nova senha",
"Change password" : "Alterar senha",
@@ -894,6 +891,9 @@
"for WebAuthn passwordless login, and SFTP storage" : "para login sem senha via WebAuthn e armazenamento SFTP",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "Versão do PostgreSQL \"%s\" detectada. PostgreSQL >=12 e <=16 é sugerido para melhor desempenho, estabilidade e funcionalidade com esta versão do Nextcloud.",
"Set default expiration date for shares" : "Definir data de validade padrão para compartilhamentos",
+ "Failed to remove group \"{group}\"" : "Falha ao remover o grupo \"{group}\"",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Você está prestes a remover o grupo \"{group}\". As contas NÃO serão excluídas.",
+ "Remove group" : "Excluir grupo",
"Your biography" : "Sua biografia",
"You are using <strong>{usage}</strong>" : "Você está usando <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Você está usando <strong>{usage}</strong> de <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)",
diff --git a/apps/settings/l10n/ro.js b/apps/settings/l10n/ro.js
index c96f5303673..e89abeba11e 100644
--- a/apps/settings/l10n/ro.js
+++ b/apps/settings/l10n/ro.js
@@ -190,7 +190,6 @@ OC.L10N.register(
"Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Criptarea, ca unică variantă, nu garantează securitatea sistemului. Consultați documentația pentru mai multe informații despre cum funcționează aplicația de criptare și variantele de utilizare acceptate.",
"This is the final warning: Do you really want to enable encryption?" : "Aceasta este avertizarea finală: Chiar vrei să activezi criptarea?",
"Submit" : "Trimite",
- "Remove group" : "Înlătură grupul",
"Current password" : "Parola curentă",
"New password" : "Noua parolă",
"Change password" : "Schimbă parola",
@@ -264,6 +263,7 @@ OC.L10N.register(
"Save" : "Salvează",
"Security & setup warnings" : "Alerte de securitate & configurare",
"All checks passed." : "Toate verificările s-au terminat fără erori.",
- "This community release of Nextcloud is unsupported and instant notifications are unavailable." : "Această versiune comunitară a Nextcloud nu este suportată, iar notificările instantanee nu sunt disponibile."
+ "This community release of Nextcloud is unsupported and instant notifications are unavailable." : "Această versiune comunitară a Nextcloud nu este suportată, iar notificările instantanee nu sunt disponibile.",
+ "Remove group" : "Înlătură grupul"
},
"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));");
diff --git a/apps/settings/l10n/ro.json b/apps/settings/l10n/ro.json
index 41bb1a3bb34..916173d9eb7 100644
--- a/apps/settings/l10n/ro.json
+++ b/apps/settings/l10n/ro.json
@@ -188,7 +188,6 @@
"Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Criptarea, ca unică variantă, nu garantează securitatea sistemului. Consultați documentația pentru mai multe informații despre cum funcționează aplicația de criptare și variantele de utilizare acceptate.",
"This is the final warning: Do you really want to enable encryption?" : "Aceasta este avertizarea finală: Chiar vrei să activezi criptarea?",
"Submit" : "Trimite",
- "Remove group" : "Înlătură grupul",
"Current password" : "Parola curentă",
"New password" : "Noua parolă",
"Change password" : "Schimbă parola",
@@ -262,6 +261,7 @@
"Save" : "Salvează",
"Security & setup warnings" : "Alerte de securitate & configurare",
"All checks passed." : "Toate verificările s-au terminat fără erori.",
- "This community release of Nextcloud is unsupported and instant notifications are unavailable." : "Această versiune comunitară a Nextcloud nu este suportată, iar notificările instantanee nu sunt disponibile."
+ "This community release of Nextcloud is unsupported and instant notifications are unavailable." : "Această versiune comunitară a Nextcloud nu este suportată, iar notificările instantanee nu sunt disponibile.",
+ "Remove group" : "Înlătură grupul"
},"pluralForm" :"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));"
} \ No newline at end of file
diff --git a/apps/settings/l10n/ru.js b/apps/settings/l10n/ru.js
index edfef1dca16..b2eca3eccc6 100644
--- a/apps/settings/l10n/ru.js
+++ b/apps/settings/l10n/ru.js
@@ -583,12 +583,9 @@ OC.L10N.register(
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Регулярно создавайте резервные копии данных. При использовании шифрования сохраняйте не только данные, но и ключи.",
"Refer to the admin documentation on how to manually also encrypt existing files." : "Информацию о том, как вручную зашифровать существующие файлы, см. в документации администратора.",
"This is the final warning: Do you really want to enable encryption?" : "Это последнее предупреждение: действительно включить шифрование?",
- "Failed to remove group \"{group}\"" : "Не удалось удалить группу \"{group}\"",
"Please confirm the group removal" : "Подтвердите удаление группы",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Группа «{group}» будет удалена. Это действие НЕ ПРИВОДИТ к удалению учётных записей, входящих в эту группу.",
"Submit" : "Отправить ответ",
"Rename group" : "Переименовать группу",
- "Remove group" : "Удалить группу",
"Current password" : "Текущий пароль",
"New password" : "Новый пароль",
"Change password" : "Сменить пароль",
@@ -896,6 +893,9 @@ OC.L10N.register(
"for WebAuthn passwordless login, and SFTP storage" : "для входа в систему без пароля WebAuthn и хранения данных по протоколу SFTP",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "Обнаружена версия PostgreSQL \"%s\". Для лучшей производительности, стабильности и функциональности с этой версией Nextcloud рекомендуется использовать PostgreSQL >=12 и <=16.",
"Set default expiration date for shares" : "Установить срок действия общего доступа по умолчанию",
+ "Failed to remove group \"{group}\"" : "Не удалось удалить группу \"{group}\"",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Группа «{group}» будет удалена. Это действие НЕ ПРИВОДИТ к удалению учётных записей, входящих в эту группу.",
+ "Remove group" : "Удалить группу",
"Your biography" : "Ваша биография",
"You are using <strong>{usage}</strong>" : "Вы используете <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Вы используете <strong>{usage}</strong> из <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)",
diff --git a/apps/settings/l10n/ru.json b/apps/settings/l10n/ru.json
index 4dc2e4ee2e4..c0e11d7e111 100644
--- a/apps/settings/l10n/ru.json
+++ b/apps/settings/l10n/ru.json
@@ -581,12 +581,9 @@
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Регулярно создавайте резервные копии данных. При использовании шифрования сохраняйте не только данные, но и ключи.",
"Refer to the admin documentation on how to manually also encrypt existing files." : "Информацию о том, как вручную зашифровать существующие файлы, см. в документации администратора.",
"This is the final warning: Do you really want to enable encryption?" : "Это последнее предупреждение: действительно включить шифрование?",
- "Failed to remove group \"{group}\"" : "Не удалось удалить группу \"{group}\"",
"Please confirm the group removal" : "Подтвердите удаление группы",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Группа «{group}» будет удалена. Это действие НЕ ПРИВОДИТ к удалению учётных записей, входящих в эту группу.",
"Submit" : "Отправить ответ",
"Rename group" : "Переименовать группу",
- "Remove group" : "Удалить группу",
"Current password" : "Текущий пароль",
"New password" : "Новый пароль",
"Change password" : "Сменить пароль",
@@ -894,6 +891,9 @@
"for WebAuthn passwordless login, and SFTP storage" : "для входа в систему без пароля WebAuthn и хранения данных по протоколу SFTP",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "Обнаружена версия PostgreSQL \"%s\". Для лучшей производительности, стабильности и функциональности с этой версией Nextcloud рекомендуется использовать PostgreSQL >=12 и <=16.",
"Set default expiration date for shares" : "Установить срок действия общего доступа по умолчанию",
+ "Failed to remove group \"{group}\"" : "Не удалось удалить группу \"{group}\"",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Группа «{group}» будет удалена. Это действие НЕ ПРИВОДИТ к удалению учётных записей, входящих в эту группу.",
+ "Remove group" : "Удалить группу",
"Your biography" : "Ваша биография",
"You are using <strong>{usage}</strong>" : "Вы используете <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Вы используете <strong>{usage}</strong> из <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)",
diff --git a/apps/settings/l10n/sc.js b/apps/settings/l10n/sc.js
index 20d56f8c4d2..2f4b0acc312 100644
--- a/apps/settings/l10n/sc.js
+++ b/apps/settings/l10n/sc.js
@@ -225,7 +225,6 @@ OC.L10N.register(
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Benit semper a bene a creare còpias de seguresa regulares de is datos tuos, in casu de tzifradura assegura•ti de creare còpia de is craes de tzfradura paris cun is datos tuos.",
"This is the final warning: Do you really want to enable encryption?" : "Custu est s'ùrtimu avisu : a beru boles ativare sa tzifradura?",
"Submit" : "Imbia",
- "Remove group" : "Boga·nche grupu",
"Current password" : "Crae currente",
"New password" : "Crae noa",
"Change password" : "Càmbia crae",
@@ -377,6 +376,7 @@ OC.L10N.register(
"Use a second factor besides your password to increase security for your account." : "Imprea unu segundu fatore a parte sa crae tua pro crèschere sa seguresa de su contu tuo.",
"If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Si impreas aplicatziones de sa de tres partes pro ti connètere a Nextcloud, assegura•ti de creare e cunfigurare una crae pro cada aplicatzione antis de ativare su segundu fatore de autenticatzione.",
"Set default expiration date for shares" : "Cunfigura sa data de iscadèntzia predefinida pro is cumpartziduras",
+ "Remove group" : "Boga·nche grupu",
"Your biography" : "Sa biografia tua"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/settings/l10n/sc.json b/apps/settings/l10n/sc.json
index 79d6a185d70..cd1f2135485 100644
--- a/apps/settings/l10n/sc.json
+++ b/apps/settings/l10n/sc.json
@@ -223,7 +223,6 @@
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Benit semper a bene a creare còpias de seguresa regulares de is datos tuos, in casu de tzifradura assegura•ti de creare còpia de is craes de tzfradura paris cun is datos tuos.",
"This is the final warning: Do you really want to enable encryption?" : "Custu est s'ùrtimu avisu : a beru boles ativare sa tzifradura?",
"Submit" : "Imbia",
- "Remove group" : "Boga·nche grupu",
"Current password" : "Crae currente",
"New password" : "Crae noa",
"Change password" : "Càmbia crae",
@@ -375,6 +374,7 @@
"Use a second factor besides your password to increase security for your account." : "Imprea unu segundu fatore a parte sa crae tua pro crèschere sa seguresa de su contu tuo.",
"If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Si impreas aplicatziones de sa de tres partes pro ti connètere a Nextcloud, assegura•ti de creare e cunfigurare una crae pro cada aplicatzione antis de ativare su segundu fatore de autenticatzione.",
"Set default expiration date for shares" : "Cunfigura sa data de iscadèntzia predefinida pro is cumpartziduras",
+ "Remove group" : "Boga·nche grupu",
"Your biography" : "Sa biografia tua"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/settings/l10n/sk.js b/apps/settings/l10n/sk.js
index f68183a58f9..4a2842742a3 100644
--- a/apps/settings/l10n/sk.js
+++ b/apps/settings/l10n/sk.js
@@ -582,12 +582,9 @@ OC.L10N.register(
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Je dobré vytvárať pravidelné zálohy vašich dát, uistite sa, že v prípade šifrovania spolu s vašimi dátami zálohujete aj šifrovacie kľúče.",
"Refer to the admin documentation on how to manually also encrypt existing files." : "Informácie o tom, ako ručne zašifrovať aj existujúce súbory, nájdete v dokumentácii pre administrátora.",
"This is the final warning: Do you really want to enable encryption?" : "Toto je posledné varovanie: Vážne si prajete povoliť šifrovanie?",
- "Failed to remove group \"{group}\"" : "Nepodarilo sa odstrániť skupinu \"{group}\"",
"Please confirm the group removal" : "Prosím potvrďte vymazanie skupiny.",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Chystáte sa odstrániť skupinu \"{group}\". Používatelia NEBUDÚ vymazaní.",
"Submit" : "Odoslať",
"Rename group" : "Premenovať skupinu",
- "Remove group" : "Odstrániť skupinu",
"Current password" : "Aktuálne heslo",
"New password" : "Nové heslo",
"Change password" : "Zmeniť heslo",
@@ -894,6 +891,9 @@ OC.L10N.register(
"for WebAuthn passwordless login, and SFTP storage" : "pre prihlásenie bez hesla WebAuthn a SFTP úložisko",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "Bola zistená verzia \"%s\" PostgreSQL. Odporúča sa PostgreSQL >=12 a <=16 pre najlepší výkon, stabilitu a funkčnosť s touto verziou Nextcloud.",
"Set default expiration date for shares" : "Nastaviť predvolený dátum expirácie pre sprístupnenia",
+ "Failed to remove group \"{group}\"" : "Nepodarilo sa odstrániť skupinu \"{group}\"",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Chystáte sa odstrániť skupinu \"{group}\". Používatelia NEBUDÚ vymazaní.",
+ "Remove group" : "Odstrániť skupinu",
"Your biography" : "Váš životopis",
"You are using <strong>{usage}</strong>" : "Využívate <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Využívate <strong>{usage}</strong> z <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)",
diff --git a/apps/settings/l10n/sk.json b/apps/settings/l10n/sk.json
index 46d49eca927..626261f679e 100644
--- a/apps/settings/l10n/sk.json
+++ b/apps/settings/l10n/sk.json
@@ -580,12 +580,9 @@
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Je dobré vytvárať pravidelné zálohy vašich dát, uistite sa, že v prípade šifrovania spolu s vašimi dátami zálohujete aj šifrovacie kľúče.",
"Refer to the admin documentation on how to manually also encrypt existing files." : "Informácie o tom, ako ručne zašifrovať aj existujúce súbory, nájdete v dokumentácii pre administrátora.",
"This is the final warning: Do you really want to enable encryption?" : "Toto je posledné varovanie: Vážne si prajete povoliť šifrovanie?",
- "Failed to remove group \"{group}\"" : "Nepodarilo sa odstrániť skupinu \"{group}\"",
"Please confirm the group removal" : "Prosím potvrďte vymazanie skupiny.",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Chystáte sa odstrániť skupinu \"{group}\". Používatelia NEBUDÚ vymazaní.",
"Submit" : "Odoslať",
"Rename group" : "Premenovať skupinu",
- "Remove group" : "Odstrániť skupinu",
"Current password" : "Aktuálne heslo",
"New password" : "Nové heslo",
"Change password" : "Zmeniť heslo",
@@ -892,6 +889,9 @@
"for WebAuthn passwordless login, and SFTP storage" : "pre prihlásenie bez hesla WebAuthn a SFTP úložisko",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "Bola zistená verzia \"%s\" PostgreSQL. Odporúča sa PostgreSQL >=12 a <=16 pre najlepší výkon, stabilitu a funkčnosť s touto verziou Nextcloud.",
"Set default expiration date for shares" : "Nastaviť predvolený dátum expirácie pre sprístupnenia",
+ "Failed to remove group \"{group}\"" : "Nepodarilo sa odstrániť skupinu \"{group}\"",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Chystáte sa odstrániť skupinu \"{group}\". Používatelia NEBUDÚ vymazaní.",
+ "Remove group" : "Odstrániť skupinu",
"Your biography" : "Váš životopis",
"You are using <strong>{usage}</strong>" : "Využívate <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Využívate <strong>{usage}</strong> z <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)",
diff --git a/apps/settings/l10n/sl.js b/apps/settings/l10n/sl.js
index d0cea080fff..32c81a28088 100644
--- a/apps/settings/l10n/sl.js
+++ b/apps/settings/l10n/sl.js
@@ -420,12 +420,9 @@ OC.L10N.register(
"Be aware that encryption always increases the file size." : " Upoštevajte, da šifriranje poveča velikost datoteke.",
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Priporočljivo je redno ustvarjati varnostne kopije podatkov, v primeru šifriranja pa varnostno kopirati tudi šifrirne ključe.",
"This is the final warning: Do you really want to enable encryption?" : "To je zadnje opozorilo. Ali res želite omogočiti šifriranje?",
- "Failed to remove group \"{group}\"" : "Odstranjevanje skupine »{group}« je spodlotelo",
"Please confirm the group removal" : "Potrditi je treba skupinsko odstranjevanje",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Odstranili boste skupino »{group}«. Računi ne bodo izbrisani.",
"Submit" : "Pošlji",
"Rename group" : "Preimenuj skupino",
- "Remove group" : "Odstrani skupino",
"Current password" : "Trenutno geslo",
"New password" : "Novo geslo",
"Change password" : "Spremeni geslo",
@@ -695,6 +692,9 @@ OC.L10N.register(
"Transactional file locking is disabled, this might lead to issues with race conditions. Enable \"filelocking.enabled\" in config.php to avoid these problems." : "Zaklepanje datotek je onemogočeno, kar lahko privede do različnih težav. V izogib zapletom je priporočljivo omogočiti možnost »filelocking.enabled« v datoteki config.php.",
"The PHP memory limit is below the recommended value of %s." : "Omejitev pomnilnika PHP je pod priporočeno mejo %s.",
"Set default expiration date for shares" : "Nastavi privzeti datuma poteka za mesta souporabe",
+ "Failed to remove group \"{group}\"" : "Odstranjevanje skupine »{group}« je spodlotelo",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Odstranili boste skupino »{group}«. Računi ne bodo izbrisani.",
+ "Remove group" : "Odstrani skupino",
"Your biography" : "Biografija",
"You are using <strong>{usage}</strong>" : "Uporabljate <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Uporabljate <strong>{usage}</strong> od <strong>{totalSpace}</strong> (<strong>{usageRelative} %</strong>)"
diff --git a/apps/settings/l10n/sl.json b/apps/settings/l10n/sl.json
index 38dda68891f..56c1e44043f 100644
--- a/apps/settings/l10n/sl.json
+++ b/apps/settings/l10n/sl.json
@@ -418,12 +418,9 @@
"Be aware that encryption always increases the file size." : " Upoštevajte, da šifriranje poveča velikost datoteke.",
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Priporočljivo je redno ustvarjati varnostne kopije podatkov, v primeru šifriranja pa varnostno kopirati tudi šifrirne ključe.",
"This is the final warning: Do you really want to enable encryption?" : "To je zadnje opozorilo. Ali res želite omogočiti šifriranje?",
- "Failed to remove group \"{group}\"" : "Odstranjevanje skupine »{group}« je spodlotelo",
"Please confirm the group removal" : "Potrditi je treba skupinsko odstranjevanje",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Odstranili boste skupino »{group}«. Računi ne bodo izbrisani.",
"Submit" : "Pošlji",
"Rename group" : "Preimenuj skupino",
- "Remove group" : "Odstrani skupino",
"Current password" : "Trenutno geslo",
"New password" : "Novo geslo",
"Change password" : "Spremeni geslo",
@@ -693,6 +690,9 @@
"Transactional file locking is disabled, this might lead to issues with race conditions. Enable \"filelocking.enabled\" in config.php to avoid these problems." : "Zaklepanje datotek je onemogočeno, kar lahko privede do različnih težav. V izogib zapletom je priporočljivo omogočiti možnost »filelocking.enabled« v datoteki config.php.",
"The PHP memory limit is below the recommended value of %s." : "Omejitev pomnilnika PHP je pod priporočeno mejo %s.",
"Set default expiration date for shares" : "Nastavi privzeti datuma poteka za mesta souporabe",
+ "Failed to remove group \"{group}\"" : "Odstranjevanje skupine »{group}« je spodlotelo",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Odstranili boste skupino »{group}«. Računi ne bodo izbrisani.",
+ "Remove group" : "Odstrani skupino",
"Your biography" : "Biografija",
"You are using <strong>{usage}</strong>" : "Uporabljate <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Uporabljate <strong>{usage}</strong> od <strong>{totalSpace}</strong> (<strong>{usageRelative} %</strong>)"
diff --git a/apps/settings/l10n/sq.js b/apps/settings/l10n/sq.js
index 37b0f878782..ebc632dffa0 100644
--- a/apps/settings/l10n/sq.js
+++ b/apps/settings/l10n/sq.js
@@ -147,7 +147,6 @@ OC.L10N.register(
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Është gjithmonë ide e mirë të krijohen kopjeruajtje të rregullta të të dhënave tuaja, në rast fshehtëzimi sigurohuni që bëni kopjeruajtje të kyçeve të fshehtëzimit, tok me të dhënat tuaja.",
"This is the final warning: Do you really want to enable encryption?" : "Ky është sinjalizimi përfundimtar: Doni vërtet të aktivizohet fshehtëzimi?",
"Submit" : "Dërgo",
- "Remove group" : "Hiq grupin",
"Current password" : "Fjalëkalimi i tanishëm",
"New password" : "Fjalëkalimi i ri",
"Change password" : "Ndrysho fjalëkalimin",
@@ -218,6 +217,7 @@ OC.L10N.register(
"Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Zhvilluar nga {communityopen}komuniteti Nextcloud {linkclose}, {githubopen}kodi i hapur{linkclose} iështë licensuar sipar {licenseopen}AGPL{linkclose}.",
"Like our Facebook page" : "Pëlqeni faqen tonë në Facebook",
"Check out our blog" : "Shikoni blogun tonë",
- "Subscribe to our newsletter" : "Abonohu në gazeten tonë"
+ "Subscribe to our newsletter" : "Abonohu në gazeten tonë",
+ "Remove group" : "Hiq grupin"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/settings/l10n/sq.json b/apps/settings/l10n/sq.json
index d66ea79e142..cb3c836cee4 100644
--- a/apps/settings/l10n/sq.json
+++ b/apps/settings/l10n/sq.json
@@ -145,7 +145,6 @@
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Është gjithmonë ide e mirë të krijohen kopjeruajtje të rregullta të të dhënave tuaja, në rast fshehtëzimi sigurohuni që bëni kopjeruajtje të kyçeve të fshehtëzimit, tok me të dhënat tuaja.",
"This is the final warning: Do you really want to enable encryption?" : "Ky është sinjalizimi përfundimtar: Doni vërtet të aktivizohet fshehtëzimi?",
"Submit" : "Dërgo",
- "Remove group" : "Hiq grupin",
"Current password" : "Fjalëkalimi i tanishëm",
"New password" : "Fjalëkalimi i ri",
"Change password" : "Ndrysho fjalëkalimin",
@@ -216,6 +215,7 @@
"Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Zhvilluar nga {communityopen}komuniteti Nextcloud {linkclose}, {githubopen}kodi i hapur{linkclose} iështë licensuar sipar {licenseopen}AGPL{linkclose}.",
"Like our Facebook page" : "Pëlqeni faqen tonë në Facebook",
"Check out our blog" : "Shikoni blogun tonë",
- "Subscribe to our newsletter" : "Abonohu në gazeten tonë"
+ "Subscribe to our newsletter" : "Abonohu në gazeten tonë",
+ "Remove group" : "Hiq grupin"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/settings/l10n/sr.js b/apps/settings/l10n/sr.js
index 4688fe65639..7742c17c877 100644
--- a/apps/settings/l10n/sr.js
+++ b/apps/settings/l10n/sr.js
@@ -583,12 +583,9 @@ OC.L10N.register(
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Увек је паметно да правите редовне резервне копије података. У случају када су подаци шифровани, онда поред њих и резервне копије кључева за шифровања.",
"Refer to the admin documentation on how to manually also encrypt existing files." : "Погледајте админ документацију у вези са ручним шифровањем постојећих фајлова.",
"This is the final warning: Do you really want to enable encryption?" : "Ово је последње упозорење: Да ли стварно желите да укључите шифровање?",
- "Failed to remove group \"{group}\"" : "Није успело уклањање групе „{group}”",
"Please confirm the group removal" : "Молимо вас да потврдите уклањање групе",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Управо ћете уклонити групу „{group}”. Налози се НЕЋЕ обрисати.",
"Submit" : "Пошаљи",
"Rename group" : "Промени име групе",
- "Remove group" : "Уклони групу",
"Current password" : "Тренутна лозинка",
"New password" : "Нова лозинка",
"Change password" : "Измени лозинку",
@@ -896,6 +893,9 @@ OC.L10N.register(
"for WebAuthn passwordless login, and SFTP storage" : "за WebAuthn пријаву без лозинке и за SFTP складиште",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "Детектована је PostgreSQL верзија „%s”. За најбоље перформансе, стабилност и функционалност са овом Nextcloud верзијом, препоручује се PostgreSQL >=12 и <=16.",
"Set default expiration date for shares" : "Постави подразумевано време истека дељења",
+ "Failed to remove group \"{group}\"" : "Није успело уклањање групе „{group}”",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Управо ћете уклонити групу „{group}”. Налози се НЕЋЕ обрисати.",
+ "Remove group" : "Уклони групу",
"Your biography" : "Ваша биографија",
"You are using <strong>{usage}</strong>" : "Користите <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Користите <strong>{usage}</strong> од <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)",
diff --git a/apps/settings/l10n/sr.json b/apps/settings/l10n/sr.json
index 1362a80aa90..0beae9d14b5 100644
--- a/apps/settings/l10n/sr.json
+++ b/apps/settings/l10n/sr.json
@@ -581,12 +581,9 @@
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Увек је паметно да правите редовне резервне копије података. У случају када су подаци шифровани, онда поред њих и резервне копије кључева за шифровања.",
"Refer to the admin documentation on how to manually also encrypt existing files." : "Погледајте админ документацију у вези са ручним шифровањем постојећих фајлова.",
"This is the final warning: Do you really want to enable encryption?" : "Ово је последње упозорење: Да ли стварно желите да укључите шифровање?",
- "Failed to remove group \"{group}\"" : "Није успело уклањање групе „{group}”",
"Please confirm the group removal" : "Молимо вас да потврдите уклањање групе",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Управо ћете уклонити групу „{group}”. Налози се НЕЋЕ обрисати.",
"Submit" : "Пошаљи",
"Rename group" : "Промени име групе",
- "Remove group" : "Уклони групу",
"Current password" : "Тренутна лозинка",
"New password" : "Нова лозинка",
"Change password" : "Измени лозинку",
@@ -894,6 +891,9 @@
"for WebAuthn passwordless login, and SFTP storage" : "за WebAuthn пријаву без лозинке и за SFTP складиште",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "Детектована је PostgreSQL верзија „%s”. За најбоље перформансе, стабилност и функционалност са овом Nextcloud верзијом, препоручује се PostgreSQL >=12 и <=16.",
"Set default expiration date for shares" : "Постави подразумевано време истека дељења",
+ "Failed to remove group \"{group}\"" : "Није успело уклањање групе „{group}”",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Управо ћете уклонити групу „{group}”. Налози се НЕЋЕ обрисати.",
+ "Remove group" : "Уклони групу",
"Your biography" : "Ваша биографија",
"You are using <strong>{usage}</strong>" : "Користите <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Користите <strong>{usage}</strong> од <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)",
diff --git a/apps/settings/l10n/sv.js b/apps/settings/l10n/sv.js
index 3990547b1b4..337d0472113 100644
--- a/apps/settings/l10n/sv.js
+++ b/apps/settings/l10n/sv.js
@@ -419,12 +419,9 @@ OC.L10N.register(
"Be aware that encryption always increases the file size." : "OBS! Observera att kryptering alltid ökar filstorleken",
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Det är alltid en god ide att skapa regelbundna säkerhetskopior av din data, om kryptering används var säker på att även krypteringsnycklarna säkerhetskopieras tillsammans med din data.",
"This is the final warning: Do you really want to enable encryption?" : "Detta är en slutgiltig varning: Vill du verkligen aktivera kryptering?",
- "Failed to remove group \"{group}\"" : "Det gick inte att ta bort gruppen \"{group}\"",
"Please confirm the group removal" : "Bekräfta borttagning av gruppen",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Du håller på att ta bort gruppen \"{group}\". Kontona kommer INTE att raderas.",
"Submit" : "Skicka",
"Rename group" : "Byt namn på grupp",
- "Remove group" : "Ta bort grupp",
"Current password" : "Nuvarande lösenord",
"New password" : "Nytt lösenord",
"Change password" : "Ändra lösenord",
@@ -714,6 +711,9 @@ OC.L10N.register(
"Transactional file locking is disabled, this might lead to issues with race conditions. Enable \"filelocking.enabled\" in config.php to avoid these problems." : "Transaktionsbaserad fillåsning är inaktiverad, detta kan leda till problem med konflikter. Aktivera \"filelocking.enabled\" i config.php för att undvika dessa problem.",
"The PHP memory limit is below the recommended value of %s." : "Minnesgränsen för PHP är under det rekommenderade värdet på %s.",
"Set default expiration date for shares" : "Ställ in standardutgångsdatum för delningar",
+ "Failed to remove group \"{group}\"" : "Det gick inte att ta bort gruppen \"{group}\"",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Du håller på att ta bort gruppen \"{group}\". Kontona kommer INTE att raderas.",
+ "Remove group" : "Ta bort grupp",
"Your biography" : "Din biografi",
"You are using <strong>{usage}</strong>" : "Du använder <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Du använder <strong>{usage}</strong> av <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/sv.json b/apps/settings/l10n/sv.json
index 3ff1d9e5411..bd4ce2eead0 100644
--- a/apps/settings/l10n/sv.json
+++ b/apps/settings/l10n/sv.json
@@ -417,12 +417,9 @@
"Be aware that encryption always increases the file size." : "OBS! Observera att kryptering alltid ökar filstorleken",
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Det är alltid en god ide att skapa regelbundna säkerhetskopior av din data, om kryptering används var säker på att även krypteringsnycklarna säkerhetskopieras tillsammans med din data.",
"This is the final warning: Do you really want to enable encryption?" : "Detta är en slutgiltig varning: Vill du verkligen aktivera kryptering?",
- "Failed to remove group \"{group}\"" : "Det gick inte att ta bort gruppen \"{group}\"",
"Please confirm the group removal" : "Bekräfta borttagning av gruppen",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Du håller på att ta bort gruppen \"{group}\". Kontona kommer INTE att raderas.",
"Submit" : "Skicka",
"Rename group" : "Byt namn på grupp",
- "Remove group" : "Ta bort grupp",
"Current password" : "Nuvarande lösenord",
"New password" : "Nytt lösenord",
"Change password" : "Ändra lösenord",
@@ -712,6 +709,9 @@
"Transactional file locking is disabled, this might lead to issues with race conditions. Enable \"filelocking.enabled\" in config.php to avoid these problems." : "Transaktionsbaserad fillåsning är inaktiverad, detta kan leda till problem med konflikter. Aktivera \"filelocking.enabled\" i config.php för att undvika dessa problem.",
"The PHP memory limit is below the recommended value of %s." : "Minnesgränsen för PHP är under det rekommenderade värdet på %s.",
"Set default expiration date for shares" : "Ställ in standardutgångsdatum för delningar",
+ "Failed to remove group \"{group}\"" : "Det gick inte att ta bort gruppen \"{group}\"",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Du håller på att ta bort gruppen \"{group}\". Kontona kommer INTE att raderas.",
+ "Remove group" : "Ta bort grupp",
"Your biography" : "Din biografi",
"You are using <strong>{usage}</strong>" : "Du använder <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Du använder <strong>{usage}</strong> av <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/th.js b/apps/settings/l10n/th.js
index 5ca7e9484f7..9ffa5dc31d4 100644
--- a/apps/settings/l10n/th.js
+++ b/apps/settings/l10n/th.js
@@ -159,7 +159,6 @@ OC.L10N.register(
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "การสำรองข้อมูลของคุณเป็นประจำเป็นเรื่องที่ดีเสมอ ในกรณีของการเข้ารหัส อย่าลืมสำรองคีย์เข้ารหัสพร้อมข้อมูลของคุณด้วย",
"This is the final warning: Do you really want to enable encryption?" : "นี่คือการเตือนครั้งสุดท้าย: คุณต้องการเปิดใช้การเข้ารหัสจริง ๆ หรือไม่?",
"Submit" : "ส่ง",
- "Remove group" : "ลบกลุ่ม",
"Current password" : "รหัสผ่านปัจจุบัน",
"New password" : "รหัสผ่านใหม่",
"Change password" : "เปลี่ยนรหัสผ่าน",
@@ -273,6 +272,7 @@ OC.L10N.register(
"Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "ตรวจสอบความปลอดภัยของ Nextcloud ของคุณผ่าน<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">การสแกนความปลอดภัยของเรา ↗</a>",
"Reasons to use Nextcloud in your organization" : "เหตุผลที่ควรใช้ Nextcloud ในองค์กรของคุณ",
"This community release of Nextcloud is unsupported and instant notifications are unavailable." : "รุ่นที่ออกโดยชุมชนของ Nextcloud นี้ไม่ได้รับการสนับสนุน และไม่สามารถใช้งานการแจ้งเตือนทันทีได้",
- "Set default expiration date for shares" : "ตั้งวันหมดอายุค่าเริ่มต้นสำหรับการแชร์"
+ "Set default expiration date for shares" : "ตั้งวันหมดอายุค่าเริ่มต้นสำหรับการแชร์",
+ "Remove group" : "ลบกลุ่ม"
},
"nplurals=1; plural=0;");
diff --git a/apps/settings/l10n/th.json b/apps/settings/l10n/th.json
index 9a141bb20c5..b674c01d9fb 100644
--- a/apps/settings/l10n/th.json
+++ b/apps/settings/l10n/th.json
@@ -157,7 +157,6 @@
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "การสำรองข้อมูลของคุณเป็นประจำเป็นเรื่องที่ดีเสมอ ในกรณีของการเข้ารหัส อย่าลืมสำรองคีย์เข้ารหัสพร้อมข้อมูลของคุณด้วย",
"This is the final warning: Do you really want to enable encryption?" : "นี่คือการเตือนครั้งสุดท้าย: คุณต้องการเปิดใช้การเข้ารหัสจริง ๆ หรือไม่?",
"Submit" : "ส่ง",
- "Remove group" : "ลบกลุ่ม",
"Current password" : "รหัสผ่านปัจจุบัน",
"New password" : "รหัสผ่านใหม่",
"Change password" : "เปลี่ยนรหัสผ่าน",
@@ -271,6 +270,7 @@
"Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "ตรวจสอบความปลอดภัยของ Nextcloud ของคุณผ่าน<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">การสแกนความปลอดภัยของเรา ↗</a>",
"Reasons to use Nextcloud in your organization" : "เหตุผลที่ควรใช้ Nextcloud ในองค์กรของคุณ",
"This community release of Nextcloud is unsupported and instant notifications are unavailable." : "รุ่นที่ออกโดยชุมชนของ Nextcloud นี้ไม่ได้รับการสนับสนุน และไม่สามารถใช้งานการแจ้งเตือนทันทีได้",
- "Set default expiration date for shares" : "ตั้งวันหมดอายุค่าเริ่มต้นสำหรับการแชร์"
+ "Set default expiration date for shares" : "ตั้งวันหมดอายุค่าเริ่มต้นสำหรับการแชร์",
+ "Remove group" : "ลบกลุ่ม"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/settings/l10n/tr.js b/apps/settings/l10n/tr.js
index 25bf05b19bb..a80aa179f37 100644
--- a/apps/settings/l10n/tr.js
+++ b/apps/settings/l10n/tr.js
@@ -583,12 +583,9 @@ OC.L10N.register(
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Verilerinizi düzenli yedekleyin ve şifreleme kullanıyorsanız şifreleme anahtarlarınızın da verilerinizle birlikte yedeklendiğinden emin olun.",
"Refer to the admin documentation on how to manually also encrypt existing files." : "Var olan dosyaların el ile nasıl şifreleneceğini öğrenmek için yönetici belgelerine bakın.",
"This is the final warning: Do you really want to enable encryption?" : "Son uyarı: Şifrelemeyi kullanıma almak istiyor musunuz?",
- "Failed to remove group \"{group}\"" : "\"{group}\" grubu silinemedi",
"Please confirm the group removal" : "Grubu silme işlemini onaylayın",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "\"{group}\" grubunu silmek üzeresiniz. Hesaplar SİLİNMEYECEK.",
"Submit" : "Gönder",
"Rename group" : "Grubu yeniden adlandır",
- "Remove group" : "Grubu sil",
"Current password" : "Geçerli parola",
"New password" : "Yeni parola",
"Change password" : "Parola değiştir",
@@ -896,6 +893,9 @@ OC.L10N.register(
"for WebAuthn passwordless login, and SFTP storage" : "WebAuthn parolasız oturum açma ve SFTP depolama alanı için",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "PostgreSQL \"%s\" sürümü bulundu. Bu Nextcloud sürümüyle en iyi başarım, kararlılık ve işlevsellik sağlamak için PostgreSQL sürümünün 12 ile 16 arasında olması önerilir.",
"Set default expiration date for shares" : "Paylaşımlar için varsayılan geçerlilik süresi sonu ayarlansın",
+ "Failed to remove group \"{group}\"" : "\"{group}\" grubu silinemedi",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "\"{group}\" grubunu silmek üzeresiniz. Hesaplar SİLİNMEYECEK.",
+ "Remove group" : "Grubu sil",
"Your biography" : "Özgeçmişiniz",
"You are using <strong>{usage}</strong>" : "<strong>{usage}</strong> kullanıyorsunuz",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "<strong>{usage}</strong> / <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>) kullanıyorsunuz",
diff --git a/apps/settings/l10n/tr.json b/apps/settings/l10n/tr.json
index bddc44c3ccd..8f0f248ca9d 100644
--- a/apps/settings/l10n/tr.json
+++ b/apps/settings/l10n/tr.json
@@ -581,12 +581,9 @@
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Verilerinizi düzenli yedekleyin ve şifreleme kullanıyorsanız şifreleme anahtarlarınızın da verilerinizle birlikte yedeklendiğinden emin olun.",
"Refer to the admin documentation on how to manually also encrypt existing files." : "Var olan dosyaların el ile nasıl şifreleneceğini öğrenmek için yönetici belgelerine bakın.",
"This is the final warning: Do you really want to enable encryption?" : "Son uyarı: Şifrelemeyi kullanıma almak istiyor musunuz?",
- "Failed to remove group \"{group}\"" : "\"{group}\" grubu silinemedi",
"Please confirm the group removal" : "Grubu silme işlemini onaylayın",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "\"{group}\" grubunu silmek üzeresiniz. Hesaplar SİLİNMEYECEK.",
"Submit" : "Gönder",
"Rename group" : "Grubu yeniden adlandır",
- "Remove group" : "Grubu sil",
"Current password" : "Geçerli parola",
"New password" : "Yeni parola",
"Change password" : "Parola değiştir",
@@ -894,6 +891,9 @@
"for WebAuthn passwordless login, and SFTP storage" : "WebAuthn parolasız oturum açma ve SFTP depolama alanı için",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "PostgreSQL \"%s\" sürümü bulundu. Bu Nextcloud sürümüyle en iyi başarım, kararlılık ve işlevsellik sağlamak için PostgreSQL sürümünün 12 ile 16 arasında olması önerilir.",
"Set default expiration date for shares" : "Paylaşımlar için varsayılan geçerlilik süresi sonu ayarlansın",
+ "Failed to remove group \"{group}\"" : "\"{group}\" grubu silinemedi",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "\"{group}\" grubunu silmek üzeresiniz. Hesaplar SİLİNMEYECEK.",
+ "Remove group" : "Grubu sil",
"Your biography" : "Özgeçmişiniz",
"You are using <strong>{usage}</strong>" : "<strong>{usage}</strong> kullanıyorsunuz",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "<strong>{usage}</strong> / <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>) kullanıyorsunuz",
diff --git a/apps/settings/l10n/ug.js b/apps/settings/l10n/ug.js
index ab123b29b7d..c85b852747a 100644
--- a/apps/settings/l10n/ug.js
+++ b/apps/settings/l10n/ug.js
@@ -518,12 +518,9 @@ OC.L10N.register(
"Be aware that encryption always increases the file size." : "شۇنىڭغا دىققەت قىلىڭكى ، شىفىرلاش ھەمىشە ھۆججەتنىڭ چوڭ-كىچىكلىكىنى ئاشۇرىدۇ.",
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "شىفىرلانغان ئەھۋال ئاستىدا شىفىرلاش كۇنۇپكىسىنى سانلىق مەلۇماتلىرىڭىز بىلەن بىللە زاپاسلاشنى جەزملەشتۈرۈڭ.",
"This is the final warning: Do you really want to enable encryption?" : "بۇ ئاخىرقى ئاگاھلاندۇرۇش: مەخپىيلەشتۈرۈشنى قوزغىتىشنى خالامسىز؟",
- "Failed to remove group \"{group}\"" : "«{group}» گۇرۇپپىسىنى ئۆچۈرەلمىدى",
"Please confirm the group removal" : "گۇرۇپپا ئۆچۈرۈلگەنلىكىنى جەزملەشتۈرۈڭ",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "سىز «{group}» گۇرۇپپىسىنى ئۆچۈرمەكچى بولۇۋاتىسىز. ھېساباتلار ئۆچۈرۈلمەيدۇ.",
"Submit" : "يوللاڭ",
"Rename group" : "گۇرۇپپىنىڭ نامىنى ئۆزگەرتىش",
- "Remove group" : "گۇرۇپپىنى ئۆچۈرۈڭ",
"Current password" : "نۆۋەتتىكى ئىم",
"New password" : "يېڭى ئىم",
"Change password" : "ئىم ئۆزگەرت",
@@ -816,6 +813,9 @@ OC.L10N.register(
"for WebAuthn passwordless login, and SFTP storage" : "WebAuthn پارولسىز كىرىش ۋە SFTP ساقلاش ئۈچۈن",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "PostgreSQL نەشرى \"% s\" بايقالدى. PostgreSQL> = 12 ۋە <= 16 Nextcloud نىڭ بۇ نەشرى بىلەن ئەڭ ياخشى ئىقتىدار ، مۇقىملىق ۋە ئىقتىدار ئۈچۈن تەۋسىيە قىلىنىدۇ.",
"Set default expiration date for shares" : "پاي چېكىنىڭ سۈكۈتتىكى مۇددىتىنى بەلگىلەڭ",
+ "Failed to remove group \"{group}\"" : "«{group}» گۇرۇپپىسىنى ئۆچۈرەلمىدى",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "سىز «{group}» گۇرۇپپىسىنى ئۆچۈرمەكچى بولۇۋاتىسىز. ھېساباتلار ئۆچۈرۈلمەيدۇ.",
+ "Remove group" : "گۇرۇپپىنى ئۆچۈرۈڭ",
"Your biography" : "تەرجىمىھالىڭىز",
"You are using <strong>{usage}</strong>" : "سىز <strong> {usage} </strong> نى ئىشلىتىۋاتىسىز",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "سىز <strong> {usage} </strong> نىڭ <strong> {totalSpace} </strong> نى ئىشلىتىۋاتىسىز (<strong> {usageRelative}% </strong>)"
diff --git a/apps/settings/l10n/ug.json b/apps/settings/l10n/ug.json
index 9e48ca73084..a1469885f2e 100644
--- a/apps/settings/l10n/ug.json
+++ b/apps/settings/l10n/ug.json
@@ -516,12 +516,9 @@
"Be aware that encryption always increases the file size." : "شۇنىڭغا دىققەت قىلىڭكى ، شىفىرلاش ھەمىشە ھۆججەتنىڭ چوڭ-كىچىكلىكىنى ئاشۇرىدۇ.",
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "شىفىرلانغان ئەھۋال ئاستىدا شىفىرلاش كۇنۇپكىسىنى سانلىق مەلۇماتلىرىڭىز بىلەن بىللە زاپاسلاشنى جەزملەشتۈرۈڭ.",
"This is the final warning: Do you really want to enable encryption?" : "بۇ ئاخىرقى ئاگاھلاندۇرۇش: مەخپىيلەشتۈرۈشنى قوزغىتىشنى خالامسىز؟",
- "Failed to remove group \"{group}\"" : "«{group}» گۇرۇپپىسىنى ئۆچۈرەلمىدى",
"Please confirm the group removal" : "گۇرۇپپا ئۆچۈرۈلگەنلىكىنى جەزملەشتۈرۈڭ",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "سىز «{group}» گۇرۇپپىسىنى ئۆچۈرمەكچى بولۇۋاتىسىز. ھېساباتلار ئۆچۈرۈلمەيدۇ.",
"Submit" : "يوللاڭ",
"Rename group" : "گۇرۇپپىنىڭ نامىنى ئۆزگەرتىش",
- "Remove group" : "گۇرۇپپىنى ئۆچۈرۈڭ",
"Current password" : "نۆۋەتتىكى ئىم",
"New password" : "يېڭى ئىم",
"Change password" : "ئىم ئۆزگەرت",
@@ -814,6 +811,9 @@
"for WebAuthn passwordless login, and SFTP storage" : "WebAuthn پارولسىز كىرىش ۋە SFTP ساقلاش ئۈچۈن",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "PostgreSQL نەشرى \"% s\" بايقالدى. PostgreSQL> = 12 ۋە <= 16 Nextcloud نىڭ بۇ نەشرى بىلەن ئەڭ ياخشى ئىقتىدار ، مۇقىملىق ۋە ئىقتىدار ئۈچۈن تەۋسىيە قىلىنىدۇ.",
"Set default expiration date for shares" : "پاي چېكىنىڭ سۈكۈتتىكى مۇددىتىنى بەلگىلەڭ",
+ "Failed to remove group \"{group}\"" : "«{group}» گۇرۇپپىسىنى ئۆچۈرەلمىدى",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "سىز «{group}» گۇرۇپپىسىنى ئۆچۈرمەكچى بولۇۋاتىسىز. ھېساباتلار ئۆچۈرۈلمەيدۇ.",
+ "Remove group" : "گۇرۇپپىنى ئۆچۈرۈڭ",
"Your biography" : "تەرجىمىھالىڭىز",
"You are using <strong>{usage}</strong>" : "سىز <strong> {usage} </strong> نى ئىشلىتىۋاتىسىز",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "سىز <strong> {usage} </strong> نىڭ <strong> {totalSpace} </strong> نى ئىشلىتىۋاتىسىز (<strong> {usageRelative}% </strong>)"
diff --git a/apps/settings/l10n/uk.js b/apps/settings/l10n/uk.js
index f0680a777c2..25bfa4918a9 100644
--- a/apps/settings/l10n/uk.js
+++ b/apps/settings/l10n/uk.js
@@ -473,11 +473,9 @@ OC.L10N.register(
"Be aware that encryption always increases the file size." : "Майте на увазі, що шифрування завжди збільшує розмір файлів.",
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Завжди корисно регулярно створювати резервні копії ваших даних, у разі шифрування обов’язково зробіть резервну копію ключів шифрування разом із вашими даними.",
"This is the final warning: Do you really want to enable encryption?" : "Це останнє попередження: Ви справді хочете ввімкнути шифрування?",
- "Failed to remove group \"{group}\"" : "Не вдалося вилучити групу \"{group}\"",
"Please confirm the group removal" : "Підтвердіть вилучення групи",
"Submit" : "Продовжити",
"Rename group" : "Перейменувати групу",
- "Remove group" : "Вилучити групу",
"Current password" : "Поточний пароль",
"New password" : "Новий пароль",
"Change password" : "Змінити пароль",
@@ -760,6 +758,8 @@ OC.L10N.register(
"for WebAuthn passwordless login" : "для безпарольного входу за допомогою WebAuthn",
"for WebAuthn passwordless login, and SFTP storage" : "для безпарольного входу за допомогою WebAuthn та сховище SFTP",
"Set default expiration date for shares" : "Встановити типовий термін дії для спільних ресурсів",
+ "Failed to remove group \"{group}\"" : "Не вдалося вилучити групу \"{group}\"",
+ "Remove group" : "Вилучити групу",
"Your biography" : "Коротко про себе",
"You are using <strong>{usage}</strong>" : "Ви використовуєте <strong>{usage}",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Ви використовуєте <strong>{usage}</strong> із <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/uk.json b/apps/settings/l10n/uk.json
index e5052a92171..75b352aabce 100644
--- a/apps/settings/l10n/uk.json
+++ b/apps/settings/l10n/uk.json
@@ -471,11 +471,9 @@
"Be aware that encryption always increases the file size." : "Майте на увазі, що шифрування завжди збільшує розмір файлів.",
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Завжди корисно регулярно створювати резервні копії ваших даних, у разі шифрування обов’язково зробіть резервну копію ключів шифрування разом із вашими даними.",
"This is the final warning: Do you really want to enable encryption?" : "Це останнє попередження: Ви справді хочете ввімкнути шифрування?",
- "Failed to remove group \"{group}\"" : "Не вдалося вилучити групу \"{group}\"",
"Please confirm the group removal" : "Підтвердіть вилучення групи",
"Submit" : "Продовжити",
"Rename group" : "Перейменувати групу",
- "Remove group" : "Вилучити групу",
"Current password" : "Поточний пароль",
"New password" : "Новий пароль",
"Change password" : "Змінити пароль",
@@ -758,6 +756,8 @@
"for WebAuthn passwordless login" : "для безпарольного входу за допомогою WebAuthn",
"for WebAuthn passwordless login, and SFTP storage" : "для безпарольного входу за допомогою WebAuthn та сховище SFTP",
"Set default expiration date for shares" : "Встановити типовий термін дії для спільних ресурсів",
+ "Failed to remove group \"{group}\"" : "Не вдалося вилучити групу \"{group}\"",
+ "Remove group" : "Вилучити групу",
"Your biography" : "Коротко про себе",
"You are using <strong>{usage}</strong>" : "Ви використовуєте <strong>{usage}",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Ви використовуєте <strong>{usage}</strong> із <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)"
diff --git a/apps/settings/l10n/vi.js b/apps/settings/l10n/vi.js
index 4ad76354817..53600787e84 100644
--- a/apps/settings/l10n/vi.js
+++ b/apps/settings/l10n/vi.js
@@ -268,11 +268,9 @@ OC.L10N.register(
"Be aware that encryption always increases the file size." : "Xin lưu ý rằng mã hóa luôn làm tăng kích thước tệp.",
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Việc tạo bản sao lưu thường xuyên cho dữ liệu của bạn luôn là điều tốt, trong trường hợp mã hóa, hãy đảm bảo sao lưu các khóa mã hóa cùng với dữ liệu của bạn.",
"This is the final warning: Do you really want to enable encryption?" : "Cảnh báo lần cuối: Bạn có thực sự muốn kích hoạt tính năng mã hoá?",
- "Failed to remove group \"{group}\"" : "Không xóa được nhóm \"{group}\"",
"Please confirm the group removal" : "Vui lòng xác nhận việc xóa nhóm",
"Submit" : "Gửi đi",
"Rename group" : "Đổi tên nhóm",
- "Remove group" : "Xóa nhóm",
"Current password" : "Mật khẩu cũ",
"New password" : "Mật khẩu mới",
"Change password" : "Đổi mật khẩu",
@@ -466,6 +464,8 @@ OC.L10N.register(
"Checking for system and security issues." : "Kiểm tra các vấn đề về hệ thống và bảo mật.",
"Use a second factor besides your password to increase security for your account." : "Sử dụng yếu tố thứ hai ngoài mật khẩu để tăng tính bảo mật cho tài khoản của bạn.",
"Set default expiration date for shares" : "Đặt ngày hết hạn mặc định cho cổ phiếu",
+ "Failed to remove group \"{group}\"" : "Không xóa được nhóm \"{group}\"",
+ "Remove group" : "Xóa nhóm",
"Your biography" : "Tiểu sử của bạn",
"You are using <strong>{usage}</strong>" : "Bạn đang sử dụng {usage}",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Bạn đang sử dụng {usage} trên {totalSpace} ({usageRelative}%)"
diff --git a/apps/settings/l10n/vi.json b/apps/settings/l10n/vi.json
index 1d316d3369d..e1492110d58 100644
--- a/apps/settings/l10n/vi.json
+++ b/apps/settings/l10n/vi.json
@@ -266,11 +266,9 @@
"Be aware that encryption always increases the file size." : "Xin lưu ý rằng mã hóa luôn làm tăng kích thước tệp.",
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Việc tạo bản sao lưu thường xuyên cho dữ liệu của bạn luôn là điều tốt, trong trường hợp mã hóa, hãy đảm bảo sao lưu các khóa mã hóa cùng với dữ liệu của bạn.",
"This is the final warning: Do you really want to enable encryption?" : "Cảnh báo lần cuối: Bạn có thực sự muốn kích hoạt tính năng mã hoá?",
- "Failed to remove group \"{group}\"" : "Không xóa được nhóm \"{group}\"",
"Please confirm the group removal" : "Vui lòng xác nhận việc xóa nhóm",
"Submit" : "Gửi đi",
"Rename group" : "Đổi tên nhóm",
- "Remove group" : "Xóa nhóm",
"Current password" : "Mật khẩu cũ",
"New password" : "Mật khẩu mới",
"Change password" : "Đổi mật khẩu",
@@ -464,6 +462,8 @@
"Checking for system and security issues." : "Kiểm tra các vấn đề về hệ thống và bảo mật.",
"Use a second factor besides your password to increase security for your account." : "Sử dụng yếu tố thứ hai ngoài mật khẩu để tăng tính bảo mật cho tài khoản của bạn.",
"Set default expiration date for shares" : "Đặt ngày hết hạn mặc định cho cổ phiếu",
+ "Failed to remove group \"{group}\"" : "Không xóa được nhóm \"{group}\"",
+ "Remove group" : "Xóa nhóm",
"Your biography" : "Tiểu sử của bạn",
"You are using <strong>{usage}</strong>" : "Bạn đang sử dụng {usage}",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Bạn đang sử dụng {usage} trên {totalSpace} ({usageRelative}%)"
diff --git a/apps/settings/l10n/zh_CN.js b/apps/settings/l10n/zh_CN.js
index 49c78044548..a925f3f0682 100644
--- a/apps/settings/l10n/zh_CN.js
+++ b/apps/settings/l10n/zh_CN.js
@@ -315,6 +315,7 @@ OC.L10N.register(
"Architecture" : "建筑风格",
"64-bit" : "64位",
"It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit!" : "您似乎正在使用32位的PHP版本。Nextcloud需要64位的PHP版本以便良好运行。请升级您的系统和PHP版本至64位!",
+ "Task Processing pickup speed" : "任务处理拾取速度",
"Temporary space available" : "可用临时空间",
"Error while checking the temporary PHP path - it was not properly set to a directory. Returned value: %s" : "检查临时 PHP 路径时出错 - 未正确设置为目录。 返回值: %s",
"The PHP function \"disk_free_space\" is disabled, which prevents the check for enough space in the temporary directories." : "PHP 函数 \"disk_free_space\" 被禁用,这会阻止检查临时目录中是否有足够的空间。",
@@ -583,12 +584,9 @@ OC.L10N.register(
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "定期备份数据有助于保证数据完整,并且确保备份您的加密数据和加密密钥。",
"Refer to the admin documentation on how to manually also encrypt existing files." : "请参阅管理员文档,了解如何手动加密现有文件。",
"This is the final warning: Do you really want to enable encryption?" : "这是最后一次警告:您确定要启用加密?",
- "Failed to remove group \"{group}\"" : "删除群组 “{group}” 失败",
"Please confirm the group removal" : "请确认移除该群组",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "您即将删除组 \"{group}\" 。 这些帐户不会被删除。",
"Submit" : "提交",
"Rename group" : "重命名分组",
- "Remove group" : "删除分组",
"Current password" : "当前密码",
"New password" : "新密码",
"Change password" : "修改密码",
@@ -896,6 +894,9 @@ OC.L10N.register(
"for WebAuthn passwordless login, and SFTP storage" : "用于 WebAuthn 无密码登录和 SFTP 存储",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "检测到 PostgreSQL 版本\"%s\"。建议使用 PostgreSQL >=12 和 <=16,以获得此版本 Nextcloud 的最佳性能、稳定性和功能。",
"Set default expiration date for shares" : "设置共享的默认截止日期",
+ "Failed to remove group \"{group}\"" : "删除群组 “{group}” 失败",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "您即将删除组 \"{group}\" 。 这些帐户不会被删除。",
+ "Remove group" : "删除分组",
"Your biography" : "个人简介",
"You are using <strong>{usage}</strong>" : "您已使用<strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "您已使用 <strong>{totalSpace}</strong> 中的 <strong>{usage}</strong> (<strong>{usageRelative}%</strong>)",
diff --git a/apps/settings/l10n/zh_CN.json b/apps/settings/l10n/zh_CN.json
index 2180ac68a8b..1eddc87407f 100644
--- a/apps/settings/l10n/zh_CN.json
+++ b/apps/settings/l10n/zh_CN.json
@@ -313,6 +313,7 @@
"Architecture" : "建筑风格",
"64-bit" : "64位",
"It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit!" : "您似乎正在使用32位的PHP版本。Nextcloud需要64位的PHP版本以便良好运行。请升级您的系统和PHP版本至64位!",
+ "Task Processing pickup speed" : "任务处理拾取速度",
"Temporary space available" : "可用临时空间",
"Error while checking the temporary PHP path - it was not properly set to a directory. Returned value: %s" : "检查临时 PHP 路径时出错 - 未正确设置为目录。 返回值: %s",
"The PHP function \"disk_free_space\" is disabled, which prevents the check for enough space in the temporary directories." : "PHP 函数 \"disk_free_space\" 被禁用,这会阻止检查临时目录中是否有足够的空间。",
@@ -581,12 +582,9 @@
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "定期备份数据有助于保证数据完整,并且确保备份您的加密数据和加密密钥。",
"Refer to the admin documentation on how to manually also encrypt existing files." : "请参阅管理员文档,了解如何手动加密现有文件。",
"This is the final warning: Do you really want to enable encryption?" : "这是最后一次警告:您确定要启用加密?",
- "Failed to remove group \"{group}\"" : "删除群组 “{group}” 失败",
"Please confirm the group removal" : "请确认移除该群组",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "您即将删除组 \"{group}\" 。 这些帐户不会被删除。",
"Submit" : "提交",
"Rename group" : "重命名分组",
- "Remove group" : "删除分组",
"Current password" : "当前密码",
"New password" : "新密码",
"Change password" : "修改密码",
@@ -894,6 +892,9 @@
"for WebAuthn passwordless login, and SFTP storage" : "用于 WebAuthn 无密码登录和 SFTP 存储",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "检测到 PostgreSQL 版本\"%s\"。建议使用 PostgreSQL >=12 和 <=16,以获得此版本 Nextcloud 的最佳性能、稳定性和功能。",
"Set default expiration date for shares" : "设置共享的默认截止日期",
+ "Failed to remove group \"{group}\"" : "删除群组 “{group}” 失败",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "您即将删除组 \"{group}\" 。 这些帐户不会被删除。",
+ "Remove group" : "删除分组",
"Your biography" : "个人简介",
"You are using <strong>{usage}</strong>" : "您已使用<strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "您已使用 <strong>{totalSpace}</strong> 中的 <strong>{usage}</strong> (<strong>{usageRelative}%</strong>)",
diff --git a/apps/settings/l10n/zh_HK.js b/apps/settings/l10n/zh_HK.js
index b6c78f5a94c..fca9341e8f5 100644
--- a/apps/settings/l10n/zh_HK.js
+++ b/apps/settings/l10n/zh_HK.js
@@ -315,6 +315,10 @@ OC.L10N.register(
"Architecture" : "建築學",
"64-bit" : "64 位元",
"It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit!" : "您似乎正在執行 32 位元版本的 PHP。Nextcloud 需要 64 位元才能運作良好。請將您的作業系統與 PHP 升級至 64 位元!",
+ "Task Processing pickup speed" : "任務處理提取速度",
+ "_No scheduled tasks in the last %n hours._::_No scheduled tasks in the last %n hours._" : ["最近 %n 小時內沒有預先安排好的的任務。"],
+ "_The task pickup speed has been ok in the last %n hour._::_The task pickup speed has been ok in the last %n hours._" : ["在最近 %n 小時內,任務的提取速度正常。"],
+ "_The task pickup speed has been slow in the last %n hour. Many tasks took longer than 4 minutes to be picked up. Consider setting up a worker to process tasks in the background._::_The task pickup speed has been slow in the last %n hours. Many tasks took longer than 4 minutes to be picked up. Consider setting up a worker to process tasks in the background._" : ["最近 %n 小時內,任務提取速度較慢。許多任務花了超過4分鐘才被提取。考慮設置一個工作人員在背景中處理任務。"],
"Temporary space available" : "可用臨時空間",
"Error while checking the temporary PHP path - it was not properly set to a directory. Returned value: %s" : "檢查臨時 PHP 路徑時發生錯誤 - 未正確設定為目錄。回傳值:%s",
"The PHP function \"disk_free_space\" is disabled, which prevents the check for enough space in the temporary directories." : "PHP 函式「disk_free_space」已停用,這會導致無法檢查臨時目錄中的剩餘空間。",
@@ -583,12 +587,9 @@ OC.L10N.register(
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "定時備份您的資料沒有壞處,若您有啟用加密,請確保您也有備份加密金鑰。",
"Refer to the admin documentation on how to manually also encrypt existing files." : "請參考管理說明書,了解如何手動加密現有檔案。",
"This is the final warning: Do you really want to enable encryption?" : "這是最後的警告:請問您真的要開啟加密模式?",
- "Failed to remove group \"{group}\"" : "移除群組「{group}」失敗",
"Please confirm the group removal" : "請確認移除群組",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "您將要移除群組「{group}」。帳戶將不會被刪除。",
"Submit" : "遞交",
"Rename group" : "重新命名群組",
- "Remove group" : "移除群組",
"Current password" : "目前密碼",
"New password" : "新密碼",
"Change password" : "更改密碼",
@@ -896,6 +897,9 @@ OC.L10N.register(
"for WebAuthn passwordless login, and SFTP storage" : "用於 WebAuthn 無密碼登入與 SFTP 儲存空間",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "偵測到 PostgreSQL 版本「%s」。建議使用 PostgreSQL >=12 且 <=16 以取得此版本 Nextcloud 的最佳效能、穩定性與功能。",
"Set default expiration date for shares" : "設定分享的預設到期日",
+ "Failed to remove group \"{group}\"" : "移除群組「{group}」失敗",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "您將要移除群組「{group}」。帳戶將不會被刪除。",
+ "Remove group" : "移除群組",
"Your biography" : "個人小傳",
"You are using <strong>{usage}</strong>" : "您已使用了 <strong>{usage}</strong> 的存儲空間",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "您已使用了 <strong>{totalSpace}</strong> 中的 <strong>{usage}</strong>(<strong>{usageRelative} %</strong>)",
diff --git a/apps/settings/l10n/zh_HK.json b/apps/settings/l10n/zh_HK.json
index bb9025948ea..4563ce6a158 100644
--- a/apps/settings/l10n/zh_HK.json
+++ b/apps/settings/l10n/zh_HK.json
@@ -313,6 +313,10 @@
"Architecture" : "建築學",
"64-bit" : "64 位元",
"It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit!" : "您似乎正在執行 32 位元版本的 PHP。Nextcloud 需要 64 位元才能運作良好。請將您的作業系統與 PHP 升級至 64 位元!",
+ "Task Processing pickup speed" : "任務處理提取速度",
+ "_No scheduled tasks in the last %n hours._::_No scheduled tasks in the last %n hours._" : ["最近 %n 小時內沒有預先安排好的的任務。"],
+ "_The task pickup speed has been ok in the last %n hour._::_The task pickup speed has been ok in the last %n hours._" : ["在最近 %n 小時內,任務的提取速度正常。"],
+ "_The task pickup speed has been slow in the last %n hour. Many tasks took longer than 4 minutes to be picked up. Consider setting up a worker to process tasks in the background._::_The task pickup speed has been slow in the last %n hours. Many tasks took longer than 4 minutes to be picked up. Consider setting up a worker to process tasks in the background._" : ["最近 %n 小時內,任務提取速度較慢。許多任務花了超過4分鐘才被提取。考慮設置一個工作人員在背景中處理任務。"],
"Temporary space available" : "可用臨時空間",
"Error while checking the temporary PHP path - it was not properly set to a directory. Returned value: %s" : "檢查臨時 PHP 路徑時發生錯誤 - 未正確設定為目錄。回傳值:%s",
"The PHP function \"disk_free_space\" is disabled, which prevents the check for enough space in the temporary directories." : "PHP 函式「disk_free_space」已停用,這會導致無法檢查臨時目錄中的剩餘空間。",
@@ -581,12 +585,9 @@
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "定時備份您的資料沒有壞處,若您有啟用加密,請確保您也有備份加密金鑰。",
"Refer to the admin documentation on how to manually also encrypt existing files." : "請參考管理說明書,了解如何手動加密現有檔案。",
"This is the final warning: Do you really want to enable encryption?" : "這是最後的警告:請問您真的要開啟加密模式?",
- "Failed to remove group \"{group}\"" : "移除群組「{group}」失敗",
"Please confirm the group removal" : "請確認移除群組",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "您將要移除群組「{group}」。帳戶將不會被刪除。",
"Submit" : "遞交",
"Rename group" : "重新命名群組",
- "Remove group" : "移除群組",
"Current password" : "目前密碼",
"New password" : "新密碼",
"Change password" : "更改密碼",
@@ -894,6 +895,9 @@
"for WebAuthn passwordless login, and SFTP storage" : "用於 WebAuthn 無密碼登入與 SFTP 儲存空間",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "偵測到 PostgreSQL 版本「%s」。建議使用 PostgreSQL >=12 且 <=16 以取得此版本 Nextcloud 的最佳效能、穩定性與功能。",
"Set default expiration date for shares" : "設定分享的預設到期日",
+ "Failed to remove group \"{group}\"" : "移除群組「{group}」失敗",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "您將要移除群組「{group}」。帳戶將不會被刪除。",
+ "Remove group" : "移除群組",
"Your biography" : "個人小傳",
"You are using <strong>{usage}</strong>" : "您已使用了 <strong>{usage}</strong> 的存儲空間",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "您已使用了 <strong>{totalSpace}</strong> 中的 <strong>{usage}</strong>(<strong>{usageRelative} %</strong>)",
diff --git a/apps/settings/l10n/zh_TW.js b/apps/settings/l10n/zh_TW.js
index 170f5b602d7..bd5896551ce 100644
--- a/apps/settings/l10n/zh_TW.js
+++ b/apps/settings/l10n/zh_TW.js
@@ -583,12 +583,9 @@ OC.L10N.register(
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "定期備份您的資料常有幫助,若您有啟用加密,請確保您也有備份加密金鑰。",
"Refer to the admin documentation on how to manually also encrypt existing files." : "請參考管理說明文件,了解如何手動加密現有檔案。",
"This is the final warning: Do you really want to enable encryption?" : "這是最後的警告:請問您真的要開啟加密模式?",
- "Failed to remove group \"{group}\"" : "移除群組「{group}」失敗",
"Please confirm the group removal" : "請確認移除群組",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "您將要移除群組「{group}」。帳號將不會被刪除。",
"Submit" : "提交",
"Rename group" : "重新命名群組",
- "Remove group" : "移除群組",
"Current password" : "目前密碼",
"New password" : "新密碼",
"Change password" : "變更密碼",
@@ -896,6 +893,9 @@ OC.L10N.register(
"for WebAuthn passwordless login, and SFTP storage" : "用於 WebAuthn 無密碼登入與 SFTP 儲存空間",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "偵測到 PostgreSQL 版本「%s」。建議使用 PostgreSQL >=12 且 <=16 以取得此版本 Nextcloud 的最佳效能、穩定性與功能。",
"Set default expiration date for shares" : "設定分享的預設到期日",
+ "Failed to remove group \"{group}\"" : "移除群組「{group}」失敗",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "您將要移除群組「{group}」。帳號將不會被刪除。",
+ "Remove group" : "移除群組",
"Your biography" : "您的自傳",
"You are using <strong>{usage}</strong>" : "您已使用 <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "您已使用 <strong>{totalSpace}</strong> 中的 <strong>{usage}</strong> (<strong>{usageRelative}%</strong>)",
diff --git a/apps/settings/l10n/zh_TW.json b/apps/settings/l10n/zh_TW.json
index 88fd907b300..38e05d1ec85 100644
--- a/apps/settings/l10n/zh_TW.json
+++ b/apps/settings/l10n/zh_TW.json
@@ -581,12 +581,9 @@
"It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "定期備份您的資料常有幫助,若您有啟用加密,請確保您也有備份加密金鑰。",
"Refer to the admin documentation on how to manually also encrypt existing files." : "請參考管理說明文件,了解如何手動加密現有檔案。",
"This is the final warning: Do you really want to enable encryption?" : "這是最後的警告:請問您真的要開啟加密模式?",
- "Failed to remove group \"{group}\"" : "移除群組「{group}」失敗",
"Please confirm the group removal" : "請確認移除群組",
- "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "您將要移除群組「{group}」。帳號將不會被刪除。",
"Submit" : "提交",
"Rename group" : "重新命名群組",
- "Remove group" : "移除群組",
"Current password" : "目前密碼",
"New password" : "新密碼",
"Change password" : "變更密碼",
@@ -894,6 +891,9 @@
"for WebAuthn passwordless login, and SFTP storage" : "用於 WebAuthn 無密碼登入與 SFTP 儲存空間",
"PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "偵測到 PostgreSQL 版本「%s」。建議使用 PostgreSQL >=12 且 <=16 以取得此版本 Nextcloud 的最佳效能、穩定性與功能。",
"Set default expiration date for shares" : "設定分享的預設到期日",
+ "Failed to remove group \"{group}\"" : "移除群組「{group}」失敗",
+ "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "您將要移除群組「{group}」。帳號將不會被刪除。",
+ "Remove group" : "移除群組",
"Your biography" : "您的自傳",
"You are using <strong>{usage}</strong>" : "您已使用 <strong>{usage}</strong>",
"You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "您已使用 <strong>{totalSpace}</strong> 中的 <strong>{usage}</strong> (<strong>{usageRelative}%</strong>)",
diff --git a/apps/settings/lib/SetupChecks/TaskProcessingPickupSpeed.php b/apps/settings/lib/SetupChecks/TaskProcessingPickupSpeed.php
index 8e6448f91d4..4fb2b10cf33 100644
--- a/apps/settings/lib/SetupChecks/TaskProcessingPickupSpeed.php
+++ b/apps/settings/lib/SetupChecks/TaskProcessingPickupSpeed.php
@@ -38,7 +38,7 @@ class TaskProcessingPickupSpeed implements ISetupCheck {
$tasks = $this->taskProcessingManager->getTasks(userId: '', scheduleAfter: $this->timeFactory->now()->getTimestamp() - 60 * 60 * self::TIME_SPAN); // userId: '' means no filter, whereas null would mean guest
$taskCount = count($tasks);
if ($taskCount === 0) {
- return SetupResult::success($this->l10n->t('No scheduled tasks in the last {hours} hours.', ['hours' => self::TIME_SPAN]));
+ return SetupResult::success($this->l10n->n('No scheduled tasks in the last %n hours.', 'No scheduled tasks in the last %n hours.', self::TIME_SPAN));
}
$slowCount = 0;
foreach ($tasks as $task) {
@@ -55,9 +55,9 @@ class TaskProcessingPickupSpeed implements ISetupCheck {
}
if ($slowCount / $taskCount < self::MAX_SLOW_PERCENTAGE) {
- return SetupResult::success($this->l10n->t('Task pickup speed is ok in the last {hours} hours.', ['hours' => self::TIME_SPAN]));
+ return SetupResult::success($this->l10n->n('The task pickup speed has been ok in the last %n hour.', 'The task pickup speed has been ok in the last %n hours.', self::TIME_SPAN));
} else {
- return SetupResult::warning($this->l10n->t('Task pickup speed is slow in the last {hours} hours. Many tasks took longer than 4 min to get picked up. Consider setting up a worker to process tasks in the background.', ['hours' => self::TIME_SPAN]), 'https://docs.nextcloud.com/server/latest/admin_manual/ai/overview.html#improve-ai-task-pickup-speed');
+ return SetupResult::warning($this->l10n->n('The task pickup speed has been slow in the last %n hour. Many tasks took longer than 4 minutes to be picked up. Consider setting up a worker to process tasks in the background.', 'The task pickup speed has been slow in the last %n hours. Many tasks took longer than 4 minutes to be picked up. Consider setting up a worker to process tasks in the background.', self::TIME_SPAN), 'https://docs.nextcloud.com/server/latest/admin_manual/ai/overview.html#improve-ai-task-pickup-speed');
}
}
}
diff --git a/apps/settings/src/components/GroupListItem.vue b/apps/settings/src/components/GroupListItem.vue
index 65d46136ec1..76088fa74db 100644
--- a/apps/settings/src/components/GroupListItem.vue
+++ b/apps/settings/src/components/GroupListItem.vue
@@ -13,7 +13,7 @@
</h2>
<NcNoteCard type="warning"
show-alert>
- {{ t('settings', 'You are about to remove the group "{group}". The accounts will NOT be deleted.', { group: name }) }}
+ {{ t('settings', 'You are about to delete the group "{group}". The accounts will NOT be deleted.', { group: name }) }}
</NcNoteCard>
<div class="modal__button-row">
<NcButton type="secondary"
@@ -62,7 +62,7 @@
<template #icon>
<Delete :size="20" />
</template>
- {{ t('settings', 'Remove group') }}
+ {{ t('settings', 'Delete group') }}
</NcActionButton>
</template>
</NcAppNavigationItem>
@@ -179,7 +179,7 @@ export default {
await this.$store.dispatch('removeGroup', this.id)
this.showRemoveGroupModal = false
} catch (error) {
- showError(t('settings', 'Failed to remove group "{group}"', { group: this.name }))
+ showError(t('settings', 'Failed to delete group "{group}"', { group: this.name }))
}
},
},
diff --git a/apps/webhook_listeners/l10n/et_EE.js b/apps/webhook_listeners/l10n/et_EE.js
new file mode 100644
index 00000000000..39fc925dfc4
--- /dev/null
+++ b/apps/webhook_listeners/l10n/et_EE.js
@@ -0,0 +1,7 @@
+OC.L10N.register(
+ "webhook_listeners",
+ {
+ "Webhooks" : "Veebihaagid",
+ "Nextcloud webhook support" : "Veebihaakide (webhook) tugi Nextcloudi jaoks"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/webhook_listeners/l10n/et_EE.json b/apps/webhook_listeners/l10n/et_EE.json
new file mode 100644
index 00000000000..62ac64b0765
--- /dev/null
+++ b/apps/webhook_listeners/l10n/et_EE.json
@@ -0,0 +1,5 @@
+{ "translations": {
+ "Webhooks" : "Veebihaagid",
+ "Nextcloud webhook support" : "Veebihaakide (webhook) tugi Nextcloudi jaoks"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/core/l10n/ar.js b/core/l10n/ar.js
index 6c70746a913..ca232bd5ada 100644
--- a/core/l10n/ar.js
+++ b/core/l10n/ar.js
@@ -51,6 +51,11 @@ OC.L10N.register(
"No translation provider available" : "لا توجد خدمة للترجمة",
"Could not detect language" : "لم يُمكن اكتشاف اللغة",
"Unable to translate" : "لم يُمكن الترجمة",
+ "[%d / %d]: %s" : "[%d/%d]: %s",
+ "Repair step:" : "خطوة صيانة:",
+ "Repair info:" : "معلومات صيانة:",
+ "Repair warning:" : "تحذير صيانة:",
+ "Repair error:" : "خطأ صيانة:",
"Nextcloud Server" : "خادم نكست كلاود",
"Some of your link shares have been removed" : "تم ازالة البعض من مشاركة الروابط الخاصة بك.",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "نظرا لسبب آمني تم ازالة البعض من روابط المشاركة الخاصة بك. يرجى مراجعة الرابط التالي لمزيد من التفاصيل.",
@@ -58,11 +63,6 @@ OC.L10N.register(
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "أدخِل مفتاح الاشتراك الخاص بك في تطبيق الدعم لزيادة حد الأقصى من الحسابات. يمنحك هذا أيضًا جميع المزايا الإضافية التي يقدمها Nextcloud Enterprise ويوصى به بشدة للشركات و المؤسسات.",
"Learn more ↗" : "تعلم المزيد ↗",
"Preparing update" : "جارٍ تهيئة التحديث",
- "[%d / %d]: %s" : "[%d/%d]: %s",
- "Repair step:" : "خطوة صيانة:",
- "Repair info:" : "معلومات صيانة:",
- "Repair warning:" : "تحذير صيانة:",
- "Repair error:" : "خطأ صيانة:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "يرجى الترقية من خلال سطر الأوامر command line updater حيث أن الترقية من المستعرض معطلة في ملف config.php.",
"Turned on maintenance mode" : "تشغيل وضع الصيانة.",
"Turned off maintenance mode" : "تعطيل وضع الصيانة.",
diff --git a/core/l10n/ar.json b/core/l10n/ar.json
index a5954ea00e6..d6be7d5fb5c 100644
--- a/core/l10n/ar.json
+++ b/core/l10n/ar.json
@@ -49,6 +49,11 @@
"No translation provider available" : "لا توجد خدمة للترجمة",
"Could not detect language" : "لم يُمكن اكتشاف اللغة",
"Unable to translate" : "لم يُمكن الترجمة",
+ "[%d / %d]: %s" : "[%d/%d]: %s",
+ "Repair step:" : "خطوة صيانة:",
+ "Repair info:" : "معلومات صيانة:",
+ "Repair warning:" : "تحذير صيانة:",
+ "Repair error:" : "خطأ صيانة:",
"Nextcloud Server" : "خادم نكست كلاود",
"Some of your link shares have been removed" : "تم ازالة البعض من مشاركة الروابط الخاصة بك.",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "نظرا لسبب آمني تم ازالة البعض من روابط المشاركة الخاصة بك. يرجى مراجعة الرابط التالي لمزيد من التفاصيل.",
@@ -56,11 +61,6 @@
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "أدخِل مفتاح الاشتراك الخاص بك في تطبيق الدعم لزيادة حد الأقصى من الحسابات. يمنحك هذا أيضًا جميع المزايا الإضافية التي يقدمها Nextcloud Enterprise ويوصى به بشدة للشركات و المؤسسات.",
"Learn more ↗" : "تعلم المزيد ↗",
"Preparing update" : "جارٍ تهيئة التحديث",
- "[%d / %d]: %s" : "[%d/%d]: %s",
- "Repair step:" : "خطوة صيانة:",
- "Repair info:" : "معلومات صيانة:",
- "Repair warning:" : "تحذير صيانة:",
- "Repair error:" : "خطأ صيانة:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "يرجى الترقية من خلال سطر الأوامر command line updater حيث أن الترقية من المستعرض معطلة في ملف config.php.",
"Turned on maintenance mode" : "تشغيل وضع الصيانة.",
"Turned off maintenance mode" : "تعطيل وضع الصيانة.",
diff --git a/core/l10n/ast.js b/core/l10n/ast.js
index 5b8970cdd29..f263d578ace 100644
--- a/core/l10n/ast.js
+++ b/core/l10n/ast.js
@@ -50,6 +50,11 @@ OC.L10N.register(
"No translation provider available" : "Nun hai nengún fornidor de traducciones disponible",
"Could not detect language" : "Nun se pudo detectar la llingua",
"Unable to translate" : "Nun ye posible traducir",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Pasos de la reparación:",
+ "Repair info:" : "Información de la reparación:",
+ "Repair warning:" : "Alvertencia de la reparación:",
+ "Repair error:" : "Error de la reparación:",
"Nextcloud Server" : "Sirvidor de Nextcloud",
"Some of your link shares have been removed" : "Quitáronse dalgunos enllaces de los elementos que compartiesti",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Pola mor d'un fallu de seguranza, tuviemos de quitar dalgunos enllaces compartíos. Consulta l'enllaz d'abaxo pa consiguir más información.",
@@ -57,11 +62,6 @@ OC.L10N.register(
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Introduz la clave de la soscripción n'aplicación de sofitu p'aumentar la llende de cuentes. Esta aición tamién te concede tolos beneficios que Nextcloud Enterprise ufre, que son mui aconseyables pa compañes.",
"Learn more ↗" : "Saber más ↗",
"Preparing update" : "Tresnando l'anovamientu",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Pasos de la reparación:",
- "Repair info:" : "Información de la reparación:",
- "Repair warning:" : "Alvertencia de la reparación:",
- "Repair error:" : "Error de la reparación:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Usa l'anovador de la llinia de comandos porque l'anovamientu pel restolador ta desactiváu nel ficheru config.php.",
"Turned on maintenance mode" : "Activóse'l mou de caltenimientu",
"Turned off maintenance mode" : "Desactivóse'l mou de caltenimientu",
diff --git a/core/l10n/ast.json b/core/l10n/ast.json
index e4ba17b8235..d1115d3e7be 100644
--- a/core/l10n/ast.json
+++ b/core/l10n/ast.json
@@ -48,6 +48,11 @@
"No translation provider available" : "Nun hai nengún fornidor de traducciones disponible",
"Could not detect language" : "Nun se pudo detectar la llingua",
"Unable to translate" : "Nun ye posible traducir",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Pasos de la reparación:",
+ "Repair info:" : "Información de la reparación:",
+ "Repair warning:" : "Alvertencia de la reparación:",
+ "Repair error:" : "Error de la reparación:",
"Nextcloud Server" : "Sirvidor de Nextcloud",
"Some of your link shares have been removed" : "Quitáronse dalgunos enllaces de los elementos que compartiesti",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Pola mor d'un fallu de seguranza, tuviemos de quitar dalgunos enllaces compartíos. Consulta l'enllaz d'abaxo pa consiguir más información.",
@@ -55,11 +60,6 @@
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Introduz la clave de la soscripción n'aplicación de sofitu p'aumentar la llende de cuentes. Esta aición tamién te concede tolos beneficios que Nextcloud Enterprise ufre, que son mui aconseyables pa compañes.",
"Learn more ↗" : "Saber más ↗",
"Preparing update" : "Tresnando l'anovamientu",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Pasos de la reparación:",
- "Repair info:" : "Información de la reparación:",
- "Repair warning:" : "Alvertencia de la reparación:",
- "Repair error:" : "Error de la reparación:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Usa l'anovador de la llinia de comandos porque l'anovamientu pel restolador ta desactiváu nel ficheru config.php.",
"Turned on maintenance mode" : "Activóse'l mou de caltenimientu",
"Turned off maintenance mode" : "Desactivóse'l mou de caltenimientu",
diff --git a/core/l10n/bg.js b/core/l10n/bg.js
index a3369a30e79..ba1f3392b0e 100644
--- a/core/l10n/bg.js
+++ b/core/l10n/bg.js
@@ -44,17 +44,17 @@ OC.L10N.register(
"No translation provider available" : "Няма наличен доставчик на преводи",
"Could not detect language" : "Не можа да се установи езика",
"Unable to translate" : "Не може да се преведе",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Стъпка на поправка:",
+ "Repair info:" : "Информация за поправка:",
+ "Repair warning:" : "Предупреждение при поправка:",
+ "Repair error:" : "Грешка при поправка:",
"Nextcloud Server" : "Nextcloud сървър",
"Some of your link shares have been removed" : "Някои от вашите споделяния на връзки са премахнати",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Поради грешка в сигурността трябваше да премахнем някои от вашите споделяния на връзки. Моля, вижте връзката за повече информация.",
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Въведете своя абонаментен ключ в приложението за поддръжка, за да увеличите лимита на акаунта. Това също ви предоставя всички допълнителни предимства, които Nextcloud Enterprise предлага и е силно препоръчително за работа в компании.",
"Learn more ↗" : "Научете повече ↗",
"Preparing update" : "Подготовка за актуализиране",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Стъпка на поправка:",
- "Repair info:" : "Информация за поправка:",
- "Repair warning:" : "Предупреждение при поправка:",
- "Repair error:" : "Грешка при поправка:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Моля, използвайте програмата за актуализиране от командния ред, тъй като актуализирането чрез браузъра е забранено в config.php.",
"Turned on maintenance mode" : "Режимът за поддръжка е включен",
"Turned off maintenance mode" : "Режимът за поддръжка е изключен",
diff --git a/core/l10n/bg.json b/core/l10n/bg.json
index eda7c7f8110..456c1486b48 100644
--- a/core/l10n/bg.json
+++ b/core/l10n/bg.json
@@ -42,17 +42,17 @@
"No translation provider available" : "Няма наличен доставчик на преводи",
"Could not detect language" : "Не можа да се установи езика",
"Unable to translate" : "Не може да се преведе",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Стъпка на поправка:",
+ "Repair info:" : "Информация за поправка:",
+ "Repair warning:" : "Предупреждение при поправка:",
+ "Repair error:" : "Грешка при поправка:",
"Nextcloud Server" : "Nextcloud сървър",
"Some of your link shares have been removed" : "Някои от вашите споделяния на връзки са премахнати",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Поради грешка в сигурността трябваше да премахнем някои от вашите споделяния на връзки. Моля, вижте връзката за повече информация.",
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Въведете своя абонаментен ключ в приложението за поддръжка, за да увеличите лимита на акаунта. Това също ви предоставя всички допълнителни предимства, които Nextcloud Enterprise предлага и е силно препоръчително за работа в компании.",
"Learn more ↗" : "Научете повече ↗",
"Preparing update" : "Подготовка за актуализиране",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Стъпка на поправка:",
- "Repair info:" : "Информация за поправка:",
- "Repair warning:" : "Предупреждение при поправка:",
- "Repair error:" : "Грешка при поправка:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Моля, използвайте програмата за актуализиране от командния ред, тъй като актуализирането чрез браузъра е забранено в config.php.",
"Turned on maintenance mode" : "Режимът за поддръжка е включен",
"Turned off maintenance mode" : "Режимът за поддръжка е изключен",
diff --git a/core/l10n/ca.js b/core/l10n/ca.js
index 123c20febc5..fcfacb4ba2a 100644
--- a/core/l10n/ca.js
+++ b/core/l10n/ca.js
@@ -51,6 +51,11 @@ OC.L10N.register(
"No translation provider available" : "No hi ha cap proveïdor de traduccions disponible",
"Could not detect language" : "No s'ha pogut detectar la llengua",
"Unable to translate" : "No s'ha pogut traduir",
+ "[%d / %d]: %s" : "[%d/%d]: %s",
+ "Repair step:" : "Pas de reparació:",
+ "Repair info:" : "Informació de reparació:",
+ "Repair warning:" : "Avís de reparació:",
+ "Repair error:" : "Error de reparació:",
"Nextcloud Server" : "Servidor del Nextcloud",
"Some of your link shares have been removed" : "S'han suprimit alguns dels vostres enllaços compartits",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "A causa d'un error de seguretat, hem suprimit alguns dels vostres enllaços compartits. Consulteu l'enllaç per a obtenir més informació.",
@@ -58,11 +63,6 @@ OC.L10N.register(
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Introduïu la vostra clau de subscripció a l'aplicació de suport per augmentar el límit del compte. Això també us atorga tots els avantatges addicionals que ofereix Nextcloud Enterprise i és molt recomanable per al funcionament en empreses.",
"Learn more ↗" : "Més informació ↗",
"Preparing update" : "S'està preparant l'actualització",
- "[%d / %d]: %s" : "[%d/%d]: %s",
- "Repair step:" : "Pas de reparació:",
- "Repair info:" : "Informació de reparació:",
- "Repair warning:" : "Avís de reparació:",
- "Repair error:" : "Error de reparació:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Utilitzeu l'actualitzador de línia d'ordres; l'actualització mitjançant el navegador està inhabilitada en el fitxer config.php.",
"Turned on maintenance mode" : "S'ha activat el mode de manteniment",
"Turned off maintenance mode" : "S'ha desactivat el mode de manteniment",
diff --git a/core/l10n/ca.json b/core/l10n/ca.json
index d3772407799..c1a4a76748d 100644
--- a/core/l10n/ca.json
+++ b/core/l10n/ca.json
@@ -49,6 +49,11 @@
"No translation provider available" : "No hi ha cap proveïdor de traduccions disponible",
"Could not detect language" : "No s'ha pogut detectar la llengua",
"Unable to translate" : "No s'ha pogut traduir",
+ "[%d / %d]: %s" : "[%d/%d]: %s",
+ "Repair step:" : "Pas de reparació:",
+ "Repair info:" : "Informació de reparació:",
+ "Repair warning:" : "Avís de reparació:",
+ "Repair error:" : "Error de reparació:",
"Nextcloud Server" : "Servidor del Nextcloud",
"Some of your link shares have been removed" : "S'han suprimit alguns dels vostres enllaços compartits",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "A causa d'un error de seguretat, hem suprimit alguns dels vostres enllaços compartits. Consulteu l'enllaç per a obtenir més informació.",
@@ -56,11 +61,6 @@
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Introduïu la vostra clau de subscripció a l'aplicació de suport per augmentar el límit del compte. Això també us atorga tots els avantatges addicionals que ofereix Nextcloud Enterprise i és molt recomanable per al funcionament en empreses.",
"Learn more ↗" : "Més informació ↗",
"Preparing update" : "S'està preparant l'actualització",
- "[%d / %d]: %s" : "[%d/%d]: %s",
- "Repair step:" : "Pas de reparació:",
- "Repair info:" : "Informació de reparació:",
- "Repair warning:" : "Avís de reparació:",
- "Repair error:" : "Error de reparació:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Utilitzeu l'actualitzador de línia d'ordres; l'actualització mitjançant el navegador està inhabilitada en el fitxer config.php.",
"Turned on maintenance mode" : "S'ha activat el mode de manteniment",
"Turned off maintenance mode" : "S'ha desactivat el mode de manteniment",
diff --git a/core/l10n/cs.js b/core/l10n/cs.js
index 8ddbe2662cc..64be7a140aa 100644
--- a/core/l10n/cs.js
+++ b/core/l10n/cs.js
@@ -52,6 +52,11 @@ OC.L10N.register(
"No translation provider available" : "Není k dispozici žádný poskytovatel překladu",
"Could not detect language" : "Nepodařilo se zjistit jazyk",
"Unable to translate" : "Nedaří se přeložit",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Krok opravy:",
+ "Repair info:" : "Informace o opravě:",
+ "Repair warning:" : "Varování ohledně opravy:",
+ "Repair error:" : "Chyba opravy:",
"Nextcloud Server" : "Server Nextcloud",
"Some of your link shares have been removed" : "Některá vaše sdílení odkazem byla odstraněna",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Kvůli chybě v zabezpečení bylo třeba odstranit některé z sdílení odkazem. Další informace viz odkaz.",
@@ -59,11 +64,6 @@ OC.L10N.register(
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Aby bylo možné zvýšit limit počtu uživatelských účtů, zadejte v aplikaci podpora svůj klíč k předplatnému. Toto také zpřístupní veškeré další výhody, které nabízí Nextcloud pro podniky a je velmi doporučeno pro provozování ve firmách.",
"Learn more ↗" : "Zjistit víc ↗",
"Preparing update" : "Příprava pro aktualizaci",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Krok opravy:",
- "Repair info:" : "Informace o opravě:",
- "Repair warning:" : "Varování ohledně opravy:",
- "Repair error:" : "Chyba opravy:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Zaktualizujte z příkazového řádku, protože aktualizování z webového prohlížeče je vypnuté ve vašem config.php.",
"Turned on maintenance mode" : "Přepnuto do režimu údržby",
"Turned off maintenance mode" : "Přepnuto zpět z režimu údržby",
diff --git a/core/l10n/cs.json b/core/l10n/cs.json
index f2a73b8d152..8a6dddc30b0 100644
--- a/core/l10n/cs.json
+++ b/core/l10n/cs.json
@@ -50,6 +50,11 @@
"No translation provider available" : "Není k dispozici žádný poskytovatel překladu",
"Could not detect language" : "Nepodařilo se zjistit jazyk",
"Unable to translate" : "Nedaří se přeložit",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Krok opravy:",
+ "Repair info:" : "Informace o opravě:",
+ "Repair warning:" : "Varování ohledně opravy:",
+ "Repair error:" : "Chyba opravy:",
"Nextcloud Server" : "Server Nextcloud",
"Some of your link shares have been removed" : "Některá vaše sdílení odkazem byla odstraněna",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Kvůli chybě v zabezpečení bylo třeba odstranit některé z sdílení odkazem. Další informace viz odkaz.",
@@ -57,11 +62,6 @@
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Aby bylo možné zvýšit limit počtu uživatelských účtů, zadejte v aplikaci podpora svůj klíč k předplatnému. Toto také zpřístupní veškeré další výhody, které nabízí Nextcloud pro podniky a je velmi doporučeno pro provozování ve firmách.",
"Learn more ↗" : "Zjistit víc ↗",
"Preparing update" : "Příprava pro aktualizaci",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Krok opravy:",
- "Repair info:" : "Informace o opravě:",
- "Repair warning:" : "Varování ohledně opravy:",
- "Repair error:" : "Chyba opravy:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Zaktualizujte z příkazového řádku, protože aktualizování z webového prohlížeče je vypnuté ve vašem config.php.",
"Turned on maintenance mode" : "Přepnuto do režimu údržby",
"Turned off maintenance mode" : "Přepnuto zpět z režimu údržby",
diff --git a/core/l10n/da.js b/core/l10n/da.js
index 7c82dd12310..298e07a1389 100644
--- a/core/l10n/da.js
+++ b/core/l10n/da.js
@@ -51,6 +51,11 @@ OC.L10N.register(
"No translation provider available" : "Ingen tilgængelig oversættelsesudbyder",
"Could not detect language" : "Kunne ikke finde sprog",
"Unable to translate" : "Kan ikke oversætte",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Reparationstrin:",
+ "Repair info:" : "Reparationsinfo:",
+ "Repair warning:" : "Reparationsadvarsel:",
+ "Repair error:" : "Reparationsfejl:",
"Nextcloud Server" : "Nextcloud Server",
"Some of your link shares have been removed" : "Nogle af dine delte links er blevet fjernet",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Pga et sikkerhedshul har vi været nødt til at fjerne nogle af dine delte links. Se linket for mere information.",
@@ -58,11 +63,6 @@ OC.L10N.register(
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Indtast din abonnementsnøgle i support app for at øge konto grænsen. Dette giver dig også alle yderligere fordele, som Nextcloud Enterprise tilbyder og anbefales stærkt til driften i virksomheder.",
"Learn more ↗" : "Lær mere ↗",
"Preparing update" : "Forbereder opdatering",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Reparationstrin:",
- "Repair info:" : "Reparationsinfo:",
- "Repair warning:" : "Reparationsadvarsel:",
- "Repair error:" : "Reparationsfejl:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Brug venligst kommandolinjeopdateringen, fordi opdatering via browser er deaktiveret i din config.php.",
"Turned on maintenance mode" : "Startede vedligeholdelsestilstand",
"Turned off maintenance mode" : "Slå vedligeholdelsestilstand fra",
diff --git a/core/l10n/da.json b/core/l10n/da.json
index 5c10c6edc1f..a416f309a1a 100644
--- a/core/l10n/da.json
+++ b/core/l10n/da.json
@@ -49,6 +49,11 @@
"No translation provider available" : "Ingen tilgængelig oversættelsesudbyder",
"Could not detect language" : "Kunne ikke finde sprog",
"Unable to translate" : "Kan ikke oversætte",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Reparationstrin:",
+ "Repair info:" : "Reparationsinfo:",
+ "Repair warning:" : "Reparationsadvarsel:",
+ "Repair error:" : "Reparationsfejl:",
"Nextcloud Server" : "Nextcloud Server",
"Some of your link shares have been removed" : "Nogle af dine delte links er blevet fjernet",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Pga et sikkerhedshul har vi været nødt til at fjerne nogle af dine delte links. Se linket for mere information.",
@@ -56,11 +61,6 @@
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Indtast din abonnementsnøgle i support app for at øge konto grænsen. Dette giver dig også alle yderligere fordele, som Nextcloud Enterprise tilbyder og anbefales stærkt til driften i virksomheder.",
"Learn more ↗" : "Lær mere ↗",
"Preparing update" : "Forbereder opdatering",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Reparationstrin:",
- "Repair info:" : "Reparationsinfo:",
- "Repair warning:" : "Reparationsadvarsel:",
- "Repair error:" : "Reparationsfejl:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Brug venligst kommandolinjeopdateringen, fordi opdatering via browser er deaktiveret i din config.php.",
"Turned on maintenance mode" : "Startede vedligeholdelsestilstand",
"Turned off maintenance mode" : "Slå vedligeholdelsestilstand fra",
diff --git a/core/l10n/de.js b/core/l10n/de.js
index deb80d6be23..513e779f891 100644
--- a/core/l10n/de.js
+++ b/core/l10n/de.js
@@ -52,6 +52,11 @@ OC.L10N.register(
"No translation provider available" : "Kein Übersetzungsanbieter verfügbar",
"Could not detect language" : "Sprache konnte nicht erkannt werden",
"Unable to translate" : "Kann nicht übersetzt werden",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Reparaturschritt:",
+ "Repair info:" : "Reparaturinformation:",
+ "Repair warning:" : "Reparaturwarnung:",
+ "Repair error:" : "Reparaturfehler:",
"Nextcloud Server" : "Nextcloud-Server",
"Some of your link shares have been removed" : "Einige der geteilten Freigaben wurden entfernt",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Aufgrund eines Sicherheitsfehlers mussten einige der geteilten Freigaben entfernt werden. Weitere Informationen im Link.",
@@ -59,11 +64,6 @@ OC.L10N.register(
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Gib deinen Abonnementschlüssel in der Support-App ein, um das Konto-Limit zu erhöhen. Damit erhältst du auch alle zusätzlichen Vorteile, die Nextcloud Enterprise bietet. Dies ist für den Betrieb in Unternehmen sehr zu empfehlen.",
"Learn more ↗" : "Erfahre mehr ↗",
"Preparing update" : "Update vorbereiten",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Reparaturschritt:",
- "Repair info:" : "Reparaturinformation:",
- "Repair warning:" : "Reparaturwarnung:",
- "Repair error:" : "Reparaturfehler:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Bitte den Kommandozeilen-Updater verwenden, die Browser-Aktualisierung ist in der config.php deaktiviert.",
"Turned on maintenance mode" : "Wartungsmodus eingeschaltet",
"Turned off maintenance mode" : "Wartungsmodus ausgeschaltet",
diff --git a/core/l10n/de.json b/core/l10n/de.json
index ef6ae36ac24..0000ac01a67 100644
--- a/core/l10n/de.json
+++ b/core/l10n/de.json
@@ -50,6 +50,11 @@
"No translation provider available" : "Kein Übersetzungsanbieter verfügbar",
"Could not detect language" : "Sprache konnte nicht erkannt werden",
"Unable to translate" : "Kann nicht übersetzt werden",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Reparaturschritt:",
+ "Repair info:" : "Reparaturinformation:",
+ "Repair warning:" : "Reparaturwarnung:",
+ "Repair error:" : "Reparaturfehler:",
"Nextcloud Server" : "Nextcloud-Server",
"Some of your link shares have been removed" : "Einige der geteilten Freigaben wurden entfernt",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Aufgrund eines Sicherheitsfehlers mussten einige der geteilten Freigaben entfernt werden. Weitere Informationen im Link.",
@@ -57,11 +62,6 @@
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Gib deinen Abonnementschlüssel in der Support-App ein, um das Konto-Limit zu erhöhen. Damit erhältst du auch alle zusätzlichen Vorteile, die Nextcloud Enterprise bietet. Dies ist für den Betrieb in Unternehmen sehr zu empfehlen.",
"Learn more ↗" : "Erfahre mehr ↗",
"Preparing update" : "Update vorbereiten",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Reparaturschritt:",
- "Repair info:" : "Reparaturinformation:",
- "Repair warning:" : "Reparaturwarnung:",
- "Repair error:" : "Reparaturfehler:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Bitte den Kommandozeilen-Updater verwenden, die Browser-Aktualisierung ist in der config.php deaktiviert.",
"Turned on maintenance mode" : "Wartungsmodus eingeschaltet",
"Turned off maintenance mode" : "Wartungsmodus ausgeschaltet",
diff --git a/core/l10n/de_DE.js b/core/l10n/de_DE.js
index 62382ce257f..8a16ad312c9 100644
--- a/core/l10n/de_DE.js
+++ b/core/l10n/de_DE.js
@@ -52,6 +52,11 @@ OC.L10N.register(
"No translation provider available" : "Kein Übersetzungsanbieter verfügbar",
"Could not detect language" : "Sprache konnte nicht erkannt werden",
"Unable to translate" : "Kann nicht übersetzt werden",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Reparaturschritt:",
+ "Repair info:" : "Reparaturinformation:",
+ "Repair warning:" : "Reparaturwarnung:",
+ "Repair error:" : "Reparaturfehler:",
"Nextcloud Server" : "Nextcloud-Server",
"Some of your link shares have been removed" : "Einige Ihrer Freigabe-Links wurden entfernt",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Aufgrund eines Sicherheitsfehlers mussten einige Link-Freigaben entfernt werden. Für weitere Informationen siehe Link.",
@@ -59,11 +64,6 @@ OC.L10N.register(
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Geben Sie Ihren Abonnementschlüssel in der Support-App ein, um das Konto-Limit zu erhöhen. Damit erhalten Sie auch alle zusätzlichen Vorteile, die Nextcloud Enterprise bietet. Dies ist für den Betrieb in Unternehmen sehr zu empfehlen.",
"Learn more ↗" : "Erfahren Sie mehr ↗",
"Preparing update" : "Update vorbereiten",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Reparaturschritt:",
- "Repair info:" : "Reparaturinformation:",
- "Repair warning:" : "Reparaturwarnung:",
- "Repair error:" : "Reparaturfehler:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Bitte den Kommandozeilen-Updater verwenden, die Browser-Aktualisierung ist in der config.php deaktiviert.",
"Turned on maintenance mode" : "Wartungsmodus eingeschaltet ",
"Turned off maintenance mode" : "Wartungsmodus ausgeschaltet",
diff --git a/core/l10n/de_DE.json b/core/l10n/de_DE.json
index 31286722d52..c59cff2abfe 100644
--- a/core/l10n/de_DE.json
+++ b/core/l10n/de_DE.json
@@ -50,6 +50,11 @@
"No translation provider available" : "Kein Übersetzungsanbieter verfügbar",
"Could not detect language" : "Sprache konnte nicht erkannt werden",
"Unable to translate" : "Kann nicht übersetzt werden",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Reparaturschritt:",
+ "Repair info:" : "Reparaturinformation:",
+ "Repair warning:" : "Reparaturwarnung:",
+ "Repair error:" : "Reparaturfehler:",
"Nextcloud Server" : "Nextcloud-Server",
"Some of your link shares have been removed" : "Einige Ihrer Freigabe-Links wurden entfernt",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Aufgrund eines Sicherheitsfehlers mussten einige Link-Freigaben entfernt werden. Für weitere Informationen siehe Link.",
@@ -57,11 +62,6 @@
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Geben Sie Ihren Abonnementschlüssel in der Support-App ein, um das Konto-Limit zu erhöhen. Damit erhalten Sie auch alle zusätzlichen Vorteile, die Nextcloud Enterprise bietet. Dies ist für den Betrieb in Unternehmen sehr zu empfehlen.",
"Learn more ↗" : "Erfahren Sie mehr ↗",
"Preparing update" : "Update vorbereiten",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Reparaturschritt:",
- "Repair info:" : "Reparaturinformation:",
- "Repair warning:" : "Reparaturwarnung:",
- "Repair error:" : "Reparaturfehler:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Bitte den Kommandozeilen-Updater verwenden, die Browser-Aktualisierung ist in der config.php deaktiviert.",
"Turned on maintenance mode" : "Wartungsmodus eingeschaltet ",
"Turned off maintenance mode" : "Wartungsmodus ausgeschaltet",
diff --git a/core/l10n/el.js b/core/l10n/el.js
index 1e802143c29..d0dfc32f980 100644
--- a/core/l10n/el.js
+++ b/core/l10n/el.js
@@ -49,16 +49,16 @@ OC.L10N.register(
"No translation provider available" : "Δεν υπάρχει διαθέσιμος πάροχος μεταφράσεων",
"Could not detect language" : "Δεν ήταν δυνατός ο εντοπισμός της γλώσσας",
"Unable to translate" : "Αδυναμία μετάφρασης",
- "Nextcloud Server" : "Διακομιστής Nextcloud",
- "Some of your link shares have been removed" : "Μερικοί από τους κοινόχρηστους συνδέσμους σας έχουν καταργηθεί",
- "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Λόγω σφάλματος ασφαλείας έπρεπε να αφαιρέσουμε κοινόχρηστους συνδέσμους σας. Παρακαλούμε δείτε τον παρακάτω σύνδεσμο για πληροφορίες.",
- "Learn more ↗" : "Μάθετε περισσότερα ↗",
- "Preparing update" : "Προετοιμασία ενημέρωσης",
"[%d / %d]: %s" : "[%d / %d]: %s",
"Repair step:" : "Βήμα επισκευής:",
"Repair info:" : "Πληροφορίες επισκευής:",
"Repair warning:" : "Προειδοποίηση επισκευής:",
"Repair error:" : "Σφάλμα επισκευής:",
+ "Nextcloud Server" : "Διακομιστής Nextcloud",
+ "Some of your link shares have been removed" : "Μερικοί από τους κοινόχρηστους συνδέσμους σας έχουν καταργηθεί",
+ "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Λόγω σφάλματος ασφαλείας έπρεπε να αφαιρέσουμε κοινόχρηστους συνδέσμους σας. Παρακαλούμε δείτε τον παρακάτω σύνδεσμο για πληροφορίες.",
+ "Learn more ↗" : "Μάθετε περισσότερα ↗",
+ "Preparing update" : "Προετοιμασία ενημέρωσης",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Παρακαλούμε χρησιμοποιήστε το πρόγραμμα ενημέρωσης γραμμής εντολών, επειδή η ενημέρωση μέσω του προγράμματος περιήγησης είναι απενεργοποιημένη στο αρχείο config.php.",
"Turned on maintenance mode" : "Η λειτουργία συντήρησης ενεργοποιήθηκε",
"Turned off maintenance mode" : "Η λειτουργία συντήρησης απενεργοποιήθηκε",
diff --git a/core/l10n/el.json b/core/l10n/el.json
index 8b270ec21e7..df55782ab98 100644
--- a/core/l10n/el.json
+++ b/core/l10n/el.json
@@ -47,16 +47,16 @@
"No translation provider available" : "Δεν υπάρχει διαθέσιμος πάροχος μεταφράσεων",
"Could not detect language" : "Δεν ήταν δυνατός ο εντοπισμός της γλώσσας",
"Unable to translate" : "Αδυναμία μετάφρασης",
- "Nextcloud Server" : "Διακομιστής Nextcloud",
- "Some of your link shares have been removed" : "Μερικοί από τους κοινόχρηστους συνδέσμους σας έχουν καταργηθεί",
- "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Λόγω σφάλματος ασφαλείας έπρεπε να αφαιρέσουμε κοινόχρηστους συνδέσμους σας. Παρακαλούμε δείτε τον παρακάτω σύνδεσμο για πληροφορίες.",
- "Learn more ↗" : "Μάθετε περισσότερα ↗",
- "Preparing update" : "Προετοιμασία ενημέρωσης",
"[%d / %d]: %s" : "[%d / %d]: %s",
"Repair step:" : "Βήμα επισκευής:",
"Repair info:" : "Πληροφορίες επισκευής:",
"Repair warning:" : "Προειδοποίηση επισκευής:",
"Repair error:" : "Σφάλμα επισκευής:",
+ "Nextcloud Server" : "Διακομιστής Nextcloud",
+ "Some of your link shares have been removed" : "Μερικοί από τους κοινόχρηστους συνδέσμους σας έχουν καταργηθεί",
+ "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Λόγω σφάλματος ασφαλείας έπρεπε να αφαιρέσουμε κοινόχρηστους συνδέσμους σας. Παρακαλούμε δείτε τον παρακάτω σύνδεσμο για πληροφορίες.",
+ "Learn more ↗" : "Μάθετε περισσότερα ↗",
+ "Preparing update" : "Προετοιμασία ενημέρωσης",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Παρακαλούμε χρησιμοποιήστε το πρόγραμμα ενημέρωσης γραμμής εντολών, επειδή η ενημέρωση μέσω του προγράμματος περιήγησης είναι απενεργοποιημένη στο αρχείο config.php.",
"Turned on maintenance mode" : "Η λειτουργία συντήρησης ενεργοποιήθηκε",
"Turned off maintenance mode" : "Η λειτουργία συντήρησης απενεργοποιήθηκε",
diff --git a/core/l10n/en_GB.js b/core/l10n/en_GB.js
index dd3b78e2896..cac68508a34 100644
--- a/core/l10n/en_GB.js
+++ b/core/l10n/en_GB.js
@@ -52,6 +52,11 @@ OC.L10N.register(
"No translation provider available" : "No translation provider available",
"Could not detect language" : "Could not detect language",
"Unable to translate" : "Unable to translate",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Repair step:",
+ "Repair info:" : "Repair info:",
+ "Repair warning:" : "Repair warning:",
+ "Repair error:" : "Repair error:",
"Nextcloud Server" : "Nextcloud Server",
"Some of your link shares have been removed" : "Some of your link shares have been removed",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Due to a security bug we had to remove some of your link shares. Please see the link for more information.",
@@ -59,11 +64,6 @@ OC.L10N.register(
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies.",
"Learn more ↗" : "Learn more ↗",
"Preparing update" : "Preparing update",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Repair step:",
- "Repair info:" : "Repair info:",
- "Repair warning:" : "Repair warning:",
- "Repair error:" : "Repair error:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Please use the command line updater because updating via browser is disabled in your config.php.",
"Turned on maintenance mode" : "Turned on maintenance mode",
"Turned off maintenance mode" : "Turned off maintenance mode",
diff --git a/core/l10n/en_GB.json b/core/l10n/en_GB.json
index e3b7ae5472c..1b5a523b3f1 100644
--- a/core/l10n/en_GB.json
+++ b/core/l10n/en_GB.json
@@ -50,6 +50,11 @@
"No translation provider available" : "No translation provider available",
"Could not detect language" : "Could not detect language",
"Unable to translate" : "Unable to translate",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Repair step:",
+ "Repair info:" : "Repair info:",
+ "Repair warning:" : "Repair warning:",
+ "Repair error:" : "Repair error:",
"Nextcloud Server" : "Nextcloud Server",
"Some of your link shares have been removed" : "Some of your link shares have been removed",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Due to a security bug we had to remove some of your link shares. Please see the link for more information.",
@@ -57,11 +62,6 @@
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies.",
"Learn more ↗" : "Learn more ↗",
"Preparing update" : "Preparing update",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Repair step:",
- "Repair info:" : "Repair info:",
- "Repair warning:" : "Repair warning:",
- "Repair error:" : "Repair error:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Please use the command line updater because updating via browser is disabled in your config.php.",
"Turned on maintenance mode" : "Turned on maintenance mode",
"Turned off maintenance mode" : "Turned off maintenance mode",
diff --git a/core/l10n/eo.js b/core/l10n/eo.js
index 5a3db20e82c..da29ea26222 100644
--- a/core/l10n/eo.js
+++ b/core/l10n/eo.js
@@ -41,16 +41,16 @@ OC.L10N.register(
"Not found" : "Ne trovita",
"Image not found" : "Bildo ne trovita",
"Unable to translate" : "Ne eblas traduki",
- "Nextcloud Server" : "Nextcloud-servilo",
- "Some of your link shares have been removed" : "Kelkaj el viaj kunhavigaj ligiloj estis forigitaj",
- "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Pro sekuriga problemo, ni forigu kelkajn el viaj kunhavigaj ligiloj. Bv. vidi la ligilon por plia informo.",
- "Learn more ↗" : "Scii pli ↗",
- "Preparing update" : "Preparo de la ĝisdatigo",
"[%d / %d]: %s" : "[%d / %d]: %s",
"Repair step:" : "Ripara stadio:",
"Repair info:" : "Ripara informo:",
"Repair warning:" : "Ripara averto:",
"Repair error:" : "Ripara eraro:",
+ "Nextcloud Server" : "Nextcloud-servilo",
+ "Some of your link shares have been removed" : "Kelkaj el viaj kunhavigaj ligiloj estis forigitaj",
+ "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Pro sekuriga problemo, ni forigu kelkajn el viaj kunhavigaj ligiloj. Bv. vidi la ligilon por plia informo.",
+ "Learn more ↗" : "Scii pli ↗",
+ "Preparing update" : "Preparo de la ĝisdatigo",
"Turned on maintenance mode" : "Reĝimo de prizorgado ŝaltita.",
"Turned off maintenance mode" : "Reĝimo de prizorgado malŝaltita.",
"Maintenance mode is kept active" : "Reĝimo de prizorgado pluas",
diff --git a/core/l10n/eo.json b/core/l10n/eo.json
index fc74b71f35c..715e3c32db2 100644
--- a/core/l10n/eo.json
+++ b/core/l10n/eo.json
@@ -39,16 +39,16 @@
"Not found" : "Ne trovita",
"Image not found" : "Bildo ne trovita",
"Unable to translate" : "Ne eblas traduki",
- "Nextcloud Server" : "Nextcloud-servilo",
- "Some of your link shares have been removed" : "Kelkaj el viaj kunhavigaj ligiloj estis forigitaj",
- "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Pro sekuriga problemo, ni forigu kelkajn el viaj kunhavigaj ligiloj. Bv. vidi la ligilon por plia informo.",
- "Learn more ↗" : "Scii pli ↗",
- "Preparing update" : "Preparo de la ĝisdatigo",
"[%d / %d]: %s" : "[%d / %d]: %s",
"Repair step:" : "Ripara stadio:",
"Repair info:" : "Ripara informo:",
"Repair warning:" : "Ripara averto:",
"Repair error:" : "Ripara eraro:",
+ "Nextcloud Server" : "Nextcloud-servilo",
+ "Some of your link shares have been removed" : "Kelkaj el viaj kunhavigaj ligiloj estis forigitaj",
+ "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Pro sekuriga problemo, ni forigu kelkajn el viaj kunhavigaj ligiloj. Bv. vidi la ligilon por plia informo.",
+ "Learn more ↗" : "Scii pli ↗",
+ "Preparing update" : "Preparo de la ĝisdatigo",
"Turned on maintenance mode" : "Reĝimo de prizorgado ŝaltita.",
"Turned off maintenance mode" : "Reĝimo de prizorgado malŝaltita.",
"Maintenance mode is kept active" : "Reĝimo de prizorgado pluas",
diff --git a/core/l10n/es.js b/core/l10n/es.js
index c3e5349bd05..bdaa079fc7f 100644
--- a/core/l10n/es.js
+++ b/core/l10n/es.js
@@ -52,6 +52,11 @@ OC.L10N.register(
"No translation provider available" : "No hay proveedores de traducción disponibles",
"Could not detect language" : "No fue posible detectar el lenguaje",
"Unable to translate" : "No es posible traducir",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Paso de reparación:",
+ "Repair info:" : "Información de reparación:",
+ "Repair warning:" : "Advertencia de reparación:",
+ "Repair error:" : "Error que reparar:",
"Nextcloud Server" : "Servidor Nexcloud",
"Some of your link shares have been removed" : "Algunos de tus enlaces compartidos han sido eliminados.",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Debido a un bug de seguridad hemos tenido que eliminar algunos de tus enlaces compartidos. Por favor, accede al link para más información.",
@@ -59,11 +64,6 @@ OC.L10N.register(
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Ingrese su clave de suscripción en la aplicación de soporte para aumentar el límite de cuentas. Esto también le otorga todos los beneficios adicionales que ofrece Nextcloud Enterprise y que es altamente recomendado para la operación en empresas.",
"Learn more ↗" : "Saber más ↗",
"Preparing update" : "Preparando la actualización",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Paso de reparación:",
- "Repair info:" : "Información de reparación:",
- "Repair warning:" : "Advertencia de reparación:",
- "Repair error:" : "Error que reparar:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Por favor, utilice el actualizador por línea de comandos ya que la actualización vía navegador se encuentra deshabilitado en su config.php",
"Turned on maintenance mode" : "Modo mantenimiento activado",
"Turned off maintenance mode" : "Modo mantenimiento desactivado",
diff --git a/core/l10n/es.json b/core/l10n/es.json
index d8af2e19355..81c22d2bf58 100644
--- a/core/l10n/es.json
+++ b/core/l10n/es.json
@@ -50,6 +50,11 @@
"No translation provider available" : "No hay proveedores de traducción disponibles",
"Could not detect language" : "No fue posible detectar el lenguaje",
"Unable to translate" : "No es posible traducir",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Paso de reparación:",
+ "Repair info:" : "Información de reparación:",
+ "Repair warning:" : "Advertencia de reparación:",
+ "Repair error:" : "Error que reparar:",
"Nextcloud Server" : "Servidor Nexcloud",
"Some of your link shares have been removed" : "Algunos de tus enlaces compartidos han sido eliminados.",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Debido a un bug de seguridad hemos tenido que eliminar algunos de tus enlaces compartidos. Por favor, accede al link para más información.",
@@ -57,11 +62,6 @@
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Ingrese su clave de suscripción en la aplicación de soporte para aumentar el límite de cuentas. Esto también le otorga todos los beneficios adicionales que ofrece Nextcloud Enterprise y que es altamente recomendado para la operación en empresas.",
"Learn more ↗" : "Saber más ↗",
"Preparing update" : "Preparando la actualización",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Paso de reparación:",
- "Repair info:" : "Información de reparación:",
- "Repair warning:" : "Advertencia de reparación:",
- "Repair error:" : "Error que reparar:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Por favor, utilice el actualizador por línea de comandos ya que la actualización vía navegador se encuentra deshabilitado en su config.php",
"Turned on maintenance mode" : "Modo mantenimiento activado",
"Turned off maintenance mode" : "Modo mantenimiento desactivado",
diff --git a/core/l10n/es_EC.js b/core/l10n/es_EC.js
index 5c1ae5a685d..33db2050200 100644
--- a/core/l10n/es_EC.js
+++ b/core/l10n/es_EC.js
@@ -43,16 +43,16 @@ OC.L10N.register(
"No translation provider available" : "No hay proveedor de traducción disponible",
"Could not detect language" : "No se pudo detectar el idioma",
"Unable to translate" : "No se puede traducir",
- "Nextcloud Server" : "Servidor de Nextcloud",
- "Some of your link shares have been removed" : "Se han eliminado algunas de sus comparticiones de enlaces",
- "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Debido a un error de seguridad, hemos tenido que eliminar algunas de sus comparticiones de enlaces. Por favor, consulte el enlace para obtener más información.",
- "Learn more ↗" : "Más información ↗",
- "Preparing update" : "Preparando actualización",
"[%d / %d]: %s" : "[%d / %d]: %s ",
"Repair step:" : "Paso de reparación:",
"Repair info:" : "Información de reparación:",
"Repair warning:" : "Advertencia de reparación:",
"Repair error:" : "Error de reparación:",
+ "Nextcloud Server" : "Servidor de Nextcloud",
+ "Some of your link shares have been removed" : "Se han eliminado algunas de sus comparticiones de enlaces",
+ "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Debido a un error de seguridad, hemos tenido que eliminar algunas de sus comparticiones de enlaces. Por favor, consulte el enlace para obtener más información.",
+ "Learn more ↗" : "Más información ↗",
+ "Preparing update" : "Preparando actualización",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Utilice el actualizador de línea de comandos porque la actualización a través del navegador está deshabilitada en su config.php.",
"Turned on maintenance mode" : "Modo mantenimiento activado",
"Turned off maintenance mode" : "Modo mantenimiento desactivado",
diff --git a/core/l10n/es_EC.json b/core/l10n/es_EC.json
index 1afe2e4d2a7..d1d62b75c4d 100644
--- a/core/l10n/es_EC.json
+++ b/core/l10n/es_EC.json
@@ -41,16 +41,16 @@
"No translation provider available" : "No hay proveedor de traducción disponible",
"Could not detect language" : "No se pudo detectar el idioma",
"Unable to translate" : "No se puede traducir",
- "Nextcloud Server" : "Servidor de Nextcloud",
- "Some of your link shares have been removed" : "Se han eliminado algunas de sus comparticiones de enlaces",
- "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Debido a un error de seguridad, hemos tenido que eliminar algunas de sus comparticiones de enlaces. Por favor, consulte el enlace para obtener más información.",
- "Learn more ↗" : "Más información ↗",
- "Preparing update" : "Preparando actualización",
"[%d / %d]: %s" : "[%d / %d]: %s ",
"Repair step:" : "Paso de reparación:",
"Repair info:" : "Información de reparación:",
"Repair warning:" : "Advertencia de reparación:",
"Repair error:" : "Error de reparación:",
+ "Nextcloud Server" : "Servidor de Nextcloud",
+ "Some of your link shares have been removed" : "Se han eliminado algunas de sus comparticiones de enlaces",
+ "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Debido a un error de seguridad, hemos tenido que eliminar algunas de sus comparticiones de enlaces. Por favor, consulte el enlace para obtener más información.",
+ "Learn more ↗" : "Más información ↗",
+ "Preparing update" : "Preparando actualización",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Utilice el actualizador de línea de comandos porque la actualización a través del navegador está deshabilitada en su config.php.",
"Turned on maintenance mode" : "Modo mantenimiento activado",
"Turned off maintenance mode" : "Modo mantenimiento desactivado",
diff --git a/core/l10n/es_MX.js b/core/l10n/es_MX.js
index 7999e3da04e..f4eea70b373 100644
--- a/core/l10n/es_MX.js
+++ b/core/l10n/es_MX.js
@@ -51,6 +51,11 @@ OC.L10N.register(
"No translation provider available" : "No hay proveedores de traducción disponibles",
"Could not detect language" : "No se pudo detectar el idioma",
"Unable to translate" : "No se puede traducir",
+ "[%d / %d]: %s" : "[%d / %d]: %s ",
+ "Repair step:" : "Paso de reparación:",
+ "Repair info:" : "Información de reparación:",
+ "Repair warning:" : "Advertencia de reparación:",
+ "Repair error:" : "Error de reparación: ",
"Nextcloud Server" : "Servidor Nextcloud",
"Some of your link shares have been removed" : "Se han eliminado algunos de sus enlaces compartidos",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Debido a un error de seguridad, tuvimos que eliminar algunos de sus enlaces compartidos. Por favor vea el enlace para más información.",
@@ -58,11 +63,6 @@ OC.L10N.register(
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Ingrese su clave de suscripción en la aplicación de soporte para aumentar el límite de cuentas. Esto también le otorga todos los beneficios adicionales que ofrece Nextcloud Enterprise y que es altamente recomendado para la operación en empresas.",
"Learn more ↗" : "Más información ↗",
"Preparing update" : "Preparando actualización",
- "[%d / %d]: %s" : "[%d / %d]: %s ",
- "Repair step:" : "Paso de reparación:",
- "Repair info:" : "Información de reparación:",
- "Repair warning:" : "Advertencia de reparación:",
- "Repair error:" : "Error de reparación: ",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Por favor, utilice el actualizador desde la línea de comandos porque la actualización a través del navegador está deshabilitada en config.php.",
"Turned on maintenance mode" : "Modo mantenimiento activado",
"Turned off maintenance mode" : "Modo mantenimiento desactivado",
diff --git a/core/l10n/es_MX.json b/core/l10n/es_MX.json
index 6afecf42566..c5cea133880 100644
--- a/core/l10n/es_MX.json
+++ b/core/l10n/es_MX.json
@@ -49,6 +49,11 @@
"No translation provider available" : "No hay proveedores de traducción disponibles",
"Could not detect language" : "No se pudo detectar el idioma",
"Unable to translate" : "No se puede traducir",
+ "[%d / %d]: %s" : "[%d / %d]: %s ",
+ "Repair step:" : "Paso de reparación:",
+ "Repair info:" : "Información de reparación:",
+ "Repair warning:" : "Advertencia de reparación:",
+ "Repair error:" : "Error de reparación: ",
"Nextcloud Server" : "Servidor Nextcloud",
"Some of your link shares have been removed" : "Se han eliminado algunos de sus enlaces compartidos",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Debido a un error de seguridad, tuvimos que eliminar algunos de sus enlaces compartidos. Por favor vea el enlace para más información.",
@@ -56,11 +61,6 @@
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Ingrese su clave de suscripción en la aplicación de soporte para aumentar el límite de cuentas. Esto también le otorga todos los beneficios adicionales que ofrece Nextcloud Enterprise y que es altamente recomendado para la operación en empresas.",
"Learn more ↗" : "Más información ↗",
"Preparing update" : "Preparando actualización",
- "[%d / %d]: %s" : "[%d / %d]: %s ",
- "Repair step:" : "Paso de reparación:",
- "Repair info:" : "Información de reparación:",
- "Repair warning:" : "Advertencia de reparación:",
- "Repair error:" : "Error de reparación: ",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Por favor, utilice el actualizador desde la línea de comandos porque la actualización a través del navegador está deshabilitada en config.php.",
"Turned on maintenance mode" : "Modo mantenimiento activado",
"Turned off maintenance mode" : "Modo mantenimiento desactivado",
diff --git a/core/l10n/et_EE.js b/core/l10n/et_EE.js
index 751cabdbfd3..a93573e2e08 100644
--- a/core/l10n/et_EE.js
+++ b/core/l10n/et_EE.js
@@ -52,6 +52,11 @@ OC.L10N.register(
"No translation provider available" : "Ühtegi tõlketeenuse pakkujat pole saadaval",
"Could not detect language" : "Ei suutnud keelt tuvastada",
"Unable to translate" : "Viga tõlkimisel",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Paranduse samm:",
+ "Repair info:" : "Paranduse teave:",
+ "Repair warning:" : "Paranduse hoiatus:",
+ "Repair error:" : "Paranduse viga:",
"Nextcloud Server" : "Nextcloudi server",
"Some of your link shares have been removed" : "Mõned sinu linkide jagamised on eemaldatud",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Turvavea tõttu pidime mõned sinu linkide jagamised eemaldama. Lisateabe lugemiseks palun klõpsi järgnevat linki.",
@@ -59,11 +64,6 @@ OC.L10N.register(
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Kasutajakontode arvu ülepiiri suurendamiseks sisesta oma tellimuse võti tugiteenuste rakenduses. Samaga saad kasutusele võtta ka kõik Nextcloud Enterprise'i lisavõimalused, mille kasutamine suurtes organisatsioonides on soovitatav.",
"Learn more ↗" : "Lisateave ↗",
"Preparing update" : "Valmistan ette uuendamist",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Paranduse samm:",
- "Repair info:" : "Paranduse teave:",
- "Repair warning:" : "Paranduse hoiatus:",
- "Repair error:" : "Paranduse viga:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Palun kasuta uuendamiseks käsurida, kuna uuendamine veebibrauserist on config.php failis välja lülitatud.",
"Turned on maintenance mode" : "Hooldusrežiim sisse lülitatud",
"Turned off maintenance mode" : "Hooldusrežiim välja lülitatud",
diff --git a/core/l10n/et_EE.json b/core/l10n/et_EE.json
index 0139f14c417..3d62fa97f5d 100644
--- a/core/l10n/et_EE.json
+++ b/core/l10n/et_EE.json
@@ -50,6 +50,11 @@
"No translation provider available" : "Ühtegi tõlketeenuse pakkujat pole saadaval",
"Could not detect language" : "Ei suutnud keelt tuvastada",
"Unable to translate" : "Viga tõlkimisel",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Paranduse samm:",
+ "Repair info:" : "Paranduse teave:",
+ "Repair warning:" : "Paranduse hoiatus:",
+ "Repair error:" : "Paranduse viga:",
"Nextcloud Server" : "Nextcloudi server",
"Some of your link shares have been removed" : "Mõned sinu linkide jagamised on eemaldatud",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Turvavea tõttu pidime mõned sinu linkide jagamised eemaldama. Lisateabe lugemiseks palun klõpsi järgnevat linki.",
@@ -57,11 +62,6 @@
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Kasutajakontode arvu ülepiiri suurendamiseks sisesta oma tellimuse võti tugiteenuste rakenduses. Samaga saad kasutusele võtta ka kõik Nextcloud Enterprise'i lisavõimalused, mille kasutamine suurtes organisatsioonides on soovitatav.",
"Learn more ↗" : "Lisateave ↗",
"Preparing update" : "Valmistan ette uuendamist",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Paranduse samm:",
- "Repair info:" : "Paranduse teave:",
- "Repair warning:" : "Paranduse hoiatus:",
- "Repair error:" : "Paranduse viga:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Palun kasuta uuendamiseks käsurida, kuna uuendamine veebibrauserist on config.php failis välja lülitatud.",
"Turned on maintenance mode" : "Hooldusrežiim sisse lülitatud",
"Turned off maintenance mode" : "Hooldusrežiim välja lülitatud",
diff --git a/core/l10n/eu.js b/core/l10n/eu.js
index a2b499ba09b..19c18dd97f0 100644
--- a/core/l10n/eu.js
+++ b/core/l10n/eu.js
@@ -51,6 +51,11 @@ OC.L10N.register(
"No translation provider available" : "Ez dago itzulpen-hornitzailerik erabilgarri",
"Could not detect language" : "Ezin izan da hizkuntza hauteman",
"Unable to translate" : "Ezin izan da itzuli",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Konponketa pausoa:",
+ "Repair info:" : "Konponketa informazioa:",
+ "Repair warning:" : "Konponketa abisua:",
+ "Repair error:" : "Konponketa errorea:",
"Nextcloud Server" : "Nextcloud zerbitzaria",
"Some of your link shares have been removed" : "Zure esteka partekatzeetako batzuk kendu dira",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Segurtasun errore baten ondorioz zure esteka partekatze batzuk kendu ditugu. Ikusi esteka informazio gehiagorako.",
@@ -58,11 +63,6 @@ OC.L10N.register(
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Sartu zure harpidetza-gakoa laguntza-aplikazioan kontuen muga handitzeko. Horrek Nextcloud Enterprise-k eskaintzen dituen abantaila gehigarri guztiak ere ematen dizkizu eta oso gomendagarria da enpresetan funtzionatzeko.",
"Learn more ↗" : "Informazio gehiago ↗",
"Preparing update" : "Eguneratzea prestatzen",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Konponketa pausoa:",
- "Repair info:" : "Konponketa informazioa:",
- "Repair warning:" : "Konponketa abisua:",
- "Repair error:" : "Konponketa errorea:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Mesedez, erabili komando-lerroko eguneratzailea, arakatzailearen bidez eguneratzea desgaituta dagoelako zure config.php-n.",
"Turned on maintenance mode" : "Mantentze modua aktibatu da",
"Turned off maintenance mode" : "Mantentze modua desaktibatu da",
diff --git a/core/l10n/eu.json b/core/l10n/eu.json
index 9ff64ea2672..2291d4cf82e 100644
--- a/core/l10n/eu.json
+++ b/core/l10n/eu.json
@@ -49,6 +49,11 @@
"No translation provider available" : "Ez dago itzulpen-hornitzailerik erabilgarri",
"Could not detect language" : "Ezin izan da hizkuntza hauteman",
"Unable to translate" : "Ezin izan da itzuli",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Konponketa pausoa:",
+ "Repair info:" : "Konponketa informazioa:",
+ "Repair warning:" : "Konponketa abisua:",
+ "Repair error:" : "Konponketa errorea:",
"Nextcloud Server" : "Nextcloud zerbitzaria",
"Some of your link shares have been removed" : "Zure esteka partekatzeetako batzuk kendu dira",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Segurtasun errore baten ondorioz zure esteka partekatze batzuk kendu ditugu. Ikusi esteka informazio gehiagorako.",
@@ -56,11 +61,6 @@
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Sartu zure harpidetza-gakoa laguntza-aplikazioan kontuen muga handitzeko. Horrek Nextcloud Enterprise-k eskaintzen dituen abantaila gehigarri guztiak ere ematen dizkizu eta oso gomendagarria da enpresetan funtzionatzeko.",
"Learn more ↗" : "Informazio gehiago ↗",
"Preparing update" : "Eguneratzea prestatzen",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Konponketa pausoa:",
- "Repair info:" : "Konponketa informazioa:",
- "Repair warning:" : "Konponketa abisua:",
- "Repair error:" : "Konponketa errorea:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Mesedez, erabili komando-lerroko eguneratzailea, arakatzailearen bidez eguneratzea desgaituta dagoelako zure config.php-n.",
"Turned on maintenance mode" : "Mantentze modua aktibatu da",
"Turned off maintenance mode" : "Mantentze modua desaktibatu da",
diff --git a/core/l10n/fa.js b/core/l10n/fa.js
index a13afe4f86d..80089986609 100644
--- a/core/l10n/fa.js
+++ b/core/l10n/fa.js
@@ -48,16 +48,16 @@ OC.L10N.register(
"No translation provider available" : "No translation provider available",
"Could not detect language" : "Could not detect language",
"Unable to translate" : "Unable to translate",
- "Nextcloud Server" : "کارساز نکست‌کلود",
- "Some of your link shares have been removed" : "برخی از لینک های اشتراک گذاری شده شما حذف شده است",
- "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Due to a security bug we had to remove some of your link shares. Please see the link for more information.",
- "Learn more ↗" : "بیشتر بدانید ↗",
- "Preparing update" : "آماده‌سازی به روز‌ رسانی",
"[%d / %d]: %s" : "[%d / %d]: %s",
"Repair step:" : "Repair step:",
"Repair info:" : "Repair info:",
"Repair warning:" : "Repair warning:",
"Repair error:" : "Repair error:",
+ "Nextcloud Server" : "کارساز نکست‌کلود",
+ "Some of your link shares have been removed" : "برخی از لینک های اشتراک گذاری شده شما حذف شده است",
+ "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Due to a security bug we had to remove some of your link shares. Please see the link for more information.",
+ "Learn more ↗" : "بیشتر بدانید ↗",
+ "Preparing update" : "آماده‌سازی به روز‌ رسانی",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Please use the command line updater because updating via browser is disabled in your config.php.",
"Turned on maintenance mode" : "حالت \" در دست تعمیر \" فعال شد .",
"Turned off maintenance mode" : "حالت \" در دست تعمیر \" غیرفعال شد .",
diff --git a/core/l10n/fa.json b/core/l10n/fa.json
index 2377008470c..f281d4272e8 100644
--- a/core/l10n/fa.json
+++ b/core/l10n/fa.json
@@ -46,16 +46,16 @@
"No translation provider available" : "No translation provider available",
"Could not detect language" : "Could not detect language",
"Unable to translate" : "Unable to translate",
- "Nextcloud Server" : "کارساز نکست‌کلود",
- "Some of your link shares have been removed" : "برخی از لینک های اشتراک گذاری شده شما حذف شده است",
- "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Due to a security bug we had to remove some of your link shares. Please see the link for more information.",
- "Learn more ↗" : "بیشتر بدانید ↗",
- "Preparing update" : "آماده‌سازی به روز‌ رسانی",
"[%d / %d]: %s" : "[%d / %d]: %s",
"Repair step:" : "Repair step:",
"Repair info:" : "Repair info:",
"Repair warning:" : "Repair warning:",
"Repair error:" : "Repair error:",
+ "Nextcloud Server" : "کارساز نکست‌کلود",
+ "Some of your link shares have been removed" : "برخی از لینک های اشتراک گذاری شده شما حذف شده است",
+ "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Due to a security bug we had to remove some of your link shares. Please see the link for more information.",
+ "Learn more ↗" : "بیشتر بدانید ↗",
+ "Preparing update" : "آماده‌سازی به روز‌ رسانی",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Please use the command line updater because updating via browser is disabled in your config.php.",
"Turned on maintenance mode" : "حالت \" در دست تعمیر \" فعال شد .",
"Turned off maintenance mode" : "حالت \" در دست تعمیر \" غیرفعال شد .",
diff --git a/core/l10n/fi.js b/core/l10n/fi.js
index ac665940467..9140662f3ad 100644
--- a/core/l10n/fi.js
+++ b/core/l10n/fi.js
@@ -46,17 +46,17 @@ OC.L10N.register(
"No translation provider available" : "Käännöksen palveluntarjoaja ei ole saatavilla",
"Could not detect language" : "Kielen havaitseminen ei onnistunut",
"Unable to translate" : "Kääntäminen ei onnistu",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Korjausvaihe:",
+ "Repair info:" : "Korjaustiedot:",
+ "Repair warning:" : "Korjausvaroitus:",
+ "Repair error:" : "Korjausvirhe:",
"Nextcloud Server" : "Nextcloud-palvelin",
"Some of your link shares have been removed" : "Jotkin linkkijakosi on poistettu",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Tietoturvaongelman vuoksi jouduimme poistaa joitakin linkkijakojasi. Lue lisätietoja linkin kautta.",
"The account limit of this instance is reached." : "Tämän instanssin tiliraja on täynnä.",
"Learn more ↗" : "Lue lisää ↗",
"Preparing update" : "Valmistellaan päivitystä",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Korjausvaihe:",
- "Repair info:" : "Korjaustiedot:",
- "Repair warning:" : "Korjausvaroitus:",
- "Repair error:" : "Korjausvirhe:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Käytä komentorivipäivitintä, koska päivitys selainkäyttöliittymällä on estetty config.php-asetustiedostossa.",
"Turned on maintenance mode" : "Siirrytty huoltotilaan",
"Turned off maintenance mode" : "Poistuttu huoltotilasta",
diff --git a/core/l10n/fi.json b/core/l10n/fi.json
index 6b2c8389f9c..8a27b546e1c 100644
--- a/core/l10n/fi.json
+++ b/core/l10n/fi.json
@@ -44,17 +44,17 @@
"No translation provider available" : "Käännöksen palveluntarjoaja ei ole saatavilla",
"Could not detect language" : "Kielen havaitseminen ei onnistunut",
"Unable to translate" : "Kääntäminen ei onnistu",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Korjausvaihe:",
+ "Repair info:" : "Korjaustiedot:",
+ "Repair warning:" : "Korjausvaroitus:",
+ "Repair error:" : "Korjausvirhe:",
"Nextcloud Server" : "Nextcloud-palvelin",
"Some of your link shares have been removed" : "Jotkin linkkijakosi on poistettu",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Tietoturvaongelman vuoksi jouduimme poistaa joitakin linkkijakojasi. Lue lisätietoja linkin kautta.",
"The account limit of this instance is reached." : "Tämän instanssin tiliraja on täynnä.",
"Learn more ↗" : "Lue lisää ↗",
"Preparing update" : "Valmistellaan päivitystä",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Korjausvaihe:",
- "Repair info:" : "Korjaustiedot:",
- "Repair warning:" : "Korjausvaroitus:",
- "Repair error:" : "Korjausvirhe:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Käytä komentorivipäivitintä, koska päivitys selainkäyttöliittymällä on estetty config.php-asetustiedostossa.",
"Turned on maintenance mode" : "Siirrytty huoltotilaan",
"Turned off maintenance mode" : "Poistuttu huoltotilasta",
diff --git a/core/l10n/fr.js b/core/l10n/fr.js
index ef3f87b0233..9f9629b802c 100644
--- a/core/l10n/fr.js
+++ b/core/l10n/fr.js
@@ -52,6 +52,11 @@ OC.L10N.register(
"No translation provider available" : "Aucun fournisseur de traduction n’est disponible",
"Could not detect language" : "Impossible de détecter la langue",
"Unable to translate" : "Impossible de traduire",
+ "[%d / %d]: %s" : "[%d / %d] : %s",
+ "Repair step:" : "Étape de réparation :",
+ "Repair info:" : "Informations de réparation :",
+ "Repair warning:" : "Avertissement de réparation :",
+ "Repair error:" : "Erreur de réparation :",
"Nextcloud Server" : "Serveur Nextcloud",
"Some of your link shares have been removed" : "Certains de vos liens partagés ont été supprimés.",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "En raison d’une faille de sécurité, nous avons supprimé certains de vos liens partagés. Consultez le lien ci-dessus pour plus d’informations.",
@@ -59,11 +64,6 @@ OC.L10N.register(
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Saisissez votre clé de licence dans l’application Support afin d’augmenter la limite de comptes. Cela vous donne également tous les avantages supplémentaires que Nextcloud Enterprise offre et est fortement recommandé pour l’exploitation dans les entreprises.",
"Learn more ↗" : " En savoir plus ↗",
"Preparing update" : "Préparation de la mise à jour",
- "[%d / %d]: %s" : "[%d / %d] : %s",
- "Repair step:" : "Étape de réparation :",
- "Repair info:" : "Informations de réparation :",
- "Repair warning:" : "Avertissement de réparation :",
- "Repair error:" : "Erreur de réparation :",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Veuillez utiliser la mise à jour en ligne de commande, car la mise à jour via le navigateur est désactivée dans votre fichier config.php.",
"Turned on maintenance mode" : "Mode de maintenance activé",
"Turned off maintenance mode" : "Mode de maintenance désactivé",
diff --git a/core/l10n/fr.json b/core/l10n/fr.json
index ba7a994d167..c187c3fc02d 100644
--- a/core/l10n/fr.json
+++ b/core/l10n/fr.json
@@ -50,6 +50,11 @@
"No translation provider available" : "Aucun fournisseur de traduction n’est disponible",
"Could not detect language" : "Impossible de détecter la langue",
"Unable to translate" : "Impossible de traduire",
+ "[%d / %d]: %s" : "[%d / %d] : %s",
+ "Repair step:" : "Étape de réparation :",
+ "Repair info:" : "Informations de réparation :",
+ "Repair warning:" : "Avertissement de réparation :",
+ "Repair error:" : "Erreur de réparation :",
"Nextcloud Server" : "Serveur Nextcloud",
"Some of your link shares have been removed" : "Certains de vos liens partagés ont été supprimés.",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "En raison d’une faille de sécurité, nous avons supprimé certains de vos liens partagés. Consultez le lien ci-dessus pour plus d’informations.",
@@ -57,11 +62,6 @@
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Saisissez votre clé de licence dans l’application Support afin d’augmenter la limite de comptes. Cela vous donne également tous les avantages supplémentaires que Nextcloud Enterprise offre et est fortement recommandé pour l’exploitation dans les entreprises.",
"Learn more ↗" : " En savoir plus ↗",
"Preparing update" : "Préparation de la mise à jour",
- "[%d / %d]: %s" : "[%d / %d] : %s",
- "Repair step:" : "Étape de réparation :",
- "Repair info:" : "Informations de réparation :",
- "Repair warning:" : "Avertissement de réparation :",
- "Repair error:" : "Erreur de réparation :",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Veuillez utiliser la mise à jour en ligne de commande, car la mise à jour via le navigateur est désactivée dans votre fichier config.php.",
"Turned on maintenance mode" : "Mode de maintenance activé",
"Turned off maintenance mode" : "Mode de maintenance désactivé",
diff --git a/core/l10n/ga.js b/core/l10n/ga.js
index 5ac7acb7ef1..d0b938cae09 100644
--- a/core/l10n/ga.js
+++ b/core/l10n/ga.js
@@ -52,6 +52,11 @@ OC.L10N.register(
"No translation provider available" : "Níl aon soláthraí aistriúcháin ar fáil",
"Could not detect language" : "Níorbh fhéidir teanga a bhrath",
"Unable to translate" : "Ní féidir aistriú",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Céim deisiúcháin:",
+ "Repair info:" : "Eolas deisiúcháin:",
+ "Repair warning:" : "Rabhadh deisiúcháin:",
+ "Repair error:" : "Earráid deisiúcháin:",
"Nextcloud Server" : "Freastalaí Nextcloud",
"Some of your link shares have been removed" : "Baineadh cuid de do chuid naisc",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Mar gheall ar fhabht slándála bhí orainn roinnt de do naisc a roinnt. Féach ar an nasc le haghaidh tuilleadh eolais.",
@@ -59,11 +64,6 @@ OC.L10N.register(
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Cuir isteach d'eochair síntiúis san aip tacaíochta chun teorainn an chuntais a mhéadú. Tugann sé seo freisin na buntáistí breise go léir a thairgeann Nextcloud Enterprise agus moltar go mór é don oibríocht i gcuideachtaí.",
"Learn more ↗" : "Tuilleadh eolais ↗",
"Preparing update" : "Nuashonrú a ullmhú",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Céim deisiúcháin:",
- "Repair info:" : "Eolas deisiúcháin:",
- "Repair warning:" : "Rabhadh deisiúcháin:",
- "Repair error:" : "Earráid deisiúcháin:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Bain úsáid as an nuashonróir líne ordaithe toisc go bhfuil nuashonrú trí bhrabhsálaí díchumasaithe i do config.php.",
"Turned on maintenance mode" : "Cuireadh modh cothabhála ar siúl",
"Turned off maintenance mode" : "Modh cothabhála múchta",
diff --git a/core/l10n/ga.json b/core/l10n/ga.json
index 954b69216c9..a63d5772554 100644
--- a/core/l10n/ga.json
+++ b/core/l10n/ga.json
@@ -50,6 +50,11 @@
"No translation provider available" : "Níl aon soláthraí aistriúcháin ar fáil",
"Could not detect language" : "Níorbh fhéidir teanga a bhrath",
"Unable to translate" : "Ní féidir aistriú",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Céim deisiúcháin:",
+ "Repair info:" : "Eolas deisiúcháin:",
+ "Repair warning:" : "Rabhadh deisiúcháin:",
+ "Repair error:" : "Earráid deisiúcháin:",
"Nextcloud Server" : "Freastalaí Nextcloud",
"Some of your link shares have been removed" : "Baineadh cuid de do chuid naisc",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Mar gheall ar fhabht slándála bhí orainn roinnt de do naisc a roinnt. Féach ar an nasc le haghaidh tuilleadh eolais.",
@@ -57,11 +62,6 @@
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Cuir isteach d'eochair síntiúis san aip tacaíochta chun teorainn an chuntais a mhéadú. Tugann sé seo freisin na buntáistí breise go léir a thairgeann Nextcloud Enterprise agus moltar go mór é don oibríocht i gcuideachtaí.",
"Learn more ↗" : "Tuilleadh eolais ↗",
"Preparing update" : "Nuashonrú a ullmhú",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Céim deisiúcháin:",
- "Repair info:" : "Eolas deisiúcháin:",
- "Repair warning:" : "Rabhadh deisiúcháin:",
- "Repair error:" : "Earráid deisiúcháin:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Bain úsáid as an nuashonróir líne ordaithe toisc go bhfuil nuashonrú trí bhrabhsálaí díchumasaithe i do config.php.",
"Turned on maintenance mode" : "Cuireadh modh cothabhála ar siúl",
"Turned off maintenance mode" : "Modh cothabhála múchta",
diff --git a/core/l10n/gl.js b/core/l10n/gl.js
index d3504a0aa78..c1b34db0cfd 100644
--- a/core/l10n/gl.js
+++ b/core/l10n/gl.js
@@ -51,6 +51,11 @@ OC.L10N.register(
"No translation provider available" : "Non hai ningún provedor de tradución dispoñíbel",
"Could not detect language" : "Non foi posíbel detectar o idioma",
"Unable to translate" : "Non é posíbel traducir",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Paso do arranxo:",
+ "Repair info:" : "Información do arranxo:",
+ "Repair warning:" : "Advertencia de arranxo:",
+ "Repair error:" : "Erro do arranxo:",
"Nextcloud Server" : "Servidor de Nextcloud",
"Some of your link shares have been removed" : "Retiráronse algunhas das súas ligazóns para compartir",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Por mor dun fallo de seguranza tivemos que retirar algunhas das súas ligazóns para compartir. Vexa a ligazón para obter máis información.",
@@ -58,11 +63,6 @@ OC.L10N.register(
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Introduza a súa chave de subscrición na aplicación de asistencia para aumentar o límite da conta. Isto tamén lle outorga todos os beneficios adicionais que ofrece Nextcloud Enterprise e é moi recomendábel para a operativa nas empresas.",
"Learn more ↗" : "Máis información ↗",
"Preparing update" : "Preparando a actualización",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Paso do arranxo:",
- "Repair info:" : "Información do arranxo:",
- "Repair warning:" : "Advertencia de arranxo:",
- "Repair error:" : "Erro do arranxo:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Use o actualizador da liña de ordes porque a actualización a través do navegador está desactivada no seu config.php.",
"Turned on maintenance mode" : "Modo de mantemento activado",
"Turned off maintenance mode" : "Modo de mantemento desactivado",
diff --git a/core/l10n/gl.json b/core/l10n/gl.json
index 93b4ad1e79d..f79b999ca4b 100644
--- a/core/l10n/gl.json
+++ b/core/l10n/gl.json
@@ -49,6 +49,11 @@
"No translation provider available" : "Non hai ningún provedor de tradución dispoñíbel",
"Could not detect language" : "Non foi posíbel detectar o idioma",
"Unable to translate" : "Non é posíbel traducir",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Paso do arranxo:",
+ "Repair info:" : "Información do arranxo:",
+ "Repair warning:" : "Advertencia de arranxo:",
+ "Repair error:" : "Erro do arranxo:",
"Nextcloud Server" : "Servidor de Nextcloud",
"Some of your link shares have been removed" : "Retiráronse algunhas das súas ligazóns para compartir",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Por mor dun fallo de seguranza tivemos que retirar algunhas das súas ligazóns para compartir. Vexa a ligazón para obter máis información.",
@@ -56,11 +61,6 @@
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Introduza a súa chave de subscrición na aplicación de asistencia para aumentar o límite da conta. Isto tamén lle outorga todos os beneficios adicionais que ofrece Nextcloud Enterprise e é moi recomendábel para a operativa nas empresas.",
"Learn more ↗" : "Máis información ↗",
"Preparing update" : "Preparando a actualización",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Paso do arranxo:",
- "Repair info:" : "Información do arranxo:",
- "Repair warning:" : "Advertencia de arranxo:",
- "Repair error:" : "Erro do arranxo:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Use o actualizador da liña de ordes porque a actualización a través do navegador está desactivada no seu config.php.",
"Turned on maintenance mode" : "Modo de mantemento activado",
"Turned off maintenance mode" : "Modo de mantemento desactivado",
diff --git a/core/l10n/he.js b/core/l10n/he.js
index 38e7de233fa..51180a33e04 100644
--- a/core/l10n/he.js
+++ b/core/l10n/he.js
@@ -35,16 +35,16 @@ OC.L10N.register(
"Reset your password" : "איפוס הססמה שלך",
"Internal error" : "שגיאה פנימית",
"Not found" : "לא נמצא",
- "Nextcloud Server" : "שרת Nextcloud",
- "Some of your link shares have been removed" : "חלק מקישורי השיתופים שלך הוסרו",
- "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "עקב תקלת אבטחה נאלצנו להסיר חלק מקישורי השיתופים שלך. נא להיכנס לקישור לקבלת פרטים נוספים.",
- "Learn more ↗" : "מידע נוסף ↖ ",
- "Preparing update" : "מכין עדכון",
"[%d / %d]: %s" : "[%d / %d]: %s",
"Repair step:" : "שלב בתיקון:",
"Repair info:" : "פרטי תיקון:",
"Repair warning:" : "אזהרת תיקון:",
"Repair error:" : "שגיאת תיקון:",
+ "Nextcloud Server" : "שרת Nextcloud",
+ "Some of your link shares have been removed" : "חלק מקישורי השיתופים שלך הוסרו",
+ "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "עקב תקלת אבטחה נאלצנו להסיר חלק מקישורי השיתופים שלך. נא להיכנס לקישור לקבלת פרטים נוספים.",
+ "Learn more ↗" : "מידע נוסף ↖ ",
+ "Preparing update" : "מכין עדכון",
"Turned on maintenance mode" : "הפעלת מצב אחזקה",
"Turned off maintenance mode" : "כיבוי מצב אחזקה",
"Maintenance mode is kept active" : "מצב אחזקה נשמר פעיל",
diff --git a/core/l10n/he.json b/core/l10n/he.json
index 575a123477b..00e80c37699 100644
--- a/core/l10n/he.json
+++ b/core/l10n/he.json
@@ -33,16 +33,16 @@
"Reset your password" : "איפוס הססמה שלך",
"Internal error" : "שגיאה פנימית",
"Not found" : "לא נמצא",
- "Nextcloud Server" : "שרת Nextcloud",
- "Some of your link shares have been removed" : "חלק מקישורי השיתופים שלך הוסרו",
- "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "עקב תקלת אבטחה נאלצנו להסיר חלק מקישורי השיתופים שלך. נא להיכנס לקישור לקבלת פרטים נוספים.",
- "Learn more ↗" : "מידע נוסף ↖ ",
- "Preparing update" : "מכין עדכון",
"[%d / %d]: %s" : "[%d / %d]: %s",
"Repair step:" : "שלב בתיקון:",
"Repair info:" : "פרטי תיקון:",
"Repair warning:" : "אזהרת תיקון:",
"Repair error:" : "שגיאת תיקון:",
+ "Nextcloud Server" : "שרת Nextcloud",
+ "Some of your link shares have been removed" : "חלק מקישורי השיתופים שלך הוסרו",
+ "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "עקב תקלת אבטחה נאלצנו להסיר חלק מקישורי השיתופים שלך. נא להיכנס לקישור לקבלת פרטים נוספים.",
+ "Learn more ↗" : "מידע נוסף ↖ ",
+ "Preparing update" : "מכין עדכון",
"Turned on maintenance mode" : "הפעלת מצב אחזקה",
"Turned off maintenance mode" : "כיבוי מצב אחזקה",
"Maintenance mode is kept active" : "מצב אחזקה נשמר פעיל",
diff --git a/core/l10n/hr.js b/core/l10n/hr.js
index 2db343f3f12..4ba976a3e33 100644
--- a/core/l10n/hr.js
+++ b/core/l10n/hr.js
@@ -35,16 +35,16 @@ OC.L10N.register(
"Reset your password" : "Resetirajte svoju zaporku",
"Internal error" : "Unutarnja pogreška",
"Not found" : "Nije pronađeno",
- "Nextcloud Server" : "Nextcloud poslužitelj",
- "Some of your link shares have been removed" : "Uklonjene su neke od vaših dijeljenih poveznica",
- "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Zbog sigurnosne pogreške morali smo ukloniti neke od vaših dijeljenih poveznica. Za više informacija pogledajte poveznicu.",
- "Learn more ↗" : "Saznajte više ↗",
- "Preparing update" : "Priprema ažuriranja",
"[%d / %d]: %s" : "[%d / %d]: %s",
"Repair step:" : "Korak ispravljanja pogreške:",
"Repair info:" : "Informacije o ispravljanju pogreške:",
"Repair warning:" : "Upozorenje o ispravljanju pogreške:",
"Repair error:" : "Pogreška ispravljanja pogreške:",
+ "Nextcloud Server" : "Nextcloud poslužitelj",
+ "Some of your link shares have been removed" : "Uklonjene su neke od vaših dijeljenih poveznica",
+ "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Zbog sigurnosne pogreške morali smo ukloniti neke od vaših dijeljenih poveznica. Za više informacija pogledajte poveznicu.",
+ "Learn more ↗" : "Saznajte više ↗",
+ "Preparing update" : "Priprema ažuriranja",
"Turned on maintenance mode" : "Način rada za održavanje uključen",
"Turned off maintenance mode" : "Način rada za održavanje isključen",
"Maintenance mode is kept active" : "Način rada za održavanje održan",
diff --git a/core/l10n/hr.json b/core/l10n/hr.json
index 80ebcd1964b..9046f616008 100644
--- a/core/l10n/hr.json
+++ b/core/l10n/hr.json
@@ -33,16 +33,16 @@
"Reset your password" : "Resetirajte svoju zaporku",
"Internal error" : "Unutarnja pogreška",
"Not found" : "Nije pronađeno",
- "Nextcloud Server" : "Nextcloud poslužitelj",
- "Some of your link shares have been removed" : "Uklonjene su neke od vaših dijeljenih poveznica",
- "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Zbog sigurnosne pogreške morali smo ukloniti neke od vaših dijeljenih poveznica. Za više informacija pogledajte poveznicu.",
- "Learn more ↗" : "Saznajte više ↗",
- "Preparing update" : "Priprema ažuriranja",
"[%d / %d]: %s" : "[%d / %d]: %s",
"Repair step:" : "Korak ispravljanja pogreške:",
"Repair info:" : "Informacije o ispravljanju pogreške:",
"Repair warning:" : "Upozorenje o ispravljanju pogreške:",
"Repair error:" : "Pogreška ispravljanja pogreške:",
+ "Nextcloud Server" : "Nextcloud poslužitelj",
+ "Some of your link shares have been removed" : "Uklonjene su neke od vaših dijeljenih poveznica",
+ "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Zbog sigurnosne pogreške morali smo ukloniti neke od vaših dijeljenih poveznica. Za više informacija pogledajte poveznicu.",
+ "Learn more ↗" : "Saznajte više ↗",
+ "Preparing update" : "Priprema ažuriranja",
"Turned on maintenance mode" : "Način rada za održavanje uključen",
"Turned off maintenance mode" : "Način rada za održavanje isključen",
"Maintenance mode is kept active" : "Način rada za održavanje održan",
diff --git a/core/l10n/hu.js b/core/l10n/hu.js
index 6793e502488..9f1792ab51a 100644
--- a/core/l10n/hu.js
+++ b/core/l10n/hu.js
@@ -51,6 +51,11 @@ OC.L10N.register(
"No translation provider available" : "Nem érhető el fordítási szolgáltató",
"Could not detect language" : "Nem sikerült észlelni a nyelvet",
"Unable to translate" : "Nem fordítható le",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Javítási lépés:",
+ "Repair info:" : "Javítási információ:",
+ "Repair warning:" : "Javítási figyelmeztetés:",
+ "Repair error:" : "Javítási hiba:",
"Nextcloud Server" : "Nextcloud kiszolgáló",
"Some of your link shares have been removed" : "Néhány megosztási hivatkozása eltávolításra került",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Egy biztonsági hiba miatt el kellett távolítsunk néhány megosztási hivatkozását. További információkért lásd a lenti hivatkozást.",
@@ -58,11 +63,6 @@ OC.L10N.register(
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Adja meg az előfizetési kulcsát a támogatási alkalmazásban, hogy megnövelje a fiókkorlátot. Ez a Nextcloud vállalati ajánlatainak további előnyeit is biztosítja, és határozottan ajánlott a céges üzemeltetés esetén.",
"Learn more ↗" : "Tudjon meg többet ↗",
"Preparing update" : "Felkészülés a frissítésre",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Javítási lépés:",
- "Repair info:" : "Javítási információ:",
- "Repair warning:" : "Javítási figyelmeztetés:",
- "Repair error:" : "Javítási hiba:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Használja a parancssoros frissítőt, mert a böngészőbeli frissítés ki van kapcsolva a config.php fájlban.",
"Turned on maintenance mode" : "Karbantartási mód bekapcsolva",
"Turned off maintenance mode" : "Karbantartási mód kikapcsolva",
diff --git a/core/l10n/hu.json b/core/l10n/hu.json
index b4945b0e9d9..3ba08d373ac 100644
--- a/core/l10n/hu.json
+++ b/core/l10n/hu.json
@@ -49,6 +49,11 @@
"No translation provider available" : "Nem érhető el fordítási szolgáltató",
"Could not detect language" : "Nem sikerült észlelni a nyelvet",
"Unable to translate" : "Nem fordítható le",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Javítási lépés:",
+ "Repair info:" : "Javítási információ:",
+ "Repair warning:" : "Javítási figyelmeztetés:",
+ "Repair error:" : "Javítási hiba:",
"Nextcloud Server" : "Nextcloud kiszolgáló",
"Some of your link shares have been removed" : "Néhány megosztási hivatkozása eltávolításra került",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Egy biztonsági hiba miatt el kellett távolítsunk néhány megosztási hivatkozását. További információkért lásd a lenti hivatkozást.",
@@ -56,11 +61,6 @@
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Adja meg az előfizetési kulcsát a támogatási alkalmazásban, hogy megnövelje a fiókkorlátot. Ez a Nextcloud vállalati ajánlatainak további előnyeit is biztosítja, és határozottan ajánlott a céges üzemeltetés esetén.",
"Learn more ↗" : "Tudjon meg többet ↗",
"Preparing update" : "Felkészülés a frissítésre",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Javítási lépés:",
- "Repair info:" : "Javítási információ:",
- "Repair warning:" : "Javítási figyelmeztetés:",
- "Repair error:" : "Javítási hiba:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Használja a parancssoros frissítőt, mert a böngészőbeli frissítés ki van kapcsolva a config.php fájlban.",
"Turned on maintenance mode" : "Karbantartási mód bekapcsolva",
"Turned off maintenance mode" : "Karbantartási mód kikapcsolva",
diff --git a/core/l10n/id.js b/core/l10n/id.js
index d127bbf59ce..31ea2437dd2 100644
--- a/core/l10n/id.js
+++ b/core/l10n/id.js
@@ -36,16 +36,16 @@ OC.L10N.register(
"Click the following link to reset your password. If you have not requested the password reset, then ignore this email." : "Klik tautan berikut untuk menyetel ulang kata sandi Anda. Jika Anda tidak melakukan permintaan setel ulang kata sandi, abaikan surel ini.",
"Reset your password" : "Setel ulang kata sandi Anda",
"Internal error" : "Kesalahan internal",
- "Nextcloud Server" : "Server Nextcloud",
- "Some of your link shares have been removed" : "Beberapa tautan berbagi Anda telah dihapus",
- "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Dikarenakan isu bug keamanan, kami perlu menghapus beberapa tautan berbagi Anda. Silakan lihat tautan berikut untuk informasi lebih lanjut.",
- "Learn more ↗" : "Pelajari lebih lanjut ↗",
- "Preparing update" : "Mempersiapkan pembaruan",
"[%d / %d]: %s" : "[%d / %d]: %s",
"Repair step:" : "Langkah perbaikan:",
"Repair info:" : "Info perbaikan:",
"Repair warning:" : "Peringatan perbaikan:",
"Repair error:" : "Galat perbaikan:",
+ "Nextcloud Server" : "Server Nextcloud",
+ "Some of your link shares have been removed" : "Beberapa tautan berbagi Anda telah dihapus",
+ "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Dikarenakan isu bug keamanan, kami perlu menghapus beberapa tautan berbagi Anda. Silakan lihat tautan berikut untuk informasi lebih lanjut.",
+ "Learn more ↗" : "Pelajari lebih lanjut ↗",
+ "Preparing update" : "Mempersiapkan pembaruan",
"Turned on maintenance mode" : "Hidupkan mode perawatan",
"Turned off maintenance mode" : "Matikan mode perawatan",
"Maintenance mode is kept active" : "Mode Pemeliharaan masih aktif",
diff --git a/core/l10n/id.json b/core/l10n/id.json
index dd77ad415c1..f2b0d11225a 100644
--- a/core/l10n/id.json
+++ b/core/l10n/id.json
@@ -34,16 +34,16 @@
"Click the following link to reset your password. If you have not requested the password reset, then ignore this email." : "Klik tautan berikut untuk menyetel ulang kata sandi Anda. Jika Anda tidak melakukan permintaan setel ulang kata sandi, abaikan surel ini.",
"Reset your password" : "Setel ulang kata sandi Anda",
"Internal error" : "Kesalahan internal",
- "Nextcloud Server" : "Server Nextcloud",
- "Some of your link shares have been removed" : "Beberapa tautan berbagi Anda telah dihapus",
- "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Dikarenakan isu bug keamanan, kami perlu menghapus beberapa tautan berbagi Anda. Silakan lihat tautan berikut untuk informasi lebih lanjut.",
- "Learn more ↗" : "Pelajari lebih lanjut ↗",
- "Preparing update" : "Mempersiapkan pembaruan",
"[%d / %d]: %s" : "[%d / %d]: %s",
"Repair step:" : "Langkah perbaikan:",
"Repair info:" : "Info perbaikan:",
"Repair warning:" : "Peringatan perbaikan:",
"Repair error:" : "Galat perbaikan:",
+ "Nextcloud Server" : "Server Nextcloud",
+ "Some of your link shares have been removed" : "Beberapa tautan berbagi Anda telah dihapus",
+ "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Dikarenakan isu bug keamanan, kami perlu menghapus beberapa tautan berbagi Anda. Silakan lihat tautan berikut untuk informasi lebih lanjut.",
+ "Learn more ↗" : "Pelajari lebih lanjut ↗",
+ "Preparing update" : "Mempersiapkan pembaruan",
"Turned on maintenance mode" : "Hidupkan mode perawatan",
"Turned off maintenance mode" : "Matikan mode perawatan",
"Maintenance mode is kept active" : "Mode Pemeliharaan masih aktif",
diff --git a/core/l10n/is.js b/core/l10n/is.js
index 747717ceacc..2f655f660f3 100644
--- a/core/l10n/is.js
+++ b/core/l10n/is.js
@@ -51,6 +51,11 @@ OC.L10N.register(
"No translation provider available" : "Engin þýðingaþjónusta tiltæk",
"Could not detect language" : "Gat ekki greint tungumálið",
"Unable to translate" : "Næ ekki að þýða",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Þrep viðgerðar:",
+ "Repair info:" : "Viðgerðarupplýsingar:",
+ "Repair warning:" : "Viðvörun vegna viðgerðar:",
+ "Repair error:" : "Villa í viðgerð:",
"Nextcloud Server" : "Nextcloud þjónn",
"Some of your link shares have been removed" : "Sumir tenglar þínir á sameignir hafa verið fjarlægðir",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Vegna öryggisgalla hafa sumir tenglar þínir á sameignir hafa verið fjarlægðir. Skoðaðu tengilinn til að sjá frekari upplýsingar.",
@@ -58,11 +63,6 @@ OC.L10N.register(
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Settu inn áskriftarlykilinn þinn í aðstoðarforritið til að lyfta takmörkum á aðgangnum þínum. Þetta gefur þér einnig alla viðbótareiginleikana sem Nextcloud Enterprise fyrirtækjaáskrift býður, enda er sterklega mælt með þeim fyrir verklag í fyrirtækjum.",
"Learn more ↗" : "Kanna nánar ↗",
"Preparing update" : "Undirbý uppfærslu",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Þrep viðgerðar:",
- "Repair info:" : "Viðgerðarupplýsingar:",
- "Repair warning:" : "Viðvörun vegna viðgerðar:",
- "Repair error:" : "Villa í viðgerð:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Endilega notaðu uppfærslutólið af skipanalínu, því uppfærslur í vafra eru gerðar óvirkar í config.php.",
"Turned on maintenance mode" : "Kveikt á viðhaldsham",
"Turned off maintenance mode" : "Slökkt á viðhaldsham",
diff --git a/core/l10n/is.json b/core/l10n/is.json
index c23cd56bcbc..3ef274ff6a0 100644
--- a/core/l10n/is.json
+++ b/core/l10n/is.json
@@ -49,6 +49,11 @@
"No translation provider available" : "Engin þýðingaþjónusta tiltæk",
"Could not detect language" : "Gat ekki greint tungumálið",
"Unable to translate" : "Næ ekki að þýða",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Þrep viðgerðar:",
+ "Repair info:" : "Viðgerðarupplýsingar:",
+ "Repair warning:" : "Viðvörun vegna viðgerðar:",
+ "Repair error:" : "Villa í viðgerð:",
"Nextcloud Server" : "Nextcloud þjónn",
"Some of your link shares have been removed" : "Sumir tenglar þínir á sameignir hafa verið fjarlægðir",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Vegna öryggisgalla hafa sumir tenglar þínir á sameignir hafa verið fjarlægðir. Skoðaðu tengilinn til að sjá frekari upplýsingar.",
@@ -56,11 +61,6 @@
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Settu inn áskriftarlykilinn þinn í aðstoðarforritið til að lyfta takmörkum á aðgangnum þínum. Þetta gefur þér einnig alla viðbótareiginleikana sem Nextcloud Enterprise fyrirtækjaáskrift býður, enda er sterklega mælt með þeim fyrir verklag í fyrirtækjum.",
"Learn more ↗" : "Kanna nánar ↗",
"Preparing update" : "Undirbý uppfærslu",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Þrep viðgerðar:",
- "Repair info:" : "Viðgerðarupplýsingar:",
- "Repair warning:" : "Viðvörun vegna viðgerðar:",
- "Repair error:" : "Villa í viðgerð:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Endilega notaðu uppfærslutólið af skipanalínu, því uppfærslur í vafra eru gerðar óvirkar í config.php.",
"Turned on maintenance mode" : "Kveikt á viðhaldsham",
"Turned off maintenance mode" : "Slökkt á viðhaldsham",
diff --git a/core/l10n/it.js b/core/l10n/it.js
index aa65b8e5f1d..6a493b30cb3 100644
--- a/core/l10n/it.js
+++ b/core/l10n/it.js
@@ -52,6 +52,11 @@ OC.L10N.register(
"No translation provider available" : "Nessun fornitore di traduzioni disponibile",
"Could not detect language" : "Impossibile rilevare la lingua",
"Unable to translate" : "Impossibile tradurre",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Fase di riparazione:",
+ "Repair info:" : "Informazioni di riparazione:",
+ "Repair warning:" : "Avviso di riparazione",
+ "Repair error:" : "Errore di riparazione:",
"Nextcloud Server" : "Server Nextcloud",
"Some of your link shares have been removed" : "Alcune delle tue condivisioni tramite collegamento sono state rimosse",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "A causa di un bug di sicurezza abbiamo rimosso alcune delle tue condivisioni tramite collegamento. Vedi il collegamento per ulteriori informazioni.",
@@ -59,11 +64,6 @@ OC.L10N.register(
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Inserisci la tua chiave di abbonamento nell'applicazione di supporto per aumentare il limite di utenti. In questo modo otterrai anche tutti i vantaggi aggiuntivi che Nextcloud Enterprise offre ed è altamente consigliato per l'operatività nelle aziende.",
"Learn more ↗" : "Ulteriori informazioni ↗",
"Preparing update" : "Preparazione dell'aggiornamento",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Fase di riparazione:",
- "Repair info:" : "Informazioni di riparazione:",
- "Repair warning:" : "Avviso di riparazione",
- "Repair error:" : "Errore di riparazione:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Utilizza lo strumento da riga di comando poiché l'aggiornamento da browser è disabilitato nel file config.php.",
"Turned on maintenance mode" : "Modalità di manutenzione attivata",
"Turned off maintenance mode" : "Modalità di manutenzione disattivata",
diff --git a/core/l10n/it.json b/core/l10n/it.json
index e075d2ed828..c0030af2245 100644
--- a/core/l10n/it.json
+++ b/core/l10n/it.json
@@ -50,6 +50,11 @@
"No translation provider available" : "Nessun fornitore di traduzioni disponibile",
"Could not detect language" : "Impossibile rilevare la lingua",
"Unable to translate" : "Impossibile tradurre",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Fase di riparazione:",
+ "Repair info:" : "Informazioni di riparazione:",
+ "Repair warning:" : "Avviso di riparazione",
+ "Repair error:" : "Errore di riparazione:",
"Nextcloud Server" : "Server Nextcloud",
"Some of your link shares have been removed" : "Alcune delle tue condivisioni tramite collegamento sono state rimosse",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "A causa di un bug di sicurezza abbiamo rimosso alcune delle tue condivisioni tramite collegamento. Vedi il collegamento per ulteriori informazioni.",
@@ -57,11 +62,6 @@
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Inserisci la tua chiave di abbonamento nell'applicazione di supporto per aumentare il limite di utenti. In questo modo otterrai anche tutti i vantaggi aggiuntivi che Nextcloud Enterprise offre ed è altamente consigliato per l'operatività nelle aziende.",
"Learn more ↗" : "Ulteriori informazioni ↗",
"Preparing update" : "Preparazione dell'aggiornamento",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Fase di riparazione:",
- "Repair info:" : "Informazioni di riparazione:",
- "Repair warning:" : "Avviso di riparazione",
- "Repair error:" : "Errore di riparazione:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Utilizza lo strumento da riga di comando poiché l'aggiornamento da browser è disabilitato nel file config.php.",
"Turned on maintenance mode" : "Modalità di manutenzione attivata",
"Turned off maintenance mode" : "Modalità di manutenzione disattivata",
diff --git a/core/l10n/ja.js b/core/l10n/ja.js
index 925e1556963..cb207484f67 100644
--- a/core/l10n/ja.js
+++ b/core/l10n/ja.js
@@ -52,6 +52,11 @@ OC.L10N.register(
"No translation provider available" : "利用可能な翻訳プロバイダーがありません",
"Could not detect language" : "言語を検出できませんでした",
"Unable to translate" : "翻訳できませんでした",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "修復ステップ:",
+ "Repair info:" : "修復情報:",
+ "Repair warning:" : "修復警告:",
+ "Repair error:" : "修復エラー:",
"Nextcloud Server" : "Nextcloud サーバー",
"Some of your link shares have been removed" : "リンク共有の一部が削除されました",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "セキュリティ上の不具合により、あなたのリンク共有をいくつか削除する必要がありました。 詳しくはリンクをご覧ください。",
@@ -59,11 +64,6 @@ OC.L10N.register(
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "support app にサブスクリプションキーを入力して、アカウント数の上限を増やすことができます。これにより、Nextcloud Enterprise が提供するすべての追加特典が付与され、企業での運用には非常におすすめです。",
"Learn more ↗" : "もっと詳しく知る",
"Preparing update" : "アップデートの準備中",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "修復ステップ:",
- "Repair info:" : "修復情報:",
- "Repair warning:" : "修復警告:",
- "Repair error:" : "修復エラー:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "config.phpでブラウザ経由でのアップデートが無効になっていますので、コマンドラインアップデーターをご利用ください。",
"Turned on maintenance mode" : "メンテナンスモードがオンになりました",
"Turned off maintenance mode" : "メンテナンスモードがオフになりました",
diff --git a/core/l10n/ja.json b/core/l10n/ja.json
index 794de9ad22b..1edf9de978f 100644
--- a/core/l10n/ja.json
+++ b/core/l10n/ja.json
@@ -50,6 +50,11 @@
"No translation provider available" : "利用可能な翻訳プロバイダーがありません",
"Could not detect language" : "言語を検出できませんでした",
"Unable to translate" : "翻訳できませんでした",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "修復ステップ:",
+ "Repair info:" : "修復情報:",
+ "Repair warning:" : "修復警告:",
+ "Repair error:" : "修復エラー:",
"Nextcloud Server" : "Nextcloud サーバー",
"Some of your link shares have been removed" : "リンク共有の一部が削除されました",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "セキュリティ上の不具合により、あなたのリンク共有をいくつか削除する必要がありました。 詳しくはリンクをご覧ください。",
@@ -57,11 +62,6 @@
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "support app にサブスクリプションキーを入力して、アカウント数の上限を増やすことができます。これにより、Nextcloud Enterprise が提供するすべての追加特典が付与され、企業での運用には非常におすすめです。",
"Learn more ↗" : "もっと詳しく知る",
"Preparing update" : "アップデートの準備中",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "修復ステップ:",
- "Repair info:" : "修復情報:",
- "Repair warning:" : "修復警告:",
- "Repair error:" : "修復エラー:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "config.phpでブラウザ経由でのアップデートが無効になっていますので、コマンドラインアップデーターをご利用ください。",
"Turned on maintenance mode" : "メンテナンスモードがオンになりました",
"Turned off maintenance mode" : "メンテナンスモードがオフになりました",
diff --git a/core/l10n/ka.js b/core/l10n/ka.js
index e978ded2ed6..0a0d00b1791 100644
--- a/core/l10n/ka.js
+++ b/core/l10n/ka.js
@@ -50,16 +50,16 @@ OC.L10N.register(
"No translation provider available" : "No translation provider available",
"Could not detect language" : "Could not detect language",
"Unable to translate" : "Unable to translate",
- "Nextcloud Server" : "Nextcloud Server",
- "Some of your link shares have been removed" : "Some of your link shares have been removed",
- "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Due to a security bug we had to remove some of your link shares. Please see the link for more information.",
- "Learn more ↗" : "Learn more ↗",
- "Preparing update" : "Preparing update",
"[%d / %d]: %s" : "[%d / %d]: %s",
"Repair step:" : "Repair step:",
"Repair info:" : "Repair info:",
"Repair warning:" : "Repair warning:",
"Repair error:" : "Repair error:",
+ "Nextcloud Server" : "Nextcloud Server",
+ "Some of your link shares have been removed" : "Some of your link shares have been removed",
+ "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Due to a security bug we had to remove some of your link shares. Please see the link for more information.",
+ "Learn more ↗" : "Learn more ↗",
+ "Preparing update" : "Preparing update",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Please use the command line updater because updating via browser is disabled in your config.php.",
"Turned on maintenance mode" : "Turned on maintenance mode",
"Turned off maintenance mode" : "Turned off maintenance mode",
diff --git a/core/l10n/ka.json b/core/l10n/ka.json
index 468e4c8e92f..b9437793b2a 100644
--- a/core/l10n/ka.json
+++ b/core/l10n/ka.json
@@ -48,16 +48,16 @@
"No translation provider available" : "No translation provider available",
"Could not detect language" : "Could not detect language",
"Unable to translate" : "Unable to translate",
- "Nextcloud Server" : "Nextcloud Server",
- "Some of your link shares have been removed" : "Some of your link shares have been removed",
- "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Due to a security bug we had to remove some of your link shares. Please see the link for more information.",
- "Learn more ↗" : "Learn more ↗",
- "Preparing update" : "Preparing update",
"[%d / %d]: %s" : "[%d / %d]: %s",
"Repair step:" : "Repair step:",
"Repair info:" : "Repair info:",
"Repair warning:" : "Repair warning:",
"Repair error:" : "Repair error:",
+ "Nextcloud Server" : "Nextcloud Server",
+ "Some of your link shares have been removed" : "Some of your link shares have been removed",
+ "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Due to a security bug we had to remove some of your link shares. Please see the link for more information.",
+ "Learn more ↗" : "Learn more ↗",
+ "Preparing update" : "Preparing update",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Please use the command line updater because updating via browser is disabled in your config.php.",
"Turned on maintenance mode" : "Turned on maintenance mode",
"Turned off maintenance mode" : "Turned off maintenance mode",
diff --git a/core/l10n/ko.js b/core/l10n/ko.js
index cdc2e198163..9da0bf20a4d 100644
--- a/core/l10n/ko.js
+++ b/core/l10n/ko.js
@@ -52,6 +52,11 @@ OC.L10N.register(
"No translation provider available" : "이용 가능한 번역 제공자 없음",
"Could not detect language" : "언어를 감지할 수 없음",
"Unable to translate" : "번역할 수 없음",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "수리 단계:",
+ "Repair info:" : "수리 정보:",
+ "Repair warning:" : "수리 경고:",
+ "Repair error:" : "수리 오류:",
"Nextcloud Server" : "Nextcloud 서버",
"Some of your link shares have been removed" : "일부 링크 공유가 제거되었습니다.",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "보안 버그로 인하여 일부 링크 공유를 삭제했습니다. 링크를 눌러서 더 많은 정보를 볼 수 있습니다.",
@@ -59,11 +64,6 @@ OC.L10N.register(
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "지원 앱에서 가입 키를 입력하여 계정 한도를 늘리세요. 이는 Nextcloud Enterprise의 모든 혜택을 제공하며, 기업에서의 운영에 적극 권장됩니다.",
"Learn more ↗" : "더 알아보기 ↗",
"Preparing update" : "업데이트 준비 중",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "수리 단계:",
- "Repair info:" : "수리 정보:",
- "Repair warning:" : "수리 경고:",
- "Repair error:" : "수리 오류:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "당신의 config.php에서 브라우저를 통한 업데이트가 비활성화 되어 있으므로, 명령줄 업데이터를 사용하세요.",
"Turned on maintenance mode" : "유지 보수 모드 켜짐",
"Turned off maintenance mode" : "유지 보수 모드 꺼짐",
diff --git a/core/l10n/ko.json b/core/l10n/ko.json
index c3462065793..8dd4455c116 100644
--- a/core/l10n/ko.json
+++ b/core/l10n/ko.json
@@ -50,6 +50,11 @@
"No translation provider available" : "이용 가능한 번역 제공자 없음",
"Could not detect language" : "언어를 감지할 수 없음",
"Unable to translate" : "번역할 수 없음",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "수리 단계:",
+ "Repair info:" : "수리 정보:",
+ "Repair warning:" : "수리 경고:",
+ "Repair error:" : "수리 오류:",
"Nextcloud Server" : "Nextcloud 서버",
"Some of your link shares have been removed" : "일부 링크 공유가 제거되었습니다.",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "보안 버그로 인하여 일부 링크 공유를 삭제했습니다. 링크를 눌러서 더 많은 정보를 볼 수 있습니다.",
@@ -57,11 +62,6 @@
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "지원 앱에서 가입 키를 입력하여 계정 한도를 늘리세요. 이는 Nextcloud Enterprise의 모든 혜택을 제공하며, 기업에서의 운영에 적극 권장됩니다.",
"Learn more ↗" : "더 알아보기 ↗",
"Preparing update" : "업데이트 준비 중",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "수리 단계:",
- "Repair info:" : "수리 정보:",
- "Repair warning:" : "수리 경고:",
- "Repair error:" : "수리 오류:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "당신의 config.php에서 브라우저를 통한 업데이트가 비활성화 되어 있으므로, 명령줄 업데이터를 사용하세요.",
"Turned on maintenance mode" : "유지 보수 모드 켜짐",
"Turned off maintenance mode" : "유지 보수 모드 꺼짐",
diff --git a/core/l10n/lt_LT.js b/core/l10n/lt_LT.js
index 574032ecac3..f98213ff52d 100644
--- a/core/l10n/lt_LT.js
+++ b/core/l10n/lt_LT.js
@@ -44,14 +44,14 @@ OC.L10N.register(
"Image not found" : "Paveikslėlis nerastas",
"Could not detect language" : "Nepavyko aptikti kalbos",
"Unable to translate" : "Nepavyko išversti",
- "Nextcloud Server" : "Nextcloud serveris",
- "Learn more ↗" : "Sužinokite daugiau ↗",
- "Preparing update" : "Ruošiamas atnaujinimas",
"[%d / %d]: %s" : "[%d / %d]: %s",
"Repair step:" : "Pataisymo žingsnis:",
"Repair info:" : "Pataisymo informacija:",
"Repair warning:" : "Taisymo įspėjimas:",
"Repair error:" : "Taisymo klaida:",
+ "Nextcloud Server" : "Nextcloud serveris",
+ "Learn more ↗" : "Sužinokite daugiau ↗",
+ "Preparing update" : "Ruošiamas atnaujinimas",
"Turned on maintenance mode" : "Įjungta techninės priežiūros veiksena",
"Turned off maintenance mode" : "Išjungta techninės priežiūros veiksena",
"Maintenance mode is kept active" : "Techninės priežiūros veiksena yra aktyvi",
diff --git a/core/l10n/lt_LT.json b/core/l10n/lt_LT.json
index 82581c1bdd3..63c5bb4a02b 100644
--- a/core/l10n/lt_LT.json
+++ b/core/l10n/lt_LT.json
@@ -42,14 +42,14 @@
"Image not found" : "Paveikslėlis nerastas",
"Could not detect language" : "Nepavyko aptikti kalbos",
"Unable to translate" : "Nepavyko išversti",
- "Nextcloud Server" : "Nextcloud serveris",
- "Learn more ↗" : "Sužinokite daugiau ↗",
- "Preparing update" : "Ruošiamas atnaujinimas",
"[%d / %d]: %s" : "[%d / %d]: %s",
"Repair step:" : "Pataisymo žingsnis:",
"Repair info:" : "Pataisymo informacija:",
"Repair warning:" : "Taisymo įspėjimas:",
"Repair error:" : "Taisymo klaida:",
+ "Nextcloud Server" : "Nextcloud serveris",
+ "Learn more ↗" : "Sužinokite daugiau ↗",
+ "Preparing update" : "Ruošiamas atnaujinimas",
"Turned on maintenance mode" : "Įjungta techninės priežiūros veiksena",
"Turned off maintenance mode" : "Išjungta techninės priežiūros veiksena",
"Maintenance mode is kept active" : "Techninės priežiūros veiksena yra aktyvi",
diff --git a/core/l10n/lv.js b/core/l10n/lv.js
index 64e68ee19d8..2a66da9f085 100644
--- a/core/l10n/lv.js
+++ b/core/l10n/lv.js
@@ -49,17 +49,17 @@ OC.L10N.register(
"No translation provider available" : "Tulkošanas pakalpojuma sniedzējs nav pieejams",
"Could not detect language" : "Nevarēja noteikt valodu",
"Unable to translate" : "Nevar iztulkot",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Labošanas solis:",
+ "Repair info:" : "Labošanas informācija: ",
+ "Repair warning:" : "Labošanas brīdinājums:",
+ "Repair error:" : "Labošanas kļūda:",
"Nextcloud Server" : "Nextcloud Serveris",
"Some of your link shares have been removed" : "Dažas no Jūsu kopīgotajām saitēm tika noņemtas",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Drošības kļūdas dēļ mums nācās noņemt dažas no kopīgotajām saitēm. Lūgums apmeklēt saiti, lai iegūtu vairāk informācijas.",
"The account limit of this instance is reached." : "Konta ierobežojums šajai instancei ir sasniegts.",
"Learn more ↗" : "Uzzināt vairāk ↗",
"Preparing update" : "Sagatavo atjauninājumu",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Labošanas solis:",
- "Repair info:" : "Labošanas informācija: ",
- "Repair warning:" : "Labošanas brīdinājums:",
- "Repair error:" : "Labošanas kļūda:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Lūgums izmantot komandrindas atjauninātāju, jo atjaunināšana pārlūkā ir atspējota config.php.",
"Turned on maintenance mode" : "Ieslēgts uzturēšanas režīms",
"Turned off maintenance mode" : "Izslēgts uzturēšanas režīms",
diff --git a/core/l10n/lv.json b/core/l10n/lv.json
index 7d8c84c7581..6e78d2640d9 100644
--- a/core/l10n/lv.json
+++ b/core/l10n/lv.json
@@ -47,17 +47,17 @@
"No translation provider available" : "Tulkošanas pakalpojuma sniedzējs nav pieejams",
"Could not detect language" : "Nevarēja noteikt valodu",
"Unable to translate" : "Nevar iztulkot",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Labošanas solis:",
+ "Repair info:" : "Labošanas informācija: ",
+ "Repair warning:" : "Labošanas brīdinājums:",
+ "Repair error:" : "Labošanas kļūda:",
"Nextcloud Server" : "Nextcloud Serveris",
"Some of your link shares have been removed" : "Dažas no Jūsu kopīgotajām saitēm tika noņemtas",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Drošības kļūdas dēļ mums nācās noņemt dažas no kopīgotajām saitēm. Lūgums apmeklēt saiti, lai iegūtu vairāk informācijas.",
"The account limit of this instance is reached." : "Konta ierobežojums šajai instancei ir sasniegts.",
"Learn more ↗" : "Uzzināt vairāk ↗",
"Preparing update" : "Sagatavo atjauninājumu",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Labošanas solis:",
- "Repair info:" : "Labošanas informācija: ",
- "Repair warning:" : "Labošanas brīdinājums:",
- "Repair error:" : "Labošanas kļūda:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Lūgums izmantot komandrindas atjauninātāju, jo atjaunināšana pārlūkā ir atspējota config.php.",
"Turned on maintenance mode" : "Ieslēgts uzturēšanas režīms",
"Turned off maintenance mode" : "Izslēgts uzturēšanas režīms",
diff --git a/core/l10n/mk.js b/core/l10n/mk.js
index 874b2831256..8e71edc7cd0 100644
--- a/core/l10n/mk.js
+++ b/core/l10n/mk.js
@@ -42,16 +42,16 @@ OC.L10N.register(
"Image not found" : "Сликата не е пронајдена",
"Could not detect language" : "Неможе да се детектира јазикот",
"Unable to translate" : "Неможе да се преведе",
- "Nextcloud Server" : "Nextcloud Сервер",
- "Some of your link shares have been removed" : "Некој од вашите линкови што ги споделивте се избришани",
- "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Поради безбедносен ризик некој од вашите споделувања се избришани. Ве молиме видете го линкот за повеќе информации.",
- "Learn more ↗" : "Научи повеќе ↗",
- "Preparing update" : "Ја подготвувам надградбата",
"[%d / %d]: %s" : "[%d / %d]: %s",
"Repair step:" : "Чекори за поправка:",
"Repair info:" : "Инфо при поправка:",
"Repair warning:" : "Предупредувања при поправка:",
"Repair error:" : "Грешка при поправка:",
+ "Nextcloud Server" : "Nextcloud Сервер",
+ "Some of your link shares have been removed" : "Некој од вашите линкови што ги споделивте се избришани",
+ "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Поради безбедносен ризик некој од вашите споделувања се избришани. Ве молиме видете го линкот за повеќе информации.",
+ "Learn more ↗" : "Научи повеќе ↗",
+ "Preparing update" : "Ја подготвувам надградбата",
"Turned on maintenance mode" : "Вклучен е модот за одржување",
"Turned off maintenance mode" : "Ислкучен е модот за одржување",
"Maintenance mode is kept active" : "Модот за одржување е уште активен",
diff --git a/core/l10n/mk.json b/core/l10n/mk.json
index 5411a3f03bf..1aa84ac34d0 100644
--- a/core/l10n/mk.json
+++ b/core/l10n/mk.json
@@ -40,16 +40,16 @@
"Image not found" : "Сликата не е пронајдена",
"Could not detect language" : "Неможе да се детектира јазикот",
"Unable to translate" : "Неможе да се преведе",
- "Nextcloud Server" : "Nextcloud Сервер",
- "Some of your link shares have been removed" : "Некој од вашите линкови што ги споделивте се избришани",
- "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Поради безбедносен ризик некој од вашите споделувања се избришани. Ве молиме видете го линкот за повеќе информации.",
- "Learn more ↗" : "Научи повеќе ↗",
- "Preparing update" : "Ја подготвувам надградбата",
"[%d / %d]: %s" : "[%d / %d]: %s",
"Repair step:" : "Чекори за поправка:",
"Repair info:" : "Инфо при поправка:",
"Repair warning:" : "Предупредувања при поправка:",
"Repair error:" : "Грешка при поправка:",
+ "Nextcloud Server" : "Nextcloud Сервер",
+ "Some of your link shares have been removed" : "Некој од вашите линкови што ги споделивте се избришани",
+ "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Поради безбедносен ризик некој од вашите споделувања се избришани. Ве молиме видете го линкот за повеќе информации.",
+ "Learn more ↗" : "Научи повеќе ↗",
+ "Preparing update" : "Ја подготвувам надградбата",
"Turned on maintenance mode" : "Вклучен е модот за одржување",
"Turned off maintenance mode" : "Ислкучен е модот за одржување",
"Maintenance mode is kept active" : "Модот за одржување е уште активен",
diff --git a/core/l10n/nb.js b/core/l10n/nb.js
index 681b7424a37..db94606aa56 100644
--- a/core/l10n/nb.js
+++ b/core/l10n/nb.js
@@ -51,6 +51,11 @@ OC.L10N.register(
"No translation provider available" : "Ingen tilbyder av oversetting er tilgjengelig",
"Could not detect language" : "Kunne ikke gjenkjenne srpåk",
"Unable to translate" : "Ikke i stand til å oversette",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Reparasjonstrinn:",
+ "Repair info:" : "Reparasjonsinformasjon:",
+ "Repair warning:" : "Reparasjonsadvarsel:",
+ "Repair error:" : "Reparasjonsfeil:",
"Nextcloud Server" : "Nextcloud-server",
"Some of your link shares have been removed" : "Noen av de delte lenkene dine har blitt fjernet",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "På grunn av et sikkerhetsproblem har vi fjernet enkelte av de delte lenkene dine. Vennligst se linken for mer informasjon. ",
@@ -58,11 +63,6 @@ OC.L10N.register(
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Skriv inn abonnementsnøkkelen din i støtteappen for å øke brukergrensen. Dette gir deg også alle tilleggsfordeler som Nextcloud Enterprise tilbyr og anbefales på det sterkeste for driften i selskaper.",
"Learn more ↗" : "Lær mer ↗",
"Preparing update" : "Forbereder oppdatering",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Reparasjonstrinn:",
- "Repair info:" : "Reparasjonsinformasjon:",
- "Repair warning:" : "Reparasjonsadvarsel:",
- "Repair error:" : "Reparasjonsfeil:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Vennligst bruk kommandolinje til å oppdatere. Oppdatering via nettleser er ikke aktivert i din config.php.",
"Turned on maintenance mode" : "Vedlikeholdmodus aktivt",
"Turned off maintenance mode" : "Vedlikeholdmodus er deaktivert",
diff --git a/core/l10n/nb.json b/core/l10n/nb.json
index 42299a97b93..7016815deda 100644
--- a/core/l10n/nb.json
+++ b/core/l10n/nb.json
@@ -49,6 +49,11 @@
"No translation provider available" : "Ingen tilbyder av oversetting er tilgjengelig",
"Could not detect language" : "Kunne ikke gjenkjenne srpåk",
"Unable to translate" : "Ikke i stand til å oversette",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Reparasjonstrinn:",
+ "Repair info:" : "Reparasjonsinformasjon:",
+ "Repair warning:" : "Reparasjonsadvarsel:",
+ "Repair error:" : "Reparasjonsfeil:",
"Nextcloud Server" : "Nextcloud-server",
"Some of your link shares have been removed" : "Noen av de delte lenkene dine har blitt fjernet",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "På grunn av et sikkerhetsproblem har vi fjernet enkelte av de delte lenkene dine. Vennligst se linken for mer informasjon. ",
@@ -56,11 +61,6 @@
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Skriv inn abonnementsnøkkelen din i støtteappen for å øke brukergrensen. Dette gir deg også alle tilleggsfordeler som Nextcloud Enterprise tilbyr og anbefales på det sterkeste for driften i selskaper.",
"Learn more ↗" : "Lær mer ↗",
"Preparing update" : "Forbereder oppdatering",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Reparasjonstrinn:",
- "Repair info:" : "Reparasjonsinformasjon:",
- "Repair warning:" : "Reparasjonsadvarsel:",
- "Repair error:" : "Reparasjonsfeil:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Vennligst bruk kommandolinje til å oppdatere. Oppdatering via nettleser er ikke aktivert i din config.php.",
"Turned on maintenance mode" : "Vedlikeholdmodus aktivt",
"Turned off maintenance mode" : "Vedlikeholdmodus er deaktivert",
diff --git a/core/l10n/nl.js b/core/l10n/nl.js
index acfe1e98710..c5570438ed7 100644
--- a/core/l10n/nl.js
+++ b/core/l10n/nl.js
@@ -51,6 +51,11 @@ OC.L10N.register(
"No translation provider available" : "Geen provider voor vertaling beschikbaar",
"Could not detect language" : "Kan taal niet detecteren",
"Unable to translate" : "Niet mogelijk te vertalen",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Herstel stap:",
+ "Repair info:" : "Herstel informatie:",
+ "Repair warning:" : "Herstel waarschuwing:",
+ "Repair error:" : "Herstel fout:",
"Nextcloud Server" : "Nextcloud Server",
"Some of your link shares have been removed" : "Sommige van je gedeelde links zijn verwijderd",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Door een security-bug moesten we sommige van je gedeelde links verwijderen. Bekijk de link voor meer informatie.",
@@ -58,11 +63,6 @@ OC.L10N.register(
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Voer uw abonnementscode in de support-app in om de accountlimiet te verhogen. Dit geeft u ook alle extra voordelen die Nextcloud Enterprise biedt en wordt ten zeerste aanbevolen voor gebruik binnen bedrijven.",
"Learn more ↗" : "Meer weten ↗",
"Preparing update" : "Update voorbereiden",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Herstel stap:",
- "Repair info:" : "Herstel informatie:",
- "Repair warning:" : "Herstel waarschuwing:",
- "Repair error:" : "Herstel fout:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Gelieve de commandolijn updater te gebruiken omdat bijwerken via de browser is uitgeschakeld in uw config.php.",
"Turned on maintenance mode" : "Onderhoudsmodus ingeschakeld",
"Turned off maintenance mode" : "Onderhoudsmodus uitgeschakeld",
diff --git a/core/l10n/nl.json b/core/l10n/nl.json
index 709473281d9..f6951d3e8d3 100644
--- a/core/l10n/nl.json
+++ b/core/l10n/nl.json
@@ -49,6 +49,11 @@
"No translation provider available" : "Geen provider voor vertaling beschikbaar",
"Could not detect language" : "Kan taal niet detecteren",
"Unable to translate" : "Niet mogelijk te vertalen",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Herstel stap:",
+ "Repair info:" : "Herstel informatie:",
+ "Repair warning:" : "Herstel waarschuwing:",
+ "Repair error:" : "Herstel fout:",
"Nextcloud Server" : "Nextcloud Server",
"Some of your link shares have been removed" : "Sommige van je gedeelde links zijn verwijderd",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Door een security-bug moesten we sommige van je gedeelde links verwijderen. Bekijk de link voor meer informatie.",
@@ -56,11 +61,6 @@
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Voer uw abonnementscode in de support-app in om de accountlimiet te verhogen. Dit geeft u ook alle extra voordelen die Nextcloud Enterprise biedt en wordt ten zeerste aanbevolen voor gebruik binnen bedrijven.",
"Learn more ↗" : "Meer weten ↗",
"Preparing update" : "Update voorbereiden",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Herstel stap:",
- "Repair info:" : "Herstel informatie:",
- "Repair warning:" : "Herstel waarschuwing:",
- "Repair error:" : "Herstel fout:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Gelieve de commandolijn updater te gebruiken omdat bijwerken via de browser is uitgeschakeld in uw config.php.",
"Turned on maintenance mode" : "Onderhoudsmodus ingeschakeld",
"Turned off maintenance mode" : "Onderhoudsmodus uitgeschakeld",
diff --git a/core/l10n/oc.js b/core/l10n/oc.js
index a6d1f0712e7..4ec1c7a078f 100644
--- a/core/l10n/oc.js
+++ b/core/l10n/oc.js
@@ -35,16 +35,16 @@ OC.L10N.register(
"Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Clicat sul boton seguent per reïnicializar vòstre senhal. S’avètz pas demandat sa reïnicializacion, ignoratz aqueste corrièl.",
"Click the following link to reset your password. If you have not requested the password reset, then ignore this email." : "Clicat sul ligam seguent per reïnicializar vòstre senhal. S’avètz pas demandat sa reïnicializacion, ignoratz aqueste corrièl.",
"Reset your password" : "Reïnicializatz vòstre senhal",
- "Nextcloud Server" : "Servidor Nextcloud",
- "Some of your link shares have been removed" : "D’unes de vòstres ligams de partiment foguèron tirats",
- "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "A causa d’una avaria de seguretat nos calguèt tirar certans de vòstres ligams de partiment. Vejatz lo ligam per mai d’informacions.",
- "Learn more ↗" : "Ne saber mai ↗",
- "Preparing update" : "Preparacion de la mesa a jorn",
"[%d / %d]: %s" : "[%d / %d] : %s",
"Repair step:" : "Etapa de reparacion :",
"Repair info:" : "Info de reparacion :",
"Repair warning:" : "Avertiment de reparacion :",
"Repair error:" : "Error de reparacion :",
+ "Nextcloud Server" : "Servidor Nextcloud",
+ "Some of your link shares have been removed" : "D’unes de vòstres ligams de partiment foguèron tirats",
+ "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "A causa d’una avaria de seguretat nos calguèt tirar certans de vòstres ligams de partiment. Vejatz lo ligam per mai d’informacions.",
+ "Learn more ↗" : "Ne saber mai ↗",
+ "Preparing update" : "Preparacion de la mesa a jorn",
"Turned on maintenance mode" : "Mòde manteniment aviat",
"Turned off maintenance mode" : "Mòde manteniment atudat",
"Maintenance mode is kept active" : "Lo mòde manteniment ten d’èsser actiu",
diff --git a/core/l10n/oc.json b/core/l10n/oc.json
index 98689fe0975..3864c6d6776 100644
--- a/core/l10n/oc.json
+++ b/core/l10n/oc.json
@@ -33,16 +33,16 @@
"Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Clicat sul boton seguent per reïnicializar vòstre senhal. S’avètz pas demandat sa reïnicializacion, ignoratz aqueste corrièl.",
"Click the following link to reset your password. If you have not requested the password reset, then ignore this email." : "Clicat sul ligam seguent per reïnicializar vòstre senhal. S’avètz pas demandat sa reïnicializacion, ignoratz aqueste corrièl.",
"Reset your password" : "Reïnicializatz vòstre senhal",
- "Nextcloud Server" : "Servidor Nextcloud",
- "Some of your link shares have been removed" : "D’unes de vòstres ligams de partiment foguèron tirats",
- "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "A causa d’una avaria de seguretat nos calguèt tirar certans de vòstres ligams de partiment. Vejatz lo ligam per mai d’informacions.",
- "Learn more ↗" : "Ne saber mai ↗",
- "Preparing update" : "Preparacion de la mesa a jorn",
"[%d / %d]: %s" : "[%d / %d] : %s",
"Repair step:" : "Etapa de reparacion :",
"Repair info:" : "Info de reparacion :",
"Repair warning:" : "Avertiment de reparacion :",
"Repair error:" : "Error de reparacion :",
+ "Nextcloud Server" : "Servidor Nextcloud",
+ "Some of your link shares have been removed" : "D’unes de vòstres ligams de partiment foguèron tirats",
+ "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "A causa d’una avaria de seguretat nos calguèt tirar certans de vòstres ligams de partiment. Vejatz lo ligam per mai d’informacions.",
+ "Learn more ↗" : "Ne saber mai ↗",
+ "Preparing update" : "Preparacion de la mesa a jorn",
"Turned on maintenance mode" : "Mòde manteniment aviat",
"Turned off maintenance mode" : "Mòde manteniment atudat",
"Maintenance mode is kept active" : "Lo mòde manteniment ten d’èsser actiu",
diff --git a/core/l10n/pl.js b/core/l10n/pl.js
index dacdb6a62c7..4f107938dd1 100644
--- a/core/l10n/pl.js
+++ b/core/l10n/pl.js
@@ -52,6 +52,11 @@ OC.L10N.register(
"No translation provider available" : "Brak dostępnego dostawcy tłumaczenia",
"Could not detect language" : "Nie można wykryć języka",
"Unable to translate" : "Nie można przetłumaczyć",
+ "[%d / %d]: %s" : "[%d/%d]: %s",
+ "Repair step:" : "Krok naprawy:",
+ "Repair info:" : "Informacja o naprawie: ",
+ "Repair warning:" : "Ostrzeżenie naprawy:",
+ "Repair error:" : "Błąd naprawy: ",
"Nextcloud Server" : "Serwer Nextcloud",
"Some of your link shares have been removed" : "Niektóre udostępnienia linków zostały usunięte",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Ze względu na błąd bezpieczeństwa musieliśmy usunąć część Twoich udostępnień linków. Zobacz link, aby uzyskać więcej informacji.",
@@ -59,11 +64,6 @@ OC.L10N.register(
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Wprowadź klucz subskrypcji w aplikacji pomocy technicznej, aby zwiększyć limit kont. Zapewnia to również wszystkie dodatkowe korzyści oferowane przez Nextcloud dla firm i jest wysoce zalecane dla działania w firmach.",
"Learn more ↗" : "Dowiedz się więcej ↗",
"Preparing update" : "Przygotowywanie aktualizacji",
- "[%d / %d]: %s" : "[%d/%d]: %s",
- "Repair step:" : "Krok naprawy:",
- "Repair info:" : "Informacja o naprawie: ",
- "Repair warning:" : "Ostrzeżenie naprawy:",
- "Repair error:" : "Błąd naprawy: ",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Użyj wiersza poleceń do aktualizacji, ponieważ aktualizacja przez przeglądarkę jest wyłączona w Twoim pliku config.php.",
"Turned on maintenance mode" : "Włączono tryb konserwacji",
"Turned off maintenance mode" : "Wyłączono tryb konserwacji",
diff --git a/core/l10n/pl.json b/core/l10n/pl.json
index c70b69c2107..cfa0f0e11f5 100644
--- a/core/l10n/pl.json
+++ b/core/l10n/pl.json
@@ -50,6 +50,11 @@
"No translation provider available" : "Brak dostępnego dostawcy tłumaczenia",
"Could not detect language" : "Nie można wykryć języka",
"Unable to translate" : "Nie można przetłumaczyć",
+ "[%d / %d]: %s" : "[%d/%d]: %s",
+ "Repair step:" : "Krok naprawy:",
+ "Repair info:" : "Informacja o naprawie: ",
+ "Repair warning:" : "Ostrzeżenie naprawy:",
+ "Repair error:" : "Błąd naprawy: ",
"Nextcloud Server" : "Serwer Nextcloud",
"Some of your link shares have been removed" : "Niektóre udostępnienia linków zostały usunięte",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Ze względu na błąd bezpieczeństwa musieliśmy usunąć część Twoich udostępnień linków. Zobacz link, aby uzyskać więcej informacji.",
@@ -57,11 +62,6 @@
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Wprowadź klucz subskrypcji w aplikacji pomocy technicznej, aby zwiększyć limit kont. Zapewnia to również wszystkie dodatkowe korzyści oferowane przez Nextcloud dla firm i jest wysoce zalecane dla działania w firmach.",
"Learn more ↗" : "Dowiedz się więcej ↗",
"Preparing update" : "Przygotowywanie aktualizacji",
- "[%d / %d]: %s" : "[%d/%d]: %s",
- "Repair step:" : "Krok naprawy:",
- "Repair info:" : "Informacja o naprawie: ",
- "Repair warning:" : "Ostrzeżenie naprawy:",
- "Repair error:" : "Błąd naprawy: ",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Użyj wiersza poleceń do aktualizacji, ponieważ aktualizacja przez przeglądarkę jest wyłączona w Twoim pliku config.php.",
"Turned on maintenance mode" : "Włączono tryb konserwacji",
"Turned off maintenance mode" : "Wyłączono tryb konserwacji",
diff --git a/core/l10n/pt_BR.js b/core/l10n/pt_BR.js
index 682ab278688..0b9a1e84d65 100644
--- a/core/l10n/pt_BR.js
+++ b/core/l10n/pt_BR.js
@@ -52,6 +52,11 @@ OC.L10N.register(
"No translation provider available" : "Nenhum provedor de tradução disponível",
"Could not detect language" : "Não foi possível detectar o idioma",
"Unable to translate" : "Incapaz de traduzir",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Etapa do reparo:",
+ "Repair info:" : "Informação do reparo:",
+ "Repair warning:" : "Aviso do reparo:",
+ "Repair error:" : "Erro do reparo:",
"Nextcloud Server" : "Servidor Nextcloud",
"Some of your link shares have been removed" : "Alguns dos seus compartilhamentos por link foram removidos",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Devido a um bug de segurança, tivemos que remover alguns dos seus compartilhamentos por link. Por favor, veja o link para mais informações.",
@@ -59,11 +64,6 @@ OC.L10N.register(
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Digite sua chave de assinatura no aplicativo de suporte para aumentar o limite de contas. Isso também concede a você todos os benefícios adicionais que o Nextcloud Empresarial oferece e é altamente recomendado para operações em empresas.",
"Learn more ↗" : "Saiba mais ↗",
"Preparing update" : "Preparando a atualização",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Etapa do reparo:",
- "Repair info:" : "Informação do reparo:",
- "Repair warning:" : "Aviso do reparo:",
- "Repair error:" : "Erro do reparo:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Por favor, use o atualizador de linha de comando porque a atualização via navegador está desativada em seu config.php.",
"Turned on maintenance mode" : "Ativar o modo de manutenção",
"Turned off maintenance mode" : "Desativar o modo de manutenção",
diff --git a/core/l10n/pt_BR.json b/core/l10n/pt_BR.json
index 4afedfd04c4..5e34de49674 100644
--- a/core/l10n/pt_BR.json
+++ b/core/l10n/pt_BR.json
@@ -50,6 +50,11 @@
"No translation provider available" : "Nenhum provedor de tradução disponível",
"Could not detect language" : "Não foi possível detectar o idioma",
"Unable to translate" : "Incapaz de traduzir",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Etapa do reparo:",
+ "Repair info:" : "Informação do reparo:",
+ "Repair warning:" : "Aviso do reparo:",
+ "Repair error:" : "Erro do reparo:",
"Nextcloud Server" : "Servidor Nextcloud",
"Some of your link shares have been removed" : "Alguns dos seus compartilhamentos por link foram removidos",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Devido a um bug de segurança, tivemos que remover alguns dos seus compartilhamentos por link. Por favor, veja o link para mais informações.",
@@ -57,11 +62,6 @@
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Digite sua chave de assinatura no aplicativo de suporte para aumentar o limite de contas. Isso também concede a você todos os benefícios adicionais que o Nextcloud Empresarial oferece e é altamente recomendado para operações em empresas.",
"Learn more ↗" : "Saiba mais ↗",
"Preparing update" : "Preparando a atualização",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Etapa do reparo:",
- "Repair info:" : "Informação do reparo:",
- "Repair warning:" : "Aviso do reparo:",
- "Repair error:" : "Erro do reparo:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Por favor, use o atualizador de linha de comando porque a atualização via navegador está desativada em seu config.php.",
"Turned on maintenance mode" : "Ativar o modo de manutenção",
"Turned off maintenance mode" : "Desativar o modo de manutenção",
diff --git a/core/l10n/pt_PT.js b/core/l10n/pt_PT.js
index a0ca898a526..1e8c9a72996 100644
--- a/core/l10n/pt_PT.js
+++ b/core/l10n/pt_PT.js
@@ -50,6 +50,11 @@ OC.L10N.register(
"No translation provider available" : "Nenhum fornecedor de tradução disponível",
"Could not detect language" : "Não foi possível detetar o idioma",
"Unable to translate" : "Não é possível traduzir",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Etapa da reparação:",
+ "Repair info:" : "Informação da reparação:",
+ "Repair warning:" : "Aviso de reparação:",
+ "Repair error:" : "Erro de reparação:",
"Nextcloud Server" : "Nextcloud Server",
"Some of your link shares have been removed" : "Algumas das suas partilhas de hiperligação foram removidas",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Devido a bugs de segurança tivemos que remover algumas das suas ligações às partilhas.\nPor favor veja o link para mais informação.",
@@ -57,11 +62,6 @@ OC.L10N.register(
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Introduza a sua chave de subscrição na aplicação de suporte para aumentar o limite da conta. Isto também lhe concede todos os benefícios adicionais que o Nextcloud Enterprise oferece e é altamente recomendado para a operação em empresas.",
"Learn more ↗" : "Saiba mais ↗",
"Preparing update" : "A preparar a atualização",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Etapa da reparação:",
- "Repair info:" : "Informação da reparação:",
- "Repair warning:" : "Aviso de reparação:",
- "Repair error:" : "Erro de reparação:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Utilize o atualizador da linha de comandos porque a atualização através do navegador está desativada no seu config.php.",
"Turned on maintenance mode" : "Ativou o modo de manutenção",
"Turned off maintenance mode" : "Desativou o modo de manutenção",
diff --git a/core/l10n/pt_PT.json b/core/l10n/pt_PT.json
index c3b649c4a3b..384bdd55336 100644
--- a/core/l10n/pt_PT.json
+++ b/core/l10n/pt_PT.json
@@ -48,6 +48,11 @@
"No translation provider available" : "Nenhum fornecedor de tradução disponível",
"Could not detect language" : "Não foi possível detetar o idioma",
"Unable to translate" : "Não é possível traduzir",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Etapa da reparação:",
+ "Repair info:" : "Informação da reparação:",
+ "Repair warning:" : "Aviso de reparação:",
+ "Repair error:" : "Erro de reparação:",
"Nextcloud Server" : "Nextcloud Server",
"Some of your link shares have been removed" : "Algumas das suas partilhas de hiperligação foram removidas",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Devido a bugs de segurança tivemos que remover algumas das suas ligações às partilhas.\nPor favor veja o link para mais informação.",
@@ -55,11 +60,6 @@
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Introduza a sua chave de subscrição na aplicação de suporte para aumentar o limite da conta. Isto também lhe concede todos os benefícios adicionais que o Nextcloud Enterprise oferece e é altamente recomendado para a operação em empresas.",
"Learn more ↗" : "Saiba mais ↗",
"Preparing update" : "A preparar a atualização",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Etapa da reparação:",
- "Repair info:" : "Informação da reparação:",
- "Repair warning:" : "Aviso de reparação:",
- "Repair error:" : "Erro de reparação:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Utilize o atualizador da linha de comandos porque a atualização através do navegador está desativada no seu config.php.",
"Turned on maintenance mode" : "Ativou o modo de manutenção",
"Turned off maintenance mode" : "Desativou o modo de manutenção",
diff --git a/core/l10n/ro.js b/core/l10n/ro.js
index ed9242d3b5e..7c84fd8935c 100644
--- a/core/l10n/ro.js
+++ b/core/l10n/ro.js
@@ -51,17 +51,17 @@ OC.L10N.register(
"No translation provider available" : "Niciun furnizor de traducere nu este disponibil",
"Could not detect language" : "Nu a putut fi detectată limba",
"Unable to translate" : "Nu s-a putut traduce",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Etapa de reparare:",
+ "Repair info:" : "Informații despre reparații:",
+ "Repair warning:" : "Avertisment de reparație:",
+ "Repair error:" : "Eroare de reparare:",
"Nextcloud Server" : "Nextcloud Server",
"Some of your link shares have been removed" : "Unele dintre link-urile tale partajate au fost șterse",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Din cauza unui bug de securitate, a trebuit să eliminăm unele dintre link-urile dvs. partajate. Vă rugăm să consultați link-ul pentru mai multe informații.",
"The account limit of this instance is reached." : "Limita contului a fost atinsă.",
"Learn more ↗" : "Află mai multe ↗",
"Preparing update" : "Se pregătește actualizarea",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Etapa de reparare:",
- "Repair info:" : "Informații despre reparații:",
- "Repair warning:" : "Avertisment de reparație:",
- "Repair error:" : "Eroare de reparare:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Utilizează actualizarea din linie de comandă, pentru că actualizarea automată este dezactivată în config.php.",
"Turned on maintenance mode" : "Modul mentenanță a fost activat",
"Turned off maintenance mode" : "Modul mentenanță a fost dezactivat",
diff --git a/core/l10n/ro.json b/core/l10n/ro.json
index a0f477adf1d..2af7e4026ac 100644
--- a/core/l10n/ro.json
+++ b/core/l10n/ro.json
@@ -49,17 +49,17 @@
"No translation provider available" : "Niciun furnizor de traducere nu este disponibil",
"Could not detect language" : "Nu a putut fi detectată limba",
"Unable to translate" : "Nu s-a putut traduce",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Etapa de reparare:",
+ "Repair info:" : "Informații despre reparații:",
+ "Repair warning:" : "Avertisment de reparație:",
+ "Repair error:" : "Eroare de reparare:",
"Nextcloud Server" : "Nextcloud Server",
"Some of your link shares have been removed" : "Unele dintre link-urile tale partajate au fost șterse",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Din cauza unui bug de securitate, a trebuit să eliminăm unele dintre link-urile dvs. partajate. Vă rugăm să consultați link-ul pentru mai multe informații.",
"The account limit of this instance is reached." : "Limita contului a fost atinsă.",
"Learn more ↗" : "Află mai multe ↗",
"Preparing update" : "Se pregătește actualizarea",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Etapa de reparare:",
- "Repair info:" : "Informații despre reparații:",
- "Repair warning:" : "Avertisment de reparație:",
- "Repair error:" : "Eroare de reparare:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Utilizează actualizarea din linie de comandă, pentru că actualizarea automată este dezactivată în config.php.",
"Turned on maintenance mode" : "Modul mentenanță a fost activat",
"Turned off maintenance mode" : "Modul mentenanță a fost dezactivat",
diff --git a/core/l10n/ru.js b/core/l10n/ru.js
index b082afe6306..c4b33f38261 100644
--- a/core/l10n/ru.js
+++ b/core/l10n/ru.js
@@ -51,6 +51,11 @@ OC.L10N.register(
"No translation provider available" : "Поставщик услуг перевода недоступен",
"Could not detect language" : "Не удалось определить язык",
"Unable to translate" : "Не удается перевести",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Шаг восстановления:",
+ "Repair info:" : "Информация восстановления:",
+ "Repair warning:" : "Предупреждение восстановления:",
+ "Repair error:" : "Ошибка восстановления:",
"Nextcloud Server" : "Сервер Nextcloud",
"Some of your link shares have been removed" : "Некоторые из ваших ссылок на общие ресурсы были удалены",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Из-за ошибки в безопасности нам пришлось удалить некоторые из ваших ссылок на опубликованные файлы или папки. Перейдите по ссылке для получения дополнительной информации.",
@@ -58,11 +63,6 @@ OC.L10N.register(
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Для увеличения лимита пользователей введите код подписки в приложении «Поддержка». Оформление подписки рекомендуется при использовании Nexcloud в бизнесе, а также позволяет получить дополнительные преимущества, предлагаемые Nextcloud для корпоративных пользователей.",
"Learn more ↗" : "Дополнительная информация ↗",
"Preparing update" : "Подготовка к обновлению",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Шаг восстановления:",
- "Repair info:" : "Информация восстановления:",
- "Repair warning:" : "Предупреждение восстановления:",
- "Repair error:" : "Ошибка восстановления:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Пожалуйста, используйте обновление из терминала, поскольку обновление через браузер отключено в вашем файле конфигурации config.php.",
"Turned on maintenance mode" : "Включён режим обслуживания ",
"Turned off maintenance mode" : "Отключён режим обслуживания",
diff --git a/core/l10n/ru.json b/core/l10n/ru.json
index 3aa77cef2fc..04a58bfa510 100644
--- a/core/l10n/ru.json
+++ b/core/l10n/ru.json
@@ -49,6 +49,11 @@
"No translation provider available" : "Поставщик услуг перевода недоступен",
"Could not detect language" : "Не удалось определить язык",
"Unable to translate" : "Не удается перевести",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Шаг восстановления:",
+ "Repair info:" : "Информация восстановления:",
+ "Repair warning:" : "Предупреждение восстановления:",
+ "Repair error:" : "Ошибка восстановления:",
"Nextcloud Server" : "Сервер Nextcloud",
"Some of your link shares have been removed" : "Некоторые из ваших ссылок на общие ресурсы были удалены",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Из-за ошибки в безопасности нам пришлось удалить некоторые из ваших ссылок на опубликованные файлы или папки. Перейдите по ссылке для получения дополнительной информации.",
@@ -56,11 +61,6 @@
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Для увеличения лимита пользователей введите код подписки в приложении «Поддержка». Оформление подписки рекомендуется при использовании Nexcloud в бизнесе, а также позволяет получить дополнительные преимущества, предлагаемые Nextcloud для корпоративных пользователей.",
"Learn more ↗" : "Дополнительная информация ↗",
"Preparing update" : "Подготовка к обновлению",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Шаг восстановления:",
- "Repair info:" : "Информация восстановления:",
- "Repair warning:" : "Предупреждение восстановления:",
- "Repair error:" : "Ошибка восстановления:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Пожалуйста, используйте обновление из терминала, поскольку обновление через браузер отключено в вашем файле конфигурации config.php.",
"Turned on maintenance mode" : "Включён режим обслуживания ",
"Turned off maintenance mode" : "Отключён режим обслуживания",
diff --git a/core/l10n/sc.js b/core/l10n/sc.js
index 8f13d48d469..59720c1f528 100644
--- a/core/l10n/sc.js
+++ b/core/l10n/sc.js
@@ -42,16 +42,16 @@ OC.L10N.register(
"No translation provider available" : "Nissunu servìtziu de tradutzione a disponimentu",
"Could not detect language" : "Impossìbile rilevare sa lìngua",
"Unable to translate" : "Impossìbile tradùere",
- "Nextcloud Server" : "Serbidore de Nextcloud",
- "Some of your link shares have been removed" : "Carchi ligòngiu de cumpartzidura tuo nch'est istadu bogadu",
- "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Pro un'errore de seguresa nch'amus dèpidu bogare carchi ligòngiu de cumpartzidura. Càstia su ligòngiu pro àteras informatziones.",
- "Learn more ↗" : "Àteras informatziones ↗",
- "Preparing update" : "Aprontende s'agiornamentu",
"[%d / %d]: %s" : "[%d / %d]: %s",
"Repair step:" : "Passu de s'acontzu:",
"Repair info:" : "Informatziones de s'acontzu:",
"Repair warning:" : "Avisu de s'acontzu:",
"Repair error:" : "Errore in s'acontzu:",
+ "Nextcloud Server" : "Serbidore de Nextcloud",
+ "Some of your link shares have been removed" : "Carchi ligòngiu de cumpartzidura tuo nch'est istadu bogadu",
+ "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Pro un'errore de seguresa nch'amus dèpidu bogare carchi ligòngiu de cumpartzidura. Càstia su ligòngiu pro àteras informatziones.",
+ "Learn more ↗" : "Àteras informatziones ↗",
+ "Preparing update" : "Aprontende s'agiornamentu",
"Turned on maintenance mode" : "Furriadu a modalidade de mantenidura",
"Turned off maintenance mode" : "Modalidade de mantenidura disativada",
"Maintenance mode is kept active" : "Sa modalidade de mantenidura abarrat ativa",
diff --git a/core/l10n/sc.json b/core/l10n/sc.json
index 8c75dc3e1f0..0000b44cc8d 100644
--- a/core/l10n/sc.json
+++ b/core/l10n/sc.json
@@ -40,16 +40,16 @@
"No translation provider available" : "Nissunu servìtziu de tradutzione a disponimentu",
"Could not detect language" : "Impossìbile rilevare sa lìngua",
"Unable to translate" : "Impossìbile tradùere",
- "Nextcloud Server" : "Serbidore de Nextcloud",
- "Some of your link shares have been removed" : "Carchi ligòngiu de cumpartzidura tuo nch'est istadu bogadu",
- "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Pro un'errore de seguresa nch'amus dèpidu bogare carchi ligòngiu de cumpartzidura. Càstia su ligòngiu pro àteras informatziones.",
- "Learn more ↗" : "Àteras informatziones ↗",
- "Preparing update" : "Aprontende s'agiornamentu",
"[%d / %d]: %s" : "[%d / %d]: %s",
"Repair step:" : "Passu de s'acontzu:",
"Repair info:" : "Informatziones de s'acontzu:",
"Repair warning:" : "Avisu de s'acontzu:",
"Repair error:" : "Errore in s'acontzu:",
+ "Nextcloud Server" : "Serbidore de Nextcloud",
+ "Some of your link shares have been removed" : "Carchi ligòngiu de cumpartzidura tuo nch'est istadu bogadu",
+ "Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Pro un'errore de seguresa nch'amus dèpidu bogare carchi ligòngiu de cumpartzidura. Càstia su ligòngiu pro àteras informatziones.",
+ "Learn more ↗" : "Àteras informatziones ↗",
+ "Preparing update" : "Aprontende s'agiornamentu",
"Turned on maintenance mode" : "Furriadu a modalidade de mantenidura",
"Turned off maintenance mode" : "Modalidade de mantenidura disativada",
"Maintenance mode is kept active" : "Sa modalidade de mantenidura abarrat ativa",
diff --git a/core/l10n/sk.js b/core/l10n/sk.js
index bd159f432d1..5377322b093 100644
--- a/core/l10n/sk.js
+++ b/core/l10n/sk.js
@@ -52,6 +52,11 @@ OC.L10N.register(
"No translation provider available" : "Nie je dostupný žiadny poskytovateľ prekladu",
"Could not detect language" : "Nepodarilo sa zistiť jazyk",
"Unable to translate" : "Nie je možné preložiť",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Krok opravy:",
+ "Repair info:" : "Informácie o oprave:",
+ "Repair warning:" : "Varovanie o oprave:",
+ "Repair error:" : "Chyba opravy:",
"Nextcloud Server" : "Nextcloud Server",
"Some of your link shares have been removed" : "Niektoré odkazy so sprístupnením boli odstránené.",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Kvôli bezpečnostnej chyba sme museli odstrániť niektoré z vašich odkazov pre zdieľanie. Pre viac informácií nasledujte tento link.",
@@ -59,11 +64,6 @@ OC.L10N.register(
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Zadajte svoj kľúč predplatného v aplikácii podpory, aby ste zvýšili limit pre množstvo účtov. To vám tiež poskytuje všetky ďalšie výhody, ktoré Nextcloud Enterprise ponúka a je vysoko odporúčaný pre prevádzku vo firemnom prostredí.",
"Learn more ↗" : "Viac informácií ↗",
"Preparing update" : "Pripravuje sa aktualizácia",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Krok opravy:",
- "Repair info:" : "Informácie o oprave:",
- "Repair warning:" : "Varovanie o oprave:",
- "Repair error:" : "Chyba opravy:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Prosím, použite aktualizáciu z príkazového riadka, pretože aktualizácia cez prehliadač je zakázaná vo vašom config.php.",
"Turned on maintenance mode" : "Mód údržby je zapnutý",
"Turned off maintenance mode" : "Mód údržby je vypnutý",
diff --git a/core/l10n/sk.json b/core/l10n/sk.json
index 038e805d422..6103cc86240 100644
--- a/core/l10n/sk.json
+++ b/core/l10n/sk.json
@@ -50,6 +50,11 @@
"No translation provider available" : "Nie je dostupný žiadny poskytovateľ prekladu",
"Could not detect language" : "Nepodarilo sa zistiť jazyk",
"Unable to translate" : "Nie je možné preložiť",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Krok opravy:",
+ "Repair info:" : "Informácie o oprave:",
+ "Repair warning:" : "Varovanie o oprave:",
+ "Repair error:" : "Chyba opravy:",
"Nextcloud Server" : "Nextcloud Server",
"Some of your link shares have been removed" : "Niektoré odkazy so sprístupnením boli odstránené.",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Kvôli bezpečnostnej chyba sme museli odstrániť niektoré z vašich odkazov pre zdieľanie. Pre viac informácií nasledujte tento link.",
@@ -57,11 +62,6 @@
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Zadajte svoj kľúč predplatného v aplikácii podpory, aby ste zvýšili limit pre množstvo účtov. To vám tiež poskytuje všetky ďalšie výhody, ktoré Nextcloud Enterprise ponúka a je vysoko odporúčaný pre prevádzku vo firemnom prostredí.",
"Learn more ↗" : "Viac informácií ↗",
"Preparing update" : "Pripravuje sa aktualizácia",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Krok opravy:",
- "Repair info:" : "Informácie o oprave:",
- "Repair warning:" : "Varovanie o oprave:",
- "Repair error:" : "Chyba opravy:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Prosím, použite aktualizáciu z príkazového riadka, pretože aktualizácia cez prehliadač je zakázaná vo vašom config.php.",
"Turned on maintenance mode" : "Mód údržby je zapnutý",
"Turned off maintenance mode" : "Mód údržby je vypnutý",
diff --git a/core/l10n/sl.js b/core/l10n/sl.js
index 611a6c655e5..5bceb27a132 100644
--- a/core/l10n/sl.js
+++ b/core/l10n/sl.js
@@ -52,6 +52,11 @@ OC.L10N.register(
"No translation provider available" : "Ponudnik prevoda ni na voljo.",
"Could not detect language" : "Ni mogoče zaznati jezika.",
"Unable to translate" : "Ni mogoče prevajati",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Korak nadgradnje:",
+ "Repair info:" : "Podrobnosti nadgradnje:",
+ "Repair warning:" : "Opozorilo nadgradnje:",
+ "Repair error:" : "Napaka nadgradnje:",
"Nextcloud Server" : "Strežnik Nextcloud",
"Some of your link shares have been removed" : "Nekatere povezave za souporabo so bile odstranjene.",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Zaradi varnostnih razlogov so bile nekatere povezave odstranjene. Več podrobnosti je na voljo v uradno izdanem opozorilu.",
@@ -59,11 +64,6 @@ OC.L10N.register(
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Vpišite ključ naročila podpornega programa in povečajte omejitev za uporabnika. S tem pridobite tudi vse dodatne ugodnosti, ki jih omogoča Poslovno okolje Nextcloud. Način je zelo priporočljiv za podjetja.",
"Learn more ↗" : "Več o tem ↗",
"Preparing update" : "Poteka priprava na posodobitev ...",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Korak nadgradnje:",
- "Repair info:" : "Podrobnosti nadgradnje:",
- "Repair warning:" : "Opozorilo nadgradnje:",
- "Repair error:" : "Napaka nadgradnje:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Posodobitev sistema je treba izvesti v ukazni vrstici, ker je posodabljanje z brskalnikom v config.php onemogočeno.",
"Turned on maintenance mode" : "Vzdrževalni način je omogočen ...",
"Turned off maintenance mode" : "Vzdrževalni način je onemogočen.",
diff --git a/core/l10n/sl.json b/core/l10n/sl.json
index 02de3a3ceb1..5c2a835b666 100644
--- a/core/l10n/sl.json
+++ b/core/l10n/sl.json
@@ -50,6 +50,11 @@
"No translation provider available" : "Ponudnik prevoda ni na voljo.",
"Could not detect language" : "Ni mogoče zaznati jezika.",
"Unable to translate" : "Ni mogoče prevajati",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Korak nadgradnje:",
+ "Repair info:" : "Podrobnosti nadgradnje:",
+ "Repair warning:" : "Opozorilo nadgradnje:",
+ "Repair error:" : "Napaka nadgradnje:",
"Nextcloud Server" : "Strežnik Nextcloud",
"Some of your link shares have been removed" : "Nekatere povezave za souporabo so bile odstranjene.",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Zaradi varnostnih razlogov so bile nekatere povezave odstranjene. Več podrobnosti je na voljo v uradno izdanem opozorilu.",
@@ -57,11 +62,6 @@
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Vpišite ključ naročila podpornega programa in povečajte omejitev za uporabnika. S tem pridobite tudi vse dodatne ugodnosti, ki jih omogoča Poslovno okolje Nextcloud. Način je zelo priporočljiv za podjetja.",
"Learn more ↗" : "Več o tem ↗",
"Preparing update" : "Poteka priprava na posodobitev ...",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Korak nadgradnje:",
- "Repair info:" : "Podrobnosti nadgradnje:",
- "Repair warning:" : "Opozorilo nadgradnje:",
- "Repair error:" : "Napaka nadgradnje:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Posodobitev sistema je treba izvesti v ukazni vrstici, ker je posodabljanje z brskalnikom v config.php onemogočeno.",
"Turned on maintenance mode" : "Vzdrževalni način je omogočen ...",
"Turned off maintenance mode" : "Vzdrževalni način je onemogočen.",
diff --git a/core/l10n/sr.js b/core/l10n/sr.js
index ec278d35314..b366a420aa3 100644
--- a/core/l10n/sr.js
+++ b/core/l10n/sr.js
@@ -52,6 +52,11 @@ OC.L10N.register(
"No translation provider available" : "Није доступан ниједан пружалац услуге превода",
"Could not detect language" : "Не може да се детектује језик",
"Unable to translate" : "Не може да се преведе",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Корак поправке:",
+ "Repair info:" : "Инфо о поправци:",
+ "Repair warning:" : "Упозорење о поправци:",
+ "Repair error:" : "Грешка поправке:",
"Nextcloud Server" : "Nextcloud сервер",
"Some of your link shares have been removed" : "Неке везе дељења су уклоњене",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Услед безбедоносних мера, морали смо да уклонимо неке од ваших веза дељења. Кликните везу за више информација.",
@@ -59,11 +64,6 @@ OC.L10N.register(
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Унестите ваш кључ претплате у апликацију за подршку да бисте увећали границу броја налога. На овај начин добијате још погодности које нуди Nextcloud Enterprise и топло се препоручује за рад у компанијама.",
"Learn more ↗" : "Сазнајте више ↗",
"Preparing update" : "Припремам ажурирање",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Корак поправке:",
- "Repair info:" : "Инфо о поправци:",
- "Repair warning:" : "Упозорење о поправци:",
- "Repair error:" : "Грешка поправке:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Молимо вас да користите алат за ажурирање из командне линије јер је ажурирање из прегледача искључено у вашем config.php.",
"Turned on maintenance mode" : "Режим одржавања укључен",
"Turned off maintenance mode" : "Режим одржавања искључен",
diff --git a/core/l10n/sr.json b/core/l10n/sr.json
index f647c1f08ab..332ab65f844 100644
--- a/core/l10n/sr.json
+++ b/core/l10n/sr.json
@@ -50,6 +50,11 @@
"No translation provider available" : "Није доступан ниједан пружалац услуге превода",
"Could not detect language" : "Не може да се детектује језик",
"Unable to translate" : "Не може да се преведе",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Корак поправке:",
+ "Repair info:" : "Инфо о поправци:",
+ "Repair warning:" : "Упозорење о поправци:",
+ "Repair error:" : "Грешка поправке:",
"Nextcloud Server" : "Nextcloud сервер",
"Some of your link shares have been removed" : "Неке везе дељења су уклоњене",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Услед безбедоносних мера, морали смо да уклонимо неке од ваших веза дељења. Кликните везу за више информација.",
@@ -57,11 +62,6 @@
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Унестите ваш кључ претплате у апликацију за подршку да бисте увећали границу броја налога. На овај начин добијате још погодности које нуди Nextcloud Enterprise и топло се препоручује за рад у компанијама.",
"Learn more ↗" : "Сазнајте више ↗",
"Preparing update" : "Припремам ажурирање",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Корак поправке:",
- "Repair info:" : "Инфо о поправци:",
- "Repair warning:" : "Упозорење о поправци:",
- "Repair error:" : "Грешка поправке:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Молимо вас да користите алат за ажурирање из командне линије јер је ажурирање из прегледача искључено у вашем config.php.",
"Turned on maintenance mode" : "Режим одржавања укључен",
"Turned off maintenance mode" : "Режим одржавања искључен",
diff --git a/core/l10n/sv.js b/core/l10n/sv.js
index 0632c78c273..34fc72da195 100644
--- a/core/l10n/sv.js
+++ b/core/l10n/sv.js
@@ -52,6 +52,11 @@ OC.L10N.register(
"No translation provider available" : "Ingen översättning tillgänglig",
"Could not detect language" : "Kunde inte identifiera språk",
"Unable to translate" : "Kan inte översätta",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Reparationssteg: ",
+ "Repair info:" : "Reparationsinfo:",
+ "Repair warning:" : "Reparationsvarning:",
+ "Repair error:" : "Reparationsfel:",
"Nextcloud Server" : "Nextcloud-server",
"Some of your link shares have been removed" : "Några av dina delade länkar har tagits bort",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "På grund av ett säkerhetsfel var vi tvungna att ta bort några av dina delade länkar. Se länken för mer information.",
@@ -59,11 +64,6 @@ OC.L10N.register(
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Ange din prenumerationsnyckel i supportappen för att öka användargränsen. Detta ger dig också alla ytterligare fördelar som Nextcloud Enterprise erbjuder och rekommenderas starkt för användning i företag.",
"Learn more ↗" : "Läs mer ↗",
"Preparing update" : "Förbereder uppdatering",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Reparationssteg: ",
- "Repair info:" : "Reparationsinfo:",
- "Repair warning:" : "Reparationsvarning:",
- "Repair error:" : "Reparationsfel:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Var vänlig och uppdatera via kommandotolken då uppdatering via webbläsaren är inaktiverat i config.php",
"Turned on maintenance mode" : "Aktiverade underhållsläge",
"Turned off maintenance mode" : "Inaktivera underhållsläge",
diff --git a/core/l10n/sv.json b/core/l10n/sv.json
index 6a4dac2c011..ff790540457 100644
--- a/core/l10n/sv.json
+++ b/core/l10n/sv.json
@@ -50,6 +50,11 @@
"No translation provider available" : "Ingen översättning tillgänglig",
"Could not detect language" : "Kunde inte identifiera språk",
"Unable to translate" : "Kan inte översätta",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Reparationssteg: ",
+ "Repair info:" : "Reparationsinfo:",
+ "Repair warning:" : "Reparationsvarning:",
+ "Repair error:" : "Reparationsfel:",
"Nextcloud Server" : "Nextcloud-server",
"Some of your link shares have been removed" : "Några av dina delade länkar har tagits bort",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "På grund av ett säkerhetsfel var vi tvungna att ta bort några av dina delade länkar. Se länken för mer information.",
@@ -57,11 +62,6 @@
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Ange din prenumerationsnyckel i supportappen för att öka användargränsen. Detta ger dig också alla ytterligare fördelar som Nextcloud Enterprise erbjuder och rekommenderas starkt för användning i företag.",
"Learn more ↗" : "Läs mer ↗",
"Preparing update" : "Förbereder uppdatering",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Reparationssteg: ",
- "Repair info:" : "Reparationsinfo:",
- "Repair warning:" : "Reparationsvarning:",
- "Repair error:" : "Reparationsfel:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Var vänlig och uppdatera via kommandotolken då uppdatering via webbläsaren är inaktiverat i config.php",
"Turned on maintenance mode" : "Aktiverade underhållsläge",
"Turned off maintenance mode" : "Inaktivera underhållsläge",
diff --git a/core/l10n/th.js b/core/l10n/th.js
index 78140dd097c..25ff5e2abb9 100644
--- a/core/l10n/th.js
+++ b/core/l10n/th.js
@@ -48,17 +48,17 @@ OC.L10N.register(
"No translation provider available" : "ไม่มีผู้ให้บริการแปลที่พร้อมใช้งาน",
"Could not detect language" : "ไม่สามารถตรวจจับภาษา",
"Unable to translate" : "ไม่สามารถแปล",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "ขั้นตอนการซ่อมแซม:",
+ "Repair info:" : "ข้อมูลการซ่อมแซม:",
+ "Repair warning:" : "คำเตือนการซ่อมแซม:",
+ "Repair error:" : "ข้อผิดพลาดการซ่อมแซม:",
"Nextcloud Server" : "เซิร์ฟเวอร์ Nextcloud",
"Some of your link shares have been removed" : "ลิงก์แชร์บางลิงก์ของคุณถูกลบออก",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "เนื่องจากข้อบกพร่องความปลอดภัย เราจำเป็นต้องลบลิงก์แชร์บางลิงก์ของคุณออก โปรดดูที่ลิงก์สำหรับข้อมูลเพิ่มเติม",
"The account limit of this instance is reached." : "ถึงขีดจำกัดจำนวนบัญชีของเซิร์ฟเวอร์นี้แล้ว",
"Learn more ↗" : "เรียนรู้เพิ่มเติม ↗",
"Preparing update" : "กำลังเตรียมอัปเดต",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "ขั้นตอนการซ่อมแซม:",
- "Repair info:" : "ข้อมูลการซ่อมแซม:",
- "Repair warning:" : "คำเตือนการซ่อมแซม:",
- "Repair error:" : "ข้อผิดพลาดการซ่อมแซม:",
"Turned on maintenance mode" : "เปิดโหมดการบำรุงรักษาแล้ว",
"Turned off maintenance mode" : "ปิดโหมดการบำรุงรักษาแล้ว",
"Maintenance mode is kept active" : "โหมดการบำรุงรักษาถูกเปิดไว้",
diff --git a/core/l10n/th.json b/core/l10n/th.json
index 77efcbb5695..7f64f63d4d8 100644
--- a/core/l10n/th.json
+++ b/core/l10n/th.json
@@ -46,17 +46,17 @@
"No translation provider available" : "ไม่มีผู้ให้บริการแปลที่พร้อมใช้งาน",
"Could not detect language" : "ไม่สามารถตรวจจับภาษา",
"Unable to translate" : "ไม่สามารถแปล",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "ขั้นตอนการซ่อมแซม:",
+ "Repair info:" : "ข้อมูลการซ่อมแซม:",
+ "Repair warning:" : "คำเตือนการซ่อมแซม:",
+ "Repair error:" : "ข้อผิดพลาดการซ่อมแซม:",
"Nextcloud Server" : "เซิร์ฟเวอร์ Nextcloud",
"Some of your link shares have been removed" : "ลิงก์แชร์บางลิงก์ของคุณถูกลบออก",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "เนื่องจากข้อบกพร่องความปลอดภัย เราจำเป็นต้องลบลิงก์แชร์บางลิงก์ของคุณออก โปรดดูที่ลิงก์สำหรับข้อมูลเพิ่มเติม",
"The account limit of this instance is reached." : "ถึงขีดจำกัดจำนวนบัญชีของเซิร์ฟเวอร์นี้แล้ว",
"Learn more ↗" : "เรียนรู้เพิ่มเติม ↗",
"Preparing update" : "กำลังเตรียมอัปเดต",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "ขั้นตอนการซ่อมแซม:",
- "Repair info:" : "ข้อมูลการซ่อมแซม:",
- "Repair warning:" : "คำเตือนการซ่อมแซม:",
- "Repair error:" : "ข้อผิดพลาดการซ่อมแซม:",
"Turned on maintenance mode" : "เปิดโหมดการบำรุงรักษาแล้ว",
"Turned off maintenance mode" : "ปิดโหมดการบำรุงรักษาแล้ว",
"Maintenance mode is kept active" : "โหมดการบำรุงรักษาถูกเปิดไว้",
diff --git a/core/l10n/tr.js b/core/l10n/tr.js
index 7925f7910ca..0d1138fe10f 100644
--- a/core/l10n/tr.js
+++ b/core/l10n/tr.js
@@ -52,6 +52,11 @@ OC.L10N.register(
"No translation provider available" : "Kullanılabilecek bir çeviri hizmeti sağlayıcı yok",
"Could not detect language" : "Dil algılanamadı",
"Unable to translate" : "Çevrilemedi",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Onarım adımı:",
+ "Repair info:" : "Onarım bilgileri:",
+ "Repair warning:" : "Onarım uyarısı:",
+ "Repair error:" : "Onarım sorunu:",
"Nextcloud Server" : "Nextcloud sunucusu",
"Some of your link shares have been removed" : "Bazı paylaşım bağlantılarınız silindi",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Bir güvenlik açığı nedeniyle bazı paylaşım bağlantılarınızı silmek zorunda kaldık. ayrıntılı bilgi almak için bağlantıya bakabilirsiniz.",
@@ -59,11 +64,6 @@ OC.L10N.register(
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Hesap sayısı sınırını artırmak için destek uygulamasına abonelik kodunuzu yazın. Bu ayrıca size Nextcloud Enterprise sürümünün sunduğu ve kurumsal operasyonlar için önemle önerilen tüm ek faydaları sağlar.",
"Learn more ↗" : "Ayrıntılı bilgi alın ↗",
"Preparing update" : "Güncelleme hazırlanıyor",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Onarım adımı:",
- "Repair info:" : "Onarım bilgileri:",
- "Repair warning:" : "Onarım uyarısı:",
- "Repair error:" : "Onarım sorunu:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Tarayıcı üzerinden güncelleme config.php dosyasında kullanımdan kaldırılmış olduğundan, komut satırı güncelleyicisini kullanın.",
"Turned on maintenance mode" : "Bakım kipi kullanıma alındı",
"Turned off maintenance mode" : "Bakım kipi kullanımdan kaldırıldı",
diff --git a/core/l10n/tr.json b/core/l10n/tr.json
index 9342b302a88..b14afd4a684 100644
--- a/core/l10n/tr.json
+++ b/core/l10n/tr.json
@@ -50,6 +50,11 @@
"No translation provider available" : "Kullanılabilecek bir çeviri hizmeti sağlayıcı yok",
"Could not detect language" : "Dil algılanamadı",
"Unable to translate" : "Çevrilemedi",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Onarım adımı:",
+ "Repair info:" : "Onarım bilgileri:",
+ "Repair warning:" : "Onarım uyarısı:",
+ "Repair error:" : "Onarım sorunu:",
"Nextcloud Server" : "Nextcloud sunucusu",
"Some of your link shares have been removed" : "Bazı paylaşım bağlantılarınız silindi",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Bir güvenlik açığı nedeniyle bazı paylaşım bağlantılarınızı silmek zorunda kaldık. ayrıntılı bilgi almak için bağlantıya bakabilirsiniz.",
@@ -57,11 +62,6 @@
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Hesap sayısı sınırını artırmak için destek uygulamasına abonelik kodunuzu yazın. Bu ayrıca size Nextcloud Enterprise sürümünün sunduğu ve kurumsal operasyonlar için önemle önerilen tüm ek faydaları sağlar.",
"Learn more ↗" : "Ayrıntılı bilgi alın ↗",
"Preparing update" : "Güncelleme hazırlanıyor",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Onarım adımı:",
- "Repair info:" : "Onarım bilgileri:",
- "Repair warning:" : "Onarım uyarısı:",
- "Repair error:" : "Onarım sorunu:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Tarayıcı üzerinden güncelleme config.php dosyasında kullanımdan kaldırılmış olduğundan, komut satırı güncelleyicisini kullanın.",
"Turned on maintenance mode" : "Bakım kipi kullanıma alındı",
"Turned off maintenance mode" : "Bakım kipi kullanımdan kaldırıldı",
diff --git a/core/l10n/ug.js b/core/l10n/ug.js
index 3f33cc11083..2a2accf9c2e 100644
--- a/core/l10n/ug.js
+++ b/core/l10n/ug.js
@@ -51,6 +51,11 @@ OC.L10N.register(
"No translation provider available" : "تەرجىمە تەمىنلىگۈچى يوق",
"Could not detect language" : "تىلنى بايقىيالمىدى",
"Unable to translate" : "تەرجىمە قىلالمىدى",
+ "[%d / %d]: %s" : "[% d /% d]:% s",
+ "Repair step:" : "رېمونت قىلىش باسقۇچى:",
+ "Repair info:" : "رېمونت ئۇچۇرى:",
+ "Repair warning:" : "رېمونت ئاگاھلاندۇرۇشى:",
+ "Repair error:" : "رېمونت خاتالىقى:",
"Nextcloud Server" : "Nextcloud مۇلازىمىتىرى",
"Some of your link shares have been removed" : "بەزى ئۇلىنىشلىرىڭىز ئۆچۈرۈلدى",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "بىخەتەرلىك خاتالىقى سەۋەبىدىن بەزى ئۇلىنىشلىرىڭىزنى ئۆچۈرۈۋەتتۇق. تېخىمۇ كۆپ ئۇچۇرغا ئېرىشىش ئۈچۈن ئۇلىنىشنى كۆرۈڭ.",
@@ -58,11 +63,6 @@ OC.L10N.register(
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "ھېسابات چەكلىمىسىنى ئاشۇرۇش ئۈچۈن مۇشتەرىلىك ئاچقۇچىڭىزنى قوللاش دېتالىغا كىرگۈزۈڭ. بۇ سىزگە Nextcloud كارخانا تەمىنلىگەن بارلىق قوشۇمچە پايدىلارنى بېرىدۇ ھەمدە شىركەتلەردە مەشغۇلات قىلىشقا تەۋسىيە قىلىنىدۇ.",
"Learn more ↗" : "تەپسىلاتى ↗",
"Preparing update" : "يېڭىلاش تەييارلىقى",
- "[%d / %d]: %s" : "[% d /% d]:% s",
- "Repair step:" : "رېمونت قىلىش باسقۇچى:",
- "Repair info:" : "رېمونت ئۇچۇرى:",
- "Repair warning:" : "رېمونت ئاگاھلاندۇرۇشى:",
- "Repair error:" : "رېمونت خاتالىقى:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "بۇيرۇق قۇرىنى يېڭىلاشنى ئىشلىتىڭ ، چۈنكى config.php دا توركۆرگۈ ئارقىلىق يېڭىلاش چەكلەنگەن.",
"Turned on maintenance mode" : "ئاسراش ھالىتىنى ئاچتى",
"Turned off maintenance mode" : "ئاسراش ھالىتىنى ئېتىۋەتتى",
diff --git a/core/l10n/ug.json b/core/l10n/ug.json
index b166df28c61..4eaa7a608fd 100644
--- a/core/l10n/ug.json
+++ b/core/l10n/ug.json
@@ -49,6 +49,11 @@
"No translation provider available" : "تەرجىمە تەمىنلىگۈچى يوق",
"Could not detect language" : "تىلنى بايقىيالمىدى",
"Unable to translate" : "تەرجىمە قىلالمىدى",
+ "[%d / %d]: %s" : "[% d /% d]:% s",
+ "Repair step:" : "رېمونت قىلىش باسقۇچى:",
+ "Repair info:" : "رېمونت ئۇچۇرى:",
+ "Repair warning:" : "رېمونت ئاگاھلاندۇرۇشى:",
+ "Repair error:" : "رېمونت خاتالىقى:",
"Nextcloud Server" : "Nextcloud مۇلازىمىتىرى",
"Some of your link shares have been removed" : "بەزى ئۇلىنىشلىرىڭىز ئۆچۈرۈلدى",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "بىخەتەرلىك خاتالىقى سەۋەبىدىن بەزى ئۇلىنىشلىرىڭىزنى ئۆچۈرۈۋەتتۇق. تېخىمۇ كۆپ ئۇچۇرغا ئېرىشىش ئۈچۈن ئۇلىنىشنى كۆرۈڭ.",
@@ -56,11 +61,6 @@
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "ھېسابات چەكلىمىسىنى ئاشۇرۇش ئۈچۈن مۇشتەرىلىك ئاچقۇچىڭىزنى قوللاش دېتالىغا كىرگۈزۈڭ. بۇ سىزگە Nextcloud كارخانا تەمىنلىگەن بارلىق قوشۇمچە پايدىلارنى بېرىدۇ ھەمدە شىركەتلەردە مەشغۇلات قىلىشقا تەۋسىيە قىلىنىدۇ.",
"Learn more ↗" : "تەپسىلاتى ↗",
"Preparing update" : "يېڭىلاش تەييارلىقى",
- "[%d / %d]: %s" : "[% d /% d]:% s",
- "Repair step:" : "رېمونت قىلىش باسقۇچى:",
- "Repair info:" : "رېمونت ئۇچۇرى:",
- "Repair warning:" : "رېمونت ئاگاھلاندۇرۇشى:",
- "Repair error:" : "رېمونت خاتالىقى:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "بۇيرۇق قۇرىنى يېڭىلاشنى ئىشلىتىڭ ، چۈنكى config.php دا توركۆرگۈ ئارقىلىق يېڭىلاش چەكلەنگەن.",
"Turned on maintenance mode" : "ئاسراش ھالىتىنى ئاچتى",
"Turned off maintenance mode" : "ئاسراش ھالىتىنى ئېتىۋەتتى",
diff --git a/core/l10n/uk.js b/core/l10n/uk.js
index 83e182fd04e..4f066648fab 100644
--- a/core/l10n/uk.js
+++ b/core/l10n/uk.js
@@ -52,6 +52,11 @@ OC.L10N.register(
"No translation provider available" : "Постачальник послуг перекладу недоступний",
"Could not detect language" : "Не вдалося визначити мову",
"Unable to translate" : "Не вдалося перекласти",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Крок у відновленні:",
+ "Repair info:" : "Інформація про відновлення:",
+ "Repair warning:" : "Застереження щодо відновлення:",
+ "Repair error:" : "Помилка під час відновлення:",
"Nextcloud Server" : "Сервер Nextcloud",
"Some of your link shares have been removed" : "Окремі посилання на спільні елементи було вилучено",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Через ваду з безпекою ми вимушені були вилучити деякі ваші спільні посилання. Будь ласка, перегляньте цю докладну інформацію.",
@@ -59,11 +64,6 @@ OC.L10N.register(
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Зазначте ваш ключ підписки у застосунку підтримки, щоб збільшити кількість дозволених облікових записів. Після цього ви отримаєте всі додаткові переваги, які надає Nextcloud для бізнесу. Ми рекомендуємо це зробити для комерційних користувачів.",
"Learn more ↗" : "Дізнайтеся більше ↗",
"Preparing update" : "Підготовка оновлення",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Крок у відновленні:",
- "Repair info:" : "Інформація про відновлення:",
- "Repair warning:" : "Застереження щодо відновлення:",
- "Repair error:" : "Помилка під час відновлення:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Будь ласка, скористайтеся оновленням через командний рядок, оскільки оновлення через бравзер вимкнено у файлі налаштувань config.php.",
"Turned on maintenance mode" : "Активовано режим технічного обслуговування",
"Turned off maintenance mode" : "Вимкнено режим технічного обслуговування",
diff --git a/core/l10n/uk.json b/core/l10n/uk.json
index c090a533f1e..a153efc06ec 100644
--- a/core/l10n/uk.json
+++ b/core/l10n/uk.json
@@ -50,6 +50,11 @@
"No translation provider available" : "Постачальник послуг перекладу недоступний",
"Could not detect language" : "Не вдалося визначити мову",
"Unable to translate" : "Не вдалося перекласти",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Крок у відновленні:",
+ "Repair info:" : "Інформація про відновлення:",
+ "Repair warning:" : "Застереження щодо відновлення:",
+ "Repair error:" : "Помилка під час відновлення:",
"Nextcloud Server" : "Сервер Nextcloud",
"Some of your link shares have been removed" : "Окремі посилання на спільні елементи було вилучено",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Через ваду з безпекою ми вимушені були вилучити деякі ваші спільні посилання. Будь ласка, перегляньте цю докладну інформацію.",
@@ -57,11 +62,6 @@
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Зазначте ваш ключ підписки у застосунку підтримки, щоб збільшити кількість дозволених облікових записів. Після цього ви отримаєте всі додаткові переваги, які надає Nextcloud для бізнесу. Ми рекомендуємо це зробити для комерційних користувачів.",
"Learn more ↗" : "Дізнайтеся більше ↗",
"Preparing update" : "Підготовка оновлення",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Крок у відновленні:",
- "Repair info:" : "Інформація про відновлення:",
- "Repair warning:" : "Застереження щодо відновлення:",
- "Repair error:" : "Помилка під час відновлення:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Будь ласка, скористайтеся оновленням через командний рядок, оскільки оновлення через бравзер вимкнено у файлі налаштувань config.php.",
"Turned on maintenance mode" : "Активовано режим технічного обслуговування",
"Turned off maintenance mode" : "Вимкнено режим технічного обслуговування",
diff --git a/core/l10n/uz.js b/core/l10n/uz.js
index eb2b49afd63..6b9c2224661 100644
--- a/core/l10n/uz.js
+++ b/core/l10n/uz.js
@@ -51,6 +51,11 @@ OC.L10N.register(
"No translation provider available" : "Tarjima provayderi mavjud emas",
"Could not detect language" : "Tilni aniqlab bo'lmadi",
"Unable to translate" : "Tarjima qilib bo'lmadi",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Ta'mirlash bosqichi:",
+ "Repair info:" : "Repair info:",
+ "Repair warning:" : "Ta'mirlash haqida ogohlantirish:",
+ "Repair error:" : "Ta'mirlash xatosi:",
"Nextcloud Server" : "Next bulutli Server",
"Some of your link shares have been removed" : "Sizning havola aktsiyalaringizdan ba'zilari olib tashlandi",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Xavfsizlik xatosi tufayli biz sizning ba'zi havolalaringizni olib tashlashimiz kerak edi. Qo'shimcha ma'lumot olish uchun link qarang.",
@@ -58,11 +63,6 @@ OC.L10N.register(
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Hisob cheklovini oshirish uchun obuna kalitini qo'llab-quvvatlash ilovasiga kiriting. Bu sizga Next cloud Enterprise taklif qiladigan va kompaniyalarda ishlash uchun juda tavsiya etiladigan barcha qo'shimcha imtiyozlarni beradi.",
"Learn more ↗" : "Ko'proq ma'lumot oling. ↗",
"Preparing update" : "Yangilanish tayyorlanmoqda",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Ta'mirlash bosqichi:",
- "Repair info:" : "Repair info:",
- "Repair warning:" : "Ta'mirlash haqida ogohlantirish:",
- "Repair error:" : "Ta'mirlash xatosi:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Iltimos, buyruq satrini yangilashdan foydalaning, chunki config.php da brauzer orqali yangilash o'chirilgan.",
"Turned on maintenance mode" : "Ta'minot rejimi yoqilgan",
"Turned off maintenance mode" : "Ta'minot rejimi o'chirilgan",
diff --git a/core/l10n/uz.json b/core/l10n/uz.json
index 56ea1b1ed95..bbe55b15250 100644
--- a/core/l10n/uz.json
+++ b/core/l10n/uz.json
@@ -49,6 +49,11 @@
"No translation provider available" : "Tarjima provayderi mavjud emas",
"Could not detect language" : "Tilni aniqlab bo'lmadi",
"Unable to translate" : "Tarjima qilib bo'lmadi",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Ta'mirlash bosqichi:",
+ "Repair info:" : "Repair info:",
+ "Repair warning:" : "Ta'mirlash haqida ogohlantirish:",
+ "Repair error:" : "Ta'mirlash xatosi:",
"Nextcloud Server" : "Next bulutli Server",
"Some of your link shares have been removed" : "Sizning havola aktsiyalaringizdan ba'zilari olib tashlandi",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Xavfsizlik xatosi tufayli biz sizning ba'zi havolalaringizni olib tashlashimiz kerak edi. Qo'shimcha ma'lumot olish uchun link qarang.",
@@ -56,11 +61,6 @@
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Hisob cheklovini oshirish uchun obuna kalitini qo'llab-quvvatlash ilovasiga kiriting. Bu sizga Next cloud Enterprise taklif qiladigan va kompaniyalarda ishlash uchun juda tavsiya etiladigan barcha qo'shimcha imtiyozlarni beradi.",
"Learn more ↗" : "Ko'proq ma'lumot oling. ↗",
"Preparing update" : "Yangilanish tayyorlanmoqda",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Ta'mirlash bosqichi:",
- "Repair info:" : "Repair info:",
- "Repair warning:" : "Ta'mirlash haqida ogohlantirish:",
- "Repair error:" : "Ta'mirlash xatosi:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Iltimos, buyruq satrini yangilashdan foydalaning, chunki config.php da brauzer orqali yangilash o'chirilgan.",
"Turned on maintenance mode" : "Ta'minot rejimi yoqilgan",
"Turned off maintenance mode" : "Ta'minot rejimi o'chirilgan",
diff --git a/core/l10n/vi.js b/core/l10n/vi.js
index 4995a2fb2c8..ea5770eb549 100644
--- a/core/l10n/vi.js
+++ b/core/l10n/vi.js
@@ -51,6 +51,11 @@ OC.L10N.register(
"No translation provider available" : "Không có nhà cung cấp bản dịch",
"Could not detect language" : "Không thể phát hiện ngôn ngữ",
"Unable to translate" : "Không thể dịch",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Bước sửa chữa:",
+ "Repair info:" : "Thông tin sửa chữa:",
+ "Repair warning:" : "Cảnh báo sửa chữa:",
+ "Repair error:" : "Lỗi sửa chữa:",
"Nextcloud Server" : "Máy chủ vWorkspace",
"Some of your link shares have been removed" : "Một số liên kết chia sẻ của bạn đã bị xóa",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Do lỗi bảo mật, chúng tôi đã phải xóa một số liên kết chia sẻ của bạn. Vui lòng xem liên kết để biết thêm thông tin.",
@@ -58,11 +63,6 @@ OC.L10N.register(
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Hãy nhập khóa đăng ký của bạn vào ứng dụng \"Support\" để tăng giới hạn tài khoản. Việc này cũng sẽ cung cấp cho bạn những đặc quyền do Nextcloud Enterprise cung cấp.",
"Learn more ↗" : "Để biết thêm↗",
"Preparing update" : "Đang chuẩn bị cập nhật",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Bước sửa chữa:",
- "Repair info:" : "Thông tin sửa chữa:",
- "Repair warning:" : "Cảnh báo sửa chữa:",
- "Repair error:" : "Lỗi sửa chữa:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Vui lòng sử dụng trình cập nhật dòng lệnh vì cập nhật qua trình duyệt bị tắt trong config.php của bạn.",
"Turned on maintenance mode" : "Bật chế độ bảo trì",
"Turned off maintenance mode" : "Tắt chế độ bảo trì",
diff --git a/core/l10n/vi.json b/core/l10n/vi.json
index b06ac88f44c..ec85dddefe2 100644
--- a/core/l10n/vi.json
+++ b/core/l10n/vi.json
@@ -49,6 +49,11 @@
"No translation provider available" : "Không có nhà cung cấp bản dịch",
"Could not detect language" : "Không thể phát hiện ngôn ngữ",
"Unable to translate" : "Không thể dịch",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "Bước sửa chữa:",
+ "Repair info:" : "Thông tin sửa chữa:",
+ "Repair warning:" : "Cảnh báo sửa chữa:",
+ "Repair error:" : "Lỗi sửa chữa:",
"Nextcloud Server" : "Máy chủ vWorkspace",
"Some of your link shares have been removed" : "Một số liên kết chia sẻ của bạn đã bị xóa",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Do lỗi bảo mật, chúng tôi đã phải xóa một số liên kết chia sẻ của bạn. Vui lòng xem liên kết để biết thêm thông tin.",
@@ -56,11 +61,6 @@
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Hãy nhập khóa đăng ký của bạn vào ứng dụng \"Support\" để tăng giới hạn tài khoản. Việc này cũng sẽ cung cấp cho bạn những đặc quyền do Nextcloud Enterprise cung cấp.",
"Learn more ↗" : "Để biết thêm↗",
"Preparing update" : "Đang chuẩn bị cập nhật",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "Bước sửa chữa:",
- "Repair info:" : "Thông tin sửa chữa:",
- "Repair warning:" : "Cảnh báo sửa chữa:",
- "Repair error:" : "Lỗi sửa chữa:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "Vui lòng sử dụng trình cập nhật dòng lệnh vì cập nhật qua trình duyệt bị tắt trong config.php của bạn.",
"Turned on maintenance mode" : "Bật chế độ bảo trì",
"Turned off maintenance mode" : "Tắt chế độ bảo trì",
diff --git a/core/l10n/zh_CN.js b/core/l10n/zh_CN.js
index e468e33eb03..8694d4e51ec 100644
--- a/core/l10n/zh_CN.js
+++ b/core/l10n/zh_CN.js
@@ -52,6 +52,11 @@ OC.L10N.register(
"No translation provider available" : "没有可用的翻译提供程序",
"Could not detect language" : "无法检测语言",
"Unable to translate" : "无法翻译",
+ "[%d / %d]: %s" : "[%d / %d]:%s",
+ "Repair step:" : "修复日志 步骤:",
+ "Repair info:" : "修复 信息:",
+ "Repair warning:" : "修复 警告:",
+ "Repair error:" : "修复 错误:",
"Nextcloud Server" : "Nextcloud 服务器",
"Some of your link shares have been removed" : "您的一些链接共享已被移除",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "由于一个安全缺陷,我们必须移除您的部分链接共享。更多信息请查看此链接。",
@@ -59,11 +64,6 @@ OC.L10N.register(
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "在支持应用中输入你的订阅秘钥以拓展账号数量限制。这也确保您可以体验到 Nextcloud Enterprise 额外优势,强烈建议在公司应用场景中启用订阅。",
"Learn more ↗" : "了解更多 ↗",
"Preparing update" : "正在准备更新",
- "[%d / %d]: %s" : "[%d / %d]:%s",
- "Repair step:" : "修复日志 步骤:",
- "Repair info:" : "修复 信息:",
- "Repair warning:" : "修复 警告:",
- "Repair error:" : "修复 错误:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "请使用命令行更新程序,因为通过浏览器更新在您的config.php中被禁用。",
"Turned on maintenance mode" : "启用维护模式",
"Turned off maintenance mode" : "关闭维护模式",
diff --git a/core/l10n/zh_CN.json b/core/l10n/zh_CN.json
index 64e77516f61..f733b30e407 100644
--- a/core/l10n/zh_CN.json
+++ b/core/l10n/zh_CN.json
@@ -50,6 +50,11 @@
"No translation provider available" : "没有可用的翻译提供程序",
"Could not detect language" : "无法检测语言",
"Unable to translate" : "无法翻译",
+ "[%d / %d]: %s" : "[%d / %d]:%s",
+ "Repair step:" : "修复日志 步骤:",
+ "Repair info:" : "修复 信息:",
+ "Repair warning:" : "修复 警告:",
+ "Repair error:" : "修复 错误:",
"Nextcloud Server" : "Nextcloud 服务器",
"Some of your link shares have been removed" : "您的一些链接共享已被移除",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "由于一个安全缺陷,我们必须移除您的部分链接共享。更多信息请查看此链接。",
@@ -57,11 +62,6 @@
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "在支持应用中输入你的订阅秘钥以拓展账号数量限制。这也确保您可以体验到 Nextcloud Enterprise 额外优势,强烈建议在公司应用场景中启用订阅。",
"Learn more ↗" : "了解更多 ↗",
"Preparing update" : "正在准备更新",
- "[%d / %d]: %s" : "[%d / %d]:%s",
- "Repair step:" : "修复日志 步骤:",
- "Repair info:" : "修复 信息:",
- "Repair warning:" : "修复 警告:",
- "Repair error:" : "修复 错误:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "请使用命令行更新程序,因为通过浏览器更新在您的config.php中被禁用。",
"Turned on maintenance mode" : "启用维护模式",
"Turned off maintenance mode" : "关闭维护模式",
diff --git a/core/l10n/zh_HK.js b/core/l10n/zh_HK.js
index 980a4065090..d3cfb6bd9b9 100644
--- a/core/l10n/zh_HK.js
+++ b/core/l10n/zh_HK.js
@@ -52,6 +52,11 @@ OC.L10N.register(
"No translation provider available" : "沒有可用翻譯提供者",
"Could not detect language" : "無法檢測語言",
"Unable to translate" : "無法翻譯",
+ "[%d / %d]: %s" : "[%d / %d]:%s",
+ "Repair step:" : "修復步驟:",
+ "Repair info:" : "修復資訊:",
+ "Repair warning:" : "修復警告:",
+ "Repair error:" : "修復錯誤:",
"Nextcloud Server" : "Nextcloud 伺服器",
"Some of your link shares have been removed" : "部分分享連結己被移除",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "由於安全性問題,我們必須移除您一部分的連結分享。查看更多資訊請點選連結。",
@@ -59,11 +64,6 @@ OC.L10N.register(
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "在支援應用程式中輸入您的訂閱金鑰以增加帳戶限制。這也確實為您提供了 Nextcloud Enterprise 提供的所有額外好處,並且強烈推薦用於公司的營運。",
"Learn more ↗" : "了解更多",
"Preparing update" : "正在準備更新",
- "[%d / %d]: %s" : "[%d / %d]:%s",
- "Repair step:" : "修復步驟:",
- "Repair info:" : "修復資訊:",
- "Repair warning:" : "修復警告:",
- "Repair error:" : "修復錯誤:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "由於更新功能已在 config.php 中設定停用,請使用命令列(command line)更新系統。",
"Turned on maintenance mode" : "已啟用維護模式",
"Turned off maintenance mode" : "停用維護模式",
diff --git a/core/l10n/zh_HK.json b/core/l10n/zh_HK.json
index 1d6762bce02..98b4cc39b88 100644
--- a/core/l10n/zh_HK.json
+++ b/core/l10n/zh_HK.json
@@ -50,6 +50,11 @@
"No translation provider available" : "沒有可用翻譯提供者",
"Could not detect language" : "無法檢測語言",
"Unable to translate" : "無法翻譯",
+ "[%d / %d]: %s" : "[%d / %d]:%s",
+ "Repair step:" : "修復步驟:",
+ "Repair info:" : "修復資訊:",
+ "Repair warning:" : "修復警告:",
+ "Repair error:" : "修復錯誤:",
"Nextcloud Server" : "Nextcloud 伺服器",
"Some of your link shares have been removed" : "部分分享連結己被移除",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "由於安全性問題,我們必須移除您一部分的連結分享。查看更多資訊請點選連結。",
@@ -57,11 +62,6 @@
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "在支援應用程式中輸入您的訂閱金鑰以增加帳戶限制。這也確實為您提供了 Nextcloud Enterprise 提供的所有額外好處,並且強烈推薦用於公司的營運。",
"Learn more ↗" : "了解更多",
"Preparing update" : "正在準備更新",
- "[%d / %d]: %s" : "[%d / %d]:%s",
- "Repair step:" : "修復步驟:",
- "Repair info:" : "修復資訊:",
- "Repair warning:" : "修復警告:",
- "Repair error:" : "修復錯誤:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "由於更新功能已在 config.php 中設定停用,請使用命令列(command line)更新系統。",
"Turned on maintenance mode" : "已啟用維護模式",
"Turned off maintenance mode" : "停用維護模式",
diff --git a/core/l10n/zh_TW.js b/core/l10n/zh_TW.js
index e0772342f73..f65522db635 100644
--- a/core/l10n/zh_TW.js
+++ b/core/l10n/zh_TW.js
@@ -52,6 +52,11 @@ OC.L10N.register(
"No translation provider available" : "沒有可用的翻譯提供者",
"Could not detect language" : "無法偵測語言",
"Unable to translate" : "無法翻譯",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "修復步驟:",
+ "Repair info:" : "修復資訊:",
+ "Repair warning:" : "修復警告:",
+ "Repair error:" : "修復錯誤:",
"Nextcloud Server" : "Nextcloud 伺服器",
"Some of your link shares have been removed" : "部分分享連結己被移除",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "出於安全性問題,我們必須移除您一部分的分享連結。查看更多資訊請點選連結。",
@@ -59,11 +64,6 @@ OC.L10N.register(
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "在支援應用程式中輸入您的訂閱金鑰以增加帳號限制。這也確實為您提供了 Nextcloud Enterprise 提供的所有額外好處,並且強烈推薦用於公司的營運。",
"Learn more ↗" : "深入瞭解 ↗",
"Preparing update" : "準備更新",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "修復步驟:",
- "Repair info:" : "修復資訊:",
- "Repair warning:" : "修復警告:",
- "Repair error:" : "修復錯誤:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "透過瀏覽器更新的功能已在您的 config.php 中停用,因此請使用命令列更新程式。",
"Turned on maintenance mode" : "啟用維護模式",
"Turned off maintenance mode" : "停用維護模式",
diff --git a/core/l10n/zh_TW.json b/core/l10n/zh_TW.json
index 9aa22422e54..88de1371482 100644
--- a/core/l10n/zh_TW.json
+++ b/core/l10n/zh_TW.json
@@ -50,6 +50,11 @@
"No translation provider available" : "沒有可用的翻譯提供者",
"Could not detect language" : "無法偵測語言",
"Unable to translate" : "無法翻譯",
+ "[%d / %d]: %s" : "[%d / %d]: %s",
+ "Repair step:" : "修復步驟:",
+ "Repair info:" : "修復資訊:",
+ "Repair warning:" : "修復警告:",
+ "Repair error:" : "修復錯誤:",
"Nextcloud Server" : "Nextcloud 伺服器",
"Some of your link shares have been removed" : "部分分享連結己被移除",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "出於安全性問題,我們必須移除您一部分的分享連結。查看更多資訊請點選連結。",
@@ -57,11 +62,6 @@
"Enter your subscription key in the support app in order to increase the account limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "在支援應用程式中輸入您的訂閱金鑰以增加帳號限制。這也確實為您提供了 Nextcloud Enterprise 提供的所有額外好處,並且強烈推薦用於公司的營運。",
"Learn more ↗" : "深入瞭解 ↗",
"Preparing update" : "準備更新",
- "[%d / %d]: %s" : "[%d / %d]: %s",
- "Repair step:" : "修復步驟:",
- "Repair info:" : "修復資訊:",
- "Repair warning:" : "修復警告:",
- "Repair error:" : "修復錯誤:",
"Please use the command line updater because updating via browser is disabled in your config.php." : "透過瀏覽器更新的功能已在您的 config.php 中停用,因此請使用命令列更新程式。",
"Turned on maintenance mode" : "啟用維護模式",
"Turned off maintenance mode" : "停用維護模式",
diff --git a/cypress/e2e/settings/users_groups.cy.ts b/cypress/e2e/settings/users_groups.cy.ts
index 01f545d16f3..8d84ddc6bb4 100644
--- a/cypress/e2e/settings/users_groups.cy.ts
+++ b/cypress/e2e/settings/users_groups.cy.ts
@@ -139,8 +139,8 @@ describe('Settings: Delete an empty group', { testIsolation: false }, () => {
})
it('can delete the group', () => {
- // The "Remove group" action in the actions menu is shown and clicked
- cy.get('.action-item__popper button').contains('Remove group').should('exist').click({ force: true })
+ // The "Delete group" action in the actions menu is shown and clicked
+ cy.get('.action-item__popper button').contains('Delete group').should('exist').click({ force: true })
// And confirmation dialog accepted
cy.get('.modal-container button').contains('Confirm').click({ force: true })
@@ -190,8 +190,8 @@ describe('Settings: Delete a non empty group', () => {
.find('button.action-item__menutoggle')
.click({ force: true })
- // The "Remove group" action in the actions menu is shown and clicked
- cy.get('.action-item__popper button').contains('Remove group').should('exist').click({ force: true })
+ // The "Delete group" action in the actions menu is shown and clicked
+ cy.get('.action-item__popper button').contains('Delete group').should('exist').click({ force: true })
// And confirmation dialog accepted
cy.get('.modal-container button').contains('Confirm').click({ force: true })
diff --git a/dist/settings-users-3239.js b/dist/settings-users-3239.js
index 1cd5ed2b4bf..ab6df9432a4 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],{6817:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),i=s.n(a),n=s(76314),r=s.n(n)()(i());r.push([t.id,".dialog__note[data-v-9f7a355c]{font-weight:normal}fieldset[data-v-9f7a355c]{font-weight:bold}","",{version:3,sources:["webpack://./apps/settings/src/components/Users/UserSettingsDialog.vue"],names:[],mappings:"AAEC,+BACC,kBAAA,CAIF,0BACC,gBAAA",sourcesContent:["\n.dialog {\n\t&__note {\n\t\tfont-weight: normal;\n\t}\n}\n\nfieldset {\n\tfont-weight: bold;\n}\n"],sourceRoot:""}]);const o=r},7073:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),i=s.n(a),n=s(76314),r=s.n(n)()(i());r.push([t.id,".user-list__row[data-v-7faa9864]{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-7faa9864]:hover{background-color:var(--color-background-hover)}.user-list__row:hover .row__cell[data-v-7faa9864]:not(.row__cell--actions){background-color:var(--color-background-hover)}.user-list__row .select--fill[data-v-7faa9864]{max-width:calc(var(--cell-width-large) - 2*var(--cell-padding))}.row__cell[data-v-7faa9864]{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-7faa9864],.row__cell span[data-v-7faa9864],.row__cell label[data-v-7faa9864]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.row__cell--avatar[data-v-7faa9864],.row__cell--displayname[data-v-7faa9864]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.row__cell--avatar[data-v-7faa9864]{inset-inline-start:0}.row__cell--displayname[data-v-7faa9864]{inset-inline-start:var(--avatar-cell-width);border-inline-end:1px solid var(--color-border)}}.row__cell--username[data-v-7faa9864]{padding-inline-start:calc(var(--default-grid-baseline)*3)}.row__cell--avatar[data-v-7faa9864]{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-7faa9864]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.row__cell--multiline span[data-v-7faa9864]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.row__cell--large[data-v-7faa9864]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.row__cell--obfuscated[data-v-7faa9864]{min-width:400px;width:400px}.row__cell--fill[data-v-7faa9864]{min-width:var(--cell-width-large);width:100%}.row__cell--actions[data-v-7faa9864]{position:sticky;inset-inline-end: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-inline-start:1px solid var(--color-border)}.row__subtitle[data-v-7faa9864]{color:var(--color-text-maxcontrast)}.row__cell[data-v-7faa9864]{border-bottom:1px solid var(--color-border)}.row__cell[data-v-7faa9864] .v-select.select{min-width:var(--cell-min-width)}.row__progress[data-v-7faa9864]{margin-top:4px}.row__progress--warn[data-v-7faa9864]::-moz-progress-bar{background:var(--color-warning) !important}.row__progress--warn[data-v-7faa9864]::-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,oBAAA,CAGD,yCACC,2CAAA,CACA,+CAAA,CAAA,CAIF,sCACC,yDAAA,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,kBAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,iDAAA,CAIF,gCACC,mCAAA,CDpFD,4BACC,2CAAA,CAGC,6CACC,+BAAA,CAKH,gCACC,cAAA,CAGC,yDACC,0CAAA,CAED,8DACC,0CAAA",sourcesContent:["\n@use './shared/styles';\n\n.user-list__row {\n\t@include styles.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 styles.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\tinset-inline-start: 0;\n\t\t\t}\n\n\t\t\t&--displayname {\n\t\t\t\tinset-inline-start: var(--avatar-cell-width);\n\t\t\t\tborder-inline-end: 1px solid var(--color-border);\n\t\t\t}\n\t\t}\n\n\t\t&--username {\n\t\t\tpadding-inline-start: 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\tinset-inline-end: 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-inline-start: 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},12795:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),i=s.n(a),n=s(76314),r=s.n(n)()(i());r.push([t.id,".user-list[data-v-21942da5]{--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-21942da5],.user-list__footer[data-v-21942da5]{position:sticky;display:block}.user-list__header[data-v-21942da5]{top:0;z-index:calc(var(--sticky-column-z-index) + 1)}.user-list__footer[data-v-21942da5]{inset-inline-start:0}.user-list__body[data-v-21942da5]{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,oBAAA,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\tinset-inline-start: 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},24882:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),i=s.n(a),n=s(76314),r=s.n(n)()(i());r.push([t.id,".header[data-v-5c0f8828]{border-bottom:1px solid var(--color-border);position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.header__cell[data-v-5c0f8828]{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-5c0f8828],.header__cell span[data-v-5c0f8828],.header__cell label[data-v-5c0f8828]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.header__cell--avatar[data-v-5c0f8828],.header__cell--displayname[data-v-5c0f8828]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.header__cell--avatar[data-v-5c0f8828]{inset-inline-start:0}.header__cell--displayname[data-v-5c0f8828]{inset-inline-start:var(--avatar-cell-width);border-inline-end:1px solid var(--color-border)}}.header__cell--username[data-v-5c0f8828]{padding-inline-start:calc(var(--default-grid-baseline)*3)}.header__cell--avatar[data-v-5c0f8828]{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-5c0f8828]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.header__cell--multiline span[data-v-5c0f8828]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.header__cell--large[data-v-5c0f8828]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.header__cell--obfuscated[data-v-5c0f8828]{min-width:400px;width:400px}.header__cell--fill[data-v-5c0f8828]{min-width:var(--cell-width-large);width:100%}.header__cell--actions[data-v-5c0f8828]{position:sticky;inset-inline-end: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-inline-start:1px solid var(--color-border)}.header__subtitle[data-v-5c0f8828]{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,yBACC,2CAAA,CCEA,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,oBAAA,CAGD,4CACC,2CAAA,CACA,+CAAA,CAAA,CAIF,yCACC,yDAAA,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,kBAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,iDAAA,CAIF,mCACC,mCAAA",sourcesContent:["\n@use './shared/styles';\n\n.header {\n\tborder-bottom: 1px solid var(--color-border);\n\n\t@include styles.row;\n\t@include styles.cell;\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\tinset-inline-start: 0;\n\t\t\t}\n\n\t\t\t&--displayname {\n\t\t\t\tinset-inline-start: var(--avatar-cell-width);\n\t\t\t\tborder-inline-end: 1px solid var(--color-border);\n\t\t\t}\n\t\t}\n\n\t\t&--username {\n\t\t\tpadding-inline-start: 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\tinset-inline-end: 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-inline-start: 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},27514:t=>{t.exports="data:image/svg+xml,%3c%21--%20-%20SPDX-FileCopyrightText:%202020%20Google%20Inc.%20-%20SPDX-License-Identifier:%20Apache-2.0%20--%3e%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M18.4%207.4L17%206l-6%206%206%206%201.4-1.4-4.6-4.6%204.6-4.6m-6%200L11%206l-6%206%206%206%201.4-1.4L7.8%2012l4.6-4.6z%27/%3e%3c/svg%3e"},27518:t=>{t.exports="data:image/svg+xml,%3c%21--%20-%20SPDX-FileCopyrightText:%202020%20Google%20Inc.%20-%20SPDX-License-Identifier:%20Apache-2.0%20--%3e%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M15.4%2016.6L10.8%2012l4.6-4.6L14%206l-6%206%206%206%201.4-1.4z%27/%3e%3c/svg%3e"},46984:(t,e,s)=>{s.d(e,{FF:()=>d,Iu:()=>l,N_:()=>o});var a=s(65043),i=s(63814),n=s(36117);const r=t=>({id:t.id,name:t.displayname,usercount:t.usercount,disabled:t.disabled,canAdd:t.canAdd,canRemove:t.canRemove}),o=t=>{let{search:e,offset:s,limit:o}=t;const l=new AbortController;return new n.CancelablePromise((async(t,n,d)=>{d((()=>l.abort()));try{const{data:n}=await a.Ay.get((0,i.KT)("/cloud/groups/details?search={search}&offset={offset}&limit={limit}",{search:e,offset:s,limit:o}),{signal:l.signal});t((n.ocs?.data?.groups??[]).map(r))}catch(t){n(t)}}))},l=async t=>{let{userId:e}=t;const s=(0,i.KT)("/cloud/users/{userId}/groups/details",{userId:e}),{data:n}=await a.Ay.get(s);return(n.ocs?.data?.groups??[]).map(r)},d=async t=>{let{userId:e}=t;const s=(0,i.KT)("/cloud/users/{userId}/subadmins/details",{userId:e}),{data:n}=await a.Ay.get(s);return(n.ocs?.data?.groups??[]).map(r)}},49977:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),i=s.n(a),n=s(76314),r=s.n(n)()(i());r.push([t.id,".account-management__navigation[data-v-edf83404] .app-navigation__body{will-change:scroll-position}.account-management__system-list[data-v-edf83404]{height:auto !important;overflow:visible !important}.account-management__group-list[data-v-edf83404]{height:100% !important}.account-management__settings-toggle[data-v-edf83404]{margin-bottom:12px}","",{version:3,sources:["webpack://./apps/settings/src/views/UserManagementNavigation.vue"],names:[],mappings:"AAGE,uEACC,2BAAA,CAGF,kDACC,sBAAA,CACA,2BAAA,CAGD,iDACC,sBAAA,CAGD,sDACC,kBAAA",sourcesContent:["\n.account-management {\n\t&__navigation {\n\t\t:deep(.app-navigation__body) {\n\t\t\twill-change: scroll-position;\n\t\t}\n\t}\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},50540:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),i=s.n(a),n=s(76314),r=s.n(n)()(i());r.push([t.id,".dialog__form[data-v-70bbf4c9]{display:flex;flex-direction:column;align-items:center;padding:0 8px;gap:4px 0}.dialog__item[data-v-70bbf4c9]{width:100%}.dialog__item[data-v-70bbf4c9]:not(:focus):not(:active){border-color:var(--color-border-dark)}.dialog__hint[data-v-70bbf4c9]{color:var(--color-text-maxcontrast);margin-top:8px;align-self:flex-start}.dialog__label[data-v-70bbf4c9]{display:block;padding:4px 0}.dialog__select[data-v-70bbf4c9]{width:100%}.dialog__managers[data-v-70bbf4c9]{margin-bottom:12px}.dialog__submit[data-v-70bbf4c9]{margin-top:4px;margin-bottom:8px}.dialog[data-v-70bbf4c9] .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},51285:(e,s,a)=>{a.r(s),a.d(s,{default:()=>ht});var i=a(85471),n=a(9165),r=a(53334),o=a(42530),l=a(52439),d=a(27345),c=a(85865),u=a(97012),g=a(85947),A=a(6695),p=a(35810),h=a(63814),m=a(65043),v=a(24784),C=a(14727),w=a(32073),_=a(40083),f=a(67607),b=a(15916),y=a(95668),x=a(36620);const N={name:"UserSettingsDialog",components:{NcAppSettingsDialog:v.N,NcAppSettingsSection:C.A,NcCheckboxRadioSwitch:w.A,NcNoteCard:_.A,NcSelect:f.A},props:{open:{type:Boolean,required:!0}},data:()=>({selectedQuota:!1,loadingSendMail:!1}),computed:{groupSorting:{get(){return this.$store.getters.getGroupSorting===b.q.GroupName?"name":"member-count"},set(t){this.$store.commit("setGroupSorting","name"===t?b.q.GroupName:b.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)}},showFirstLogin:{get(){return this.showConfig.showFirstLogin},set(t){this.setShowConfig("showFirstLogin",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(y.SA),t},defaultQuota:{get(){return!1!==this.selectedQuota?this.selectedQuota:this.settings.defaultQuota!==y.SA.id&&OC.Util.computerFileSize(this.settings.defaultQuota)>=0?{id:this.settings.defaultQuota,label:this.settings.defaultQuota}:y.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 m.Ay.post((0,h.Jv)("/settings/users/preferences/newUser.sendEmail"),{value:t?"yes":"no"})}catch(t){x.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,p.lT)(t,!0);return null===e?y.SA:{id:t=(0,p.v7)(e),label:t}},setDefaultQuota(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"none";"none"===t&&(t=y.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 k=a(85072),S=a.n(k),G=a(97825),U=a.n(G),L=a(77659),D=a.n(L),B=a(55056),I=a.n(B),q=a(10540),O=a.n(q),M=a(41113),F=a.n(M),$=a(6817),T={};T.styleTagTransform=F(),T.setAttributes=I(),T.insert=D().bind(null,"head"),T.domAPI=U(),T.insertStyleElement=O(),S()($.A,T),$.A&&$.A.locals&&$.A.locals;var E=a(14486);const P=(0,E.A)(N,(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":"showFirstLogin",checked:t.showFirstLogin},on:{"update:checked":function(e){t.showFirstLogin=e}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Show first login"))+"\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("NcNoteCard",{staticClass:"dialog__note",attrs:{type:"info",text:t.t("settings","Sorting only applies to the currently loaded groups for performance reasons. Groups will be loaded as you navigate or search through the list.")}}),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,"9f7a355c",null).exports;var z=a(85168),R=a(13073),Q=a(54914),W=a(24387),H=a(44131),K=a(71418),j=a(14363),Y=a(94174),X=a(59892),V=a(57505),J=a(69496),Z=a(43261),tt=a(79759),et=a(2413);const st={name:"GroupListItem",components:{AccountGroup:Z.A,Delete:tt.A,Fragment:Q.F,NcActionButton:V.A,NcActionInput:H.A,NcAppNavigationItem:l.A,NcButton:u.A,NcCounterBubble:g.A,NcModal:J.A,NcNoteCard:_.A,Pencil:et.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,z.Qg)(t("settings",'Failed to remove group "{group}"',{group:this.name}))}}}};var at=a(79496),it={};it.styleTagTransform=F(),it.setAttributes=I(),it.insert=D().bind(null,"head"),it.domAPI=U(),it.insertStyleElement=O(),S()(at.A,it),at.A&&at.A.locals&&at.A.locals;const nt=(0,E.A)(st,(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,ref:"listItem",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,"161509be",null).exports;function rt(t){return void 0===t?null:{id:t.id,title:t.name,usercount:t.usercount,count:Math.max(0,t.usercount-t.disabled)}}const ot=t=>{const e=(0,i.EW)((()=>t.value.filter((t=>"disabled"!==t.id&&"__nc_internal_recent"!==t.id&&"admin"!==t.id)).map((t=>rt(t))).filter((t=>null!==t)))),s=(0,i.EW)((()=>rt(t.value.find((t=>"admin"===t.id))))),a=(0,i.EW)((()=>rt(t.value.find((t=>"disabled"===t.id)))));return{adminGroup:s,recentGroup:(0,i.EW)((()=>rt(t.value.find((t=>"__nc_internal_recent"===t.id))))),disabledGroup:a,userGroups:e}};var lt=a(14744),dt=a(46984);const ct=(0,i.pM)({__name:"AppNavigationGroupList",setup(t){const e=(0,lt.P)(),s=(0,W.lq)(),a=(0,W.rd)();(0,i.KC)((async()=>{await S()}));const o=(0,i.EW)((()=>s.params?.selectedGroup)),l=(0,i.EW)((()=>o.value?decodeURIComponent(o.value):null)),c=(0,i.EW)((()=>e.getters.getSortedGroups)),{userGroups:u}=ot(c),g=(0,i.EW)((()=>e.getters.getServerData)),p=(0,i.EW)((()=>g.value.isAdmin||g.value.isDelegatedAdmin)),h=(0,i.KR)(!1),m=(0,i.KR)(!1),v=(0,i.KR)(!1),C=(0,i.KR)(""),w=(0,i.KR)(!1),_=(0,i.KR)(0),f=(0,i.KR)(""),b=(0,i.KR)([]),y=(0,i.EW)((()=>b.value.findLast((t=>t?.$vnode?.key===u.value?.at(-1)?.id))?.$refs?.listItem?.$el)),N=(0,R.ITo)(y);(0,i.wB)(N,(async()=>{N.value&&await S()})),(0,i.wB)(f,(async()=>{e.commit("resetGroups"),_.value=0,await S()}));const k=(0,i.KR)();async function S(){if(p.value){k.value&&k.value.cancel(),w.value=!0;try{k.value=(0,dt.N_)({search:f.value,offset:_.value,limit:25});const t=await k.value;t.length>0&&(_.value+=25);for(const s of t)e.commit("addGroup",s)}catch(t){x.A.error((0,r.t)("settings","Failed to load groups"),{error:t})}k.value=void 0,w.value=!1}}return{__sfc:!0,store:e,route:s,router:a,selectedGroup:o,selectedGroupDecoded:l,groups:c,userGroups:u,settings:g,isAdminOrDelegatedAdmin:p,isAddGroupOpen:h,loadingAddGroup:m,hasAddGroupError:v,newGroupName:C,loadingGroups:w,offset:_,groupsSearchQuery:f,groupListItems:b,lastGroupListItem:y,isLastGroupVisible:N,promise:k,loadGroups:S,createGroup:async function(){v.value=!1;const t=C.value.trim();if(""!==t){h.value=!1,m.value=!0;try{await e.dispatch("addGroup",t),await a.push({name:"group",params:{selectedGroup:encodeURIComponent(t)}});const s=b.value.findLast((e=>e?.$vnode?.key===t));s?.$refs?.listItem?.$el?.scrollIntoView({behavior:"smooth",block:"nearest"}),C.value=""}catch{(0,z.Qg)((0,r.t)("settings","Failed to create group"))}m.value=!1}else v.value=!0},mdiAccountGroup:n.n7C,mdiPlus:n.biz,t:r.t,Fragment:Q.F,NcActionInput:H.A,NcActionText:K.A,NcAppNavigationCaption:j.N,NcAppNavigationList:d.A,NcAppNavigationSearch:Y.N,NcIconSvgWrapper:A.A,NcLoadingIcon:X.A,GroupListItem:nt}}}),ut=(0,E.A)(ct,(function(){var t=this,e=t._self._c,s=t._self._setupProxy;return e(s.Fragment,[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.NcAppNavigationSearch,{attrs:{label:s.t("settings","Search groups…")},model:{value:s.groupsSearchQuery,callback:function(t){s.groupsSearchQuery=t},expression:"groupsSearchQuery"}}),t._v(" "),e("p",{staticClass:"hidden-visually",attrs:{id:"group-list-desc"}},[t._v("\n\t\t"+t._s(s.t("settings","List of groups. This list is not fully populated for performance reasons. The groups will be loaded as you navigate or search through the list."))+"\n\t")]),t._v(" "),e(s.NcAppNavigationList,{staticClass:"account-management__group-list",attrs:{"aria-describedby":"group-list-desc","data-cy-users-settings-navigation-groups":"custom"}},[t._l(s.userGroups,(function(t){return e(s.GroupListItem,{key:t.id,ref:"groupListItems",refInFor:!0,attrs:{id:t.id,active:s.selectedGroupDecoded===t.id,name:t.title,count:t.count}})})),t._v(" "),s.loadingGroups?e("div",{attrs:{role:"note"}},[e(s.NcLoadingIcon,{attrs:{name:s.t("settings","Loading groups…")}})],1):t._e()],2)],1)}),[],!1,null,null,null).exports,gt=(0,i.pM)({__name:"UserManagementNavigation",setup(t){const e=(0,W.lq)(),s=(0,lt.P)(),a=(0,i.KR)(!1),p=(0,i.EW)((()=>e.params?.selectedGroup)),h=(0,i.EW)((()=>p.value?decodeURIComponent(p.value):null)),m=(0,i.EW)((()=>s.getters.getUserCount)),v=(0,i.EW)((()=>s.getters.getSortedGroups)),{adminGroup:C,recentGroup:w,disabledGroup:_}=ot(v),f=(0,i.EW)((()=>s.getters.getServerData)),b=(0,i.EW)((()=>f.value.isAdmin||f.value.isDelegatedAdmin));return{__sfc:!0,route:e,store:s,isDialogOpen:a,selectedGroup:p,selectedGroupDecoded:h,userCount:m,groups:v,adminGroup:C,recentGroup:w,disabledGroup:_,settings:f,isAdminOrDelegatedAdmin:b,showNewUserMenu:function(){s.commit("setShowConfig",{key:"showNewUserForm",value:!0})},mdiAccount:n.Gbn,mdiAccountOff:n.lBC,mdiCog:n.CZ3,mdiPlus:n.biz,mdiShieldAccount:n.Jey,mdiHistory:n.LP2,t:r.Tl,NcAppNavigation:o.A,NcAppNavigationItem:l.A,NcAppNavigationList:d.A,NcAppNavigationNew:c.A,NcButton:u.A,NcCounterBubble:g.A,NcIconSvgWrapper:A.A,UserSettingsDialog:P,AppNavigationGroupList:ut}}});var At=a(49977),pt={};pt.styleTagTransform=F(),pt.setAttributes=I(),pt.insert=D().bind(null,"head"),pt.domAPI=U(),pt.insertStyleElement=O(),S()(At.A,pt),At.A&&At.A.locals&&At.A.locals;const ht=(0,E.A)(gt,(function(){var t=this,e=t._self._c,s=t._self._setupProxy;return e(s.NcAppNavigation,{staticClass:"account-management__navigation",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.AppNavigationGroupList)],1)}),[],!1,null,"edf83404",null).exports},76333:(t,e,s)=>{s.d(e,{AO:()=>F.N,Az:()=>o.N,B6:()=>u.N,EQ:()=>mt.N,K1:()=>st.N,Qz:()=>O.N,R1:()=>q.N,i$:()=>K.N,lT:()=>Q.N,m7:()=>Q.u,v:()=>vt.N,x1:()=>M.A,yI:()=>V.A});var a=s(15800),i=s(6375),n=s(61744),r=s(97691),o=s(71116),l=s(74479),d=s(73346),c=s(26873),u=s(39092),g=s(15502),A=s(71418),p=s(51005),h=s(74407),m=s(47611),v=s(10363),C=s(11906),w=s(14363),_=s(25535),f=s(95063),b=s(27345),y=s(85865),x=s(85474),N=s(94174),k=s(13463),S=s(542),G=s(24784),U=s(14727),L=s(11041),D=s(18608),B=s(57718),I=s(92089),q=s(69048),O=s(24761),M=s(97012),F=s(13368),$=s(83125),T=s(21590),E=s(4798),P=s(75971),z=s(2738),R=s(54463),Q=s(44228),W=s(30040),H=s(48046),K=s(52045),j=s(20802),Y=s(25521),X=s(25285),V=s(35779),J=s(94427),Z=s(27403),tt=s(48679),et=s(26517),st=s(5260),at=s(56849),it=s(51310),nt=s(28240),rt=s(59892),ot=s(69496),lt=s(40083),dt=s(18722),ct=s(99316),ut=s(74484),gt=s(997),At=s(23573),pt=s(20028),ht=s(58103),mt=(s(58322),s(65692),s(65043),s(21777),s(30872)),vt=s(59890),Ct=(s(61338),s(94632)),wt=s(11712),_t=s(38769),ft=s(68147),bt=s(36432),yt=s(42535),xt=s(30709),Nt=s(3349),kt=s(23982),St=s(51725),Gt=s(23610),Ut=(s(23020),s(53429),s(94205),s(95462),s(23739),s(16343),s(29928),s(12311),s(63352),s(42892)),Lt=s(15074),Dt=(s(59656),s(75105),s(92471),s(16406),s(2508));a.N,i.N,n.A,r.N,o.N,l.A,d.N,c.A,g.A,A.A,p.N,u.N,h.N,m.A,v.A,C.N,w.N,_.A,f.N,b.A,y.A,x.N,N.N,k.N,S.A,G.N,U.A,L.N,D.A,pt.N,B.N,I.N,q.N,O.N,M.A,F.N,$.N,T.N,E.N,P.N,z.N,R.N,Q.N,W.A,H.A,K.N,j.N,Y.A,X.N,V.A,J.A,Z.A,tt.N,et.N,st.N,at.N,it.N,nt.N,rt.A,At.N,ot.A,lt.A,dt.N,ct.N,ut.N,gt.N,pt.a,ht.N,Ct.N,mt.N,wt.N,_t.N,ft.N,bt.N,yt.N,xt.N,vt.N,Nt.N,kt.N,St.N,Gt.A,Symbol.toStringTag,Ut.u,Lt.u,Dt.yw,Symbol.toStringTag},79496:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),i=s.n(a),n=s(76314),r=s.n(n)()(i());r.push([t.id,".modal__header[data-v-161509be]{margin:0}.modal__content[data-v-161509be]{display:flex;flex-direction:column;align-items:center;padding:20px;gap:4px 0}.modal__button-row[data-v-161509be]{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},79498:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),i=s.n(a),n=s(76314),r=s.n(n)()(i());r.push([t.id,".empty[data-v-1e8fee5a] .icon-vue{width:64px;height:64px}.empty[data-v-1e8fee5a] .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@use './Users/shared/styles' as *;\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},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"},82009:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),i=s.n(a),n=s(76314),r=s.n(n)()(i());r.push([t.id,".app-content[data-v-253f9eec]{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},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"},95066:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),i=s.n(a),n=s(76314),r=s.n(n)()(i());r.push([t.id,".footer[data-v-db2a7c4e]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.footer__cell[data-v-db2a7c4e]{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-db2a7c4e],.footer__cell span[data-v-db2a7c4e],.footer__cell label[data-v-db2a7c4e]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.footer__cell--avatar[data-v-db2a7c4e],.footer__cell--displayname[data-v-db2a7c4e]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.footer__cell--avatar[data-v-db2a7c4e]{inset-inline-start:0}.footer__cell--displayname[data-v-db2a7c4e]{inset-inline-start:var(--avatar-cell-width);border-inline-end:1px solid var(--color-border)}}.footer__cell--username[data-v-db2a7c4e]{padding-inline-start:calc(var(--default-grid-baseline)*3)}.footer__cell--avatar[data-v-db2a7c4e]{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-db2a7c4e]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.footer__cell--multiline span[data-v-db2a7c4e]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.footer__cell--large[data-v-db2a7c4e]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.footer__cell--obfuscated[data-v-db2a7c4e]{min-width:400px;width:400px}.footer__cell--fill[data-v-db2a7c4e]{min-width:var(--cell-width-large);width:100%}.footer__cell--actions[data-v-db2a7c4e]{position:sticky;inset-inline-end: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-inline-start:1px solid var(--color-border)}.footer__subtitle[data-v-db2a7c4e]{color:var(--color-text-maxcontrast)}.footer__cell[data-v-db2a7c4e]{position:sticky;color:var(--color-text-maxcontrast)}.footer__cell--loading[data-v-db2a7c4e]{inset-inline-start:0;min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0}.footer__cell--count[data-v-db2a7c4e]{inset-inline-start: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,oBAAA,CAGD,4CACC,2CAAA,CACA,+CAAA,CAAA,CAIF,yCACC,yDAAA,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,kBAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,iDAAA,CAIF,mCACC,mCAAA,CDpGD,+BACC,eAAA,CACA,mCAAA,CAEA,wCACC,oBAAA,CACA,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CAGD,sCACC,2CAAA,CACA,2BAAA,CACA,uBAAA",sourcesContent:["\n@use './shared/styles';\n\n.footer {\n\t@include styles.row;\n\t@include styles.cell;\n\n\t&__cell {\n\t\tposition: sticky;\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t&--loading {\n\t\t\tinset-inline-start: 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\tinset-inline-start: 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\tinset-inline-start: 0;\n\t\t\t}\n\n\t\t\t&--displayname {\n\t\t\t\tinset-inline-start: var(--avatar-cell-width);\n\t\t\t\tborder-inline-end: 1px solid var(--color-border);\n\t\t\t}\n\t\t}\n\n\t\t&--username {\n\t\t\tpadding-inline-start: 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\tinset-inline-end: 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-inline-start: 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},95668:(t,e,s)=>{s.d(e,{HK:()=>r,MY:()=>n,SA:()=>i});var a=s(53334);const i={id:"none",label:(0,a.Tl)("settings","Unlimited")},n={id:"default",label:(0,a.Tl)("settings","Default quota")},r=t=>{const e=Object.keys(t);return 1===e.length&&"id"===e.at(0)}},95802:(e,s,a)=>{a.r(s),a.d(s,{default:()=>Gt});var i=a(53334),n=a(61338),r=a(85471),o=a(18195),l=a(9165),d=a(85168),c=a(54914),u=a(35779),g=a(6695),A=a(59892),p=a(55042),h=a(17334),m=a.n(h),v=a(36620);r.Ay.directive("elementVisibility",p.Zx);const C=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(m()((()=>{this.headerHeight=s?.clientHeight??0,this.tableHeight=t?.clientHeight??0,v.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 w=a(85072),_=a.n(w),f=a(97825),b=a.n(f),y=a(77659),x=a.n(y),N=a(55056),k=a.n(N),S=a(10540),G=a.n(S),U=a(41113),L=a.n(U),D=a(12795),B={};B.styleTagTransform=L(),B.setAttributes=k(),B.insert=x().bind(null,"head"),B.domAPI=b(),B.insertStyleElement=G(),_()(D.A,B),D.A&&D.A.locals&&D.A.locals;var I=a(14486);const q=(0,I.A)(C,(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<t.shownItems-t.bufferItems}},"component",t.extraProps,!1))})),1),t._v(" "),e("tfoot",{directives:[{name:"element-visibility",rawName:"v-element-visibility",value:t.handleFooterVisibility,expression:"handleFooterVisibility"}],ref:"tfoot",staticClass:"user-list__footer",attrs:{role:"rowgroup"}},[t._t("footer")],2)],2)}),[],!1,null,"21942da5",null).exports;var O=a(35810),M=a(97012),F=a(94219),$=a(16044),T=a(67607),E=a(82182),P=a(46984);const z={name:"NewUserDialog",components:{NcButton:M.A,NcDialog:F.A,NcPasswordField:$.A,NcSelect:T.A,NcTextField:E.A},props:{loading:{type:Object,required:!0},newUser:{type:Object,required:!0},quotaOptions:{type:Array,required:!0}},data:()=>({availableGroups:[],possibleManagers:[],managerInputLabel:t("settings","Manager"),managerLabel:t("settings","Set line manager"),promise:null}),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},subAdminsGroups(){return this.availableGroups.filter((t=>"admin"!==t.id&&"__nc_internal_recent"!==t.id&&"disabled"!==t.id))},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.isAdmin||this.isDelegatedAdmin?this.availableGroups=this.$store.getters.getSortedGroups.filter((t=>"__nc_internal_recent"!==t.id&&"disabled"!==t.id)):this.availableGroups=[...this.$store.getters.getSubAdminGroups],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?.()}}},async searchGroups(e,s){if(this.isAdmin||this.isDelegatedAdmin){this.promise&&this.promise.cancel(),s(!0);try{this.promise=(0,P.N_)({search:e,offset:0,limit:25});const t=await this.promise;this.availableGroups=t}catch(e){v.A.error(t("settings","Failed to search groups"),{error:e})}this.promise=null,s(!1)}},async createGroup(e){let{name:s}=e;this.loading.groups=!0;try{await this.$store.dispatch("addGroup",s),this.availableGroups.push({id:s,name:s}),this.newUser.groups.push({id:s,name:s})}catch(e){v.A.error(t("settings","Failed to create group"),{error:e})}this.loading.groups=!1},async addGroup(t){t.isCreating||!1!==t.canAdd&&this.newUser.groups.push(t)},validateQuota(t){const e=OC.Util.computerFileSize(t);return null!==e&&e>=0?(t=(0,O.v7)((0,O.lT)(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 R=a(50540),Q={};Q.styleTagTransform=L(),Q.setAttributes=k(),Q.insert=x().bind(null,"head"),Q.domAPI=b(),Q.insertStyleElement=G(),_()(R.A,Q),R.A&&R.A.locals&&R.A.locals;var W=(0,I.A)(z,(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:{"data-test":"groups","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.availableGroups,value:t.newUser.groups,label:"name","close-on-select":!1,multiple:!0,taggable:t.settings.isAdmin||t.settings.isDelegatedAdmin,required:!t.settings.isAdmin&&!t.settings.isDelegatedAdmin,"create-option":t=>({id:t,name:t,isCreating:!0})},on:{search:t.searchGroups,"option:created":t.createGroup,"option:selected":e=>t.addGroup(e.at(-1))}})],1),t._v(" "),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 …"),disabled:t.loading.groups||t.loading.all,options:t.subAdminsGroups,"close-on-select":!1,multiple:!0,label:"name"},on:{search:t.searchGroups},model:{value:t.newUser.subAdminsGroups,callback:function(e){t.$set(t.newUser,"subAdminsGroups",e)},expression:"newUser.subAdminsGroups"}})],1),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,"70bbf4c9",null);const H=W.exports,K=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:i.Tl,n:i.zw}});var j=a(95066),Y={};Y.styleTagTransform=L(),Y.setAttributes=k(),Y.insert=x().bind(null,"head"),Y.domAPI=b(),Y.insertStyleElement=G(),_()(j.A,Y),j.A&&j.A.locals&&j.A.locals;const X=(0,I.A)(K,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("tr",{staticClass:"footer"},[e("th",{attrs:{scope:"row"}},[e("span",{staticClass:"hidden-visually"},[t._v(t._s(t.t("settings","Total rows summary")))])]),t._v(" "),e("td",{staticClass:"footer__cell footer__cell--loading"},[t.loading?e("NcLoadingIcon",{attrs:{title:t.t("settings","Loading 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,"db2a7c4e",null).exports,V=r.Ay.extend({name:"UserListHeader",props:{hasObfuscated:{type:Boolean,required:!0}},computed:{showConfig(){return this.$store.getters.getShowConfig},settings(){return this.$store.getters.getServerData},passwordLabel(){return this.hasObfuscated?(0,i.Tl)("settings","Password or insufficient permissions message"):(0,i.Tl)("settings","Password")}},methods:{t:i.Tl}});var J=a(24882),Z={};Z.styleTagTransform=L(),Z.setAttributes=k(),Z.insert=x().bind(null,"head"),Z.domAPI=b(),Z.insertStyleElement=G(),_()(J.A,Z),J.A&&J.A.locals&&J.A.locals;const tt=(0,I.A)(V,(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.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.showFirstLogin?e("th",{staticClass:"header__cell",attrs:{"data-cy-user-list-header-first-login":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","First login")))])]):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,"5c0f8828",null).exports;var et=a(21777),st=a(56760),at=a(41944),it=a(95101),nt=a(86454),rt=a(57505),ot=a(24764),lt=a(65659),dt=a(19664);const ct=(0,r.pM)({components:{NcActionButton:rt.A,NcActions:ot.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?lt:dt},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!==nt.XMLValidator.validate(t))return!1;let e;const s=new nt.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)}}}),ut=(0,I.A)(ct,(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:i,icon:n,text:r}=s;return e("NcActionButton",{key:a,attrs:{disabled:t.disabled,"aria-label":r,icon:n,"close-after-click":""},on:{click:e=>i(e,{...t.user})},scopedSlots:t._u([t.isSvg(n)?{key:"icon",fn:function(){return[e("NcIconSvgWrapper",{attrs:{svg:n,"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;var gt=a(76333);const At={props:{user:{type:Object,required:!0},settings:{type:Object,default:()=>({})},quotaOptions:{type:Array,default:()=>[]},languages:{type:Array,required:!0},externalActions:{type:Array,default:()=>[]}},setup(t){const{formattedFullTime:e}=(0,gt.m7)(1e3*t.user.firstLoginTimestamp,{relativeTime:!1,format:{timeStyle:"short",dateStyle:"short"}});return{formattedFullTime:e}},data(){return{availableGroups:this.user.groups.map((t=>({id:t,name:t}))),availableSubAdminGroups:this.user.subadmin.map((t=>({id:t,name:t}))),userGroups:this.user.groups.map((t=>({id:t,name:t}))),userSubAdminGroups:this.user.subadmin.map((t=>({id:t,name:t})))}},computed:{showConfig(){return this.$store.getters.getShowConfig},usedSpace(){const e=this.user.quota.used>0?this.user.quota.used:0;return t("settings","{size} used",{size:(0,O.v7)(e,!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=(0,O.v7)(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},userFirstLogin(){return this.user.firstLoginTimestamp>0?this.formattedFullTime:this.user.firstLoginTimestamp<0?t("settings","Unknown"):t("settings","Never")},userLastLoginTooltip(){return this.user.lastLoginTimestamp>0?OC.Util.formatDate(1e3*this.user.lastLoginTimestamp):""},userLastLogin(){return this.user.lastLoginTimestamp>0?OC.Util.relativeModifiedDate(1e3*this.user.lastLoginTimestamp):t("settings","Never")}}};var pt=a(95668);const ht={name:"UserRow",components:{NcAvatar:at.A,NcLoadingIcon:A.A,NcProgressBar:it.A,NcSelect:T.A,NcTextField:E.A,UserRowActions:ut},mixins:[At],props:{user:{type:Object,required:!0},visible:{type:Boolean,required:!0},users:{type:Array,required:!0},hasObfuscated:{type:Boolean,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,groupsDetails:!1,subAdminGroupsDetails:!1,subadmins:!1,quota:!1,delete:!1,disable:!1,languages:!1,wipe:!1,manager:!1},editedDisplayName:this.user.displayname,editedPassword:"",editedMail:this.user.email??"",promise:null}},computed:{managerLabel:()=>t("settings","Set line manager"),isObfuscated(){return(0,pt.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??t.id)).join(", ")},userSubAdminGroupsLabels(){return this.userSubAdminGroups.map((t=>t.name??t.id)).join(", ")},usedSpace(){return this.user.quota?.used?t("settings","{size} used",{size:(0,O.v7)(this.user.quota?.used)}):t("settings","{size} used",{size:(0,O.v7)(0)})},canEdit(){return(0,et.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,O.lT)(e,!0))),"none"===e||-3===e?t("settings","Unlimited"):e>=0?(0,O.v7)(e):(0,O.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!==pt.SA.id&&(0,O.lT)(this.settings.defaultQuota,!0)>=0?{id:this.settings.defaultQuota,label:this.settings.defaultQuota}:pt.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,st.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 loadGroupsDetails(){this.loading.groups=!0,this.loading.groupsDetails=!0;try{const t=await(0,P.Iu)({userId:this.user.id});this.availableGroups=this.availableGroups.map((e=>t.find((t=>t.id===e.id))??e))}catch(e){v.A.error(t("settings","Failed to load groups with details"),{error:e})}this.loading.groups=!1,this.loading.groupsDetails=!1},async loadSubAdminGroupsDetails(){this.loading.subadmins=!0,this.loading.subAdminGroupsDetails=!0;try{const t=await(0,P.FF)({userId:this.user.id});this.availableSubAdminGroups=this.availableSubAdminGroups.map((e=>t.find((t=>t.id===e.id))??e))}catch(e){v.A.error(t("settings","Failed to load sub admin groups with details"),{error:e})}this.loading.subadmins=!1,this.loading.subAdminGroupsDetails=!1},async searchGroups(e,s){if(""!==e){this.promise&&this.promise.cancel(),s(!0);try{this.promise=await(0,P.N_)({search:e,offset:0,limit:25});const t=await this.promise;this.availableGroups=t,this.availableSubAdminGroups=t.filter((t=>"admin"!==t.id))}catch(e){v.A.error(t("settings","Failed to search groups"),{error:e})}this.promise=null,s(!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(){this.loading.manager=!0;const e=this.user.manager;try{await this.$store.dispatch("setUserData",{userid:this.user.id,key:"manager",value:this.currentManager?this.currentManager.id:""})}catch(s){(0,d.Qg)(t("settings","Failed to update line manager")),v.A.error("Failed to update manager:",{error:s}),this.currentManager=e}finally{this.loading.manager=!1}},async deleteUser(){const e=this.user.id;await(0,st.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("settings","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("settings","Password can't be empty")),this.loading.password=!1;else try{await this.$store.dispatch("setUserData",{userid:this.user.id,key:"password",value:this.editedPassword}),this.editedPassword="",(0,d.Te)(t("settings","Password was successfully changed"))}finally{this.loading.password=!1}},async updateEmail(){if(this.loading.mailAddress=!0,""===this.editedMail)(0,d.Qg)(t("settings","Email can't be empty")),this.loading.mailAddress=!1,this.editedMail=this.user.email;else try{await this.$store.dispatch("setUserData",{userid:this.user.id,key:"email",value:this.editedMail}),this.editedMail===this.user.email&&(0,d.Te)(t("settings","Email was successfully changed"))}finally{this.loading.mailAddress=!1}},async createGroup(e){let{name:s}=e;this.loading.groups=!0;try{await this.$store.dispatch("addGroup",s),this.availableGroups.push({id:s,name:s}),this.availableSubAdminGroups.push({id:s,name:s});const t=this.user.id;await this.$store.dispatch("addUserGroup",{userid:t,gid:s}),this.userGroups.push({id:s,name:s})}catch(e){v.A.error(t("settings","Failed to create group"),{error:e})}this.loading.groups=!1},async addUserGroup(t){if(t.isCreating)return;const e=this.user.id,s=t.id;if(!1!==t.canAdd){this.loading.groups=!0;try{await this.$store.dispatch("addUserGroup",{userid:e,gid:s}),this.userGroups.push(t)}catch(t){console.error(t)}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.userGroups=this.userGroups.filter((t=>t.id!==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.userSubAdminGroups.push(t)}catch(t){console.error(t)}this.loading.subadmins=!1},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}),this.userSubAdminGroups=this.userSubAdminGroups.filter((t=>t.id!==s))}catch(t){console.error(t)}finally{this.loading.subadmins=!1}},async setUserQuota(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"none";"none"===t&&(t=pt.SA),this.loading.quota=!0,t=t.id?t.id:t;try{const e=((0,O.lT)(t,!0)||t).toString();await this.$store.dispatch("setUserData",{userid:this.user.id,key:"quota",value:e})}catch(t){console.error(t)}finally{this.loading.quota=!1}return t},validateQuota:t=>("object"==typeof t&&(t=t?.id||t.label),null===(0,O.lT)(t,!0)?pt.SA:{id:t=(0,O.v7)((0,O.lT)(t,!0)),label:t}),async setUserLanguage(t){this.loading.languages=!0;try{await this.$store.dispatch("setUserData",{userid:this.user.id,key:"language",value:t.code}),this.loading.languages=!1}catch(t){console.error(t)}return t},sendWelcomeMail(){this.loading.all=!0,this.$store.dispatch("sendWelcomeMail",this.user.id).then((()=>(0,d.Te)(t("settings","Welcome mail sent!"),{timeout:2e3}))).finally((()=>{this.loading.all=!1}))},async toggleEdit(){this.editing=!this.editing,this.editing&&(await this.$nextTick(),this.$refs.displayNameField?.$refs?.inputField?.$refs?.input?.focus(),this.loadGroupsDetails(),this.loadSubAdminGroupsDetails()),this.editedDisplayName!==this.user.displayname?this.editedDisplayName=this.user.displayname:this.editedMail!==this.user.email&&(this.editedMail=this.user.email??"")}}};var mt=a(7073),vt={};vt.styleTagTransform=L(),vt.setAttributes=k(),vt.insert=x().bind(null,"head"),vt.domAPI=b(),vt.insertStyleElement=G(),_()(mt.A,vt),mt.A&&mt.A.locals&&mt.A.locals;var Ct=(0,I.A)(ht,(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||t.loading.groupsDetails,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=>({id:t,name:t,isCreating:!0})},on:{search:t.searchGroups,"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.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)?[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||t.loading.subAdminGroupsDetails,loading:t.loading.subadmins,label:"name","append-to-body":!1,multiple:!0,"no-wrap":!0,options:t.availableSubAdminGroups,placeholder:t.t("settings","Set account as admin for"),value:t.userSubAdminGroups},on:{search:t.searchGroups,"option:deselected":t.removeUserSubAdmin,"option:selected":e=>t.addUserSubAdmin(e.at(-1))}})]:t.isObfuscated?t._e():e("span",{attrs:{title:t.userSubAdminGroupsLabels?.length>40?t.userSubAdminGroupsLabels:null}},[t._v("\n\t\t\t"+t._s(t.userSubAdminGroupsLabels)+"\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.showFirstLogin?e("td",{staticClass:"row__cell",attrs:{"data-cy-user-list-cell-first-login":""}},[t.isObfuscated?t._e():e("span",[t._v(t._s(t.userFirstLogin))])]):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,disabled:t.isLoadingField,loading:t.loadingPossibleManagers||t.loading.manager,options:t.possibleManagers,placeholder:t.managerLabel,label:"displayname",filterable:!1,"internal-search":!1,clearable:!0},on:{open:t.searchInitialUserManager,search:t.searchUserManager,"update:model-value":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,"7faa9864",null);const wt=Ct.exports,_t=Object.freeze({id:"",displayName:"",password:"",mailAddress:"",groups:[],manager:"",subAdminsGroups:[],quota:pt.MY,language:{code:"en",name:t("settings","Default language")}}),ft={name:"UserList",components:{Fragment:c.F,NcEmptyContent:u.A,NcIconSvgWrapper:g.A,NcLoadingIcon:A.A,NewUserDialog:H,UserListFooter:X,UserListHeader:tt,VirtualList:q},props:{selectedGroup:{type:String,default:null},externalActions:{type:Array,default:()=>[]}},setup:()=>({mdiAccountGroup:l.n7C,rowHeight:55,UserRow:wt}),data:()=>({loading:{all:!1,groups:!1,users:!1},newUser:{..._t},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,pt.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.getSortedGroups.filter((t=>"__nc_internal_recent"!==t.id&&"disabled"!==t.id))},quotaOptions(){const t=this.settings.quotaPreset.reduce(((t,e)=>t.concat({id:e,label:e})),[]);return this.settings.allowUnlimitedQuota&&t.unshift(pt.SA),t.unshift(pt.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){v.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,n.B1)("nextcloud:unified-search.search",this.search),(0,n.B1)("nextcloud:unified-search.reset",this.resetSearch),await this.redirectIfDisabled()},beforeDestroy(){(0,n.al)("nextcloud:unified-search.search",this.search),(0,n.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}),v.A.debug(`${this.users.length} total user(s) loaded`)}catch(t){v.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({},_t),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){if(t){const e=this.groups.find((e=>e.id===t));if(e)return void(this.newUser.groups=[e])}this.newUser.groups=[]}else{const t=this.$store.getters.getSubAdminGroups;1===t.length&&(this.newUser.groups=[...t])}},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 bt=a(79498),yt={};yt.styleTagTransform=L(),yt.setAttributes=k(),yt.insert=x().bind(null,"head"),yt.domAPI=b(),yt.insertStyleElement=G(),_()(bt.A,yt),bt.A&&bt.A.locals&&bt.A.locals;const xt=(0,I.A)(ft,(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,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,"1e8fee5a",null).exports,Nt=(0,r.pM)({name:"UserManagement",components:{NcAppContent:o.A,UserList:xt},data:()=>({externalActions:[]}),computed:{pageHeading(){return null===this.selectedGroupDecoded?(0,i.Tl)("settings","All accounts"):{admin:(0,i.Tl)("settings","Admins"),disabled:(0,i.Tl)("settings","Disabled accounts")}[this.selectedGroupDecoded]??(0,i.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.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,n.Ic)("settings:user-management:loaded")},methods:{t:i.Tl,registerAction(t,e,s,a){return this.externalActions.push({icon:t,text:e,action:s,enabled:a}),this.externalActions}}});var kt=a(82009),St={};St.styleTagTransform=L(),St.setAttributes=k(),St.insert=x().bind(null,"head"),St.domAPI=b(),St.insertStyleElement=G(),_()(kt.A,St),kt.A&&kt.A.locals&&kt.A.locals;const Gt=(0,I.A)(Nt,(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,"253f9eec",null).exports}}]);
-//# sourceMappingURL=settings-users-3239.js.map?v=0828a85406800581fcfe \ No newline at end of file
+"use strict";(self.webpackChunknextcloud=self.webpackChunknextcloud||[]).push([[3239],{6817:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),i=s.n(a),n=s(76314),r=s.n(n)()(i());r.push([t.id,".dialog__note[data-v-9f7a355c]{font-weight:normal}fieldset[data-v-9f7a355c]{font-weight:bold}","",{version:3,sources:["webpack://./apps/settings/src/components/Users/UserSettingsDialog.vue"],names:[],mappings:"AAEC,+BACC,kBAAA,CAIF,0BACC,gBAAA",sourcesContent:["\n.dialog {\n\t&__note {\n\t\tfont-weight: normal;\n\t}\n}\n\nfieldset {\n\tfont-weight: bold;\n}\n"],sourceRoot:""}]);const o=r},7073:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),i=s.n(a),n=s(76314),r=s.n(n)()(i());r.push([t.id,".user-list__row[data-v-7faa9864]{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-7faa9864]:hover{background-color:var(--color-background-hover)}.user-list__row:hover .row__cell[data-v-7faa9864]:not(.row__cell--actions){background-color:var(--color-background-hover)}.user-list__row .select--fill[data-v-7faa9864]{max-width:calc(var(--cell-width-large) - 2*var(--cell-padding))}.row__cell[data-v-7faa9864]{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-7faa9864],.row__cell span[data-v-7faa9864],.row__cell label[data-v-7faa9864]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.row__cell--avatar[data-v-7faa9864],.row__cell--displayname[data-v-7faa9864]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.row__cell--avatar[data-v-7faa9864]{inset-inline-start:0}.row__cell--displayname[data-v-7faa9864]{inset-inline-start:var(--avatar-cell-width);border-inline-end:1px solid var(--color-border)}}.row__cell--username[data-v-7faa9864]{padding-inline-start:calc(var(--default-grid-baseline)*3)}.row__cell--avatar[data-v-7faa9864]{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-7faa9864]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.row__cell--multiline span[data-v-7faa9864]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.row__cell--large[data-v-7faa9864]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.row__cell--obfuscated[data-v-7faa9864]{min-width:400px;width:400px}.row__cell--fill[data-v-7faa9864]{min-width:var(--cell-width-large);width:100%}.row__cell--actions[data-v-7faa9864]{position:sticky;inset-inline-end: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-inline-start:1px solid var(--color-border)}.row__subtitle[data-v-7faa9864]{color:var(--color-text-maxcontrast)}.row__cell[data-v-7faa9864]{border-bottom:1px solid var(--color-border)}.row__cell[data-v-7faa9864] .v-select.select{min-width:var(--cell-min-width)}.row__progress[data-v-7faa9864]{margin-top:4px}.row__progress--warn[data-v-7faa9864]::-moz-progress-bar{background:var(--color-warning) !important}.row__progress--warn[data-v-7faa9864]::-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,oBAAA,CAGD,yCACC,2CAAA,CACA,+CAAA,CAAA,CAIF,sCACC,yDAAA,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,kBAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,iDAAA,CAIF,gCACC,mCAAA,CDpFD,4BACC,2CAAA,CAGC,6CACC,+BAAA,CAKH,gCACC,cAAA,CAGC,yDACC,0CAAA,CAED,8DACC,0CAAA",sourcesContent:["\n@use './shared/styles';\n\n.user-list__row {\n\t@include styles.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 styles.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\tinset-inline-start: 0;\n\t\t\t}\n\n\t\t\t&--displayname {\n\t\t\t\tinset-inline-start: var(--avatar-cell-width);\n\t\t\t\tborder-inline-end: 1px solid var(--color-border);\n\t\t\t}\n\t\t}\n\n\t\t&--username {\n\t\t\tpadding-inline-start: 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\tinset-inline-end: 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-inline-start: 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},12795:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),i=s.n(a),n=s(76314),r=s.n(n)()(i());r.push([t.id,".user-list[data-v-21942da5]{--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-21942da5],.user-list__footer[data-v-21942da5]{position:sticky;display:block}.user-list__header[data-v-21942da5]{top:0;z-index:calc(var(--sticky-column-z-index) + 1)}.user-list__footer[data-v-21942da5]{inset-inline-start:0}.user-list__body[data-v-21942da5]{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,oBAAA,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\tinset-inline-start: 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},24882:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),i=s.n(a),n=s(76314),r=s.n(n)()(i());r.push([t.id,".header[data-v-5c0f8828]{border-bottom:1px solid var(--color-border);position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.header__cell[data-v-5c0f8828]{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-5c0f8828],.header__cell span[data-v-5c0f8828],.header__cell label[data-v-5c0f8828]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.header__cell--avatar[data-v-5c0f8828],.header__cell--displayname[data-v-5c0f8828]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.header__cell--avatar[data-v-5c0f8828]{inset-inline-start:0}.header__cell--displayname[data-v-5c0f8828]{inset-inline-start:var(--avatar-cell-width);border-inline-end:1px solid var(--color-border)}}.header__cell--username[data-v-5c0f8828]{padding-inline-start:calc(var(--default-grid-baseline)*3)}.header__cell--avatar[data-v-5c0f8828]{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-5c0f8828]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.header__cell--multiline span[data-v-5c0f8828]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.header__cell--large[data-v-5c0f8828]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.header__cell--obfuscated[data-v-5c0f8828]{min-width:400px;width:400px}.header__cell--fill[data-v-5c0f8828]{min-width:var(--cell-width-large);width:100%}.header__cell--actions[data-v-5c0f8828]{position:sticky;inset-inline-end: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-inline-start:1px solid var(--color-border)}.header__subtitle[data-v-5c0f8828]{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,yBACC,2CAAA,CCEA,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,oBAAA,CAGD,4CACC,2CAAA,CACA,+CAAA,CAAA,CAIF,yCACC,yDAAA,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,kBAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,iDAAA,CAIF,mCACC,mCAAA",sourcesContent:["\n@use './shared/styles';\n\n.header {\n\tborder-bottom: 1px solid var(--color-border);\n\n\t@include styles.row;\n\t@include styles.cell;\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\tinset-inline-start: 0;\n\t\t\t}\n\n\t\t\t&--displayname {\n\t\t\t\tinset-inline-start: var(--avatar-cell-width);\n\t\t\t\tborder-inline-end: 1px solid var(--color-border);\n\t\t\t}\n\t\t}\n\n\t\t&--username {\n\t\t\tpadding-inline-start: 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\tinset-inline-end: 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-inline-start: 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},27514:t=>{t.exports="data:image/svg+xml,%3c%21--%20-%20SPDX-FileCopyrightText:%202020%20Google%20Inc.%20-%20SPDX-License-Identifier:%20Apache-2.0%20--%3e%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M18.4%207.4L17%206l-6%206%206%206%201.4-1.4-4.6-4.6%204.6-4.6m-6%200L11%206l-6%206%206%206%201.4-1.4L7.8%2012l4.6-4.6z%27/%3e%3c/svg%3e"},27518:t=>{t.exports="data:image/svg+xml,%3c%21--%20-%20SPDX-FileCopyrightText:%202020%20Google%20Inc.%20-%20SPDX-License-Identifier:%20Apache-2.0%20--%3e%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M15.4%2016.6L10.8%2012l4.6-4.6L14%206l-6%206%206%206%201.4-1.4z%27/%3e%3c/svg%3e"},46984:(t,e,s)=>{s.d(e,{FF:()=>d,Iu:()=>l,N_:()=>o});var a=s(65043),i=s(63814),n=s(36117);const r=t=>({id:t.id,name:t.displayname,usercount:t.usercount,disabled:t.disabled,canAdd:t.canAdd,canRemove:t.canRemove}),o=t=>{let{search:e,offset:s,limit:o}=t;const l=new AbortController;return new n.CancelablePromise((async(t,n,d)=>{d((()=>l.abort()));try{const{data:n}=await a.Ay.get((0,i.KT)("/cloud/groups/details?search={search}&offset={offset}&limit={limit}",{search:e,offset:s,limit:o}),{signal:l.signal});t((n.ocs?.data?.groups??[]).map(r))}catch(t){n(t)}}))},l=async t=>{let{userId:e}=t;const s=(0,i.KT)("/cloud/users/{userId}/groups/details",{userId:e}),{data:n}=await a.Ay.get(s);return(n.ocs?.data?.groups??[]).map(r)},d=async t=>{let{userId:e}=t;const s=(0,i.KT)("/cloud/users/{userId}/subadmins/details",{userId:e}),{data:n}=await a.Ay.get(s);return(n.ocs?.data?.groups??[]).map(r)}},49977:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),i=s.n(a),n=s(76314),r=s.n(n)()(i());r.push([t.id,".account-management__navigation[data-v-edf83404] .app-navigation__body{will-change:scroll-position}.account-management__system-list[data-v-edf83404]{height:auto !important;overflow:visible !important}.account-management__group-list[data-v-edf83404]{height:100% !important}.account-management__settings-toggle[data-v-edf83404]{margin-bottom:12px}","",{version:3,sources:["webpack://./apps/settings/src/views/UserManagementNavigation.vue"],names:[],mappings:"AAGE,uEACC,2BAAA,CAGF,kDACC,sBAAA,CACA,2BAAA,CAGD,iDACC,sBAAA,CAGD,sDACC,kBAAA",sourcesContent:["\n.account-management {\n\t&__navigation {\n\t\t:deep(.app-navigation__body) {\n\t\t\twill-change: scroll-position;\n\t\t}\n\t}\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},50540:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),i=s.n(a),n=s(76314),r=s.n(n)()(i());r.push([t.id,".dialog__form[data-v-70bbf4c9]{display:flex;flex-direction:column;align-items:center;padding:0 8px;gap:4px 0}.dialog__item[data-v-70bbf4c9]{width:100%}.dialog__item[data-v-70bbf4c9]:not(:focus):not(:active){border-color:var(--color-border-dark)}.dialog__hint[data-v-70bbf4c9]{color:var(--color-text-maxcontrast);margin-top:8px;align-self:flex-start}.dialog__label[data-v-70bbf4c9]{display:block;padding:4px 0}.dialog__select[data-v-70bbf4c9]{width:100%}.dialog__managers[data-v-70bbf4c9]{margin-bottom:12px}.dialog__submit[data-v-70bbf4c9]{margin-top:4px;margin-bottom:8px}.dialog[data-v-70bbf4c9] .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},60197:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),i=s.n(a),n=s(76314),r=s.n(n)()(i());r.push([t.id,".modal__header[data-v-3e2f3c17]{margin:0}.modal__content[data-v-3e2f3c17]{display:flex;flex-direction:column;align-items:center;padding:20px;gap:4px 0}.modal__button-row[data-v-3e2f3c17]{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},69922:(e,s,a)=>{a.r(s),a.d(s,{default:()=>ht});var i=a(85471),n=a(9165),r=a(53334),o=a(42530),l=a(52439),d=a(27345),c=a(85865),u=a(97012),g=a(85947),A=a(6695),p=a(35810),h=a(63814),m=a(65043),C=a(24784),v=a(14727),w=a(32073),_=a(40083),f=a(67607),b=a(15916),y=a(95668),x=a(36620);const N={name:"UserSettingsDialog",components:{NcAppSettingsDialog:C.N,NcAppSettingsSection:v.A,NcCheckboxRadioSwitch:w.A,NcNoteCard:_.A,NcSelect:f.A},props:{open:{type:Boolean,required:!0}},data:()=>({selectedQuota:!1,loadingSendMail:!1}),computed:{groupSorting:{get(){return this.$store.getters.getGroupSorting===b.q.GroupName?"name":"member-count"},set(t){this.$store.commit("setGroupSorting","name"===t?b.q.GroupName:b.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)}},showFirstLogin:{get(){return this.showConfig.showFirstLogin},set(t){this.setShowConfig("showFirstLogin",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(y.SA),t},defaultQuota:{get(){return!1!==this.selectedQuota?this.selectedQuota:this.settings.defaultQuota!==y.SA.id&&OC.Util.computerFileSize(this.settings.defaultQuota)>=0?{id:this.settings.defaultQuota,label:this.settings.defaultQuota}:y.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 m.Ay.post((0,h.Jv)("/settings/users/preferences/newUser.sendEmail"),{value:t?"yes":"no"})}catch(t){x.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,p.lT)(t,!0);return null===e?y.SA:{id:t=(0,p.v7)(e),label:t}},setDefaultQuota(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"none";"none"===t&&(t=y.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 k=a(85072),S=a.n(k),G=a(97825),U=a.n(G),L=a(77659),D=a.n(L),B=a(55056),I=a.n(B),q=a(10540),O=a.n(q),M=a(41113),F=a.n(M),$=a(6817),T={};T.styleTagTransform=F(),T.setAttributes=I(),T.insert=D().bind(null,"head"),T.domAPI=U(),T.insertStyleElement=O(),S()($.A,T),$.A&&$.A.locals&&$.A.locals;var E=a(14486);const P=(0,E.A)(N,(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":"showFirstLogin",checked:t.showFirstLogin},on:{"update:checked":function(e){t.showFirstLogin=e}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Show first login"))+"\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("NcNoteCard",{staticClass:"dialog__note",attrs:{type:"info",text:t.t("settings","Sorting only applies to the currently loaded groups for performance reasons. Groups will be loaded as you navigate or search through the list.")}}),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,"9f7a355c",null).exports;var z=a(85168),R=a(13073),Q=a(54914),W=a(24387),H=a(44131),K=a(71418),j=a(14363),Y=a(94174),X=a(59892),V=a(57505),J=a(69496),Z=a(43261),tt=a(79759),et=a(2413);const st={name:"GroupListItem",components:{AccountGroup:Z.A,Delete:tt.A,Fragment:Q.F,NcActionButton:V.A,NcActionInput:H.A,NcAppNavigationItem:l.A,NcButton:u.A,NcCounterBubble:g.A,NcModal:J.A,NcNoteCard:_.A,Pencil:et.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,z.Qg)(t("settings",'Failed to delete group "{group}"',{group:this.name}))}}}};var at=a(60197),it={};it.styleTagTransform=F(),it.setAttributes=I(),it.insert=D().bind(null,"head"),it.domAPI=U(),it.insertStyleElement=O(),S()(at.A,it),at.A&&at.A.locals&&at.A.locals;const nt=(0,E.A)(st,(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 delete 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,ref:"listItem",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","Delete group"))+"\n\t\t\t")]):t._e()]},proxy:!0}])})],1)}),[],!1,null,"3e2f3c17",null).exports;function rt(t){return void 0===t?null:{id:t.id,title:t.name,usercount:t.usercount,count:Math.max(0,t.usercount-t.disabled)}}const ot=t=>{const e=(0,i.EW)((()=>t.value.filter((t=>"disabled"!==t.id&&"__nc_internal_recent"!==t.id&&"admin"!==t.id)).map((t=>rt(t))).filter((t=>null!==t)))),s=(0,i.EW)((()=>rt(t.value.find((t=>"admin"===t.id))))),a=(0,i.EW)((()=>rt(t.value.find((t=>"disabled"===t.id)))));return{adminGroup:s,recentGroup:(0,i.EW)((()=>rt(t.value.find((t=>"__nc_internal_recent"===t.id))))),disabledGroup:a,userGroups:e}};var lt=a(14744),dt=a(46984);const ct=(0,i.pM)({__name:"AppNavigationGroupList",setup(t){const e=(0,lt.P)(),s=(0,W.lq)(),a=(0,W.rd)();(0,i.KC)((async()=>{await S()}));const o=(0,i.EW)((()=>s.params?.selectedGroup)),l=(0,i.EW)((()=>o.value?decodeURIComponent(o.value):null)),c=(0,i.EW)((()=>e.getters.getSortedGroups)),{userGroups:u}=ot(c),g=(0,i.EW)((()=>e.getters.getServerData)),p=(0,i.EW)((()=>g.value.isAdmin||g.value.isDelegatedAdmin)),h=(0,i.KR)(!1),m=(0,i.KR)(!1),C=(0,i.KR)(!1),v=(0,i.KR)(""),w=(0,i.KR)(!1),_=(0,i.KR)(0),f=(0,i.KR)(""),b=(0,i.KR)([]),y=(0,i.EW)((()=>b.value.findLast((t=>t?.$vnode?.key===u.value?.at(-1)?.id))?.$refs?.listItem?.$el)),N=(0,R.ITo)(y);(0,i.wB)(N,(async()=>{N.value&&await S()})),(0,i.wB)(f,(async()=>{e.commit("resetGroups"),_.value=0,await S()}));const k=(0,i.KR)();async function S(){if(p.value){k.value&&k.value.cancel(),w.value=!0;try{k.value=(0,dt.N_)({search:f.value,offset:_.value,limit:25});const t=await k.value;t.length>0&&(_.value+=25);for(const s of t)e.commit("addGroup",s)}catch(t){x.A.error((0,r.t)("settings","Failed to load groups"),{error:t})}k.value=void 0,w.value=!1}}return{__sfc:!0,store:e,route:s,router:a,selectedGroup:o,selectedGroupDecoded:l,groups:c,userGroups:u,settings:g,isAdminOrDelegatedAdmin:p,isAddGroupOpen:h,loadingAddGroup:m,hasAddGroupError:C,newGroupName:v,loadingGroups:w,offset:_,groupsSearchQuery:f,groupListItems:b,lastGroupListItem:y,isLastGroupVisible:N,promise:k,loadGroups:S,createGroup:async function(){C.value=!1;const t=v.value.trim();if(""!==t){h.value=!1,m.value=!0;try{await e.dispatch("addGroup",t),await a.push({name:"group",params:{selectedGroup:encodeURIComponent(t)}});const s=b.value.findLast((e=>e?.$vnode?.key===t));s?.$refs?.listItem?.$el?.scrollIntoView({behavior:"smooth",block:"nearest"}),v.value=""}catch{(0,z.Qg)((0,r.t)("settings","Failed to create group"))}m.value=!1}else C.value=!0},mdiAccountGroup:n.n7C,mdiPlus:n.biz,t:r.t,Fragment:Q.F,NcActionInput:H.A,NcActionText:K.A,NcAppNavigationCaption:j.N,NcAppNavigationList:d.A,NcAppNavigationSearch:Y.N,NcIconSvgWrapper:A.A,NcLoadingIcon:X.A,GroupListItem:nt}}}),ut=(0,E.A)(ct,(function(){var t=this,e=t._self._c,s=t._self._setupProxy;return e(s.Fragment,[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.NcAppNavigationSearch,{attrs:{label:s.t("settings","Search groups…")},model:{value:s.groupsSearchQuery,callback:function(t){s.groupsSearchQuery=t},expression:"groupsSearchQuery"}}),t._v(" "),e("p",{staticClass:"hidden-visually",attrs:{id:"group-list-desc"}},[t._v("\n\t\t"+t._s(s.t("settings","List of groups. This list is not fully populated for performance reasons. The groups will be loaded as you navigate or search through the list."))+"\n\t")]),t._v(" "),e(s.NcAppNavigationList,{staticClass:"account-management__group-list",attrs:{"aria-describedby":"group-list-desc","data-cy-users-settings-navigation-groups":"custom"}},[t._l(s.userGroups,(function(t){return e(s.GroupListItem,{key:t.id,ref:"groupListItems",refInFor:!0,attrs:{id:t.id,active:s.selectedGroupDecoded===t.id,name:t.title,count:t.count}})})),t._v(" "),s.loadingGroups?e("div",{attrs:{role:"note"}},[e(s.NcLoadingIcon,{attrs:{name:s.t("settings","Loading groups…")}})],1):t._e()],2)],1)}),[],!1,null,null,null).exports,gt=(0,i.pM)({__name:"UserManagementNavigation",setup(t){const e=(0,W.lq)(),s=(0,lt.P)(),a=(0,i.KR)(!1),p=(0,i.EW)((()=>e.params?.selectedGroup)),h=(0,i.EW)((()=>p.value?decodeURIComponent(p.value):null)),m=(0,i.EW)((()=>s.getters.getUserCount)),C=(0,i.EW)((()=>s.getters.getSortedGroups)),{adminGroup:v,recentGroup:w,disabledGroup:_}=ot(C),f=(0,i.EW)((()=>s.getters.getServerData)),b=(0,i.EW)((()=>f.value.isAdmin||f.value.isDelegatedAdmin));return{__sfc:!0,route:e,store:s,isDialogOpen:a,selectedGroup:p,selectedGroupDecoded:h,userCount:m,groups:C,adminGroup:v,recentGroup:w,disabledGroup:_,settings:f,isAdminOrDelegatedAdmin:b,showNewUserMenu:function(){s.commit("setShowConfig",{key:"showNewUserForm",value:!0})},mdiAccount:n.Gbn,mdiAccountOff:n.lBC,mdiCog:n.CZ3,mdiPlus:n.biz,mdiShieldAccount:n.Jey,mdiHistory:n.LP2,t:r.Tl,NcAppNavigation:o.A,NcAppNavigationItem:l.A,NcAppNavigationList:d.A,NcAppNavigationNew:c.A,NcButton:u.A,NcCounterBubble:g.A,NcIconSvgWrapper:A.A,UserSettingsDialog:P,AppNavigationGroupList:ut}}});var At=a(49977),pt={};pt.styleTagTransform=F(),pt.setAttributes=I(),pt.insert=D().bind(null,"head"),pt.domAPI=U(),pt.insertStyleElement=O(),S()(At.A,pt),At.A&&At.A.locals&&At.A.locals;const ht=(0,E.A)(gt,(function(){var t=this,e=t._self._c,s=t._self._setupProxy;return e(s.NcAppNavigation,{staticClass:"account-management__navigation",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.AppNavigationGroupList)],1)}),[],!1,null,"edf83404",null).exports},76333:(t,e,s)=>{s.d(e,{AO:()=>F.N,Az:()=>o.N,B6:()=>u.N,EQ:()=>mt.N,K1:()=>st.N,Qz:()=>O.N,R1:()=>q.N,i$:()=>K.N,lT:()=>Q.N,m7:()=>Q.u,v:()=>Ct.N,x1:()=>M.A,yI:()=>V.A});var a=s(15800),i=s(6375),n=s(61744),r=s(97691),o=s(71116),l=s(74479),d=s(73346),c=s(26873),u=s(39092),g=s(15502),A=s(71418),p=s(51005),h=s(74407),m=s(47611),C=s(10363),v=s(11906),w=s(14363),_=s(25535),f=s(95063),b=s(27345),y=s(85865),x=s(85474),N=s(94174),k=s(13463),S=s(542),G=s(24784),U=s(14727),L=s(11041),D=s(18608),B=s(57718),I=s(92089),q=s(69048),O=s(24761),M=s(97012),F=s(13368),$=s(83125),T=s(21590),E=s(4798),P=s(75971),z=s(2738),R=s(54463),Q=s(44228),W=s(30040),H=s(48046),K=s(52045),j=s(20802),Y=s(25521),X=s(25285),V=s(35779),J=s(94427),Z=s(27403),tt=s(48679),et=s(26517),st=s(5260),at=s(56849),it=s(51310),nt=s(28240),rt=s(59892),ot=s(69496),lt=s(40083),dt=s(18722),ct=s(99316),ut=s(74484),gt=s(997),At=s(23573),pt=s(20028),ht=s(58103),mt=(s(58322),s(65692),s(65043),s(21777),s(30872)),Ct=s(59890),vt=(s(61338),s(94632)),wt=s(11712),_t=s(38769),ft=s(68147),bt=s(36432),yt=s(42535),xt=s(30709),Nt=s(3349),kt=s(23982),St=s(51725),Gt=s(23610),Ut=(s(23020),s(53429),s(94205),s(95462),s(23739),s(16343),s(29928),s(12311),s(63352),s(42892)),Lt=s(15074),Dt=(s(59656),s(75105),s(92471),s(16406),s(2508));a.N,i.N,n.A,r.N,o.N,l.A,d.N,c.A,g.A,A.A,p.N,u.N,h.N,m.A,C.A,v.N,w.N,_.A,f.N,b.A,y.A,x.N,N.N,k.N,S.A,G.N,U.A,L.N,D.A,pt.N,B.N,I.N,q.N,O.N,M.A,F.N,$.N,T.N,E.N,P.N,z.N,R.N,Q.N,W.A,H.A,K.N,j.N,Y.A,X.N,V.A,J.A,Z.A,tt.N,et.N,st.N,at.N,it.N,nt.N,rt.A,At.N,ot.A,lt.A,dt.N,ct.N,ut.N,gt.N,pt.a,ht.N,vt.N,mt.N,wt.N,_t.N,ft.N,bt.N,yt.N,xt.N,Ct.N,Nt.N,kt.N,St.N,Gt.A,Symbol.toStringTag,Ut.u,Lt.u,Dt.yw,Symbol.toStringTag},79498:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),i=s.n(a),n=s(76314),r=s.n(n)()(i());r.push([t.id,".empty[data-v-1e8fee5a] .icon-vue{width:64px;height:64px}.empty[data-v-1e8fee5a] .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@use './Users/shared/styles' as *;\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},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"},82009:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),i=s.n(a),n=s(76314),r=s.n(n)()(i());r.push([t.id,".app-content[data-v-253f9eec]{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},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"},95066:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),i=s.n(a),n=s(76314),r=s.n(n)()(i());r.push([t.id,".footer[data-v-db2a7c4e]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.footer__cell[data-v-db2a7c4e]{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-db2a7c4e],.footer__cell span[data-v-db2a7c4e],.footer__cell label[data-v-db2a7c4e]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.footer__cell--avatar[data-v-db2a7c4e],.footer__cell--displayname[data-v-db2a7c4e]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.footer__cell--avatar[data-v-db2a7c4e]{inset-inline-start:0}.footer__cell--displayname[data-v-db2a7c4e]{inset-inline-start:var(--avatar-cell-width);border-inline-end:1px solid var(--color-border)}}.footer__cell--username[data-v-db2a7c4e]{padding-inline-start:calc(var(--default-grid-baseline)*3)}.footer__cell--avatar[data-v-db2a7c4e]{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-db2a7c4e]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.footer__cell--multiline span[data-v-db2a7c4e]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.footer__cell--large[data-v-db2a7c4e]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.footer__cell--obfuscated[data-v-db2a7c4e]{min-width:400px;width:400px}.footer__cell--fill[data-v-db2a7c4e]{min-width:var(--cell-width-large);width:100%}.footer__cell--actions[data-v-db2a7c4e]{position:sticky;inset-inline-end: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-inline-start:1px solid var(--color-border)}.footer__subtitle[data-v-db2a7c4e]{color:var(--color-text-maxcontrast)}.footer__cell[data-v-db2a7c4e]{position:sticky;color:var(--color-text-maxcontrast)}.footer__cell--loading[data-v-db2a7c4e]{inset-inline-start:0;min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0}.footer__cell--count[data-v-db2a7c4e]{inset-inline-start: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,oBAAA,CAGD,4CACC,2CAAA,CACA,+CAAA,CAAA,CAIF,yCACC,yDAAA,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,kBAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,iDAAA,CAIF,mCACC,mCAAA,CDpGD,+BACC,eAAA,CACA,mCAAA,CAEA,wCACC,oBAAA,CACA,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CAGD,sCACC,2CAAA,CACA,2BAAA,CACA,uBAAA",sourcesContent:["\n@use './shared/styles';\n\n.footer {\n\t@include styles.row;\n\t@include styles.cell;\n\n\t&__cell {\n\t\tposition: sticky;\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t&--loading {\n\t\t\tinset-inline-start: 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\tinset-inline-start: 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\tinset-inline-start: 0;\n\t\t\t}\n\n\t\t\t&--displayname {\n\t\t\t\tinset-inline-start: var(--avatar-cell-width);\n\t\t\t\tborder-inline-end: 1px solid var(--color-border);\n\t\t\t}\n\t\t}\n\n\t\t&--username {\n\t\t\tpadding-inline-start: 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\tinset-inline-end: 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-inline-start: 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},95668:(t,e,s)=>{s.d(e,{HK:()=>r,MY:()=>n,SA:()=>i});var a=s(53334);const i={id:"none",label:(0,a.Tl)("settings","Unlimited")},n={id:"default",label:(0,a.Tl)("settings","Default quota")},r=t=>{const e=Object.keys(t);return 1===e.length&&"id"===e.at(0)}},95802:(e,s,a)=>{a.r(s),a.d(s,{default:()=>Gt});var i=a(53334),n=a(61338),r=a(85471),o=a(18195),l=a(9165),d=a(85168),c=a(54914),u=a(35779),g=a(6695),A=a(59892),p=a(55042),h=a(17334),m=a.n(h),C=a(36620);r.Ay.directive("elementVisibility",p.Zx);const v=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(m()((()=>{this.headerHeight=s?.clientHeight??0,this.tableHeight=t?.clientHeight??0,C.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 w=a(85072),_=a.n(w),f=a(97825),b=a.n(f),y=a(77659),x=a.n(y),N=a(55056),k=a.n(N),S=a(10540),G=a.n(S),U=a(41113),L=a.n(U),D=a(12795),B={};B.styleTagTransform=L(),B.setAttributes=k(),B.insert=x().bind(null,"head"),B.domAPI=b(),B.insertStyleElement=G(),_()(D.A,B),D.A&&D.A.locals&&D.A.locals;var I=a(14486);const q=(0,I.A)(v,(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<t.shownItems-t.bufferItems}},"component",t.extraProps,!1))})),1),t._v(" "),e("tfoot",{directives:[{name:"element-visibility",rawName:"v-element-visibility",value:t.handleFooterVisibility,expression:"handleFooterVisibility"}],ref:"tfoot",staticClass:"user-list__footer",attrs:{role:"rowgroup"}},[t._t("footer")],2)],2)}),[],!1,null,"21942da5",null).exports;var O=a(35810),M=a(97012),F=a(94219),$=a(16044),T=a(67607),E=a(82182),P=a(46984);const z={name:"NewUserDialog",components:{NcButton:M.A,NcDialog:F.A,NcPasswordField:$.A,NcSelect:T.A,NcTextField:E.A},props:{loading:{type:Object,required:!0},newUser:{type:Object,required:!0},quotaOptions:{type:Array,required:!0}},data:()=>({availableGroups:[],possibleManagers:[],managerInputLabel:t("settings","Manager"),managerLabel:t("settings","Set line manager"),promise:null}),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},subAdminsGroups(){return this.availableGroups.filter((t=>"admin"!==t.id&&"__nc_internal_recent"!==t.id&&"disabled"!==t.id))},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.isAdmin||this.isDelegatedAdmin?this.availableGroups=this.$store.getters.getSortedGroups.filter((t=>"__nc_internal_recent"!==t.id&&"disabled"!==t.id)):this.availableGroups=[...this.$store.getters.getSubAdminGroups],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?.()}}},async searchGroups(e,s){if(this.isAdmin||this.isDelegatedAdmin){this.promise&&this.promise.cancel(),s(!0);try{this.promise=(0,P.N_)({search:e,offset:0,limit:25});const t=await this.promise;this.availableGroups=t}catch(e){C.A.error(t("settings","Failed to search groups"),{error:e})}this.promise=null,s(!1)}},async createGroup(e){let{name:s}=e;this.loading.groups=!0;try{await this.$store.dispatch("addGroup",s),this.availableGroups.push({id:s,name:s}),this.newUser.groups.push({id:s,name:s})}catch(e){C.A.error(t("settings","Failed to create group"),{error:e})}this.loading.groups=!1},async addGroup(t){t.isCreating||!1!==t.canAdd&&this.newUser.groups.push(t)},validateQuota(t){const e=OC.Util.computerFileSize(t);return null!==e&&e>=0?(t=(0,O.v7)((0,O.lT)(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 R=a(50540),Q={};Q.styleTagTransform=L(),Q.setAttributes=k(),Q.insert=x().bind(null,"head"),Q.domAPI=b(),Q.insertStyleElement=G(),_()(R.A,Q),R.A&&R.A.locals&&R.A.locals;var W=(0,I.A)(z,(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:{"data-test":"groups","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.availableGroups,value:t.newUser.groups,label:"name","close-on-select":!1,multiple:!0,taggable:t.settings.isAdmin||t.settings.isDelegatedAdmin,required:!t.settings.isAdmin&&!t.settings.isDelegatedAdmin,"create-option":t=>({id:t,name:t,isCreating:!0})},on:{search:t.searchGroups,"option:created":t.createGroup,"option:selected":e=>t.addGroup(e.at(-1))}})],1),t._v(" "),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 …"),disabled:t.loading.groups||t.loading.all,options:t.subAdminsGroups,"close-on-select":!1,multiple:!0,label:"name"},on:{search:t.searchGroups},model:{value:t.newUser.subAdminsGroups,callback:function(e){t.$set(t.newUser,"subAdminsGroups",e)},expression:"newUser.subAdminsGroups"}})],1),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,"70bbf4c9",null);const H=W.exports,K=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:i.Tl,n:i.zw}});var j=a(95066),Y={};Y.styleTagTransform=L(),Y.setAttributes=k(),Y.insert=x().bind(null,"head"),Y.domAPI=b(),Y.insertStyleElement=G(),_()(j.A,Y),j.A&&j.A.locals&&j.A.locals;const X=(0,I.A)(K,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("tr",{staticClass:"footer"},[e("th",{attrs:{scope:"row"}},[e("span",{staticClass:"hidden-visually"},[t._v(t._s(t.t("settings","Total rows summary")))])]),t._v(" "),e("td",{staticClass:"footer__cell footer__cell--loading"},[t.loading?e("NcLoadingIcon",{attrs:{title:t.t("settings","Loading 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,"db2a7c4e",null).exports,V=r.Ay.extend({name:"UserListHeader",props:{hasObfuscated:{type:Boolean,required:!0}},computed:{showConfig(){return this.$store.getters.getShowConfig},settings(){return this.$store.getters.getServerData},passwordLabel(){return this.hasObfuscated?(0,i.Tl)("settings","Password or insufficient permissions message"):(0,i.Tl)("settings","Password")}},methods:{t:i.Tl}});var J=a(24882),Z={};Z.styleTagTransform=L(),Z.setAttributes=k(),Z.insert=x().bind(null,"head"),Z.domAPI=b(),Z.insertStyleElement=G(),_()(J.A,Z),J.A&&J.A.locals&&J.A.locals;const tt=(0,I.A)(V,(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.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.showFirstLogin?e("th",{staticClass:"header__cell",attrs:{"data-cy-user-list-header-first-login":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","First login")))])]):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,"5c0f8828",null).exports;var et=a(21777),st=a(56760),at=a(41944),it=a(95101),nt=a(86454),rt=a(57505),ot=a(24764),lt=a(65659),dt=a(19664);const ct=(0,r.pM)({components:{NcActionButton:rt.A,NcActions:ot.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?lt:dt},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!==nt.XMLValidator.validate(t))return!1;let e;const s=new nt.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)}}}),ut=(0,I.A)(ct,(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:i,icon:n,text:r}=s;return e("NcActionButton",{key:a,attrs:{disabled:t.disabled,"aria-label":r,icon:n,"close-after-click":""},on:{click:e=>i(e,{...t.user})},scopedSlots:t._u([t.isSvg(n)?{key:"icon",fn:function(){return[e("NcIconSvgWrapper",{attrs:{svg:n,"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;var gt=a(76333);const At={props:{user:{type:Object,required:!0},settings:{type:Object,default:()=>({})},quotaOptions:{type:Array,default:()=>[]},languages:{type:Array,required:!0},externalActions:{type:Array,default:()=>[]}},setup(t){const{formattedFullTime:e}=(0,gt.m7)(1e3*t.user.firstLoginTimestamp,{relativeTime:!1,format:{timeStyle:"short",dateStyle:"short"}});return{formattedFullTime:e}},data(){return{availableGroups:this.user.groups.map((t=>({id:t,name:t}))),availableSubAdminGroups:this.user.subadmin.map((t=>({id:t,name:t}))),userGroups:this.user.groups.map((t=>({id:t,name:t}))),userSubAdminGroups:this.user.subadmin.map((t=>({id:t,name:t})))}},computed:{showConfig(){return this.$store.getters.getShowConfig},usedSpace(){const e=this.user.quota.used>0?this.user.quota.used:0;return t("settings","{size} used",{size:(0,O.v7)(e,!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=(0,O.v7)(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},userFirstLogin(){return this.user.firstLoginTimestamp>0?this.formattedFullTime:this.user.firstLoginTimestamp<0?t("settings","Unknown"):t("settings","Never")},userLastLoginTooltip(){return this.user.lastLoginTimestamp>0?OC.Util.formatDate(1e3*this.user.lastLoginTimestamp):""},userLastLogin(){return this.user.lastLoginTimestamp>0?OC.Util.relativeModifiedDate(1e3*this.user.lastLoginTimestamp):t("settings","Never")}}};var pt=a(95668);const ht={name:"UserRow",components:{NcAvatar:at.A,NcLoadingIcon:A.A,NcProgressBar:it.A,NcSelect:T.A,NcTextField:E.A,UserRowActions:ut},mixins:[At],props:{user:{type:Object,required:!0},visible:{type:Boolean,required:!0},users:{type:Array,required:!0},hasObfuscated:{type:Boolean,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,groupsDetails:!1,subAdminGroupsDetails:!1,subadmins:!1,quota:!1,delete:!1,disable:!1,languages:!1,wipe:!1,manager:!1},editedDisplayName:this.user.displayname,editedPassword:"",editedMail:this.user.email??"",promise:null}},computed:{managerLabel:()=>t("settings","Set line manager"),isObfuscated(){return(0,pt.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??t.id)).join(", ")},userSubAdminGroupsLabels(){return this.userSubAdminGroups.map((t=>t.name??t.id)).join(", ")},usedSpace(){return this.user.quota?.used?t("settings","{size} used",{size:(0,O.v7)(this.user.quota?.used)}):t("settings","{size} used",{size:(0,O.v7)(0)})},canEdit(){return(0,et.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,O.lT)(e,!0))),"none"===e||-3===e?t("settings","Unlimited"):e>=0?(0,O.v7)(e):(0,O.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!==pt.SA.id&&(0,O.lT)(this.settings.defaultQuota,!0)>=0?{id:this.settings.defaultQuota,label:this.settings.defaultQuota}:pt.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,st.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 loadGroupsDetails(){this.loading.groups=!0,this.loading.groupsDetails=!0;try{const t=await(0,P.Iu)({userId:this.user.id});this.availableGroups=this.availableGroups.map((e=>t.find((t=>t.id===e.id))??e))}catch(e){C.A.error(t("settings","Failed to load groups with details"),{error:e})}this.loading.groups=!1,this.loading.groupsDetails=!1},async loadSubAdminGroupsDetails(){this.loading.subadmins=!0,this.loading.subAdminGroupsDetails=!0;try{const t=await(0,P.FF)({userId:this.user.id});this.availableSubAdminGroups=this.availableSubAdminGroups.map((e=>t.find((t=>t.id===e.id))??e))}catch(e){C.A.error(t("settings","Failed to load sub admin groups with details"),{error:e})}this.loading.subadmins=!1,this.loading.subAdminGroupsDetails=!1},async searchGroups(e,s){if(""!==e){this.promise&&this.promise.cancel(),s(!0);try{this.promise=await(0,P.N_)({search:e,offset:0,limit:25});const t=await this.promise;this.availableGroups=t,this.availableSubAdminGroups=t.filter((t=>"admin"!==t.id))}catch(e){C.A.error(t("settings","Failed to search groups"),{error:e})}this.promise=null,s(!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(){this.loading.manager=!0;const e=this.user.manager;try{await this.$store.dispatch("setUserData",{userid:this.user.id,key:"manager",value:this.currentManager?this.currentManager.id:""})}catch(s){(0,d.Qg)(t("settings","Failed to update line manager")),C.A.error("Failed to update manager:",{error:s}),this.currentManager=e}finally{this.loading.manager=!1}},async deleteUser(){const e=this.user.id;await(0,st.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("settings","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("settings","Password can't be empty")),this.loading.password=!1;else try{await this.$store.dispatch("setUserData",{userid:this.user.id,key:"password",value:this.editedPassword}),this.editedPassword="",(0,d.Te)(t("settings","Password was successfully changed"))}finally{this.loading.password=!1}},async updateEmail(){if(this.loading.mailAddress=!0,""===this.editedMail)(0,d.Qg)(t("settings","Email can't be empty")),this.loading.mailAddress=!1,this.editedMail=this.user.email;else try{await this.$store.dispatch("setUserData",{userid:this.user.id,key:"email",value:this.editedMail}),this.editedMail===this.user.email&&(0,d.Te)(t("settings","Email was successfully changed"))}finally{this.loading.mailAddress=!1}},async createGroup(e){let{name:s}=e;this.loading.groups=!0;try{await this.$store.dispatch("addGroup",s),this.availableGroups.push({id:s,name:s}),this.availableSubAdminGroups.push({id:s,name:s});const t=this.user.id;await this.$store.dispatch("addUserGroup",{userid:t,gid:s}),this.userGroups.push({id:s,name:s})}catch(e){C.A.error(t("settings","Failed to create group"),{error:e})}this.loading.groups=!1},async addUserGroup(t){if(t.isCreating)return;const e=this.user.id,s=t.id;if(!1!==t.canAdd){this.loading.groups=!0;try{await this.$store.dispatch("addUserGroup",{userid:e,gid:s}),this.userGroups.push(t)}catch(t){console.error(t)}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.userGroups=this.userGroups.filter((t=>t.id!==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.userSubAdminGroups.push(t)}catch(t){console.error(t)}this.loading.subadmins=!1},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}),this.userSubAdminGroups=this.userSubAdminGroups.filter((t=>t.id!==s))}catch(t){console.error(t)}finally{this.loading.subadmins=!1}},async setUserQuota(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"none";"none"===t&&(t=pt.SA),this.loading.quota=!0,t=t.id?t.id:t;try{const e=((0,O.lT)(t,!0)||t).toString();await this.$store.dispatch("setUserData",{userid:this.user.id,key:"quota",value:e})}catch(t){console.error(t)}finally{this.loading.quota=!1}return t},validateQuota:t=>("object"==typeof t&&(t=t?.id||t.label),null===(0,O.lT)(t,!0)?pt.SA:{id:t=(0,O.v7)((0,O.lT)(t,!0)),label:t}),async setUserLanguage(t){this.loading.languages=!0;try{await this.$store.dispatch("setUserData",{userid:this.user.id,key:"language",value:t.code}),this.loading.languages=!1}catch(t){console.error(t)}return t},sendWelcomeMail(){this.loading.all=!0,this.$store.dispatch("sendWelcomeMail",this.user.id).then((()=>(0,d.Te)(t("settings","Welcome mail sent!"),{timeout:2e3}))).finally((()=>{this.loading.all=!1}))},async toggleEdit(){this.editing=!this.editing,this.editing&&(await this.$nextTick(),this.$refs.displayNameField?.$refs?.inputField?.$refs?.input?.focus(),this.loadGroupsDetails(),this.loadSubAdminGroupsDetails()),this.editedDisplayName!==this.user.displayname?this.editedDisplayName=this.user.displayname:this.editedMail!==this.user.email&&(this.editedMail=this.user.email??"")}}};var mt=a(7073),Ct={};Ct.styleTagTransform=L(),Ct.setAttributes=k(),Ct.insert=x().bind(null,"head"),Ct.domAPI=b(),Ct.insertStyleElement=G(),_()(mt.A,Ct),mt.A&&mt.A.locals&&mt.A.locals;var vt=(0,I.A)(ht,(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||t.loading.groupsDetails,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=>({id:t,name:t,isCreating:!0})},on:{search:t.searchGroups,"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.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)?[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||t.loading.subAdminGroupsDetails,loading:t.loading.subadmins,label:"name","append-to-body":!1,multiple:!0,"no-wrap":!0,options:t.availableSubAdminGroups,placeholder:t.t("settings","Set account as admin for"),value:t.userSubAdminGroups},on:{search:t.searchGroups,"option:deselected":t.removeUserSubAdmin,"option:selected":e=>t.addUserSubAdmin(e.at(-1))}})]:t.isObfuscated?t._e():e("span",{attrs:{title:t.userSubAdminGroupsLabels?.length>40?t.userSubAdminGroupsLabels:null}},[t._v("\n\t\t\t"+t._s(t.userSubAdminGroupsLabels)+"\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.showFirstLogin?e("td",{staticClass:"row__cell",attrs:{"data-cy-user-list-cell-first-login":""}},[t.isObfuscated?t._e():e("span",[t._v(t._s(t.userFirstLogin))])]):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,disabled:t.isLoadingField,loading:t.loadingPossibleManagers||t.loading.manager,options:t.possibleManagers,placeholder:t.managerLabel,label:"displayname",filterable:!1,"internal-search":!1,clearable:!0},on:{open:t.searchInitialUserManager,search:t.searchUserManager,"update:model-value":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,"7faa9864",null);const wt=vt.exports,_t=Object.freeze({id:"",displayName:"",password:"",mailAddress:"",groups:[],manager:"",subAdminsGroups:[],quota:pt.MY,language:{code:"en",name:t("settings","Default language")}}),ft={name:"UserList",components:{Fragment:c.F,NcEmptyContent:u.A,NcIconSvgWrapper:g.A,NcLoadingIcon:A.A,NewUserDialog:H,UserListFooter:X,UserListHeader:tt,VirtualList:q},props:{selectedGroup:{type:String,default:null},externalActions:{type:Array,default:()=>[]}},setup:()=>({mdiAccountGroup:l.n7C,rowHeight:55,UserRow:wt}),data:()=>({loading:{all:!1,groups:!1,users:!1},newUser:{..._t},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,pt.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.getSortedGroups.filter((t=>"__nc_internal_recent"!==t.id&&"disabled"!==t.id))},quotaOptions(){const t=this.settings.quotaPreset.reduce(((t,e)=>t.concat({id:e,label:e})),[]);return this.settings.allowUnlimitedQuota&&t.unshift(pt.SA),t.unshift(pt.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){C.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,n.B1)("nextcloud:unified-search.search",this.search),(0,n.B1)("nextcloud:unified-search.reset",this.resetSearch),await this.redirectIfDisabled()},beforeDestroy(){(0,n.al)("nextcloud:unified-search.search",this.search),(0,n.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}),C.A.debug(`${this.users.length} total user(s) loaded`)}catch(t){C.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({},_t),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){if(t){const e=this.groups.find((e=>e.id===t));if(e)return void(this.newUser.groups=[e])}this.newUser.groups=[]}else{const t=this.$store.getters.getSubAdminGroups;1===t.length&&(this.newUser.groups=[...t])}},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 bt=a(79498),yt={};yt.styleTagTransform=L(),yt.setAttributes=k(),yt.insert=x().bind(null,"head"),yt.domAPI=b(),yt.insertStyleElement=G(),_()(bt.A,yt),bt.A&&bt.A.locals&&bt.A.locals;const xt=(0,I.A)(ft,(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,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,"1e8fee5a",null).exports,Nt=(0,r.pM)({name:"UserManagement",components:{NcAppContent:o.A,UserList:xt},data:()=>({externalActions:[]}),computed:{pageHeading(){return null===this.selectedGroupDecoded?(0,i.Tl)("settings","All accounts"):{admin:(0,i.Tl)("settings","Admins"),disabled:(0,i.Tl)("settings","Disabled accounts")}[this.selectedGroupDecoded]??(0,i.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.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,n.Ic)("settings:user-management:loaded")},methods:{t:i.Tl,registerAction(t,e,s,a){return this.externalActions.push({icon:t,text:e,action:s,enabled:a}),this.externalActions}}});var kt=a(82009),St={};St.styleTagTransform=L(),St.setAttributes=k(),St.insert=x().bind(null,"head"),St.domAPI=b(),St.insertStyleElement=G(),_()(kt.A,St),kt.A&&kt.A.locals&&kt.A.locals;const Gt=(0,I.A)(Nt,(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,"253f9eec",null).exports}}]);
+//# sourceMappingURL=settings-users-3239.js.map?v=d9db676f1e38fc8acfde \ No newline at end of file
diff --git a/dist/settings-users-3239.js.map b/dist/settings-users-3239.js.map
index 116555f72c0..e6262181111 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=0828a85406800581fcfe","mappings":"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","sources":["webpack:///nextcloud/apps/settings/src/components/Users/UserSettingsDialog.vue?vue&type=style&index=0&id=9f7a355c&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/Users/UserRow.vue?vue&type=style&index=0&id=7faa9864&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/VirtualList.vue?vue&type=style&index=0&id=21942da5&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/UserListHeader.vue?vue&type=style&index=0&id=5c0f8828&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/service/groups.ts","webpack:///nextcloud/apps/settings/src/views/UserManagementNavigation.vue?vue&type=style&index=0&id=edf83404&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/Users/NewUserDialog.vue?vue&type=style&index=0&id=70bbf4c9&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/views/UserManagementNavigation.vue","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?da91","webpack://nextcloud/./apps/settings/src/components/Users/UserSettingsDialog.vue?f361","webpack://nextcloud/./apps/settings/src/components/Users/UserSettingsDialog.vue?824e","webpack:///nextcloud/apps/settings/src/components/AppNavigationGroupList.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?2db5","webpack://nextcloud/./apps/settings/src/components/GroupListItem.vue?7b19","webpack://nextcloud/./apps/settings/src/components/GroupListItem.vue?9f48","webpack:///nextcloud/apps/settings/src/composables/useGroupsNavigation.ts","webpack:///nextcloud/apps/settings/src/components/AppNavigationGroupList.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/settings/src/components/AppNavigationGroupList.vue?c74f","webpack:///nextcloud/apps/settings/src/views/UserManagementNavigation.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/settings/src/views/UserManagementNavigation.vue?3dcd","webpack://nextcloud/./apps/settings/src/views/UserManagementNavigation.vue?28b6","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/index.mjs","webpack:///nextcloud/apps/settings/src/components/GroupListItem.vue?vue&type=style&index=0&id=161509be&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/UserList.vue?vue&type=style&index=0&id=1e8fee5a&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/views/UserManagement.vue?vue&type=style&index=0&id=253f9eec&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/UserListFooter.vue?vue&type=style&index=0&id=db2a7c4e&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/utils/userUtils.ts","webpack://nextcloud/./apps/settings/src/views/UserManagement.vue?4b28","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?7ade","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?9f19","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?b1db","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?e7ff","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","webpack:///nextcloud/apps/settings/src/components/Users/UserRowActions.vue?vue&type=script&lang=ts","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?d087","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?750d","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?c771","webpack://nextcloud/./apps/settings/src/views/UserManagement.vue?fd5a"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.dialog__note[data-v-9f7a355c]{font-weight:normal}fieldset[data-v-9f7a355c]{font-weight:bold}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/UserSettingsDialog.vue\"],\"names\":[],\"mappings\":\"AAEC,+BACC,kBAAA,CAIF,0BACC,gBAAA\",\"sourcesContent\":[\"\\n.dialog {\\n\\t&__note {\\n\\t\\tfont-weight: normal;\\n\\t}\\n}\\n\\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__row[data-v-7faa9864]{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-7faa9864]:hover{background-color:var(--color-background-hover)}.user-list__row:hover .row__cell[data-v-7faa9864]:not(.row__cell--actions){background-color:var(--color-background-hover)}.user-list__row .select--fill[data-v-7faa9864]{max-width:calc(var(--cell-width-large) - 2*var(--cell-padding))}.row__cell[data-v-7faa9864]{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-7faa9864],.row__cell span[data-v-7faa9864],.row__cell label[data-v-7faa9864]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.row__cell--avatar[data-v-7faa9864],.row__cell--displayname[data-v-7faa9864]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.row__cell--avatar[data-v-7faa9864]{inset-inline-start:0}.row__cell--displayname[data-v-7faa9864]{inset-inline-start:var(--avatar-cell-width);border-inline-end:1px solid var(--color-border)}}.row__cell--username[data-v-7faa9864]{padding-inline-start:calc(var(--default-grid-baseline)*3)}.row__cell--avatar[data-v-7faa9864]{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-7faa9864]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.row__cell--multiline span[data-v-7faa9864]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.row__cell--large[data-v-7faa9864]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.row__cell--obfuscated[data-v-7faa9864]{min-width:400px;width:400px}.row__cell--fill[data-v-7faa9864]{min-width:var(--cell-width-large);width:100%}.row__cell--actions[data-v-7faa9864]{position:sticky;inset-inline-end: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-inline-start:1px solid var(--color-border)}.row__subtitle[data-v-7faa9864]{color:var(--color-text-maxcontrast)}.row__cell[data-v-7faa9864]{border-bottom:1px solid var(--color-border)}.row__cell[data-v-7faa9864] .v-select.select{min-width:var(--cell-min-width)}.row__progress[data-v-7faa9864]{margin-top:4px}.row__progress--warn[data-v-7faa9864]::-moz-progress-bar{background:var(--color-warning) !important}.row__progress--warn[data-v-7faa9864]::-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,oBAAA,CAGD,yCACC,2CAAA,CACA,+CAAA,CAAA,CAIF,sCACC,yDAAA,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,kBAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,iDAAA,CAIF,gCACC,mCAAA,CDpFD,4BACC,2CAAA,CAGC,6CACC,+BAAA,CAKH,gCACC,cAAA,CAGC,yDACC,0CAAA,CAED,8DACC,0CAAA\",\"sourcesContent\":[\"\\n@use './shared/styles';\\n\\n.user-list__row {\\n\\t@include styles.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 styles.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\\tinset-inline-start: 0;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tinset-inline-start: var(--avatar-cell-width);\\n\\t\\t\\t\\tborder-inline-end: 1px solid var(--color-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--username {\\n\\t\\t\\tpadding-inline-start: 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\\tinset-inline-end: 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-inline-start: 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[data-v-21942da5]{--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-21942da5],.user-list__footer[data-v-21942da5]{position:sticky;display:block}.user-list__header[data-v-21942da5]{top:0;z-index:calc(var(--sticky-column-z-index) + 1)}.user-list__footer[data-v-21942da5]{inset-inline-start:0}.user-list__body[data-v-21942da5]{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,oBAAA,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\\tinset-inline-start: 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, `.header[data-v-5c0f8828]{border-bottom:1px solid var(--color-border);position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.header__cell[data-v-5c0f8828]{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-5c0f8828],.header__cell span[data-v-5c0f8828],.header__cell label[data-v-5c0f8828]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.header__cell--avatar[data-v-5c0f8828],.header__cell--displayname[data-v-5c0f8828]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.header__cell--avatar[data-v-5c0f8828]{inset-inline-start:0}.header__cell--displayname[data-v-5c0f8828]{inset-inline-start:var(--avatar-cell-width);border-inline-end:1px solid var(--color-border)}}.header__cell--username[data-v-5c0f8828]{padding-inline-start:calc(var(--default-grid-baseline)*3)}.header__cell--avatar[data-v-5c0f8828]{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-5c0f8828]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.header__cell--multiline span[data-v-5c0f8828]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.header__cell--large[data-v-5c0f8828]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.header__cell--obfuscated[data-v-5c0f8828]{min-width:400px;width:400px}.header__cell--fill[data-v-5c0f8828]{min-width:var(--cell-width-large);width:100%}.header__cell--actions[data-v-5c0f8828]{position:sticky;inset-inline-end: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-inline-start:1px solid var(--color-border)}.header__subtitle[data-v-5c0f8828]{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,yBACC,2CAAA,CCEA,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,oBAAA,CAGD,4CACC,2CAAA,CACA,+CAAA,CAAA,CAIF,yCACC,yDAAA,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,kBAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,iDAAA,CAIF,mCACC,mCAAA\",\"sourcesContent\":[\"\\n@use './shared/styles';\\n\\n.header {\\n\\tborder-bottom: 1px solid var(--color-border);\\n\\n\\t@include styles.row;\\n\\t@include styles.cell;\\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\\tinset-inline-start: 0;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tinset-inline-start: var(--avatar-cell-width);\\n\\t\\t\\t\\tborder-inline-end: 1px solid var(--color-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--username {\\n\\t\\t\\tpadding-inline-start: 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\\tinset-inline-end: 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-inline-start: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t&__subtitle {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport axios from '@nextcloud/axios';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { CancelablePromise } from 'cancelable-promise';\nconst formatGroup = (group) => ({\n id: group.id,\n name: group.displayname,\n usercount: group.usercount,\n disabled: group.disabled,\n canAdd: group.canAdd,\n canRemove: group.canRemove,\n});\n/**\n * Search groups\n *\n * @param {object} options Options\n * @param {string} options.search Search query\n * @param {number} options.offset Offset\n * @param {number} options.limit Limit\n */\nexport const searchGroups = ({ search, offset, limit }) => {\n const controller = new AbortController();\n return new CancelablePromise(async (resolve, reject, onCancel) => {\n onCancel(() => controller.abort());\n try {\n const { data } = await axios.get(generateOcsUrl('/cloud/groups/details?search={search}&offset={offset}&limit={limit}', { search, offset, limit }), {\n signal: controller.signal,\n });\n const groups = data.ocs?.data?.groups ?? [];\n const formattedGroups = groups.map(formatGroup);\n resolve(formattedGroups);\n }\n catch (error) {\n reject(error);\n }\n });\n};\n/**\n * Load user groups\n *\n * @param {object} options Options\n * @param {string} options.userId User id\n */\nexport const loadUserGroups = async ({ userId }) => {\n const url = generateOcsUrl('/cloud/users/{userId}/groups/details', { userId });\n const { data } = await axios.get(url);\n const groups = data.ocs?.data?.groups ?? [];\n const formattedGroups = groups.map(formatGroup);\n return formattedGroups;\n};\n/**\n * Load user subadmin groups\n *\n * @param {object} options Options\n * @param {string} options.userId User id\n */\nexport const loadUserSubAdminGroups = async ({ userId }) => {\n const url = generateOcsUrl('/cloud/users/{userId}/subadmins/details', { userId });\n const { data } = await axios.get(url);\n const groups = data.ocs?.data?.groups ?? [];\n const formattedGroups = groups.map(formatGroup);\n return formattedGroups;\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, `.account-management__navigation[data-v-edf83404] .app-navigation__body{will-change:scroll-position}.account-management__system-list[data-v-edf83404]{height:auto !important;overflow:visible !important}.account-management__group-list[data-v-edf83404]{height:100% !important}.account-management__settings-toggle[data-v-edf83404]{margin-bottom:12px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/views/UserManagementNavigation.vue\"],\"names\":[],\"mappings\":\"AAGE,uEACC,2BAAA,CAGF,kDACC,sBAAA,CACA,2BAAA,CAGD,iDACC,sBAAA,CAGD,sDACC,kBAAA\",\"sourcesContent\":[\"\\n.account-management {\\n\\t&__navigation {\\n\\t\\t:deep(.app-navigation__body) {\\n\\t\\t\\twill-change: scroll-position;\\n\\t\\t}\\n\\t}\\n\\t&__system-list {\\n\\t\\theight: auto !important;\\n\\t\\toverflow: visible !important;\\n\\t}\\n\\n\\t&__group-list {\\n\\t\\theight: 100% !important;\\n\\t}\\n\\n\\t&__settings-toggle {\\n\\t\\tmargin-bottom: 12px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.dialog__form[data-v-70bbf4c9]{display:flex;flex-direction:column;align-items:center;padding:0 8px;gap:4px 0}.dialog__item[data-v-70bbf4c9]{width:100%}.dialog__item[data-v-70bbf4c9]:not(:focus):not(:active){border-color:var(--color-border-dark)}.dialog__hint[data-v-70bbf4c9]{color:var(--color-text-maxcontrast);margin-top:8px;align-self:flex-start}.dialog__label[data-v-70bbf4c9]{display:block;padding:4px 0}.dialog__select[data-v-70bbf4c9]{width:100%}.dialog__managers[data-v-70bbf4c9]{margin-bottom:12px}.dialog__submit[data-v-70bbf4c9]{margin-top:4px;margin-bottom:8px}.dialog[data-v-70bbf4c9] .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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppNavigation,{staticClass:\"account-management__navigation\",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.AppNavigationGroupList)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<NcAppSettingsDialog :open.sync=\"isModalOpen\"\n\t\t:show-navigation=\"true\"\n\t\t:name=\"t('settings', 'Account management settings')\">\n\t\t<NcAppSettingsSection id=\"visibility-settings\"\n\t\t\t:name=\"t('settings', 'Visibility')\">\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\tdata-test=\"showLanguages\"\n\t\t\t\t:checked.sync=\"showLanguages\">\n\t\t\t\t{{ t('settings', 'Show language') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\tdata-test=\"showUserBackend\"\n\t\t\t\t:checked.sync=\"showUserBackend\">\n\t\t\t\t{{ t('settings', 'Show account backend') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\tdata-test=\"showStoragePath\"\n\t\t\t\t:checked.sync=\"showStoragePath\">\n\t\t\t\t{{ t('settings', 'Show storage path') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\tdata-test=\"showFirstLogin\"\n\t\t\t\t:checked.sync=\"showFirstLogin\">\n\t\t\t\t{{ t('settings', 'Show first login') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\tdata-test=\"showLastLogin\"\n\t\t\t\t:checked.sync=\"showLastLogin\">\n\t\t\t\t{{ t('settings', 'Show last login') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</NcAppSettingsSection>\n\n\t\t<NcAppSettingsSection id=\"groups-sorting\"\n\t\t\t:name=\"t('settings', 'Sorting')\">\n\t\t\t<NcNoteCard v-if=\"isGroupSortingEnforced\" type=\"warning\">\n\t\t\t\t{{ t('settings', 'The system config enforces sorting the groups by name. This also disables showing the member count.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<fieldset>\n\t\t\t\t<legend>{{ t('settings', 'Group list sorting') }}</legend>\n\t\t\t\t<NcNoteCard class=\"dialog__note\"\n\t\t\t\t\ttype=\"info\"\n\t\t\t\t\t:text=\"t('settings', 'Sorting only applies to the currently loaded groups for performance reasons. Groups will be loaded as you navigate or search through the list.')\" />\n\t\t\t\t<NcCheckboxRadioSwitch type=\"radio\"\n\t\t\t\t\t:checked.sync=\"groupSorting\"\n\t\t\t\t\tdata-test=\"sortGroupsByMemberCount\"\n\t\t\t\t\t:disabled=\"isGroupSortingEnforced\"\n\t\t\t\t\tname=\"group-sorting-mode\"\n\t\t\t\t\tvalue=\"member-count\">\n\t\t\t\t\t{{ t('settings', 'By member count') }}\n\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t<NcCheckboxRadioSwitch type=\"radio\"\n\t\t\t\t\t:checked.sync=\"groupSorting\"\n\t\t\t\t\tdata-test=\"sortGroupsByName\"\n\t\t\t\t\t:disabled=\"isGroupSortingEnforced\"\n\t\t\t\t\tname=\"group-sorting-mode\"\n\t\t\t\t\tvalue=\"name\">\n\t\t\t\t\t{{ t('settings', 'By name') }}\n\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t</fieldset>\n\t\t</NcAppSettingsSection>\n\n\t\t<NcAppSettingsSection id=\"email-settings\"\n\t\t\t:name=\"t('settings', 'Send email')\">\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\tdata-test=\"sendWelcomeMail\"\n\t\t\t\t:checked.sync=\"sendWelcomeMail\"\n\t\t\t\t:disabled=\"loadingSendMail\">\n\t\t\t\t{{ t('settings', 'Send welcome email to new accounts') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</NcAppSettingsSection>\n\n\t\t<NcAppSettingsSection id=\"default-settings\"\n\t\t\t:name=\"t('settings', 'Defaults')\">\n\t\t\t<NcSelect v-model=\"defaultQuota\"\n\t\t\t\t:clearable=\"false\"\n\t\t\t\t:create-option=\"validateQuota\"\n\t\t\t\t:filter-by=\"filterQuotas\"\n\t\t\t\t:input-label=\"t('settings', 'Default quota')\"\n\t\t\t\t:options=\"quotaOptions\"\n\t\t\t\tplacement=\"top\"\n\t\t\t\t:placeholder=\"t('settings', 'Select default quota')\"\n\t\t\t\ttaggable\n\t\t\t\t@option:selected=\"setDefaultQuota\" />\n\t\t</NcAppSettingsSection>\n\t</NcAppSettingsDialog>\n</template>\n\n<script>\nimport { formatFileSize, parseFileSize } from '@nextcloud/files'\nimport { generateUrl } from '@nextcloud/router'\n\nimport axios from '@nextcloud/axios'\nimport NcAppSettingsDialog from '@nextcloud/vue/components/NcAppSettingsDialog'\nimport NcAppSettingsSection from '@nextcloud/vue/components/NcAppSettingsSection'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/components/NcCheckboxRadioSwitch'\nimport NcNoteCard from '@nextcloud/vue/components/NcNoteCard'\nimport NcSelect from '@nextcloud/vue/components/NcSelect'\n\nimport { GroupSorting } from '../../constants/GroupManagement.ts'\nimport { unlimitedQuota } from '../../utils/userUtils.ts'\nimport logger from '../../logger.ts'\n\nexport default {\n\tname: 'UserSettingsDialog',\n\n\tcomponents: {\n\t\tNcAppSettingsDialog,\n\t\tNcAppSettingsSection,\n\t\tNcCheckboxRadioSwitch,\n\t\tNcNoteCard,\n\t\tNcSelect,\n\t},\n\n\tprops: {\n\t\topen: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tselectedQuota: false,\n\t\t\tloadingSendMail: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tgroupSorting: {\n\t\t\tget() {\n\t\t\t\treturn this.$store.getters.getGroupSorting === GroupSorting.GroupName ? 'name' : 'member-count'\n\t\t\t},\n\t\t\tset(sorting) {\n\t\t\t\tthis.$store.commit('setGroupSorting', sorting === 'name' ? GroupSorting.GroupName : GroupSorting.UserCount)\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Admin has configured `sort_groups_by_name` in the system config\n\t\t */\n\t\tisGroupSortingEnforced() {\n\t\t\treturn this.$store.getters.getServerData.forceSortGroupByName\n\t\t},\n\n\t\tisModalOpen: {\n\t\t\tget() {\n\t\t\t\treturn this.open\n\t\t\t},\n\t\t\tset(open) {\n\t\t\t\tthis.$emit('update:open', open)\n\t\t\t},\n\t\t},\n\n\t\tshowConfig() {\n\t\t\treturn this.$store.getters.getShowConfig\n\t\t},\n\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData\n\t\t},\n\n\t\tshowLanguages: {\n\t\t\tget() {\n\t\t\t\treturn this.showConfig.showLanguages\n\t\t\t},\n\t\t\tset(status) {\n\t\t\t\tthis.setShowConfig('showLanguages', status)\n\t\t\t},\n\t\t},\n\n\t\tshowFirstLogin: {\n\t\t\tget() {\n\t\t\t\treturn this.showConfig.showFirstLogin\n\t\t\t},\n\t\t\tset(status) {\n\t\t\t\tthis.setShowConfig('showFirstLogin', status)\n\t\t\t},\n\t\t},\n\n\t\tshowLastLogin: {\n\t\t\tget() {\n\t\t\t\treturn this.showConfig.showLastLogin\n\t\t\t},\n\t\t\tset(status) {\n\t\t\t\tthis.setShowConfig('showLastLogin', status)\n\t\t\t},\n\t\t},\n\n\t\tshowUserBackend: {\n\t\t\tget() {\n\t\t\t\treturn this.showConfig.showUserBackend\n\t\t\t},\n\t\t\tset(status) {\n\t\t\t\tthis.setShowConfig('showUserBackend', status)\n\t\t\t},\n\t\t},\n\n\t\tshowStoragePath: {\n\t\t\tget() {\n\t\t\t\treturn this.showConfig.showStoragePath\n\t\t\t},\n\t\t\tset(status) {\n\t\t\t\tthis.setShowConfig('showStoragePath', status)\n\t\t\t},\n\t\t},\n\n\t\tquotaOptions() {\n\t\t\t// convert the preset array into objects\n\t\t\tconst quotaPreset = this.settings.quotaPreset.reduce((acc, cur) => acc.concat({ id: cur, label: cur }), [])\n\t\t\t// add default presets\n\t\t\tif (this.settings.allowUnlimitedQuota) {\n\t\t\t\tquotaPreset.unshift(unlimitedQuota)\n\t\t\t}\n\t\t\treturn quotaPreset\n\t\t},\n\n\t\tdefaultQuota: {\n\t\t\tget() {\n\t\t\t\tif (this.selectedQuota !== false) {\n\t\t\t\t\treturn this.selectedQuota\n\t\t\t\t}\n\t\t\t\tif (this.settings.defaultQuota !== unlimitedQuota.id && OC.Util.computerFileSize(this.settings.defaultQuota) >= 0) {\n\t\t\t\t\t// if value is valid, let's map the quotaOptions or return custom quota\n\t\t\t\t\treturn { id: this.settings.defaultQuota, label: this.settings.defaultQuota }\n\t\t\t\t}\n\t\t\t\treturn unlimitedQuota // unlimited\n\t\t\t},\n\t\t\tset(quota) {\n\t\t\t\tthis.selectedQuota = quota\n\t\t\t},\n\t\t},\n\n\t\tsendWelcomeMail: {\n\t\t\tget() {\n\t\t\t\treturn this.settings.newUserSendEmail\n\t\t\t},\n\t\t\tasync set(value) {\n\t\t\t\ttry {\n\t\t\t\t\tthis.loadingSendMail = true\n\t\t\t\t\tthis.$store.commit('setServerData', {\n\t\t\t\t\t\t...this.settings,\n\t\t\t\t\t\tnewUserSendEmail: value,\n\t\t\t\t\t})\n\t\t\t\t\tawait axios.post(generateUrl('/settings/users/preferences/newUser.sendEmail'), { value: value ? 'yes' : 'no' })\n\t\t\t\t} catch (error) {\n\t\t\t\t\tlogger.error('Could not update newUser.sendEmail preference', { error })\n\t\t\t\t} finally {\n\t\t\t\t\tthis.loadingSendMail = false\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Check if a quota matches the current search.\n\t\t * This is a custom filter function to allow to map \"1GB\" to the label \"1 GB\" (ignoring whitespaces).\n\t\t *\n\t\t * @param option The quota to check\n\t\t * @param label The label of the quota\n\t\t * @param search The search string\n\t\t */\n\t\tfilterQuotas(option, label, search) {\n\t\t\tconst searchValue = search.toLocaleLowerCase().replaceAll(/\\s/g, '')\n\t\t\treturn (label || '')\n\t\t\t\t.toLocaleLowerCase()\n\t\t\t\t.replaceAll(/\\s/g, '')\n\t\t\t\t.indexOf(searchValue) > -1\n\t\t},\n\n\t\tsetShowConfig(key, status) {\n\t\t\tthis.$store.commit('setShowConfig', { key, value: status })\n\t\t},\n\n\t\t/**\n\t\t * Validate quota string to make sure it's a valid human file size\n\t\t *\n\t\t * @param {string | object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}\n\t\t * @return {object} The validated quota object or unlimited quota if input is invalid\n\t\t */\n\t\tvalidateQuota(quota) {\n\t\t\tif (typeof quota === 'object') {\n\t\t\t\tquota = quota?.id || quota.label\n\t\t\t}\n\t\t\t// only used for new presets sent through @Tag\n\t\t\tconst validQuota = parseFileSize(quota, true)\n\t\t\tif (validQuota === null) {\n\t\t\t\treturn unlimitedQuota\n\t\t\t}\n\t\t\t// unify format output\n\t\t\tquota = formatFileSize(validQuota)\n\t\t\treturn { id: quota, label: quota }\n\t\t},\n\n\t\t/**\n\t\t * Dispatch default quota set request\n\t\t *\n\t\t * @param {string | object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}\n\t\t */\n\t\tsetDefaultQuota(quota = 'none') {\n\t\t\t// Make sure correct label is set for unlimited quota\n\t\t\tif (quota === 'none') {\n\t\t\t\tquota = unlimitedQuota\n\t\t\t}\n\t\t\tthis.$store.dispatch('setAppConfig', {\n\t\t\t\tapp: 'files',\n\t\t\t\tkey: 'default_quota',\n\t\t\t\t// ensure we only send the preset id\n\t\t\t\tvalue: quota.id ? quota.id : quota,\n\t\t\t}).then(() => {\n\t\t\t\tif (typeof quota !== 'object') {\n\t\t\t\t\tquota = { id: quota, label: quota }\n\t\t\t\t}\n\t\t\t\tthis.defaultQuota = quota\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.dialog {\n\t&__note {\n\t\tfont-weight: normal;\n\t}\n}\n\nfieldset {\n\tfont-weight: bold;\n}\n</style>\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=9f7a355c&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserSettingsDialog.vue?vue&type=style&index=0&id=9f7a355c&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=9f7a355c&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=9f7a355c&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 \"9f7a355c\",\n null\n \n)\n\nexport default component.exports","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\":\"showFirstLogin\",\"checked\":_vm.showFirstLogin},on:{\"update:checked\":function($event){_vm.showFirstLogin=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show first login'))+\"\\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('NcNoteCard',{staticClass:\"dialog__note\",attrs:{\"type\":\"info\",\"text\":_vm.t('settings', 'Sorting only applies to the currently loaded groups for performance reasons. Groups will be loaded as you navigate or search through the list.')}}),_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 }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.Fragment,[_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.NcAppNavigationSearch,{attrs:{\"label\":_setup.t('settings', 'Search groups…')},model:{value:(_setup.groupsSearchQuery),callback:function ($$v) {_setup.groupsSearchQuery=$$v},expression:\"groupsSearchQuery\"}}),_vm._v(\" \"),_c('p',{staticClass:\"hidden-visually\",attrs:{\"id\":\"group-list-desc\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_setup.t('settings', 'List of groups. This list is not fully populated for performance reasons. The groups will be loaded as you navigate or search through the list.'))+\"\\n\\t\")]),_vm._v(\" \"),_c(_setup.NcAppNavigationList,{staticClass:\"account-management__group-list\",attrs:{\"aria-describedby\":\"group-list-desc\",\"data-cy-users-settings-navigation-groups\":\"custom\"}},[_vm._l((_setup.userGroups),function(group){return _c(_setup.GroupListItem,{key:group.id,ref:\"groupListItems\",refInFor:true,attrs:{\"id\":group.id,\"active\":_setup.selectedGroupDecoded === group.id,\"name\":group.title,\"count\":group.count}})}),_vm._v(\" \"),(_setup.loadingGroups)?_c('div',{attrs:{\"role\":\"note\"}},[_c(_setup.NcLoadingIcon,{attrs:{\"name\":_setup.t('settings', 'Loading groups…')}})],1):_vm._e()],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<Fragment>\n\t\t<NcModal v-if=\"showRemoveGroupModal\"\n\t\t\t@close=\"showRemoveGroupModal = false\">\n\t\t\t<div class=\"modal__content\">\n\t\t\t\t<h2 class=\"modal__header\">\n\t\t\t\t\t{{ t('settings', 'Please confirm the group removal') }}\n\t\t\t\t</h2>\n\t\t\t\t<NcNoteCard type=\"warning\"\n\t\t\t\t\tshow-alert>\n\t\t\t\t\t{{ t('settings', 'You are about to remove the group \"{group}\". The accounts will NOT be deleted.', { group: name }) }}\n\t\t\t\t</NcNoteCard>\n\t\t\t\t<div class=\"modal__button-row\">\n\t\t\t\t\t<NcButton type=\"secondary\"\n\t\t\t\t\t\t@click=\"showRemoveGroupModal = false\">\n\t\t\t\t\t\t{{ t('settings', 'Cancel') }}\n\t\t\t\t\t</NcButton>\n\t\t\t\t\t<NcButton type=\"primary\"\n\t\t\t\t\t\t@click=\"removeGroup\">\n\t\t\t\t\t\t{{ t('settings', 'Confirm') }}\n\t\t\t\t\t</NcButton>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</NcModal>\n\n\t\t<NcAppNavigationItem :key=\"id\"\n\t\t\tref=\"listItem\"\n\t\t\t:exact=\"true\"\n\t\t\t:name=\"name\"\n\t\t\t:to=\"{ name: 'group', params: { selectedGroup: encodeURIComponent(id) } }\"\n\t\t\t:loading=\"loadingRenameGroup\"\n\t\t\t:menu-open=\"openGroupMenu\"\n\t\t\t@update:menuOpen=\"handleGroupMenuOpen\">\n\t\t\t<template #icon>\n\t\t\t\t<AccountGroup :size=\"20\" />\n\t\t\t</template>\n\t\t\t<template #counter>\n\t\t\t\t<NcCounterBubble v-if=\"count\"\n\t\t\t\t\t:type=\"active ? 'highlighted' : undefined\">\n\t\t\t\t\t{{ count }}\n\t\t\t\t</NcCounterBubble>\n\t\t\t</template>\n\t\t\t<template #actions>\n\t\t\t\t<NcActionInput v-if=\"id !== 'admin' && id !== 'disabled' && (settings.isAdmin || settings.isDelegatedAdmin)\"\n\t\t\t\t\tref=\"displayNameInput\"\n\t\t\t\t\t:trailing-button-label=\"t('settings', 'Submit')\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t:value=\"name\"\n\t\t\t\t\t:label=\" t('settings', 'Rename group')\"\n\t\t\t\t\t@submit=\"renameGroup(id)\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<Pencil :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t</NcActionInput>\n\t\t\t\t<NcActionButton v-if=\"id !== 'admin' && id !== 'disabled' && (settings.isAdmin || settings.isDelegatedAdmin)\"\n\t\t\t\t\t@click=\"showRemoveGroupModal = true\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<Delete :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('settings', 'Remove group') }}\n\t\t\t\t</NcActionButton>\n\t\t\t</template>\n\t\t</NcAppNavigationItem>\n\t</Fragment>\n</template>\n\n<script>\nimport { Fragment } from 'vue-frag'\n\nimport NcActionButton from '@nextcloud/vue/components/NcActionButton'\nimport NcActionInput from '@nextcloud/vue/components/NcActionInput'\nimport NcAppNavigationItem from '@nextcloud/vue/components/NcAppNavigationItem'\nimport NcButton from '@nextcloud/vue/components/NcButton'\nimport NcCounterBubble from '@nextcloud/vue/components/NcCounterBubble'\nimport NcModal from '@nextcloud/vue/components/NcModal'\nimport NcNoteCard from '@nextcloud/vue/components/NcNoteCard'\n\nimport AccountGroup from 'vue-material-design-icons/AccountGroup.vue'\nimport Delete from 'vue-material-design-icons/Delete.vue'\nimport Pencil from 'vue-material-design-icons/Pencil.vue'\n\nimport { showError } from '@nextcloud/dialogs'\n\nexport default {\n\tname: 'GroupListItem',\n\tcomponents: {\n\t\tAccountGroup,\n\t\tDelete,\n\t\tFragment,\n\t\tNcActionButton,\n\t\tNcActionInput,\n\t\tNcAppNavigationItem,\n\t\tNcButton,\n\t\tNcCounterBubble,\n\t\tNcModal,\n\t\tNcNoteCard,\n\t\tPencil,\n\t},\n\tprops: {\n\t\t/**\n\t\t * If this group is currently selected\n\t\t */\n\t\tactive: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\t/**\n\t\t * Number of members within this group\n\t\t */\n\t\tcount: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * Identifier of this group\n\t\t */\n\t\tid: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\t/**\n\t\t * Name of this group\n\t\t */\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tloadingRenameGroup: false,\n\t\t\topenGroupMenu: false,\n\t\t\tshowRemoveGroupModal: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData\n\t\t},\n\t},\n\tmethods: {\n\t\thandleGroupMenuOpen() {\n\t\t\tthis.openGroupMenu = true\n\t\t},\n\t\tasync renameGroup(gid) {\n\t\t\t// check if group id is valid\n\t\t\tif (gid.trim() === '') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst displayName = this.$refs.displayNameInput.$el.querySelector('input[type=\"text\"]').value\n\n\t\t\t// check if group name is valid\n\t\t\tif (displayName.trim() === '') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tthis.openGroupMenu = false\n\t\t\t\tthis.loadingRenameGroup = true\n\t\t\t\tawait this.$store.dispatch('renameGroup', {\n\t\t\t\t\tgroupid: gid.trim(),\n\t\t\t\t\tdisplayName: displayName.trim(),\n\t\t\t\t})\n\n\t\t\t\tthis.loadingRenameGroup = false\n\t\t\t} catch {\n\t\t\t\tthis.openGroupMenu = true\n\t\t\t\tthis.loadingRenameGroup = false\n\t\t\t}\n\t\t},\n\t\tasync removeGroup() {\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('removeGroup', this.id)\n\t\t\t\tthis.showRemoveGroupModal = false\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('settings', 'Failed to remove group \"{group}\"', { group: this.name }))\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\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</style>\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=161509be&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupListItem.vue?vue&type=style&index=0&id=161509be&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=161509be&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=161509be&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 \"161509be\",\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,ref:\"listItem\",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 }","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!./AppNavigationGroupList.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!./AppNavigationGroupList.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./AppNavigationGroupList.vue?vue&type=template&id=2057c7ae\"\nimport script from \"./AppNavigationGroupList.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppNavigationGroupList.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 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=edf83404&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserManagementNavigation.vue?vue&type=style&index=0&id=edf83404&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=edf83404&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=edf83404&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 \"edf83404\",\n null\n \n)\n\nexport default component.exports","import { N as NcActionButton } from \"./chunks/NcActionButton-Gpv56vuS.mjs\";\nimport { N as NcActionButtonGroup } from \"./chunks/NcActionButtonGroup-BteTNhIn.mjs\";\nimport NcActionCaption from \"./Components/NcActionCaption.mjs\";\nimport { N as NcActionCheckbox } from \"./chunks/NcActionCheckbox-DSMKeccY.mjs\";\nimport { N as NcActionInput } from \"./chunks/NcActionInput-QO_UKY2v.mjs\";\nimport NcActionLink from \"./Components/NcActionLink.mjs\";\nimport { N as NcActionRadio } from \"./chunks/NcActionRadio-yAm71xxU.mjs\";\nimport NcActionRouter from \"./Components/NcActionRouter.mjs\";\nimport { N as NcActions } from \"./chunks/NcActions-CucWK-m-.mjs\";\nimport NcActionSeparator from \"./Components/NcActionSeparator.mjs\";\nimport NcActionText from \"./Components/NcActionText.mjs\";\nimport { N as NcActionTextEditable } from \"./chunks/NcActionTextEditable-BYqqHPj2.mjs\";\nimport { N as NcAppContent } from \"./chunks/NcAppContent-_x1Bvwg-.mjs\";\nimport NcAppContentDetails from \"./Components/NcAppContentDetails.mjs\";\nimport NcAppContentList from \"./Components/NcAppContentList.mjs\";\nimport { N as NcAppNavigation } from \"./chunks/NcAppNavigation-H8Gvbq5E.mjs\";\nimport { N as NcAppNavigationCaption } from \"./chunks/NcAppNavigationCaption-C0Fkd9G7.mjs\";\nimport NcAppNavigationIconBullet from \"./Components/NcAppNavigationIconBullet.mjs\";\nimport { N as NcAppNavigationItem } from \"./chunks/NcAppNavigationItem-CDut0DWY.mjs\";\nimport NcAppNavigationList from \"./Components/NcAppNavigationList.mjs\";\nimport NcAppNavigationNew from \"./Components/NcAppNavigationNew.mjs\";\nimport { N as NcAppNavigationNewItem } from \"./chunks/NcAppNavigationNewItem-DGjgp78o.mjs\";\nimport { N as NcAppNavigationSearch } from \"./chunks/NcAppNavigationSearch-DTW6CtnU.mjs\";\nimport { N as NcAppNavigationSettings } from \"./chunks/NcAppNavigationSettings-C0QuEMmn.mjs\";\nimport NcAppNavigationSpacer from \"./Components/NcAppNavigationSpacer.mjs\";\nimport { N as NcAppSettingsDialog } from \"./chunks/NcAppSettingsDialog-Dl-kMSpe.mjs\";\nimport NcAppSettingsSection from \"./Components/NcAppSettingsSection.mjs\";\nimport { N as NcAppSidebar } from \"./chunks/NcAppSidebar-C5fqF8Ll.mjs\";\nimport NcAppSidebarTab from \"./Components/NcAppSidebarTab.mjs\";\nimport { N as NcAvatar } from \"./chunks/NcAvatar-Db8tkJt9.mjs\";\nimport { u } from \"./chunks/NcAvatar-Db8tkJt9.mjs\";\nimport { N as NcBlurHash } from \"./chunks/NcBlurHash-do2wxY-0.mjs\";\nimport { N as NcBreadcrumb } from \"./chunks/NcBreadcrumb-CuKf9Utm.mjs\";\nimport { N as NcBreadcrumbs } from \"./chunks/NcBreadcrumbs-DR2_1tNR.mjs\";\nimport NcButton from \"./Components/NcButton.mjs\";\nimport { N as NcCheckboxRadioSwitch } from \"./chunks/NcCheckboxRadioSwitch-Di9rSADK.mjs\";\nimport { N as NcCollectionList } from \"./chunks/NcCollectionList-N169E0Rf.mjs\";\nimport { N as NcColorPicker } from \"./chunks/NcColorPicker-BzSsZRm3.mjs\";\nimport { N as NcContent } from \"./chunks/NcContent-BHl5YDYI.mjs\";\nimport { N as NcCounterBubble } from \"./chunks/NcCounterBubble-CDfRYl8B.mjs\";\nimport { N as NcDashboardWidget } from \"./chunks/NcDashboardWidget-DwWee7mc.mjs\";\nimport { N as NcDashboardWidgetItem } from \"./chunks/NcDashboardWidgetItem-Csgi1gF2.mjs\";\nimport { N as NcDateTime } from \"./chunks/NcDateTime-BR6BBvML.mjs\";\nimport { u as u2 } from \"./chunks/NcDateTime-BR6BBvML.mjs\";\nimport NcDateTimePicker from \"./Components/NcDateTimePicker.mjs\";\nimport NcDateTimePickerNative from \"./Components/NcDateTimePickerNative.mjs\";\nimport { N as NcDialog } from \"./chunks/NcDialog-D2lwwZL-.mjs\";\nimport { N as NcDialogButton } from \"./chunks/NcDialogButton-BB56HcBl.mjs\";\nimport NcEllipsisedOption from \"./Components/NcEllipsisedOption.mjs\";\nimport { N as NcEmojiPicker } from \"./chunks/NcEmojiPicker-DyBFXXm7.mjs\";\nimport NcEmptyContent from \"./Components/NcEmptyContent.mjs\";\nimport NcGuestContent from \"./Components/NcGuestContent.mjs\";\nimport NcHeaderButton from \"./Components/NcHeaderButton.mjs\";\nimport { N as NcHeaderMenu } from \"./chunks/NcHeaderMenu-Bc1ucNsv.mjs\";\nimport { N as NcHighlight } from \"./chunks/index-Bz6q9mZw.mjs\";\nimport { N as NcIconSvgWrapper } from \"./chunks/NcIconSvgWrapper-RKuZn260.mjs\";\nimport { N as NcInputField } from \"./chunks/NcInputField-DTtUueUZ.mjs\";\nimport { N as NcListItem } from \"./chunks/NcListItem-BGoyHTZy.mjs\";\nimport { N as NcListItemIcon } from \"./chunks/NcListItemIcon-BG5v_qys.mjs\";\nimport NcLoadingIcon from \"./Components/NcLoadingIcon.mjs\";\nimport NcModal from \"./Components/NcModal.mjs\";\nimport NcNoteCard from \"./Components/NcNoteCard.mjs\";\nimport { N as NcPasswordField } from \"./chunks/NcPasswordField-CTKHRVC4.mjs\";\nimport { N as NcPopover } from \"./chunks/NcPopover-m0hDmALa.mjs\";\nimport { N as NcProgressBar } from \"./chunks/NcProgressBar-DegJ2JjE.mjs\";\nimport { N as NcRelatedResourcesPanel } from \"./chunks/NcRelatedResourcesPanel-CmiW_ds0.mjs\";\nimport { N as NcMentionBubble } from \"./chunks/index-G8WQDZ8G.mjs\";\nimport { r } from \"./chunks/index-G8WQDZ8G.mjs\";\nimport { N as NcAutoCompleteResult, a as NcRichContenteditable } from \"./chunks/NcRichContenteditable-CE1hvtcT.mjs\";\nimport { N as NcRichText } from \"./chunks/NcRichText-D6qJ5S5v.mjs\";\nimport { N, h, d, i, b, r as r2, c, a } from \"./chunks/index-56SXuvlv.mjs\";\nimport \"@vueuse/core\";\nimport \"vue\";\nimport \"vue-router\";\nimport { a as a2, g, b as b2, c as c2, d as d2, s } from \"./chunks/referencePickerModal-CMKHbYwz.mjs\";\nimport \"unist-util-visit\";\nimport \"unist-builder\";\nimport \"@nextcloud/router\";\nimport \"@nextcloud/axios\";\nimport \"@nextcloud/sharing/public\";\nimport \"@nextcloud/auth\";\nimport { N as NcSelect } from \"./chunks/NcSelect-TmGBPLzc.mjs\";\nimport { N as NcTextField } from \"./chunks/NcTextField-DRANdaIf.mjs\";\nimport \"@nextcloud/event-bus\";\nimport { N as NcSavingIndicatorIcon } from \"./chunks/NcSavingIndicatorIcon-nv1147dk.mjs\";\nimport { N as NcSelectTags } from \"./chunks/NcSelectTags-li-HYR2n.mjs\";\nimport { N as NcSelectUsers } from \"./chunks/NcSelectUsers-BQO_sQJ8.mjs\";\nimport { N as NcSettingsInputText } from \"./chunks/NcSettingsInputText-t1FMnLKA.mjs\";\nimport { N as NcSettingsSection } from \"./chunks/NcSettingsSection-EC3SmiDX.mjs\";\nimport { N as NcSettingsSelectGroup } from \"./chunks/NcSettingsSelectGroup-dzvfki-M.mjs\";\nimport { N as NcTextArea } from \"./chunks/NcTextArea-BHERsE_g.mjs\";\nimport { N as NcTimezonePicker } from \"./chunks/NcTimezonePicker-C17Rji1h.mjs\";\nimport { N as NcUserBubble } from \"./chunks/NcUserBubble-cO5krePG.mjs\";\nimport { N as NcUserStatusIcon } from \"./chunks/NcUserStatusIcon-WEKmuaoU.mjs\";\nimport NcVNodes from \"./Components/NcVNodes.mjs\";\nimport { isFullscreenState, useIsFullscreen } from \"./Composables/useIsFullscreen.mjs\";\nimport { MOBILE_BREAKPOINT, MOBILE_SMALL_BREAKPOINT, isMobileState, useIsMobile, useIsSmallMobile } from \"./Composables/useIsMobile.mjs\";\nimport { useHotKey } from \"./Composables/useHotKey.mjs\";\nimport { useIsDarkTheme, useIsDarkThemeElement } from \"./Composables/useIsDarkTheme.mjs\";\nimport { isA11yActivation } from \"./Functions/a11y.mjs\";\nimport { getEnabledContactsMenuActions, registerContactsMenuAction } from \"./Functions/contactsMenu.mjs\";\nimport { spawnDialog } from \"./Functions/dialog.mjs\";\nimport { E, a as a3, e, g as g2, s as s2 } from \"./chunks/emoji-BY_D0V5K.mjs\";\nimport { checkIfDarkTheme, isDarkTheme } from \"./Functions/isDarkTheme.mjs\";\nimport { preloadImage } from \"./Functions/preloadImage.mjs\";\nimport { u as u3 } from \"./chunks/usernameToColor-DJfepfog.mjs\";\nimport { directive } from \"./Directives/Focus.mjs\";\nimport { directive as directive$1 } from \"./Directives/Linkify.mjs\";\nimport \"./Directives/Tooltip.mjs\";\nimport { default as default2 } from \"./Mixins/clickOutsideOptions.mjs\";\nimport { default as default3 } from \"./Mixins/isFullscreen.mjs\";\nimport { default as default4 } from \"./Mixins/isMobile.mjs\";\nimport { VTooltip } from \"floating-vue\";\nimport { VTooltip as VTooltip2 } from \"floating-vue\";\nconst NcComponents = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n NcActionButton,\n NcActionButtonGroup,\n NcActionCaption,\n NcActionCheckbox,\n NcActionInput,\n NcActionLink,\n NcActionRadio,\n NcActionRouter,\n NcActionSeparator,\n NcActionText,\n NcActionTextEditable,\n NcActions,\n NcAppContent,\n NcAppContentDetails,\n NcAppContentList,\n NcAppNavigation,\n NcAppNavigationCaption,\n NcAppNavigationIconBullet,\n NcAppNavigationItem,\n NcAppNavigationList,\n NcAppNavigationNew,\n NcAppNavigationNewItem,\n NcAppNavigationSearch,\n NcAppNavigationSettings,\n NcAppNavigationSpacer,\n NcAppSettingsDialog,\n NcAppSettingsSection,\n NcAppSidebar,\n NcAppSidebarTab,\n NcAutoCompleteResult,\n NcAvatar,\n NcBlurHash,\n NcBreadcrumb,\n NcBreadcrumbs,\n NcButton,\n NcCheckboxRadioSwitch,\n NcCollectionList,\n NcColorPicker,\n NcContent,\n NcCounterBubble,\n NcDashboardWidget,\n NcDashboardWidgetItem,\n NcDateTime,\n NcDateTimePicker,\n NcDateTimePickerNative,\n NcDialog,\n NcDialogButton,\n NcEllipsisedOption,\n NcEmojiPicker,\n NcEmptyContent,\n NcGuestContent,\n NcHeaderButton,\n NcHeaderMenu,\n NcHighlight,\n NcIconSvgWrapper,\n NcInputField,\n NcListItem,\n NcListItemIcon,\n NcLoadingIcon,\n NcMentionBubble,\n NcModal,\n NcNoteCard,\n NcPasswordField,\n NcPopover,\n NcProgressBar,\n NcRelatedResourcesPanel,\n NcRichContenteditable,\n NcRichText,\n NcSavingIndicatorIcon,\n NcSelect,\n NcSelectTags,\n NcSelectUsers,\n NcSettingsInputText,\n NcSettingsSection,\n NcSettingsSelectGroup,\n NcTextArea,\n NcTextField,\n NcTimezonePicker,\n NcUserBubble,\n NcUserStatusIcon,\n NcVNodes\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst NcDirectives = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n Focus: directive,\n Linkify: directive$1,\n Tooltip: VTooltip\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst NextcloudVuePlugin = {\n install(Vue) {\n Object.entries(NcComponents).forEach(([name, component]) => {\n Vue.component(component.name || name, component);\n });\n Object.entries(NcDirectives).forEach(([name, directive2]) => {\n Vue.directive(name, directive2);\n });\n }\n};\nexport {\n E as EmojiSkinTone,\n directive as Focus,\n directive$1 as Linkify,\n MOBILE_BREAKPOINT,\n MOBILE_SMALL_BREAKPOINT,\n NcActionButton,\n NcActionButtonGroup,\n NcActionCaption,\n NcActionCheckbox,\n NcActionInput,\n NcActionLink,\n NcActionRadio,\n NcActionRouter,\n NcActionSeparator,\n NcActionText,\n NcActionTextEditable,\n NcActions,\n NcAppContent,\n NcAppContentDetails,\n NcAppContentList,\n NcAppNavigation,\n NcAppNavigationCaption,\n NcAppNavigationIconBullet,\n NcAppNavigationItem,\n NcAppNavigationList,\n NcAppNavigationNew,\n NcAppNavigationNewItem,\n NcAppNavigationSearch,\n NcAppNavigationSettings,\n NcAppNavigationSpacer,\n NcAppSettingsDialog,\n NcAppSettingsSection,\n NcAppSidebar,\n NcAppSidebarTab,\n NcAutoCompleteResult,\n NcAvatar,\n NcBlurHash,\n NcBreadcrumb,\n NcBreadcrumbs,\n NcButton,\n NcCheckboxRadioSwitch,\n NcCollectionList,\n NcColorPicker,\n NcContent,\n NcCounterBubble,\n N as NcCustomPickerRenderResult,\n NcDashboardWidget,\n NcDashboardWidgetItem,\n NcDateTime,\n NcDateTimePicker,\n NcDateTimePickerNative,\n NcDialog,\n NcDialogButton,\n NcEllipsisedOption,\n NcEmojiPicker,\n NcEmptyContent,\n NcGuestContent,\n NcHeaderButton,\n NcHeaderMenu,\n NcHighlight,\n NcIconSvgWrapper,\n NcInputField,\n NcListItem,\n NcListItemIcon,\n NcLoadingIcon,\n NcMentionBubble,\n NcModal,\n NcNoteCard,\n NcPasswordField,\n NcPopover,\n NcProgressBar,\n NcRelatedResourcesPanel,\n NcRichContenteditable,\n NcRichText,\n NcSavingIndicatorIcon,\n NcSelect,\n NcSelectTags,\n NcSelectUsers,\n NcSettingsInputText,\n NcSettingsSection,\n NcSettingsSelectGroup,\n NcTextArea,\n NcTextField,\n NcTimezonePicker,\n NcUserBubble,\n NcUserStatusIcon,\n NcVNodes,\n NextcloudVuePlugin,\n VTooltip2 as Tooltip,\n a2 as anyLinkProviderId,\n checkIfDarkTheme,\n default2 as clickOutsideOptions,\n a3 as emojiAddRecent,\n e as emojiSearch,\n g2 as getCurrentSkinTone,\n getEnabledContactsMenuActions,\n g as getLinkWithPicker,\n b2 as getProvider,\n c2 as getProviders,\n h as hasInteractiveView,\n isA11yActivation,\n d as isCustomPickerElementRegistered,\n isDarkTheme,\n default3 as isFullscreen,\n isFullscreenState,\n default4 as isMobile,\n isMobileState,\n i as isWidgetRegistered,\n preloadImage,\n registerContactsMenuAction,\n b as registerCustomPickerElement,\n r2 as registerWidget,\n c as renderCustomPickerElement,\n a as renderWidget,\n r as richEditor,\n d2 as searchProvider,\n s2 as setCurrentSkinTone,\n s as sortProviders,\n spawnDialog,\n u2 as useFormatDateTime,\n useHotKey,\n useIsDarkTheme,\n useIsDarkThemeElement,\n useIsFullscreen,\n useIsMobile,\n useIsSmallMobile,\n u as userStatus,\n u3 as usernameToColor\n};\n//# sourceMappingURL=index.mjs.map\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-161509be]{margin:0}.modal__content[data-v-161509be]{display:flex;flex-direction:column;align-items:center;padding:20px;gap:4px 0}.modal__button-row[data-v-161509be]{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-1e8fee5a] .icon-vue{width:64px;height:64px}.empty[data-v-1e8fee5a] .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@use './Users/shared/styles' as *;\\n\\n.empty {\\n\\t:deep {\\n\\t\\t.icon-vue {\\n\\t\\t\\twidth: 64px;\\n\\t\\t\\theight: 64px;\\n\\n\\t\\t\\tsvg {\\n\\t\\t\\t\\tmax-width: 64px;\\n\\t\\t\\t\\tmax-height: 64px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-content[data-v-253f9eec]{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, `.footer[data-v-db2a7c4e]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.footer__cell[data-v-db2a7c4e]{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-db2a7c4e],.footer__cell span[data-v-db2a7c4e],.footer__cell label[data-v-db2a7c4e]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.footer__cell--avatar[data-v-db2a7c4e],.footer__cell--displayname[data-v-db2a7c4e]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.footer__cell--avatar[data-v-db2a7c4e]{inset-inline-start:0}.footer__cell--displayname[data-v-db2a7c4e]{inset-inline-start:var(--avatar-cell-width);border-inline-end:1px solid var(--color-border)}}.footer__cell--username[data-v-db2a7c4e]{padding-inline-start:calc(var(--default-grid-baseline)*3)}.footer__cell--avatar[data-v-db2a7c4e]{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-db2a7c4e]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.footer__cell--multiline span[data-v-db2a7c4e]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.footer__cell--large[data-v-db2a7c4e]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.footer__cell--obfuscated[data-v-db2a7c4e]{min-width:400px;width:400px}.footer__cell--fill[data-v-db2a7c4e]{min-width:var(--cell-width-large);width:100%}.footer__cell--actions[data-v-db2a7c4e]{position:sticky;inset-inline-end: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-inline-start:1px solid var(--color-border)}.footer__subtitle[data-v-db2a7c4e]{color:var(--color-text-maxcontrast)}.footer__cell[data-v-db2a7c4e]{position:sticky;color:var(--color-text-maxcontrast)}.footer__cell--loading[data-v-db2a7c4e]{inset-inline-start:0;min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0}.footer__cell--count[data-v-db2a7c4e]{inset-inline-start: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,oBAAA,CAGD,4CACC,2CAAA,CACA,+CAAA,CAAA,CAIF,yCACC,yDAAA,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,kBAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,iDAAA,CAIF,mCACC,mCAAA,CDpGD,+BACC,eAAA,CACA,mCAAA,CAEA,wCACC,oBAAA,CACA,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CAGD,sCACC,2CAAA,CACA,2BAAA,CACA,uBAAA\",\"sourcesContent\":[\"\\n@use './shared/styles';\\n\\n.footer {\\n\\t@include styles.row;\\n\\t@include styles.cell;\\n\\n\\t&__cell {\\n\\t\\tposition: sticky;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\n\\t\\t&--loading {\\n\\t\\t\\tinset-inline-start: 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\\tinset-inline-start: 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\\tinset-inline-start: 0;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tinset-inline-start: var(--avatar-cell-width);\\n\\t\\t\\t\\tborder-inline-end: 1px solid var(--color-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--username {\\n\\t\\t\\tpadding-inline-start: 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\\tinset-inline-end: 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-inline-start: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t&__subtitle {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/**\n * 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 The user to check\n * @param user.id Id of the user\n */\nexport const isObfuscated = (user) => {\n const keys = Object.keys(user);\n return keys.length === 1 && keys.at(0) === 'id';\n};\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 }","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=21942da5&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=style&index=0&id=21942da5&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=21942da5&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=21942da5&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 \"21942da5\",\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:{\"data-test\":\"groups\",\"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.availableGroups,\"value\":_vm.newUser.groups,\"label\":\"name\",\"close-on-select\":false,\"multiple\":true,\"taggable\":_vm.settings.isAdmin || _vm.settings.isDelegatedAdmin,\"required\":!_vm.settings.isAdmin && !_vm.settings.isDelegatedAdmin,\"create-option\":(value) => ({ id: value, name: value, isCreating: true })},on:{\"search\":_vm.searchGroups,\"option:created\":_vm.createGroup,\"option:selected\":options => _vm.addGroup(options.at(-1))}})],1),_vm._v(\" \"),_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 …'),\"disabled\":_vm.loading.groups || _vm.loading.all,\"options\":_vm.subAdminsGroups,\"close-on-select\":false,\"multiple\":true,\"label\":\"name\"},on:{\"search\":_vm.searchGroups},model:{value:(_vm.newUser.subAdminsGroups),callback:function ($$v) {_vm.$set(_vm.newUser, \"subAdminsGroups\", $$v)},expression:\"newUser.subAdminsGroups\"}})],1),_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 - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<NcDialog class=\"dialog\"\n\t\tsize=\"small\"\n\t\t:name=\"t('settings', 'New account')\"\n\t\tout-transition\n\t\tv-on=\"$listeners\">\n\t\t<form id=\"new-user-form\"\n\t\t\tclass=\"dialog__form\"\n\t\t\tdata-test=\"form\"\n\t\t\t:disabled=\"loading.all\"\n\t\t\t@submit.prevent=\"createUser\">\n\t\t\t<NcTextField ref=\"username\"\n\t\t\t\tclass=\"dialog__item\"\n\t\t\t\tdata-test=\"username\"\n\t\t\t\t:value.sync=\"newUser.id\"\n\t\t\t\t:disabled=\"settings.newUserGenerateUserID\"\n\t\t\t\t:label=\"usernameLabel\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocomplete=\"off\"\n\t\t\t\tspellcheck=\"false\"\n\t\t\t\tpattern=\"[a-zA-Z0-9 _\\.@\\-']+\"\n\t\t\t\trequired />\n\t\t\t<NcTextField class=\"dialog__item\"\n\t\t\t\tdata-test=\"displayName\"\n\t\t\t\t:value.sync=\"newUser.displayName\"\n\t\t\t\t:label=\"t('settings', 'Display name')\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocomplete=\"off\"\n\t\t\t\tspellcheck=\"false\" />\n\t\t\t<span v-if=\"!settings.newUserRequireEmail\"\n\t\t\t\tid=\"password-email-hint\"\n\t\t\t\tclass=\"dialog__hint\">\n\t\t\t\t{{ t('settings', 'Either password or email is required') }}\n\t\t\t</span>\n\t\t\t<NcPasswordField ref=\"password\"\n\t\t\t\tclass=\"dialog__item\"\n\t\t\t\tdata-test=\"password\"\n\t\t\t\t:value.sync=\"newUser.password\"\n\t\t\t\t:minlength=\"minPasswordLength\"\n\t\t\t\t:maxlength=\"469\"\n\t\t\t\taria-describedby=\"password-email-hint\"\n\t\t\t\t:label=\"newUser.mailAddress === '' ? t('settings', 'Password (required)') : t('settings', 'Password')\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\tspellcheck=\"false\"\n\t\t\t\t:required=\"newUser.mailAddress === ''\" />\n\t\t\t<NcTextField class=\"dialog__item\"\n\t\t\t\tdata-test=\"email\"\n\t\t\t\ttype=\"email\"\n\t\t\t\t:value.sync=\"newUser.mailAddress\"\n\t\t\t\taria-describedby=\"password-email-hint\"\n\t\t\t\t:label=\"newUser.password === '' || settings.newUserRequireEmail ? t('settings', 'Email (required)') : t('settings', 'Email')\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocomplete=\"off\"\n\t\t\t\tspellcheck=\"false\"\n\t\t\t\t:required=\"newUser.password === '' || settings.newUserRequireEmail\" />\n\t\t\t<div class=\"dialog__item\">\n\t\t\t\t<NcSelect class=\"dialog__select\"\n\t\t\t\t\tdata-test=\"groups\"\n\t\t\t\t\t:input-label=\"!settings.isAdmin && !settings.isDelegatedAdmin ? t('settings', 'Member of the following groups (required)') : t('settings', 'Member of the following groups')\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Set account groups')\"\n\t\t\t\t\t:disabled=\"loading.groups || loading.all\"\n\t\t\t\t\t:options=\"availableGroups\"\n\t\t\t\t\t:value=\"newUser.groups\"\n\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\t:taggable=\"settings.isAdmin || settings.isDelegatedAdmin\"\n\t\t\t\t\t:required=\"!settings.isAdmin && !settings.isDelegatedAdmin\"\n\t\t\t\t\t:create-option=\"(value) => ({ id: value, name: value, isCreating: true })\"\n\t\t\t\t\t@search=\"searchGroups\"\n\t\t\t\t\t@option:created=\"createGroup\"\n\t\t\t\t\t@option:selected=\"options => addGroup(options.at(-1))\" />\n\t\t\t\t\t<!-- If user is not admin, they are a subadmin.\n\t\t\t\t\t\tSubadmins can't create users outside their groups\n\t\t\t\t\t\tTherefore, empty select is forbidden -->\n\t\t\t</div>\n\t\t\t<div class=\"dialog__item\">\n\t\t\t\t<NcSelect v-model=\"newUser.subAdminsGroups\"\n\t\t\t\t\tclass=\"dialog__select\"\n\t\t\t\t\t:input-label=\"t('settings', 'Admin of the following groups')\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Set account as admin for …')\"\n\t\t\t\t\t:disabled=\"loading.groups || loading.all\"\n\t\t\t\t\t:options=\"subAdminsGroups\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\t@search=\"searchGroups\" />\n\t\t\t</div>\n\t\t\t<div class=\"dialog__item\">\n\t\t\t\t<NcSelect v-model=\"newUser.quota\"\n\t\t\t\t\tclass=\"dialog__select\"\n\t\t\t\t\t:input-label=\"t('settings', 'Quota')\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Set account quota')\"\n\t\t\t\t\t:options=\"quotaOptions\"\n\t\t\t\t\t:clearable=\"false\"\n\t\t\t\t\t:taggable=\"true\"\n\t\t\t\t\t:create-option=\"validateQuota\" />\n\t\t\t</div>\n\t\t\t<div v-if=\"showConfig.showLanguages\"\n\t\t\t\tclass=\"dialog__item\">\n\t\t\t\t<NcSelect v-model=\"newUser.language\"\n\t\t\t\t\tclass=\"dialog__select\"\n\t\t\t\t\t:input-label=\"t('settings', 'Language')\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Set default language')\"\n\t\t\t\t\t:clearable=\"false\"\n\t\t\t\t\t:selectable=\"option => !option.languages\"\n\t\t\t\t\t:filter-by=\"languageFilterBy\"\n\t\t\t\t\t:options=\"languages\"\n\t\t\t\t\tlabel=\"name\" />\n\t\t\t</div>\n\t\t\t<div :class=\"['dialog__item dialog__managers', { 'icon-loading-small': loading.manager }]\">\n\t\t\t\t<NcSelect v-model=\"newUser.manager\"\n\t\t\t\t\tclass=\"dialog__select\"\n\t\t\t\t\t:input-label=\"managerInputLabel\"\n\t\t\t\t\t:placeholder=\"managerLabel\"\n\t\t\t\t\t:options=\"possibleManagers\"\n\t\t\t\t\t:user-select=\"true\"\n\t\t\t\t\tlabel=\"displayname\"\n\t\t\t\t\t@search=\"searchUserManager\" />\n\t\t\t</div>\n\t\t</form>\n\n\t\t<template #actions>\n\t\t\t<NcButton class=\"dialog__submit\"\n\t\t\t\tdata-test=\"submit\"\n\t\t\t\tform=\"new-user-form\"\n\t\t\t\ttype=\"primary\"\n\t\t\t\tnative-type=\"submit\">\n\t\t\t\t{{ t('settings', 'Add new account') }}\n\t\t\t</NcButton>\n\t\t</template>\n\t</NcDialog>\n</template>\n\n<script>\nimport { formatFileSize, parseFileSize } from '@nextcloud/files'\nimport NcButton from '@nextcloud/vue/components/NcButton'\nimport NcDialog from '@nextcloud/vue/components/NcDialog'\nimport NcPasswordField from '@nextcloud/vue/components/NcPasswordField'\nimport NcSelect from '@nextcloud/vue/components/NcSelect'\nimport NcTextField from '@nextcloud/vue/components/NcTextField'\n\nimport { searchGroups } from '../../service/groups.ts'\nimport logger from '../../logger.ts'\n\nexport default {\n\tname: 'NewUserDialog',\n\n\tcomponents: {\n\t\tNcButton,\n\t\tNcDialog,\n\t\tNcPasswordField,\n\t\tNcSelect,\n\t\tNcTextField,\n\t},\n\n\tprops: {\n\t\tloading: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\n\t\tnewUser: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\n\t\tquotaOptions: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tavailableGroups: [],\n\t\t\tpossibleManagers: [],\n\t\t\t// TRANSLATORS This string describes a manager in the context of an organization\n\t\t\tmanagerInputLabel: t('settings', 'Manager'),\n\t\t\t// TRANSLATORS This string describes a manager in the context of an organization\n\t\t\tmanagerLabel: t('settings', 'Set line manager'),\n\t\t\t// Cancelable promise for search groups request\n\t\t\tpromise: null,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tshowConfig() {\n\t\t\treturn this.$store.getters.getShowConfig\n\t\t},\n\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData\n\t\t},\n\n\t\tusernameLabel() {\n\t\t\tif (this.settings.newUserGenerateUserID) {\n\t\t\t\treturn t('settings', 'Account name will be autogenerated')\n\t\t\t}\n\t\t\treturn t('settings', 'Account name (required)')\n\t\t},\n\n\t\tminPasswordLength() {\n\t\t\treturn this.$store.getters.getPasswordPolicyMinLength\n\t\t},\n\n\t\tsubAdminsGroups() {\n\t\t\t// data provided php side\n\t\t\treturn this.availableGroups.filter(group => group.id !== 'admin' && group.id !== '__nc_internal_recent' && group.id !== 'disabled')\n\t\t},\n\n\t\tlanguages() {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tname: t('settings', 'Common languages'),\n\t\t\t\t\tlanguages: this.settings.languages.commonLanguages,\n\t\t\t\t},\n\t\t\t\t...this.settings.languages.commonLanguages,\n\t\t\t\t{\n\t\t\t\t\tname: t('settings', 'Other languages'),\n\t\t\t\t\tlanguages: this.settings.languages.otherLanguages,\n\t\t\t\t},\n\t\t\t\t...this.settings.languages.otherLanguages,\n\t\t\t]\n\t\t},\n\t},\n\n\tasync beforeMount() {\n\t\tawait this.searchUserManager()\n\t},\n\n\tmounted() {\n\t\t// admins also can assign the system groups\n\t\tif (this.isAdmin || this.isDelegatedAdmin) {\n\t\t\tthis.availableGroups = this.$store.getters.getSortedGroups.filter(group => group.id !== '__nc_internal_recent' && group.id !== 'disabled')\n\t\t} else {\n\t\t\tthis.availableGroups = [...this.$store.getters.getSubAdminGroups]\n\t\t}\n\n\t\tthis.$refs.username?.focus?.()\n\t},\n\n\tmethods: {\n\t\tasync createUser() {\n\t\t\tthis.loading.all = true\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('addUser', {\n\t\t\t\t\tuserid: this.newUser.id,\n\t\t\t\t\tpassword: this.newUser.password,\n\t\t\t\t\tdisplayName: this.newUser.displayName,\n\t\t\t\t\temail: this.newUser.mailAddress,\n\t\t\t\t\tgroups: this.newUser.groups.map(group => group.id),\n\t\t\t\t\tsubadmin: this.newUser.subAdminsGroups.map(group => group.id),\n\t\t\t\t\tquota: this.newUser.quota.id,\n\t\t\t\t\tlanguage: this.newUser.language.code,\n\t\t\t\t\tmanager: this.newUser.manager.id,\n\t\t\t\t})\n\n\t\t\t\tthis.$emit('reset')\n\t\t\t\tthis.$refs.username?.focus?.()\n\t\t\t\tthis.$emit('closing')\n\t\t\t} catch (error) {\n\t\t\t\tthis.loading.all = false\n\t\t\t\tif (error.response && error.response.data && error.response.data.ocs && error.response.data.ocs.meta) {\n\t\t\t\t\tconst statuscode = error.response.data.ocs.meta.statuscode\n\t\t\t\t\tif (statuscode === 102) {\n\t\t\t\t\t\t// wrong username\n\t\t\t\t\t\tthis.$refs.username?.focus?.()\n\t\t\t\t\t} else if (statuscode === 107) {\n\t\t\t\t\t\t// wrong password\n\t\t\t\t\t\tthis.$refs.password?.focus?.()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tasync searchGroups(query, toggleLoading) {\n\t\t\tif (!this.isAdmin && !this.isDelegatedAdmin) {\n\t\t\t\t// managers cannot search for groups\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this.promise) {\n\t\t\t\tthis.promise.cancel()\n\t\t\t}\n\t\t\ttoggleLoading(true)\n\t\t\ttry {\n\t\t\t\tthis.promise = searchGroups({\n\t\t\t\t\tsearch: query,\n\t\t\t\t\toffset: 0,\n\t\t\t\t\tlimit: 25,\n\t\t\t\t})\n\t\t\t\tconst groups = await this.promise\n\t\t\t\tthis.availableGroups = groups\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(t('settings', 'Failed to search groups'), { error })\n\t\t\t}\n\t\t\tthis.promise = null\n\t\t\ttoggleLoading(false)\n\t\t},\n\n\t\t/**\n\t\t * Create a new group\n\t\t *\n\t\t * @param {any} group Group\n\t\t * @param {string} group.name Group id\n\t\t */\n\t\tasync createGroup({ name: gid }) {\n\t\t\tthis.loading.groups = true\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('addGroup', gid)\n\t\t\t\tthis.availableGroups.push({ id: gid, name: gid })\n\t\t\t\tthis.newUser.groups.push({ id: gid, name: gid })\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(t('settings', 'Failed to create group'), { error })\n\t\t\t}\n\t\t\tthis.loading.groups = false\n\t\t},\n\n\t\t/**\n\t\t * Add user to group\n\t\t *\n\t\t * @param {object} group Group object\n\t\t */\n\t\tasync addGroup(group) {\n\t\t\tif (group.isCreating) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (group.canAdd === false) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.newUser.groups.push(group)\n\t\t},\n\n\t\t/**\n\t\t * Validate quota string to make sure it's a valid human file size\n\t\t *\n\t\t * @param {string} quota Quota in readable format '5 GB'\n\t\t * @return {object}\n\t\t */\n\t\tvalidateQuota(quota) {\n\t\t\t// only used for new presets sent through @Tag\n\t\t\tconst validQuota = OC.Util.computerFileSize(quota)\n\t\t\tif (validQuota !== null && validQuota >= 0) {\n\t\t\t\t// unify format output\n\t\t\t\tquota = formatFileSize(parseFileSize(quota))\n\t\t\t\tthis.newUser.quota = { id: quota, label: quota }\n\t\t\t\treturn this.newUser.quota\n\t\t\t}\n\t\t\t// Default is unlimited\n\t\t\tthis.newUser.quota = this.quotaOptions[0]\n\t\t\treturn this.quotaOptions[0]\n\t\t},\n\n\t\tlanguageFilterBy(option, label, search) {\n\t\t\t// Show group header of the language\n\t\t\tif (option.languages) {\n\t\t\t\treturn option.languages.some(\n\t\t\t\t\t({ name }) => name.toLocaleLowerCase().includes(search.toLocaleLowerCase()),\n\t\t\t\t)\n\t\t\t}\n\n\t\t\treturn (label || '').toLocaleLowerCase().includes(search.toLocaleLowerCase())\n\t\t},\n\n\t\tasync searchUserManager(query) {\n\t\t\tawait this.$store.dispatch(\n\t\t\t\t'searchUsers',\n\t\t\t\t{\n\t\t\t\t\toffset: 0,\n\t\t\t\t\tlimit: 10,\n\t\t\t\t\tsearch: query,\n\t\t\t\t},\n\t\t\t).then(response => {\n\t\t\t\tconst users = response?.data ? Object.values(response?.data.ocs.data.users) : []\n\t\t\t\tif (users.length > 0) {\n\t\t\t\t\tthis.possibleManagers = users\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\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</style>\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=70bbf4c9&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewUserDialog.vue?vue&type=style&index=0&id=70bbf4c9&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=70bbf4c9&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=70bbf4c9&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 \"70bbf4c9\",\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=db2a7c4e&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListFooter.vue?vue&type=style&index=0&id=db2a7c4e&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=db2a7c4e&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=db2a7c4e&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 \"db2a7c4e\",\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.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.showFirstLogin)?_c('th',{staticClass:\"header__cell\",attrs:{\"data-cy-user-list-header-first-login\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'First login')))])]):_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=5c0f8828&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListHeader.vue?vue&type=style&index=0&id=5c0f8828&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=5c0f8828&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=5c0f8828&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 \"5c0f8828\",\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 || _vm.loading.groupsDetails,\"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) => ({ id: value, name: value, isCreating: true })},on:{\"search\":_vm.searchGroups,\"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.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))?[_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 || _vm.loading.subAdminGroupsDetails,\"loading\":_vm.loading.subadmins,\"label\":\"name\",\"append-to-body\":false,\"multiple\":true,\"no-wrap\":true,\"options\":_vm.availableSubAdminGroups,\"placeholder\":_vm.t('settings', 'Set account as admin for'),\"value\":_vm.userSubAdminGroups},on:{\"search\":_vm.searchGroups,\"option:deselected\":_vm.removeUserSubAdmin,\"option:selected\":options => _vm.addUserSubAdmin(options.at(-1))}})]:(!_vm.isObfuscated)?_c('span',{attrs:{\"title\":_vm.userSubAdminGroupsLabels?.length > 40 ? _vm.userSubAdminGroupsLabels : null}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.userSubAdminGroupsLabels)+\"\\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.showFirstLogin)?_c('td',{staticClass:\"row__cell\",attrs:{\"data-cy-user-list-cell-first-login\":\"\"}},[(!_vm.isObfuscated)?_c('span',[_vm._v(_vm._s(_vm.userFirstLogin))]):_vm._e()]):_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,\"disabled\":_vm.isLoadingField,\"loading\":_vm.loadingPossibleManagers || _vm.loading.manager,\"options\":_vm.possibleManagers,\"placeholder\":_vm.managerLabel,\"label\":\"displayname\",\"filterable\":false,\"internal-search\":false,\"clearable\":true},on:{\"open\":_vm.searchInitialUserManager,\"search\":_vm.searchUserManager,\"update:model-value\":_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 }","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 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\"","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=61782548\"\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\nimport { formatFileSize } from '@nextcloud/files'\nimport { useFormatDateTime } from '@nextcloud/vue'\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\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\tsetup(props) {\n\t\tconst { formattedFullTime } = useFormatDateTime(props.user.firstLoginTimestamp * 1000, {\n\t\t\trelativeTime: false,\n\t\t\tformat: {\n\t\t\t\ttimeStyle: 'short',\n\t\t\t\tdateStyle: 'short',\n\t\t\t},\n\t\t})\n\t\treturn {\n\t\t\tformattedFullTime,\n\t\t}\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tavailableGroups: this.user.groups.map(id => ({ id, name: id })),\n\t\t\tavailableSubAdminGroups: this.user.subadmin.map(id => ({ id, name: id })),\n\t\t\tuserGroups: this.user.groups.map(id => ({ id, name: id })),\n\t\t\tuserSubAdminGroups: this.user.subadmin.map(id => ({ id, name: id })),\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/* QUOTA MANAGEMENT */\n\t\tusedSpace() {\n\t\t\tconst quotaUsed = this.user.quota.used > 0 ? this.user.quota.used : 0\n\t\t\treturn t('settings', '{size} used', { size: formatFileSize(quotaUsed, true) })\n\t\t},\n\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\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 = formatFileSize(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\tuserFirstLogin() {\n\t\t\tif (this.user.firstLoginTimestamp > 0) {\n\t\t\t\treturn this.formattedFullTime\n\t\t\t}\n\t\t\tif (this.user.firstLoginTimestamp < 0) {\n\t\t\t\treturn t('settings', 'Unknown')\n\t\t\t}\n\t\t\treturn t('settings', 'Never')\n\t\t},\n\n\t\t/* LAST LOGIN */\n\t\tuserLastLoginTooltip() {\n\t\t\tif (this.user.lastLoginTimestamp > 0) {\n\t\t\t\treturn OC.Util.formatDate(this.user.lastLoginTimestamp * 1000)\n\t\t\t}\n\t\t\treturn ''\n\t\t},\n\t\tuserLastLogin() {\n\t\t\tif (this.user.lastLoginTimestamp > 0) {\n\t\t\t\treturn OC.Util.relativeModifiedDate(this.user.lastLoginTimestamp * 1000)\n\t\t\t}\n\t\t\treturn t('settings', 'Never')\n\t\t},\n\t},\n}\n","<!--\n - SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<tr class=\"user-list__row\"\n\t\t:data-cy-user-row=\"user.id\">\n\t\t<td class=\"row__cell row__cell--avatar\" data-cy-user-list-cell-avatar>\n\t\t\t<NcLoadingIcon v-if=\"isLoadingUser\"\n\t\t\t\t:name=\"t('settings', 'Loading account …')\"\n\t\t\t\t:size=\"32\" />\n\t\t\t<NcAvatar v-else-if=\"visible\"\n\t\t\t\tdisable-menu\n\t\t\t\t:show-user-status=\"false\"\n\t\t\t\t:user=\"user.id\" />\n\t\t</td>\n\n\t\t<td class=\"row__cell row__cell--displayname\" data-cy-user-list-cell-displayname>\n\t\t\t<template v-if=\"editing && user.backendCapabilities.setDisplayName\">\n\t\t\t\t<NcTextField ref=\"displayNameField\"\n\t\t\t\t\tclass=\"user-row-text-field\"\n\t\t\t\t\tdata-cy-user-list-input-displayname\n\t\t\t\t\t:data-loading=\"loading.displayName || undefined\"\n\t\t\t\t\t:trailing-button-label=\"t('settings', 'Submit')\"\n\t\t\t\t\t:class=\"{ 'icon-loading-small': loading.displayName }\"\n\t\t\t\t\t:show-trailing-button=\"true\"\n\t\t\t\t\t:disabled=\"loading.displayName || isLoadingField\"\n\t\t\t\t\t:label=\"t('settings', 'Change display name')\"\n\t\t\t\t\ttrailing-button-icon=\"arrowRight\"\n\t\t\t\t\t:value.sync=\"editedDisplayName\"\n\t\t\t\t\tautocapitalize=\"off\"\n\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\tspellcheck=\"false\"\n\t\t\t\t\t@trailing-button-click=\"updateDisplayName\" />\n\t\t\t</template>\n\t\t\t<strong v-else-if=\"!isObfuscated\"\n\t\t\t\t:title=\"user.displayname?.length > 20 ? user.displayname : null\">\n\t\t\t\t{{ user.displayname }}\n\t\t\t</strong>\n\t\t</td>\n\n\t\t<td class=\"row__cell row__cell--username\" data-cy-user-list-cell-username>\n\t\t\t<span class=\"row__subtitle\">{{ user.id }}</span>\n\t\t</td>\n\n\t\t<td data-cy-user-list-cell-password\n\t\t\tclass=\"row__cell\"\n\t\t\t:class=\"{ 'row__cell--obfuscated': hasObfuscated }\">\n\t\t\t<template v-if=\"editing && settings.canChangePassword && user.backendCapabilities.setPassword\">\n\t\t\t\t<NcTextField class=\"user-row-text-field\"\n\t\t\t\t\tdata-cy-user-list-input-password\n\t\t\t\t\t:data-loading=\"loading.password || undefined\"\n\t\t\t\t\t:trailing-button-label=\"t('settings', 'Submit')\"\n\t\t\t\t\t:class=\"{'icon-loading-small': loading.password}\"\n\t\t\t\t\t:show-trailing-button=\"true\"\n\t\t\t\t\t:disabled=\"loading.password || isLoadingField\"\n\t\t\t\t\t:minlength=\"minPasswordLength\"\n\t\t\t\t\tmaxlength=\"469\"\n\t\t\t\t\t:label=\"t('settings', 'Set new password')\"\n\t\t\t\t\ttrailing-button-icon=\"arrowRight\"\n\t\t\t\t\t:value.sync=\"editedPassword\"\n\t\t\t\t\tautocapitalize=\"off\"\n\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\trequired\n\t\t\t\t\tspellcheck=\"false\"\n\t\t\t\t\ttype=\"password\"\n\t\t\t\t\t@trailing-button-click=\"updatePassword\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"isObfuscated\">\n\t\t\t\t{{ t('settings', 'You do not have permissions to see the details of this account') }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td class=\"row__cell\" data-cy-user-list-cell-email>\n\t\t\t<template v-if=\"editing\">\n\t\t\t\t<NcTextField class=\"user-row-text-field\"\n\t\t\t\t\t:class=\"{'icon-loading-small': loading.mailAddress}\"\n\t\t\t\t\tdata-cy-user-list-input-email\n\t\t\t\t\t:data-loading=\"loading.mailAddress || undefined\"\n\t\t\t\t\t:show-trailing-button=\"true\"\n\t\t\t\t\t:trailing-button-label=\"t('settings', 'Submit')\"\n\t\t\t\t\t:label=\"t('settings', 'Set new email address')\"\n\t\t\t\t\t:disabled=\"loading.mailAddress || isLoadingField\"\n\t\t\t\t\ttrailing-button-icon=\"arrowRight\"\n\t\t\t\t\t:value.sync=\"editedMail\"\n\t\t\t\t\tautocapitalize=\"off\"\n\t\t\t\t\tautocomplete=\"email\"\n\t\t\t\t\tspellcheck=\"false\"\n\t\t\t\t\ttype=\"email\"\n\t\t\t\t\t@trailing-button-click=\"updateEmail\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"!isObfuscated\"\n\t\t\t\t:title=\"user.email?.length > 20 ? user.email : null\">\n\t\t\t\t{{ user.email }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td class=\"row__cell row__cell--large row__cell--multiline\" data-cy-user-list-cell-groups>\n\t\t\t<template v-if=\"editing\">\n\t\t\t\t<label class=\"hidden-visually\"\n\t\t\t\t\t:for=\"'groups' + uniqueId\">\n\t\t\t\t\t{{ t('settings', 'Add account to group') }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect data-cy-user-list-input-groups\n\t\t\t\t\t:data-loading=\"loading.groups || undefined\"\n\t\t\t\t\t:input-id=\"'groups' + uniqueId\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t:disabled=\"isLoadingField || loading.groupsDetails\"\n\t\t\t\t\t:loading=\"loading.groups\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\t:append-to-body=\"false\"\n\t\t\t\t\t:options=\"availableGroups\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Add account to group')\"\n\t\t\t\t\t:taggable=\"settings.isAdmin || settings.isDelegatedAdmin\"\n\t\t\t\t\t:value=\"userGroups\"\n\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\t:no-wrap=\"true\"\n\t\t\t\t\t:create-option=\"(value) => ({ id: value, name: value, isCreating: true })\"\n\t\t\t\t\t@search=\"searchGroups\"\n\t\t\t\t\t@option:created=\"createGroup\"\n\t\t\t\t\t@option:selected=\"options => addUserGroup(options.at(-1))\"\n\t\t\t\t\t@option:deselected=\"removeUserGroup\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"!isObfuscated\"\n\t\t\t\t:title=\"userGroupsLabels?.length > 40 ? userGroupsLabels : null\">\n\t\t\t\t{{ userGroupsLabels }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td v-if=\"settings.isAdmin || settings.isDelegatedAdmin\"\n\t\t\tdata-cy-user-list-cell-subadmins\n\t\t\tclass=\"row__cell row__cell--large row__cell--multiline\">\n\t\t\t<template v-if=\"editing && (settings.isAdmin || settings.isDelegatedAdmin)\">\n\t\t\t\t<label class=\"hidden-visually\"\n\t\t\t\t\t:for=\"'subadmins' + uniqueId\">\n\t\t\t\t\t{{ t('settings', 'Set account as admin for') }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect data-cy-user-list-input-subadmins\n\t\t\t\t\t:data-loading=\"loading.subadmins || undefined\"\n\t\t\t\t\t:input-id=\"'subadmins' + uniqueId\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t:disabled=\"isLoadingField || loading.subAdminGroupsDetails\"\n\t\t\t\t\t:loading=\"loading.subadmins\"\n\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\t:append-to-body=\"false\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\t:no-wrap=\"true\"\n\t\t\t\t\t:options=\"availableSubAdminGroups\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Set account as admin for')\"\n\t\t\t\t\t:value=\"userSubAdminGroups\"\n\t\t\t\t\t@search=\"searchGroups\"\n\t\t\t\t\t@option:deselected=\"removeUserSubAdmin\"\n\t\t\t\t\t@option:selected=\"options => addUserSubAdmin(options.at(-1))\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"!isObfuscated\"\n\t\t\t\t:title=\"userSubAdminGroupsLabels?.length > 40 ? userSubAdminGroupsLabels : null\">\n\t\t\t\t{{ userSubAdminGroupsLabels }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td class=\"row__cell\" data-cy-user-list-cell-quota>\n\t\t\t<template v-if=\"editing\">\n\t\t\t\t<label class=\"hidden-visually\"\n\t\t\t\t\t:for=\"'quota' + uniqueId\">\n\t\t\t\t\t{{ t('settings', 'Select account quota') }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect v-model=\"editedUserQuota\"\n\t\t\t\t\t:close-on-select=\"true\"\n\t\t\t\t\t:create-option=\"validateQuota\"\n\t\t\t\t\tdata-cy-user-list-input-quota\n\t\t\t\t\t:data-loading=\"loading.quota || undefined\"\n\t\t\t\t\t:disabled=\"isLoadingField\"\n\t\t\t\t\t:loading=\"loading.quota\"\n\t\t\t\t\t:append-to-body=\"false\"\n\t\t\t\t\t:clearable=\"false\"\n\t\t\t\t\t:input-id=\"'quota' + uniqueId\"\n\t\t\t\t\t:options=\"quotaOptions\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Select account quota')\"\n\t\t\t\t\t:taggable=\"true\"\n\t\t\t\t\t@option:selected=\"setUserQuota\" />\n\t\t\t</template>\n\t\t\t<template v-else-if=\"!isObfuscated\">\n\t\t\t\t<span :id=\"'quota-progress' + uniqueId\">{{ userQuota }} ({{ usedSpace }})</span>\n\t\t\t\t<NcProgressBar :aria-labelledby=\"'quota-progress' + uniqueId\"\n\t\t\t\t\tclass=\"row__progress\"\n\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t'row__progress--warn': usedQuota > 80,\n\t\t\t\t\t}\"\n\t\t\t\t\t:value=\"usedQuota\" />\n\t\t\t</template>\n\t\t</td>\n\n\t\t<td v-if=\"showConfig.showLanguages\"\n\t\t\tclass=\"row__cell row__cell--large\"\n\t\t\tdata-cy-user-list-cell-language>\n\t\t\t<template v-if=\"editing\">\n\t\t\t\t<label class=\"hidden-visually\"\n\t\t\t\t\t:for=\"'language' + uniqueId\">\n\t\t\t\t\t{{ t('settings', 'Set the language') }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect :id=\"'language' + uniqueId\"\n\t\t\t\t\tdata-cy-user-list-input-language\n\t\t\t\t\t:data-loading=\"loading.languages || undefined\"\n\t\t\t\t\t:allow-empty=\"false\"\n\t\t\t\t\t:disabled=\"isLoadingField\"\n\t\t\t\t\t:loading=\"loading.languages\"\n\t\t\t\t\t:clearable=\"false\"\n\t\t\t\t\t:append-to-body=\"false\"\n\t\t\t\t\t:options=\"availableLanguages\"\n\t\t\t\t\t:placeholder=\"t('settings', 'No language set')\"\n\t\t\t\t\t:value=\"userLanguage\"\n\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\t@input=\"setUserLanguage\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"!isObfuscated\">\n\t\t\t\t{{ userLanguage.name }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td v-if=\"showConfig.showUserBackend || showConfig.showStoragePath\"\n\t\t\tdata-cy-user-list-cell-storage-location\n\t\t\tclass=\"row__cell row__cell--large\">\n\t\t\t<template v-if=\"!isObfuscated\">\n\t\t\t\t<span v-if=\"showConfig.showUserBackend\">{{ user.backend }}</span>\n\t\t\t\t<span v-if=\"showConfig.showStoragePath\"\n\t\t\t\t\t:title=\"user.storageLocation\"\n\t\t\t\t\tclass=\"row__subtitle\">\n\t\t\t\t\t{{ user.storageLocation }}\n\t\t\t\t</span>\n\t\t\t</template>\n\t\t</td>\n\n\t\t<td v-if=\"showConfig.showFirstLogin\"\n\t\t\tclass=\"row__cell\"\n\t\t\tdata-cy-user-list-cell-first-login>\n\t\t\t<span v-if=\"!isObfuscated\">{{ userFirstLogin }}</span>\n\t\t</td>\n\n\t\t<td v-if=\"showConfig.showLastLogin\"\n\t\t\t:title=\"userLastLoginTooltip\"\n\t\t\tclass=\"row__cell\"\n\t\t\tdata-cy-user-list-cell-last-login>\n\t\t\t<span v-if=\"!isObfuscated\">{{ userLastLogin }}</span>\n\t\t</td>\n\n\t\t<td class=\"row__cell row__cell--large row__cell--fill\" data-cy-user-list-cell-manager>\n\t\t\t<template v-if=\"editing\">\n\t\t\t\t<label class=\"hidden-visually\"\n\t\t\t\t\t:for=\"'manager' + uniqueId\">\n\t\t\t\t\t{{ managerLabel }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect v-model=\"currentManager\"\n\t\t\t\t\tclass=\"select--fill\"\n\t\t\t\t\tdata-cy-user-list-input-manager\n\t\t\t\t\t:data-loading=\"loading.manager || undefined\"\n\t\t\t\t\t:input-id=\"'manager' + uniqueId\"\n\t\t\t\t\t:disabled=\"isLoadingField\"\n\t\t\t\t\t:loading=\"loadingPossibleManagers || loading.manager\"\n\t\t\t\t\t:options=\"possibleManagers\"\n\t\t\t\t\t:placeholder=\"managerLabel\"\n\t\t\t\t\tlabel=\"displayname\"\n\t\t\t\t\t:filterable=\"false\"\n\t\t\t\t\t:internal-search=\"false\"\n\t\t\t\t\t:clearable=\"true\"\n\t\t\t\t\t@open=\"searchInitialUserManager\"\n\t\t\t\t\t@search=\"searchUserManager\"\n\t\t\t\t\t@update:model-value=\"updateUserManager\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"!isObfuscated\">\n\t\t\t\t{{ user.manager }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td class=\"row__cell row__cell--actions\" data-cy-user-list-cell-actions>\n\t\t\t<UserRowActions v-if=\"visible && !isObfuscated && canEdit && !loading.all\"\n\t\t\t\t:actions=\"userActions\"\n\t\t\t\t:disabled=\"isLoadingField\"\n\t\t\t\t:edit=\"editing\"\n\t\t\t\t:user=\"user\"\n\t\t\t\t@update:edit=\"toggleEdit\" />\n\t\t</td>\n\t</tr>\n</template>\n\n<script>\nimport { formatFileSize, parseFileSize } from '@nextcloud/files'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { showSuccess, showError } from '@nextcloud/dialogs'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\n\nimport NcAvatar from '@nextcloud/vue/components/NcAvatar'\nimport NcLoadingIcon from '@nextcloud/vue/components/NcLoadingIcon'\nimport NcProgressBar from '@nextcloud/vue/components/NcProgressBar'\nimport NcSelect from '@nextcloud/vue/components/NcSelect'\nimport NcTextField from '@nextcloud/vue/components/NcTextField'\n\nimport UserRowActions from './UserRowActions.vue'\n\nimport UserRowMixin from '../../mixins/UserRowMixin.js'\nimport { isObfuscated, unlimitedQuota } from '../../utils/userUtils.ts'\nimport { searchGroups, loadUserGroups, loadUserSubAdminGroups } from '../../service/groups.ts'\nimport logger from '../../logger.ts'\n\nexport default {\n\tname: 'UserRow',\n\n\tcomponents: {\n\t\tNcAvatar,\n\t\tNcLoadingIcon,\n\t\tNcProgressBar,\n\t\tNcSelect,\n\t\tNcTextField,\n\t\tUserRowActions,\n\t},\n\n\tmixins: [\n\t\tUserRowMixin,\n\t],\n\n\tprops: {\n\t\tuser: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tvisible: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tusers: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\thasObfuscated: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tquotaOptions: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\tlanguages: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\tsettings: {\n\t\t\ttype: Object,\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\n\tdata() {\n\t\treturn {\n\t\t\tselectedQuota: false,\n\t\t\trand: Math.random().toString(36).substring(2),\n\t\t\tloadingPossibleManagers: false,\n\t\t\tpossibleManagers: [],\n\t\t\tcurrentManager: '',\n\t\t\tediting: false,\n\t\t\tloading: {\n\t\t\t\tall: false,\n\t\t\t\tdisplayName: false,\n\t\t\t\tpassword: false,\n\t\t\t\tmailAddress: false,\n\t\t\t\tgroups: false,\n\t\t\t\tgroupsDetails: false,\n\t\t\t\tsubAdminGroupsDetails: false,\n\t\t\t\tsubadmins: false,\n\t\t\t\tquota: false,\n\t\t\t\tdelete: false,\n\t\t\t\tdisable: false,\n\t\t\t\tlanguages: false,\n\t\t\t\twipe: false,\n\t\t\t\tmanager: false,\n\t\t\t},\n\t\t\teditedDisplayName: this.user.displayname,\n\t\t\teditedPassword: '',\n\t\t\teditedMail: this.user.email ?? '',\n\t\t\t// Cancelable promise for search groups request\n\t\t\tpromise: null,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tmanagerLabel() {\n\t\t\t// TRANSLATORS This string describes a person's manager in the context of an organization\n\t\t\treturn t('settings', 'Set line manager')\n\t\t},\n\n\t\tisObfuscated() {\n\t\t\treturn isObfuscated(this.user)\n\t\t},\n\n\t\tshowConfig() {\n\t\t\treturn this.$store.getters.getShowConfig\n\t\t},\n\n\t\tisLoadingUser() {\n\t\t\treturn this.loading.delete || this.loading.disable || this.loading.wipe\n\t\t},\n\n\t\tisLoadingField() {\n\t\t\treturn this.loading.delete || this.loading.disable || this.loading.all\n\t\t},\n\n\t\tuniqueId() {\n\t\t\treturn encodeURIComponent(this.user.id + this.rand)\n\t\t},\n\n\t\tuserGroupsLabels() {\n\t\t\treturn this.userGroups\n\t\t\t\t.map(group => group.name ?? group.id)\n\t\t\t\t.join(', ')\n\t\t},\n\n\t\tuserSubAdminGroupsLabels() {\n\t\t\treturn this.userSubAdminGroups\n\t\t\t\t.map(group => group.name ?? group.id)\n\t\t\t\t.join(', ')\n\t\t},\n\n\t\tusedSpace() {\n\t\t\tif (this.user.quota?.used) {\n\t\t\t\treturn t('settings', '{size} used', { size: formatFileSize(this.user.quota?.used) })\n\t\t\t}\n\t\t\treturn t('settings', '{size} used', { size: formatFileSize(0) })\n\t\t},\n\n\t\tcanEdit() {\n\t\t\treturn getCurrentUser().uid !== this.user.id || this.settings.isAdmin || this.settings.isDelegatedAdmin\n\t\t},\n\n\t\tuserQuota() {\n\t\t\tlet quota = this.user.quota?.quota\n\n\t\t\tif (quota === 'default') {\n\t\t\t\tquota = this.settings.defaultQuota\n\t\t\t\tif (quota !== 'none') {\n\t\t\t\t\t// convert to numeric value to match what the server would usually return\n\t\t\t\t\tquota = parseFileSize(quota, true)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// when the default quota is unlimited, the server returns -3 here, map it to \"none\"\n\t\t\tif (quota === 'none' || quota === -3) {\n\t\t\t\treturn t('settings', 'Unlimited')\n\t\t\t} else if (quota >= 0) {\n\t\t\t\treturn formatFileSize(quota)\n\t\t\t}\n\t\t\treturn formatFileSize(0)\n\t\t},\n\n\t\tuserActions() {\n\t\t\tconst actions = [\n\t\t\t\t{\n\t\t\t\t\ticon: 'icon-delete',\n\t\t\t\t\ttext: t('settings', 'Delete account'),\n\t\t\t\t\taction: this.deleteUser,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ticon: 'icon-delete',\n\t\t\t\t\ttext: t('settings', 'Disconnect all devices and delete local data'),\n\t\t\t\t\taction: this.wipeUserDevices,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ticon: this.user.enabled ? 'icon-close' : 'icon-add',\n\t\t\t\t\ttext: this.user.enabled ? t('settings', 'Disable account') : t('settings', 'Enable account'),\n\t\t\t\t\taction: this.enableDisableUser,\n\t\t\t\t},\n\t\t\t]\n\t\t\tif (this.user.email !== null && this.user.email !== '') {\n\t\t\t\tactions.push({\n\t\t\t\t\ticon: 'icon-mail',\n\t\t\t\t\ttext: t('settings', 'Resend welcome email'),\n\t\t\t\t\taction: this.sendWelcomeMail,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn actions.concat(this.externalActions)\n\t\t},\n\n\t\t// mapping saved values to objects\n\t\teditedUserQuota: {\n\t\t\tget() {\n\t\t\t\tif (this.selectedQuota !== false) {\n\t\t\t\t\treturn this.selectedQuota\n\t\t\t\t}\n\t\t\t\tif (this.settings.defaultQuota !== unlimitedQuota.id && parseFileSize(this.settings.defaultQuota, true) >= 0) {\n\t\t\t\t\t// if value is valid, let's map the quotaOptions or return custom quota\n\t\t\t\t\treturn { id: this.settings.defaultQuota, label: this.settings.defaultQuota }\n\t\t\t\t}\n\t\t\t\treturn unlimitedQuota // unlimited\n\t\t\t},\n\t\t\tset(quota) {\n\t\t\t\tthis.selectedQuota = quota\n\t\t\t},\n\t\t},\n\n\t\tavailableLanguages() {\n\t\t\treturn this.languages[0].languages.concat(this.languages[1].languages)\n\t\t},\n\t},\n\tasync beforeMount() {\n\t\tif (this.user.manager) {\n\t\t\tawait this.initManager(this.user.manager)\n\t\t}\n\t},\n\n\tmethods: {\n\t\tasync wipeUserDevices() {\n\t\t\tconst userid = this.user.id\n\t\t\tawait confirmPassword()\n\t\t\tOC.dialogs.confirmDestructive(\n\t\t\t\tt('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 }),\n\t\t\t\tt('settings', 'Remote wipe of devices'),\n\t\t\t\t{\n\t\t\t\t\ttype: OC.dialogs.YES_NO_BUTTONS,\n\t\t\t\t\tconfirm: t('settings', 'Wipe {userid}\\'s devices', { userid }),\n\t\t\t\t\tconfirmClasses: 'error',\n\t\t\t\t\tcancel: t('settings', 'Cancel'),\n\t\t\t\t},\n\t\t\t\t(result) => {\n\t\t\t\t\tif (result) {\n\t\t\t\t\t\tthis.loading.wipe = true\n\t\t\t\t\t\tthis.loading.all = true\n\t\t\t\t\t\tthis.$store.dispatch('wipeUserDevices', userid)\n\t\t\t\t\t\t\t.then(() => showSuccess(t('settings', 'Wiped {userid}\\'s devices', { userid })), { timeout: 2000 })\n\t\t\t\t\t\t\t.finally(() => {\n\t\t\t\t\t\t\t\tthis.loading.wipe = false\n\t\t\t\t\t\t\t\tthis.loading.all = false\n\t\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\ttrue,\n\t\t\t)\n\t\t},\n\n\t\tfilterManagers(managers) {\n\t\t\treturn managers.filter((manager) => manager.id !== this.user.id)\n\t\t},\n\n\t\tasync initManager(userId) {\n\t\t\tawait this.$store.dispatch('getUser', userId).then(response => {\n\t\t\t\tthis.currentManager = response?.data.ocs.data\n\t\t\t})\n\t\t},\n\n\t\tasync searchInitialUserManager() {\n\t\t\tthis.loadingPossibleManagers = true\n\t\t\tawait this.searchUserManager()\n\t\t\tthis.loadingPossibleManagers = false\n\t\t},\n\n\t\tasync loadGroupsDetails() {\n\t\t\tthis.loading.groups = true\n\t\t\tthis.loading.groupsDetails = true\n\t\t\ttry {\n\t\t\t\tconst groups = await loadUserGroups({ userId: this.user.id })\n\t\t\t\tthis.availableGroups = this.availableGroups.map(availableGroup => groups.find(group => group.id === availableGroup.id) ?? availableGroup)\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(t('settings', 'Failed to load groups with details'), { error })\n\t\t\t}\n\t\t\tthis.loading.groups = false\n\t\t\tthis.loading.groupsDetails = false\n\t\t},\n\n\t\tasync loadSubAdminGroupsDetails() {\n\t\t\tthis.loading.subadmins = true\n\t\t\tthis.loading.subAdminGroupsDetails = true\n\t\t\ttry {\n\t\t\t\tconst groups = await loadUserSubAdminGroups({ userId: this.user.id })\n\t\t\t\tthis.availableSubAdminGroups = this.availableSubAdminGroups.map(availableGroup => groups.find(group => group.id === availableGroup.id) ?? availableGroup)\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(t('settings', 'Failed to load sub admin groups with details'), { error })\n\t\t\t}\n\t\t\tthis.loading.subadmins = false\n\t\t\tthis.loading.subAdminGroupsDetails = false\n\t\t},\n\n\t\tasync searchGroups(query, toggleLoading) {\n\t\t\tif (query === '') {\n\t\t\t\treturn // Prevent unexpected search behaviour e.g. on option:created\n\t\t\t}\n\t\t\tif (this.promise) {\n\t\t\t\tthis.promise.cancel()\n\t\t\t}\n\t\t\ttoggleLoading(true)\n\t\t\ttry {\n\t\t\t\tthis.promise = await searchGroups({\n\t\t\t\t\tsearch: query,\n\t\t\t\t\toffset: 0,\n\t\t\t\t\tlimit: 25,\n\t\t\t\t})\n\t\t\t\tconst groups = await this.promise\n\t\t\t\tthis.availableGroups = groups\n\t\t\t\tthis.availableSubAdminGroups = groups.filter(group => group.id !== 'admin')\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(t('settings', 'Failed to search groups'), { error })\n\t\t\t}\n\t\t\tthis.promise = null\n\t\t\ttoggleLoading(false)\n\t\t},\n\n\t\tasync searchUserManager(query) {\n\t\t\tawait this.$store.dispatch('searchUsers', { offset: 0, limit: 10, search: query }).then(response => {\n\t\t\t\tconst users = response?.data ? this.filterManagers(Object.values(response?.data.ocs.data.users)) : []\n\t\t\t\tif (users.length > 0) {\n\t\t\t\t\tthis.possibleManagers = users\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\n\t\tasync updateUserManager() {\n\t\t\tthis.loading.manager = true\n\n\t\t\t// Store the current manager before making changes\n\t\t\tconst previousManager = this.user.manager\n\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('setUserData', {\n\t\t\t\t\tuserid: this.user.id,\n\t\t\t\t\tkey: 'manager',\n\t\t\t\t\tvalue: this.currentManager ? this.currentManager.id : '',\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\t// TRANSLATORS This string describes a line manager in the context of an organization\n\t\t\t\tshowError(t('settings', 'Failed to update line manager'))\n\t\t\t\tlogger.error('Failed to update manager:', { error })\n\n\t\t\t\t// Revert to the previous manager in the UI on error\n\t\t\t\tthis.currentManager = previousManager\n\t\t\t} finally {\n\t\t\t\tthis.loading.manager = false\n\t\t\t}\n\t\t},\n\n\t\tasync deleteUser() {\n\t\t\tconst userid = this.user.id\n\t\t\tawait confirmPassword()\n\t\t\tOC.dialogs.confirmDestructive(\n\t\t\t\tt('settings', 'Fully delete {userid}\\'s account including all their personal files, app data, etc.', { userid }),\n\t\t\t\tt('settings', 'Account deletion'),\n\t\t\t\t{\n\t\t\t\t\ttype: OC.dialogs.YES_NO_BUTTONS,\n\t\t\t\t\tconfirm: t('settings', 'Delete {userid}\\'s account', { userid }),\n\t\t\t\t\tconfirmClasses: 'error',\n\t\t\t\t\tcancel: t('settings', 'Cancel'),\n\t\t\t\t},\n\t\t\t\t(result) => {\n\t\t\t\t\tif (result) {\n\t\t\t\t\t\tthis.loading.delete = true\n\t\t\t\t\t\tthis.loading.all = true\n\t\t\t\t\t\treturn this.$store.dispatch('deleteUser', userid)\n\t\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\t\tthis.loading.delete = false\n\t\t\t\t\t\t\t\tthis.loading.all = false\n\t\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\ttrue,\n\t\t\t)\n\t\t},\n\n\t\tenableDisableUser() {\n\t\t\tthis.loading.delete = true\n\t\t\tthis.loading.all = true\n\t\t\tconst userid = this.user.id\n\t\t\tconst enabled = !this.user.enabled\n\t\t\treturn this.$store.dispatch('enableDisableUser', {\n\t\t\t\tuserid,\n\t\t\t\tenabled,\n\t\t\t})\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.loading.delete = false\n\t\t\t\t\tthis.loading.all = false\n\t\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Set user displayName\n\t\t */\n\t\tasync updateDisplayName() {\n\t\t\tthis.loading.displayName = true\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('setUserData', {\n\t\t\t\t\tuserid: this.user.id,\n\t\t\t\t\tkey: 'displayname',\n\t\t\t\t\tvalue: this.editedDisplayName,\n\t\t\t\t})\n\n\t\t\t\tif (this.editedDisplayName === this.user.displayname) {\n\t\t\t\t\tshowSuccess(t('settings', 'Display name was successfully changed'))\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tthis.loading.displayName = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Set user password\n\t\t */\n\t\tasync updatePassword() {\n\t\t\tthis.loading.password = true\n\t\t\tif (this.editedPassword.length === 0) {\n\t\t\t\tshowError(t('settings', \"Password can't be empty\"))\n\t\t\t\tthis.loading.password = false\n\t\t\t} else {\n\t\t\t\ttry {\n\t\t\t\t\tawait this.$store.dispatch('setUserData', {\n\t\t\t\t\t\tuserid: this.user.id,\n\t\t\t\t\t\tkey: 'password',\n\t\t\t\t\t\tvalue: this.editedPassword,\n\t\t\t\t\t})\n\t\t\t\t\tthis.editedPassword = ''\n\t\t\t\t\tshowSuccess(t('settings', 'Password was successfully changed'))\n\t\t\t\t} finally {\n\t\t\t\t\tthis.loading.password = false\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Set user mailAddress\n\t\t */\n\t\tasync updateEmail() {\n\t\t\tthis.loading.mailAddress = true\n\t\t\tif (this.editedMail === '') {\n\t\t\t\tshowError(t('settings', \"Email can't be empty\"))\n\t\t\t\tthis.loading.mailAddress = false\n\t\t\t\tthis.editedMail = this.user.email\n\t\t\t} else {\n\t\t\t\ttry {\n\t\t\t\t\tawait this.$store.dispatch('setUserData', {\n\t\t\t\t\t\tuserid: this.user.id,\n\t\t\t\t\t\tkey: 'email',\n\t\t\t\t\t\tvalue: this.editedMail,\n\t\t\t\t\t})\n\n\t\t\t\t\tif (this.editedMail === this.user.email) {\n\t\t\t\t\t\tshowSuccess(t('settings', 'Email was successfully changed'))\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\tthis.loading.mailAddress = false\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Create a new group and add user to it\n\t\t *\n\t\t * @param {string} gid Group id\n\t\t */\n\t\tasync createGroup({ name: gid }) {\n\t\t\tthis.loading.groups = true\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('addGroup', gid)\n\t\t\t\tthis.availableGroups.push({ id: gid, name: gid })\n\t\t\t\tthis.availableSubAdminGroups.push({ id: gid, name: gid })\n\t\t\t\tconst userid = this.user.id\n\t\t\t\tawait this.$store.dispatch('addUserGroup', { userid, gid })\n\t\t\t\tthis.userGroups.push({ id: gid, name: gid })\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(t('settings', 'Failed to create group'), { error })\n\t\t\t}\n\t\t\tthis.loading.groups = false\n\t\t},\n\n\t\t/**\n\t\t * Add user to group\n\t\t *\n\t\t * @param {object} group Group object\n\t\t */\n\t\tasync addUserGroup(group) {\n\t\t\tif (group.isCreating) {\n\t\t\t\t// This is NcSelect's internal value for a new inputted group name\n\t\t\t\t// Ignore\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst userid = this.user.id\n\t\t\tconst gid = group.id\n\t\t\tif (group.canAdd === false) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.loading.groups = true\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('addUserGroup', { userid, gid })\n\t\t\t\tthis.userGroups.push(group)\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t}\n\t\t\tthis.loading.groups = false\n\t\t},\n\n\t\t/**\n\t\t * Remove user from group\n\t\t *\n\t\t * @param {object} group Group object\n\t\t */\n\t\tasync removeUserGroup(group) {\n\t\t\tif (group.canRemove === false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tthis.loading.groups = true\n\t\t\tconst userid = this.user.id\n\t\t\tconst gid = group.id\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('removeUserGroup', {\n\t\t\t\t\tuserid,\n\t\t\t\t\tgid,\n\t\t\t\t})\n\t\t\t\tthis.userGroups = this.userGroups.filter(group => group.id !== gid)\n\t\t\t\tthis.loading.groups = false\n\t\t\t\t// remove user from current list if current list is the removed group\n\t\t\t\tif (this.$route.params.selectedGroup === gid) {\n\t\t\t\t\tthis.$store.commit('deleteUser', userid)\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\tthis.loading.groups = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Add user to group\n\t\t *\n\t\t * @param {object} group Group object\n\t\t */\n\t\tasync addUserSubAdmin(group) {\n\t\t\tthis.loading.subadmins = true\n\t\t\tconst userid = this.user.id\n\t\t\tconst gid = group.id\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('addUserSubAdmin', {\n\t\t\t\t\tuserid,\n\t\t\t\t\tgid,\n\t\t\t\t})\n\t\t\t\tthis.userSubAdminGroups.push(group)\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t}\n\t\t\tthis.loading.subadmins = false\n\t\t},\n\n\t\t/**\n\t\t * Remove user from group\n\t\t *\n\t\t * @param {object} group Group object\n\t\t */\n\t\tasync removeUserSubAdmin(group) {\n\t\t\tthis.loading.subadmins = true\n\t\t\tconst userid = this.user.id\n\t\t\tconst gid = group.id\n\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('removeUserSubAdmin', {\n\t\t\t\t\tuserid,\n\t\t\t\t\tgid,\n\t\t\t\t})\n\t\t\t\tthis.userSubAdminGroups = this.userSubAdminGroups.filter(group => group.id !== gid)\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tthis.loading.subadmins = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Dispatch quota set request\n\t\t *\n\t\t * @param {string | object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}\n\t\t * @return {string}\n\t\t */\n\t\tasync setUserQuota(quota = 'none') {\n\t\t\t// Make sure correct label is set for unlimited quota\n\t\t\tif (quota === 'none') {\n\t\t\t\tquota = unlimitedQuota\n\t\t\t}\n\t\t\tthis.loading.quota = true\n\n\t\t\t// ensure we only send the preset id\n\t\t\tquota = quota.id ? quota.id : quota\n\n\t\t\ttry {\n\t\t\t\t// If human readable format, convert to raw float format\n\t\t\t\t// Else just send the raw string\n\t\t\t\tconst value = (parseFileSize(quota, true) || quota).toString()\n\t\t\t\tawait this.$store.dispatch('setUserData', {\n\t\t\t\t\tuserid: this.user.id,\n\t\t\t\t\tkey: 'quota',\n\t\t\t\t\tvalue,\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tthis.loading.quota = false\n\t\t\t}\n\t\t\treturn quota\n\t\t},\n\n\t\t/**\n\t\t * Validate quota string to make sure it's a valid human file size\n\t\t *\n\t\t * @param {string | object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}\n\t\t * @return {object} The validated quota object or unlimited quota if input is invalid\n\t\t */\n\t\tvalidateQuota(quota) {\n\t\t\tif (typeof quota === 'object') {\n\t\t\t\tquota = quota?.id || quota.label\n\t\t\t}\n\t\t\t// only used for new presets sent through @Tag\n\t\t\tconst validQuota = parseFileSize(quota, true)\n\t\t\tif (validQuota === null) {\n\t\t\t\treturn unlimitedQuota\n\t\t\t} else {\n\t\t\t\t// unify format output\n\t\t\t\tquota = formatFileSize(parseFileSize(quota, true))\n\t\t\t\treturn { id: quota, label: quota }\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Dispatch language set request\n\t\t *\n\t\t * @param {object} lang language object {code:'en', name:'English'}\n\t\t * @return {object}\n\t\t */\n\t\tasync setUserLanguage(lang) {\n\t\t\tthis.loading.languages = true\n\t\t\t// ensure we only send the preset id\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('setUserData', {\n\t\t\t\t\tuserid: this.user.id,\n\t\t\t\t\tkey: 'language',\n\t\t\t\t\tvalue: lang.code,\n\t\t\t\t})\n\t\t\t\tthis.loading.languages = false\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t}\n\t\t\treturn lang\n\t\t},\n\n\t\t/**\n\t\t * Dispatch new welcome mail request\n\t\t */\n\t\tsendWelcomeMail() {\n\t\t\tthis.loading.all = true\n\t\t\tthis.$store.dispatch('sendWelcomeMail', this.user.id)\n\t\t\t\t.then(() => showSuccess(t('settings', 'Welcome mail sent!'), { timeout: 2000 }))\n\t\t\t\t.finally(() => {\n\t\t\t\t\tthis.loading.all = false\n\t\t\t\t})\n\t\t},\n\n\t\tasync toggleEdit() {\n\t\t\tthis.editing = !this.editing\n\t\t\tif (this.editing) {\n\t\t\t\tawait this.$nextTick()\n\t\t\t\tthis.$refs.displayNameField?.$refs?.inputField?.$refs?.input?.focus()\n\t\t\t\tthis.loadGroupsDetails()\n\t\t\t\tthis.loadSubAdminGroupsDetails()\n\t\t\t}\n\t\t\tif (this.editedDisplayName !== this.user.displayname) {\n\t\t\t\tthis.editedDisplayName = this.user.displayname\n\t\t\t} else if (this.editedMail !== this.user.email) {\n\t\t\t\tthis.editedMail = this.user.email ?? ''\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@use './shared/styles';\n\n.user-list__row {\n\t@include styles.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 styles.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</style>\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=7faa9864&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRow.vue?vue&type=style&index=0&id=7faa9864&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=7faa9864&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=7faa9864&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 \"7faa9864\",\n null\n \n)\n\nexport default component.exports","<!--\n - SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<Fragment>\n\t\t<NewUserDialog v-if=\"showConfig.showNewUserForm\"\n\t\t\t:loading=\"loading\"\n\t\t\t:new-user=\"newUser\"\n\t\t\t:quota-options=\"quotaOptions\"\n\t\t\t@reset=\"resetForm\"\n\t\t\t@closing=\"closeDialog\" />\n\n\t\t<NcEmptyContent v-if=\"filteredUsers.length === 0\"\n\t\t\tclass=\"empty\"\n\t\t\t:name=\"isInitialLoad && loading.users ? null : t('settings', 'No accounts')\">\n\t\t\t<template #icon>\n\t\t\t\t<NcLoadingIcon v-if=\"isInitialLoad && loading.users\"\n\t\t\t\t\t:name=\"t('settings', 'Loading accounts …')\"\n\t\t\t\t\t:size=\"64\" />\n\t\t\t\t<NcIconSvgWrapper v-else :path=\"mdiAccountGroup\" :size=\"64\" />\n\t\t\t</template>\n\t\t</NcEmptyContent>\n\n\t\t<VirtualList v-else\n\t\t\t:data-component=\"UserRow\"\n\t\t\t:data-sources=\"filteredUsers\"\n\t\t\tdata-key=\"id\"\n\t\t\tdata-cy-user-list\n\t\t\t:item-height=\"rowHeight\"\n\t\t\t:style=\"style\"\n\t\t\t:extra-props=\"{\n\t\t\t\tusers,\n\t\t\t\tsettings,\n\t\t\t\thasObfuscated,\n\t\t\t\tquotaOptions,\n\t\t\t\tlanguages,\n\t\t\t\texternalActions,\n\t\t\t}\"\n\t\t\t@scroll-end=\"handleScrollEnd\">\n\t\t\t<template #before>\n\t\t\t\t<caption class=\"hidden-visually\">\n\t\t\t\t\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\t</caption>\n\t\t\t</template>\n\n\t\t\t<template #header>\n\t\t\t\t<UserListHeader :has-obfuscated=\"hasObfuscated\" />\n\t\t\t</template>\n\n\t\t\t<template #footer>\n\t\t\t\t<UserListFooter :loading=\"loading.users\"\n\t\t\t\t\t:filtered-users=\"filteredUsers\" />\n\t\t\t</template>\n\t\t</VirtualList>\n\t</Fragment>\n</template>\n\n<script>\nimport { mdiAccountGroup } from '@mdi/js'\nimport { showError } from '@nextcloud/dialogs'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport { Fragment } from 'vue-frag'\n\nimport Vue from 'vue'\nimport NcEmptyContent from '@nextcloud/vue/components/NcEmptyContent'\nimport NcIconSvgWrapper from '@nextcloud/vue/components/NcIconSvgWrapper'\nimport NcLoadingIcon from '@nextcloud/vue/components/NcLoadingIcon'\n\nimport VirtualList from './Users/VirtualList.vue'\nimport NewUserDialog from './Users/NewUserDialog.vue'\nimport UserListFooter from './Users/UserListFooter.vue'\nimport UserListHeader from './Users/UserListHeader.vue'\nimport UserRow from './Users/UserRow.vue'\n\nimport { defaultQuota, isObfuscated, unlimitedQuota } from '../utils/userUtils.ts'\nimport logger from '../logger.ts'\n\nconst newUser = Object.freeze({\n\tid: '',\n\tdisplayName: '',\n\tpassword: '',\n\tmailAddress: '',\n\tgroups: [],\n\tmanager: '',\n\tsubAdminsGroups: [],\n\tquota: defaultQuota,\n\tlanguage: {\n\t\tcode: 'en',\n\t\tname: t('settings', 'Default language'),\n\t},\n})\n\nexport default {\n\tname: 'UserList',\n\n\tcomponents: {\n\t\tFragment,\n\t\tNcEmptyContent,\n\t\tNcIconSvgWrapper,\n\t\tNcLoadingIcon,\n\t\tNewUserDialog,\n\t\tUserListFooter,\n\t\tUserListHeader,\n\t\tVirtualList,\n\t},\n\n\tprops: {\n\t\tselectedGroup: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\texternalActions: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t},\n\n\tsetup() {\n\t\t// non reactive properties\n\t\treturn {\n\t\t\tmdiAccountGroup,\n\t\t\trowHeight: 55,\n\n\t\t\tUserRow,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: {\n\t\t\t\tall: false,\n\t\t\t\tgroups: false,\n\t\t\t\tusers: false,\n\t\t\t},\n\t\t\tnewUser: { ...newUser },\n\t\t\tisInitialLoad: true,\n\t\t\tsearchQuery: '',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tshowConfig() {\n\t\t\treturn this.$store.getters.getShowConfig\n\t\t},\n\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData\n\t\t},\n\n\t\tstyle() {\n\t\t\treturn {\n\t\t\t\t'--row-height': `${this.rowHeight}px`,\n\t\t\t}\n\t\t},\n\n\t\thasObfuscated() {\n\t\t\treturn this.filteredUsers.some(user => isObfuscated(user))\n\t\t},\n\n\t\tusers() {\n\t\t\treturn this.$store.getters.getUsers\n\t\t},\n\n\t\tfilteredUsers() {\n\t\t\tif (this.selectedGroup === 'disabled') {\n\t\t\t\treturn this.users.filter(user => user.enabled === false)\n\t\t\t}\n\t\t\treturn this.users.filter(user => user.enabled !== false)\n\t\t},\n\n\t\tgroups() {\n\t\t\treturn this.$store.getters.getSortedGroups\n\t\t\t\t.filter(group => group.id !== '__nc_internal_recent' && group.id !== 'disabled')\n\t\t},\n\n\t\tquotaOptions() {\n\t\t\t// convert the preset array into objects\n\t\t\tconst quotaPreset = this.settings.quotaPreset.reduce((acc, cur) => acc.concat({\n\t\t\t\tid: cur,\n\t\t\t\tlabel: cur,\n\t\t\t}), [])\n\t\t\t// add default presets\n\t\t\tif (this.settings.allowUnlimitedQuota) {\n\t\t\t\tquotaPreset.unshift(unlimitedQuota)\n\t\t\t}\n\t\t\tquotaPreset.unshift(defaultQuota)\n\t\t\treturn quotaPreset\n\t\t},\n\n\t\tusersOffset() {\n\t\t\treturn this.$store.getters.getUsersOffset\n\t\t},\n\n\t\tusersLimit() {\n\t\t\treturn this.$store.getters.getUsersLimit\n\t\t},\n\n\t\tdisabledUsersOffset() {\n\t\t\treturn this.$store.getters.getDisabledUsersOffset\n\t\t},\n\n\t\tdisabledUsersLimit() {\n\t\t\treturn this.$store.getters.getDisabledUsersLimit\n\t\t},\n\n\t\tusersCount() {\n\t\t\treturn this.users.length\n\t\t},\n\n\t\t/* LANGUAGES */\n\t\tlanguages() {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tlabel: t('settings', 'Common languages'),\n\t\t\t\t\tlanguages: this.settings.languages.commonLanguages,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: t('settings', 'Other languages'),\n\t\t\t\t\tlanguages: this.settings.languages.otherLanguages,\n\t\t\t\t},\n\t\t\t]\n\t\t},\n\t},\n\n\twatch: {\n\t\t// watch url change and group select\n\t\tasync selectedGroup(val) {\n\t\t\tthis.isInitialLoad = true\n\t\t\t// if selected is the disabled group but it's empty\n\t\t\tawait this.redirectIfDisabled()\n\t\t\tthis.$store.commit('resetUsers')\n\t\t\tawait this.loadUsers()\n\t\t\tthis.setNewUserDefaultGroup(val)\n\t\t},\n\n\t\tfilteredUsers(filteredUsers) {\n\t\t\tlogger.debug(`${filteredUsers.length} filtered user(s)`)\n\t\t},\n\t},\n\n\tasync created() {\n\t\tawait this.loadUsers()\n\t},\n\n\tasync mounted() {\n\t\tif (!this.settings.canChangePassword) {\n\t\t\tOC.Notification.showTemporary(t('settings', 'Password change is disabled because the master key is disabled'))\n\t\t}\n\n\t\t/**\n\t\t * Reset and init new user form\n\t\t */\n\t\tthis.resetForm()\n\n\t\t/**\n\t\t * Register search\n\t\t */\n\t\tsubscribe('nextcloud:unified-search.search', this.search)\n\t\tsubscribe('nextcloud:unified-search.reset', this.resetSearch)\n\n\t\t/**\n\t\t * If disabled group but empty, redirect\n\t\t */\n\t\tawait this.redirectIfDisabled()\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('nextcloud:unified-search.search', this.search)\n\t\tunsubscribe('nextcloud:unified-search.reset', this.resetSearch)\n\t},\n\n\tmethods: {\n\t\tasync handleScrollEnd() {\n\t\t\tawait this.loadUsers()\n\t\t},\n\n\t\tasync loadUsers() {\n\t\t\tthis.loading.users = true\n\t\t\ttry {\n\t\t\t\tif (this.selectedGroup === 'disabled') {\n\t\t\t\t\tawait this.$store.dispatch('getDisabledUsers', {\n\t\t\t\t\t\toffset: this.disabledUsersOffset,\n\t\t\t\t\t\tlimit: this.disabledUsersLimit,\n\t\t\t\t\t\tsearch: this.searchQuery,\n\t\t\t\t\t})\n\t\t\t\t} else if (this.selectedGroup === '__nc_internal_recent') {\n\t\t\t\t\tawait this.$store.dispatch('getRecentUsers', {\n\t\t\t\t\t\toffset: this.usersOffset,\n\t\t\t\t\t\tlimit: this.usersLimit,\n\t\t\t\t\t\tsearch: this.searchQuery,\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\tawait this.$store.dispatch('getUsers', {\n\t\t\t\t\t\toffset: this.usersOffset,\n\t\t\t\t\t\tlimit: this.usersLimit,\n\t\t\t\t\t\tgroup: this.selectedGroup,\n\t\t\t\t\t\tsearch: this.searchQuery,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tlogger.debug(`${this.users.length} total user(s) loaded`)\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error('Failed to load accounts', { error })\n\t\t\t\tshowError('Failed to load accounts')\n\t\t\t}\n\t\t\tthis.loading.users = false\n\t\t\tthis.isInitialLoad = false\n\t\t},\n\n\t\tcloseDialog() {\n\t\t\tthis.$store.commit('setShowConfig', {\n\t\t\t\tkey: 'showNewUserForm',\n\t\t\t\tvalue: false,\n\t\t\t})\n\t\t},\n\n\t\tasync search({ query }) {\n\t\t\tthis.searchQuery = query\n\t\t\tthis.$store.commit('resetUsers')\n\t\t\tawait this.loadUsers()\n\t\t},\n\n\t\tresetSearch() {\n\t\t\tthis.search({ query: '' })\n\t\t},\n\n\t\tresetForm() {\n\t\t\t// revert form to original state\n\t\t\tthis.newUser = Object.assign({}, newUser)\n\n\t\t\t/**\n\t\t\t * Init default language from server data. The use of this.settings\n\t\t\t * requires a computed variable, which break the v-model binding of the form,\n\t\t\t * this is a much easier solution than getter and setter on a computed var\n\t\t\t */\n\t\t\tif (this.settings.defaultLanguage) {\n\t\t\t\tVue.set(this.newUser.language, 'code', this.settings.defaultLanguage)\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * In case the user directly loaded the user list within a group\n\t\t\t * the watch won't be triggered. We need to initialize it.\n\t\t\t */\n\t\t\tthis.setNewUserDefaultGroup(this.selectedGroup)\n\n\t\t\tthis.loading.all = false\n\t\t},\n\n\t\tsetNewUserDefaultGroup(value) {\n\t\t\t// Is no value set, but user is a line manager we set their group as this is a requirement for line manager\n\t\t\tif (!value && !this.settings.isAdmin && !this.settings.isDelegatedAdmin) {\n\t\t\t\tconst groups = this.$store.getters.getSubAdminGroups\n\t\t\t\t// if there are multiple groups we do not know which to add,\n\t\t\t\t// so we cannot make the managers life easier by preselecting it.\n\t\t\t\tif (groups.length === 1) {\n\t\t\t\t\tthis.newUser.groups = [...groups]\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\t// setting new account default group to the current selected one\n\t\t\t\tconst currentGroup = this.groups.find(group => group.id === value)\n\t\t\t\tif (currentGroup) {\n\t\t\t\t\tthis.newUser.groups = [currentGroup]\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t\t// fallback, empty selected group\n\t\t\tthis.newUser.groups = []\n\t\t},\n\n\t\t/**\n\t\t * If the selected group is the disabled group but the count is 0\n\t\t * redirect to the all users page.\n\t\t * we only check for 0 because we don't have the count on ldap\n\t\t * and we therefore set the usercount to -1 in this specific case\n\t\t */\n\t\tasync redirectIfDisabled() {\n\t\t\tconst allGroups = this.$store.getters.getGroups\n\t\t\tif (this.selectedGroup === 'disabled'\n\t\t\t\t\t\t&& allGroups.findIndex(group => group.id === 'disabled' && group.usercount === 0) > -1) {\n\t\t\t\t// disabled group is empty, redirection to all users\n\t\t\t\tthis.$router.push({ name: 'users' })\n\t\t\t\tawait this.loadUsers()\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@use './Users/shared/styles' as *;\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</style>\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=1e8fee5a&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserList.vue?vue&type=style&index=0&id=1e8fee5a&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=1e8fee5a&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=1e8fee5a&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 \"1e8fee5a\",\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\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 - SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<NcAppContent :page-heading=\"pageHeading\">\n\t\t<UserList :selected-group=\"selectedGroupDecoded\"\n\t\t\t:external-actions=\"externalActions\" />\n\t</NcAppContent>\n</template>\n\n<script>\nimport { translate as t } from '@nextcloud/l10n'\nimport { emit } from '@nextcloud/event-bus'\nimport { defineComponent } from 'vue'\n\nimport NcAppContent from '@nextcloud/vue/components/NcAppContent'\nimport UserList from '../components/UserList.vue'\n\nexport default defineComponent({\n\tname: 'UserManagement',\n\n\tcomponents: {\n\t\tNcAppContent,\n\t\tUserList,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\t// temporary value used for multiselect change\n\t\t\texternalActions: [],\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tpageHeading() {\n\t\t\tif (this.selectedGroupDecoded === null) {\n\t\t\t\treturn t('settings', 'All accounts')\n\t\t\t}\n\t\t\tconst matchHeading = {\n\t\t\t\tadmin: t('settings', 'Admins'),\n\t\t\t\tdisabled: t('settings', 'Disabled accounts'),\n\t\t\t}\n\t\t\treturn matchHeading[this.selectedGroupDecoded] ?? t('settings', 'Account group: {group}', { group: this.selectedGroupDecoded })\n\t\t},\n\n\t\tselectedGroup() {\n\t\t\treturn this.$route.params.selectedGroup\n\t\t},\n\n\t\tselectedGroupDecoded() {\n\t\t\treturn this.selectedGroup ? decodeURIComponent(this.selectedGroup) : null\n\t\t},\n\t},\n\n\tbeforeMount() {\n\t\tthis.$store.dispatch('getPasswordPolicyMinLength')\n\t},\n\n\tcreated() {\n\t\t// init the OCA.Settings.UserList object\n\t\twindow.OCA = window.OCA ?? {}\n\t\twindow.OCA.Settings = window.OCA.Settings ?? {}\n\t\twindow.OCA.Settings.UserList = window.OCA.Settings.UserList ?? {}\n\t\t// and add the registerAction method\n\t\twindow.OCA.Settings.UserList.registerAction = this.registerAction\n\t\temit('settings:user-management:loaded')\n\t},\n\n\tmethods: {\n\t\tt,\n\n\t\t/**\n\t\t * Register a new action for the user menu\n\t\t *\n\t\t * @param {string} icon the icon class\n\t\t * @param {string} text the text to display\n\t\t * @param {Function} action the function to run\n\t\t * @param {(user: Record<string, unknown>) => boolean} enabled return true if the action is enabled for the user\n\t\t * @return {Array}\n\t\t */\n\t\tregisterAction(icon, text, action, enabled) {\n\t\t\tthis.externalActions.push({\n\t\t\t\ticon,\n\t\t\t\ttext,\n\t\t\t\taction,\n\t\t\t\tenabled,\n\t\t\t})\n\t\t\treturn this.externalActions\n\t\t},\n\t},\n})\n</script>\n\n<style lang=\"scss\" scoped>\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</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserManagement.vue?vue&type=style&index=0&id=253f9eec&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserManagement.vue?vue&type=style&index=0&id=253f9eec&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=253f9eec&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=253f9eec&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 \"253f9eec\",\n null\n \n)\n\nexport default component.exports"],"names":["___CSS_LOADER_EXPORT___","push","module","id","formatGroup","group","name","displayname","usercount","disabled","canAdd","canRemove","searchGroups","_ref","search","offset","limit","controller","AbortController","CancelablePromise","async","resolve","reject","onCancel","abort","data","axios","get","generateOcsUrl","signal","ocs","groups","map","error","loadUserGroups","userId","_ref2","url","loadUserSubAdminGroups","_ref3","components","NcAppSettingsDialog","NcAppSettingsSection","NcCheckboxRadioSwitch","NcNoteCard","NcSelect","props","open","type","Boolean","required","selectedQuota","loadingSendMail","computed","groupSorting","$store","getters","getGroupSorting","GroupSorting","GroupName","set","sorting","commit","UserCount","isGroupSortingEnforced","getServerData","forceSortGroupByName","isModalOpen","$emit","showConfig","getShowConfig","settings","showLanguages","status","setShowConfig","showFirstLogin","showLastLogin","showUserBackend","showStoragePath","quotaOptions","quotaPreset","reduce","acc","cur","concat","label","allowUnlimitedQuota","unshift","unlimitedQuota","defaultQuota","OC","Util","computerFileSize","quota","sendWelcomeMail","newUserSendEmail","value","post","generateUrl","logger","methods","filterQuotas","option","searchValue","toLocaleLowerCase","replaceAll","indexOf","key","validateQuota","validQuota","parseFileSize","formatFileSize","setDefaultQuota","arguments","length","undefined","dispatch","app","then","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_vm","this","_c","_self","attrs","t","on","$event","_v","_s","_e","staticClass","model","callback","$$v","expression","AccountGroup","Delete","Fragment","NcActionButton","NcActionInput","NcAppNavigationItem","NcButton","NcCounterBubble","NcModal","Pencil","active","count","Number","default","String","loadingRenameGroup","openGroupMenu","showRemoveGroupModal","handleGroupMenuOpen","renameGroup","gid","trim","displayName","$refs","displayNameInput","$el","querySelector","groupid","removeGroup","showError","ref","params","selectedGroup","encodeURIComponent","scopedSlots","_u","fn","proxy","isAdmin","isDelegatedAdmin","formatGroupMenu","title","Math","max","useFormatGroups","userGroups","filter","adminGroup","find","disabledGroup","recentGroup","_defineComponent","__name","setup","__props","store","useStore","route","useRoute","router","useRouter","onBeforeMount","loadGroups","selectedGroupDecoded","decodeURIComponent","getSortedGroups","isAdminOrDelegatedAdmin","isAddGroupOpen","loadingAddGroup","hasAddGroupError","newGroupName","loadingGroups","groupsSearchQuery","groupListItems","lastGroupListItem","findLast","component","$vnode","at","listItem","isLastGroupVisible","useElementVisibility","watch","promise","cancel","__sfc","createGroup","groupId","newGroupListItem","scrollIntoView","behavior","block","mdiAccountGroup","mdiPlus","NcActionText","NcAppNavigationCaption","NcAppNavigationList","NcAppNavigationSearch","NcIconSvgWrapper","NcLoadingIcon","GroupListItem","_setup","_setupProxy","_l","refInFor","isDialogOpen","userCount","getUserCount","showNewUserMenu","mdiAccount","mdiAccountOff","mdiCog","mdiShieldAccount","mdiHistory","NcAppNavigation","NcAppNavigationNew","UserSettingsDialog","AppNavigationGroupList","_k","keyCode","apply","Symbol","toStringTag","isObfuscated","user","keys","Object","Vue","directive","vElementVisibility","extend","dataComponent","Function","dataKey","dataSources","Array","itemHeight","extraProps","bufferItems","index","headerHeight","tableHeight","resizeObserver","startIndex","shownItems","ceil","renderedItems","slice","tbodyStyle","isOverScrolled","lastIndex","hiddenAfterItems","min","paddingTop","paddingBottom","mounted","root","tfoot","thead","ResizeObserver","debounce","clientHeight","debug","onScroll","observe","addEventListener","beforeDestroy","disconnect","handleFooterVisibility","visible","round","scrollTop","_t","style","item","i","_b","tag","directives","rawName","NcDialog","NcPasswordField","NcTextField","loading","newUser","availableGroups","possibleManagers","managerInputLabel","managerLabel","usernameLabel","newUserGenerateUserID","minPasswordLength","getPasswordPolicyMinLength","subAdminsGroups","languages","commonLanguages","otherLanguages","beforeMount","searchUserManager","getSubAdminGroups","username","focus","createUser","all","userid","password","email","mailAddress","subadmin","language","code","manager","response","meta","statuscode","query","toggleLoading","addGroup","isCreating","languageFilterBy","some","includes","users","values","_g","$listeners","preventDefault","$set","newUserRequireEmail","class","filteredUsers","n","hasObfuscated","passwordLabel","defineComponent","NcActions","actions","edit","editSvg","SvgCheck","SvgPencil","enabledActions","action","enabled","isSvg","string","TypeError","XMLValidator","validate","jsonObject","parser","XMLParser","parse","x","toLowerCase","toggleEdit","icon","text","event","externalActions","formattedFullTime","useFormatDateTime","firstLoginTimestamp","relativeTime","format","timeStyle","dateStyle","availableSubAdminGroups","userSubAdminGroups","usedSpace","quotaUsed","used","size","usedQuota","pow","isNaN","userQuota","humanQuota","userLanguage","userLang","lang","userFirstLogin","userLastLoginTooltip","lastLoginTimestamp","formatDate","userLastLogin","relativeModifiedDate","NcAvatar","NcProgressBar","UserRowActions","mixins","UserRowMixin","rand","random","toString","substring","loadingPossibleManagers","currentManager","editing","groupsDetails","subAdminGroupsDetails","subadmins","delete","disable","wipe","editedDisplayName","editedPassword","editedMail","isLoadingUser","isLoadingField","uniqueId","userGroupsLabels","join","userSubAdminGroupsLabels","canEdit","getCurrentUser","uid","userActions","deleteUser","wipeUserDevices","enableDisableUser","editedUserQuota","availableLanguages","initManager","confirmPassword","dialogs","confirmDestructive","YES_NO_BUTTONS","confirm","confirmClasses","result","showSuccess","timeout","finally","filterManagers","managers","searchInitialUserManager","loadGroupsDetails","availableGroup","loadSubAdminGroupsDetails","updateUserManager","previousManager","updateDisplayName","updatePassword","updateEmail","addUserGroup","console","removeUserGroup","$route","addUserSubAdmin","removeUserSubAdmin","setUserQuota","setUserLanguage","$nextTick","displayNameField","inputField","input","backendCapabilities","setDisplayName","canChangePassword","setPassword","backend","storageLocation","freeze","NcEmptyContent","NewUserDialog","UserListFooter","UserListHeader","VirtualList","rowHeight","UserRow","isInitialLoad","searchQuery","getUsers","usersOffset","getUsersOffset","usersLimit","getUsersLimit","disabledUsersOffset","getDisabledUsersOffset","disabledUsersLimit","getDisabledUsersLimit","usersCount","val","redirectIfDisabled","loadUsers","setNewUserDefaultGroup","created","Notification","showTemporary","resetForm","subscribe","resetSearch","unsubscribe","handleScrollEnd","closeDialog","assign","defaultLanguage","currentGroup","allGroups","getGroups","findIndex","$router","showNewUserForm","NcAppContent","UserList","pageHeading","admin","window","OCA","Settings","registerAction","emit"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"settings-users-3239.js?v=d9db676f1e38fc8acfde","mappings":"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","sources":["webpack:///nextcloud/apps/settings/src/components/Users/UserSettingsDialog.vue?vue&type=style&index=0&id=9f7a355c&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/Users/UserRow.vue?vue&type=style&index=0&id=7faa9864&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/VirtualList.vue?vue&type=style&index=0&id=21942da5&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/UserListHeader.vue?vue&type=style&index=0&id=5c0f8828&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/service/groups.ts","webpack:///nextcloud/apps/settings/src/views/UserManagementNavigation.vue?vue&type=style&index=0&id=edf83404&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/Users/NewUserDialog.vue?vue&type=style&index=0&id=70bbf4c9&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/GroupListItem.vue?vue&type=style&index=0&id=3e2f3c17&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/views/UserManagementNavigation.vue","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?da91","webpack://nextcloud/./apps/settings/src/components/Users/UserSettingsDialog.vue?f361","webpack://nextcloud/./apps/settings/src/components/Users/UserSettingsDialog.vue?824e","webpack:///nextcloud/apps/settings/src/components/AppNavigationGroupList.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?e356","webpack://nextcloud/./apps/settings/src/components/GroupListItem.vue?7b19","webpack://nextcloud/./apps/settings/src/components/GroupListItem.vue?9f48","webpack:///nextcloud/apps/settings/src/composables/useGroupsNavigation.ts","webpack:///nextcloud/apps/settings/src/components/AppNavigationGroupList.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/settings/src/components/AppNavigationGroupList.vue?c74f","webpack:///nextcloud/apps/settings/src/views/UserManagementNavigation.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/settings/src/views/UserManagementNavigation.vue?3dcd","webpack://nextcloud/./apps/settings/src/views/UserManagementNavigation.vue?28b6","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/index.mjs","webpack:///nextcloud/apps/settings/src/components/UserList.vue?vue&type=style&index=0&id=1e8fee5a&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/views/UserManagement.vue?vue&type=style&index=0&id=253f9eec&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/UserListFooter.vue?vue&type=style&index=0&id=db2a7c4e&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/utils/userUtils.ts","webpack://nextcloud/./apps/settings/src/views/UserManagement.vue?4b28","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?7ade","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?9f19","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?b1db","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?e7ff","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","webpack:///nextcloud/apps/settings/src/components/Users/UserRowActions.vue?vue&type=script&lang=ts","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?d087","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?750d","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?c771","webpack://nextcloud/./apps/settings/src/views/UserManagement.vue?fd5a"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.dialog__note[data-v-9f7a355c]{font-weight:normal}fieldset[data-v-9f7a355c]{font-weight:bold}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/UserSettingsDialog.vue\"],\"names\":[],\"mappings\":\"AAEC,+BACC,kBAAA,CAIF,0BACC,gBAAA\",\"sourcesContent\":[\"\\n.dialog {\\n\\t&__note {\\n\\t\\tfont-weight: normal;\\n\\t}\\n}\\n\\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__row[data-v-7faa9864]{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-7faa9864]:hover{background-color:var(--color-background-hover)}.user-list__row:hover .row__cell[data-v-7faa9864]:not(.row__cell--actions){background-color:var(--color-background-hover)}.user-list__row .select--fill[data-v-7faa9864]{max-width:calc(var(--cell-width-large) - 2*var(--cell-padding))}.row__cell[data-v-7faa9864]{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-7faa9864],.row__cell span[data-v-7faa9864],.row__cell label[data-v-7faa9864]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.row__cell--avatar[data-v-7faa9864],.row__cell--displayname[data-v-7faa9864]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.row__cell--avatar[data-v-7faa9864]{inset-inline-start:0}.row__cell--displayname[data-v-7faa9864]{inset-inline-start:var(--avatar-cell-width);border-inline-end:1px solid var(--color-border)}}.row__cell--username[data-v-7faa9864]{padding-inline-start:calc(var(--default-grid-baseline)*3)}.row__cell--avatar[data-v-7faa9864]{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-7faa9864]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.row__cell--multiline span[data-v-7faa9864]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.row__cell--large[data-v-7faa9864]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.row__cell--obfuscated[data-v-7faa9864]{min-width:400px;width:400px}.row__cell--fill[data-v-7faa9864]{min-width:var(--cell-width-large);width:100%}.row__cell--actions[data-v-7faa9864]{position:sticky;inset-inline-end: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-inline-start:1px solid var(--color-border)}.row__subtitle[data-v-7faa9864]{color:var(--color-text-maxcontrast)}.row__cell[data-v-7faa9864]{border-bottom:1px solid var(--color-border)}.row__cell[data-v-7faa9864] .v-select.select{min-width:var(--cell-min-width)}.row__progress[data-v-7faa9864]{margin-top:4px}.row__progress--warn[data-v-7faa9864]::-moz-progress-bar{background:var(--color-warning) !important}.row__progress--warn[data-v-7faa9864]::-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,oBAAA,CAGD,yCACC,2CAAA,CACA,+CAAA,CAAA,CAIF,sCACC,yDAAA,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,kBAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,iDAAA,CAIF,gCACC,mCAAA,CDpFD,4BACC,2CAAA,CAGC,6CACC,+BAAA,CAKH,gCACC,cAAA,CAGC,yDACC,0CAAA,CAED,8DACC,0CAAA\",\"sourcesContent\":[\"\\n@use './shared/styles';\\n\\n.user-list__row {\\n\\t@include styles.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 styles.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\\tinset-inline-start: 0;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tinset-inline-start: var(--avatar-cell-width);\\n\\t\\t\\t\\tborder-inline-end: 1px solid var(--color-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--username {\\n\\t\\t\\tpadding-inline-start: 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\\tinset-inline-end: 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-inline-start: 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[data-v-21942da5]{--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-21942da5],.user-list__footer[data-v-21942da5]{position:sticky;display:block}.user-list__header[data-v-21942da5]{top:0;z-index:calc(var(--sticky-column-z-index) + 1)}.user-list__footer[data-v-21942da5]{inset-inline-start:0}.user-list__body[data-v-21942da5]{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,oBAAA,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\\tinset-inline-start: 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, `.header[data-v-5c0f8828]{border-bottom:1px solid var(--color-border);position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.header__cell[data-v-5c0f8828]{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-5c0f8828],.header__cell span[data-v-5c0f8828],.header__cell label[data-v-5c0f8828]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.header__cell--avatar[data-v-5c0f8828],.header__cell--displayname[data-v-5c0f8828]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.header__cell--avatar[data-v-5c0f8828]{inset-inline-start:0}.header__cell--displayname[data-v-5c0f8828]{inset-inline-start:var(--avatar-cell-width);border-inline-end:1px solid var(--color-border)}}.header__cell--username[data-v-5c0f8828]{padding-inline-start:calc(var(--default-grid-baseline)*3)}.header__cell--avatar[data-v-5c0f8828]{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-5c0f8828]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.header__cell--multiline span[data-v-5c0f8828]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.header__cell--large[data-v-5c0f8828]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.header__cell--obfuscated[data-v-5c0f8828]{min-width:400px;width:400px}.header__cell--fill[data-v-5c0f8828]{min-width:var(--cell-width-large);width:100%}.header__cell--actions[data-v-5c0f8828]{position:sticky;inset-inline-end: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-inline-start:1px solid var(--color-border)}.header__subtitle[data-v-5c0f8828]{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,yBACC,2CAAA,CCEA,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,oBAAA,CAGD,4CACC,2CAAA,CACA,+CAAA,CAAA,CAIF,yCACC,yDAAA,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,kBAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,iDAAA,CAIF,mCACC,mCAAA\",\"sourcesContent\":[\"\\n@use './shared/styles';\\n\\n.header {\\n\\tborder-bottom: 1px solid var(--color-border);\\n\\n\\t@include styles.row;\\n\\t@include styles.cell;\\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\\tinset-inline-start: 0;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tinset-inline-start: var(--avatar-cell-width);\\n\\t\\t\\t\\tborder-inline-end: 1px solid var(--color-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--username {\\n\\t\\t\\tpadding-inline-start: 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\\tinset-inline-end: 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-inline-start: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t&__subtitle {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport axios from '@nextcloud/axios';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { CancelablePromise } from 'cancelable-promise';\nconst formatGroup = (group) => ({\n id: group.id,\n name: group.displayname,\n usercount: group.usercount,\n disabled: group.disabled,\n canAdd: group.canAdd,\n canRemove: group.canRemove,\n});\n/**\n * Search groups\n *\n * @param {object} options Options\n * @param {string} options.search Search query\n * @param {number} options.offset Offset\n * @param {number} options.limit Limit\n */\nexport const searchGroups = ({ search, offset, limit }) => {\n const controller = new AbortController();\n return new CancelablePromise(async (resolve, reject, onCancel) => {\n onCancel(() => controller.abort());\n try {\n const { data } = await axios.get(generateOcsUrl('/cloud/groups/details?search={search}&offset={offset}&limit={limit}', { search, offset, limit }), {\n signal: controller.signal,\n });\n const groups = data.ocs?.data?.groups ?? [];\n const formattedGroups = groups.map(formatGroup);\n resolve(formattedGroups);\n }\n catch (error) {\n reject(error);\n }\n });\n};\n/**\n * Load user groups\n *\n * @param {object} options Options\n * @param {string} options.userId User id\n */\nexport const loadUserGroups = async ({ userId }) => {\n const url = generateOcsUrl('/cloud/users/{userId}/groups/details', { userId });\n const { data } = await axios.get(url);\n const groups = data.ocs?.data?.groups ?? [];\n const formattedGroups = groups.map(formatGroup);\n return formattedGroups;\n};\n/**\n * Load user subadmin groups\n *\n * @param {object} options Options\n * @param {string} options.userId User id\n */\nexport const loadUserSubAdminGroups = async ({ userId }) => {\n const url = generateOcsUrl('/cloud/users/{userId}/subadmins/details', { userId });\n const { data } = await axios.get(url);\n const groups = data.ocs?.data?.groups ?? [];\n const formattedGroups = groups.map(formatGroup);\n return formattedGroups;\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, `.account-management__navigation[data-v-edf83404] .app-navigation__body{will-change:scroll-position}.account-management__system-list[data-v-edf83404]{height:auto !important;overflow:visible !important}.account-management__group-list[data-v-edf83404]{height:100% !important}.account-management__settings-toggle[data-v-edf83404]{margin-bottom:12px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/views/UserManagementNavigation.vue\"],\"names\":[],\"mappings\":\"AAGE,uEACC,2BAAA,CAGF,kDACC,sBAAA,CACA,2BAAA,CAGD,iDACC,sBAAA,CAGD,sDACC,kBAAA\",\"sourcesContent\":[\"\\n.account-management {\\n\\t&__navigation {\\n\\t\\t:deep(.app-navigation__body) {\\n\\t\\t\\twill-change: scroll-position;\\n\\t\\t}\\n\\t}\\n\\t&__system-list {\\n\\t\\theight: auto !important;\\n\\t\\toverflow: visible !important;\\n\\t}\\n\\n\\t&__group-list {\\n\\t\\theight: 100% !important;\\n\\t}\\n\\n\\t&__settings-toggle {\\n\\t\\tmargin-bottom: 12px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.dialog__form[data-v-70bbf4c9]{display:flex;flex-direction:column;align-items:center;padding:0 8px;gap:4px 0}.dialog__item[data-v-70bbf4c9]{width:100%}.dialog__item[data-v-70bbf4c9]:not(:focus):not(:active){border-color:var(--color-border-dark)}.dialog__hint[data-v-70bbf4c9]{color:var(--color-text-maxcontrast);margin-top:8px;align-self:flex-start}.dialog__label[data-v-70bbf4c9]{display:block;padding:4px 0}.dialog__select[data-v-70bbf4c9]{width:100%}.dialog__managers[data-v-70bbf4c9]{margin-bottom:12px}.dialog__submit[data-v-70bbf4c9]{margin-top:4px;margin-bottom:8px}.dialog[data-v-70bbf4c9] .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, `.modal__header[data-v-3e2f3c17]{margin:0}.modal__content[data-v-3e2f3c17]{display:flex;flex-direction:column;align-items:center;padding:20px;gap:4px 0}.modal__button-row[data-v-3e2f3c17]{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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppNavigation,{staticClass:\"account-management__navigation\",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.AppNavigationGroupList)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<NcAppSettingsDialog :open.sync=\"isModalOpen\"\n\t\t:show-navigation=\"true\"\n\t\t:name=\"t('settings', 'Account management settings')\">\n\t\t<NcAppSettingsSection id=\"visibility-settings\"\n\t\t\t:name=\"t('settings', 'Visibility')\">\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\tdata-test=\"showLanguages\"\n\t\t\t\t:checked.sync=\"showLanguages\">\n\t\t\t\t{{ t('settings', 'Show language') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\tdata-test=\"showUserBackend\"\n\t\t\t\t:checked.sync=\"showUserBackend\">\n\t\t\t\t{{ t('settings', 'Show account backend') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\tdata-test=\"showStoragePath\"\n\t\t\t\t:checked.sync=\"showStoragePath\">\n\t\t\t\t{{ t('settings', 'Show storage path') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\tdata-test=\"showFirstLogin\"\n\t\t\t\t:checked.sync=\"showFirstLogin\">\n\t\t\t\t{{ t('settings', 'Show first login') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\tdata-test=\"showLastLogin\"\n\t\t\t\t:checked.sync=\"showLastLogin\">\n\t\t\t\t{{ t('settings', 'Show last login') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</NcAppSettingsSection>\n\n\t\t<NcAppSettingsSection id=\"groups-sorting\"\n\t\t\t:name=\"t('settings', 'Sorting')\">\n\t\t\t<NcNoteCard v-if=\"isGroupSortingEnforced\" type=\"warning\">\n\t\t\t\t{{ t('settings', 'The system config enforces sorting the groups by name. This also disables showing the member count.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<fieldset>\n\t\t\t\t<legend>{{ t('settings', 'Group list sorting') }}</legend>\n\t\t\t\t<NcNoteCard class=\"dialog__note\"\n\t\t\t\t\ttype=\"info\"\n\t\t\t\t\t:text=\"t('settings', 'Sorting only applies to the currently loaded groups for performance reasons. Groups will be loaded as you navigate or search through the list.')\" />\n\t\t\t\t<NcCheckboxRadioSwitch type=\"radio\"\n\t\t\t\t\t:checked.sync=\"groupSorting\"\n\t\t\t\t\tdata-test=\"sortGroupsByMemberCount\"\n\t\t\t\t\t:disabled=\"isGroupSortingEnforced\"\n\t\t\t\t\tname=\"group-sorting-mode\"\n\t\t\t\t\tvalue=\"member-count\">\n\t\t\t\t\t{{ t('settings', 'By member count') }}\n\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t<NcCheckboxRadioSwitch type=\"radio\"\n\t\t\t\t\t:checked.sync=\"groupSorting\"\n\t\t\t\t\tdata-test=\"sortGroupsByName\"\n\t\t\t\t\t:disabled=\"isGroupSortingEnforced\"\n\t\t\t\t\tname=\"group-sorting-mode\"\n\t\t\t\t\tvalue=\"name\">\n\t\t\t\t\t{{ t('settings', 'By name') }}\n\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t</fieldset>\n\t\t</NcAppSettingsSection>\n\n\t\t<NcAppSettingsSection id=\"email-settings\"\n\t\t\t:name=\"t('settings', 'Send email')\">\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\tdata-test=\"sendWelcomeMail\"\n\t\t\t\t:checked.sync=\"sendWelcomeMail\"\n\t\t\t\t:disabled=\"loadingSendMail\">\n\t\t\t\t{{ t('settings', 'Send welcome email to new accounts') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</NcAppSettingsSection>\n\n\t\t<NcAppSettingsSection id=\"default-settings\"\n\t\t\t:name=\"t('settings', 'Defaults')\">\n\t\t\t<NcSelect v-model=\"defaultQuota\"\n\t\t\t\t:clearable=\"false\"\n\t\t\t\t:create-option=\"validateQuota\"\n\t\t\t\t:filter-by=\"filterQuotas\"\n\t\t\t\t:input-label=\"t('settings', 'Default quota')\"\n\t\t\t\t:options=\"quotaOptions\"\n\t\t\t\tplacement=\"top\"\n\t\t\t\t:placeholder=\"t('settings', 'Select default quota')\"\n\t\t\t\ttaggable\n\t\t\t\t@option:selected=\"setDefaultQuota\" />\n\t\t</NcAppSettingsSection>\n\t</NcAppSettingsDialog>\n</template>\n\n<script>\nimport { formatFileSize, parseFileSize } from '@nextcloud/files'\nimport { generateUrl } from '@nextcloud/router'\n\nimport axios from '@nextcloud/axios'\nimport NcAppSettingsDialog from '@nextcloud/vue/components/NcAppSettingsDialog'\nimport NcAppSettingsSection from '@nextcloud/vue/components/NcAppSettingsSection'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/components/NcCheckboxRadioSwitch'\nimport NcNoteCard from '@nextcloud/vue/components/NcNoteCard'\nimport NcSelect from '@nextcloud/vue/components/NcSelect'\n\nimport { GroupSorting } from '../../constants/GroupManagement.ts'\nimport { unlimitedQuota } from '../../utils/userUtils.ts'\nimport logger from '../../logger.ts'\n\nexport default {\n\tname: 'UserSettingsDialog',\n\n\tcomponents: {\n\t\tNcAppSettingsDialog,\n\t\tNcAppSettingsSection,\n\t\tNcCheckboxRadioSwitch,\n\t\tNcNoteCard,\n\t\tNcSelect,\n\t},\n\n\tprops: {\n\t\topen: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tselectedQuota: false,\n\t\t\tloadingSendMail: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tgroupSorting: {\n\t\t\tget() {\n\t\t\t\treturn this.$store.getters.getGroupSorting === GroupSorting.GroupName ? 'name' : 'member-count'\n\t\t\t},\n\t\t\tset(sorting) {\n\t\t\t\tthis.$store.commit('setGroupSorting', sorting === 'name' ? GroupSorting.GroupName : GroupSorting.UserCount)\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Admin has configured `sort_groups_by_name` in the system config\n\t\t */\n\t\tisGroupSortingEnforced() {\n\t\t\treturn this.$store.getters.getServerData.forceSortGroupByName\n\t\t},\n\n\t\tisModalOpen: {\n\t\t\tget() {\n\t\t\t\treturn this.open\n\t\t\t},\n\t\t\tset(open) {\n\t\t\t\tthis.$emit('update:open', open)\n\t\t\t},\n\t\t},\n\n\t\tshowConfig() {\n\t\t\treturn this.$store.getters.getShowConfig\n\t\t},\n\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData\n\t\t},\n\n\t\tshowLanguages: {\n\t\t\tget() {\n\t\t\t\treturn this.showConfig.showLanguages\n\t\t\t},\n\t\t\tset(status) {\n\t\t\t\tthis.setShowConfig('showLanguages', status)\n\t\t\t},\n\t\t},\n\n\t\tshowFirstLogin: {\n\t\t\tget() {\n\t\t\t\treturn this.showConfig.showFirstLogin\n\t\t\t},\n\t\t\tset(status) {\n\t\t\t\tthis.setShowConfig('showFirstLogin', status)\n\t\t\t},\n\t\t},\n\n\t\tshowLastLogin: {\n\t\t\tget() {\n\t\t\t\treturn this.showConfig.showLastLogin\n\t\t\t},\n\t\t\tset(status) {\n\t\t\t\tthis.setShowConfig('showLastLogin', status)\n\t\t\t},\n\t\t},\n\n\t\tshowUserBackend: {\n\t\t\tget() {\n\t\t\t\treturn this.showConfig.showUserBackend\n\t\t\t},\n\t\t\tset(status) {\n\t\t\t\tthis.setShowConfig('showUserBackend', status)\n\t\t\t},\n\t\t},\n\n\t\tshowStoragePath: {\n\t\t\tget() {\n\t\t\t\treturn this.showConfig.showStoragePath\n\t\t\t},\n\t\t\tset(status) {\n\t\t\t\tthis.setShowConfig('showStoragePath', status)\n\t\t\t},\n\t\t},\n\n\t\tquotaOptions() {\n\t\t\t// convert the preset array into objects\n\t\t\tconst quotaPreset = this.settings.quotaPreset.reduce((acc, cur) => acc.concat({ id: cur, label: cur }), [])\n\t\t\t// add default presets\n\t\t\tif (this.settings.allowUnlimitedQuota) {\n\t\t\t\tquotaPreset.unshift(unlimitedQuota)\n\t\t\t}\n\t\t\treturn quotaPreset\n\t\t},\n\n\t\tdefaultQuota: {\n\t\t\tget() {\n\t\t\t\tif (this.selectedQuota !== false) {\n\t\t\t\t\treturn this.selectedQuota\n\t\t\t\t}\n\t\t\t\tif (this.settings.defaultQuota !== unlimitedQuota.id && OC.Util.computerFileSize(this.settings.defaultQuota) >= 0) {\n\t\t\t\t\t// if value is valid, let's map the quotaOptions or return custom quota\n\t\t\t\t\treturn { id: this.settings.defaultQuota, label: this.settings.defaultQuota }\n\t\t\t\t}\n\t\t\t\treturn unlimitedQuota // unlimited\n\t\t\t},\n\t\t\tset(quota) {\n\t\t\t\tthis.selectedQuota = quota\n\t\t\t},\n\t\t},\n\n\t\tsendWelcomeMail: {\n\t\t\tget() {\n\t\t\t\treturn this.settings.newUserSendEmail\n\t\t\t},\n\t\t\tasync set(value) {\n\t\t\t\ttry {\n\t\t\t\t\tthis.loadingSendMail = true\n\t\t\t\t\tthis.$store.commit('setServerData', {\n\t\t\t\t\t\t...this.settings,\n\t\t\t\t\t\tnewUserSendEmail: value,\n\t\t\t\t\t})\n\t\t\t\t\tawait axios.post(generateUrl('/settings/users/preferences/newUser.sendEmail'), { value: value ? 'yes' : 'no' })\n\t\t\t\t} catch (error) {\n\t\t\t\t\tlogger.error('Could not update newUser.sendEmail preference', { error })\n\t\t\t\t} finally {\n\t\t\t\t\tthis.loadingSendMail = false\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Check if a quota matches the current search.\n\t\t * This is a custom filter function to allow to map \"1GB\" to the label \"1 GB\" (ignoring whitespaces).\n\t\t *\n\t\t * @param option The quota to check\n\t\t * @param label The label of the quota\n\t\t * @param search The search string\n\t\t */\n\t\tfilterQuotas(option, label, search) {\n\t\t\tconst searchValue = search.toLocaleLowerCase().replaceAll(/\\s/g, '')\n\t\t\treturn (label || '')\n\t\t\t\t.toLocaleLowerCase()\n\t\t\t\t.replaceAll(/\\s/g, '')\n\t\t\t\t.indexOf(searchValue) > -1\n\t\t},\n\n\t\tsetShowConfig(key, status) {\n\t\t\tthis.$store.commit('setShowConfig', { key, value: status })\n\t\t},\n\n\t\t/**\n\t\t * Validate quota string to make sure it's a valid human file size\n\t\t *\n\t\t * @param {string | object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}\n\t\t * @return {object} The validated quota object or unlimited quota if input is invalid\n\t\t */\n\t\tvalidateQuota(quota) {\n\t\t\tif (typeof quota === 'object') {\n\t\t\t\tquota = quota?.id || quota.label\n\t\t\t}\n\t\t\t// only used for new presets sent through @Tag\n\t\t\tconst validQuota = parseFileSize(quota, true)\n\t\t\tif (validQuota === null) {\n\t\t\t\treturn unlimitedQuota\n\t\t\t}\n\t\t\t// unify format output\n\t\t\tquota = formatFileSize(validQuota)\n\t\t\treturn { id: quota, label: quota }\n\t\t},\n\n\t\t/**\n\t\t * Dispatch default quota set request\n\t\t *\n\t\t * @param {string | object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}\n\t\t */\n\t\tsetDefaultQuota(quota = 'none') {\n\t\t\t// Make sure correct label is set for unlimited quota\n\t\t\tif (quota === 'none') {\n\t\t\t\tquota = unlimitedQuota\n\t\t\t}\n\t\t\tthis.$store.dispatch('setAppConfig', {\n\t\t\t\tapp: 'files',\n\t\t\t\tkey: 'default_quota',\n\t\t\t\t// ensure we only send the preset id\n\t\t\t\tvalue: quota.id ? quota.id : quota,\n\t\t\t}).then(() => {\n\t\t\t\tif (typeof quota !== 'object') {\n\t\t\t\t\tquota = { id: quota, label: quota }\n\t\t\t\t}\n\t\t\t\tthis.defaultQuota = quota\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.dialog {\n\t&__note {\n\t\tfont-weight: normal;\n\t}\n}\n\nfieldset {\n\tfont-weight: bold;\n}\n</style>\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=9f7a355c&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserSettingsDialog.vue?vue&type=style&index=0&id=9f7a355c&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=9f7a355c&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=9f7a355c&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 \"9f7a355c\",\n null\n \n)\n\nexport default component.exports","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\":\"showFirstLogin\",\"checked\":_vm.showFirstLogin},on:{\"update:checked\":function($event){_vm.showFirstLogin=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show first login'))+\"\\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('NcNoteCard',{staticClass:\"dialog__note\",attrs:{\"type\":\"info\",\"text\":_vm.t('settings', 'Sorting only applies to the currently loaded groups for performance reasons. Groups will be loaded as you navigate or search through the list.')}}),_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 }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.Fragment,[_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.NcAppNavigationSearch,{attrs:{\"label\":_setup.t('settings', 'Search groups…')},model:{value:(_setup.groupsSearchQuery),callback:function ($$v) {_setup.groupsSearchQuery=$$v},expression:\"groupsSearchQuery\"}}),_vm._v(\" \"),_c('p',{staticClass:\"hidden-visually\",attrs:{\"id\":\"group-list-desc\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_setup.t('settings', 'List of groups. This list is not fully populated for performance reasons. The groups will be loaded as you navigate or search through the list.'))+\"\\n\\t\")]),_vm._v(\" \"),_c(_setup.NcAppNavigationList,{staticClass:\"account-management__group-list\",attrs:{\"aria-describedby\":\"group-list-desc\",\"data-cy-users-settings-navigation-groups\":\"custom\"}},[_vm._l((_setup.userGroups),function(group){return _c(_setup.GroupListItem,{key:group.id,ref:\"groupListItems\",refInFor:true,attrs:{\"id\":group.id,\"active\":_setup.selectedGroupDecoded === group.id,\"name\":group.title,\"count\":group.count}})}),_vm._v(\" \"),(_setup.loadingGroups)?_c('div',{attrs:{\"role\":\"note\"}},[_c(_setup.NcLoadingIcon,{attrs:{\"name\":_setup.t('settings', 'Loading groups…')}})],1):_vm._e()],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<Fragment>\n\t\t<NcModal v-if=\"showRemoveGroupModal\"\n\t\t\t@close=\"showRemoveGroupModal = false\">\n\t\t\t<div class=\"modal__content\">\n\t\t\t\t<h2 class=\"modal__header\">\n\t\t\t\t\t{{ t('settings', 'Please confirm the group removal') }}\n\t\t\t\t</h2>\n\t\t\t\t<NcNoteCard type=\"warning\"\n\t\t\t\t\tshow-alert>\n\t\t\t\t\t{{ t('settings', 'You are about to delete the group \"{group}\". The accounts will NOT be deleted.', { group: name }) }}\n\t\t\t\t</NcNoteCard>\n\t\t\t\t<div class=\"modal__button-row\">\n\t\t\t\t\t<NcButton type=\"secondary\"\n\t\t\t\t\t\t@click=\"showRemoveGroupModal = false\">\n\t\t\t\t\t\t{{ t('settings', 'Cancel') }}\n\t\t\t\t\t</NcButton>\n\t\t\t\t\t<NcButton type=\"primary\"\n\t\t\t\t\t\t@click=\"removeGroup\">\n\t\t\t\t\t\t{{ t('settings', 'Confirm') }}\n\t\t\t\t\t</NcButton>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</NcModal>\n\n\t\t<NcAppNavigationItem :key=\"id\"\n\t\t\tref=\"listItem\"\n\t\t\t:exact=\"true\"\n\t\t\t:name=\"name\"\n\t\t\t:to=\"{ name: 'group', params: { selectedGroup: encodeURIComponent(id) } }\"\n\t\t\t:loading=\"loadingRenameGroup\"\n\t\t\t:menu-open=\"openGroupMenu\"\n\t\t\t@update:menuOpen=\"handleGroupMenuOpen\">\n\t\t\t<template #icon>\n\t\t\t\t<AccountGroup :size=\"20\" />\n\t\t\t</template>\n\t\t\t<template #counter>\n\t\t\t\t<NcCounterBubble v-if=\"count\"\n\t\t\t\t\t:type=\"active ? 'highlighted' : undefined\">\n\t\t\t\t\t{{ count }}\n\t\t\t\t</NcCounterBubble>\n\t\t\t</template>\n\t\t\t<template #actions>\n\t\t\t\t<NcActionInput v-if=\"id !== 'admin' && id !== 'disabled' && (settings.isAdmin || settings.isDelegatedAdmin)\"\n\t\t\t\t\tref=\"displayNameInput\"\n\t\t\t\t\t:trailing-button-label=\"t('settings', 'Submit')\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t:value=\"name\"\n\t\t\t\t\t:label=\" t('settings', 'Rename group')\"\n\t\t\t\t\t@submit=\"renameGroup(id)\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<Pencil :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t</NcActionInput>\n\t\t\t\t<NcActionButton v-if=\"id !== 'admin' && id !== 'disabled' && (settings.isAdmin || settings.isDelegatedAdmin)\"\n\t\t\t\t\t@click=\"showRemoveGroupModal = true\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<Delete :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('settings', 'Delete group') }}\n\t\t\t\t</NcActionButton>\n\t\t\t</template>\n\t\t</NcAppNavigationItem>\n\t</Fragment>\n</template>\n\n<script>\nimport { Fragment } from 'vue-frag'\n\nimport NcActionButton from '@nextcloud/vue/components/NcActionButton'\nimport NcActionInput from '@nextcloud/vue/components/NcActionInput'\nimport NcAppNavigationItem from '@nextcloud/vue/components/NcAppNavigationItem'\nimport NcButton from '@nextcloud/vue/components/NcButton'\nimport NcCounterBubble from '@nextcloud/vue/components/NcCounterBubble'\nimport NcModal from '@nextcloud/vue/components/NcModal'\nimport NcNoteCard from '@nextcloud/vue/components/NcNoteCard'\n\nimport AccountGroup from 'vue-material-design-icons/AccountGroup.vue'\nimport Delete from 'vue-material-design-icons/Delete.vue'\nimport Pencil from 'vue-material-design-icons/Pencil.vue'\n\nimport { showError } from '@nextcloud/dialogs'\n\nexport default {\n\tname: 'GroupListItem',\n\tcomponents: {\n\t\tAccountGroup,\n\t\tDelete,\n\t\tFragment,\n\t\tNcActionButton,\n\t\tNcActionInput,\n\t\tNcAppNavigationItem,\n\t\tNcButton,\n\t\tNcCounterBubble,\n\t\tNcModal,\n\t\tNcNoteCard,\n\t\tPencil,\n\t},\n\tprops: {\n\t\t/**\n\t\t * If this group is currently selected\n\t\t */\n\t\tactive: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\t/**\n\t\t * Number of members within this group\n\t\t */\n\t\tcount: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * Identifier of this group\n\t\t */\n\t\tid: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\t/**\n\t\t * Name of this group\n\t\t */\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tloadingRenameGroup: false,\n\t\t\topenGroupMenu: false,\n\t\t\tshowRemoveGroupModal: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData\n\t\t},\n\t},\n\tmethods: {\n\t\thandleGroupMenuOpen() {\n\t\t\tthis.openGroupMenu = true\n\t\t},\n\t\tasync renameGroup(gid) {\n\t\t\t// check if group id is valid\n\t\t\tif (gid.trim() === '') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst displayName = this.$refs.displayNameInput.$el.querySelector('input[type=\"text\"]').value\n\n\t\t\t// check if group name is valid\n\t\t\tif (displayName.trim() === '') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tthis.openGroupMenu = false\n\t\t\t\tthis.loadingRenameGroup = true\n\t\t\t\tawait this.$store.dispatch('renameGroup', {\n\t\t\t\t\tgroupid: gid.trim(),\n\t\t\t\t\tdisplayName: displayName.trim(),\n\t\t\t\t})\n\n\t\t\t\tthis.loadingRenameGroup = false\n\t\t\t} catch {\n\t\t\t\tthis.openGroupMenu = true\n\t\t\t\tthis.loadingRenameGroup = false\n\t\t\t}\n\t\t},\n\t\tasync removeGroup() {\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('removeGroup', this.id)\n\t\t\t\tthis.showRemoveGroupModal = false\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('settings', 'Failed to delete group \"{group}\"', { group: this.name }))\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\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</style>\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=3e2f3c17&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupListItem.vue?vue&type=style&index=0&id=3e2f3c17&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=3e2f3c17&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=3e2f3c17&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 \"3e2f3c17\",\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 delete 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,ref:\"listItem\",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', 'Delete group'))+\"\\n\\t\\t\\t\")]):_vm._e()]},proxy:true}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","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!./AppNavigationGroupList.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!./AppNavigationGroupList.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./AppNavigationGroupList.vue?vue&type=template&id=2057c7ae\"\nimport script from \"./AppNavigationGroupList.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppNavigationGroupList.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 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=edf83404&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserManagementNavigation.vue?vue&type=style&index=0&id=edf83404&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=edf83404&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=edf83404&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 \"edf83404\",\n null\n \n)\n\nexport default component.exports","import { N as NcActionButton } from \"./chunks/NcActionButton-Gpv56vuS.mjs\";\nimport { N as NcActionButtonGroup } from \"./chunks/NcActionButtonGroup-BteTNhIn.mjs\";\nimport NcActionCaption from \"./Components/NcActionCaption.mjs\";\nimport { N as NcActionCheckbox } from \"./chunks/NcActionCheckbox-DSMKeccY.mjs\";\nimport { N as NcActionInput } from \"./chunks/NcActionInput-QO_UKY2v.mjs\";\nimport NcActionLink from \"./Components/NcActionLink.mjs\";\nimport { N as NcActionRadio } from \"./chunks/NcActionRadio-yAm71xxU.mjs\";\nimport NcActionRouter from \"./Components/NcActionRouter.mjs\";\nimport { N as NcActions } from \"./chunks/NcActions-CucWK-m-.mjs\";\nimport NcActionSeparator from \"./Components/NcActionSeparator.mjs\";\nimport NcActionText from \"./Components/NcActionText.mjs\";\nimport { N as NcActionTextEditable } from \"./chunks/NcActionTextEditable-BYqqHPj2.mjs\";\nimport { N as NcAppContent } from \"./chunks/NcAppContent-_x1Bvwg-.mjs\";\nimport NcAppContentDetails from \"./Components/NcAppContentDetails.mjs\";\nimport NcAppContentList from \"./Components/NcAppContentList.mjs\";\nimport { N as NcAppNavigation } from \"./chunks/NcAppNavigation-H8Gvbq5E.mjs\";\nimport { N as NcAppNavigationCaption } from \"./chunks/NcAppNavigationCaption-C0Fkd9G7.mjs\";\nimport NcAppNavigationIconBullet from \"./Components/NcAppNavigationIconBullet.mjs\";\nimport { N as NcAppNavigationItem } from \"./chunks/NcAppNavigationItem-CDut0DWY.mjs\";\nimport NcAppNavigationList from \"./Components/NcAppNavigationList.mjs\";\nimport NcAppNavigationNew from \"./Components/NcAppNavigationNew.mjs\";\nimport { N as NcAppNavigationNewItem } from \"./chunks/NcAppNavigationNewItem-DGjgp78o.mjs\";\nimport { N as NcAppNavigationSearch } from \"./chunks/NcAppNavigationSearch-DTW6CtnU.mjs\";\nimport { N as NcAppNavigationSettings } from \"./chunks/NcAppNavigationSettings-C0QuEMmn.mjs\";\nimport NcAppNavigationSpacer from \"./Components/NcAppNavigationSpacer.mjs\";\nimport { N as NcAppSettingsDialog } from \"./chunks/NcAppSettingsDialog-Dl-kMSpe.mjs\";\nimport NcAppSettingsSection from \"./Components/NcAppSettingsSection.mjs\";\nimport { N as NcAppSidebar } from \"./chunks/NcAppSidebar-C5fqF8Ll.mjs\";\nimport NcAppSidebarTab from \"./Components/NcAppSidebarTab.mjs\";\nimport { N as NcAvatar } from \"./chunks/NcAvatar-Db8tkJt9.mjs\";\nimport { u } from \"./chunks/NcAvatar-Db8tkJt9.mjs\";\nimport { N as NcBlurHash } from \"./chunks/NcBlurHash-do2wxY-0.mjs\";\nimport { N as NcBreadcrumb } from \"./chunks/NcBreadcrumb-CuKf9Utm.mjs\";\nimport { N as NcBreadcrumbs } from \"./chunks/NcBreadcrumbs-DR2_1tNR.mjs\";\nimport NcButton from \"./Components/NcButton.mjs\";\nimport { N as NcCheckboxRadioSwitch } from \"./chunks/NcCheckboxRadioSwitch-Di9rSADK.mjs\";\nimport { N as NcCollectionList } from \"./chunks/NcCollectionList-N169E0Rf.mjs\";\nimport { N as NcColorPicker } from \"./chunks/NcColorPicker-BzSsZRm3.mjs\";\nimport { N as NcContent } from \"./chunks/NcContent-BHl5YDYI.mjs\";\nimport { N as NcCounterBubble } from \"./chunks/NcCounterBubble-CDfRYl8B.mjs\";\nimport { N as NcDashboardWidget } from \"./chunks/NcDashboardWidget-DwWee7mc.mjs\";\nimport { N as NcDashboardWidgetItem } from \"./chunks/NcDashboardWidgetItem-Csgi1gF2.mjs\";\nimport { N as NcDateTime } from \"./chunks/NcDateTime-BR6BBvML.mjs\";\nimport { u as u2 } from \"./chunks/NcDateTime-BR6BBvML.mjs\";\nimport NcDateTimePicker from \"./Components/NcDateTimePicker.mjs\";\nimport NcDateTimePickerNative from \"./Components/NcDateTimePickerNative.mjs\";\nimport { N as NcDialog } from \"./chunks/NcDialog-D2lwwZL-.mjs\";\nimport { N as NcDialogButton } from \"./chunks/NcDialogButton-BB56HcBl.mjs\";\nimport NcEllipsisedOption from \"./Components/NcEllipsisedOption.mjs\";\nimport { N as NcEmojiPicker } from \"./chunks/NcEmojiPicker-DyBFXXm7.mjs\";\nimport NcEmptyContent from \"./Components/NcEmptyContent.mjs\";\nimport NcGuestContent from \"./Components/NcGuestContent.mjs\";\nimport NcHeaderButton from \"./Components/NcHeaderButton.mjs\";\nimport { N as NcHeaderMenu } from \"./chunks/NcHeaderMenu-Bc1ucNsv.mjs\";\nimport { N as NcHighlight } from \"./chunks/index-Bz6q9mZw.mjs\";\nimport { N as NcIconSvgWrapper } from \"./chunks/NcIconSvgWrapper-RKuZn260.mjs\";\nimport { N as NcInputField } from \"./chunks/NcInputField-DTtUueUZ.mjs\";\nimport { N as NcListItem } from \"./chunks/NcListItem-BGoyHTZy.mjs\";\nimport { N as NcListItemIcon } from \"./chunks/NcListItemIcon-BG5v_qys.mjs\";\nimport NcLoadingIcon from \"./Components/NcLoadingIcon.mjs\";\nimport NcModal from \"./Components/NcModal.mjs\";\nimport NcNoteCard from \"./Components/NcNoteCard.mjs\";\nimport { N as NcPasswordField } from \"./chunks/NcPasswordField-CTKHRVC4.mjs\";\nimport { N as NcPopover } from \"./chunks/NcPopover-m0hDmALa.mjs\";\nimport { N as NcProgressBar } from \"./chunks/NcProgressBar-DegJ2JjE.mjs\";\nimport { N as NcRelatedResourcesPanel } from \"./chunks/NcRelatedResourcesPanel-CmiW_ds0.mjs\";\nimport { N as NcMentionBubble } from \"./chunks/index-G8WQDZ8G.mjs\";\nimport { r } from \"./chunks/index-G8WQDZ8G.mjs\";\nimport { N as NcAutoCompleteResult, a as NcRichContenteditable } from \"./chunks/NcRichContenteditable-CE1hvtcT.mjs\";\nimport { N as NcRichText } from \"./chunks/NcRichText-D6qJ5S5v.mjs\";\nimport { N, h, d, i, b, r as r2, c, a } from \"./chunks/index-56SXuvlv.mjs\";\nimport \"@vueuse/core\";\nimport \"vue\";\nimport \"vue-router\";\nimport { a as a2, g, b as b2, c as c2, d as d2, s } from \"./chunks/referencePickerModal-CMKHbYwz.mjs\";\nimport \"unist-util-visit\";\nimport \"unist-builder\";\nimport \"@nextcloud/router\";\nimport \"@nextcloud/axios\";\nimport \"@nextcloud/sharing/public\";\nimport \"@nextcloud/auth\";\nimport { N as NcSelect } from \"./chunks/NcSelect-TmGBPLzc.mjs\";\nimport { N as NcTextField } from \"./chunks/NcTextField-DRANdaIf.mjs\";\nimport \"@nextcloud/event-bus\";\nimport { N as NcSavingIndicatorIcon } from \"./chunks/NcSavingIndicatorIcon-nv1147dk.mjs\";\nimport { N as NcSelectTags } from \"./chunks/NcSelectTags-li-HYR2n.mjs\";\nimport { N as NcSelectUsers } from \"./chunks/NcSelectUsers-BQO_sQJ8.mjs\";\nimport { N as NcSettingsInputText } from \"./chunks/NcSettingsInputText-t1FMnLKA.mjs\";\nimport { N as NcSettingsSection } from \"./chunks/NcSettingsSection-EC3SmiDX.mjs\";\nimport { N as NcSettingsSelectGroup } from \"./chunks/NcSettingsSelectGroup-dzvfki-M.mjs\";\nimport { N as NcTextArea } from \"./chunks/NcTextArea-BHERsE_g.mjs\";\nimport { N as NcTimezonePicker } from \"./chunks/NcTimezonePicker-C17Rji1h.mjs\";\nimport { N as NcUserBubble } from \"./chunks/NcUserBubble-cO5krePG.mjs\";\nimport { N as NcUserStatusIcon } from \"./chunks/NcUserStatusIcon-WEKmuaoU.mjs\";\nimport NcVNodes from \"./Components/NcVNodes.mjs\";\nimport { isFullscreenState, useIsFullscreen } from \"./Composables/useIsFullscreen.mjs\";\nimport { MOBILE_BREAKPOINT, MOBILE_SMALL_BREAKPOINT, isMobileState, useIsMobile, useIsSmallMobile } from \"./Composables/useIsMobile.mjs\";\nimport { useHotKey } from \"./Composables/useHotKey.mjs\";\nimport { useIsDarkTheme, useIsDarkThemeElement } from \"./Composables/useIsDarkTheme.mjs\";\nimport { isA11yActivation } from \"./Functions/a11y.mjs\";\nimport { getEnabledContactsMenuActions, registerContactsMenuAction } from \"./Functions/contactsMenu.mjs\";\nimport { spawnDialog } from \"./Functions/dialog.mjs\";\nimport { E, a as a3, e, g as g2, s as s2 } from \"./chunks/emoji-BY_D0V5K.mjs\";\nimport { checkIfDarkTheme, isDarkTheme } from \"./Functions/isDarkTheme.mjs\";\nimport { preloadImage } from \"./Functions/preloadImage.mjs\";\nimport { u as u3 } from \"./chunks/usernameToColor-DJfepfog.mjs\";\nimport { directive } from \"./Directives/Focus.mjs\";\nimport { directive as directive$1 } from \"./Directives/Linkify.mjs\";\nimport \"./Directives/Tooltip.mjs\";\nimport { default as default2 } from \"./Mixins/clickOutsideOptions.mjs\";\nimport { default as default3 } from \"./Mixins/isFullscreen.mjs\";\nimport { default as default4 } from \"./Mixins/isMobile.mjs\";\nimport { VTooltip } from \"floating-vue\";\nimport { VTooltip as VTooltip2 } from \"floating-vue\";\nconst NcComponents = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n NcActionButton,\n NcActionButtonGroup,\n NcActionCaption,\n NcActionCheckbox,\n NcActionInput,\n NcActionLink,\n NcActionRadio,\n NcActionRouter,\n NcActionSeparator,\n NcActionText,\n NcActionTextEditable,\n NcActions,\n NcAppContent,\n NcAppContentDetails,\n NcAppContentList,\n NcAppNavigation,\n NcAppNavigationCaption,\n NcAppNavigationIconBullet,\n NcAppNavigationItem,\n NcAppNavigationList,\n NcAppNavigationNew,\n NcAppNavigationNewItem,\n NcAppNavigationSearch,\n NcAppNavigationSettings,\n NcAppNavigationSpacer,\n NcAppSettingsDialog,\n NcAppSettingsSection,\n NcAppSidebar,\n NcAppSidebarTab,\n NcAutoCompleteResult,\n NcAvatar,\n NcBlurHash,\n NcBreadcrumb,\n NcBreadcrumbs,\n NcButton,\n NcCheckboxRadioSwitch,\n NcCollectionList,\n NcColorPicker,\n NcContent,\n NcCounterBubble,\n NcDashboardWidget,\n NcDashboardWidgetItem,\n NcDateTime,\n NcDateTimePicker,\n NcDateTimePickerNative,\n NcDialog,\n NcDialogButton,\n NcEllipsisedOption,\n NcEmojiPicker,\n NcEmptyContent,\n NcGuestContent,\n NcHeaderButton,\n NcHeaderMenu,\n NcHighlight,\n NcIconSvgWrapper,\n NcInputField,\n NcListItem,\n NcListItemIcon,\n NcLoadingIcon,\n NcMentionBubble,\n NcModal,\n NcNoteCard,\n NcPasswordField,\n NcPopover,\n NcProgressBar,\n NcRelatedResourcesPanel,\n NcRichContenteditable,\n NcRichText,\n NcSavingIndicatorIcon,\n NcSelect,\n NcSelectTags,\n NcSelectUsers,\n NcSettingsInputText,\n NcSettingsSection,\n NcSettingsSelectGroup,\n NcTextArea,\n NcTextField,\n NcTimezonePicker,\n NcUserBubble,\n NcUserStatusIcon,\n NcVNodes\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst NcDirectives = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n Focus: directive,\n Linkify: directive$1,\n Tooltip: VTooltip\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst NextcloudVuePlugin = {\n install(Vue) {\n Object.entries(NcComponents).forEach(([name, component]) => {\n Vue.component(component.name || name, component);\n });\n Object.entries(NcDirectives).forEach(([name, directive2]) => {\n Vue.directive(name, directive2);\n });\n }\n};\nexport {\n E as EmojiSkinTone,\n directive as Focus,\n directive$1 as Linkify,\n MOBILE_BREAKPOINT,\n MOBILE_SMALL_BREAKPOINT,\n NcActionButton,\n NcActionButtonGroup,\n NcActionCaption,\n NcActionCheckbox,\n NcActionInput,\n NcActionLink,\n NcActionRadio,\n NcActionRouter,\n NcActionSeparator,\n NcActionText,\n NcActionTextEditable,\n NcActions,\n NcAppContent,\n NcAppContentDetails,\n NcAppContentList,\n NcAppNavigation,\n NcAppNavigationCaption,\n NcAppNavigationIconBullet,\n NcAppNavigationItem,\n NcAppNavigationList,\n NcAppNavigationNew,\n NcAppNavigationNewItem,\n NcAppNavigationSearch,\n NcAppNavigationSettings,\n NcAppNavigationSpacer,\n NcAppSettingsDialog,\n NcAppSettingsSection,\n NcAppSidebar,\n NcAppSidebarTab,\n NcAutoCompleteResult,\n NcAvatar,\n NcBlurHash,\n NcBreadcrumb,\n NcBreadcrumbs,\n NcButton,\n NcCheckboxRadioSwitch,\n NcCollectionList,\n NcColorPicker,\n NcContent,\n NcCounterBubble,\n N as NcCustomPickerRenderResult,\n NcDashboardWidget,\n NcDashboardWidgetItem,\n NcDateTime,\n NcDateTimePicker,\n NcDateTimePickerNative,\n NcDialog,\n NcDialogButton,\n NcEllipsisedOption,\n NcEmojiPicker,\n NcEmptyContent,\n NcGuestContent,\n NcHeaderButton,\n NcHeaderMenu,\n NcHighlight,\n NcIconSvgWrapper,\n NcInputField,\n NcListItem,\n NcListItemIcon,\n NcLoadingIcon,\n NcMentionBubble,\n NcModal,\n NcNoteCard,\n NcPasswordField,\n NcPopover,\n NcProgressBar,\n NcRelatedResourcesPanel,\n NcRichContenteditable,\n NcRichText,\n NcSavingIndicatorIcon,\n NcSelect,\n NcSelectTags,\n NcSelectUsers,\n NcSettingsInputText,\n NcSettingsSection,\n NcSettingsSelectGroup,\n NcTextArea,\n NcTextField,\n NcTimezonePicker,\n NcUserBubble,\n NcUserStatusIcon,\n NcVNodes,\n NextcloudVuePlugin,\n VTooltip2 as Tooltip,\n a2 as anyLinkProviderId,\n checkIfDarkTheme,\n default2 as clickOutsideOptions,\n a3 as emojiAddRecent,\n e as emojiSearch,\n g2 as getCurrentSkinTone,\n getEnabledContactsMenuActions,\n g as getLinkWithPicker,\n b2 as getProvider,\n c2 as getProviders,\n h as hasInteractiveView,\n isA11yActivation,\n d as isCustomPickerElementRegistered,\n isDarkTheme,\n default3 as isFullscreen,\n isFullscreenState,\n default4 as isMobile,\n isMobileState,\n i as isWidgetRegistered,\n preloadImage,\n registerContactsMenuAction,\n b as registerCustomPickerElement,\n r2 as registerWidget,\n c as renderCustomPickerElement,\n a as renderWidget,\n r as richEditor,\n d2 as searchProvider,\n s2 as setCurrentSkinTone,\n s as sortProviders,\n spawnDialog,\n u2 as useFormatDateTime,\n useHotKey,\n useIsDarkTheme,\n useIsDarkThemeElement,\n useIsFullscreen,\n useIsMobile,\n useIsSmallMobile,\n u as userStatus,\n u3 as usernameToColor\n};\n//# sourceMappingURL=index.mjs.map\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-1e8fee5a] .icon-vue{width:64px;height:64px}.empty[data-v-1e8fee5a] .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@use './Users/shared/styles' as *;\\n\\n.empty {\\n\\t:deep {\\n\\t\\t.icon-vue {\\n\\t\\t\\twidth: 64px;\\n\\t\\t\\theight: 64px;\\n\\n\\t\\t\\tsvg {\\n\\t\\t\\t\\tmax-width: 64px;\\n\\t\\t\\t\\tmax-height: 64px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-content[data-v-253f9eec]{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, `.footer[data-v-db2a7c4e]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.footer__cell[data-v-db2a7c4e]{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-db2a7c4e],.footer__cell span[data-v-db2a7c4e],.footer__cell label[data-v-db2a7c4e]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.footer__cell--avatar[data-v-db2a7c4e],.footer__cell--displayname[data-v-db2a7c4e]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.footer__cell--avatar[data-v-db2a7c4e]{inset-inline-start:0}.footer__cell--displayname[data-v-db2a7c4e]{inset-inline-start:var(--avatar-cell-width);border-inline-end:1px solid var(--color-border)}}.footer__cell--username[data-v-db2a7c4e]{padding-inline-start:calc(var(--default-grid-baseline)*3)}.footer__cell--avatar[data-v-db2a7c4e]{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-db2a7c4e]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.footer__cell--multiline span[data-v-db2a7c4e]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.footer__cell--large[data-v-db2a7c4e]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.footer__cell--obfuscated[data-v-db2a7c4e]{min-width:400px;width:400px}.footer__cell--fill[data-v-db2a7c4e]{min-width:var(--cell-width-large);width:100%}.footer__cell--actions[data-v-db2a7c4e]{position:sticky;inset-inline-end: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-inline-start:1px solid var(--color-border)}.footer__subtitle[data-v-db2a7c4e]{color:var(--color-text-maxcontrast)}.footer__cell[data-v-db2a7c4e]{position:sticky;color:var(--color-text-maxcontrast)}.footer__cell--loading[data-v-db2a7c4e]{inset-inline-start:0;min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0}.footer__cell--count[data-v-db2a7c4e]{inset-inline-start: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,oBAAA,CAGD,4CACC,2CAAA,CACA,+CAAA,CAAA,CAIF,yCACC,yDAAA,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,kBAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,iDAAA,CAIF,mCACC,mCAAA,CDpGD,+BACC,eAAA,CACA,mCAAA,CAEA,wCACC,oBAAA,CACA,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CAGD,sCACC,2CAAA,CACA,2BAAA,CACA,uBAAA\",\"sourcesContent\":[\"\\n@use './shared/styles';\\n\\n.footer {\\n\\t@include styles.row;\\n\\t@include styles.cell;\\n\\n\\t&__cell {\\n\\t\\tposition: sticky;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\n\\t\\t&--loading {\\n\\t\\t\\tinset-inline-start: 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\\tinset-inline-start: 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\\tinset-inline-start: 0;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tinset-inline-start: var(--avatar-cell-width);\\n\\t\\t\\t\\tborder-inline-end: 1px solid var(--color-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--username {\\n\\t\\t\\tpadding-inline-start: 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\\tinset-inline-end: 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-inline-start: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t&__subtitle {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/**\n * 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 The user to check\n * @param user.id Id of the user\n */\nexport const isObfuscated = (user) => {\n const keys = Object.keys(user);\n return keys.length === 1 && keys.at(0) === 'id';\n};\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 }","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=21942da5&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=style&index=0&id=21942da5&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=21942da5&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=21942da5&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 \"21942da5\",\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:{\"data-test\":\"groups\",\"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.availableGroups,\"value\":_vm.newUser.groups,\"label\":\"name\",\"close-on-select\":false,\"multiple\":true,\"taggable\":_vm.settings.isAdmin || _vm.settings.isDelegatedAdmin,\"required\":!_vm.settings.isAdmin && !_vm.settings.isDelegatedAdmin,\"create-option\":(value) => ({ id: value, name: value, isCreating: true })},on:{\"search\":_vm.searchGroups,\"option:created\":_vm.createGroup,\"option:selected\":options => _vm.addGroup(options.at(-1))}})],1),_vm._v(\" \"),_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 …'),\"disabled\":_vm.loading.groups || _vm.loading.all,\"options\":_vm.subAdminsGroups,\"close-on-select\":false,\"multiple\":true,\"label\":\"name\"},on:{\"search\":_vm.searchGroups},model:{value:(_vm.newUser.subAdminsGroups),callback:function ($$v) {_vm.$set(_vm.newUser, \"subAdminsGroups\", $$v)},expression:\"newUser.subAdminsGroups\"}})],1),_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 - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<NcDialog class=\"dialog\"\n\t\tsize=\"small\"\n\t\t:name=\"t('settings', 'New account')\"\n\t\tout-transition\n\t\tv-on=\"$listeners\">\n\t\t<form id=\"new-user-form\"\n\t\t\tclass=\"dialog__form\"\n\t\t\tdata-test=\"form\"\n\t\t\t:disabled=\"loading.all\"\n\t\t\t@submit.prevent=\"createUser\">\n\t\t\t<NcTextField ref=\"username\"\n\t\t\t\tclass=\"dialog__item\"\n\t\t\t\tdata-test=\"username\"\n\t\t\t\t:value.sync=\"newUser.id\"\n\t\t\t\t:disabled=\"settings.newUserGenerateUserID\"\n\t\t\t\t:label=\"usernameLabel\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocomplete=\"off\"\n\t\t\t\tspellcheck=\"false\"\n\t\t\t\tpattern=\"[a-zA-Z0-9 _\\.@\\-']+\"\n\t\t\t\trequired />\n\t\t\t<NcTextField class=\"dialog__item\"\n\t\t\t\tdata-test=\"displayName\"\n\t\t\t\t:value.sync=\"newUser.displayName\"\n\t\t\t\t:label=\"t('settings', 'Display name')\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocomplete=\"off\"\n\t\t\t\tspellcheck=\"false\" />\n\t\t\t<span v-if=\"!settings.newUserRequireEmail\"\n\t\t\t\tid=\"password-email-hint\"\n\t\t\t\tclass=\"dialog__hint\">\n\t\t\t\t{{ t('settings', 'Either password or email is required') }}\n\t\t\t</span>\n\t\t\t<NcPasswordField ref=\"password\"\n\t\t\t\tclass=\"dialog__item\"\n\t\t\t\tdata-test=\"password\"\n\t\t\t\t:value.sync=\"newUser.password\"\n\t\t\t\t:minlength=\"minPasswordLength\"\n\t\t\t\t:maxlength=\"469\"\n\t\t\t\taria-describedby=\"password-email-hint\"\n\t\t\t\t:label=\"newUser.mailAddress === '' ? t('settings', 'Password (required)') : t('settings', 'Password')\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\tspellcheck=\"false\"\n\t\t\t\t:required=\"newUser.mailAddress === ''\" />\n\t\t\t<NcTextField class=\"dialog__item\"\n\t\t\t\tdata-test=\"email\"\n\t\t\t\ttype=\"email\"\n\t\t\t\t:value.sync=\"newUser.mailAddress\"\n\t\t\t\taria-describedby=\"password-email-hint\"\n\t\t\t\t:label=\"newUser.password === '' || settings.newUserRequireEmail ? t('settings', 'Email (required)') : t('settings', 'Email')\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocomplete=\"off\"\n\t\t\t\tspellcheck=\"false\"\n\t\t\t\t:required=\"newUser.password === '' || settings.newUserRequireEmail\" />\n\t\t\t<div class=\"dialog__item\">\n\t\t\t\t<NcSelect class=\"dialog__select\"\n\t\t\t\t\tdata-test=\"groups\"\n\t\t\t\t\t:input-label=\"!settings.isAdmin && !settings.isDelegatedAdmin ? t('settings', 'Member of the following groups (required)') : t('settings', 'Member of the following groups')\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Set account groups')\"\n\t\t\t\t\t:disabled=\"loading.groups || loading.all\"\n\t\t\t\t\t:options=\"availableGroups\"\n\t\t\t\t\t:value=\"newUser.groups\"\n\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\t:taggable=\"settings.isAdmin || settings.isDelegatedAdmin\"\n\t\t\t\t\t:required=\"!settings.isAdmin && !settings.isDelegatedAdmin\"\n\t\t\t\t\t:create-option=\"(value) => ({ id: value, name: value, isCreating: true })\"\n\t\t\t\t\t@search=\"searchGroups\"\n\t\t\t\t\t@option:created=\"createGroup\"\n\t\t\t\t\t@option:selected=\"options => addGroup(options.at(-1))\" />\n\t\t\t\t\t<!-- If user is not admin, they are a subadmin.\n\t\t\t\t\t\tSubadmins can't create users outside their groups\n\t\t\t\t\t\tTherefore, empty select is forbidden -->\n\t\t\t</div>\n\t\t\t<div class=\"dialog__item\">\n\t\t\t\t<NcSelect v-model=\"newUser.subAdminsGroups\"\n\t\t\t\t\tclass=\"dialog__select\"\n\t\t\t\t\t:input-label=\"t('settings', 'Admin of the following groups')\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Set account as admin for …')\"\n\t\t\t\t\t:disabled=\"loading.groups || loading.all\"\n\t\t\t\t\t:options=\"subAdminsGroups\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\t@search=\"searchGroups\" />\n\t\t\t</div>\n\t\t\t<div class=\"dialog__item\">\n\t\t\t\t<NcSelect v-model=\"newUser.quota\"\n\t\t\t\t\tclass=\"dialog__select\"\n\t\t\t\t\t:input-label=\"t('settings', 'Quota')\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Set account quota')\"\n\t\t\t\t\t:options=\"quotaOptions\"\n\t\t\t\t\t:clearable=\"false\"\n\t\t\t\t\t:taggable=\"true\"\n\t\t\t\t\t:create-option=\"validateQuota\" />\n\t\t\t</div>\n\t\t\t<div v-if=\"showConfig.showLanguages\"\n\t\t\t\tclass=\"dialog__item\">\n\t\t\t\t<NcSelect v-model=\"newUser.language\"\n\t\t\t\t\tclass=\"dialog__select\"\n\t\t\t\t\t:input-label=\"t('settings', 'Language')\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Set default language')\"\n\t\t\t\t\t:clearable=\"false\"\n\t\t\t\t\t:selectable=\"option => !option.languages\"\n\t\t\t\t\t:filter-by=\"languageFilterBy\"\n\t\t\t\t\t:options=\"languages\"\n\t\t\t\t\tlabel=\"name\" />\n\t\t\t</div>\n\t\t\t<div :class=\"['dialog__item dialog__managers', { 'icon-loading-small': loading.manager }]\">\n\t\t\t\t<NcSelect v-model=\"newUser.manager\"\n\t\t\t\t\tclass=\"dialog__select\"\n\t\t\t\t\t:input-label=\"managerInputLabel\"\n\t\t\t\t\t:placeholder=\"managerLabel\"\n\t\t\t\t\t:options=\"possibleManagers\"\n\t\t\t\t\t:user-select=\"true\"\n\t\t\t\t\tlabel=\"displayname\"\n\t\t\t\t\t@search=\"searchUserManager\" />\n\t\t\t</div>\n\t\t</form>\n\n\t\t<template #actions>\n\t\t\t<NcButton class=\"dialog__submit\"\n\t\t\t\tdata-test=\"submit\"\n\t\t\t\tform=\"new-user-form\"\n\t\t\t\ttype=\"primary\"\n\t\t\t\tnative-type=\"submit\">\n\t\t\t\t{{ t('settings', 'Add new account') }}\n\t\t\t</NcButton>\n\t\t</template>\n\t</NcDialog>\n</template>\n\n<script>\nimport { formatFileSize, parseFileSize } from '@nextcloud/files'\nimport NcButton from '@nextcloud/vue/components/NcButton'\nimport NcDialog from '@nextcloud/vue/components/NcDialog'\nimport NcPasswordField from '@nextcloud/vue/components/NcPasswordField'\nimport NcSelect from '@nextcloud/vue/components/NcSelect'\nimport NcTextField from '@nextcloud/vue/components/NcTextField'\n\nimport { searchGroups } from '../../service/groups.ts'\nimport logger from '../../logger.ts'\n\nexport default {\n\tname: 'NewUserDialog',\n\n\tcomponents: {\n\t\tNcButton,\n\t\tNcDialog,\n\t\tNcPasswordField,\n\t\tNcSelect,\n\t\tNcTextField,\n\t},\n\n\tprops: {\n\t\tloading: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\n\t\tnewUser: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\n\t\tquotaOptions: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tavailableGroups: [],\n\t\t\tpossibleManagers: [],\n\t\t\t// TRANSLATORS This string describes a manager in the context of an organization\n\t\t\tmanagerInputLabel: t('settings', 'Manager'),\n\t\t\t// TRANSLATORS This string describes a manager in the context of an organization\n\t\t\tmanagerLabel: t('settings', 'Set line manager'),\n\t\t\t// Cancelable promise for search groups request\n\t\t\tpromise: null,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tshowConfig() {\n\t\t\treturn this.$store.getters.getShowConfig\n\t\t},\n\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData\n\t\t},\n\n\t\tusernameLabel() {\n\t\t\tif (this.settings.newUserGenerateUserID) {\n\t\t\t\treturn t('settings', 'Account name will be autogenerated')\n\t\t\t}\n\t\t\treturn t('settings', 'Account name (required)')\n\t\t},\n\n\t\tminPasswordLength() {\n\t\t\treturn this.$store.getters.getPasswordPolicyMinLength\n\t\t},\n\n\t\tsubAdminsGroups() {\n\t\t\t// data provided php side\n\t\t\treturn this.availableGroups.filter(group => group.id !== 'admin' && group.id !== '__nc_internal_recent' && group.id !== 'disabled')\n\t\t},\n\n\t\tlanguages() {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tname: t('settings', 'Common languages'),\n\t\t\t\t\tlanguages: this.settings.languages.commonLanguages,\n\t\t\t\t},\n\t\t\t\t...this.settings.languages.commonLanguages,\n\t\t\t\t{\n\t\t\t\t\tname: t('settings', 'Other languages'),\n\t\t\t\t\tlanguages: this.settings.languages.otherLanguages,\n\t\t\t\t},\n\t\t\t\t...this.settings.languages.otherLanguages,\n\t\t\t]\n\t\t},\n\t},\n\n\tasync beforeMount() {\n\t\tawait this.searchUserManager()\n\t},\n\n\tmounted() {\n\t\t// admins also can assign the system groups\n\t\tif (this.isAdmin || this.isDelegatedAdmin) {\n\t\t\tthis.availableGroups = this.$store.getters.getSortedGroups.filter(group => group.id !== '__nc_internal_recent' && group.id !== 'disabled')\n\t\t} else {\n\t\t\tthis.availableGroups = [...this.$store.getters.getSubAdminGroups]\n\t\t}\n\n\t\tthis.$refs.username?.focus?.()\n\t},\n\n\tmethods: {\n\t\tasync createUser() {\n\t\t\tthis.loading.all = true\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('addUser', {\n\t\t\t\t\tuserid: this.newUser.id,\n\t\t\t\t\tpassword: this.newUser.password,\n\t\t\t\t\tdisplayName: this.newUser.displayName,\n\t\t\t\t\temail: this.newUser.mailAddress,\n\t\t\t\t\tgroups: this.newUser.groups.map(group => group.id),\n\t\t\t\t\tsubadmin: this.newUser.subAdminsGroups.map(group => group.id),\n\t\t\t\t\tquota: this.newUser.quota.id,\n\t\t\t\t\tlanguage: this.newUser.language.code,\n\t\t\t\t\tmanager: this.newUser.manager.id,\n\t\t\t\t})\n\n\t\t\t\tthis.$emit('reset')\n\t\t\t\tthis.$refs.username?.focus?.()\n\t\t\t\tthis.$emit('closing')\n\t\t\t} catch (error) {\n\t\t\t\tthis.loading.all = false\n\t\t\t\tif (error.response && error.response.data && error.response.data.ocs && error.response.data.ocs.meta) {\n\t\t\t\t\tconst statuscode = error.response.data.ocs.meta.statuscode\n\t\t\t\t\tif (statuscode === 102) {\n\t\t\t\t\t\t// wrong username\n\t\t\t\t\t\tthis.$refs.username?.focus?.()\n\t\t\t\t\t} else if (statuscode === 107) {\n\t\t\t\t\t\t// wrong password\n\t\t\t\t\t\tthis.$refs.password?.focus?.()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tasync searchGroups(query, toggleLoading) {\n\t\t\tif (!this.isAdmin && !this.isDelegatedAdmin) {\n\t\t\t\t// managers cannot search for groups\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this.promise) {\n\t\t\t\tthis.promise.cancel()\n\t\t\t}\n\t\t\ttoggleLoading(true)\n\t\t\ttry {\n\t\t\t\tthis.promise = searchGroups({\n\t\t\t\t\tsearch: query,\n\t\t\t\t\toffset: 0,\n\t\t\t\t\tlimit: 25,\n\t\t\t\t})\n\t\t\t\tconst groups = await this.promise\n\t\t\t\tthis.availableGroups = groups\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(t('settings', 'Failed to search groups'), { error })\n\t\t\t}\n\t\t\tthis.promise = null\n\t\t\ttoggleLoading(false)\n\t\t},\n\n\t\t/**\n\t\t * Create a new group\n\t\t *\n\t\t * @param {any} group Group\n\t\t * @param {string} group.name Group id\n\t\t */\n\t\tasync createGroup({ name: gid }) {\n\t\t\tthis.loading.groups = true\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('addGroup', gid)\n\t\t\t\tthis.availableGroups.push({ id: gid, name: gid })\n\t\t\t\tthis.newUser.groups.push({ id: gid, name: gid })\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(t('settings', 'Failed to create group'), { error })\n\t\t\t}\n\t\t\tthis.loading.groups = false\n\t\t},\n\n\t\t/**\n\t\t * Add user to group\n\t\t *\n\t\t * @param {object} group Group object\n\t\t */\n\t\tasync addGroup(group) {\n\t\t\tif (group.isCreating) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (group.canAdd === false) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.newUser.groups.push(group)\n\t\t},\n\n\t\t/**\n\t\t * Validate quota string to make sure it's a valid human file size\n\t\t *\n\t\t * @param {string} quota Quota in readable format '5 GB'\n\t\t * @return {object}\n\t\t */\n\t\tvalidateQuota(quota) {\n\t\t\t// only used for new presets sent through @Tag\n\t\t\tconst validQuota = OC.Util.computerFileSize(quota)\n\t\t\tif (validQuota !== null && validQuota >= 0) {\n\t\t\t\t// unify format output\n\t\t\t\tquota = formatFileSize(parseFileSize(quota))\n\t\t\t\tthis.newUser.quota = { id: quota, label: quota }\n\t\t\t\treturn this.newUser.quota\n\t\t\t}\n\t\t\t// Default is unlimited\n\t\t\tthis.newUser.quota = this.quotaOptions[0]\n\t\t\treturn this.quotaOptions[0]\n\t\t},\n\n\t\tlanguageFilterBy(option, label, search) {\n\t\t\t// Show group header of the language\n\t\t\tif (option.languages) {\n\t\t\t\treturn option.languages.some(\n\t\t\t\t\t({ name }) => name.toLocaleLowerCase().includes(search.toLocaleLowerCase()),\n\t\t\t\t)\n\t\t\t}\n\n\t\t\treturn (label || '').toLocaleLowerCase().includes(search.toLocaleLowerCase())\n\t\t},\n\n\t\tasync searchUserManager(query) {\n\t\t\tawait this.$store.dispatch(\n\t\t\t\t'searchUsers',\n\t\t\t\t{\n\t\t\t\t\toffset: 0,\n\t\t\t\t\tlimit: 10,\n\t\t\t\t\tsearch: query,\n\t\t\t\t},\n\t\t\t).then(response => {\n\t\t\t\tconst users = response?.data ? Object.values(response?.data.ocs.data.users) : []\n\t\t\t\tif (users.length > 0) {\n\t\t\t\t\tthis.possibleManagers = users\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\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</style>\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=70bbf4c9&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewUserDialog.vue?vue&type=style&index=0&id=70bbf4c9&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=70bbf4c9&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=70bbf4c9&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 \"70bbf4c9\",\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=db2a7c4e&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListFooter.vue?vue&type=style&index=0&id=db2a7c4e&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=db2a7c4e&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=db2a7c4e&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 \"db2a7c4e\",\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.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.showFirstLogin)?_c('th',{staticClass:\"header__cell\",attrs:{\"data-cy-user-list-header-first-login\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'First login')))])]):_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=5c0f8828&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListHeader.vue?vue&type=style&index=0&id=5c0f8828&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=5c0f8828&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=5c0f8828&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 \"5c0f8828\",\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 || _vm.loading.groupsDetails,\"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) => ({ id: value, name: value, isCreating: true })},on:{\"search\":_vm.searchGroups,\"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.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))?[_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 || _vm.loading.subAdminGroupsDetails,\"loading\":_vm.loading.subadmins,\"label\":\"name\",\"append-to-body\":false,\"multiple\":true,\"no-wrap\":true,\"options\":_vm.availableSubAdminGroups,\"placeholder\":_vm.t('settings', 'Set account as admin for'),\"value\":_vm.userSubAdminGroups},on:{\"search\":_vm.searchGroups,\"option:deselected\":_vm.removeUserSubAdmin,\"option:selected\":options => _vm.addUserSubAdmin(options.at(-1))}})]:(!_vm.isObfuscated)?_c('span',{attrs:{\"title\":_vm.userSubAdminGroupsLabels?.length > 40 ? _vm.userSubAdminGroupsLabels : null}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.userSubAdminGroupsLabels)+\"\\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.showFirstLogin)?_c('td',{staticClass:\"row__cell\",attrs:{\"data-cy-user-list-cell-first-login\":\"\"}},[(!_vm.isObfuscated)?_c('span',[_vm._v(_vm._s(_vm.userFirstLogin))]):_vm._e()]):_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,\"disabled\":_vm.isLoadingField,\"loading\":_vm.loadingPossibleManagers || _vm.loading.manager,\"options\":_vm.possibleManagers,\"placeholder\":_vm.managerLabel,\"label\":\"displayname\",\"filterable\":false,\"internal-search\":false,\"clearable\":true},on:{\"open\":_vm.searchInitialUserManager,\"search\":_vm.searchUserManager,\"update:model-value\":_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 }","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 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\"","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=61782548\"\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\nimport { formatFileSize } from '@nextcloud/files'\nimport { useFormatDateTime } from '@nextcloud/vue'\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\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\tsetup(props) {\n\t\tconst { formattedFullTime } = useFormatDateTime(props.user.firstLoginTimestamp * 1000, {\n\t\t\trelativeTime: false,\n\t\t\tformat: {\n\t\t\t\ttimeStyle: 'short',\n\t\t\t\tdateStyle: 'short',\n\t\t\t},\n\t\t})\n\t\treturn {\n\t\t\tformattedFullTime,\n\t\t}\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tavailableGroups: this.user.groups.map(id => ({ id, name: id })),\n\t\t\tavailableSubAdminGroups: this.user.subadmin.map(id => ({ id, name: id })),\n\t\t\tuserGroups: this.user.groups.map(id => ({ id, name: id })),\n\t\t\tuserSubAdminGroups: this.user.subadmin.map(id => ({ id, name: id })),\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/* QUOTA MANAGEMENT */\n\t\tusedSpace() {\n\t\t\tconst quotaUsed = this.user.quota.used > 0 ? this.user.quota.used : 0\n\t\t\treturn t('settings', '{size} used', { size: formatFileSize(quotaUsed, true) })\n\t\t},\n\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\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 = formatFileSize(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\tuserFirstLogin() {\n\t\t\tif (this.user.firstLoginTimestamp > 0) {\n\t\t\t\treturn this.formattedFullTime\n\t\t\t}\n\t\t\tif (this.user.firstLoginTimestamp < 0) {\n\t\t\t\treturn t('settings', 'Unknown')\n\t\t\t}\n\t\t\treturn t('settings', 'Never')\n\t\t},\n\n\t\t/* LAST LOGIN */\n\t\tuserLastLoginTooltip() {\n\t\t\tif (this.user.lastLoginTimestamp > 0) {\n\t\t\t\treturn OC.Util.formatDate(this.user.lastLoginTimestamp * 1000)\n\t\t\t}\n\t\t\treturn ''\n\t\t},\n\t\tuserLastLogin() {\n\t\t\tif (this.user.lastLoginTimestamp > 0) {\n\t\t\t\treturn OC.Util.relativeModifiedDate(this.user.lastLoginTimestamp * 1000)\n\t\t\t}\n\t\t\treturn t('settings', 'Never')\n\t\t},\n\t},\n}\n","<!--\n - SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<tr class=\"user-list__row\"\n\t\t:data-cy-user-row=\"user.id\">\n\t\t<td class=\"row__cell row__cell--avatar\" data-cy-user-list-cell-avatar>\n\t\t\t<NcLoadingIcon v-if=\"isLoadingUser\"\n\t\t\t\t:name=\"t('settings', 'Loading account …')\"\n\t\t\t\t:size=\"32\" />\n\t\t\t<NcAvatar v-else-if=\"visible\"\n\t\t\t\tdisable-menu\n\t\t\t\t:show-user-status=\"false\"\n\t\t\t\t:user=\"user.id\" />\n\t\t</td>\n\n\t\t<td class=\"row__cell row__cell--displayname\" data-cy-user-list-cell-displayname>\n\t\t\t<template v-if=\"editing && user.backendCapabilities.setDisplayName\">\n\t\t\t\t<NcTextField ref=\"displayNameField\"\n\t\t\t\t\tclass=\"user-row-text-field\"\n\t\t\t\t\tdata-cy-user-list-input-displayname\n\t\t\t\t\t:data-loading=\"loading.displayName || undefined\"\n\t\t\t\t\t:trailing-button-label=\"t('settings', 'Submit')\"\n\t\t\t\t\t:class=\"{ 'icon-loading-small': loading.displayName }\"\n\t\t\t\t\t:show-trailing-button=\"true\"\n\t\t\t\t\t:disabled=\"loading.displayName || isLoadingField\"\n\t\t\t\t\t:label=\"t('settings', 'Change display name')\"\n\t\t\t\t\ttrailing-button-icon=\"arrowRight\"\n\t\t\t\t\t:value.sync=\"editedDisplayName\"\n\t\t\t\t\tautocapitalize=\"off\"\n\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\tspellcheck=\"false\"\n\t\t\t\t\t@trailing-button-click=\"updateDisplayName\" />\n\t\t\t</template>\n\t\t\t<strong v-else-if=\"!isObfuscated\"\n\t\t\t\t:title=\"user.displayname?.length > 20 ? user.displayname : null\">\n\t\t\t\t{{ user.displayname }}\n\t\t\t</strong>\n\t\t</td>\n\n\t\t<td class=\"row__cell row__cell--username\" data-cy-user-list-cell-username>\n\t\t\t<span class=\"row__subtitle\">{{ user.id }}</span>\n\t\t</td>\n\n\t\t<td data-cy-user-list-cell-password\n\t\t\tclass=\"row__cell\"\n\t\t\t:class=\"{ 'row__cell--obfuscated': hasObfuscated }\">\n\t\t\t<template v-if=\"editing && settings.canChangePassword && user.backendCapabilities.setPassword\">\n\t\t\t\t<NcTextField class=\"user-row-text-field\"\n\t\t\t\t\tdata-cy-user-list-input-password\n\t\t\t\t\t:data-loading=\"loading.password || undefined\"\n\t\t\t\t\t:trailing-button-label=\"t('settings', 'Submit')\"\n\t\t\t\t\t:class=\"{'icon-loading-small': loading.password}\"\n\t\t\t\t\t:show-trailing-button=\"true\"\n\t\t\t\t\t:disabled=\"loading.password || isLoadingField\"\n\t\t\t\t\t:minlength=\"minPasswordLength\"\n\t\t\t\t\tmaxlength=\"469\"\n\t\t\t\t\t:label=\"t('settings', 'Set new password')\"\n\t\t\t\t\ttrailing-button-icon=\"arrowRight\"\n\t\t\t\t\t:value.sync=\"editedPassword\"\n\t\t\t\t\tautocapitalize=\"off\"\n\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\trequired\n\t\t\t\t\tspellcheck=\"false\"\n\t\t\t\t\ttype=\"password\"\n\t\t\t\t\t@trailing-button-click=\"updatePassword\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"isObfuscated\">\n\t\t\t\t{{ t('settings', 'You do not have permissions to see the details of this account') }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td class=\"row__cell\" data-cy-user-list-cell-email>\n\t\t\t<template v-if=\"editing\">\n\t\t\t\t<NcTextField class=\"user-row-text-field\"\n\t\t\t\t\t:class=\"{'icon-loading-small': loading.mailAddress}\"\n\t\t\t\t\tdata-cy-user-list-input-email\n\t\t\t\t\t:data-loading=\"loading.mailAddress || undefined\"\n\t\t\t\t\t:show-trailing-button=\"true\"\n\t\t\t\t\t:trailing-button-label=\"t('settings', 'Submit')\"\n\t\t\t\t\t:label=\"t('settings', 'Set new email address')\"\n\t\t\t\t\t:disabled=\"loading.mailAddress || isLoadingField\"\n\t\t\t\t\ttrailing-button-icon=\"arrowRight\"\n\t\t\t\t\t:value.sync=\"editedMail\"\n\t\t\t\t\tautocapitalize=\"off\"\n\t\t\t\t\tautocomplete=\"email\"\n\t\t\t\t\tspellcheck=\"false\"\n\t\t\t\t\ttype=\"email\"\n\t\t\t\t\t@trailing-button-click=\"updateEmail\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"!isObfuscated\"\n\t\t\t\t:title=\"user.email?.length > 20 ? user.email : null\">\n\t\t\t\t{{ user.email }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td class=\"row__cell row__cell--large row__cell--multiline\" data-cy-user-list-cell-groups>\n\t\t\t<template v-if=\"editing\">\n\t\t\t\t<label class=\"hidden-visually\"\n\t\t\t\t\t:for=\"'groups' + uniqueId\">\n\t\t\t\t\t{{ t('settings', 'Add account to group') }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect data-cy-user-list-input-groups\n\t\t\t\t\t:data-loading=\"loading.groups || undefined\"\n\t\t\t\t\t:input-id=\"'groups' + uniqueId\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t:disabled=\"isLoadingField || loading.groupsDetails\"\n\t\t\t\t\t:loading=\"loading.groups\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\t:append-to-body=\"false\"\n\t\t\t\t\t:options=\"availableGroups\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Add account to group')\"\n\t\t\t\t\t:taggable=\"settings.isAdmin || settings.isDelegatedAdmin\"\n\t\t\t\t\t:value=\"userGroups\"\n\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\t:no-wrap=\"true\"\n\t\t\t\t\t:create-option=\"(value) => ({ id: value, name: value, isCreating: true })\"\n\t\t\t\t\t@search=\"searchGroups\"\n\t\t\t\t\t@option:created=\"createGroup\"\n\t\t\t\t\t@option:selected=\"options => addUserGroup(options.at(-1))\"\n\t\t\t\t\t@option:deselected=\"removeUserGroup\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"!isObfuscated\"\n\t\t\t\t:title=\"userGroupsLabels?.length > 40 ? userGroupsLabels : null\">\n\t\t\t\t{{ userGroupsLabels }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td v-if=\"settings.isAdmin || settings.isDelegatedAdmin\"\n\t\t\tdata-cy-user-list-cell-subadmins\n\t\t\tclass=\"row__cell row__cell--large row__cell--multiline\">\n\t\t\t<template v-if=\"editing && (settings.isAdmin || settings.isDelegatedAdmin)\">\n\t\t\t\t<label class=\"hidden-visually\"\n\t\t\t\t\t:for=\"'subadmins' + uniqueId\">\n\t\t\t\t\t{{ t('settings', 'Set account as admin for') }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect data-cy-user-list-input-subadmins\n\t\t\t\t\t:data-loading=\"loading.subadmins || undefined\"\n\t\t\t\t\t:input-id=\"'subadmins' + uniqueId\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t:disabled=\"isLoadingField || loading.subAdminGroupsDetails\"\n\t\t\t\t\t:loading=\"loading.subadmins\"\n\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\t:append-to-body=\"false\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\t:no-wrap=\"true\"\n\t\t\t\t\t:options=\"availableSubAdminGroups\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Set account as admin for')\"\n\t\t\t\t\t:value=\"userSubAdminGroups\"\n\t\t\t\t\t@search=\"searchGroups\"\n\t\t\t\t\t@option:deselected=\"removeUserSubAdmin\"\n\t\t\t\t\t@option:selected=\"options => addUserSubAdmin(options.at(-1))\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"!isObfuscated\"\n\t\t\t\t:title=\"userSubAdminGroupsLabels?.length > 40 ? userSubAdminGroupsLabels : null\">\n\t\t\t\t{{ userSubAdminGroupsLabels }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td class=\"row__cell\" data-cy-user-list-cell-quota>\n\t\t\t<template v-if=\"editing\">\n\t\t\t\t<label class=\"hidden-visually\"\n\t\t\t\t\t:for=\"'quota' + uniqueId\">\n\t\t\t\t\t{{ t('settings', 'Select account quota') }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect v-model=\"editedUserQuota\"\n\t\t\t\t\t:close-on-select=\"true\"\n\t\t\t\t\t:create-option=\"validateQuota\"\n\t\t\t\t\tdata-cy-user-list-input-quota\n\t\t\t\t\t:data-loading=\"loading.quota || undefined\"\n\t\t\t\t\t:disabled=\"isLoadingField\"\n\t\t\t\t\t:loading=\"loading.quota\"\n\t\t\t\t\t:append-to-body=\"false\"\n\t\t\t\t\t:clearable=\"false\"\n\t\t\t\t\t:input-id=\"'quota' + uniqueId\"\n\t\t\t\t\t:options=\"quotaOptions\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Select account quota')\"\n\t\t\t\t\t:taggable=\"true\"\n\t\t\t\t\t@option:selected=\"setUserQuota\" />\n\t\t\t</template>\n\t\t\t<template v-else-if=\"!isObfuscated\">\n\t\t\t\t<span :id=\"'quota-progress' + uniqueId\">{{ userQuota }} ({{ usedSpace }})</span>\n\t\t\t\t<NcProgressBar :aria-labelledby=\"'quota-progress' + uniqueId\"\n\t\t\t\t\tclass=\"row__progress\"\n\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t'row__progress--warn': usedQuota > 80,\n\t\t\t\t\t}\"\n\t\t\t\t\t:value=\"usedQuota\" />\n\t\t\t</template>\n\t\t</td>\n\n\t\t<td v-if=\"showConfig.showLanguages\"\n\t\t\tclass=\"row__cell row__cell--large\"\n\t\t\tdata-cy-user-list-cell-language>\n\t\t\t<template v-if=\"editing\">\n\t\t\t\t<label class=\"hidden-visually\"\n\t\t\t\t\t:for=\"'language' + uniqueId\">\n\t\t\t\t\t{{ t('settings', 'Set the language') }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect :id=\"'language' + uniqueId\"\n\t\t\t\t\tdata-cy-user-list-input-language\n\t\t\t\t\t:data-loading=\"loading.languages || undefined\"\n\t\t\t\t\t:allow-empty=\"false\"\n\t\t\t\t\t:disabled=\"isLoadingField\"\n\t\t\t\t\t:loading=\"loading.languages\"\n\t\t\t\t\t:clearable=\"false\"\n\t\t\t\t\t:append-to-body=\"false\"\n\t\t\t\t\t:options=\"availableLanguages\"\n\t\t\t\t\t:placeholder=\"t('settings', 'No language set')\"\n\t\t\t\t\t:value=\"userLanguage\"\n\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\t@input=\"setUserLanguage\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"!isObfuscated\">\n\t\t\t\t{{ userLanguage.name }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td v-if=\"showConfig.showUserBackend || showConfig.showStoragePath\"\n\t\t\tdata-cy-user-list-cell-storage-location\n\t\t\tclass=\"row__cell row__cell--large\">\n\t\t\t<template v-if=\"!isObfuscated\">\n\t\t\t\t<span v-if=\"showConfig.showUserBackend\">{{ user.backend }}</span>\n\t\t\t\t<span v-if=\"showConfig.showStoragePath\"\n\t\t\t\t\t:title=\"user.storageLocation\"\n\t\t\t\t\tclass=\"row__subtitle\">\n\t\t\t\t\t{{ user.storageLocation }}\n\t\t\t\t</span>\n\t\t\t</template>\n\t\t</td>\n\n\t\t<td v-if=\"showConfig.showFirstLogin\"\n\t\t\tclass=\"row__cell\"\n\t\t\tdata-cy-user-list-cell-first-login>\n\t\t\t<span v-if=\"!isObfuscated\">{{ userFirstLogin }}</span>\n\t\t</td>\n\n\t\t<td v-if=\"showConfig.showLastLogin\"\n\t\t\t:title=\"userLastLoginTooltip\"\n\t\t\tclass=\"row__cell\"\n\t\t\tdata-cy-user-list-cell-last-login>\n\t\t\t<span v-if=\"!isObfuscated\">{{ userLastLogin }}</span>\n\t\t</td>\n\n\t\t<td class=\"row__cell row__cell--large row__cell--fill\" data-cy-user-list-cell-manager>\n\t\t\t<template v-if=\"editing\">\n\t\t\t\t<label class=\"hidden-visually\"\n\t\t\t\t\t:for=\"'manager' + uniqueId\">\n\t\t\t\t\t{{ managerLabel }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect v-model=\"currentManager\"\n\t\t\t\t\tclass=\"select--fill\"\n\t\t\t\t\tdata-cy-user-list-input-manager\n\t\t\t\t\t:data-loading=\"loading.manager || undefined\"\n\t\t\t\t\t:input-id=\"'manager' + uniqueId\"\n\t\t\t\t\t:disabled=\"isLoadingField\"\n\t\t\t\t\t:loading=\"loadingPossibleManagers || loading.manager\"\n\t\t\t\t\t:options=\"possibleManagers\"\n\t\t\t\t\t:placeholder=\"managerLabel\"\n\t\t\t\t\tlabel=\"displayname\"\n\t\t\t\t\t:filterable=\"false\"\n\t\t\t\t\t:internal-search=\"false\"\n\t\t\t\t\t:clearable=\"true\"\n\t\t\t\t\t@open=\"searchInitialUserManager\"\n\t\t\t\t\t@search=\"searchUserManager\"\n\t\t\t\t\t@update:model-value=\"updateUserManager\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"!isObfuscated\">\n\t\t\t\t{{ user.manager }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td class=\"row__cell row__cell--actions\" data-cy-user-list-cell-actions>\n\t\t\t<UserRowActions v-if=\"visible && !isObfuscated && canEdit && !loading.all\"\n\t\t\t\t:actions=\"userActions\"\n\t\t\t\t:disabled=\"isLoadingField\"\n\t\t\t\t:edit=\"editing\"\n\t\t\t\t:user=\"user\"\n\t\t\t\t@update:edit=\"toggleEdit\" />\n\t\t</td>\n\t</tr>\n</template>\n\n<script>\nimport { formatFileSize, parseFileSize } from '@nextcloud/files'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { showSuccess, showError } from '@nextcloud/dialogs'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\n\nimport NcAvatar from '@nextcloud/vue/components/NcAvatar'\nimport NcLoadingIcon from '@nextcloud/vue/components/NcLoadingIcon'\nimport NcProgressBar from '@nextcloud/vue/components/NcProgressBar'\nimport NcSelect from '@nextcloud/vue/components/NcSelect'\nimport NcTextField from '@nextcloud/vue/components/NcTextField'\n\nimport UserRowActions from './UserRowActions.vue'\n\nimport UserRowMixin from '../../mixins/UserRowMixin.js'\nimport { isObfuscated, unlimitedQuota } from '../../utils/userUtils.ts'\nimport { searchGroups, loadUserGroups, loadUserSubAdminGroups } from '../../service/groups.ts'\nimport logger from '../../logger.ts'\n\nexport default {\n\tname: 'UserRow',\n\n\tcomponents: {\n\t\tNcAvatar,\n\t\tNcLoadingIcon,\n\t\tNcProgressBar,\n\t\tNcSelect,\n\t\tNcTextField,\n\t\tUserRowActions,\n\t},\n\n\tmixins: [\n\t\tUserRowMixin,\n\t],\n\n\tprops: {\n\t\tuser: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tvisible: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tusers: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\thasObfuscated: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tquotaOptions: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\tlanguages: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\tsettings: {\n\t\t\ttype: Object,\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\n\tdata() {\n\t\treturn {\n\t\t\tselectedQuota: false,\n\t\t\trand: Math.random().toString(36).substring(2),\n\t\t\tloadingPossibleManagers: false,\n\t\t\tpossibleManagers: [],\n\t\t\tcurrentManager: '',\n\t\t\tediting: false,\n\t\t\tloading: {\n\t\t\t\tall: false,\n\t\t\t\tdisplayName: false,\n\t\t\t\tpassword: false,\n\t\t\t\tmailAddress: false,\n\t\t\t\tgroups: false,\n\t\t\t\tgroupsDetails: false,\n\t\t\t\tsubAdminGroupsDetails: false,\n\t\t\t\tsubadmins: false,\n\t\t\t\tquota: false,\n\t\t\t\tdelete: false,\n\t\t\t\tdisable: false,\n\t\t\t\tlanguages: false,\n\t\t\t\twipe: false,\n\t\t\t\tmanager: false,\n\t\t\t},\n\t\t\teditedDisplayName: this.user.displayname,\n\t\t\teditedPassword: '',\n\t\t\teditedMail: this.user.email ?? '',\n\t\t\t// Cancelable promise for search groups request\n\t\t\tpromise: null,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tmanagerLabel() {\n\t\t\t// TRANSLATORS This string describes a person's manager in the context of an organization\n\t\t\treturn t('settings', 'Set line manager')\n\t\t},\n\n\t\tisObfuscated() {\n\t\t\treturn isObfuscated(this.user)\n\t\t},\n\n\t\tshowConfig() {\n\t\t\treturn this.$store.getters.getShowConfig\n\t\t},\n\n\t\tisLoadingUser() {\n\t\t\treturn this.loading.delete || this.loading.disable || this.loading.wipe\n\t\t},\n\n\t\tisLoadingField() {\n\t\t\treturn this.loading.delete || this.loading.disable || this.loading.all\n\t\t},\n\n\t\tuniqueId() {\n\t\t\treturn encodeURIComponent(this.user.id + this.rand)\n\t\t},\n\n\t\tuserGroupsLabels() {\n\t\t\treturn this.userGroups\n\t\t\t\t.map(group => group.name ?? group.id)\n\t\t\t\t.join(', ')\n\t\t},\n\n\t\tuserSubAdminGroupsLabels() {\n\t\t\treturn this.userSubAdminGroups\n\t\t\t\t.map(group => group.name ?? group.id)\n\t\t\t\t.join(', ')\n\t\t},\n\n\t\tusedSpace() {\n\t\t\tif (this.user.quota?.used) {\n\t\t\t\treturn t('settings', '{size} used', { size: formatFileSize(this.user.quota?.used) })\n\t\t\t}\n\t\t\treturn t('settings', '{size} used', { size: formatFileSize(0) })\n\t\t},\n\n\t\tcanEdit() {\n\t\t\treturn getCurrentUser().uid !== this.user.id || this.settings.isAdmin || this.settings.isDelegatedAdmin\n\t\t},\n\n\t\tuserQuota() {\n\t\t\tlet quota = this.user.quota?.quota\n\n\t\t\tif (quota === 'default') {\n\t\t\t\tquota = this.settings.defaultQuota\n\t\t\t\tif (quota !== 'none') {\n\t\t\t\t\t// convert to numeric value to match what the server would usually return\n\t\t\t\t\tquota = parseFileSize(quota, true)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// when the default quota is unlimited, the server returns -3 here, map it to \"none\"\n\t\t\tif (quota === 'none' || quota === -3) {\n\t\t\t\treturn t('settings', 'Unlimited')\n\t\t\t} else if (quota >= 0) {\n\t\t\t\treturn formatFileSize(quota)\n\t\t\t}\n\t\t\treturn formatFileSize(0)\n\t\t},\n\n\t\tuserActions() {\n\t\t\tconst actions = [\n\t\t\t\t{\n\t\t\t\t\ticon: 'icon-delete',\n\t\t\t\t\ttext: t('settings', 'Delete account'),\n\t\t\t\t\taction: this.deleteUser,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ticon: 'icon-delete',\n\t\t\t\t\ttext: t('settings', 'Disconnect all devices and delete local data'),\n\t\t\t\t\taction: this.wipeUserDevices,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ticon: this.user.enabled ? 'icon-close' : 'icon-add',\n\t\t\t\t\ttext: this.user.enabled ? t('settings', 'Disable account') : t('settings', 'Enable account'),\n\t\t\t\t\taction: this.enableDisableUser,\n\t\t\t\t},\n\t\t\t]\n\t\t\tif (this.user.email !== null && this.user.email !== '') {\n\t\t\t\tactions.push({\n\t\t\t\t\ticon: 'icon-mail',\n\t\t\t\t\ttext: t('settings', 'Resend welcome email'),\n\t\t\t\t\taction: this.sendWelcomeMail,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn actions.concat(this.externalActions)\n\t\t},\n\n\t\t// mapping saved values to objects\n\t\teditedUserQuota: {\n\t\t\tget() {\n\t\t\t\tif (this.selectedQuota !== false) {\n\t\t\t\t\treturn this.selectedQuota\n\t\t\t\t}\n\t\t\t\tif (this.settings.defaultQuota !== unlimitedQuota.id && parseFileSize(this.settings.defaultQuota, true) >= 0) {\n\t\t\t\t\t// if value is valid, let's map the quotaOptions or return custom quota\n\t\t\t\t\treturn { id: this.settings.defaultQuota, label: this.settings.defaultQuota }\n\t\t\t\t}\n\t\t\t\treturn unlimitedQuota // unlimited\n\t\t\t},\n\t\t\tset(quota) {\n\t\t\t\tthis.selectedQuota = quota\n\t\t\t},\n\t\t},\n\n\t\tavailableLanguages() {\n\t\t\treturn this.languages[0].languages.concat(this.languages[1].languages)\n\t\t},\n\t},\n\tasync beforeMount() {\n\t\tif (this.user.manager) {\n\t\t\tawait this.initManager(this.user.manager)\n\t\t}\n\t},\n\n\tmethods: {\n\t\tasync wipeUserDevices() {\n\t\t\tconst userid = this.user.id\n\t\t\tawait confirmPassword()\n\t\t\tOC.dialogs.confirmDestructive(\n\t\t\t\tt('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 }),\n\t\t\t\tt('settings', 'Remote wipe of devices'),\n\t\t\t\t{\n\t\t\t\t\ttype: OC.dialogs.YES_NO_BUTTONS,\n\t\t\t\t\tconfirm: t('settings', 'Wipe {userid}\\'s devices', { userid }),\n\t\t\t\t\tconfirmClasses: 'error',\n\t\t\t\t\tcancel: t('settings', 'Cancel'),\n\t\t\t\t},\n\t\t\t\t(result) => {\n\t\t\t\t\tif (result) {\n\t\t\t\t\t\tthis.loading.wipe = true\n\t\t\t\t\t\tthis.loading.all = true\n\t\t\t\t\t\tthis.$store.dispatch('wipeUserDevices', userid)\n\t\t\t\t\t\t\t.then(() => showSuccess(t('settings', 'Wiped {userid}\\'s devices', { userid })), { timeout: 2000 })\n\t\t\t\t\t\t\t.finally(() => {\n\t\t\t\t\t\t\t\tthis.loading.wipe = false\n\t\t\t\t\t\t\t\tthis.loading.all = false\n\t\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\ttrue,\n\t\t\t)\n\t\t},\n\n\t\tfilterManagers(managers) {\n\t\t\treturn managers.filter((manager) => manager.id !== this.user.id)\n\t\t},\n\n\t\tasync initManager(userId) {\n\t\t\tawait this.$store.dispatch('getUser', userId).then(response => {\n\t\t\t\tthis.currentManager = response?.data.ocs.data\n\t\t\t})\n\t\t},\n\n\t\tasync searchInitialUserManager() {\n\t\t\tthis.loadingPossibleManagers = true\n\t\t\tawait this.searchUserManager()\n\t\t\tthis.loadingPossibleManagers = false\n\t\t},\n\n\t\tasync loadGroupsDetails() {\n\t\t\tthis.loading.groups = true\n\t\t\tthis.loading.groupsDetails = true\n\t\t\ttry {\n\t\t\t\tconst groups = await loadUserGroups({ userId: this.user.id })\n\t\t\t\tthis.availableGroups = this.availableGroups.map(availableGroup => groups.find(group => group.id === availableGroup.id) ?? availableGroup)\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(t('settings', 'Failed to load groups with details'), { error })\n\t\t\t}\n\t\t\tthis.loading.groups = false\n\t\t\tthis.loading.groupsDetails = false\n\t\t},\n\n\t\tasync loadSubAdminGroupsDetails() {\n\t\t\tthis.loading.subadmins = true\n\t\t\tthis.loading.subAdminGroupsDetails = true\n\t\t\ttry {\n\t\t\t\tconst groups = await loadUserSubAdminGroups({ userId: this.user.id })\n\t\t\t\tthis.availableSubAdminGroups = this.availableSubAdminGroups.map(availableGroup => groups.find(group => group.id === availableGroup.id) ?? availableGroup)\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(t('settings', 'Failed to load sub admin groups with details'), { error })\n\t\t\t}\n\t\t\tthis.loading.subadmins = false\n\t\t\tthis.loading.subAdminGroupsDetails = false\n\t\t},\n\n\t\tasync searchGroups(query, toggleLoading) {\n\t\t\tif (query === '') {\n\t\t\t\treturn // Prevent unexpected search behaviour e.g. on option:created\n\t\t\t}\n\t\t\tif (this.promise) {\n\t\t\t\tthis.promise.cancel()\n\t\t\t}\n\t\t\ttoggleLoading(true)\n\t\t\ttry {\n\t\t\t\tthis.promise = await searchGroups({\n\t\t\t\t\tsearch: query,\n\t\t\t\t\toffset: 0,\n\t\t\t\t\tlimit: 25,\n\t\t\t\t})\n\t\t\t\tconst groups = await this.promise\n\t\t\t\tthis.availableGroups = groups\n\t\t\t\tthis.availableSubAdminGroups = groups.filter(group => group.id !== 'admin')\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(t('settings', 'Failed to search groups'), { error })\n\t\t\t}\n\t\t\tthis.promise = null\n\t\t\ttoggleLoading(false)\n\t\t},\n\n\t\tasync searchUserManager(query) {\n\t\t\tawait this.$store.dispatch('searchUsers', { offset: 0, limit: 10, search: query }).then(response => {\n\t\t\t\tconst users = response?.data ? this.filterManagers(Object.values(response?.data.ocs.data.users)) : []\n\t\t\t\tif (users.length > 0) {\n\t\t\t\t\tthis.possibleManagers = users\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\n\t\tasync updateUserManager() {\n\t\t\tthis.loading.manager = true\n\n\t\t\t// Store the current manager before making changes\n\t\t\tconst previousManager = this.user.manager\n\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('setUserData', {\n\t\t\t\t\tuserid: this.user.id,\n\t\t\t\t\tkey: 'manager',\n\t\t\t\t\tvalue: this.currentManager ? this.currentManager.id : '',\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\t// TRANSLATORS This string describes a line manager in the context of an organization\n\t\t\t\tshowError(t('settings', 'Failed to update line manager'))\n\t\t\t\tlogger.error('Failed to update manager:', { error })\n\n\t\t\t\t// Revert to the previous manager in the UI on error\n\t\t\t\tthis.currentManager = previousManager\n\t\t\t} finally {\n\t\t\t\tthis.loading.manager = false\n\t\t\t}\n\t\t},\n\n\t\tasync deleteUser() {\n\t\t\tconst userid = this.user.id\n\t\t\tawait confirmPassword()\n\t\t\tOC.dialogs.confirmDestructive(\n\t\t\t\tt('settings', 'Fully delete {userid}\\'s account including all their personal files, app data, etc.', { userid }),\n\t\t\t\tt('settings', 'Account deletion'),\n\t\t\t\t{\n\t\t\t\t\ttype: OC.dialogs.YES_NO_BUTTONS,\n\t\t\t\t\tconfirm: t('settings', 'Delete {userid}\\'s account', { userid }),\n\t\t\t\t\tconfirmClasses: 'error',\n\t\t\t\t\tcancel: t('settings', 'Cancel'),\n\t\t\t\t},\n\t\t\t\t(result) => {\n\t\t\t\t\tif (result) {\n\t\t\t\t\t\tthis.loading.delete = true\n\t\t\t\t\t\tthis.loading.all = true\n\t\t\t\t\t\treturn this.$store.dispatch('deleteUser', userid)\n\t\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\t\tthis.loading.delete = false\n\t\t\t\t\t\t\t\tthis.loading.all = false\n\t\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\ttrue,\n\t\t\t)\n\t\t},\n\n\t\tenableDisableUser() {\n\t\t\tthis.loading.delete = true\n\t\t\tthis.loading.all = true\n\t\t\tconst userid = this.user.id\n\t\t\tconst enabled = !this.user.enabled\n\t\t\treturn this.$store.dispatch('enableDisableUser', {\n\t\t\t\tuserid,\n\t\t\t\tenabled,\n\t\t\t})\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.loading.delete = false\n\t\t\t\t\tthis.loading.all = false\n\t\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Set user displayName\n\t\t */\n\t\tasync updateDisplayName() {\n\t\t\tthis.loading.displayName = true\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('setUserData', {\n\t\t\t\t\tuserid: this.user.id,\n\t\t\t\t\tkey: 'displayname',\n\t\t\t\t\tvalue: this.editedDisplayName,\n\t\t\t\t})\n\n\t\t\t\tif (this.editedDisplayName === this.user.displayname) {\n\t\t\t\t\tshowSuccess(t('settings', 'Display name was successfully changed'))\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tthis.loading.displayName = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Set user password\n\t\t */\n\t\tasync updatePassword() {\n\t\t\tthis.loading.password = true\n\t\t\tif (this.editedPassword.length === 0) {\n\t\t\t\tshowError(t('settings', \"Password can't be empty\"))\n\t\t\t\tthis.loading.password = false\n\t\t\t} else {\n\t\t\t\ttry {\n\t\t\t\t\tawait this.$store.dispatch('setUserData', {\n\t\t\t\t\t\tuserid: this.user.id,\n\t\t\t\t\t\tkey: 'password',\n\t\t\t\t\t\tvalue: this.editedPassword,\n\t\t\t\t\t})\n\t\t\t\t\tthis.editedPassword = ''\n\t\t\t\t\tshowSuccess(t('settings', 'Password was successfully changed'))\n\t\t\t\t} finally {\n\t\t\t\t\tthis.loading.password = false\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Set user mailAddress\n\t\t */\n\t\tasync updateEmail() {\n\t\t\tthis.loading.mailAddress = true\n\t\t\tif (this.editedMail === '') {\n\t\t\t\tshowError(t('settings', \"Email can't be empty\"))\n\t\t\t\tthis.loading.mailAddress = false\n\t\t\t\tthis.editedMail = this.user.email\n\t\t\t} else {\n\t\t\t\ttry {\n\t\t\t\t\tawait this.$store.dispatch('setUserData', {\n\t\t\t\t\t\tuserid: this.user.id,\n\t\t\t\t\t\tkey: 'email',\n\t\t\t\t\t\tvalue: this.editedMail,\n\t\t\t\t\t})\n\n\t\t\t\t\tif (this.editedMail === this.user.email) {\n\t\t\t\t\t\tshowSuccess(t('settings', 'Email was successfully changed'))\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\tthis.loading.mailAddress = false\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Create a new group and add user to it\n\t\t *\n\t\t * @param {string} gid Group id\n\t\t */\n\t\tasync createGroup({ name: gid }) {\n\t\t\tthis.loading.groups = true\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('addGroup', gid)\n\t\t\t\tthis.availableGroups.push({ id: gid, name: gid })\n\t\t\t\tthis.availableSubAdminGroups.push({ id: gid, name: gid })\n\t\t\t\tconst userid = this.user.id\n\t\t\t\tawait this.$store.dispatch('addUserGroup', { userid, gid })\n\t\t\t\tthis.userGroups.push({ id: gid, name: gid })\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(t('settings', 'Failed to create group'), { error })\n\t\t\t}\n\t\t\tthis.loading.groups = false\n\t\t},\n\n\t\t/**\n\t\t * Add user to group\n\t\t *\n\t\t * @param {object} group Group object\n\t\t */\n\t\tasync addUserGroup(group) {\n\t\t\tif (group.isCreating) {\n\t\t\t\t// This is NcSelect's internal value for a new inputted group name\n\t\t\t\t// Ignore\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst userid = this.user.id\n\t\t\tconst gid = group.id\n\t\t\tif (group.canAdd === false) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.loading.groups = true\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('addUserGroup', { userid, gid })\n\t\t\t\tthis.userGroups.push(group)\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t}\n\t\t\tthis.loading.groups = false\n\t\t},\n\n\t\t/**\n\t\t * Remove user from group\n\t\t *\n\t\t * @param {object} group Group object\n\t\t */\n\t\tasync removeUserGroup(group) {\n\t\t\tif (group.canRemove === false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tthis.loading.groups = true\n\t\t\tconst userid = this.user.id\n\t\t\tconst gid = group.id\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('removeUserGroup', {\n\t\t\t\t\tuserid,\n\t\t\t\t\tgid,\n\t\t\t\t})\n\t\t\t\tthis.userGroups = this.userGroups.filter(group => group.id !== gid)\n\t\t\t\tthis.loading.groups = false\n\t\t\t\t// remove user from current list if current list is the removed group\n\t\t\t\tif (this.$route.params.selectedGroup === gid) {\n\t\t\t\t\tthis.$store.commit('deleteUser', userid)\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\tthis.loading.groups = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Add user to group\n\t\t *\n\t\t * @param {object} group Group object\n\t\t */\n\t\tasync addUserSubAdmin(group) {\n\t\t\tthis.loading.subadmins = true\n\t\t\tconst userid = this.user.id\n\t\t\tconst gid = group.id\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('addUserSubAdmin', {\n\t\t\t\t\tuserid,\n\t\t\t\t\tgid,\n\t\t\t\t})\n\t\t\t\tthis.userSubAdminGroups.push(group)\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t}\n\t\t\tthis.loading.subadmins = false\n\t\t},\n\n\t\t/**\n\t\t * Remove user from group\n\t\t *\n\t\t * @param {object} group Group object\n\t\t */\n\t\tasync removeUserSubAdmin(group) {\n\t\t\tthis.loading.subadmins = true\n\t\t\tconst userid = this.user.id\n\t\t\tconst gid = group.id\n\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('removeUserSubAdmin', {\n\t\t\t\t\tuserid,\n\t\t\t\t\tgid,\n\t\t\t\t})\n\t\t\t\tthis.userSubAdminGroups = this.userSubAdminGroups.filter(group => group.id !== gid)\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tthis.loading.subadmins = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Dispatch quota set request\n\t\t *\n\t\t * @param {string | object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}\n\t\t * @return {string}\n\t\t */\n\t\tasync setUserQuota(quota = 'none') {\n\t\t\t// Make sure correct label is set for unlimited quota\n\t\t\tif (quota === 'none') {\n\t\t\t\tquota = unlimitedQuota\n\t\t\t}\n\t\t\tthis.loading.quota = true\n\n\t\t\t// ensure we only send the preset id\n\t\t\tquota = quota.id ? quota.id : quota\n\n\t\t\ttry {\n\t\t\t\t// If human readable format, convert to raw float format\n\t\t\t\t// Else just send the raw string\n\t\t\t\tconst value = (parseFileSize(quota, true) || quota).toString()\n\t\t\t\tawait this.$store.dispatch('setUserData', {\n\t\t\t\t\tuserid: this.user.id,\n\t\t\t\t\tkey: 'quota',\n\t\t\t\t\tvalue,\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tthis.loading.quota = false\n\t\t\t}\n\t\t\treturn quota\n\t\t},\n\n\t\t/**\n\t\t * Validate quota string to make sure it's a valid human file size\n\t\t *\n\t\t * @param {string | object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}\n\t\t * @return {object} The validated quota object or unlimited quota if input is invalid\n\t\t */\n\t\tvalidateQuota(quota) {\n\t\t\tif (typeof quota === 'object') {\n\t\t\t\tquota = quota?.id || quota.label\n\t\t\t}\n\t\t\t// only used for new presets sent through @Tag\n\t\t\tconst validQuota = parseFileSize(quota, true)\n\t\t\tif (validQuota === null) {\n\t\t\t\treturn unlimitedQuota\n\t\t\t} else {\n\t\t\t\t// unify format output\n\t\t\t\tquota = formatFileSize(parseFileSize(quota, true))\n\t\t\t\treturn { id: quota, label: quota }\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Dispatch language set request\n\t\t *\n\t\t * @param {object} lang language object {code:'en', name:'English'}\n\t\t * @return {object}\n\t\t */\n\t\tasync setUserLanguage(lang) {\n\t\t\tthis.loading.languages = true\n\t\t\t// ensure we only send the preset id\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('setUserData', {\n\t\t\t\t\tuserid: this.user.id,\n\t\t\t\t\tkey: 'language',\n\t\t\t\t\tvalue: lang.code,\n\t\t\t\t})\n\t\t\t\tthis.loading.languages = false\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t}\n\t\t\treturn lang\n\t\t},\n\n\t\t/**\n\t\t * Dispatch new welcome mail request\n\t\t */\n\t\tsendWelcomeMail() {\n\t\t\tthis.loading.all = true\n\t\t\tthis.$store.dispatch('sendWelcomeMail', this.user.id)\n\t\t\t\t.then(() => showSuccess(t('settings', 'Welcome mail sent!'), { timeout: 2000 }))\n\t\t\t\t.finally(() => {\n\t\t\t\t\tthis.loading.all = false\n\t\t\t\t})\n\t\t},\n\n\t\tasync toggleEdit() {\n\t\t\tthis.editing = !this.editing\n\t\t\tif (this.editing) {\n\t\t\t\tawait this.$nextTick()\n\t\t\t\tthis.$refs.displayNameField?.$refs?.inputField?.$refs?.input?.focus()\n\t\t\t\tthis.loadGroupsDetails()\n\t\t\t\tthis.loadSubAdminGroupsDetails()\n\t\t\t}\n\t\t\tif (this.editedDisplayName !== this.user.displayname) {\n\t\t\t\tthis.editedDisplayName = this.user.displayname\n\t\t\t} else if (this.editedMail !== this.user.email) {\n\t\t\t\tthis.editedMail = this.user.email ?? ''\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@use './shared/styles';\n\n.user-list__row {\n\t@include styles.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 styles.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</style>\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=7faa9864&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRow.vue?vue&type=style&index=0&id=7faa9864&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=7faa9864&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=7faa9864&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 \"7faa9864\",\n null\n \n)\n\nexport default component.exports","<!--\n - SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<Fragment>\n\t\t<NewUserDialog v-if=\"showConfig.showNewUserForm\"\n\t\t\t:loading=\"loading\"\n\t\t\t:new-user=\"newUser\"\n\t\t\t:quota-options=\"quotaOptions\"\n\t\t\t@reset=\"resetForm\"\n\t\t\t@closing=\"closeDialog\" />\n\n\t\t<NcEmptyContent v-if=\"filteredUsers.length === 0\"\n\t\t\tclass=\"empty\"\n\t\t\t:name=\"isInitialLoad && loading.users ? null : t('settings', 'No accounts')\">\n\t\t\t<template #icon>\n\t\t\t\t<NcLoadingIcon v-if=\"isInitialLoad && loading.users\"\n\t\t\t\t\t:name=\"t('settings', 'Loading accounts …')\"\n\t\t\t\t\t:size=\"64\" />\n\t\t\t\t<NcIconSvgWrapper v-else :path=\"mdiAccountGroup\" :size=\"64\" />\n\t\t\t</template>\n\t\t</NcEmptyContent>\n\n\t\t<VirtualList v-else\n\t\t\t:data-component=\"UserRow\"\n\t\t\t:data-sources=\"filteredUsers\"\n\t\t\tdata-key=\"id\"\n\t\t\tdata-cy-user-list\n\t\t\t:item-height=\"rowHeight\"\n\t\t\t:style=\"style\"\n\t\t\t:extra-props=\"{\n\t\t\t\tusers,\n\t\t\t\tsettings,\n\t\t\t\thasObfuscated,\n\t\t\t\tquotaOptions,\n\t\t\t\tlanguages,\n\t\t\t\texternalActions,\n\t\t\t}\"\n\t\t\t@scroll-end=\"handleScrollEnd\">\n\t\t\t<template #before>\n\t\t\t\t<caption class=\"hidden-visually\">\n\t\t\t\t\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\t</caption>\n\t\t\t</template>\n\n\t\t\t<template #header>\n\t\t\t\t<UserListHeader :has-obfuscated=\"hasObfuscated\" />\n\t\t\t</template>\n\n\t\t\t<template #footer>\n\t\t\t\t<UserListFooter :loading=\"loading.users\"\n\t\t\t\t\t:filtered-users=\"filteredUsers\" />\n\t\t\t</template>\n\t\t</VirtualList>\n\t</Fragment>\n</template>\n\n<script>\nimport { mdiAccountGroup } from '@mdi/js'\nimport { showError } from '@nextcloud/dialogs'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport { Fragment } from 'vue-frag'\n\nimport Vue from 'vue'\nimport NcEmptyContent from '@nextcloud/vue/components/NcEmptyContent'\nimport NcIconSvgWrapper from '@nextcloud/vue/components/NcIconSvgWrapper'\nimport NcLoadingIcon from '@nextcloud/vue/components/NcLoadingIcon'\n\nimport VirtualList from './Users/VirtualList.vue'\nimport NewUserDialog from './Users/NewUserDialog.vue'\nimport UserListFooter from './Users/UserListFooter.vue'\nimport UserListHeader from './Users/UserListHeader.vue'\nimport UserRow from './Users/UserRow.vue'\n\nimport { defaultQuota, isObfuscated, unlimitedQuota } from '../utils/userUtils.ts'\nimport logger from '../logger.ts'\n\nconst newUser = Object.freeze({\n\tid: '',\n\tdisplayName: '',\n\tpassword: '',\n\tmailAddress: '',\n\tgroups: [],\n\tmanager: '',\n\tsubAdminsGroups: [],\n\tquota: defaultQuota,\n\tlanguage: {\n\t\tcode: 'en',\n\t\tname: t('settings', 'Default language'),\n\t},\n})\n\nexport default {\n\tname: 'UserList',\n\n\tcomponents: {\n\t\tFragment,\n\t\tNcEmptyContent,\n\t\tNcIconSvgWrapper,\n\t\tNcLoadingIcon,\n\t\tNewUserDialog,\n\t\tUserListFooter,\n\t\tUserListHeader,\n\t\tVirtualList,\n\t},\n\n\tprops: {\n\t\tselectedGroup: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\texternalActions: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t},\n\n\tsetup() {\n\t\t// non reactive properties\n\t\treturn {\n\t\t\tmdiAccountGroup,\n\t\t\trowHeight: 55,\n\n\t\t\tUserRow,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: {\n\t\t\t\tall: false,\n\t\t\t\tgroups: false,\n\t\t\t\tusers: false,\n\t\t\t},\n\t\t\tnewUser: { ...newUser },\n\t\t\tisInitialLoad: true,\n\t\t\tsearchQuery: '',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tshowConfig() {\n\t\t\treturn this.$store.getters.getShowConfig\n\t\t},\n\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData\n\t\t},\n\n\t\tstyle() {\n\t\t\treturn {\n\t\t\t\t'--row-height': `${this.rowHeight}px`,\n\t\t\t}\n\t\t},\n\n\t\thasObfuscated() {\n\t\t\treturn this.filteredUsers.some(user => isObfuscated(user))\n\t\t},\n\n\t\tusers() {\n\t\t\treturn this.$store.getters.getUsers\n\t\t},\n\n\t\tfilteredUsers() {\n\t\t\tif (this.selectedGroup === 'disabled') {\n\t\t\t\treturn this.users.filter(user => user.enabled === false)\n\t\t\t}\n\t\t\treturn this.users.filter(user => user.enabled !== false)\n\t\t},\n\n\t\tgroups() {\n\t\t\treturn this.$store.getters.getSortedGroups\n\t\t\t\t.filter(group => group.id !== '__nc_internal_recent' && group.id !== 'disabled')\n\t\t},\n\n\t\tquotaOptions() {\n\t\t\t// convert the preset array into objects\n\t\t\tconst quotaPreset = this.settings.quotaPreset.reduce((acc, cur) => acc.concat({\n\t\t\t\tid: cur,\n\t\t\t\tlabel: cur,\n\t\t\t}), [])\n\t\t\t// add default presets\n\t\t\tif (this.settings.allowUnlimitedQuota) {\n\t\t\t\tquotaPreset.unshift(unlimitedQuota)\n\t\t\t}\n\t\t\tquotaPreset.unshift(defaultQuota)\n\t\t\treturn quotaPreset\n\t\t},\n\n\t\tusersOffset() {\n\t\t\treturn this.$store.getters.getUsersOffset\n\t\t},\n\n\t\tusersLimit() {\n\t\t\treturn this.$store.getters.getUsersLimit\n\t\t},\n\n\t\tdisabledUsersOffset() {\n\t\t\treturn this.$store.getters.getDisabledUsersOffset\n\t\t},\n\n\t\tdisabledUsersLimit() {\n\t\t\treturn this.$store.getters.getDisabledUsersLimit\n\t\t},\n\n\t\tusersCount() {\n\t\t\treturn this.users.length\n\t\t},\n\n\t\t/* LANGUAGES */\n\t\tlanguages() {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tlabel: t('settings', 'Common languages'),\n\t\t\t\t\tlanguages: this.settings.languages.commonLanguages,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: t('settings', 'Other languages'),\n\t\t\t\t\tlanguages: this.settings.languages.otherLanguages,\n\t\t\t\t},\n\t\t\t]\n\t\t},\n\t},\n\n\twatch: {\n\t\t// watch url change and group select\n\t\tasync selectedGroup(val) {\n\t\t\tthis.isInitialLoad = true\n\t\t\t// if selected is the disabled group but it's empty\n\t\t\tawait this.redirectIfDisabled()\n\t\t\tthis.$store.commit('resetUsers')\n\t\t\tawait this.loadUsers()\n\t\t\tthis.setNewUserDefaultGroup(val)\n\t\t},\n\n\t\tfilteredUsers(filteredUsers) {\n\t\t\tlogger.debug(`${filteredUsers.length} filtered user(s)`)\n\t\t},\n\t},\n\n\tasync created() {\n\t\tawait this.loadUsers()\n\t},\n\n\tasync mounted() {\n\t\tif (!this.settings.canChangePassword) {\n\t\t\tOC.Notification.showTemporary(t('settings', 'Password change is disabled because the master key is disabled'))\n\t\t}\n\n\t\t/**\n\t\t * Reset and init new user form\n\t\t */\n\t\tthis.resetForm()\n\n\t\t/**\n\t\t * Register search\n\t\t */\n\t\tsubscribe('nextcloud:unified-search.search', this.search)\n\t\tsubscribe('nextcloud:unified-search.reset', this.resetSearch)\n\n\t\t/**\n\t\t * If disabled group but empty, redirect\n\t\t */\n\t\tawait this.redirectIfDisabled()\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('nextcloud:unified-search.search', this.search)\n\t\tunsubscribe('nextcloud:unified-search.reset', this.resetSearch)\n\t},\n\n\tmethods: {\n\t\tasync handleScrollEnd() {\n\t\t\tawait this.loadUsers()\n\t\t},\n\n\t\tasync loadUsers() {\n\t\t\tthis.loading.users = true\n\t\t\ttry {\n\t\t\t\tif (this.selectedGroup === 'disabled') {\n\t\t\t\t\tawait this.$store.dispatch('getDisabledUsers', {\n\t\t\t\t\t\toffset: this.disabledUsersOffset,\n\t\t\t\t\t\tlimit: this.disabledUsersLimit,\n\t\t\t\t\t\tsearch: this.searchQuery,\n\t\t\t\t\t})\n\t\t\t\t} else if (this.selectedGroup === '__nc_internal_recent') {\n\t\t\t\t\tawait this.$store.dispatch('getRecentUsers', {\n\t\t\t\t\t\toffset: this.usersOffset,\n\t\t\t\t\t\tlimit: this.usersLimit,\n\t\t\t\t\t\tsearch: this.searchQuery,\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\tawait this.$store.dispatch('getUsers', {\n\t\t\t\t\t\toffset: this.usersOffset,\n\t\t\t\t\t\tlimit: this.usersLimit,\n\t\t\t\t\t\tgroup: this.selectedGroup,\n\t\t\t\t\t\tsearch: this.searchQuery,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tlogger.debug(`${this.users.length} total user(s) loaded`)\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error('Failed to load accounts', { error })\n\t\t\t\tshowError('Failed to load accounts')\n\t\t\t}\n\t\t\tthis.loading.users = false\n\t\t\tthis.isInitialLoad = false\n\t\t},\n\n\t\tcloseDialog() {\n\t\t\tthis.$store.commit('setShowConfig', {\n\t\t\t\tkey: 'showNewUserForm',\n\t\t\t\tvalue: false,\n\t\t\t})\n\t\t},\n\n\t\tasync search({ query }) {\n\t\t\tthis.searchQuery = query\n\t\t\tthis.$store.commit('resetUsers')\n\t\t\tawait this.loadUsers()\n\t\t},\n\n\t\tresetSearch() {\n\t\t\tthis.search({ query: '' })\n\t\t},\n\n\t\tresetForm() {\n\t\t\t// revert form to original state\n\t\t\tthis.newUser = Object.assign({}, newUser)\n\n\t\t\t/**\n\t\t\t * Init default language from server data. The use of this.settings\n\t\t\t * requires a computed variable, which break the v-model binding of the form,\n\t\t\t * this is a much easier solution than getter and setter on a computed var\n\t\t\t */\n\t\t\tif (this.settings.defaultLanguage) {\n\t\t\t\tVue.set(this.newUser.language, 'code', this.settings.defaultLanguage)\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * In case the user directly loaded the user list within a group\n\t\t\t * the watch won't be triggered. We need to initialize it.\n\t\t\t */\n\t\t\tthis.setNewUserDefaultGroup(this.selectedGroup)\n\n\t\t\tthis.loading.all = false\n\t\t},\n\n\t\tsetNewUserDefaultGroup(value) {\n\t\t\t// Is no value set, but user is a line manager we set their group as this is a requirement for line manager\n\t\t\tif (!value && !this.settings.isAdmin && !this.settings.isDelegatedAdmin) {\n\t\t\t\tconst groups = this.$store.getters.getSubAdminGroups\n\t\t\t\t// if there are multiple groups we do not know which to add,\n\t\t\t\t// so we cannot make the managers life easier by preselecting it.\n\t\t\t\tif (groups.length === 1) {\n\t\t\t\t\tthis.newUser.groups = [...groups]\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\t// setting new account default group to the current selected one\n\t\t\t\tconst currentGroup = this.groups.find(group => group.id === value)\n\t\t\t\tif (currentGroup) {\n\t\t\t\t\tthis.newUser.groups = [currentGroup]\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t\t// fallback, empty selected group\n\t\t\tthis.newUser.groups = []\n\t\t},\n\n\t\t/**\n\t\t * If the selected group is the disabled group but the count is 0\n\t\t * redirect to the all users page.\n\t\t * we only check for 0 because we don't have the count on ldap\n\t\t * and we therefore set the usercount to -1 in this specific case\n\t\t */\n\t\tasync redirectIfDisabled() {\n\t\t\tconst allGroups = this.$store.getters.getGroups\n\t\t\tif (this.selectedGroup === 'disabled'\n\t\t\t\t\t\t&& allGroups.findIndex(group => group.id === 'disabled' && group.usercount === 0) > -1) {\n\t\t\t\t// disabled group is empty, redirection to all users\n\t\t\t\tthis.$router.push({ name: 'users' })\n\t\t\t\tawait this.loadUsers()\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@use './Users/shared/styles' as *;\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</style>\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=1e8fee5a&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserList.vue?vue&type=style&index=0&id=1e8fee5a&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=1e8fee5a&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=1e8fee5a&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 \"1e8fee5a\",\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\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 - SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<NcAppContent :page-heading=\"pageHeading\">\n\t\t<UserList :selected-group=\"selectedGroupDecoded\"\n\t\t\t:external-actions=\"externalActions\" />\n\t</NcAppContent>\n</template>\n\n<script>\nimport { translate as t } from '@nextcloud/l10n'\nimport { emit } from '@nextcloud/event-bus'\nimport { defineComponent } from 'vue'\n\nimport NcAppContent from '@nextcloud/vue/components/NcAppContent'\nimport UserList from '../components/UserList.vue'\n\nexport default defineComponent({\n\tname: 'UserManagement',\n\n\tcomponents: {\n\t\tNcAppContent,\n\t\tUserList,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\t// temporary value used for multiselect change\n\t\t\texternalActions: [],\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tpageHeading() {\n\t\t\tif (this.selectedGroupDecoded === null) {\n\t\t\t\treturn t('settings', 'All accounts')\n\t\t\t}\n\t\t\tconst matchHeading = {\n\t\t\t\tadmin: t('settings', 'Admins'),\n\t\t\t\tdisabled: t('settings', 'Disabled accounts'),\n\t\t\t}\n\t\t\treturn matchHeading[this.selectedGroupDecoded] ?? t('settings', 'Account group: {group}', { group: this.selectedGroupDecoded })\n\t\t},\n\n\t\tselectedGroup() {\n\t\t\treturn this.$route.params.selectedGroup\n\t\t},\n\n\t\tselectedGroupDecoded() {\n\t\t\treturn this.selectedGroup ? decodeURIComponent(this.selectedGroup) : null\n\t\t},\n\t},\n\n\tbeforeMount() {\n\t\tthis.$store.dispatch('getPasswordPolicyMinLength')\n\t},\n\n\tcreated() {\n\t\t// init the OCA.Settings.UserList object\n\t\twindow.OCA = window.OCA ?? {}\n\t\twindow.OCA.Settings = window.OCA.Settings ?? {}\n\t\twindow.OCA.Settings.UserList = window.OCA.Settings.UserList ?? {}\n\t\t// and add the registerAction method\n\t\twindow.OCA.Settings.UserList.registerAction = this.registerAction\n\t\temit('settings:user-management:loaded')\n\t},\n\n\tmethods: {\n\t\tt,\n\n\t\t/**\n\t\t * Register a new action for the user menu\n\t\t *\n\t\t * @param {string} icon the icon class\n\t\t * @param {string} text the text to display\n\t\t * @param {Function} action the function to run\n\t\t * @param {(user: Record<string, unknown>) => boolean} enabled return true if the action is enabled for the user\n\t\t * @return {Array}\n\t\t */\n\t\tregisterAction(icon, text, action, enabled) {\n\t\t\tthis.externalActions.push({\n\t\t\t\ticon,\n\t\t\t\ttext,\n\t\t\t\taction,\n\t\t\t\tenabled,\n\t\t\t})\n\t\t\treturn this.externalActions\n\t\t},\n\t},\n})\n</script>\n\n<style lang=\"scss\" scoped>\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</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserManagement.vue?vue&type=style&index=0&id=253f9eec&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserManagement.vue?vue&type=style&index=0&id=253f9eec&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=253f9eec&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=253f9eec&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 \"253f9eec\",\n null\n \n)\n\nexport default component.exports"],"names":["___CSS_LOADER_EXPORT___","push","module","id","formatGroup","group","name","displayname","usercount","disabled","canAdd","canRemove","searchGroups","_ref","search","offset","limit","controller","AbortController","CancelablePromise","async","resolve","reject","onCancel","abort","data","axios","get","generateOcsUrl","signal","ocs","groups","map","error","loadUserGroups","userId","_ref2","url","loadUserSubAdminGroups","_ref3","components","NcAppSettingsDialog","NcAppSettingsSection","NcCheckboxRadioSwitch","NcNoteCard","NcSelect","props","open","type","Boolean","required","selectedQuota","loadingSendMail","computed","groupSorting","$store","getters","getGroupSorting","GroupSorting","GroupName","set","sorting","commit","UserCount","isGroupSortingEnforced","getServerData","forceSortGroupByName","isModalOpen","$emit","showConfig","getShowConfig","settings","showLanguages","status","setShowConfig","showFirstLogin","showLastLogin","showUserBackend","showStoragePath","quotaOptions","quotaPreset","reduce","acc","cur","concat","label","allowUnlimitedQuota","unshift","unlimitedQuota","defaultQuota","OC","Util","computerFileSize","quota","sendWelcomeMail","newUserSendEmail","value","post","generateUrl","logger","methods","filterQuotas","option","searchValue","toLocaleLowerCase","replaceAll","indexOf","key","validateQuota","validQuota","parseFileSize","formatFileSize","setDefaultQuota","arguments","length","undefined","dispatch","app","then","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_vm","this","_c","_self","attrs","t","on","$event","_v","_s","_e","staticClass","model","callback","$$v","expression","AccountGroup","Delete","Fragment","NcActionButton","NcActionInput","NcAppNavigationItem","NcButton","NcCounterBubble","NcModal","Pencil","active","count","Number","default","String","loadingRenameGroup","openGroupMenu","showRemoveGroupModal","handleGroupMenuOpen","renameGroup","gid","trim","displayName","$refs","displayNameInput","$el","querySelector","groupid","removeGroup","showError","ref","params","selectedGroup","encodeURIComponent","scopedSlots","_u","fn","proxy","isAdmin","isDelegatedAdmin","formatGroupMenu","title","Math","max","useFormatGroups","userGroups","filter","adminGroup","find","disabledGroup","recentGroup","_defineComponent","__name","setup","__props","store","useStore","route","useRoute","router","useRouter","onBeforeMount","loadGroups","selectedGroupDecoded","decodeURIComponent","getSortedGroups","isAdminOrDelegatedAdmin","isAddGroupOpen","loadingAddGroup","hasAddGroupError","newGroupName","loadingGroups","groupsSearchQuery","groupListItems","lastGroupListItem","findLast","component","$vnode","at","listItem","isLastGroupVisible","useElementVisibility","watch","promise","cancel","__sfc","createGroup","groupId","newGroupListItem","scrollIntoView","behavior","block","mdiAccountGroup","mdiPlus","NcActionText","NcAppNavigationCaption","NcAppNavigationList","NcAppNavigationSearch","NcIconSvgWrapper","NcLoadingIcon","GroupListItem","_setup","_setupProxy","_l","refInFor","isDialogOpen","userCount","getUserCount","showNewUserMenu","mdiAccount","mdiAccountOff","mdiCog","mdiShieldAccount","mdiHistory","NcAppNavigation","NcAppNavigationNew","UserSettingsDialog","AppNavigationGroupList","_k","keyCode","apply","Symbol","toStringTag","isObfuscated","user","keys","Object","Vue","directive","vElementVisibility","extend","dataComponent","Function","dataKey","dataSources","Array","itemHeight","extraProps","bufferItems","index","headerHeight","tableHeight","resizeObserver","startIndex","shownItems","ceil","renderedItems","slice","tbodyStyle","isOverScrolled","lastIndex","hiddenAfterItems","min","paddingTop","paddingBottom","mounted","root","tfoot","thead","ResizeObserver","debounce","clientHeight","debug","onScroll","observe","addEventListener","beforeDestroy","disconnect","handleFooterVisibility","visible","round","scrollTop","_t","style","item","i","_b","tag","directives","rawName","NcDialog","NcPasswordField","NcTextField","loading","newUser","availableGroups","possibleManagers","managerInputLabel","managerLabel","usernameLabel","newUserGenerateUserID","minPasswordLength","getPasswordPolicyMinLength","subAdminsGroups","languages","commonLanguages","otherLanguages","beforeMount","searchUserManager","getSubAdminGroups","username","focus","createUser","all","userid","password","email","mailAddress","subadmin","language","code","manager","response","meta","statuscode","query","toggleLoading","addGroup","isCreating","languageFilterBy","some","includes","users","values","_g","$listeners","preventDefault","$set","newUserRequireEmail","class","filteredUsers","n","hasObfuscated","passwordLabel","defineComponent","NcActions","actions","edit","editSvg","SvgCheck","SvgPencil","enabledActions","action","enabled","isSvg","string","TypeError","XMLValidator","validate","jsonObject","parser","XMLParser","parse","x","toLowerCase","toggleEdit","icon","text","event","externalActions","formattedFullTime","useFormatDateTime","firstLoginTimestamp","relativeTime","format","timeStyle","dateStyle","availableSubAdminGroups","userSubAdminGroups","usedSpace","quotaUsed","used","size","usedQuota","pow","isNaN","userQuota","humanQuota","userLanguage","userLang","lang","userFirstLogin","userLastLoginTooltip","lastLoginTimestamp","formatDate","userLastLogin","relativeModifiedDate","NcAvatar","NcProgressBar","UserRowActions","mixins","UserRowMixin","rand","random","toString","substring","loadingPossibleManagers","currentManager","editing","groupsDetails","subAdminGroupsDetails","subadmins","delete","disable","wipe","editedDisplayName","editedPassword","editedMail","isLoadingUser","isLoadingField","uniqueId","userGroupsLabels","join","userSubAdminGroupsLabels","canEdit","getCurrentUser","uid","userActions","deleteUser","wipeUserDevices","enableDisableUser","editedUserQuota","availableLanguages","initManager","confirmPassword","dialogs","confirmDestructive","YES_NO_BUTTONS","confirm","confirmClasses","result","showSuccess","timeout","finally","filterManagers","managers","searchInitialUserManager","loadGroupsDetails","availableGroup","loadSubAdminGroupsDetails","updateUserManager","previousManager","updateDisplayName","updatePassword","updateEmail","addUserGroup","console","removeUserGroup","$route","addUserSubAdmin","removeUserSubAdmin","setUserQuota","setUserLanguage","$nextTick","displayNameField","inputField","input","backendCapabilities","setDisplayName","canChangePassword","setPassword","backend","storageLocation","freeze","NcEmptyContent","NewUserDialog","UserListFooter","UserListHeader","VirtualList","rowHeight","UserRow","isInitialLoad","searchQuery","getUsers","usersOffset","getUsersOffset","usersLimit","getUsersLimit","disabledUsersOffset","getDisabledUsersOffset","disabledUsersLimit","getDisabledUsersLimit","usersCount","val","redirectIfDisabled","loadUsers","setNewUserDefaultGroup","created","Notification","showTemporary","resetForm","subscribe","resetSearch","unsubscribe","handleScrollEnd","closeDialog","assign","defaultLanguage","currentGroup","allGroups","getGroups","findIndex","$router","showNewUserForm","NcAppContent","UserList","pageHeading","admin","window","OCA","Settings","registerAction","emit"],"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 c865be84481..188e27da8d0 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,r,s,i={6028:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var s=r(65043),i=r(56760);r(51257);const n=function(e){return e.replace(/\/$/,"")},o={requireAdmin:()=>(0,i.C5)(),get:(e,t)=>s.Ay.get(n(e),t),post:(e,t)=>s.Ay.post(n(e),t),patch:(e,t)=>s.Ay.patch(n(e),t),put:(e,t)=>s.Ay.put(n(e),t),delete:(e,t)=>s.Ay.delete(n(e),{params:t})}},12836:(e,t,r)=>{"use strict";var s=r(85471),i=r(95353),n=r(80284),o=r(58723),a=r(53334),u=r(22378);const l=(0,s.pM)({__name:"SettingsApp",setup:e=>({__sfc:!0,NcContent:u.A})}),c=(0,r(14486).A)(l,(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 d=r(40173),p=r(63814);const h=[{name:"users",path:"/:index(index.php/)?settings/users",components:{default:()=>Promise.all([r.e(4208),r.e(7265),r.e(3239)]).then(r.bind(r,95802)),navigation:()=>Promise.all([r.e(4208),r.e(7265),r.e(3239)]).then(r.bind(r,51285))},props:!0,children:[{path:":selectedGroup",name:"group"}]},{path:"/:index(index.php/)?settings/apps",name:"apps",redirect:{name:"apps-category",params:{category:(0,r(32981).C)("settings","appstoreEnabled",!0)?"discover":"installed"}},components:{default:()=>Promise.all([r.e(4208),r.e(7265),r.e(4529)]).then(r.bind(r,1368)),navigation:()=>Promise.all([r.e(4208),r.e(7265),r.e(4529)]).then(r.bind(r,78451)),sidebar:()=>Promise.all([r.e(4208),r.e(7265),r.e(4529)]).then(r.bind(r,84694))},children:[{path:":category",name:"apps-category",children:[{path:":id",name:"apps-details"}]}]}];s.Ay.use(d.Ay);const g=new d.Ay({mode:"history",base:(0,p.Jv)(""),linkActiveClass:"active",routes:h});var m=r(14744),f=r(21777),E=r(65899);r.nc=(0,f.aV)(),s.Ay.prototype.t=a.t,s.Ay.prototype.n=a.n,s.Ay.use(E.R2),s.Ay.use(n.Ay,{defaultHtml:!1}),s.Ay.use(i.Ay);const A=(0,m.P)();(0,o.O)(A,g);const b=(0,E.Ey)();new s.Ay({router:g,store:A,pinia:b,render:e=>e(c),el:"#content"})},14744:(e,r,s)=>{"use strict";s.d(r,{P:()=>D});var i=s(95353),n=s(59097),o=s(87485),a=s(35810),u=s(85168),l=s(63814),c=s(32981),d=s(65043),p=s(15916),h=s(53334);const g=Intl.Collator([(0,h.Z0)(),(0,h.lO)()],{numeric:!0,usage:"sort"});var m=s(6028),f=s(36620);const E=(0,c.C)("settings","usersSettings",{}),A=(0,n.c0)("settings").persist(!0).build(),b={id:"",name:"",usercount:0,disabled:0,canAdd:!0,canRemove:!0},I={users:[],groups:[...E.getSubAdminGroups??[],...E.systemGroups??[]],orderBy:E.sortGroups??p.q.UserCount,minPasswordLength:0,usersOffset:0,usersLimit:25,disabledUsersOffset:0,disabledUsersLimit:25,userCount:E.userCount??0,showConfig:{showStoragePath:"true"===A.getItem("account_settings__showStoragePath"),showUserBackend:"true"===A.getItem("account_settings__showUserBackend"),showFirstLogin:"true"===A.getItem("account_settings__showFirstLogin"),showLastLogin:"true"===A.getItem("account_settings__showLastLogin"),showNewUserForm:"true"===A.getItem("account_settings__showNewUserForm"),showLanguages:"true"===A.getItem("account_settings__showLanguages")}},N={appendUsers(e,t){const r=e.users.map((e=>{let{id:t}=e;return t})),s=Object.values(t).filter((e=>{let{id:t}=e;return!r.includes(t)})),i=e.users.concat(s);e.usersOffset+=e.usersLimit,e.users=i},updateDisabledUsers(e,t){e.disabledUsersOffset+=e.disabledUsersLimit},setPasswordPolicyMinLength(e,t){e.minPasswordLength=""!==t?t:0},addGroup(e,t){try{if(void 0!==e.groups.find((e=>e.id===t.id)))return;const r=Object.assign({},b,t);e.groups.unshift(r)}catch(e){console.error("Can't create group",e)}},renameGroup(e,t){let{gid:r,displayName:s}=t;const i=e.groups.findIndex((e=>e.id===r));if(i>=0){const t=e.groups[i];t.name=s,e.groups.splice(i,1,t)}},removeGroup(e,t){const r=e.groups.findIndex((e=>e.id===t));r>=0&&e.groups.splice(r,1)},addUserGroup(e,t){let{userid:r,gid:s}=t;const i=e.groups.find((e=>e.id===s)),n=e.users.find((e=>e.id===r));i&&n.enabled&&e.userCount>0&&i.usercount++,n.groups.push(s)},removeUserGroup(e,t){let{userid:r,gid:s}=t;const i=e.groups.find((e=>e.id===s)),n=e.users.find((e=>e.id===r));i&&n.enabled&&e.userCount>0&&i.usercount--;const o=n.groups;o.splice(o.indexOf(s),1)},addUserSubAdmin(e,t){let{userid:r,gid:s}=t;e.users.find((e=>e.id===r)).subadmin.push(s)},removeUserSubAdmin(e,t){let{userid:r,gid:s}=t;const i=e.users.find((e=>e.id===r)).subadmin;i.splice(i.indexOf(s),1)},deleteUser(e,t){const r=e.users.findIndex((e=>e.id===t));this.commit("updateUserCounts",{user:e.users[r],actionType:"remove"}),e.users.splice(r,1)},addUserData(e,t){const r=t.data.ocs.data;e.users.unshift(r),this.commit("updateUserCounts",{user:r,actionType:"create"})},enableDisableUser(e,t){let{userid:r,enabled:s}=t;const i=e.users.find((e=>e.id===r));i.enabled=s,this.commit("updateUserCounts",{user:i,actionType:s?"enable":"disable"})},updateUserCounts(e,t){let{user:r,actionType:s}=t;if(0===e.userCount)return;const i=e.groups.find((e=>"__nc_internal_recent"===e.id)),n=e.groups.find((e=>"disabled"===e.id));switch(s){case"enable":case"disable":n.usercount+=r.enabled?-1:1,i.usercount+=r.enabled?1:-1,e.userCount+=r.enabled?1:-1,r.groups.forEach((t=>{const s=e.groups.find((e=>e.id===t));s&&(s.disabled+=r.enabled?-1:1)}));break;case"create":i.usercount++,e.userCount++,r.groups.forEach((t=>{const r=e.groups.find((e=>e.id===t));r&&r.usercount++}));break;case"remove":r.enabled?(i.usercount--,e.userCount--,r.groups.forEach((t=>{const r=e.groups.find((e=>e.id===t));r?r.usercount--:console.warn("User group "+t+" does not exist during user removal")}))):(n.usercount--,r.groups.forEach((t=>{const r=e.groups.find((e=>e.id===t));r&&r.disabled--})));break;default:f.A.error(`Unknown action type in updateUserCounts: '${s}'`)}},setUserData(e,t){let{userid:r,key:s,value:i}=t;if("quota"===s){const t=(0,a.lT)(i,!0);e.users.find((e=>e.id===r))[s][s]=null!==t?t:i}else e.users.find((e=>e.id===r))[s]=i},resetUsers(e){e.users=[],e.usersOffset=0,e.disabledUsersOffset=0},resetGroups(e){e.groups=[...E.getSubAdminGroups??[],...E.systemGroups??[]]},setShowConfig(e,t){let{key:r,value:s}=t;A.setItem(`account_settings__${r}`,JSON.stringify(s)),e.showConfig[r]=s},setGroupSorting(e,r){const s=e.orderBy;e.orderBy=r,d.Ay.post((0,l.Jv)("/settings/users/preferences/group.sortBy"),{value:String(r)}).catch((r=>{e.orderBy=s,(0,u.Qg)(t("settings","Could not set group sorting")),f.A.error(r)}))}},v={getUsers:e=>e.users,getGroups:e=>e.groups,getSubAdminGroups:()=>E.subAdminGroups??[],getSortedGroups(e){const t=[...e.groups];return e.orderBy===p.q.UserCount?t.sort(((e,t)=>{const r=e.usercount-e.disabled,s=t.usercount-t.disabled;return r<s?1:s<r?-1:g.compare(e.name,t.name)})):t.sort(((e,t)=>g.compare(e.name,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},L=d.Ay.CancelToken;let y=null;const O={state:I,mutations:N,getters:v,actions:{searchUsers(e,t){let{offset:r,limit:s,search:i}=t;return i="string"==typeof i?i:"",m.A.get((0,l.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:r,limit:s,search:i})).catch((t=>{d.Ay.isCancel(t)||e.commit("API_FAILURE",t)}))},getUser:(e,t)=>m.A.get((0,l.KT)(`cloud/users/${t}`)).catch((t=>{d.Ay.isCancel(t)||e.commit("API_FAILURE",t)})),getUsers(e,t){let{offset:r,limit:s,search:i,group:n}=t;return y&&y.cancel("Operation canceled by another search request."),y=L.source(),i="string"==typeof i?i:"",i=i.replace(/in:[^\s]+/g,"").trim(),n="string"==typeof n?n:"",""!==n?m.A.get((0,l.KT)("cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}",{group:encodeURIComponent(n),offset:r,limit:s,search:i}),{cancelToken:y.token}).then((t=>{const r=Object.keys(t.data.ocs.data.users).length;return r>0&&e.commit("appendUsers",t.data.ocs.data.users),r})).catch((t=>{d.Ay.isCancel(t)||e.commit("API_FAILURE",t)})):m.A.get((0,l.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:r,limit:s,search:i}),{cancelToken:y.token}).then((t=>{const r=Object.keys(t.data.ocs.data.users).length;return r>0&&e.commit("appendUsers",t.data.ocs.data.users),r})).catch((t=>{d.Ay.isCancel(t)||e.commit("API_FAILURE",t)}))},async getRecentUsers(e,t){let{offset:r,limit:s,search:i}=t;const n=(0,l.KT)("cloud/users/recent?offset={offset}&limit={limit}&search={search}",{offset:r,limit:s,search:i});try{const t=await m.A.get(n),r=Object.keys(t.data.ocs.data.users).length;return r>0&&e.commit("appendUsers",t.data.ocs.data.users),r}catch(t){e.commit("API_FAILURE",t)}},async getDisabledUsers(e,t){let{offset:r,limit:s,search:i}=t;const n=(0,l.KT)("cloud/users/disabled?offset={offset}&limit={limit}&search={search}",{offset:r,limit:s,search:i});try{const t=await m.A.get(n),r=Object.keys(t.data.ocs.data.users).length;return r>0&&(e.commit("appendUsers",t.data.ocs.data.users),e.commit("updateDisabledUsers",t.data.ocs.data.users)),r}catch(t){e.commit("API_FAILURE",t)}},getGroups(e,t){let{offset:r,limit:s,search:i}=t;i="string"==typeof i?i:"";const n=-1===s?"":`&limit=${s}`;return m.A.get((0,l.KT)("cloud/groups?offset={offset}&search={search}",{offset:r,search:i})+n).then((t=>Object.keys(t.data.ocs.data.groups).length>0&&(t.data.ocs.data.groups.forEach((function(t){e.commit("addGroup",{id:t,name:t})})),!0))).catch((t=>e.commit("API_FAILURE",t)))},getUsersFromList(e,t){let{offset:r,limit:s,search:i}=t;return i="string"==typeof i?i:"",m.A.get((0,l.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:r,limit:s,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:r,offset:s,limit:i}=t;return m.A.get((0,l.KT)("cloud/users/{groupId}/details?offset={offset}&limit={limit}",{groupId:encodeURIComponent(r),offset:s,limit:i})).then((t=>e.commit("getUsersFromList",t.data.ocs.data.users))).catch((t=>e.commit("API_FAILURE",t)))},getPasswordPolicyMinLength:e=>!(!(0,o.F)().password_policy||!(0,o.F)().password_policy.minLength)&&(e.commit("setPasswordPolicyMinLength",(0,o.F)().password_policy.minLength),(0,o.F)().password_policy.minLength),addGroup:(e,t)=>m.A.requireAdmin().then((r=>m.A.post((0,l.KT)("cloud/groups"),{groupid:t}).then((r=>(e.commit("addGroup",{id:t,name:t}),{gid:t,displayName:t}))).catch((e=>{throw e})))).catch((r=>{throw e.commit("API_FAILURE",{gid:t,error:r}),r})),renameGroup(e,t){let{groupid:r,displayName:s}=t;return m.A.requireAdmin().then((t=>m.A.put((0,l.KT)("cloud/groups/{groupId}",{groupId:encodeURIComponent(r)}),{key:"displayname",value:s}).then((t=>(e.commit("renameGroup",{gid:r,displayName:s}),{groupid:r,displayName:s}))).catch((e=>{throw e})))).catch((t=>{throw e.commit("API_FAILURE",{groupid:r,error:t}),t}))},removeGroup:(e,t)=>m.A.requireAdmin().then((r=>m.A.delete((0,l.KT)("cloud/groups/{groupId}",{groupId:encodeURIComponent(t)})).then((r=>e.commit("removeGroup",t))).catch((e=>{throw e})))).catch((r=>e.commit("API_FAILURE",{gid:t,error:r}))),addUserGroup(e,t){let{userid:r,gid:s}=t;return m.A.requireAdmin().then((t=>m.A.post((0,l.KT)("cloud/users/{userid}/groups",{userid:r}),{groupid:s}).then((t=>e.commit("addUserGroup",{userid:r,gid:s}))).catch((e=>{throw e})))).catch((t=>e.commit("API_FAILURE",{userid:r,error:t})))},removeUserGroup(e,t){let{userid:r,gid:s}=t;return m.A.requireAdmin().then((t=>m.A.delete((0,l.KT)("cloud/users/{userid}/groups",{userid:r}),{groupid:s}).then((t=>e.commit("removeUserGroup",{userid:r,gid:s}))).catch((e=>{throw e})))).catch((t=>{throw e.commit("API_FAILURE",{userid:r,error:t}),t}))},addUserSubAdmin(e,t){let{userid:r,gid:s}=t;return m.A.requireAdmin().then((t=>m.A.post((0,l.KT)("cloud/users/{userid}/subadmins",{userid:r}),{groupid:s}).then((t=>e.commit("addUserSubAdmin",{userid:r,gid:s}))).catch((e=>{throw e})))).catch((t=>e.commit("API_FAILURE",{userid:r,error:t})))},removeUserSubAdmin(e,t){let{userid:r,gid:s}=t;return m.A.requireAdmin().then((t=>m.A.delete((0,l.KT)("cloud/users/{userid}/subadmins",{userid:r}),{groupid:s}).then((t=>e.commit("removeUserSubAdmin",{userid:r,gid:s}))).catch((e=>{throw e})))).catch((t=>e.commit("API_FAILURE",{userid:r,error:t})))},async wipeUserDevices(e,t){try{return await m.A.requireAdmin(),await m.A.post((0,l.KT)("cloud/users/{userid}/wipe",{userid:t}))}catch(r){return e.commit("API_FAILURE",{userid:t,error:r}),Promise.reject(new Error("Failed to wipe user devices"))}},deleteUser:(e,t)=>m.A.requireAdmin().then((r=>m.A.delete((0,l.KT)("cloud/users/{userid}",{userid:t})).then((r=>e.commit("deleteUser",t))).catch((e=>{throw e})))).catch((r=>e.commit("API_FAILURE",{userid:t,error:r}))),addUser(e,t){let{commit:r,dispatch:s}=e,{userid:i,password:n,displayName:o,email:a,groups:u,subadmin:c,quota:d,language:p,manager:h}=t;return m.A.requireAdmin().then((e=>m.A.post((0,l.KT)("cloud/users"),{userid:i,password:n,displayName:o,email:a,groups:u,subadmin:c,quota:d,language:p,manager:h}).then((e=>s("addUserData",i||e.data.ocs.data.id))).catch((e=>{throw e})))).catch((e=>{throw r("API_FAILURE",{userid:i,error:e}),e}))},addUserData:(e,t)=>m.A.requireAdmin().then((r=>m.A.get((0,l.KT)("cloud/users/{userid}",{userid:t})).then((t=>e.commit("addUserData",t))).catch((e=>{throw e})))).catch((r=>e.commit("API_FAILURE",{userid:t,error:r}))),enableDisableUser(e,t){let{userid:r,enabled:s=!0}=t;const i=s?"enable":"disable";return m.A.requireAdmin().then((t=>m.A.put((0,l.KT)("cloud/users/{userid}/{userStatus}",{userid:r,userStatus:i})).then((t=>e.commit("enableDisableUser",{userid:r,enabled:s}))).catch((e=>{throw e})))).catch((t=>e.commit("API_FAILURE",{userid:r,error:t})))},async setUserData(e,t){let{userid:r,key:s,value:i}=t;if(!["email","language","quota","displayname","password","manager"].includes(s))throw new Error("Invalid request data");if(""===i&&!["email","displayname","manager"].includes(s))throw new Error("Value cannot be empty for this field");try{return await m.A.requireAdmin(),await m.A.put((0,l.KT)("cloud/users/{userid}",{userid:r}),{key:s,value:i}),e.commit("setUserData",{userid:r,key:s,value:i})}catch(t){throw e.commit("API_FAILURE",{userid:r,error:t}),t}},sendWelcomeMail:(e,t)=>m.A.requireAdmin().then((e=>m.A.post((0,l.KT)("cloud/users/{userid}/welcome",{userid:t})).then((e=>!0)).catch((e=>{throw e})))).catch((r=>e.commit("API_FAILURE",{userid:t,error:r})))}};var x=s(85471);const T={apps:[],bundles:(0,c.C)("settings","appstoreBundles",[]),categories:[],updateCount:(0,c.C)("settings","appstoreUpdateCount",0),loading:{},gettingCategoriesPromise:null,appApiEnabled:(0,c.C)("settings","appApiEnabled",!1)},P={APPS_API_FAILURE(e,r){(0,u.Qg)(t("settings","An error occurred during the request. Unable to proceed.")+"<br>"+r.error.response.data.data.message,{isHTML:!0}),console.error(e,r)},initCategories(e,t){let{categories:r,updateCount:s}=t;e.categories=r,e.updateCount=s},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:r,error:s}=t;Array.isArray(r)||(r=[r]),r.forEach((t=>{e.apps.find((e=>e.id===t)).error=s}))},clearError(e,t){let{appId:r,error:s}=t;e.apps.find((e=>e.id===r)).error=null},enableApp(e,t){let{appId:r,groups:s}=t;const i=e.apps.find((e=>e.id===r));i.active=!0,i.groups=s,"app_api"===i.id&&(e.appApiEnabled=!0)},setInstallState(e,t){let{appId:r,canInstall:s}=t;const i=e.apps.find((e=>e.id===r));i&&(i.canInstall=!0===s)},disableApp(e,t){const r=e.apps.find((e=>e.id===t));r.active=!1,r.groups=[],r.removable&&(r.canUnInstall=!0),"app_api"===r.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 r=e.apps.find((e=>e.id===t)),s=r.update;r.update=null,r.version=s,e.updateCount--},resetApps(e){e.apps=[]},reset(e){e.apps=[],e.categories=[],e.updateCount=0},startLoading(e,t){Array.isArray(t)?t.forEach((t=>{x.Ay.set(e.loading,t,!0)})):x.Ay.set(e.loading,t,!0)},stopLoading(e,t){Array.isArray(t)?t.forEach((t=>{x.Ay.set(e.loading,t,!1)})):x.Ay.set(e.loading,t,!1)}},R={enableApp(e,r){let s,{appId:i,groups:n}=r;return s=Array.isArray(i)?i:[i],m.A.requireAdmin().then((r=>(e.commit("startLoading",s),e.commit("startLoading","install"),m.A.post((0,l.Jv)("settings/apps/enable"),{appIds:s,groups:n}).then((r=>(e.commit("stopLoading",s),e.commit("stopLoading","install"),s.forEach((t=>{e.commit("enableApp",{appId:t,groups:n})})),d.Ay.get((0,l.Jv)("apps/files/")).then((()=>{r.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:s,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",s),e.commit("stopLoading","install"),e.commit("setError",{appId:s,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 r,{appId:s,groups:i}=t;return r=Array.isArray(s)?s:[s],m.A.requireAdmin().then((()=>(e.commit("startLoading",r),e.commit("startLoading","install"),m.A.post((0,l.Jv)("settings/apps/force"),{appId:s}).then((t=>{e.commit("setInstallState",{appId:s,canInstall:!0})})).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:s,error:t})})).finally((()=>{e.commit("stopLoading",r),e.commit("stopLoading","install")}))))).catch((t=>e.commit("API_FAILURE",{appId:s,error:t})))},disableApp(e,t){let r,{appId:s}=t;return r=Array.isArray(s)?s:[s],m.A.requireAdmin().then((t=>(e.commit("startLoading",r),m.A.post((0,l.Jv)("settings/apps/disable"),{appIds:r}).then((t=>(e.commit("stopLoading",r),r.forEach((t=>{e.commit("disableApp",t)})),!0))).catch((t=>{e.commit("stopLoading",r),e.commit("APPS_API_FAILURE",{appId:s,error:t})}))))).catch((t=>e.commit("API_FAILURE",{appId:s,error:t})))},uninstallApp(e,t){let{appId:r}=t;return m.A.requireAdmin().then((t=>(e.commit("startLoading",r),m.A.get((0,l.Jv)(`settings/apps/uninstall/${r}`)).then((t=>(e.commit("stopLoading",r),e.commit("uninstallApp",r),!0))).catch((t=>{e.commit("stopLoading",r),e.commit("APPS_API_FAILURE",{appId:r,error:t})}))))).catch((t=>e.commit("API_FAILURE",{appId:r,error:t})))},updateApp(e,t){let{appId:r}=t;return m.A.requireAdmin().then((t=>(e.commit("startLoading",r),e.commit("startLoading","install"),m.A.get((0,l.Jv)(`settings/apps/update/${r}`)).then((t=>(e.commit("stopLoading","install"),e.commit("stopLoading",r),e.commit("updateApp",r),!0))).catch((t=>{e.commit("stopLoading",r),e.commit("stopLoading","install"),e.commit("APPS_API_FAILURE",{appId:r,error:t})}))))).catch((t=>e.commit("API_FAILURE",{appId:r,error:t})))},getAllApps:e=>(e.commit("startLoading","list"),m.A.get((0,l.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=m.A.get((0,l.Jv)("settings/apps/categories"));e.commit("updateCategories",t);const r=await t;return r.data.length>0?(e.commit("appendCategories",r.data),e.commit("stopLoading","categories"),!0):(e.commit("stopLoading","categories"),!1)}catch(t){e.commit("API_FAILURE",t)}}return e.state.gettingCategoriesPromise}},w={state:T,mutations:P,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:R},C={serverData:(0,c.C)("settings","usersSettings",{})},U={setServerData(e,t){e.serverData=t}},S={state:C,mutations:U,getters:{getServerData:e=>e.serverData},actions:{}},$={state:{},mutations:{},getters:{},actions:{setAppConfig(e,t){let{app:r,key:s,value:i}=t;return m.A.requireAdmin().then((e=>m.A.post((0,l.KT)("apps/provisioning_api/api/v1/config/apps/{app}/{key}",{app:r,key:s}),{value:i}).catch((e=>{throw e})))).catch((t=>e.commit("API_FAILURE",{app:r,key:s,value:i,error:t})))}}},_={API_FAILURE(e,r){try{const e=r.error.response.data.ocs.meta.message;(0,u.Qg)(t("settings","An error occurred during the request. Unable to proceed.")+"<br>"+e,{isHTML:!0})}catch(e){(0,u.Qg)(t("settings","An error occurred during the request. Unable to proceed."))}console.error(e,r)}};let F=null;const D=()=>(null===F&&(F=new i.il({modules:{users:O,apps:w,settings:S,oc:$},strict:!1,mutations:_})),F)},15916:(e,t,r)=>{"use strict";var s;r.d(t,{q:()=>s}),function(e){e[e.UserCount=1]="UserCount",e[e.GroupName=2]="GroupName"}(s||(s={}))},35810:(e,t,r)=>{"use strict";r.d(t,{Al:()=>s.r,H4:()=>s.c,Q$:()=>s.e,R3:()=>s.n,VL:()=>s.l,lJ:()=>s.d,lT:()=>c,pt:()=>s.F,ur:()=>p,v7:()=>l});var s=r(68251),i=(r(43627),r(53334)),n=r(380),o=r(65606);Error;const a=["B","KB","MB","GB","TB","PB"],u=["B","KiB","MiB","GiB","TiB","PiB"];function l(e,t=!1,r=!1,s=!1){r=r&&!s,"string"==typeof e&&(e=Number(e));let n=e>0?Math.floor(Math.log(e)/Math.log(s?1e3:1024)):0;n=Math.min((r?u.length:a.length)-1,n);const o=r?u[n]:a[n];let l=(e/Math.pow(s?1e3:1024,n)).toFixed(1);return!0===t&&0===n?("0.0"!==l?"< 1 ":"0 ")+(r?u[1]:a[1]):(l=n<2?parseFloat(l).toFixed(0):parseFloat(l).toLocaleString((0,i.lO)()),l+" "+o)}function c(e,t=!1){try{e=`${e}`.toLocaleLowerCase().replaceAll(/\s+/g,"").replaceAll(",",".")}catch(e){return null}const r=e.match(/^([0-9]*(\.[0-9]*)?)([kmgtp]?)(i?)b?$/);if(null===r||"."===r[1]||""===r[1])return null;const s=`${r[1]}`,i="i"===r[4]||t?1024:1e3;return Math.round(Number.parseFloat(s)*i**{"":0,k:1,m:2,g:3,t:4,p:5,e:6}[r[3]])}function d(e){return e instanceof Date?e.toISOString():String(e)}function p(e,t={}){const r={sortingMode:"basename",sortingOrder:"asc",...t};return function(e,t,r){r=r??[];const s=(t=t??[e=>e]).map(((e,t)=>"asc"===(r[t]??"asc")?1:-1)),n=Intl.Collator([(0,i.Z0)(),(0,i.lO)()],{numeric:!0,usage:"sort"});return[...e].sort(((e,r)=>{for(const[i,o]of t.entries()){const t=n.compare(d(o(e)),d(o(r)));if(0!==t)return t*s[i]}return 0}))}(e,[...r.sortFavoritesFirst?[e=>1!==e.attributes?.favorite]:[],...r.sortFoldersFirst?[e=>"folder"!==e.type]:[],..."basename"!==r.sortingMode?[e=>e[r.sortingMode]]:[],e=>{return(t=e.displayname||e.attributes?.displayname||e.basename).lastIndexOf(".")>0?t.slice(0,t.lastIndexOf(".")):t;var t},e=>e.basename],[...r.sortFavoritesFirst?["asc"]:[],...r.sortFoldersFirst?["asc"]:[],..."mtime"===r.sortingMode?["asc"===r.sortingOrder?"desc":"asc"]:[],..."mtime"!==r.sortingMode&&"basename"!==r.sortingMode?[r.sortingOrder]:[],r.sortingOrder,r.sortingOrder])}var h,g,m={},f={};function E(){return h||(h=1,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",r="["+t+"]["+t+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*",s=new RegExp("^"+r+"$");e.isExist=function(e){return void 0!==e},e.isEmptyObject=function(e){return 0===Object.keys(e).length},e.merge=function(e,t,r){if(t){const s=Object.keys(t),i=s.length;for(let n=0;n<i;n++)e[s[n]]="strict"===r?[t[s[n]]]:t[s[n]]}},e.getValue=function(t){return e.isExist(t)?t:""},e.isName=function(e){return!(null==s.exec(e))},e.getAllMatches=function(e,t){const r=[];let s=t.exec(e);for(;s;){const i=[];i.startIndex=t.lastIndex-s[0].length;const n=s.length;for(let e=0;e<n;e++)i.push(s[e]);r.push(i),s=t.exec(e)}return r},e.nameRegexp=r}(f)),f}function A(){if(g)return m;g=1;const e=E(),t={allowBooleanAttributes:!1,unpairedTags:[]};function r(e){return" "===e||"\t"===e||"\n"===e||"\r"===e}function s(e,t){const r=t;for(;t<e.length;t++)if("?"!=e[t]&&" "!=e[t]);else{const s=e.substr(r,t-r);if(t>5&&"xml"===s)return d("InvalidXml","XML declaration allowed only at the start of the document.",h(e,t));if("?"==e[t]&&">"==e[t+1]){t++;break}}return t}function i(e,t){if(e.length>t+5&&"-"===e[t+1]&&"-"===e[t+2]){for(t+=3;t<e.length;t++)if("-"===e[t]&&"-"===e[t+1]&&">"===e[t+2]){t+=2;break}}else if(e.length>t+8&&"D"===e[t+1]&&"O"===e[t+2]&&"C"===e[t+3]&&"T"===e[t+4]&&"Y"===e[t+5]&&"P"===e[t+6]&&"E"===e[t+7]){let r=1;for(t+=8;t<e.length;t++)if("<"===e[t])r++;else if(">"===e[t]&&(r--,0===r))break}else if(e.length>t+9&&"["===e[t+1]&&"C"===e[t+2]&&"D"===e[t+3]&&"A"===e[t+4]&&"T"===e[t+5]&&"A"===e[t+6]&&"["===e[t+7])for(t+=8;t<e.length;t++)if("]"===e[t]&&"]"===e[t+1]&&">"===e[t+2]){t+=2;break}return t}m.validate=function(n,o){o=Object.assign({},t,o);const u=[];let p=!1,g=!1;"\ufeff"===n[0]&&(n=n.substr(1));for(let t=0;t<n.length;t++)if("<"===n[t]&&"?"===n[t+1]){if(t+=2,t=s(n,t),t.err)return t}else{if("<"!==n[t]){if(r(n[t]))continue;return d("InvalidChar","char '"+n[t]+"' is not expected.",h(n,t))}{let f=t;if(t++,"!"===n[t]){t=i(n,t);continue}{let E=!1;"/"===n[t]&&(E=!0,t++);let A="";for(;t<n.length&&">"!==n[t]&&" "!==n[t]&&"\t"!==n[t]&&"\n"!==n[t]&&"\r"!==n[t];t++)A+=n[t];if(A=A.trim(),"/"===A[A.length-1]&&(A=A.substring(0,A.length-1),t--),m=A,!e.isName(m)){let e;return e=0===A.trim().length?"Invalid space after '<'.":"Tag '"+A+"' is an invalid name.",d("InvalidTag",e,h(n,t))}const b=a(n,t);if(!1===b)return d("InvalidAttr","Attributes for '"+A+"' have open quote.",h(n,t));let I=b.value;if(t=b.index,"/"===I[I.length-1]){const e=t-I.length;I=I.substring(0,I.length-1);const r=l(I,o);if(!0!==r)return d(r.err.code,r.err.msg,h(n,e+r.err.line));p=!0}else if(E){if(!b.tagClosed)return d("InvalidTag","Closing tag '"+A+"' doesn't have proper closing.",h(n,t));if(I.trim().length>0)return d("InvalidTag","Closing tag '"+A+"' can't have attributes or invalid starting.",h(n,f));if(0===u.length)return d("InvalidTag","Closing tag '"+A+"' has not been opened.",h(n,f));{const e=u.pop();if(A!==e.tagName){let t=h(n,e.tagStartPos);return d("InvalidTag","Expected closing tag '"+e.tagName+"' (opened in line "+t.line+", col "+t.col+") instead of closing tag '"+A+"'.",h(n,f))}0==u.length&&(g=!0)}}else{const e=l(I,o);if(!0!==e)return d(e.err.code,e.err.msg,h(n,t-I.length+e.err.line));if(!0===g)return d("InvalidXml","Multiple possible root nodes found.",h(n,t));-1!==o.unpairedTags.indexOf(A)||u.push({tagName:A,tagStartPos:f}),p=!0}for(t++;t<n.length;t++)if("<"===n[t]){if("!"===n[t+1]){t++,t=i(n,t);continue}if("?"!==n[t+1])break;if(t=s(n,++t),t.err)return t}else if("&"===n[t]){const e=c(n,t);if(-1==e)return d("InvalidChar","char '&' is not expected.",h(n,t));t=e}else if(!0===g&&!r(n[t]))return d("InvalidXml","Extra text at the end",h(n,t));"<"===n[t]&&t--}}}var m;return p?1==u.length?d("InvalidTag","Unclosed tag '"+u[0].tagName+"'.",h(n,u[0].tagStartPos)):!(u.length>0)||d("InvalidXml","Invalid '"+JSON.stringify(u.map((e=>e.tagName)),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):d("InvalidXml","Start tag expected.",1)};const n='"',o="'";function a(e,t){let r="",s="",i=!1;for(;t<e.length;t++){if(e[t]===n||e[t]===o)""===s?s=e[t]:s!==e[t]||(s="");else if(">"===e[t]&&""===s){i=!0;break}r+=e[t]}return""===s&&{value:r,index:t,tagClosed:i}}const u=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function l(t,r){const s=e.getAllMatches(t,u),i={};for(let e=0;e<s.length;e++){if(0===s[e][1].length)return d("InvalidAttr","Attribute '"+s[e][2]+"' has no space in starting.",f(s[e]));if(void 0!==s[e][3]&&void 0===s[e][4])return d("InvalidAttr","Attribute '"+s[e][2]+"' is without value.",f(s[e]));if(void 0===s[e][3]&&!r.allowBooleanAttributes)return d("InvalidAttr","boolean attribute '"+s[e][2]+"' is not allowed.",f(s[e]));const t=s[e][2];if(!p(t))return d("InvalidAttr","Attribute '"+t+"' is an invalid name.",f(s[e]));if(i.hasOwnProperty(t))return d("InvalidAttr","Attribute '"+t+"' is repeated.",f(s[e]));i[t]=1}return!0}function c(e,t){if(";"===e[++t])return-1;if("#"===e[t])return function(e,t){let r=/\d/;for("x"===e[t]&&(t++,r=/[\da-fA-F]/);t<e.length;t++){if(";"===e[t])return t;if(!e[t].match(r))break}return-1}(e,++t);let r=0;for(;t<e.length;t++,r++)if(!(e[t].match(/\w/)&&r<20)){if(";"===e[t])break;return-1}return t}function d(e,t,r){return{err:{code:e,msg:t,line:r.line||r,col:r.col}}}function p(t){return e.isName(t)}function h(e,t){const r=e.substring(0,t).split(/\r?\n/);return{line:r.length,col:r[r.length-1].length+1}}function f(e){return e.startIndex+e[1].length}return m}var b,I,N,v,L,y,O,x,T,P,R,w={};function C(){return T?x:(T=1,x=function(e){return"function"==typeof e?e:Array.isArray(e)?t=>{for(const r of e){if("string"==typeof r&&t===r)return!0;if(r instanceof RegExp&&r.test(t))return!0}}:()=>!1})}var U,S,$,_,F,D,G,k,M,j,B,V,X,q={};function K(){if(U)return q;function e(i,n,o){let a;const u={};for(let l=0;l<i.length;l++){const c=i[l],d=t(c);let p="";if(p=void 0===o?d:o+"."+d,d===n.textNodeName)void 0===a?a=c[d]:a+=""+c[d];else{if(void 0===d)continue;if(c[d]){let t=e(c[d],n,p);const i=s(t,n);c[":@"]?r(t,c[":@"],p,n):1!==Object.keys(t).length||void 0===t[n.textNodeName]||n.alwaysCreateTextNode?0===Object.keys(t).length&&(n.alwaysCreateTextNode?t[n.textNodeName]="":t=""):t=t[n.textNodeName],void 0!==u[d]&&u.hasOwnProperty(d)?(Array.isArray(u[d])||(u[d]=[u[d]]),u[d].push(t)):n.isArray(d,p,i)?u[d]=[t]:u[d]=t}}}return"string"==typeof a?a.length>0&&(u[n.textNodeName]=a):void 0!==a&&(u[n.textNodeName]=a),u}function t(e){const t=Object.keys(e);for(let e=0;e<t.length;e++){const r=t[e];if(":@"!==r)return r}}function r(e,t,r,s){if(t){const i=Object.keys(t),n=i.length;for(let o=0;o<n;o++){const n=i[o];s.isArray(n,r+"."+n,!0,!0)?e[n]=[t[n]]:e[n]=t[n]}}}function s(e,t){const{textNodeName:r}=t,s=Object.keys(e).length;return 0===s||!(1!==s||!e[r]&&"boolean"!=typeof e[r]&&0!==e[r])}return U=1,q.prettify=function(t,r){return e(t,r)},q}function H(){if($)return S;$=1;const{buildOptions:e}=function(){if(b)return w;b=1;const e={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(e,t,r){return e}};return w.buildOptions=function(t){return Object.assign({},e,t)},w.defaultOptions=e,w}(),t=function(){if(R)return P;R=1;const e=E(),t=N?I:(N=1,I=class{constructor(e){this.tagname=e,this.child=[],this[":@"]={}}add(e,t){"__proto__"===e&&(e="#__proto__"),this.child.push({[e]:t})}addChild(e){"__proto__"===e.tagname&&(e.tagname="#__proto__"),e[":@"]&&Object.keys(e[":@"]).length>0?this.child.push({[e.tagname]:e.child,":@":e[":@"]}):this.child.push({[e.tagname]:e.child})}}),r=function(){if(L)return v;L=1;const e=E();function t(e,t){let r="";for(;t<e.length&&"'"!==e[t]&&'"'!==e[t];t++)r+=e[t];if(r=r.trim(),-1!==r.indexOf(" "))throw new Error("External entites are not supported");const s=e[t++];let i="";for(;t<e.length&&e[t]!==s;t++)i+=e[t];return[r,i,t]}function r(e,t){return"!"===e[t+1]&&"E"===e[t+2]&&"N"===e[t+3]&&"T"===e[t+4]&&"I"===e[t+5]&&"T"===e[t+6]&&"Y"===e[t+7]}function s(e,t){return"!"===e[t+1]&&"E"===e[t+2]&&"L"===e[t+3]&&"E"===e[t+4]&&"M"===e[t+5]&&"E"===e[t+6]&&"N"===e[t+7]&&"T"===e[t+8]}function i(e,t){return"!"===e[t+1]&&"A"===e[t+2]&&"T"===e[t+3]&&"T"===e[t+4]&&"L"===e[t+5]&&"I"===e[t+6]&&"S"===e[t+7]&&"T"===e[t+8]}function n(e,t){return"!"===e[t+1]&&"N"===e[t+2]&&"O"===e[t+3]&&"T"===e[t+4]&&"A"===e[t+5]&&"T"===e[t+6]&&"I"===e[t+7]&&"O"===e[t+8]&&"N"===e[t+9]}function o(t){if(e.isName(t))return t;throw new Error(`Invalid entity name ${t}`)}return v=function(e,a){const u={};if("O"!==e[a+3]||"C"!==e[a+4]||"T"!==e[a+5]||"Y"!==e[a+6]||"P"!==e[a+7]||"E"!==e[a+8])throw new Error("Invalid Tag instead of DOCTYPE");{a+=9;let l=1,c=!1,d=!1,p="";for(;a<e.length;a++)if("<"!==e[a]||d)if(">"===e[a]){if(d?"-"===e[a-1]&&"-"===e[a-2]&&(d=!1,l--):l--,0===l)break}else"["===e[a]?c=!0:p+=e[a];else{if(c&&r(e,a)){let r,s;a+=7,[r,s,a]=t(e,a+1),-1===s.indexOf("&")&&(u[o(r)]={regx:RegExp(`&${r};`,"g"),val:s})}else c&&s(e,a)||c&&i(e,a)?a+=8:c&&n(e,a)?a+=9:d=!0;l++,p=""}if(0!==l)throw new Error("Unclosed DOCTYPE")}return{entities:u,i:a}}}(),s=function(){if(O)return y;O=1;const e=/^[-+]?0x[a-fA-F0-9]+$/,t=/^([\-\+])?(0*)(\.[0-9]+([eE]\-?[0-9]+)?|[0-9]+(\.[0-9]+([eE]\-?[0-9]+)?)?)$/;!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt),!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);const r={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};return y=function(s,i={}){if(i=Object.assign({},r,i),!s||"string"!=typeof s)return s;let n=s.trim();if(void 0!==i.skipLike&&i.skipLike.test(n))return s;if(i.hex&&e.test(n))return Number.parseInt(n,16);{const e=t.exec(n);if(e){const t=e[1],r=e[2];let a=(o=e[3])&&-1!==o.indexOf(".")?("."===(o=o.replace(/0+$/,""))?o="0":"."===o[0]?o="0"+o:"."===o[o.length-1]&&(o=o.substr(0,o.length-1)),o):o;const u=e[4]||e[6];if(!i.leadingZeros&&r.length>0&&t&&"."!==n[2])return s;if(!i.leadingZeros&&r.length>0&&!t&&"."!==n[1])return s;{const e=Number(n),o=""+e;return-1!==o.search(/[eE]/)||u?i.eNotation?e:s:-1!==n.indexOf(".")?"0"===o&&""===a||o===a||t&&o==="-"+a?e:s:r?a===o||t+a===o?e:s:n===o||n===t+o?e:s}}return s}var o}}(),i=C();function n(e){const t=Object.keys(e);for(let r=0;r<t.length;r++){const s=t[r];this.lastEntities[s]={regex:new RegExp("&"+s+";","g"),val:e[s]}}}function o(e,t,r,s,i,n,o){if(void 0!==e&&(this.options.trimValues&&!s&&(e=e.trim()),e.length>0)){o||(e=this.replaceEntitiesValue(e));const s=this.options.tagValueProcessor(t,e,r,i,n);return null==s?e:typeof s!=typeof e||s!==e?s:this.options.trimValues||e.trim()===e?b(e,this.options.parseTagValue,this.options.numberParseOptions):e}}function a(e){if(this.options.removeNSPrefix){const t=e.split(":"),r="/"===e.charAt(0)?"/":"";if("xmlns"===t[0])return"";2===t.length&&(e=r+t[1])}return e}const u=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function l(t,r,s){if(!0!==this.options.ignoreAttributes&&"string"==typeof t){const s=e.getAllMatches(t,u),i=s.length,n={};for(let e=0;e<i;e++){const t=this.resolveNameSpace(s[e][1]);if(this.ignoreAttributesFn(t,r))continue;let i=s[e][4],o=this.options.attributeNamePrefix+t;if(t.length)if(this.options.transformAttributeName&&(o=this.options.transformAttributeName(o)),"__proto__"===o&&(o="#__proto__"),void 0!==i){this.options.trimValues&&(i=i.trim()),i=this.replaceEntitiesValue(i);const e=this.options.attributeValueProcessor(t,i,r);n[o]=null==e?i:typeof e!=typeof i||e!==i?e:b(i,this.options.parseAttributeValue,this.options.numberParseOptions)}else this.options.allowBooleanAttributes&&(n[o]=!0)}if(!Object.keys(n).length)return;if(this.options.attributesGroupName){const e={};return e[this.options.attributesGroupName]=n,e}return n}}const c=function(e){e=e.replace(/\r\n?/g,"\n");const s=new t("!xml");let i=s,n="",o="";for(let a=0;a<e.length;a++)if("<"===e[a])if("/"===e[a+1]){const t=m(e,">",a,"Closing Tag is not closed.");let r=e.substring(a+2,t).trim();if(this.options.removeNSPrefix){const e=r.indexOf(":");-1!==e&&(r=r.substr(e+1))}this.options.transformTagName&&(r=this.options.transformTagName(r)),i&&(n=this.saveTextToParentTag(n,i,o));const s=o.substring(o.lastIndexOf(".")+1);if(r&&-1!==this.options.unpairedTags.indexOf(r))throw new Error(`Unpaired tag can not be used as closing tag: </${r}>`);let u=0;s&&-1!==this.options.unpairedTags.indexOf(s)?(u=o.lastIndexOf(".",o.lastIndexOf(".")-1),this.tagsNodeStack.pop()):u=o.lastIndexOf("."),o=o.substring(0,u),i=this.tagsNodeStack.pop(),n="",a=t}else if("?"===e[a+1]){let r=f(e,a,!1,"?>");if(!r)throw new Error("Pi Tag is not closed.");if(n=this.saveTextToParentTag(n,i,o),this.options.ignoreDeclaration&&"?xml"===r.tagName||this.options.ignorePiTags);else{const e=new t(r.tagName);e.add(this.options.textNodeName,""),r.tagName!==r.tagExp&&r.attrExpPresent&&(e[":@"]=this.buildAttributesMap(r.tagExp,o,r.tagName)),this.addChild(i,e,o)}a=r.closeIndex+1}else if("!--"===e.substr(a+1,3)){const t=m(e,"--\x3e",a+4,"Comment is not closed.");if(this.options.commentPropName){const r=e.substring(a+4,t-2);n=this.saveTextToParentTag(n,i,o),i.add(this.options.commentPropName,[{[this.options.textNodeName]:r}])}a=t}else if("!D"===e.substr(a+1,2)){const t=r(e,a);this.docTypeEntities=t.entities,a=t.i}else if("!["===e.substr(a+1,2)){const t=m(e,"]]>",a,"CDATA is not closed.")-2,r=e.substring(a+9,t);n=this.saveTextToParentTag(n,i,o);let s=this.parseTextData(r,i.tagname,o,!0,!1,!0,!0);null==s&&(s=""),this.options.cdataPropName?i.add(this.options.cdataPropName,[{[this.options.textNodeName]:r}]):i.add(this.options.textNodeName,s),a=t+2}else{let r=f(e,a,this.options.removeNSPrefix),u=r.tagName;const l=r.rawTagName;let c=r.tagExp,d=r.attrExpPresent,p=r.closeIndex;this.options.transformTagName&&(u=this.options.transformTagName(u)),i&&n&&"!xml"!==i.tagname&&(n=this.saveTextToParentTag(n,i,o,!1));const h=i;if(h&&-1!==this.options.unpairedTags.indexOf(h.tagname)&&(i=this.tagsNodeStack.pop(),o=o.substring(0,o.lastIndexOf("."))),u!==s.tagname&&(o+=o?"."+u:u),this.isItStopNode(this.options.stopNodes,o,u)){let s="";if(c.length>0&&c.lastIndexOf("/")===c.length-1)"/"===u[u.length-1]?(u=u.substr(0,u.length-1),o=o.substr(0,o.length-1),c=u):c=c.substr(0,c.length-1),a=r.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(u))a=r.closeIndex;else{const t=this.readStopNodeData(e,l,p+1);if(!t)throw new Error(`Unexpected end of ${l}`);a=t.i,s=t.tagContent}const n=new t(u);u!==c&&d&&(n[":@"]=this.buildAttributesMap(c,o,u)),s&&(s=this.parseTextData(s,u,o,!0,d,!0,!0)),o=o.substr(0,o.lastIndexOf(".")),n.add(this.options.textNodeName,s),this.addChild(i,n,o)}else{if(c.length>0&&c.lastIndexOf("/")===c.length-1){"/"===u[u.length-1]?(u=u.substr(0,u.length-1),o=o.substr(0,o.length-1),c=u):c=c.substr(0,c.length-1),this.options.transformTagName&&(u=this.options.transformTagName(u));const e=new t(u);u!==c&&d&&(e[":@"]=this.buildAttributesMap(c,o,u)),this.addChild(i,e,o),o=o.substr(0,o.lastIndexOf("."))}else{const e=new t(u);this.tagsNodeStack.push(i),u!==c&&d&&(e[":@"]=this.buildAttributesMap(c,o,u)),this.addChild(i,e,o),i=e}n="",a=p}}else n+=e[a];return s.child};function d(e,t,r){const s=this.options.updateTag(t.tagname,r,t[":@"]);!1===s||("string"==typeof s?(t.tagname=s,e.addChild(t)):e.addChild(t))}const p=function(e){if(this.options.processEntities){for(let t in this.docTypeEntities){const r=this.docTypeEntities[t];e=e.replace(r.regx,r.val)}for(let t in this.lastEntities){const r=this.lastEntities[t];e=e.replace(r.regex,r.val)}if(this.options.htmlEntities)for(let t in this.htmlEntities){const r=this.htmlEntities[t];e=e.replace(r.regex,r.val)}e=e.replace(this.ampEntity.regex,this.ampEntity.val)}return e};function h(e,t,r,s){return e&&(void 0===s&&(s=0===Object.keys(t.child).length),void 0!==(e=this.parseTextData(e,t.tagname,r,!1,!!t[":@"]&&0!==Object.keys(t[":@"]).length,s))&&""!==e&&t.add(this.options.textNodeName,e),e=""),e}function g(e,t,r){const s="*."+r;for(const r in e){const i=e[r];if(s===i||t===i)return!0}return!1}function m(e,t,r,s){const i=e.indexOf(t,r);if(-1===i)throw new Error(s);return i+t.length-1}function f(e,t,r,s=">"){const i=function(e,t,r=">"){let s,i="";for(let n=t;n<e.length;n++){let t=e[n];if(s)t===s&&(s="");else if('"'===t||"'"===t)s=t;else if(t===r[0]){if(!r[1])return{data:i,index:n};if(e[n+1]===r[1])return{data:i,index:n}}else"\t"===t&&(t=" ");i+=t}}(e,t+1,s);if(!i)return;let n=i.data;const o=i.index,a=n.search(/\s/);let u=n,l=!0;-1!==a&&(u=n.substring(0,a),n=n.substring(a+1).trimStart());const c=u;if(r){const e=u.indexOf(":");-1!==e&&(u=u.substr(e+1),l=u!==i.data.substr(e+1))}return{tagName:u,tagExp:n,closeIndex:o,attrExpPresent:l,rawTagName:c}}function A(e,t,r){const s=r;let i=1;for(;r<e.length;r++)if("<"===e[r])if("/"===e[r+1]){const n=m(e,">",r,`${t} is not closed`);if(e.substring(r+2,n).trim()===t&&(i--,0===i))return{tagContent:e.substring(s,r),i:n};r=n}else if("?"===e[r+1])r=m(e,"?>",r+1,"StopNode is not closed.");else if("!--"===e.substr(r+1,3))r=m(e,"--\x3e",r+3,"StopNode is not closed.");else if("!["===e.substr(r+1,2))r=m(e,"]]>",r,"StopNode is not closed.")-2;else{const s=f(e,r,">");s&&((s&&s.tagName)===t&&"/"!==s.tagExp[s.tagExp.length-1]&&i++,r=s.closeIndex)}}function b(t,r,i){if(r&&"string"==typeof t){const e=t.trim();return"true"===e||"false"!==e&&s(t,i)}return e.isExist(t)?t:""}return P=class{constructor(e){this.options=e,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,16))}},this.addExternalEntities=n,this.parseXml=c,this.parseTextData=o,this.resolveNameSpace=a,this.buildAttributesMap=l,this.isItStopNode=g,this.replaceEntitiesValue=p,this.readStopNodeData=A,this.saveTextToParentTag=h,this.addChild=d,this.ignoreAttributesFn=i(this.options.ignoreAttributes)}}}(),{prettify:r}=K(),s=A();return S=class{constructor(t){this.externalEntities={},this.options=e(t)}parse(e,i){if("string"==typeof e);else{if(!e.toString)throw new Error("XML data is accepted in String or Bytes[] form.");e=e.toString()}if(i){!0===i&&(i={});const t=s.validate(e,i);if(!0!==t)throw Error(`${t.err.msg}:${t.err.line}:${t.err.col}`)}const n=new t(this.options);n.addExternalEntities(this.externalEntities);const o=n.parseXml(e);return this.options.preserveOrder||void 0===o?o:r(o,this.options)}addEntity(e,t){if(-1!==t.indexOf("&"))throw new Error("Entity value can't have '&'");if(-1!==e.indexOf("&")||-1!==e.indexOf(";"))throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for '&#xD;'");if("&"===t)throw new Error("An entity with value '&' is not permitted");this.externalEntities[e]=t}}}function J(){if(F)return _;function e(n,o,a,u){let l="",c=!1;for(let d=0;d<n.length;d++){const p=n[d],h=t(p);if(void 0===h)continue;let g="";if(g=0===a.length?h:`${a}.${h}`,h===o.textNodeName){let e=p[h];s(g,o)||(e=o.tagValueProcessor(h,e),e=i(e,o)),c&&(l+=u),l+=e,c=!1;continue}if(h===o.cdataPropName){c&&(l+=u),l+=`<![CDATA[${p[h][0][o.textNodeName]}]]>`,c=!1;continue}if(h===o.commentPropName){l+=u+`\x3c!--${p[h][0][o.textNodeName]}--\x3e`,c=!0;continue}if("?"===h[0]){const e=r(p[":@"],o),t="?xml"===h?"":u;let s=p[h][0][o.textNodeName];s=0!==s.length?" "+s:"",l+=t+`<${h}${s}${e}?>`,c=!0;continue}let m=u;""!==m&&(m+=o.indentBy);const f=u+`<${h}${r(p[":@"],o)}`,E=e(p[h],o,g,m);-1!==o.unpairedTags.indexOf(h)?o.suppressUnpairedNode?l+=f+">":l+=f+"/>":E&&0!==E.length||!o.suppressEmptyNode?E&&E.endsWith(">")?l+=f+`>${E}${u}</${h}>`:(l+=f+">",E&&""!==u&&(E.includes("/>")||E.includes("</"))?l+=u+o.indentBy+E+u:l+=E,l+=`</${h}>`):l+=f+"/>",c=!0}return l}function t(e){const t=Object.keys(e);for(let r=0;r<t.length;r++){const s=t[r];if(e.hasOwnProperty(s)&&":@"!==s)return s}}function r(e,t){let r="";if(e&&!t.ignoreAttributes)for(let s in e){if(!e.hasOwnProperty(s))continue;let n=t.attributeValueProcessor(s,e[s]);n=i(n,t),!0===n&&t.suppressBooleanAttributes?r+=` ${s.substr(t.attributeNamePrefix.length)}`:r+=` ${s.substr(t.attributeNamePrefix.length)}="${n}"`}return r}function s(e,t){let r=(e=e.substr(0,e.length-t.textNodeName.length-1)).substr(e.lastIndexOf(".")+1);for(let s in t.stopNodes)if(t.stopNodes[s]===e||t.stopNodes[s]==="*."+r)return!0;return!1}function i(e,t){if(e&&e.length>0&&t.processEntities)for(let r=0;r<t.entities.length;r++){const s=t.entities[r];e=e.replace(s.regex,s.val)}return e}return F=1,_=function(t,r){let s="";return r.format&&r.indentBy.length>0&&(s="\n"),e(t,r,"",s)}}function Y(){if(B)return j;B=1;const e="object"==typeof o&&o.env&&o.env.NODE_DEBUG&&/\bsemver\b/i.test(o.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{};return j=e}function Z(){if(X)return V;X=1;const e=Number.MAX_SAFE_INTEGER||9007199254740991;return V={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:e,RELEASE_TYPES:["major","premajor","minor","preminor","patch","prepatch","prerelease"],SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}}!function(){if(M)return k;M=1;const e=A(),t=H(),r=function(){if(G)return D;G=1;const e=J(),t=C(),r={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:"&amp;"},{regex:new RegExp(">","g"),val:"&gt;"},{regex:new RegExp("<","g"),val:"&lt;"},{regex:new RegExp("'","g"),val:"&apos;"},{regex:new RegExp('"',"g"),val:"&quot;"}],processEntities:!0,stopNodes:[],oneListGroup:!1};function s(e){this.options=Object.assign({},r,e),!0===this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.ignoreAttributesFn=t(this.options.ignoreAttributes),this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=o),this.processTextOrObjNode=i,this.options.format?(this.indentate=n,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function i(e,t,r,s){const i=this.j2x(e,r+1,s.concat(t));return void 0!==e[this.options.textNodeName]&&1===Object.keys(e).length?this.buildTextValNode(e[this.options.textNodeName],t,i.attrStr,r):this.buildObjectNode(i.val,t,i.attrStr,r)}function n(e){return this.options.indentBy.repeat(e)}function o(e){return!(!e.startsWith(this.options.attributeNamePrefix)||e===this.options.textNodeName)&&e.substr(this.attrPrefixLen)}return s.prototype.build=function(t){return this.options.preserveOrder?e(t,this.options):(Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(t={[this.options.arrayNodeName]:t}),this.j2x(t,0,[]).val)},s.prototype.j2x=function(e,t,r){let s="",i="";const n=r.join(".");for(let o in e)if(Object.prototype.hasOwnProperty.call(e,o))if(void 0===e[o])this.isAttribute(o)&&(i+="");else if(null===e[o])this.isAttribute(o)?i+="":"?"===o[0]?i+=this.indentate(t)+"<"+o+"?"+this.tagEndChar:i+=this.indentate(t)+"<"+o+"/"+this.tagEndChar;else if(e[o]instanceof Date)i+=this.buildTextValNode(e[o],o,"",t);else if("object"!=typeof e[o]){const r=this.isAttribute(o);if(r&&!this.ignoreAttributesFn(r,n))s+=this.buildAttrPairStr(r,""+e[o]);else if(!r)if(o===this.options.textNodeName){let t=this.options.tagValueProcessor(o,""+e[o]);i+=this.replaceEntitiesValue(t)}else i+=this.buildTextValNode(e[o],o,"",t)}else if(Array.isArray(e[o])){const s=e[o].length;let n="",a="";for(let u=0;u<s;u++){const s=e[o][u];if(void 0===s);else if(null===s)"?"===o[0]?i+=this.indentate(t)+"<"+o+"?"+this.tagEndChar:i+=this.indentate(t)+"<"+o+"/"+this.tagEndChar;else if("object"==typeof s)if(this.options.oneListGroup){const e=this.j2x(s,t+1,r.concat(o));n+=e.val,this.options.attributesGroupName&&s.hasOwnProperty(this.options.attributesGroupName)&&(a+=e.attrStr)}else n+=this.processTextOrObjNode(s,o,t,r);else if(this.options.oneListGroup){let e=this.options.tagValueProcessor(o,s);e=this.replaceEntitiesValue(e),n+=e}else n+=this.buildTextValNode(s,o,"",t)}this.options.oneListGroup&&(n=this.buildObjectNode(n,o,a,t)),i+=n}else if(this.options.attributesGroupName&&o===this.options.attributesGroupName){const t=Object.keys(e[o]),r=t.length;for(let i=0;i<r;i++)s+=this.buildAttrPairStr(t[i],""+e[o][t[i]])}else i+=this.processTextOrObjNode(e[o],o,t,r);return{attrStr:s,val:i}},s.prototype.buildAttrPairStr=function(e,t){return t=this.options.attributeValueProcessor(e,""+t),t=this.replaceEntitiesValue(t),this.options.suppressBooleanAttributes&&"true"===t?" "+e:" "+e+'="'+t+'"'},s.prototype.buildObjectNode=function(e,t,r,s){if(""===e)return"?"===t[0]?this.indentate(s)+"<"+t+r+"?"+this.tagEndChar:this.indentate(s)+"<"+t+r+this.closeTag(t)+this.tagEndChar;{let i="</"+t+this.tagEndChar,n="";return"?"===t[0]&&(n="?",i=""),!r&&""!==r||-1!==e.indexOf("<")?!1!==this.options.commentPropName&&t===this.options.commentPropName&&0===n.length?this.indentate(s)+`\x3c!--${e}--\x3e`+this.newLine:this.indentate(s)+"<"+t+r+n+this.tagEndChar+e+this.indentate(s)+i:this.indentate(s)+"<"+t+r+n+">"+e+i}},s.prototype.closeTag=function(e){let t="";return-1!==this.options.unpairedTags.indexOf(e)?this.options.suppressUnpairedNode||(t="/"):t=this.options.suppressEmptyNode?"/":`></${e}`,t},s.prototype.buildTextValNode=function(e,t,r,s){if(!1!==this.options.cdataPropName&&t===this.options.cdataPropName)return this.indentate(s)+`<![CDATA[${e}]]>`+this.newLine;if(!1!==this.options.commentPropName&&t===this.options.commentPropName)return this.indentate(s)+`\x3c!--${e}--\x3e`+this.newLine;if("?"===t[0])return this.indentate(s)+"<"+t+r+"?"+this.tagEndChar;{let i=this.options.tagValueProcessor(t,e);return i=this.replaceEntitiesValue(i),""===i?this.indentate(s)+"<"+t+r+this.closeTag(t)+this.tagEndChar:this.indentate(s)+"<"+t+r+">"+i+"</"+t+this.tagEndChar}},s.prototype.replaceEntitiesValue=function(e){if(e&&e.length>0&&this.options.processEntities)for(let t=0;t<this.options.entities.length;t++){const r=this.options.entities[t];e=e.replace(r.regex,r.val)}return e},D=s}();k={XMLParser:t,XMLValidator:e,XMLBuilder:r}}();var z,Q,W,ee,te,re,se,ie,ne,oe,ae,ue,le,ce={exports:{}};function de(){if(se)return re;se=1;const e=Y(),{MAX_LENGTH:t,MAX_SAFE_INTEGER:r}=Z(),{safeRe:s,t:i}=(z||(z=1,function(e,t){const{MAX_SAFE_COMPONENT_LENGTH:r,MAX_SAFE_BUILD_LENGTH:s,MAX_LENGTH:i}=Z(),n=Y(),o=(t=e.exports={}).re=[],a=t.safeRe=[],u=t.src=[],l=t.t={};let c=0;const d="[a-zA-Z0-9-]",p=[["\\s",1],["\\d",i],[d,s]],h=(e,t,r)=>{const s=(e=>{for(const[t,r]of p)e=e.split(`${t}*`).join(`${t}{0,${r}}`).split(`${t}+`).join(`${t}{1,${r}}`);return e})(t),i=c++;n(e,i,t),l[e]=i,u[i]=t,o[i]=new RegExp(t,r?"g":void 0),a[i]=new RegExp(s,r?"g":void 0)};h("NUMERICIDENTIFIER","0|[1-9]\\d*"),h("NUMERICIDENTIFIERLOOSE","\\d+"),h("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${d}*`),h("MAINVERSION",`(${u[l.NUMERICIDENTIFIER]})\\.(${u[l.NUMERICIDENTIFIER]})\\.(${u[l.NUMERICIDENTIFIER]})`),h("MAINVERSIONLOOSE",`(${u[l.NUMERICIDENTIFIERLOOSE]})\\.(${u[l.NUMERICIDENTIFIERLOOSE]})\\.(${u[l.NUMERICIDENTIFIERLOOSE]})`),h("PRERELEASEIDENTIFIER",`(?:${u[l.NUMERICIDENTIFIER]}|${u[l.NONNUMERICIDENTIFIER]})`),h("PRERELEASEIDENTIFIERLOOSE",`(?:${u[l.NUMERICIDENTIFIERLOOSE]}|${u[l.NONNUMERICIDENTIFIER]})`),h("PRERELEASE",`(?:-(${u[l.PRERELEASEIDENTIFIER]}(?:\\.${u[l.PRERELEASEIDENTIFIER]})*))`),h("PRERELEASELOOSE",`(?:-?(${u[l.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${u[l.PRERELEASEIDENTIFIERLOOSE]})*))`),h("BUILDIDENTIFIER",`${d}+`),h("BUILD",`(?:\\+(${u[l.BUILDIDENTIFIER]}(?:\\.${u[l.BUILDIDENTIFIER]})*))`),h("FULLPLAIN",`v?${u[l.MAINVERSION]}${u[l.PRERELEASE]}?${u[l.BUILD]}?`),h("FULL",`^${u[l.FULLPLAIN]}$`),h("LOOSEPLAIN",`[v=\\s]*${u[l.MAINVERSIONLOOSE]}${u[l.PRERELEASELOOSE]}?${u[l.BUILD]}?`),h("LOOSE",`^${u[l.LOOSEPLAIN]}$`),h("GTLT","((?:<|>)?=?)"),h("XRANGEIDENTIFIERLOOSE",`${u[l.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),h("XRANGEIDENTIFIER",`${u[l.NUMERICIDENTIFIER]}|x|X|\\*`),h("XRANGEPLAIN",`[v=\\s]*(${u[l.XRANGEIDENTIFIER]})(?:\\.(${u[l.XRANGEIDENTIFIER]})(?:\\.(${u[l.XRANGEIDENTIFIER]})(?:${u[l.PRERELEASE]})?${u[l.BUILD]}?)?)?`),h("XRANGEPLAINLOOSE",`[v=\\s]*(${u[l.XRANGEIDENTIFIERLOOSE]})(?:\\.(${u[l.XRANGEIDENTIFIERLOOSE]})(?:\\.(${u[l.XRANGEIDENTIFIERLOOSE]})(?:${u[l.PRERELEASELOOSE]})?${u[l.BUILD]}?)?)?`),h("XRANGE",`^${u[l.GTLT]}\\s*${u[l.XRANGEPLAIN]}$`),h("XRANGELOOSE",`^${u[l.GTLT]}\\s*${u[l.XRANGEPLAINLOOSE]}$`),h("COERCEPLAIN",`(^|[^\\d])(\\d{1,${r}})(?:\\.(\\d{1,${r}}))?(?:\\.(\\d{1,${r}}))?`),h("COERCE",`${u[l.COERCEPLAIN]}(?:$|[^\\d])`),h("COERCEFULL",u[l.COERCEPLAIN]+`(?:${u[l.PRERELEASE]})?(?:${u[l.BUILD]})?(?:$|[^\\d])`),h("COERCERTL",u[l.COERCE],!0),h("COERCERTLFULL",u[l.COERCEFULL],!0),h("LONETILDE","(?:~>?)"),h("TILDETRIM",`(\\s*)${u[l.LONETILDE]}\\s+`,!0),t.tildeTrimReplace="$1~",h("TILDE",`^${u[l.LONETILDE]}${u[l.XRANGEPLAIN]}$`),h("TILDELOOSE",`^${u[l.LONETILDE]}${u[l.XRANGEPLAINLOOSE]}$`),h("LONECARET","(?:\\^)"),h("CARETTRIM",`(\\s*)${u[l.LONECARET]}\\s+`,!0),t.caretTrimReplace="$1^",h("CARET",`^${u[l.LONECARET]}${u[l.XRANGEPLAIN]}$`),h("CARETLOOSE",`^${u[l.LONECARET]}${u[l.XRANGEPLAINLOOSE]}$`),h("COMPARATORLOOSE",`^${u[l.GTLT]}\\s*(${u[l.LOOSEPLAIN]})$|^$`),h("COMPARATOR",`^${u[l.GTLT]}\\s*(${u[l.FULLPLAIN]})$|^$`),h("COMPARATORTRIM",`(\\s*)${u[l.GTLT]}\\s*(${u[l.LOOSEPLAIN]}|${u[l.XRANGEPLAIN]})`,!0),t.comparatorTrimReplace="$1$2$3",h("HYPHENRANGE",`^\\s*(${u[l.XRANGEPLAIN]})\\s+-\\s+(${u[l.XRANGEPLAIN]})\\s*$`),h("HYPHENRANGELOOSE",`^\\s*(${u[l.XRANGEPLAINLOOSE]})\\s+-\\s+(${u[l.XRANGEPLAINLOOSE]})\\s*$`),h("STAR","(<|>)?=?\\s*\\*"),h("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),h("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")}(ce,ce.exports)),ce.exports),n=function(){if(W)return Q;W=1;const e=Object.freeze({loose:!0}),t=Object.freeze({});return Q=r=>r?"object"!=typeof r?e:r:t}(),{compareIdentifiers:o}=function(){if(te)return ee;te=1;const e=/^[0-9]+$/,t=(t,r)=>{const s=e.test(t),i=e.test(r);return s&&i&&(t=+t,r=+r),t===r?0:s&&!i?-1:i&&!s?1:t<r?-1:1};return ee={compareIdentifiers:t,rcompareIdentifiers:(e,r)=>t(r,e)}}();class a{constructor(o,u){if(u=n(u),o instanceof a){if(o.loose===!!u.loose&&o.includePrerelease===!!u.includePrerelease)return o;o=o.version}else if("string"!=typeof o)throw new TypeError(`Invalid version. Must be a string. Got type "${typeof o}".`);if(o.length>t)throw new TypeError(`version is longer than ${t} characters`);e("SemVer",o,u),this.options=u,this.loose=!!u.loose,this.includePrerelease=!!u.includePrerelease;const l=o.trim().match(u.loose?s[i.LOOSE]:s[i.FULL]);if(!l)throw new TypeError(`Invalid Version: ${o}`);if(this.raw=o,this.major=+l[1],this.minor=+l[2],this.patch=+l[3],this.major>r||this.major<0)throw new TypeError("Invalid major version");if(this.minor>r||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>r||this.patch<0)throw new TypeError("Invalid patch version");l[4]?this.prerelease=l[4].split(".").map((e=>{if(/^[0-9]+$/.test(e)){const t=+e;if(t>=0&&t<r)return t}return e})):this.prerelease=[],this.build=l[5]?l[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(t){if(e("SemVer.compare",this.version,this.options,t),!(t instanceof a)){if("string"==typeof t&&t===this.version)return 0;t=new a(t,this.options)}return t.version===this.version?0:this.compareMain(t)||this.comparePre(t)}compareMain(e){return e instanceof a||(e=new a(e,this.options)),o(this.major,e.major)||o(this.minor,e.minor)||o(this.patch,e.patch)}comparePre(t){if(t instanceof a||(t=new a(t,this.options)),this.prerelease.length&&!t.prerelease.length)return-1;if(!this.prerelease.length&&t.prerelease.length)return 1;if(!this.prerelease.length&&!t.prerelease.length)return 0;let r=0;do{const s=this.prerelease[r],i=t.prerelease[r];if(e("prerelease compare",r,s,i),void 0===s&&void 0===i)return 0;if(void 0===i)return 1;if(void 0===s)return-1;if(s!==i)return o(s,i)}while(++r)}compareBuild(t){t instanceof a||(t=new a(t,this.options));let r=0;do{const s=this.build[r],i=t.build[r];if(e("build compare",r,s,i),void 0===s&&void 0===i)return 0;if(void 0===i)return 1;if(void 0===s)return-1;if(s!==i)return o(s,i)}while(++r)}inc(e,t,r){switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",t,r);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",t,r);break;case"prepatch":this.prerelease.length=0,this.inc("patch",t,r),this.inc("pre",t,r);break;case"prerelease":0===this.prerelease.length&&this.inc("patch",t,r),this.inc("pre",t,r);break;case"major":0===this.minor&&0===this.patch&&0!==this.prerelease.length||this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":0===this.patch&&0!==this.prerelease.length||this.minor++,this.patch=0,this.prerelease=[];break;case"patch":0===this.prerelease.length&&this.patch++,this.prerelease=[];break;case"pre":{const e=Number(r)?1:0;if(!t&&!1===r)throw new Error("invalid increment argument: identifier is empty");if(0===this.prerelease.length)this.prerelease=[e];else{let s=this.prerelease.length;for(;--s>=0;)"number"==typeof this.prerelease[s]&&(this.prerelease[s]++,s=-2);if(-1===s){if(t===this.prerelease.join(".")&&!1===r)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(e)}}if(t){let s=[t,e];!1===r&&(s=[t]),0===o(this.prerelease[0],t)?isNaN(this.prerelease[1])&&(this.prerelease=s):this.prerelease=s}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}}return re=a}!function(){if(ae)return oe;ae=1;const e=function(){if(ne)return ie;ne=1;const e=de();return ie=(t,r,s=!1)=>{if(t instanceof e)return t;try{return new e(t,r)}catch(e){if(!s)return null;throw e}}}();oe=(t,r)=>{const s=e(t,r);return s?s.version:null}}(),function(){if(le)return ue;le=1;const e=de();ue=(t,r)=>new e(t,r).major}(),n.m},36620:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});const s=(0,r(35947).YK)().setApp("settings").detectUser().build()},58723:(e,t)=>{function r(e,t){var s={name:e.name,path:e.path,hash:e.hash,query:e.query,params:e.params,fullPath:e.fullPath,meta:e.meta};return t&&(s.from=r(t)),Object.freeze(s)}t.O=function(e,t,s){var i=(s||{}).moduleName||"route";e.registerModule(i,{namespaced:!0,state:r(t.currentRoute),mutations:{ROUTE_CHANGED:function(t,s){e.state[i]=r(s.to,s.from)}}});var n,o=!1,a=e.watch((function(e){return e[i]}),(function(e){var r=e.fullPath;r!==n&&(null!=n&&(o=!0,t.push(e)),n=r)}),{sync:!0}),u=t.afterEach((function(t,r){o?o=!1:(n=t.fullPath,e.commit(i+"/ROUTE_CHANGED",{to:t,from:r}))}));return function(){null!=u&&u(),null!=a&&a(),e.unregisterModule(i)}}}},n={};function o(e){var t=n[e];if(void 0!==t)return t.exports;var r=n[e]={id:e,loaded:!1,exports:{}};return i[e].call(r.exports,r,r.exports,o),r.loaded=!0,r.exports}o.m=i,e=[],o.O=(t,r,s,i)=>{if(!r){var n=1/0;for(c=0;c<e.length;c++){r=e[c][0],s=e[c][1],i=e[c][2];for(var a=!0,u=0;u<r.length;u++)(!1&i||n>=i)&&Object.keys(o.O).every((e=>o.O[e](r[u])))?r.splice(u--,1):(a=!1,i<n&&(n=i));if(a){e.splice(c--,1);var l=s();void 0!==l&&(t=l)}}return t}i=i||0;for(var c=e.length;c>0&&e[c-1][2]>i;c--)e[c]=e[c-1];e[c]=[r,s,i]},o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((t,r)=>(o.f[r](e,t),t)),[])),o.u=e=>(({3239:"settings-users",4529:"settings-apps-view"}[e]||e)+"-"+e+".js?v="+{459:"975afd1e02f53abf8034",1023:"06cf5496a0a2d7ef494a",2441:"2c050d23f9070dfa7f03",3239:"0828a85406800581fcfe",4529:"ab85428fc71ea1124397",5862:"142cd48ca8ec32e57725",6227:"3494381758c4754ef3f5",7265:"3ea08242e475ac7a22e1",8737:"1ee3b21131ac8193a04d"}[e]),o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r={},s="nextcloud:",o.l=(e,t,i,n)=>{if(r[e])r[e].push(t);else{var a,u;if(void 0!==i)for(var l=document.getElementsByTagName("script"),c=0;c<l.length;c++){var d=l[c];if(d.getAttribute("src")==e||d.getAttribute("data-webpack")==s+i){a=d;break}}a||(u=!0,(a=document.createElement("script")).charset="utf-8",a.timeout=120,o.nc&&a.setAttribute("nonce",o.nc),a.setAttribute("data-webpack",s+i),a.src=e),r[e]=[t];var p=(t,s)=>{a.onerror=a.onload=null,clearTimeout(h);var i=r[e];if(delete r[e],a.parentNode&&a.parentNode.removeChild(a),i&&i.forEach((e=>e(s))),t)return t(s)},h=setTimeout(p.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=p.bind(null,a.onerror),a.onload=p.bind(null,a.onload),u&&document.head.appendChild(a)}},o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),o.j=2689,(()=>{var e;o.g.importScripts&&(e=o.g.location+"");var t=o.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");if(r.length)for(var s=r.length-1;s>-1&&(!e||!/^http(s?):/.test(e));)e=r[s--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),o.p=e})(),(()=>{o.b=document.baseURI||self.location.href;var e={2689:0};o.f.j=(t,r)=>{var s=o.o(e,t)?e[t]:void 0;if(0!==s)if(s)r.push(s[2]);else{var i=new Promise(((r,i)=>s=e[t]=[r,i]));r.push(s[2]=i);var n=o.p+o.u(t),a=new Error;o.l(n,(r=>{if(o.o(e,t)&&(0!==(s=e[t])&&(e[t]=void 0),s)){var i=r&&("load"===r.type?"missing":r.type),n=r&&r.target&&r.target.src;a.message="Loading chunk "+t+" failed.\n("+i+": "+n+")",a.name="ChunkLoadError",a.type=i,a.request=n,s[1](a)}}),"chunk-"+t,t)}},o.O.j=t=>0===e[t];var t=(t,r)=>{var s,i,n=r[0],a=r[1],u=r[2],l=0;if(n.some((t=>0!==e[t]))){for(s in a)o.o(a,s)&&(o.m[s]=a[s]);if(u)var c=u(o)}for(t&&t(r);l<n.length;l++)i=n[l],o.o(e,i)&&e[i]&&e[i][0](),e[i]=0;return o.O(c)},r=self.webpackChunknextcloud=self.webpackChunknextcloud||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),o.nc=void 0;var a=o.O(void 0,[4208],(()=>o(12836)));a=o.O(a)})();
-//# sourceMappingURL=settings-vue-settings-apps-users-management.js.map?v=5bc5644413d5caee59eb \ No newline at end of file
+(()=>{var e,r,s,i={6028:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var s=r(65043),i=r(56760);r(51257);const n=function(e){return e.replace(/\/$/,"")},o={requireAdmin:()=>(0,i.C5)(),get:(e,t)=>s.Ay.get(n(e),t),post:(e,t)=>s.Ay.post(n(e),t),patch:(e,t)=>s.Ay.patch(n(e),t),put:(e,t)=>s.Ay.put(n(e),t),delete:(e,t)=>s.Ay.delete(n(e),{params:t})}},12836:(e,t,r)=>{"use strict";var s=r(85471),i=r(95353),n=r(80284),o=r(58723),a=r(53334),u=r(22378);const l=(0,s.pM)({__name:"SettingsApp",setup:e=>({__sfc:!0,NcContent:u.A})}),c=(0,r(14486).A)(l,(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 d=r(40173),p=r(63814);const h=[{name:"users",path:"/:index(index.php/)?settings/users",components:{default:()=>Promise.all([r.e(4208),r.e(7265),r.e(3239)]).then(r.bind(r,95802)),navigation:()=>Promise.all([r.e(4208),r.e(7265),r.e(3239)]).then(r.bind(r,69922))},props:!0,children:[{path:":selectedGroup",name:"group"}]},{path:"/:index(index.php/)?settings/apps",name:"apps",redirect:{name:"apps-category",params:{category:(0,r(32981).C)("settings","appstoreEnabled",!0)?"discover":"installed"}},components:{default:()=>Promise.all([r.e(4208),r.e(7265),r.e(4529)]).then(r.bind(r,1368)),navigation:()=>Promise.all([r.e(4208),r.e(7265),r.e(4529)]).then(r.bind(r,78451)),sidebar:()=>Promise.all([r.e(4208),r.e(7265),r.e(4529)]).then(r.bind(r,84694))},children:[{path:":category",name:"apps-category",children:[{path:":id",name:"apps-details"}]}]}];s.Ay.use(d.Ay);const g=new d.Ay({mode:"history",base:(0,p.Jv)(""),linkActiveClass:"active",routes:h});var m=r(14744),f=r(21777),E=r(65899);r.nc=(0,f.aV)(),s.Ay.prototype.t=a.t,s.Ay.prototype.n=a.n,s.Ay.use(E.R2),s.Ay.use(n.Ay,{defaultHtml:!1}),s.Ay.use(i.Ay);const A=(0,m.P)();(0,o.O)(A,g);const b=(0,E.Ey)();new s.Ay({router:g,store:A,pinia:b,render:e=>e(c),el:"#content"})},14744:(e,r,s)=>{"use strict";s.d(r,{P:()=>D});var i=s(95353),n=s(59097),o=s(87485),a=s(35810),u=s(85168),l=s(63814),c=s(32981),d=s(65043),p=s(15916),h=s(53334);const g=Intl.Collator([(0,h.Z0)(),(0,h.lO)()],{numeric:!0,usage:"sort"});var m=s(6028),f=s(36620);const E=(0,c.C)("settings","usersSettings",{}),A=(0,n.c0)("settings").persist(!0).build(),b={id:"",name:"",usercount:0,disabled:0,canAdd:!0,canRemove:!0},I={users:[],groups:[...E.getSubAdminGroups??[],...E.systemGroups??[]],orderBy:E.sortGroups??p.q.UserCount,minPasswordLength:0,usersOffset:0,usersLimit:25,disabledUsersOffset:0,disabledUsersLimit:25,userCount:E.userCount??0,showConfig:{showStoragePath:"true"===A.getItem("account_settings__showStoragePath"),showUserBackend:"true"===A.getItem("account_settings__showUserBackend"),showFirstLogin:"true"===A.getItem("account_settings__showFirstLogin"),showLastLogin:"true"===A.getItem("account_settings__showLastLogin"),showNewUserForm:"true"===A.getItem("account_settings__showNewUserForm"),showLanguages:"true"===A.getItem("account_settings__showLanguages")}},N={appendUsers(e,t){const r=e.users.map((e=>{let{id:t}=e;return t})),s=Object.values(t).filter((e=>{let{id:t}=e;return!r.includes(t)})),i=e.users.concat(s);e.usersOffset+=e.usersLimit,e.users=i},updateDisabledUsers(e,t){e.disabledUsersOffset+=e.disabledUsersLimit},setPasswordPolicyMinLength(e,t){e.minPasswordLength=""!==t?t:0},addGroup(e,t){try{if(void 0!==e.groups.find((e=>e.id===t.id)))return;const r=Object.assign({},b,t);e.groups.unshift(r)}catch(e){console.error("Can't create group",e)}},renameGroup(e,t){let{gid:r,displayName:s}=t;const i=e.groups.findIndex((e=>e.id===r));if(i>=0){const t=e.groups[i];t.name=s,e.groups.splice(i,1,t)}},removeGroup(e,t){const r=e.groups.findIndex((e=>e.id===t));r>=0&&e.groups.splice(r,1)},addUserGroup(e,t){let{userid:r,gid:s}=t;const i=e.groups.find((e=>e.id===s)),n=e.users.find((e=>e.id===r));i&&n.enabled&&e.userCount>0&&i.usercount++,n.groups.push(s)},removeUserGroup(e,t){let{userid:r,gid:s}=t;const i=e.groups.find((e=>e.id===s)),n=e.users.find((e=>e.id===r));i&&n.enabled&&e.userCount>0&&i.usercount--;const o=n.groups;o.splice(o.indexOf(s),1)},addUserSubAdmin(e,t){let{userid:r,gid:s}=t;e.users.find((e=>e.id===r)).subadmin.push(s)},removeUserSubAdmin(e,t){let{userid:r,gid:s}=t;const i=e.users.find((e=>e.id===r)).subadmin;i.splice(i.indexOf(s),1)},deleteUser(e,t){const r=e.users.findIndex((e=>e.id===t));this.commit("updateUserCounts",{user:e.users[r],actionType:"remove"}),e.users.splice(r,1)},addUserData(e,t){const r=t.data.ocs.data;e.users.unshift(r),this.commit("updateUserCounts",{user:r,actionType:"create"})},enableDisableUser(e,t){let{userid:r,enabled:s}=t;const i=e.users.find((e=>e.id===r));i.enabled=s,this.commit("updateUserCounts",{user:i,actionType:s?"enable":"disable"})},updateUserCounts(e,t){let{user:r,actionType:s}=t;if(0===e.userCount)return;const i=e.groups.find((e=>"__nc_internal_recent"===e.id)),n=e.groups.find((e=>"disabled"===e.id));switch(s){case"enable":case"disable":n.usercount+=r.enabled?-1:1,i.usercount+=r.enabled?1:-1,e.userCount+=r.enabled?1:-1,r.groups.forEach((t=>{const s=e.groups.find((e=>e.id===t));s&&(s.disabled+=r.enabled?-1:1)}));break;case"create":i.usercount++,e.userCount++,r.groups.forEach((t=>{const r=e.groups.find((e=>e.id===t));r&&r.usercount++}));break;case"remove":r.enabled?(i.usercount--,e.userCount--,r.groups.forEach((t=>{const r=e.groups.find((e=>e.id===t));r?r.usercount--:console.warn("User group "+t+" does not exist during user removal")}))):(n.usercount--,r.groups.forEach((t=>{const r=e.groups.find((e=>e.id===t));r&&r.disabled--})));break;default:f.A.error(`Unknown action type in updateUserCounts: '${s}'`)}},setUserData(e,t){let{userid:r,key:s,value:i}=t;if("quota"===s){const t=(0,a.lT)(i,!0);e.users.find((e=>e.id===r))[s][s]=null!==t?t:i}else e.users.find((e=>e.id===r))[s]=i},resetUsers(e){e.users=[],e.usersOffset=0,e.disabledUsersOffset=0},resetGroups(e){e.groups=[...E.getSubAdminGroups??[],...E.systemGroups??[]]},setShowConfig(e,t){let{key:r,value:s}=t;A.setItem(`account_settings__${r}`,JSON.stringify(s)),e.showConfig[r]=s},setGroupSorting(e,r){const s=e.orderBy;e.orderBy=r,d.Ay.post((0,l.Jv)("/settings/users/preferences/group.sortBy"),{value:String(r)}).catch((r=>{e.orderBy=s,(0,u.Qg)(t("settings","Could not set group sorting")),f.A.error(r)}))}},v={getUsers:e=>e.users,getGroups:e=>e.groups,getSubAdminGroups:()=>E.subAdminGroups??[],getSortedGroups(e){const t=[...e.groups];return e.orderBy===p.q.UserCount?t.sort(((e,t)=>{const r=e.usercount-e.disabled,s=t.usercount-t.disabled;return r<s?1:s<r?-1:g.compare(e.name,t.name)})):t.sort(((e,t)=>g.compare(e.name,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},L=d.Ay.CancelToken;let y=null;const O={state:I,mutations:N,getters:v,actions:{searchUsers(e,t){let{offset:r,limit:s,search:i}=t;return i="string"==typeof i?i:"",m.A.get((0,l.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:r,limit:s,search:i})).catch((t=>{d.Ay.isCancel(t)||e.commit("API_FAILURE",t)}))},getUser:(e,t)=>m.A.get((0,l.KT)(`cloud/users/${t}`)).catch((t=>{d.Ay.isCancel(t)||e.commit("API_FAILURE",t)})),getUsers(e,t){let{offset:r,limit:s,search:i,group:n}=t;return y&&y.cancel("Operation canceled by another search request."),y=L.source(),i="string"==typeof i?i:"",i=i.replace(/in:[^\s]+/g,"").trim(),n="string"==typeof n?n:"",""!==n?m.A.get((0,l.KT)("cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}",{group:encodeURIComponent(n),offset:r,limit:s,search:i}),{cancelToken:y.token}).then((t=>{const r=Object.keys(t.data.ocs.data.users).length;return r>0&&e.commit("appendUsers",t.data.ocs.data.users),r})).catch((t=>{d.Ay.isCancel(t)||e.commit("API_FAILURE",t)})):m.A.get((0,l.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:r,limit:s,search:i}),{cancelToken:y.token}).then((t=>{const r=Object.keys(t.data.ocs.data.users).length;return r>0&&e.commit("appendUsers",t.data.ocs.data.users),r})).catch((t=>{d.Ay.isCancel(t)||e.commit("API_FAILURE",t)}))},async getRecentUsers(e,t){let{offset:r,limit:s,search:i}=t;const n=(0,l.KT)("cloud/users/recent?offset={offset}&limit={limit}&search={search}",{offset:r,limit:s,search:i});try{const t=await m.A.get(n),r=Object.keys(t.data.ocs.data.users).length;return r>0&&e.commit("appendUsers",t.data.ocs.data.users),r}catch(t){e.commit("API_FAILURE",t)}},async getDisabledUsers(e,t){let{offset:r,limit:s,search:i}=t;const n=(0,l.KT)("cloud/users/disabled?offset={offset}&limit={limit}&search={search}",{offset:r,limit:s,search:i});try{const t=await m.A.get(n),r=Object.keys(t.data.ocs.data.users).length;return r>0&&(e.commit("appendUsers",t.data.ocs.data.users),e.commit("updateDisabledUsers",t.data.ocs.data.users)),r}catch(t){e.commit("API_FAILURE",t)}},getGroups(e,t){let{offset:r,limit:s,search:i}=t;i="string"==typeof i?i:"";const n=-1===s?"":`&limit=${s}`;return m.A.get((0,l.KT)("cloud/groups?offset={offset}&search={search}",{offset:r,search:i})+n).then((t=>Object.keys(t.data.ocs.data.groups).length>0&&(t.data.ocs.data.groups.forEach((function(t){e.commit("addGroup",{id:t,name:t})})),!0))).catch((t=>e.commit("API_FAILURE",t)))},getUsersFromList(e,t){let{offset:r,limit:s,search:i}=t;return i="string"==typeof i?i:"",m.A.get((0,l.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:r,limit:s,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:r,offset:s,limit:i}=t;return m.A.get((0,l.KT)("cloud/users/{groupId}/details?offset={offset}&limit={limit}",{groupId:encodeURIComponent(r),offset:s,limit:i})).then((t=>e.commit("getUsersFromList",t.data.ocs.data.users))).catch((t=>e.commit("API_FAILURE",t)))},getPasswordPolicyMinLength:e=>!(!(0,o.F)().password_policy||!(0,o.F)().password_policy.minLength)&&(e.commit("setPasswordPolicyMinLength",(0,o.F)().password_policy.minLength),(0,o.F)().password_policy.minLength),addGroup:(e,t)=>m.A.requireAdmin().then((r=>m.A.post((0,l.KT)("cloud/groups"),{groupid:t}).then((r=>(e.commit("addGroup",{id:t,name:t}),{gid:t,displayName:t}))).catch((e=>{throw e})))).catch((r=>{throw e.commit("API_FAILURE",{gid:t,error:r}),r})),renameGroup(e,t){let{groupid:r,displayName:s}=t;return m.A.requireAdmin().then((t=>m.A.put((0,l.KT)("cloud/groups/{groupId}",{groupId:encodeURIComponent(r)}),{key:"displayname",value:s}).then((t=>(e.commit("renameGroup",{gid:r,displayName:s}),{groupid:r,displayName:s}))).catch((e=>{throw e})))).catch((t=>{throw e.commit("API_FAILURE",{groupid:r,error:t}),t}))},removeGroup:(e,t)=>m.A.requireAdmin().then((r=>m.A.delete((0,l.KT)("cloud/groups/{groupId}",{groupId:encodeURIComponent(t)})).then((r=>e.commit("removeGroup",t))).catch((e=>{throw e})))).catch((r=>e.commit("API_FAILURE",{gid:t,error:r}))),addUserGroup(e,t){let{userid:r,gid:s}=t;return m.A.requireAdmin().then((t=>m.A.post((0,l.KT)("cloud/users/{userid}/groups",{userid:r}),{groupid:s}).then((t=>e.commit("addUserGroup",{userid:r,gid:s}))).catch((e=>{throw e})))).catch((t=>e.commit("API_FAILURE",{userid:r,error:t})))},removeUserGroup(e,t){let{userid:r,gid:s}=t;return m.A.requireAdmin().then((t=>m.A.delete((0,l.KT)("cloud/users/{userid}/groups",{userid:r}),{groupid:s}).then((t=>e.commit("removeUserGroup",{userid:r,gid:s}))).catch((e=>{throw e})))).catch((t=>{throw e.commit("API_FAILURE",{userid:r,error:t}),t}))},addUserSubAdmin(e,t){let{userid:r,gid:s}=t;return m.A.requireAdmin().then((t=>m.A.post((0,l.KT)("cloud/users/{userid}/subadmins",{userid:r}),{groupid:s}).then((t=>e.commit("addUserSubAdmin",{userid:r,gid:s}))).catch((e=>{throw e})))).catch((t=>e.commit("API_FAILURE",{userid:r,error:t})))},removeUserSubAdmin(e,t){let{userid:r,gid:s}=t;return m.A.requireAdmin().then((t=>m.A.delete((0,l.KT)("cloud/users/{userid}/subadmins",{userid:r}),{groupid:s}).then((t=>e.commit("removeUserSubAdmin",{userid:r,gid:s}))).catch((e=>{throw e})))).catch((t=>e.commit("API_FAILURE",{userid:r,error:t})))},async wipeUserDevices(e,t){try{return await m.A.requireAdmin(),await m.A.post((0,l.KT)("cloud/users/{userid}/wipe",{userid:t}))}catch(r){return e.commit("API_FAILURE",{userid:t,error:r}),Promise.reject(new Error("Failed to wipe user devices"))}},deleteUser:(e,t)=>m.A.requireAdmin().then((r=>m.A.delete((0,l.KT)("cloud/users/{userid}",{userid:t})).then((r=>e.commit("deleteUser",t))).catch((e=>{throw e})))).catch((r=>e.commit("API_FAILURE",{userid:t,error:r}))),addUser(e,t){let{commit:r,dispatch:s}=e,{userid:i,password:n,displayName:o,email:a,groups:u,subadmin:c,quota:d,language:p,manager:h}=t;return m.A.requireAdmin().then((e=>m.A.post((0,l.KT)("cloud/users"),{userid:i,password:n,displayName:o,email:a,groups:u,subadmin:c,quota:d,language:p,manager:h}).then((e=>s("addUserData",i||e.data.ocs.data.id))).catch((e=>{throw e})))).catch((e=>{throw r("API_FAILURE",{userid:i,error:e}),e}))},addUserData:(e,t)=>m.A.requireAdmin().then((r=>m.A.get((0,l.KT)("cloud/users/{userid}",{userid:t})).then((t=>e.commit("addUserData",t))).catch((e=>{throw e})))).catch((r=>e.commit("API_FAILURE",{userid:t,error:r}))),enableDisableUser(e,t){let{userid:r,enabled:s=!0}=t;const i=s?"enable":"disable";return m.A.requireAdmin().then((t=>m.A.put((0,l.KT)("cloud/users/{userid}/{userStatus}",{userid:r,userStatus:i})).then((t=>e.commit("enableDisableUser",{userid:r,enabled:s}))).catch((e=>{throw e})))).catch((t=>e.commit("API_FAILURE",{userid:r,error:t})))},async setUserData(e,t){let{userid:r,key:s,value:i}=t;if(!["email","language","quota","displayname","password","manager"].includes(s))throw new Error("Invalid request data");if(""===i&&!["email","displayname","manager"].includes(s))throw new Error("Value cannot be empty for this field");try{return await m.A.requireAdmin(),await m.A.put((0,l.KT)("cloud/users/{userid}",{userid:r}),{key:s,value:i}),e.commit("setUserData",{userid:r,key:s,value:i})}catch(t){throw e.commit("API_FAILURE",{userid:r,error:t}),t}},sendWelcomeMail:(e,t)=>m.A.requireAdmin().then((e=>m.A.post((0,l.KT)("cloud/users/{userid}/welcome",{userid:t})).then((e=>!0)).catch((e=>{throw e})))).catch((r=>e.commit("API_FAILURE",{userid:t,error:r})))}};var x=s(85471);const T={apps:[],bundles:(0,c.C)("settings","appstoreBundles",[]),categories:[],updateCount:(0,c.C)("settings","appstoreUpdateCount",0),loading:{},gettingCategoriesPromise:null,appApiEnabled:(0,c.C)("settings","appApiEnabled",!1)},P={APPS_API_FAILURE(e,r){(0,u.Qg)(t("settings","An error occurred during the request. Unable to proceed.")+"<br>"+r.error.response.data.data.message,{isHTML:!0}),console.error(e,r)},initCategories(e,t){let{categories:r,updateCount:s}=t;e.categories=r,e.updateCount=s},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:r,error:s}=t;Array.isArray(r)||(r=[r]),r.forEach((t=>{e.apps.find((e=>e.id===t)).error=s}))},clearError(e,t){let{appId:r,error:s}=t;e.apps.find((e=>e.id===r)).error=null},enableApp(e,t){let{appId:r,groups:s}=t;const i=e.apps.find((e=>e.id===r));i.active=!0,i.groups=s,"app_api"===i.id&&(e.appApiEnabled=!0)},setInstallState(e,t){let{appId:r,canInstall:s}=t;const i=e.apps.find((e=>e.id===r));i&&(i.canInstall=!0===s)},disableApp(e,t){const r=e.apps.find((e=>e.id===t));r.active=!1,r.groups=[],r.removable&&(r.canUnInstall=!0),"app_api"===r.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 r=e.apps.find((e=>e.id===t)),s=r.update;r.update=null,r.version=s,e.updateCount--},resetApps(e){e.apps=[]},reset(e){e.apps=[],e.categories=[],e.updateCount=0},startLoading(e,t){Array.isArray(t)?t.forEach((t=>{x.Ay.set(e.loading,t,!0)})):x.Ay.set(e.loading,t,!0)},stopLoading(e,t){Array.isArray(t)?t.forEach((t=>{x.Ay.set(e.loading,t,!1)})):x.Ay.set(e.loading,t,!1)}},R={enableApp(e,r){let s,{appId:i,groups:n}=r;return s=Array.isArray(i)?i:[i],m.A.requireAdmin().then((r=>(e.commit("startLoading",s),e.commit("startLoading","install"),m.A.post((0,l.Jv)("settings/apps/enable"),{appIds:s,groups:n}).then((r=>(e.commit("stopLoading",s),e.commit("stopLoading","install"),s.forEach((t=>{e.commit("enableApp",{appId:t,groups:n})})),d.Ay.get((0,l.Jv)("apps/files/")).then((()=>{r.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:s,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",s),e.commit("stopLoading","install"),e.commit("setError",{appId:s,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 r,{appId:s,groups:i}=t;return r=Array.isArray(s)?s:[s],m.A.requireAdmin().then((()=>(e.commit("startLoading",r),e.commit("startLoading","install"),m.A.post((0,l.Jv)("settings/apps/force"),{appId:s}).then((t=>{e.commit("setInstallState",{appId:s,canInstall:!0})})).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:s,error:t})})).finally((()=>{e.commit("stopLoading",r),e.commit("stopLoading","install")}))))).catch((t=>e.commit("API_FAILURE",{appId:s,error:t})))},disableApp(e,t){let r,{appId:s}=t;return r=Array.isArray(s)?s:[s],m.A.requireAdmin().then((t=>(e.commit("startLoading",r),m.A.post((0,l.Jv)("settings/apps/disable"),{appIds:r}).then((t=>(e.commit("stopLoading",r),r.forEach((t=>{e.commit("disableApp",t)})),!0))).catch((t=>{e.commit("stopLoading",r),e.commit("APPS_API_FAILURE",{appId:s,error:t})}))))).catch((t=>e.commit("API_FAILURE",{appId:s,error:t})))},uninstallApp(e,t){let{appId:r}=t;return m.A.requireAdmin().then((t=>(e.commit("startLoading",r),m.A.get((0,l.Jv)(`settings/apps/uninstall/${r}`)).then((t=>(e.commit("stopLoading",r),e.commit("uninstallApp",r),!0))).catch((t=>{e.commit("stopLoading",r),e.commit("APPS_API_FAILURE",{appId:r,error:t})}))))).catch((t=>e.commit("API_FAILURE",{appId:r,error:t})))},updateApp(e,t){let{appId:r}=t;return m.A.requireAdmin().then((t=>(e.commit("startLoading",r),e.commit("startLoading","install"),m.A.get((0,l.Jv)(`settings/apps/update/${r}`)).then((t=>(e.commit("stopLoading","install"),e.commit("stopLoading",r),e.commit("updateApp",r),!0))).catch((t=>{e.commit("stopLoading",r),e.commit("stopLoading","install"),e.commit("APPS_API_FAILURE",{appId:r,error:t})}))))).catch((t=>e.commit("API_FAILURE",{appId:r,error:t})))},getAllApps:e=>(e.commit("startLoading","list"),m.A.get((0,l.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=m.A.get((0,l.Jv)("settings/apps/categories"));e.commit("updateCategories",t);const r=await t;return r.data.length>0?(e.commit("appendCategories",r.data),e.commit("stopLoading","categories"),!0):(e.commit("stopLoading","categories"),!1)}catch(t){e.commit("API_FAILURE",t)}}return e.state.gettingCategoriesPromise}},w={state:T,mutations:P,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:R},C={serverData:(0,c.C)("settings","usersSettings",{})},U={setServerData(e,t){e.serverData=t}},S={state:C,mutations:U,getters:{getServerData:e=>e.serverData},actions:{}},$={state:{},mutations:{},getters:{},actions:{setAppConfig(e,t){let{app:r,key:s,value:i}=t;return m.A.requireAdmin().then((e=>m.A.post((0,l.KT)("apps/provisioning_api/api/v1/config/apps/{app}/{key}",{app:r,key:s}),{value:i}).catch((e=>{throw e})))).catch((t=>e.commit("API_FAILURE",{app:r,key:s,value:i,error:t})))}}},_={API_FAILURE(e,r){try{const e=r.error.response.data.ocs.meta.message;(0,u.Qg)(t("settings","An error occurred during the request. Unable to proceed.")+"<br>"+e,{isHTML:!0})}catch(e){(0,u.Qg)(t("settings","An error occurred during the request. Unable to proceed."))}console.error(e,r)}};let F=null;const D=()=>(null===F&&(F=new i.il({modules:{users:O,apps:w,settings:S,oc:$},strict:!1,mutations:_})),F)},15916:(e,t,r)=>{"use strict";var s;r.d(t,{q:()=>s}),function(e){e[e.UserCount=1]="UserCount",e[e.GroupName=2]="GroupName"}(s||(s={}))},35810:(e,t,r)=>{"use strict";r.d(t,{Al:()=>s.r,H4:()=>s.c,Q$:()=>s.e,R3:()=>s.n,VL:()=>s.l,lJ:()=>s.d,lT:()=>c,pt:()=>s.F,ur:()=>p,v7:()=>l});var s=r(68251),i=(r(43627),r(53334)),n=r(380),o=r(65606);Error;const a=["B","KB","MB","GB","TB","PB"],u=["B","KiB","MiB","GiB","TiB","PiB"];function l(e,t=!1,r=!1,s=!1){r=r&&!s,"string"==typeof e&&(e=Number(e));let n=e>0?Math.floor(Math.log(e)/Math.log(s?1e3:1024)):0;n=Math.min((r?u.length:a.length)-1,n);const o=r?u[n]:a[n];let l=(e/Math.pow(s?1e3:1024,n)).toFixed(1);return!0===t&&0===n?("0.0"!==l?"< 1 ":"0 ")+(r?u[1]:a[1]):(l=n<2?parseFloat(l).toFixed(0):parseFloat(l).toLocaleString((0,i.lO)()),l+" "+o)}function c(e,t=!1){try{e=`${e}`.toLocaleLowerCase().replaceAll(/\s+/g,"").replaceAll(",",".")}catch(e){return null}const r=e.match(/^([0-9]*(\.[0-9]*)?)([kmgtp]?)(i?)b?$/);if(null===r||"."===r[1]||""===r[1])return null;const s=`${r[1]}`,i="i"===r[4]||t?1024:1e3;return Math.round(Number.parseFloat(s)*i**{"":0,k:1,m:2,g:3,t:4,p:5,e:6}[r[3]])}function d(e){return e instanceof Date?e.toISOString():String(e)}function p(e,t={}){const r={sortingMode:"basename",sortingOrder:"asc",...t};return function(e,t,r){r=r??[];const s=(t=t??[e=>e]).map(((e,t)=>"asc"===(r[t]??"asc")?1:-1)),n=Intl.Collator([(0,i.Z0)(),(0,i.lO)()],{numeric:!0,usage:"sort"});return[...e].sort(((e,r)=>{for(const[i,o]of t.entries()){const t=n.compare(d(o(e)),d(o(r)));if(0!==t)return t*s[i]}return 0}))}(e,[...r.sortFavoritesFirst?[e=>1!==e.attributes?.favorite]:[],...r.sortFoldersFirst?[e=>"folder"!==e.type]:[],..."basename"!==r.sortingMode?[e=>e[r.sortingMode]]:[],e=>{return(t=e.displayname||e.attributes?.displayname||e.basename).lastIndexOf(".")>0?t.slice(0,t.lastIndexOf(".")):t;var t},e=>e.basename],[...r.sortFavoritesFirst?["asc"]:[],...r.sortFoldersFirst?["asc"]:[],..."mtime"===r.sortingMode?["asc"===r.sortingOrder?"desc":"asc"]:[],..."mtime"!==r.sortingMode&&"basename"!==r.sortingMode?[r.sortingOrder]:[],r.sortingOrder,r.sortingOrder])}var h,g,m={},f={};function E(){return h||(h=1,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",r="["+t+"]["+t+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*",s=new RegExp("^"+r+"$");e.isExist=function(e){return void 0!==e},e.isEmptyObject=function(e){return 0===Object.keys(e).length},e.merge=function(e,t,r){if(t){const s=Object.keys(t),i=s.length;for(let n=0;n<i;n++)e[s[n]]="strict"===r?[t[s[n]]]:t[s[n]]}},e.getValue=function(t){return e.isExist(t)?t:""},e.isName=function(e){return!(null==s.exec(e))},e.getAllMatches=function(e,t){const r=[];let s=t.exec(e);for(;s;){const i=[];i.startIndex=t.lastIndex-s[0].length;const n=s.length;for(let e=0;e<n;e++)i.push(s[e]);r.push(i),s=t.exec(e)}return r},e.nameRegexp=r}(f)),f}function A(){if(g)return m;g=1;const e=E(),t={allowBooleanAttributes:!1,unpairedTags:[]};function r(e){return" "===e||"\t"===e||"\n"===e||"\r"===e}function s(e,t){const r=t;for(;t<e.length;t++)if("?"!=e[t]&&" "!=e[t]);else{const s=e.substr(r,t-r);if(t>5&&"xml"===s)return d("InvalidXml","XML declaration allowed only at the start of the document.",h(e,t));if("?"==e[t]&&">"==e[t+1]){t++;break}}return t}function i(e,t){if(e.length>t+5&&"-"===e[t+1]&&"-"===e[t+2]){for(t+=3;t<e.length;t++)if("-"===e[t]&&"-"===e[t+1]&&">"===e[t+2]){t+=2;break}}else if(e.length>t+8&&"D"===e[t+1]&&"O"===e[t+2]&&"C"===e[t+3]&&"T"===e[t+4]&&"Y"===e[t+5]&&"P"===e[t+6]&&"E"===e[t+7]){let r=1;for(t+=8;t<e.length;t++)if("<"===e[t])r++;else if(">"===e[t]&&(r--,0===r))break}else if(e.length>t+9&&"["===e[t+1]&&"C"===e[t+2]&&"D"===e[t+3]&&"A"===e[t+4]&&"T"===e[t+5]&&"A"===e[t+6]&&"["===e[t+7])for(t+=8;t<e.length;t++)if("]"===e[t]&&"]"===e[t+1]&&">"===e[t+2]){t+=2;break}return t}m.validate=function(n,o){o=Object.assign({},t,o);const u=[];let p=!1,g=!1;"\ufeff"===n[0]&&(n=n.substr(1));for(let t=0;t<n.length;t++)if("<"===n[t]&&"?"===n[t+1]){if(t+=2,t=s(n,t),t.err)return t}else{if("<"!==n[t]){if(r(n[t]))continue;return d("InvalidChar","char '"+n[t]+"' is not expected.",h(n,t))}{let f=t;if(t++,"!"===n[t]){t=i(n,t);continue}{let E=!1;"/"===n[t]&&(E=!0,t++);let A="";for(;t<n.length&&">"!==n[t]&&" "!==n[t]&&"\t"!==n[t]&&"\n"!==n[t]&&"\r"!==n[t];t++)A+=n[t];if(A=A.trim(),"/"===A[A.length-1]&&(A=A.substring(0,A.length-1),t--),m=A,!e.isName(m)){let e;return e=0===A.trim().length?"Invalid space after '<'.":"Tag '"+A+"' is an invalid name.",d("InvalidTag",e,h(n,t))}const b=a(n,t);if(!1===b)return d("InvalidAttr","Attributes for '"+A+"' have open quote.",h(n,t));let I=b.value;if(t=b.index,"/"===I[I.length-1]){const e=t-I.length;I=I.substring(0,I.length-1);const r=l(I,o);if(!0!==r)return d(r.err.code,r.err.msg,h(n,e+r.err.line));p=!0}else if(E){if(!b.tagClosed)return d("InvalidTag","Closing tag '"+A+"' doesn't have proper closing.",h(n,t));if(I.trim().length>0)return d("InvalidTag","Closing tag '"+A+"' can't have attributes or invalid starting.",h(n,f));if(0===u.length)return d("InvalidTag","Closing tag '"+A+"' has not been opened.",h(n,f));{const e=u.pop();if(A!==e.tagName){let t=h(n,e.tagStartPos);return d("InvalidTag","Expected closing tag '"+e.tagName+"' (opened in line "+t.line+", col "+t.col+") instead of closing tag '"+A+"'.",h(n,f))}0==u.length&&(g=!0)}}else{const e=l(I,o);if(!0!==e)return d(e.err.code,e.err.msg,h(n,t-I.length+e.err.line));if(!0===g)return d("InvalidXml","Multiple possible root nodes found.",h(n,t));-1!==o.unpairedTags.indexOf(A)||u.push({tagName:A,tagStartPos:f}),p=!0}for(t++;t<n.length;t++)if("<"===n[t]){if("!"===n[t+1]){t++,t=i(n,t);continue}if("?"!==n[t+1])break;if(t=s(n,++t),t.err)return t}else if("&"===n[t]){const e=c(n,t);if(-1==e)return d("InvalidChar","char '&' is not expected.",h(n,t));t=e}else if(!0===g&&!r(n[t]))return d("InvalidXml","Extra text at the end",h(n,t));"<"===n[t]&&t--}}}var m;return p?1==u.length?d("InvalidTag","Unclosed tag '"+u[0].tagName+"'.",h(n,u[0].tagStartPos)):!(u.length>0)||d("InvalidXml","Invalid '"+JSON.stringify(u.map((e=>e.tagName)),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):d("InvalidXml","Start tag expected.",1)};const n='"',o="'";function a(e,t){let r="",s="",i=!1;for(;t<e.length;t++){if(e[t]===n||e[t]===o)""===s?s=e[t]:s!==e[t]||(s="");else if(">"===e[t]&&""===s){i=!0;break}r+=e[t]}return""===s&&{value:r,index:t,tagClosed:i}}const u=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function l(t,r){const s=e.getAllMatches(t,u),i={};for(let e=0;e<s.length;e++){if(0===s[e][1].length)return d("InvalidAttr","Attribute '"+s[e][2]+"' has no space in starting.",f(s[e]));if(void 0!==s[e][3]&&void 0===s[e][4])return d("InvalidAttr","Attribute '"+s[e][2]+"' is without value.",f(s[e]));if(void 0===s[e][3]&&!r.allowBooleanAttributes)return d("InvalidAttr","boolean attribute '"+s[e][2]+"' is not allowed.",f(s[e]));const t=s[e][2];if(!p(t))return d("InvalidAttr","Attribute '"+t+"' is an invalid name.",f(s[e]));if(i.hasOwnProperty(t))return d("InvalidAttr","Attribute '"+t+"' is repeated.",f(s[e]));i[t]=1}return!0}function c(e,t){if(";"===e[++t])return-1;if("#"===e[t])return function(e,t){let r=/\d/;for("x"===e[t]&&(t++,r=/[\da-fA-F]/);t<e.length;t++){if(";"===e[t])return t;if(!e[t].match(r))break}return-1}(e,++t);let r=0;for(;t<e.length;t++,r++)if(!(e[t].match(/\w/)&&r<20)){if(";"===e[t])break;return-1}return t}function d(e,t,r){return{err:{code:e,msg:t,line:r.line||r,col:r.col}}}function p(t){return e.isName(t)}function h(e,t){const r=e.substring(0,t).split(/\r?\n/);return{line:r.length,col:r[r.length-1].length+1}}function f(e){return e.startIndex+e[1].length}return m}var b,I,N,v,L,y,O,x,T,P,R,w={};function C(){return T?x:(T=1,x=function(e){return"function"==typeof e?e:Array.isArray(e)?t=>{for(const r of e){if("string"==typeof r&&t===r)return!0;if(r instanceof RegExp&&r.test(t))return!0}}:()=>!1})}var U,S,$,_,F,D,G,k,M,j,B,V,X,q={};function K(){if(U)return q;function e(i,n,o){let a;const u={};for(let l=0;l<i.length;l++){const c=i[l],d=t(c);let p="";if(p=void 0===o?d:o+"."+d,d===n.textNodeName)void 0===a?a=c[d]:a+=""+c[d];else{if(void 0===d)continue;if(c[d]){let t=e(c[d],n,p);const i=s(t,n);c[":@"]?r(t,c[":@"],p,n):1!==Object.keys(t).length||void 0===t[n.textNodeName]||n.alwaysCreateTextNode?0===Object.keys(t).length&&(n.alwaysCreateTextNode?t[n.textNodeName]="":t=""):t=t[n.textNodeName],void 0!==u[d]&&u.hasOwnProperty(d)?(Array.isArray(u[d])||(u[d]=[u[d]]),u[d].push(t)):n.isArray(d,p,i)?u[d]=[t]:u[d]=t}}}return"string"==typeof a?a.length>0&&(u[n.textNodeName]=a):void 0!==a&&(u[n.textNodeName]=a),u}function t(e){const t=Object.keys(e);for(let e=0;e<t.length;e++){const r=t[e];if(":@"!==r)return r}}function r(e,t,r,s){if(t){const i=Object.keys(t),n=i.length;for(let o=0;o<n;o++){const n=i[o];s.isArray(n,r+"."+n,!0,!0)?e[n]=[t[n]]:e[n]=t[n]}}}function s(e,t){const{textNodeName:r}=t,s=Object.keys(e).length;return 0===s||!(1!==s||!e[r]&&"boolean"!=typeof e[r]&&0!==e[r])}return U=1,q.prettify=function(t,r){return e(t,r)},q}function H(){if($)return S;$=1;const{buildOptions:e}=function(){if(b)return w;b=1;const e={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(e,t,r){return e}};return w.buildOptions=function(t){return Object.assign({},e,t)},w.defaultOptions=e,w}(),t=function(){if(R)return P;R=1;const e=E(),t=N?I:(N=1,I=class{constructor(e){this.tagname=e,this.child=[],this[":@"]={}}add(e,t){"__proto__"===e&&(e="#__proto__"),this.child.push({[e]:t})}addChild(e){"__proto__"===e.tagname&&(e.tagname="#__proto__"),e[":@"]&&Object.keys(e[":@"]).length>0?this.child.push({[e.tagname]:e.child,":@":e[":@"]}):this.child.push({[e.tagname]:e.child})}}),r=function(){if(L)return v;L=1;const e=E();function t(e,t){let r="";for(;t<e.length&&"'"!==e[t]&&'"'!==e[t];t++)r+=e[t];if(r=r.trim(),-1!==r.indexOf(" "))throw new Error("External entites are not supported");const s=e[t++];let i="";for(;t<e.length&&e[t]!==s;t++)i+=e[t];return[r,i,t]}function r(e,t){return"!"===e[t+1]&&"E"===e[t+2]&&"N"===e[t+3]&&"T"===e[t+4]&&"I"===e[t+5]&&"T"===e[t+6]&&"Y"===e[t+7]}function s(e,t){return"!"===e[t+1]&&"E"===e[t+2]&&"L"===e[t+3]&&"E"===e[t+4]&&"M"===e[t+5]&&"E"===e[t+6]&&"N"===e[t+7]&&"T"===e[t+8]}function i(e,t){return"!"===e[t+1]&&"A"===e[t+2]&&"T"===e[t+3]&&"T"===e[t+4]&&"L"===e[t+5]&&"I"===e[t+6]&&"S"===e[t+7]&&"T"===e[t+8]}function n(e,t){return"!"===e[t+1]&&"N"===e[t+2]&&"O"===e[t+3]&&"T"===e[t+4]&&"A"===e[t+5]&&"T"===e[t+6]&&"I"===e[t+7]&&"O"===e[t+8]&&"N"===e[t+9]}function o(t){if(e.isName(t))return t;throw new Error(`Invalid entity name ${t}`)}return v=function(e,a){const u={};if("O"!==e[a+3]||"C"!==e[a+4]||"T"!==e[a+5]||"Y"!==e[a+6]||"P"!==e[a+7]||"E"!==e[a+8])throw new Error("Invalid Tag instead of DOCTYPE");{a+=9;let l=1,c=!1,d=!1,p="";for(;a<e.length;a++)if("<"!==e[a]||d)if(">"===e[a]){if(d?"-"===e[a-1]&&"-"===e[a-2]&&(d=!1,l--):l--,0===l)break}else"["===e[a]?c=!0:p+=e[a];else{if(c&&r(e,a)){let r,s;a+=7,[r,s,a]=t(e,a+1),-1===s.indexOf("&")&&(u[o(r)]={regx:RegExp(`&${r};`,"g"),val:s})}else c&&s(e,a)||c&&i(e,a)?a+=8:c&&n(e,a)?a+=9:d=!0;l++,p=""}if(0!==l)throw new Error("Unclosed DOCTYPE")}return{entities:u,i:a}}}(),s=function(){if(O)return y;O=1;const e=/^[-+]?0x[a-fA-F0-9]+$/,t=/^([\-\+])?(0*)(\.[0-9]+([eE]\-?[0-9]+)?|[0-9]+(\.[0-9]+([eE]\-?[0-9]+)?)?)$/;!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt),!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);const r={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};return y=function(s,i={}){if(i=Object.assign({},r,i),!s||"string"!=typeof s)return s;let n=s.trim();if(void 0!==i.skipLike&&i.skipLike.test(n))return s;if(i.hex&&e.test(n))return Number.parseInt(n,16);{const e=t.exec(n);if(e){const t=e[1],r=e[2];let a=(o=e[3])&&-1!==o.indexOf(".")?("."===(o=o.replace(/0+$/,""))?o="0":"."===o[0]?o="0"+o:"."===o[o.length-1]&&(o=o.substr(0,o.length-1)),o):o;const u=e[4]||e[6];if(!i.leadingZeros&&r.length>0&&t&&"."!==n[2])return s;if(!i.leadingZeros&&r.length>0&&!t&&"."!==n[1])return s;{const e=Number(n),o=""+e;return-1!==o.search(/[eE]/)||u?i.eNotation?e:s:-1!==n.indexOf(".")?"0"===o&&""===a||o===a||t&&o==="-"+a?e:s:r?a===o||t+a===o?e:s:n===o||n===t+o?e:s}}return s}var o}}(),i=C();function n(e){const t=Object.keys(e);for(let r=0;r<t.length;r++){const s=t[r];this.lastEntities[s]={regex:new RegExp("&"+s+";","g"),val:e[s]}}}function o(e,t,r,s,i,n,o){if(void 0!==e&&(this.options.trimValues&&!s&&(e=e.trim()),e.length>0)){o||(e=this.replaceEntitiesValue(e));const s=this.options.tagValueProcessor(t,e,r,i,n);return null==s?e:typeof s!=typeof e||s!==e?s:this.options.trimValues||e.trim()===e?b(e,this.options.parseTagValue,this.options.numberParseOptions):e}}function a(e){if(this.options.removeNSPrefix){const t=e.split(":"),r="/"===e.charAt(0)?"/":"";if("xmlns"===t[0])return"";2===t.length&&(e=r+t[1])}return e}const u=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function l(t,r,s){if(!0!==this.options.ignoreAttributes&&"string"==typeof t){const s=e.getAllMatches(t,u),i=s.length,n={};for(let e=0;e<i;e++){const t=this.resolveNameSpace(s[e][1]);if(this.ignoreAttributesFn(t,r))continue;let i=s[e][4],o=this.options.attributeNamePrefix+t;if(t.length)if(this.options.transformAttributeName&&(o=this.options.transformAttributeName(o)),"__proto__"===o&&(o="#__proto__"),void 0!==i){this.options.trimValues&&(i=i.trim()),i=this.replaceEntitiesValue(i);const e=this.options.attributeValueProcessor(t,i,r);n[o]=null==e?i:typeof e!=typeof i||e!==i?e:b(i,this.options.parseAttributeValue,this.options.numberParseOptions)}else this.options.allowBooleanAttributes&&(n[o]=!0)}if(!Object.keys(n).length)return;if(this.options.attributesGroupName){const e={};return e[this.options.attributesGroupName]=n,e}return n}}const c=function(e){e=e.replace(/\r\n?/g,"\n");const s=new t("!xml");let i=s,n="",o="";for(let a=0;a<e.length;a++)if("<"===e[a])if("/"===e[a+1]){const t=m(e,">",a,"Closing Tag is not closed.");let r=e.substring(a+2,t).trim();if(this.options.removeNSPrefix){const e=r.indexOf(":");-1!==e&&(r=r.substr(e+1))}this.options.transformTagName&&(r=this.options.transformTagName(r)),i&&(n=this.saveTextToParentTag(n,i,o));const s=o.substring(o.lastIndexOf(".")+1);if(r&&-1!==this.options.unpairedTags.indexOf(r))throw new Error(`Unpaired tag can not be used as closing tag: </${r}>`);let u=0;s&&-1!==this.options.unpairedTags.indexOf(s)?(u=o.lastIndexOf(".",o.lastIndexOf(".")-1),this.tagsNodeStack.pop()):u=o.lastIndexOf("."),o=o.substring(0,u),i=this.tagsNodeStack.pop(),n="",a=t}else if("?"===e[a+1]){let r=f(e,a,!1,"?>");if(!r)throw new Error("Pi Tag is not closed.");if(n=this.saveTextToParentTag(n,i,o),this.options.ignoreDeclaration&&"?xml"===r.tagName||this.options.ignorePiTags);else{const e=new t(r.tagName);e.add(this.options.textNodeName,""),r.tagName!==r.tagExp&&r.attrExpPresent&&(e[":@"]=this.buildAttributesMap(r.tagExp,o,r.tagName)),this.addChild(i,e,o)}a=r.closeIndex+1}else if("!--"===e.substr(a+1,3)){const t=m(e,"--\x3e",a+4,"Comment is not closed.");if(this.options.commentPropName){const r=e.substring(a+4,t-2);n=this.saveTextToParentTag(n,i,o),i.add(this.options.commentPropName,[{[this.options.textNodeName]:r}])}a=t}else if("!D"===e.substr(a+1,2)){const t=r(e,a);this.docTypeEntities=t.entities,a=t.i}else if("!["===e.substr(a+1,2)){const t=m(e,"]]>",a,"CDATA is not closed.")-2,r=e.substring(a+9,t);n=this.saveTextToParentTag(n,i,o);let s=this.parseTextData(r,i.tagname,o,!0,!1,!0,!0);null==s&&(s=""),this.options.cdataPropName?i.add(this.options.cdataPropName,[{[this.options.textNodeName]:r}]):i.add(this.options.textNodeName,s),a=t+2}else{let r=f(e,a,this.options.removeNSPrefix),u=r.tagName;const l=r.rawTagName;let c=r.tagExp,d=r.attrExpPresent,p=r.closeIndex;this.options.transformTagName&&(u=this.options.transformTagName(u)),i&&n&&"!xml"!==i.tagname&&(n=this.saveTextToParentTag(n,i,o,!1));const h=i;if(h&&-1!==this.options.unpairedTags.indexOf(h.tagname)&&(i=this.tagsNodeStack.pop(),o=o.substring(0,o.lastIndexOf("."))),u!==s.tagname&&(o+=o?"."+u:u),this.isItStopNode(this.options.stopNodes,o,u)){let s="";if(c.length>0&&c.lastIndexOf("/")===c.length-1)"/"===u[u.length-1]?(u=u.substr(0,u.length-1),o=o.substr(0,o.length-1),c=u):c=c.substr(0,c.length-1),a=r.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(u))a=r.closeIndex;else{const t=this.readStopNodeData(e,l,p+1);if(!t)throw new Error(`Unexpected end of ${l}`);a=t.i,s=t.tagContent}const n=new t(u);u!==c&&d&&(n[":@"]=this.buildAttributesMap(c,o,u)),s&&(s=this.parseTextData(s,u,o,!0,d,!0,!0)),o=o.substr(0,o.lastIndexOf(".")),n.add(this.options.textNodeName,s),this.addChild(i,n,o)}else{if(c.length>0&&c.lastIndexOf("/")===c.length-1){"/"===u[u.length-1]?(u=u.substr(0,u.length-1),o=o.substr(0,o.length-1),c=u):c=c.substr(0,c.length-1),this.options.transformTagName&&(u=this.options.transformTagName(u));const e=new t(u);u!==c&&d&&(e[":@"]=this.buildAttributesMap(c,o,u)),this.addChild(i,e,o),o=o.substr(0,o.lastIndexOf("."))}else{const e=new t(u);this.tagsNodeStack.push(i),u!==c&&d&&(e[":@"]=this.buildAttributesMap(c,o,u)),this.addChild(i,e,o),i=e}n="",a=p}}else n+=e[a];return s.child};function d(e,t,r){const s=this.options.updateTag(t.tagname,r,t[":@"]);!1===s||("string"==typeof s?(t.tagname=s,e.addChild(t)):e.addChild(t))}const p=function(e){if(this.options.processEntities){for(let t in this.docTypeEntities){const r=this.docTypeEntities[t];e=e.replace(r.regx,r.val)}for(let t in this.lastEntities){const r=this.lastEntities[t];e=e.replace(r.regex,r.val)}if(this.options.htmlEntities)for(let t in this.htmlEntities){const r=this.htmlEntities[t];e=e.replace(r.regex,r.val)}e=e.replace(this.ampEntity.regex,this.ampEntity.val)}return e};function h(e,t,r,s){return e&&(void 0===s&&(s=0===Object.keys(t.child).length),void 0!==(e=this.parseTextData(e,t.tagname,r,!1,!!t[":@"]&&0!==Object.keys(t[":@"]).length,s))&&""!==e&&t.add(this.options.textNodeName,e),e=""),e}function g(e,t,r){const s="*."+r;for(const r in e){const i=e[r];if(s===i||t===i)return!0}return!1}function m(e,t,r,s){const i=e.indexOf(t,r);if(-1===i)throw new Error(s);return i+t.length-1}function f(e,t,r,s=">"){const i=function(e,t,r=">"){let s,i="";for(let n=t;n<e.length;n++){let t=e[n];if(s)t===s&&(s="");else if('"'===t||"'"===t)s=t;else if(t===r[0]){if(!r[1])return{data:i,index:n};if(e[n+1]===r[1])return{data:i,index:n}}else"\t"===t&&(t=" ");i+=t}}(e,t+1,s);if(!i)return;let n=i.data;const o=i.index,a=n.search(/\s/);let u=n,l=!0;-1!==a&&(u=n.substring(0,a),n=n.substring(a+1).trimStart());const c=u;if(r){const e=u.indexOf(":");-1!==e&&(u=u.substr(e+1),l=u!==i.data.substr(e+1))}return{tagName:u,tagExp:n,closeIndex:o,attrExpPresent:l,rawTagName:c}}function A(e,t,r){const s=r;let i=1;for(;r<e.length;r++)if("<"===e[r])if("/"===e[r+1]){const n=m(e,">",r,`${t} is not closed`);if(e.substring(r+2,n).trim()===t&&(i--,0===i))return{tagContent:e.substring(s,r),i:n};r=n}else if("?"===e[r+1])r=m(e,"?>",r+1,"StopNode is not closed.");else if("!--"===e.substr(r+1,3))r=m(e,"--\x3e",r+3,"StopNode is not closed.");else if("!["===e.substr(r+1,2))r=m(e,"]]>",r,"StopNode is not closed.")-2;else{const s=f(e,r,">");s&&((s&&s.tagName)===t&&"/"!==s.tagExp[s.tagExp.length-1]&&i++,r=s.closeIndex)}}function b(t,r,i){if(r&&"string"==typeof t){const e=t.trim();return"true"===e||"false"!==e&&s(t,i)}return e.isExist(t)?t:""}return P=class{constructor(e){this.options=e,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,16))}},this.addExternalEntities=n,this.parseXml=c,this.parseTextData=o,this.resolveNameSpace=a,this.buildAttributesMap=l,this.isItStopNode=g,this.replaceEntitiesValue=p,this.readStopNodeData=A,this.saveTextToParentTag=h,this.addChild=d,this.ignoreAttributesFn=i(this.options.ignoreAttributes)}}}(),{prettify:r}=K(),s=A();return S=class{constructor(t){this.externalEntities={},this.options=e(t)}parse(e,i){if("string"==typeof e);else{if(!e.toString)throw new Error("XML data is accepted in String or Bytes[] form.");e=e.toString()}if(i){!0===i&&(i={});const t=s.validate(e,i);if(!0!==t)throw Error(`${t.err.msg}:${t.err.line}:${t.err.col}`)}const n=new t(this.options);n.addExternalEntities(this.externalEntities);const o=n.parseXml(e);return this.options.preserveOrder||void 0===o?o:r(o,this.options)}addEntity(e,t){if(-1!==t.indexOf("&"))throw new Error("Entity value can't have '&'");if(-1!==e.indexOf("&")||-1!==e.indexOf(";"))throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for '&#xD;'");if("&"===t)throw new Error("An entity with value '&' is not permitted");this.externalEntities[e]=t}}}function J(){if(F)return _;function e(n,o,a,u){let l="",c=!1;for(let d=0;d<n.length;d++){const p=n[d],h=t(p);if(void 0===h)continue;let g="";if(g=0===a.length?h:`${a}.${h}`,h===o.textNodeName){let e=p[h];s(g,o)||(e=o.tagValueProcessor(h,e),e=i(e,o)),c&&(l+=u),l+=e,c=!1;continue}if(h===o.cdataPropName){c&&(l+=u),l+=`<![CDATA[${p[h][0][o.textNodeName]}]]>`,c=!1;continue}if(h===o.commentPropName){l+=u+`\x3c!--${p[h][0][o.textNodeName]}--\x3e`,c=!0;continue}if("?"===h[0]){const e=r(p[":@"],o),t="?xml"===h?"":u;let s=p[h][0][o.textNodeName];s=0!==s.length?" "+s:"",l+=t+`<${h}${s}${e}?>`,c=!0;continue}let m=u;""!==m&&(m+=o.indentBy);const f=u+`<${h}${r(p[":@"],o)}`,E=e(p[h],o,g,m);-1!==o.unpairedTags.indexOf(h)?o.suppressUnpairedNode?l+=f+">":l+=f+"/>":E&&0!==E.length||!o.suppressEmptyNode?E&&E.endsWith(">")?l+=f+`>${E}${u}</${h}>`:(l+=f+">",E&&""!==u&&(E.includes("/>")||E.includes("</"))?l+=u+o.indentBy+E+u:l+=E,l+=`</${h}>`):l+=f+"/>",c=!0}return l}function t(e){const t=Object.keys(e);for(let r=0;r<t.length;r++){const s=t[r];if(e.hasOwnProperty(s)&&":@"!==s)return s}}function r(e,t){let r="";if(e&&!t.ignoreAttributes)for(let s in e){if(!e.hasOwnProperty(s))continue;let n=t.attributeValueProcessor(s,e[s]);n=i(n,t),!0===n&&t.suppressBooleanAttributes?r+=` ${s.substr(t.attributeNamePrefix.length)}`:r+=` ${s.substr(t.attributeNamePrefix.length)}="${n}"`}return r}function s(e,t){let r=(e=e.substr(0,e.length-t.textNodeName.length-1)).substr(e.lastIndexOf(".")+1);for(let s in t.stopNodes)if(t.stopNodes[s]===e||t.stopNodes[s]==="*."+r)return!0;return!1}function i(e,t){if(e&&e.length>0&&t.processEntities)for(let r=0;r<t.entities.length;r++){const s=t.entities[r];e=e.replace(s.regex,s.val)}return e}return F=1,_=function(t,r){let s="";return r.format&&r.indentBy.length>0&&(s="\n"),e(t,r,"",s)}}function Y(){if(B)return j;B=1;const e="object"==typeof o&&o.env&&o.env.NODE_DEBUG&&/\bsemver\b/i.test(o.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{};return j=e}function Z(){if(X)return V;X=1;const e=Number.MAX_SAFE_INTEGER||9007199254740991;return V={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:e,RELEASE_TYPES:["major","premajor","minor","preminor","patch","prepatch","prerelease"],SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}}!function(){if(M)return k;M=1;const e=A(),t=H(),r=function(){if(G)return D;G=1;const e=J(),t=C(),r={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:"&amp;"},{regex:new RegExp(">","g"),val:"&gt;"},{regex:new RegExp("<","g"),val:"&lt;"},{regex:new RegExp("'","g"),val:"&apos;"},{regex:new RegExp('"',"g"),val:"&quot;"}],processEntities:!0,stopNodes:[],oneListGroup:!1};function s(e){this.options=Object.assign({},r,e),!0===this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.ignoreAttributesFn=t(this.options.ignoreAttributes),this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=o),this.processTextOrObjNode=i,this.options.format?(this.indentate=n,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function i(e,t,r,s){const i=this.j2x(e,r+1,s.concat(t));return void 0!==e[this.options.textNodeName]&&1===Object.keys(e).length?this.buildTextValNode(e[this.options.textNodeName],t,i.attrStr,r):this.buildObjectNode(i.val,t,i.attrStr,r)}function n(e){return this.options.indentBy.repeat(e)}function o(e){return!(!e.startsWith(this.options.attributeNamePrefix)||e===this.options.textNodeName)&&e.substr(this.attrPrefixLen)}return s.prototype.build=function(t){return this.options.preserveOrder?e(t,this.options):(Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(t={[this.options.arrayNodeName]:t}),this.j2x(t,0,[]).val)},s.prototype.j2x=function(e,t,r){let s="",i="";const n=r.join(".");for(let o in e)if(Object.prototype.hasOwnProperty.call(e,o))if(void 0===e[o])this.isAttribute(o)&&(i+="");else if(null===e[o])this.isAttribute(o)?i+="":"?"===o[0]?i+=this.indentate(t)+"<"+o+"?"+this.tagEndChar:i+=this.indentate(t)+"<"+o+"/"+this.tagEndChar;else if(e[o]instanceof Date)i+=this.buildTextValNode(e[o],o,"",t);else if("object"!=typeof e[o]){const r=this.isAttribute(o);if(r&&!this.ignoreAttributesFn(r,n))s+=this.buildAttrPairStr(r,""+e[o]);else if(!r)if(o===this.options.textNodeName){let t=this.options.tagValueProcessor(o,""+e[o]);i+=this.replaceEntitiesValue(t)}else i+=this.buildTextValNode(e[o],o,"",t)}else if(Array.isArray(e[o])){const s=e[o].length;let n="",a="";for(let u=0;u<s;u++){const s=e[o][u];if(void 0===s);else if(null===s)"?"===o[0]?i+=this.indentate(t)+"<"+o+"?"+this.tagEndChar:i+=this.indentate(t)+"<"+o+"/"+this.tagEndChar;else if("object"==typeof s)if(this.options.oneListGroup){const e=this.j2x(s,t+1,r.concat(o));n+=e.val,this.options.attributesGroupName&&s.hasOwnProperty(this.options.attributesGroupName)&&(a+=e.attrStr)}else n+=this.processTextOrObjNode(s,o,t,r);else if(this.options.oneListGroup){let e=this.options.tagValueProcessor(o,s);e=this.replaceEntitiesValue(e),n+=e}else n+=this.buildTextValNode(s,o,"",t)}this.options.oneListGroup&&(n=this.buildObjectNode(n,o,a,t)),i+=n}else if(this.options.attributesGroupName&&o===this.options.attributesGroupName){const t=Object.keys(e[o]),r=t.length;for(let i=0;i<r;i++)s+=this.buildAttrPairStr(t[i],""+e[o][t[i]])}else i+=this.processTextOrObjNode(e[o],o,t,r);return{attrStr:s,val:i}},s.prototype.buildAttrPairStr=function(e,t){return t=this.options.attributeValueProcessor(e,""+t),t=this.replaceEntitiesValue(t),this.options.suppressBooleanAttributes&&"true"===t?" "+e:" "+e+'="'+t+'"'},s.prototype.buildObjectNode=function(e,t,r,s){if(""===e)return"?"===t[0]?this.indentate(s)+"<"+t+r+"?"+this.tagEndChar:this.indentate(s)+"<"+t+r+this.closeTag(t)+this.tagEndChar;{let i="</"+t+this.tagEndChar,n="";return"?"===t[0]&&(n="?",i=""),!r&&""!==r||-1!==e.indexOf("<")?!1!==this.options.commentPropName&&t===this.options.commentPropName&&0===n.length?this.indentate(s)+`\x3c!--${e}--\x3e`+this.newLine:this.indentate(s)+"<"+t+r+n+this.tagEndChar+e+this.indentate(s)+i:this.indentate(s)+"<"+t+r+n+">"+e+i}},s.prototype.closeTag=function(e){let t="";return-1!==this.options.unpairedTags.indexOf(e)?this.options.suppressUnpairedNode||(t="/"):t=this.options.suppressEmptyNode?"/":`></${e}`,t},s.prototype.buildTextValNode=function(e,t,r,s){if(!1!==this.options.cdataPropName&&t===this.options.cdataPropName)return this.indentate(s)+`<![CDATA[${e}]]>`+this.newLine;if(!1!==this.options.commentPropName&&t===this.options.commentPropName)return this.indentate(s)+`\x3c!--${e}--\x3e`+this.newLine;if("?"===t[0])return this.indentate(s)+"<"+t+r+"?"+this.tagEndChar;{let i=this.options.tagValueProcessor(t,e);return i=this.replaceEntitiesValue(i),""===i?this.indentate(s)+"<"+t+r+this.closeTag(t)+this.tagEndChar:this.indentate(s)+"<"+t+r+">"+i+"</"+t+this.tagEndChar}},s.prototype.replaceEntitiesValue=function(e){if(e&&e.length>0&&this.options.processEntities)for(let t=0;t<this.options.entities.length;t++){const r=this.options.entities[t];e=e.replace(r.regex,r.val)}return e},D=s}();k={XMLParser:t,XMLValidator:e,XMLBuilder:r}}();var z,Q,W,ee,te,re,se,ie,ne,oe,ae,ue,le,ce={exports:{}};function de(){if(se)return re;se=1;const e=Y(),{MAX_LENGTH:t,MAX_SAFE_INTEGER:r}=Z(),{safeRe:s,t:i}=(z||(z=1,function(e,t){const{MAX_SAFE_COMPONENT_LENGTH:r,MAX_SAFE_BUILD_LENGTH:s,MAX_LENGTH:i}=Z(),n=Y(),o=(t=e.exports={}).re=[],a=t.safeRe=[],u=t.src=[],l=t.t={};let c=0;const d="[a-zA-Z0-9-]",p=[["\\s",1],["\\d",i],[d,s]],h=(e,t,r)=>{const s=(e=>{for(const[t,r]of p)e=e.split(`${t}*`).join(`${t}{0,${r}}`).split(`${t}+`).join(`${t}{1,${r}}`);return e})(t),i=c++;n(e,i,t),l[e]=i,u[i]=t,o[i]=new RegExp(t,r?"g":void 0),a[i]=new RegExp(s,r?"g":void 0)};h("NUMERICIDENTIFIER","0|[1-9]\\d*"),h("NUMERICIDENTIFIERLOOSE","\\d+"),h("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${d}*`),h("MAINVERSION",`(${u[l.NUMERICIDENTIFIER]})\\.(${u[l.NUMERICIDENTIFIER]})\\.(${u[l.NUMERICIDENTIFIER]})`),h("MAINVERSIONLOOSE",`(${u[l.NUMERICIDENTIFIERLOOSE]})\\.(${u[l.NUMERICIDENTIFIERLOOSE]})\\.(${u[l.NUMERICIDENTIFIERLOOSE]})`),h("PRERELEASEIDENTIFIER",`(?:${u[l.NUMERICIDENTIFIER]}|${u[l.NONNUMERICIDENTIFIER]})`),h("PRERELEASEIDENTIFIERLOOSE",`(?:${u[l.NUMERICIDENTIFIERLOOSE]}|${u[l.NONNUMERICIDENTIFIER]})`),h("PRERELEASE",`(?:-(${u[l.PRERELEASEIDENTIFIER]}(?:\\.${u[l.PRERELEASEIDENTIFIER]})*))`),h("PRERELEASELOOSE",`(?:-?(${u[l.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${u[l.PRERELEASEIDENTIFIERLOOSE]})*))`),h("BUILDIDENTIFIER",`${d}+`),h("BUILD",`(?:\\+(${u[l.BUILDIDENTIFIER]}(?:\\.${u[l.BUILDIDENTIFIER]})*))`),h("FULLPLAIN",`v?${u[l.MAINVERSION]}${u[l.PRERELEASE]}?${u[l.BUILD]}?`),h("FULL",`^${u[l.FULLPLAIN]}$`),h("LOOSEPLAIN",`[v=\\s]*${u[l.MAINVERSIONLOOSE]}${u[l.PRERELEASELOOSE]}?${u[l.BUILD]}?`),h("LOOSE",`^${u[l.LOOSEPLAIN]}$`),h("GTLT","((?:<|>)?=?)"),h("XRANGEIDENTIFIERLOOSE",`${u[l.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),h("XRANGEIDENTIFIER",`${u[l.NUMERICIDENTIFIER]}|x|X|\\*`),h("XRANGEPLAIN",`[v=\\s]*(${u[l.XRANGEIDENTIFIER]})(?:\\.(${u[l.XRANGEIDENTIFIER]})(?:\\.(${u[l.XRANGEIDENTIFIER]})(?:${u[l.PRERELEASE]})?${u[l.BUILD]}?)?)?`),h("XRANGEPLAINLOOSE",`[v=\\s]*(${u[l.XRANGEIDENTIFIERLOOSE]})(?:\\.(${u[l.XRANGEIDENTIFIERLOOSE]})(?:\\.(${u[l.XRANGEIDENTIFIERLOOSE]})(?:${u[l.PRERELEASELOOSE]})?${u[l.BUILD]}?)?)?`),h("XRANGE",`^${u[l.GTLT]}\\s*${u[l.XRANGEPLAIN]}$`),h("XRANGELOOSE",`^${u[l.GTLT]}\\s*${u[l.XRANGEPLAINLOOSE]}$`),h("COERCEPLAIN",`(^|[^\\d])(\\d{1,${r}})(?:\\.(\\d{1,${r}}))?(?:\\.(\\d{1,${r}}))?`),h("COERCE",`${u[l.COERCEPLAIN]}(?:$|[^\\d])`),h("COERCEFULL",u[l.COERCEPLAIN]+`(?:${u[l.PRERELEASE]})?(?:${u[l.BUILD]})?(?:$|[^\\d])`),h("COERCERTL",u[l.COERCE],!0),h("COERCERTLFULL",u[l.COERCEFULL],!0),h("LONETILDE","(?:~>?)"),h("TILDETRIM",`(\\s*)${u[l.LONETILDE]}\\s+`,!0),t.tildeTrimReplace="$1~",h("TILDE",`^${u[l.LONETILDE]}${u[l.XRANGEPLAIN]}$`),h("TILDELOOSE",`^${u[l.LONETILDE]}${u[l.XRANGEPLAINLOOSE]}$`),h("LONECARET","(?:\\^)"),h("CARETTRIM",`(\\s*)${u[l.LONECARET]}\\s+`,!0),t.caretTrimReplace="$1^",h("CARET",`^${u[l.LONECARET]}${u[l.XRANGEPLAIN]}$`),h("CARETLOOSE",`^${u[l.LONECARET]}${u[l.XRANGEPLAINLOOSE]}$`),h("COMPARATORLOOSE",`^${u[l.GTLT]}\\s*(${u[l.LOOSEPLAIN]})$|^$`),h("COMPARATOR",`^${u[l.GTLT]}\\s*(${u[l.FULLPLAIN]})$|^$`),h("COMPARATORTRIM",`(\\s*)${u[l.GTLT]}\\s*(${u[l.LOOSEPLAIN]}|${u[l.XRANGEPLAIN]})`,!0),t.comparatorTrimReplace="$1$2$3",h("HYPHENRANGE",`^\\s*(${u[l.XRANGEPLAIN]})\\s+-\\s+(${u[l.XRANGEPLAIN]})\\s*$`),h("HYPHENRANGELOOSE",`^\\s*(${u[l.XRANGEPLAINLOOSE]})\\s+-\\s+(${u[l.XRANGEPLAINLOOSE]})\\s*$`),h("STAR","(<|>)?=?\\s*\\*"),h("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),h("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")}(ce,ce.exports)),ce.exports),n=function(){if(W)return Q;W=1;const e=Object.freeze({loose:!0}),t=Object.freeze({});return Q=r=>r?"object"!=typeof r?e:r:t}(),{compareIdentifiers:o}=function(){if(te)return ee;te=1;const e=/^[0-9]+$/,t=(t,r)=>{const s=e.test(t),i=e.test(r);return s&&i&&(t=+t,r=+r),t===r?0:s&&!i?-1:i&&!s?1:t<r?-1:1};return ee={compareIdentifiers:t,rcompareIdentifiers:(e,r)=>t(r,e)}}();class a{constructor(o,u){if(u=n(u),o instanceof a){if(o.loose===!!u.loose&&o.includePrerelease===!!u.includePrerelease)return o;o=o.version}else if("string"!=typeof o)throw new TypeError(`Invalid version. Must be a string. Got type "${typeof o}".`);if(o.length>t)throw new TypeError(`version is longer than ${t} characters`);e("SemVer",o,u),this.options=u,this.loose=!!u.loose,this.includePrerelease=!!u.includePrerelease;const l=o.trim().match(u.loose?s[i.LOOSE]:s[i.FULL]);if(!l)throw new TypeError(`Invalid Version: ${o}`);if(this.raw=o,this.major=+l[1],this.minor=+l[2],this.patch=+l[3],this.major>r||this.major<0)throw new TypeError("Invalid major version");if(this.minor>r||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>r||this.patch<0)throw new TypeError("Invalid patch version");l[4]?this.prerelease=l[4].split(".").map((e=>{if(/^[0-9]+$/.test(e)){const t=+e;if(t>=0&&t<r)return t}return e})):this.prerelease=[],this.build=l[5]?l[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(t){if(e("SemVer.compare",this.version,this.options,t),!(t instanceof a)){if("string"==typeof t&&t===this.version)return 0;t=new a(t,this.options)}return t.version===this.version?0:this.compareMain(t)||this.comparePre(t)}compareMain(e){return e instanceof a||(e=new a(e,this.options)),o(this.major,e.major)||o(this.minor,e.minor)||o(this.patch,e.patch)}comparePre(t){if(t instanceof a||(t=new a(t,this.options)),this.prerelease.length&&!t.prerelease.length)return-1;if(!this.prerelease.length&&t.prerelease.length)return 1;if(!this.prerelease.length&&!t.prerelease.length)return 0;let r=0;do{const s=this.prerelease[r],i=t.prerelease[r];if(e("prerelease compare",r,s,i),void 0===s&&void 0===i)return 0;if(void 0===i)return 1;if(void 0===s)return-1;if(s!==i)return o(s,i)}while(++r)}compareBuild(t){t instanceof a||(t=new a(t,this.options));let r=0;do{const s=this.build[r],i=t.build[r];if(e("build compare",r,s,i),void 0===s&&void 0===i)return 0;if(void 0===i)return 1;if(void 0===s)return-1;if(s!==i)return o(s,i)}while(++r)}inc(e,t,r){switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",t,r);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",t,r);break;case"prepatch":this.prerelease.length=0,this.inc("patch",t,r),this.inc("pre",t,r);break;case"prerelease":0===this.prerelease.length&&this.inc("patch",t,r),this.inc("pre",t,r);break;case"major":0===this.minor&&0===this.patch&&0!==this.prerelease.length||this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":0===this.patch&&0!==this.prerelease.length||this.minor++,this.patch=0,this.prerelease=[];break;case"patch":0===this.prerelease.length&&this.patch++,this.prerelease=[];break;case"pre":{const e=Number(r)?1:0;if(!t&&!1===r)throw new Error("invalid increment argument: identifier is empty");if(0===this.prerelease.length)this.prerelease=[e];else{let s=this.prerelease.length;for(;--s>=0;)"number"==typeof this.prerelease[s]&&(this.prerelease[s]++,s=-2);if(-1===s){if(t===this.prerelease.join(".")&&!1===r)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(e)}}if(t){let s=[t,e];!1===r&&(s=[t]),0===o(this.prerelease[0],t)?isNaN(this.prerelease[1])&&(this.prerelease=s):this.prerelease=s}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}}return re=a}!function(){if(ae)return oe;ae=1;const e=function(){if(ne)return ie;ne=1;const e=de();return ie=(t,r,s=!1)=>{if(t instanceof e)return t;try{return new e(t,r)}catch(e){if(!s)return null;throw e}}}();oe=(t,r)=>{const s=e(t,r);return s?s.version:null}}(),function(){if(le)return ue;le=1;const e=de();ue=(t,r)=>new e(t,r).major}(),n.m},36620:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});const s=(0,r(35947).YK)().setApp("settings").detectUser().build()},58723:(e,t)=>{function r(e,t){var s={name:e.name,path:e.path,hash:e.hash,query:e.query,params:e.params,fullPath:e.fullPath,meta:e.meta};return t&&(s.from=r(t)),Object.freeze(s)}t.O=function(e,t,s){var i=(s||{}).moduleName||"route";e.registerModule(i,{namespaced:!0,state:r(t.currentRoute),mutations:{ROUTE_CHANGED:function(t,s){e.state[i]=r(s.to,s.from)}}});var n,o=!1,a=e.watch((function(e){return e[i]}),(function(e){var r=e.fullPath;r!==n&&(null!=n&&(o=!0,t.push(e)),n=r)}),{sync:!0}),u=t.afterEach((function(t,r){o?o=!1:(n=t.fullPath,e.commit(i+"/ROUTE_CHANGED",{to:t,from:r}))}));return function(){null!=u&&u(),null!=a&&a(),e.unregisterModule(i)}}}},n={};function o(e){var t=n[e];if(void 0!==t)return t.exports;var r=n[e]={id:e,loaded:!1,exports:{}};return i[e].call(r.exports,r,r.exports,o),r.loaded=!0,r.exports}o.m=i,e=[],o.O=(t,r,s,i)=>{if(!r){var n=1/0;for(c=0;c<e.length;c++){r=e[c][0],s=e[c][1],i=e[c][2];for(var a=!0,u=0;u<r.length;u++)(!1&i||n>=i)&&Object.keys(o.O).every((e=>o.O[e](r[u])))?r.splice(u--,1):(a=!1,i<n&&(n=i));if(a){e.splice(c--,1);var l=s();void 0!==l&&(t=l)}}return t}i=i||0;for(var c=e.length;c>0&&e[c-1][2]>i;c--)e[c]=e[c-1];e[c]=[r,s,i]},o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((t,r)=>(o.f[r](e,t),t)),[])),o.u=e=>(({3239:"settings-users",4529:"settings-apps-view"}[e]||e)+"-"+e+".js?v="+{459:"975afd1e02f53abf8034",1023:"06cf5496a0a2d7ef494a",2441:"2c050d23f9070dfa7f03",3239:"d9db676f1e38fc8acfde",4529:"ab85428fc71ea1124397",5862:"142cd48ca8ec32e57725",6227:"3494381758c4754ef3f5",7265:"3ea08242e475ac7a22e1",8737:"1ee3b21131ac8193a04d"}[e]),o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r={},s="nextcloud:",o.l=(e,t,i,n)=>{if(r[e])r[e].push(t);else{var a,u;if(void 0!==i)for(var l=document.getElementsByTagName("script"),c=0;c<l.length;c++){var d=l[c];if(d.getAttribute("src")==e||d.getAttribute("data-webpack")==s+i){a=d;break}}a||(u=!0,(a=document.createElement("script")).charset="utf-8",a.timeout=120,o.nc&&a.setAttribute("nonce",o.nc),a.setAttribute("data-webpack",s+i),a.src=e),r[e]=[t];var p=(t,s)=>{a.onerror=a.onload=null,clearTimeout(h);var i=r[e];if(delete r[e],a.parentNode&&a.parentNode.removeChild(a),i&&i.forEach((e=>e(s))),t)return t(s)},h=setTimeout(p.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=p.bind(null,a.onerror),a.onload=p.bind(null,a.onload),u&&document.head.appendChild(a)}},o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),o.j=2689,(()=>{var e;o.g.importScripts&&(e=o.g.location+"");var t=o.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");if(r.length)for(var s=r.length-1;s>-1&&(!e||!/^http(s?):/.test(e));)e=r[s--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),o.p=e})(),(()=>{o.b=document.baseURI||self.location.href;var e={2689:0};o.f.j=(t,r)=>{var s=o.o(e,t)?e[t]:void 0;if(0!==s)if(s)r.push(s[2]);else{var i=new Promise(((r,i)=>s=e[t]=[r,i]));r.push(s[2]=i);var n=o.p+o.u(t),a=new Error;o.l(n,(r=>{if(o.o(e,t)&&(0!==(s=e[t])&&(e[t]=void 0),s)){var i=r&&("load"===r.type?"missing":r.type),n=r&&r.target&&r.target.src;a.message="Loading chunk "+t+" failed.\n("+i+": "+n+")",a.name="ChunkLoadError",a.type=i,a.request=n,s[1](a)}}),"chunk-"+t,t)}},o.O.j=t=>0===e[t];var t=(t,r)=>{var s,i,n=r[0],a=r[1],u=r[2],l=0;if(n.some((t=>0!==e[t]))){for(s in a)o.o(a,s)&&(o.m[s]=a[s]);if(u)var c=u(o)}for(t&&t(r);l<n.length;l++)i=n[l],o.o(e,i)&&e[i]&&e[i][0](),e[i]=0;return o.O(c)},r=self.webpackChunknextcloud=self.webpackChunknextcloud||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),o.nc=void 0;var a=o.O(void 0,[4208],(()=>o(12836)));a=o.O(a)})();
+//# sourceMappingURL=settings-vue-settings-apps-users-management.js.map?v=4a33ed1959347546b8d6 \ 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 40f87ad5098..26453bd0882 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=5bc5644413d5caee59eb","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/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/apps/settings/src/utils/sorting.ts","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/node_modules/@nextcloud/files/dist/index.mjs","webpack:///nextcloud/apps/settings/src/logger.ts","webpack:///nextcloud/node_modules/vuex-router-sync/index.js","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","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=288003b1\"\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;\nVue.use(PiniaVuePlugin);\nVue.use(VTooltipPlugin, { defaultHtml: false });\nVue.use(Vuex);\nconst store = useStore();\nsync(store, router);\nconst pinia = createPinia();\nexport default new Vue({\n router,\n store,\n pinia,\n render: h => h(SettingsApp),\n el: '#content',\n});\n","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCanonicalLocale, getLanguage } from '@nextcloud/l10n';\nexport const naturalCollator = Intl.Collator([getLanguage(), getCanonicalLocale()], {\n numeric: true,\n usage: 'sort',\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 { loadState } from '@nextcloud/initial-state'\nimport axios from '@nextcloud/axios'\n\nimport { GroupSorting } from '../constants/GroupManagement.ts'\nimport { naturalCollator } from '../utils/sorting.ts'\nimport api from './api.js'\nimport logger from '../logger.ts'\n\nconst usersSettings = loadState('settings', 'usersSettings', {})\n\nconst localStorage = getBuilder('settings').persist(true).build()\n\nconst defaults = {\n\t/**\n\t * @type {import('../views/user-types').IGroup}\n\t */\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\t\t...(usersSettings.getSubAdminGroups ?? []),\n\t\t...(usersSettings.systemGroups ?? []),\n\t],\n\torderBy: usersSettings.sortGroups ?? GroupSorting.UserCount,\n\tminPasswordLength: 0,\n\tusersOffset: 0,\n\tusersLimit: 25,\n\tdisabledUsersOffset: 0,\n\tdisabledUsersLimit: 25,\n\tuserCount: usersSettings.userCount ?? 0,\n\tshowConfig: {\n\t\tshowStoragePath: localStorage.getItem('account_settings__showStoragePath') === 'true',\n\t\tshowUserBackend: localStorage.getItem('account_settings__showUserBackend') === 'true',\n\t\tshowFirstLogin: localStorage.getItem('account_settings__showFirstLogin') === '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\t/**\n\t * @param {object} state store state\n\t * @param {import('../views/user-types.js').IGroup} newGroup new group\n\t */\n\taddGroup(state, newGroup) {\n\t\ttry {\n\t\t\tif (typeof state.groups.find((group) => group.id === newGroup.id) !== '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, newGroup)\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\tif (!group) {\n\t\t\t\t\treturn\n\t\t\t\t}\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\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\tif (!group) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tgroup.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\tif (!group) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\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\t/**\n\t * Reset group list\n\t *\n\t * @param {object} state the store state\n\t */\n\tresetGroups(state) {\n\t\tstate.groups = [\n\t\t\t...(usersSettings.getSubAdminGroups ?? []),\n\t\t\t...(usersSettings.systemGroups ?? []),\n\t\t]\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() {\n\t\treturn usersSettings.subAdminGroups ?? []\n\t},\n\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 : naturalCollator.compare(a.name, b.name))\n\t\t\t})\n\t\t} else {\n\t\t\treturn groups.sort((a, b) => naturalCollator.compare(a.name, 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<number>}\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<number>}\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', { id: group, name: 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', { id: gid, name: 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\tconst validKeys = ['email', 'language', 'quota', 'displayname', 'password', 'manager']\n\n\t\tif (!validKeys.includes(key)) {\n\t\t\tthrow new Error('Invalid request data')\n\t\t}\n\n\t\t// If value is empty and the key doesn't allow empty values, throw error\n\t\tif (value === '' && !allowedEmpty.includes(key)) {\n\t\t\tthrow new Error('Value cannot be empty for this field')\n\t\t}\n\n\t\ttry {\n\t\t\tawait api.requireAdmin()\n\t\t\tawait api.put(generateOcsUrl('cloud/users/{userid}', { userid }), { key, value })\n\t\t\treturn context.commit('setUserData', { userid, key, value })\n\t\t} catch (error) {\n\t\t\tcontext.commit('API_FAILURE', { userid, error })\n\t\t\tthrow error\n\t\t}\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.') + '<br>' + error.error.response.data.data.message, { isHTML: true })\n\t\tconsole.error(state, error)\n\t},\n\n\tinitCategories(state, { categories, updateCount }) {\n\t\tstate.categories = categories\n\t\tstate.updateCount = updateCount\n\t},\n\n\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.') + '<br>' + 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","import { o as logger } from \"./chunks/dav-Co9y-hkg.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-Co9y-hkg.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 (\"iconSvgInline\" in action && 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 = {};\nvar util = {};\nvar hasRequiredUtil;\nfunction requireUtil() {\n if (hasRequiredUtil) return util;\n hasRequiredUtil = 1;\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);\n return util;\n}\nvar hasRequiredValidator;\nfunction requireValidator() {\n if (hasRequiredValidator) return validator;\n hasRequiredValidator = 1;\n const util2 = requireUtil();\n const defaultOptions = {\n allowBooleanAttributes: false,\n //A tag can have attributes without any value\n unpairedTags: []\n };\n validator.validate = function(xmlData, options) {\n options = Object.assign({}, defaultOptions, 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((t2) => t2.tagName), null, 4).replace(/\\r?\\n/g, \"\") + \"' found.\", { line: 1, col: 1 });\n }\n return true;\n };\n function isWhiteSpace(char) {\n return char === \" \" || char === \"\t\" || char === \"\\n\" || char === \"\\r\";\n }\n function 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 }\n function 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 }\n const doubleQuote = '\"';\n const singleQuote = \"'\";\n function 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 }\n const validAttrStrRegxp = new RegExp(`(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*(['\"])(([\\\\s\\\\S])*?)\\\\5)?`, \"g\");\n function validateAttributeString(attrStr, options) {\n const matches = util2.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 }\n function 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 }\n function 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 }\n function 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 }\n function validateAttrName(attrName) {\n return util2.isName(attrName);\n }\n function validateTagName(tagname) {\n return util2.isName(tagname);\n }\n function 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 }\n function getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n }\n return validator;\n}\nvar OptionsBuilder = {};\nvar hasRequiredOptionsBuilder;\nfunction requireOptionsBuilder() {\n if (hasRequiredOptionsBuilder) return OptionsBuilder;\n hasRequiredOptionsBuilder = 1;\n const defaultOptions = {\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, val) {\n return val;\n },\n attributeValueProcessor: function(attrName, val) {\n return val;\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 };\n const buildOptions = function(options) {\n return Object.assign({}, defaultOptions, options);\n };\n OptionsBuilder.buildOptions = buildOptions;\n OptionsBuilder.defaultOptions = defaultOptions;\n return OptionsBuilder;\n}\nvar xmlNode;\nvar hasRequiredXmlNode;\nfunction requireXmlNode() {\n if (hasRequiredXmlNode) return xmlNode;\n hasRequiredXmlNode = 1;\n class XmlNode {\n constructor(tagname) {\n this.tagname = tagname;\n this.child = [];\n this[\":@\"] = {};\n }\n add(key, val) {\n if (key === \"__proto__\") key = \"#__proto__\";\n this.child.push({ [key]: val });\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 }\n xmlNode = XmlNode;\n return xmlNode;\n}\nvar DocTypeReader;\nvar hasRequiredDocTypeReader;\nfunction requireDocTypeReader() {\n if (hasRequiredDocTypeReader) return DocTypeReader;\n hasRequiredDocTypeReader = 1;\n const util2 = requireUtil();\n function readDocType(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 let entityName, val;\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 comment = true;\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 }\n function readEntityExp(xmlData, i2) {\n let entityName = \"\";\n for (; i2 < xmlData.length && (xmlData[i2] !== \"'\" && xmlData[i2] !== '\"'); i2++) {\n entityName += xmlData[i2];\n }\n entityName = entityName.trim();\n if (entityName.indexOf(\" \") !== -1) throw new Error(\"External entites are not supported\");\n const startChar = xmlData[i2++];\n let val = \"\";\n for (; i2 < xmlData.length && xmlData[i2] !== startChar; i2++) {\n val += xmlData[i2];\n }\n return [entityName, val, i2];\n }\n function 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 }\n function 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 }\n function 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 }\n function 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 }\n function validateEntityName(name) {\n if (util2.isName(name))\n return name;\n else\n throw new Error(`Invalid entity name ${name}`);\n }\n DocTypeReader = readDocType;\n return DocTypeReader;\n}\nvar strnum;\nvar hasRequiredStrnum;\nfunction requireStrnum() {\n if (hasRequiredStrnum) return strnum;\n hasRequiredStrnum = 1;\n const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\n const numRegex = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\n if (!Number.parseInt && window.parseInt) {\n Number.parseInt = window.parseInt;\n }\n if (!Number.parseFloat && window.parseFloat) {\n Number.parseFloat = window.parseFloat;\n }\n const consider = {\n hex: true,\n leadingZeros: true,\n decimalPoint: \".\",\n eNotation: true\n //skipLike: /regex/\n };\n function toNumber(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 }\n function 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 }\n strnum = toNumber;\n return strnum;\n}\nvar ignoreAttributes;\nvar hasRequiredIgnoreAttributes;\nfunction requireIgnoreAttributes() {\n if (hasRequiredIgnoreAttributes) return ignoreAttributes;\n hasRequiredIgnoreAttributes = 1;\n function getIgnoreAttributesFn(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 }\n ignoreAttributes = getIgnoreAttributesFn;\n return ignoreAttributes;\n}\nvar OrderedObjParser_1;\nvar hasRequiredOrderedObjParser;\nfunction requireOrderedObjParser() {\n if (hasRequiredOrderedObjParser) return OrderedObjParser_1;\n hasRequiredOrderedObjParser = 1;\n const util2 = requireUtil();\n const xmlNode2 = requireXmlNode();\n const readDocType = requireDocTypeReader();\n const toNumber = requireStrnum();\n const getIgnoreAttributesFn = requireIgnoreAttributes();\n 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;\n this.readStopNodeData = readStopNodeData;\n this.saveTextToParentTag = saveTextToParentTag;\n this.addChild = addChild;\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes);\n }\n }\n function 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 }\n function parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n if (val !== void 0) {\n if (this.options.trimValues && !dontTrim) {\n val = val.trim();\n }\n if (val.length > 0) {\n if (!escapeEntities) val = this.replaceEntitiesValue(val);\n const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode);\n if (newval === null || newval === void 0) {\n return val;\n } else if (typeof newval !== typeof val || newval !== val) {\n return newval;\n } else if (this.options.trimValues) {\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n const trimmedVal = val.trim();\n if (trimmedVal === val) {\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n return val;\n }\n }\n }\n }\n }\n function 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 }\n const attrsRegx = new RegExp(`([^\\\\s=]+)\\\\s*(=\\\\s*(['\"])([\\\\s\\\\S]*?)\\\\3)?`, \"gm\");\n function buildAttributesMap(attrStr, jPath, tagName) {\n if (this.options.ignoreAttributes !== true && typeof attrStr === \"string\") {\n const matches = util2.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 }\n const parseXml = function(xmlData) {\n xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\");\n const xmlObj = new xmlNode2(\"!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: </${tagName}>`);\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 xmlNode2(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 val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true, true);\n if (val == void 0) val = \"\";\n if (this.options.cdataPropName) {\n currentNode.add(this.options.cdataPropName, [{ [this.options.textNodeName]: tagExp }]);\n } else {\n currentNode.add(this.options.textNodeName, val);\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 xmlNode2(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 xmlNode2(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 xmlNode2(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 };\n function 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 }\n const replaceEntitiesValue = function(val) {\n if (this.options.processEntities) {\n for (let entityName in this.docTypeEntities) {\n const entity = this.docTypeEntities[entityName];\n val = val.replace(entity.regx, entity.val);\n }\n for (let entityName in this.lastEntities) {\n const entity = this.lastEntities[entityName];\n val = val.replace(entity.regex, entity.val);\n }\n if (this.options.htmlEntities) {\n for (let entityName in this.htmlEntities) {\n const entity = this.htmlEntities[entityName];\n val = val.replace(entity.regex, entity.val);\n }\n }\n val = val.replace(this.ampEntity.regex, this.ampEntity.val);\n }\n return val;\n };\n function 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 }\n function 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 }\n function 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 }\n function 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 }\n function 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 }\n function 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 }\n function parseValue(val, shouldParse, options) {\n if (shouldParse && typeof val === \"string\") {\n const newval = val.trim();\n if (newval === \"true\") return true;\n else if (newval === \"false\") return false;\n else return toNumber(val, options);\n } else {\n if (util2.isExist(val)) {\n return val;\n } else {\n return \"\";\n }\n }\n }\n OrderedObjParser_1 = OrderedObjParser;\n return OrderedObjParser_1;\n}\nvar node2json = {};\nvar hasRequiredNode2json;\nfunction requireNode2json() {\n if (hasRequiredNode2json) return node2json;\n hasRequiredNode2json = 1;\n function prettify(node, options) {\n return compress(node, options);\n }\n function 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(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 val = compress(tagObj[property], options, newJpath);\n const isLeaf = isLeafTag(val, options);\n if (tagObj[\":@\"]) {\n assignAttributes(val, tagObj[\":@\"], newJpath, options);\n } else if (Object.keys(val).length === 1 && val[options.textNodeName] !== void 0 && !options.alwaysCreateTextNode) {\n val = val[options.textNodeName];\n } else if (Object.keys(val).length === 0) {\n if (options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n else val = \"\";\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(val);\n } else {\n if (options.isArray(property, newJpath, isLeaf)) {\n compressedObj[property] = [val];\n } else {\n compressedObj[property] = val;\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 }\n function propName(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 }\n function 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 }\n function 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 }\n node2json.prettify = prettify;\n return node2json;\n}\nvar XMLParser_1;\nvar hasRequiredXMLParser;\nfunction requireXMLParser() {\n if (hasRequiredXMLParser) return XMLParser_1;\n hasRequiredXMLParser = 1;\n const { buildOptions } = requireOptionsBuilder();\n const OrderedObjParser = requireOrderedObjParser();\n const { prettify } = requireNode2json();\n const validator2 = requireValidator();\n 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 = validator2.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 OrderedObjParser(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 '&#xD;'\");\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 }\n XMLParser_1 = XMLParser;\n return XMLParser_1;\n}\nvar orderedJs2Xml;\nvar hasRequiredOrderedJs2Xml;\nfunction requireOrderedJs2Xml() {\n if (hasRequiredOrderedJs2Xml) return orderedJs2Xml;\n hasRequiredOrderedJs2Xml = 1;\n const EOL = \"\\n\";\n function 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 }\n function 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 += `<![CDATA[${tagObj[tagName][0][options.textNodeName]}]]>`;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.commentPropName) {\n xmlStr += indentation + `<!--${tagObj[tagName][0][options.textNodeName]}-->`;\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}</${tagName}>`;\n } else {\n xmlStr += tagStart + \">\";\n if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"</\"))) {\n xmlStr += indentation + options.indentBy + tagValue + indentation;\n } else {\n xmlStr += tagValue;\n }\n xmlStr += `</${tagName}>`;\n }\n isPreviousElementTag = true;\n }\n return xmlStr;\n }\n function 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 }\n function 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 }\n function 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 }\n function 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 }\n orderedJs2Xml = toXml;\n return orderedJs2Xml;\n}\nvar json2xml;\nvar hasRequiredJson2xml;\nfunction requireJson2xml() {\n if (hasRequiredJson2xml) return json2xml;\n hasRequiredJson2xml = 1;\n const buildFromOrderedJs = requireOrderedJs2Xml();\n const getIgnoreAttributesFn = requireIgnoreAttributes();\n const 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: \"&amp;\" },\n //it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \"&gt;\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"&lt;\" },\n { regex: new RegExp(\"'\", \"g\"), val: \"&apos;\" },\n { regex: new RegExp('\"', \"g\"), val: \"&quot;\" }\n ],\n processEntities: true,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: false\n };\n function 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 }\n Builder.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 };\n Builder.prototype.j2x = function(jObj, level, ajPath) {\n let attrStr = \"\";\n let val = \"\";\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 val += \"\";\n }\n } else if (jObj[key] === null) {\n if (this.isAttribute(key)) {\n val += \"\";\n } else if (key[0] === \"?\") {\n val += this.indentate(level) + \"<\" + key + \"?\" + this.tagEndChar;\n } else {\n val += this.indentate(level) + \"<\" + key + \"/\" + this.tagEndChar;\n }\n } else if (jObj[key] instanceof Date) {\n val += 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 val += this.replaceEntitiesValue(newval);\n } else {\n val += 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] === \"?\") val += this.indentate(level) + \"<\" + key + \"?\" + this.tagEndChar;\n else val += 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 val += 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 val += this.processTextOrObjNode(jObj[key], key, level, ajPath);\n }\n }\n }\n return { attrStr, val };\n };\n Builder.prototype.buildAttrPairStr = function(attrName, val) {\n val = this.options.attributeValueProcessor(attrName, \"\" + val);\n val = this.replaceEntitiesValue(val);\n if (this.options.suppressBooleanAttributes && val === \"true\") {\n return \" \" + attrName;\n } else return \" \" + attrName + '=\"' + val + '\"';\n };\n function 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 }\n Builder.prototype.buildObjectNode = function(val, key, attrStr, level) {\n if (val === \"\") {\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 = \"</\" + key + this.tagEndChar;\n let piClosingChar = \"\";\n if (key[0] === \"?\") {\n piClosingChar = \"?\";\n tagEndExp = \"\";\n }\n if ((attrStr || attrStr === \"\") && val.indexOf(\"<\") === -1) {\n return this.indentate(level) + \"<\" + key + attrStr + piClosingChar + \">\" + val + tagEndExp;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n return this.indentate(level) + `<!--${val}-->` + this.newLine;\n } else {\n return this.indentate(level) + \"<\" + key + attrStr + piClosingChar + this.tagEndChar + val + this.indentate(level) + tagEndExp;\n }\n }\n };\n Builder.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 = `></${key}`;\n }\n return closeTag;\n };\n Builder.prototype.buildTextValNode = function(val, key, attrStr, level) {\n if (this.options.cdataPropName !== false && key === this.options.cdataPropName) {\n return this.indentate(level) + `<![CDATA[${val}]]>` + this.newLine;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n return this.indentate(level) + `<!--${val}-->` + 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, val);\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 + \"</\" + key + this.tagEndChar;\n }\n }\n };\n Builder.prototype.replaceEntitiesValue = function(textValue) {\n if (textValue && textValue.length > 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 };\n function indentate(level) {\n return this.options.indentBy.repeat(level);\n }\n function 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 }\n json2xml = Builder;\n return json2xml;\n}\nvar fxp;\nvar hasRequiredFxp;\nfunction requireFxp() {\n if (hasRequiredFxp) return fxp;\n hasRequiredFxp = 1;\n const validator2 = requireValidator();\n const XMLParser = requireXMLParser();\n const XMLBuilder = requireJson2xml();\n fxp = {\n XMLParser,\n XMLValidator: validator2,\n XMLBuilder\n };\n return fxp;\n}\nvar fxpExports = requireFxp();\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 (fxpExports.XMLValidator.validate(string) !== true) {\n return false;\n }\n let jsonObject;\n const parser = new fxpExports.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};\nvar debug_1;\nvar hasRequiredDebug;\nfunction requireDebug() {\n if (hasRequiredDebug) return debug_1;\n hasRequiredDebug = 1;\n const debug = typeof process === \"object\" && process.env && process.env.NODE_DEBUG && /\\bsemver\\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error(\"SEMVER\", ...args) : () => {\n };\n debug_1 = debug;\n return debug_1;\n}\nvar constants;\nvar hasRequiredConstants;\nfunction requireConstants() {\n if (hasRequiredConstants) return constants;\n hasRequiredConstants = 1;\n const SEMVER_SPEC_VERSION = \"2.0.0\";\n const MAX_LENGTH = 256;\n const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */\n 9007199254740991;\n const MAX_SAFE_COMPONENT_LENGTH = 16;\n const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6;\n const RELEASE_TYPES = [\n \"major\",\n \"premajor\",\n \"minor\",\n \"preminor\",\n \"patch\",\n \"prepatch\",\n \"prerelease\"\n ];\n constants = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 1,\n FLAG_LOOSE: 2\n };\n return constants;\n}\nvar re = { exports: {} };\nvar hasRequiredRe;\nfunction requireRe() {\n if (hasRequiredRe) return re.exports;\n hasRequiredRe = 1;\n (function(module, exports) {\n const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH\n } = requireConstants();\n const debug = requireDebug();\n exports = module.exports = {};\n const re2 = exports.re = [];\n const safeRe = exports.safeRe = [];\n const src = exports.src = [];\n const t2 = exports.t = {};\n let R = 0;\n const LETTERDASHNUMBER = \"[a-zA-Z0-9-]\";\n const safeRegexReplacements = [\n [\"\\\\s\", 1],\n [\"\\\\d\", MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH]\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 debug(name, index, value);\n t2[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[t2.NUMERICIDENTIFIER]})\\\\.(${src[t2.NUMERICIDENTIFIER]})\\\\.(${src[t2.NUMERICIDENTIFIER]})`);\n createToken(\"MAINVERSIONLOOSE\", `(${src[t2.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t2.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t2.NUMERICIDENTIFIERLOOSE]})`);\n createToken(\"PRERELEASEIDENTIFIER\", `(?:${src[t2.NUMERICIDENTIFIER]}|${src[t2.NONNUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASEIDENTIFIERLOOSE\", `(?:${src[t2.NUMERICIDENTIFIERLOOSE]}|${src[t2.NONNUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASE\", `(?:-(${src[t2.PRERELEASEIDENTIFIER]}(?:\\\\.${src[t2.PRERELEASEIDENTIFIER]})*))`);\n createToken(\"PRERELEASELOOSE\", `(?:-?(${src[t2.PRERELEASEIDENTIFIERLOOSE]}(?:\\\\.${src[t2.PRERELEASEIDENTIFIERLOOSE]})*))`);\n createToken(\"BUILDIDENTIFIER\", `${LETTERDASHNUMBER}+`);\n createToken(\"BUILD\", `(?:\\\\+(${src[t2.BUILDIDENTIFIER]}(?:\\\\.${src[t2.BUILDIDENTIFIER]})*))`);\n createToken(\"FULLPLAIN\", `v?${src[t2.MAINVERSION]}${src[t2.PRERELEASE]}?${src[t2.BUILD]}?`);\n createToken(\"FULL\", `^${src[t2.FULLPLAIN]}$`);\n createToken(\"LOOSEPLAIN\", `[v=\\\\s]*${src[t2.MAINVERSIONLOOSE]}${src[t2.PRERELEASELOOSE]}?${src[t2.BUILD]}?`);\n createToken(\"LOOSE\", `^${src[t2.LOOSEPLAIN]}$`);\n createToken(\"GTLT\", \"((?:<|>)?=?)\");\n createToken(\"XRANGEIDENTIFIERLOOSE\", `${src[t2.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`);\n createToken(\"XRANGEIDENTIFIER\", `${src[t2.NUMERICIDENTIFIER]}|x|X|\\\\*`);\n createToken(\"XRANGEPLAIN\", `[v=\\\\s]*(${src[t2.XRANGEIDENTIFIER]})(?:\\\\.(${src[t2.XRANGEIDENTIFIER]})(?:\\\\.(${src[t2.XRANGEIDENTIFIER]})(?:${src[t2.PRERELEASE]})?${src[t2.BUILD]}?)?)?`);\n createToken(\"XRANGEPLAINLOOSE\", `[v=\\\\s]*(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:${src[t2.PRERELEASELOOSE]})?${src[t2.BUILD]}?)?)?`);\n createToken(\"XRANGE\", `^${src[t2.GTLT]}\\\\s*${src[t2.XRANGEPLAIN]}$`);\n createToken(\"XRANGELOOSE\", `^${src[t2.GTLT]}\\\\s*${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"COERCEPLAIN\", `${\"(^|[^\\\\d])(\\\\d{1,\"}${MAX_SAFE_COMPONENT_LENGTH}})(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`);\n createToken(\"COERCE\", `${src[t2.COERCEPLAIN]}(?:$|[^\\\\d])`);\n createToken(\"COERCEFULL\", src[t2.COERCEPLAIN] + `(?:${src[t2.PRERELEASE]})?(?:${src[t2.BUILD]})?(?:$|[^\\\\d])`);\n createToken(\"COERCERTL\", src[t2.COERCE], true);\n createToken(\"COERCERTLFULL\", src[t2.COERCEFULL], true);\n createToken(\"LONETILDE\", \"(?:~>?)\");\n createToken(\"TILDETRIM\", `(\\\\s*)${src[t2.LONETILDE]}\\\\s+`, true);\n exports.tildeTrimReplace = \"$1~\";\n createToken(\"TILDE\", `^${src[t2.LONETILDE]}${src[t2.XRANGEPLAIN]}$`);\n createToken(\"TILDELOOSE\", `^${src[t2.LONETILDE]}${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"LONECARET\", \"(?:\\\\^)\");\n createToken(\"CARETTRIM\", `(\\\\s*)${src[t2.LONECARET]}\\\\s+`, true);\n exports.caretTrimReplace = \"$1^\";\n createToken(\"CARET\", `^${src[t2.LONECARET]}${src[t2.XRANGEPLAIN]}$`);\n createToken(\"CARETLOOSE\", `^${src[t2.LONECARET]}${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"COMPARATORLOOSE\", `^${src[t2.GTLT]}\\\\s*(${src[t2.LOOSEPLAIN]})$|^$`);\n createToken(\"COMPARATOR\", `^${src[t2.GTLT]}\\\\s*(${src[t2.FULLPLAIN]})$|^$`);\n createToken(\"COMPARATORTRIM\", `(\\\\s*)${src[t2.GTLT]}\\\\s*(${src[t2.LOOSEPLAIN]}|${src[t2.XRANGEPLAIN]})`, true);\n exports.comparatorTrimReplace = \"$1$2$3\";\n createToken(\"HYPHENRANGE\", `^\\\\s*(${src[t2.XRANGEPLAIN]})\\\\s+-\\\\s+(${src[t2.XRANGEPLAIN]})\\\\s*$`);\n createToken(\"HYPHENRANGELOOSE\", `^\\\\s*(${src[t2.XRANGEPLAINLOOSE]})\\\\s+-\\\\s+(${src[t2.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, re.exports);\n return re.exports;\n}\nvar parseOptions_1;\nvar hasRequiredParseOptions;\nfunction requireParseOptions() {\n if (hasRequiredParseOptions) return parseOptions_1;\n hasRequiredParseOptions = 1;\n const looseOption = Object.freeze({ loose: true });\n const emptyOpts = Object.freeze({});\n const parseOptions = (options) => {\n if (!options) {\n return emptyOpts;\n }\n if (typeof options !== \"object\") {\n return looseOption;\n }\n return options;\n };\n parseOptions_1 = parseOptions;\n return parseOptions_1;\n}\nvar identifiers;\nvar hasRequiredIdentifiers;\nfunction requireIdentifiers() {\n if (hasRequiredIdentifiers) return identifiers;\n hasRequiredIdentifiers = 1;\n const numeric = /^[0-9]+$/;\n const compareIdentifiers = (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 };\n const rcompareIdentifiers = (a2, b2) => compareIdentifiers(b2, a2);\n identifiers = {\n compareIdentifiers,\n rcompareIdentifiers\n };\n return identifiers;\n}\nvar semver;\nvar hasRequiredSemver;\nfunction requireSemver() {\n if (hasRequiredSemver) return semver;\n hasRequiredSemver = 1;\n const debug = requireDebug();\n const { MAX_LENGTH, MAX_SAFE_INTEGER } = requireConstants();\n const { safeRe: re2, t: t2 } = requireRe();\n const parseOptions = requireParseOptions();\n const { compareIdentifiers } = requireIdentifiers();\n 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 ? re2[t2.LOOSE] : re2[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 // If the input is a non-prerelease version, this acts the same as\n // prepatch.\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 // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\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 }\n semver = SemVer;\n return semver;\n}\nvar parse_1;\nvar hasRequiredParse;\nfunction requireParse() {\n if (hasRequiredParse) return parse_1;\n hasRequiredParse = 1;\n const SemVer = requireSemver();\n const parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version;\n }\n try {\n return new SemVer(version, options);\n } catch (er) {\n if (!throwErrors) {\n return null;\n }\n throw er;\n }\n };\n parse_1 = parse;\n return parse_1;\n}\nvar valid_1;\nvar hasRequiredValid;\nfunction requireValid() {\n if (hasRequiredValid) return valid_1;\n hasRequiredValid = 1;\n const parse = requireParse();\n const valid2 = (version, options) => {\n const v = parse(version, options);\n return v ? v.version : null;\n };\n valid_1 = valid2;\n return valid_1;\n}\nvar validExports = requireValid();\nconst valid = /* @__PURE__ */ getDefaultExportFromCjs(validExports);\nvar major_1;\nvar hasRequiredMajor;\nfunction requireMajor() {\n if (hasRequiredMajor) return major_1;\n hasRequiredMajor = 1;\n const SemVer = requireSemver();\n const major2 = (a2, loose) => new SemVer(a2, loose).major;\n major_1 = major2;\n return major_1;\n}\nvar majorExports = requireMajor();\nconst major = /* @__PURE__ */ getDefaultExportFromCjs(majorExports);\nclass ProxyBus {\n bus;\n constructor(bus2) {\n if (typeof bus2.getVersion !== \"function\" || !valid(bus2.getVersion())) {\n console.warn(\"Proxying an event bus with an unknown or invalid version\");\n } else if (major(bus2.getVersion()) !== major(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","/**\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","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","// 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=\" + {\"459\":\"975afd1e02f53abf8034\",\"1023\":\"06cf5496a0a2d7ef494a\",\"2441\":\"2c050d23f9070dfa7f03\",\"3239\":\"0828a85406800581fcfe\",\"4529\":\"ab85428fc71ea1124397\",\"5862\":\"142cd48ca8ec32e57725\",\"6227\":\"3494381758c4754ef3f5\",\"7265\":\"3ea08242e475ac7a22e1\",\"8737\":\"1ee3b21131ac8193a04d\"}[chunkId] + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2689;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2689: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(12836)))\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","_defineComponent","__name","setup","__props","__sfc","NcContent","_vm","this","_c","_self","_setupProxy","attrs","_v","name","path","components","default","UserManagement","navigation","UserManagementNavigation","props","children","redirect","category","loadState","AppStore","AppStoreNavigation","sidebar","AppStoreSidebar","Vue","use","Router","mode","base","generateUrl","linkActiveClass","routes","__webpack_nonce__","getCSPNonce","prototype","t","n","PiniaVuePlugin","VTooltipPlugin","defaultHtml","Vuex","store","useStore","sync","router","pinia","createPinia","render","h","SettingsApp","el","naturalCollator","Intl","Collator","getLanguage","getCanonicalLocale","numeric","usage","usersSettings","localStorage","getBuilder","persist","build","defaults","id","usercount","disabled","canAdd","canRemove","state","users","groups","getSubAdminGroups","systemGroups","orderBy","sortGroups","GroupSorting","UserCount","minPasswordLength","usersOffset","usersLimit","disabledUsersOffset","disabledUsersLimit","userCount","showConfig","showStoragePath","getItem","showUserBackend","showFirstLogin","showLastLogin","showNewUserForm","showLanguages","mutations","appendUsers","usersObj","existingUsers","map","_ref","newUsers","Object","values","filter","_ref2","includes","concat","updateDisabledUsers","_usersObj","setPasswordPolicyMinLength","length","addGroup","newGroup","find","group","assign","unshift","e","console","error","renameGroup","_ref3","gid","displayName","groupIndex","findIndex","groupSearch","updatedGroup","splice","removeGroup","addUserGroup","_ref4","userid","user","enabled","push","removeUserGroup","_ref5","indexOf","addUserSubAdmin","_ref6","subadmin","removeUserSubAdmin","_ref7","deleteUser","userIndex","commit","actionType","addUserData","response","ocs","enableDisableUser","_ref8","updateUserCounts","_ref9","recentGroup","disabledGroup","forEach","userGroup","warn","logger","setUserData","_ref10","key","value","humanValue","parseFileSize","resetUsers","resetGroups","setShowConfig","_ref11","setItem","JSON","stringify","setGroupSorting","sorting","oldValue","String","catch","showError","getters","getUsers","getGroups","subAdminGroups","getSortedGroups","sort","a","b","numA","numB","compare","getGroupSorting","getPasswordPolicyMinLength","getUsersOffset","getUsersLimit","getDisabledUsersOffset","getDisabledUsersLimit","getUserCount","getShowConfig","CancelToken","searchRequestCancelSource","actions","searchUsers","context","_ref12","offset","limit","search","api","generateOcsUrl","getUser","userId","_ref13","cancel","source","trim","encodeURIComponent","cancelToken","token","then","usersCount","keys","getRecentUsers","_ref14","getDisabledUsers","_ref15","_ref16","limitParam","getUsersFromList","_ref17","getUsersFromGroup","_ref18","groupid","groupId","getCapabilities","password_policy","minLength","_ref19","_ref20","_ref21","_ref22","_ref23","wipeUserDevices","Promise","reject","Error","addUser","_ref24","_ref25","dispatch","password","email","quota","language","manager","_ref26","userStatus","_ref27","sendWelcomeMail","apps","bundles","categories","updateCount","loading","gettingCategoriesPromise","appApiEnabled","APPS_API_FAILURE","message","isHTML","initCategories","updateCategories","categoriesPromise","setUpdateCount","addCategory","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","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","modules","settings","oc","strict","process","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","a2","b2","identifier","entries","sortFavoritesFirst","v","attributes","favorite","sortFoldersFirst","type","basename2","displayname","basename","lastIndexOf","slice","hasRequiredUtil","hasRequiredValidator","validator","util","requireUtil","exports","nameStartChar","nameRegexp","regexName","RegExp","isExist","isEmptyObject","obj","merge","target","arrayMode","len","i2","getValue","isName","string","exec","getAllMatches","regex","matches","allmatches","startIndex","lastIndex","requireValidator","util2","defaultOptions","allowBooleanAttributes","unpairedTags","isWhiteSpace","char","readPI","xmlData","start","tagname","substr","getErrorObject","getLineNumberForPosition","readCommentAndCDATA","angleBracketsCount","validate","tags","tagFound","reachedRoot","err","tagStartPos","closingTag","tagName","substring","msg","result","readAttributeStr","attrStr","attrStrStart","isValid","validateAttributeString","code","line","tagClosed","otg","pop","openPos","col","afterAmp","validateAmpersand","t2","doubleQuote","singleQuote","startChar","validAttrStrRegxp","attrNames","getPositionFromMatch","attrName","validateAttrName","hasOwnProperty","re2","validateNumberAmpersand","count","lineNumber","lines","split","hasRequiredOptionsBuilder","xmlNode","hasRequiredXmlNode","DocTypeReader","hasRequiredDocTypeReader","strnum","hasRequiredStrnum","ignoreAttributes","hasRequiredIgnoreAttributes","OrderedObjParser_1","hasRequiredOrderedObjParser","OptionsBuilder","requireIgnoreAttributes","ignoreAttributes2","pattern","test","hasRequiredNode2json","XMLParser_1","hasRequiredXMLParser","orderedJs2Xml","hasRequiredOrderedJs2Xml","json2xml","hasRequiredJson2xml","fxp","hasRequiredFxp","debug_1","hasRequiredDebug","constants","hasRequiredConstants","node2json","requireNode2json","compress","arr","jPath","text","compressedObj","tagObj","property","propName","newJpath","textNodeName","val","isLeaf","isLeafTag","assignAttributes","alwaysCreateTextNode","attrMap","jpath","atrrName","propCount","prettify","node","requireXMLParser","buildOptions","preserveOrder","attributeNamePrefix","attributesGroupName","removeNSPrefix","parseTagValue","parseAttributeValue","trimValues","cdataPropName","numberParseOptions","hex","leadingZeros","eNotation","tagValueProcessor","attributeValueProcessor","stopNodes","commentPropName","processEntities","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","requireOptionsBuilder","OrderedObjParser","xmlNode2","constructor","child","add","addChild","readDocType","readEntityExp","entityName","isEntity","isElement","isAttlist","isNotation","validateEntityName","entities","hasBody","comment","exp","regx","i","requireDocTypeReader","toNumber","hexRegex","numRegex","parseInt","consider","decimalPoint","str","trimmedStr","skipLike","sign","numTrimmedByZeros","numStr","num","requireStrnum","getIgnoreAttributesFn","addExternalEntities","externalEntities","entKeys","ent","lastEntities","parseTextData","dontTrim","hasAttributes","isLeafNode","escapeEntities","replaceEntitiesValue","newval","parseValue","resolveNameSpace","prefix","charAt","attrsRegx","buildAttributesMap","ignoreAttributesFn","oldVal","aName","newVal","attrCollection","parseXml","xmlObj","currentNode","textData","closeIndex","findClosingIndex","colonIndex","saveTextToParentTag","lastTagName","propIndex","tagsNodeStack","tagData","readTagExp","childNode","tagExp","attrExpPresent","endIndex","docTypeEntities","rawTagName","lastTag","isItStopNode","tagContent","result2","readStopNodeData","entity","ampEntity","currentTagName","allNodesExp","stopNodePath","stopNodeExp","errMsg","closingIndex","closingChar","attrBoundary","ch","tagExpWithClosingIndex","separatorIndex","trimStart","openTagCount","shouldParse","fromCharCode","requireOrderedObjParser","validator2","parse","validationOption","toString","orderedObjParser","orderedResult","addEntity","requireOrderedJs2Xml","arrToStr","indentation","xmlStr","isPreviousElementTag","newJPath","tagText","isStopNode","attStr2","attr_to_str","tempInd","piTextNodeName","newIdentation","indentBy","tagStart","tagValue","suppressUnpairedNode","suppressEmptyNode","endsWith","attr","attrVal","suppressBooleanAttributes","textValue","jArray","format","requireDebug","debug","env","NODE_DEBUG","args","requireConstants","MAX_SAFE_INTEGER","MAX_LENGTH","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","RELEASE_TYPES","SEMVER_SPEC_VERSION","FLAG_INCLUDE_PRERELEASE","FLAG_LOOSE","XMLParser","XMLBuilder","buildFromOrderedJs","oneListGroup","Builder","isAttribute","attrPrefixLen","processTextOrObjNode","indentate","tagEndChar","newLine","object","level","ajPath","j2x","buildTextValNode","buildObjectNode","repeat","startsWith","jObj","arrayNodeName","join","call","buildAttrPairStr","arrLen","listTagVal","listTagAttr","j2","item","Ks","L","closeTag","tagEndExp","piClosingChar","requireJson2xml","XMLValidator","requireFxp","hasRequiredRe","parseOptions_1","hasRequiredParseOptions","identifiers","hasRequiredIdentifiers","semver","hasRequiredSemver","parse_1","hasRequiredParse","valid_1","hasRequiredValid","major_1","hasRequiredMajor","re","requireSemver","safeRe","module","src","R","LETTERDASHNUMBER","safeRegexReplacements","createToken","isGlobal","safe","max","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","parseOptions","looseOption","freeze","loose","emptyOpts","requireParseOptions","compareIdentifiers","anum","bnum","rcompareIdentifiers","requireIdentifiers","SemVer","includePrerelease","TypeError","m2","LOOSE","FULL","raw","major","minor","prerelease","other","compareMain","comparePre","compareBuild","inc","release","identifierBase","isNaN","throwErrors","er","requireParse","requireValid","requireMajor","getLoggerBuilder","setApp","detectUser","cloneRoute","to","from","clone","hash","query","fullPath","moduleName","registerModule","namespaced","currentRoute","transition","currentPath","isTimeTraveling","storeUnwatch","watch","route","afterEachUnHook","afterEach","unregisterModule","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","O","chunkIds","fn","priority","notFulfilled","Infinity","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=4a33ed1959347546b8d6","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/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/apps/settings/src/utils/sorting.ts","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/node_modules/@nextcloud/files/dist/index.mjs","webpack:///nextcloud/apps/settings/src/logger.ts","webpack:///nextcloud/node_modules/vuex-router-sync/index.js","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","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=288003b1\"\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;\nVue.use(PiniaVuePlugin);\nVue.use(VTooltipPlugin, { defaultHtml: false });\nVue.use(Vuex);\nconst store = useStore();\nsync(store, router);\nconst pinia = createPinia();\nexport default new Vue({\n router,\n store,\n pinia,\n render: h => h(SettingsApp),\n el: '#content',\n});\n","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCanonicalLocale, getLanguage } from '@nextcloud/l10n';\nexport const naturalCollator = Intl.Collator([getLanguage(), getCanonicalLocale()], {\n numeric: true,\n usage: 'sort',\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 { loadState } from '@nextcloud/initial-state'\nimport axios from '@nextcloud/axios'\n\nimport { GroupSorting } from '../constants/GroupManagement.ts'\nimport { naturalCollator } from '../utils/sorting.ts'\nimport api from './api.js'\nimport logger from '../logger.ts'\n\nconst usersSettings = loadState('settings', 'usersSettings', {})\n\nconst localStorage = getBuilder('settings').persist(true).build()\n\nconst defaults = {\n\t/**\n\t * @type {import('../views/user-types').IGroup}\n\t */\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\t\t...(usersSettings.getSubAdminGroups ?? []),\n\t\t...(usersSettings.systemGroups ?? []),\n\t],\n\torderBy: usersSettings.sortGroups ?? GroupSorting.UserCount,\n\tminPasswordLength: 0,\n\tusersOffset: 0,\n\tusersLimit: 25,\n\tdisabledUsersOffset: 0,\n\tdisabledUsersLimit: 25,\n\tuserCount: usersSettings.userCount ?? 0,\n\tshowConfig: {\n\t\tshowStoragePath: localStorage.getItem('account_settings__showStoragePath') === 'true',\n\t\tshowUserBackend: localStorage.getItem('account_settings__showUserBackend') === 'true',\n\t\tshowFirstLogin: localStorage.getItem('account_settings__showFirstLogin') === '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\t/**\n\t * @param {object} state store state\n\t * @param {import('../views/user-types.js').IGroup} newGroup new group\n\t */\n\taddGroup(state, newGroup) {\n\t\ttry {\n\t\t\tif (typeof state.groups.find((group) => group.id === newGroup.id) !== '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, newGroup)\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\tif (!group) {\n\t\t\t\t\treturn\n\t\t\t\t}\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\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\tif (!group) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tgroup.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\tif (!group) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\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\t/**\n\t * Reset group list\n\t *\n\t * @param {object} state the store state\n\t */\n\tresetGroups(state) {\n\t\tstate.groups = [\n\t\t\t...(usersSettings.getSubAdminGroups ?? []),\n\t\t\t...(usersSettings.systemGroups ?? []),\n\t\t]\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() {\n\t\treturn usersSettings.subAdminGroups ?? []\n\t},\n\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 : naturalCollator.compare(a.name, b.name))\n\t\t\t})\n\t\t} else {\n\t\t\treturn groups.sort((a, b) => naturalCollator.compare(a.name, 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<number>}\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<number>}\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', { id: group, name: 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', { id: gid, name: 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\tconst validKeys = ['email', 'language', 'quota', 'displayname', 'password', 'manager']\n\n\t\tif (!validKeys.includes(key)) {\n\t\t\tthrow new Error('Invalid request data')\n\t\t}\n\n\t\t// If value is empty and the key doesn't allow empty values, throw error\n\t\tif (value === '' && !allowedEmpty.includes(key)) {\n\t\t\tthrow new Error('Value cannot be empty for this field')\n\t\t}\n\n\t\ttry {\n\t\t\tawait api.requireAdmin()\n\t\t\tawait api.put(generateOcsUrl('cloud/users/{userid}', { userid }), { key, value })\n\t\t\treturn context.commit('setUserData', { userid, key, value })\n\t\t} catch (error) {\n\t\t\tcontext.commit('API_FAILURE', { userid, error })\n\t\t\tthrow error\n\t\t}\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.') + '<br>' + error.error.response.data.data.message, { isHTML: true })\n\t\tconsole.error(state, error)\n\t},\n\n\tinitCategories(state, { categories, updateCount }) {\n\t\tstate.categories = categories\n\t\tstate.updateCount = updateCount\n\t},\n\n\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.') + '<br>' + 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","import { o as logger } from \"./chunks/dav-Co9y-hkg.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-Co9y-hkg.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 (\"iconSvgInline\" in action && 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 = {};\nvar util = {};\nvar hasRequiredUtil;\nfunction requireUtil() {\n if (hasRequiredUtil) return util;\n hasRequiredUtil = 1;\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);\n return util;\n}\nvar hasRequiredValidator;\nfunction requireValidator() {\n if (hasRequiredValidator) return validator;\n hasRequiredValidator = 1;\n const util2 = requireUtil();\n const defaultOptions = {\n allowBooleanAttributes: false,\n //A tag can have attributes without any value\n unpairedTags: []\n };\n validator.validate = function(xmlData, options) {\n options = Object.assign({}, defaultOptions, 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((t2) => t2.tagName), null, 4).replace(/\\r?\\n/g, \"\") + \"' found.\", { line: 1, col: 1 });\n }\n return true;\n };\n function isWhiteSpace(char) {\n return char === \" \" || char === \"\t\" || char === \"\\n\" || char === \"\\r\";\n }\n function 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 }\n function 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 }\n const doubleQuote = '\"';\n const singleQuote = \"'\";\n function 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 }\n const validAttrStrRegxp = new RegExp(`(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*(['\"])(([\\\\s\\\\S])*?)\\\\5)?`, \"g\");\n function validateAttributeString(attrStr, options) {\n const matches = util2.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 }\n function 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 }\n function 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 }\n function 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 }\n function validateAttrName(attrName) {\n return util2.isName(attrName);\n }\n function validateTagName(tagname) {\n return util2.isName(tagname);\n }\n function 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 }\n function getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n }\n return validator;\n}\nvar OptionsBuilder = {};\nvar hasRequiredOptionsBuilder;\nfunction requireOptionsBuilder() {\n if (hasRequiredOptionsBuilder) return OptionsBuilder;\n hasRequiredOptionsBuilder = 1;\n const defaultOptions = {\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, val) {\n return val;\n },\n attributeValueProcessor: function(attrName, val) {\n return val;\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 };\n const buildOptions = function(options) {\n return Object.assign({}, defaultOptions, options);\n };\n OptionsBuilder.buildOptions = buildOptions;\n OptionsBuilder.defaultOptions = defaultOptions;\n return OptionsBuilder;\n}\nvar xmlNode;\nvar hasRequiredXmlNode;\nfunction requireXmlNode() {\n if (hasRequiredXmlNode) return xmlNode;\n hasRequiredXmlNode = 1;\n class XmlNode {\n constructor(tagname) {\n this.tagname = tagname;\n this.child = [];\n this[\":@\"] = {};\n }\n add(key, val) {\n if (key === \"__proto__\") key = \"#__proto__\";\n this.child.push({ [key]: val });\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 }\n xmlNode = XmlNode;\n return xmlNode;\n}\nvar DocTypeReader;\nvar hasRequiredDocTypeReader;\nfunction requireDocTypeReader() {\n if (hasRequiredDocTypeReader) return DocTypeReader;\n hasRequiredDocTypeReader = 1;\n const util2 = requireUtil();\n function readDocType(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 let entityName, val;\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 comment = true;\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 }\n function readEntityExp(xmlData, i2) {\n let entityName = \"\";\n for (; i2 < xmlData.length && (xmlData[i2] !== \"'\" && xmlData[i2] !== '\"'); i2++) {\n entityName += xmlData[i2];\n }\n entityName = entityName.trim();\n if (entityName.indexOf(\" \") !== -1) throw new Error(\"External entites are not supported\");\n const startChar = xmlData[i2++];\n let val = \"\";\n for (; i2 < xmlData.length && xmlData[i2] !== startChar; i2++) {\n val += xmlData[i2];\n }\n return [entityName, val, i2];\n }\n function 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 }\n function 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 }\n function 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 }\n function 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 }\n function validateEntityName(name) {\n if (util2.isName(name))\n return name;\n else\n throw new Error(`Invalid entity name ${name}`);\n }\n DocTypeReader = readDocType;\n return DocTypeReader;\n}\nvar strnum;\nvar hasRequiredStrnum;\nfunction requireStrnum() {\n if (hasRequiredStrnum) return strnum;\n hasRequiredStrnum = 1;\n const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\n const numRegex = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\n if (!Number.parseInt && window.parseInt) {\n Number.parseInt = window.parseInt;\n }\n if (!Number.parseFloat && window.parseFloat) {\n Number.parseFloat = window.parseFloat;\n }\n const consider = {\n hex: true,\n leadingZeros: true,\n decimalPoint: \".\",\n eNotation: true\n //skipLike: /regex/\n };\n function toNumber(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 }\n function 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 }\n strnum = toNumber;\n return strnum;\n}\nvar ignoreAttributes;\nvar hasRequiredIgnoreAttributes;\nfunction requireIgnoreAttributes() {\n if (hasRequiredIgnoreAttributes) return ignoreAttributes;\n hasRequiredIgnoreAttributes = 1;\n function getIgnoreAttributesFn(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 }\n ignoreAttributes = getIgnoreAttributesFn;\n return ignoreAttributes;\n}\nvar OrderedObjParser_1;\nvar hasRequiredOrderedObjParser;\nfunction requireOrderedObjParser() {\n if (hasRequiredOrderedObjParser) return OrderedObjParser_1;\n hasRequiredOrderedObjParser = 1;\n const util2 = requireUtil();\n const xmlNode2 = requireXmlNode();\n const readDocType = requireDocTypeReader();\n const toNumber = requireStrnum();\n const getIgnoreAttributesFn = requireIgnoreAttributes();\n 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;\n this.readStopNodeData = readStopNodeData;\n this.saveTextToParentTag = saveTextToParentTag;\n this.addChild = addChild;\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes);\n }\n }\n function 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 }\n function parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n if (val !== void 0) {\n if (this.options.trimValues && !dontTrim) {\n val = val.trim();\n }\n if (val.length > 0) {\n if (!escapeEntities) val = this.replaceEntitiesValue(val);\n const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode);\n if (newval === null || newval === void 0) {\n return val;\n } else if (typeof newval !== typeof val || newval !== val) {\n return newval;\n } else if (this.options.trimValues) {\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n const trimmedVal = val.trim();\n if (trimmedVal === val) {\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n return val;\n }\n }\n }\n }\n }\n function 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 }\n const attrsRegx = new RegExp(`([^\\\\s=]+)\\\\s*(=\\\\s*(['\"])([\\\\s\\\\S]*?)\\\\3)?`, \"gm\");\n function buildAttributesMap(attrStr, jPath, tagName) {\n if (this.options.ignoreAttributes !== true && typeof attrStr === \"string\") {\n const matches = util2.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 }\n const parseXml = function(xmlData) {\n xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\");\n const xmlObj = new xmlNode2(\"!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: </${tagName}>`);\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 xmlNode2(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 val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true, true);\n if (val == void 0) val = \"\";\n if (this.options.cdataPropName) {\n currentNode.add(this.options.cdataPropName, [{ [this.options.textNodeName]: tagExp }]);\n } else {\n currentNode.add(this.options.textNodeName, val);\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 xmlNode2(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 xmlNode2(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 xmlNode2(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 };\n function 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 }\n const replaceEntitiesValue = function(val) {\n if (this.options.processEntities) {\n for (let entityName in this.docTypeEntities) {\n const entity = this.docTypeEntities[entityName];\n val = val.replace(entity.regx, entity.val);\n }\n for (let entityName in this.lastEntities) {\n const entity = this.lastEntities[entityName];\n val = val.replace(entity.regex, entity.val);\n }\n if (this.options.htmlEntities) {\n for (let entityName in this.htmlEntities) {\n const entity = this.htmlEntities[entityName];\n val = val.replace(entity.regex, entity.val);\n }\n }\n val = val.replace(this.ampEntity.regex, this.ampEntity.val);\n }\n return val;\n };\n function 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 }\n function 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 }\n function 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 }\n function 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 }\n function 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 }\n function 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 }\n function parseValue(val, shouldParse, options) {\n if (shouldParse && typeof val === \"string\") {\n const newval = val.trim();\n if (newval === \"true\") return true;\n else if (newval === \"false\") return false;\n else return toNumber(val, options);\n } else {\n if (util2.isExist(val)) {\n return val;\n } else {\n return \"\";\n }\n }\n }\n OrderedObjParser_1 = OrderedObjParser;\n return OrderedObjParser_1;\n}\nvar node2json = {};\nvar hasRequiredNode2json;\nfunction requireNode2json() {\n if (hasRequiredNode2json) return node2json;\n hasRequiredNode2json = 1;\n function prettify(node, options) {\n return compress(node, options);\n }\n function 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(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 val = compress(tagObj[property], options, newJpath);\n const isLeaf = isLeafTag(val, options);\n if (tagObj[\":@\"]) {\n assignAttributes(val, tagObj[\":@\"], newJpath, options);\n } else if (Object.keys(val).length === 1 && val[options.textNodeName] !== void 0 && !options.alwaysCreateTextNode) {\n val = val[options.textNodeName];\n } else if (Object.keys(val).length === 0) {\n if (options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n else val = \"\";\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(val);\n } else {\n if (options.isArray(property, newJpath, isLeaf)) {\n compressedObj[property] = [val];\n } else {\n compressedObj[property] = val;\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 }\n function propName(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 }\n function 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 }\n function 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 }\n node2json.prettify = prettify;\n return node2json;\n}\nvar XMLParser_1;\nvar hasRequiredXMLParser;\nfunction requireXMLParser() {\n if (hasRequiredXMLParser) return XMLParser_1;\n hasRequiredXMLParser = 1;\n const { buildOptions } = requireOptionsBuilder();\n const OrderedObjParser = requireOrderedObjParser();\n const { prettify } = requireNode2json();\n const validator2 = requireValidator();\n 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 = validator2.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 OrderedObjParser(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 '&#xD;'\");\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 }\n XMLParser_1 = XMLParser;\n return XMLParser_1;\n}\nvar orderedJs2Xml;\nvar hasRequiredOrderedJs2Xml;\nfunction requireOrderedJs2Xml() {\n if (hasRequiredOrderedJs2Xml) return orderedJs2Xml;\n hasRequiredOrderedJs2Xml = 1;\n const EOL = \"\\n\";\n function 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 }\n function 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 += `<![CDATA[${tagObj[tagName][0][options.textNodeName]}]]>`;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.commentPropName) {\n xmlStr += indentation + `<!--${tagObj[tagName][0][options.textNodeName]}-->`;\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}</${tagName}>`;\n } else {\n xmlStr += tagStart + \">\";\n if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"</\"))) {\n xmlStr += indentation + options.indentBy + tagValue + indentation;\n } else {\n xmlStr += tagValue;\n }\n xmlStr += `</${tagName}>`;\n }\n isPreviousElementTag = true;\n }\n return xmlStr;\n }\n function 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 }\n function 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 }\n function 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 }\n function 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 }\n orderedJs2Xml = toXml;\n return orderedJs2Xml;\n}\nvar json2xml;\nvar hasRequiredJson2xml;\nfunction requireJson2xml() {\n if (hasRequiredJson2xml) return json2xml;\n hasRequiredJson2xml = 1;\n const buildFromOrderedJs = requireOrderedJs2Xml();\n const getIgnoreAttributesFn = requireIgnoreAttributes();\n const 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: \"&amp;\" },\n //it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \"&gt;\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"&lt;\" },\n { regex: new RegExp(\"'\", \"g\"), val: \"&apos;\" },\n { regex: new RegExp('\"', \"g\"), val: \"&quot;\" }\n ],\n processEntities: true,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: false\n };\n function 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 }\n Builder.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 };\n Builder.prototype.j2x = function(jObj, level, ajPath) {\n let attrStr = \"\";\n let val = \"\";\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 val += \"\";\n }\n } else if (jObj[key] === null) {\n if (this.isAttribute(key)) {\n val += \"\";\n } else if (key[0] === \"?\") {\n val += this.indentate(level) + \"<\" + key + \"?\" + this.tagEndChar;\n } else {\n val += this.indentate(level) + \"<\" + key + \"/\" + this.tagEndChar;\n }\n } else if (jObj[key] instanceof Date) {\n val += 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 val += this.replaceEntitiesValue(newval);\n } else {\n val += 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] === \"?\") val += this.indentate(level) + \"<\" + key + \"?\" + this.tagEndChar;\n else val += 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 val += 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 val += this.processTextOrObjNode(jObj[key], key, level, ajPath);\n }\n }\n }\n return { attrStr, val };\n };\n Builder.prototype.buildAttrPairStr = function(attrName, val) {\n val = this.options.attributeValueProcessor(attrName, \"\" + val);\n val = this.replaceEntitiesValue(val);\n if (this.options.suppressBooleanAttributes && val === \"true\") {\n return \" \" + attrName;\n } else return \" \" + attrName + '=\"' + val + '\"';\n };\n function 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 }\n Builder.prototype.buildObjectNode = function(val, key, attrStr, level) {\n if (val === \"\") {\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 = \"</\" + key + this.tagEndChar;\n let piClosingChar = \"\";\n if (key[0] === \"?\") {\n piClosingChar = \"?\";\n tagEndExp = \"\";\n }\n if ((attrStr || attrStr === \"\") && val.indexOf(\"<\") === -1) {\n return this.indentate(level) + \"<\" + key + attrStr + piClosingChar + \">\" + val + tagEndExp;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n return this.indentate(level) + `<!--${val}-->` + this.newLine;\n } else {\n return this.indentate(level) + \"<\" + key + attrStr + piClosingChar + this.tagEndChar + val + this.indentate(level) + tagEndExp;\n }\n }\n };\n Builder.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 = `></${key}`;\n }\n return closeTag;\n };\n Builder.prototype.buildTextValNode = function(val, key, attrStr, level) {\n if (this.options.cdataPropName !== false && key === this.options.cdataPropName) {\n return this.indentate(level) + `<![CDATA[${val}]]>` + this.newLine;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n return this.indentate(level) + `<!--${val}-->` + 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, val);\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 + \"</\" + key + this.tagEndChar;\n }\n }\n };\n Builder.prototype.replaceEntitiesValue = function(textValue) {\n if (textValue && textValue.length > 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 };\n function indentate(level) {\n return this.options.indentBy.repeat(level);\n }\n function 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 }\n json2xml = Builder;\n return json2xml;\n}\nvar fxp;\nvar hasRequiredFxp;\nfunction requireFxp() {\n if (hasRequiredFxp) return fxp;\n hasRequiredFxp = 1;\n const validator2 = requireValidator();\n const XMLParser = requireXMLParser();\n const XMLBuilder = requireJson2xml();\n fxp = {\n XMLParser,\n XMLValidator: validator2,\n XMLBuilder\n };\n return fxp;\n}\nvar fxpExports = requireFxp();\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 (fxpExports.XMLValidator.validate(string) !== true) {\n return false;\n }\n let jsonObject;\n const parser = new fxpExports.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};\nvar debug_1;\nvar hasRequiredDebug;\nfunction requireDebug() {\n if (hasRequiredDebug) return debug_1;\n hasRequiredDebug = 1;\n const debug = typeof process === \"object\" && process.env && process.env.NODE_DEBUG && /\\bsemver\\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error(\"SEMVER\", ...args) : () => {\n };\n debug_1 = debug;\n return debug_1;\n}\nvar constants;\nvar hasRequiredConstants;\nfunction requireConstants() {\n if (hasRequiredConstants) return constants;\n hasRequiredConstants = 1;\n const SEMVER_SPEC_VERSION = \"2.0.0\";\n const MAX_LENGTH = 256;\n const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */\n 9007199254740991;\n const MAX_SAFE_COMPONENT_LENGTH = 16;\n const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6;\n const RELEASE_TYPES = [\n \"major\",\n \"premajor\",\n \"minor\",\n \"preminor\",\n \"patch\",\n \"prepatch\",\n \"prerelease\"\n ];\n constants = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 1,\n FLAG_LOOSE: 2\n };\n return constants;\n}\nvar re = { exports: {} };\nvar hasRequiredRe;\nfunction requireRe() {\n if (hasRequiredRe) return re.exports;\n hasRequiredRe = 1;\n (function(module, exports) {\n const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH\n } = requireConstants();\n const debug = requireDebug();\n exports = module.exports = {};\n const re2 = exports.re = [];\n const safeRe = exports.safeRe = [];\n const src = exports.src = [];\n const t2 = exports.t = {};\n let R = 0;\n const LETTERDASHNUMBER = \"[a-zA-Z0-9-]\";\n const safeRegexReplacements = [\n [\"\\\\s\", 1],\n [\"\\\\d\", MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH]\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 debug(name, index, value);\n t2[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[t2.NUMERICIDENTIFIER]})\\\\.(${src[t2.NUMERICIDENTIFIER]})\\\\.(${src[t2.NUMERICIDENTIFIER]})`);\n createToken(\"MAINVERSIONLOOSE\", `(${src[t2.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t2.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t2.NUMERICIDENTIFIERLOOSE]})`);\n createToken(\"PRERELEASEIDENTIFIER\", `(?:${src[t2.NUMERICIDENTIFIER]}|${src[t2.NONNUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASEIDENTIFIERLOOSE\", `(?:${src[t2.NUMERICIDENTIFIERLOOSE]}|${src[t2.NONNUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASE\", `(?:-(${src[t2.PRERELEASEIDENTIFIER]}(?:\\\\.${src[t2.PRERELEASEIDENTIFIER]})*))`);\n createToken(\"PRERELEASELOOSE\", `(?:-?(${src[t2.PRERELEASEIDENTIFIERLOOSE]}(?:\\\\.${src[t2.PRERELEASEIDENTIFIERLOOSE]})*))`);\n createToken(\"BUILDIDENTIFIER\", `${LETTERDASHNUMBER}+`);\n createToken(\"BUILD\", `(?:\\\\+(${src[t2.BUILDIDENTIFIER]}(?:\\\\.${src[t2.BUILDIDENTIFIER]})*))`);\n createToken(\"FULLPLAIN\", `v?${src[t2.MAINVERSION]}${src[t2.PRERELEASE]}?${src[t2.BUILD]}?`);\n createToken(\"FULL\", `^${src[t2.FULLPLAIN]}$`);\n createToken(\"LOOSEPLAIN\", `[v=\\\\s]*${src[t2.MAINVERSIONLOOSE]}${src[t2.PRERELEASELOOSE]}?${src[t2.BUILD]}?`);\n createToken(\"LOOSE\", `^${src[t2.LOOSEPLAIN]}$`);\n createToken(\"GTLT\", \"((?:<|>)?=?)\");\n createToken(\"XRANGEIDENTIFIERLOOSE\", `${src[t2.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`);\n createToken(\"XRANGEIDENTIFIER\", `${src[t2.NUMERICIDENTIFIER]}|x|X|\\\\*`);\n createToken(\"XRANGEPLAIN\", `[v=\\\\s]*(${src[t2.XRANGEIDENTIFIER]})(?:\\\\.(${src[t2.XRANGEIDENTIFIER]})(?:\\\\.(${src[t2.XRANGEIDENTIFIER]})(?:${src[t2.PRERELEASE]})?${src[t2.BUILD]}?)?)?`);\n createToken(\"XRANGEPLAINLOOSE\", `[v=\\\\s]*(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:${src[t2.PRERELEASELOOSE]})?${src[t2.BUILD]}?)?)?`);\n createToken(\"XRANGE\", `^${src[t2.GTLT]}\\\\s*${src[t2.XRANGEPLAIN]}$`);\n createToken(\"XRANGELOOSE\", `^${src[t2.GTLT]}\\\\s*${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"COERCEPLAIN\", `${\"(^|[^\\\\d])(\\\\d{1,\"}${MAX_SAFE_COMPONENT_LENGTH}})(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`);\n createToken(\"COERCE\", `${src[t2.COERCEPLAIN]}(?:$|[^\\\\d])`);\n createToken(\"COERCEFULL\", src[t2.COERCEPLAIN] + `(?:${src[t2.PRERELEASE]})?(?:${src[t2.BUILD]})?(?:$|[^\\\\d])`);\n createToken(\"COERCERTL\", src[t2.COERCE], true);\n createToken(\"COERCERTLFULL\", src[t2.COERCEFULL], true);\n createToken(\"LONETILDE\", \"(?:~>?)\");\n createToken(\"TILDETRIM\", `(\\\\s*)${src[t2.LONETILDE]}\\\\s+`, true);\n exports.tildeTrimReplace = \"$1~\";\n createToken(\"TILDE\", `^${src[t2.LONETILDE]}${src[t2.XRANGEPLAIN]}$`);\n createToken(\"TILDELOOSE\", `^${src[t2.LONETILDE]}${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"LONECARET\", \"(?:\\\\^)\");\n createToken(\"CARETTRIM\", `(\\\\s*)${src[t2.LONECARET]}\\\\s+`, true);\n exports.caretTrimReplace = \"$1^\";\n createToken(\"CARET\", `^${src[t2.LONECARET]}${src[t2.XRANGEPLAIN]}$`);\n createToken(\"CARETLOOSE\", `^${src[t2.LONECARET]}${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"COMPARATORLOOSE\", `^${src[t2.GTLT]}\\\\s*(${src[t2.LOOSEPLAIN]})$|^$`);\n createToken(\"COMPARATOR\", `^${src[t2.GTLT]}\\\\s*(${src[t2.FULLPLAIN]})$|^$`);\n createToken(\"COMPARATORTRIM\", `(\\\\s*)${src[t2.GTLT]}\\\\s*(${src[t2.LOOSEPLAIN]}|${src[t2.XRANGEPLAIN]})`, true);\n exports.comparatorTrimReplace = \"$1$2$3\";\n createToken(\"HYPHENRANGE\", `^\\\\s*(${src[t2.XRANGEPLAIN]})\\\\s+-\\\\s+(${src[t2.XRANGEPLAIN]})\\\\s*$`);\n createToken(\"HYPHENRANGELOOSE\", `^\\\\s*(${src[t2.XRANGEPLAINLOOSE]})\\\\s+-\\\\s+(${src[t2.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, re.exports);\n return re.exports;\n}\nvar parseOptions_1;\nvar hasRequiredParseOptions;\nfunction requireParseOptions() {\n if (hasRequiredParseOptions) return parseOptions_1;\n hasRequiredParseOptions = 1;\n const looseOption = Object.freeze({ loose: true });\n const emptyOpts = Object.freeze({});\n const parseOptions = (options) => {\n if (!options) {\n return emptyOpts;\n }\n if (typeof options !== \"object\") {\n return looseOption;\n }\n return options;\n };\n parseOptions_1 = parseOptions;\n return parseOptions_1;\n}\nvar identifiers;\nvar hasRequiredIdentifiers;\nfunction requireIdentifiers() {\n if (hasRequiredIdentifiers) return identifiers;\n hasRequiredIdentifiers = 1;\n const numeric = /^[0-9]+$/;\n const compareIdentifiers = (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 };\n const rcompareIdentifiers = (a2, b2) => compareIdentifiers(b2, a2);\n identifiers = {\n compareIdentifiers,\n rcompareIdentifiers\n };\n return identifiers;\n}\nvar semver;\nvar hasRequiredSemver;\nfunction requireSemver() {\n if (hasRequiredSemver) return semver;\n hasRequiredSemver = 1;\n const debug = requireDebug();\n const { MAX_LENGTH, MAX_SAFE_INTEGER } = requireConstants();\n const { safeRe: re2, t: t2 } = requireRe();\n const parseOptions = requireParseOptions();\n const { compareIdentifiers } = requireIdentifiers();\n 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 ? re2[t2.LOOSE] : re2[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 // If the input is a non-prerelease version, this acts the same as\n // prepatch.\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 // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\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 }\n semver = SemVer;\n return semver;\n}\nvar parse_1;\nvar hasRequiredParse;\nfunction requireParse() {\n if (hasRequiredParse) return parse_1;\n hasRequiredParse = 1;\n const SemVer = requireSemver();\n const parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version;\n }\n try {\n return new SemVer(version, options);\n } catch (er) {\n if (!throwErrors) {\n return null;\n }\n throw er;\n }\n };\n parse_1 = parse;\n return parse_1;\n}\nvar valid_1;\nvar hasRequiredValid;\nfunction requireValid() {\n if (hasRequiredValid) return valid_1;\n hasRequiredValid = 1;\n const parse = requireParse();\n const valid2 = (version, options) => {\n const v = parse(version, options);\n return v ? v.version : null;\n };\n valid_1 = valid2;\n return valid_1;\n}\nvar validExports = requireValid();\nconst valid = /* @__PURE__ */ getDefaultExportFromCjs(validExports);\nvar major_1;\nvar hasRequiredMajor;\nfunction requireMajor() {\n if (hasRequiredMajor) return major_1;\n hasRequiredMajor = 1;\n const SemVer = requireSemver();\n const major2 = (a2, loose) => new SemVer(a2, loose).major;\n major_1 = major2;\n return major_1;\n}\nvar majorExports = requireMajor();\nconst major = /* @__PURE__ */ getDefaultExportFromCjs(majorExports);\nclass ProxyBus {\n bus;\n constructor(bus2) {\n if (typeof bus2.getVersion !== \"function\" || !valid(bus2.getVersion())) {\n console.warn(\"Proxying an event bus with an unknown or invalid version\");\n } else if (major(bus2.getVersion()) !== major(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","/**\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","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","// 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=\" + {\"459\":\"975afd1e02f53abf8034\",\"1023\":\"06cf5496a0a2d7ef494a\",\"2441\":\"2c050d23f9070dfa7f03\",\"3239\":\"d9db676f1e38fc8acfde\",\"4529\":\"ab85428fc71ea1124397\",\"5862\":\"142cd48ca8ec32e57725\",\"6227\":\"3494381758c4754ef3f5\",\"7265\":\"3ea08242e475ac7a22e1\",\"8737\":\"1ee3b21131ac8193a04d\"}[chunkId] + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2689;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2689: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(12836)))\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","_defineComponent","__name","setup","__props","__sfc","NcContent","_vm","this","_c","_self","_setupProxy","attrs","_v","name","path","components","default","UserManagement","navigation","UserManagementNavigation","props","children","redirect","category","loadState","AppStore","AppStoreNavigation","sidebar","AppStoreSidebar","Vue","use","Router","mode","base","generateUrl","linkActiveClass","routes","__webpack_nonce__","getCSPNonce","prototype","t","n","PiniaVuePlugin","VTooltipPlugin","defaultHtml","Vuex","store","useStore","sync","router","pinia","createPinia","render","h","SettingsApp","el","naturalCollator","Intl","Collator","getLanguage","getCanonicalLocale","numeric","usage","usersSettings","localStorage","getBuilder","persist","build","defaults","id","usercount","disabled","canAdd","canRemove","state","users","groups","getSubAdminGroups","systemGroups","orderBy","sortGroups","GroupSorting","UserCount","minPasswordLength","usersOffset","usersLimit","disabledUsersOffset","disabledUsersLimit","userCount","showConfig","showStoragePath","getItem","showUserBackend","showFirstLogin","showLastLogin","showNewUserForm","showLanguages","mutations","appendUsers","usersObj","existingUsers","map","_ref","newUsers","Object","values","filter","_ref2","includes","concat","updateDisabledUsers","_usersObj","setPasswordPolicyMinLength","length","addGroup","newGroup","find","group","assign","unshift","e","console","error","renameGroup","_ref3","gid","displayName","groupIndex","findIndex","groupSearch","updatedGroup","splice","removeGroup","addUserGroup","_ref4","userid","user","enabled","push","removeUserGroup","_ref5","indexOf","addUserSubAdmin","_ref6","subadmin","removeUserSubAdmin","_ref7","deleteUser","userIndex","commit","actionType","addUserData","response","ocs","enableDisableUser","_ref8","updateUserCounts","_ref9","recentGroup","disabledGroup","forEach","userGroup","warn","logger","setUserData","_ref10","key","value","humanValue","parseFileSize","resetUsers","resetGroups","setShowConfig","_ref11","setItem","JSON","stringify","setGroupSorting","sorting","oldValue","String","catch","showError","getters","getUsers","getGroups","subAdminGroups","getSortedGroups","sort","a","b","numA","numB","compare","getGroupSorting","getPasswordPolicyMinLength","getUsersOffset","getUsersLimit","getDisabledUsersOffset","getDisabledUsersLimit","getUserCount","getShowConfig","CancelToken","searchRequestCancelSource","actions","searchUsers","context","_ref12","offset","limit","search","api","generateOcsUrl","getUser","userId","_ref13","cancel","source","trim","encodeURIComponent","cancelToken","token","then","usersCount","keys","getRecentUsers","_ref14","getDisabledUsers","_ref15","_ref16","limitParam","getUsersFromList","_ref17","getUsersFromGroup","_ref18","groupid","groupId","getCapabilities","password_policy","minLength","_ref19","_ref20","_ref21","_ref22","_ref23","wipeUserDevices","Promise","reject","Error","addUser","_ref24","_ref25","dispatch","password","email","quota","language","manager","_ref26","userStatus","_ref27","sendWelcomeMail","apps","bundles","categories","updateCount","loading","gettingCategoriesPromise","appApiEnabled","APPS_API_FAILURE","message","isHTML","initCategories","updateCategories","categoriesPromise","setUpdateCount","addCategory","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","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","modules","settings","oc","strict","process","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","a2","b2","identifier","entries","sortFavoritesFirst","v","attributes","favorite","sortFoldersFirst","type","basename2","displayname","basename","lastIndexOf","slice","hasRequiredUtil","hasRequiredValidator","validator","util","requireUtil","exports","nameStartChar","nameRegexp","regexName","RegExp","isExist","isEmptyObject","obj","merge","target","arrayMode","len","i2","getValue","isName","string","exec","getAllMatches","regex","matches","allmatches","startIndex","lastIndex","requireValidator","util2","defaultOptions","allowBooleanAttributes","unpairedTags","isWhiteSpace","char","readPI","xmlData","start","tagname","substr","getErrorObject","getLineNumberForPosition","readCommentAndCDATA","angleBracketsCount","validate","tags","tagFound","reachedRoot","err","tagStartPos","closingTag","tagName","substring","msg","result","readAttributeStr","attrStr","attrStrStart","isValid","validateAttributeString","code","line","tagClosed","otg","pop","openPos","col","afterAmp","validateAmpersand","t2","doubleQuote","singleQuote","startChar","validAttrStrRegxp","attrNames","getPositionFromMatch","attrName","validateAttrName","hasOwnProperty","re2","validateNumberAmpersand","count","lineNumber","lines","split","hasRequiredOptionsBuilder","xmlNode","hasRequiredXmlNode","DocTypeReader","hasRequiredDocTypeReader","strnum","hasRequiredStrnum","ignoreAttributes","hasRequiredIgnoreAttributes","OrderedObjParser_1","hasRequiredOrderedObjParser","OptionsBuilder","requireIgnoreAttributes","ignoreAttributes2","pattern","test","hasRequiredNode2json","XMLParser_1","hasRequiredXMLParser","orderedJs2Xml","hasRequiredOrderedJs2Xml","json2xml","hasRequiredJson2xml","fxp","hasRequiredFxp","debug_1","hasRequiredDebug","constants","hasRequiredConstants","node2json","requireNode2json","compress","arr","jPath","text","compressedObj","tagObj","property","propName","newJpath","textNodeName","val","isLeaf","isLeafTag","assignAttributes","alwaysCreateTextNode","attrMap","jpath","atrrName","propCount","prettify","node","requireXMLParser","buildOptions","preserveOrder","attributeNamePrefix","attributesGroupName","removeNSPrefix","parseTagValue","parseAttributeValue","trimValues","cdataPropName","numberParseOptions","hex","leadingZeros","eNotation","tagValueProcessor","attributeValueProcessor","stopNodes","commentPropName","processEntities","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","requireOptionsBuilder","OrderedObjParser","xmlNode2","constructor","child","add","addChild","readDocType","readEntityExp","entityName","isEntity","isElement","isAttlist","isNotation","validateEntityName","entities","hasBody","comment","exp","regx","i","requireDocTypeReader","toNumber","hexRegex","numRegex","parseInt","consider","decimalPoint","str","trimmedStr","skipLike","sign","numTrimmedByZeros","numStr","num","requireStrnum","getIgnoreAttributesFn","addExternalEntities","externalEntities","entKeys","ent","lastEntities","parseTextData","dontTrim","hasAttributes","isLeafNode","escapeEntities","replaceEntitiesValue","newval","parseValue","resolveNameSpace","prefix","charAt","attrsRegx","buildAttributesMap","ignoreAttributesFn","oldVal","aName","newVal","attrCollection","parseXml","xmlObj","currentNode","textData","closeIndex","findClosingIndex","colonIndex","saveTextToParentTag","lastTagName","propIndex","tagsNodeStack","tagData","readTagExp","childNode","tagExp","attrExpPresent","endIndex","docTypeEntities","rawTagName","lastTag","isItStopNode","tagContent","result2","readStopNodeData","entity","ampEntity","currentTagName","allNodesExp","stopNodePath","stopNodeExp","errMsg","closingIndex","closingChar","attrBoundary","ch","tagExpWithClosingIndex","separatorIndex","trimStart","openTagCount","shouldParse","fromCharCode","requireOrderedObjParser","validator2","parse","validationOption","toString","orderedObjParser","orderedResult","addEntity","requireOrderedJs2Xml","arrToStr","indentation","xmlStr","isPreviousElementTag","newJPath","tagText","isStopNode","attStr2","attr_to_str","tempInd","piTextNodeName","newIdentation","indentBy","tagStart","tagValue","suppressUnpairedNode","suppressEmptyNode","endsWith","attr","attrVal","suppressBooleanAttributes","textValue","jArray","format","requireDebug","debug","env","NODE_DEBUG","args","requireConstants","MAX_SAFE_INTEGER","MAX_LENGTH","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","RELEASE_TYPES","SEMVER_SPEC_VERSION","FLAG_INCLUDE_PRERELEASE","FLAG_LOOSE","XMLParser","XMLBuilder","buildFromOrderedJs","oneListGroup","Builder","isAttribute","attrPrefixLen","processTextOrObjNode","indentate","tagEndChar","newLine","object","level","ajPath","j2x","buildTextValNode","buildObjectNode","repeat","startsWith","jObj","arrayNodeName","join","call","buildAttrPairStr","arrLen","listTagVal","listTagAttr","j2","item","Ks","L","closeTag","tagEndExp","piClosingChar","requireJson2xml","XMLValidator","requireFxp","hasRequiredRe","parseOptions_1","hasRequiredParseOptions","identifiers","hasRequiredIdentifiers","semver","hasRequiredSemver","parse_1","hasRequiredParse","valid_1","hasRequiredValid","major_1","hasRequiredMajor","re","requireSemver","safeRe","module","src","R","LETTERDASHNUMBER","safeRegexReplacements","createToken","isGlobal","safe","max","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","parseOptions","looseOption","freeze","loose","emptyOpts","requireParseOptions","compareIdentifiers","anum","bnum","rcompareIdentifiers","requireIdentifiers","SemVer","includePrerelease","TypeError","m2","LOOSE","FULL","raw","major","minor","prerelease","other","compareMain","comparePre","compareBuild","inc","release","identifierBase","isNaN","throwErrors","er","requireParse","requireValid","requireMajor","getLoggerBuilder","setApp","detectUser","cloneRoute","to","from","clone","hash","query","fullPath","moduleName","registerModule","namespaced","currentRoute","transition","currentPath","isTimeTraveling","storeUnwatch","watch","route","afterEachUnHook","afterEach","unregisterModule","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","O","chunkIds","fn","priority","notFulfilled","Infinity","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